From 5ab90ea22167f807fb2aef3b72ad13b6cf4cec64 Mon Sep 17 00:00:00 2001 From: "PC-20230316NUNE\\Administrator" <2858626794@qq.com> Date: Tue, 21 Nov 2023 18:52:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E9=85=8D=E7=BD=AE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DataTables/Datas/__beans__.xlsx | Bin 9317 -> 9426 bytes DataTables/Datas/__tables__.xlsx | Bin 9828 -> 9916 bytes DataTables/Datas/~$__tables__.xlsx | Bin 165 -> 0 bytes .../Datas/战斗/角色/升级/角色升星消耗表.xlsx | Bin 0 -> 10194 bytes .../Datas/战斗/角色/升级/角色升级消耗表.xlsx | Bin 0 -> 11541 bytes .../assets/resources/config/data/schema.ts | 156 + .../resources/config/json/tbgrolecstar.json | 42 + .../config/json/tbgrolecstar.json.meta | 11 + .../resources/config/json/tbgrolecup.json | 902 + .../config/json/tbgrolecup.json.meta | 11 + .../resources/config/json/tbgroleskill.json | 4 +- .../prefab/ui/主页/聊天/MainChatView.prefab | 6 +- JisolGameCocos/assets/script/App.ts | 8 +- .../assets/script/ui/Loading/LoadingView.ts | 3 +- .../src/main/java/cfg/TB/TbGRoleCStar.java | 49 + .../Main/src/main/java/cfg/TB/TbGRoleCUp.java | 49 + .../Main/src/main/java/cfg/Tables.java | 6 + .../src/main/java/cfg/TbGEntity/Resource.java | 52 + .../Main/src/main/java/cfg/TbGRoleCStar.java | 37 + .../Main/src/main/java/cfg/TbGRoleCUp.java | 37 + .../jisol/game/actions/onhook/GPVPAction.java | 1 + .../src/main/resources/json/tbgrolecstar.json | 42 + .../src/main/resources/json/tbgrolecup.json | 902 + .../src/main/resources/json/tbgroleskill.json | 4 +- headless/index.js | 53 + headless/package.json | 22 + headless/static/application.js | 63 + headless/static/assets/internal/config.json | 145 + .../1c02ae6f-4492-4915-b8f8-7492a3b1e4cd.json | 1 + .../50f4348b-c883-4e2f-8f11-ce233b859fa1.json | 1 + .../60f7195c-ec2a-45eb-ba94-8955f60e81d0.json | 1 + .../810e96e4-e456-4468-9b59-f4e8f39732c0.json | 1 + .../871c3b6c-7379-419d-bda3-794b239ab90d.json | 1 + .../8bbdbcdd-5cd4-4100-b6d5-b7c9625b6107.json | 1 + .../970b0598-bcb0-4714-91fb-2e81440dccd8.json | 1 + .../a3cd009f-0ab0-420d-9278-b9fdab939bbc.json | 1 + .../b5d6115f-0370-4d7c-aad3-c194cc71cf98.json | 1 + .../bcd64cc6-2dd9-43f6-abbe-66318d332032.json | 1 + .../c27215d8-6835-4b68-bfbb-bdeac6100c04.json | 1 + .../d930590d-bb92-4cc8-8bd1-23cd027f9edf.json | 1 + .../dd3a144d-ab7f-41f0-82b8-2e43a090d496.json | 1 + .../e9aa9a3e-5b2b-4ac7-a2c7-073de2b2b24f.json | 1 + .../efe8e2a3-eace-427b-b4f1-cb8a937ec77d.json | 1 + .../f0416e68-0200-4b77-a926-4f9d16e494da.json | 1 + .../f92806d7-1768-443f-afe8-12bcde84d0f0.json | 1 + .../fda095cb-831d-4601-ad94-846013963de8.json | 1 + headless/static/assets/internal/index.js | 24 + headless/static/assets/main/config.json | 52 + .../42607a6e-d30a-48cc-8161-2b3426e14703.json | 1 + .../ba21476f-2866-4f81-9c4d-6e359316e448.json | 1 + .../fd8ec536-a354-4a17-9c74-4f3883c378c8.json | 1 + headless/static/assets/main/index.js | 22094 +++ .../static/cocos-js/_virtual_cc-3c607f36.js | 119696 +++++++++++++++ .../cocos-js/assets/spine-a0005c42.wasm | Bin 0 -> 449470 bytes .../cocos-js/assets/spine.js.mem-c0c591ab.bin | Bin 0 -> 52890 bytes headless/static/cocos-js/cc.js | 13 + headless/static/cocos-js/spine-3e0daee9.js | 10 + .../static/cocos-js/spine.asm-0a7772b8.js | 37 + headless/static/cocos-js/spine.js-f7f5ea79.js | 10 + .../static/cocos-js/spine.wasm-d2854650.js | 2123 + headless/static/favicon.ico | Bin 0 -> 1150 bytes headless/static/index.html | 46 + headless/static/index.js | 25 + headless/static/remote/battle/config.json | 4699 + .../001fea8b-233c-4830-96aa-5f0d9845668b.json | 1 + ...a8b-233c-4830-96aa-5f0d9845668b@f9941.json | 1 + .../010aa6cc-beed-4a06-8a6f-92dc1dda72c9.json | 1 + .../026823e5-14f5-4f70-a73e-88a3f8e8001e.json | 1 + ...3e5-14f5-4f70-a73e-88a3f8e8001e@f9941.json | 1 + .../03942db8-6a99-42a3-98cf-70229cc5403e.json | 1 + ...db8-6a99-42a3-98cf-70229cc5403e@f9941.json | 1 + .../0423f835-3fbe-49d7-9c6a-ff9588e5c122.json | 1 + ...835-3fbe-49d7-9c6a-ff9588e5c122@f9941.json | 1 + .../063fc0a8-27de-4950-b87e-f8d93a8c97af.json | 1 + ...0a8-27de-4950-b87e-f8d93a8c97af@f9941.json | 1 + .../06e4dec4-9199-42fa-81c9-1d6c8dce5e3e.json | 1 + ...ec4-9199-42fa-81c9-1d6c8dce5e3e@f9941.json | 1 + .../07a6e3b4-0690-4be3-bd6a-ddb8655d0928.json | 1 + ...3b4-0690-4be3-bd6a-ddb8655d0928@f9941.json | 1 + .../09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e.json | 1 + ...ecb-3cc1-4551-b843-6c2ce7ac1d9e@f9941.json | 1 + .../0a2ed6e6-8614-4176-a464-4c673e0d6847.json | 1 + ...6e6-8614-4176-a464-4c673e0d6847@f9941.json | 1 + .../0a9ca732-f79e-47a8-865f-a11df7979eac.json | 1 + ...732-f79e-47a8-865f-a11df7979eac@f9941.json | 1 + .../0af1bd07-ba37-4db6-bcdb-bd52c636cc65.json | 1 + ...d07-ba37-4db6-bcdb-bd52c636cc65@f9941.json | 1 + .../remote/battle/import/0b/0bf76b1f7.json | 1 + .../0d0d520a-6a04-46ec-b8a7-f9f124a59574.json | 1 + .../0ec954bb-79cd-4122-bf5c-b86a13c5ef02.json | 1 + ...4bb-79cd-4122-bf5c-b86a13c5ef02@f9941.json | 1 + .../0f96bbf8-0324-4eab-ba6a-2a70f7653610.json | 1 + ...bf8-0324-4eab-ba6a-2a70f7653610@f9941.json | 1 + .../0fcb82ad-681d-4f57-ae1e-708a5a1f7fab.json | 1 + ...2ad-681d-4f57-ae1e-708a5a1f7fab@f9941.json | 1 + .../1014d8fe-eb7e-4351-9454-70ff7a4e4fbc.json | 1 + ...8fe-eb7e-4351-9454-70ff7a4e4fbc@f9941.json | 1 + .../1168b518-61b0-4ca8-ba16-5085b3722064.json | 1 + ...518-61b0-4ca8-ba16-5085b3722064@f9941.json | 1 + .../126a7574-0975-4062-b1de-6ebcc0dc0296.json | 1 + ...574-0975-4062-b1de-6ebcc0dc0296@f9941.json | 1 + .../138e008e-f0c4-4724-922c-bcda2476a717.json | 1 + ...08e-f0c4-4724-922c-bcda2476a717@f9941.json | 1 + .../15495485-c12f-49b8-9b70-5f327417a643.json | 1 + .../1581380d-bf95-4ce8-a80b-91ca21c5f8ab.json | 1 + ...80d-bf95-4ce8-a80b-91ca21c5f8ab@f9941.json | 1 + ...053-b80c-4b5d-ab83-e75934fd66d2@f9941.json | 1 + .../17ef8829-f581-4e37-9d9e-762b1e708229.json | 1 + ...829-f581-4e37-9d9e-762b1e708229@f9941.json | 1 + .../1e495888-e38d-4c57-8fda-a8c69960409a.json | 1 + ...888-e38d-4c57-8fda-a8c69960409a@f9941.json | 1 + .../1eb73a5f-ab8c-4f05-b833-6b14a361a4ee.json | 1 + ...a5f-ab8c-4f05-b833-6b14a361a4ee@f9941.json | 1 + .../1f2defe6-08ea-4919-be26-f263623f859a.json | 1 + ...fe6-08ea-4919-be26-f263623f859a@f9941.json | 1 + .../2058f147-aecf-4084-95ea-cdb5da0fedb1.json | 1 + ...147-aecf-4084-95ea-cdb5da0fedb1@f9941.json | 1 + .../21d9faca-4169-4e95-b6f1-edda15e5d694.json | 1 + ...aca-4169-4e95-b6f1-edda15e5d694@f9941.json | 1 + .../22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68.json | 1 + ...f69-c892-4a5a-a3bb-1d5fb4bd5b68@f9941.json | 1 + ...44f-3cf0-47eb-8f7a-0f303eaefe08@f9941.json | 1 + .../23d50907-baa5-41fd-9512-143679feac92.json | 1 + ...907-baa5-41fd-9512-143679feac92@f9941.json | 1 + .../24869eec-947e-498b-93cb-9ac58ecb5876.json | 1 + ...eec-947e-498b-93cb-9ac58ecb5876@f9941.json | 1 + .../24b3fb75-7e7d-48bd-9dab-f88850c70be0.json | 1 + ...b75-7e7d-48bd-9dab-f88850c70be0@f9941.json | 1 + .../259f92ef-99c5-4e2b-bf7f-3cfd159a32e2.json | 1 + ...2ef-99c5-4e2b-bf7f-3cfd159a32e2@f9941.json | 1 + .../25ee0a91-fde7-460c-94b5-fc3063e7b2f9.json | 1 + ...a91-fde7-460c-94b5-fc3063e7b2f9@f9941.json | 1 + .../2ac4038c-217b-4d36-840d-aebea7f45b72.json | 1 + ...38c-217b-4d36-840d-aebea7f45b72@f9941.json | 1 + .../2aff97dc-8695-491f-9b30-23cab6c11b9c.json | 1 + .../2cf6c696-6824-46d4-b0e4-25cd69fa7703.json | 1 + .../2d41bc63-88bf-4655-a81f-6a1269d8fd93.json | 1 + ...c63-88bf-4655-a81f-6a1269d8fd93@f9941.json | 1 + .../2d5360fe-fc08-448d-ae58-19a29ef677d2.json | 1 + ...0fe-fc08-448d-ae58-19a29ef677d2@f9941.json | 1 + .../2e9aa2a1-2ec8-49bb-bf44-7aad4c27704e.json | 1 + .../32299834-d060-4b93-b428-e1fe3b8346e8.json | 1 + .../337f444f-e016-444a-bfc3-56fbecc80977.json | 1 + ...44f-e016-444a-bfc3-56fbecc80977@f9941.json | 1 + .../33bb5ab6-17d6-47a9-8466-a465c4a7e993.json | 1 + ...ab6-17d6-47a9-8466-a465c4a7e993@f9941.json | 1 + .../34ac9fdc-64c2-448b-963c-d75aab270352.json | 1 + .../36187bcd-71ae-46c0-abff-4e256ce90276.json | 1 + ...bcd-71ae-46c0-abff-4e256ce90276@f9941.json | 1 + .../36c86de9-d150-48ef-8765-ad8f9e511c05.json | 1 + ...de9-d150-48ef-8765-ad8f9e511c05@f9941.json | 1 + .../376b1458-940c-4ec6-8f67-19ef31cdc7a8.json | 1 + ...458-940c-4ec6-8f67-19ef31cdc7a8@f9941.json | 1 + .../38004a8e-1e7e-481d-a276-ba12a9015c96.json | 1 + ...a8e-1e7e-481d-a276-ba12a9015c96@f9941.json | 1 + .../39e91df6-ddb4-436c-b709-7d0e1a281271.json | 1 + ...df6-ddb4-436c-b709-7d0e1a281271@f9941.json | 1 + .../3a4ad94b-6e0f-4a01-825b-1ef057215823.json | 1 + .../3a622b00-2de8-48cc-b358-3db8568ef5b3.json | 1 + ...b00-2de8-48cc-b358-3db8568ef5b3@f9941.json | 1 + .../3e89062e-b618-4ae5-915b-d897340f2f40.json | 1 + ...62e-b618-4ae5-915b-d897340f2f40@f9941.json | 1 + .../3f4a5236-67c0-48c2-bcb7-9ae628933935.json | 1 + ...236-67c0-48c2-bcb7-9ae628933935@f9941.json | 1 + .../40e867e0-35ab-44f1-a8ff-86cacf947cce.json | 1 + ...7e0-35ab-44f1-a8ff-86cacf947cce@f9941.json | 1 + .../41464bcc-b6ab-4a8b-a5dc-511b924c061b.json | 1 + ...bcc-b6ab-4a8b-a5dc-511b924c061b@f9941.json | 1 + .../446c59f6-d7f6-4d04-abef-7ccaf942893d.json | 1 + ...9f6-d7f6-4d04-abef-7ccaf942893d@f9941.json | 1 + .../44fca669-aad5-4e22-b846-82f3a296ec1e.json | 1 + ...669-aad5-4e22-b846-82f3a296ec1e@f9941.json | 1 + .../45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4.json | 1 + ...b78-8d1a-47bb-99c3-8d88fb4dccd4@f9941.json | 1 + .../4836df74-6d25-4922-a373-32949e6013df.json | 1 + ...f74-6d25-4922-a373-32949e6013df@f9941.json | 1 + .../4c2c6c72-df5d-4d75-8a00-08138b76009a.json | 1 + ...c72-df5d-4d75-8a00-08138b76009a@f9941.json | 1 + .../4eb039e0-4381-4ebf-8a71-5f4f85452b7b.json | 1 + ...9e0-4381-4ebf-8a71-5f4f85452b7b@f9941.json | 1 + .../4fa5a433-2410-4c9f-a196-acc8b645ff69.json | 1 + .../4ff7df06-ccdc-4497-8332-fbf9b6abfc18.json | 1 + ...f06-ccdc-4497-8332-fbf9b6abfc18@f9941.json | 1 + .../52113c9e-1b63-4a9b-99f7-2e5758514f81.json | 1 + ...c9e-1b63-4a9b-99f7-2e5758514f81@f9941.json | 1 + .../5248ee3e-c600-4b2b-b5d7-ccff7c9830c2.json | 1 + .../53167f35-e100-434f-b671-9abe0bc64531.json | 1 + ...f35-e100-434f-b671-9abe0bc64531@f9941.json | 1 + .../534a0232-a40c-453e-8a9e-f7001bc0ce73.json | 1 + ...232-a40c-453e-8a9e-f7001bc0ce73@f9941.json | 1 + .../54eddc0a-52cc-4235-ab55-0cb3810dcfd9.json | 1 + ...c0a-52cc-4235-ab55-0cb3810dcfd9@f9941.json | 1 + .../54f082ca-86ef-49c8-a33d-8f2ce95c8b57.json | 1 + ...2ca-86ef-49c8-a33d-8f2ce95c8b57@f9941.json | 1 + .../55d7558e-5c18-49f7-a6e6-1b8c94037ecf.json | 1 + ...58e-5c18-49f7-a6e6-1b8c94037ecf@f9941.json | 1 + .../5670f2a3-3ea4-4188-b34c-1ad1a40af86f.json | 1 + .../57f8d466-d380-40b5-8241-4c6529053817.json | 1 + .../5828e8e7-d037-46d8-a9af-63a11ae7349e.json | 1 + ...8e7-d037-46d8-a9af-63a11ae7349e@f9941.json | 1 + .../583d2b42-0dc8-4b0c-af5e-b239374eed59.json | 1 + ...b42-0dc8-4b0c-af5e-b239374eed59@f9941.json | 1 + .../58d32a22-c07f-4708-8abb-f39006bac8a9.json | 1 + .../5a77fe9d-52fd-4df5-ab08-e2766930e4f8.json | 1 + ...e9d-52fd-4df5-ab08-e2766930e4f8@f9941.json | 1 + .../5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb.json | 1 + ...bcf-9b7c-4621-9557-b6fcf69dfbbb@f9941.json | 1 + .../5d81ab0f-18b9-49af-85f9-59f540e14208.json | 1 + ...b0f-18b9-49af-85f9-59f540e14208@f9941.json | 1 + .../5f7d151d-78bc-4738-b3eb-325440ea5f24.json | 1 + ...51d-78bc-4738-b3eb-325440ea5f24@f9941.json | 1 + .../625edf63-d447-4c41-a5de-74e7f1e79514.json | 1 + ...f63-d447-4c41-a5de-74e7f1e79514@f9941.json | 1 + .../656a4136-154e-4a01-84ed-418fd085386a.json | 1 + ...136-154e-4a01-84ed-418fd085386a@f9941.json | 1 + .../65c10712-318d-4ecf-8253-a91a90dbc1e8.json | 1 + ...712-318d-4ecf-8253-a91a90dbc1e8@f9941.json | 1 + .../660ed781-d7e7-4630-81c0-67ebaaccc124.json | 1 + ...781-d7e7-4630-81c0-67ebaaccc124@f9941.json | 1 + .../679bbb50-f1d5-4ac9-85f1-8aca77b0ca06.json | 1 + ...b50-f1d5-4ac9-85f1-8aca77b0ca06@f9941.json | 1 + .../68dac8a9-ca70-44f4-b4d6-f0c2a7649d82.json | 1 + ...8a9-ca70-44f4-b4d6-f0c2a7649d82@f9941.json | 1 + .../68dd7e1f-0996-4ac8-9b45-cb68975d7236.json | 1 + ...e1f-0996-4ac8-9b45-cb68975d7236@f9941.json | 1 + .../6bea3dd7-ad6a-4cd3-a04e-99376e7dd9a2.json | 1 + .../6d4605ff-0938-44f8-a05c-55d93d20706d.json | 1 + ...5ff-0938-44f8-a05c-55d93d20706d@f9941.json | 1 + .../6d7fd2fa-9401-4918-8f4c-9b85f1017146.json | 1 + .../6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223.json | 1 + ...be8-c3b2-4a15-8ce3-cf6bbe96e223@f9941.json | 1 + .../6e73e1fa-3744-4e08-9eaa-117cc524afda.json | 1 + ...1fa-3744-4e08-9eaa-117cc524afda@f9941.json | 1 + .../6edb6339-008a-4064-b651-ace4908644cd.json | 1 + ...339-008a-4064-b651-ace4908644cd@f9941.json | 1 + .../6f92ffef-8b45-403f-9820-033a1e679d16.json | 1 + ...fef-8b45-403f-9820-033a1e679d16@f9941.json | 1 + .../70507da1-9f99-425c-8d0a-7052e3b8ff23.json | 1 + ...da1-9f99-425c-8d0a-7052e3b8ff23@f9941.json | 1 + .../7231d9cd-c82a-4e10-86b7-ac6d066257aa.json | 1 + ...9cd-c82a-4e10-86b7-ac6d066257aa@f9941.json | 1 + .../73e7b692-0dd7-428d-a37e-5294b5b02a78.json | 1 + ...692-0dd7-428d-a37e-5294b5b02a78@f9941.json | 1 + .../73f1d26b-8ad3-4745-884e-9407850365c4.json | 1 + ...26b-8ad3-4745-884e-9407850365c4@f9941.json | 1 + .../74953026-d287-43a7-ad10-bae8221f98b8.json | 1 + .../76f1e75b-f463-45cf-9005-fb49cb2ab7bf.json | 1 + ...75b-f463-45cf-9005-fb49cb2ab7bf@f9941.json | 1 + .../771d3105-423e-4ae4-9e58-4e5f2fae3e9a.json | 1 + ...105-423e-4ae4-9e58-4e5f2fae3e9a@f9941.json | 1 + .../78a2ff6d-18fa-4a97-b5d4-8efc3975682c.json | 1 + ...f6d-18fa-4a97-b5d4-8efc3975682c@f9941.json | 1 + .../7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58.json | 1 + ...e3c-e4e6-4eb6-a353-7acda3a75f58@f9941.json | 1 + .../7aa6b522-4cbd-43fc-a884-ae201e302b97.json | 1 + ...522-4cbd-43fc-a884-ae201e302b97@f9941.json | 1 + .../7ca59dc8-2635-47cd-98d6-94e9ec6c36fa.json | 1 + ...dc8-2635-47cd-98d6-94e9ec6c36fa@f9941.json | 1 + .../7ea77ef2-7734-492f-bb2c-22db352a8b49.json | 1 + ...ef2-7734-492f-bb2c-22db352a8b49@f9941.json | 1 + .../7ebdb065-a319-4ee0-a374-104137cf1d8c.json | 1 + ...065-a319-4ee0-a374-104137cf1d8c@f9941.json | 1 + .../82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2.json | 1 + ...bd6-b4fe-4ac9-b372-8c86ed4b5ad2@f9941.json | 1 + .../8251d88e-0943-4c69-89cb-88116bb83e9f.json | 1 + ...88e-0943-4c69-89cb-88116bb83e9f@f9941.json | 1 + .../8602bb7b-f67c-469f-925b-4ffea75e6fca.json | 1 + ...b7b-f67c-469f-925b-4ffea75e6fca@f9941.json | 1 + .../8665e251-73b9-4bb1-b908-161c51250d6f.json | 1 + ...251-73b9-4bb1-b908-161c51250d6f@f9941.json | 1 + .../86a627d7-2064-4e31-85c0-43ded881c083.json | 1 + ...7d7-2064-4e31-85c0-43ded881c083@f9941.json | 1 + .../89265b4f-16df-4020-a73b-6e7217e2ebd7.json | 1 + ...b4f-16df-4020-a73b-6e7217e2ebd7@f9941.json | 1 + .../8af43c10-0847-478c-a7e9-82ca49d4401d.json | 1 + ...c10-0847-478c-a7e9-82ca49d4401d@f9941.json | 1 + ...7fb-f35b-417f-b147-ecc7ef089706@f9941.json | 1 + .../8ef1f316-b788-4822-86d2-4d77deb9e57c.json | 1 + ...316-b788-4822-86d2-4d77deb9e57c@f9941.json | 1 + .../917d53cb-10f1-4065-b7c3-57a9500b96e1.json | 1 + ...3cb-10f1-4065-b7c3-57a9500b96e1@f9941.json | 1 + .../96e5083f-61ee-4d79-97b9-c297bb68c54a.json | 1 + ...83f-61ee-4d79-97b9-c297bb68c54a@f9941.json | 1 + .../9821c439-9937-4fc7-b924-2d88b9d44e36.json | 1 + ...439-9937-4fc7-b924-2d88b9d44e36@f9941.json | 1 + .../9968d439-7e1e-4994-bc1b-8bca5d7b49d8.json | 1 + ...439-7e1e-4994-bc1b-8bca5d7b49d8@f9941.json | 1 + .../9a740c1b-d991-4428-9549-1017bfb6358e.json | 1 + ...c1b-d991-4428-9549-1017bfb6358e@f9941.json | 1 + .../9a782e6d-767c-430e-9b91-86b4ca15645b.json | 1 + ...e6d-767c-430e-9b91-86b4ca15645b@f9941.json | 1 + .../9ba0cb57-c7d4-43b9-9a45-c90fd071e578.json | 1 + ...b57-c7d4-43b9-9a45-c90fd071e578@f9941.json | 1 + .../9ba1ed01-edb4-4f3e-988c-f6111de69597.json | 1 + .../9c004ab3-a3a9-46f9-a859-dcc4c3c3769b.json | 1 + ...ab3-a3a9-46f9-a859-dcc4c3c3769b@f9941.json | 1 + .../9de99d59-c865-4435-a1ce-6bf6212d468c.json | 1 + ...d59-c865-4435-a1ce-6bf6212d468c@f9941.json | 1 + .../9eb72656-748d-4794-8dac-4b7299e6cd39.json | 1 + .../a0ef72ac-b418-40da-b320-095a2874e061.json | 1 + .../a1883b0d-fa9a-4329-8f78-ff42d1adb9ac.json | 1 + ...b0d-fa9a-4329-8f78-ff42d1adb9ac@f9941.json | 1 + .../a64f70c5-fd92-4f53-9cea-a726d3ccb680.json | 1 + ...0c5-fd92-4f53-9cea-a726d3ccb680@f9941.json | 1 + .../a73cc36b-81f8-4a83-ae05-c7c976183907.json | 1 + ...36b-81f8-4a83-ae05-c7c976183907@f9941.json | 1 + .../aa74ba45-1456-4980-abe3-8ed0e52767a0.json | 1 + ...a45-1456-4980-abe3-8ed0e52767a0@f9941.json | 1 + .../aad2c55e-36af-44a3-8c6d-5639841cc67d.json | 1 + ...55e-36af-44a3-8c6d-5639841cc67d@f9941.json | 1 + .../aad7964b-28e4-4daa-9981-282c7f28ee2a.json | 1 + ...64b-28e4-4daa-9981-282c7f28ee2a@f9941.json | 1 + .../ab26edf5-c9aa-4def-bd6f-6e05efe76d0d.json | 1 + ...df5-c9aa-4def-bd6f-6e05efe76d0d@f9941.json | 1 + .../abd50507-0cfd-49f8-8c6d-3b00ba75b8f6.json | 1 + ...507-0cfd-49f8-8c6d-3b00ba75b8f6@f9941.json | 1 + .../ac4f309c-c432-4fed-ad6d-3e058bd928c3.json | 1 + ...09c-c432-4fed-ad6d-3e058bd928c3@f9941.json | 1 + .../ac93c3a9-4f91-424b-8d99-22819bf809a2.json | 1 + ...3a9-4f91-424b-8d99-22819bf809a2@f9941.json | 1 + .../ac99ce70-b5af-40d4-9db1-97a9b4a029a1.json | 1 + ...e70-b5af-40d4-9db1-97a9b4a029a1@f9941.json | 1 + .../acbf7e84-b9a5-4669-a409-57aea3e9ad8a.json | 1 + .../ad215587-f029-4276-b2c0-ba6292da5e83.json | 1 + ...587-f029-4276-b2c0-ba6292da5e83@f9941.json | 1 + .../ad329478-0a3a-4e0f-9951-ea8a178f72a6.json | 1 + ...478-0a3a-4e0f-9951-ea8a178f72a6@f9941.json | 1 + .../ae0870b4-96fe-4646-9ade-2f48db9518e0.json | 1 + ...0b4-96fe-4646-9ade-2f48db9518e0@f9941.json | 1 + .../ae43d248-143b-4c9f-b93d-be8286fc1565.json | 1 + ...248-143b-4c9f-b93d-be8286fc1565@f9941.json | 1 + .../b2690697-0ed9-4ed8-b451-468e87cf2266.json | 1 + ...697-0ed9-4ed8-b451-468e87cf2266@f9941.json | 1 + .../b32f733a-d305-4f1c-8542-45f68a22d072.json | 1 + ...33a-d305-4f1c-8542-45f68a22d072@f9941.json | 1 + .../b3bb16f2-78ad-418e-abb7-fb1719ae935c.json | 1 + ...6f2-78ad-418e-abb7-fb1719ae935c@f9941.json | 1 + .../b5d7be0c-1350-4548-ac0d-275d2d81d39e.json | 1 + ...e0c-1350-4548-ac0d-275d2d81d39e@f9941.json | 1 + .../b6f851cd-8a7b-4fff-9d93-88a6165a4c68.json | 1 + ...1cd-8a7b-4fff-9d93-88a6165a4c68@f9941.json | 1 + .../b716aa0f-2c37-4287-a6c6-032ab8364bcf.json | 1 + ...a0f-2c37-4287-a6c6-032ab8364bcf@f9941.json | 1 + .../b77dd676-c35c-4b6d-9caa-27aeda3f3cfc.json | 1 + ...676-c35c-4b6d-9caa-27aeda3f3cfc@f9941.json | 1 + .../bb77826b-b6c0-4b07-aeb0-ead7ca451f8d.json | 1 + ...26b-b6c0-4b07-aeb0-ead7ca451f8d@f9941.json | 1 + .../bbf93c62-c99c-42d5-bdfd-1a1fea064af6.json | 1 + ...c62-c99c-42d5-bdfd-1a1fea064af6@f9941.json | 1 + .../bde0c35f-afdc-4df8-b186-aa8f93942b48.json | 1 + ...35f-afdc-4df8-b186-aa8f93942b48@f9941.json | 1 + .../bec67e6e-8cac-46c2-85d5-6d51c69e5573.json | 1 + ...e6e-8cac-46c2-85d5-6d51c69e5573@f9941.json | 1 + .../bfb5a670-2c13-425f-8b50-d42c6f880907.json | 1 + ...670-2c13-425f-8b50-d42c6f880907@f9941.json | 1 + .../c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a.json | 1 + ...fe9-ccaf-40b8-9c1c-3ae92c6f5f8a@f9941.json | 1 + .../c059355d-3503-4aa1-87c0-38b81b2050e2.json | 1 + ...55d-3503-4aa1-87c0-38b81b2050e2@f9941.json | 1 + ...ac3-057f-4de8-8c06-9ff3e1c48017@f9941.json | 1 + .../c3019d06-733d-4076-804b-ef4165b1be57.json | 1 + ...d06-733d-4076-804b-ef4165b1be57@f9941.json | 1 + .../c3c78943-a4cd-4762-a723-86206969885e.json | 1 + ...943-a4cd-4762-a723-86206969885e@f9941.json | 1 + .../c4a53c5d-b489-4b37-a5ca-72bfe7ffe452.json | 1 + ...c5d-b489-4b37-a5ca-72bfe7ffe452@f9941.json | 1 + .../c4fba28b-29af-4666-b7d1-0720ce76524b.json | 1 + ...28b-29af-4666-b7d1-0720ce76524b@f9941.json | 1 + .../c6e672c2-f040-4f87-8f4b-2c83be6d69a6.json | 1 + .../c70b94ef-5ff6-4295-992a-5579a2d6458b.json | 1 + ...4ef-5ff6-4295-992a-5579a2d6458b@f9941.json | 1 + .../c71daad3-b3f3-4204-9416-c885a6303ac9.json | 1 + ...ad3-b3f3-4204-9416-c885a6303ac9@f9941.json | 1 + .../ca65e2f4-8510-484c-8dd2-f4eaef7f66c7.json | 1 + ...2f4-8510-484c-8dd2-f4eaef7f66c7@f9941.json | 1 + .../ca86f45b-2472-40ee-b653-259dbe441007.json | 1 + ...45b-2472-40ee-b653-259dbe441007@f9941.json | 1 + .../cb5ace05-d558-40ee-8bd2-ef9401e3c19b.json | 1 + ...e05-d558-40ee-8bd2-ef9401e3c19b@f9941.json | 1 + .../cc320ae3-2792-40b4-adce-011d97efc064.json | 1 + ...ae3-2792-40b4-adce-011d97efc064@f9941.json | 1 + .../ce94d072-b86a-43e2-af31-374069cf363e.json | 1 + ...072-b86a-43e2-af31-374069cf363e@f9941.json | 1 + .../d2b965cd-897e-455b-8d21-5ed3bf0902be.json | 1 + ...5cd-897e-455b-8d21-5ed3bf0902be@f9941.json | 1 + .../d330c1ef-5e51-4335-980b-d535892c4a18.json | 1 + ...1ef-5e51-4335-980b-d535892c4a18@f9941.json | 1 + .../d3a8da1f-daa5-4e52-929a-edf95edb8275.json | 1 + ...a1f-daa5-4e52-929a-edf95edb8275@f9941.json | 1 + .../d4feff1b-d3c0-4001-9a95-320adb8ab285.json | 1 + ...f1b-d3c0-4001-9a95-320adb8ab285@f9941.json | 1 + .../d602f103-bb41-4a24-85c7-d97fccaadf24.json | 1 + ...103-bb41-4a24-85c7-d97fccaadf24@f9941.json | 1 + .../d63dc130-416b-422c-a90f-273895f4db73.json | 1 + ...130-416b-422c-a90f-273895f4db73@f9941.json | 1 + .../d8b2f923-b61d-4e95-820a-7ccc0d9031bc.json | 1 + ...923-b61d-4e95-820a-7ccc0d9031bc@f9941.json | 1 + .../d8c705a6-a4c6-4936-b706-56e89e9bf344.json | 1 + ...5a6-a4c6-4936-b706-56e89e9bf344@f9941.json | 1 + .../dc059148-a12d-4947-a708-ae642f146745.json | 1 + ...148-a12d-4947-a708-ae642f146745@f9941.json | 1 + .../dc64288e-f16e-4fa1-bec7-f79a9b9ec72b.json | 1 + ...88e-f16e-4fa1-bec7-f79a9b9ec72b@f9941.json | 1 + .../dc70290b-e14b-4d59-81a8-e037fa6b587c.json | 1 + ...90b-e14b-4d59-81a8-e037fa6b587c@f9941.json | 1 + .../dce246d4-116d-4f36-893b-43a64365169d.json | 1 + ...6d4-116d-4f36-893b-43a64365169d@f9941.json | 1 + .../dd17b176-c0e4-471b-953d-157482a7e61e.json | 1 + ...176-c0e4-471b-953d-157482a7e61e@f9941.json | 1 + .../e08aaf39-bbce-4699-b45c-6f72957869ca.json | 1 + ...f39-bbce-4699-b45c-6f72957869ca@f9941.json | 1 + .../e13e6dc3-6a6f-4f53-972c-0290b5963bbb.json | 1 + ...dc3-6a6f-4f53-972c-0290b5963bbb@f9941.json | 1 + .../e59a20fa-257a-4368-8cd6-736614ee4c3b.json | 1 + ...0fa-257a-4368-8cd6-736614ee4c3b@f9941.json | 1 + .../e6d6cc9e-cc78-48b3-99c4-5debb6e15004.json | 1 + ...c9e-cc78-48b3-99c4-5debb6e15004@f9941.json | 1 + .../e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f.json | 1 + ...b93-2cbb-410c-aad3-4a7e26cd3b3f@f9941.json | 1 + .../e8550400-59c1-4cde-a972-b6df5f696b09.json | 1 + ...400-59c1-4cde-a972-b6df5f696b09@f9941.json | 1 + .../e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8.json | 1 + ...51d-c9e5-4d94-a814-7b7da0ddffb8@f9941.json | 1 + .../eccf0439-94a8-4b1a-8c7c-229f7a3042d9.json | 1 + ...439-94a8-4b1a-8c7c-229f7a3042d9@f9941.json | 1 + .../ed84140d-68f8-4dee-aa53-df590512fa94.json | 1 + ...40d-68f8-4dee-aa53-df590512fa94@f9941.json | 1 + .../f2f6ace7-cda7-4312-8403-42c8767ac2f5.json | 1 + ...ce7-cda7-4312-8403-42c8767ac2f5@f9941.json | 1 + .../f4e45413-6b04-404c-8a2c-603b45f7caff.json | 1 + ...413-6b04-404c-8a2c-603b45f7caff@f9941.json | 1 + .../f4f58d91-aad3-471e-9328-b714e8e5982c.json | 1 + .../f71c334f-843b-49b0-b14b-616629f00565.json | 1 + ...34f-843b-49b0-b14b-616629f00565@f9941.json | 1 + .../fa67273e-09aa-4baa-ac04-3a86c5698e1b.json | 1 + ...73e-09aa-4baa-ac04-3a86c5698e1b@f9941.json | 1 + .../faab0107-f3e3-49e0-82e1-6b992e6d5ce6.json | 1 + ...107-f3e3-49e0-82e1-6b992e6d5ce6@f9941.json | 1 + .../faeb7ee7-ef85-400d-aab5-250de6beac72.json | 1 + ...ee7-ef85-400d-aab5-250de6beac72@f9941.json | 1 + .../fbadc552-d5aa-42fc-a9da-f4c9398d3ea8.json | 1 + ...552-d5aa-42fc-a9da-f4c9398d3ea8@f9941.json | 1 + .../fc568493-5c48-42fe-83ae-ae4a8e6c79c6.json | 1 + ...493-5c48-42fe-83ae-ae4a8e6c79c6@f9941.json | 1 + .../fcd65028-f911-47d4-8a0e-c9d8d49a8542.json | 1 + ...028-f911-47d4-8a0e-c9d8d49a8542@f9941.json | 1 + .../fd4028bb-d170-4a6c-a419-2ade1ed59038.json | 1 + ...8bb-d170-4a6c-a419-2ade1ed59038@f9941.json | 1 + .../fdd5cc13-b87e-43b2-8d10-5d91105d43fc.json | 1 + ...c13-b87e-43b2-8d10-5d91105d43fc@f9941.json | 1 + .../fe006121-94b6-4567-befa-d5d7c12fb3aa.json | 1 + .../fef99059-e5d9-47a9-87f4-46578f2fcae2.json | 1 + ...059-e5d9-47a9-87f4-46578f2fcae2@f9941.json | 1 + .../fefd7337-749b-4478-80e6-90f6c8c91f78.json | 1 + ...337-749b-4478-80e6-90f6c8c91f78@f9941.json | 1 + .../ffd5101f-8560-4166-87a3-a649ceaf8161.json | 1 + ...01f-8560-4166-87a3-a649ceaf8161@f9941.json | 1 + headless/static/remote/battle/index.js | 24 + headless/static/remote/ngame_src/config.json | 55 + .../74a2caa9-3ce8-48c7-b658-c57115568c8f.json | 1 + .../867fff28-95e1-4638-b0cc-c7ff4cb6829c.json | 1 + .../8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b.json | 1 + ...daa-7df4-4160-b8b0-5ec22d46ac1b@6c48a.json | 1 + ...daa-7df4-4160-b8b0-5ec22d46ac1b@f9941.json | 1 + headless/static/remote/ngame_src/index.js | 24 + headless/static/remote/resources/config.json | 642 + .../remote/resources/import/02/02638159c.json | 1 + .../remote/resources/import/02/02894a0ad.json | 1 + .../remote/resources/import/03/03038aaf8.json | 1 + .../remote/resources/import/05/0578e6725.json | 1 + .../remote/resources/import/05/05fd1428a.json | 1 + .../remote/resources/import/07/072d38c93.json | 1 + .../remote/resources/import/08/088ce3f4b.json | 1 + .../remote/resources/import/08/08967caef.json | 1 + .../remote/resources/import/09/097fa3f25.json | 1 + .../remote/resources/import/0b/0b5f814c9.json | 1 + .../0ccb44c9-b7bc-4fc6-b7d2-8a4335f806a5.json | 1 + .../remote/resources/import/0e/0ecfcd971.json | 1 + .../remote/resources/import/0f/0fe160da1.json | 1 + .../11bdc4b0-64a8-4eb7-a2a7-9fb9e233e977.json | 1 + .../13ffba43-826c-4f33-8ac2-4b59811ce9b0.json | 1 + .../158e7e52-3220-4cd7-9694-713e0e6e8278.json | 1 + .../179a2053-b80c-4b5d-ab83-e75934fd66d2.json | 1 + .../1bab3314-296c-4ade-91fa-a20dee0a3243.json | 1 + .../1c448338-21ce-44ac-90b9-bd0b911896bc.json | 1 + .../20835ba4-6145-4fbc-a58a-051ce700aa3e.json | 1 + .../2201bceb-a177-49c8-91e5-65399342de88.json | 1 + .../2357c44f-3cf0-47eb-8f7a-0f303eaefe08.json | 1 + .../24a704da-2867-446d-8d1a-5e920c75e09d.json | 1 + .../30250fcc-aac2-4473-94bf-7688cf16a604.json | 1 + .../3573cc27-514e-49fc-91ef-510f3fca6aab.json | 1 + .../544e49d6-3f05-4fa8-9a9e-091f98fc2ce8.json | 1 + .../580aaa0b-8b26-4bc6-9abe-6984e9980679.json | 1 + .../745b8038-b832-48f8-9873-1baa6de58ad7.json | 1 + .../76aadab4-10a3-4c8e-b4b9-dce7807050fc.json | 1 + .../7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca.json | 1 + .../8783acf4-8ffd-44d0-ac6c-61e76b1867ee.json | 1 + .../8cd8e7fb-f35b-417f-b147-ecc7ef089706.json | 1 + .../951249e0-9f16-456d-8b85-a6ca954da16b.json | 1 + .../95a40bf9-994f-4f8c-bd5e-f8bc347becf3.json | 1 + .../97d4ae8c-12df-45cd-8629-87e18f6e8ddf.json | 1 + .../987c7c4a-057a-454a-85f4-772f5c3a6935.json | 1 + .../9fd900dd-221b-4f89-8f2c-fba34243c835.json | 1 + .../aa8a78cc-e890-455c-8ca8-f0ab5fece55f.json | 1 + .../ab426a3a-eda6-4ddb-a87f-9eff7359e351.json | 1 + .../afc47931-f066-46b0-90be-9fe61f213428.json | 1 + .../b730527c-3233-41c2-aaf7-7cdab58f9749.json | 1 + .../bd1bcaba-bd7d-4a71-b143-997c882383e4.json | 1 + .../c26a2ac3-057f-4de8-8c06-9ff3e1c48017.json | 1 + .../c579484c-c7d1-4fd7-ba57-f93003d57a38.json | 1 + .../ca081965-20e1-401b-a6d9-1cec3e644dbb.json | 1 + .../d1bca093-45af-4ae2-a896-11ed7c6f9bda.json | 1 + .../d9bca169-7a8d-4581-90b2-487db4a4dabb.json | 1 + .../db69a24b-0109-4e72-9975-7a4e80e86c3e.json | 1 + .../dfe67d28-0f19-440b-ad19-7c1f70b3528b.json | 1 + .../e6448a2d-8905-4c78-b693-d7cb42c22021.json | 1 + .../ffb88a8f-af62-48f4-8f1d-3cb606443a43.json | 1 + headless/static/remote/resources/index.js | 25 + headless/static/src/chunks/bundle.js | 1773 + headless/static/src/import-map.json | 5 + .../src/ngame/ngame/plugins/protobuf.js | 9088 ++ headless/static/src/polyfills.bundle.js | 1 + headless/static/src/settings.json | 125 + headless/static/src/system.bundle.js | 1121 + headless/static/style.css | 51 + 525 files changed, 164826 insertions(+), 12 deletions(-) delete mode 100644 DataTables/Datas/~$__tables__.xlsx create mode 100644 DataTables/Datas/战斗/角色/升级/角色升星消耗表.xlsx create mode 100644 DataTables/Datas/战斗/角色/升级/角色升级消耗表.xlsx create mode 100644 JisolGameCocos/assets/resources/config/json/tbgrolecstar.json create mode 100644 JisolGameCocos/assets/resources/config/json/tbgrolecstar.json.meta create mode 100644 JisolGameCocos/assets/resources/config/json/tbgrolecup.json create mode 100644 JisolGameCocos/assets/resources/config/json/tbgrolecup.json.meta create mode 100644 JisolGameServer/Main/src/main/java/cfg/TB/TbGRoleCStar.java create mode 100644 JisolGameServer/Main/src/main/java/cfg/TB/TbGRoleCUp.java create mode 100644 JisolGameServer/Main/src/main/java/cfg/TbGEntity/Resource.java create mode 100644 JisolGameServer/Main/src/main/java/cfg/TbGRoleCStar.java create mode 100644 JisolGameServer/Main/src/main/java/cfg/TbGRoleCUp.java create mode 100644 JisolGameServer/Main/src/main/resources/json/tbgrolecstar.json create mode 100644 JisolGameServer/Main/src/main/resources/json/tbgrolecup.json create mode 100644 headless/index.js create mode 100644 headless/package.json create mode 100644 headless/static/application.js create mode 100644 headless/static/assets/internal/config.json create mode 100644 headless/static/assets/internal/import/1c/1c02ae6f-4492-4915-b8f8-7492a3b1e4cd.json create mode 100644 headless/static/assets/internal/import/50/50f4348b-c883-4e2f-8f11-ce233b859fa1.json create mode 100644 headless/static/assets/internal/import/60/60f7195c-ec2a-45eb-ba94-8955f60e81d0.json create mode 100644 headless/static/assets/internal/import/81/810e96e4-e456-4468-9b59-f4e8f39732c0.json create mode 100644 headless/static/assets/internal/import/87/871c3b6c-7379-419d-bda3-794b239ab90d.json create mode 100644 headless/static/assets/internal/import/8b/8bbdbcdd-5cd4-4100-b6d5-b7c9625b6107.json create mode 100644 headless/static/assets/internal/import/97/970b0598-bcb0-4714-91fb-2e81440dccd8.json create mode 100644 headless/static/assets/internal/import/a3/a3cd009f-0ab0-420d-9278-b9fdab939bbc.json create mode 100644 headless/static/assets/internal/import/b5/b5d6115f-0370-4d7c-aad3-c194cc71cf98.json create mode 100644 headless/static/assets/internal/import/bc/bcd64cc6-2dd9-43f6-abbe-66318d332032.json create mode 100644 headless/static/assets/internal/import/c2/c27215d8-6835-4b68-bfbb-bdeac6100c04.json create mode 100644 headless/static/assets/internal/import/d9/d930590d-bb92-4cc8-8bd1-23cd027f9edf.json create mode 100644 headless/static/assets/internal/import/dd/dd3a144d-ab7f-41f0-82b8-2e43a090d496.json create mode 100644 headless/static/assets/internal/import/e9/e9aa9a3e-5b2b-4ac7-a2c7-073de2b2b24f.json create mode 100644 headless/static/assets/internal/import/ef/efe8e2a3-eace-427b-b4f1-cb8a937ec77d.json create mode 100644 headless/static/assets/internal/import/f0/f0416e68-0200-4b77-a926-4f9d16e494da.json create mode 100644 headless/static/assets/internal/import/f9/f92806d7-1768-443f-afe8-12bcde84d0f0.json create mode 100644 headless/static/assets/internal/import/fd/fda095cb-831d-4601-ad94-846013963de8.json create mode 100644 headless/static/assets/internal/index.js create mode 100644 headless/static/assets/main/config.json create mode 100644 headless/static/assets/main/import/42/42607a6e-d30a-48cc-8161-2b3426e14703.json create mode 100644 headless/static/assets/main/import/ba/ba21476f-2866-4f81-9c4d-6e359316e448.json create mode 100644 headless/static/assets/main/import/fd/fd8ec536-a354-4a17-9c74-4f3883c378c8.json create mode 100644 headless/static/assets/main/index.js create mode 100644 headless/static/cocos-js/_virtual_cc-3c607f36.js create mode 100644 headless/static/cocos-js/assets/spine-a0005c42.wasm create mode 100644 headless/static/cocos-js/assets/spine.js.mem-c0c591ab.bin create mode 100644 headless/static/cocos-js/cc.js create mode 100644 headless/static/cocos-js/spine-3e0daee9.js create mode 100644 headless/static/cocos-js/spine.asm-0a7772b8.js create mode 100644 headless/static/cocos-js/spine.js-f7f5ea79.js create mode 100644 headless/static/cocos-js/spine.wasm-d2854650.js create mode 100644 headless/static/favicon.ico create mode 100644 headless/static/index.html create mode 100644 headless/static/index.js create mode 100644 headless/static/remote/battle/config.json create mode 100644 headless/static/remote/battle/import/00/001fea8b-233c-4830-96aa-5f0d9845668b.json create mode 100644 headless/static/remote/battle/import/00/001fea8b-233c-4830-96aa-5f0d9845668b@f9941.json create mode 100644 headless/static/remote/battle/import/01/010aa6cc-beed-4a06-8a6f-92dc1dda72c9.json create mode 100644 headless/static/remote/battle/import/02/026823e5-14f5-4f70-a73e-88a3f8e8001e.json create mode 100644 headless/static/remote/battle/import/02/026823e5-14f5-4f70-a73e-88a3f8e8001e@f9941.json create mode 100644 headless/static/remote/battle/import/03/03942db8-6a99-42a3-98cf-70229cc5403e.json create mode 100644 headless/static/remote/battle/import/03/03942db8-6a99-42a3-98cf-70229cc5403e@f9941.json create mode 100644 headless/static/remote/battle/import/04/0423f835-3fbe-49d7-9c6a-ff9588e5c122.json create mode 100644 headless/static/remote/battle/import/04/0423f835-3fbe-49d7-9c6a-ff9588e5c122@f9941.json create mode 100644 headless/static/remote/battle/import/06/063fc0a8-27de-4950-b87e-f8d93a8c97af.json create mode 100644 headless/static/remote/battle/import/06/063fc0a8-27de-4950-b87e-f8d93a8c97af@f9941.json create mode 100644 headless/static/remote/battle/import/06/06e4dec4-9199-42fa-81c9-1d6c8dce5e3e.json create mode 100644 headless/static/remote/battle/import/06/06e4dec4-9199-42fa-81c9-1d6c8dce5e3e@f9941.json create mode 100644 headless/static/remote/battle/import/07/07a6e3b4-0690-4be3-bd6a-ddb8655d0928.json create mode 100644 headless/static/remote/battle/import/07/07a6e3b4-0690-4be3-bd6a-ddb8655d0928@f9941.json create mode 100644 headless/static/remote/battle/import/09/09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e.json create mode 100644 headless/static/remote/battle/import/09/09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e@f9941.json create mode 100644 headless/static/remote/battle/import/0a/0a2ed6e6-8614-4176-a464-4c673e0d6847.json create mode 100644 headless/static/remote/battle/import/0a/0a2ed6e6-8614-4176-a464-4c673e0d6847@f9941.json create mode 100644 headless/static/remote/battle/import/0a/0a9ca732-f79e-47a8-865f-a11df7979eac.json create mode 100644 headless/static/remote/battle/import/0a/0a9ca732-f79e-47a8-865f-a11df7979eac@f9941.json create mode 100644 headless/static/remote/battle/import/0a/0af1bd07-ba37-4db6-bcdb-bd52c636cc65.json create mode 100644 headless/static/remote/battle/import/0a/0af1bd07-ba37-4db6-bcdb-bd52c636cc65@f9941.json create mode 100644 headless/static/remote/battle/import/0b/0bf76b1f7.json create mode 100644 headless/static/remote/battle/import/0d/0d0d520a-6a04-46ec-b8a7-f9f124a59574.json create mode 100644 headless/static/remote/battle/import/0e/0ec954bb-79cd-4122-bf5c-b86a13c5ef02.json create mode 100644 headless/static/remote/battle/import/0e/0ec954bb-79cd-4122-bf5c-b86a13c5ef02@f9941.json create mode 100644 headless/static/remote/battle/import/0f/0f96bbf8-0324-4eab-ba6a-2a70f7653610.json create mode 100644 headless/static/remote/battle/import/0f/0f96bbf8-0324-4eab-ba6a-2a70f7653610@f9941.json create mode 100644 headless/static/remote/battle/import/0f/0fcb82ad-681d-4f57-ae1e-708a5a1f7fab.json create mode 100644 headless/static/remote/battle/import/0f/0fcb82ad-681d-4f57-ae1e-708a5a1f7fab@f9941.json create mode 100644 headless/static/remote/battle/import/10/1014d8fe-eb7e-4351-9454-70ff7a4e4fbc.json create mode 100644 headless/static/remote/battle/import/10/1014d8fe-eb7e-4351-9454-70ff7a4e4fbc@f9941.json create mode 100644 headless/static/remote/battle/import/11/1168b518-61b0-4ca8-ba16-5085b3722064.json create mode 100644 headless/static/remote/battle/import/11/1168b518-61b0-4ca8-ba16-5085b3722064@f9941.json create mode 100644 headless/static/remote/battle/import/12/126a7574-0975-4062-b1de-6ebcc0dc0296.json create mode 100644 headless/static/remote/battle/import/12/126a7574-0975-4062-b1de-6ebcc0dc0296@f9941.json create mode 100644 headless/static/remote/battle/import/13/138e008e-f0c4-4724-922c-bcda2476a717.json create mode 100644 headless/static/remote/battle/import/13/138e008e-f0c4-4724-922c-bcda2476a717@f9941.json create mode 100644 headless/static/remote/battle/import/15/15495485-c12f-49b8-9b70-5f327417a643.json create mode 100644 headless/static/remote/battle/import/15/1581380d-bf95-4ce8-a80b-91ca21c5f8ab.json create mode 100644 headless/static/remote/battle/import/15/1581380d-bf95-4ce8-a80b-91ca21c5f8ab@f9941.json create mode 100644 headless/static/remote/battle/import/17/179a2053-b80c-4b5d-ab83-e75934fd66d2@f9941.json create mode 100644 headless/static/remote/battle/import/17/17ef8829-f581-4e37-9d9e-762b1e708229.json create mode 100644 headless/static/remote/battle/import/17/17ef8829-f581-4e37-9d9e-762b1e708229@f9941.json create mode 100644 headless/static/remote/battle/import/1e/1e495888-e38d-4c57-8fda-a8c69960409a.json create mode 100644 headless/static/remote/battle/import/1e/1e495888-e38d-4c57-8fda-a8c69960409a@f9941.json create mode 100644 headless/static/remote/battle/import/1e/1eb73a5f-ab8c-4f05-b833-6b14a361a4ee.json create mode 100644 headless/static/remote/battle/import/1e/1eb73a5f-ab8c-4f05-b833-6b14a361a4ee@f9941.json create mode 100644 headless/static/remote/battle/import/1f/1f2defe6-08ea-4919-be26-f263623f859a.json create mode 100644 headless/static/remote/battle/import/1f/1f2defe6-08ea-4919-be26-f263623f859a@f9941.json create mode 100644 headless/static/remote/battle/import/20/2058f147-aecf-4084-95ea-cdb5da0fedb1.json create mode 100644 headless/static/remote/battle/import/20/2058f147-aecf-4084-95ea-cdb5da0fedb1@f9941.json create mode 100644 headless/static/remote/battle/import/21/21d9faca-4169-4e95-b6f1-edda15e5d694.json create mode 100644 headless/static/remote/battle/import/21/21d9faca-4169-4e95-b6f1-edda15e5d694@f9941.json create mode 100644 headless/static/remote/battle/import/22/22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68.json create mode 100644 headless/static/remote/battle/import/22/22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68@f9941.json create mode 100644 headless/static/remote/battle/import/23/2357c44f-3cf0-47eb-8f7a-0f303eaefe08@f9941.json create mode 100644 headless/static/remote/battle/import/23/23d50907-baa5-41fd-9512-143679feac92.json create mode 100644 headless/static/remote/battle/import/23/23d50907-baa5-41fd-9512-143679feac92@f9941.json create mode 100644 headless/static/remote/battle/import/24/24869eec-947e-498b-93cb-9ac58ecb5876.json create mode 100644 headless/static/remote/battle/import/24/24869eec-947e-498b-93cb-9ac58ecb5876@f9941.json create mode 100644 headless/static/remote/battle/import/24/24b3fb75-7e7d-48bd-9dab-f88850c70be0.json create mode 100644 headless/static/remote/battle/import/24/24b3fb75-7e7d-48bd-9dab-f88850c70be0@f9941.json create mode 100644 headless/static/remote/battle/import/25/259f92ef-99c5-4e2b-bf7f-3cfd159a32e2.json create mode 100644 headless/static/remote/battle/import/25/259f92ef-99c5-4e2b-bf7f-3cfd159a32e2@f9941.json create mode 100644 headless/static/remote/battle/import/25/25ee0a91-fde7-460c-94b5-fc3063e7b2f9.json create mode 100644 headless/static/remote/battle/import/25/25ee0a91-fde7-460c-94b5-fc3063e7b2f9@f9941.json create mode 100644 headless/static/remote/battle/import/2a/2ac4038c-217b-4d36-840d-aebea7f45b72.json create mode 100644 headless/static/remote/battle/import/2a/2ac4038c-217b-4d36-840d-aebea7f45b72@f9941.json create mode 100644 headless/static/remote/battle/import/2a/2aff97dc-8695-491f-9b30-23cab6c11b9c.json create mode 100644 headless/static/remote/battle/import/2c/2cf6c696-6824-46d4-b0e4-25cd69fa7703.json create mode 100644 headless/static/remote/battle/import/2d/2d41bc63-88bf-4655-a81f-6a1269d8fd93.json create mode 100644 headless/static/remote/battle/import/2d/2d41bc63-88bf-4655-a81f-6a1269d8fd93@f9941.json create mode 100644 headless/static/remote/battle/import/2d/2d5360fe-fc08-448d-ae58-19a29ef677d2.json create mode 100644 headless/static/remote/battle/import/2d/2d5360fe-fc08-448d-ae58-19a29ef677d2@f9941.json create mode 100644 headless/static/remote/battle/import/2e/2e9aa2a1-2ec8-49bb-bf44-7aad4c27704e.json create mode 100644 headless/static/remote/battle/import/32/32299834-d060-4b93-b428-e1fe3b8346e8.json create mode 100644 headless/static/remote/battle/import/33/337f444f-e016-444a-bfc3-56fbecc80977.json create mode 100644 headless/static/remote/battle/import/33/337f444f-e016-444a-bfc3-56fbecc80977@f9941.json create mode 100644 headless/static/remote/battle/import/33/33bb5ab6-17d6-47a9-8466-a465c4a7e993.json create mode 100644 headless/static/remote/battle/import/33/33bb5ab6-17d6-47a9-8466-a465c4a7e993@f9941.json create mode 100644 headless/static/remote/battle/import/34/34ac9fdc-64c2-448b-963c-d75aab270352.json create mode 100644 headless/static/remote/battle/import/36/36187bcd-71ae-46c0-abff-4e256ce90276.json create mode 100644 headless/static/remote/battle/import/36/36187bcd-71ae-46c0-abff-4e256ce90276@f9941.json create mode 100644 headless/static/remote/battle/import/36/36c86de9-d150-48ef-8765-ad8f9e511c05.json create mode 100644 headless/static/remote/battle/import/36/36c86de9-d150-48ef-8765-ad8f9e511c05@f9941.json create mode 100644 headless/static/remote/battle/import/37/376b1458-940c-4ec6-8f67-19ef31cdc7a8.json create mode 100644 headless/static/remote/battle/import/37/376b1458-940c-4ec6-8f67-19ef31cdc7a8@f9941.json create mode 100644 headless/static/remote/battle/import/38/38004a8e-1e7e-481d-a276-ba12a9015c96.json create mode 100644 headless/static/remote/battle/import/38/38004a8e-1e7e-481d-a276-ba12a9015c96@f9941.json create mode 100644 headless/static/remote/battle/import/39/39e91df6-ddb4-436c-b709-7d0e1a281271.json create mode 100644 headless/static/remote/battle/import/39/39e91df6-ddb4-436c-b709-7d0e1a281271@f9941.json create mode 100644 headless/static/remote/battle/import/3a/3a4ad94b-6e0f-4a01-825b-1ef057215823.json create mode 100644 headless/static/remote/battle/import/3a/3a622b00-2de8-48cc-b358-3db8568ef5b3.json create mode 100644 headless/static/remote/battle/import/3a/3a622b00-2de8-48cc-b358-3db8568ef5b3@f9941.json create mode 100644 headless/static/remote/battle/import/3e/3e89062e-b618-4ae5-915b-d897340f2f40.json create mode 100644 headless/static/remote/battle/import/3e/3e89062e-b618-4ae5-915b-d897340f2f40@f9941.json create mode 100644 headless/static/remote/battle/import/3f/3f4a5236-67c0-48c2-bcb7-9ae628933935.json create mode 100644 headless/static/remote/battle/import/3f/3f4a5236-67c0-48c2-bcb7-9ae628933935@f9941.json create mode 100644 headless/static/remote/battle/import/40/40e867e0-35ab-44f1-a8ff-86cacf947cce.json create mode 100644 headless/static/remote/battle/import/40/40e867e0-35ab-44f1-a8ff-86cacf947cce@f9941.json create mode 100644 headless/static/remote/battle/import/41/41464bcc-b6ab-4a8b-a5dc-511b924c061b.json create mode 100644 headless/static/remote/battle/import/41/41464bcc-b6ab-4a8b-a5dc-511b924c061b@f9941.json create mode 100644 headless/static/remote/battle/import/44/446c59f6-d7f6-4d04-abef-7ccaf942893d.json create mode 100644 headless/static/remote/battle/import/44/446c59f6-d7f6-4d04-abef-7ccaf942893d@f9941.json create mode 100644 headless/static/remote/battle/import/44/44fca669-aad5-4e22-b846-82f3a296ec1e.json create mode 100644 headless/static/remote/battle/import/44/44fca669-aad5-4e22-b846-82f3a296ec1e@f9941.json create mode 100644 headless/static/remote/battle/import/45/45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4.json create mode 100644 headless/static/remote/battle/import/45/45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4@f9941.json create mode 100644 headless/static/remote/battle/import/48/4836df74-6d25-4922-a373-32949e6013df.json create mode 100644 headless/static/remote/battle/import/48/4836df74-6d25-4922-a373-32949e6013df@f9941.json create mode 100644 headless/static/remote/battle/import/4c/4c2c6c72-df5d-4d75-8a00-08138b76009a.json create mode 100644 headless/static/remote/battle/import/4c/4c2c6c72-df5d-4d75-8a00-08138b76009a@f9941.json create mode 100644 headless/static/remote/battle/import/4e/4eb039e0-4381-4ebf-8a71-5f4f85452b7b.json create mode 100644 headless/static/remote/battle/import/4e/4eb039e0-4381-4ebf-8a71-5f4f85452b7b@f9941.json create mode 100644 headless/static/remote/battle/import/4f/4fa5a433-2410-4c9f-a196-acc8b645ff69.json create mode 100644 headless/static/remote/battle/import/4f/4ff7df06-ccdc-4497-8332-fbf9b6abfc18.json create mode 100644 headless/static/remote/battle/import/4f/4ff7df06-ccdc-4497-8332-fbf9b6abfc18@f9941.json create mode 100644 headless/static/remote/battle/import/52/52113c9e-1b63-4a9b-99f7-2e5758514f81.json create mode 100644 headless/static/remote/battle/import/52/52113c9e-1b63-4a9b-99f7-2e5758514f81@f9941.json create mode 100644 headless/static/remote/battle/import/52/5248ee3e-c600-4b2b-b5d7-ccff7c9830c2.json create mode 100644 headless/static/remote/battle/import/53/53167f35-e100-434f-b671-9abe0bc64531.json create mode 100644 headless/static/remote/battle/import/53/53167f35-e100-434f-b671-9abe0bc64531@f9941.json create mode 100644 headless/static/remote/battle/import/53/534a0232-a40c-453e-8a9e-f7001bc0ce73.json create mode 100644 headless/static/remote/battle/import/53/534a0232-a40c-453e-8a9e-f7001bc0ce73@f9941.json create mode 100644 headless/static/remote/battle/import/54/54eddc0a-52cc-4235-ab55-0cb3810dcfd9.json create mode 100644 headless/static/remote/battle/import/54/54eddc0a-52cc-4235-ab55-0cb3810dcfd9@f9941.json create mode 100644 headless/static/remote/battle/import/54/54f082ca-86ef-49c8-a33d-8f2ce95c8b57.json create mode 100644 headless/static/remote/battle/import/54/54f082ca-86ef-49c8-a33d-8f2ce95c8b57@f9941.json create mode 100644 headless/static/remote/battle/import/55/55d7558e-5c18-49f7-a6e6-1b8c94037ecf.json create mode 100644 headless/static/remote/battle/import/55/55d7558e-5c18-49f7-a6e6-1b8c94037ecf@f9941.json create mode 100644 headless/static/remote/battle/import/56/5670f2a3-3ea4-4188-b34c-1ad1a40af86f.json create mode 100644 headless/static/remote/battle/import/57/57f8d466-d380-40b5-8241-4c6529053817.json create mode 100644 headless/static/remote/battle/import/58/5828e8e7-d037-46d8-a9af-63a11ae7349e.json create mode 100644 headless/static/remote/battle/import/58/5828e8e7-d037-46d8-a9af-63a11ae7349e@f9941.json create mode 100644 headless/static/remote/battle/import/58/583d2b42-0dc8-4b0c-af5e-b239374eed59.json create mode 100644 headless/static/remote/battle/import/58/583d2b42-0dc8-4b0c-af5e-b239374eed59@f9941.json create mode 100644 headless/static/remote/battle/import/58/58d32a22-c07f-4708-8abb-f39006bac8a9.json create mode 100644 headless/static/remote/battle/import/5a/5a77fe9d-52fd-4df5-ab08-e2766930e4f8.json create mode 100644 headless/static/remote/battle/import/5a/5a77fe9d-52fd-4df5-ab08-e2766930e4f8@f9941.json create mode 100644 headless/static/remote/battle/import/5c/5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb.json create mode 100644 headless/static/remote/battle/import/5c/5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb@f9941.json create mode 100644 headless/static/remote/battle/import/5d/5d81ab0f-18b9-49af-85f9-59f540e14208.json create mode 100644 headless/static/remote/battle/import/5d/5d81ab0f-18b9-49af-85f9-59f540e14208@f9941.json create mode 100644 headless/static/remote/battle/import/5f/5f7d151d-78bc-4738-b3eb-325440ea5f24.json create mode 100644 headless/static/remote/battle/import/5f/5f7d151d-78bc-4738-b3eb-325440ea5f24@f9941.json create mode 100644 headless/static/remote/battle/import/62/625edf63-d447-4c41-a5de-74e7f1e79514.json create mode 100644 headless/static/remote/battle/import/62/625edf63-d447-4c41-a5de-74e7f1e79514@f9941.json create mode 100644 headless/static/remote/battle/import/65/656a4136-154e-4a01-84ed-418fd085386a.json create mode 100644 headless/static/remote/battle/import/65/656a4136-154e-4a01-84ed-418fd085386a@f9941.json create mode 100644 headless/static/remote/battle/import/65/65c10712-318d-4ecf-8253-a91a90dbc1e8.json create mode 100644 headless/static/remote/battle/import/65/65c10712-318d-4ecf-8253-a91a90dbc1e8@f9941.json create mode 100644 headless/static/remote/battle/import/66/660ed781-d7e7-4630-81c0-67ebaaccc124.json create mode 100644 headless/static/remote/battle/import/66/660ed781-d7e7-4630-81c0-67ebaaccc124@f9941.json create mode 100644 headless/static/remote/battle/import/67/679bbb50-f1d5-4ac9-85f1-8aca77b0ca06.json create mode 100644 headless/static/remote/battle/import/67/679bbb50-f1d5-4ac9-85f1-8aca77b0ca06@f9941.json create mode 100644 headless/static/remote/battle/import/68/68dac8a9-ca70-44f4-b4d6-f0c2a7649d82.json create mode 100644 headless/static/remote/battle/import/68/68dac8a9-ca70-44f4-b4d6-f0c2a7649d82@f9941.json create mode 100644 headless/static/remote/battle/import/68/68dd7e1f-0996-4ac8-9b45-cb68975d7236.json create mode 100644 headless/static/remote/battle/import/68/68dd7e1f-0996-4ac8-9b45-cb68975d7236@f9941.json create mode 100644 headless/static/remote/battle/import/6b/6bea3dd7-ad6a-4cd3-a04e-99376e7dd9a2.json create mode 100644 headless/static/remote/battle/import/6d/6d4605ff-0938-44f8-a05c-55d93d20706d.json create mode 100644 headless/static/remote/battle/import/6d/6d4605ff-0938-44f8-a05c-55d93d20706d@f9941.json create mode 100644 headless/static/remote/battle/import/6d/6d7fd2fa-9401-4918-8f4c-9b85f1017146.json create mode 100644 headless/static/remote/battle/import/6e/6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223.json create mode 100644 headless/static/remote/battle/import/6e/6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223@f9941.json create mode 100644 headless/static/remote/battle/import/6e/6e73e1fa-3744-4e08-9eaa-117cc524afda.json create mode 100644 headless/static/remote/battle/import/6e/6e73e1fa-3744-4e08-9eaa-117cc524afda@f9941.json create mode 100644 headless/static/remote/battle/import/6e/6edb6339-008a-4064-b651-ace4908644cd.json create mode 100644 headless/static/remote/battle/import/6e/6edb6339-008a-4064-b651-ace4908644cd@f9941.json create mode 100644 headless/static/remote/battle/import/6f/6f92ffef-8b45-403f-9820-033a1e679d16.json create mode 100644 headless/static/remote/battle/import/6f/6f92ffef-8b45-403f-9820-033a1e679d16@f9941.json create mode 100644 headless/static/remote/battle/import/70/70507da1-9f99-425c-8d0a-7052e3b8ff23.json create mode 100644 headless/static/remote/battle/import/70/70507da1-9f99-425c-8d0a-7052e3b8ff23@f9941.json create mode 100644 headless/static/remote/battle/import/72/7231d9cd-c82a-4e10-86b7-ac6d066257aa.json create mode 100644 headless/static/remote/battle/import/72/7231d9cd-c82a-4e10-86b7-ac6d066257aa@f9941.json create mode 100644 headless/static/remote/battle/import/73/73e7b692-0dd7-428d-a37e-5294b5b02a78.json create mode 100644 headless/static/remote/battle/import/73/73e7b692-0dd7-428d-a37e-5294b5b02a78@f9941.json create mode 100644 headless/static/remote/battle/import/73/73f1d26b-8ad3-4745-884e-9407850365c4.json create mode 100644 headless/static/remote/battle/import/73/73f1d26b-8ad3-4745-884e-9407850365c4@f9941.json create mode 100644 headless/static/remote/battle/import/74/74953026-d287-43a7-ad10-bae8221f98b8.json create mode 100644 headless/static/remote/battle/import/76/76f1e75b-f463-45cf-9005-fb49cb2ab7bf.json create mode 100644 headless/static/remote/battle/import/76/76f1e75b-f463-45cf-9005-fb49cb2ab7bf@f9941.json create mode 100644 headless/static/remote/battle/import/77/771d3105-423e-4ae4-9e58-4e5f2fae3e9a.json create mode 100644 headless/static/remote/battle/import/77/771d3105-423e-4ae4-9e58-4e5f2fae3e9a@f9941.json create mode 100644 headless/static/remote/battle/import/78/78a2ff6d-18fa-4a97-b5d4-8efc3975682c.json create mode 100644 headless/static/remote/battle/import/78/78a2ff6d-18fa-4a97-b5d4-8efc3975682c@f9941.json create mode 100644 headless/static/remote/battle/import/7a/7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58.json create mode 100644 headless/static/remote/battle/import/7a/7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58@f9941.json create mode 100644 headless/static/remote/battle/import/7a/7aa6b522-4cbd-43fc-a884-ae201e302b97.json create mode 100644 headless/static/remote/battle/import/7a/7aa6b522-4cbd-43fc-a884-ae201e302b97@f9941.json create mode 100644 headless/static/remote/battle/import/7c/7ca59dc8-2635-47cd-98d6-94e9ec6c36fa.json create mode 100644 headless/static/remote/battle/import/7c/7ca59dc8-2635-47cd-98d6-94e9ec6c36fa@f9941.json create mode 100644 headless/static/remote/battle/import/7e/7ea77ef2-7734-492f-bb2c-22db352a8b49.json create mode 100644 headless/static/remote/battle/import/7e/7ea77ef2-7734-492f-bb2c-22db352a8b49@f9941.json create mode 100644 headless/static/remote/battle/import/7e/7ebdb065-a319-4ee0-a374-104137cf1d8c.json create mode 100644 headless/static/remote/battle/import/7e/7ebdb065-a319-4ee0-a374-104137cf1d8c@f9941.json create mode 100644 headless/static/remote/battle/import/82/82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2.json create mode 100644 headless/static/remote/battle/import/82/82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2@f9941.json create mode 100644 headless/static/remote/battle/import/82/8251d88e-0943-4c69-89cb-88116bb83e9f.json create mode 100644 headless/static/remote/battle/import/82/8251d88e-0943-4c69-89cb-88116bb83e9f@f9941.json create mode 100644 headless/static/remote/battle/import/86/8602bb7b-f67c-469f-925b-4ffea75e6fca.json create mode 100644 headless/static/remote/battle/import/86/8602bb7b-f67c-469f-925b-4ffea75e6fca@f9941.json create mode 100644 headless/static/remote/battle/import/86/8665e251-73b9-4bb1-b908-161c51250d6f.json create mode 100644 headless/static/remote/battle/import/86/8665e251-73b9-4bb1-b908-161c51250d6f@f9941.json create mode 100644 headless/static/remote/battle/import/86/86a627d7-2064-4e31-85c0-43ded881c083.json create mode 100644 headless/static/remote/battle/import/86/86a627d7-2064-4e31-85c0-43ded881c083@f9941.json create mode 100644 headless/static/remote/battle/import/89/89265b4f-16df-4020-a73b-6e7217e2ebd7.json create mode 100644 headless/static/remote/battle/import/89/89265b4f-16df-4020-a73b-6e7217e2ebd7@f9941.json create mode 100644 headless/static/remote/battle/import/8a/8af43c10-0847-478c-a7e9-82ca49d4401d.json create mode 100644 headless/static/remote/battle/import/8a/8af43c10-0847-478c-a7e9-82ca49d4401d@f9941.json create mode 100644 headless/static/remote/battle/import/8c/8cd8e7fb-f35b-417f-b147-ecc7ef089706@f9941.json create mode 100644 headless/static/remote/battle/import/8e/8ef1f316-b788-4822-86d2-4d77deb9e57c.json create mode 100644 headless/static/remote/battle/import/8e/8ef1f316-b788-4822-86d2-4d77deb9e57c@f9941.json create mode 100644 headless/static/remote/battle/import/91/917d53cb-10f1-4065-b7c3-57a9500b96e1.json create mode 100644 headless/static/remote/battle/import/91/917d53cb-10f1-4065-b7c3-57a9500b96e1@f9941.json create mode 100644 headless/static/remote/battle/import/96/96e5083f-61ee-4d79-97b9-c297bb68c54a.json create mode 100644 headless/static/remote/battle/import/96/96e5083f-61ee-4d79-97b9-c297bb68c54a@f9941.json create mode 100644 headless/static/remote/battle/import/98/9821c439-9937-4fc7-b924-2d88b9d44e36.json create mode 100644 headless/static/remote/battle/import/98/9821c439-9937-4fc7-b924-2d88b9d44e36@f9941.json create mode 100644 headless/static/remote/battle/import/99/9968d439-7e1e-4994-bc1b-8bca5d7b49d8.json create mode 100644 headless/static/remote/battle/import/99/9968d439-7e1e-4994-bc1b-8bca5d7b49d8@f9941.json create mode 100644 headless/static/remote/battle/import/9a/9a740c1b-d991-4428-9549-1017bfb6358e.json create mode 100644 headless/static/remote/battle/import/9a/9a740c1b-d991-4428-9549-1017bfb6358e@f9941.json create mode 100644 headless/static/remote/battle/import/9a/9a782e6d-767c-430e-9b91-86b4ca15645b.json create mode 100644 headless/static/remote/battle/import/9a/9a782e6d-767c-430e-9b91-86b4ca15645b@f9941.json create mode 100644 headless/static/remote/battle/import/9b/9ba0cb57-c7d4-43b9-9a45-c90fd071e578.json create mode 100644 headless/static/remote/battle/import/9b/9ba0cb57-c7d4-43b9-9a45-c90fd071e578@f9941.json create mode 100644 headless/static/remote/battle/import/9b/9ba1ed01-edb4-4f3e-988c-f6111de69597.json create mode 100644 headless/static/remote/battle/import/9c/9c004ab3-a3a9-46f9-a859-dcc4c3c3769b.json create mode 100644 headless/static/remote/battle/import/9c/9c004ab3-a3a9-46f9-a859-dcc4c3c3769b@f9941.json create mode 100644 headless/static/remote/battle/import/9d/9de99d59-c865-4435-a1ce-6bf6212d468c.json create mode 100644 headless/static/remote/battle/import/9d/9de99d59-c865-4435-a1ce-6bf6212d468c@f9941.json create mode 100644 headless/static/remote/battle/import/9e/9eb72656-748d-4794-8dac-4b7299e6cd39.json create mode 100644 headless/static/remote/battle/import/a0/a0ef72ac-b418-40da-b320-095a2874e061.json create mode 100644 headless/static/remote/battle/import/a1/a1883b0d-fa9a-4329-8f78-ff42d1adb9ac.json create mode 100644 headless/static/remote/battle/import/a1/a1883b0d-fa9a-4329-8f78-ff42d1adb9ac@f9941.json create mode 100644 headless/static/remote/battle/import/a6/a64f70c5-fd92-4f53-9cea-a726d3ccb680.json create mode 100644 headless/static/remote/battle/import/a6/a64f70c5-fd92-4f53-9cea-a726d3ccb680@f9941.json create mode 100644 headless/static/remote/battle/import/a7/a73cc36b-81f8-4a83-ae05-c7c976183907.json create mode 100644 headless/static/remote/battle/import/a7/a73cc36b-81f8-4a83-ae05-c7c976183907@f9941.json create mode 100644 headless/static/remote/battle/import/aa/aa74ba45-1456-4980-abe3-8ed0e52767a0.json create mode 100644 headless/static/remote/battle/import/aa/aa74ba45-1456-4980-abe3-8ed0e52767a0@f9941.json create mode 100644 headless/static/remote/battle/import/aa/aad2c55e-36af-44a3-8c6d-5639841cc67d.json create mode 100644 headless/static/remote/battle/import/aa/aad2c55e-36af-44a3-8c6d-5639841cc67d@f9941.json create mode 100644 headless/static/remote/battle/import/aa/aad7964b-28e4-4daa-9981-282c7f28ee2a.json create mode 100644 headless/static/remote/battle/import/aa/aad7964b-28e4-4daa-9981-282c7f28ee2a@f9941.json create mode 100644 headless/static/remote/battle/import/ab/ab26edf5-c9aa-4def-bd6f-6e05efe76d0d.json create mode 100644 headless/static/remote/battle/import/ab/ab26edf5-c9aa-4def-bd6f-6e05efe76d0d@f9941.json create mode 100644 headless/static/remote/battle/import/ab/abd50507-0cfd-49f8-8c6d-3b00ba75b8f6.json create mode 100644 headless/static/remote/battle/import/ab/abd50507-0cfd-49f8-8c6d-3b00ba75b8f6@f9941.json create mode 100644 headless/static/remote/battle/import/ac/ac4f309c-c432-4fed-ad6d-3e058bd928c3.json create mode 100644 headless/static/remote/battle/import/ac/ac4f309c-c432-4fed-ad6d-3e058bd928c3@f9941.json create mode 100644 headless/static/remote/battle/import/ac/ac93c3a9-4f91-424b-8d99-22819bf809a2.json create mode 100644 headless/static/remote/battle/import/ac/ac93c3a9-4f91-424b-8d99-22819bf809a2@f9941.json create mode 100644 headless/static/remote/battle/import/ac/ac99ce70-b5af-40d4-9db1-97a9b4a029a1.json create mode 100644 headless/static/remote/battle/import/ac/ac99ce70-b5af-40d4-9db1-97a9b4a029a1@f9941.json create mode 100644 headless/static/remote/battle/import/ac/acbf7e84-b9a5-4669-a409-57aea3e9ad8a.json create mode 100644 headless/static/remote/battle/import/ad/ad215587-f029-4276-b2c0-ba6292da5e83.json create mode 100644 headless/static/remote/battle/import/ad/ad215587-f029-4276-b2c0-ba6292da5e83@f9941.json create mode 100644 headless/static/remote/battle/import/ad/ad329478-0a3a-4e0f-9951-ea8a178f72a6.json create mode 100644 headless/static/remote/battle/import/ad/ad329478-0a3a-4e0f-9951-ea8a178f72a6@f9941.json create mode 100644 headless/static/remote/battle/import/ae/ae0870b4-96fe-4646-9ade-2f48db9518e0.json create mode 100644 headless/static/remote/battle/import/ae/ae0870b4-96fe-4646-9ade-2f48db9518e0@f9941.json create mode 100644 headless/static/remote/battle/import/ae/ae43d248-143b-4c9f-b93d-be8286fc1565.json create mode 100644 headless/static/remote/battle/import/ae/ae43d248-143b-4c9f-b93d-be8286fc1565@f9941.json create mode 100644 headless/static/remote/battle/import/b2/b2690697-0ed9-4ed8-b451-468e87cf2266.json create mode 100644 headless/static/remote/battle/import/b2/b2690697-0ed9-4ed8-b451-468e87cf2266@f9941.json create mode 100644 headless/static/remote/battle/import/b3/b32f733a-d305-4f1c-8542-45f68a22d072.json create mode 100644 headless/static/remote/battle/import/b3/b32f733a-d305-4f1c-8542-45f68a22d072@f9941.json create mode 100644 headless/static/remote/battle/import/b3/b3bb16f2-78ad-418e-abb7-fb1719ae935c.json create mode 100644 headless/static/remote/battle/import/b3/b3bb16f2-78ad-418e-abb7-fb1719ae935c@f9941.json create mode 100644 headless/static/remote/battle/import/b5/b5d7be0c-1350-4548-ac0d-275d2d81d39e.json create mode 100644 headless/static/remote/battle/import/b5/b5d7be0c-1350-4548-ac0d-275d2d81d39e@f9941.json create mode 100644 headless/static/remote/battle/import/b6/b6f851cd-8a7b-4fff-9d93-88a6165a4c68.json create mode 100644 headless/static/remote/battle/import/b6/b6f851cd-8a7b-4fff-9d93-88a6165a4c68@f9941.json create mode 100644 headless/static/remote/battle/import/b7/b716aa0f-2c37-4287-a6c6-032ab8364bcf.json create mode 100644 headless/static/remote/battle/import/b7/b716aa0f-2c37-4287-a6c6-032ab8364bcf@f9941.json create mode 100644 headless/static/remote/battle/import/b7/b77dd676-c35c-4b6d-9caa-27aeda3f3cfc.json create mode 100644 headless/static/remote/battle/import/b7/b77dd676-c35c-4b6d-9caa-27aeda3f3cfc@f9941.json create mode 100644 headless/static/remote/battle/import/bb/bb77826b-b6c0-4b07-aeb0-ead7ca451f8d.json create mode 100644 headless/static/remote/battle/import/bb/bb77826b-b6c0-4b07-aeb0-ead7ca451f8d@f9941.json create mode 100644 headless/static/remote/battle/import/bb/bbf93c62-c99c-42d5-bdfd-1a1fea064af6.json create mode 100644 headless/static/remote/battle/import/bb/bbf93c62-c99c-42d5-bdfd-1a1fea064af6@f9941.json create mode 100644 headless/static/remote/battle/import/bd/bde0c35f-afdc-4df8-b186-aa8f93942b48.json create mode 100644 headless/static/remote/battle/import/bd/bde0c35f-afdc-4df8-b186-aa8f93942b48@f9941.json create mode 100644 headless/static/remote/battle/import/be/bec67e6e-8cac-46c2-85d5-6d51c69e5573.json create mode 100644 headless/static/remote/battle/import/be/bec67e6e-8cac-46c2-85d5-6d51c69e5573@f9941.json create mode 100644 headless/static/remote/battle/import/bf/bfb5a670-2c13-425f-8b50-d42c6f880907.json create mode 100644 headless/static/remote/battle/import/bf/bfb5a670-2c13-425f-8b50-d42c6f880907@f9941.json create mode 100644 headless/static/remote/battle/import/c0/c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a.json create mode 100644 headless/static/remote/battle/import/c0/c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a@f9941.json create mode 100644 headless/static/remote/battle/import/c0/c059355d-3503-4aa1-87c0-38b81b2050e2.json create mode 100644 headless/static/remote/battle/import/c0/c059355d-3503-4aa1-87c0-38b81b2050e2@f9941.json create mode 100644 headless/static/remote/battle/import/c2/c26a2ac3-057f-4de8-8c06-9ff3e1c48017@f9941.json create mode 100644 headless/static/remote/battle/import/c3/c3019d06-733d-4076-804b-ef4165b1be57.json create mode 100644 headless/static/remote/battle/import/c3/c3019d06-733d-4076-804b-ef4165b1be57@f9941.json create mode 100644 headless/static/remote/battle/import/c3/c3c78943-a4cd-4762-a723-86206969885e.json create mode 100644 headless/static/remote/battle/import/c3/c3c78943-a4cd-4762-a723-86206969885e@f9941.json create mode 100644 headless/static/remote/battle/import/c4/c4a53c5d-b489-4b37-a5ca-72bfe7ffe452.json create mode 100644 headless/static/remote/battle/import/c4/c4a53c5d-b489-4b37-a5ca-72bfe7ffe452@f9941.json create mode 100644 headless/static/remote/battle/import/c4/c4fba28b-29af-4666-b7d1-0720ce76524b.json create mode 100644 headless/static/remote/battle/import/c4/c4fba28b-29af-4666-b7d1-0720ce76524b@f9941.json create mode 100644 headless/static/remote/battle/import/c6/c6e672c2-f040-4f87-8f4b-2c83be6d69a6.json create mode 100644 headless/static/remote/battle/import/c7/c70b94ef-5ff6-4295-992a-5579a2d6458b.json create mode 100644 headless/static/remote/battle/import/c7/c70b94ef-5ff6-4295-992a-5579a2d6458b@f9941.json create mode 100644 headless/static/remote/battle/import/c7/c71daad3-b3f3-4204-9416-c885a6303ac9.json create mode 100644 headless/static/remote/battle/import/c7/c71daad3-b3f3-4204-9416-c885a6303ac9@f9941.json create mode 100644 headless/static/remote/battle/import/ca/ca65e2f4-8510-484c-8dd2-f4eaef7f66c7.json create mode 100644 headless/static/remote/battle/import/ca/ca65e2f4-8510-484c-8dd2-f4eaef7f66c7@f9941.json create mode 100644 headless/static/remote/battle/import/ca/ca86f45b-2472-40ee-b653-259dbe441007.json create mode 100644 headless/static/remote/battle/import/ca/ca86f45b-2472-40ee-b653-259dbe441007@f9941.json create mode 100644 headless/static/remote/battle/import/cb/cb5ace05-d558-40ee-8bd2-ef9401e3c19b.json create mode 100644 headless/static/remote/battle/import/cb/cb5ace05-d558-40ee-8bd2-ef9401e3c19b@f9941.json create mode 100644 headless/static/remote/battle/import/cc/cc320ae3-2792-40b4-adce-011d97efc064.json create mode 100644 headless/static/remote/battle/import/cc/cc320ae3-2792-40b4-adce-011d97efc064@f9941.json create mode 100644 headless/static/remote/battle/import/ce/ce94d072-b86a-43e2-af31-374069cf363e.json create mode 100644 headless/static/remote/battle/import/ce/ce94d072-b86a-43e2-af31-374069cf363e@f9941.json create mode 100644 headless/static/remote/battle/import/d2/d2b965cd-897e-455b-8d21-5ed3bf0902be.json create mode 100644 headless/static/remote/battle/import/d2/d2b965cd-897e-455b-8d21-5ed3bf0902be@f9941.json create mode 100644 headless/static/remote/battle/import/d3/d330c1ef-5e51-4335-980b-d535892c4a18.json create mode 100644 headless/static/remote/battle/import/d3/d330c1ef-5e51-4335-980b-d535892c4a18@f9941.json create mode 100644 headless/static/remote/battle/import/d3/d3a8da1f-daa5-4e52-929a-edf95edb8275.json create mode 100644 headless/static/remote/battle/import/d3/d3a8da1f-daa5-4e52-929a-edf95edb8275@f9941.json create mode 100644 headless/static/remote/battle/import/d4/d4feff1b-d3c0-4001-9a95-320adb8ab285.json create mode 100644 headless/static/remote/battle/import/d4/d4feff1b-d3c0-4001-9a95-320adb8ab285@f9941.json create mode 100644 headless/static/remote/battle/import/d6/d602f103-bb41-4a24-85c7-d97fccaadf24.json create mode 100644 headless/static/remote/battle/import/d6/d602f103-bb41-4a24-85c7-d97fccaadf24@f9941.json create mode 100644 headless/static/remote/battle/import/d6/d63dc130-416b-422c-a90f-273895f4db73.json create mode 100644 headless/static/remote/battle/import/d6/d63dc130-416b-422c-a90f-273895f4db73@f9941.json create mode 100644 headless/static/remote/battle/import/d8/d8b2f923-b61d-4e95-820a-7ccc0d9031bc.json create mode 100644 headless/static/remote/battle/import/d8/d8b2f923-b61d-4e95-820a-7ccc0d9031bc@f9941.json create mode 100644 headless/static/remote/battle/import/d8/d8c705a6-a4c6-4936-b706-56e89e9bf344.json create mode 100644 headless/static/remote/battle/import/d8/d8c705a6-a4c6-4936-b706-56e89e9bf344@f9941.json create mode 100644 headless/static/remote/battle/import/dc/dc059148-a12d-4947-a708-ae642f146745.json create mode 100644 headless/static/remote/battle/import/dc/dc059148-a12d-4947-a708-ae642f146745@f9941.json create mode 100644 headless/static/remote/battle/import/dc/dc64288e-f16e-4fa1-bec7-f79a9b9ec72b.json create mode 100644 headless/static/remote/battle/import/dc/dc64288e-f16e-4fa1-bec7-f79a9b9ec72b@f9941.json create mode 100644 headless/static/remote/battle/import/dc/dc70290b-e14b-4d59-81a8-e037fa6b587c.json create mode 100644 headless/static/remote/battle/import/dc/dc70290b-e14b-4d59-81a8-e037fa6b587c@f9941.json create mode 100644 headless/static/remote/battle/import/dc/dce246d4-116d-4f36-893b-43a64365169d.json create mode 100644 headless/static/remote/battle/import/dc/dce246d4-116d-4f36-893b-43a64365169d@f9941.json create mode 100644 headless/static/remote/battle/import/dd/dd17b176-c0e4-471b-953d-157482a7e61e.json create mode 100644 headless/static/remote/battle/import/dd/dd17b176-c0e4-471b-953d-157482a7e61e@f9941.json create mode 100644 headless/static/remote/battle/import/e0/e08aaf39-bbce-4699-b45c-6f72957869ca.json create mode 100644 headless/static/remote/battle/import/e0/e08aaf39-bbce-4699-b45c-6f72957869ca@f9941.json create mode 100644 headless/static/remote/battle/import/e1/e13e6dc3-6a6f-4f53-972c-0290b5963bbb.json create mode 100644 headless/static/remote/battle/import/e1/e13e6dc3-6a6f-4f53-972c-0290b5963bbb@f9941.json create mode 100644 headless/static/remote/battle/import/e5/e59a20fa-257a-4368-8cd6-736614ee4c3b.json create mode 100644 headless/static/remote/battle/import/e5/e59a20fa-257a-4368-8cd6-736614ee4c3b@f9941.json create mode 100644 headless/static/remote/battle/import/e6/e6d6cc9e-cc78-48b3-99c4-5debb6e15004.json create mode 100644 headless/static/remote/battle/import/e6/e6d6cc9e-cc78-48b3-99c4-5debb6e15004@f9941.json create mode 100644 headless/static/remote/battle/import/e6/e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f.json create mode 100644 headless/static/remote/battle/import/e6/e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f@f9941.json create mode 100644 headless/static/remote/battle/import/e8/e8550400-59c1-4cde-a972-b6df5f696b09.json create mode 100644 headless/static/remote/battle/import/e8/e8550400-59c1-4cde-a972-b6df5f696b09@f9941.json create mode 100644 headless/static/remote/battle/import/e9/e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8.json create mode 100644 headless/static/remote/battle/import/e9/e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8@f9941.json create mode 100644 headless/static/remote/battle/import/ec/eccf0439-94a8-4b1a-8c7c-229f7a3042d9.json create mode 100644 headless/static/remote/battle/import/ec/eccf0439-94a8-4b1a-8c7c-229f7a3042d9@f9941.json create mode 100644 headless/static/remote/battle/import/ed/ed84140d-68f8-4dee-aa53-df590512fa94.json create mode 100644 headless/static/remote/battle/import/ed/ed84140d-68f8-4dee-aa53-df590512fa94@f9941.json create mode 100644 headless/static/remote/battle/import/f2/f2f6ace7-cda7-4312-8403-42c8767ac2f5.json create mode 100644 headless/static/remote/battle/import/f2/f2f6ace7-cda7-4312-8403-42c8767ac2f5@f9941.json create mode 100644 headless/static/remote/battle/import/f4/f4e45413-6b04-404c-8a2c-603b45f7caff.json create mode 100644 headless/static/remote/battle/import/f4/f4e45413-6b04-404c-8a2c-603b45f7caff@f9941.json create mode 100644 headless/static/remote/battle/import/f4/f4f58d91-aad3-471e-9328-b714e8e5982c.json create mode 100644 headless/static/remote/battle/import/f7/f71c334f-843b-49b0-b14b-616629f00565.json create mode 100644 headless/static/remote/battle/import/f7/f71c334f-843b-49b0-b14b-616629f00565@f9941.json create mode 100644 headless/static/remote/battle/import/fa/fa67273e-09aa-4baa-ac04-3a86c5698e1b.json create mode 100644 headless/static/remote/battle/import/fa/fa67273e-09aa-4baa-ac04-3a86c5698e1b@f9941.json create mode 100644 headless/static/remote/battle/import/fa/faab0107-f3e3-49e0-82e1-6b992e6d5ce6.json create mode 100644 headless/static/remote/battle/import/fa/faab0107-f3e3-49e0-82e1-6b992e6d5ce6@f9941.json create mode 100644 headless/static/remote/battle/import/fa/faeb7ee7-ef85-400d-aab5-250de6beac72.json create mode 100644 headless/static/remote/battle/import/fa/faeb7ee7-ef85-400d-aab5-250de6beac72@f9941.json create mode 100644 headless/static/remote/battle/import/fb/fbadc552-d5aa-42fc-a9da-f4c9398d3ea8.json create mode 100644 headless/static/remote/battle/import/fb/fbadc552-d5aa-42fc-a9da-f4c9398d3ea8@f9941.json create mode 100644 headless/static/remote/battle/import/fc/fc568493-5c48-42fe-83ae-ae4a8e6c79c6.json create mode 100644 headless/static/remote/battle/import/fc/fc568493-5c48-42fe-83ae-ae4a8e6c79c6@f9941.json create mode 100644 headless/static/remote/battle/import/fc/fcd65028-f911-47d4-8a0e-c9d8d49a8542.json create mode 100644 headless/static/remote/battle/import/fc/fcd65028-f911-47d4-8a0e-c9d8d49a8542@f9941.json create mode 100644 headless/static/remote/battle/import/fd/fd4028bb-d170-4a6c-a419-2ade1ed59038.json create mode 100644 headless/static/remote/battle/import/fd/fd4028bb-d170-4a6c-a419-2ade1ed59038@f9941.json create mode 100644 headless/static/remote/battle/import/fd/fdd5cc13-b87e-43b2-8d10-5d91105d43fc.json create mode 100644 headless/static/remote/battle/import/fd/fdd5cc13-b87e-43b2-8d10-5d91105d43fc@f9941.json create mode 100644 headless/static/remote/battle/import/fe/fe006121-94b6-4567-befa-d5d7c12fb3aa.json create mode 100644 headless/static/remote/battle/import/fe/fef99059-e5d9-47a9-87f4-46578f2fcae2.json create mode 100644 headless/static/remote/battle/import/fe/fef99059-e5d9-47a9-87f4-46578f2fcae2@f9941.json create mode 100644 headless/static/remote/battle/import/fe/fefd7337-749b-4478-80e6-90f6c8c91f78.json create mode 100644 headless/static/remote/battle/import/fe/fefd7337-749b-4478-80e6-90f6c8c91f78@f9941.json create mode 100644 headless/static/remote/battle/import/ff/ffd5101f-8560-4166-87a3-a649ceaf8161.json create mode 100644 headless/static/remote/battle/import/ff/ffd5101f-8560-4166-87a3-a649ceaf8161@f9941.json create mode 100644 headless/static/remote/battle/index.js create mode 100644 headless/static/remote/ngame_src/config.json create mode 100644 headless/static/remote/ngame_src/import/74/74a2caa9-3ce8-48c7-b658-c57115568c8f.json create mode 100644 headless/static/remote/ngame_src/import/86/867fff28-95e1-4638-b0cc-c7ff4cb6829c.json create mode 100644 headless/static/remote/ngame_src/import/8c/8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b.json create mode 100644 headless/static/remote/ngame_src/import/8c/8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b@6c48a.json create mode 100644 headless/static/remote/ngame_src/import/8c/8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b@f9941.json create mode 100644 headless/static/remote/ngame_src/index.js create mode 100644 headless/static/remote/resources/config.json create mode 100644 headless/static/remote/resources/import/02/02638159c.json create mode 100644 headless/static/remote/resources/import/02/02894a0ad.json create mode 100644 headless/static/remote/resources/import/03/03038aaf8.json create mode 100644 headless/static/remote/resources/import/05/0578e6725.json create mode 100644 headless/static/remote/resources/import/05/05fd1428a.json create mode 100644 headless/static/remote/resources/import/07/072d38c93.json create mode 100644 headless/static/remote/resources/import/08/088ce3f4b.json create mode 100644 headless/static/remote/resources/import/08/08967caef.json create mode 100644 headless/static/remote/resources/import/09/097fa3f25.json create mode 100644 headless/static/remote/resources/import/0b/0b5f814c9.json create mode 100644 headless/static/remote/resources/import/0c/0ccb44c9-b7bc-4fc6-b7d2-8a4335f806a5.json create mode 100644 headless/static/remote/resources/import/0e/0ecfcd971.json create mode 100644 headless/static/remote/resources/import/0f/0fe160da1.json create mode 100644 headless/static/remote/resources/import/11/11bdc4b0-64a8-4eb7-a2a7-9fb9e233e977.json create mode 100644 headless/static/remote/resources/import/13/13ffba43-826c-4f33-8ac2-4b59811ce9b0.json create mode 100644 headless/static/remote/resources/import/15/158e7e52-3220-4cd7-9694-713e0e6e8278.json create mode 100644 headless/static/remote/resources/import/17/179a2053-b80c-4b5d-ab83-e75934fd66d2.json create mode 100644 headless/static/remote/resources/import/1b/1bab3314-296c-4ade-91fa-a20dee0a3243.json create mode 100644 headless/static/remote/resources/import/1c/1c448338-21ce-44ac-90b9-bd0b911896bc.json create mode 100644 headless/static/remote/resources/import/20/20835ba4-6145-4fbc-a58a-051ce700aa3e.json create mode 100644 headless/static/remote/resources/import/22/2201bceb-a177-49c8-91e5-65399342de88.json create mode 100644 headless/static/remote/resources/import/23/2357c44f-3cf0-47eb-8f7a-0f303eaefe08.json create mode 100644 headless/static/remote/resources/import/24/24a704da-2867-446d-8d1a-5e920c75e09d.json create mode 100644 headless/static/remote/resources/import/30/30250fcc-aac2-4473-94bf-7688cf16a604.json create mode 100644 headless/static/remote/resources/import/35/3573cc27-514e-49fc-91ef-510f3fca6aab.json create mode 100644 headless/static/remote/resources/import/54/544e49d6-3f05-4fa8-9a9e-091f98fc2ce8.json create mode 100644 headless/static/remote/resources/import/58/580aaa0b-8b26-4bc6-9abe-6984e9980679.json create mode 100644 headless/static/remote/resources/import/74/745b8038-b832-48f8-9873-1baa6de58ad7.json create mode 100644 headless/static/remote/resources/import/76/76aadab4-10a3-4c8e-b4b9-dce7807050fc.json create mode 100644 headless/static/remote/resources/import/7d/7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca.json create mode 100644 headless/static/remote/resources/import/87/8783acf4-8ffd-44d0-ac6c-61e76b1867ee.json create mode 100644 headless/static/remote/resources/import/8c/8cd8e7fb-f35b-417f-b147-ecc7ef089706.json create mode 100644 headless/static/remote/resources/import/95/951249e0-9f16-456d-8b85-a6ca954da16b.json create mode 100644 headless/static/remote/resources/import/95/95a40bf9-994f-4f8c-bd5e-f8bc347becf3.json create mode 100644 headless/static/remote/resources/import/97/97d4ae8c-12df-45cd-8629-87e18f6e8ddf.json create mode 100644 headless/static/remote/resources/import/98/987c7c4a-057a-454a-85f4-772f5c3a6935.json create mode 100644 headless/static/remote/resources/import/9f/9fd900dd-221b-4f89-8f2c-fba34243c835.json create mode 100644 headless/static/remote/resources/import/aa/aa8a78cc-e890-455c-8ca8-f0ab5fece55f.json create mode 100644 headless/static/remote/resources/import/ab/ab426a3a-eda6-4ddb-a87f-9eff7359e351.json create mode 100644 headless/static/remote/resources/import/af/afc47931-f066-46b0-90be-9fe61f213428.json create mode 100644 headless/static/remote/resources/import/b7/b730527c-3233-41c2-aaf7-7cdab58f9749.json create mode 100644 headless/static/remote/resources/import/bd/bd1bcaba-bd7d-4a71-b143-997c882383e4.json create mode 100644 headless/static/remote/resources/import/c2/c26a2ac3-057f-4de8-8c06-9ff3e1c48017.json create mode 100644 headless/static/remote/resources/import/c5/c579484c-c7d1-4fd7-ba57-f93003d57a38.json create mode 100644 headless/static/remote/resources/import/ca/ca081965-20e1-401b-a6d9-1cec3e644dbb.json create mode 100644 headless/static/remote/resources/import/d1/d1bca093-45af-4ae2-a896-11ed7c6f9bda.json create mode 100644 headless/static/remote/resources/import/d9/d9bca169-7a8d-4581-90b2-487db4a4dabb.json create mode 100644 headless/static/remote/resources/import/db/db69a24b-0109-4e72-9975-7a4e80e86c3e.json create mode 100644 headless/static/remote/resources/import/df/dfe67d28-0f19-440b-ad19-7c1f70b3528b.json create mode 100644 headless/static/remote/resources/import/e6/e6448a2d-8905-4c78-b693-d7cb42c22021.json create mode 100644 headless/static/remote/resources/import/ff/ffb88a8f-af62-48f4-8f1d-3cb606443a43.json create mode 100644 headless/static/remote/resources/index.js create mode 100644 headless/static/src/chunks/bundle.js create mode 100644 headless/static/src/import-map.json create mode 100644 headless/static/src/ngame/ngame/plugins/protobuf.js create mode 100644 headless/static/src/polyfills.bundle.js create mode 100644 headless/static/src/settings.json create mode 100644 headless/static/src/system.bundle.js create mode 100644 headless/static/style.css diff --git a/DataTables/Datas/__beans__.xlsx b/DataTables/Datas/__beans__.xlsx index 7d5a8071796c17ba1d2227c7068942758f0ad7cb..3fdcee74a2e6cd9357de8fafd02cd54b76a9cc12 100644 GIT binary patch delta 2406 zcmZ8jc{J3E7oQnp$ui0Ih7rTqd4m+Pk1$f!ERT7NWh@yJ&CJizVoa9wjPiUZJS1fa zp|Q(WO_muUVMrudLJ~>RLwOzhL>d#;oO(D6x6AZMn#~*KWG!ySmKr5ZHm^-Tc3x zAI>*}|MYOS!4*rH*IpQm6Ul&_fbnY(^~5y3FZm26fBS5eCz@*;Vs!K3uxAV>>#oT5 z<}1SGn(F1k>po%&&YxCxW-2aM+%6CCgt$nYdXgk??$oW~F?|J{ychG6FCXTuEAz#* zc%JN-DzL!gEv9Y9{7>2(j<#b`~Y^_Gid!Hp);=EY;L%=)&sW)j5RADLyE`Qj)7v;kyZ@u@;0vG@&36 zM+^jlgFv9z2;G=SGLaG%989I?{?+u+v80G}uL<&uvH0aT6}y7jQ$5`&8AW$7Gu<N0DYO|}MKbeAHRz&#XVWF|zn3sZHy-aYWoUHaevfZ(GdYvAk@HlPH-AXv z!g~?pYO6_NR_M-E=7fOF7SDP3X#5#oypP}AK?$iT!6fJB$L@8BQW$DM-t<+S9L85! zf-7?>XimH+^6lbrd1YiV_l@k?@Rjk|tuM)QD)WSc?N`j4?*DvzO_Tc>ZVpD~&fFX_ zsv(ORn$v3XepT9htoeNETCI}}epfpt8T(Ryv2o<~#L7>#=^X}<&akcg&zk*v+|3=S zBJ4;YZ7{^PcJ|td2tLaeNxw6>i6UF8(y|*dNo^2XXBg;C#k}it#Vh66y-?pvDcL3A zhgjqnES!`bdpDH$QJ08pd1m)^LB!fPmYnTU>`LpB+1zcNI`L?Go7%(TsVVpfnm>9_ zwfcrEUM9u;koG-?AxkndHWkPE2Ar>b>S~-|T?*M%^Y_?+^Ab9oFU(FK4$tz_u~D=- zAoWx3r2B$0khk>fo4I!;MtTpE2VVa%>9&xf)-?3+B7j?-OysIQ#t0N9o7}un+Ev;h zE~Y`tY;2(45;G%Of%q3IKwWJf{9u|-GE}E!%lf_zBC$Tao_A7P*YsB1`nO8TSiWp{ zA>V`WKYg9Sm(qFRY3hmf+iYZ2x4r1ldqz6O$E{J|?80N@9#(_eV;go<*z}GwB&%uA zqnc+*8B?jPXbN+Dwdn&HJkF>jt5r3G1ky@kDNj2cHa@0skG-}_e_KE#P7c?rLyQ`* z(T?YGUY?)Sdnoffm9Kia8tOU`?hKK3O*Oh6KTv4zMX3suxZ#TLIMnG~V8ZFcyo1$7 zWt1dV$`e+Q*AgS-3Cl>+!}`H#Efu(_F!$y)+XCvi;Soy2|KVu=0P%Sv%&J$XvPmd| zPs&Da1~D1Qi8_Y~^GKrLNqNF75+^vml&XodlpK_NjlkU!_H9h>^GDYQPjJ{Z-X@%0 z%qT3=nA44Egw+loQpNQ%!z(m}Onb-cHr+0u-*$*%Xjd!1#)tS=Z3q)ccaN|l7giVK z?K$cP`;6{uun>(s-JiQIs}^w0IbsLZwN^5@H63ODyG8F2zgrdZ0qd)IGp@Kmm z89oq5>TiLegawd;31_I}v*$u7Kg5NU>3HgInSXPq_$O)K1*r7d*2J>dn{in$LwpMz z!vR=~)aJ~yP9=_$a4W}ZLA$j%5#LSyi2G#)V;|kOy2l30^wWCi4?J8u^;Bhk8JMT1 zq@M6SZ6-qdklmO)O7AvSL2qbcWXhBTe%t)O;KIj-bOL0`q7=@-1t?k?2|CylHf|-S zi$Loe@Hhbx6x7!flPcKZ%31JA2L(coUhPi8`Ims|bEb>nq>w_EKm-slG1pk_6+n=i zG)%{5JRyJB7K94e%UHve*ug%@@eGFsml^{pTCd+?5Qnfhh|C#Uwms@8Y`nqTv6e-> z@mQ-ztZ4?lZ!yaV+pt|AJJloZe$LpqIMb+IJ)tR)_^~a}g7jNm)2G>XWziPyu%08A zz4afJk7$CHQ{JqrZz=a8ZOA11>{3){T2vqLp?PPR{PEri-QM3<1I)iIUb?)Q350q- zMORyo91G=d{q0NSF4@9B-AET0NI0zXfPJ74vfla(HzCy z9krCKsEJzOVA9OVAfE0xn*Jy>vy7>FKW@AyrrK*+w`g2Fr7XY7-{M)q9a6q~H2%rN z@+?n`m6LSS+B8l2Qc%)=F2~ip_cgv`9ODmV)m%ZVKAJN#JS=x8bfBo@~Vj10wE%T}xYR)qZWN(KC z*niCyD78I(&`p&oty4xdFF>fWqBdf%C1)?Ra>&zPRx>B8x>zet0gBIe?-1H+hrX;j zlvZD9;|N-aM*`)OR8%e_r zc8ej1m*U-twyy7n5%+GF(?A(=bw}i_ppe6g02OHoP6q0c2HW^*$})1#4G=d`1eWdQvd>kkoz?a=vKyn&j3Ow6NtzG zzy@^;d<3|FQj`CSoc$|$y`Kkv;P>P26@3KIhB5^w09z;}#J}DAA6O-DR7G2$0r_L{ EUwb}V1^@s6 delta 2315 zcmZ9Oc{tSj7sqFeEy})RH)AHU%g$t(Mj?$|lyN1bjNFW}_cfS?Lh&Vxr7X#svF}S{ ziwP0Nl0B8R6m>2A>fZZ%?(_7=Ip?4AIp=xapYy!Vd2P02N=t&WBrlwlw+7RolE8p@ zhpKq@M#P4dpD%b|?CGU%#poruQs$MAtv;PvN@i7)L)x2p+A|$H){i=>rms=v)xO`} z>XkL*v()yOLr1(0Lh&z#FzZSOq5SI22NCJ@{EJ>4d9EfXxbek7FRG+eXH$NY&7V(- zM3Z`r^&cWNmu^Okc8v&JrjJ>j0M;0Hs^%(eQ0lh|9qK&yvPvOrQ5my*hxz+erJ$L9OXBxMoJzA1wDZhq!^s#2g7*IL{wircV; z3;!+A(V6brt-h7@!t2VDPB)CMD(Wn8q!!vymE6!5YH}4)wTSvl9$fPT`}Et*C&OA= zLYoY`zXf<%X9f+x<{X75(l@~L%{@eVwuUrmBQfS|PHa??g&aI!ZJKTQV(snRDUm(P z!}u9YuA+1jRzpvMcPG4R%V3ZDgSORK7&9n=5UoVPlA*wl_G;trFbL%E5eVcc1Of>p zs08@>c@w=nJp73&e+MtSRo$blAPg)Q%FfEfh@I|;81%4 zXUgPRazmQs2AW74_nR{ES+1gEJIlV!Qch86x|XkW72FrFv{>`#R=p=4Z-PT+ek8Uw zKh|8F=(-%Gl`-ZWbcct>uH>Ut^Oox*}Ah$zSP=t7xRY}I(G2(X?@stNs zXQ@vcZ3}X)HOq{{ zkuwpWY*i7`USO-O!}+dinGb#HeU1o*q$gSD8mo&AV1GxcXn`Nc0Mk+hI$MX7J=>=v2W^NaK9b&5Vhq$1(C29xJT^*;#oX^$h= z0EXPRP-92{^)1SZOmO48vt9}q0;>lG(`sHsTj5gJjD+Y4MM`&*%J<=8F)0|3!fiuI1@2$QEQHCpP`q*D4hA1`lC+s5+h zCxz1!6E8tCEqooFsKd2Gz$8r7gEMYva2Z3Qd1TeB94mqLrQ0g0568<$r~}KKkDo@T(2+L=QGXTCf;p-q%il+ONMXZxcAme2IF!$k zhJ_}zBccVgBcpd+uR!_$88o!9gwjGHX6|vo(*Eq4n4DiDQ`l1p5DzG*q04JM4@X(F9&b+6&yS-u2O* z;vLD@Zp~g11Q9C~t;p*HuQ=@Xl(R9#q!J=b@MgZ$Qd!Y27~sv_5l`jJFKTQmkvK+LovNs9Fhrm2>qk--(pw%jjR?G3CZE-LR?~{xeA6~t%0UsE7uQKy;~vL;5A!_! z*;x;zlop5s+Rt!^x7V4@?HU0>QF)6P4yw7J{Q{w|xj?#cBlQCS4oSc(6%YCF0J%rZ zRkfiIh!Yb8BJd9~h+dccJlt*l{jOfWLi~jbpG3NOhY`;&Zu4jf3$E4(Vo_$?5tdd1 z706-tONR67`QweH_6hTMdsjk`dUr z3lc%nZfRBtciuOJ)c`;g+9%qS9c03cz~U|pZ96=!{`9hB5dJc@*HU%#25ZK9YQJ%k z`5Aefg>I3+iZj&ApVd{TgC4xkL&UIrc5`Cq&v^&^%wep;se_N~QoGA^F1HQaGJ}$D zJI1jo<=BCHK2DYvcZSPyMBTWWLSvd}ZgLxY(CE@GH>4bk0+z*sZBh5kN${(v*0Joi zM2@%qBnB;iqmh$w&>t^#Yqh|)yR45<8AcuNwvJg1t+=Sh&9=Qw{JL$!`wm>%4M_7N zzv*trZQ!p_BHzqUJn1WA4A7?yJD0q%t-t8}OH_6U1vhU5?@Nr5`ziJGPvicV&Y-QB z7!X!aO0~m;zh|{)dO7g|>?-=B0&jDWWtL;}u;kr`T>Y^XI>T$5441#cdG!7XS1$$G zOK!byzLET69!F(v6)jjOz%ekRZet3nr-8sau zCV=;j|07LRCAZ)t`D{g3%oFcV6RA*6Spcx1=J%OBgsA}cr ymvSz1J?pj-pR?& z_N`86vMk;+IW5W6e8rA(ETQzfU)D|Z0cA+cxWwSZWO3+PzX-U1pGxF;*#X$hh1$76j5L(cC;0i)X?DsMMDL(`Xk^bo~fa)^FPy~2W zMvrNN9W0m8ghIh(nPcL=f7gFcIz++aNPQ>(dLZFqzwg}t(u%=sqynqyuO^WH0iC@q AbN~PV diff --git a/DataTables/Datas/__tables__.xlsx b/DataTables/Datas/__tables__.xlsx index 2201d5e8d02a894d810ea3e974965ee50fe25e66..ad168ffbea1a001f00201d49de7d390d90a9606d 100644 GIT binary patch delta 2883 zcmV-J3%vB?OuS97lmP_P?8b(Zm;o(+q9e2&sO;oGu%dVi$+xZ8rX`7XJNgEm^yYi` zKI(Irwp;B`gj|yUKfnI+(RjKp3-1xM$t#s08W7}x5|zx=GC|kb%%337Sgs^5Dg_DJ zfI-vr@E{g76P1QbUDcp%4#smNWtgZFw6eBl7#p#IlAFLalnWP?F1dAEy~H(t7x#P# zI3(m4mteW%mg5%a*8>r4kx~rE`au^RKne^6l%TA^G@$sWYeARh&kJ2LYL>a()b34N z-7#B=J{;O>lMltFX@Vx|G@L)hxATju?x}vR+F1!eX)Fa38n~@=nq9|uv~5RMaAW6g z%8MN2=_dVpd-{BR`FMYh@$b+_p*r)P2hwvctT*2!H__R7HbZGhLh6%=Pr{5ujE0Pm zyY}0A_glCApxhe#PmFv@{g7s4!j9ZJ84-7YwDaEoAJT77O9KRxuOk|>Bm zY&iq~0F4im!UQ6Jn>ZAP?{}vEf#JSj@K@ro-Dx0B($0=Mo89fTjAfe%AXdmB?XT|< z0^}p)ZF^&|&U+3o=Me%eKfL9c^GbP@vSQ^1-pF-mk+6MQ99Ql?e{bI3xK1TVu_qZT z=*s;@EBC|t-5<-E@t5jEsc@h|QLWsQ5aq)6tK>v;QhBU@qy*4%Dq zhzeb&u4}JVkBK1edf5>8!u|DfpF$TUdWX})%KaEDw!zqi zKqL7#rFC_2?g+AbrWs8H-NRgQ9XSVfjJ-(V6AX=H@kSs^l0>AhG@@Cya-(1l^XR|k zD)JmI;rG|LJnyczY39ur?(FG-oHG%z>}$Fgrvm&*vHFpw$CCgv6EB>~stL=W z1pGRA3KKeXot(Ti$6BR_6Ypj|b)BT?NLw>#Q&rNqO@d>aG@f`r$(gh{aO`qIZvvkF z??Mo5+`+L+ntQXKB+c3+=tG+nz%x3$9bdJg>9PdBUUF7D@K69acwFIE<)}`p;gZNF zIamaL0gz0j_+zhzE>|%6x*je4S3s7uio2mAz=~+72(cm_D#loGKU7SxVlz}svEpH< zm|?}^P%+1fr=j8oD?SYsw^;Fcs0egZeZbVSg8BO!ta^3NDlkyoStJIF$RaUd#1@G` zuC<(8BAc0lkH<0w|t4QLZBs8eqTOpxsxplYGBB%{HV3Kh2h@q#K0M$ zpn)t_LAzU&sBtQ{D5!}cxA3O7xrJfv*5DbTpk}6EtDxO2N;HUVQBV^@ZUfjt*zC&j z-tW|)7U8JIrVO`HyJMVcVB6xT=7v3g%Qv!RLcn*>g=d3Zgrgc>>sjSq@r()^@V2oywzBOKKPTgxi;&xj67H>xY|E7=Yo~ZD6GFbCSbqR{X4-uww1!i z@W_M99T*ecAJ}lny3bUcOQ$3y<h3A@Tb@@7?pfKkl5=e}%FJ6Z60@Rivk-vE-Qv zNttRUg)>7#fAflwl5r*_Ge_twSP*7)MFTuAuRsfA@j@wrFa_CAW42%*En84wBuLdu z7UuU<^*ku^P7UQFtBVG*N_=1rX&TTYn_{JC@}bDW0{WpLK91aOk@~&UWc4YjyE%PznTE%q^Nwpa~ zY4I3!sd-B3wO{iPlXX<%y`*}_cb0gs_iw9LS>e6GyN9IG?bAoK7Zhj$uX)IXzj@_7 zUJm8IKU&3x1>8>eV{+bBrT285Y#*>1?f>c7JKk1pP{yRT=Q@9r?G3l{jBZDtdv=r5 z-kcgae?|58HX6KAO6LF5^*5G+z0IKVjI6Y%sFO)_J1_j*UAJS?{la369B=OQ8tvd_ zgVd}3!BcYdh;B0n7RJ7#UuRAt{JXpU^ShrShHqF1Pq4TV78jblAXXFmh#uHQO(`ux z)x<21W0j#k`b-h=vfQG%2xxp*23FYkO8jsCe?~JW)!*qP_}g7tUblPSTejIMVXJ%2 zdeGjc^oe1JC+H!vAQ&#|R{*%W#gk9R_r@femX`Xz+s22Jmvh(2$4waQ^+XwbW7 z@PMC>5kwo0EF%|rmG!$HgOX0iZ?xp#R`rtCt;bFHPjQsAlatpYm(R((3BWI#Ozu_u z?oR)Jg@$)n4Q%#`61Jm1>yy`T^smHcydroov$y_N9J5USA!R-QP)h>@6aWAK2mpsp z;y^Yt*LEk9)f_5+O%PN~Dj`60gDL@KZQ@B|)i2pDfxl;xsFWqEdD+Kzu2<_XquD2h zsGO}}KFffiZJbngU%}h!J#?`)6TD_m>8yMNAJ;C6pB`sB}G^8zr!C^mj+4X?nZJa^UsvlG{MV zuY&iq~0F4imA|^ZrpCSMN0076vbtC`) delta 2796 zcmV4-h+HQ42@tFMo`Q?|7#FKSdc#oh>Ua17pfFKW)sAR5|37Th9e~dh1xstr76eMT^ z22IlAqgd2TR2r^yRfD!U7|)TEVWLjZ%G#P?Y{UvmZUWa(E?iW)|?AyEkoh z_t{eP;m}^2d?+?e6Esn$;ruDSon2mcPxW)v&Po7EV=0)>z-^_|Y#!siWjnfp8#{AT zUgRLpHtE;f)935U$NO`Pe}@i3)tUD^ke+j4z41jq!*~y5}ec}#~cHW2oA^irk1_QDI4kZbsh!g|>0CWxj z02lz1j3yeB-~p1~z;M4{u${yn+dCVGlXTnhPScNT8Ot^kKvXCp+h5-! z$smqUy1O^V)_Kp-%Xx$>Rv+KW!h5B>$yv4bqhR8Dw942auTE?K&p);wZhWs1q&kp- zRdnrtrH%h_^Yc%umhtE2OsVjoLe;GOvk>(%44dpsOVR{?tfm!2j*OQ?z)yY(o0?N{ zP)TJG#*@iaSdzT*b%iDWo*L|U%rly@?4_iY&_y^chyef1Ij@_p+S}o~>K!;~;a)pG z1BG3SMxt{x8rdo8VshZFyO)p7sy(CR%!8dZ? z_S8gh?Q-H^2A=+JB8aLaxOVOq!Sow5U0sr(50|6}9@_Ekgt`@~%W@@bR-CmSJS6}Q zo?rNX)H%A-dblR?(TDD?ffD`r@+9V_NoaX(gEVa3B(ag7y^W5o?t{4!Q7u;TMr5t*ijfT?E%>-Ps(^=d=H zLUHSmSS%8U#DbAJBo>W3hs46Mbx158_YR4F1?0gYv4}i6BsP+VBo?)Mhs2`x;E-6fyJ2wp4p-QOU2b8xcRRHvO;FGxlIoz_ElRXF?NHDVLcN85f!?iu zX)TNzvlh4n1r0K_&8Ir(Hj5GsFy!ZY;Ag-ZhK(T$XM%zjvQ!7%hK7kVgHzqf4h0P` z3>&u=&jbYxGYwk@-EL8$ zMQn$Hh8S`i!8?V^t{m_E&Mj&Qjv8!#+VCanc8pUkY&#q^+^}c)kL*|wa1I)Hw%8>& zYT#Ww>)dxdqrw(Ec_<%DYv^gu`rxdObTv8A-v~eDRpS+KHit8K01p7yr(*RTPVH(G zc9lI7@LJIQI>Xx;g(Kc1fGz#VnCO1MFZAagFv709Nxni)a%#U zuNfDdGS` za3MG!O@iwU{F(0TuAle|%w!EwXLs!fd+$AG=A3)yW1YBK)L?8L7+6JmQW}eoN->~k zP*&CRN$K|VjUUFP7$%CIRUm)TK~h=(Sh||}_L~I8B*w<-I4R8%QutYxab^~13XY=! z&>50LhNch}8hIHP44`E3EC57<^2O27E3&4jx)jSGQzuF3@`MyKb@h%3uJ;q;QYwMf zRDz_2hUOI`A(K=><_SNUGa*dtiUverUV$b^lZ8S6;SSQi$8^p>S~`EH!T?Ft3nmfg zRP`(G7BOxgES53fk}yy$08M(Bt(8_NaWG`En0tgp03=d^|wyzCEaM! z$15yF-!;Dz$zFSpet7EcTMQR5+j<0w834Uqi`G_Yd)@wbN#r=I727(d)u#8dC1Nb4 zW|^qdJ`y2r>!c=TY4v|k*IE>_&OfbQWm(L6AD_@lw=W;`o>L$OPV<->e}CXSU-IpL zI$0rx3G7byOL5L-rMI<4w-0%b_Fp*V*Un~bP{p*iYg@1A_PX79!=_`;y>gS*-k%#e z$Ncx!8=_Mt=KkGv*B8Cr4X^TsF1MJevz=&n-nlzFcBjnd^P7J)ayq%yYqY()4O*|d zhg7f4;r8qV~@fSjr%v`|ESKV+tOxyqQkJad>7zT>>&@9{_JtuT zXA2mQGGJ&cCzU-E@c#C6w*VHCuu^Dev4C%kuqkhE)~yT2Pv?$|05%rTq~uqe$Erai z;>dZlG^t%MB2gI*JoSWNS0TNJ)MDk;! ze1vjcD~m6fjjP%@eC^B`ljB|7 zk`T(nN>LgTwsPDPF3&2Vt6gAS=ohEcSw8DGEU_yYuU2lhz~00b`S%BsKzyACvwc94k;u0Rj{N6aWAK2mpsp;y{s7O-5t` z003|Z000yK0000000031AOHXWER!82K><9IUnM#M^azuiB{cyXlhGw693jh+geU<3 y0Nnuq01p5F000000096X0002O9Fr3!T?!=$q=*y*0049jlX@mR21gR8)hpG@w diff --git a/DataTables/Datas/战斗/角色/升级/角色升星消耗表.xlsx b/DataTables/Datas/战斗/角色/升级/角色升星消耗表.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..409bf22f7d7505701c54a51abb328029777ec14a GIT binary patch literal 10194 zcma)i1yo(h(lzcL+}$05YY6Td+#$GL+}#NtAOx4-4#6$BySoMn1b6;RGH)`IH~)OE z*SdXs^{L%;de>>KQji9RfCG6>A#xi+&;S2Pu)u<`t&xI*t(_y20#FPcSON1xY~+LjzGY4MG%C0%zvVeORT30B)8sFY)RX4N)>>nudh%iW zW-pnI{76d20~&G_?6hHFH9lew{B@Nty(ky`bt?5xpip(N*rsrtjuI^qo~(Hk-Foo= zF4x6QE2y|34L@?W@GNR3A(w5e1u>PXJPr6@Ph&G8r3ad~F1T3{46emF)6q(vZwI9XXF+L--p%e_ z)%T7TV9~^-uio055sX|a$hwQ*I!EaU?MQSou1_c-x~eh&as_>J$DWyXzGe+y8b~;;b0E^ab`h&$sp5g4(6A&P@8ZSepEDrfg@uR z+{4UuhOij*v9{DiBbLhcyYEf?USeH&f^t#jzN53#cIdSSN4Q82t&^a+lz7k|z$AtY zMx#|2F~n88pLEivz1#KU;5JhWS~PpgFa1WM70$R+KU+74^`=<0MoJU$SpNIb)@hNK zh59E`H86#Asg6L$v-9S%0<9%BAy;@s6n*|H5UG@}9-Fm@s zT(M?Sj^jQU16c5K_$X_z;=Co?*?9ENBT*e@m%IS2_6HnAr5$ZwxL|1zjd;kwlgLY4 zoQ0M^PiO9~1-DlJZUK@}<8UgV1(1Lic=0z2I5`4rt)Fd>7dtB5#f%QL!IMZo|L{A; zG6HMyMJr-Ld@dIz^G1x+T=uVk(5EIG$8cyScTZ2Ej4QX}yumlq(Bj++BYOxjC;>ti z2B~t#Y$we+UDyya(~X55IVMnY6aFUN9`QC}Y<=TS6HtU%)=)?zi12|WToS5_W4#Mh zr8ufbp4{JJ%@^e)Y`)~?I)@s1hI}#psAzZH=?8CX5AYG?5KB8cwDG`gwn_Kylou}6 zo;6;Jst$Jy#>p+t^@oT@qf}%K;p$0Fs?ntC-Y0bQL10?tNPX%EN(OXb!Ah}`z>`1rH)9M-9$buM3e zU<>NLgM}?VT<`{rTa|xUdJDORNP>x(K=~c4(z-OEzZU?$}u&Y&_8FP~Gho z+WXXB4{}1ep&reSb1e5NZ@x*xJ05ww-#kw?6+C^<#R$dRDUgB7Bx=uv6LmT*-5hah z;2wH~GM_uoNW0d1=$1fK#ijXPvgxP~_g%|4qtqo7-a7f+N0y0UN{#L_z(r%k6(k;c zM7<*D!!A=l$!^Yr_S1~(0X^O&EE(l)rpBgz4yo zOcBKO)~pe-Y}5C0PJ(FPD#`1TiDhRFZTI@yP=?nHJuoZt=1GLm6*RE{r#?wtGbs(o zsOjW8VNv*{3VcQupFk|r0$g;o?yc&oOOU9Vt16 zW7(RQUSD+3p(_(_($MXfkJKGsezG=Hs9n z;vsPZZ;TyI18=MytCiP@g37P*O4C5Qd)PX z(YdZ-RT+`+t_()!9ey^B-Z6ZCHRKTQ^FMaV6cH~!O@0dDN1wL4gYUH6Rxg4p^cXH4eKq&u!e@mZ|vxvr*dszqZy^*5OVlHwX zE!mNYZ*IX1H95j4wcM$UNXHH!(! zQcGFhXTSUme^K9KqdbjD&(9HJ%C?`%YU-qZ-h-A3Kfnh>zgDX;o#uqDwhyjP$CBlu zzGK4^x8!{>QvNv96E-^%Xp|>dZI4pRW^i@&mIEoqnbK+k_(Z_gL~~z+)Te(L^uEtxc@->FU5vu*%`ne z>KvR9epCR}{d;ld{10`f00g%`)cr3-*=JY@cNX?5Kc09)vuq=?S1f^GPO{-yVbLV_ z@hZn`FX5(M(gaiT1XKReZ0a6%ssfNKjmd(asJ>a2EoESZPQ2m&Qbhj&X3P8urXFMY zQ2_-1dr@N&Ul}D4PL?q!mV3tDIGQF#Dkz^Z2(2}dRENpKE3ie=E;N0!nA$_`@|>BirvA<(z2EG+f%@qD9+Kg3dMUVjCssTw#c2Pw@glu=o;&3K|62ZhRsgQ$ z05cP7li$t?JW24#GmyX)8t3O$>QAvB!ao-1BMoU=JWiBWtUVv%%N6yii_pkEztWK9 z9yxyr$yl;l=_A$+Ml5m@@p@ek8UUU6^{aa@!KaAtP; z7=a7oUlNBSt@y%uI)bm7)wp;dLfZ;Kw$}RD&LZ7K)d8gf$F1u8%3f-Dv}{|@^(9ol zU}~PULRf6dJHvo0$|_>y?@oAYp;el94T&WJVn*B*ZYsgxz}iisVvo$mgNpuff=kgI zw^_d8q7@r%yC)_cwO?UO+bMv_0pZSY`{D+lz%g-b?D9Z8ZH>N;VddfeNKnu_=<)HW zz@@yEj#8&r8t>_HwtV&R`|jOR7l$UQ``N=meOsINSr@0z!|A~0gTh)EBGF`m#CeQ% zCKX>$Udrdso_(*iM-9{T_tn=RJUz6LiS0N}*1_0_zJ-1!@uUToW*mPW7;!op-B^+{$k=u8imkt#uxzHJlZ7JWv zgKITf_l|%UwJl$X2yTCwiOTY}8S#opWm_Qq?K@bjz~QoU#RS1{hm$s}ZEKI4%RJY- zR^p-C`!{Ko!(qJ3?rZ5vJz^FeeTD3AZD9GSa62>W*xt)3>9n6hJWlcAP}6;!tpfoVoLl$r)-iMpFzl1bSrST;9&Oa>$Rmsw}Y`IC&M&e-SaP#VvnXZ2y_; z6WFpv`8T;lk1h@lmn8~NYYzgn8DqvUe&n!A2LhK~Ak1iD`fq%eb)5mJUu9 z(@7n{r8rBdZ|}r0$FlItP;!x)IPH%YkA1c&<1J3$IR{V=sH?LtxUBYW!xr>-<@Dg(z>ge7v?7iA}dTP2|*(VAY>G@><`eMB*{_=Md{ zFK;)mXvM;`CN@CFvr`!EccD^-17;DFYZVx;&Z*A(NshC$QLMwja<*kjLVN^mSalSj zBI+XB7S7E^zu2xxZ#%Qapf-pi(p1CiNwRzpx2R#Uyuh8ckA`wW>z!Wa5frSis3p6j zFd4~dqHgKTy?+_K4aSt^oJeU<=xzDcnZZW&-H9A@0O$U_e!XrjGrLYYoow!~ApPMJ z%}GBz$~ytimXB-{@P5ph0Y0FAKT-37mn44xp7Z3CK|m0Ht`?2}H!Bmz=M&nr_L1#k z56+W-{u6kI{vGoW=IVLplmq4mJB68J=Z;UXB00zj*- zti2Ia7a@_&qVZNt6^0wu{>eI>sGnd^FUQ-=` zM7trg)j*SQg-fjxj`o$_biztIkjk zee3(JwsQ7gc?nkW+*|Z(H!tXP%Xa~XGy)c-8;kV>h5GIQL-V@YFmUzlmRaspDzFL0f}_bQNDR#_qouiyB;`?hEhvDte} zB2YEsYYA59tK+`%LNm39i5%Qvn9pXlt;YCHjITU(6DI3O)#p$cz6VLxxw((y2L7z zG0?fXc)())L1?J0@S3WH$$Trzu}*U}(eIFwf>{~hbeBnef?lWhHt#nNFZS#x&e{|7 zL-NMQ2dClWEka6v@RM4eD0Q#&-r_S5$rt4!0lTEFKh9TSITr z658(wnVu^)d-DUd2QxlydrUe=HCo-EdCO)!vP#rtb2m(I`T-yelb1m=G&{j|x~^mf zGq#Cf*$zs_V>MXOEeffbR$@JSz@)FLM9s^-N=Vbvz`0h&QMig7{t=Vxz&-JvK`hC{ z+B*3x`c1-D^jXJ14^lBW{L`W0k{Q`at53CJIR?0mjjlJUF}C}N)%kw71I;2l)@?`| z2h$cgMX9M-BfP4lH}I_0v`m~s5|2uqky}g@LjYgCC#y0B?q4+*+_PDqCOrNq!bgKa?b%!QKNPUIM`3cE!=Ii z3uqjgIb>t7HqFDU#dx+q&Q*Ff9Yo&3ro~f{8D6D{l0%LVBWH*$E9{G@76%D1(el;> zNDuUBS*d23!Jvv(qLBLgle|X9G9dea%49*7O>Ig>N^M4#%~c$wV_S2y085x7K^jcG zzB#u$A+wkwO`?g8ZP(BPbwcD~(Bx-HwRXHtVAXps9- zrOp);O`6~_h3Gu-9pj~k85x8XIZ4EpaXBP+V8iYnGkyCy>~#bg>t0U~A8lbv{Vt(; z`^QtHQ6UiC#Y_<>XYXYvXDBbc7tQM)e#@|Xby$!Iw!N}_Hp%T@V+bG!GAp`Fo*r~H zRU4r_URNX5ibQJ>LjO5uB33J|R!>KCLqK$N+2k#R(eM{nXJ(mw+qlqF`1kItGEh+!v$Zj zy~?b&R77377L%tIrb3P(vnATsQ02-ZEox_OfPux_`HBE@=!RT3NWHpUq>Wi*n>!~K zK`lo?1dyT>b33REr|K$KnCA|MVLuk&2G^Lj?M7P+7pH3)tTsc++g#EJ?eRf6hink6 zPYH8zUUw<^=>_h-pu!cXq?R0kD!ZX?R~&5^6s(=P9K}ntn@>iR{hqKjfdIyWqzcF2 zo2r_dVRMZIgk8ISe%z#@@-OpUh;;+G6j=5)naY|B4YBemHCuKX3lm*Hsf7T0Np?n` zawOZ4L=|a#`_h`)kjW}w)@5RDiCplUVSS&NA(R^gW{eworTl40z>I6d{XdVRKewJQ zD0f(XTZiM*^eo`r`0NCL@%F=5eMoo3AXF6b+@She^Wv3-()+K*IH{I-9=KKKewQr0 zfXYa&&TTgPp$XKo0>Dxz<;S&=APEqy5mHcF*0~GMU0L~%c8S4EOQ5VTtiO0=Ph)=`Ionvfi-SVPOf> zL~4iM%3Jxk-R*DJ_O3TwR#6j_4_>9yI%{_$3%8xgUaN9flZ)Oy?YXP zJPGJ0LZ-^NXUiwcA$u)upPc`})7|xUKEn`>M>Ikr@SC99IX5+D!&&Hiu^Hi*&qXLi zSzI(WBSPcK_U++vTs9AgtNyZ zzQb@;KzTjh_qJX*9SO9ibL-0cJ?@RB6)>GJ_w5x$j)6GgyF$r9DuuLlT^F zk}eW)mFR0{EB$i`pXAGdA(xyH#aGvMM0{`(0k)RTxs&ASpyc6mIHNAIH&~>c&vNgy zMMAYf)#B1scUj<9eR<*4u<;11D_*Fy|7h@?_S_x4e*D+OK*Z0WAqyy%(O~65GM(-s z0zo0|rZ6lY!Z3P*drL^ZSmnO~0vm!+8d7u(tl9P0(f$yTg-ct*g3QY}@c3_#d00I`zT^qUB+jj#fA zuJL`F-qYzp_X4M35KDs)ciIRmii9XNfhzZsHk14gF`5>w^$QrsIeq^iZh;A!O6 zhfgVs(s@dXIrZk4nz>mGh~rv>h9xQ%WDBg*p@(=*NhZ4kTH?gvW2n1!pxII%_>E2-)%ZQovaA99k#7dF54{H zx;#wojy`Pq6a>o;{dT)!z*u_l>?m6T{*ZqX^6alMw6(Q--q=UQ%F1^N0bMVYk0HZL zCh+L5Ur8HI^>xR5a@B28ZZv4CYEr+yl3OGuqJSchKv-)VXjGx zANU6E>f_O<0TLmpPE%8@-p(ne{(kmN@k~%xfg`jS2p+td(y8=_(R3!N{T82Q>J%e( z>?Z^dLN6f_qk!bdop|~Wj${czeiaB$2A><%Fa$pDn~mjzqA5hYJ~hhm40KSXi)vaY zrEK;=4F+VeGcy>vC(vfm>r3TXexFDNg%|hnQAy2rnY03HzUOzq`?OcKOk=f~x0+a@ zs@8ZZ(mxdw;3hzU9J0bzs)cZv2P6RV8Zt4+R{*lv&wK)QBLfB26R;p7h z+N1MEg91>CSOWiGm_ABb?Y()=vi&a?YfwN=^&CvBe)oNOa5*8if$FHzDm4eq95*9pf4 z$Qpl2j>sq*-Ihx1M<=TojK~1boVhlX3sER2?okIPfx%-JsgROVQwBs)?Vx1k@TG0- zHhcP%UTry|aEi>~8==X`-Oi5Kajlv`37$ZT?1LwA*4{5$Np1o!^&}il8H!#0&r8aG zqI3Hs8~X@IVljN>&N^bb}hP?5qgdTS^~zs>?fjF#6IfwWX_g)fEdyF zm>EJ#YkjEC=*!Z`1iaTq$OvpZrW#yaZaAJornE3(RxswKMqs?#$yUxgxZ1N2L&AAG7t;Vx(G&w3>bQjpZZ}Mm9=zPmsIcmAr>zx(^C-TP9Rk zFT_n7Be+*i*D*i&y!3iF^*cRpC%0FeJ5PibLU$@cL2~pI@#&B~O{|qP4;FUIwf**Q zWBt>2O~<#uagGSQ&3$%?Yl+y}08DHEdMa*qCXPDKy|AeCo2D{X8k%|Ku{AMjuSrFY<#V&(TfW(|rqq7@cJ}#p|h+=@PvQbx=9? zyyX&8qWJfx=@`j@%AKyzFSWp{#!qf7m^Gl={fh`@N+fCc?4qkc=_*b^@rPx+YDmYK zM_f@H7){%4Jz97fTcp>NQZx}c@cBAa=w)cr-<*4FlKTs*@!4S3m86EDL?)5ODz^gm zeU)rrF;sV6&h7bf8V7vO33T3ZX|MYhl^v!j%!0|%0w>M!`P2d5OGqxbs7*C`?tHQ^ zNeCBS8dYViu0$x&kDP=OQ84|LX6 zj}nJ6y(q%eRv>XNr_(RLeZr4uxrm*CdR!L5_D6h_TCg+osCp< z)zDlFz#WaO?J~St@GAPca?u)F*GAub)^TRUaSx>+4GM<-V*&aZkMp}_fW`p<1tA9J z1f>6Hr=Jb{v)lc7%K4d|LwkaVeoa7sSNi)D^o;qbwD3>Nk0JAK%AOquKhv|a=k%A5 zqrdC>J?Q9J_@_Rqzry|qLHeDd-(zZip@V^+^q)%q6Jhf^{P%#6UvL;;9K$d8pWz|@ z*6HWSho9-W)A|s9#6diF_n%Gjcb3M9|1v@S{-VFnWY2njvUL4d*niDyzqj-IPUlxU z#03Am@AGxOu zeK+%~0T#j^djCq>zrFNx=*rLZY+=8j7Jdf*8OZYYH~&49 literal 0 HcmV?d00001 diff --git a/DataTables/Datas/战斗/角色/升级/角色升级消耗表.xlsx b/DataTables/Datas/战斗/角色/升级/角色升级消耗表.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..98ea12bcc545c813001bec470472dd810a1006f2 GIT binary patch literal 11541 zcmaJ{1yo$ivc=tlOK=E;;K7~X5{%~8slAgzu`9dwZt!Qy2<-JQg4bEQ){)Q;z{!6 z%}xRn*`c_GD>UQ^*lEN3N=(QO_`51k8X-2C>!er1zI>nkh1dC`HRPxX@uW<`Uau7o z;<8o6(R2?+hqaQN+yl zRbAg$J{DDU+RCl9F~R7ijFgKYu0xmx-bZo&TPUTWH7MtPun)q(Cs{oTEK02_m6|GGzaNc+%Z_Z?HTg6|T{ z3$Vn2NTkdSkV|wMH@`is3xn~iR;rP zk>Pl45LzG-2_F54B&HZ!BcJICoqe93N?B7p@Czn$5?P-JYPoIJp?X zDYdYfUJ;7k$czmA;hcZIQ}`H0C0ZD)R8JCAK^}LuwtP|1D%qbe_EGA(m3QN8 zYc@^aGptI)fR26V9iR@%lq-%o34>favSX7svMBAG=*6}|p#^xKUQS1NJcjy6psHZD z{GE?&n*3n+YCwv(d12oIW3eJXYoQZkfp` zGc`IQ>!Ha?uhyO--N64D0pcN7dFK7RAZrQwgHs%gtvi*YmB8ZQ~wwH38XY^OYJ_p=8h8H6(iT%?y@5o}BMgj*zLd z+q-{`$rd48$|BS(!Ltp<@$>b6^e5J_6_7tC$lKXFd7r#vYO8hV5lU$;6&y_lxjs;m zQpxtsPH9AMG%G7Kc!L$sj%R8!>IVARum8TkfCK&NWd37k`F8=Np8}2m8#7yD0|UE1 zccB+Jc=|jDARx8EARyTPCHn)y@EobQ6cyVAHnhH#I@2~Eab$T;c}}!rK|R;O=xnwa z&e4awe!G%jeN!@y(S!UI%d8FxH89i-V$*EA)i%%*XcP|V$NNeZlf0I z0L7-9I1yJv3%Z|YBL*$3q0^FW>Qod?wvYCm+Lkav_8TV*xskZ&Z~&OaO_`=TRdcFN?Ea`mvw0DM+G z8gzG-4~yS4EXg4-OpG{_PD|e87Zl+z`#kI3wDO3A2q12tE50bY&6oZFPfcyPy|$)v zUa=Gr@0gP{#qYsETQv93O3jKDV#>h9StznPW$ET%)8eh!ok@5QoIJVKz{}ot(qax% z#DGQDU?z}UaoJs}Cv zp?J{Hg0`sdu5S=tn4U?VVcMRuw9;6lIhvU&QU9o{@u4oi%dKE&ITra-&)&WTq;8h1 zOkE?*%s9k7?`(;cI5Ko{4>EatQ3O~ZKFvODCWZUg$*-^lNXsLazLH`|M!h{t)GqpMPrE5K^nlheC$5a+_3h-2JaZ3L8lY?<=Hs}Xg| z-LtM^IiFmc>N7px3-bDWaiIT!2Vqs(Uk9SM{i!HC3BSmxiSPb828D73&1X!JSsj$3 z_oaASx-;eaG5t_HIs8FxezFBtr zSqkoZkilcDs#wQBvo*mg~cu#-@IOe;K&?fsr7Tr5uX$?>4assq)_$o zK?$C9=E8U*;edAojS~$#twF~N#qpO16}t)f<~(|5?8$VqZUbAdS+qXi_>a71S*f}S zAGtF3&^{wgPM^IW-nwxf@~534ut!Q=m>mzZsmPq%@8Q7d_*U~_1BoIL>I(gy9_JKy z4y}K1y9)^eFkuSK&uY|m@2;ivaU*T}=1K9AE@b2~qS$fli7AX?a))*0%%iwe>wPb4 zJz9bCD@?sIy3$SFXh>TXE3sfCP^f{6yr6-7=AI%(d7c2~^#NujldLHzCJs?~twu3< z%wdBLaw-nV7YPf=6xYejkTFJs+mVKhi4@dQ)r}^d3Bg~!ezKg1{g1jyUxQ3msS{R{ zK|i4z{0T|QNrl`XB~~e3_I`P-rh%X8#5jgu)S9+9f6LBDtI>5%p-LA_o6}D!%>8Dqj!0Y4gw-NhXEf_wdvoPN<#lXt-5c=Q z_pD-?jDzN1G!;X}*L%Eiku9m|Ctt|Nn9#9`VL@+H)yCPI$-*jA4N?E#uG)iNy#etS~x{7iKfr0DH#ld3lV&PT42VxAK;;w zB_io&h)y|%mx!1~KdoM$wqG$rRbV#oM9%O_U}GO=gPhE*&;^$>3!|MYFCC^Ky&%={ zUT?R&kieVuf?!c{oCIspO=|KAYr-B6l_hGB&NEy_>4XWD!r+r)7 zr~SPE1mox+vbF&;Y2g7tD(l)>DeP(#;wpB#E?N7)K3Sfv!&hgpFms4LU_W4`HL(~> zwrR><_X?jBNS%nHr2wr~jq)3Q2n}16O*V%IGJ0o%ZeQ-7n$p^%+kviKPoBx^7S;xO`bYIe!iU4(t4UW(LBNgx{qx)p z3dZAeG(0bc4AdCWABM+XvQ?sDgDZyuRcmzTY~}m>298NgZ+e#Y?D;8d=|Li8{?{0w z8KR6ll-~bc$70~l$Nt?EbNX=(3z!~ANE8G`c}POP+iBc9OeiRgFj@jI3}|PG+NPxR z&yz_TIGMyo@^hWWzqq!_r~B@lr7HZ8aS4x-f9~vV;&a`QVb6^+jN+t{R9$)1lX8c5 z)oa#7Jbg{U;mVWpav1vj+CA{G%z~6F4yJD}vX~u@yv@G-#od-8tsGt_gJ+Wx$#eJx z&eS*x5!ap_()q(7Z8LH6DB-|v{b+VshLE&?d7eF}&$Fkn!HDr0+#~Ay945;&ro_Lo zL=@kL9pw!L*??mRvI33)b~t6g9H!4xSd!ugm^;0_A6WlOSEaLc7vTN^t^QFwLvxYw zKf@mKFa&x5xCDNL!*ChJ;BTM#Bz$E8U@-j_fH4Y=&%dJOyVV!6_*>+Y37c(x6E^iA z8~JUBeVA!dhLR;(7qqivrjs>F zv!`mY6bZB$L{D`r?!=qa;@gf^$FcmE4;OjJ{vsamc|5pQXb@ou&Ihi2p7_#9$f8|3 zz7&jH!;Z_Mmo0kt2h&p^+$F9Ej!TV6jsf-&UkcSetnXGFF(laSnaPtjQy5US78 zwqlN9HI)}PJ!oqzwmVw1psJhadl+Wd7Tc(O5;)Qtg!52-_hb*>b}ZM9jNwG8Yz-K! zn)uirSFu!_)wqIG8)8w}r22sDAq^!XccgS8L3@E*pMq4kSvLPh3B$u$`7KMi8h`Ex z-Dt`K;s5^t^PC_7KET)+8(0|pks#rShew`<1U{DF{Cs}=TkMDMkEfDD6$tU=nDAF2x+(D;%*dQMl`{qD+xl>$Ovx>$JUO77G!*nSxudxrTF2#nR zzji|ZE=_g(B08?zgn$%33XSlRiTr}Ezgx74BHXV- z_;aIhzuy6a*C@k26#e^dy55akIFv5Aju1;3Cf<(GjuwJuEnJ40p6M#Qr1Xh0=0L+H zLuu6aMPhhihS~PYH>@CeEY?1k8E=gh9}z$Th)b$hb??ky+K1ncpqY6E^K!S|9X@I< zb*MdFv9J-cT$KB;W^{hk1LwuRBnn1a_Jnh@1z$0)c63FA2Jk_))_4JCknX~2fl|I- z%xk^M-m1B_Y?{9AkNy0Du6fcNVWBDa3j^(YdDKz>d@SZMb%2yu0Z{IC;v8bZDoIUKwl*{rkkR@r@RW`=BkcNWW{o_2F65q6j)E} zM#0DL*1moNAF%%l)mDg`iC0t(+NqbF^IIpLC$tOg>&|s&%sWafTf8fXb=#Fi?i6;| zm&3M^(tEaZ5`lte3|)zx3SqpQVhecGo-yvxm6Fh9z5_&*NwXt4aX#@ zwgxXGnq<(yM=Yo5wPaIBW35Z zvAn@HCv8}p7Opp!xlXyQM8miDA5tnuf;g94R@3Bqg-tv93z>~9VYw-BJ2PsTK1s=G zw4Xvee&xiWu(GOb?}dUbYt5m?A!iFXbKxGB)>UZ?Cm(F^b*l>lv8pEigaIq1?x26|wzfY|sY znxR2mXV$uo^@k>{JX0S?nc^z201^n1Ld$V;Pgv{@Ay_7~T`r75O~Vp&#u#p(p?|msAueU7YERN+kw|h0H ztjs*`xYGA6uK}vb-a9PAj-)$v!pY>4J?SVs>5>=CoQNiaJfawz7GU?$ytkT@HD{n(6&`%eu~iuCb)is(17_-%W9}QH%&N>;AkA9Z zDBPiAHq){wDl&>TqBv%!Amk|37R=5>v(TgTU5t0uK2Ga1Tipls&AzIPeE2}YOc5J#a?=wY_&@WxUx;zSzShjs5> zyH2x)o>?R9wN%asFU`Rd)yV)nN(7HvODYpNycd0j&qvUIrV%?9WrDha$*mFv5D>(l z{}#4(&gKTT&uOVC^+UiyFU}K>_7ixA_8t8&=E`~JR~yVB3YiQ7I5Kc3b3r1BSSe35 z?qIkBB=Cv6!UZrK89TMwvi3$yl}jD#I!k4rYO%*e@mk&sty$Z?Pp;t{!PR z8nz#<7Hyk3Z4T!>R^lud9>>2!NvUWk>JPlMYc6A&H5ue>GAU)&H^HukUaH+kJjip? zM&2~rUwK-dr)RS|#A~W05N+3`Hy>=`uW+o9!*Osp^l+`;JDdZrpFF$w;PjOLn9sO) zcIeAD+Dq&RJF3W$u}-JfDTg!$@JNB zYr%oUpcuFqj2|uNgsk@+6Y{$As~y%p5c9EucU?9$Dz!lAW<87=YxAiSbXt$z6byNcIw6nkaRt^w{9i5zG@}BL=&;S<_d| zuy1K)?`wVmQ{CSdGVF`bkgt%itiA32r3AKpnc7~GaZK- zNn8FZX81=;(tVe>`!~Yz1{M|xXW<`WchP5TeO*a};qXs~i%X`ZCd~_KgtK*U8ylT& z6e9t9h@bPka0ikQqXBOkW&y(2~URvJZK<5c9mOjkh1z0_d>Jz7f(XKRhFWs+pZ029^>k^kleL@pg zp7Rze$-_VBBvEKq7=H<=SuH0+97b}~U{Q#q;J28UVOU~dxiFsKrq(W8#82BrzMoi3 zc*;I&hl(1uMZm&*Dq`wlsh&?|)660jiM4JL{8^Y|Gj+Doy=g!67B(e@l2rF9MTiV? zln6Opcu8hYSh3iThmM-F)<?CQK{XOv@(HAk z`nX+oedLn~v9Pi$AUJIBb?PhhT8l-mYE~n2m4Xz=FeEpG`Wvd87$k(OOmr}?=sN`n zFo$o*H2su6w+pt>3vRM!M%Lv*f%0=D|$-^l+Nf+k2z+qUA`#8fjrffP>7sEws z8u}|ulW;bdG(x*3OJtJ{f%VH_F3f2zCOo~s-Q$(H0u@t}CQxM7_3VnK4uXQUQkEuv zi*{3>M={_ATkUH{n;&0c>wi;KeKTUBGLNurHNcGb*M(R+m_v?bZJ8mj`lcc3 zePZ>7mCF1?7f@>6$6Ab;_G38`U^Gra0^ho{x+Y+<3V7)?bD^}H$^8;>1IuY??LG~lhQDS zVj6id2F7J^M<%P&7pNk}gtn4cLxH5~JTLla2-aN0`@)PTV2_5y1nQ}Xw+N*%dX2E& z5O4vHr6-sH8e@*jzL0&*Qb>^BdYke44x1eeiS<-FxtdeRQ=JB2kS*8o`nE z5I<1a>0#wKj-x<*sZH)|zJ}bzE>l56q3F*vE`={Uo3}~rl4vZb7^eXj{e*E>K>xWq zV#0$ml%&n*yRXxUrcMypqA?b7D#yH5&vBW!xaYfNNz1`?%JBk-}7=|ykP zsl4wT+uR*K-Y+-h6F%`!_-K&(b-%Z*qTO_^t8nJuyeEFh^)u1k1}T5 z2{7tzTGVy?c(FO~C1es>q>r%8Had^8%S`zF3bW`?%KbKBegI)N*nsFK)ONDBL_|{7 zr`N~p$h-;n->psuc=b3KFW=d%%|OW|N%L@XJsiAefJ_AuArrVt=eos@OEHCMy4=DECW3`q38+ zk2fOguCN^K5H!$G6*y!8?_W@Hk!Xhty|X#5ThE4ug^hsS$%P<`89SDIytQ(BLSA=u zq)hjS89%Kb_w|A!<`t6YU4NySM4wOj#FMgk!+|N1ABvsV2>{Dkacg&=?Fg*5FM=?|<8ol&PK$BY8#M*bw|+d9 zQ1tbLBny|)DuX175NSGM1ffP?x+)LeOZgKb(s5yJ>F7_m$TZglzMlMfAJACNO=3YQ z?t5i$=@T_|% su`Ugsf33n0Yhra-HQ7X4lRfvZ@4{hOu;or&`6?zD&rO`C=vY}&S!%*I^uY7W*f#_DY zm^EcVlTU@&z(JC?5eup2;9<3fxVZ+VZKB^X=@d}QvbVJbT-?mDVZFhb3sV@M8!H>+ z-m2myC&w2Wi|^N=;GE)&72g$Ew?k^3wozA;nVldN%crK0TpIaIH|sS zF$kre^J`CE0|)7EhIekC{y6S(>S5YL0Ny~JKwsX@#>CR-$EnvK zl0l+}9^KEe<4Go3h(CFch+1r!XpeS`5M{v(&p0N@^{!$SSQb*yAv>h-?d(pTW^b8F z0%6?O*;g92JELOGib4%h#$EDfg;OeE)c2V7ZF<7Awgpu|*D1T*h zoo-)FpGGT<&tXqbB!V=d@(9&pLZTvlVt%0CIcXf2=Ow<8h*G^e$qXVSl;2jrRC9p!n!}UQ^3cpKgNO$3M6R zEKD;F&s>8g;0O8FYiwNr!0h=kAuMW0x{Dq~=t}h7=dJ4=vlNPg6g4rQoewprfyFm5 zy(zjmTCX;v=z>`CV&}O&$FdLmblG#1{sk$e+B`#^nHDJu4q6=x`|DGP6$!p^0-PZj zZhF4wd?=l$PiE2Wyfe}fz4`=|CnSk1M;?no zQ((uPhDTmub?zvVYvR(>Z?k%F9KFETQ*kJ*Lpb)3sozpHad9l3SLWT^4<{hiLaA^^ z8&&G884n)uq!TKPVir0aPOSxHyR~tR!b;|QTA>i@8>ZLWn*CeCw;(`&7t`T*tP=Xc)t#a7f!Y@nnwGlcZ@n$P|#ZA8nZ;42gAuqhy+g{e2576(> zDtqGQq`c%UTGBEF?yO+d3DLB7s(a__v&9uVPfHf1;U+iE7{EytWAbHJL544#^Q}-m zJFgz84@--sjOE~|aBuoc87Z!wW$HlJCMat*zvdeNplE+|l{+z8aE$5ohC)=Ty?G=? zsE=FrY#Yjj5EK;qn2kNp(6OUzXbW<#ZC1#YnsG9b!oz2@{ExizRAh$ z&W@-rYSlxc9KPgP`%h$yecc=J&OC3mL~Tyr6g&R^zWh(h^WWULd6I>F2y|m3(4Dxz zZ{XtpDfZ0Y_-iu%*M2E z!daDgiLce*RMxQi89FaDYba*40aPL2P`e5Y7x6-Qs>ss>7GW+i+hZIL7oIk2g_p~G z^LLao0oIWlPc3?iHApL2cSj5-aWGP0Qailt15RYUEK~hZn46M;{8|Cd>KOig(weq; z3FoEPBT3(BI6K+hqg^;c)DU`-5b_hkzY?7eTT?}uOK@Oew_ICq{*f0h_^xVe1YGBc zz})aNuSiW0U}+)2I)`c>tv`g+%i6LRkr_(fy z1Yh}1C+N3o;8kBvZcXV`pxeER2&PNKsJN`ct3Y2@oPy$yNV->(e4!t8Lb0JWYzMfu zaMHF&tjZ;-BC_CfbtuqCQm1`5cU>p*=2zmf#H=kz3PK5uCyA18wcGQQvxLP^+9O2H$w+{Lq5t@o`bla0Gcv&7fPjJ!0k7JW{~D*C3jUqB z^t|Q#EYIx7ezIR1&_9j-xdlCAei}Xa8}nny{4ZnAYw~A#HuhY8V{QJ^-k-e9XW^gr zfMfgx`wxrrPZ#}3OZ(ghI>m1r)Sn&wb0>SY^V3V5zr+4(U;9(fpU0tJdU#0w{c!ZBhClO% zzcjqZ`l;dXY~ufN)<4Hi45XC){XXhXi+{ej`ejk{ci6AjSbr+`^EC5IfgR}&yT7~b ze|7qq{r9sxN7(CUg#W<>{O8>MlMVQc{Ta2=|HA&_2Fgf4{#dN2K%y-)Q11HGGw%NY D54s*P literal 0 HcmV?d00001 diff --git a/JisolGameCocos/assets/resources/config/data/schema.ts b/JisolGameCocos/assets/resources/config/data/schema.ts index e8c2e2f9..8a02f063 100644 --- a/JisolGameCocos/assets/resources/config/data/schema.ts +++ b/JisolGameCocos/assets/resources/config/data/schema.ts @@ -342,6 +342,90 @@ export class TbGResource { } +export namespace TB { +export class TbGRoleCUp { + + constructor(_json_: any) { + if (_json_.grade === undefined) { throw new Error() } + this.grade = _json_.grade + if (_json_.materials === undefined) { throw new Error() } + { this.materials = []; for(let _ele of _json_.materials) { let _e; _e = new TbGEntity.Resource(_ele); this.materials.push(_e);}} + } + + /** + * 宠物等级 + */ + readonly grade: number + /** + * 消耗的材料 + */ + readonly materials: TbGEntity.Resource[] + + resolve(tables:Tables) + { + } +} + +} + + +export namespace TbGEntity { +/** + * 资源信息 + */ +export class Resource { + + constructor(_json_: any) { + if (_json_.id === undefined) { throw new Error() } + this.id = _json_.id + if (_json_.value === undefined) { throw new Error() } + this.value = _json_.value + } + + /** + * 资源Id + */ + readonly id: number + /** + * 资源数量 + */ + readonly value: number + + resolve(tables:Tables) + { + } +} + +} + + +export namespace TB { +export class TbGRoleCStar { + + constructor(_json_: any) { + if (_json_.grade === undefined) { throw new Error() } + this.grade = _json_.grade + if (_json_.merge === undefined) { throw new Error() } + this.merge = _json_.merge + } + + /** + * 宠物星级 + */ + readonly grade: number + /** + * 合成数量 + */ + readonly merge: number + + resolve(tables:Tables) + { + } +} + +} + + export class TbGGlobal{ @@ -600,6 +684,70 @@ export class TbGResource{ +export class TbGRoleCUp{ + private _dataMap: Map + private _dataList: TB.TbGRoleCUp[] + constructor(_json_: any) { + this._dataMap = new Map() + this._dataList = [] + for(var _json2_ of _json_) { + let _v: TB.TbGRoleCUp + _v = new TB.TbGRoleCUp(_json2_) + this._dataList.push(_v) + this._dataMap.set(_v.grade, _v) + } + } + + getDataMap(): Map { return this._dataMap; } + getDataList(): TB.TbGRoleCUp[] { return this._dataList; } + + get(key: number): TB.TbGRoleCUp | undefined { return this._dataMap.get(key); } + + resolve(tables:Tables) + { + for(let data of this._dataList) + { + data.resolve(tables) + } + } + +} + + + + +export class TbGRoleCStar{ + private _dataMap: Map + private _dataList: TB.TbGRoleCStar[] + constructor(_json_: any) { + this._dataMap = new Map() + this._dataList = [] + for(var _json2_ of _json_) { + let _v: TB.TbGRoleCStar + _v = new TB.TbGRoleCStar(_json2_) + this._dataList.push(_v) + this._dataMap.set(_v.grade, _v) + } + } + + getDataMap(): Map { return this._dataMap; } + getDataList(): TB.TbGRoleCStar[] { return this._dataList; } + + get(key: number): TB.TbGRoleCStar | undefined { return this._dataMap.get(key); } + + resolve(tables:Tables) + { + for(let data of this._dataList) + { + data.resolve(tables) + } + } + +} + + + + type JsonLoader = (file: string) => any export class Tables { @@ -619,6 +767,10 @@ export class Tables { get TbGOnHookGlobal(): TbGOnHookGlobal { return this._TbGOnHookGlobal;} private _TbGResource: TbGResource get TbGResource(): TbGResource { return this._TbGResource;} + private _TbGRoleCUp: TbGRoleCUp + get TbGRoleCUp(): TbGRoleCUp { return this._TbGRoleCUp;} + private _TbGRoleCStar: TbGRoleCStar + get TbGRoleCStar(): TbGRoleCStar { return this._TbGRoleCStar;} constructor(loader: JsonLoader) { this._TbGGlobal = new TbGGlobal(loader('tbgglobal')) @@ -629,6 +781,8 @@ export class Tables { this._TbGMap = new TbGMap(loader('tbgmap')) this._TbGOnHookGlobal = new TbGOnHookGlobal(loader('tbgonhookglobal')) this._TbGResource = new TbGResource(loader('tbgresource')) + this._TbGRoleCUp = new TbGRoleCUp(loader('tbgrolecup')) + this._TbGRoleCStar = new TbGRoleCStar(loader('tbgrolecstar')) this._TbGGlobal.resolve(this) this._TbGRole.resolve(this) @@ -638,5 +792,7 @@ export class Tables { this._TbGMap.resolve(this) this._TbGOnHookGlobal.resolve(this) this._TbGResource.resolve(this) + this._TbGRoleCUp.resolve(this) + this._TbGRoleCStar.resolve(this) } } diff --git a/JisolGameCocos/assets/resources/config/json/tbgrolecstar.json b/JisolGameCocos/assets/resources/config/json/tbgrolecstar.json new file mode 100644 index 00000000..6edcb88e --- /dev/null +++ b/JisolGameCocos/assets/resources/config/json/tbgrolecstar.json @@ -0,0 +1,42 @@ +[ + { + "grade": 1, + "merge": 1 + }, + { + "grade": 2, + "merge": 2 + }, + { + "grade": 3, + "merge": 4 + }, + { + "grade": 4, + "merge": 8 + }, + { + "grade": 5, + "merge": 16 + }, + { + "grade": 6, + "merge": 32 + }, + { + "grade": 7, + "merge": 64 + }, + { + "grade": 8, + "merge": 128 + }, + { + "grade": 9, + "merge": 256 + }, + { + "grade": 10, + "merge": 512 + } +] \ No newline at end of file diff --git a/JisolGameCocos/assets/resources/config/json/tbgrolecstar.json.meta b/JisolGameCocos/assets/resources/config/json/tbgrolecstar.json.meta new file mode 100644 index 00000000..ab847f4a --- /dev/null +++ b/JisolGameCocos/assets/resources/config/json/tbgrolecstar.json.meta @@ -0,0 +1,11 @@ +{ + "ver": "2.0.1", + "importer": "json", + "imported": true, + "uuid": "580aaa0b-8b26-4bc6-9abe-6984e9980679", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": {} +} diff --git a/JisolGameCocos/assets/resources/config/json/tbgrolecup.json b/JisolGameCocos/assets/resources/config/json/tbgrolecup.json new file mode 100644 index 00000000..d19741b3 --- /dev/null +++ b/JisolGameCocos/assets/resources/config/json/tbgrolecup.json @@ -0,0 +1,902 @@ +[ + { + "grade": 1, + "materials": [ + { + "id": 90001, + "value": 100 + } + ] + }, + { + "grade": 2, + "materials": [ + { + "id": 90001, + "value": 400 + } + ] + }, + { + "grade": 3, + "materials": [ + { + "id": 90001, + "value": 900 + } + ] + }, + { + "grade": 4, + "materials": [ + { + "id": 90001, + "value": 1600 + } + ] + }, + { + "grade": 5, + "materials": [ + { + "id": 90001, + "value": 2500 + } + ] + }, + { + "grade": 6, + "materials": [ + { + "id": 90001, + "value": 3600 + } + ] + }, + { + "grade": 7, + "materials": [ + { + "id": 90001, + "value": 4900 + } + ] + }, + { + "grade": 8, + "materials": [ + { + "id": 90001, + "value": 6400 + } + ] + }, + { + "grade": 9, + "materials": [ + { + "id": 90001, + "value": 8100 + } + ] + }, + { + "grade": 10, + "materials": [ + { + "id": 90001, + "value": 10000 + } + ] + }, + { + "grade": 11, + "materials": [ + { + "id": 90001, + "value": 12100 + } + ] + }, + { + "grade": 12, + "materials": [ + { + "id": 90001, + "value": 14400 + } + ] + }, + { + "grade": 13, + "materials": [ + { + "id": 90001, + "value": 16900 + } + ] + }, + { + "grade": 14, + "materials": [ + { + "id": 90001, + "value": 19600 + } + ] + }, + { + "grade": 15, + "materials": [ + { + "id": 90001, + "value": 22500 + } + ] + }, + { + "grade": 16, + "materials": [ + { + "id": 90001, + "value": 25600 + } + ] + }, + { + "grade": 17, + "materials": [ + { + "id": 90001, + "value": 28900 + } + ] + }, + { + "grade": 18, + "materials": [ + { + "id": 90001, + "value": 32400 + } + ] + }, + { + "grade": 19, + "materials": [ + { + "id": 90001, + "value": 36100 + } + ] + }, + { + "grade": 20, + "materials": [ + { + "id": 90001, + "value": 40000 + } + ] + }, + { + "grade": 21, + "materials": [ + { + "id": 90001, + "value": 44100 + } + ] + }, + { + "grade": 22, + "materials": [ + { + "id": 90001, + "value": 48400 + } + ] + }, + { + "grade": 23, + "materials": [ + { + "id": 90001, + "value": 52900 + } + ] + }, + { + "grade": 24, + "materials": [ + { + "id": 90001, + "value": 57600 + } + ] + }, + { + "grade": 25, + "materials": [ + { + "id": 90001, + "value": 62500 + } + ] + }, + { + "grade": 26, + "materials": [ + { + "id": 90001, + "value": 67600 + } + ] + }, + { + "grade": 27, + "materials": [ + { + "id": 90001, + "value": 72900 + } + ] + }, + { + "grade": 28, + "materials": [ + { + "id": 90001, + "value": 78400 + } + ] + }, + { + "grade": 29, + "materials": [ + { + "id": 90001, + "value": 84100 + } + ] + }, + { + "grade": 30, + "materials": [ + { + "id": 90001, + "value": 90000 + } + ] + }, + { + "grade": 31, + "materials": [ + { + "id": 90001, + "value": 96100 + } + ] + }, + { + "grade": 32, + "materials": [ + { + "id": 90001, + "value": 102400 + } + ] + }, + { + "grade": 33, + "materials": [ + { + "id": 90001, + "value": 108900 + } + ] + }, + { + "grade": 34, + "materials": [ + { + "id": 90001, + "value": 115600 + } + ] + }, + { + "grade": 35, + "materials": [ + { + "id": 90001, + "value": 122500 + } + ] + }, + { + "grade": 36, + "materials": [ + { + "id": 90001, + "value": 129600 + } + ] + }, + { + "grade": 37, + "materials": [ + { + "id": 90001, + "value": 136900 + } + ] + }, + { + "grade": 38, + "materials": [ + { + "id": 90001, + "value": 144400 + } + ] + }, + { + "grade": 39, + "materials": [ + { + "id": 90001, + "value": 152100 + } + ] + }, + { + "grade": 40, + "materials": [ + { + "id": 90001, + "value": 160000 + } + ] + }, + { + "grade": 41, + "materials": [ + { + "id": 90001, + "value": 168100 + } + ] + }, + { + "grade": 42, + "materials": [ + { + "id": 90001, + "value": 176400 + } + ] + }, + { + "grade": 43, + "materials": [ + { + "id": 90001, + "value": 184900 + } + ] + }, + { + "grade": 44, + "materials": [ + { + "id": 90001, + "value": 193600 + } + ] + }, + { + "grade": 45, + "materials": [ + { + "id": 90001, + "value": 202500 + } + ] + }, + { + "grade": 46, + "materials": [ + { + "id": 90001, + "value": 211600 + } + ] + }, + { + "grade": 47, + "materials": [ + { + "id": 90001, + "value": 220900 + } + ] + }, + { + "grade": 48, + "materials": [ + { + "id": 90001, + "value": 230400 + } + ] + }, + { + "grade": 49, + "materials": [ + { + "id": 90001, + "value": 240100 + } + ] + }, + { + "grade": 50, + "materials": [ + { + "id": 90001, + "value": 250000 + } + ] + }, + { + "grade": 51, + "materials": [ + { + "id": 90001, + "value": 260100 + } + ] + }, + { + "grade": 52, + "materials": [ + { + "id": 90001, + "value": 270400 + } + ] + }, + { + "grade": 53, + "materials": [ + { + "id": 90001, + "value": 280900 + } + ] + }, + { + "grade": 54, + "materials": [ + { + "id": 90001, + "value": 291600 + } + ] + }, + { + "grade": 55, + "materials": [ + { + "id": 90001, + "value": 302500 + } + ] + }, + { + "grade": 56, + "materials": [ + { + "id": 90001, + "value": 313600 + } + ] + }, + { + "grade": 57, + "materials": [ + { + "id": 90001, + "value": 324900 + } + ] + }, + { + "grade": 58, + "materials": [ + { + "id": 90001, + "value": 336400 + } + ] + }, + { + "grade": 59, + "materials": [ + { + "id": 90001, + "value": 348100 + } + ] + }, + { + "grade": 60, + "materials": [ + { + "id": 90001, + "value": 360000 + } + ] + }, + { + "grade": 61, + "materials": [ + { + "id": 90001, + "value": 372100 + } + ] + }, + { + "grade": 62, + "materials": [ + { + "id": 90001, + "value": 384400 + } + ] + }, + { + "grade": 63, + "materials": [ + { + "id": 90001, + "value": 396900 + } + ] + }, + { + "grade": 64, + "materials": [ + { + "id": 90001, + "value": 409600 + } + ] + }, + { + "grade": 65, + "materials": [ + { + "id": 90001, + "value": 422500 + } + ] + }, + { + "grade": 66, + "materials": [ + { + "id": 90001, + "value": 435600 + } + ] + }, + { + "grade": 67, + "materials": [ + { + "id": 90001, + "value": 448900 + } + ] + }, + { + "grade": 68, + "materials": [ + { + "id": 90001, + "value": 462400 + } + ] + }, + { + "grade": 69, + "materials": [ + { + "id": 90001, + "value": 476100 + } + ] + }, + { + "grade": 70, + "materials": [ + { + "id": 90001, + "value": 490000 + } + ] + }, + { + "grade": 71, + "materials": [ + { + "id": 90001, + "value": 504100 + } + ] + }, + { + "grade": 72, + "materials": [ + { + "id": 90001, + "value": 518400 + } + ] + }, + { + "grade": 73, + "materials": [ + { + "id": 90001, + "value": 532900 + } + ] + }, + { + "grade": 74, + "materials": [ + { + "id": 90001, + "value": 547600 + } + ] + }, + { + "grade": 75, + "materials": [ + { + "id": 90001, + "value": 562500 + } + ] + }, + { + "grade": 76, + "materials": [ + { + "id": 90001, + "value": 577600 + } + ] + }, + { + "grade": 77, + "materials": [ + { + "id": 90001, + "value": 592900 + } + ] + }, + { + "grade": 78, + "materials": [ + { + "id": 90001, + "value": 608400 + } + ] + }, + { + "grade": 79, + "materials": [ + { + "id": 90001, + "value": 624100 + } + ] + }, + { + "grade": 80, + "materials": [ + { + "id": 90001, + "value": 640000 + } + ] + }, + { + "grade": 81, + "materials": [ + { + "id": 90001, + "value": 656100 + } + ] + }, + { + "grade": 82, + "materials": [ + { + "id": 90001, + "value": 672400 + } + ] + }, + { + "grade": 83, + "materials": [ + { + "id": 90001, + "value": 688900 + } + ] + }, + { + "grade": 84, + "materials": [ + { + "id": 90001, + "value": 705600 + } + ] + }, + { + "grade": 85, + "materials": [ + { + "id": 90001, + "value": 722500 + } + ] + }, + { + "grade": 86, + "materials": [ + { + "id": 90001, + "value": 739600 + } + ] + }, + { + "grade": 87, + "materials": [ + { + "id": 90001, + "value": 756900 + } + ] + }, + { + "grade": 88, + "materials": [ + { + "id": 90001, + "value": 774400 + } + ] + }, + { + "grade": 89, + "materials": [ + { + "id": 90001, + "value": 792100 + } + ] + }, + { + "grade": 90, + "materials": [ + { + "id": 90001, + "value": 810000 + } + ] + }, + { + "grade": 91, + "materials": [ + { + "id": 90001, + "value": 828100 + } + ] + }, + { + "grade": 92, + "materials": [ + { + "id": 90001, + "value": 846400 + } + ] + }, + { + "grade": 93, + "materials": [ + { + "id": 90001, + "value": 864900 + } + ] + }, + { + "grade": 94, + "materials": [ + { + "id": 90001, + "value": 883600 + } + ] + }, + { + "grade": 95, + "materials": [ + { + "id": 90001, + "value": 902500 + } + ] + }, + { + "grade": 96, + "materials": [ + { + "id": 90001, + "value": 921600 + } + ] + }, + { + "grade": 97, + "materials": [ + { + "id": 90001, + "value": 940900 + } + ] + }, + { + "grade": 98, + "materials": [ + { + "id": 90001, + "value": 960400 + } + ] + }, + { + "grade": 99, + "materials": [ + { + "id": 90001, + "value": 980100 + } + ] + }, + { + "grade": 100, + "materials": [ + { + "id": 90001, + "value": 1000000 + } + ] + } +] \ No newline at end of file diff --git a/JisolGameCocos/assets/resources/config/json/tbgrolecup.json.meta b/JisolGameCocos/assets/resources/config/json/tbgrolecup.json.meta new file mode 100644 index 00000000..714cde23 --- /dev/null +++ b/JisolGameCocos/assets/resources/config/json/tbgrolecup.json.meta @@ -0,0 +1,11 @@ +{ + "ver": "2.0.1", + "importer": "json", + "imported": true, + "uuid": "dfe67d28-0f19-440b-ad19-7c1f70b3528b", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": {} +} diff --git a/JisolGameCocos/assets/resources/config/json/tbgroleskill.json b/JisolGameCocos/assets/resources/config/json/tbgroleskill.json index a83c7506..036db6e9 100644 --- a/JisolGameCocos/assets/resources/config/json/tbgroleskill.json +++ b/JisolGameCocos/assets/resources/config/json/tbgroleskill.json @@ -5,8 +5,8 @@ "skillController": "GSkillCrazySquirrel", "skillArgs": [ "5", - "250", - "250" + "300", + "300" ], "skillText": "疯狂松鼠的技能 丢出巨大炸弹 轰炸全部玩家" }, diff --git a/JisolGameCocos/assets/resources/prefab/ui/主页/聊天/MainChatView.prefab b/JisolGameCocos/assets/resources/prefab/ui/主页/聊天/MainChatView.prefab index aa26cea8..ebffcaaf 100644 --- a/JisolGameCocos/assets/resources/prefab/ui/主页/聊天/MainChatView.prefab +++ b/JisolGameCocos/assets/resources/prefab/ui/主页/聊天/MainChatView.prefab @@ -40,7 +40,7 @@ "_lpos": { "__type__": "cc.Vec3", "x": 0, - "y": -1280, + "y": 0, "z": 0 }, "_lrot": { @@ -2973,8 +2973,8 @@ "_target": null, "_left": 0, "_right": 0, - "_top": 1280, - "_bottom": -1280, + "_top": 0, + "_bottom": 0, "_horizontalCenter": 0, "_verticalCenter": 0, "_isAbsLeft": true, diff --git a/JisolGameCocos/assets/script/App.ts b/JisolGameCocos/assets/script/App.ts index 5fc24330..bcccf233 100644 --- a/JisolGameCocos/assets/script/App.ts +++ b/JisolGameCocos/assets/script/App.ts @@ -26,10 +26,10 @@ import { JAPI, JAPIConfig } from "../../extensions/ngame/assets/ngame/util/JAPI" import { AppData } from "./AppData"; import AppAction from "./AppAction"; -let APIPath = `http://localhost:8080` -let WsPath = `ws://localhost:8080/websocket` -// let APIPath = `http://192.168.0.123:8080` -// let WsPath = `ws://192.168.0.123:8080/websocket` +// let APIPath = `http://localhost:8080` +// let WsPath = `ws://localhost:8080/websocket` +let APIPath = `http://192.168.0.174:8080` +let WsPath = `ws://192.168.0.174:8080/websocket` // let APIPath = `https://api.pet.jisol.cn` // let WsPath = `wss://api.pet.jisol.cn/websocket` diff --git a/JisolGameCocos/assets/script/ui/Loading/LoadingView.ts b/JisolGameCocos/assets/script/ui/Loading/LoadingView.ts index db3f026e..c80d583a 100644 --- a/JisolGameCocos/assets/script/ui/Loading/LoadingView.ts +++ b/JisolGameCocos/assets/script/ui/Loading/LoadingView.ts @@ -5,6 +5,7 @@ import { GUI } from "../UIConfig"; import NoviceManager from "../../manager/NoviceManager"; import { JNGLayerBase } from "../../components/JNComponent"; import { app } from "../../App"; +import { lerp } from "cc"; const { ccclass, property } = _decorator; @ccclass('LoadingView') @@ -22,7 +23,7 @@ export default class LoadingView extends JNGLayerBase { update(dt:number){ if(app.loading.getCurrentInfo()) this.label.string = app.loading.getCurrentInfo().title; - this.progress.progress = app.loading.progress(); + this.progress.progress = lerp(this.progress.progress,app.loading.progress(),dt); if(!this.isOk && app.loading.isAllSuccess()){ this.isOk = true; this.onSuccess(); diff --git a/JisolGameServer/Main/src/main/java/cfg/TB/TbGRoleCStar.java b/JisolGameServer/Main/src/main/java/cfg/TB/TbGRoleCStar.java new file mode 100644 index 00000000..b3f6ff02 --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cfg/TB/TbGRoleCStar.java @@ -0,0 +1,49 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg.TB; + +import luban.*; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + + +public final class TbGRoleCStar extends AbstractBean { + public TbGRoleCStar(JsonObject _buf) { + grade = _buf.get("grade").getAsInt(); + merge = _buf.get("merge").getAsInt(); + } + + public static TbGRoleCStar deserialize(JsonObject _buf) { + return new cfg.TB.TbGRoleCStar(_buf); + } + + /** + * 宠物星级 + */ + public final int grade; + /** + * 合成数量 + */ + public final int merge; + + public static final int __ID__ = 1657613958; + + @Override + public int getTypeId() { return __ID__; } + + @Override + public String toString() { + return "{ " + + "(format_field_name __code_style field.name):" + grade + "," + + "(format_field_name __code_style field.name):" + merge + "," + + "}"; + } +} + diff --git a/JisolGameServer/Main/src/main/java/cfg/TB/TbGRoleCUp.java b/JisolGameServer/Main/src/main/java/cfg/TB/TbGRoleCUp.java new file mode 100644 index 00000000..82d0d9f7 --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cfg/TB/TbGRoleCUp.java @@ -0,0 +1,49 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg.TB; + +import luban.*; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + + +public final class TbGRoleCUp extends AbstractBean { + public TbGRoleCUp(JsonObject _buf) { + grade = _buf.get("grade").getAsInt(); + { com.google.gson.JsonArray _json0_ = _buf.get("materials").getAsJsonArray(); int __n0 = _json0_.size(); materials = new cfg.TbGEntity.Resource[__n0]; int __index0=0; for(JsonElement __e0 : _json0_) { cfg.TbGEntity.Resource __v0; __v0 = cfg.TbGEntity.Resource.deserialize(__e0.getAsJsonObject()); materials[__index0++] = __v0; } } + } + + public static TbGRoleCUp deserialize(JsonObject _buf) { + return new cfg.TB.TbGRoleCUp(_buf); + } + + /** + * 宠物等级 + */ + public final int grade; + /** + * 消耗的材料 + */ + public final cfg.TbGEntity.Resource[] materials; + + public static final int __ID__ = 1860940751; + + @Override + public int getTypeId() { return __ID__; } + + @Override + public String toString() { + return "{ " + + "(format_field_name __code_style field.name):" + grade + "," + + "(format_field_name __code_style field.name):" + materials + "," + + "}"; + } +} + diff --git a/JisolGameServer/Main/src/main/java/cfg/Tables.java b/JisolGameServer/Main/src/main/java/cfg/Tables.java index da8cebe8..7407ff74 100644 --- a/JisolGameServer/Main/src/main/java/cfg/Tables.java +++ b/JisolGameServer/Main/src/main/java/cfg/Tables.java @@ -35,6 +35,10 @@ public final class Tables public cfg.TbGOnHookGlobal getTbGOnHookGlobal() { return _tbgonhookglobal; } private final cfg.TbGResource _tbgresource; public cfg.TbGResource getTbGResource() { return _tbgresource; } + private final cfg.TbGRoleCUp _tbgrolecup; + public cfg.TbGRoleCUp getTbGRoleCUp() { return _tbgrolecup; } + private final cfg.TbGRoleCStar _tbgrolecstar; + public cfg.TbGRoleCStar getTbGRoleCStar() { return _tbgrolecstar; } public Tables(IJsonLoader loader) throws java.io.IOException { _tbgglobal = new cfg.TbGGlobal(loader.load("tbgglobal")); @@ -45,6 +49,8 @@ public final class Tables _tbgmap = new cfg.TbGMap(loader.load("tbgmap")); _tbgonhookglobal = new cfg.TbGOnHookGlobal(loader.load("tbgonhookglobal")); _tbgresource = new cfg.TbGResource(loader.load("tbgresource")); + _tbgrolecup = new cfg.TbGRoleCUp(loader.load("tbgrolecup")); + _tbgrolecstar = new cfg.TbGRoleCStar(loader.load("tbgrolecstar")); } } diff --git a/JisolGameServer/Main/src/main/java/cfg/TbGEntity/Resource.java b/JisolGameServer/Main/src/main/java/cfg/TbGEntity/Resource.java new file mode 100644 index 00000000..5537f48c --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cfg/TbGEntity/Resource.java @@ -0,0 +1,52 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg.TbGEntity; + +import luban.*; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + + +/** + * 资源信息 + */ +public final class Resource extends AbstractBean { + public Resource(JsonObject _buf) { + id = _buf.get("id").getAsInt(); + value = _buf.get("value").getAsInt(); + } + + public static Resource deserialize(JsonObject _buf) { + return new cfg.TbGEntity.Resource(_buf); + } + + /** + * 资源Id + */ + public final int id; + /** + * 资源数量 + */ + public final int value; + + public static final int __ID__ = -215001824; + + @Override + public int getTypeId() { return __ID__; } + + @Override + public String toString() { + return "{ " + + "(format_field_name __code_style field.name):" + id + "," + + "(format_field_name __code_style field.name):" + value + "," + + "}"; + } +} + diff --git a/JisolGameServer/Main/src/main/java/cfg/TbGRoleCStar.java b/JisolGameServer/Main/src/main/java/cfg/TbGRoleCStar.java new file mode 100644 index 00000000..b1e89aff --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cfg/TbGRoleCStar.java @@ -0,0 +1,37 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg; + +import luban.*; +import com.google.gson.JsonElement; + + +public final class TbGRoleCStar { + private final java.util.HashMap _dataMap; + private final java.util.ArrayList _dataList; + + public TbGRoleCStar(JsonElement _buf) { + _dataMap = new java.util.HashMap(); + _dataList = new java.util.ArrayList(); + + for (com.google.gson.JsonElement _e_ : _buf.getAsJsonArray()) { + cfg.TB.TbGRoleCStar _v; + _v = cfg.TB.TbGRoleCStar.deserialize(_e_.getAsJsonObject()); + _dataList.add(_v); + _dataMap.put(_v.grade, _v); + } + } + + public java.util.HashMap getDataMap() { return _dataMap; } + public java.util.ArrayList getDataList() { return _dataList; } + + public cfg.TB.TbGRoleCStar get(int key) { return _dataMap.get(key); } + +} diff --git a/JisolGameServer/Main/src/main/java/cfg/TbGRoleCUp.java b/JisolGameServer/Main/src/main/java/cfg/TbGRoleCUp.java new file mode 100644 index 00000000..8b29753e --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cfg/TbGRoleCUp.java @@ -0,0 +1,37 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg; + +import luban.*; +import com.google.gson.JsonElement; + + +public final class TbGRoleCUp { + private final java.util.HashMap _dataMap; + private final java.util.ArrayList _dataList; + + public TbGRoleCUp(JsonElement _buf) { + _dataMap = new java.util.HashMap(); + _dataList = new java.util.ArrayList(); + + for (com.google.gson.JsonElement _e_ : _buf.getAsJsonArray()) { + cfg.TB.TbGRoleCUp _v; + _v = cfg.TB.TbGRoleCUp.deserialize(_e_.getAsJsonObject()); + _dataList.add(_v); + _dataMap.put(_v.grade, _v); + } + } + + public java.util.HashMap getDataMap() { return _dataMap; } + public java.util.ArrayList getDataList() { return _dataList; } + + public cfg.TB.TbGRoleCUp get(int key) { return _dataMap.get(key); } + +} diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/actions/onhook/GPVPAction.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/actions/onhook/GPVPAction.java index cc41270b..cea369e9 100644 --- a/JisolGameServer/Main/src/main/java/cn/jisol/game/actions/onhook/GPVPAction.java +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/actions/onhook/GPVPAction.java @@ -137,6 +137,7 @@ public class GPVPAction { client2.invoke(GActionEnum.C_MODE_PVP_END_WAIT); GPVPMessage.GPVPStart info = builder.build(); + //PVP 开始 client1.invoke(GActionEnum.C_MODE_PVP_START, info); client2.invoke(GActionEnum.C_MODE_PVP_START, info); diff --git a/JisolGameServer/Main/src/main/resources/json/tbgrolecstar.json b/JisolGameServer/Main/src/main/resources/json/tbgrolecstar.json new file mode 100644 index 00000000..6edcb88e --- /dev/null +++ b/JisolGameServer/Main/src/main/resources/json/tbgrolecstar.json @@ -0,0 +1,42 @@ +[ + { + "grade": 1, + "merge": 1 + }, + { + "grade": 2, + "merge": 2 + }, + { + "grade": 3, + "merge": 4 + }, + { + "grade": 4, + "merge": 8 + }, + { + "grade": 5, + "merge": 16 + }, + { + "grade": 6, + "merge": 32 + }, + { + "grade": 7, + "merge": 64 + }, + { + "grade": 8, + "merge": 128 + }, + { + "grade": 9, + "merge": 256 + }, + { + "grade": 10, + "merge": 512 + } +] \ No newline at end of file diff --git a/JisolGameServer/Main/src/main/resources/json/tbgrolecup.json b/JisolGameServer/Main/src/main/resources/json/tbgrolecup.json new file mode 100644 index 00000000..d19741b3 --- /dev/null +++ b/JisolGameServer/Main/src/main/resources/json/tbgrolecup.json @@ -0,0 +1,902 @@ +[ + { + "grade": 1, + "materials": [ + { + "id": 90001, + "value": 100 + } + ] + }, + { + "grade": 2, + "materials": [ + { + "id": 90001, + "value": 400 + } + ] + }, + { + "grade": 3, + "materials": [ + { + "id": 90001, + "value": 900 + } + ] + }, + { + "grade": 4, + "materials": [ + { + "id": 90001, + "value": 1600 + } + ] + }, + { + "grade": 5, + "materials": [ + { + "id": 90001, + "value": 2500 + } + ] + }, + { + "grade": 6, + "materials": [ + { + "id": 90001, + "value": 3600 + } + ] + }, + { + "grade": 7, + "materials": [ + { + "id": 90001, + "value": 4900 + } + ] + }, + { + "grade": 8, + "materials": [ + { + "id": 90001, + "value": 6400 + } + ] + }, + { + "grade": 9, + "materials": [ + { + "id": 90001, + "value": 8100 + } + ] + }, + { + "grade": 10, + "materials": [ + { + "id": 90001, + "value": 10000 + } + ] + }, + { + "grade": 11, + "materials": [ + { + "id": 90001, + "value": 12100 + } + ] + }, + { + "grade": 12, + "materials": [ + { + "id": 90001, + "value": 14400 + } + ] + }, + { + "grade": 13, + "materials": [ + { + "id": 90001, + "value": 16900 + } + ] + }, + { + "grade": 14, + "materials": [ + { + "id": 90001, + "value": 19600 + } + ] + }, + { + "grade": 15, + "materials": [ + { + "id": 90001, + "value": 22500 + } + ] + }, + { + "grade": 16, + "materials": [ + { + "id": 90001, + "value": 25600 + } + ] + }, + { + "grade": 17, + "materials": [ + { + "id": 90001, + "value": 28900 + } + ] + }, + { + "grade": 18, + "materials": [ + { + "id": 90001, + "value": 32400 + } + ] + }, + { + "grade": 19, + "materials": [ + { + "id": 90001, + "value": 36100 + } + ] + }, + { + "grade": 20, + "materials": [ + { + "id": 90001, + "value": 40000 + } + ] + }, + { + "grade": 21, + "materials": [ + { + "id": 90001, + "value": 44100 + } + ] + }, + { + "grade": 22, + "materials": [ + { + "id": 90001, + "value": 48400 + } + ] + }, + { + "grade": 23, + "materials": [ + { + "id": 90001, + "value": 52900 + } + ] + }, + { + "grade": 24, + "materials": [ + { + "id": 90001, + "value": 57600 + } + ] + }, + { + "grade": 25, + "materials": [ + { + "id": 90001, + "value": 62500 + } + ] + }, + { + "grade": 26, + "materials": [ + { + "id": 90001, + "value": 67600 + } + ] + }, + { + "grade": 27, + "materials": [ + { + "id": 90001, + "value": 72900 + } + ] + }, + { + "grade": 28, + "materials": [ + { + "id": 90001, + "value": 78400 + } + ] + }, + { + "grade": 29, + "materials": [ + { + "id": 90001, + "value": 84100 + } + ] + }, + { + "grade": 30, + "materials": [ + { + "id": 90001, + "value": 90000 + } + ] + }, + { + "grade": 31, + "materials": [ + { + "id": 90001, + "value": 96100 + } + ] + }, + { + "grade": 32, + "materials": [ + { + "id": 90001, + "value": 102400 + } + ] + }, + { + "grade": 33, + "materials": [ + { + "id": 90001, + "value": 108900 + } + ] + }, + { + "grade": 34, + "materials": [ + { + "id": 90001, + "value": 115600 + } + ] + }, + { + "grade": 35, + "materials": [ + { + "id": 90001, + "value": 122500 + } + ] + }, + { + "grade": 36, + "materials": [ + { + "id": 90001, + "value": 129600 + } + ] + }, + { + "grade": 37, + "materials": [ + { + "id": 90001, + "value": 136900 + } + ] + }, + { + "grade": 38, + "materials": [ + { + "id": 90001, + "value": 144400 + } + ] + }, + { + "grade": 39, + "materials": [ + { + "id": 90001, + "value": 152100 + } + ] + }, + { + "grade": 40, + "materials": [ + { + "id": 90001, + "value": 160000 + } + ] + }, + { + "grade": 41, + "materials": [ + { + "id": 90001, + "value": 168100 + } + ] + }, + { + "grade": 42, + "materials": [ + { + "id": 90001, + "value": 176400 + } + ] + }, + { + "grade": 43, + "materials": [ + { + "id": 90001, + "value": 184900 + } + ] + }, + { + "grade": 44, + "materials": [ + { + "id": 90001, + "value": 193600 + } + ] + }, + { + "grade": 45, + "materials": [ + { + "id": 90001, + "value": 202500 + } + ] + }, + { + "grade": 46, + "materials": [ + { + "id": 90001, + "value": 211600 + } + ] + }, + { + "grade": 47, + "materials": [ + { + "id": 90001, + "value": 220900 + } + ] + }, + { + "grade": 48, + "materials": [ + { + "id": 90001, + "value": 230400 + } + ] + }, + { + "grade": 49, + "materials": [ + { + "id": 90001, + "value": 240100 + } + ] + }, + { + "grade": 50, + "materials": [ + { + "id": 90001, + "value": 250000 + } + ] + }, + { + "grade": 51, + "materials": [ + { + "id": 90001, + "value": 260100 + } + ] + }, + { + "grade": 52, + "materials": [ + { + "id": 90001, + "value": 270400 + } + ] + }, + { + "grade": 53, + "materials": [ + { + "id": 90001, + "value": 280900 + } + ] + }, + { + "grade": 54, + "materials": [ + { + "id": 90001, + "value": 291600 + } + ] + }, + { + "grade": 55, + "materials": [ + { + "id": 90001, + "value": 302500 + } + ] + }, + { + "grade": 56, + "materials": [ + { + "id": 90001, + "value": 313600 + } + ] + }, + { + "grade": 57, + "materials": [ + { + "id": 90001, + "value": 324900 + } + ] + }, + { + "grade": 58, + "materials": [ + { + "id": 90001, + "value": 336400 + } + ] + }, + { + "grade": 59, + "materials": [ + { + "id": 90001, + "value": 348100 + } + ] + }, + { + "grade": 60, + "materials": [ + { + "id": 90001, + "value": 360000 + } + ] + }, + { + "grade": 61, + "materials": [ + { + "id": 90001, + "value": 372100 + } + ] + }, + { + "grade": 62, + "materials": [ + { + "id": 90001, + "value": 384400 + } + ] + }, + { + "grade": 63, + "materials": [ + { + "id": 90001, + "value": 396900 + } + ] + }, + { + "grade": 64, + "materials": [ + { + "id": 90001, + "value": 409600 + } + ] + }, + { + "grade": 65, + "materials": [ + { + "id": 90001, + "value": 422500 + } + ] + }, + { + "grade": 66, + "materials": [ + { + "id": 90001, + "value": 435600 + } + ] + }, + { + "grade": 67, + "materials": [ + { + "id": 90001, + "value": 448900 + } + ] + }, + { + "grade": 68, + "materials": [ + { + "id": 90001, + "value": 462400 + } + ] + }, + { + "grade": 69, + "materials": [ + { + "id": 90001, + "value": 476100 + } + ] + }, + { + "grade": 70, + "materials": [ + { + "id": 90001, + "value": 490000 + } + ] + }, + { + "grade": 71, + "materials": [ + { + "id": 90001, + "value": 504100 + } + ] + }, + { + "grade": 72, + "materials": [ + { + "id": 90001, + "value": 518400 + } + ] + }, + { + "grade": 73, + "materials": [ + { + "id": 90001, + "value": 532900 + } + ] + }, + { + "grade": 74, + "materials": [ + { + "id": 90001, + "value": 547600 + } + ] + }, + { + "grade": 75, + "materials": [ + { + "id": 90001, + "value": 562500 + } + ] + }, + { + "grade": 76, + "materials": [ + { + "id": 90001, + "value": 577600 + } + ] + }, + { + "grade": 77, + "materials": [ + { + "id": 90001, + "value": 592900 + } + ] + }, + { + "grade": 78, + "materials": [ + { + "id": 90001, + "value": 608400 + } + ] + }, + { + "grade": 79, + "materials": [ + { + "id": 90001, + "value": 624100 + } + ] + }, + { + "grade": 80, + "materials": [ + { + "id": 90001, + "value": 640000 + } + ] + }, + { + "grade": 81, + "materials": [ + { + "id": 90001, + "value": 656100 + } + ] + }, + { + "grade": 82, + "materials": [ + { + "id": 90001, + "value": 672400 + } + ] + }, + { + "grade": 83, + "materials": [ + { + "id": 90001, + "value": 688900 + } + ] + }, + { + "grade": 84, + "materials": [ + { + "id": 90001, + "value": 705600 + } + ] + }, + { + "grade": 85, + "materials": [ + { + "id": 90001, + "value": 722500 + } + ] + }, + { + "grade": 86, + "materials": [ + { + "id": 90001, + "value": 739600 + } + ] + }, + { + "grade": 87, + "materials": [ + { + "id": 90001, + "value": 756900 + } + ] + }, + { + "grade": 88, + "materials": [ + { + "id": 90001, + "value": 774400 + } + ] + }, + { + "grade": 89, + "materials": [ + { + "id": 90001, + "value": 792100 + } + ] + }, + { + "grade": 90, + "materials": [ + { + "id": 90001, + "value": 810000 + } + ] + }, + { + "grade": 91, + "materials": [ + { + "id": 90001, + "value": 828100 + } + ] + }, + { + "grade": 92, + "materials": [ + { + "id": 90001, + "value": 846400 + } + ] + }, + { + "grade": 93, + "materials": [ + { + "id": 90001, + "value": 864900 + } + ] + }, + { + "grade": 94, + "materials": [ + { + "id": 90001, + "value": 883600 + } + ] + }, + { + "grade": 95, + "materials": [ + { + "id": 90001, + "value": 902500 + } + ] + }, + { + "grade": 96, + "materials": [ + { + "id": 90001, + "value": 921600 + } + ] + }, + { + "grade": 97, + "materials": [ + { + "id": 90001, + "value": 940900 + } + ] + }, + { + "grade": 98, + "materials": [ + { + "id": 90001, + "value": 960400 + } + ] + }, + { + "grade": 99, + "materials": [ + { + "id": 90001, + "value": 980100 + } + ] + }, + { + "grade": 100, + "materials": [ + { + "id": 90001, + "value": 1000000 + } + ] + } +] \ No newline at end of file diff --git a/JisolGameServer/Main/src/main/resources/json/tbgroleskill.json b/JisolGameServer/Main/src/main/resources/json/tbgroleskill.json index a83c7506..036db6e9 100644 --- a/JisolGameServer/Main/src/main/resources/json/tbgroleskill.json +++ b/JisolGameServer/Main/src/main/resources/json/tbgroleskill.json @@ -5,8 +5,8 @@ "skillController": "GSkillCrazySquirrel", "skillArgs": [ "5", - "250", - "250" + "300", + "300" ], "skillText": "疯狂松鼠的技能 丢出巨大炸弹 轰炸全部玩家" }, diff --git a/headless/index.js b/headless/index.js new file mode 100644 index 00000000..82901f99 --- /dev/null +++ b/headless/index.js @@ -0,0 +1,53 @@ +// const URL = "http://192.168.0.174:7457/web-desktop/web-desktop/index.html" +const express = require("express"); +const app = express(); +const URL = "http://127.0.0.1:3000/static/index.html" + +const runCocos = () => { + + const { JSDOM,ResourceLoader } = require('jsdom') + const fetch = (...args) => import('node-fetch').then(({default: fetch}) => fetch(...args)); + + const WebGL = require('gl'); + const WebGLRenderingContext = WebGL.WebGLRenderingContext; + WebGLRenderingContext.prototype.texSubImage2D = function(){}; + const gl = WebGL(64, 64, { preserveDrawingBuffer: true }); + + const resourceLoader = new ResourceLoader({ + proxy: URL, + strictSSL: false, + // userAgent: "Mellblomenator/9000", + }); + + fetch(URL).then(res => res.text()).then(html => { + console.log("HTML Index 文件: ",html) + global.window = (new JSDOM(html, { + url: URL, + referrer: URL, + contentType: "text/html; charset=utf-8", + resources:resourceLoader, + storageQuota: 10000000 , + runScripts: "dangerously" + })).window; + + let HGContext = window.HTMLCanvasElement.prototype.getContext; + window.TextDecoder = global.TextDecoder; + window.HTMLCanvasElement.prototype.getContext = function(type,data) { + if(type == "2d") { + const TD = HGContext.bind(this)(type,data); + TD.RenderComponentHandle = ()=>{} + return TD; + } + return gl; + }; + window.requestAnimationFrame = global.requestAnimationFrame; + window.fetch = fetch; + }) + + setTimeout(() => {}, 99999999); +} +app.use('/static', express.static('static')) +app.listen(3000, () => { + console.log("服务启动"); + runCocos(); +}); \ No newline at end of file diff --git a/headless/package.json b/headless/package.json new file mode 100644 index 00000000..185ea268 --- /dev/null +++ b/headless/package.json @@ -0,0 +1,22 @@ +{ + "name": "headless", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "main": "node index.js" + }, + "author": "", + "license": "ISC", + "dependencies": { + "axios": "^1.5.1", + "canvas": "^2.11.2", + "express": "^4.18.2", + "gl": "^6.0.2", + "jsdom": "^22.1.0", + "node-fetch": "^3.3.2", + "systemjs": "^6.14.2", + "xmlhttprequest": "^1.8.0" + } +} diff --git a/headless/static/application.js b/headless/static/application.js new file mode 100644 index 00000000..11ddff75 --- /dev/null +++ b/headless/static/application.js @@ -0,0 +1,63 @@ +System.register([], function (_export, _context) { + "use strict"; + + var cc, Application; + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + + return { + setters: [], + execute: function () { + _export("Application", Application = /*#__PURE__*/function () { + function Application() { + _classCallCheck(this, Application); + + this.settingsPath = 'src/settings.json'; + this.showFPS = true; + } + + _createClass(Application, [{ + key: "init", + value: function init(engine) { + cc = engine; + cc.game.onPostBaseInitDelegate.add(this.onPostInitBase.bind(this)); + cc.game.onPostSubsystemInitDelegate.add(this.onPostSystemInit.bind(this)); + } + }, { + key: "onPostInitBase", + value: function onPostInitBase() {// cc.settings.overrideSettings('assets', 'server', ''); + // do custom logic + } + }, { + key: "onPostSystemInit", + value: function onPostSystemInit() {// do custom logic + } + }, { + key: "start", + value: function start() { + return cc.game.init({ + debugMode: true ? cc.DebugMode.INFO : cc.DebugMode.ERROR, + settingsPath: this.settingsPath, + overrideSettings: { + // assets: { + // preloadBundles: [{ bundle: 'main', version: 'xxx' }], + // } + profiling: { + showFPS: this.showFPS + } + } + }).then(function () { + return cc.game.run(); + }); + } + }]); + + return Application; + }()); + } + }; +}); \ No newline at end of file diff --git a/headless/static/assets/internal/config.json b/headless/static/assets/internal/config.json new file mode 100644 index 00000000..5a139d01 --- /dev/null +++ b/headless/static/assets/internal/config.json @@ -0,0 +1,145 @@ +{ + "importBase": "import", + "nativeBase": "native", + "name": "internal", + "deps": [], + "uuids": [ + "1c02ae6f-4492-4915-b8f8-7492a3b1e4cd", + "50f4348b-c883-4e2f-8f11-ce233b859fa1", + "60f7195c-ec2a-45eb-ba94-8955f60e81d0", + "810e96e4-e456-4468-9b59-f4e8f39732c0", + "871c3b6c-7379-419d-bda3-794b239ab90d", + "8bbdbcdd-5cd4-4100-b6d5-b7c9625b6107", + "970b0598-bcb0-4714-91fb-2e81440dccd8", + "a3cd009f-0ab0-420d-9278-b9fdab939bbc", + "b5d6115f-0370-4d7c-aad3-c194cc71cf98", + "bcd64cc6-2dd9-43f6-abbe-66318d332032", + "c27215d8-6835-4b68-bfbb-bdeac6100c04", + "d930590d-bb92-4cc8-8bd1-23cd027f9edf", + "dd3a144d-ab7f-41f0-82b8-2e43a090d496", + "e9aa9a3e-5b2b-4ac7-a2c7-073de2b2b24f", + "efe8e2a3-eace-427b-b4f1-cb8a937ec77d", + "f0416e68-0200-4b77-a926-4f9d16e494da", + "f92806d7-1768-443f-afe8-12bcde84d0f0", + "fda095cb-831d-4601-ad94-846013963de8" + ], + "paths": { + "60f7195c-ec2a-45eb-ba94-8955f60e81d0": [ + "db:/internal/effects/for2d/builtin-sprite", + "cc.EffectAsset" + ], + "1c02ae6f-4492-4915-b8f8-7492a3b1e4cd": [ + "db:/internal/effects/internal/builtin-graphics", + "cc.EffectAsset" + ], + "810e96e4-e456-4468-9b59-f4e8f39732c0": [ + "db:/internal/effects/internal/builtin-clear-stencil", + "cc.EffectAsset" + ], + "efe8e2a3-eace-427b-b4f1-cb8a937ec77d": [ + "db:/internal/default_materials/ui-sprite-gray-material", + "cc.Material" + ], + "e9aa9a3e-5b2b-4ac7-a2c7-073de2b2b24f": [ + "db:/internal/default_materials/ui-base-material", + "cc.Material" + ], + "8bbdbcdd-5cd4-4100-b6d5-b7c9625b6107": [ + "db:/internal/default_materials/default-clear-stencil", + "cc.Material" + ], + "50f4348b-c883-4e2f-8f11-ce233b859fa1": [ + "db:/internal/default_materials/ui-alpha-test-material", + "cc.Material" + ], + "fda095cb-831d-4601-ad94-846013963de8": [ + "db:/internal/default_materials/ui-sprite-material", + "cc.Material" + ], + "f92806d7-1768-443f-afe8-12bcde84d0f0": [ + "db:/internal/default_materials/ui-sprite-alpha-sep-material", + "cc.Material" + ], + "dd3a144d-ab7f-41f0-82b8-2e43a090d496": [ + "db:/internal/default_materials/ui-sprite-gray-alpha-sep-material", + "cc.Material" + ], + "f0416e68-0200-4b77-a926-4f9d16e494da": [ + "db:/internal/default_materials/ui-graphics-material", + "cc.Material" + ], + "970b0598-bcb0-4714-91fb-2e81440dccd8": [ + "db:/internal/effects/util/splash-screen", + "cc.EffectAsset" + ], + "bcd64cc6-2dd9-43f6-abbe-66318d332032": [ + "db:/internal/default_materials/missing-effect-material", + "cc.Material" + ], + "d930590d-bb92-4cc8-8bd1-23cd027f9edf": [ + "db:/internal/default_materials/missing-material", + "cc.Material" + ], + "a3cd009f-0ab0-420d-9278-b9fdab939bbc": [ + "db:/internal/effects/builtin-unlit", + "cc.EffectAsset" + ], + "c27215d8-6835-4b68-bfbb-bdeac6100c04": [ + "db:/internal/effects/for2d/builtin-spine", + "cc.EffectAsset" + ], + "b5d6115f-0370-4d7c-aad3-c194cc71cf98": [ + "db:/internal/default_materials/default-spine-material", + "cc.Material" + ], + "871c3b6c-7379-419d-bda3-794b239ab90d": [ + "db:/internal/effects/util/profiler", + "cc.EffectAsset" + ] + }, + "scenes": {}, + "packs": {}, + "versions": { + "import": [], + "native": [] + }, + "redirect": [], + "debug": true, + "extensionMap": {}, + "hasPreloadScript": true, + "dependencyRelationships": { + "50f4348b-c883-4e2f-8f11-ce233b859fa1": [ + "60f7195c-ec2a-45eb-ba94-8955f60e81d0" + ], + "8bbdbcdd-5cd4-4100-b6d5-b7c9625b6107": [ + "810e96e4-e456-4468-9b59-f4e8f39732c0" + ], + "b5d6115f-0370-4d7c-aad3-c194cc71cf98": [ + "c27215d8-6835-4b68-bfbb-bdeac6100c04" + ], + "bcd64cc6-2dd9-43f6-abbe-66318d332032": [ + "a3cd009f-0ab0-420d-9278-b9fdab939bbc" + ], + "d930590d-bb92-4cc8-8bd1-23cd027f9edf": [ + "a3cd009f-0ab0-420d-9278-b9fdab939bbc" + ], + "dd3a144d-ab7f-41f0-82b8-2e43a090d496": [ + "60f7195c-ec2a-45eb-ba94-8955f60e81d0" + ], + "e9aa9a3e-5b2b-4ac7-a2c7-073de2b2b24f": [ + "60f7195c-ec2a-45eb-ba94-8955f60e81d0" + ], + "efe8e2a3-eace-427b-b4f1-cb8a937ec77d": [ + "60f7195c-ec2a-45eb-ba94-8955f60e81d0" + ], + "f0416e68-0200-4b77-a926-4f9d16e494da": [ + "1c02ae6f-4492-4915-b8f8-7492a3b1e4cd" + ], + "f92806d7-1768-443f-afe8-12bcde84d0f0": [ + "60f7195c-ec2a-45eb-ba94-8955f60e81d0" + ], + "fda095cb-831d-4601-ad94-846013963de8": [ + "60f7195c-ec2a-45eb-ba94-8955f60e81d0" + ] + } +} \ No newline at end of file diff --git a/headless/static/assets/internal/import/1c/1c02ae6f-4492-4915-b8f8-7492a3b1e4cd.json b/headless/static/assets/internal/import/1c/1c02ae6f-4492-4915-b8f8-7492a3b1e4cd.json new file mode 100644 index 00000000..0b3e9b0d --- /dev/null +++ b/headless/static/assets/internal/import/1c/1c02ae6f-4492-4915-b8f8-7492a3b1e4cd.json @@ -0,0 +1 @@ +[1,0,0,[["cc.EffectAsset",["_name","shaders","techniques"],0]],[[0,0,1,2,4]],[[0,"internal/builtin-graphics",[{"hash":586721616,"name":"internal/builtin-graphics|vs:vert|fs:frag","blocks":[],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[],"attributes":[{"name":"a_position","format":32,"location":0,"defines":[]},{"name":"a_color","format":44,"location":1,"defines":[]},{"name":"a_dist","format":11,"location":2,"defines":[]}],"fragColors":[{"name":"cc_FragColor","typename":"vec4","type":16,"count":1,"stageFlags":16,"location":0,"defines":[]}],"descriptors":[{"rate":0,"blocks":[{"name":"CCLocal","stageFlags":1,"tags":{"builtin":"local"},"members":[{"name":"cc_matWorld","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matWorldIT","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_lightingMapUVParam","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_localShadowBias","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_reflectionProbeData1","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_reflectionProbeData2","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_reflectionProbeBlendData1","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_reflectionProbeBlendData2","typename":"vec4","type":16,"count":1,"precision":"highp "}],"defines":[]}],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":1,"blocks":[],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":2,"blocks":[],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":3,"blocks":[{"name":"CCGlobal","stageFlags":1,"tags":{"builtin":"global"},"members":[{"name":"cc_time","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_screenSize","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_nativeSize","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_probeInfo","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_debug_view_mode","typename":"vec4","type":16,"count":1,"precision":"mediump "}],"defines":[]},{"name":"CCCamera","stageFlags":1,"tags":{"builtin":"global"},"members":[{"name":"cc_matView","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matViewInv","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matProj","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matProjInv","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matViewProj","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matViewProjInv","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_cameraPos","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_surfaceTransform","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_screenScale","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_exposure","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_mainLitDir","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_mainLitColor","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_ambientSky","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_ambientGround","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_fogColor","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_fogBase","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_fogAdd","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_nearFar","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_viewPort","typename":"vec4","type":16,"count":1,"precision":"mediump "}],"defines":[]}],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]}],"glsl3":{"vert":"\nprecision highp float;\nlayout(std140) uniform CCGlobal {\n highp vec4 cc_time;\n mediump vec4 cc_screenSize;\n mediump vec4 cc_nativeSize;\n mediump vec4 cc_probeInfo;\n mediump vec4 cc_debug_view_mode;\n};\nlayout(std140) uniform CCCamera {\n highp mat4 cc_matView;\n highp mat4 cc_matViewInv;\n highp mat4 cc_matProj;\n highp mat4 cc_matProjInv;\n highp mat4 cc_matViewProj;\n highp mat4 cc_matViewProjInv;\n highp vec4 cc_cameraPos;\n mediump vec4 cc_surfaceTransform;\n mediump vec4 cc_screenScale;\n mediump vec4 cc_exposure;\n mediump vec4 cc_mainLitDir;\n mediump vec4 cc_mainLitColor;\n mediump vec4 cc_ambientSky;\n mediump vec4 cc_ambientGround;\n mediump vec4 cc_fogColor;\n mediump vec4 cc_fogBase;\n mediump vec4 cc_fogAdd;\n mediump vec4 cc_nearFar;\n mediump vec4 cc_viewPort;\n};\nlayout(std140) uniform CCLocal {\n highp mat4 cc_matWorld;\n highp mat4 cc_matWorldIT;\n highp vec4 cc_lightingMapUVParam;\n highp vec4 cc_localShadowBias;\n highp vec4 cc_reflectionProbeData1;\n highp vec4 cc_reflectionProbeData2;\n highp vec4 cc_reflectionProbeBlendData1;\n highp vec4 cc_reflectionProbeBlendData2;\n};\nin vec3 a_position;\nin vec4 a_color;\nout vec4 v_color;\nin float a_dist;\nout float v_dist;\nvec4 vert () {\n vec4 pos = vec4(a_position, 1);\n pos = cc_matViewProj * cc_matWorld * pos;\n v_color = a_color;\n v_dist = a_dist;\n return pos;\n}\nvoid main() { gl_Position = vert(); }","frag":"\nprecision highp float;\nin vec4 v_color;\nin float v_dist;\nvec4 frag () {\n vec4 o = v_color;\n float aa = fwidth(v_dist);\n float alpha = 1. - smoothstep(-aa, 0., abs(v_dist) - 1.0);\n o.rgb *= o.a;\n o *= alpha;\n return o;\n}\nlayout(location = 0) out vec4 cc_FragColor;\nvoid main() { cc_FragColor = frag(); }"},"glsl1":{"vert":"\nprecision highp float;\nuniform highp mat4 cc_matViewProj;\nuniform highp mat4 cc_matWorld;\nattribute vec3 a_position;\nattribute vec4 a_color;\nvarying vec4 v_color;\nattribute float a_dist;\nvarying float v_dist;\nvec4 vert () {\n vec4 pos = vec4(a_position, 1);\n pos = cc_matViewProj * cc_matWorld * pos;\n v_color = a_color;\n v_dist = a_dist;\n return pos;\n}\nvoid main() { gl_Position = vert(); }","frag":"\n#ifdef GL_OES_standard_derivatives\n#extension GL_OES_standard_derivatives: enable\n#endif\nprecision highp float;\nvarying vec4 v_color;\nvarying float v_dist;\nvec4 frag () {\n vec4 o = v_color;\n #ifdef GL_OES_standard_derivatives\n float aa = fwidth(v_dist);\n #else\n float aa = 0.05;\n #endif\n float alpha = 1. - smoothstep(-aa, 0., abs(v_dist) - 1.0);\n o.rgb *= o.a;\n o *= alpha;\n return o;\n}\nvoid main() { gl_FragColor = frag(); }"},"builtins":{"globals":{"blocks":[{"name":"CCGlobal","defines":[]},{"name":"CCCamera","defines":[]}],"samplerTextures":[],"buffers":[],"images":[]},"locals":{"blocks":[{"name":"CCLocal","defines":[]}],"samplerTextures":[],"buffers":[],"images":[]},"statistics":{"CC_EFFECT_USED_VERTEX_UNIFORM_VECTORS":56,"CC_EFFECT_USED_FRAGMENT_UNIFORM_VECTORS":0}},"defines":[]}],[{"passes":[{"program":"internal/builtin-graphics|vs:vert|fs:frag","blendState":{"targets":[{"blend":true,"blendSrc":1,"blendDst":4,"blendSrcAlpha":1,"blendDstAlpha":4}]},"rasterizerState":{"cullMode":0},"depthStencilState":{"depthTest":false,"depthWrite":false}}]}]]],0,0,[],[],[]] diff --git a/headless/static/assets/internal/import/50/50f4348b-c883-4e2f-8f11-ce233b859fa1.json b/headless/static/assets/internal/import/50/50f4348b-c883-4e2f-8f11-ce233b859fa1.json new file mode 100644 index 00000000..88d7ab92 --- /dev/null +++ b/headless/static/assets/internal/import/50/50f4348b-c883-4e2f-8f11-ce233b859fa1.json @@ -0,0 +1 @@ +[1,["60f7195c-ec2a-45eb-ba94-8955f60e81d0"],["_effectAsset"],[["cc.Material",["_name","_props","_states","_defines"],-1]],[[0,0,1,2,3,5]],[[0,"ui-alpha-test-material",[{}],[{"rasterizerState":{},"depthStencilState":{},"blendState":{"targets":[{}]}}],[{"USE_ALPHA_TEST":true,"USE_TEXTURE":true,"IS_GRAY":false,"CC_USE_EMBEDDED_ALPHA":false}]]],0,0,[0],[0],[0]] diff --git a/headless/static/assets/internal/import/60/60f7195c-ec2a-45eb-ba94-8955f60e81d0.json b/headless/static/assets/internal/import/60/60f7195c-ec2a-45eb-ba94-8955f60e81d0.json new file mode 100644 index 00000000..33733211 --- /dev/null +++ b/headless/static/assets/internal/import/60/60f7195c-ec2a-45eb-ba94-8955f60e81d0.json @@ -0,0 +1 @@ +[1,0,0,[["cc.EffectAsset",["_name","combinations","shaders","techniques"],-1]],[[0,0,1,2,3,5]],[[0,"for2d/builtin-sprite",[{}],[{"hash":2249878161,"name":"for2d/builtin-sprite|sprite-vs:vert|sprite-fs:frag","blocks":[{"name":"ALPHA_TEST_DATA","stageFlags":16,"binding":0,"members":[{"name":"alphaThreshold","type":13,"count":1}],"defines":["USE_ALPHA_TEST"]}],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[],"attributes":[{"name":"a_position","format":32,"location":0,"defines":[]},{"name":"a_texCoord","format":21,"location":1,"defines":[]},{"name":"a_color","format":44,"location":2,"defines":[]}],"fragColors":[{"name":"cc_FragColor","typename":"vec4","type":16,"count":1,"stageFlags":16,"location":0,"defines":[]}],"descriptors":[{"rate":0,"blocks":[{"name":"CCLocal","stageFlags":1,"tags":{"builtin":"local"},"members":[{"name":"cc_matWorld","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matWorldIT","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_lightingMapUVParam","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_localShadowBias","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_reflectionProbeData1","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_reflectionProbeData2","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_reflectionProbeBlendData1","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_reflectionProbeBlendData2","typename":"vec4","type":16,"count":1,"precision":"highp "}],"defines":["USE_LOCAL"]}],"samplerTextures":[{"name":"cc_spriteTexture","typename":"sampler2D","type":28,"count":1,"stageFlags":16,"tags":{"builtin":"local"},"defines":["USE_TEXTURE"]}],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":1,"blocks":[{"name":"ALPHA_TEST_DATA","stageFlags":16,"binding":0,"members":[{"name":"alphaThreshold","type":13,"count":1}],"defines":["USE_ALPHA_TEST"]}],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":2,"blocks":[],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":3,"blocks":[{"name":"CCGlobal","stageFlags":1,"tags":{"builtin":"global"},"members":[{"name":"cc_time","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_screenSize","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_nativeSize","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_probeInfo","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_debug_view_mode","typename":"vec4","type":16,"count":1,"precision":"mediump "}],"defines":[]},{"name":"CCCamera","stageFlags":1,"tags":{"builtin":"global"},"members":[{"name":"cc_matView","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matViewInv","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matProj","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matProjInv","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matViewProj","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matViewProjInv","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_cameraPos","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_surfaceTransform","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_screenScale","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_exposure","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_mainLitDir","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_mainLitColor","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_ambientSky","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_ambientGround","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_fogColor","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_fogBase","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_fogAdd","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_nearFar","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_viewPort","typename":"vec4","type":16,"count":1,"precision":"mediump "}],"defines":[]}],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]}],"glsl3":{"vert":"\nprecision highp float;\nlayout(std140) uniform CCGlobal {\n highp vec4 cc_time;\n mediump vec4 cc_screenSize;\n mediump vec4 cc_nativeSize;\n mediump vec4 cc_probeInfo;\n mediump vec4 cc_debug_view_mode;\n};\nlayout(std140) uniform CCCamera {\n highp mat4 cc_matView;\n highp mat4 cc_matViewInv;\n highp mat4 cc_matProj;\n highp mat4 cc_matProjInv;\n highp mat4 cc_matViewProj;\n highp mat4 cc_matViewProjInv;\n highp vec4 cc_cameraPos;\n mediump vec4 cc_surfaceTransform;\n mediump vec4 cc_screenScale;\n mediump vec4 cc_exposure;\n mediump vec4 cc_mainLitDir;\n mediump vec4 cc_mainLitColor;\n mediump vec4 cc_ambientSky;\n mediump vec4 cc_ambientGround;\n mediump vec4 cc_fogColor;\n mediump vec4 cc_fogBase;\n mediump vec4 cc_fogAdd;\n mediump vec4 cc_nearFar;\n mediump vec4 cc_viewPort;\n};\n#if USE_LOCAL\n layout(std140) uniform CCLocal {\n highp mat4 cc_matWorld;\n highp mat4 cc_matWorldIT;\n highp vec4 cc_lightingMapUVParam;\n highp vec4 cc_localShadowBias;\n highp vec4 cc_reflectionProbeData1;\n highp vec4 cc_reflectionProbeData2;\n highp vec4 cc_reflectionProbeBlendData1;\n highp vec4 cc_reflectionProbeBlendData2;\n };\n#endif\n#if SAMPLE_FROM_RT\n #define QUATER_PI 0.78539816340\n #define HALF_PI 1.57079632679\n #define PI 3.14159265359\n #define PI2 6.28318530718\n #define PI4 12.5663706144\n #define INV_QUATER_PI 1.27323954474\n #define INV_HALF_PI 0.63661977237\n #define INV_PI 0.31830988618\n #define INV_PI2 0.15915494309\n #define INV_PI4 0.07957747155\n #define EPSILON 1e-6\n #define EPSILON_LOWP 1e-4\n #define LOG2 1.442695\n #define EXP_VALUE 2.71828183\n #define FP_MAX 65504.0\n #define FP_SCALE 0.0009765625\n #define FP_SCALE_INV 1024.0\n #define GRAY_VECTOR vec3(0.299, 0.587, 0.114)\n #define LIGHT_MAP_TYPE_DISABLED 0\n #define LIGHT_MAP_TYPE_ALL_IN_ONE 1\n #define LIGHT_MAP_TYPE_INDIRECT_OCCLUSION 2\n #define REFLECTION_PROBE_TYPE_NONE 0\n #define REFLECTION_PROBE_TYPE_CUBE 1\n #define REFLECTION_PROBE_TYPE_PLANAR 2\n #define REFLECTION_PROBE_TYPE_BLEND 3\n #define REFLECTION_PROBE_TYPE_BLEND_AND_SKYBOX 4\n #define LIGHT_TYPE_DIRECTIONAL 0.0\n #define LIGHT_TYPE_SPHERE 1.0\n #define LIGHT_TYPE_SPOT 2.0\n #define LIGHT_TYPE_POINT 3.0\n #define LIGHT_TYPE_RANGED_DIRECTIONAL 4.0\n #define IS_DIRECTIONAL_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_DIRECTIONAL)) < EPSILON_LOWP)\n #define IS_SPHERE_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_SPHERE)) < EPSILON_LOWP)\n #define IS_SPOT_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_SPOT)) < EPSILON_LOWP)\n #define IS_POINT_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_POINT)) < EPSILON_LOWP)\n #define IS_RANGED_DIRECTIONAL_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_RANGED_DIRECTIONAL)) < EPSILON_LOWP)\n #define TONE_MAPPING_ACES 0\n #define TONE_MAPPING_LINEAR 1\n #define SURFACES_MAX_TRANSMIT_DEPTH_VALUE 999999.0\n #ifndef CC_SURFACES_DEBUG_VIEW_SINGLE\n #define CC_SURFACES_DEBUG_VIEW_SINGLE 1\n #endif\n #ifndef CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC\n #define CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC 2\n #endif\n#endif\nin vec3 a_position;\nin vec2 a_texCoord;\nin vec4 a_color;\nout vec4 color;\nout vec2 uv0;\nvec4 vert () {\n vec4 pos = vec4(a_position, 1);\n #if USE_LOCAL\n pos = cc_matWorld * pos;\n #endif\n #if USE_PIXEL_ALIGNMENT\n pos = cc_matView * pos;\n pos.xyz = floor(pos.xyz);\n pos = cc_matProj * pos;\n #else\n pos = cc_matViewProj * pos;\n #endif\n uv0 = a_texCoord;\n #if SAMPLE_FROM_RT\n uv0 = cc_cameraPos.w > 1.0 ? vec2(uv0.x, 1.0 - uv0.y) : uv0;\n #endif\n color = a_color;\n return pos;\n}\nvoid main() { gl_Position = vert(); }","frag":"\nprecision highp float;\nvec4 CCSampleWithAlphaSeparated(sampler2D tex, vec2 uv) {\n#if CC_USE_EMBEDDED_ALPHA\n return vec4(texture(tex, uv).rgb, texture(tex, uv + vec2(0.0, 0.5)).r);\n#else\n return texture(tex, uv);\n#endif\n}\n#if USE_ALPHA_TEST\n layout(std140) uniform ALPHA_TEST_DATA {\n float alphaThreshold;\n };\n#endif\nvoid ALPHA_TEST (in vec4 color) {\n #if USE_ALPHA_TEST\n if (color.a < alphaThreshold) discard;\n #endif\n}\nvoid ALPHA_TEST (in float alpha) {\n #if USE_ALPHA_TEST\n if (alpha < alphaThreshold) discard;\n #endif\n}\nin vec4 color;\n#if USE_TEXTURE\n in vec2 uv0;\n uniform sampler2D cc_spriteTexture;\n#endif\nvec4 frag () {\n vec4 o = vec4(1, 1, 1, 1);\n #if USE_TEXTURE\n o *= CCSampleWithAlphaSeparated(cc_spriteTexture, uv0);\n #if IS_GRAY\n float gray = 0.2126 * o.r + 0.7152 * o.g + 0.0722 * o.b;\n o.r = o.g = o.b = gray;\n #endif\n #endif\n o *= color;\n ALPHA_TEST(o);\n return o;\n}\nlayout(location = 0) out vec4 cc_FragColor;\nvoid main() { cc_FragColor = frag(); }"},"glsl1":{"vert":"\nprecision highp float;\nuniform highp mat4 cc_matView;\n uniform highp mat4 cc_matProj;\n uniform highp mat4 cc_matViewProj;\n uniform highp vec4 cc_cameraPos;\n#if USE_LOCAL\n uniform highp mat4 cc_matWorld;\n#endif\n#if SAMPLE_FROM_RT\n #define QUATER_PI 0.78539816340\n #define HALF_PI 1.57079632679\n #define PI 3.14159265359\n #define PI2 6.28318530718\n #define PI4 12.5663706144\n #define INV_QUATER_PI 1.27323954474\n #define INV_HALF_PI 0.63661977237\n #define INV_PI 0.31830988618\n #define INV_PI2 0.15915494309\n #define INV_PI4 0.07957747155\n #define EPSILON 1e-6\n #define EPSILON_LOWP 1e-4\n #define LOG2 1.442695\n #define EXP_VALUE 2.71828183\n #define FP_MAX 65504.0\n #define FP_SCALE 0.0009765625\n #define FP_SCALE_INV 1024.0\n #define GRAY_VECTOR vec3(0.299, 0.587, 0.114)\n #define LIGHT_MAP_TYPE_DISABLED 0\n #define LIGHT_MAP_TYPE_ALL_IN_ONE 1\n #define LIGHT_MAP_TYPE_INDIRECT_OCCLUSION 2\n #define REFLECTION_PROBE_TYPE_NONE 0\n #define REFLECTION_PROBE_TYPE_CUBE 1\n #define REFLECTION_PROBE_TYPE_PLANAR 2\n #define REFLECTION_PROBE_TYPE_BLEND 3\n #define REFLECTION_PROBE_TYPE_BLEND_AND_SKYBOX 4\n #define LIGHT_TYPE_DIRECTIONAL 0.0\n #define LIGHT_TYPE_SPHERE 1.0\n #define LIGHT_TYPE_SPOT 2.0\n #define LIGHT_TYPE_POINT 3.0\n #define LIGHT_TYPE_RANGED_DIRECTIONAL 4.0\n #define IS_DIRECTIONAL_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_DIRECTIONAL)) < EPSILON_LOWP)\n #define IS_SPHERE_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_SPHERE)) < EPSILON_LOWP)\n #define IS_SPOT_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_SPOT)) < EPSILON_LOWP)\n #define IS_POINT_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_POINT)) < EPSILON_LOWP)\n #define IS_RANGED_DIRECTIONAL_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_RANGED_DIRECTIONAL)) < EPSILON_LOWP)\n #define TONE_MAPPING_ACES 0\n #define TONE_MAPPING_LINEAR 1\n #define SURFACES_MAX_TRANSMIT_DEPTH_VALUE 999999.0\n #ifndef CC_SURFACES_DEBUG_VIEW_SINGLE\n #define CC_SURFACES_DEBUG_VIEW_SINGLE 1\n #endif\n #ifndef CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC\n #define CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC 2\n #endif\n#endif\nattribute vec3 a_position;\nattribute vec2 a_texCoord;\nattribute vec4 a_color;\nvarying vec4 color;\nvarying vec2 uv0;\nvec4 vert () {\n vec4 pos = vec4(a_position, 1);\n #if USE_LOCAL\n pos = cc_matWorld * pos;\n #endif\n #if USE_PIXEL_ALIGNMENT\n pos = cc_matView * pos;\n pos.xyz = floor(pos.xyz);\n pos = cc_matProj * pos;\n #else\n pos = cc_matViewProj * pos;\n #endif\n uv0 = a_texCoord;\n #if SAMPLE_FROM_RT\n uv0 = cc_cameraPos.w > 1.0 ? vec2(uv0.x, 1.0 - uv0.y) : uv0;\n #endif\n color = a_color;\n return pos;\n}\nvoid main() { gl_Position = vert(); }","frag":"\nprecision highp float;\nvec4 CCSampleWithAlphaSeparated(sampler2D tex, vec2 uv) {\n#if CC_USE_EMBEDDED_ALPHA\n return vec4(texture2D(tex, uv).rgb, texture2D(tex, uv + vec2(0.0, 0.5)).r);\n#else\n return texture2D(tex, uv);\n#endif\n}\n#if USE_ALPHA_TEST\n uniform float alphaThreshold;\n#endif\nvoid ALPHA_TEST (in vec4 color) {\n #if USE_ALPHA_TEST\n if (color.a < alphaThreshold) discard;\n #endif\n}\nvoid ALPHA_TEST (in float alpha) {\n #if USE_ALPHA_TEST\n if (alpha < alphaThreshold) discard;\n #endif\n}\nvarying vec4 color;\n#if USE_TEXTURE\n varying vec2 uv0;\n uniform sampler2D cc_spriteTexture;\n#endif\nvec4 frag () {\n vec4 o = vec4(1, 1, 1, 1);\n #if USE_TEXTURE\n o *= CCSampleWithAlphaSeparated(cc_spriteTexture, uv0);\n #if IS_GRAY\n float gray = 0.2126 * o.r + 0.7152 * o.g + 0.0722 * o.b;\n o.r = o.g = o.b = gray;\n #endif\n #endif\n o *= color;\n ALPHA_TEST(o);\n return o;\n}\nvoid main() { gl_FragColor = frag(); }"},"builtins":{"globals":{"blocks":[{"name":"CCGlobal","defines":[]},{"name":"CCCamera","defines":[]}],"samplerTextures":[],"buffers":[],"images":[]},"locals":{"blocks":[{"name":"CCLocal","defines":["USE_LOCAL"]}],"samplerTextures":[{"name":"cc_spriteTexture","defines":["USE_TEXTURE"]}],"buffers":[],"images":[]},"statistics":{"CC_EFFECT_USED_VERTEX_UNIFORM_VECTORS":56,"CC_EFFECT_USED_FRAGMENT_UNIFORM_VECTORS":1}},"defines":[{"name":"USE_LOCAL","type":"boolean"},{"name":"SAMPLE_FROM_RT","type":"boolean"},{"name":"USE_PIXEL_ALIGNMENT","type":"boolean"},{"name":"CC_USE_EMBEDDED_ALPHA","type":"boolean"},{"name":"USE_ALPHA_TEST","type":"boolean"},{"name":"USE_TEXTURE","type":"boolean"},{"name":"IS_GRAY","type":"boolean"}]}],[{"passes":[{"program":"for2d/builtin-sprite|sprite-vs:vert|sprite-fs:frag","blendState":{"targets":[{"blend":true,"blendSrc":2,"blendDst":4,"blendDstAlpha":4}]},"rasterizerState":{"cullMode":0},"depthStencilState":{"depthTest":false,"depthWrite":false},"properties":{"alphaThreshold":{"type":13,"value":[0.5]}}}]}]]],0,0,[],[],[]] diff --git a/headless/static/assets/internal/import/81/810e96e4-e456-4468-9b59-f4e8f39732c0.json b/headless/static/assets/internal/import/81/810e96e4-e456-4468-9b59-f4e8f39732c0.json new file mode 100644 index 00000000..c903df1d --- /dev/null +++ b/headless/static/assets/internal/import/81/810e96e4-e456-4468-9b59-f4e8f39732c0.json @@ -0,0 +1 @@ +[1,0,0,[["cc.EffectAsset",["_name","combinations","shaders","techniques"],-1]],[[0,0,1,2,3,5]],[[0,"internal/builtin-clear-stencil",[{}],[{"hash":3507038093,"name":"internal/builtin-clear-stencil|sprite-vs:vert|sprite-fs:frag","blocks":[],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[],"attributes":[{"name":"a_position","format":32,"location":0,"defines":[]}],"fragColors":[{"name":"cc_FragColor","typename":"vec4","type":16,"count":1,"stageFlags":16,"location":0,"defines":[]}],"descriptors":[{"rate":0,"blocks":[],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":1,"blocks":[],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":2,"blocks":[],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":3,"blocks":[],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]}],"glsl3":{"vert":"\nprecision highp float;\nin vec3 a_position;\nvec4 vert () {\n vec4 pos = vec4(a_position, 1);\n return pos;\n}\nvoid main() { gl_Position = vert(); }","frag":"\nprecision highp float;\nvec4 frag () {\n vec4 o = vec4(1.0);\n return o;\n}\nlayout(location = 0) out vec4 cc_FragColor;\nvoid main() { cc_FragColor = frag(); }"},"glsl1":{"vert":"\nprecision highp float;\nattribute vec3 a_position;\nvec4 vert () {\n vec4 pos = vec4(a_position, 1);\n return pos;\n}\nvoid main() { gl_Position = vert(); }","frag":"\nprecision highp float;\nvec4 frag () {\n vec4 o = vec4(1.0);\n return o;\n}\nvoid main() { gl_FragColor = frag(); }"},"builtins":{"globals":{"blocks":[],"samplerTextures":[],"buffers":[],"images":[]},"locals":{"blocks":[],"samplerTextures":[],"buffers":[],"images":[]},"statistics":{"CC_EFFECT_USED_VERTEX_UNIFORM_VECTORS":0,"CC_EFFECT_USED_FRAGMENT_UNIFORM_VECTORS":0}},"defines":[]}],[{"passes":[{"program":"internal/builtin-clear-stencil|sprite-vs:vert|sprite-fs:frag","blendState":{"targets":[{"blend":true}]},"rasterizerState":{"cullMode":0},"depthStencilState":{"depthTest":false,"depthWrite":false}}]}]]],0,0,[],[],[]] diff --git a/headless/static/assets/internal/import/87/871c3b6c-7379-419d-bda3-794b239ab90d.json b/headless/static/assets/internal/import/87/871c3b6c-7379-419d-bda3-794b239ab90d.json new file mode 100644 index 00000000..30f903ac --- /dev/null +++ b/headless/static/assets/internal/import/87/871c3b6c-7379-419d-bda3-794b239ab90d.json @@ -0,0 +1 @@ +[1,0,0,[["cc.EffectAsset",["_name","shaders","techniques"],0]],[[0,0,1,2,4]],[[0,"util/profiler",[{"hash":394204838,"name":"util/profiler|profiler-vs:vert|profiler-fs:frag","blocks":[{"name":"Constants","stageFlags":1,"binding":0,"members":[{"name":"offset","type":16,"count":1}],"defines":[]},{"name":"PerFrameInfo","stageFlags":1,"binding":1,"members":[{"name":"digits","type":16,"count":22}],"defines":[]}],"samplerTextures":[{"name":"mainTexture","type":28,"count":1,"stageFlags":16,"binding":2,"defines":[]}],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[],"attributes":[{"name":"a_position","format":32,"location":0,"defines":[]},{"name":"a_color","format":44,"location":1,"defines":[]}],"fragColors":[{"name":"cc_FragColor","typename":"vec4","type":16,"count":1,"stageFlags":16,"location":0,"defines":[]}],"descriptors":[{"rate":0,"blocks":[],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":1,"blocks":[{"name":"Constants","stageFlags":1,"binding":0,"members":[{"name":"offset","type":16,"count":1}],"defines":[]},{"name":"PerFrameInfo","stageFlags":1,"binding":1,"members":[{"name":"digits","type":16,"count":22}],"defines":[]}],"samplerTextures":[{"name":"mainTexture","type":28,"count":1,"stageFlags":16,"binding":2,"defines":[]}],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":2,"blocks":[],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":3,"blocks":[{"name":"CCGlobal","stageFlags":17,"tags":{"builtin":"global"},"members":[{"name":"cc_time","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_screenSize","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_nativeSize","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_probeInfo","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_debug_view_mode","typename":"vec4","type":16,"count":1,"precision":"mediump "}],"defines":[]},{"name":"CCCamera","stageFlags":17,"tags":{"builtin":"global"},"members":[{"name":"cc_matView","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matViewInv","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matProj","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matProjInv","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matViewProj","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matViewProjInv","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_cameraPos","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_surfaceTransform","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_screenScale","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_exposure","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_mainLitDir","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_mainLitColor","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_ambientSky","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_ambientGround","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_fogColor","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_fogBase","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_fogAdd","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_nearFar","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_viewPort","typename":"vec4","type":16,"count":1,"precision":"mediump "}],"defines":[]}],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]}],"glsl3":{"vert":"\nprecision mediump float;\nlayout(std140) uniform CCGlobal {\n highp vec4 cc_time;\n mediump vec4 cc_screenSize;\n mediump vec4 cc_nativeSize;\n mediump vec4 cc_probeInfo;\n mediump vec4 cc_debug_view_mode;\n};\nlayout(std140) uniform CCCamera {\n highp mat4 cc_matView;\n highp mat4 cc_matViewInv;\n highp mat4 cc_matProj;\n highp mat4 cc_matProjInv;\n highp mat4 cc_matViewProj;\n highp mat4 cc_matViewProjInv;\n highp vec4 cc_cameraPos;\n mediump vec4 cc_surfaceTransform;\n mediump vec4 cc_screenScale;\n mediump vec4 cc_exposure;\n mediump vec4 cc_mainLitDir;\n mediump vec4 cc_mainLitColor;\n mediump vec4 cc_ambientSky;\n mediump vec4 cc_ambientGround;\n mediump vec4 cc_fogColor;\n mediump vec4 cc_fogBase;\n mediump vec4 cc_fogAdd;\n mediump vec4 cc_nearFar;\n mediump vec4 cc_viewPort;\n};\nin vec3 a_position;\nin vec4 a_color;\nout vec2 v_uv;\nlayout(std140) uniform Constants {\n vec4 offset;\n};\nlayout(std140) uniform PerFrameInfo {\n vec4 digits[8 * 11 / 4];\n};\nfloat getComponent(vec4 v, float i) {\n if (i < 1.0) { return v.x; }\n else if (i < 2.0) { return v.y; }\n else if (i < 3.0) { return v.z; }\n else { return v.w; }\n}\nvec4 vert () {\n mat2 proj = mat2(cc_matProj[0].xy, cc_matProj[1].xy);\n proj /= abs(proj[1].x + proj[1].y);\n vec2 position = proj * a_position.xy + offset.xy;\n v_uv = a_color.xy;\n if (a_color.z >= 0.0) {\n float n = getComponent(digits[int(a_color.z)], a_color.w);\n v_uv += vec2(offset.z * n, 0.0);\n }\n return vec4(position, 0.0, 1.0);\n}\nvoid main() { gl_Position = vert(); }","frag":"\nprecision mediump float;\nlayout(std140) uniform CCGlobal {\n highp vec4 cc_time;\n mediump vec4 cc_screenSize;\n mediump vec4 cc_nativeSize;\n mediump vec4 cc_probeInfo;\n mediump vec4 cc_debug_view_mode;\n};\nlayout(std140) uniform CCCamera {\n highp mat4 cc_matView;\n highp mat4 cc_matViewInv;\n highp mat4 cc_matProj;\n highp mat4 cc_matProjInv;\n highp mat4 cc_matViewProj;\n highp mat4 cc_matViewProjInv;\n highp vec4 cc_cameraPos;\n mediump vec4 cc_surfaceTransform;\n mediump vec4 cc_screenScale;\n mediump vec4 cc_exposure;\n mediump vec4 cc_mainLitDir;\n mediump vec4 cc_mainLitColor;\n mediump vec4 cc_ambientSky;\n mediump vec4 cc_ambientGround;\n mediump vec4 cc_fogColor;\n mediump vec4 cc_fogBase;\n mediump vec4 cc_fogAdd;\n mediump vec4 cc_nearFar;\n mediump vec4 cc_viewPort;\n};\nvec4 CCFragOutput (vec4 color) {\n return color;\n}\nin vec2 v_uv;\nuniform sampler2D mainTexture;\nvec4 frag () {\n return CCFragOutput(texture(mainTexture, v_uv));\n}\nlayout(location = 0) out vec4 cc_FragColor;\nvoid main() { cc_FragColor = frag(); }"},"glsl1":{"vert":"\nprecision mediump float;\nuniform highp mat4 cc_matProj;\nattribute vec3 a_position;\nattribute vec4 a_color;\nvarying vec2 v_uv;\n uniform vec4 offset;\n uniform vec4 digits[22];\nfloat getComponent(vec4 v, float i) {\n if (i < 1.0) { return v.x; }\n else if (i < 2.0) { return v.y; }\n else if (i < 3.0) { return v.z; }\n else { return v.w; }\n}\nvec4 vert () {\n mat2 proj = mat2(cc_matProj[0].xy, cc_matProj[1].xy);\n proj /= abs(proj[1].x + proj[1].y);\n vec2 position = proj * a_position.xy + offset.xy;\n v_uv = a_color.xy;\n if (a_color.z >= 0.0) {\n float n = getComponent(digits[int(a_color.z)], a_color.w);\n v_uv += vec2(offset.z * n, 0.0);\n }\n return vec4(position, 0.0, 1.0);\n}\nvoid main() { gl_Position = vert(); }","frag":"\nprecision mediump float;\nvec4 CCFragOutput (vec4 color) {\n return color;\n}\nvarying vec2 v_uv;\nuniform sampler2D mainTexture;\nvec4 frag () {\n return CCFragOutput(texture2D(mainTexture, v_uv));\n}\nvoid main() { gl_FragColor = frag(); }"},"builtins":{"globals":{"blocks":[{"name":"CCGlobal","defines":[]},{"name":"CCCamera","defines":[]}],"samplerTextures":[],"buffers":[],"images":[]},"locals":{"blocks":[],"samplerTextures":[],"buffers":[],"images":[]},"statistics":{"CC_EFFECT_USED_VERTEX_UNIFORM_VECTORS":65,"CC_EFFECT_USED_FRAGMENT_UNIFORM_VECTORS":42}},"defines":[]}],[{"passes":[{"program":"util/profiler|profiler-vs:vert|profiler-fs:frag","priority":255,"blendState":{"targets":[{"blend":true,"blendSrc":2,"blendDst":4,"blendDstAlpha":4}]},"rasterizerState":{"cullMode":0},"depthStencilState":{"depthTest":false,"depthWrite":false}}]}]]],0,0,[],[],[]] diff --git a/headless/static/assets/internal/import/8b/8bbdbcdd-5cd4-4100-b6d5-b7c9625b6107.json b/headless/static/assets/internal/import/8b/8bbdbcdd-5cd4-4100-b6d5-b7c9625b6107.json new file mode 100644 index 00000000..d62f2fd1 --- /dev/null +++ b/headless/static/assets/internal/import/8b/8bbdbcdd-5cd4-4100-b6d5-b7c9625b6107.json @@ -0,0 +1 @@ +[1,["810e96e4-e456-4468-9b59-f4e8f39732c0"],["_effectAsset"],[["cc.Material",["_name","_props","_states","_defines"],-1]],[[0,0,1,2,3,5]],[[0,"default-clear-stencil",[{}],[{"rasterizerState":{},"depthStencilState":{},"blendState":{"targets":[{}]}}],[{"USE_TEXTURE":false}]]],0,0,[0],[0],[0]] diff --git a/headless/static/assets/internal/import/97/970b0598-bcb0-4714-91fb-2e81440dccd8.json b/headless/static/assets/internal/import/97/970b0598-bcb0-4714-91fb-2e81440dccd8.json new file mode 100644 index 00000000..4cb6da40 --- /dev/null +++ b/headless/static/assets/internal/import/97/970b0598-bcb0-4714-91fb-2e81440dccd8.json @@ -0,0 +1 @@ +[1,0,0,[["cc.EffectAsset",["_name","shaders","techniques"],0]],[[0,0,1,2,4]],[[0,"util/splash-screen",[{"hash":3189094080,"name":"util/splash-screen|splash-screen-vs:vert|splash-screen-fs:frag","blocks":[{"name":"Constant","stageFlags":1,"binding":0,"members":[{"name":"u_buffer0","type":16,"count":1},{"name":"u_buffer1","type":16,"count":1},{"name":"u_projection","type":25,"count":1}],"defines":[]},{"name":"Factor","stageFlags":16,"binding":1,"members":[{"name":"u_percent","type":13,"count":1}],"defines":[]}],"samplerTextures":[{"name":"mainTexture","type":28,"count":1,"stageFlags":16,"binding":2,"defines":[]}],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[],"attributes":[{"name":"a_position","format":21,"location":0,"defines":[]},{"name":"a_texCoord","format":21,"location":1,"defines":[]}],"fragColors":[{"name":"cc_FragColor","typename":"vec4","type":16,"count":1,"stageFlags":16,"location":0,"defines":[]}],"descriptors":[{"rate":0,"blocks":[],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":1,"blocks":[{"name":"Constant","stageFlags":1,"binding":0,"members":[{"name":"u_buffer0","type":16,"count":1},{"name":"u_buffer1","type":16,"count":1},{"name":"u_projection","type":25,"count":1}],"defines":[]},{"name":"Factor","stageFlags":16,"binding":1,"members":[{"name":"u_percent","type":13,"count":1}],"defines":[]}],"samplerTextures":[{"name":"mainTexture","type":28,"count":1,"stageFlags":16,"binding":2,"defines":[]}],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":2,"blocks":[],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":3,"blocks":[],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]}],"glsl3":{"vert":"\nprecision mediump float;\nin vec2 a_position;\nin vec2 a_texCoord;\nout vec2 v_uv;\nlayout(std140) uniform Constant {\n vec4 u_buffer0;\n vec4 u_buffer1;\n mat4 u_projection;\n};\nvec4 vert () {\n vec2 worldPos = a_position * u_buffer1.xy + u_buffer1.zw;\n vec2 clipSpace = worldPos / u_buffer0.xy * 2.0 - 1.0;\n vec4 screenPos = u_projection * vec4(clipSpace, 0.0, 1.0);\n v_uv = a_texCoord;\n return screenPos;\n}\nvoid main() { gl_Position = vert(); }","frag":"\nprecision mediump float;\nin vec2 v_uv;\nlayout(std140) uniform Factor {\n float u_percent;\n};\nuniform sampler2D mainTexture;\nvec4 frag () {\n vec4 color = texture(mainTexture, v_uv);\n float percent = clamp(u_percent, 0.0, 1.0);\n color.xyz *= percent;\n return color;\n}\nlayout(location = 0) out vec4 cc_FragColor;\nvoid main() { cc_FragColor = frag(); }"},"glsl1":{"vert":"\nprecision mediump float;\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\nvarying vec2 v_uv;\n uniform vec4 u_buffer0;\n uniform vec4 u_buffer1;\n uniform mat4 u_projection;\nvec4 vert () {\n vec2 worldPos = a_position * u_buffer1.xy + u_buffer1.zw;\n vec2 clipSpace = worldPos / u_buffer0.xy * 2.0 - 1.0;\n vec4 screenPos = u_projection * vec4(clipSpace, 0.0, 1.0);\n v_uv = a_texCoord;\n return screenPos;\n}\nvoid main() { gl_Position = vert(); }","frag":"\nprecision mediump float;\nvarying vec2 v_uv;\n uniform float u_percent;\nuniform sampler2D mainTexture;\nvec4 frag () {\n vec4 color = texture2D(mainTexture, v_uv);\n float percent = clamp(u_percent, 0.0, 1.0);\n color.xyz *= percent;\n return color;\n}\nvoid main() { gl_FragColor = frag(); }"},"builtins":{"globals":{"blocks":[],"samplerTextures":[],"buffers":[],"images":[]},"locals":{"blocks":[],"samplerTextures":[],"buffers":[],"images":[]},"statistics":{"CC_EFFECT_USED_VERTEX_UNIFORM_VECTORS":6,"CC_EFFECT_USED_FRAGMENT_UNIFORM_VECTORS":1}},"defines":[]}],[{"name":"default","passes":[{"program":"util/splash-screen|splash-screen-vs:vert|splash-screen-fs:frag","blendState":{"targets":[{"blend":true,"blendSrc":2,"blendDst":4,"blendDstAlpha":4}]},"rasterizerState":{"cullMode":0},"depthStencilState":{"depthTest":false,"depthWrite":false},"properties":{"mainTexture":{"value":"grey","type":28},"resolution":{"type":14,"value":[640,960],"handleInfo":["u_buffer0",0,14]},"percent":{"type":13,"value":[0.5],"handleInfo":["u_percent",0,13]},"scale":{"type":14,"value":[200,500],"handleInfo":["u_buffer1",0,14]},"translate":{"type":14,"value":[320,480],"handleInfo":["u_buffer1",2,14]},"u_buffer0":{"type":16,"value":[640,960,0,0]},"u_percent":{"type":13,"value":[0.5]},"u_buffer1":{"type":16,"value":[200,500,320,480]}}}]}]]],0,0,[],[],[]] diff --git a/headless/static/assets/internal/import/a3/a3cd009f-0ab0-420d-9278-b9fdab939bbc.json b/headless/static/assets/internal/import/a3/a3cd009f-0ab0-420d-9278-b9fdab939bbc.json new file mode 100644 index 00000000..4c840944 --- /dev/null +++ b/headless/static/assets/internal/import/a3/a3cd009f-0ab0-420d-9278-b9fdab939bbc.json @@ -0,0 +1 @@ +[1,0,0,[["cc.EffectAsset",["_name","shaders","techniques"],0]],[[0,0,1,2,4]],[[0,"builtin-unlit",[{"hash":340555192,"name":"builtin-unlit|unlit-vs:vert|unlit-fs:frag","blocks":[{"name":"TexCoords","stageFlags":1,"binding":0,"members":[{"name":"tilingOffset","type":16,"count":1}],"defines":["USE_TEXTURE"]},{"name":"Constant","stageFlags":16,"binding":1,"members":[{"name":"mainColor","type":16,"count":1},{"name":"colorScaleAndCutoff","type":16,"count":1}],"defines":[]}],"samplerTextures":[{"name":"mainTexture","type":28,"count":1,"stageFlags":16,"binding":2,"defines":["USE_TEXTURE"]}],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[],"attributes":[{"name":"a_position","format":32,"location":0,"defines":[]},{"name":"a_normal","format":32,"location":1,"defines":[]},{"name":"a_texCoord","format":21,"location":2,"defines":[]},{"name":"a_tangent","format":44,"location":3,"defines":[]},{"name":"a_joints","location":4,"defines":["CC_USE_SKINNING"]},{"name":"a_weights","format":44,"location":5,"defines":["CC_USE_SKINNING"]},{"name":"a_jointAnimInfo","format":44,"isInstanced":true,"location":6,"defines":["USE_INSTANCING","CC_USE_BAKED_ANIMATION"]},{"name":"a_matWorld0","format":44,"isInstanced":true,"location":7,"defines":["USE_INSTANCING"]},{"name":"a_matWorld1","format":44,"isInstanced":true,"location":8,"defines":["USE_INSTANCING"]},{"name":"a_matWorld2","format":44,"isInstanced":true,"location":9,"defines":["USE_INSTANCING"]},{"name":"a_lightingMapUVParam","format":44,"isInstanced":true,"location":10,"defines":["USE_INSTANCING","CC_USE_LIGHTMAP"]},{"name":"a_localShadowBiasAndProbeId","format":44,"isInstanced":true,"location":11,"defines":["USE_INSTANCING"]},{"name":"a_reflectionProbeData","format":44,"isInstanced":true,"location":12,"defines":["USE_INSTANCING","CC_USE_REFLECTION_PROBE"]},{"name":"a_sh_linear_const_r","format":44,"isInstanced":true,"location":13,"defines":["USE_INSTANCING","CC_USE_LIGHT_PROBE"]},{"name":"a_sh_linear_const_g","format":44,"isInstanced":true,"location":14,"defines":["USE_INSTANCING","CC_USE_LIGHT_PROBE"]},{"name":"a_sh_linear_const_b","format":44,"isInstanced":true,"location":15,"defines":["USE_INSTANCING","CC_USE_LIGHT_PROBE"]},{"name":"a_vertexId","format":11,"location":16,"defines":["CC_USE_MORPH"]},{"name":"a_color","format":44,"location":17,"defines":["USE_VERTEX_COLOR"]}],"fragColors":[{"name":"cc_FragColor","typename":"vec4","type":16,"count":1,"stageFlags":16,"location":0,"defines":[]}],"descriptors":[{"rate":0,"blocks":[{"name":"CCMorph","stageFlags":1,"tags":{"builtin":"local"},"members":[{"name":"cc_displacementWeights","typename":"vec4","type":16,"count":15,"isArray":true},{"name":"cc_displacementTextureInfo","typename":"vec4","type":16,"count":1}],"defines":["CC_USE_MORPH"]},{"name":"CCSkinningTexture","stageFlags":1,"tags":{"builtin":"local"},"members":[{"name":"cc_jointTextureInfo","typename":"vec4","type":16,"count":1,"precision":"highp "}],"defines":["CC_USE_SKINNING","CC_USE_BAKED_ANIMATION"]},{"name":"CCSkinningAnimation","stageFlags":1,"tags":{"builtin":"local"},"members":[{"name":"cc_jointAnimInfo","typename":"vec4","type":16,"count":1,"precision":"highp "}],"defines":["CC_USE_SKINNING","CC_USE_BAKED_ANIMATION"]},{"name":"CCSkinning","stageFlags":1,"tags":{"builtin":"local"},"members":[{"name":"cc_joints","typename":"vec4","type":16,"count":0,"precision":"highp ","isArray":true}],"defines":["CC_USE_SKINNING","!CC_USE_BAKED_ANIMATION","!CC_USE_REAL_TIME_JOINT_TEXTURE"]},{"name":"CCLocal","stageFlags":1,"tags":{"builtin":"local"},"members":[{"name":"cc_matWorld","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matWorldIT","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_lightingMapUVParam","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_localShadowBias","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_reflectionProbeData1","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_reflectionProbeData2","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_reflectionProbeBlendData1","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_reflectionProbeBlendData2","typename":"vec4","type":16,"count":1,"precision":"highp "}],"defines":["!USE_INSTANCING"]}],"samplerTextures":[{"name":"cc_PositionDisplacements","typename":"sampler2D","type":28,"count":1,"stageFlags":1,"tags":{"builtin":"local"},"defines":["CC_USE_MORPH","CC_MORPH_TARGET_HAS_POSITION"]},{"name":"cc_NormalDisplacements","typename":"sampler2D","type":28,"count":1,"stageFlags":1,"tags":{"builtin":"local"},"defines":["CC_USE_MORPH","CC_MORPH_TARGET_HAS_NORMAL"]},{"name":"cc_TangentDisplacements","typename":"sampler2D","type":28,"count":1,"stageFlags":1,"tags":{"builtin":"local"},"defines":["CC_USE_MORPH","CC_MORPH_TARGET_HAS_TANGENT"]},{"name":"cc_jointTexture","typename":"sampler2D","type":28,"count":1,"precision":"highp ","stageFlags":1,"tags":{"builtin":"local"},"defines":["CC_USE_SKINNING","CC_USE_BAKED_ANIMATION"]},{"name":"cc_realtimeJoint","typename":"sampler2D","type":28,"count":1,"precision":"highp ","stageFlags":1,"tags":{"builtin":"local"},"defines":["CC_USE_SKINNING","!CC_USE_BAKED_ANIMATION","CC_USE_REAL_TIME_JOINT_TEXTURE"]}],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":1,"blocks":[{"name":"TexCoords","stageFlags":1,"binding":0,"members":[{"name":"tilingOffset","type":16,"count":1}],"defines":["USE_TEXTURE"]},{"name":"Constant","stageFlags":16,"binding":1,"members":[{"name":"mainColor","type":16,"count":1},{"name":"colorScaleAndCutoff","type":16,"count":1}],"defines":[]}],"samplerTextures":[{"name":"mainTexture","type":28,"count":1,"stageFlags":16,"binding":2,"defines":["USE_TEXTURE"]}],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":2,"blocks":[],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":3,"blocks":[{"name":"CCGlobal","stageFlags":17,"tags":{"builtin":"global"},"members":[{"name":"cc_time","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_screenSize","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_nativeSize","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_probeInfo","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_debug_view_mode","typename":"vec4","type":16,"count":1,"precision":"mediump "}],"defines":[]},{"name":"CCCamera","stageFlags":17,"tags":{"builtin":"global"},"members":[{"name":"cc_matView","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matViewInv","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matProj","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matProjInv","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matViewProj","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matViewProjInv","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_cameraPos","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_surfaceTransform","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_screenScale","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_exposure","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_mainLitDir","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_mainLitColor","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_ambientSky","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_ambientGround","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_fogColor","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_fogBase","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_fogAdd","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_nearFar","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_viewPort","typename":"vec4","type":16,"count":1,"precision":"mediump "}],"defines":[]}],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]}],"glsl3":{"vert":"\nprecision highp float;\n#define QUATER_PI 0.78539816340\n#define HALF_PI 1.57079632679\n#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI4 12.5663706144\n#define INV_QUATER_PI 1.27323954474\n#define INV_HALF_PI 0.63661977237\n#define INV_PI 0.31830988618\n#define INV_PI2 0.15915494309\n#define INV_PI4 0.07957747155\n#define EPSILON 1e-6\n#define EPSILON_LOWP 1e-4\n#define LOG2 1.442695\n#define EXP_VALUE 2.71828183\n#define FP_MAX 65504.0\n#define FP_SCALE 0.0009765625\n#define FP_SCALE_INV 1024.0\n#define GRAY_VECTOR vec3(0.299, 0.587, 0.114)\n#define LIGHT_MAP_TYPE_DISABLED 0\n#define LIGHT_MAP_TYPE_ALL_IN_ONE 1\n#define LIGHT_MAP_TYPE_INDIRECT_OCCLUSION 2\n#define REFLECTION_PROBE_TYPE_NONE 0\n#define REFLECTION_PROBE_TYPE_CUBE 1\n#define REFLECTION_PROBE_TYPE_PLANAR 2\n#define REFLECTION_PROBE_TYPE_BLEND 3\n#define REFLECTION_PROBE_TYPE_BLEND_AND_SKYBOX 4\n#define LIGHT_TYPE_DIRECTIONAL 0.0\n#define LIGHT_TYPE_SPHERE 1.0\n#define LIGHT_TYPE_SPOT 2.0\n#define LIGHT_TYPE_POINT 3.0\n#define LIGHT_TYPE_RANGED_DIRECTIONAL 4.0\n#define IS_DIRECTIONAL_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_DIRECTIONAL)) < EPSILON_LOWP)\n#define IS_SPHERE_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_SPHERE)) < EPSILON_LOWP)\n#define IS_SPOT_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_SPOT)) < EPSILON_LOWP)\n#define IS_POINT_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_POINT)) < EPSILON_LOWP)\n#define IS_RANGED_DIRECTIONAL_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_RANGED_DIRECTIONAL)) < EPSILON_LOWP)\n#define TONE_MAPPING_ACES 0\n#define TONE_MAPPING_LINEAR 1\n#define SURFACES_MAX_TRANSMIT_DEPTH_VALUE 999999.0\n#ifndef CC_SURFACES_DEBUG_VIEW_SINGLE\n #define CC_SURFACES_DEBUG_VIEW_SINGLE 1\n#endif\n#ifndef CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC\n #define CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC 2\n#endif\nstruct StandardVertInput {\n highp vec4 position;\n vec3 normal;\n vec4 tangent;\n};\nin vec3 a_position;\nin vec3 a_normal;\nin vec2 a_texCoord;\nin vec4 a_tangent;\n#if CC_USE_SKINNING\n in vec4 a_joints;\n in vec4 a_weights;\n#endif\n#if USE_INSTANCING\n #if CC_USE_BAKED_ANIMATION\n in highp vec4 a_jointAnimInfo;\n #endif\n in vec4 a_matWorld0;\n in vec4 a_matWorld1;\n in vec4 a_matWorld2;\n #if CC_USE_LIGHTMAP\n in vec4 a_lightingMapUVParam;\n #endif\n #if CC_USE_REFLECTION_PROBE || CC_RECEIVE_SHADOW\n #if CC_RECEIVE_SHADOW\n #endif\n in vec4 a_localShadowBiasAndProbeId;\n #endif\n #if CC_USE_REFLECTION_PROBE\n in vec4 a_reflectionProbeData;\n #endif\n #if CC_USE_LIGHT_PROBE\n in vec4 a_sh_linear_const_r;\n in vec4 a_sh_linear_const_g;\n in vec4 a_sh_linear_const_b;\n #endif\n#endif\n#if CC_USE_MORPH\n in float a_vertexId;\n int getVertexId() {\n return int(a_vertexId);\n }\n#endif\nhighp float decode32 (highp vec4 rgba) {\n rgba = rgba * 255.0;\n highp float Sign = 1.0 - (step(128.0, (rgba[3]) + 0.5)) * 2.0;\n highp float Exponent = 2.0 * (mod(float(int((rgba[3]) + 0.5)), 128.0)) + (step(128.0, (rgba[2]) + 0.5)) - 127.0;\n highp float Mantissa = (mod(float(int((rgba[2]) + 0.5)), 128.0)) * 65536.0 + rgba[1] * 256.0 + rgba[0] + 8388608.0;\n return Sign * exp2(Exponent - 23.0) * Mantissa;\n}\n#if CC_USE_MORPH\n layout(std140) uniform CCMorph {\n vec4 cc_displacementWeights[15];\n vec4 cc_displacementTextureInfo;\n };\n #if CC_MORPH_TARGET_HAS_POSITION\n uniform sampler2D cc_PositionDisplacements;\n #endif\n #if CC_MORPH_TARGET_HAS_NORMAL\n uniform sampler2D cc_NormalDisplacements;\n #endif\n #if CC_MORPH_TARGET_HAS_TANGENT\n uniform sampler2D cc_TangentDisplacements;\n #endif\n vec2 getPixelLocation(vec2 textureResolution, int pixelIndex) {\n float pixelIndexF = float(pixelIndex);\n float x = mod(pixelIndexF, textureResolution.x);\n float y = floor(pixelIndexF / textureResolution.x);\n return vec2(x, y);\n }\n vec2 getPixelCoordFromLocation(vec2 location, vec2 textureResolution) {\n return (vec2(location.x, location.y) + .5) / textureResolution;\n }\n #if CC_DEVICE_SUPPORT_FLOAT_TEXTURE\n vec4 fetchVec3ArrayFromTexture(sampler2D tex, int pixelIndex) {\n ivec2 texSize = textureSize(tex, 0);\n return texelFetch(tex, ivec2(pixelIndex % texSize.x, pixelIndex / texSize.x), 0);\n }\n #else\n vec4 fetchVec3ArrayFromTexture(sampler2D tex, int elementIndex) {\n int pixelIndex = elementIndex * 4;\n vec2 location = getPixelLocation(cc_displacementTextureInfo.xy, pixelIndex);\n vec2 x = getPixelCoordFromLocation(location + vec2(0.0, 0.0), cc_displacementTextureInfo.xy);\n vec2 y = getPixelCoordFromLocation(location + vec2(1.0, 0.0), cc_displacementTextureInfo.xy);\n vec2 z = getPixelCoordFromLocation(location + vec2(2.0, 0.0), cc_displacementTextureInfo.xy);\n return vec4(\n decode32(texture(tex, x)),\n decode32(texture(tex, y)),\n decode32(texture(tex, z)),\n 1.0\n );\n }\n #endif\n float getDisplacementWeight(int index) {\n int quot = index / 4;\n int remainder = index - quot * 4;\n if (remainder == 0) {\n return cc_displacementWeights[quot].x;\n } else if (remainder == 1) {\n return cc_displacementWeights[quot].y;\n } else if (remainder == 2) {\n return cc_displacementWeights[quot].z;\n } else {\n return cc_displacementWeights[quot].w;\n }\n }\n vec3 getVec3DisplacementFromTexture(sampler2D tex, int vertexIndex) {\n #if CC_MORPH_PRECOMPUTED\n return fetchVec3ArrayFromTexture(tex, vertexIndex).rgb;\n #else\n vec3 result = vec3(0, 0, 0);\n int nVertices = int(cc_displacementTextureInfo.z);\n for (int iTarget = 0; iTarget < CC_MORPH_TARGET_COUNT; ++iTarget) {\n result += (fetchVec3ArrayFromTexture(tex, nVertices * iTarget + vertexIndex).rgb * getDisplacementWeight(iTarget));\n }\n return result;\n #endif\n }\n #if CC_MORPH_TARGET_HAS_POSITION\n vec3 getPositionDisplacement(int vertexId) {\n return getVec3DisplacementFromTexture(cc_PositionDisplacements, vertexId);\n }\n #endif\n #if CC_MORPH_TARGET_HAS_NORMAL\n vec3 getNormalDisplacement(int vertexId) {\n return getVec3DisplacementFromTexture(cc_NormalDisplacements, vertexId);\n }\n #endif\n #if CC_MORPH_TARGET_HAS_TANGENT\n vec3 getTangentDisplacement(int vertexId) {\n return getVec3DisplacementFromTexture(cc_TangentDisplacements, vertexId);\n }\n #endif\n void applyMorph (inout vec4 position, inout vec3 normal, inout vec4 tangent) {\n int vertexId = getVertexId();\n #if CC_MORPH_TARGET_HAS_POSITION\n position.xyz = position.xyz + getPositionDisplacement(vertexId);\n #endif\n #if CC_MORPH_TARGET_HAS_NORMAL\n normal.xyz = normal.xyz + getNormalDisplacement(vertexId);\n #endif\n #if CC_MORPH_TARGET_HAS_TANGENT\n tangent.xyz = tangent.xyz + getTangentDisplacement(vertexId);\n #endif\n }\n void applyMorph (inout vec4 position) {\n #if CC_MORPH_TARGET_HAS_POSITION\n position.xyz = position.xyz + getPositionDisplacement(getVertexId());\n #endif\n }\n#endif\n#if CC_USE_SKINNING\n #if CC_USE_BAKED_ANIMATION\n layout(std140) uniform CCSkinningTexture {\n highp vec4 cc_jointTextureInfo;\n };\n layout(std140) uniform CCSkinningAnimation {\n highp vec4 cc_jointAnimInfo;\n };\n uniform highp sampler2D cc_jointTexture;\n void CCGetJointTextureCoords(float pixelsPerJoint, float jointIdx, out highp float x, out highp float y, out highp float invSize)\n {\n #if USE_INSTANCING\n highp float temp = pixelsPerJoint * (a_jointAnimInfo.x * a_jointAnimInfo.y + jointIdx) + a_jointAnimInfo.z;\n #else\n highp float temp = pixelsPerJoint * (cc_jointAnimInfo.x * cc_jointTextureInfo.y + jointIdx) + cc_jointTextureInfo.z;\n #endif\n invSize = cc_jointTextureInfo.w;\n highp float tempY = floor(temp * invSize);\n x = floor(temp - tempY * cc_jointTextureInfo.x);\n y = (tempY + 0.5) * invSize;\n }\n #else\n #if CC_USE_REAL_TIME_JOINT_TEXTURE\n uniform highp sampler2D cc_realtimeJoint;\n #else\n layout(std140) uniform CCSkinning {\n highp vec4 cc_joints[CC_JOINT_UNIFORM_CAPACITY * 3];\n };\n #endif\n #endif\n #if CC_USE_BAKED_ANIMATION\n #if CC_DEVICE_SUPPORT_FLOAT_TEXTURE\n mat4 getJointMatrix (float i) {\n highp float x, y, invSize;\n CCGetJointTextureCoords(3.0, i, x, y, invSize);\n vec4 v1 = texture(cc_jointTexture, vec2((x + 0.5) * invSize, y));\n vec4 v2 = texture(cc_jointTexture, vec2((x + 1.5) * invSize, y));\n vec4 v3 = texture(cc_jointTexture, vec2((x + 2.5) * invSize, y));\n return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));\n }\n #else\n mat4 getJointMatrix (float i) {\n highp float x, y, invSize;\n CCGetJointTextureCoords(12.0, i, x, y, invSize);\n vec4 v1 = vec4(\n decode32(texture(cc_jointTexture, vec2((x + 0.5) * invSize, y))),\n decode32(texture(cc_jointTexture, vec2((x + 1.5) * invSize, y))),\n decode32(texture(cc_jointTexture, vec2((x + 2.5) * invSize, y))),\n decode32(texture(cc_jointTexture, vec2((x + 3.5) * invSize, y)))\n );\n vec4 v2 = vec4(\n decode32(texture(cc_jointTexture, vec2((x + 4.5) * invSize, y))),\n decode32(texture(cc_jointTexture, vec2((x + 5.5) * invSize, y))),\n decode32(texture(cc_jointTexture, vec2((x + 6.5) * invSize, y))),\n decode32(texture(cc_jointTexture, vec2((x + 7.5) * invSize, y)))\n );\n vec4 v3 = vec4(\n decode32(texture(cc_jointTexture, vec2((x + 8.5) * invSize, y))),\n decode32(texture(cc_jointTexture, vec2((x + 9.5) * invSize, y))),\n decode32(texture(cc_jointTexture, vec2((x + 10.5) * invSize, y))),\n decode32(texture(cc_jointTexture, vec2((x + 11.5) * invSize, y)))\n );\n return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));\n }\n #endif\n #else\n #if CC_USE_REAL_TIME_JOINT_TEXTURE\n #if CC_DEVICE_SUPPORT_FLOAT_TEXTURE\n mat4 getJointMatrix (float i) {\n float x = i;\n vec4 v1 = texture(cc_realtimeJoint, vec2( x / 256.0, 0.5 / 3.0));\n vec4 v2 = texture(cc_realtimeJoint, vec2( x / 256.0, 1.5 / 3.0));\n vec4 v3 = texture(cc_realtimeJoint, vec2( x / 256.0, 2.5 / 3.0));\n return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));\n }\n #else\n mat4 getJointMatrix (float i) {\n float x = 4.0 * i;\n vec4 v1 = vec4(\n decode32(texture(cc_realtimeJoint, vec2((x + 0.5)/ 1024.0, 0.5 / 3.0))),\n decode32(texture(cc_realtimeJoint, vec2((x + 1.5)/ 1024.0, 0.5 / 3.0))),\n decode32(texture(cc_realtimeJoint, vec2((x + 2.5)/ 1024.0, 0.5 / 3.0))),\n decode32(texture(cc_realtimeJoint, vec2((x + 3.5)/ 1024.0, 0.5 / 3.0)))\n );\n vec4 v2 = vec4(\n decode32(texture(cc_realtimeJoint, vec2((x + 0.5)/ 1024.0, 1.5 / 3.0))),\n decode32(texture(cc_realtimeJoint, vec2((x + 1.5)/ 1024.0, 1.5 / 3.0))),\n decode32(texture(cc_realtimeJoint, vec2((x + 2.5)/ 1024.0, 1.5 / 3.0))),\n decode32(texture(cc_realtimeJoint, vec2((x + 3.5)/ 1024.0, 1.5 / 3.0)))\n );\n vec4 v3 = vec4(\n decode32(texture(cc_realtimeJoint, vec2((x + 0.5)/ 1024.0, 2.5 / 3.0))),\n decode32(texture(cc_realtimeJoint, vec2((x + 1.5)/ 1024.0, 2.5 / 3.0))),\n decode32(texture(cc_realtimeJoint, vec2((x + 2.5)/ 1024.0, 2.5 / 3.0))),\n decode32(texture(cc_realtimeJoint, vec2((x + 3.5)/ 1024.0, 2.5 / 3.0)))\n );\n return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));\n }\n #endif\n #else\n mat4 getJointMatrix (float i) {\n int idx = int(i);\n vec4 v1 = cc_joints[idx * 3];\n vec4 v2 = cc_joints[idx * 3 + 1];\n vec4 v3 = cc_joints[idx * 3 + 2];\n return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));\n }\n #endif\n #endif\n mat4 skinMatrix () {\n vec4 joints = vec4(a_joints);\n return getJointMatrix(joints.x) * a_weights.x\n + getJointMatrix(joints.y) * a_weights.y\n + getJointMatrix(joints.z) * a_weights.z\n + getJointMatrix(joints.w) * a_weights.w;\n }\n void CCSkin (inout vec4 position) {\n mat4 m = skinMatrix();\n position = m * position;\n }\n void CCSkin (inout vec4 position, inout vec3 normal, inout vec4 tangent) {\n mat4 m = skinMatrix();\n position = m * position;\n normal = (m * vec4(normal, 0.0)).xyz;\n tangent.xyz = (m * vec4(tangent.xyz, 0.0)).xyz;\n }\n#endif\nvoid CCVertInput(inout vec4 In)\n{\n In = vec4(a_position, 1.0);\n #if CC_USE_MORPH\n applyMorph(In);\n #endif\n #if CC_USE_SKINNING\n CCSkin(In);\n #endif\n}\nlayout(std140) uniform CCGlobal {\n highp vec4 cc_time;\n mediump vec4 cc_screenSize;\n mediump vec4 cc_nativeSize;\n mediump vec4 cc_probeInfo;\n mediump vec4 cc_debug_view_mode;\n};\nlayout(std140) uniform CCCamera {\n highp mat4 cc_matView;\n highp mat4 cc_matViewInv;\n highp mat4 cc_matProj;\n highp mat4 cc_matProjInv;\n highp mat4 cc_matViewProj;\n highp mat4 cc_matViewProjInv;\n highp vec4 cc_cameraPos;\n mediump vec4 cc_surfaceTransform;\n mediump vec4 cc_screenScale;\n mediump vec4 cc_exposure;\n mediump vec4 cc_mainLitDir;\n mediump vec4 cc_mainLitColor;\n mediump vec4 cc_ambientSky;\n mediump vec4 cc_ambientGround;\n mediump vec4 cc_fogColor;\n mediump vec4 cc_fogBase;\n mediump vec4 cc_fogAdd;\n mediump vec4 cc_nearFar;\n mediump vec4 cc_viewPort;\n};\n#if !USE_INSTANCING\n layout(std140) uniform CCLocal {\n highp mat4 cc_matWorld;\n highp mat4 cc_matWorldIT;\n highp vec4 cc_lightingMapUVParam;\n highp vec4 cc_localShadowBias;\n highp vec4 cc_reflectionProbeData1;\n highp vec4 cc_reflectionProbeData2;\n highp vec4 cc_reflectionProbeBlendData1;\n highp vec4 cc_reflectionProbeBlendData2;\n };\n#endif\nvoid CCGetWorldMatrix(out mat4 matWorld)\n{\n #if USE_INSTANCING\n matWorld = mat4(\n vec4(a_matWorld0.xyz, 0.0),\n vec4(a_matWorld1.xyz, 0.0),\n vec4(a_matWorld2.xyz, 0.0),\n vec4(a_matWorld0.w, a_matWorld1.w, a_matWorld2.w, 1.0)\n );\n #else\n matWorld = cc_matWorld;\n #endif\n}\n#if CC_USE_FOG != 4\n float LinearFog(vec4 pos, vec3 cameraPos, float fogStart, float fogEnd) {\n vec4 wPos = pos;\n float cam_dis = distance(cameraPos, wPos.xyz);\n return clamp((fogEnd - cam_dis) / (fogEnd - fogStart), 0., 1.);\n }\n float ExpFog(vec4 pos, vec3 cameraPos, float fogStart, float fogDensity, float fogAtten) {\n vec4 wPos = pos;\n float cam_dis = max(distance(cameraPos, wPos.xyz) - fogStart, 0.0) / fogAtten * 4.;\n float f = exp(-cam_dis * fogDensity);\n return f;\n }\n float ExpSquaredFog(vec4 pos, vec3 cameraPos, float fogStart, float fogDensity, float fogAtten) {\n vec4 wPos = pos;\n float cam_dis = max(distance(cameraPos, wPos.xyz) - fogStart, 0.0) / fogAtten * 4.;\n float f = exp(-cam_dis * cam_dis * fogDensity * fogDensity);\n return f;\n }\n float LayeredFog(vec4 pos, vec3 cameraPos, float fogTop, float fogRange, float fogAtten) {\n vec4 wPos = pos;\n vec3 camWorldProj = cameraPos.xyz;\n camWorldProj.y = 0.;\n vec3 worldPosProj = wPos.xyz;\n worldPosProj.y = 0.;\n float fDeltaD = distance(worldPosProj, camWorldProj) / fogAtten * 2.0;\n float fDeltaY, fDensityIntegral;\n if (cameraPos.y > fogTop) {\n if (wPos.y < fogTop) {\n fDeltaY = (fogTop - wPos.y) / fogRange * 2.0;\n fDensityIntegral = fDeltaY * fDeltaY * 0.5;\n }\n else {\n fDeltaY = 0.;\n fDensityIntegral = 0.;\n }\n }\n else {\n if (wPos.y < fogTop) {\n float fDeltaA = (fogTop - cameraPos.y) / fogRange * 2.;\n float fDeltaB = (fogTop - wPos.y) / fogRange * 2.;\n fDeltaY = abs(fDeltaA - fDeltaB);\n fDensityIntegral = abs((fDeltaA * fDeltaA * 0.5) - (fDeltaB * fDeltaB * 0.5));\n }\n else {\n fDeltaY = abs(fogTop - cameraPos.y) / fogRange * 2.;\n fDensityIntegral = abs(fDeltaY * fDeltaY * 0.5);\n }\n }\n float fDensity;\n if (fDeltaY != 0.) {\n fDensity = (sqrt(1.0 + ((fDeltaD / fDeltaY) * (fDeltaD / fDeltaY)))) * fDensityIntegral;\n }\n else {\n fDensity = 0.;\n }\n float f = exp(-fDensity);\n return f;\n }\n#endif\nvoid CC_TRANSFER_FOG_BASE(vec4 pos, out float factor)\n{\n#if CC_USE_FOG == 0\n\tfactor = LinearFog(pos, cc_cameraPos.xyz, cc_fogBase.x, cc_fogBase.y);\n#elif CC_USE_FOG == 1\n\tfactor = ExpFog(pos, cc_cameraPos.xyz, cc_fogBase.x, cc_fogBase.z, cc_fogAdd.z);\n#elif CC_USE_FOG == 2\n\tfactor = ExpSquaredFog(pos, cc_cameraPos.xyz, cc_fogBase.x, cc_fogBase.z, cc_fogAdd.z);\n#elif CC_USE_FOG == 3\n\tfactor = LayeredFog(pos, cc_cameraPos.xyz, cc_fogAdd.x, cc_fogAdd.y, cc_fogAdd.z);\n#else\n\tfactor = 1.0;\n#endif\n}\n#if !CC_USE_ACCURATE_FOG\nout mediump float v_fog_factor;\n#endif\nvoid CC_TRANSFER_FOG(vec4 pos) {\n#if !CC_USE_ACCURATE_FOG\n CC_TRANSFER_FOG_BASE(pos, v_fog_factor);\n#endif\n}\n#if USE_VERTEX_COLOR\n in lowp vec4 a_color;\n out lowp vec4 v_color;\n#endif\n#if USE_TEXTURE\n out vec2 v_uv;\n layout(std140) uniform TexCoords {\n vec4 tilingOffset;\n };\n#endif\nvec4 vert () {\n vec4 position;\n CCVertInput(position);\n mat4 matWorld;\n CCGetWorldMatrix(matWorld);\n #if USE_TEXTURE\n v_uv = a_texCoord * tilingOffset.xy + tilingOffset.zw;\n #if SAMPLE_FROM_RT\n v_uv = cc_cameraPos.w > 1.0 ? vec2(v_uv.x, 1.0 - v_uv.y) : v_uv;\n #endif\n #endif\n #if USE_VERTEX_COLOR\n v_color = a_color;\n #endif\n CC_TRANSFER_FOG(matWorld * position);\n return cc_matProj * (cc_matView * matWorld) * position;\n}\nvoid main() { gl_Position = vert(); }","frag":"\nprecision highp float;\nvec3 ACESToneMap (vec3 color) {\n color = min(color, vec3(8.0));\n const float A = 2.51;\n const float B = 0.03;\n const float C = 2.43;\n const float D = 0.59;\n const float E = 0.14;\n return (color * (A * color + B)) / (color * (C * color + D) + E);\n}\nvec3 SRGBToLinear (vec3 gamma) {\n#ifdef CC_USE_SURFACE_SHADER\n #if CC_USE_DEBUG_VIEW == CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC && CC_SURFACES_ENABLE_DEBUG_VIEW\n if (!IS_DEBUG_VIEW_COMPOSITE_ENABLE_GAMMA_CORRECTION) {\n return gamma;\n }\n #endif\n#endif\n return gamma * gamma;\n}\nvec3 LinearToSRGB(vec3 linear) {\n#ifdef CC_USE_SURFACE_SHADER\n #if CC_USE_DEBUG_VIEW == CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC && CC_SURFACES_ENABLE_DEBUG_VIEW\n if (!IS_DEBUG_VIEW_COMPOSITE_ENABLE_GAMMA_CORRECTION) {\n return linear;\n }\n #endif\n#endif\n return sqrt(linear);\n}\nvec4 packRGBE (vec3 rgb) {\n highp float maxComp = max(max(rgb.r, rgb.g), rgb.b);\n highp float e = 128.0;\n if (maxComp > 0.0001) {\n e = log(maxComp) / log(1.1);\n e = ceil(e);\n e = clamp(e + 128.0, 0.0, 255.0);\n }\n highp float sc = 1.0 / pow(1.1, e - 128.0);\n vec3 encode = clamp(rgb * sc, vec3(0.0), vec3(1.0)) * 255.0;\n vec3 encode_rounded = floor(encode) + step(encode - floor(encode), vec3(0.5));\n return vec4(encode_rounded, e) / 255.0;\n}\nvec4 CCFragOutput (vec4 color) {\n #if CC_USE_RGBE_OUTPUT\n color = packRGBE(color.rgb);\n #elif !CC_USE_FLOAT_OUTPUT\n #if CC_USE_HDR && CC_TONE_MAPPING_TYPE == HDR_TONE_MAPPING_ACES\n color.rgb = ACESToneMap(color.rgb);\n #endif\n color.rgb = LinearToSRGB(color.rgb);\n #endif\n return color;\n}\nlayout(std140) uniform CCGlobal {\n highp vec4 cc_time;\n mediump vec4 cc_screenSize;\n mediump vec4 cc_nativeSize;\n mediump vec4 cc_probeInfo;\n mediump vec4 cc_debug_view_mode;\n};\nlayout(std140) uniform CCCamera {\n highp mat4 cc_matView;\n highp mat4 cc_matViewInv;\n highp mat4 cc_matProj;\n highp mat4 cc_matProjInv;\n highp mat4 cc_matViewProj;\n highp mat4 cc_matViewProjInv;\n highp vec4 cc_cameraPos;\n mediump vec4 cc_surfaceTransform;\n mediump vec4 cc_screenScale;\n mediump vec4 cc_exposure;\n mediump vec4 cc_mainLitDir;\n mediump vec4 cc_mainLitColor;\n mediump vec4 cc_ambientSky;\n mediump vec4 cc_ambientGround;\n mediump vec4 cc_fogColor;\n mediump vec4 cc_fogBase;\n mediump vec4 cc_fogAdd;\n mediump vec4 cc_nearFar;\n mediump vec4 cc_viewPort;\n};\n#if CC_USE_FOG != 4\n float LinearFog(vec4 pos, vec3 cameraPos, float fogStart, float fogEnd) {\n vec4 wPos = pos;\n float cam_dis = distance(cameraPos, wPos.xyz);\n return clamp((fogEnd - cam_dis) / (fogEnd - fogStart), 0., 1.);\n }\n float ExpFog(vec4 pos, vec3 cameraPos, float fogStart, float fogDensity, float fogAtten) {\n vec4 wPos = pos;\n float cam_dis = max(distance(cameraPos, wPos.xyz) - fogStart, 0.0) / fogAtten * 4.;\n float f = exp(-cam_dis * fogDensity);\n return f;\n }\n float ExpSquaredFog(vec4 pos, vec3 cameraPos, float fogStart, float fogDensity, float fogAtten) {\n vec4 wPos = pos;\n float cam_dis = max(distance(cameraPos, wPos.xyz) - fogStart, 0.0) / fogAtten * 4.;\n float f = exp(-cam_dis * cam_dis * fogDensity * fogDensity);\n return f;\n }\n float LayeredFog(vec4 pos, vec3 cameraPos, float fogTop, float fogRange, float fogAtten) {\n vec4 wPos = pos;\n vec3 camWorldProj = cameraPos.xyz;\n camWorldProj.y = 0.;\n vec3 worldPosProj = wPos.xyz;\n worldPosProj.y = 0.;\n float fDeltaD = distance(worldPosProj, camWorldProj) / fogAtten * 2.0;\n float fDeltaY, fDensityIntegral;\n if (cameraPos.y > fogTop) {\n if (wPos.y < fogTop) {\n fDeltaY = (fogTop - wPos.y) / fogRange * 2.0;\n fDensityIntegral = fDeltaY * fDeltaY * 0.5;\n }\n else {\n fDeltaY = 0.;\n fDensityIntegral = 0.;\n }\n }\n else {\n if (wPos.y < fogTop) {\n float fDeltaA = (fogTop - cameraPos.y) / fogRange * 2.;\n float fDeltaB = (fogTop - wPos.y) / fogRange * 2.;\n fDeltaY = abs(fDeltaA - fDeltaB);\n fDensityIntegral = abs((fDeltaA * fDeltaA * 0.5) - (fDeltaB * fDeltaB * 0.5));\n }\n else {\n fDeltaY = abs(fogTop - cameraPos.y) / fogRange * 2.;\n fDensityIntegral = abs(fDeltaY * fDeltaY * 0.5);\n }\n }\n float fDensity;\n if (fDeltaY != 0.) {\n fDensity = (sqrt(1.0 + ((fDeltaD / fDeltaY) * (fDeltaD / fDeltaY)))) * fDensityIntegral;\n }\n else {\n fDensity = 0.;\n }\n float f = exp(-fDensity);\n return f;\n }\n#endif\nvoid CC_TRANSFER_FOG_BASE(vec4 pos, out float factor)\n{\n#if CC_USE_FOG == 0\n\tfactor = LinearFog(pos, cc_cameraPos.xyz, cc_fogBase.x, cc_fogBase.y);\n#elif CC_USE_FOG == 1\n\tfactor = ExpFog(pos, cc_cameraPos.xyz, cc_fogBase.x, cc_fogBase.z, cc_fogAdd.z);\n#elif CC_USE_FOG == 2\n\tfactor = ExpSquaredFog(pos, cc_cameraPos.xyz, cc_fogBase.x, cc_fogBase.z, cc_fogAdd.z);\n#elif CC_USE_FOG == 3\n\tfactor = LayeredFog(pos, cc_cameraPos.xyz, cc_fogAdd.x, cc_fogAdd.y, cc_fogAdd.z);\n#else\n\tfactor = 1.0;\n#endif\n}\nvoid CC_APPLY_FOG_BASE(inout vec4 color, float factor) {\n\tcolor = vec4(mix(cc_fogColor.rgb, color.rgb, factor), color.a);\n}\n#if !CC_USE_ACCURATE_FOG\nin mediump float v_fog_factor;\n#endif\nvoid CC_APPLY_FOG(inout vec4 color) {\n#if !CC_USE_ACCURATE_FOG\n CC_APPLY_FOG_BASE(color, v_fog_factor);\n#endif\n}\nvoid CC_APPLY_FOG(inout vec4 color, vec3 worldPos) {\n#if CC_USE_ACCURATE_FOG\n float factor;\n CC_TRANSFER_FOG_BASE(vec4(worldPos, 1.0), factor);\n#else\n float factor = v_fog_factor;\n#endif\n CC_APPLY_FOG_BASE(color, factor);\n}\n#if USE_ALPHA_TEST\n#endif\n#if USE_TEXTURE\n in vec2 v_uv;\n uniform sampler2D mainTexture;\n#endif\nlayout(std140) uniform Constant {\n vec4 mainColor;\n vec4 colorScaleAndCutoff;\n};\n#if USE_VERTEX_COLOR\n in lowp vec4 v_color;\n#endif\nvec4 frag () {\n vec4 o = mainColor;\n o.rgb *= colorScaleAndCutoff.xyz;\n #if USE_VERTEX_COLOR\n o.rgb *= SRGBToLinear(v_color.rgb);\n o.a *= v_color.a;\n #endif\n #if USE_TEXTURE\n vec4 texColor = texture(mainTexture, v_uv);\n texColor.rgb = SRGBToLinear(texColor.rgb);\n o *= texColor;\n #endif\n #if USE_ALPHA_TEST\n if (o.ALPHA_TEST_CHANNEL < colorScaleAndCutoff.w) discard;\n #endif\n CC_APPLY_FOG(o);\n return CCFragOutput(o);\n}\nlayout(location = 0) out vec4 cc_FragColor;\nvoid main() { cc_FragColor = frag(); }"},"glsl1":{"vert":"\nprecision highp float;\n#define QUATER_PI 0.78539816340\n#define HALF_PI 1.57079632679\n#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI4 12.5663706144\n#define INV_QUATER_PI 1.27323954474\n#define INV_HALF_PI 0.63661977237\n#define INV_PI 0.31830988618\n#define INV_PI2 0.15915494309\n#define INV_PI4 0.07957747155\n#define EPSILON 1e-6\n#define EPSILON_LOWP 1e-4\n#define LOG2 1.442695\n#define EXP_VALUE 2.71828183\n#define FP_MAX 65504.0\n#define FP_SCALE 0.0009765625\n#define FP_SCALE_INV 1024.0\n#define GRAY_VECTOR vec3(0.299, 0.587, 0.114)\n#define LIGHT_MAP_TYPE_DISABLED 0\n#define LIGHT_MAP_TYPE_ALL_IN_ONE 1\n#define LIGHT_MAP_TYPE_INDIRECT_OCCLUSION 2\n#define REFLECTION_PROBE_TYPE_NONE 0\n#define REFLECTION_PROBE_TYPE_CUBE 1\n#define REFLECTION_PROBE_TYPE_PLANAR 2\n#define REFLECTION_PROBE_TYPE_BLEND 3\n#define REFLECTION_PROBE_TYPE_BLEND_AND_SKYBOX 4\n#define LIGHT_TYPE_DIRECTIONAL 0.0\n#define LIGHT_TYPE_SPHERE 1.0\n#define LIGHT_TYPE_SPOT 2.0\n#define LIGHT_TYPE_POINT 3.0\n#define LIGHT_TYPE_RANGED_DIRECTIONAL 4.0\n#define IS_DIRECTIONAL_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_DIRECTIONAL)) < EPSILON_LOWP)\n#define IS_SPHERE_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_SPHERE)) < EPSILON_LOWP)\n#define IS_SPOT_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_SPOT)) < EPSILON_LOWP)\n#define IS_POINT_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_POINT)) < EPSILON_LOWP)\n#define IS_RANGED_DIRECTIONAL_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_RANGED_DIRECTIONAL)) < EPSILON_LOWP)\n#define TONE_MAPPING_ACES 0\n#define TONE_MAPPING_LINEAR 1\n#define SURFACES_MAX_TRANSMIT_DEPTH_VALUE 999999.0\n#ifndef CC_SURFACES_DEBUG_VIEW_SINGLE\n #define CC_SURFACES_DEBUG_VIEW_SINGLE 1\n#endif\n#ifndef CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC\n #define CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC 2\n#endif\nstruct StandardVertInput {\n highp vec4 position;\n vec3 normal;\n vec4 tangent;\n};\nattribute vec3 a_position;\nattribute vec3 a_normal;\nattribute vec2 a_texCoord;\nattribute vec4 a_tangent;\n#if CC_USE_SKINNING\n attribute vec4 a_joints;\n attribute vec4 a_weights;\n#endif\n#if USE_INSTANCING\n #if CC_USE_BAKED_ANIMATION\n attribute highp vec4 a_jointAnimInfo;\n #endif\n attribute vec4 a_matWorld0;\n attribute vec4 a_matWorld1;\n attribute vec4 a_matWorld2;\n #if CC_USE_LIGHTMAP\n attribute vec4 a_lightingMapUVParam;\n #endif\n #if CC_USE_REFLECTION_PROBE || CC_RECEIVE_SHADOW\n #if CC_RECEIVE_SHADOW\n #endif\n attribute vec4 a_localShadowBiasAndProbeId;\n #endif\n #if CC_USE_REFLECTION_PROBE\n attribute vec4 a_reflectionProbeData;\n #endif\n #if CC_USE_LIGHT_PROBE\n attribute vec4 a_sh_linear_const_r;\n attribute vec4 a_sh_linear_const_g;\n attribute vec4 a_sh_linear_const_b;\n #endif\n#endif\n#if CC_USE_MORPH\n attribute float a_vertexId;\n int getVertexId() {\n return int(a_vertexId);\n }\n#endif\nhighp float decode32 (highp vec4 rgba) {\n rgba = rgba * 255.0;\n highp float Sign = 1.0 - (step(128.0, (rgba[3]) + 0.5)) * 2.0;\n highp float Exponent = 2.0 * (mod(float(int((rgba[3]) + 0.5)), 128.0)) + (step(128.0, (rgba[2]) + 0.5)) - 127.0;\n highp float Mantissa = (mod(float(int((rgba[2]) + 0.5)), 128.0)) * 65536.0 + rgba[1] * 256.0 + rgba[0] + 8388608.0;\n return Sign * exp2(Exponent - 23.0) * Mantissa;\n}\n#if CC_USE_MORPH\n uniform vec4 cc_displacementWeights[15];\n uniform vec4 cc_displacementTextureInfo;\n #if CC_MORPH_TARGET_HAS_POSITION\n uniform sampler2D cc_PositionDisplacements;\n #endif\n #if CC_MORPH_TARGET_HAS_NORMAL\n uniform sampler2D cc_NormalDisplacements;\n #endif\n #if CC_MORPH_TARGET_HAS_TANGENT\n uniform sampler2D cc_TangentDisplacements;\n #endif\n vec2 getPixelLocation(vec2 textureResolution, int pixelIndex) {\n float pixelIndexF = float(pixelIndex);\n float x = mod(pixelIndexF, textureResolution.x);\n float y = floor(pixelIndexF / textureResolution.x);\n return vec2(x, y);\n }\n vec2 getPixelCoordFromLocation(vec2 location, vec2 textureResolution) {\n return (vec2(location.x, location.y) + .5) / textureResolution;\n }\n #if CC_DEVICE_SUPPORT_FLOAT_TEXTURE\n vec4 fetchVec3ArrayFromTexture(sampler2D tex, int elementIndex) {\n int pixelIndex = elementIndex;\n vec2 location = getPixelLocation(cc_displacementTextureInfo.xy, pixelIndex);\n vec2 uv = getPixelCoordFromLocation(location, cc_displacementTextureInfo.xy);\n return texture2D(tex, uv);\n }\n #else\n vec4 fetchVec3ArrayFromTexture(sampler2D tex, int elementIndex) {\n int pixelIndex = elementIndex * 4;\n vec2 location = getPixelLocation(cc_displacementTextureInfo.xy, pixelIndex);\n vec2 x = getPixelCoordFromLocation(location + vec2(0.0, 0.0), cc_displacementTextureInfo.xy);\n vec2 y = getPixelCoordFromLocation(location + vec2(1.0, 0.0), cc_displacementTextureInfo.xy);\n vec2 z = getPixelCoordFromLocation(location + vec2(2.0, 0.0), cc_displacementTextureInfo.xy);\n return vec4(\n decode32(texture2D(tex, x)),\n decode32(texture2D(tex, y)),\n decode32(texture2D(tex, z)),\n 1.0\n );\n }\n #endif\n float getDisplacementWeight(int index) {\n int quot = index / 4;\n int remainder = index - quot * 4;\n if (remainder == 0) {\n return cc_displacementWeights[quot].x;\n } else if (remainder == 1) {\n return cc_displacementWeights[quot].y;\n } else if (remainder == 2) {\n return cc_displacementWeights[quot].z;\n } else {\n return cc_displacementWeights[quot].w;\n }\n }\n vec3 getVec3DisplacementFromTexture(sampler2D tex, int vertexIndex) {\n #if CC_MORPH_PRECOMPUTED\n return fetchVec3ArrayFromTexture(tex, vertexIndex).rgb;\n #else\n vec3 result = vec3(0, 0, 0);\n int nVertices = int(cc_displacementTextureInfo.z);\n for (int iTarget = 0; iTarget < CC_MORPH_TARGET_COUNT; ++iTarget) {\n result += (fetchVec3ArrayFromTexture(tex, nVertices * iTarget + vertexIndex).rgb * getDisplacementWeight(iTarget));\n }\n return result;\n #endif\n }\n #if CC_MORPH_TARGET_HAS_POSITION\n vec3 getPositionDisplacement(int vertexId) {\n return getVec3DisplacementFromTexture(cc_PositionDisplacements, vertexId);\n }\n #endif\n #if CC_MORPH_TARGET_HAS_NORMAL\n vec3 getNormalDisplacement(int vertexId) {\n return getVec3DisplacementFromTexture(cc_NormalDisplacements, vertexId);\n }\n #endif\n #if CC_MORPH_TARGET_HAS_TANGENT\n vec3 getTangentDisplacement(int vertexId) {\n return getVec3DisplacementFromTexture(cc_TangentDisplacements, vertexId);\n }\n #endif\n void applyMorph (inout vec4 position, inout vec3 normal, inout vec4 tangent) {\n int vertexId = getVertexId();\n #if CC_MORPH_TARGET_HAS_POSITION\n position.xyz = position.xyz + getPositionDisplacement(vertexId);\n #endif\n #if CC_MORPH_TARGET_HAS_NORMAL\n normal.xyz = normal.xyz + getNormalDisplacement(vertexId);\n #endif\n #if CC_MORPH_TARGET_HAS_TANGENT\n tangent.xyz = tangent.xyz + getTangentDisplacement(vertexId);\n #endif\n }\n void applyMorph (inout vec4 position) {\n #if CC_MORPH_TARGET_HAS_POSITION\n position.xyz = position.xyz + getPositionDisplacement(getVertexId());\n #endif\n }\n#endif\n#if CC_USE_SKINNING\n #if CC_USE_BAKED_ANIMATION\n uniform highp vec4 cc_jointTextureInfo;\n uniform highp vec4 cc_jointAnimInfo;\n uniform highp sampler2D cc_jointTexture;\n void CCGetJointTextureCoords(float pixelsPerJoint, float jointIdx, out highp float x, out highp float y, out highp float invSize)\n {\n #if USE_INSTANCING\n highp float temp = pixelsPerJoint * (a_jointAnimInfo.x * a_jointAnimInfo.y + jointIdx) + a_jointAnimInfo.z;\n #else\n highp float temp = pixelsPerJoint * (cc_jointAnimInfo.x * cc_jointTextureInfo.y + jointIdx) + cc_jointTextureInfo.z;\n #endif\n invSize = cc_jointTextureInfo.w;\n highp float tempY = floor(temp * invSize);\n x = floor(temp - tempY * cc_jointTextureInfo.x);\n y = (tempY + 0.5) * invSize;\n }\n #else\n #if CC_USE_REAL_TIME_JOINT_TEXTURE\n uniform highp sampler2D cc_realtimeJoint;\n #else\n uniform highp vec4 cc_joints[CC_JOINT_UNIFORM_CAPACITY * 3];\n #endif\n #endif\n #if CC_USE_BAKED_ANIMATION\n #if CC_DEVICE_SUPPORT_FLOAT_TEXTURE\n mat4 getJointMatrix (float i) {\n highp float x, y, invSize;\n CCGetJointTextureCoords(3.0, i, x, y, invSize);\n vec4 v1 = texture2D(cc_jointTexture, vec2((x + 0.5) * invSize, y));\n vec4 v2 = texture2D(cc_jointTexture, vec2((x + 1.5) * invSize, y));\n vec4 v3 = texture2D(cc_jointTexture, vec2((x + 2.5) * invSize, y));\n return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));\n }\n #else\n mat4 getJointMatrix (float i) {\n highp float x, y, invSize;\n CCGetJointTextureCoords(12.0, i, x, y, invSize);\n vec4 v1 = vec4(\n decode32(texture2D(cc_jointTexture, vec2((x + 0.5) * invSize, y))),\n decode32(texture2D(cc_jointTexture, vec2((x + 1.5) * invSize, y))),\n decode32(texture2D(cc_jointTexture, vec2((x + 2.5) * invSize, y))),\n decode32(texture2D(cc_jointTexture, vec2((x + 3.5) * invSize, y)))\n );\n vec4 v2 = vec4(\n decode32(texture2D(cc_jointTexture, vec2((x + 4.5) * invSize, y))),\n decode32(texture2D(cc_jointTexture, vec2((x + 5.5) * invSize, y))),\n decode32(texture2D(cc_jointTexture, vec2((x + 6.5) * invSize, y))),\n decode32(texture2D(cc_jointTexture, vec2((x + 7.5) * invSize, y)))\n );\n vec4 v3 = vec4(\n decode32(texture2D(cc_jointTexture, vec2((x + 8.5) * invSize, y))),\n decode32(texture2D(cc_jointTexture, vec2((x + 9.5) * invSize, y))),\n decode32(texture2D(cc_jointTexture, vec2((x + 10.5) * invSize, y))),\n decode32(texture2D(cc_jointTexture, vec2((x + 11.5) * invSize, y)))\n );\n return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));\n }\n #endif\n #else\n #if CC_USE_REAL_TIME_JOINT_TEXTURE\n #if CC_DEVICE_SUPPORT_FLOAT_TEXTURE\n mat4 getJointMatrix (float i) {\n float x = i;\n vec4 v1 = texture2D(cc_realtimeJoint, vec2( x / 256.0, 0.5 / 3.0));\n vec4 v2 = texture2D(cc_realtimeJoint, vec2( x / 256.0, 1.5 / 3.0));\n vec4 v3 = texture2D(cc_realtimeJoint, vec2( x / 256.0, 2.5 / 3.0));\n return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));\n }\n #else\n mat4 getJointMatrix (float i) {\n float x = 4.0 * i;\n vec4 v1 = vec4(\n decode32(texture2D(cc_realtimeJoint, vec2((x + 0.5)/ 1024.0, 0.5 / 3.0))),\n decode32(texture2D(cc_realtimeJoint, vec2((x + 1.5)/ 1024.0, 0.5 / 3.0))),\n decode32(texture2D(cc_realtimeJoint, vec2((x + 2.5)/ 1024.0, 0.5 / 3.0))),\n decode32(texture2D(cc_realtimeJoint, vec2((x + 3.5)/ 1024.0, 0.5 / 3.0)))\n );\n vec4 v2 = vec4(\n decode32(texture2D(cc_realtimeJoint, vec2((x + 0.5)/ 1024.0, 1.5 / 3.0))),\n decode32(texture2D(cc_realtimeJoint, vec2((x + 1.5)/ 1024.0, 1.5 / 3.0))),\n decode32(texture2D(cc_realtimeJoint, vec2((x + 2.5)/ 1024.0, 1.5 / 3.0))),\n decode32(texture2D(cc_realtimeJoint, vec2((x + 3.5)/ 1024.0, 1.5 / 3.0)))\n );\n vec4 v3 = vec4(\n decode32(texture2D(cc_realtimeJoint, vec2((x + 0.5)/ 1024.0, 2.5 / 3.0))),\n decode32(texture2D(cc_realtimeJoint, vec2((x + 1.5)/ 1024.0, 2.5 / 3.0))),\n decode32(texture2D(cc_realtimeJoint, vec2((x + 2.5)/ 1024.0, 2.5 / 3.0))),\n decode32(texture2D(cc_realtimeJoint, vec2((x + 3.5)/ 1024.0, 2.5 / 3.0)))\n );\n return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));\n }\n #endif\n #else\n mat4 getJointMatrix (float i) {\n int idx = int(i);\n vec4 v1 = cc_joints[idx * 3];\n vec4 v2 = cc_joints[idx * 3 + 1];\n vec4 v3 = cc_joints[idx * 3 + 2];\n return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));\n }\n #endif\n #endif\n mat4 skinMatrix () {\n vec4 joints = vec4(a_joints);\n return getJointMatrix(joints.x) * a_weights.x\n + getJointMatrix(joints.y) * a_weights.y\n + getJointMatrix(joints.z) * a_weights.z\n + getJointMatrix(joints.w) * a_weights.w;\n }\n void CCSkin (inout vec4 position) {\n mat4 m = skinMatrix();\n position = m * position;\n }\n void CCSkin (inout vec4 position, inout vec3 normal, inout vec4 tangent) {\n mat4 m = skinMatrix();\n position = m * position;\n normal = (m * vec4(normal, 0.0)).xyz;\n tangent.xyz = (m * vec4(tangent.xyz, 0.0)).xyz;\n }\n#endif\nvoid CCVertInput(inout vec4 In)\n{\n In = vec4(a_position, 1.0);\n #if CC_USE_MORPH\n applyMorph(In);\n #endif\n #if CC_USE_SKINNING\n CCSkin(In);\n #endif\n}\nuniform highp mat4 cc_matView;\n uniform highp mat4 cc_matProj;\n uniform highp vec4 cc_cameraPos;\n uniform mediump vec4 cc_fogBase;\n uniform mediump vec4 cc_fogAdd;\n#if !USE_INSTANCING\n uniform highp mat4 cc_matWorld;\n#endif\nvoid CCGetWorldMatrix(out mat4 matWorld)\n{\n #if USE_INSTANCING\n matWorld = mat4(\n vec4(a_matWorld0.xyz, 0.0),\n vec4(a_matWorld1.xyz, 0.0),\n vec4(a_matWorld2.xyz, 0.0),\n vec4(a_matWorld0.w, a_matWorld1.w, a_matWorld2.w, 1.0)\n );\n #else\n matWorld = cc_matWorld;\n #endif\n}\n#if CC_USE_FOG != 4\n float LinearFog(vec4 pos, vec3 cameraPos, float fogStart, float fogEnd) {\n vec4 wPos = pos;\n float cam_dis = distance(cameraPos, wPos.xyz);\n return clamp((fogEnd - cam_dis) / (fogEnd - fogStart), 0., 1.);\n }\n float ExpFog(vec4 pos, vec3 cameraPos, float fogStart, float fogDensity, float fogAtten) {\n vec4 wPos = pos;\n float cam_dis = max(distance(cameraPos, wPos.xyz) - fogStart, 0.0) / fogAtten * 4.;\n float f = exp(-cam_dis * fogDensity);\n return f;\n }\n float ExpSquaredFog(vec4 pos, vec3 cameraPos, float fogStart, float fogDensity, float fogAtten) {\n vec4 wPos = pos;\n float cam_dis = max(distance(cameraPos, wPos.xyz) - fogStart, 0.0) / fogAtten * 4.;\n float f = exp(-cam_dis * cam_dis * fogDensity * fogDensity);\n return f;\n }\n float LayeredFog(vec4 pos, vec3 cameraPos, float fogTop, float fogRange, float fogAtten) {\n vec4 wPos = pos;\n vec3 camWorldProj = cameraPos.xyz;\n camWorldProj.y = 0.;\n vec3 worldPosProj = wPos.xyz;\n worldPosProj.y = 0.;\n float fDeltaD = distance(worldPosProj, camWorldProj) / fogAtten * 2.0;\n float fDeltaY, fDensityIntegral;\n if (cameraPos.y > fogTop) {\n if (wPos.y < fogTop) {\n fDeltaY = (fogTop - wPos.y) / fogRange * 2.0;\n fDensityIntegral = fDeltaY * fDeltaY * 0.5;\n }\n else {\n fDeltaY = 0.;\n fDensityIntegral = 0.;\n }\n }\n else {\n if (wPos.y < fogTop) {\n float fDeltaA = (fogTop - cameraPos.y) / fogRange * 2.;\n float fDeltaB = (fogTop - wPos.y) / fogRange * 2.;\n fDeltaY = abs(fDeltaA - fDeltaB);\n fDensityIntegral = abs((fDeltaA * fDeltaA * 0.5) - (fDeltaB * fDeltaB * 0.5));\n }\n else {\n fDeltaY = abs(fogTop - cameraPos.y) / fogRange * 2.;\n fDensityIntegral = abs(fDeltaY * fDeltaY * 0.5);\n }\n }\n float fDensity;\n if (fDeltaY != 0.) {\n fDensity = (sqrt(1.0 + ((fDeltaD / fDeltaY) * (fDeltaD / fDeltaY)))) * fDensityIntegral;\n }\n else {\n fDensity = 0.;\n }\n float f = exp(-fDensity);\n return f;\n }\n#endif\nvoid CC_TRANSFER_FOG_BASE(vec4 pos, out float factor)\n{\n#if CC_USE_FOG == 0\n\tfactor = LinearFog(pos, cc_cameraPos.xyz, cc_fogBase.x, cc_fogBase.y);\n#elif CC_USE_FOG == 1\n\tfactor = ExpFog(pos, cc_cameraPos.xyz, cc_fogBase.x, cc_fogBase.z, cc_fogAdd.z);\n#elif CC_USE_FOG == 2\n\tfactor = ExpSquaredFog(pos, cc_cameraPos.xyz, cc_fogBase.x, cc_fogBase.z, cc_fogAdd.z);\n#elif CC_USE_FOG == 3\n\tfactor = LayeredFog(pos, cc_cameraPos.xyz, cc_fogAdd.x, cc_fogAdd.y, cc_fogAdd.z);\n#else\n\tfactor = 1.0;\n#endif\n}\n#if !CC_USE_ACCURATE_FOG\nvarying mediump float v_fog_factor;\n#endif\nvoid CC_TRANSFER_FOG(vec4 pos) {\n#if !CC_USE_ACCURATE_FOG\n CC_TRANSFER_FOG_BASE(pos, v_fog_factor);\n#endif\n}\n#if USE_VERTEX_COLOR\n attribute lowp vec4 a_color;\n varying lowp vec4 v_color;\n#endif\n#if USE_TEXTURE\n varying vec2 v_uv;\n uniform vec4 tilingOffset;\n#endif\nvec4 vert () {\n vec4 position;\n CCVertInput(position);\n mat4 matWorld;\n CCGetWorldMatrix(matWorld);\n #if USE_TEXTURE\n v_uv = a_texCoord * tilingOffset.xy + tilingOffset.zw;\n #if SAMPLE_FROM_RT\n v_uv = cc_cameraPos.w > 1.0 ? vec2(v_uv.x, 1.0 - v_uv.y) : v_uv;\n #endif\n #endif\n #if USE_VERTEX_COLOR\n v_color = a_color;\n #endif\n CC_TRANSFER_FOG(matWorld * position);\n return cc_matProj * (cc_matView * matWorld) * position;\n}\nvoid main() { gl_Position = vert(); }","frag":"\nprecision highp float;\nvec3 ACESToneMap (vec3 color) {\n color = min(color, vec3(8.0));\n const float A = 2.51;\n const float B = 0.03;\n const float C = 2.43;\n const float D = 0.59;\n const float E = 0.14;\n return (color * (A * color + B)) / (color * (C * color + D) + E);\n}\nvec3 SRGBToLinear (vec3 gamma) {\n#ifdef CC_USE_SURFACE_SHADER\n #if CC_USE_DEBUG_VIEW == CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC && CC_SURFACES_ENABLE_DEBUG_VIEW\n if (!IS_DEBUG_VIEW_COMPOSITE_ENABLE_GAMMA_CORRECTION) {\n return gamma;\n }\n #endif\n#endif\n return gamma * gamma;\n}\nvec3 LinearToSRGB(vec3 linear) {\n#ifdef CC_USE_SURFACE_SHADER\n #if CC_USE_DEBUG_VIEW == CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC && CC_SURFACES_ENABLE_DEBUG_VIEW\n if (!IS_DEBUG_VIEW_COMPOSITE_ENABLE_GAMMA_CORRECTION) {\n return linear;\n }\n #endif\n#endif\n return sqrt(linear);\n}\nvec4 packRGBE (vec3 rgb) {\n highp float maxComp = max(max(rgb.r, rgb.g), rgb.b);\n highp float e = 128.0;\n if (maxComp > 0.0001) {\n e = log(maxComp) / log(1.1);\n e = ceil(e);\n e = clamp(e + 128.0, 0.0, 255.0);\n }\n highp float sc = 1.0 / pow(1.1, e - 128.0);\n vec3 encode = clamp(rgb * sc, vec3(0.0), vec3(1.0)) * 255.0;\n vec3 encode_rounded = floor(encode) + step(encode - floor(encode), vec3(0.5));\n return vec4(encode_rounded, e) / 255.0;\n}\nvec4 CCFragOutput (vec4 color) {\n #if CC_USE_RGBE_OUTPUT\n color = packRGBE(color.rgb);\n #elif !CC_USE_FLOAT_OUTPUT\n #if CC_USE_HDR && CC_TONE_MAPPING_TYPE == HDR_TONE_MAPPING_ACES\n color.rgb = ACESToneMap(color.rgb);\n #endif\n color.rgb = LinearToSRGB(color.rgb);\n #endif\n return color;\n}\nuniform highp vec4 cc_cameraPos;\n uniform mediump vec4 cc_fogColor;\n uniform mediump vec4 cc_fogBase;\n uniform mediump vec4 cc_fogAdd;\n#if CC_USE_FOG != 4\n float LinearFog(vec4 pos, vec3 cameraPos, float fogStart, float fogEnd) {\n vec4 wPos = pos;\n float cam_dis = distance(cameraPos, wPos.xyz);\n return clamp((fogEnd - cam_dis) / (fogEnd - fogStart), 0., 1.);\n }\n float ExpFog(vec4 pos, vec3 cameraPos, float fogStart, float fogDensity, float fogAtten) {\n vec4 wPos = pos;\n float cam_dis = max(distance(cameraPos, wPos.xyz) - fogStart, 0.0) / fogAtten * 4.;\n float f = exp(-cam_dis * fogDensity);\n return f;\n }\n float ExpSquaredFog(vec4 pos, vec3 cameraPos, float fogStart, float fogDensity, float fogAtten) {\n vec4 wPos = pos;\n float cam_dis = max(distance(cameraPos, wPos.xyz) - fogStart, 0.0) / fogAtten * 4.;\n float f = exp(-cam_dis * cam_dis * fogDensity * fogDensity);\n return f;\n }\n float LayeredFog(vec4 pos, vec3 cameraPos, float fogTop, float fogRange, float fogAtten) {\n vec4 wPos = pos;\n vec3 camWorldProj = cameraPos.xyz;\n camWorldProj.y = 0.;\n vec3 worldPosProj = wPos.xyz;\n worldPosProj.y = 0.;\n float fDeltaD = distance(worldPosProj, camWorldProj) / fogAtten * 2.0;\n float fDeltaY, fDensityIntegral;\n if (cameraPos.y > fogTop) {\n if (wPos.y < fogTop) {\n fDeltaY = (fogTop - wPos.y) / fogRange * 2.0;\n fDensityIntegral = fDeltaY * fDeltaY * 0.5;\n }\n else {\n fDeltaY = 0.;\n fDensityIntegral = 0.;\n }\n }\n else {\n if (wPos.y < fogTop) {\n float fDeltaA = (fogTop - cameraPos.y) / fogRange * 2.;\n float fDeltaB = (fogTop - wPos.y) / fogRange * 2.;\n fDeltaY = abs(fDeltaA - fDeltaB);\n fDensityIntegral = abs((fDeltaA * fDeltaA * 0.5) - (fDeltaB * fDeltaB * 0.5));\n }\n else {\n fDeltaY = abs(fogTop - cameraPos.y) / fogRange * 2.;\n fDensityIntegral = abs(fDeltaY * fDeltaY * 0.5);\n }\n }\n float fDensity;\n if (fDeltaY != 0.) {\n fDensity = (sqrt(1.0 + ((fDeltaD / fDeltaY) * (fDeltaD / fDeltaY)))) * fDensityIntegral;\n }\n else {\n fDensity = 0.;\n }\n float f = exp(-fDensity);\n return f;\n }\n#endif\nvoid CC_TRANSFER_FOG_BASE(vec4 pos, out float factor)\n{\n#if CC_USE_FOG == 0\n\tfactor = LinearFog(pos, cc_cameraPos.xyz, cc_fogBase.x, cc_fogBase.y);\n#elif CC_USE_FOG == 1\n\tfactor = ExpFog(pos, cc_cameraPos.xyz, cc_fogBase.x, cc_fogBase.z, cc_fogAdd.z);\n#elif CC_USE_FOG == 2\n\tfactor = ExpSquaredFog(pos, cc_cameraPos.xyz, cc_fogBase.x, cc_fogBase.z, cc_fogAdd.z);\n#elif CC_USE_FOG == 3\n\tfactor = LayeredFog(pos, cc_cameraPos.xyz, cc_fogAdd.x, cc_fogAdd.y, cc_fogAdd.z);\n#else\n\tfactor = 1.0;\n#endif\n}\nvoid CC_APPLY_FOG_BASE(inout vec4 color, float factor) {\n\tcolor = vec4(mix(cc_fogColor.rgb, color.rgb, factor), color.a);\n}\n#if !CC_USE_ACCURATE_FOG\nvarying mediump float v_fog_factor;\n#endif\nvoid CC_APPLY_FOG(inout vec4 color) {\n#if !CC_USE_ACCURATE_FOG\n CC_APPLY_FOG_BASE(color, v_fog_factor);\n#endif\n}\nvoid CC_APPLY_FOG(inout vec4 color, vec3 worldPos) {\n#if CC_USE_ACCURATE_FOG\n float factor;\n CC_TRANSFER_FOG_BASE(vec4(worldPos, 1.0), factor);\n#else\n float factor = v_fog_factor;\n#endif\n CC_APPLY_FOG_BASE(color, factor);\n}\n#if USE_ALPHA_TEST\n#endif\n#if USE_TEXTURE\n varying vec2 v_uv;\n uniform sampler2D mainTexture;\n#endif\n uniform vec4 mainColor;\n uniform vec4 colorScaleAndCutoff;\n#if USE_VERTEX_COLOR\n varying lowp vec4 v_color;\n#endif\nvec4 frag () {\n vec4 o = mainColor;\n o.rgb *= colorScaleAndCutoff.xyz;\n #if USE_VERTEX_COLOR\n o.rgb *= SRGBToLinear(v_color.rgb);\n o.a *= v_color.a;\n #endif\n #if USE_TEXTURE\n vec4 texColor = texture2D(mainTexture, v_uv);\n texColor.rgb = SRGBToLinear(texColor.rgb);\n o *= texColor;\n #endif\n #if USE_ALPHA_TEST\n if (o.ALPHA_TEST_CHANNEL < colorScaleAndCutoff.w) discard;\n #endif\n CC_APPLY_FOG(o);\n return CCFragOutput(o);\n}\nvoid main() { gl_FragColor = frag(); }"},"builtins":{"globals":{"blocks":[{"name":"CCGlobal","defines":[]},{"name":"CCCamera","defines":[]}],"samplerTextures":[],"buffers":[],"images":[]},"locals":{"blocks":[{"name":"CCMorph","defines":["CC_USE_MORPH"]},{"name":"CCSkinningTexture","defines":["CC_USE_SKINNING","CC_USE_BAKED_ANIMATION"]},{"name":"CCSkinningAnimation","defines":["CC_USE_SKINNING","CC_USE_BAKED_ANIMATION"]},{"name":"CCSkinning","defines":["CC_USE_SKINNING","!CC_USE_BAKED_ANIMATION","!CC_USE_REAL_TIME_JOINT_TEXTURE"]},{"name":"CCLocal","defines":["!USE_INSTANCING"]}],"samplerTextures":[{"name":"cc_PositionDisplacements","defines":["CC_USE_MORPH","CC_MORPH_TARGET_HAS_POSITION"]},{"name":"cc_NormalDisplacements","defines":["CC_USE_MORPH","CC_MORPH_TARGET_HAS_NORMAL"]},{"name":"cc_TangentDisplacements","defines":["CC_USE_MORPH","CC_MORPH_TARGET_HAS_TANGENT"]},{"name":"cc_jointTexture","defines":["CC_USE_SKINNING","CC_USE_BAKED_ANIMATION"]},{"name":"cc_realtimeJoint","defines":["CC_USE_SKINNING","!CC_USE_BAKED_ANIMATION","CC_USE_REAL_TIME_JOINT_TEXTURE"]}],"buffers":[],"images":[]},"statistics":{"CC_EFFECT_USED_VERTEX_UNIFORM_VECTORS":75,"CC_EFFECT_USED_FRAGMENT_UNIFORM_VECTORS":44}},"defines":[{"name":"USE_INSTANCING","type":"boolean"},{"name":"CC_USE_SKINNING","type":"boolean"},{"name":"CC_USE_BAKED_ANIMATION","type":"boolean"},{"name":"CC_USE_LIGHTMAP","type":"boolean"},{"name":"CC_USE_REFLECTION_PROBE","type":"boolean"},{"name":"CC_RECEIVE_SHADOW","type":"boolean"},{"name":"CC_USE_LIGHT_PROBE","type":"boolean"},{"name":"CC_USE_MORPH","type":"boolean"},{"name":"CC_MORPH_TARGET_COUNT","type":"number","range":[2,8]},{"name":"CC_MORPH_TARGET_HAS_POSITION","type":"boolean"},{"name":"CC_MORPH_TARGET_HAS_NORMAL","type":"boolean"},{"name":"CC_MORPH_TARGET_HAS_TANGENT","type":"boolean"},{"name":"CC_MORPH_PRECOMPUTED","type":"boolean"},{"name":"CC_USE_REAL_TIME_JOINT_TEXTURE","type":"boolean"},{"name":"CC_USE_FOG","type":"number","range":[0,4]},{"name":"CC_USE_ACCURATE_FOG","type":"boolean"},{"name":"USE_VERTEX_COLOR","type":"boolean"},{"name":"USE_TEXTURE","type":"boolean"},{"name":"SAMPLE_FROM_RT","type":"boolean"},{"name":"CC_USE_DEBUG_VIEW","type":"number","range":[0,3]},{"name":"CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC","type":"boolean"},{"name":"CC_SURFACES_ENABLE_DEBUG_VIEW","type":"boolean"},{"name":"CC_USE_RGBE_OUTPUT","type":"boolean"},{"name":"CC_USE_FLOAT_OUTPUT","type":"boolean"},{"name":"CC_USE_HDR","type":"boolean"},{"name":"CC_TONE_MAPPING_TYPE","type":"number","range":[0,3]},{"name":"HDR_TONE_MAPPING_ACES","type":"boolean"},{"name":"USE_ALPHA_TEST","type":"boolean"},{"name":"ALPHA_TEST_CHANNEL","type":"string","options":["a","r","g","b"]}]},{"hash":3497352472,"name":"builtin-unlit|planar-shadow-vs:vert|planar-shadow-fs:frag","blocks":[],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[],"attributes":[{"name":"a_position","format":32,"location":0,"defines":[]},{"name":"a_normal","format":32,"location":1,"defines":[]},{"name":"a_texCoord","format":21,"location":2,"defines":[]},{"name":"a_tangent","format":44,"location":3,"defines":[]},{"name":"a_joints","location":4,"defines":["CC_USE_SKINNING"]},{"name":"a_weights","format":44,"location":5,"defines":["CC_USE_SKINNING"]},{"name":"a_jointAnimInfo","format":44,"isInstanced":true,"location":6,"defines":["USE_INSTANCING","CC_USE_BAKED_ANIMATION"]},{"name":"a_matWorld0","format":44,"isInstanced":true,"location":7,"defines":["USE_INSTANCING"]},{"name":"a_matWorld1","format":44,"isInstanced":true,"location":8,"defines":["USE_INSTANCING"]},{"name":"a_matWorld2","format":44,"isInstanced":true,"location":9,"defines":["USE_INSTANCING"]},{"name":"a_lightingMapUVParam","format":44,"isInstanced":true,"location":10,"defines":["USE_INSTANCING","CC_USE_LIGHTMAP"]},{"name":"a_localShadowBiasAndProbeId","format":44,"isInstanced":true,"location":11,"defines":["USE_INSTANCING"]},{"name":"a_reflectionProbeData","format":44,"isInstanced":true,"location":12,"defines":["USE_INSTANCING","CC_USE_REFLECTION_PROBE"]},{"name":"a_sh_linear_const_r","format":44,"isInstanced":true,"location":13,"defines":["USE_INSTANCING","CC_USE_LIGHT_PROBE"]},{"name":"a_sh_linear_const_g","format":44,"isInstanced":true,"location":14,"defines":["USE_INSTANCING","CC_USE_LIGHT_PROBE"]},{"name":"a_sh_linear_const_b","format":44,"isInstanced":true,"location":15,"defines":["USE_INSTANCING","CC_USE_LIGHT_PROBE"]},{"name":"a_vertexId","format":11,"location":16,"defines":["CC_USE_MORPH"]}],"fragColors":[{"name":"cc_FragColor","typename":"vec4","type":16,"count":1,"stageFlags":16,"location":0,"defines":[]}],"descriptors":[{"rate":0,"blocks":[{"name":"CCMorph","stageFlags":1,"tags":{"builtin":"local"},"members":[{"name":"cc_displacementWeights","typename":"vec4","type":16,"count":15,"isArray":true},{"name":"cc_displacementTextureInfo","typename":"vec4","type":16,"count":1}],"defines":["CC_USE_MORPH"]},{"name":"CCSkinningTexture","stageFlags":1,"tags":{"builtin":"local"},"members":[{"name":"cc_jointTextureInfo","typename":"vec4","type":16,"count":1,"precision":"highp "}],"defines":["CC_USE_SKINNING","CC_USE_BAKED_ANIMATION"]},{"name":"CCSkinningAnimation","stageFlags":1,"tags":{"builtin":"local"},"members":[{"name":"cc_jointAnimInfo","typename":"vec4","type":16,"count":1,"precision":"highp "}],"defines":["CC_USE_SKINNING","CC_USE_BAKED_ANIMATION"]},{"name":"CCSkinning","stageFlags":1,"tags":{"builtin":"local"},"members":[{"name":"cc_joints","typename":"vec4","type":16,"count":0,"precision":"highp ","isArray":true}],"defines":["CC_USE_SKINNING","!CC_USE_BAKED_ANIMATION","!CC_USE_REAL_TIME_JOINT_TEXTURE"]},{"name":"CCLocal","stageFlags":1,"tags":{"builtin":"local"},"members":[{"name":"cc_matWorld","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matWorldIT","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_lightingMapUVParam","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_localShadowBias","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_reflectionProbeData1","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_reflectionProbeData2","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_reflectionProbeBlendData1","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_reflectionProbeBlendData2","typename":"vec4","type":16,"count":1,"precision":"highp "}],"defines":["!USE_INSTANCING"]}],"samplerTextures":[{"name":"cc_PositionDisplacements","typename":"sampler2D","type":28,"count":1,"stageFlags":1,"tags":{"builtin":"local"},"defines":["CC_USE_MORPH","CC_MORPH_TARGET_HAS_POSITION"]},{"name":"cc_NormalDisplacements","typename":"sampler2D","type":28,"count":1,"stageFlags":1,"tags":{"builtin":"local"},"defines":["CC_USE_MORPH","CC_MORPH_TARGET_HAS_NORMAL"]},{"name":"cc_TangentDisplacements","typename":"sampler2D","type":28,"count":1,"stageFlags":1,"tags":{"builtin":"local"},"defines":["CC_USE_MORPH","CC_MORPH_TARGET_HAS_TANGENT"]},{"name":"cc_jointTexture","typename":"sampler2D","type":28,"count":1,"precision":"highp ","stageFlags":1,"tags":{"builtin":"local"},"defines":["CC_USE_SKINNING","CC_USE_BAKED_ANIMATION"]},{"name":"cc_realtimeJoint","typename":"sampler2D","type":28,"count":1,"precision":"highp ","stageFlags":1,"tags":{"builtin":"local"},"defines":["CC_USE_SKINNING","!CC_USE_BAKED_ANIMATION","CC_USE_REAL_TIME_JOINT_TEXTURE"]}],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":1,"blocks":[],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":2,"blocks":[],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":3,"blocks":[{"name":"CCGlobal","stageFlags":17,"tags":{"builtin":"global"},"members":[{"name":"cc_time","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_screenSize","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_nativeSize","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_probeInfo","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_debug_view_mode","typename":"vec4","type":16,"count":1,"precision":"mediump "}],"defines":[]},{"name":"CCCamera","stageFlags":17,"tags":{"builtin":"global"},"members":[{"name":"cc_matView","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matViewInv","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matProj","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matProjInv","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matViewProj","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matViewProjInv","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_cameraPos","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_surfaceTransform","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_screenScale","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_exposure","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_mainLitDir","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_mainLitColor","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_ambientSky","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_ambientGround","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_fogColor","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_fogBase","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_fogAdd","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_nearFar","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_viewPort","typename":"vec4","type":16,"count":1,"precision":"mediump "}],"defines":[]},{"name":"CCShadow","stageFlags":17,"tags":{"builtin":"global"},"members":[{"name":"cc_matLightView","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matLightViewProj","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_shadowInvProjDepthInfo","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_shadowProjDepthInfo","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_shadowProjInfo","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_shadowNFLSInfo","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_shadowWHPBInfo","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_shadowLPNNInfo","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_shadowColor","typename":"vec4","type":16,"count":1,"precision":"lowp "},{"name":"cc_planarNDInfo","typename":"vec4","type":16,"count":1,"precision":"mediump "}],"defines":[]}],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]}],"glsl3":{"vert":"\nprecision highp float;\n#define QUATER_PI 0.78539816340\n#define HALF_PI 1.57079632679\n#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI4 12.5663706144\n#define INV_QUATER_PI 1.27323954474\n#define INV_HALF_PI 0.63661977237\n#define INV_PI 0.31830988618\n#define INV_PI2 0.15915494309\n#define INV_PI4 0.07957747155\n#define EPSILON 1e-6\n#define EPSILON_LOWP 1e-4\n#define LOG2 1.442695\n#define EXP_VALUE 2.71828183\n#define FP_MAX 65504.0\n#define FP_SCALE 0.0009765625\n#define FP_SCALE_INV 1024.0\n#define GRAY_VECTOR vec3(0.299, 0.587, 0.114)\nfloat saturate(float value) { return clamp(value, 0.0, 1.0); }\nvec2 saturate(vec2 value) { return clamp(value, vec2(0.0), vec2(1.0)); }\nvec3 saturate(vec3 value) { return clamp(value, vec3(0.0), vec3(1.0)); }\nvec4 saturate(vec4 value) { return clamp(value, vec4(0.0), vec4(1.0)); }\n#define LIGHT_MAP_TYPE_DISABLED 0\n#define LIGHT_MAP_TYPE_ALL_IN_ONE 1\n#define LIGHT_MAP_TYPE_INDIRECT_OCCLUSION 2\n#define REFLECTION_PROBE_TYPE_NONE 0\n#define REFLECTION_PROBE_TYPE_CUBE 1\n#define REFLECTION_PROBE_TYPE_PLANAR 2\n#define REFLECTION_PROBE_TYPE_BLEND 3\n#define REFLECTION_PROBE_TYPE_BLEND_AND_SKYBOX 4\n#define LIGHT_TYPE_DIRECTIONAL 0.0\n#define LIGHT_TYPE_SPHERE 1.0\n#define LIGHT_TYPE_SPOT 2.0\n#define LIGHT_TYPE_POINT 3.0\n#define LIGHT_TYPE_RANGED_DIRECTIONAL 4.0\n#define IS_DIRECTIONAL_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_DIRECTIONAL)) < EPSILON_LOWP)\n#define IS_SPHERE_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_SPHERE)) < EPSILON_LOWP)\n#define IS_SPOT_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_SPOT)) < EPSILON_LOWP)\n#define IS_POINT_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_POINT)) < EPSILON_LOWP)\n#define IS_RANGED_DIRECTIONAL_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_RANGED_DIRECTIONAL)) < EPSILON_LOWP)\n#define TONE_MAPPING_ACES 0\n#define TONE_MAPPING_LINEAR 1\n#define SURFACES_MAX_TRANSMIT_DEPTH_VALUE 999999.0\n#ifndef CC_SURFACES_DEBUG_VIEW_SINGLE\n #define CC_SURFACES_DEBUG_VIEW_SINGLE 1\n#endif\n#ifndef CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC\n #define CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC 2\n#endif\nstruct StandardVertInput {\n highp vec4 position;\n vec3 normal;\n vec4 tangent;\n};\nin vec3 a_position;\nin vec3 a_normal;\nin vec2 a_texCoord;\nin vec4 a_tangent;\n#if CC_USE_SKINNING\n in vec4 a_joints;\n in vec4 a_weights;\n#endif\n#if USE_INSTANCING\n #if CC_USE_BAKED_ANIMATION\n in highp vec4 a_jointAnimInfo;\n #endif\n in vec4 a_matWorld0;\n in vec4 a_matWorld1;\n in vec4 a_matWorld2;\n #if CC_USE_LIGHTMAP\n in vec4 a_lightingMapUVParam;\n #endif\n #if CC_USE_REFLECTION_PROBE || CC_RECEIVE_SHADOW\n #if CC_RECEIVE_SHADOW\n #endif\n in vec4 a_localShadowBiasAndProbeId;\n #endif\n #if CC_USE_REFLECTION_PROBE\n in vec4 a_reflectionProbeData;\n #endif\n #if CC_USE_LIGHT_PROBE\n in vec4 a_sh_linear_const_r;\n in vec4 a_sh_linear_const_g;\n in vec4 a_sh_linear_const_b;\n #endif\n#endif\n#if CC_USE_MORPH\n in float a_vertexId;\n int getVertexId() {\n return int(a_vertexId);\n }\n#endif\nhighp float decode32 (highp vec4 rgba) {\n rgba = rgba * 255.0;\n highp float Sign = 1.0 - (step(128.0, (rgba[3]) + 0.5)) * 2.0;\n highp float Exponent = 2.0 * (mod(float(int((rgba[3]) + 0.5)), 128.0)) + (step(128.0, (rgba[2]) + 0.5)) - 127.0;\n highp float Mantissa = (mod(float(int((rgba[2]) + 0.5)), 128.0)) * 65536.0 + rgba[1] * 256.0 + rgba[0] + 8388608.0;\n return Sign * exp2(Exponent - 23.0) * Mantissa;\n}\n#if CC_USE_MORPH\n layout(std140) uniform CCMorph {\n vec4 cc_displacementWeights[15];\n vec4 cc_displacementTextureInfo;\n };\n #if CC_MORPH_TARGET_HAS_POSITION\n uniform sampler2D cc_PositionDisplacements;\n #endif\n #if CC_MORPH_TARGET_HAS_NORMAL\n uniform sampler2D cc_NormalDisplacements;\n #endif\n #if CC_MORPH_TARGET_HAS_TANGENT\n uniform sampler2D cc_TangentDisplacements;\n #endif\n vec2 getPixelLocation(vec2 textureResolution, int pixelIndex) {\n float pixelIndexF = float(pixelIndex);\n float x = mod(pixelIndexF, textureResolution.x);\n float y = floor(pixelIndexF / textureResolution.x);\n return vec2(x, y);\n }\n vec2 getPixelCoordFromLocation(vec2 location, vec2 textureResolution) {\n return (vec2(location.x, location.y) + .5) / textureResolution;\n }\n #if CC_DEVICE_SUPPORT_FLOAT_TEXTURE\n vec4 fetchVec3ArrayFromTexture(sampler2D tex, int pixelIndex) {\n ivec2 texSize = textureSize(tex, 0);\n return texelFetch(tex, ivec2(pixelIndex % texSize.x, pixelIndex / texSize.x), 0);\n }\n #else\n vec4 fetchVec3ArrayFromTexture(sampler2D tex, int elementIndex) {\n int pixelIndex = elementIndex * 4;\n vec2 location = getPixelLocation(cc_displacementTextureInfo.xy, pixelIndex);\n vec2 x = getPixelCoordFromLocation(location + vec2(0.0, 0.0), cc_displacementTextureInfo.xy);\n vec2 y = getPixelCoordFromLocation(location + vec2(1.0, 0.0), cc_displacementTextureInfo.xy);\n vec2 z = getPixelCoordFromLocation(location + vec2(2.0, 0.0), cc_displacementTextureInfo.xy);\n return vec4(\n decode32(texture(tex, x)),\n decode32(texture(tex, y)),\n decode32(texture(tex, z)),\n 1.0\n );\n }\n #endif\n float getDisplacementWeight(int index) {\n int quot = index / 4;\n int remainder = index - quot * 4;\n if (remainder == 0) {\n return cc_displacementWeights[quot].x;\n } else if (remainder == 1) {\n return cc_displacementWeights[quot].y;\n } else if (remainder == 2) {\n return cc_displacementWeights[quot].z;\n } else {\n return cc_displacementWeights[quot].w;\n }\n }\n vec3 getVec3DisplacementFromTexture(sampler2D tex, int vertexIndex) {\n #if CC_MORPH_PRECOMPUTED\n return fetchVec3ArrayFromTexture(tex, vertexIndex).rgb;\n #else\n vec3 result = vec3(0, 0, 0);\n int nVertices = int(cc_displacementTextureInfo.z);\n for (int iTarget = 0; iTarget < CC_MORPH_TARGET_COUNT; ++iTarget) {\n result += (fetchVec3ArrayFromTexture(tex, nVertices * iTarget + vertexIndex).rgb * getDisplacementWeight(iTarget));\n }\n return result;\n #endif\n }\n #if CC_MORPH_TARGET_HAS_POSITION\n vec3 getPositionDisplacement(int vertexId) {\n return getVec3DisplacementFromTexture(cc_PositionDisplacements, vertexId);\n }\n #endif\n #if CC_MORPH_TARGET_HAS_NORMAL\n vec3 getNormalDisplacement(int vertexId) {\n return getVec3DisplacementFromTexture(cc_NormalDisplacements, vertexId);\n }\n #endif\n #if CC_MORPH_TARGET_HAS_TANGENT\n vec3 getTangentDisplacement(int vertexId) {\n return getVec3DisplacementFromTexture(cc_TangentDisplacements, vertexId);\n }\n #endif\n void applyMorph (inout vec4 position, inout vec3 normal, inout vec4 tangent) {\n int vertexId = getVertexId();\n #if CC_MORPH_TARGET_HAS_POSITION\n position.xyz = position.xyz + getPositionDisplacement(vertexId);\n #endif\n #if CC_MORPH_TARGET_HAS_NORMAL\n normal.xyz = normal.xyz + getNormalDisplacement(vertexId);\n #endif\n #if CC_MORPH_TARGET_HAS_TANGENT\n tangent.xyz = tangent.xyz + getTangentDisplacement(vertexId);\n #endif\n }\n void applyMorph (inout vec4 position) {\n #if CC_MORPH_TARGET_HAS_POSITION\n position.xyz = position.xyz + getPositionDisplacement(getVertexId());\n #endif\n }\n#endif\n#if CC_USE_SKINNING\n #if CC_USE_BAKED_ANIMATION\n layout(std140) uniform CCSkinningTexture {\n highp vec4 cc_jointTextureInfo;\n };\n layout(std140) uniform CCSkinningAnimation {\n highp vec4 cc_jointAnimInfo;\n };\n uniform highp sampler2D cc_jointTexture;\n void CCGetJointTextureCoords(float pixelsPerJoint, float jointIdx, out highp float x, out highp float y, out highp float invSize)\n {\n #if USE_INSTANCING\n highp float temp = pixelsPerJoint * (a_jointAnimInfo.x * a_jointAnimInfo.y + jointIdx) + a_jointAnimInfo.z;\n #else\n highp float temp = pixelsPerJoint * (cc_jointAnimInfo.x * cc_jointTextureInfo.y + jointIdx) + cc_jointTextureInfo.z;\n #endif\n invSize = cc_jointTextureInfo.w;\n highp float tempY = floor(temp * invSize);\n x = floor(temp - tempY * cc_jointTextureInfo.x);\n y = (tempY + 0.5) * invSize;\n }\n #else\n #if CC_USE_REAL_TIME_JOINT_TEXTURE\n uniform highp sampler2D cc_realtimeJoint;\n #else\n layout(std140) uniform CCSkinning {\n highp vec4 cc_joints[CC_JOINT_UNIFORM_CAPACITY * 3];\n };\n #endif\n #endif\n #if CC_USE_BAKED_ANIMATION\n #if CC_DEVICE_SUPPORT_FLOAT_TEXTURE\n mat4 getJointMatrix (float i) {\n highp float x, y, invSize;\n CCGetJointTextureCoords(3.0, i, x, y, invSize);\n vec4 v1 = texture(cc_jointTexture, vec2((x + 0.5) * invSize, y));\n vec4 v2 = texture(cc_jointTexture, vec2((x + 1.5) * invSize, y));\n vec4 v3 = texture(cc_jointTexture, vec2((x + 2.5) * invSize, y));\n return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));\n }\n #else\n mat4 getJointMatrix (float i) {\n highp float x, y, invSize;\n CCGetJointTextureCoords(12.0, i, x, y, invSize);\n vec4 v1 = vec4(\n decode32(texture(cc_jointTexture, vec2((x + 0.5) * invSize, y))),\n decode32(texture(cc_jointTexture, vec2((x + 1.5) * invSize, y))),\n decode32(texture(cc_jointTexture, vec2((x + 2.5) * invSize, y))),\n decode32(texture(cc_jointTexture, vec2((x + 3.5) * invSize, y)))\n );\n vec4 v2 = vec4(\n decode32(texture(cc_jointTexture, vec2((x + 4.5) * invSize, y))),\n decode32(texture(cc_jointTexture, vec2((x + 5.5) * invSize, y))),\n decode32(texture(cc_jointTexture, vec2((x + 6.5) * invSize, y))),\n decode32(texture(cc_jointTexture, vec2((x + 7.5) * invSize, y)))\n );\n vec4 v3 = vec4(\n decode32(texture(cc_jointTexture, vec2((x + 8.5) * invSize, y))),\n decode32(texture(cc_jointTexture, vec2((x + 9.5) * invSize, y))),\n decode32(texture(cc_jointTexture, vec2((x + 10.5) * invSize, y))),\n decode32(texture(cc_jointTexture, vec2((x + 11.5) * invSize, y)))\n );\n return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));\n }\n #endif\n #else\n #if CC_USE_REAL_TIME_JOINT_TEXTURE\n #if CC_DEVICE_SUPPORT_FLOAT_TEXTURE\n mat4 getJointMatrix (float i) {\n float x = i;\n vec4 v1 = texture(cc_realtimeJoint, vec2( x / 256.0, 0.5 / 3.0));\n vec4 v2 = texture(cc_realtimeJoint, vec2( x / 256.0, 1.5 / 3.0));\n vec4 v3 = texture(cc_realtimeJoint, vec2( x / 256.0, 2.5 / 3.0));\n return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));\n }\n #else\n mat4 getJointMatrix (float i) {\n float x = 4.0 * i;\n vec4 v1 = vec4(\n decode32(texture(cc_realtimeJoint, vec2((x + 0.5)/ 1024.0, 0.5 / 3.0))),\n decode32(texture(cc_realtimeJoint, vec2((x + 1.5)/ 1024.0, 0.5 / 3.0))),\n decode32(texture(cc_realtimeJoint, vec2((x + 2.5)/ 1024.0, 0.5 / 3.0))),\n decode32(texture(cc_realtimeJoint, vec2((x + 3.5)/ 1024.0, 0.5 / 3.0)))\n );\n vec4 v2 = vec4(\n decode32(texture(cc_realtimeJoint, vec2((x + 0.5)/ 1024.0, 1.5 / 3.0))),\n decode32(texture(cc_realtimeJoint, vec2((x + 1.5)/ 1024.0, 1.5 / 3.0))),\n decode32(texture(cc_realtimeJoint, vec2((x + 2.5)/ 1024.0, 1.5 / 3.0))),\n decode32(texture(cc_realtimeJoint, vec2((x + 3.5)/ 1024.0, 1.5 / 3.0)))\n );\n vec4 v3 = vec4(\n decode32(texture(cc_realtimeJoint, vec2((x + 0.5)/ 1024.0, 2.5 / 3.0))),\n decode32(texture(cc_realtimeJoint, vec2((x + 1.5)/ 1024.0, 2.5 / 3.0))),\n decode32(texture(cc_realtimeJoint, vec2((x + 2.5)/ 1024.0, 2.5 / 3.0))),\n decode32(texture(cc_realtimeJoint, vec2((x + 3.5)/ 1024.0, 2.5 / 3.0)))\n );\n return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));\n }\n #endif\n #else\n mat4 getJointMatrix (float i) {\n int idx = int(i);\n vec4 v1 = cc_joints[idx * 3];\n vec4 v2 = cc_joints[idx * 3 + 1];\n vec4 v3 = cc_joints[idx * 3 + 2];\n return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));\n }\n #endif\n #endif\n mat4 skinMatrix () {\n vec4 joints = vec4(a_joints);\n return getJointMatrix(joints.x) * a_weights.x\n + getJointMatrix(joints.y) * a_weights.y\n + getJointMatrix(joints.z) * a_weights.z\n + getJointMatrix(joints.w) * a_weights.w;\n }\n void CCSkin (inout vec4 position) {\n mat4 m = skinMatrix();\n position = m * position;\n }\n void CCSkin (inout vec4 position, inout vec3 normal, inout vec4 tangent) {\n mat4 m = skinMatrix();\n position = m * position;\n normal = (m * vec4(normal, 0.0)).xyz;\n tangent.xyz = (m * vec4(tangent.xyz, 0.0)).xyz;\n }\n#endif\nvoid CCVertInput(inout vec4 In)\n{\n In = vec4(a_position, 1.0);\n #if CC_USE_MORPH\n applyMorph(In);\n #endif\n #if CC_USE_SKINNING\n CCSkin(In);\n #endif\n}\nlayout(std140) uniform CCGlobal {\n highp vec4 cc_time;\n mediump vec4 cc_screenSize;\n mediump vec4 cc_nativeSize;\n mediump vec4 cc_probeInfo;\n mediump vec4 cc_debug_view_mode;\n};\nlayout(std140) uniform CCCamera {\n highp mat4 cc_matView;\n highp mat4 cc_matViewInv;\n highp mat4 cc_matProj;\n highp mat4 cc_matProjInv;\n highp mat4 cc_matViewProj;\n highp mat4 cc_matViewProjInv;\n highp vec4 cc_cameraPos;\n mediump vec4 cc_surfaceTransform;\n mediump vec4 cc_screenScale;\n mediump vec4 cc_exposure;\n mediump vec4 cc_mainLitDir;\n mediump vec4 cc_mainLitColor;\n mediump vec4 cc_ambientSky;\n mediump vec4 cc_ambientGround;\n mediump vec4 cc_fogColor;\n mediump vec4 cc_fogBase;\n mediump vec4 cc_fogAdd;\n mediump vec4 cc_nearFar;\n mediump vec4 cc_viewPort;\n};\n#if !USE_INSTANCING\n layout(std140) uniform CCLocal {\n highp mat4 cc_matWorld;\n highp mat4 cc_matWorldIT;\n highp vec4 cc_lightingMapUVParam;\n highp vec4 cc_localShadowBias;\n highp vec4 cc_reflectionProbeData1;\n highp vec4 cc_reflectionProbeData2;\n highp vec4 cc_reflectionProbeBlendData1;\n highp vec4 cc_reflectionProbeBlendData2;\n };\n#endif\nvoid CCGetWorldMatrixFull(out mat4 matWorld, out mat4 matWorldIT)\n{\n #if USE_INSTANCING\n matWorld = mat4(\n vec4(a_matWorld0.xyz, 0.0),\n vec4(a_matWorld1.xyz, 0.0),\n vec4(a_matWorld2.xyz, 0.0),\n vec4(a_matWorld0.w, a_matWorld1.w, a_matWorld2.w, 1.0)\n );\n vec3 scale = 1.0 / vec3(length(a_matWorld0.xyz), length(a_matWorld1.xyz), length(a_matWorld2.xyz));\n vec3 scale2 = scale * scale;\n matWorldIT = mat4(\n vec4(a_matWorld0.xyz * scale2.x, 0.0),\n vec4(a_matWorld1.xyz * scale2.y, 0.0),\n vec4(a_matWorld2.xyz * scale2.z, 0.0),\n vec4(0.0, 0.0, 0.0, 1.0)\n );\n #else\n matWorld = cc_matWorld;\n matWorldIT = cc_matWorldIT;\n #endif\n}\nlayout(std140) uniform CCShadow {\n highp mat4 cc_matLightView;\n highp mat4 cc_matLightViewProj;\n highp vec4 cc_shadowInvProjDepthInfo;\n highp vec4 cc_shadowProjDepthInfo;\n highp vec4 cc_shadowProjInfo;\n mediump vec4 cc_shadowNFLSInfo;\n mediump vec4 cc_shadowWHPBInfo;\n mediump vec4 cc_shadowLPNNInfo;\n lowp vec4 cc_shadowColor;\n mediump vec4 cc_planarNDInfo;\n};\nvec4 CalculatePlanarShadowPos(vec3 meshWorldPos, vec3 cameraPos, vec3 lightDir, vec4 plane) {\n vec3 P = meshWorldPos;\n vec3 L = lightDir;\n vec3 N = plane.xyz;\n float d = plane.w + EPSILON_LOWP;\n float dist = (-d - dot(P, N)) / (dot(L, N) + EPSILON_LOWP);\n vec3 shadowPos = P + L * dist;\n return vec4(shadowPos, dist);\n}\nvec4 CalculatePlanarShadowClipPos(vec4 shadowPos, vec3 cameraPos, mat4 matView, mat4 matProj, vec4 nearFar) {\n vec4 camPos = matView * vec4(shadowPos.xyz, 1.0);\n float lerpCoef = saturate((nearFar.z < 0.0 ? -camPos.z : camPos.z) / (nearFar.y - nearFar.x));\n camPos.z += mix(nearFar.x * 0.01, nearFar.y * EPSILON_LOWP, lerpCoef);\n return matProj * camPos;\n}\nout float v_dist;\nvec4 vert () {\n vec4 position;\n CCVertInput(position);\n mat4 matWorld, matWorldIT;\n CCGetWorldMatrixFull(matWorld, matWorldIT);\n vec3 worldPos = (matWorld * position).xyz;\n vec4 shadowPos = CalculatePlanarShadowPos(worldPos, cc_cameraPos.xyz, cc_mainLitDir.xyz, cc_planarNDInfo);\n position = CalculatePlanarShadowClipPos(shadowPos, cc_cameraPos.xyz, cc_matView, cc_matProj, cc_nearFar);\n v_dist = shadowPos.w;\n return position;\n}\nvoid main() { gl_Position = vert(); }","frag":"\nprecision highp float;\nlayout(std140) uniform CCShadow {\n highp mat4 cc_matLightView;\n highp mat4 cc_matLightViewProj;\n highp vec4 cc_shadowInvProjDepthInfo;\n highp vec4 cc_shadowProjDepthInfo;\n highp vec4 cc_shadowProjInfo;\n mediump vec4 cc_shadowNFLSInfo;\n mediump vec4 cc_shadowWHPBInfo;\n mediump vec4 cc_shadowLPNNInfo;\n lowp vec4 cc_shadowColor;\n mediump vec4 cc_planarNDInfo;\n};\nlayout(std140) uniform CCGlobal {\n highp vec4 cc_time;\n mediump vec4 cc_screenSize;\n mediump vec4 cc_nativeSize;\n mediump vec4 cc_probeInfo;\n mediump vec4 cc_debug_view_mode;\n};\nlayout(std140) uniform CCCamera {\n highp mat4 cc_matView;\n highp mat4 cc_matViewInv;\n highp mat4 cc_matProj;\n highp mat4 cc_matProjInv;\n highp mat4 cc_matViewProj;\n highp mat4 cc_matViewProjInv;\n highp vec4 cc_cameraPos;\n mediump vec4 cc_surfaceTransform;\n mediump vec4 cc_screenScale;\n mediump vec4 cc_exposure;\n mediump vec4 cc_mainLitDir;\n mediump vec4 cc_mainLitColor;\n mediump vec4 cc_ambientSky;\n mediump vec4 cc_ambientGround;\n mediump vec4 cc_fogColor;\n mediump vec4 cc_fogBase;\n mediump vec4 cc_fogAdd;\n mediump vec4 cc_nearFar;\n mediump vec4 cc_viewPort;\n};\nvec4 CCFragOutput (vec4 color) {\n return color;\n}\nin float v_dist;\nvec4 frag () {\n if(v_dist < 0.0)\n discard;\n return CCFragOutput(cc_shadowColor);\n}\nlayout(location = 0) out vec4 cc_FragColor;\nvoid main() { cc_FragColor = frag(); }"},"glsl1":{"vert":"\nprecision highp float;\n#define QUATER_PI 0.78539816340\n#define HALF_PI 1.57079632679\n#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI4 12.5663706144\n#define INV_QUATER_PI 1.27323954474\n#define INV_HALF_PI 0.63661977237\n#define INV_PI 0.31830988618\n#define INV_PI2 0.15915494309\n#define INV_PI4 0.07957747155\n#define EPSILON 1e-6\n#define EPSILON_LOWP 1e-4\n#define LOG2 1.442695\n#define EXP_VALUE 2.71828183\n#define FP_MAX 65504.0\n#define FP_SCALE 0.0009765625\n#define FP_SCALE_INV 1024.0\n#define GRAY_VECTOR vec3(0.299, 0.587, 0.114)\nfloat saturate(float value) { return clamp(value, 0.0, 1.0); }\nvec2 saturate(vec2 value) { return clamp(value, vec2(0.0), vec2(1.0)); }\nvec3 saturate(vec3 value) { return clamp(value, vec3(0.0), vec3(1.0)); }\nvec4 saturate(vec4 value) { return clamp(value, vec4(0.0), vec4(1.0)); }\n#define LIGHT_MAP_TYPE_DISABLED 0\n#define LIGHT_MAP_TYPE_ALL_IN_ONE 1\n#define LIGHT_MAP_TYPE_INDIRECT_OCCLUSION 2\n#define REFLECTION_PROBE_TYPE_NONE 0\n#define REFLECTION_PROBE_TYPE_CUBE 1\n#define REFLECTION_PROBE_TYPE_PLANAR 2\n#define REFLECTION_PROBE_TYPE_BLEND 3\n#define REFLECTION_PROBE_TYPE_BLEND_AND_SKYBOX 4\n#define LIGHT_TYPE_DIRECTIONAL 0.0\n#define LIGHT_TYPE_SPHERE 1.0\n#define LIGHT_TYPE_SPOT 2.0\n#define LIGHT_TYPE_POINT 3.0\n#define LIGHT_TYPE_RANGED_DIRECTIONAL 4.0\n#define IS_DIRECTIONAL_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_DIRECTIONAL)) < EPSILON_LOWP)\n#define IS_SPHERE_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_SPHERE)) < EPSILON_LOWP)\n#define IS_SPOT_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_SPOT)) < EPSILON_LOWP)\n#define IS_POINT_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_POINT)) < EPSILON_LOWP)\n#define IS_RANGED_DIRECTIONAL_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_RANGED_DIRECTIONAL)) < EPSILON_LOWP)\n#define TONE_MAPPING_ACES 0\n#define TONE_MAPPING_LINEAR 1\n#define SURFACES_MAX_TRANSMIT_DEPTH_VALUE 999999.0\n#ifndef CC_SURFACES_DEBUG_VIEW_SINGLE\n #define CC_SURFACES_DEBUG_VIEW_SINGLE 1\n#endif\n#ifndef CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC\n #define CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC 2\n#endif\nstruct StandardVertInput {\n highp vec4 position;\n vec3 normal;\n vec4 tangent;\n};\nattribute vec3 a_position;\nattribute vec3 a_normal;\nattribute vec2 a_texCoord;\nattribute vec4 a_tangent;\n#if CC_USE_SKINNING\n attribute vec4 a_joints;\n attribute vec4 a_weights;\n#endif\n#if USE_INSTANCING\n #if CC_USE_BAKED_ANIMATION\n attribute highp vec4 a_jointAnimInfo;\n #endif\n attribute vec4 a_matWorld0;\n attribute vec4 a_matWorld1;\n attribute vec4 a_matWorld2;\n #if CC_USE_LIGHTMAP\n attribute vec4 a_lightingMapUVParam;\n #endif\n #if CC_USE_REFLECTION_PROBE || CC_RECEIVE_SHADOW\n #if CC_RECEIVE_SHADOW\n #endif\n attribute vec4 a_localShadowBiasAndProbeId;\n #endif\n #if CC_USE_REFLECTION_PROBE\n attribute vec4 a_reflectionProbeData;\n #endif\n #if CC_USE_LIGHT_PROBE\n attribute vec4 a_sh_linear_const_r;\n attribute vec4 a_sh_linear_const_g;\n attribute vec4 a_sh_linear_const_b;\n #endif\n#endif\n#if CC_USE_MORPH\n attribute float a_vertexId;\n int getVertexId() {\n return int(a_vertexId);\n }\n#endif\nhighp float decode32 (highp vec4 rgba) {\n rgba = rgba * 255.0;\n highp float Sign = 1.0 - (step(128.0, (rgba[3]) + 0.5)) * 2.0;\n highp float Exponent = 2.0 * (mod(float(int((rgba[3]) + 0.5)), 128.0)) + (step(128.0, (rgba[2]) + 0.5)) - 127.0;\n highp float Mantissa = (mod(float(int((rgba[2]) + 0.5)), 128.0)) * 65536.0 + rgba[1] * 256.0 + rgba[0] + 8388608.0;\n return Sign * exp2(Exponent - 23.0) * Mantissa;\n}\n#if CC_USE_MORPH\n uniform vec4 cc_displacementWeights[15];\n uniform vec4 cc_displacementTextureInfo;\n #if CC_MORPH_TARGET_HAS_POSITION\n uniform sampler2D cc_PositionDisplacements;\n #endif\n #if CC_MORPH_TARGET_HAS_NORMAL\n uniform sampler2D cc_NormalDisplacements;\n #endif\n #if CC_MORPH_TARGET_HAS_TANGENT\n uniform sampler2D cc_TangentDisplacements;\n #endif\n vec2 getPixelLocation(vec2 textureResolution, int pixelIndex) {\n float pixelIndexF = float(pixelIndex);\n float x = mod(pixelIndexF, textureResolution.x);\n float y = floor(pixelIndexF / textureResolution.x);\n return vec2(x, y);\n }\n vec2 getPixelCoordFromLocation(vec2 location, vec2 textureResolution) {\n return (vec2(location.x, location.y) + .5) / textureResolution;\n }\n #if CC_DEVICE_SUPPORT_FLOAT_TEXTURE\n vec4 fetchVec3ArrayFromTexture(sampler2D tex, int elementIndex) {\n int pixelIndex = elementIndex;\n vec2 location = getPixelLocation(cc_displacementTextureInfo.xy, pixelIndex);\n vec2 uv = getPixelCoordFromLocation(location, cc_displacementTextureInfo.xy);\n return texture2D(tex, uv);\n }\n #else\n vec4 fetchVec3ArrayFromTexture(sampler2D tex, int elementIndex) {\n int pixelIndex = elementIndex * 4;\n vec2 location = getPixelLocation(cc_displacementTextureInfo.xy, pixelIndex);\n vec2 x = getPixelCoordFromLocation(location + vec2(0.0, 0.0), cc_displacementTextureInfo.xy);\n vec2 y = getPixelCoordFromLocation(location + vec2(1.0, 0.0), cc_displacementTextureInfo.xy);\n vec2 z = getPixelCoordFromLocation(location + vec2(2.0, 0.0), cc_displacementTextureInfo.xy);\n return vec4(\n decode32(texture2D(tex, x)),\n decode32(texture2D(tex, y)),\n decode32(texture2D(tex, z)),\n 1.0\n );\n }\n #endif\n float getDisplacementWeight(int index) {\n int quot = index / 4;\n int remainder = index - quot * 4;\n if (remainder == 0) {\n return cc_displacementWeights[quot].x;\n } else if (remainder == 1) {\n return cc_displacementWeights[quot].y;\n } else if (remainder == 2) {\n return cc_displacementWeights[quot].z;\n } else {\n return cc_displacementWeights[quot].w;\n }\n }\n vec3 getVec3DisplacementFromTexture(sampler2D tex, int vertexIndex) {\n #if CC_MORPH_PRECOMPUTED\n return fetchVec3ArrayFromTexture(tex, vertexIndex).rgb;\n #else\n vec3 result = vec3(0, 0, 0);\n int nVertices = int(cc_displacementTextureInfo.z);\n for (int iTarget = 0; iTarget < CC_MORPH_TARGET_COUNT; ++iTarget) {\n result += (fetchVec3ArrayFromTexture(tex, nVertices * iTarget + vertexIndex).rgb * getDisplacementWeight(iTarget));\n }\n return result;\n #endif\n }\n #if CC_MORPH_TARGET_HAS_POSITION\n vec3 getPositionDisplacement(int vertexId) {\n return getVec3DisplacementFromTexture(cc_PositionDisplacements, vertexId);\n }\n #endif\n #if CC_MORPH_TARGET_HAS_NORMAL\n vec3 getNormalDisplacement(int vertexId) {\n return getVec3DisplacementFromTexture(cc_NormalDisplacements, vertexId);\n }\n #endif\n #if CC_MORPH_TARGET_HAS_TANGENT\n vec3 getTangentDisplacement(int vertexId) {\n return getVec3DisplacementFromTexture(cc_TangentDisplacements, vertexId);\n }\n #endif\n void applyMorph (inout vec4 position, inout vec3 normal, inout vec4 tangent) {\n int vertexId = getVertexId();\n #if CC_MORPH_TARGET_HAS_POSITION\n position.xyz = position.xyz + getPositionDisplacement(vertexId);\n #endif\n #if CC_MORPH_TARGET_HAS_NORMAL\n normal.xyz = normal.xyz + getNormalDisplacement(vertexId);\n #endif\n #if CC_MORPH_TARGET_HAS_TANGENT\n tangent.xyz = tangent.xyz + getTangentDisplacement(vertexId);\n #endif\n }\n void applyMorph (inout vec4 position) {\n #if CC_MORPH_TARGET_HAS_POSITION\n position.xyz = position.xyz + getPositionDisplacement(getVertexId());\n #endif\n }\n#endif\n#if CC_USE_SKINNING\n #if CC_USE_BAKED_ANIMATION\n uniform highp vec4 cc_jointTextureInfo;\n uniform highp vec4 cc_jointAnimInfo;\n uniform highp sampler2D cc_jointTexture;\n void CCGetJointTextureCoords(float pixelsPerJoint, float jointIdx, out highp float x, out highp float y, out highp float invSize)\n {\n #if USE_INSTANCING\n highp float temp = pixelsPerJoint * (a_jointAnimInfo.x * a_jointAnimInfo.y + jointIdx) + a_jointAnimInfo.z;\n #else\n highp float temp = pixelsPerJoint * (cc_jointAnimInfo.x * cc_jointTextureInfo.y + jointIdx) + cc_jointTextureInfo.z;\n #endif\n invSize = cc_jointTextureInfo.w;\n highp float tempY = floor(temp * invSize);\n x = floor(temp - tempY * cc_jointTextureInfo.x);\n y = (tempY + 0.5) * invSize;\n }\n #else\n #if CC_USE_REAL_TIME_JOINT_TEXTURE\n uniform highp sampler2D cc_realtimeJoint;\n #else\n uniform highp vec4 cc_joints[CC_JOINT_UNIFORM_CAPACITY * 3];\n #endif\n #endif\n #if CC_USE_BAKED_ANIMATION\n #if CC_DEVICE_SUPPORT_FLOAT_TEXTURE\n mat4 getJointMatrix (float i) {\n highp float x, y, invSize;\n CCGetJointTextureCoords(3.0, i, x, y, invSize);\n vec4 v1 = texture2D(cc_jointTexture, vec2((x + 0.5) * invSize, y));\n vec4 v2 = texture2D(cc_jointTexture, vec2((x + 1.5) * invSize, y));\n vec4 v3 = texture2D(cc_jointTexture, vec2((x + 2.5) * invSize, y));\n return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));\n }\n #else\n mat4 getJointMatrix (float i) {\n highp float x, y, invSize;\n CCGetJointTextureCoords(12.0, i, x, y, invSize);\n vec4 v1 = vec4(\n decode32(texture2D(cc_jointTexture, vec2((x + 0.5) * invSize, y))),\n decode32(texture2D(cc_jointTexture, vec2((x + 1.5) * invSize, y))),\n decode32(texture2D(cc_jointTexture, vec2((x + 2.5) * invSize, y))),\n decode32(texture2D(cc_jointTexture, vec2((x + 3.5) * invSize, y)))\n );\n vec4 v2 = vec4(\n decode32(texture2D(cc_jointTexture, vec2((x + 4.5) * invSize, y))),\n decode32(texture2D(cc_jointTexture, vec2((x + 5.5) * invSize, y))),\n decode32(texture2D(cc_jointTexture, vec2((x + 6.5) * invSize, y))),\n decode32(texture2D(cc_jointTexture, vec2((x + 7.5) * invSize, y)))\n );\n vec4 v3 = vec4(\n decode32(texture2D(cc_jointTexture, vec2((x + 8.5) * invSize, y))),\n decode32(texture2D(cc_jointTexture, vec2((x + 9.5) * invSize, y))),\n decode32(texture2D(cc_jointTexture, vec2((x + 10.5) * invSize, y))),\n decode32(texture2D(cc_jointTexture, vec2((x + 11.5) * invSize, y)))\n );\n return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));\n }\n #endif\n #else\n #if CC_USE_REAL_TIME_JOINT_TEXTURE\n #if CC_DEVICE_SUPPORT_FLOAT_TEXTURE\n mat4 getJointMatrix (float i) {\n float x = i;\n vec4 v1 = texture2D(cc_realtimeJoint, vec2( x / 256.0, 0.5 / 3.0));\n vec4 v2 = texture2D(cc_realtimeJoint, vec2( x / 256.0, 1.5 / 3.0));\n vec4 v3 = texture2D(cc_realtimeJoint, vec2( x / 256.0, 2.5 / 3.0));\n return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));\n }\n #else\n mat4 getJointMatrix (float i) {\n float x = 4.0 * i;\n vec4 v1 = vec4(\n decode32(texture2D(cc_realtimeJoint, vec2((x + 0.5)/ 1024.0, 0.5 / 3.0))),\n decode32(texture2D(cc_realtimeJoint, vec2((x + 1.5)/ 1024.0, 0.5 / 3.0))),\n decode32(texture2D(cc_realtimeJoint, vec2((x + 2.5)/ 1024.0, 0.5 / 3.0))),\n decode32(texture2D(cc_realtimeJoint, vec2((x + 3.5)/ 1024.0, 0.5 / 3.0)))\n );\n vec4 v2 = vec4(\n decode32(texture2D(cc_realtimeJoint, vec2((x + 0.5)/ 1024.0, 1.5 / 3.0))),\n decode32(texture2D(cc_realtimeJoint, vec2((x + 1.5)/ 1024.0, 1.5 / 3.0))),\n decode32(texture2D(cc_realtimeJoint, vec2((x + 2.5)/ 1024.0, 1.5 / 3.0))),\n decode32(texture2D(cc_realtimeJoint, vec2((x + 3.5)/ 1024.0, 1.5 / 3.0)))\n );\n vec4 v3 = vec4(\n decode32(texture2D(cc_realtimeJoint, vec2((x + 0.5)/ 1024.0, 2.5 / 3.0))),\n decode32(texture2D(cc_realtimeJoint, vec2((x + 1.5)/ 1024.0, 2.5 / 3.0))),\n decode32(texture2D(cc_realtimeJoint, vec2((x + 2.5)/ 1024.0, 2.5 / 3.0))),\n decode32(texture2D(cc_realtimeJoint, vec2((x + 3.5)/ 1024.0, 2.5 / 3.0)))\n );\n return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));\n }\n #endif\n #else\n mat4 getJointMatrix (float i) {\n int idx = int(i);\n vec4 v1 = cc_joints[idx * 3];\n vec4 v2 = cc_joints[idx * 3 + 1];\n vec4 v3 = cc_joints[idx * 3 + 2];\n return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));\n }\n #endif\n #endif\n mat4 skinMatrix () {\n vec4 joints = vec4(a_joints);\n return getJointMatrix(joints.x) * a_weights.x\n + getJointMatrix(joints.y) * a_weights.y\n + getJointMatrix(joints.z) * a_weights.z\n + getJointMatrix(joints.w) * a_weights.w;\n }\n void CCSkin (inout vec4 position) {\n mat4 m = skinMatrix();\n position = m * position;\n }\n void CCSkin (inout vec4 position, inout vec3 normal, inout vec4 tangent) {\n mat4 m = skinMatrix();\n position = m * position;\n normal = (m * vec4(normal, 0.0)).xyz;\n tangent.xyz = (m * vec4(tangent.xyz, 0.0)).xyz;\n }\n#endif\nvoid CCVertInput(inout vec4 In)\n{\n In = vec4(a_position, 1.0);\n #if CC_USE_MORPH\n applyMorph(In);\n #endif\n #if CC_USE_SKINNING\n CCSkin(In);\n #endif\n}\nuniform highp mat4 cc_matView;\n uniform highp mat4 cc_matProj;\n uniform highp vec4 cc_cameraPos;\n uniform mediump vec4 cc_mainLitDir;\n uniform mediump vec4 cc_nearFar;\n#if !USE_INSTANCING\n uniform highp mat4 cc_matWorld;\n uniform highp mat4 cc_matWorldIT;\n#endif\nvoid CCGetWorldMatrixFull(out mat4 matWorld, out mat4 matWorldIT)\n{\n #if USE_INSTANCING\n matWorld = mat4(\n vec4(a_matWorld0.xyz, 0.0),\n vec4(a_matWorld1.xyz, 0.0),\n vec4(a_matWorld2.xyz, 0.0),\n vec4(a_matWorld0.w, a_matWorld1.w, a_matWorld2.w, 1.0)\n );\n vec3 scale = 1.0 / vec3(length(a_matWorld0.xyz), length(a_matWorld1.xyz), length(a_matWorld2.xyz));\n vec3 scale2 = scale * scale;\n matWorldIT = mat4(\n vec4(a_matWorld0.xyz * scale2.x, 0.0),\n vec4(a_matWorld1.xyz * scale2.y, 0.0),\n vec4(a_matWorld2.xyz * scale2.z, 0.0),\n vec4(0.0, 0.0, 0.0, 1.0)\n );\n #else\n matWorld = cc_matWorld;\n matWorldIT = cc_matWorldIT;\n #endif\n}\nuniform mediump vec4 cc_planarNDInfo;\nvec4 CalculatePlanarShadowPos(vec3 meshWorldPos, vec3 cameraPos, vec3 lightDir, vec4 plane) {\n vec3 P = meshWorldPos;\n vec3 L = lightDir;\n vec3 N = plane.xyz;\n float d = plane.w + EPSILON_LOWP;\n float dist = (-d - dot(P, N)) / (dot(L, N) + EPSILON_LOWP);\n vec3 shadowPos = P + L * dist;\n return vec4(shadowPos, dist);\n}\nvec4 CalculatePlanarShadowClipPos(vec4 shadowPos, vec3 cameraPos, mat4 matView, mat4 matProj, vec4 nearFar) {\n vec4 camPos = matView * vec4(shadowPos.xyz, 1.0);\n float lerpCoef = saturate((nearFar.z < 0.0 ? -camPos.z : camPos.z) / (nearFar.y - nearFar.x));\n camPos.z += mix(nearFar.x * 0.01, nearFar.y * EPSILON_LOWP, lerpCoef);\n return matProj * camPos;\n}\nvarying float v_dist;\nvec4 vert () {\n vec4 position;\n CCVertInput(position);\n mat4 matWorld, matWorldIT;\n CCGetWorldMatrixFull(matWorld, matWorldIT);\n vec3 worldPos = (matWorld * position).xyz;\n vec4 shadowPos = CalculatePlanarShadowPos(worldPos, cc_cameraPos.xyz, cc_mainLitDir.xyz, cc_planarNDInfo);\n position = CalculatePlanarShadowClipPos(shadowPos, cc_cameraPos.xyz, cc_matView, cc_matProj, cc_nearFar);\n v_dist = shadowPos.w;\n return position;\n}\nvoid main() { gl_Position = vert(); }","frag":"\nprecision highp float;\nuniform lowp vec4 cc_shadowColor;\nvec4 CCFragOutput (vec4 color) {\n return color;\n}\nvarying float v_dist;\nvec4 frag () {\n if(v_dist < 0.0)\n discard;\n return CCFragOutput(cc_shadowColor);\n}\nvoid main() { gl_FragColor = frag(); }"},"builtins":{"globals":{"blocks":[{"name":"CCGlobal","defines":[]},{"name":"CCCamera","defines":[]},{"name":"CCShadow","defines":[]}],"samplerTextures":[],"buffers":[],"images":[]},"locals":{"blocks":[{"name":"CCMorph","defines":["CC_USE_MORPH"]},{"name":"CCSkinningTexture","defines":["CC_USE_SKINNING","CC_USE_BAKED_ANIMATION"]},{"name":"CCSkinningAnimation","defines":["CC_USE_SKINNING","CC_USE_BAKED_ANIMATION"]},{"name":"CCSkinning","defines":["CC_USE_SKINNING","!CC_USE_BAKED_ANIMATION","!CC_USE_REAL_TIME_JOINT_TEXTURE"]},{"name":"CCLocal","defines":["!USE_INSTANCING"]}],"samplerTextures":[{"name":"cc_PositionDisplacements","defines":["CC_USE_MORPH","CC_MORPH_TARGET_HAS_POSITION"]},{"name":"cc_NormalDisplacements","defines":["CC_USE_MORPH","CC_MORPH_TARGET_HAS_NORMAL"]},{"name":"cc_TangentDisplacements","defines":["CC_USE_MORPH","CC_MORPH_TARGET_HAS_TANGENT"]},{"name":"cc_jointTexture","defines":["CC_USE_SKINNING","CC_USE_BAKED_ANIMATION"]},{"name":"cc_realtimeJoint","defines":["CC_USE_SKINNING","!CC_USE_BAKED_ANIMATION","CC_USE_REAL_TIME_JOINT_TEXTURE"]}],"buffers":[],"images":[]},"statistics":{"CC_EFFECT_USED_VERTEX_UNIFORM_VECTORS":90,"CC_EFFECT_USED_FRAGMENT_UNIFORM_VECTORS":58}},"defines":[{"name":"USE_INSTANCING","type":"boolean"},{"name":"CC_USE_SKINNING","type":"boolean"},{"name":"CC_USE_BAKED_ANIMATION","type":"boolean"},{"name":"CC_USE_LIGHTMAP","type":"boolean"},{"name":"CC_USE_REFLECTION_PROBE","type":"boolean"},{"name":"CC_RECEIVE_SHADOW","type":"boolean"},{"name":"CC_USE_LIGHT_PROBE","type":"boolean"},{"name":"CC_USE_MORPH","type":"boolean"},{"name":"CC_MORPH_TARGET_COUNT","type":"number","range":[2,8]},{"name":"CC_MORPH_TARGET_HAS_POSITION","type":"boolean"},{"name":"CC_MORPH_TARGET_HAS_NORMAL","type":"boolean"},{"name":"CC_MORPH_TARGET_HAS_TANGENT","type":"boolean"},{"name":"CC_MORPH_PRECOMPUTED","type":"boolean"},{"name":"CC_USE_REAL_TIME_JOINT_TEXTURE","type":"boolean"}]}],[{"name":"opaque","passes":[{"program":"builtin-unlit|unlit-vs:vert|unlit-fs:frag","properties":{"mainTexture":{"value":"grey","type":28},"tilingOffset":{"type":16,"value":[1,1,0,0]},"mainColor":{"linear":true,"type":16,"value":[1,1,1,1]},"colorScale":{"type":15,"value":[1,1,1],"handleInfo":["colorScaleAndCutoff",0,15]},"alphaThreshold":{"type":13,"value":[0.5],"handleInfo":["colorScaleAndCutoff",3,13]},"color":{"linear":true,"type":16,"handleInfo":["mainColor",0,16]},"colorScaleAndCutoff":{"type":16,"value":[1,1,1,0.5]}}},{"phase":"planar-shadow","propertyIndex":0,"program":"builtin-unlit|planar-shadow-vs:vert|planar-shadow-fs:frag","blendState":{"targets":[{"blend":true,"blendSrc":2,"blendDst":4,"blendDstAlpha":4}]},"depthStencilState":{"depthTest":true,"depthWrite":false,"stencilTestFront":true,"stencilFuncFront":5,"stencilPassOpFront":2,"stencilRefBack":128,"stencilRefFront":128,"stencilReadMaskBack":128,"stencilReadMaskFront":128,"stencilWriteMaskBack":128,"stencilWriteMaskFront":128}},{"phase":"deferred-forward","propertyIndex":0,"program":"builtin-unlit|unlit-vs:vert|unlit-fs:frag"}]},{"name":"transparent","passes":[{"program":"builtin-unlit|unlit-vs:vert|unlit-fs:frag","blendState":{"targets":[{"blend":true,"blendSrc":2,"blendDst":4,"blendDstAlpha":4}]},"depthStencilState":{"depthTest":true,"depthWrite":false},"properties":{"mainTexture":{"value":"grey","type":28},"tilingOffset":{"type":16,"value":[1,1,0,0]},"mainColor":{"linear":true,"type":16,"value":[1,1,1,1]},"colorScale":{"type":15,"value":[1,1,1],"handleInfo":["colorScaleAndCutoff",0,15]},"alphaThreshold":{"type":13,"value":[0.5],"handleInfo":["colorScaleAndCutoff",3,13]},"color":{"linear":true,"type":16,"handleInfo":["mainColor",0,16]},"colorScaleAndCutoff":{"type":16,"value":[1,1,1,0.5]}}},{"phase":"planar-shadow","propertyIndex":0,"program":"builtin-unlit|planar-shadow-vs:vert|planar-shadow-fs:frag","blendState":{"targets":[{"blend":true,"blendSrc":2,"blendDst":4,"blendDstAlpha":4}]},"depthStencilState":{"depthTest":true,"depthWrite":false,"stencilTestFront":true,"stencilFuncFront":5,"stencilPassOpFront":2,"stencilRefBack":128,"stencilRefFront":128,"stencilReadMaskBack":128,"stencilReadMaskFront":128,"stencilWriteMaskBack":128,"stencilWriteMaskFront":128}},{"phase":"deferred-forward","propertyIndex":0,"program":"builtin-unlit|unlit-vs:vert|unlit-fs:frag","blendState":{"targets":[{"blend":true,"blendSrc":2,"blendDst":4,"blendDstAlpha":4}]},"depthStencilState":{"depthTest":true,"depthWrite":false}}]},{"name":"add","passes":[{"program":"builtin-unlit|unlit-vs:vert|unlit-fs:frag","rasterizerState":{"cullMode":0},"blendState":{"targets":[{"blend":true,"blendSrc":2,"blendDst":1,"blendSrcAlpha":2,"blendDstAlpha":1}]},"depthStencilState":{"depthTest":true,"depthWrite":false},"properties":{"mainTexture":{"value":"grey","type":28},"tilingOffset":{"type":16,"value":[1,1,0,0]},"mainColor":{"linear":true,"type":16,"value":[1,1,1,1]},"colorScale":{"type":15,"value":[1,1,1],"handleInfo":["colorScaleAndCutoff",0,15]},"alphaThreshold":{"type":13,"value":[0.5],"handleInfo":["colorScaleAndCutoff",3,13]},"color":{"linear":true,"type":16,"handleInfo":["mainColor",0,16]},"colorScaleAndCutoff":{"type":16,"value":[1,1,1,0.5]}}},{"phase":"deferred-forward","propertyIndex":0,"program":"builtin-unlit|unlit-vs:vert|unlit-fs:frag","rasterizerState":{"cullMode":0},"blendState":{"targets":[{"blend":true,"blendSrc":2,"blendDst":1,"blendSrcAlpha":2,"blendDstAlpha":1}]},"depthStencilState":{"depthTest":true,"depthWrite":false}}]},{"name":"alpha-blend","passes":[{"program":"builtin-unlit|unlit-vs:vert|unlit-fs:frag","rasterizerState":{"cullMode":0},"blendState":{"targets":[{"blend":true,"blendSrc":2,"blendDst":4,"blendSrcAlpha":2,"blendDstAlpha":4}]},"depthStencilState":{"depthTest":true,"depthWrite":false},"properties":{"mainTexture":{"value":"grey","type":28},"tilingOffset":{"type":16,"value":[1,1,0,0]},"mainColor":{"linear":true,"type":16,"value":[1,1,1,1]},"colorScale":{"type":15,"value":[1,1,1],"handleInfo":["colorScaleAndCutoff",0,15]},"alphaThreshold":{"type":13,"value":[0.5],"handleInfo":["colorScaleAndCutoff",3,13]},"color":{"linear":true,"type":16,"handleInfo":["mainColor",0,16]},"colorScaleAndCutoff":{"type":16,"value":[1,1,1,0.5]}}},{"phase":"deferred-forward","propertyIndex":0,"program":"builtin-unlit|unlit-vs:vert|unlit-fs:frag","rasterizerState":{"cullMode":0},"blendState":{"targets":[{"blend":true,"blendSrc":2,"blendDst":4,"blendSrcAlpha":2,"blendDstAlpha":4}]},"depthStencilState":{"depthTest":true,"depthWrite":false}}]}]]],0,0,[],[],[]] diff --git a/headless/static/assets/internal/import/b5/b5d6115f-0370-4d7c-aad3-c194cc71cf98.json b/headless/static/assets/internal/import/b5/b5d6115f-0370-4d7c-aad3-c194cc71cf98.json new file mode 100644 index 00000000..4dd53ff0 --- /dev/null +++ b/headless/static/assets/internal/import/b5/b5d6115f-0370-4d7c-aad3-c194cc71cf98.json @@ -0,0 +1 @@ +[1,["c27215d8-6835-4b68-bfbb-bdeac6100c04"],["_effectAsset"],[["cc.Material",["_name","_props","_states","_defines"],-1]],[[0,0,1,2,3,5]],[[0,"default-spine-material",[{}],[{"rasterizerState":{},"depthStencilState":{},"blendState":{"targets":[{}]}}],[{"USE_TEXTURE":true,"CC_USE_EMBEDDED_ALPHA":false,"IS_GRAY":false}]]],0,0,[0],[0],[0]] diff --git a/headless/static/assets/internal/import/bc/bcd64cc6-2dd9-43f6-abbe-66318d332032.json b/headless/static/assets/internal/import/bc/bcd64cc6-2dd9-43f6-abbe-66318d332032.json new file mode 100644 index 00000000..746d08aa --- /dev/null +++ b/headless/static/assets/internal/import/bc/bcd64cc6-2dd9-43f6-abbe-66318d332032.json @@ -0,0 +1 @@ +[1,["a3cd009f-0ab0-420d-9278-b9fdab939bbc"],["_effectAsset"],[["cc.Material",["_name","_states","_defines","_props"],0,12]],[[0,0,1,2,3,4]],[[0,"missing-effect-material",[{"rasterizerState":{},"depthStencilState":{},"blendState":{"targets":[{}]}}],[{"USE_COLOR":true}],[[[{},"mainColor",8,[4,4278255615]]],11]]],0,0,[0],[0],[0]] diff --git a/headless/static/assets/internal/import/c2/c27215d8-6835-4b68-bfbb-bdeac6100c04.json b/headless/static/assets/internal/import/c2/c27215d8-6835-4b68-bfbb-bdeac6100c04.json new file mode 100644 index 00000000..42a2a287 --- /dev/null +++ b/headless/static/assets/internal/import/c2/c27215d8-6835-4b68-bfbb-bdeac6100c04.json @@ -0,0 +1 @@ +[1,0,0,[["cc.EffectAsset",["_name","shaders","techniques"],0]],[[0,0,1,2,4]],[[0,"for2d/builtin-spine",[{"hash":3152403458,"name":"for2d/builtin-spine|sprite-vs:vert|sprite-fs:frag","blocks":[{"name":"ALPHA_TEST_DATA","stageFlags":16,"binding":0,"members":[{"name":"alphaThreshold","type":13,"count":1}],"defines":["USE_ALPHA_TEST"]}],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[],"attributes":[{"name":"a_position","format":32,"location":0,"defines":[]},{"name":"a_texCoord","format":21,"location":1,"defines":[]},{"name":"a_color","format":44,"location":2,"defines":[]},{"name":"a_color2","format":44,"location":3,"defines":["TWO_COLORED"]}],"fragColors":[{"name":"cc_FragColor","typename":"vec4","type":16,"count":1,"stageFlags":16,"location":0,"defines":[]}],"descriptors":[{"rate":0,"blocks":[{"name":"CCLocal","stageFlags":1,"tags":{"builtin":"local"},"members":[{"name":"cc_matWorld","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matWorldIT","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_lightingMapUVParam","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_localShadowBias","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_reflectionProbeData1","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_reflectionProbeData2","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_reflectionProbeBlendData1","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_reflectionProbeBlendData2","typename":"vec4","type":16,"count":1,"precision":"highp "}],"defines":["USE_LOCAL"]}],"samplerTextures":[{"name":"cc_spriteTexture","typename":"sampler2D","type":28,"count":1,"stageFlags":16,"tags":{"builtin":"local"},"defines":[]}],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":1,"blocks":[{"name":"ALPHA_TEST_DATA","stageFlags":16,"binding":0,"members":[{"name":"alphaThreshold","type":13,"count":1}],"defines":["USE_ALPHA_TEST"]}],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":2,"blocks":[],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]},{"rate":3,"blocks":[{"name":"CCGlobal","stageFlags":1,"tags":{"builtin":"global"},"members":[{"name":"cc_time","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_screenSize","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_nativeSize","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_probeInfo","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_debug_view_mode","typename":"vec4","type":16,"count":1,"precision":"mediump "}],"defines":[]},{"name":"CCCamera","stageFlags":1,"tags":{"builtin":"global"},"members":[{"name":"cc_matView","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matViewInv","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matProj","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matProjInv","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matViewProj","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_matViewProjInv","typename":"mat4","type":25,"count":1,"precision":"highp "},{"name":"cc_cameraPos","typename":"vec4","type":16,"count":1,"precision":"highp "},{"name":"cc_surfaceTransform","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_screenScale","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_exposure","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_mainLitDir","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_mainLitColor","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_ambientSky","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_ambientGround","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_fogColor","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_fogBase","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_fogAdd","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_nearFar","typename":"vec4","type":16,"count":1,"precision":"mediump "},{"name":"cc_viewPort","typename":"vec4","type":16,"count":1,"precision":"mediump "}],"defines":[]}],"samplerTextures":[],"samplers":[],"textures":[],"buffers":[],"images":[],"subpassInputs":[]}],"glsl3":{"vert":"\nprecision highp float;\nlayout(std140) uniform CCGlobal {\n highp vec4 cc_time;\n mediump vec4 cc_screenSize;\n mediump vec4 cc_nativeSize;\n mediump vec4 cc_probeInfo;\n mediump vec4 cc_debug_view_mode;\n};\nlayout(std140) uniform CCCamera {\n highp mat4 cc_matView;\n highp mat4 cc_matViewInv;\n highp mat4 cc_matProj;\n highp mat4 cc_matProjInv;\n highp mat4 cc_matViewProj;\n highp mat4 cc_matViewProjInv;\n highp vec4 cc_cameraPos;\n mediump vec4 cc_surfaceTransform;\n mediump vec4 cc_screenScale;\n mediump vec4 cc_exposure;\n mediump vec4 cc_mainLitDir;\n mediump vec4 cc_mainLitColor;\n mediump vec4 cc_ambientSky;\n mediump vec4 cc_ambientGround;\n mediump vec4 cc_fogColor;\n mediump vec4 cc_fogBase;\n mediump vec4 cc_fogAdd;\n mediump vec4 cc_nearFar;\n mediump vec4 cc_viewPort;\n};\n#if USE_LOCAL\n layout(std140) uniform CCLocal {\n highp mat4 cc_matWorld;\n highp mat4 cc_matWorldIT;\n highp vec4 cc_lightingMapUVParam;\n highp vec4 cc_localShadowBias;\n highp vec4 cc_reflectionProbeData1;\n highp vec4 cc_reflectionProbeData2;\n highp vec4 cc_reflectionProbeBlendData1;\n highp vec4 cc_reflectionProbeBlendData2;\n };\n#endif\nin vec3 a_position;\nin vec2 a_texCoord;\nin vec4 a_color;\nout vec4 v_light;\nout vec2 uv0;\n#if TWO_COLORED\n in vec4 a_color2;\n out vec4 v_dark;\n#endif\nvec4 vert () {\n vec4 pos = vec4(a_position, 1);\n #if USE_LOCAL\n pos = cc_matWorld * pos;\n #endif\n pos = cc_matViewProj * pos;\n uv0 = a_texCoord;\n v_light = a_color;\n #if TWO_COLORED\n v_dark = a_color2;\n #endif\n return pos;\n}\nvoid main() { gl_Position = vert(); }","frag":"\nprecision highp float;\n#if USE_ALPHA_TEST\n layout(std140) uniform ALPHA_TEST_DATA {\n float alphaThreshold;\n };\n#endif\nvoid ALPHA_TEST (in vec4 color) {\n #if USE_ALPHA_TEST\n if (color.a < alphaThreshold) discard;\n #endif\n}\nvoid ALPHA_TEST (in float alpha) {\n #if USE_ALPHA_TEST\n if (alpha < alphaThreshold) discard;\n #endif\n}\nin vec4 v_light;\n#if TWO_COLORED\n in vec4 v_dark;\n#endif\nin vec2 uv0;\nuniform sampler2D cc_spriteTexture;\nvec4 frag () {\n vec4 o = vec4(1, 1, 1, 1);\n #if TWO_COLORED\n vec4 texColor = vec4(1, 1, 1, 1);\n texColor *= texture(cc_spriteTexture, uv0);\n o.a = texColor.a * v_light.a;\n o.rgb = ((texColor.a - 1.0) * v_dark.a + 1.0 - texColor.rgb) * v_dark.rgb + texColor.rgb * v_light.rgb;\n #else\n o *= texture(cc_spriteTexture, uv0);\n o *= v_light;\n #endif\n ALPHA_TEST(o);\n return o;\n}\nlayout(location = 0) out vec4 cc_FragColor;\nvoid main() { cc_FragColor = frag(); }"},"glsl1":{"vert":"\nprecision highp float;\nuniform highp mat4 cc_matViewProj;\n#if USE_LOCAL\n uniform highp mat4 cc_matWorld;\n#endif\nattribute vec3 a_position;\nattribute vec2 a_texCoord;\nattribute vec4 a_color;\nvarying vec4 v_light;\nvarying vec2 uv0;\n#if TWO_COLORED\n attribute vec4 a_color2;\n varying vec4 v_dark;\n#endif\nvec4 vert () {\n vec4 pos = vec4(a_position, 1);\n #if USE_LOCAL\n pos = cc_matWorld * pos;\n #endif\n pos = cc_matViewProj * pos;\n uv0 = a_texCoord;\n v_light = a_color;\n #if TWO_COLORED\n v_dark = a_color2;\n #endif\n return pos;\n}\nvoid main() { gl_Position = vert(); }","frag":"\nprecision highp float;\n#if USE_ALPHA_TEST\n uniform float alphaThreshold;\n#endif\nvoid ALPHA_TEST (in vec4 color) {\n #if USE_ALPHA_TEST\n if (color.a < alphaThreshold) discard;\n #endif\n}\nvoid ALPHA_TEST (in float alpha) {\n #if USE_ALPHA_TEST\n if (alpha < alphaThreshold) discard;\n #endif\n}\nvarying vec4 v_light;\n#if TWO_COLORED\n varying vec4 v_dark;\n#endif\nvarying vec2 uv0;\nuniform sampler2D cc_spriteTexture;\nvec4 frag () {\n vec4 o = vec4(1, 1, 1, 1);\n #if TWO_COLORED\n vec4 texColor = vec4(1, 1, 1, 1);\n texColor *= texture2D(cc_spriteTexture, uv0);\n o.a = texColor.a * v_light.a;\n o.rgb = ((texColor.a - 1.0) * v_dark.a + 1.0 - texColor.rgb) * v_dark.rgb + texColor.rgb * v_light.rgb;\n #else\n o *= texture2D(cc_spriteTexture, uv0);\n o *= v_light;\n #endif\n ALPHA_TEST(o);\n return o;\n}\nvoid main() { gl_FragColor = frag(); }"},"builtins":{"globals":{"blocks":[{"name":"CCGlobal","defines":[]},{"name":"CCCamera","defines":[]}],"samplerTextures":[],"buffers":[],"images":[]},"locals":{"blocks":[{"name":"CCLocal","defines":["USE_LOCAL"]}],"samplerTextures":[{"name":"cc_spriteTexture","defines":[]}],"buffers":[],"images":[]},"statistics":{"CC_EFFECT_USED_VERTEX_UNIFORM_VECTORS":56,"CC_EFFECT_USED_FRAGMENT_UNIFORM_VECTORS":1}},"defines":[{"name":"USE_LOCAL","type":"boolean"},{"name":"TWO_COLORED","type":"boolean"},{"name":"USE_ALPHA_TEST","type":"boolean"}]}],[{"passes":[{"program":"for2d/builtin-spine|sprite-vs:vert|sprite-fs:frag","blendState":{"targets":[{"blend":true,"blendSrc":2,"blendDst":4,"blendDstAlpha":4}]},"rasterizerState":{"cullMode":0},"depthStencilState":{"depthTest":false,"depthWrite":false},"properties":{"alphaThreshold":{"type":13,"value":[0.5]}}}]}]]],0,0,[],[],[]] diff --git a/headless/static/assets/internal/import/d9/d930590d-bb92-4cc8-8bd1-23cd027f9edf.json b/headless/static/assets/internal/import/d9/d930590d-bb92-4cc8-8bd1-23cd027f9edf.json new file mode 100644 index 00000000..beb03484 --- /dev/null +++ b/headless/static/assets/internal/import/d9/d930590d-bb92-4cc8-8bd1-23cd027f9edf.json @@ -0,0 +1 @@ +[1,["a3cd009f-0ab0-420d-9278-b9fdab939bbc"],["_effectAsset"],[["cc.Material",["_name","_states","_defines","_props"],0,12]],[[0,0,1,2,3,4]],[[0,"missing-material",[{"rasterizerState":{},"depthStencilState":{},"blendState":{"targets":[{}]}}],[{"USE_COLOR":true}],[[[{},"mainColor",8,[4,4294902015]]],11]]],0,0,[0],[0],[0]] diff --git a/headless/static/assets/internal/import/dd/dd3a144d-ab7f-41f0-82b8-2e43a090d496.json b/headless/static/assets/internal/import/dd/dd3a144d-ab7f-41f0-82b8-2e43a090d496.json new file mode 100644 index 00000000..9b3bee5e --- /dev/null +++ b/headless/static/assets/internal/import/dd/dd3a144d-ab7f-41f0-82b8-2e43a090d496.json @@ -0,0 +1 @@ +[1,["60f7195c-ec2a-45eb-ba94-8955f60e81d0"],["_effectAsset"],[["cc.Material",["_name","_props","_states","_defines"],-1]],[[0,0,1,2,3,5]],[[0,"ui-sprite-gray-alpha-sep-material",[{}],[{"rasterizerState":{},"depthStencilState":{},"blendState":{"targets":[{}]}}],[{"USE_TEXTURE":true,"CC_USE_EMBEDDED_ALPHA":true,"IS_GRAY":true}]]],0,0,[0],[0],[0]] diff --git a/headless/static/assets/internal/import/e9/e9aa9a3e-5b2b-4ac7-a2c7-073de2b2b24f.json b/headless/static/assets/internal/import/e9/e9aa9a3e-5b2b-4ac7-a2c7-073de2b2b24f.json new file mode 100644 index 00000000..7c252b9d --- /dev/null +++ b/headless/static/assets/internal/import/e9/e9aa9a3e-5b2b-4ac7-a2c7-073de2b2b24f.json @@ -0,0 +1 @@ +[1,["60f7195c-ec2a-45eb-ba94-8955f60e81d0"],["_effectAsset"],[["cc.Material",["_name","_props","_states","_defines"],-1]],[[0,0,1,2,3,5]],[[0,"ui-base-material",[{}],[{"rasterizerState":{},"depthStencilState":{},"blendState":{"targets":[{}]}}],[{"USE_TEXTURE":false}]]],0,0,[0],[0],[0]] diff --git a/headless/static/assets/internal/import/ef/efe8e2a3-eace-427b-b4f1-cb8a937ec77d.json b/headless/static/assets/internal/import/ef/efe8e2a3-eace-427b-b4f1-cb8a937ec77d.json new file mode 100644 index 00000000..b8afa2bd --- /dev/null +++ b/headless/static/assets/internal/import/ef/efe8e2a3-eace-427b-b4f1-cb8a937ec77d.json @@ -0,0 +1 @@ +[1,["60f7195c-ec2a-45eb-ba94-8955f60e81d0"],["_effectAsset"],[["cc.Material",["_name","_props","_states","_defines"],-1]],[[0,0,1,2,3,5]],[[0,"ui-sprite-gray-material",[{}],[{"rasterizerState":{},"depthStencilState":{},"blendState":{"targets":[{}]}}],[{"USE_TEXTURE":true,"CC_USE_EMBEDDED_ALPHA":false,"IS_GRAY":true}]]],0,0,[0],[0],[0]] diff --git a/headless/static/assets/internal/import/f0/f0416e68-0200-4b77-a926-4f9d16e494da.json b/headless/static/assets/internal/import/f0/f0416e68-0200-4b77-a926-4f9d16e494da.json new file mode 100644 index 00000000..37fe2b73 --- /dev/null +++ b/headless/static/assets/internal/import/f0/f0416e68-0200-4b77-a926-4f9d16e494da.json @@ -0,0 +1 @@ +[1,["1c02ae6f-4492-4915-b8f8-7492a3b1e4cd"],["_effectAsset"],[["cc.Material",["_name","_props","_states","_defines"],-1]],[[0,0,1,2,3,5]],[[0,"ui-graphics-material",[{}],[{"rasterizerState":{},"depthStencilState":{},"blendState":{"targets":[{}]}}],[{}]]],0,0,[0],[0],[0]] diff --git a/headless/static/assets/internal/import/f9/f92806d7-1768-443f-afe8-12bcde84d0f0.json b/headless/static/assets/internal/import/f9/f92806d7-1768-443f-afe8-12bcde84d0f0.json new file mode 100644 index 00000000..6fac67fa --- /dev/null +++ b/headless/static/assets/internal/import/f9/f92806d7-1768-443f-afe8-12bcde84d0f0.json @@ -0,0 +1 @@ +[1,["60f7195c-ec2a-45eb-ba94-8955f60e81d0"],["_effectAsset"],[["cc.Material",["_name","_props","_states","_defines"],-1]],[[0,0,1,2,3,5]],[[0,"ui-sprite-alpha-sep-material",[{}],[{"rasterizerState":{},"depthStencilState":{},"blendState":{"targets":[{}]}}],[{"USE_TEXTURE":true,"CC_USE_EMBEDDED_ALPHA":true,"IS_GRAY":false}]]],0,0,[0],[0],[0]] diff --git a/headless/static/assets/internal/import/fd/fda095cb-831d-4601-ad94-846013963de8.json b/headless/static/assets/internal/import/fd/fda095cb-831d-4601-ad94-846013963de8.json new file mode 100644 index 00000000..87b62941 --- /dev/null +++ b/headless/static/assets/internal/import/fd/fda095cb-831d-4601-ad94-846013963de8.json @@ -0,0 +1 @@ +[1,["60f7195c-ec2a-45eb-ba94-8955f60e81d0"],["_effectAsset"],[["cc.Material",["_name","_props","_states","_defines"],-1]],[[0,0,1,2,3,5]],[[0,"ui-sprite-material",[{}],[{"rasterizerState":{},"depthStencilState":{},"blendState":{"targets":[{}]}}],[{"USE_TEXTURE":true,"IS_GRAY":false,"CC_USE_EMBEDDED_ALPHA":false}]]],0,0,[0],[0],[0]] diff --git a/headless/static/assets/internal/index.js b/headless/static/assets/internal/index.js new file mode 100644 index 00000000..37089c57 --- /dev/null +++ b/headless/static/assets/internal/index.js @@ -0,0 +1,24 @@ +System.register("chunks:///internal.js", [], function () { + return { + execute: function () {} + }; +}); + +(function(r) { + r('virtual:///prerequisite-imports/internal', 'chunks:///internal.js'); +})(function(mid, cid) { + System.register(mid, [cid], function (_export, _context) { + return { + setters: [function(_m) { + var _exportObj = {}; + + for (var _key in _m) { + if (_key !== "default" && _key !== "__esModule") _exportObj[_key] = _m[_key]; + } + + _export(_exportObj); + }], + execute: function () { } + }; + }); +}); \ No newline at end of file diff --git a/headless/static/assets/main/config.json b/headless/static/assets/main/config.json new file mode 100644 index 00000000..ac1ae24a --- /dev/null +++ b/headless/static/assets/main/config.json @@ -0,0 +1,52 @@ +{ + "importBase": "import", + "nativeBase": "native", + "name": "main", + "deps": [ + "resources" + ], + "uuids": [ + "25581f1e-f65e-4797-8a7a-b6718171b165", + "42607a6e-d30a-48cc-8161-2b3426e14703", + "745b8038-b832-48f8-9873-1baa6de58ad7", + "ba21476f-2866-4f81-9c4d-6e359316e448", + "fd8ec536-a354-4a17-9c74-4f3883c378c8" + ], + "paths": { + "42607a6e-d30a-48cc-8161-2b3426e14703": [ + "db:/assets/Main", + "cc.SceneAsset" + ], + "fd8ec536-a354-4a17-9c74-4f3883c378c8": [ + "db:/internal/default_renderpipeline/builtin-forward", + "cc.RenderPipeline" + ], + "ba21476f-2866-4f81-9c4d-6e359316e448": [ + "db:/internal/physics/default-physics-material", + "cc.PhysicsMaterial" + ] + }, + "scenes": { + "db://assets/Main.scene": "42607a6e-d30a-48cc-8161-2b3426e14703" + }, + "packs": {}, + "versions": { + "import": [], + "native": [] + }, + "redirect": [ + "25581f1e-f65e-4797-8a7a-b6718171b165", + "0", + "745b8038-b832-48f8-9873-1baa6de58ad7", + "0" + ], + "debug": true, + "extensionMap": {}, + "hasPreloadScript": true, + "dependencyRelationships": { + "42607a6e-d30a-48cc-8161-2b3426e14703": [ + "745b8038-b832-48f8-9873-1baa6de58ad7", + "25581f1e-f65e-4797-8a7a-b6718171b165" + ] + } +} \ No newline at end of file diff --git a/headless/static/assets/main/import/42/42607a6e-d30a-48cc-8161-2b3426e14703.json b/headless/static/assets/main/import/42/42607a6e-d30a-48cc-8161-2b3426e14703.json new file mode 100644 index 00000000..7d537ea6 --- /dev/null +++ b/headless/static/assets/main/import/42/42607a6e-d30a-48cc-8161-2b3426e14703.json @@ -0,0 +1 @@ +[1,["745b8038-b832-48f8-9873-1baa6de58ad7","25581f1e-f65e-4797-8a7a-b6718171b165"],["UIPrefab","WorldPrefab","node","scene"],[["cc.SceneAsset",["_name"],2],["cc.Scene",["_name","_children","_prefab","_globals"],2,2,4,4],["cc.Node",["_name","_layer","_id","_parent","_components"],0,1,9],["1e0e1EfsZhOOZDlp+IFMryA",["node","UIPrefab","WorldPrefab"],3,1,6,6],["cc.PrefabInfo",["root","asset","fileId","instance","targetOverrides","nestedPrefabInstanceRoots"],-3],["cc.SceneGlobals",["ambient","shadows","_skybox","fog","octree","skin","lightProbeInfo","postSettings"],3,4,4,4,4,4,4,4,4],["cc.AmbientInfo",["_skyColorHDR","_groundAlbedoHDR"],3,5,5],["cc.ShadowsInfo",["_shadowColor","_size"],3,5,5],["cc.SkyboxInfo",[],3],["cc.FogInfo",[],3],["cc.OctreeInfo",[],3],["cc.SkinInfo",[],3],["cc.LightProbeInfo",[],3],["cc.PostSettingsInfo",[],3]],[[0,0,2],[1,0,1,2,3,2],[2,0,1,2,3,4,4],[3,0,1,2,1],[4,0,1,2,3,4,5,7],[5,0,1,2,3,4,5,6,7,1],[6,0,1,1],[7,0,1,1],[8,1],[9,1],[10,1],[11,1],[12,1],[13,1]],[[0,"Main"],[1,"Main",[-1],[4,null,null,"42607a6e-d30a-48cc-8161-2b3426e14703",null,null,null],[5,[6,[2,0,0,0,0.520833125],[2,0,0,0,0]],[7,[4,4283190348],[0,512,512]],[8],[9],[10],[11],[12],[13]]],[2,"Main",33554432,"5eRrvQLR5OMLtBx7381QA8",1,[[3,-2,0,1]]]],0,[0,-1,2,0,2,2,0,3,1,2],[0,0],[0,1],[0,1]] diff --git a/headless/static/assets/main/import/ba/ba21476f-2866-4f81-9c4d-6e359316e448.json b/headless/static/assets/main/import/ba/ba21476f-2866-4f81-9c4d-6e359316e448.json new file mode 100644 index 00000000..1c25a072 --- /dev/null +++ b/headless/static/assets/main/import/ba/ba21476f-2866-4f81-9c4d-6e359316e448.json @@ -0,0 +1 @@ +[1,0,0,[["cc.PhysicsMaterial",["_name","_friction","_rollingFriction","_spinningFriction","_restitution"],-2]],[[0,0,1,2,3,4,6]],[[0,"default-physics-material",0.8,0.1,0.1,0.1]],0,0,[],[],[]] diff --git a/headless/static/assets/main/import/fd/fd8ec536-a354-4a17-9c74-4f3883c378c8.json b/headless/static/assets/main/import/fd/fd8ec536-a354-4a17-9c74-4f3883c378c8.json new file mode 100644 index 00000000..2c029eca --- /dev/null +++ b/headless/static/assets/main/import/fd/fd8ec536-a354-4a17-9c74-4f3883c378c8.json @@ -0,0 +1 @@ +[1,0,0,[["RenderQueueDesc",["stages","isTransparent","sortMode"],0],["ForwardPipeline",["_flows"],3,9],["ShadowFlow",["_name","_stages"],2,9],["ShadowStage",["_name"],2],["ForwardFlow",["_name","_priority","_stages"],1,9],["ForwardStage",["_name","renderQueues"],2,9]],[[1,0,1],[2,0,1,2],[3,0,2],[4,0,1,2,3],[5,0,1,2],[0,0,2],[0,1,2,0,4]],[[0,[[1,"ShadowFlow",[[2,"ShadowStage"]]],[3,"ForwardFlow",1,[[4,"ForwardStage",[[5,["default"]],[6,true,1,["default"]]]]]]]]],0,0,[],[],[]] diff --git a/headless/static/assets/main/index.js b/headless/static/assets/main/index.js new file mode 100644 index 00000000..db27eb56 --- /dev/null +++ b/headless/static/assets/main/index.js @@ -0,0 +1,22094 @@ +System.register("chunks:///main.js", ['./schema-659cd440.js', 'cc'], function (exports, module) { + var _applyDecoratedDescriptor, _inheritsLoose, _initializerDefineProperty, _assertThisInitialized, _createClass, _createForOfIteratorHelperLoose, _asyncToGenerator, _regeneratorRuntime, _extends, Tables, TbGGlobalEnum, cclegacy, _decorator, Node, Color, Canvas, UITransform, instantiate, Label, RichText, Toggle, Button, director, Component, isValid, js, EventHandler, EventTarget, Enum, CCClass, game, JsonAsset, System, error, PhysicsSystem2D, CCObject, sp, assetManager, CCBoolean, CCInteger, BlockInputEvents, Sprite, color, v3, tween, Widget, resources, Prefab, Asset, v2, sys, SpriteFrame, Camera, UIRenderer, Vec2, bezier, rect, size, ProgressBar, NodeEventType, ScrollView, UIOpacity, EditBox, lerp; + + return { + setters: [function (module) { + _applyDecoratedDescriptor = module._; + _inheritsLoose = module.a; + _initializerDefineProperty = module.b; + _assertThisInitialized = module.c; + _createClass = module.d; + _createForOfIteratorHelperLoose = module.e; + _asyncToGenerator = module.f; + _regeneratorRuntime = module.g; + _extends = module.h; + Tables = module.T; + TbGGlobalEnum = module.i; + }, function (module) { + cclegacy = module.cclegacy; + _decorator = module._decorator; + Node = module.Node; + Color = module.Color; + Canvas = module.Canvas; + UITransform = module.UITransform; + instantiate = module.instantiate; + Label = module.Label; + RichText = module.RichText; + Toggle = module.Toggle; + Button = module.Button; + director = module.director; + Component = module.Component; + isValid = module.isValid; + js = module.js; + EventHandler = module.EventHandler; + EventTarget = module.EventTarget; + Enum = module.Enum; + CCClass = module.CCClass; + game = module.game; + JsonAsset = module.JsonAsset; + System = module.System; + error = module.error; + PhysicsSystem2D = module.PhysicsSystem2D; + CCObject = module.CCObject; + sp = module.sp; + assetManager = module.assetManager; + CCBoolean = module.CCBoolean; + CCInteger = module.CCInteger; + BlockInputEvents = module.BlockInputEvents; + Sprite = module.Sprite; + color = module.color; + v3 = module.v3; + tween = module.tween; + Widget = module.Widget; + resources = module.resources; + Prefab = module.Prefab; + Asset = module.Asset; + v2 = module.v2; + sys = module.sys; + SpriteFrame = module.SpriteFrame; + Camera = module.Camera; + UIRenderer = module.UIRenderer; + Vec2 = module.Vec2; + bezier = module.bezier; + rect = module.rect; + size = module.size; + ProgressBar = module.ProgressBar; + NodeEventType = module.NodeEventType; + ScrollView = module.ScrollView; + UIOpacity = module.UIOpacity; + EditBox = module.EditBox; + lerp = module.lerp; + }], + execute: function () { + var _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3; + + cclegacy._RF.push({}, "b2bd1+njXxJxaFY3ymm06WU", "debug-view-runtime-control", undefined); + + var ccclass = _decorator.ccclass, + property = _decorator.property; + var DebugViewRuntimeControl = (_dec = ccclass('internal.DebugViewRuntimeControl'), _dec2 = property(Node), _dec3 = property(Node), _dec4 = property(Node), _dec(_class = (_class2 = /*#__PURE__*/function (_Component) { + _inheritsLoose(DebugViewRuntimeControl, _Component); + + function DebugViewRuntimeControl() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "compositeModeToggle", _descriptor, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "singleModeToggle", _descriptor2, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "EnableAllCompositeModeButton", _descriptor3, _assertThisInitialized(_this)); + + _this._single = 0; + _this.strSingle = ['No Single Debug', 'Vertex Color', 'Vertex Normal', 'Vertex Tangent', 'World Position', 'Vertex Mirror', 'Face Side', 'UV0', 'UV1', 'UV Lightmap', 'Project Depth', 'Linear Depth', 'Fragment Normal', 'Fragment Tangent', 'Fragment Binormal', 'Base Color', 'Diffuse Color', 'Specular Color', 'Transparency', 'Metallic', 'Roughness', 'Specular Intensity', 'IOR', 'Direct Diffuse', 'Direct Specular', 'Direct All', 'Env Diffuse', 'Env Specular', 'Env All', 'Emissive', 'Light Map', 'Shadow', 'AO', 'Fresnel', 'Direct Transmit Diffuse', 'Direct Transmit Specular', 'Env Transmit Diffuse', 'Env Transmit Specular', 'Transmit All', 'Direct Internal Specular', 'Env Internal Specular', 'Internal All', 'Fog']; + _this.strComposite = ['Direct Diffuse', 'Direct Specular', 'Env Diffuse', 'Env Specular', 'Emissive', 'Light Map', 'Shadow', 'AO', 'Normal Map', 'Fog', 'Tone Mapping', 'Gamma Correction', 'Fresnel', 'Transmit Diffuse', 'Transmit Specular', 'Internal Specular', 'TT']; + _this.strMisc = ['CSM Layer Coloration', 'Lighting With Albedo']; + _this.compositeModeToggleList = []; + _this.singleModeToggleList = []; + _this.miscModeToggleList = []; + _this.textComponentList = []; + _this.labelComponentList = []; + _this.textContentList = []; + _this.hideButtonLabel = void 0; + _this._currentColorIndex = 0; + _this.strColor = ['', '', '', '', '']; + _this.color = [Color.WHITE, Color.BLACK, Color.RED, Color.GREEN, Color.BLUE]; + return _this; + } + + var _proto = DebugViewRuntimeControl.prototype; + + _proto.start = function start() { + // get canvas resolution + var canvas = this.node.parent.getComponent(Canvas); + + if (!canvas) { + console.error('debug-view-runtime-control should be child of Canvas'); + return; + } + + var uiTransform = this.node.parent.getComponent(UITransform); + var halfScreenWidth = uiTransform.width * 0.5; + var halfScreenHeight = uiTransform.height * 0.5; + var x = -halfScreenWidth + halfScreenWidth * 0.1, + y = halfScreenHeight - halfScreenHeight * 0.1; + var width = 200, + height = 20; // new nodes + + var miscNode = this.node.getChildByName('MiscMode'); + var buttonNode = instantiate(miscNode); + buttonNode.parent = this.node; + buttonNode.name = 'Buttons'; + var titleNode = instantiate(miscNode); + titleNode.parent = this.node; + titleNode.name = 'Titles'; // title + + for (var i = 0; i < 2; i++) { + var newLabel = instantiate(this.EnableAllCompositeModeButton.getChildByName('Label')); + newLabel.setPosition(x + (i > 0 ? 50 + width * 2 : 150), y, 0.0); + newLabel.setScale(0.75, 0.75, 0.75); + newLabel.parent = titleNode; + + var _labelComponent = newLabel.getComponent(Label); + + _labelComponent.string = i ? '----------Composite Mode----------' : '----------Single Mode----------'; + _labelComponent.color = Color.WHITE; + _labelComponent.overflow = 0; + this.labelComponentList[this.labelComponentList.length] = _labelComponent; + } + + y -= height; // single + + var currentRow = 0; + + for (var _i = 0; _i < this.strSingle.length; _i++, currentRow++) { + if (_i === this.strSingle.length >> 1) { + x += width; + currentRow = 0; + } + + var newNode = _i ? instantiate(this.singleModeToggle) : this.singleModeToggle; + newNode.setPosition(x, y - height * currentRow, 0.0); + newNode.setScale(0.5, 0.5, 0.5); + newNode.parent = this.singleModeToggle.parent; + var textComponent = newNode.getComponentInChildren(RichText); + textComponent.string = this.strSingle[_i]; + this.textComponentList[this.textComponentList.length] = textComponent; + this.textContentList[this.textContentList.length] = textComponent.string; + newNode.on(Toggle.EventType.TOGGLE, this.toggleSingleMode, this); + this.singleModeToggleList[_i] = newNode; + } + + x += width; // buttons + + this.EnableAllCompositeModeButton.setPosition(x + 15, y, 0.0); + this.EnableAllCompositeModeButton.setScale(0.5, 0.5, 0.5); + this.EnableAllCompositeModeButton.on(Button.EventType.CLICK, this.enableAllCompositeMode, this); + this.EnableAllCompositeModeButton.parent = buttonNode; + var labelComponent = this.EnableAllCompositeModeButton.getComponentInChildren(Label); + this.labelComponentList[this.labelComponentList.length] = labelComponent; + var changeColorButton = instantiate(this.EnableAllCompositeModeButton); + changeColorButton.setPosition(x + 90, y, 0.0); + changeColorButton.setScale(0.5, 0.5, 0.5); + changeColorButton.on(Button.EventType.CLICK, this.changeTextColor, this); + changeColorButton.parent = buttonNode; + labelComponent = changeColorButton.getComponentInChildren(Label); + labelComponent.string = 'TextColor'; + this.labelComponentList[this.labelComponentList.length] = labelComponent; + var HideButton = instantiate(this.EnableAllCompositeModeButton); + HideButton.setPosition(x + 200, y, 0.0); + HideButton.setScale(0.5, 0.5, 0.5); + HideButton.on(Button.EventType.CLICK, this.hideUI, this); + HideButton.parent = this.node.parent; + labelComponent = HideButton.getComponentInChildren(Label); + labelComponent.string = 'Hide UI'; + this.labelComponentList[this.labelComponentList.length] = labelComponent; + this.hideButtonLabel = labelComponent; // misc + + y -= 40; + + for (var _i2 = 0; _i2 < this.strMisc.length; _i2++) { + var _newNode = instantiate(this.compositeModeToggle); + + _newNode.setPosition(x, y - height * _i2, 0.0); + + _newNode.setScale(0.5, 0.5, 0.5); + + _newNode.parent = miscNode; + + var _textComponent = _newNode.getComponentInChildren(RichText); + + _textComponent.string = this.strMisc[_i2]; + this.textComponentList[this.textComponentList.length] = _textComponent; + this.textContentList[this.textContentList.length] = _textComponent.string; + + var toggleComponent = _newNode.getComponent(Toggle); + + toggleComponent.isChecked = _i2 ? true : false; + + _newNode.on(Toggle.EventType.TOGGLE, _i2 ? this.toggleLightingWithAlbedo : this.toggleCSMColoration, this); + + this.miscModeToggleList[_i2] = _newNode; + } // composite + + + y -= 150; + + for (var _i3 = 0; _i3 < this.strComposite.length; _i3++) { + var _newNode2 = _i3 ? instantiate(this.compositeModeToggle) : this.compositeModeToggle; + + _newNode2.setPosition(x, y - height * _i3, 0.0); + + _newNode2.setScale(0.5, 0.5, 0.5); + + _newNode2.parent = this.compositeModeToggle.parent; + + var _textComponent2 = _newNode2.getComponentInChildren(RichText); + + _textComponent2.string = this.strComposite[_i3]; + this.textComponentList[this.textComponentList.length] = _textComponent2; + this.textContentList[this.textContentList.length] = _textComponent2.string; + + _newNode2.on(Toggle.EventType.TOGGLE, this.toggleCompositeMode, this); + + this.compositeModeToggleList[_i3] = _newNode2; + } + }; + + _proto.isTextMatched = function isTextMatched(textUI, textDescription) { + var tempText = new String(textUI); + var findIndex = tempText.search('>'); + + if (findIndex === -1) { + return textUI === textDescription; + } else { + tempText = tempText.substr(findIndex + 1); + tempText = tempText.substr(0, tempText.search('<')); + return tempText === textDescription; + } + }; + + _proto.toggleSingleMode = function toggleSingleMode(toggle) { + var debugView = director.root.debugView; + var textComponent = toggle.getComponentInChildren(RichText); + + for (var i = 0; i < this.strSingle.length; i++) { + if (this.isTextMatched(textComponent.string, this.strSingle[i])) { + debugView.singleMode = i; + } + } + }; + + _proto.toggleCompositeMode = function toggleCompositeMode(toggle) { + var debugView = director.root.debugView; + var textComponent = toggle.getComponentInChildren(RichText); + + for (var i = 0; i < this.strComposite.length; i++) { + if (this.isTextMatched(textComponent.string, this.strComposite[i])) { + debugView.enableCompositeMode(i, toggle.isChecked); + } + } + }; + + _proto.toggleLightingWithAlbedo = function toggleLightingWithAlbedo(toggle) { + var debugView = director.root.debugView; + debugView.lightingWithAlbedo = toggle.isChecked; + }; + + _proto.toggleCSMColoration = function toggleCSMColoration(toggle) { + var debugView = director.root.debugView; + debugView.csmLayerColoration = toggle.isChecked; + }; + + _proto.enableAllCompositeMode = function enableAllCompositeMode(button) { + var debugView = director.root.debugView; + debugView.enableAllCompositeMode(true); + + for (var i = 0; i < this.compositeModeToggleList.length; i++) { + var _toggleComponent = this.compositeModeToggleList[i].getComponent(Toggle); + + _toggleComponent.isChecked = true; + } + + var toggleComponent = this.miscModeToggleList[0].getComponent(Toggle); + toggleComponent.isChecked = false; + debugView.csmLayerColoration = false; + toggleComponent = this.miscModeToggleList[1].getComponent(Toggle); + toggleComponent.isChecked = true; + debugView.lightingWithAlbedo = true; + }; + + _proto.hideUI = function hideUI(button) { + var titleNode = this.node.getChildByName('Titles'); + var activeValue = !titleNode.active; + this.singleModeToggleList[0].parent.active = activeValue; + this.miscModeToggleList[0].parent.active = activeValue; + this.compositeModeToggleList[0].parent.active = activeValue; + this.EnableAllCompositeModeButton.parent.active = activeValue; + titleNode.active = activeValue; + this.hideButtonLabel.string = activeValue ? 'Hide UI' : 'Show UI'; + }; + + _proto.changeTextColor = function changeTextColor(button) { + this._currentColorIndex++; + + if (this._currentColorIndex >= this.strColor.length) { + this._currentColorIndex = 0; + } + + for (var i = 0; i < this.textComponentList.length; i++) { + this.textComponentList[i].string = this.strColor[this._currentColorIndex] + this.textContentList[i] + ''; + } + + for (var _i4 = 0; _i4 < this.labelComponentList.length; _i4++) { + this.labelComponentList[_i4].color = this.color[this._currentColorIndex]; + } + }; + + _proto.onLoad = function onLoad() {}; + + _proto.update = function update(deltaTime) {}; + + return DebugViewRuntimeControl; + }(Component), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "compositeModeToggle", [_dec2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "singleModeToggle", [_dec3], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "EnableAllCompositeModeButton", [_dec4], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + })), _class2)) || _class); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "37b5dGw2dRA+oN4mt8o31yV", "logger", undefined); + + var logger = { + log: console.log.bind(console, "[LOG]"), + warn: console.warn.bind(console, "[WARN]"), + error: console.error.bind(console, "[ERROR]"), + debug: console.debug.bind(console, "[DEBUG]") + }; + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "8944dzqBeNNa7bSbmlbD8cX", "behavior-event-handler", undefined); + + var BehaviorEventHandler = /*#__PURE__*/function (_EventHandler) { + _inheritsLoose(BehaviorEventHandler, _EventHandler); + + function BehaviorEventHandler() { + return _EventHandler.apply(this, arguments) || this; + } + + var _proto = BehaviorEventHandler.prototype; + + _proto.invoke = function invoke() { + for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) { + params[_key] = arguments[_key]; + } + + var target = this.target; + + if (!isValid(target)) { + return; + } //@ts-ignore + + + this._genCompIdIfNeeded(); + + var compType = js._getClassById(this._componentId); + + if (!compType) { + logger.warn("invalid component type!"); + return; + } + + var comp = target.getComponent(compType); + + if (!isValid(comp)) { + logger.warn("invalid component type!"); + return; + } + + var handler = comp[this.handler]; + + if (typeof handler !== 'function') { + return; + } + + if (this.customEventData != null && this.customEventData !== '') { + params = params.slice(); + params.push(this.customEventData); + } + + var res = handler.apply(comp, params); + return res; + }; + + return BehaviorEventHandler; + }(EventHandler); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "321f5CYkz9N+ILA1mMOpOne", "behavior-event-target", undefined); + + var BehaviorEventTarget = /*#__PURE__*/function () { + function BehaviorEventTarget() { + this.eventTarget = new EventTarget(); + } + + var _proto = BehaviorEventTarget.prototype; + + _proto.on = function on(key, callback, target, once) { + return this.eventTarget.on("" + key, callback, target, once); + }; + + _proto.once = function once(key, callback, target) { + return this.eventTarget.once("" + key, callback, target); + }; + + _proto.off = function off(key, callback, target) { + this.eventTarget.off("" + key, callback, target); + }; + + _proto.targetOff = function targetOff(typeOrTarget) { + this.eventTarget.targetOff(typeOrTarget); + }; + + _proto.emit = function emit(key) { + //@ts-ignore + var list = this.eventTarget._callbackTable && this.eventTarget._callbackTable[key]; + var arg0 = arguments.length <= 1 ? undefined : arguments[1]; + var arg1 = arguments.length <= 2 ? undefined : arguments[2]; + + if (list) { + var rootInvoker = !list.isInvoking; + list.isInvoking = true; + var infos = list.callbackInfos; + + for (var i = 0, len = infos.length; i < len; ++i) { + var info = infos[i]; + + if (info) { + var callback = info.callback; + var target = info.target; // Pre off once callbacks to avoid influence on logic in callback + + if (info.once) { + this.eventTarget.off("" + key, callback, target); + } // Lazy check validity of callback target, + // if target is CCObject and is no longer valid, then remove the callback info directly + + + if (!info.check()) { + this.eventTarget.off("" + key, callback, target); + } else if (target) { + var result = callback.call(target, arg0, arg1); + + if (typeof arg1 != "undefined") { + arg1 = result; + } + } else { + var _result = callback(arg0, arg1); + + if (typeof arg1 != "undefined") { + arg1 = _result; + } + } + } + } + + if (rootInvoker) { + list.isInvoking = false; + + if (list.containCanceled) { + list.purgeCanceled(); + } + } + } + + return arg1; + }; + + return BehaviorEventTarget; + }(); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "350f34LjONEe4Bsh3TtuUL0", "behavior-event-delegate", undefined); + + var BehaviorEventDelegate = /*#__PURE__*/function (_BehaviorEventTarget) { + _inheritsLoose(BehaviorEventDelegate, _BehaviorEventTarget); + + function BehaviorEventDelegate(btNode, events, context) { + var _this; + + _this = _BehaviorEventTarget.call(this) || this; + _this._btNode = null; + _this._events = null; + _this._context = null; + _this._onEnterHandler = null; + _this._onExitHandler = null; + _this._onEnableHandler = null; + _this._onDisableHandler = null; + _this._onUpdateHandler = null; + if (!btNode || !events || !context) return _assertThisInitialized(_this); + _this._btNode = btNode; + _this._events = events; + _this._context = context; + _this._onEnterHandler = _this.createHandler(events.onEnter); + _this._onExitHandler = _this.createHandler(events.onExit); + _this._onUpdateHandler = _this.createHandler(events.onUpdate); + _this._onEnableHandler = _this.createHandler(events.onEnable); + _this._onDisableHandler = _this.createHandler(events.onDisable); + return _this; + } + + var _proto = BehaviorEventDelegate.prototype; + + _proto.createHandler = function createHandler(event) { + var _event$node; + + if (!event || !((_event$node = event.node) != null && _event$node.path)) return null; + + var target = this._context.getTargetByPath(event.node.path); + + if (!target) { + logger.warn("getTargetByPath error: path =", event.node.path); + return null; + } + + var component = target.getComponent(event.component.name); + + if (!component) { + logger.warn("cann't find component by name = " + event.component.name); + return null; + } + + var handler = new BehaviorEventHandler(); + handler.target = target; + handler.component = event.component.name; + handler.handler = event.method; + handler.customEventData = event.data; + return handler; + }; + + _proto.onEnter = function onEnter() { + var _this$_onEnterHandler; + + (_this$_onEnterHandler = this._onEnterHandler) == null ? void 0 : _this$_onEnterHandler.emit([this._btNode]); + this.emit("onEnter", this._btNode); + }; + + _proto.onEnable = function onEnable() { + var _this$_onEnableHandle; + + (_this$_onEnableHandle = this._onEnableHandler) == null ? void 0 : _this$_onEnableHandle.emit([this._btNode]); + this.emit("onEnable", this._btNode); + }; + + _proto.onUpdate = function onUpdate(status) { + if (this._onUpdateHandler) { + status = this._onUpdateHandler.invoke(this._btNode, status); + } + + status = this.emit("onUpdate", this._btNode, status); + return status; + }; + + _proto.onDisable = function onDisable() { + var _this$_onDisableHandl; + + (_this$_onDisableHandl = this._onDisableHandler) == null ? void 0 : _this$_onDisableHandl.emit([this._btNode]); + this.emit("onDisable", this._btNode); + }; + + _proto.onExit = function onExit() { + var _this$_onExitHandler; + + (_this$_onExitHandler = this._onExitHandler) == null ? void 0 : _this$_onExitHandler.emit([this._btNode]); + this.emit("onExit", this._btNode); + }; + + return BehaviorEventDelegate; + }(BehaviorEventTarget); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "8fed9E3uKNFf59dFBWzHpf9", "behavior-status", undefined); + /* + * @Author: OreoWang + * @Email: ihc523@163.com + * @Date: 2022-03-22 21:48:12 + * @LastEditors: OreoWang + * @LastEditTime: 2022-04-19 11:29:22 + * @Description: + */ + + + var BehaviorStatus = /*#__PURE__*/function (BehaviorStatus) { + BehaviorStatus[BehaviorStatus["None"] = 0] = "None"; + BehaviorStatus[BehaviorStatus["Success"] = 1] = "Success"; + BehaviorStatus[BehaviorStatus["Failure"] = 2] = "Failure"; + BehaviorStatus[BehaviorStatus["Running"] = 3] = "Running"; + BehaviorStatus[BehaviorStatus["Abort"] = 4] = "Abort"; + BehaviorStatus[BehaviorStatus["Interrupting"] = 5] = "Interrupting"; + return BehaviorStatus; + }({}); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "561acKJzndDgIHFTIxljzJ3", "behavior-node", undefined); + + var BehaviorNode = /*#__PURE__*/function () { + function BehaviorNode(parent, nodeInfo, context) { + this.$context = null; + this.delegate = null; + this.status = BehaviorStatus.None; + /** 父节点 */ + + this._parent = null; + this._nodeInfo = null; + this._nodeConfig = null; + this._isEnabled = false; + this._mapStageKey = new Map(); + this._logEnabled = true; + this.$context = context; + this._parent = parent; + this._nodeInfo = nodeInfo; + /** element */ + + if (!nodeInfo.config.label) { + this._nodeConfig = nodeInfo.config; + } else { + this._nodeConfig = nodeInfo.config.label; + } + + if (!this._nodeConfig.tag) { + this._nodeConfig.tag = "TAG" + this._nodeConfig.order; + } + + this.delegate = new BehaviorEventDelegate(this, this.nodeConfig.events, context); + } + + var _proto = BehaviorNode.prototype; + + _proto.deserialize = function deserialize() { + this.$context.onDeserialize(this); + }; + + _proto.load = function load() { + this.logLifeStatus("load"); + }; + + _proto.destroy = function destroy() { + this.delegate = null; + this.logLifeStatus("destroy"); + }; + + _proto.enter = function enter() { + this.logLifeStatus("enter"); + this.delegate.onEnter(); + }; + + _proto.exit = function exit() { + this.logLifeStatus("exit"); + this.delegate.onExit(); + }; + + _proto.enable = function enable() { + if (this._isEnabled) { + return; + } + + this._isEnabled = true; + this.delegate.onEnable(); + this.logLifeStatus("enable"); + }; + + _proto.disable = function disable() { + if (!this._isEnabled) { + return; + } + + this._isEnabled = false; + this.delegate.onDisable(); + this.logLifeStatus("disable"); + }; + + _proto.update = function update(status) { + return this.onUpdate(status); + }; + + _proto.execute = function execute(status) { + return this.onExecute(status); + }; + + _proto.onUpdate = function onUpdate(status) { + status = this.delegate.onUpdate(status); + this.logLifeStatus("update", status); + return status; + }; + + _proto.onExecute = function onExecute(status) { + this.logLifeStatus("execute", status); + return status; + }; + + _proto.reset = function reset() { + this.status = BehaviorStatus.None; + }; + + _proto.getStageKey = function getStageKey(stage) { + var key = this._mapStageKey.get(stage); + + if (!key) { + key = "log" + stage.substring(0, 1).toUpperCase() + stage.substring(1); + + this._mapStageKey.set(stage, key); + } + + return key; + }; + + _proto.clearStageKey = function clearStageKey() { + this._mapStageKey.clear(); + }; + + _proto.getLogSymbol = function getLogSymbol() { + return "node --"; + }; + + _proto.getLogPrefix = function getLogPrefix() { + return "bt-" + this.getLogSymbol() + " "; + }; + + _proto.isLogEnabled = function isLogEnabled(stage) { + var key = this.getStageKey(stage); + return this.$context.isLogEnabled(key) && this._logEnabled; + }; + /** + * 设置节点是否可以打印log + * @param enabled + * @param withChildren 是否同时设置子节点 + */ + + + _proto.setLogEnabled = function setLogEnabled(enabled, withChildren) { + this._logEnabled = enabled; + } + /** + * 生命周期各阶段执行状态日志输出(内部调用) + * @param stage + * @param status + */ + ; + + _proto.logLifeStatus = function logLifeStatus(stage, status) { + if (typeof status == 'undefined') { + status = this.status; + } + + if (this.isLogEnabled(stage)) { + this.$context.onHandleTreeLog(this.getLogPrefix() + " [" + this.nodeConfig.order + "]-[" + stage + "] [" + this.nodeConfig.title + "] " + BehaviorStatus[status] + " " + this.getAppendedLog(stage, status)); + } + } + /** + * 生命周期各阶段执行状态附加日志(子类按需要重写) + * @param stage + * @param status + * @returns + */ + ; + + _proto.getAppendedLog = function getAppendedLog(stage, status) { + return ''; + } + /** + * 生命周期各阶段信息日志输出(可在外部按需要调用) + * @param stage + * @param info + */ + ; + + _proto.logLifeInfo = function logLifeInfo(stage, info) { + if (this.isLogEnabled(stage)) { + this.$context.onHandleTreeLog(this.getLogPrefix() + " [" + this.nodeConfig.order + "]-[" + stage + "] [" + this.nodeConfig.title + "] : info = " + info + " "); + } + }; + + _createClass(BehaviorNode, [{ + key: "parent", + get: function get() { + return this._parent; + } + }, { + key: "nodeInfo", + get: function get() { + return this._nodeInfo; + } + }, { + key: "nodeConfig", + get: function get() { + return this._nodeConfig; + } + }, { + key: "nodeType", + get: function get() { + return this.nodeInfo.type; + } + }, { + key: "nodeTag", + get: function get() { + return this.nodeConfig.tag; + } + }, { + key: "nodeOrder", + get: function get() { + return this.nodeConfig.order; + } + }, { + key: "nodeTitle", + get: function get() { + return this.nodeConfig.title; + } + }]); + + return BehaviorNode; + }(); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "598daak/ABKr4ZMjXNx1U7L", "behavior-tree-utils", undefined); + + function getTargetByPath(node, path) { + if (!path) { + return null; + } + + return node.getChildByPath(path); + } + + function deserializeNode(parent, info, context, isElement) { + if (isElement === void 0) { + isElement = false; + } + + var config; + + if (isElement) { + config = info.config; + } else { + config = info.config.label; + } + + var cls = js._getClassById(config.uuid); + + if (!cls) { + return null; + } + + var instance = new cls(parent, info, context); + var properties = config.properties; + + for (var key in properties) { + var property = properties[key]; + + if (typeof instance[key] == 'undefined') { + if (property.TYPE == "bt.SharedDynamic") { + if (property.path) { + instance[key] = context.getTargetByPath(property.path); + } else { + instance[key] = property["default"]; + } + } + } else if (!property.TYPE) { + instance[key] = property["default"]; + } else if (property.TYPE == "cc.Enum") { + instance[key] = Number(property["default"]); + } else if (property.TYPE == "cc.Node") { + if (property.path) { + instance[key] = context.getTargetByPath(property.path); + } + } else { + if (property.TYPE.startsWith("bt.Shared")) { + if (property.TYPE == "bt.SharedDynamic") { + if (property.path) { + instance[key] = context.getTargetByPath(property.path); + } else { + instance[key] = property["default"]; + } + } else { + var variable = context.blackboard.getVariable(property["default"]); + instance[key] = variable; + } // console.warn("SharedVariable: ", instance[key]); + + } + } + + if (typeof instance[key] == "undefined" || instance[key] == null) { + logger.warn("Behavior [" + instance.nodeConfig.order + "]-[deserialize] [" + instance.nodeConfig.title + "]: key=" + key + ", value=" + instance[key]); + } + } + + instance.deserialize(); + instance.load(); + return instance; + } + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "d187f0y0otP66VEvQnR2vCS", "behavior-node-entity", undefined); + + var BehaviorEntity = /*#__PURE__*/function (_BehaviorNode) { + _inheritsLoose(BehaviorEntity, _BehaviorNode); + + function BehaviorEntity(parent, nodeInfo, context) { + var _this; + + _this = _BehaviorNode.call(this, parent, nodeInfo, context) || this; + _this.interrupters = new Set(); + _this.decorators = []; + _this.services = []; + _this.children = []; + return _this; + } + + var _proto = BehaviorEntity.prototype; + + _proto.getLogSymbol = function getLogSymbol() { + return "enti *-"; + }; + + _proto.setLogEnabled = function setLogEnabled(enabled, withChildren) { + if (withChildren === void 0) { + withChildren = false; + } + + _BehaviorNode.prototype.setLogEnabled.call(this, enabled, withChildren); + + this.decorators.forEach(function (v) { + v.setLogEnabled(enabled, withChildren); + }); + this.services.forEach(function (v) { + v.setLogEnabled(enabled, withChildren); + }); + + if (withChildren) { + this.children.forEach(function (v) { + v.setLogEnabled(enabled, withChildren); + }); + } + }; + + _proto.deserialize = function deserialize() { + var $context = this.$context, + nodeInfo = this.nodeInfo; + + if (nodeInfo.children) { + for (var _iterator = _createForOfIteratorHelperLoose(nodeInfo.children), _step; !(_step = _iterator()).done;) { + var child = _step.value; + var options = child.config.label; + + if (options.uuid) { + var instance = deserializeNode(this, child, $context); + + if (instance) { + this.children.push(instance); + } else { + logger.error("Can't find class by uuid: ", options.uuid); + } + } else { + logger.error("Can't find class uuid: ", options); + } + } + } + + if (nodeInfo.elements) { + for (var _iterator2 = _createForOfIteratorHelperLoose(nodeInfo.elements), _step2; !(_step2 = _iterator2()).done;) { + var elem = _step2.value; + var _options = elem.config; + + if (_options.uuid) { + var _instance = deserializeNode(this, elem, $context, true); + + if (_instance) { + if (elem.type === 'decorator') { + this.decorators.push(_instance); + } else if (elem.type === 'service') { + this.services.push(_instance); + } + } else { + logger.error("Can't find class by uuid: ", _options.uuid); + } + } + } + } + + _BehaviorNode.prototype.deserialize.call(this); + }; + + _proto.destroy = function destroy() { + for (var _iterator3 = _createForOfIteratorHelperLoose(this.decorators), _step3; !(_step3 = _iterator3()).done;) { + var dec = _step3.value; + dec.destroy(); + } + + for (var _iterator4 = _createForOfIteratorHelperLoose(this.services), _step4; !(_step4 = _iterator4()).done;) { + var ser = _step4.value; + ser.destroy(); + } + + for (var _iterator5 = _createForOfIteratorHelperLoose(this.children), _step5; !(_step5 = _iterator5()).done;) { + var child = _step5.value; + child.destroy(); + } + + this.decorators.length = 0; + this.services.length = 0; + this.children.length = 0; + this.clearInterrupter(); + + _BehaviorNode.prototype.destroy.call(this); + }; + + _proto.reset = function reset() { + for (var _iterator6 = _createForOfIteratorHelperLoose(this.decorators), _step6; !(_step6 = _iterator6()).done;) { + var dec = _step6.value; + dec.reset(); + } + + for (var _iterator7 = _createForOfIteratorHelperLoose(this.services), _step7; !(_step7 = _iterator7()).done;) { + var ser = _step7.value; + ser.reset(); + } + + for (var _iterator8 = _createForOfIteratorHelperLoose(this.children), _step8; !(_step8 = _iterator8()).done;) { + var child = _step8.value; + child.reset(); + } + + _BehaviorNode.prototype.reset.call(this); + }; + + _proto.disable = function disable() { + if (this.status == BehaviorStatus.Running) { + this.status = BehaviorStatus.Abort; + } + + _BehaviorNode.prototype.disable.call(this); + }; + + _proto.abort = function abort() { + if (this.status == BehaviorStatus.Running) { + this.disable(); + } else { + this.status = BehaviorStatus.Abort; + } + + return this.onAbort(this.status); + }; + + _proto.onAbort = function onAbort(status) { + this.logLifeStatus("abort", status); + return status; + }; + + _proto.interrupt = function interrupt() { + this.onInterrupt(this.status); + return null; + }; + + _proto.onInterrupt = function onInterrupt(status) { + this.logLifeStatus("interrupt", status); + return status; + }; + + _proto.addInterrupter = function addInterrupter(node) { + if (!this.interrupters.has(node)) { + this.interrupters.add(node); + } + }; + + _proto.removeInterrupter = function removeInterrupter(node) { + if (this.interrupters.has(node)) { + this.interrupters["delete"](node); + } + }; + + _proto.clearInterrupter = function clearInterrupter() { + this.interrupters.clear(); + } + /** + * 节点执行逻辑。顺序为: + * @describe 条件装饰器执行成功时: + * @describe execute => condition(get result success) -> service -> self -> decorator => return + * @describe 条件装饰器执行失败时: + * @describe execute => condition(get result fail) => return + * @param status + * @returns + */ + ; + + _proto.execute = function execute(status) { + if (typeof status == 'undefined') { + status = this.status == BehaviorStatus.Running ? BehaviorStatus.Running : BehaviorStatus.None; + } //如果当前节点是以打断其它节点的方式执行的,说明当前节点已经满足执行条件,这里不需要再执行条件判断了 + + + if (status == BehaviorStatus.Interrupting) ;else { + status = this.executeCondition(status); //如果节点执行条件不成功 + + if (status != BehaviorStatus.Success) { + if (this.status == BehaviorStatus.Running) { + this.status = status; + this.disable(); + } else { + this.status = status; + } + + return this.status; + } + } + this.enter(); + + if (this.status != BehaviorStatus.Running) { + this.enable(); + } + + this.executeServices(status); + this.status = status = this.update(status); + this.logLifeStatus("execute"); + this.status = status = this.executeDecorator(status); + if (status == BehaviorStatus.Running) ;else { + if (status == BehaviorStatus.Failure) ; + this.disable(); + } + this.exit(); + return this.status; + } + /** + * 前置条件装饰器 + * @description 主要用于判断当前节点是否可执行,比如可实现类似 ConditionalInverter.ts 中条件反转逻辑 + * @param status + * @returns + */ + ; + + _proto.executeCondition = function executeCondition(status) { + var array = this.decorators; + + if (array.length > 0) { + //装饰器的执行顺序都是从最后一个开始往上执行的 + for (var index = array.length - 1; index >= 0; index--) { + var element = array[index]; + + if (!element.isInterrupter && element.isCondition) { + //将上一个 status 作为参数传入 + //该参数使用比较灵活,视具体的 element.execute 方法实现而定 + //比如可实现类似 ConditionalInverter 条件反转逻辑 + status = element.executeDecorator(status); + } + } + } else { + //当节点没有挂载前置条件装饰器时,节点必然是可执行的 + status = BehaviorStatus.Success; + } + + return status; + } + /** + * 后置结果装饰器 + * @description 主要用于修改节点执行结果,比如可实现类似 Inverter.ts 中结果反转逻辑 + * @param status + * @returns + */ + ; + + _proto.executeDecorator = function executeDecorator(status) { + var array = this.decorators; //装饰器的执行顺序都是从最后一个开始往上执行的 + + for (var index = array.length - 1; index >= 0; index--) { + var element = array[index]; + + if (!element.isInterrupter && !element.isCondition) { + //将上一个 status 作为参数传入 + //该参数使用比较灵活,视具体的 element.execute 方法实现而定 + //比如可实现类似 Inverter 结果反转逻辑 + status = element.executeDecorator(status); + } + } + + return status; + } + /** + * 节点服务,每次 tick 周期都会执行 + * @param status + */ + ; + + _proto.executeServices = function executeServices(status) { + var array = this.services; + + for (var index = array.length - 1; index >= 0; index--) { + var element = array[index]; + element.update(status); + } + }; + + _proto.checkCondition = function checkCondition(status) { + return this.executeCondition(status); + }; + + _createClass(BehaviorEntity, [{ + key: "parent", + get: function get() { + return this._parent; + } + }, { + key: "nodeInfo", + get: function get() { + return this._nodeInfo; + } + }, { + key: "nodeConfig", + get: function get() { + return this._nodeConfig; + } + }]); + + return BehaviorEntity; + }(BehaviorNode); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "fc7c1rKdnpPDrBExoUlF1Ix", "behavior-composite", undefined); + + var BehaviorComposite = /*#__PURE__*/function (_BehaviorEntity) { + _inheritsLoose(BehaviorComposite, _BehaviorEntity); + + function BehaviorComposite(parent, config, context) { + var _this; + + _this = _BehaviorEntity.call(this, parent, config, context) || this; + _this.isComposite = true; + _this.lastRunning = -1; + _this.isComposite = true; + _this.lastRunning = -1; // 上一次running的索引 + + return _this; + } + + var _proto = BehaviorComposite.prototype; + + _proto.getLogSymbol = function getLogSymbol() { + return "comp --"; + }; + + _proto.abort = function abort() { + if (this.lastRunning != -1) { + var child = this.children[this.lastRunning]; + this.lastRunning = -1; + + if (child) { + child.abort(); + } + } + + return _BehaviorEntity.prototype.abort.call(this); + }; + + _proto.reset = function reset() { + _BehaviorEntity.prototype.reset.call(this); + + this.lastRunning = -1; + }; + + _proto.disable = function disable() { + if (this.lastRunning != -1) { + var child = this.children[this.lastRunning]; + + if (child) { + child.status = this.status; + child.disable(); + } + } + + _BehaviorEntity.prototype.disable.call(this); + + this.lastRunning = -1; + }; + + return BehaviorComposite; + }(BehaviorEntity); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "bfa1fnFY/pJ0LgS+JRadAPW", "behavior-node-element", undefined); + + var BehaviorElement = /*#__PURE__*/function (_BehaviorNode) { + _inheritsLoose(BehaviorElement, _BehaviorNode); + + function BehaviorElement(parent, nodeInfo, context) { + var _this; + + _this = _BehaviorNode.call(this, parent, nodeInfo, context) || this; + /** element(附属节点) 元素的拥有者 */ + + _this.owner = null; + _this.isCondition = false; + _this.isInterrupter = false; + _this._parent = parent.parent; + _this.owner = parent; + return _this; + } + + var _proto = BehaviorElement.prototype; + + _proto.getLogSymbol = function getLogSymbol() { + return "elem &-"; + }; + + _proto.execute = function execute(status) { + status = this.update(status); + this.status = status = _BehaviorNode.prototype.execute.call(this, status); + return status; + }; + + _proto.executeDecorator = function executeDecorator(status) { + if (status == BehaviorStatus.None) { + //装饰器默认都返回 Failure ,需要 execute 处理 + status = BehaviorStatus.Failure; + } + + this.enter(); + this.enable(); + status = this.execute(status); + this.disable(); + this.exit(); + return status; + }; + + _proto.executeInterrupt = function executeInterrupt(parent, child) { + return BehaviorStatus.Failure; + }; + + _createClass(BehaviorElement, [{ + key: "parent", + get: function get() { + return this._parent; + } + }, { + key: "nodeInfo", + get: function get() { + return this._nodeInfo; + } + }, { + key: "nodeConfig", + get: function get() { + return this._nodeConfig; + } + }]); + + return BehaviorElement; + }(BehaviorNode); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "b1634+KPlZCK5vjGPuoU/tn", "behavior-decorator", undefined); + + var BehaviorDecorator = /*#__PURE__*/function (_BehaviorElement) { + _inheritsLoose(BehaviorDecorator, _BehaviorElement); + + function BehaviorDecorator() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _BehaviorElement.call.apply(_BehaviorElement, [this].concat(args)) || this; + _this.isCondition = false; + return _this; + } + + var _proto = BehaviorDecorator.prototype; + + _proto.getLogSymbol = function getLogSymbol() { + return "deco &@"; + }; + + return BehaviorDecorator; + }(BehaviorElement); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "c3b96to9KJIQpOHVON0RIIK", "behavior-conditional", undefined); + + var BehaviorConditional = /*#__PURE__*/function (_BehaviorDecorator) { + _inheritsLoose(BehaviorConditional, _BehaviorDecorator); + + function BehaviorConditional() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _BehaviorDecorator.call.apply(_BehaviorDecorator, [this].concat(args)) || this; + _this.isCondition = true; + return _this; + } + + var _proto = BehaviorConditional.prototype; + + _proto.getLogSymbol = function getLogSymbol() { + return "cond &?"; + }; + + return BehaviorConditional; + }(BehaviorDecorator); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "b3dc9cALvRJ77bQF13bnHSq", "utils", undefined); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "87489uw7WxIWLzQjS3xbEnz", "behavior-event-declaration", undefined); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "db4c2Jq5ZFCn4XOQx2mAUkz", "behavior-node-interface", undefined); + /* + * @Author: OreoWang + * @Email: ihc523@163.com + * @Date: 2022-04-11 10:03:31 + * @LastEditors: OreoWang + * @LastEditTime: 2022-04-19 10:17:33 + * @Description: + */ + + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "32365qfSvpB75sCQ9KTMEPJ", "behavior-selector", undefined); + + var BehaviorSelector = /*#__PURE__*/function (_BehaviorComposite) { + _inheritsLoose(BehaviorSelector, _BehaviorComposite); + + function BehaviorSelector() { + return _BehaviorComposite.apply(this, arguments) || this; + } + + var _proto = BehaviorSelector.prototype; + + _proto.getLogSymbol = function getLogSymbol() { + return "sele *?"; + }; + + _proto.update = function update(status) { + var entity = this.interrupt(); // 执行子节点 + + var start = this.lastRunning >= 0 ? this.lastRunning : 0; + this.lastRunning = -1; + + for (var i = start; i < this.children.length; i++) { + var child = this.children[i]; + + if (entity && child == entity) { + status = child.execute(BehaviorStatus.Interrupting); + } else { + status = child.execute(); + } + + if (status === BehaviorStatus.Success) { + break; + } else if (status === BehaviorStatus.Running) { + this.lastRunning = i; + break; + } else { + continue; + } + } + + return _BehaviorComposite.prototype.update.call(this, status); + }; + + _proto.interrupt = function interrupt() { + var start = this.lastRunning >= 0 ? this.lastRunning : 0; // 执行子节点中断评估 + + if (this.interrupters.size > 0 && start > 0) { + for (var i = 0; i < start; i++) { + var child = this.children[i]; + + for (var _iterator = _createForOfIteratorHelperLoose(this.interrupters), _step; !(_step = _iterator()).done;) { + var element = _step.value; + + if (element.owner == this || element.owner == child) { + var status = element.executeInterrupt(this, child); + + if (status == BehaviorStatus.Success) { + this.abort(); + this.lastRunning = i; + return child; + } + + break; + } + } + } + } + + return null; + }; + + return BehaviorSelector; + }(BehaviorComposite); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "59a0ckxD3NHC5bvEydtFVXP", "behavior-sequence", undefined); + + var BehaviorSequence = /*#__PURE__*/function (_BehaviorComposite) { + _inheritsLoose(BehaviorSequence, _BehaviorComposite); + + function BehaviorSequence() { + return _BehaviorComposite.apply(this, arguments) || this; + } + + var _proto = BehaviorSequence.prototype; + + _proto.getLogSymbol = function getLogSymbol() { + return "sequ *>"; + }; + + _proto.update = function update(status) { + var entity = this.interrupt(); // 执行子节点 + + var start = this.lastRunning >= 0 ? this.lastRunning : 0; + this.lastRunning = -1; + + for (var i = start; i < this.children.length; i++) { + var child = this.children[i]; + + if (entity && child == entity) { + status = child.execute(BehaviorStatus.Interrupting); + } else { + status = child.execute(); + } + + if (status === BehaviorStatus.Success) { + continue; + } else if (status === BehaviorStatus.Running) { + this.lastRunning = i; + } + + break; + } + + return _BehaviorComposite.prototype.update.call(this, status); + }; + + _proto.interrupt = function interrupt() { + var start = this.lastRunning >= 0 ? this.lastRunning : 0; // 执行子节点中断评估 + + if (this.interrupters.size > 0 && start > 0) { + for (var i = 0; i < start; i++) { + var child = this.children[i]; + + for (var _iterator = _createForOfIteratorHelperLoose(this.interrupters), _step; !(_step = _iterator()).done;) { + var element = _step.value; + + if (element.owner == this || element.owner == child) { + var status = element.executeInterrupt(this, child); + + if (status == BehaviorStatus.Success) { + this.abort(); + this.lastRunning = i; + return child; + } + + break; + } + } + } + } + + return null; + }; + + return BehaviorSequence; + }(BehaviorComposite); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "725ccmzywxHH61AYdRrNPR8", "behavior-parallel", undefined); + + var BehaviorParallel = /*#__PURE__*/function (_BehaviorComposite) { + _inheritsLoose(BehaviorParallel, _BehaviorComposite); + + function BehaviorParallel(parent, config, context) { + var _this; + + _this = _BehaviorComposite.call(this, parent, config, context) || this; //0 全部成功 -1 全部失败 XXX 指定数目 + + _this.threshold = null; + _this._cacheStatus = []; + _this._cacheStatus = []; // children执行状态Cache + + return _this; + } + + var _proto = BehaviorParallel.prototype; + + _proto.getLogSymbol = function getLogSymbol() { + return "para *="; + }; + + _proto.update = function update(status) { + var entity = this.interrupt(); + var threshold = this.threshold && typeof this.threshold.value == 'number' ? this.threshold.value : 0; + + if (threshold == 0 || threshold > this.children.length) { + threshold = this.children.length; + } else if (threshold < 0) { + threshold = 0; + } // 执行子节点 + + + var success = 0; + var running = 0; + + for (var i = 0; i < this.children.length; i++) { + if (this._cacheStatus[i] == null || this._cacheStatus[i] === BehaviorStatus.Running) { + status = this.children[i].execute(); + this._cacheStatus[i] = status; + + if (status === BehaviorStatus.Running) { + running++; + } + } + + if (this._cacheStatus[i] === BehaviorStatus.Success) { + success++; + } + } + + if (running === 0) { + status = success === threshold ? BehaviorStatus.Success : BehaviorStatus.Failure; + } else { + status = BehaviorStatus.Running; + } + + return _BehaviorComposite.prototype.update.call(this, status); + }; + + _proto.interrupt = function interrupt() { + var running = this._cacheStatus.filter(function (status) { + return status == BehaviorStatus.Running; + }); // 执行子节点中断评估 + + + if (this.interrupters.size > 0 && running.length > 0) { + for (var i = 0; i < this.children.length; i++) { + var child = this.children[i]; + + if (child.status != BehaviorStatus.Running) { + for (var _iterator = _createForOfIteratorHelperLoose(this.interrupters), _step; !(_step = _iterator()).done;) { + var element = _step.value; + var status = element.executeInterrupt(this, child); + + if (status == BehaviorStatus.Success) { + this.abort(); // Sequence 序列节点,需要从 0 开始重新执行 + // this.lastRunning = i; + + return child; + } + } + } + } + } + + return null; + }; + + _proto.abort = function abort() { + if (this._cacheStatus.length > 0) { + for (var index = 0; index < this._cacheStatus.length; index++) { + var status = this._cacheStatus[index]; + + if (status == BehaviorStatus.Running) { + this._cacheStatus[index] = BehaviorStatus.None; + this.children[index].abort(); + } + } + + this._cacheStatus.length = 0; + } + + return _BehaviorComposite.prototype.abort.call(this); + }; + + _proto.reset = function reset() { + _BehaviorComposite.prototype.reset.call(this); + + this._cacheStatus.length = 0; + }; + + return BehaviorParallel; + }(BehaviorComposite); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "d33b7DahC1GAJkKGM7y7wV7", "behavior-service", undefined); + + var BehaviorService = /*#__PURE__*/function (_BehaviorElement) { + _inheritsLoose(BehaviorService, _BehaviorElement); + + function BehaviorService() { + return _BehaviorElement.apply(this, arguments) || this; + } + + var _proto = BehaviorService.prototype; + + _proto.getLogSymbol = function getLogSymbol() { + return "serv &$"; + }; + + _proto.execute = function execute(status) { + status = _BehaviorElement.prototype.execute.call(this, status); + status = this.update(status); + return status; + }; + + return BehaviorService; + }(BehaviorElement); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "a226aAMoitM67DLVGDh9F5z", "behavior-task", undefined); + + var BehaviorTask = /*#__PURE__*/function (_BehaviorEntity) { + _inheritsLoose(BehaviorTask, _BehaviorEntity); + + function BehaviorTask() { + return _BehaviorEntity.apply(this, arguments) || this; + } + + var _proto = BehaviorTask.prototype; + + _proto.getLogSymbol = function getLogSymbol() { + return "task **"; + }; + + _proto.update = function update(status) { + //任务的默认实现直接返回 Failure,所以,在编辑器中使用 Task 节点时,必须指定 onUpdate Delegate + status = BehaviorStatus.Failure; + return _BehaviorEntity.prototype.update.call(this, status); + }; + + return BehaviorTask; + }(BehaviorEntity); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "effa6ManatGXYSPAP9u5VPm", "behavior-tree-interface", undefined); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "1cc92DWh91DaZ5/gyQo0OKu", "blackboard-declaration", undefined); + + var ENotifyObserver = Enum({ + OnValueChange: "OnValueChange", + //当黑板键的 value 值发生改变时 + OnResultChange: "OnResultChange" //当黑板键的 value 值与 keyQuery 指定的比较 + + }); + var EAbortType = Enum({ + None: 0, + Self: -1, + //中断自身分支 + LowerPriority: -1, + //中断低优先级的兄弟分支 + Both: -1 //以上两者 + + }); + var EQueryKey = Enum({ + IsEqualTo: 0, + //黑板键的值是否与指定值相等 + IsNotEqualTo: -1, + IsSet: -1, + //黑板键是否已指定 + IsNotSet: -1 + }); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "95e19cn//tIRo3IxyglgCxw", "blackboard", undefined); + + var logger$1 = console; + + var Blackboard = /*#__PURE__*/function (_EventTarget) { + _inheritsLoose(Blackboard, _EventTarget); + /** + * + * @param data Object 必须是对象类型 + */ + + + function Blackboard(context, data) { + var _this; + + _this = _EventTarget.call(this) || this; + /** 运行时用户自定义数据(主要用于当前行为树运行时数据共享) */ + + _this.userData = new Map(); + _this.context = null; + /** 编辑器内导出的共享变量 */ + + _this.variables = null; + /** 编辑器内导出的共享变量原始数据 */ + + _this.data = null; + + _this.init(context, data); + + return _this; + } + + var _proto = Blackboard.prototype; + + _proto.destroy = function destroy() { + this.clearUserData(); + }; + + _proto.init = function init(context, data) { + this.context = context; + this.data = data; + var array = data == null ? void 0 : data.variables; + if (!array) return; + this.variables = {}; + + for (var index = 0; index < array.length; index++) { + var element = array[index]; + var property = element.value; + + if (!(property != null && property.TYPE)) { + logger$1.error("invalid type: ", element); + continue; + } + + if (!property.TYPE.startsWith("bt.Shared")) { + logger$1.error("invalid type: ", element); + continue; + } + + var SharedClass = js.getClassByName(property.TYPE); + + if (SharedClass) { + var shared = new SharedClass(this, element.name); + + if (property.TYPE == "bt.SharedNode") { + if (property.path) { + var node = context.getTargetByPath(property.path); + shared.value = node; + } + } else { + shared.value = property["default"]; + } + + this.variables[element.name] = shared; + } else { + logger$1.error("getClassByName error: ", element); + } + } + } + /** + * 获取黑板共享变量 + * @param key + * @returns + */ + ; + + _proto.getVariable = function getVariable(key) { + return this.variables[key]; + } + /** + * 设置共享变量的值 + * variable.value = value + * @param key + * @param value + * @returns + */ + ; + + _proto.setVariableValue = function setVariableValue(key, value) { + var variable = this.getVariable(key); + + if (!variable) { + logger$1.error('getVariable error: ', key); + return; + } + + variable.value = value; + } + /** + * 获取用户自定义数据 + * (主要用于当前行为树运行时数据共享) + * @param key + * @returns + */ + ; + + _proto.getUserData = function getUserData(key) { + var value = this.userData.get(key); + return value; + } + /** + * 设置用户自定义数据 + * (主要用于当前行为树运行时数据共享) + * @param key + * @param value + */ + ; + + _proto.setUserData = function setUserData(key, value) { + this.userData.set(key, value); + } + /** + * 清空用户自定义数据 + */ + ; + + _proto.clearUserData = function clearUserData() { + this.userData.clear(); + } + /** + * 获取全局静态数据 + * (主要用于不同行为树间运行时数据共享) + * @param key + * @returns + */ + ; + + Blackboard.getGlobalData = function getGlobalData(key) { + var value = Blackboard.globalData.get(key); + return value; + } + /** + * 设置全局静态数据 + * (主要用于不同行为树间运行时数据共享) + * @param key + * @param value + */ + ; + + Blackboard.setGlobalData = function setGlobalData(key, value) { + Blackboard.globalData.set(key, value); + } + /** + * 清空全局静态数据 + */ + ; + + Blackboard.clearGlobalData = function clearGlobalData() { + Blackboard.globalData.clear(); + }; + + return Blackboard; + }(EventTarget); + /** 运行时全局静态数据(主要用于不同行为树间运行时数据共享) */ + + + Blackboard.globalData = new Map(); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "58b35orH25PP4LLmCV+MBD2", "shared-variable", undefined); + + var SharedVariable = /*#__PURE__*/function () { + function SharedVariable(blackboard, name, value) { + this.name = ""; + this.original = void 0; + this._value = void 0; + this.blackboard = null; + this.blackboard = blackboard; + this.name = name; + + if (typeof value != 'undefined') { + this.value = value; + } + } + + var _proto = SharedVariable.prototype; + + _proto.getValue = function getValue() { + return this._value; + }; + + _proto.setValue = function setValue(v) { + var _this$blackboard; + + var oldValue = this._value; + this._value = v; + + if (typeof this.original == 'undefined' || this.original == null) { + this.original = v; + } + + (_this$blackboard = this.blackboard) == null ? void 0 : _this$blackboard.emit(ENotifyObserver.OnValueChange, this, oldValue); + }; + + _proto.reset = function reset() { + this.value = this.original; + }; + + _proto.toString = function toString() { + return "" + this.value; + }; + + _createClass(SharedVariable, [{ + key: "value", + get: function get() { + return this.getValue(); + }, + set: function set(v) { + this.setValue(v); + } + }]); + + return SharedVariable; + }(); + + var SharedDynamic = function SharedDynamic() {}; + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "25976bKN55PnZEWYSjHLNFM", "shared-array", undefined); + + cclegacy._RF.pop(); + + var _dec$1, _class$1; + + cclegacy._RF.push({}, "bd58fP6ZdhF54nwzSGsS9It", "shared-boolean", undefined); + + var ccclass$1 = _decorator.ccclass; + var SharedBoolean = (_dec$1 = ccclass$1("bt.SharedBoolean"), _dec$1(_class$1 = /*#__PURE__*/function (_SharedVariable) { + _inheritsLoose(SharedBoolean, _SharedVariable); + + function SharedBoolean() { + return _SharedVariable.apply(this, arguments) || this; + } + + _createClass(SharedBoolean, [{ + key: "value", + get: function get() { + return this.getValue(); + }, + set: function set(v) { + this.setValue(v); + } + }]); + + return SharedBoolean; + }(SharedVariable)) || _class$1); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "26f03Cv4M9NEY02tvVyaFMW", "shared-custom", undefined); + + cclegacy._RF.pop(); + + var _dec$2, _class$2; + + cclegacy._RF.push({}, "15057KvK3JE3objFh0DjTT8", "shared-node", undefined); + + var ccclass$2 = _decorator.ccclass; + var SharedNode = (_dec$2 = ccclass$2("bt.SharedNode"), _dec$2(_class$2 = /*#__PURE__*/function (_SharedVariable) { + _inheritsLoose(SharedNode, _SharedVariable); + + function SharedNode() { + return _SharedVariable.apply(this, arguments) || this; + } + + _createClass(SharedNode, [{ + key: "value", + get: function get() { + return this.getValue(); + }, + set: function set(v) { + this.setValue(v); + } + }]); + + return SharedNode; + }(SharedVariable)) || _class$2); + + cclegacy._RF.pop(); + + var _dec$3, _class$3; + + cclegacy._RF.push({}, "affcexAdSJPkqj/VgDzFAUX", "shared-number", undefined); + + var ccclass$3 = _decorator.ccclass; + var SharedNumber = (_dec$3 = ccclass$3("bt.SharedNumber"), _dec$3(_class$3 = /*#__PURE__*/function (_SharedVariable) { + _inheritsLoose(SharedNumber, _SharedVariable); + + function SharedNumber() { + return _SharedVariable.apply(this, arguments) || this; + } + + _createClass(SharedNumber, [{ + key: "value", + get: function get() { + return this.getValue(); + }, + set: function set(v) { + this.setValue(v); + } + }]); + + return SharedNumber; + }(SharedVariable)) || _class$3); + + cclegacy._RF.pop(); + + var _dec$4, _class$4; + + cclegacy._RF.push({}, "a5dd5r6IwZOA6RWiqcq8wRW", "shared-string", undefined); + + var ccclass$4 = _decorator.ccclass; + var SharedString = (_dec$4 = ccclass$4("bt.SharedString"), _dec$4(_class$4 = /*#__PURE__*/function (_SharedVariable) { + _inheritsLoose(SharedString, _SharedVariable); + + function SharedString() { + return _SharedVariable.apply(this, arguments) || this; + } + + _createClass(SharedString, [{ + key: "value", + get: function get() { + return this.getValue(); + }, + set: function set(v) { + this.setValue(v); + } + }]); + + return SharedString; + }(SharedVariable)) || _class$4); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "3eb5dim9SdATqOrRxxDMaNE", "preprocess-class", undefined); //@ts-ignore + + + var legacyCC = window.cc; + + function _wrapOptions(isGetset, _default, type) { + var res = isGetset ? { + _short: true + } : { + _short: true, + "default": _default + }; + + if (type) { + res.type = type; + } + + return res; + } + + var PrimitiveType = /*#__PURE__*/function () { + function PrimitiveType(name, defaultValue) { + this.name = void 0; + this["default"] = void 0; + this.name = name; + this["default"] = defaultValue; + } + + var _proto = PrimitiveType.prototype; + + _proto.toString = function toString() { + return this.name; + }; + + return PrimitiveType; + }(); + + function getFullFormOfProperty(options, isGetset) { + var isLiteral = options && options.constructor === Object; + + if (!isLiteral) { + if (Array.isArray(options) && options.length > 0) { + return _wrapOptions(isGetset, [], options); + } else if (typeof options === 'function') { + var type = options; + return _wrapOptions(isGetset, js.isChildClassOf(type, legacyCC.ValueType) ? new type() : null, type); + } else if (options instanceof PrimitiveType) { + return _wrapOptions(isGetset, options["default"]); + } else { + return _wrapOptions(isGetset, options); + } + } + + return null; + } + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "69d4cf3GO1EUqdPUNbbQMV/", "tools", undefined); + /** + * @packageDocumentation + * @module decorator + */ + // import { DEV } from 'internal:constants'; + // import { CCClass } from '../class'; + // import { error } from '../../platform/debug'; + // import { js } from '../../utils/js'; + + /** + * @en + * The signature compatible with both TypeScript legacy decorator and Babel legacy decorator. + * The `descriptor` argument will only appear in Babel case. + * @zh + * 该签名同时兼容 TypeScript legacy 装饰器以及 Babel legacy 装饰器。 + * `descriptor` 参数只会在 Babel 情况下出现。 + */ + + /** + * @en + * A class(or property) decorator which does nothing. + * @zh + * 一个什么也不做的类(或属性)装饰器。 + */ + + + var emptyDecorator = function emptyDecorator() {}; + /** + * @en + * A function which ignore all arguments and return the `emptyDecorator`. + * @zh + * 一个忽略所有参数并且返回 `emptyDecorator` 的函数。 + */ + + + var emptyDecoratorFn = function emptyDecoratorFn() { + return emptyDecorator; + }; + /** + * @en + * Make a smart class decorator which can properly handle the following form decorator syntax: + * - `@x` + * - `@x(arg0)` + * + * and forward both the decorated class and the `arg0` (in first form, `arg0` is forward as `undefined`) to + * `decorate`. + * @zh + * 创建一个智能类装饰器,它能正确地处理以下形式的装饰器语法: + * - `@x` + * - `@x(arg0)` + * + * 并且,将被装饰的类和 `arg0`(若是第一种形式,`arg0` 就是 `undefined`)一起转发给 `decorate`。 + * @param decorate + */ + + + function makeSmartClassDecorator(decorate) { + return proxyFn; + + function proxyFn(target) { + if (typeof target === 'function') { + // If no parameter specified + return decorate(target); + } else { + return function (constructor) { + return decorate(constructor, target); + }; + } + } + } // caches for class construction + + + var CACHE_KEY = '__ccclassCache__'; + + function getClassCache(ctor, decoratorName) { + return getSubDict(ctor, CACHE_KEY); + } + + function getSubDict(obj, key) { + return obj[key] || (obj[key] = {}); + } + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "1aabe9fggxCH6/CGCKiwuwr", "btclass", undefined); //@ts-ignore + + + var legacyCC$1 = window.cc; + /** + * @en Declare a standard class as a CCClass, please refer to the [document](https://docs.cocos.com/creator3d/manual/zh/scripting/ccclass.html) + * @zh 将标准写法的类声明为 CC 类,具体用法请参阅[类型定义](https://docs.cocos.com/creator3d/manual/zh/scripting/ccclass.html)。 + * @param name - The class name used for serialization. + * @example + * ```ts + * import { _decorator, Component } from 'cc'; + * const {ccclass} = _decorator; + * + * // define a CCClass, omit the name + * @ccclass + * class NewScript extends Component { + * // ... + * } + * + * // define a CCClass with a name + * @ccclass('LoginData') + * class LoginData { + * // ... + * } + * ``` + */ + + var ccclass$5 = makeSmartClassDecorator(function (constructor, name) { + var base = js.getSuper(constructor); // console.log("base: ---------> ", constructor.name, base.name); + + if (base === Object) { + base = null; + } + + var proto = { + name: name, + "extends": base, + ctor: constructor + }; + var cache = constructor[CACHE_KEY]; + + if (cache) { + var decoratedProto = cache.proto; + + if (decoratedProto) { + // decoratedProto.properties = createProperties(ctor, decoratedProto.properties); + js.mixin(proto, decoratedProto); + } + + constructor[CACHE_KEY] = undefined; + } + + var res = CCClass(proto); + + var frame = legacyCC$1._RF.peek(); + + if (!frame || frame.cls != constructor) { + console.warn("invalid btclass: ", constructor.name); + return; + } + + js._setClassId(frame.uuid, res); + + return res; + }); + /** + * @zh 向编辑器注册生命周期委托。例如 @delegate(['onUpdate', 'onEnable'])。 + * @param events: TArrayDelegateEvents + * @example + * @bt.ccclass + * @bt.delegate(['onUpdate', 'onEnable']) + * class NewTask extends bt.Task { + * // ... + * } + */ + + var delegate = emptyDecoratorFn; + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "82f578gnCdKxaATFwR4pCJU", "property", undefined); + /** + * @zh CCClass 属性选项。 + * @en CCClass property options + */ + + /** + * @en Declare as a CCClass property with options + * @zh 声明属性为 CCClass 属性。 + * @param options property options + */ + + /** + * @en Declare as a CCClass property with the property type + * @zh 标注属性为 cc 属性。
+ * 等价于`@property({type})`。 + * @param type A {{ccclass}} type or a {{ValueType}} + */ + + /** + * @en Declare as a CCClass property + * @zh 标注属性为 cc 属性。
+ * 等价于`@property()`。 + */ + + + function property$1(target, propertyKey, descriptor) { + var options = null; + + function normalized(target, propertyKey, descriptor) { + var cache = getClassCache(target.constructor); + + if (cache) { + var ccclassProto = getSubDict(cache, 'proto'); + var properties = getSubDict(ccclassProto, 'properties'); + genProperty(target.constructor, properties, propertyKey, options, descriptor, cache); + } + } + + if (target === undefined) { + // @property() => LegacyPropertyDecorator + return property$1({ + type: undefined + }); + } else if (typeof propertyKey === 'undefined') { + // @property(options) => LegacyPropertyDescriptor + // @property(type) => LegacyPropertyDescriptor + options = target; + return normalized; + } else { + // @property + normalized(target, propertyKey, descriptor); + } + } + + function getDefaultFromInitializer(initializer) { + var value; + + try { + value = initializer(); + } catch (e) { + // just lazy initialize by CCClass + return initializer; + } + + if (typeof value !== 'object' || value === null) { + // string boolean number function undefined null + return value; + } else { + // The default attribute will not be used in ES6 constructor actually, + // so we don't need to simplify into `{}` or `[]` or vec2 completely. + return initializer; + } + } + + function extractActualDefaultValues(ctor) { + var dummyObj; + + try { + dummyObj = new ctor(); + } catch (e) { + return {}; + } + + return dummyObj; + } + + function genProperty(ctor, properties, propertyKey, options, descriptor, cache) { + var fullOptions; + var isGetset = descriptor && (descriptor.get || descriptor.set); + + if (options) { + fullOptions = getFullFormOfProperty(options, isGetset); + } + + var existsPropertyRecord = properties[propertyKey]; + var propertyRecord = js.mixin(existsPropertyRecord || {}, fullOptions || options || {}); + + if (isGetset) { + if (descriptor.get) { + propertyRecord.get = descriptor.get; + } + + if (descriptor.set) { + propertyRecord.set = descriptor.set; + } + } else { + if (descriptor) { + // In case of Babel, if an initializer is given for class field. + // That initializer is passed to `descriptor.initializer`. + // babel + if (descriptor.initializer) { + propertyRecord["default"] = getDefaultFromInitializer(descriptor.initializer); + } + } else { + // In case of TypeScript, we can not directly capture the initializer. + // We have to be hacking to extract the value. + var actualDefaultValues = cache["default"] || (cache["default"] = extractActualDefaultValues(ctor)); + + if (actualDefaultValues.hasOwnProperty(propertyKey)) { + propertyRecord["default"] = actualDefaultValues[propertyKey]; + } + } + } + + properties[propertyKey] = propertyRecord; // console.log("property: ", js.getClassName(ctor), propertyKey, propertyRecord); + } + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "3cf28uQHLlEw6vk4w9KA679", "main", undefined); + + cclegacy._RF.pop(); + + var _dec$5, _dec2$1, _class$5, _class2$1, _descriptor$1; + + cclegacy._RF.push({}, "9c55eEnAU5MQ6P8rjZaM2YO", "Parallel", undefined); + + var Parallel = (_dec$5 = ccclass$5('bt.Parallel'), _dec2$1 = property$1({ + type: SharedNumber, + tooltip: "0 全部成功 -1 全部失败 XXX 指定数目" + }), _dec$5(_class$5 = (_class2$1 = /*#__PURE__*/function (_bt$BehaviorParallel) { + _inheritsLoose(Parallel, _bt$BehaviorParallel); + + function Parallel() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _bt$BehaviorParallel.call.apply(_bt$BehaviorParallel, [this].concat(args)) || this; //0 全部成功 -1 全部失败 XXX 指定数目 + + _initializerDefineProperty(_this, "threshold", _descriptor$1, _assertThisInitialized(_this)); + + return _this; + } + + return Parallel; + }(BehaviorParallel), _descriptor$1 = _applyDecoratedDescriptor(_class2$1.prototype, "threshold", [_dec2$1], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + }), _class2$1)) || _class$5); + + cclegacy._RF.pop(); + + var _dec$6, _class$6; + + cclegacy._RF.push({}, "8a33895bcRHv7EVmZOdpDNK", "Selector", undefined); + + var Selector = (_dec$6 = ccclass$5('bt.Selector'), _dec$6(_class$6 = /*#__PURE__*/function (_bt$BehaviorSelector) { + _inheritsLoose(Selector, _bt$BehaviorSelector); + + function Selector() { + return _bt$BehaviorSelector.apply(this, arguments) || this; + } + + return Selector; + }(BehaviorSelector)) || _class$6); + + cclegacy._RF.pop(); + + var _dec$7, _class$7; + + cclegacy._RF.push({}, "7c895CfOwBCgKYk2gJEdRCX", "Sequence", undefined); + + var Sequence = (_dec$7 = ccclass$5('bt.Sequence'), _dec$7(_class$7 = /*#__PURE__*/function (_bt$BehaviorSequence) { + _inheritsLoose(Sequence, _bt$BehaviorSequence); + + function Sequence() { + return _bt$BehaviorSequence.apply(this, arguments) || this; + } + + return Sequence; + }(BehaviorSequence)) || _class$7); + + cclegacy._RF.pop(); + + var _dec$8, _dec2$2, _class$8; + + cclegacy._RF.push({}, "4d930L3FnhCv71nra+1BGRk", "Conditional", undefined); // const { Behavior } = Node; + + + var Conditional = (_dec$8 = ccclass$5('bt.Conditional'), _dec2$2 = delegate(), _dec$8(_class$8 = _dec2$2(_class$8 = /*#__PURE__*/function (_bt$BehaviorCondition) { + _inheritsLoose(Conditional, _bt$BehaviorCondition); + + function Conditional() { + return _bt$BehaviorCondition.apply(this, arguments) || this; + } + + var _proto = Conditional.prototype; + + _proto.execute = function execute(status) { + return _bt$BehaviorCondition.prototype.execute.call(this, status); + }; + + return Conditional; + }(BehaviorConditional)) || _class$8) || _class$8); + + cclegacy._RF.pop(); + + var _dec$9, _dec2$3, _class$9; + + cclegacy._RF.push({}, "337ccG8GiZNvZRj2auHv58h", "Decorator", undefined); // const { Behavior } = Node; + + + var Decorator = (_dec$9 = ccclass$5('bt.Decorator'), _dec2$3 = delegate(), _dec$9(_class$9 = _dec2$3(_class$9 = /*#__PURE__*/function (_bt$BehaviorDecorator) { + _inheritsLoose(Decorator, _bt$BehaviorDecorator); + + function Decorator() { + return _bt$BehaviorDecorator.apply(this, arguments) || this; + } + + var _proto = Decorator.prototype; + + _proto.execute = function execute(status) { + return _bt$BehaviorDecorator.prototype.execute.call(this, status); + }; + + return Decorator; + }(BehaviorDecorator)) || _class$9) || _class$9); + + cclegacy._RF.pop(); + + var _dec$a, _class$a; + + cclegacy._RF.push({}, "0c445cwFwlFJIy1bJtPqjcb", "ForceFailure", undefined); // const { Behavior } = Node; + + + var ForceFailure = (_dec$a = ccclass$5('bt.ForceFailure'), _dec$a(_class$a = /*#__PURE__*/function (_bt$BehaviorDecorator) { + _inheritsLoose(ForceFailure, _bt$BehaviorDecorator); + + function ForceFailure() { + return _bt$BehaviorDecorator.apply(this, arguments) || this; + } + + var _proto = ForceFailure.prototype; + + _proto.execute = function execute(status) { + status = BehaviorStatus.Failure; + return _bt$BehaviorDecorator.prototype.execute.call(this, status); + }; + + return ForceFailure; + }(BehaviorDecorator)) || _class$a); + + cclegacy._RF.pop(); + + var _dec$b, _dec2$4, _dec3$1, _dec4$1, _dec5, _dec6, _class$b, _class2$2, _descriptor$2, _descriptor2$1, _descriptor3$1, _descriptor4, _descriptor5; + + cclegacy._RF.push({}, "84cc7xNzHpN+6XMX/fg4L5x", "ForceInterrupter", undefined); + + var ForceInterrupter = (_dec$b = ccclass$5('bt.ForceInterrupter'), _dec2$4 = property$1({ + type: ENotifyObserver, + tooltip: "触发时机(比较结果改变时/黑板键的值改变时)" + }), _dec3$1 = property$1({ + type: EAbortType, + tooltip: "中断类型(Self:中断自身分支;LowerPriority:中断低优先级的兄弟分支)" + }), _dec4$1 = property$1({ + type: EQueryKey, + tooltip: "比较方式" + }), _dec5 = property$1({ + type: SharedDynamic, + tooltip: "用于与 {{target}} 对应黑板键的值进行比较" + }), _dec6 = property$1({ + type: SharedVariable, + tooltip: "指定黑板键" + }), _dec$b(_class$b = (_class2$2 = /*#__PURE__*/function (_bt$BehaviorDecorator) { + _inheritsLoose(ForceInterrupter, _bt$BehaviorDecorator); + + function ForceInterrupter() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _bt$BehaviorDecorator.call.apply(_bt$BehaviorDecorator, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "notifyType", _descriptor$2, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "abortType", _descriptor2$1, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "keyQuery", _descriptor3$1, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "targetValue", _descriptor4, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "target", _descriptor5, _assertThisInitialized(_this)); + + _this._isSet = false; + _this._isEqual = false; + return _this; + } + + var _proto = ForceInterrupter.prototype; + + _proto.load = function load() { + var _this$target, _this$target2; + + _bt$BehaviorDecorator.prototype.load.call(this); + + this.$context.blackboard.on(ENotifyObserver.OnValueChange, this.onValueChange, this); + this._isSet = typeof ((_this$target = this.target) == null ? void 0 : _this$target.value) != 'undefined' ? true : false; + this._isEqual = ((_this$target2 = this.target) == null ? void 0 : _this$target2.value) == this.targetValue ? true : false; + }; + + _proto.destroy = function destroy() { + this.$context.blackboard.targetOff(this); + this.reset(); + + _bt$BehaviorDecorator.prototype.destroy.call(this); + }; + + _proto.reset = function reset() { + this._isSet = false; + this._isEqual = false; + }; + + _proto.onValueChange = function onValueChange(shared, oldValue) { + if (this.abortType === EAbortType.None || !this.target) { + return; + } + + if (this.target.name != shared.name) { + return; + } //值改变时触发 + + + if (this.notifyType == ENotifyObserver.OnValueChange) { + if (this.target.value == oldValue) { + return; + } + } //结果改变时触发 + else if (this.notifyType == ENotifyObserver.OnResultChange) { + var isSet = typeof (shared == null ? void 0 : shared.value) != 'undefined' ? true : false; + + if (this.keyQuery == EQueryKey.IsSet && isSet) { + if (this._isSet == isSet) { + return; + } + } else if (this.keyQuery == EQueryKey.IsNotSet && !isSet) { + if (this._isSet == isSet) { + return; + } + } + + this._isSet = isSet; + var isEqual = (shared == null ? void 0 : shared.value) == this.targetValue ? true : false; + + if (this.keyQuery == EQueryKey.IsEqualTo && isEqual) { + if (this._isEqual == isEqual) { + return; + } + } else if (this.keyQuery == EQueryKey.IsNotEqualTo && !isEqual) { + if (this._isEqual == isEqual) { + return; + } + } + + this._isEqual = isEqual; + } + + if (this.abortType == EAbortType.LowerPriority || this.abortType == EAbortType.Both) { + this.parent.abort(); + } + + if (this.abortType == EAbortType.Self || this.abortType == EAbortType.Both) { + this.owner.abort(); + } + }; + + _proto.execute = function execute(status) { + return _bt$BehaviorDecorator.prototype.execute.call(this, status); + }; + + return ForceInterrupter; + }(BehaviorDecorator), (_descriptor$2 = _applyDecoratedDescriptor(_class2$2.prototype, "notifyType", [_dec2$4], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return ENotifyObserver.OnValueChange; + } + }), _descriptor2$1 = _applyDecoratedDescriptor(_class2$2.prototype, "abortType", [_dec3$1], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return EAbortType.None; + } + }), _descriptor3$1 = _applyDecoratedDescriptor(_class2$2.prototype, "keyQuery", [_dec4$1], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return EQueryKey.IsEqualTo; + } + }), _descriptor4 = _applyDecoratedDescriptor(_class2$2.prototype, "targetValue", [_dec5], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return undefined; + } + }), _descriptor5 = _applyDecoratedDescriptor(_class2$2.prototype, "target", [_dec6], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + })), _class2$2)) || _class$b); + + cclegacy._RF.pop(); + + var _dec$c, _class$c; + + cclegacy._RF.push({}, "ef4acEffpdO1IBYSHuf4GgQ", "ForceSuccessful", undefined); // const { Behavior } = Node; + + + var ForceSuccessful = (_dec$c = ccclass$5('bt.ForceSuccessful'), _dec$c(_class$c = /*#__PURE__*/function (_bt$BehaviorDecorator) { + _inheritsLoose(ForceSuccessful, _bt$BehaviorDecorator); + + function ForceSuccessful() { + return _bt$BehaviorDecorator.apply(this, arguments) || this; + } + + var _proto = ForceSuccessful.prototype; + + _proto.execute = function execute(status) { + status = BehaviorStatus.Success; + return _bt$BehaviorDecorator.prototype.execute.call(this, status); + }; + + return ForceSuccessful; + }(BehaviorDecorator)) || _class$c); + + cclegacy._RF.pop(); + + var _dec$d, _dec2$5, _class$d, _class2$3, _descriptor$3; + + cclegacy._RF.push({}, "b7632MgaNFI7po3/OStKHXa", "Interrupter", undefined); + + var Interrupter = (_dec$d = ccclass$5('bt.Interrupter'), _dec2$5 = property$1({ + type: EAbortType, + tooltip: "中断类型(Self:中断自身分支;LowerPriority:中断低优先级的兄弟分支)" + }), _dec$d(_class$d = (_class2$3 = /*#__PURE__*/function (_bt$BehaviorDecorator) { + _inheritsLoose(Interrupter, _bt$BehaviorDecorator); + + function Interrupter() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _bt$BehaviorDecorator.call.apply(_bt$BehaviorDecorator, [this].concat(args)) || this; + _this.isInterrupter = true; + + _initializerDefineProperty(_this, "abortType", _descriptor$3, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = Interrupter.prototype; + + _proto.getLogSymbol = function getLogSymbol() { + return "inte &!"; + }; + + _proto.load = function load() { + _bt$BehaviorDecorator.prototype.load.call(this); + + if (this.abortType == EAbortType.LowerPriority || this.abortType == EAbortType.Both) { + this.parent.addInterrupter(this); + } + + if (this.abortType == EAbortType.Self || this.abortType == EAbortType.Both) { + this.owner.addInterrupter(this); + } + }; + + _proto.destroy = function destroy() { + _bt$BehaviorDecorator.prototype.destroy.call(this); + }; + + _proto.execute = function execute(status) { + return _bt$BehaviorDecorator.prototype.execute.call(this, status); + }; + + _proto.executeInterrupt = function executeInterrupt(parent, child) { + this.enter(); + this.enable(); + var status = BehaviorStatus.Failure; + + if (this.owner == parent || this.owner == child) { + status = child.checkCondition(status); + } + + this.execute(status); + this.disable(); + this.exit(); + return status; + }; + + return Interrupter; + }(BehaviorDecorator), _descriptor$3 = _applyDecoratedDescriptor(_class2$3.prototype, "abortType", [_dec2$5], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return EAbortType.None; + } + }), _class2$3)) || _class$d); + + cclegacy._RF.pop(); + + var _dec$e, _class$e; + + cclegacy._RF.push({}, "1c7eeM24ORNuLjT/Wv26orE", "Inverter", undefined); // const { Behavior } = Node; + + + var Inverter = (_dec$e = ccclass$5('bt.Inverter'), _dec$e(_class$e = /*#__PURE__*/function (_bt$BehaviorDecorator) { + _inheritsLoose(Inverter, _bt$BehaviorDecorator); + + function Inverter() { + return _bt$BehaviorDecorator.apply(this, arguments) || this; + } + + var _proto = Inverter.prototype; + + _proto.execute = function execute(status) { + if (status == BehaviorStatus.Success) { + status = BehaviorStatus.Failure; + } else if (status == BehaviorStatus.Failure) { + status = BehaviorStatus.Success; + } + + return _bt$BehaviorDecorator.prototype.execute.call(this, status); + }; + + return Inverter; + }(BehaviorDecorator)) || _class$e); + + cclegacy._RF.pop(); + + var _dec$f, _dec2$6, _class$f, _class2$4, _descriptor$4; + + cclegacy._RF.push({}, "6ad35yq9I9K2IS8pb4WAfWp", "Repeater", undefined); // const { Behavior } = Node; + + + var Repeater = (_dec$f = ccclass$5('bt.Repeater'), _dec2$6 = property$1({ + tooltip: "Repeat times / 重复次数" + }), _dec$f(_class$f = (_class2$4 = /*#__PURE__*/function (_bt$BehaviorDecorator) { + _inheritsLoose(Repeater, _bt$BehaviorDecorator); + + function Repeater() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _bt$BehaviorDecorator.call.apply(_bt$BehaviorDecorator, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "times", _descriptor$4, _assertThisInitialized(_this)); + + _this.current = 0; + return _this; + } + + var _proto = Repeater.prototype; + + _proto.reset = function reset() { + _bt$BehaviorDecorator.prototype.reset.call(this); + + this.current = 0; + }; + + _proto.execute = function execute(status) { + if (!this.checkValid(status)) { + //运行中的任务强行返回 Success + if (status == BehaviorStatus.Running) { + status = BehaviorStatus.Success; + } + } else { + status = BehaviorStatus.Running; + } + + return _bt$BehaviorDecorator.prototype.execute.call(this, status); + }; + + _proto.checkValid = function checkValid(status) { + //默认值为0,表示无限重复 + if (this.times == 0) { + return true; + } + + this.current++; + + if (this.times > this.current) { + return true; + } else { + return false; + } + }; + + _proto.getAppendedLog = function getAppendedLog(stage, status) { + if (stage == 'execute') { + return "[ Repeat times: " + this.current + " / " + this.times + " ]"; + } + + return ''; + }; + + return Repeater; + }(BehaviorDecorator), _descriptor$4 = _applyDecoratedDescriptor(_class2$4.prototype, "times", [_dec2$6], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0; + } + }), _class2$4)) || _class$f); + + cclegacy._RF.pop(); + + var _dec$g, _dec2$7, _class$g; + + cclegacy._RF.push({}, "c1106os1qVMUp8XmuX12d+2", "Service", undefined); + + var Service = (_dec$g = ccclass$5('bt.Service'), _dec2$7 = delegate(), _dec$g(_class$g = _dec2$7(_class$g = /*#__PURE__*/function (_bt$BehaviorService) { + _inheritsLoose(Service, _bt$BehaviorService); + + function Service() { + return _bt$BehaviorService.apply(this, arguments) || this; + } + + return Service; + }(BehaviorService)) || _class$g) || _class$g); + + cclegacy._RF.pop(); + + var _dec$h, _class$h; + + cclegacy._RF.push({}, "1c46dvoGYRMwIvpHqM2pAfV", "Idle", undefined); + + var Idle = (_dec$h = ccclass$5('bt.Idle'), _dec$h(_class$h = /*#__PURE__*/function (_bt$BehaviorTask) { + _inheritsLoose(Idle, _bt$BehaviorTask); + + function Idle() { + return _bt$BehaviorTask.apply(this, arguments) || this; + } + + var _proto = Idle.prototype; + + _proto.update = function update(status) { + status = BehaviorStatus.Running; + return this.onUpdate(status); + }; + + return Idle; + }(BehaviorTask)) || _class$h); + + cclegacy._RF.pop(); + + var _dec$i, _dec2$8, _dec3$2, _class$i, _class2$5, _descriptor$5; + + cclegacy._RF.push({}, "116019tPZREe7GOBui/GuKW", "Log", undefined); + + var Log = (_dec$i = ccclass$5('bt.Log'), _dec2$8 = delegate(), _dec3$2 = property$1({ + type: SharedString + }), _dec$i(_class$i = _dec2$8(_class$i = (_class2$5 = /*#__PURE__*/function (_bt$BehaviorTask) { + _inheritsLoose(Log, _bt$BehaviorTask); + + function Log() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _bt$BehaviorTask.call.apply(_bt$BehaviorTask, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "message", _descriptor$5, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = Log.prototype; + + _proto.update = function update(status) { + if (this.message) { + logger.log("[" + this.nodeConfig.title + "]-[" + this.nodeConfig.order + "] : message = [" + this.message.value + "]"); + } + + status = BehaviorStatus.Success; + return this.onUpdate(status); + }; + + return Log; + }(BehaviorTask), _descriptor$5 = _applyDecoratedDescriptor(_class2$5.prototype, "message", [_dec3$2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + }), _class2$5)) || _class$i) || _class$i); + + cclegacy._RF.pop(); + + var _dec$j, _dec2$9, _class$j; + + cclegacy._RF.push({}, "917dc/B4bBArq1QrBFaQ6gk", "Task", undefined); + + var Task = (_dec$j = ccclass$5('bt.Task'), _dec2$9 = delegate(), _dec$j(_class$j = _dec2$9(_class$j = /*#__PURE__*/function (_bt$BehaviorTask) { + _inheritsLoose(Task, _bt$BehaviorTask); + + function Task() { + return _bt$BehaviorTask.apply(this, arguments) || this; + } + + return Task; + }(BehaviorTask)) || _class$j) || _class$j); + + cclegacy._RF.pop(); + + var _dec$k, _dec2$a, _class$k, _class2$6, _descriptor$6; + + cclegacy._RF.push({}, "d6ba0cCO4hGyr03nOM9B5Vq", "Wait", undefined); + + var Wait = (_dec$k = ccclass$5('bt.Wait'), _dec2$a = property$1({ + type: SharedNumber + }), _dec$k(_class$k = (_class2$6 = /*#__PURE__*/function (_bt$BehaviorTask) { + _inheritsLoose(Wait, _bt$BehaviorTask); + + function Wait() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _bt$BehaviorTask.call.apply(_bt$BehaviorTask, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "duration", _descriptor$6, _assertThisInitialized(_this)); + + _this._intervel = 0; + return _this; + } + + var _proto = Wait.prototype; + + _proto.update = function update(status) { + status = BehaviorStatus.Running; + + if (this.duration.original > 0) { + var duration = this.duration.value; + this._intervel += this.$context.deltaTime; + + if (this._intervel - duration >= 0) { + status = BehaviorStatus.Success; + this._intervel = 0; + } + } + + return this.onUpdate(status); + }; + + return Wait; + }(BehaviorTask), _descriptor$6 = _applyDecoratedDescriptor(_class2$6.prototype, "duration", [_dec2$a], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + }), _class2$6)) || _class$k); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "b439eVj61hCYammYdFmJ95R", "main", undefined); + + cclegacy._RF.pop(); + + var _dec$l, _class$l; + + cclegacy._RF.push({}, "57329UxP9VOAa8MciTPhIOm", "BehaviorButton", undefined); + + var ccclass$6 = _decorator.ccclass, + disallowMultiple = _decorator.disallowMultiple; + var BehaviorButton = (_dec$l = ccclass$6("BehaviorButton"), _dec$l(_class$l = disallowMultiple(_class$l = /*#__PURE__*/function (_Component) { + _inheritsLoose(BehaviorButton, _Component); + + function BehaviorButton() { + return _Component.apply(this, arguments) || this; + } + + return BehaviorButton; + }(Component)) || _class$l) || _class$l); + + cclegacy._RF.pop(); + + var _dec$m, _dec2$b, _dec3$3, _dec4$2, _class$m, _class2$7, _descriptor$7, _descriptor2$2, _descriptor3$2, _descriptor4$1, _descriptor5$1, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10; + + cclegacy._RF.push({}, "0047b40TAlFJaaH5Cj5qbAP", "BehaviorLogOptions", undefined); + + var ccclass$7 = _decorator.ccclass, + property$2 = _decorator.property, + requireComponent = _decorator.requireComponent, + disallowMultiple$1 = _decorator.disallowMultiple; + var DefaultLogOptions = { + logAbort: true, + logInterrupt: true, + logExecute: true, + logUpdate: false, + logEnter: false, + logExit: false, + logEnable: false, + logDisable: false, + logLoad: false, + logDestroy: false + }; + var BehaviorLogOptions = (_dec$m = ccclass$7("BehaviorLogOptions"), _dec2$b = requireComponent(BehaviorButton), _dec3$3 = property$2({ + tooltip: "当任务被中止时是否打印日志" + }), _dec4$2 = property$2({ + tooltip: "当中断产生时是否打印日志" + }), _dec$m(_class$m = _dec2$b(_class$m = disallowMultiple$1(_class$m = (_class2$7 = /*#__PURE__*/function (_Component) { + _inheritsLoose(BehaviorLogOptions, _Component); + + function BehaviorLogOptions() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "logAbort", _descriptor$7, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "logInterrupt", _descriptor2$2, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "logExecute", _descriptor3$2, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "logUpdate", _descriptor4$1, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "logLoad", _descriptor5$1, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "logDestroy", _descriptor6, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "logEnter", _descriptor7, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "logExit", _descriptor8, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "logEnable", _descriptor9, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "logDisable", _descriptor10, _assertThisInitialized(_this)); + + return _this; + } + + return BehaviorLogOptions; + }(Component), (_descriptor$7 = _applyDecoratedDescriptor(_class2$7.prototype, "logAbort", [_dec3$3], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return true; + } + }), _descriptor2$2 = _applyDecoratedDescriptor(_class2$7.prototype, "logInterrupt", [_dec4$2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return true; + } + }), _descriptor3$2 = _applyDecoratedDescriptor(_class2$7.prototype, "logExecute", [property$2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return true; + } + }), _descriptor4$1 = _applyDecoratedDescriptor(_class2$7.prototype, "logUpdate", [property$2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor5$1 = _applyDecoratedDescriptor(_class2$7.prototype, "logLoad", [property$2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor6 = _applyDecoratedDescriptor(_class2$7.prototype, "logDestroy", [property$2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor7 = _applyDecoratedDescriptor(_class2$7.prototype, "logEnter", [property$2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor8 = _applyDecoratedDescriptor(_class2$7.prototype, "logExit", [property$2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor9 = _applyDecoratedDescriptor(_class2$7.prototype, "logEnable", [property$2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor10 = _applyDecoratedDescriptor(_class2$7.prototype, "logDisable", [property$2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + })), _class2$7)) || _class$m) || _class$m) || _class$m); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "aadd8eJap1D2qpqCKlsIqzq", "BehaviorManager", undefined); + + var logger$2 = console; + + var BehaviorManager = /*#__PURE__*/function () { + BehaviorManager.getInstance = function getInstance() { + if (!BehaviorManager._instance) { + BehaviorManager._instance = new BehaviorManager(); + } + + return BehaviorManager._instance; + }; + + BehaviorManager.deleteInstance = function deleteInstance() { + BehaviorManager._instance = null; + }; + + function BehaviorManager() { + /** 运行 */ + this.running = new Set(); + /** 挂起 */ + + this.suspend = new Set(); + /** + * 行为树统一帧率 + * 默认为 cc.game.frameRate + */ + + this.frameRate = 0; + /** 期望帧率对应的每帧时间(以 s 为单位) */ + + this.frameTime = 0; + /** 每帧时间增量 */ + + this.deltaTime = 0; // this.duration = 0 + // this.ticks = 0 + + this.setFrameRate(Number(game.frameRate)); + } + + var _proto = BehaviorManager.prototype; + + _proto.getFrameRate = function getFrameRate() { + return this.frameRate; + } + /** + * 设置行为树执行帧率,但真正的FPS还取决于 cc.game.frameRate + * 注意:行为树的帧率不会比 cc.game.frameRate 大 + * @param frameRate + */ + ; + + _proto.setFrameRate = function setFrameRate(frameRate) { + var _this = this; + + var gRate = Number(game.frameRate); + + if (frameRate <= 0 || frameRate > gRate) { + logger$2.warn("Invalid frame rate!"); + frameRate = gRate; + } + + if (this.frameRate != frameRate) { + this.frameRate = frameRate; + this.frameTime = 1000 / this.frameRate / 1000 - 0.0001; + this.running.forEach(function (context) { + if (context.getFrameRate() > _this.frameRate) { + context.setFrameRate(_this.frameRate); + } + }); + this.suspend.forEach(function (context) { + if (context.getFrameRate() > _this.frameRate) { + context.setFrameRate(_this.frameRate); + } + }); + } + } + /** + * 将行为树添加到 running 集合中 + * @param context + */ + ; + + _proto.runBehavior = function runBehavior(context) { + this.resumeBehavior(context); + } + /** + * 将行为树添加到集合中 + * @description context.startWhenEnabled 为 true 时,行为树添加到 running 集合,否则添加到 suspend 集合 + * @param context + */ + ; + + _proto.addBehavior = function addBehavior(context) { + if (context.startWhenEnabled) { + this.resumeBehavior(context); + } else { + this.pauseBehavior(context); + } + }; + + _proto.removeBehavior = function removeBehavior(context) { + if (this.running.has(context)) { + this.running["delete"](context); + } + + if (this.suspend.has(context)) { + this.suspend["delete"](context); + } + }; + + _proto.pauseBehavior = function pauseBehavior(context) { + if (!this.suspend.has(context)) { + context.onPause(); + this.suspend.add(context); + } + + if (this.running.has(context)) { + this.running["delete"](context); + } + }; + + _proto.resumeBehavior = function resumeBehavior(context) { + if (!this.running.has(context)) { + context.onResume(); + this.running.add(context); + } + + if (this.suspend.has(context)) { + this.suspend["delete"](context); + } + }; + + _proto.stopBehavior = function stopBehavior(context) { + if (this.running.has(context)) { + context.onStop(); + this.running["delete"](context); + } + + if (!this.suspend.has(context)) { + this.suspend.add(context); + } + } + /** + * 更新状态 + * @param {*} delta 上一次tick时间间隔 + */ + ; + + _proto.tick = function tick(delta) { + var _this2 = this; // this.duration += delta + // this.ticks += 1 + + + this.running.forEach(function (context) { + var status = context.onTick(delta); + + if (status != BehaviorStatus.Running) { + if (context.restartWhenComplete) { + context.onRestart(); + } else { + context.onFinished(); + + _this2.stopBehavior(context); + } + } + }); + }; + + _proto.update = function update(delta) { + this.deltaTime += delta; + + if (this.deltaTime < this.frameTime) { + return; + } + + this.tick(delta); + this.deltaTime -= this.frameTime; + }; + + _proto.onEnable = function onEnable() { + var _this3 = this; + + this.suspend.forEach(function (context) { + if (context.isSuspended) { + _this3.resumeBehavior(context); + } + }); + }; + + _proto.onDisable = function onDisable() { + var _this4 = this; + + this.running.forEach(function (context) { + if (context.pauseWhenDisabled) { + _this4.pauseBehavior(context); + } + }); + }; + + return BehaviorManager; + }(); // /** 行为树持续时间(是每帧时间增量叠加后的时间总和) */ + // private duration = 0; + // /** 行为树 tick 次数 */ + // private ticks = 0; + + + BehaviorManager._instance = null; + + cclegacy._RF.pop(); + + var _dec$n, _dec2$c, _dec3$4, _dec4$3, _dec5$1, _dec6$1, _dec7, _dec8, _dec9, _class$n, _class2$8, _descriptor$8, _descriptor2$3, _descriptor3$3, _descriptor4$2, _descriptor5$2, _descriptor6$1, _descriptor7$1; + + cclegacy._RF.push({}, "e021fzRX91CZbfisWd9maoE", "BehaviorTree", undefined); + + var ccclass$8 = _decorator.ccclass, + property$3 = _decorator.property, + requireComponent$1 = _decorator.requireComponent, + disallowMultiple$2 = _decorator.disallowMultiple; + var BehaviorTree = (_dec$n = ccclass$8("BehaviorTree"), _dec2$c = requireComponent$1(BehaviorLogOptions), _dec3$4 = property$3({ + type: JsonAsset, + tooltip: "绑定行为树编辑器数据资源" + }), _dec4$3 = property$3({ + tooltip: "\u8BBE\u7F6E\u5F53\u524D\u884C\u4E3A\u6811\u6267\u884C\u5E27\u7387\uFF0C\u4E3A 0 \u8868\u793A\u4E0E BehaviorManager.frameRate \u4FDD\u6301\u4E00\u81F4\u3002\n \u5982\u9700\u7EDF\u4E00\u8BBE\u7F6E\u5E27\u7387\uFF0C\u53EF\u4EE5\u4F7F\u7528 BehaviorManager.getInstance().setFrameRate(rate)\u3002\n \u6CE8\u610F\uFF1A\u884C\u4E3A\u6811\u7684\u5E27\u7387\u4E0D\u4F1A\u6BD4 cc.game.frameRate \u5927", + min: 0, + step: 1 + }), _dec5$1 = property$3({ + tooltip: "节点激活时开始运行" + }), _dec6$1 = property$3({ + tooltip: "节点禁用时暂停运行" + }), _dec7 = property$3({ + tooltip: "当一次行为树全部结束时,重新开始执行该行为树" + }), _dec8 = property$3({ + tooltip: "当重新开始执行行为树时,重置各节点数据" + }), _dec9 = property$3({ + tooltip: "当行为树状态变动时输出日志" + }), _dec$n(_class$n = _dec2$c(_class$n = disallowMultiple$2(_class$n = (_class2$8 = /*#__PURE__*/function (_Component) { + _inheritsLoose(BehaviorTree, _Component); + + function BehaviorTree() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "jsonAsset", _descriptor$8, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "frameRate", _descriptor2$3, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "startWhenEnabled", _descriptor3$3, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "pauseWhenDisabled", _descriptor4$2, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "restartWhenComplete", _descriptor5$2, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "resetValuesOnRestart", _descriptor6$1, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "logTaskChanges", _descriptor7$1, _assertThisInitialized(_this)); + /** + * 行为树事件委托对象 + * 事件类型详见: IBehaviorTreeEventInterface + */ + + + _this.delegate = new BehaviorEventTarget(); + /** 行为树执行日志粒度控制 */ + + _this.logOptions = null; + /** 行为树持续时间(是每帧时间增量叠加后的时间总和) */ + + _this.duration = 0; + /** 行为树 tick 总次数 */ + + _this.ticks = 0; + _this.tickLoggers = []; + _this.lastLoggers = []; + /** 所有节点(包括组合节点、任务节点、装饰器等所有节点) */ + + _this.allNodes = []; + /** 所有任务节点(key为该节点在行为树编辑器中对应的序号) */ + + _this.allTasks = []; + /** 行为树使用的黑板变量 */ + + _this.blackboard = null; + /** 行为树当前状态 */ + + _this.status = BehaviorStatus.None; + /** 行为树是否已挂起 */ + + _this.isSuspended = false; + /** 行为树是否已执行结束 */ + + _this.isCompleted = false; + _this._inited = false; // protected _utils: BehaviorTreeUtils = null; + + _this._root = null; + /** 期望帧率对应的每帧时间(以 s 为单位) */ + + _this.frameTime = 0; + _this._isLogTaskChanged = false; + return _this; + } + + var _proto = BehaviorTree.prototype; + + _proto.onLoad = function onLoad() { + var _this$jsonAsset; + + if (!((_this$jsonAsset = this.jsonAsset) != null && _this$jsonAsset.json)) return; + this.reuse(); + }; + + _proto.onDestroy = function onDestroy() { + this.unuse(); + }; + + _proto.unuse = function unuse() { + if (!this._inited) { + return; + } + + this._inited = false; + this.status = BehaviorStatus.None; + this.duration = 0; + this.ticks = 0; + this.allNodes.length = 0; + this.allTasks.length = 0; + this.tickLoggers.length = 0; + this.lastLoggers.length = 0; + this.isSuspended = false; + this.isCompleted = false; + + if (this._root) { + this._root.destroy(); + + this._root = null; + } + + if (this.blackboard) { + this.blackboard.destroy(); + this.blackboard = null; + } + + this._manager.removeBehavior(this); + }; + + _proto.reuse = function reuse() { + this.loadJsonAsset(this.jsonAsset); + }; + + _proto.loadJsonAsset = function loadJsonAsset(jsonAsset) { + if (!jsonAsset || !jsonAsset.json) return; + if (this._inited) return; + this._inited = true; + this.setFrameRate(this.frameRate); + this.jsonAsset = jsonAsset; + this.logOptions = this.getComponent(BehaviorLogOptions); + + if (!this.logOptions) { + this.logOptions = this.addComponent(BehaviorLogOptions); + + for (var key in DefaultLogOptions) { + this.logOptions[key] = !!DefaultLogOptions[key]; + } + } + + var jsonObect = jsonAsset.json; + var json = jsonObect; + this.blackboard = new Blackboard(this, json.blackboard); + + if (this.loadTree(json)) { + this._manager.addBehavior(this); + } + }; + + _proto.loadTree = function loadTree(tree) { + var _tree$root$config; + + if (!(tree != null && tree.root)) { + logger.error('load failed -- tree is invalid'); + return false; + } + + this._root = null; + this.allNodes.length = 0; + this.allTasks.length = 0; + this.tickLoggers.length = 0; + this.lastLoggers.length = 0; + var successs = false; + this.delegate.emit("onDeserializeBefore"); // 创建根节点 + + var options = ((_tree$root$config = tree.root.config) == null ? void 0 : _tree$root$config.label) || {}; + + if (options.uuid) { + var instance = deserializeNode(null, tree.root, this); + + if (instance) { + this._root = instance; + successs = true; + } else { + logger.error("Can't find class by uuid: ", options.uuid); + } + } + + this.delegate.emit("onDeserializeAfter"); + return successs; + }; + + _proto.getFrameRate = function getFrameRate() { + return this.frameRate; + } + /** + * 设置当前行为树执行帧率,但真正的FPS还取决于 BehaviorManager.frameRate 和 cc.game.frameRate + * 如需统一设置帧率,可以使用 BehaviorManager.getInstance().setFrameRate(rate) + * 注意:行为树的帧率不会比 cc.game.frameRate 大 + * @param frameRate + */ + ; + + _proto.setFrameRate = function setFrameRate(frameRate) { + var mRate = this._manager.getFrameRate(); + + if (frameRate <= 0 || frameRate > mRate) { + if (frameRate != 0) { + logger.warn("Invalid frame rate! tree.frameRate=" + frameRate + ", manage.frameRate=" + mRate + ", game.frameRate=" + game.frameRate); + } + + frameRate = mRate; + } + + this.frameRate = frameRate; + this.frameTime = 1000 / this.frameRate / 1000 - 0.0001; + }; + /** + * 行为树反序列化每个节点回调 + * @param node + */ + + + _proto.onDeserialize = function onDeserialize(node) { + this.allNodes.push(node); + + if (node instanceof Task) { + this.allTasks.push(node); + } + + this.delegate.emit("onDeserialize", node); + } + /** + * 行为树根节点 + * @returns + */ + ; + + _proto.getRoot = function getRoot() { + return this._root; + } + /** + * 根据指定的 tag 获取某个任务 + * @param tag string + * @returns + */ + ; + + _proto.getTask = function getTask(tag) { + var node = this.allTasks.find(function (v) { + return v.nodeConfig.tag == tag; + }); + return node; + } + /** + * 根据任务在行为树中的序号获取某个任务 + * @param order number + * @returns + */ + ; + + _proto.getTaskByOrder = function getTaskByOrder(order) { + var node = this.allTasks.find(function (v) { + return v.nodeConfig.order == order; + }); + return node; + } + /** 行为树组件被附加到的 cc.Node 节点 */ + ; + + _proto.getTargetRoot = function getTargetRoot() { + return this.node; + } + /** + * 根据子节点路径获取 cc.Node 节点 + * @param path + * @returns + */ + ; + + _proto.getTargetByPath = function getTargetByPath$1(path) { + return getTargetByPath(this.node, path); + } + /** 某个类型的 log 是否启用 */ + ; + + _proto.isLogEnabled = function isLogEnabled(key) { + return this.logOptions[key]; + }; + + _proto.onHandleTreeLog = function onHandleTreeLog(msg) { + if (this.logTaskChanges) { + if (!this._isLogTaskChanged) { + var length = this.tickLoggers.length; + + if (this.lastLoggers.length > length) { + var temp = this.lastLoggers[length]; + + if (temp != msg) { + this._isLogTaskChanged = true; + } + } else { + this._isLogTaskChanged = true; + } + } + + this.tickLoggers.push(msg); + } + }; + + _proto.onTick = function onTick(delta) { + if (!this._root) { + logger.error('tick failed -- root is null'); + return BehaviorStatus.None; + } + + this.duration += delta; + this.ticks += 1; + this.tickLoggers.length = 0; + this._isLogTaskChanged = false; + this.status = this._root.execute(); + + if (this._isLogTaskChanged) { + var msg = "[ BehaviorTree - <" + this._root.nodeTitle + "> onTick(" + this.ticks + ") : status = " + BehaviorStatus[this.status] + " ]\n" + this.tickLoggers.join("\n"); + logger.log(msg); + this.lastLoggers = this.tickLoggers; + this.tickLoggers = []; + } // this.deltaTime -= this.frameTime; + + + return this.status; + }; + + _proto.onFinished = function onFinished() { + this.isCompleted = true; + }; + + _proto.onRestart = function onRestart() { + this.isCompleted = false; + + if (this.resetValuesOnRestart) { + this._root.reset(); + } + }; + + _proto.onPause = function onPause() { + this.isSuspended = true; + }; + + _proto.onResume = function onResume() { + this.isSuspended = false; + }; + + _proto.onStop = function onStop() { + this.isSuspended = false; + this.isCompleted = false; + }; + + _createClass(BehaviorTree, [{ + key: "_manager", + get: function get() { + return BehaviorManager.getInstance(); + } + }]); + + return BehaviorTree; + }(Component), (_descriptor$8 = _applyDecoratedDescriptor(_class2$8.prototype, "jsonAsset", [_dec3$4], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + }), _descriptor2$3 = _applyDecoratedDescriptor(_class2$8.prototype, "frameRate", [_dec4$3], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0; + } + }), _descriptor3$3 = _applyDecoratedDescriptor(_class2$8.prototype, "startWhenEnabled", [_dec5$1], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return true; + } + }), _descriptor4$2 = _applyDecoratedDescriptor(_class2$8.prototype, "pauseWhenDisabled", [_dec6$1], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor5$2 = _applyDecoratedDescriptor(_class2$8.prototype, "restartWhenComplete", [_dec7], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor6$1 = _applyDecoratedDescriptor(_class2$8.prototype, "resetValuesOnRestart", [_dec8], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor7$1 = _applyDecoratedDescriptor(_class2$8.prototype, "logTaskChanges", [_dec9], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + })), _class2$8)) || _class$n) || _class$n) || _class$n); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "289827SzWpFd6nyoZKNqVpp", "main", undefined); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "1a427kpLlNJc46kVxCHG6S5", "SystemBase", undefined); + + var SystemBase = function SystemBase() {}; + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "0beb7MgnGZItpD4yr/b2HOm", "JNetParam", undefined); //网络核心参数 + + + var JNetParam = /*#__PURE__*/function () { + function JNetParam(id, hId) { + //请求处理 Id (用来找到处理方法) + this.hId = void 0; //请求Id (请求标识) + + this.id = void 0; //请求参数 + + this.data = void 0; + this["byte"] = void 0; + this.id = id; + this.hId = hId; + } + + JNetParam.Build = function Build(id, hId) { + return new JNetParam(id, hId); + }; + + var _proto = JNetParam.prototype; + + _proto.setData = function setData(data) { + this.data = data; + return this; + }; + + _proto.setByte = function setByte(_byte) { + this["byte"] = _byte; + return this; + }; + + return JNetParam; + }(); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "f7219bazhRC4KivZvdVA0+v", "Singleton", undefined); + + var Singleton = /*#__PURE__*/function () { + function Singleton() {} + + Singleton.getIns = function getIns() { + if (!this.instance) { + this.instance = new this(); + this.instance.init(); + } + + return this.instance; + }; + + Singleton.destroyIns = function destroyIns() { + if (this.instance) { + this.instance.destroy(); + } + + this.instance = null; + }; + + var _proto = Singleton.prototype; + + _proto.destroy = function destroy() {}; + + _proto.init = function init() {}; + + return Singleton; + }(); + + cclegacy._RF.pop(); + + var CjsLoader = /*#__PURE__*/function () { + function CjsLoader() { + this._registry = {}; + this._moduleCache = {}; + } + /** + * Defines a CommonJS module. + * @param id Module ID. + * @param factory The factory. + * @param resolveMap An object or a function returning object which records the module specifier resolve result. + * The later is called as "deferred resolve map" and would be invocated right before CommonJS code execution. + */ + + + var _proto = CjsLoader.prototype; + + _proto.define = function define(id, factory, resolveMap) { + this._registry[id] = { + factory: factory, + resolveMap: resolveMap + }; + } + /** + * Requires a CommonJS module. + * @param id Module ID. + * @returns The module's `module.exports`. + */ + ; + + _proto.require = function require(id) { + return this._require(id); + }; + + _proto.throwInvalidWrapper = function throwInvalidWrapper(requestTarget, from) { + throw new Error("Module '" + requestTarget + "' imported from '" + from + "' is expected be an ESM-wrapped CommonJS module but it doesn't."); + }; + + _proto._require = function _require(id, parent) { + var cachedModule = this._moduleCache[id]; + + if (cachedModule) { + return cachedModule.exports; + } + + var module = { + id: id, + exports: {} + }; + this._moduleCache[id] = module; + + this._tryModuleLoad(module, id); + + return module.exports; + }; + + _proto._resolve = function _resolve(specifier, parent) { + return this._resolveFromInfos(specifier, parent) || this._throwUnresolved(specifier, parent); + }; + + _proto._resolveFromInfos = function _resolveFromInfos(specifier, parent) { + var _cjsInfos$parent$reso, _cjsInfos$parent; + + if (specifier in cjsInfos) { + return specifier; + } + + if (!parent) { + return; + } + + return (_cjsInfos$parent$reso = (_cjsInfos$parent = cjsInfos[parent]) == null ? void 0 : _cjsInfos$parent.resolveCache[specifier]) != null ? _cjsInfos$parent$reso : undefined; + }; + + _proto._tryModuleLoad = function _tryModuleLoad(module, id) { + var threw = true; + + try { + this._load(module, id); + + threw = false; + } finally { + if (threw) { + delete this._moduleCache[id]; + } + } + }; + + _proto._load = function _load(module, id) { + var _this$_loadWrapper = this._loadWrapper(id), + factory = _this$_loadWrapper.factory, + resolveMap = _this$_loadWrapper.resolveMap; + + var vendorRequire = this._createRequire(module); + + var require = resolveMap ? this._createRequireWithResolveMap(typeof resolveMap === 'function' ? resolveMap() : resolveMap, vendorRequire) : vendorRequire; + + factory(module.exports, require, module); + }; + + _proto._loadWrapper = function _loadWrapper(id) { + if (id in this._registry) { + return this._registry[id]; + } else { + return this._loadHostProvidedModules(id); + } + }; + + _proto._loadHostProvidedModules = function _loadHostProvidedModules(id) { + return { + factory: function factory(_exports, _require, module) { + if (typeof require === 'undefined') { + throw new Error("Current environment does not provide a require() for requiring '" + id + "'."); + } + + try { + module.exports = require(id); + } catch (err) { + throw new Error("Exception thrown when calling host defined require('" + id + "').", { + cause: err + }); + } + } + }; + }; + + _proto._createRequire = function _createRequire(module) { + var _this = this; + + return function (specifier) { + return _this._require(specifier, module); + }; + }; + + _proto._createRequireWithResolveMap = function _createRequireWithResolveMap(requireMap, originalRequire) { + return function (specifier) { + var resolved = requireMap[specifier]; + + if (resolved) { + return originalRequire(resolved); + } else { + throw new Error('Unresolved specifier ' + specifier); + } + }; + }; + + _proto._throwUnresolved = function _throwUnresolved(specifier, parentUrl) { + throw new Error("Unable to resolve " + specifier + " from " + parent + "."); + }; + + return CjsLoader; + }(); + + var loader = new CjsLoader(); + var __cjsMetaURL = 'file:///D:/myproject/JisolGame/JisolGameCocos/extensions/ngame/node_modules/@protobufjs/aspromise/index.js'; + loader.define(__cjsMetaURL, function (exports, require, module, __filename, __dirname) { + module.exports = asPromise; + /** + * Callback as used by {@link util.asPromise}. + * @typedef asPromiseCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {...*} params Additional arguments + * @returns {undefined} + */ + + /** + * Returns a promise from a node-style callback function. + * @memberof util + * @param {asPromiseCallback} fn Function to call + * @param {*} ctx Function context + * @param {...*} params Function arguments + * @returns {Promise<*>} Promisified function + */ + + function asPromise(fn, ctx + /*, varargs */ + ) { + var params = new Array(arguments.length - 1), + offset = 0, + index = 2, + pending = true; + + while (index < arguments.length) params[offset++] = arguments[index++]; + + return new Promise(function executor(resolve, reject) { + params[offset] = function callback(err + /*, varargs */ + ) { + if (pending) { + pending = false; + if (err) reject(err);else { + var params = new Array(arguments.length - 1), + offset = 0; + + while (offset < params.length) params[offset++] = arguments[offset]; + + resolve.apply(null, params); + } + } + }; + + try { + fn.apply(ctx || null, params); + } catch (err) { + if (pending) { + pending = false; + reject(err); + } + } + }); + } // #endregion ORIGINAL CODE + + + module.exports; + }, {}); + var __cjsMetaURL$1 = 'file:///D:/myproject/JisolGame/JisolGameCocos/extensions/ngame/node_modules/@protobufjs/base64/index.js'; + loader.define(__cjsMetaURL$1, function (exports, require, module, __filename, __dirname) { + /** + * A minimal base64 implementation for number arrays. + * @memberof util + * @namespace + */ + var base64 = exports; + /** + * Calculates the byte length of a base64 encoded string. + * @param {string} string Base64 encoded string + * @returns {number} Byte length + */ + + base64.length = function length(string) { + var p = string.length; + if (!p) return 0; + var n = 0; + + while (--p % 4 > 1 && string.charAt(p) === "=") ++n; + + return Math.ceil(string.length * 3) / 4 - n; + }; // Base64 encoding table + + + var b64 = new Array(64); // Base64 decoding table + + var s64 = new Array(123); // 65..90, 97..122, 48..57, 43, 47 + + for (var i = 0; i < 64;) s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++; + /** + * Encodes a buffer to a base64 encoded string. + * @param {Uint8Array} buffer Source buffer + * @param {number} start Source start + * @param {number} end Source end + * @returns {string} Base64 encoded string + */ + + + base64.encode = function encode(buffer, start, end) { + var parts = null, + chunk = []; + var i = 0, + // output index + j = 0, + // goto index + t; // temporary + + while (start < end) { + var b = buffer[start++]; + + switch (j) { + case 0: + chunk[i++] = b64[b >> 2]; + t = (b & 3) << 4; + j = 1; + break; + + case 1: + chunk[i++] = b64[t | b >> 4]; + t = (b & 15) << 2; + j = 2; + break; + + case 2: + chunk[i++] = b64[t | b >> 6]; + chunk[i++] = b64[b & 63]; + j = 0; + break; + } + + if (i > 8191) { + (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk)); + i = 0; + } + } + + if (j) { + chunk[i++] = b64[t]; + chunk[i++] = 61; + if (j === 1) chunk[i++] = 61; + } + + if (parts) { + if (i) parts.push(String.fromCharCode.apply(String, chunk.slice(0, i))); + return parts.join(""); + } + + return String.fromCharCode.apply(String, chunk.slice(0, i)); + }; + + var invalidEncoding = "invalid encoding"; + /** + * Decodes a base64 encoded string to a buffer. + * @param {string} string Source string + * @param {Uint8Array} buffer Destination buffer + * @param {number} offset Destination offset + * @returns {number} Number of bytes written + * @throws {Error} If encoding is invalid + */ + + base64.decode = function decode(string, buffer, offset) { + var start = offset; + var j = 0, + // goto index + t; // temporary + + for (var i = 0; i < string.length;) { + var c = string.charCodeAt(i++); + if (c === 61 && j > 1) break; + if ((c = s64[c]) === undefined) throw Error(invalidEncoding); + + switch (j) { + case 0: + t = c; + j = 1; + break; + + case 1: + buffer[offset++] = t << 2 | (c & 48) >> 4; + t = c; + j = 2; + break; + + case 2: + buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2; + t = c; + j = 3; + break; + + case 3: + buffer[offset++] = (t & 3) << 6 | c; + j = 0; + break; + } + } + + if (j === 1) throw Error(invalidEncoding); + return offset - start; + }; + /** + * Tests if the specified string appears to be base64 encoded. + * @param {string} string String to test + * @returns {boolean} `true` if probably base64 encoded, otherwise false + */ + + + base64.test = function test(string) { + return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string); + }; // #endregion ORIGINAL CODE + + + module.exports; + }, {}); + var __cjsMetaURL$2 = 'file:///D:/myproject/JisolGame/JisolGameCocos/extensions/ngame/node_modules/@protobufjs/eventemitter/index.js'; + loader.define(__cjsMetaURL$2, function (exports, require, module, __filename, __dirname) { + module.exports = EventEmitter; + /** + * Constructs a new event emitter instance. + * @classdesc A minimal event emitter. + * @memberof util + * @constructor + */ + + function EventEmitter() { + /** + * Registered listeners. + * @type {Object.} + * @private + */ + this._listeners = {}; + } + /** + * Registers an event listener. + * @param {string} evt Event name + * @param {function} fn Listener + * @param {*} [ctx] Listener context + * @returns {util.EventEmitter} `this` + */ + + + EventEmitter.prototype.on = function on(evt, fn, ctx) { + (this._listeners[evt] || (this._listeners[evt] = [])).push({ + fn: fn, + ctx: ctx || this + }); + return this; + }; + /** + * Removes an event listener or any matching listeners if arguments are omitted. + * @param {string} [evt] Event name. Removes all listeners if omitted. + * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted. + * @returns {util.EventEmitter} `this` + */ + + + EventEmitter.prototype.off = function off(evt, fn) { + if (evt === undefined) this._listeners = {};else { + if (fn === undefined) this._listeners[evt] = [];else { + var listeners = this._listeners[evt]; + + for (var i = 0; i < listeners.length;) if (listeners[i].fn === fn) listeners.splice(i, 1);else ++i; + } + } + return this; + }; + /** + * Emits an event by calling its listeners with the specified arguments. + * @param {string} evt Event name + * @param {...*} args Arguments + * @returns {util.EventEmitter} `this` + */ + + + EventEmitter.prototype.emit = function emit(evt) { + var listeners = this._listeners[evt]; + + if (listeners) { + var args = [], + i = 1; + + for (; i < arguments.length;) args.push(arguments[i++]); + + for (i = 0; i < listeners.length;) listeners[i].fn.apply(listeners[i++].ctx, args); + } + + return this; + }; // #endregion ORIGINAL CODE + + + module.exports; + }, {}); + var __cjsMetaURL$3 = 'file:///D:/myproject/JisolGame/JisolGameCocos/extensions/ngame/node_modules/@protobufjs/float/index.js'; + loader.define(__cjsMetaURL$3, function (exports, require, module, __filename, __dirname) { + module.exports = factory(factory); + /** + * Reads / writes floats / doubles from / to buffers. + * @name util.float + * @namespace + */ + + /** + * Writes a 32 bit float to a buffer using little endian byte order. + * @name util.float.writeFloatLE + * @function + * @param {number} val Value to write + * @param {Uint8Array} buf Target buffer + * @param {number} pos Target buffer offset + * @returns {undefined} + */ + + /** + * Writes a 32 bit float to a buffer using big endian byte order. + * @name util.float.writeFloatBE + * @function + * @param {number} val Value to write + * @param {Uint8Array} buf Target buffer + * @param {number} pos Target buffer offset + * @returns {undefined} + */ + + /** + * Reads a 32 bit float from a buffer using little endian byte order. + * @name util.float.readFloatLE + * @function + * @param {Uint8Array} buf Source buffer + * @param {number} pos Source buffer offset + * @returns {number} Value read + */ + + /** + * Reads a 32 bit float from a buffer using big endian byte order. + * @name util.float.readFloatBE + * @function + * @param {Uint8Array} buf Source buffer + * @param {number} pos Source buffer offset + * @returns {number} Value read + */ + + /** + * Writes a 64 bit double to a buffer using little endian byte order. + * @name util.float.writeDoubleLE + * @function + * @param {number} val Value to write + * @param {Uint8Array} buf Target buffer + * @param {number} pos Target buffer offset + * @returns {undefined} + */ + + /** + * Writes a 64 bit double to a buffer using big endian byte order. + * @name util.float.writeDoubleBE + * @function + * @param {number} val Value to write + * @param {Uint8Array} buf Target buffer + * @param {number} pos Target buffer offset + * @returns {undefined} + */ + + /** + * Reads a 64 bit double from a buffer using little endian byte order. + * @name util.float.readDoubleLE + * @function + * @param {Uint8Array} buf Source buffer + * @param {number} pos Source buffer offset + * @returns {number} Value read + */ + + /** + * Reads a 64 bit double from a buffer using big endian byte order. + * @name util.float.readDoubleBE + * @function + * @param {Uint8Array} buf Source buffer + * @param {number} pos Source buffer offset + * @returns {number} Value read + */ + // Factory function for the purpose of node-based testing in modified global environments + + function factory(exports) { + // float: typed array + if (typeof Float32Array !== "undefined") (function () { + var f32 = new Float32Array([-0]), + f8b = new Uint8Array(f32.buffer), + le = f8b[3] === 128; + + function writeFloat_f32_cpy(val, buf, pos) { + f32[0] = val; + buf[pos] = f8b[0]; + buf[pos + 1] = f8b[1]; + buf[pos + 2] = f8b[2]; + buf[pos + 3] = f8b[3]; + } + + function writeFloat_f32_rev(val, buf, pos) { + f32[0] = val; + buf[pos] = f8b[3]; + buf[pos + 1] = f8b[2]; + buf[pos + 2] = f8b[1]; + buf[pos + 3] = f8b[0]; + } + /* istanbul ignore next */ + + + exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev; + /* istanbul ignore next */ + + exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy; + + function readFloat_f32_cpy(buf, pos) { + f8b[0] = buf[pos]; + f8b[1] = buf[pos + 1]; + f8b[2] = buf[pos + 2]; + f8b[3] = buf[pos + 3]; + return f32[0]; + } + + function readFloat_f32_rev(buf, pos) { + f8b[3] = buf[pos]; + f8b[2] = buf[pos + 1]; + f8b[1] = buf[pos + 2]; + f8b[0] = buf[pos + 3]; + return f32[0]; + } + /* istanbul ignore next */ + + + exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev; + /* istanbul ignore next */ + + exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy; // float: ieee754 + })();else (function () { + function writeFloat_ieee754(writeUint, val, buf, pos) { + var sign = val < 0 ? 1 : 0; + if (sign) val = -val; + if (val === 0) writeUint(1 / val > 0 ? + /* positive */ + 0 : + /* negative 0 */ + 2147483648, buf, pos);else if (isNaN(val)) writeUint(2143289344, buf, pos);else if (val > 3.4028234663852886e+38) // +-Infinity + writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);else if (val < 1.1754943508222875e-38) // denormal + writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);else { + var exponent = Math.floor(Math.log(val) / Math.LN2), + mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607; + writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos); + } + } + + exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE); + exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE); + + function readFloat_ieee754(readUint, buf, pos) { + var uint = readUint(buf, pos), + sign = (uint >> 31) * 2 + 1, + exponent = uint >>> 23 & 255, + mantissa = uint & 8388607; + return exponent === 255 ? mantissa ? NaN : sign * Infinity : exponent === 0 // denormal + ? sign * 1.401298464324817e-45 * mantissa : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608); + } + + exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE); + exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE); + })(); // double: typed array + + if (typeof Float64Array !== "undefined") (function () { + var f64 = new Float64Array([-0]), + f8b = new Uint8Array(f64.buffer), + le = f8b[7] === 128; + + function writeDouble_f64_cpy(val, buf, pos) { + f64[0] = val; + buf[pos] = f8b[0]; + buf[pos + 1] = f8b[1]; + buf[pos + 2] = f8b[2]; + buf[pos + 3] = f8b[3]; + buf[pos + 4] = f8b[4]; + buf[pos + 5] = f8b[5]; + buf[pos + 6] = f8b[6]; + buf[pos + 7] = f8b[7]; + } + + function writeDouble_f64_rev(val, buf, pos) { + f64[0] = val; + buf[pos] = f8b[7]; + buf[pos + 1] = f8b[6]; + buf[pos + 2] = f8b[5]; + buf[pos + 3] = f8b[4]; + buf[pos + 4] = f8b[3]; + buf[pos + 5] = f8b[2]; + buf[pos + 6] = f8b[1]; + buf[pos + 7] = f8b[0]; + } + /* istanbul ignore next */ + + + exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev; + /* istanbul ignore next */ + + exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy; + + function readDouble_f64_cpy(buf, pos) { + f8b[0] = buf[pos]; + f8b[1] = buf[pos + 1]; + f8b[2] = buf[pos + 2]; + f8b[3] = buf[pos + 3]; + f8b[4] = buf[pos + 4]; + f8b[5] = buf[pos + 5]; + f8b[6] = buf[pos + 6]; + f8b[7] = buf[pos + 7]; + return f64[0]; + } + + function readDouble_f64_rev(buf, pos) { + f8b[7] = buf[pos]; + f8b[6] = buf[pos + 1]; + f8b[5] = buf[pos + 2]; + f8b[4] = buf[pos + 3]; + f8b[3] = buf[pos + 4]; + f8b[2] = buf[pos + 5]; + f8b[1] = buf[pos + 6]; + f8b[0] = buf[pos + 7]; + return f64[0]; + } + /* istanbul ignore next */ + + + exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev; + /* istanbul ignore next */ + + exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy; // double: ieee754 + })();else (function () { + function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) { + var sign = val < 0 ? 1 : 0; + if (sign) val = -val; + + if (val === 0) { + writeUint(0, buf, pos + off0); + writeUint(1 / val > 0 ? + /* positive */ + 0 : + /* negative 0 */ + 2147483648, buf, pos + off1); + } else if (isNaN(val)) { + writeUint(0, buf, pos + off0); + writeUint(2146959360, buf, pos + off1); + } else if (val > 1.7976931348623157e+308) { + // +-Infinity + writeUint(0, buf, pos + off0); + writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1); + } else { + var mantissa; + + if (val < 2.2250738585072014e-308) { + // denormal + mantissa = val / 5e-324; + writeUint(mantissa >>> 0, buf, pos + off0); + writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1); + } else { + var exponent = Math.floor(Math.log(val) / Math.LN2); + if (exponent === 1024) exponent = 1023; + mantissa = val * Math.pow(2, -exponent); + writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0); + writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1); + } + } + } + + exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4); + exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0); + + function readDouble_ieee754(readUint, off0, off1, buf, pos) { + var lo = readUint(buf, pos + off0), + hi = readUint(buf, pos + off1); + var sign = (hi >> 31) * 2 + 1, + exponent = hi >>> 20 & 2047, + mantissa = 4294967296 * (hi & 1048575) + lo; + return exponent === 2047 ? mantissa ? NaN : sign * Infinity : exponent === 0 // denormal + ? sign * 5e-324 * mantissa : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496); + } + + exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4); + exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0); + })(); + return exports; + } // uint helpers + + + function writeUintLE(val, buf, pos) { + buf[pos] = val & 255; + buf[pos + 1] = val >>> 8 & 255; + buf[pos + 2] = val >>> 16 & 255; + buf[pos + 3] = val >>> 24; + } + + function writeUintBE(val, buf, pos) { + buf[pos] = val >>> 24; + buf[pos + 1] = val >>> 16 & 255; + buf[pos + 2] = val >>> 8 & 255; + buf[pos + 3] = val & 255; + } + + function readUintLE(buf, pos) { + return (buf[pos] | buf[pos + 1] << 8 | buf[pos + 2] << 16 | buf[pos + 3] << 24) >>> 0; + } + + function readUintBE(buf, pos) { + return (buf[pos] << 24 | buf[pos + 1] << 16 | buf[pos + 2] << 8 | buf[pos + 3]) >>> 0; + } // #endregion ORIGINAL CODE + + + module.exports; + module.exports.writeFloatLE; + module.exports.writeFloatBE; + module.exports.readFloatLE; + module.exports.readFloatBE; + module.exports.writeDoubleLE; + module.exports.writeDoubleBE; + module.exports.readDoubleLE; + module.exports.readDoubleBE; + }, {}); + var __cjsMetaURL$4 = 'file:///D:/myproject/JisolGame/JisolGameCocos/extensions/ngame/node_modules/@protobufjs/inquire/index.js'; + loader.define(__cjsMetaURL$4, function (exports, require, module, __filename, __dirname) { + module.exports = inquire; + /** + * Requires a module only if available. + * @memberof util + * @param {string} moduleName Module to require + * @returns {?Object} Required module if available and not empty, otherwise `null` + */ + + function inquire(moduleName) { + try { + var mod = eval("quire".replace(/^/, "re"))(moduleName); // eslint-disable-line no-eval + + if (mod && (mod.length || Object.keys(mod).length)) return mod; + } catch (e) {} // eslint-disable-line no-empty + + + return null; + } // #endregion ORIGINAL CODE + + + module.exports; + }, {}); + var __cjsMetaURL$5 = 'file:///D:/myproject/JisolGame/JisolGameCocos/extensions/ngame/node_modules/@protobufjs/utf8/index.js'; + loader.define(__cjsMetaURL$5, function (exports, require, module, __filename, __dirname) { + /** + * A minimal UTF8 implementation for number arrays. + * @memberof util + * @namespace + */ + var utf8 = exports; + /** + * Calculates the UTF8 byte length of a string. + * @param {string} string String + * @returns {number} Byte length + */ + + utf8.length = function utf8_length(string) { + var len = 0, + c = 0; + + for (var i = 0; i < string.length; ++i) { + c = string.charCodeAt(i); + if (c < 128) len += 1;else if (c < 2048) len += 2;else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) { + ++i; + len += 4; + } else len += 3; + } + + return len; + }; + /** + * Reads UTF8 bytes as a string. + * @param {Uint8Array} buffer Source buffer + * @param {number} start Source start + * @param {number} end Source end + * @returns {string} String read + */ + + + utf8.read = function utf8_read(buffer, start, end) { + var len = end - start; + if (len < 1) return ""; + var parts = null, + chunk = [], + i = 0, + // char offset + t; // temporary + + while (start < end) { + t = buffer[start++]; + if (t < 128) chunk[i++] = t;else if (t > 191 && t < 224) chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;else if (t > 239 && t < 365) { + t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000; + chunk[i++] = 0xD800 + (t >> 10); + chunk[i++] = 0xDC00 + (t & 1023); + } else chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63; + + if (i > 8191) { + (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk)); + i = 0; + } + } + + if (parts) { + if (i) parts.push(String.fromCharCode.apply(String, chunk.slice(0, i))); + return parts.join(""); + } + + return String.fromCharCode.apply(String, chunk.slice(0, i)); + }; + /** + * Writes a string as UTF8 bytes. + * @param {string} string Source string + * @param {Uint8Array} buffer Destination buffer + * @param {number} offset Destination offset + * @returns {number} Bytes written + */ + + + utf8.write = function utf8_write(string, buffer, offset) { + var start = offset, + c1, + // character 1 + c2; // character 2 + + for (var i = 0; i < string.length; ++i) { + c1 = string.charCodeAt(i); + + if (c1 < 128) { + buffer[offset++] = c1; + } else if (c1 < 2048) { + buffer[offset++] = c1 >> 6 | 192; + buffer[offset++] = c1 & 63 | 128; + } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) { + c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF); + ++i; + buffer[offset++] = c1 >> 18 | 240; + buffer[offset++] = c1 >> 12 & 63 | 128; + buffer[offset++] = c1 >> 6 & 63 | 128; + buffer[offset++] = c1 & 63 | 128; + } else { + buffer[offset++] = c1 >> 12 | 224; + buffer[offset++] = c1 >> 6 & 63 | 128; + buffer[offset++] = c1 & 63 | 128; + } + } + + return offset - start; + }; // #endregion ORIGINAL CODE + + + module.exports; + }, {}); + var __cjsMetaURL$6 = 'file:///D:/myproject/JisolGame/JisolGameCocos/extensions/ngame/node_modules/@protobufjs/pool/index.js'; + loader.define(__cjsMetaURL$6, function (exports, require, module, __filename, __dirname) { + module.exports = pool; + /** + * An allocator as used by {@link util.pool}. + * @typedef PoolAllocator + * @type {function} + * @param {number} size Buffer size + * @returns {Uint8Array} Buffer + */ + + /** + * A slicer as used by {@link util.pool}. + * @typedef PoolSlicer + * @type {function} + * @param {number} start Start offset + * @param {number} end End offset + * @returns {Uint8Array} Buffer slice + * @this {Uint8Array} + */ + + /** + * A general purpose buffer pool. + * @memberof util + * @function + * @param {PoolAllocator} alloc Allocator + * @param {PoolSlicer} slice Slicer + * @param {number} [size=8192] Slab size + * @returns {PoolAllocator} Pooled allocator + */ + + function pool(alloc, slice, size) { + var SIZE = size || 8192; + var MAX = SIZE >>> 1; + var slab = null; + var offset = SIZE; + return function pool_alloc(size) { + if (size < 1 || size > MAX) return alloc(size); + + if (offset + size > SIZE) { + slab = alloc(SIZE); + offset = 0; + } + + var buf = slice.call(slab, offset, offset += size); + if (offset & 7) // align to 32 bit + offset = (offset | 7) + 1; + return buf; + }; + } // #endregion ORIGINAL CODE + + + module.exports; + }, {}); + var __cjsMetaURL$7 = 'file:///D:/myproject/JisolGame/JisolGameCocos/extensions/ngame/node_modules/protobufjs/src/util/longbits.js'; + loader.define(__cjsMetaURL$7, function (exports, require, module, __filename, __dirname) { + module.exports = LongBits; + + var util = require("../util/minimal"); + /** + * Constructs new long bits. + * @classdesc Helper class for working with the low and high bits of a 64 bit value. + * @memberof util + * @constructor + * @param {number} lo Low 32 bits, unsigned + * @param {number} hi High 32 bits, unsigned + */ + + + function LongBits(lo, hi) { + // note that the casts below are theoretically unnecessary as of today, but older statically + // generated converter code might still call the ctor with signed 32bits. kept for compat. + + /** + * Low bits. + * @type {number} + */ + this.lo = lo >>> 0; + /** + * High bits. + * @type {number} + */ + + this.hi = hi >>> 0; + } + /** + * Zero bits. + * @memberof util.LongBits + * @type {util.LongBits} + */ + + + var zero = LongBits.zero = new LongBits(0, 0); + + zero.toNumber = function () { + return 0; + }; + + zero.zzEncode = zero.zzDecode = function () { + return this; + }; + + zero.length = function () { + return 1; + }; + /** + * Zero hash. + * @memberof util.LongBits + * @type {string} + */ + + + var zeroHash = LongBits.zeroHash = "\0\0\0\0\0\0\0\0"; + /** + * Constructs new long bits from the specified number. + * @param {number} value Value + * @returns {util.LongBits} Instance + */ + + LongBits.fromNumber = function fromNumber(value) { + if (value === 0) return zero; + var sign = value < 0; + if (sign) value = -value; + var lo = value >>> 0, + hi = (value - lo) / 4294967296 >>> 0; + + if (sign) { + hi = ~hi >>> 0; + lo = ~lo >>> 0; + + if (++lo > 4294967295) { + lo = 0; + if (++hi > 4294967295) hi = 0; + } + } + + return new LongBits(lo, hi); + }; + /** + * Constructs new long bits from a number, long or string. + * @param {Long|number|string} value Value + * @returns {util.LongBits} Instance + */ + + + LongBits.from = function from(value) { + if (typeof value === "number") return LongBits.fromNumber(value); + + if (util.isString(value)) { + /* istanbul ignore else */ + if (util.Long) value = util.Long.fromString(value);else return LongBits.fromNumber(parseInt(value, 10)); + } + + return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero; + }; + /** + * Converts this long bits to a possibly unsafe JavaScript number. + * @param {boolean} [unsigned=false] Whether unsigned or not + * @returns {number} Possibly unsafe number + */ + + + LongBits.prototype.toNumber = function toNumber(unsigned) { + if (!unsigned && this.hi >>> 31) { + var lo = ~this.lo + 1 >>> 0, + hi = ~this.hi >>> 0; + if (!lo) hi = hi + 1 >>> 0; + return -(lo + hi * 4294967296); + } + + return this.lo + this.hi * 4294967296; + }; + /** + * Converts this long bits to a long. + * @param {boolean} [unsigned=false] Whether unsigned or not + * @returns {Long} Long + */ + + + LongBits.prototype.toLong = function toLong(unsigned) { + return util.Long ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned)) + /* istanbul ignore next */ + : { + low: this.lo | 0, + high: this.hi | 0, + unsigned: Boolean(unsigned) + }; + }; + + var charCodeAt = String.prototype.charCodeAt; + /** + * Constructs new long bits from the specified 8 characters long hash. + * @param {string} hash Hash + * @returns {util.LongBits} Bits + */ + + LongBits.fromHash = function fromHash(hash) { + if (hash === zeroHash) return zero; + return new LongBits((charCodeAt.call(hash, 0) | charCodeAt.call(hash, 1) << 8 | charCodeAt.call(hash, 2) << 16 | charCodeAt.call(hash, 3) << 24) >>> 0, (charCodeAt.call(hash, 4) | charCodeAt.call(hash, 5) << 8 | charCodeAt.call(hash, 6) << 16 | charCodeAt.call(hash, 7) << 24) >>> 0); + }; + /** + * Converts this long bits to a 8 characters long hash. + * @returns {string} Hash + */ + + + LongBits.prototype.toHash = function toHash() { + return String.fromCharCode(this.lo & 255, this.lo >>> 8 & 255, this.lo >>> 16 & 255, this.lo >>> 24, this.hi & 255, this.hi >>> 8 & 255, this.hi >>> 16 & 255, this.hi >>> 24); + }; + /** + * Zig-zag encodes this long bits. + * @returns {util.LongBits} `this` + */ + + + LongBits.prototype.zzEncode = function zzEncode() { + var mask = this.hi >> 31; + this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0; + this.lo = (this.lo << 1 ^ mask) >>> 0; + return this; + }; + /** + * Zig-zag decodes this long bits. + * @returns {util.LongBits} `this` + */ + + + LongBits.prototype.zzDecode = function zzDecode() { + var mask = -(this.lo & 1); + this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0; + this.hi = (this.hi >>> 1 ^ mask) >>> 0; + return this; + }; + /** + * Calculates the length of this longbits when encoded as a varint. + * @returns {number} Length + */ + + + LongBits.prototype.length = function length() { + var part0 = this.lo, + part1 = (this.lo >>> 28 | this.hi << 4) >>> 0, + part2 = this.hi >>> 24; + return part2 === 0 ? part1 === 0 ? part0 < 16384 ? part0 < 128 ? 1 : 2 : part0 < 2097152 ? 3 : 4 : part1 < 16384 ? part1 < 128 ? 5 : 6 : part1 < 2097152 ? 7 : 8 : part2 < 128 ? 9 : 10; + }; // #endregion ORIGINAL CODE + + + module.exports; + }, function () { + return { + '../util/minimal': __cjsMetaURL$8 + }; + }); + var __cjsMetaURL$8 = 'file:///D:/myproject/JisolGame/JisolGameCocos/extensions/ngame/node_modules/protobufjs/src/util/minimal.js'; + loader.define(__cjsMetaURL$8, function (exports, require, module, __filename, __dirname) { + var util = exports; // used to return a Promise where callback is omitted + + util.asPromise = require("@protobufjs/aspromise"); // converts to / from base64 encoded strings + + util.base64 = require("@protobufjs/base64"); // base class of rpc.Service + + util.EventEmitter = require("@protobufjs/eventemitter"); // float handling accross browsers + + util["float"] = require("@protobufjs/float"); // requires modules optionally and hides the call from bundlers + + util.inquire = require("@protobufjs/inquire"); // converts to / from utf8 encoded strings + + util.utf8 = require("@protobufjs/utf8"); // provides a node-like buffer pool in the browser + + util.pool = require("@protobufjs/pool"); // utility to work with the low and high bits of a 64 bit value + + util.LongBits = require("./longbits"); + /** + * Whether running within node or not. + * @memberof util + * @type {boolean} + */ + + util.isNode = Boolean(typeof global !== "undefined" && global && global.process && global.process.versions && global.process.versions.node); + /** + * Global object reference. + * @memberof util + * @type {Object} + */ + + util.global = util.isNode && global || typeof window !== "undefined" && window || typeof self !== "undefined" && self || this; // eslint-disable-line no-invalid-this + + /** + * An immuable empty array. + * @memberof util + * @type {Array.<*>} + * @const + */ + + util.emptyArray = Object.freeze ? Object.freeze([]) : + /* istanbul ignore next */ + []; // used on prototypes + + /** + * An immutable empty object. + * @type {Object} + * @const + */ + + util.emptyObject = Object.freeze ? Object.freeze({}) : + /* istanbul ignore next */ + {}; // used on prototypes + + /** + * Tests if the specified value is an integer. + * @function + * @param {*} value Value to test + * @returns {boolean} `true` if the value is an integer + */ + + util.isInteger = Number.isInteger || + /* istanbul ignore next */ + function isInteger(value) { + return typeof value === "number" && isFinite(value) && Math.floor(value) === value; + }; + /** + * Tests if the specified value is a string. + * @param {*} value Value to test + * @returns {boolean} `true` if the value is a string + */ + + + util.isString = function isString(value) { + return typeof value === "string" || value instanceof String; + }; + /** + * Tests if the specified value is a non-null object. + * @param {*} value Value to test + * @returns {boolean} `true` if the value is a non-null object + */ + + + util.isObject = function isObject(value) { + return value && typeof value === "object"; + }; + /** + * Checks if a property on a message is considered to be present. + * This is an alias of {@link util.isSet}. + * @function + * @param {Object} obj Plain object or message instance + * @param {string} prop Property name + * @returns {boolean} `true` if considered to be present, otherwise `false` + */ + + + util.isset = + /** + * Checks if a property on a message is considered to be present. + * @param {Object} obj Plain object or message instance + * @param {string} prop Property name + * @returns {boolean} `true` if considered to be present, otherwise `false` + */ + util.isSet = function isSet(obj, prop) { + var value = obj[prop]; + if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins + return typeof value !== "object" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0; + return false; + }; + /** + * Any compatible Buffer instance. + * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings. + * @interface Buffer + * @extends Uint8Array + */ + + /** + * Node's Buffer class if available. + * @type {Constructor} + */ + + + util.Buffer = function () { + try { + var Buffer = util.inquire("buffer").Buffer; // refuse to use non-node buffers if not explicitly assigned (perf reasons): + + return Buffer.prototype.utf8Write ? Buffer : + /* istanbul ignore next */ + null; + } catch (e) { + /* istanbul ignore next */ + return null; + } + }(); // Internal alias of or polyfull for Buffer.from. + + + util._Buffer_from = null; // Internal alias of or polyfill for Buffer.allocUnsafe. + + util._Buffer_allocUnsafe = null; + /** + * Creates a new buffer of whatever type supported by the environment. + * @param {number|number[]} [sizeOrArray=0] Buffer size or number array + * @returns {Uint8Array|Buffer} Buffer + */ + + util.newBuffer = function newBuffer(sizeOrArray) { + /* istanbul ignore next */ + return typeof sizeOrArray === "number" ? util.Buffer ? util._Buffer_allocUnsafe(sizeOrArray) : new util.Array(sizeOrArray) : util.Buffer ? util._Buffer_from(sizeOrArray) : typeof Uint8Array === "undefined" ? sizeOrArray : new Uint8Array(sizeOrArray); + }; + /** + * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`. + * @type {Constructor} + */ + + + util.Array = typeof Uint8Array !== "undefined" ? Uint8Array + /* istanbul ignore next */ + : Array; + /** + * Any compatible Long instance. + * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js. + * @interface Long + * @property {number} low Low bits + * @property {number} high High bits + * @property {boolean} unsigned Whether unsigned or not + */ + + /** + * Long.js's Long class if available. + * @type {Constructor} + */ + + util.Long = + /* istanbul ignore next */ + util.global.dcodeIO && + /* istanbul ignore next */ + util.global.dcodeIO.Long || + /* istanbul ignore next */ + util.global.Long || util.inquire("long"); + /** + * Regular expression used to verify 2 bit (`bool`) map keys. + * @type {RegExp} + * @const + */ + + util.key2Re = /^true|false|0|1$/; + /** + * Regular expression used to verify 32 bit (`int32` etc.) map keys. + * @type {RegExp} + * @const + */ + + util.key32Re = /^-?(?:0|[1-9][0-9]*)$/; + /** + * Regular expression used to verify 64 bit (`int64` etc.) map keys. + * @type {RegExp} + * @const + */ + + util.key64Re = /^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/; + /** + * Converts a number or long to an 8 characters long hash string. + * @param {Long|number} value Value to convert + * @returns {string} Hash + */ + + util.longToHash = function longToHash(value) { + return value ? util.LongBits.from(value).toHash() : util.LongBits.zeroHash; + }; + /** + * Converts an 8 characters long hash string to a long or number. + * @param {string} hash Hash + * @param {boolean} [unsigned=false] Whether unsigned or not + * @returns {Long|number} Original value + */ + + + util.longFromHash = function longFromHash(hash, unsigned) { + var bits = util.LongBits.fromHash(hash); + if (util.Long) return util.Long.fromBits(bits.lo, bits.hi, unsigned); + return bits.toNumber(Boolean(unsigned)); + }; + /** + * Merges the properties of the source object into the destination object. + * @memberof util + * @param {Object.} dst Destination object + * @param {Object.} src Source object + * @param {boolean} [ifNotSet=false] Merges only if the key is not already set + * @returns {Object.} Destination object + */ + + + function merge(dst, src, ifNotSet) { + // used by converters + for (var keys = Object.keys(src), i = 0; i < keys.length; ++i) if (dst[keys[i]] === undefined || !ifNotSet) dst[keys[i]] = src[keys[i]]; + + return dst; + } + + util.merge = merge; + /** + * Converts the first character of a string to lower case. + * @param {string} str String to convert + * @returns {string} Converted string + */ + + util.lcFirst = function lcFirst(str) { + return str.charAt(0).toLowerCase() + str.substring(1); + }; + /** + * Creates a custom error constructor. + * @memberof util + * @param {string} name Error name + * @returns {Constructor} Custom error constructor + */ + + + function newError(name) { + function CustomError(message, properties) { + if (!(this instanceof CustomError)) return new CustomError(message, properties); // Error.call(this, message); + // ^ just returns a new error instance because the ctor can be called as a function + + Object.defineProperty(this, "message", { + get: function get() { + return message; + } + }); + /* istanbul ignore next */ + + if (Error.captureStackTrace) // node + Error.captureStackTrace(this, CustomError);else Object.defineProperty(this, "stack", { + value: new Error().stack || "" + }); + if (properties) merge(this, properties); + } + + CustomError.prototype = Object.create(Error.prototype, { + constructor: { + value: CustomError, + writable: true, + enumerable: false, + configurable: true + }, + name: { + get: function get() { + return name; + }, + set: undefined, + enumerable: false, + // configurable: false would accurately preserve the behavior of + // the original, but I'm guessing that was not intentional. + // For an actual error subclass, this property would + // be configurable. + configurable: true + }, + toString: { + value: function value() { + return this.name + ": " + this.message; + }, + writable: true, + enumerable: false, + configurable: true + } + }); + return CustomError; + } + + util.newError = newError; + /** + * Constructs a new protocol error. + * @classdesc Error subclass indicating a protocol specifc error. + * @memberof util + * @extends Error + * @template T extends Message + * @constructor + * @param {string} message Error message + * @param {Object.} [properties] Additional properties + * @example + * try { + * MyMessage.decode(someBuffer); // throws if required fields are missing + * } catch (e) { + * if (e instanceof ProtocolError && e.instance) + * console.log("decoded so far: " + JSON.stringify(e.instance)); + * } + */ + + util.ProtocolError = newError("ProtocolError"); + /** + * So far decoded message instance. + * @name util.ProtocolError#instance + * @type {Message} + */ + + /** + * A OneOf getter as returned by {@link util.oneOfGetter}. + * @typedef OneOfGetter + * @type {function} + * @returns {string|undefined} Set field name, if any + */ + + /** + * Builds a getter for a oneof's present field name. + * @param {string[]} fieldNames Field names + * @returns {OneOfGetter} Unbound getter + */ + + util.oneOfGetter = function getOneOf(fieldNames) { + var fieldMap = {}; + + for (var i = 0; i < fieldNames.length; ++i) fieldMap[fieldNames[i]] = 1; + /** + * @returns {string|undefined} Set field name, if any + * @this Object + * @ignore + */ + + + return function () { + // eslint-disable-line consistent-return + for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i) if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null) return keys[i]; + }; + }; + /** + * A OneOf setter as returned by {@link util.oneOfSetter}. + * @typedef OneOfSetter + * @type {function} + * @param {string|undefined} value Field name + * @returns {undefined} + */ + + /** + * Builds a setter for a oneof's present field name. + * @param {string[]} fieldNames Field names + * @returns {OneOfSetter} Unbound setter + */ + + + util.oneOfSetter = function setOneOf(fieldNames) { + /** + * @param {string} name Field name + * @returns {undefined} + * @this Object + * @ignore + */ + return function (name) { + for (var i = 0; i < fieldNames.length; ++i) if (fieldNames[i] !== name) delete this[fieldNames[i]]; + }; + }; + /** + * Default conversion options used for {@link Message#toJSON} implementations. + * + * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely: + * + * - Longs become strings + * - Enums become string keys + * - Bytes become base64 encoded strings + * - (Sub-)Messages become plain objects + * - Maps become plain objects with all string keys + * - Repeated fields become arrays + * - NaN and Infinity for float and double fields become strings + * + * @type {IConversionOptions} + * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json + */ + + + util.toJSONOptions = { + longs: String, + enums: String, + bytes: String, + json: true + }; // Sets up buffer utility according to the environment (called in index-minimal) + + util._configure = function () { + var Buffer = util.Buffer; + /* istanbul ignore if */ + + if (!Buffer) { + util._Buffer_from = util._Buffer_allocUnsafe = null; + return; + } // because node 4.x buffers are incompatible & immutable + // see: https://github.com/dcodeIO/protobuf.js/pull/665 + + + util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from || + /* istanbul ignore next */ + function Buffer_from(value, encoding) { + return new Buffer(value, encoding); + }; + + util._Buffer_allocUnsafe = Buffer.allocUnsafe || + /* istanbul ignore next */ + function Buffer_allocUnsafe(size) { + return new Buffer(size); + }; + }; // #endregion ORIGINAL CODE + + + module.exports; + }, function () { + return { + '@protobufjs/aspromise': __cjsMetaURL, + '@protobufjs/base64': __cjsMetaURL$1, + '@protobufjs/eventemitter': __cjsMetaURL$2, + '@protobufjs/float': __cjsMetaURL$3, + '@protobufjs/inquire': __cjsMetaURL$4, + '@protobufjs/utf8': __cjsMetaURL$5, + '@protobufjs/pool': __cjsMetaURL$6, + './longbits': __cjsMetaURL$7 + }; + }); + var __cjsMetaURL$9 = 'file:///D:/myproject/JisolGame/JisolGameCocos/extensions/ngame/node_modules/protobufjs/src/writer.js'; + loader.define(__cjsMetaURL$9, function (exports, require, module, __filename, __dirname) { + module.exports = Writer; + + var util = require("./util/minimal"); + + var BufferWriter; // cyclic + + var LongBits = util.LongBits, + base64 = util.base64, + utf8 = util.utf8; + /** + * Constructs a new writer operation instance. + * @classdesc Scheduled writer operation. + * @constructor + * @param {function(*, Uint8Array, number)} fn Function to call + * @param {number} len Value byte length + * @param {*} val Value to write + * @ignore + */ + + function Op(fn, len, val) { + /** + * Function to call. + * @type {function(Uint8Array, number, *)} + */ + this.fn = fn; + /** + * Value byte length. + * @type {number} + */ + + this.len = len; + /** + * Next operation. + * @type {Writer.Op|undefined} + */ + + this.next = undefined; + /** + * Value to write. + * @type {*} + */ + + this.val = val; // type varies + } + /* istanbul ignore next */ + + + function noop() {} // eslint-disable-line no-empty-function + + /** + * Constructs a new writer state instance. + * @classdesc Copied writer state. + * @memberof Writer + * @constructor + * @param {Writer} writer Writer to copy state from + * @ignore + */ + + + function State(writer) { + /** + * Current head. + * @type {Writer.Op} + */ + this.head = writer.head; + /** + * Current tail. + * @type {Writer.Op} + */ + + this.tail = writer.tail; + /** + * Current buffer length. + * @type {number} + */ + + this.len = writer.len; + /** + * Next state. + * @type {State|null} + */ + + this.next = writer.states; + } + /** + * Constructs a new writer instance. + * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`. + * @constructor + */ + + + function Writer() { + /** + * Current length. + * @type {number} + */ + this.len = 0; + /** + * Operations head. + * @type {Object} + */ + + this.head = new Op(noop, 0, 0); + /** + * Operations tail + * @type {Object} + */ + + this.tail = this.head; + /** + * Linked forked states. + * @type {Object|null} + */ + + this.states = null; // When a value is written, the writer calculates its byte length and puts it into a linked + // list of operations to perform when finish() is called. This both allows us to allocate + // buffers of the exact required size and reduces the amount of work we have to do compared + // to first calculating over objects and then encoding over objects. In our case, the encoding + // part is just a linked list walk calling operations with already prepared values. + } + + var create = function create() { + return util.Buffer ? function create_buffer_setup() { + return (Writer.create = function create_buffer() { + return new BufferWriter(); + })(); + } + /* istanbul ignore next */ + : function create_array() { + return new Writer(); + }; + }; + /** + * Creates a new writer. + * @function + * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer} + */ + + + Writer.create = create(); + /** + * Allocates a buffer of the specified size. + * @param {number} size Buffer size + * @returns {Uint8Array} Buffer + */ + + Writer.alloc = function alloc(size) { + return new util.Array(size); + }; // Use Uint8Array buffer pool in the browser, just like node does with buffers + + /* istanbul ignore else */ + + + if (util.Array !== Array) Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray); + /** + * Pushes a new operation to the queue. + * @param {function(Uint8Array, number, *)} fn Function to call + * @param {number} len Value byte length + * @param {number} val Value to write + * @returns {Writer} `this` + * @private + */ + + Writer.prototype._push = function push(fn, len, val) { + this.tail = this.tail.next = new Op(fn, len, val); + this.len += len; + return this; + }; + + function writeByte(val, buf, pos) { + buf[pos] = val & 255; + } + + function writeVarint32(val, buf, pos) { + while (val > 127) { + buf[pos++] = val & 127 | 128; + val >>>= 7; + } + + buf[pos] = val; + } + /** + * Constructs a new varint writer operation instance. + * @classdesc Scheduled varint writer operation. + * @extends Op + * @constructor + * @param {number} len Value byte length + * @param {number} val Value to write + * @ignore + */ + + + function VarintOp(len, val) { + this.len = len; + this.next = undefined; + this.val = val; + } + + VarintOp.prototype = Object.create(Op.prototype); + VarintOp.prototype.fn = writeVarint32; + /** + * Writes an unsigned 32 bit value as a varint. + * @param {number} value Value to write + * @returns {Writer} `this` + */ + + Writer.prototype.uint32 = function write_uint32(value) { + // here, the call to this.push has been inlined and a varint specific Op subclass is used. + // uint32 is by far the most frequently used operation and benefits significantly from this. + this.len += (this.tail = this.tail.next = new VarintOp((value = value >>> 0) < 128 ? 1 : value < 16384 ? 2 : value < 2097152 ? 3 : value < 268435456 ? 4 : 5, value)).len; + return this; + }; + /** + * Writes a signed 32 bit value as a varint. + * @function + * @param {number} value Value to write + * @returns {Writer} `this` + */ + + + Writer.prototype.int32 = function write_int32(value) { + return value < 0 ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec + : this.uint32(value); + }; + /** + * Writes a 32 bit value as a varint, zig-zag encoded. + * @param {number} value Value to write + * @returns {Writer} `this` + */ + + + Writer.prototype.sint32 = function write_sint32(value) { + return this.uint32((value << 1 ^ value >> 31) >>> 0); + }; + + function writeVarint64(val, buf, pos) { + while (val.hi) { + buf[pos++] = val.lo & 127 | 128; + val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0; + val.hi >>>= 7; + } + + while (val.lo > 127) { + buf[pos++] = val.lo & 127 | 128; + val.lo = val.lo >>> 7; + } + + buf[pos++] = val.lo; + } + /** + * Writes an unsigned 64 bit value as a varint. + * @param {Long|number|string} value Value to write + * @returns {Writer} `this` + * @throws {TypeError} If `value` is a string and no long library is present. + */ + + + Writer.prototype.uint64 = function write_uint64(value) { + var bits = LongBits.from(value); + return this._push(writeVarint64, bits.length(), bits); + }; + /** + * Writes a signed 64 bit value as a varint. + * @function + * @param {Long|number|string} value Value to write + * @returns {Writer} `this` + * @throws {TypeError} If `value` is a string and no long library is present. + */ + + + Writer.prototype.int64 = Writer.prototype.uint64; + /** + * Writes a signed 64 bit value as a varint, zig-zag encoded. + * @param {Long|number|string} value Value to write + * @returns {Writer} `this` + * @throws {TypeError} If `value` is a string and no long library is present. + */ + + Writer.prototype.sint64 = function write_sint64(value) { + var bits = LongBits.from(value).zzEncode(); + return this._push(writeVarint64, bits.length(), bits); + }; + /** + * Writes a boolish value as a varint. + * @param {boolean} value Value to write + * @returns {Writer} `this` + */ + + + Writer.prototype.bool = function write_bool(value) { + return this._push(writeByte, 1, value ? 1 : 0); + }; + + function writeFixed32(val, buf, pos) { + buf[pos] = val & 255; + buf[pos + 1] = val >>> 8 & 255; + buf[pos + 2] = val >>> 16 & 255; + buf[pos + 3] = val >>> 24; + } + /** + * Writes an unsigned 32 bit value as fixed 32 bits. + * @param {number} value Value to write + * @returns {Writer} `this` + */ + + + Writer.prototype.fixed32 = function write_fixed32(value) { + return this._push(writeFixed32, 4, value >>> 0); + }; + /** + * Writes a signed 32 bit value as fixed 32 bits. + * @function + * @param {number} value Value to write + * @returns {Writer} `this` + */ + + + Writer.prototype.sfixed32 = Writer.prototype.fixed32; + /** + * Writes an unsigned 64 bit value as fixed 64 bits. + * @param {Long|number|string} value Value to write + * @returns {Writer} `this` + * @throws {TypeError} If `value` is a string and no long library is present. + */ + + Writer.prototype.fixed64 = function write_fixed64(value) { + var bits = LongBits.from(value); + return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi); + }; + /** + * Writes a signed 64 bit value as fixed 64 bits. + * @function + * @param {Long|number|string} value Value to write + * @returns {Writer} `this` + * @throws {TypeError} If `value` is a string and no long library is present. + */ + + + Writer.prototype.sfixed64 = Writer.prototype.fixed64; + /** + * Writes a float (32 bit). + * @function + * @param {number} value Value to write + * @returns {Writer} `this` + */ + + Writer.prototype["float"] = function write_float(value) { + return this._push(util["float"].writeFloatLE, 4, value); + }; + /** + * Writes a double (64 bit float). + * @function + * @param {number} value Value to write + * @returns {Writer} `this` + */ + + + Writer.prototype["double"] = function write_double(value) { + return this._push(util["float"].writeDoubleLE, 8, value); + }; + + var writeBytes = util.Array.prototype.set ? function writeBytes_set(val, buf, pos) { + buf.set(val, pos); // also works for plain array values + } + /* istanbul ignore next */ + : function writeBytes_for(val, buf, pos) { + for (var i = 0; i < val.length; ++i) buf[pos + i] = val[i]; + }; + /** + * Writes a sequence of bytes. + * @param {Uint8Array|string} value Buffer or base64 encoded string to write + * @returns {Writer} `this` + */ + + Writer.prototype.bytes = function write_bytes(value) { + var len = value.length >>> 0; + if (!len) return this._push(writeByte, 1, 0); + + if (util.isString(value)) { + var buf = Writer.alloc(len = base64.length(value)); + base64.decode(value, buf, 0); + value = buf; + } + + return this.uint32(len)._push(writeBytes, len, value); + }; + /** + * Writes a string. + * @param {string} value Value to write + * @returns {Writer} `this` + */ + + + Writer.prototype.string = function write_string(value) { + var len = utf8.length(value); + return len ? this.uint32(len)._push(utf8.write, len, value) : this._push(writeByte, 1, 0); + }; + /** + * Forks this writer's state by pushing it to a stack. + * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state. + * @returns {Writer} `this` + */ + + + Writer.prototype.fork = function fork() { + this.states = new State(this); + this.head = this.tail = new Op(noop, 0, 0); + this.len = 0; + return this; + }; + /** + * Resets this instance to the last state. + * @returns {Writer} `this` + */ + + + Writer.prototype.reset = function reset() { + if (this.states) { + this.head = this.states.head; + this.tail = this.states.tail; + this.len = this.states.len; + this.states = this.states.next; + } else { + this.head = this.tail = new Op(noop, 0, 0); + this.len = 0; + } + + return this; + }; + /** + * Resets to the last state and appends the fork state's current write length as a varint followed by its operations. + * @returns {Writer} `this` + */ + + + Writer.prototype.ldelim = function ldelim() { + var head = this.head, + tail = this.tail, + len = this.len; + this.reset().uint32(len); + + if (len) { + this.tail.next = head.next; // skip noop + + this.tail = tail; + this.len += len; + } + + return this; + }; + /** + * Finishes the write operation. + * @returns {Uint8Array} Finished buffer + */ + + + Writer.prototype.finish = function finish() { + var head = this.head.next, + // skip noop + buf = this.constructor.alloc(this.len), + pos = 0; + + while (head) { + head.fn(head.val, buf, pos); + pos += head.len; + head = head.next; + } // this.head = this.tail = null; + + + return buf; + }; + + Writer._configure = function (BufferWriter_) { + BufferWriter = BufferWriter_; + Writer.create = create(); + + BufferWriter._configure(); + }; // #endregion ORIGINAL CODE + + + module.exports; + }, function () { + return { + './util/minimal': __cjsMetaURL$8 + }; + }); + var __cjsMetaURL$a = 'file:///D:/myproject/JisolGame/JisolGameCocos/extensions/ngame/node_modules/protobufjs/src/writer_buffer.js'; + loader.define(__cjsMetaURL$a, function (exports, require, module, __filename, __dirname) { + module.exports = BufferWriter; // extends Writer + + var Writer = require("./writer"); + + (BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter; + + var util = require("./util/minimal"); + /** + * Constructs a new buffer writer instance. + * @classdesc Wire format writer using node buffers. + * @extends Writer + * @constructor + */ + + + function BufferWriter() { + Writer.call(this); + } + + BufferWriter._configure = function () { + /** + * Allocates a buffer of the specified size. + * @function + * @param {number} size Buffer size + * @returns {Buffer} Buffer + */ + BufferWriter.alloc = util._Buffer_allocUnsafe; + BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === "set" ? function writeBytesBuffer_set(val, buf, pos) { + buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited) + // also works for plain array values + } + /* istanbul ignore next */ + : function writeBytesBuffer_copy(val, buf, pos) { + if (val.copy) // Buffer values + val.copy(buf, pos, 0, val.length);else for (var i = 0; i < val.length;) // plain array values + buf[pos++] = val[i++]; + }; + }; + /** + * @override + */ + + + BufferWriter.prototype.bytes = function write_bytes_buffer(value) { + if (util.isString(value)) value = util._Buffer_from(value, "base64"); + var len = value.length >>> 0; + this.uint32(len); + if (len) this._push(BufferWriter.writeBytesBuffer, len, value); + return this; + }; + + function writeStringBuffer(val, buf, pos) { + if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions) + util.utf8.write(val, buf, pos);else if (buf.utf8Write) buf.utf8Write(val, pos);else buf.write(val, pos); + } + /** + * @override + */ + + + BufferWriter.prototype.string = function write_string_buffer(value) { + var len = util.Buffer.byteLength(value); + this.uint32(len); + if (len) this._push(writeStringBuffer, len, value); + return this; + }; + /** + * Finishes the write operation. + * @name BufferWriter#finish + * @function + * @returns {Buffer} Finished buffer + */ + + + BufferWriter._configure(); // #endregion ORIGINAL CODE + + + module.exports; + }, function () { + return { + './writer': __cjsMetaURL$9, + './util/minimal': __cjsMetaURL$8 + }; + }); + var __cjsMetaURL$b = 'file:///D:/myproject/JisolGame/JisolGameCocos/extensions/ngame/node_modules/protobufjs/src/reader.js'; + loader.define(__cjsMetaURL$b, function (exports, require, module, __filename, __dirname) { + module.exports = Reader; + + var util = require("./util/minimal"); + + var BufferReader; // cyclic + + var LongBits = util.LongBits, + utf8 = util.utf8; + /* istanbul ignore next */ + + function indexOutOfRange(reader, writeLength) { + return RangeError("index out of range: " + reader.pos + " + " + (writeLength || 1) + " > " + reader.len); + } + /** + * Constructs a new reader instance using the specified buffer. + * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`. + * @constructor + * @param {Uint8Array} buffer Buffer to read from + */ + + + function Reader(buffer) { + /** + * Read buffer. + * @type {Uint8Array} + */ + this.buf = buffer; + /** + * Read buffer position. + * @type {number} + */ + + this.pos = 0; + /** + * Read buffer length. + * @type {number} + */ + + this.len = buffer.length; + } + + var create_array = typeof Uint8Array !== "undefined" ? function create_typed_array(buffer) { + if (buffer instanceof Uint8Array || Array.isArray(buffer)) return new Reader(buffer); + throw Error("illegal buffer"); + } + /* istanbul ignore next */ + : function create_array(buffer) { + if (Array.isArray(buffer)) return new Reader(buffer); + throw Error("illegal buffer"); + }; + + var create = function create() { + return util.Buffer ? function create_buffer_setup(buffer) { + return (Reader.create = function create_buffer(buffer) { + return util.Buffer.isBuffer(buffer) ? new BufferReader(buffer) + /* istanbul ignore next */ + : create_array(buffer); + })(buffer); + } + /* istanbul ignore next */ + : create_array; + }; + /** + * Creates a new reader using the specified buffer. + * @function + * @param {Uint8Array|Buffer} buffer Buffer to read from + * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader} + * @throws {Error} If `buffer` is not a valid buffer + */ + + + Reader.create = create(); + Reader.prototype._slice = util.Array.prototype.subarray || + /* istanbul ignore next */ + util.Array.prototype.slice; + /** + * Reads a varint as an unsigned 32 bit value. + * @function + * @returns {number} Value read + */ + + Reader.prototype.uint32 = function read_uint32_setup() { + var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!) + + return function read_uint32() { + value = (this.buf[this.pos] & 127) >>> 0; + if (this.buf[this.pos++] < 128) return value; + value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; + if (this.buf[this.pos++] < 128) return value; + value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; + if (this.buf[this.pos++] < 128) return value; + value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; + if (this.buf[this.pos++] < 128) return value; + value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; + if (this.buf[this.pos++] < 128) return value; + /* istanbul ignore if */ + + if ((this.pos += 5) > this.len) { + this.pos = this.len; + throw indexOutOfRange(this, 10); + } + + return value; + }; + }(); + /** + * Reads a varint as a signed 32 bit value. + * @returns {number} Value read + */ + + + Reader.prototype.int32 = function read_int32() { + return this.uint32() | 0; + }; + /** + * Reads a zig-zag encoded varint as a signed 32 bit value. + * @returns {number} Value read + */ + + + Reader.prototype.sint32 = function read_sint32() { + var value = this.uint32(); + return value >>> 1 ^ -(value & 1) | 0; + }; + /* eslint-disable no-invalid-this */ + + + function readLongVarint() { + // tends to deopt with local vars for octet etc. + var bits = new LongBits(0, 0); + var i = 0; + + if (this.len - this.pos > 4) { + // fast route (lo) + for (; i < 4; ++i) { + // 1st..4th + bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0; + if (this.buf[this.pos++] < 128) return bits; + } // 5th + + + bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0; + bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0; + if (this.buf[this.pos++] < 128) return bits; + i = 0; + } else { + for (; i < 3; ++i) { + /* istanbul ignore if */ + if (this.pos >= this.len) throw indexOutOfRange(this); // 1st..3th + + bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0; + if (this.buf[this.pos++] < 128) return bits; + } // 4th + + + bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0; + return bits; + } + + if (this.len - this.pos > 4) { + // fast route (hi) + for (; i < 5; ++i) { + // 6th..10th + bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0; + if (this.buf[this.pos++] < 128) return bits; + } + } else { + for (; i < 5; ++i) { + /* istanbul ignore if */ + if (this.pos >= this.len) throw indexOutOfRange(this); // 6th..10th + + bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0; + if (this.buf[this.pos++] < 128) return bits; + } + } + /* istanbul ignore next */ + + + throw Error("invalid varint encoding"); + } + /* eslint-enable no-invalid-this */ + + /** + * Reads a varint as a signed 64 bit value. + * @name Reader#int64 + * @function + * @returns {Long} Value read + */ + + /** + * Reads a varint as an unsigned 64 bit value. + * @name Reader#uint64 + * @function + * @returns {Long} Value read + */ + + /** + * Reads a zig-zag encoded varint as a signed 64 bit value. + * @name Reader#sint64 + * @function + * @returns {Long} Value read + */ + + /** + * Reads a varint as a boolean. + * @returns {boolean} Value read + */ + + + Reader.prototype.bool = function read_bool() { + return this.uint32() !== 0; + }; + + function readFixed32_end(buf, end) { + // note that this uses `end`, not `pos` + return (buf[end - 4] | buf[end - 3] << 8 | buf[end - 2] << 16 | buf[end - 1] << 24) >>> 0; + } + /** + * Reads fixed 32 bits as an unsigned 32 bit integer. + * @returns {number} Value read + */ + + + Reader.prototype.fixed32 = function read_fixed32() { + /* istanbul ignore if */ + if (this.pos + 4 > this.len) throw indexOutOfRange(this, 4); + return readFixed32_end(this.buf, this.pos += 4); + }; + /** + * Reads fixed 32 bits as a signed 32 bit integer. + * @returns {number} Value read + */ + + + Reader.prototype.sfixed32 = function read_sfixed32() { + /* istanbul ignore if */ + if (this.pos + 4 > this.len) throw indexOutOfRange(this, 4); + return readFixed32_end(this.buf, this.pos += 4) | 0; + }; + /* eslint-disable no-invalid-this */ + + + function readFixed64() + /* this: Reader */ + { + /* istanbul ignore if */ + if (this.pos + 8 > this.len) throw indexOutOfRange(this, 8); + return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4)); + } + /* eslint-enable no-invalid-this */ + + /** + * Reads fixed 64 bits. + * @name Reader#fixed64 + * @function + * @returns {Long} Value read + */ + + /** + * Reads zig-zag encoded fixed 64 bits. + * @name Reader#sfixed64 + * @function + * @returns {Long} Value read + */ + + /** + * Reads a float (32 bit) as a number. + * @function + * @returns {number} Value read + */ + + + Reader.prototype["float"] = function read_float() { + /* istanbul ignore if */ + if (this.pos + 4 > this.len) throw indexOutOfRange(this, 4); + var value = util["float"].readFloatLE(this.buf, this.pos); + this.pos += 4; + return value; + }; + /** + * Reads a double (64 bit float) as a number. + * @function + * @returns {number} Value read + */ + + + Reader.prototype["double"] = function read_double() { + /* istanbul ignore if */ + if (this.pos + 8 > this.len) throw indexOutOfRange(this, 4); + var value = util["float"].readDoubleLE(this.buf, this.pos); + this.pos += 8; + return value; + }; + /** + * Reads a sequence of bytes preceeded by its length as a varint. + * @returns {Uint8Array} Value read + */ + + + Reader.prototype.bytes = function read_bytes() { + var length = this.uint32(), + start = this.pos, + end = this.pos + length; + /* istanbul ignore if */ + + if (end > this.len) throw indexOutOfRange(this, length); + this.pos += length; + if (Array.isArray(this.buf)) // plain array + return this.buf.slice(start, end); + + if (start === end) { + // fix for IE 10/Win8 and others' subarray returning array of size 1 + var nativeBuffer = util.Buffer; + return nativeBuffer ? nativeBuffer.alloc(0) : new this.buf.constructor(0); + } + + return this._slice.call(this.buf, start, end); + }; + /** + * Reads a string preceeded by its byte length as a varint. + * @returns {string} Value read + */ + + + Reader.prototype.string = function read_string() { + var bytes = this.bytes(); + return utf8.read(bytes, 0, bytes.length); + }; + /** + * Skips the specified number of bytes if specified, otherwise skips a varint. + * @param {number} [length] Length if known, otherwise a varint is assumed + * @returns {Reader} `this` + */ + + + Reader.prototype.skip = function skip(length) { + if (typeof length === "number") { + /* istanbul ignore if */ + if (this.pos + length > this.len) throw indexOutOfRange(this, length); + this.pos += length; + } else { + do { + /* istanbul ignore if */ + if (this.pos >= this.len) throw indexOutOfRange(this); + } while (this.buf[this.pos++] & 128); + } + + return this; + }; + /** + * Skips the next element of the specified wire type. + * @param {number} wireType Wire type received + * @returns {Reader} `this` + */ + + + Reader.prototype.skipType = function (wireType) { + switch (wireType) { + case 0: + this.skip(); + break; + + case 1: + this.skip(8); + break; + + case 2: + this.skip(this.uint32()); + break; + + case 3: + while ((wireType = this.uint32() & 7) !== 4) { + this.skipType(wireType); + } + + break; + + case 5: + this.skip(4); + break; + + /* istanbul ignore next */ + + default: + throw Error("invalid wire type " + wireType + " at offset " + this.pos); + } + + return this; + }; + + Reader._configure = function (BufferReader_) { + BufferReader = BufferReader_; + Reader.create = create(); + + BufferReader._configure(); + + var fn = util.Long ? "toLong" : + /* istanbul ignore next */ + "toNumber"; + util.merge(Reader.prototype, { + int64: function read_int64() { + return readLongVarint.call(this)[fn](false); + }, + uint64: function read_uint64() { + return readLongVarint.call(this)[fn](true); + }, + sint64: function read_sint64() { + return readLongVarint.call(this).zzDecode()[fn](false); + }, + fixed64: function read_fixed64() { + return readFixed64.call(this)[fn](true); + }, + sfixed64: function read_sfixed64() { + return readFixed64.call(this)[fn](false); + } + }); + }; // #endregion ORIGINAL CODE + + + module.exports; + }, function () { + return { + './util/minimal': __cjsMetaURL$8 + }; + }); + var __cjsMetaURL$c = 'file:///D:/myproject/JisolGame/JisolGameCocos/extensions/ngame/node_modules/protobufjs/src/reader_buffer.js'; + loader.define(__cjsMetaURL$c, function (exports, require, module, __filename, __dirname) { + module.exports = BufferReader; // extends Reader + + var Reader = require("./reader"); + + (BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader; + + var util = require("./util/minimal"); + /** + * Constructs a new buffer reader instance. + * @classdesc Wire format reader using node buffers. + * @extends Reader + * @constructor + * @param {Buffer} buffer Buffer to read from + */ + + + function BufferReader(buffer) { + Reader.call(this, buffer); + /** + * Read buffer. + * @name BufferReader#buf + * @type {Buffer} + */ + } + + BufferReader._configure = function () { + /* istanbul ignore else */ + if (util.Buffer) BufferReader.prototype._slice = util.Buffer.prototype.slice; + }; + /** + * @override + */ + + + BufferReader.prototype.string = function read_string_buffer() { + var len = this.uint32(); // modifies pos + + return this.buf.utf8Slice ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len)) : this.buf.toString("utf-8", this.pos, this.pos = Math.min(this.pos + len, this.len)); + }; + /** + * Reads a sequence of bytes preceeded by its length as a varint. + * @name BufferReader#bytes + * @function + * @returns {Buffer} Value read + */ + + + BufferReader._configure(); // #endregion ORIGINAL CODE + + + module.exports; + }, function () { + return { + './reader': __cjsMetaURL$b, + './util/minimal': __cjsMetaURL$8 + }; + }); + var __cjsMetaURL$d = 'file:///D:/myproject/JisolGame/JisolGameCocos/extensions/ngame/node_modules/protobufjs/src/rpc/service.js'; + loader.define(__cjsMetaURL$d, function (exports, require, module, __filename, __dirname) { + module.exports = Service; + + var util = require("../util/minimal"); // Extends EventEmitter + + + (Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service; + /** + * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}. + * + * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`. + * @typedef rpc.ServiceMethodCallback + * @template TRes extends Message + * @type {function} + * @param {Error|null} error Error, if any + * @param {TRes} [response] Response message + * @returns {undefined} + */ + + /** + * A service method part of a {@link rpc.Service} as created by {@link Service.create}. + * @typedef rpc.ServiceMethod + * @template TReq extends Message + * @template TRes extends Message + * @type {function} + * @param {TReq|Properties} request Request message or plain object + * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message + * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined` + */ + + /** + * Constructs a new RPC service instance. + * @classdesc An RPC service as returned by {@link Service#create}. + * @exports rpc.Service + * @extends util.EventEmitter + * @constructor + * @param {RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited + */ + + function Service(rpcImpl, requestDelimited, responseDelimited) { + if (typeof rpcImpl !== "function") throw TypeError("rpcImpl must be a function"); + util.EventEmitter.call(this); + /** + * RPC implementation. Becomes `null` once the service is ended. + * @type {RPCImpl|null} + */ + + this.rpcImpl = rpcImpl; + /** + * Whether requests are length-delimited. + * @type {boolean} + */ + + this.requestDelimited = Boolean(requestDelimited); + /** + * Whether responses are length-delimited. + * @type {boolean} + */ + + this.responseDelimited = Boolean(responseDelimited); + } + /** + * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}. + * @param {Method|rpc.ServiceMethod} method Reflected or static method + * @param {Constructor} requestCtor Request constructor + * @param {Constructor} responseCtor Response constructor + * @param {TReq|Properties} request Request message or plain object + * @param {rpc.ServiceMethodCallback} callback Service callback + * @returns {undefined} + * @template TReq extends Message + * @template TRes extends Message + */ + + + Service.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) { + if (!request) throw TypeError("request must be specified"); + var self = this; + if (!callback) return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request); + + if (!self.rpcImpl) { + setTimeout(function () { + callback(Error("already ended")); + }, 0); + return undefined; + } + + try { + return self.rpcImpl(method, requestCtor[self.requestDelimited ? "encodeDelimited" : "encode"](request).finish(), function rpcCallback(err, response) { + if (err) { + self.emit("error", err, method); + return callback(err); + } + + if (response === null) { + self.end( + /* endedByRPC */ + true); + return undefined; + } + + if (!(response instanceof responseCtor)) { + try { + response = responseCtor[self.responseDelimited ? "decodeDelimited" : "decode"](response); + } catch (err) { + self.emit("error", err, method); + return callback(err); + } + } + + self.emit("data", response, method); + return callback(null, response); + }); + } catch (err) { + self.emit("error", err, method); + setTimeout(function () { + callback(err); + }, 0); + return undefined; + } + }; + /** + * Ends this service and emits the `end` event. + * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation. + * @returns {rpc.Service} `this` + */ + + + Service.prototype.end = function end(endedByRPC) { + if (this.rpcImpl) { + if (!endedByRPC) // signal end to rpcImpl + this.rpcImpl(null, null, null); + this.rpcImpl = null; + this.emit("end").off(); + } + + return this; + }; // #endregion ORIGINAL CODE + + + module.exports; + }, function () { + return { + '../util/minimal': __cjsMetaURL$8 + }; + }); + var __cjsMetaURL$e = 'file:///D:/myproject/JisolGame/JisolGameCocos/extensions/ngame/node_modules/protobufjs/src/rpc.js'; + loader.define(__cjsMetaURL$e, function (exports, require, module, __filename, __dirname) { + /** + * Streaming RPC helpers. + * @namespace + */ + var rpc = exports; + /** + * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets. + * @typedef RPCImpl + * @type {function} + * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called + * @param {Uint8Array} requestData Request data + * @param {RPCImplCallback} callback Callback function + * @returns {undefined} + * @example + * function rpcImpl(method, requestData, callback) { + * if (protobuf.util.lcFirst(method.name) !== "myMethod") // compatible with static code + * throw Error("no such method"); + * asynchronouslyObtainAResponse(requestData, function(err, responseData) { + * callback(err, responseData); + * }); + * } + */ + + /** + * Node-style callback as used by {@link RPCImpl}. + * @typedef RPCImplCallback + * @type {function} + * @param {Error|null} error Error, if any, otherwise `null` + * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error + * @returns {undefined} + */ + + rpc.Service = require("./rpc/service"); // #endregion ORIGINAL CODE + + module.exports; + }, function () { + return { + './rpc/service': __cjsMetaURL$d + }; + }); + var __cjsMetaURL$f = 'file:///D:/myproject/JisolGame/JisolGameCocos/extensions/ngame/node_modules/protobufjs/src/roots.js'; + loader.define(__cjsMetaURL$f, function (exports, require, module, __filename, __dirname) { + module.exports = {}; + /** + * Named roots. + * This is where pbjs stores generated structures (the option `-r, --root` specifies a name). + * Can also be used manually to make roots available across modules. + * @name roots + * @type {Object.} + * @example + * // pbjs -r myroot -o compiled.js ... + * + * // in another module: + * require("./compiled.js"); + * + * // in any subsequent module: + * var root = protobuf.roots["myroot"]; + */ + // #endregion ORIGINAL CODE + + module.exports; + }, {}); + var __cjsMetaURL$g = 'file:///D:/myproject/JisolGame/JisolGameCocos/extensions/ngame/node_modules/protobufjs/src/index-minimal.js'; + loader.define(__cjsMetaURL$g, function (exports, require, module, __filename, __dirname) { + var protobuf = exports; + /** + * Build type, one of `"full"`, `"light"` or `"minimal"`. + * @name build + * @type {string} + * @const + */ + + protobuf.build = "minimal"; // Serialization + + protobuf.Writer = require("./writer"); + protobuf.BufferWriter = require("./writer_buffer"); + protobuf.Reader = require("./reader"); + protobuf.BufferReader = require("./reader_buffer"); // Utility + + protobuf.util = require("./util/minimal"); + protobuf.rpc = require("./rpc"); + protobuf.roots = require("./roots"); + protobuf.configure = configure; + /* istanbul ignore next */ + + /** + * Reconfigures the library according to the environment. + * @returns {undefined} + */ + + function configure() { + protobuf.util._configure(); + + protobuf.Writer._configure(protobuf.BufferWriter); + + protobuf.Reader._configure(protobuf.BufferReader); + } // Set up buffer utility according to the environment + + + configure(); // #endregion ORIGINAL CODE + + module.exports; + }, function () { + return { + './writer': __cjsMetaURL$9, + './writer_buffer': __cjsMetaURL$a, + './reader': __cjsMetaURL$b, + './reader_buffer': __cjsMetaURL$c, + './util/minimal': __cjsMetaURL$8, + './rpc': __cjsMetaURL$e, + './roots': __cjsMetaURL$f + }; + }); + var __cjsMetaURL$h = 'file:///D:/myproject/JisolGame/JisolGameCocos/extensions/ngame/node_modules/protobufjs/minimal.js'; + loader.define(__cjsMetaURL$h, function (exports, require, module, __filename, __dirname) { + module.exports = require("./src/index-minimal"); // #endregion ORIGINAL CODE + + module.exports; + }, function () { + return { + './src/index-minimal': __cjsMetaURL$g + }; + }); + + var _cjsExports; + + var __cjsMetaURL$i = 'file:///D:/myproject/JisolGame/JisolGameCocos/extensions/ngame/assets/ngame/message/proto.js'; + loader.define(__cjsMetaURL$i, function (exports, require, module, __filename, __dirname) { + var $protobuf = require("protobufjs/minimal.js"); // Common aliases + + + var $Reader = $protobuf.Reader, + $Writer = $protobuf.Writer, + $util = $protobuf.util; // Exported root namespace + + var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {}); + + $root.GOnHookPet = function () { + /** + * Properties of a GOnHookPet. + * @exports IGOnHookPet + * @interface IGOnHookPet + * @property {string|null} [key] GOnHookPet key + * @property {number|null} [petTbId] GOnHookPet petTbId + */ + + /** + * Constructs a new GOnHookPet. + * @exports GOnHookPet + * @classdesc Represents a GOnHookPet. + * @implements IGOnHookPet + * @constructor + * @param {IGOnHookPet=} [properties] Properties to set + */ + function GOnHookPet(properties) { + if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; + } + /** + * GOnHookPet key. + * @member {string} key + * @memberof GOnHookPet + * @instance + */ + + + GOnHookPet.prototype.key = ""; + /** + * GOnHookPet petTbId. + * @member {number} petTbId + * @memberof GOnHookPet + * @instance + */ + + GOnHookPet.prototype.petTbId = 0; + /** + * Creates a new GOnHookPet instance using the specified properties. + * @function create + * @memberof GOnHookPet + * @static + * @param {IGOnHookPet=} [properties] Properties to set + * @returns {GOnHookPet} GOnHookPet instance + */ + + GOnHookPet.create = function create(properties) { + return new GOnHookPet(properties); + }; + /** + * Encodes the specified GOnHookPet message. Does not implicitly {@link GOnHookPet.verify|verify} messages. + * @function encode + * @memberof GOnHookPet + * @static + * @param {IGOnHookPet} message GOnHookPet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + GOnHookPet.encode = function encode(message, writer) { + if (!writer) writer = $Writer.create(); + if (message.key != null && Object.hasOwnProperty.call(message, "key")) writer.uint32( + /* id 1, wireType 2 =*/ + 10).string(message.key); + if (message.petTbId != null && Object.hasOwnProperty.call(message, "petTbId")) writer.uint32( + /* id 2, wireType 0 =*/ + 16).int32(message.petTbId); + return writer; + }; + /** + * Encodes the specified GOnHookPet message, length delimited. Does not implicitly {@link GOnHookPet.verify|verify} messages. + * @function encodeDelimited + * @memberof GOnHookPet + * @static + * @param {IGOnHookPet} message GOnHookPet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + GOnHookPet.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a GOnHookPet message from the specified reader or buffer. + * @function decode + * @memberof GOnHookPet + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {GOnHookPet} GOnHookPet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + GOnHookPet.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, + message = new $root.GOnHookPet(); + + while (reader.pos < end) { + var tag = reader.uint32(); + + switch (tag >>> 3) { + case 1: + { + message.key = reader.string(); + break; + } + + case 2: + { + message.petTbId = reader.int32(); + break; + } + + default: + reader.skipType(tag & 7); + break; + } + } + + return message; + }; + /** + * Decodes a GOnHookPet message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof GOnHookPet + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {GOnHookPet} GOnHookPet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + GOnHookPet.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a GOnHookPet message. + * @function verify + * @memberof GOnHookPet + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + + + GOnHookPet.verify = function verify(message) { + if (typeof message !== "object" || message === null) return "object expected"; + if (message.key != null && message.hasOwnProperty("key")) if (!$util.isString(message.key)) return "key: string expected"; + if (message.petTbId != null && message.hasOwnProperty("petTbId")) if (!$util.isInteger(message.petTbId)) return "petTbId: integer expected"; + return null; + }; + /** + * Creates a GOnHookPet message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof GOnHookPet + * @static + * @param {Object.} object Plain object + * @returns {GOnHookPet} GOnHookPet + */ + + + GOnHookPet.fromObject = function fromObject(object) { + if (object instanceof $root.GOnHookPet) return object; + var message = new $root.GOnHookPet(); + if (object.key != null) message.key = String(object.key); + if (object.petTbId != null) message.petTbId = object.petTbId | 0; + return message; + }; + /** + * Creates a plain object from a GOnHookPet message. Also converts values to other types if specified. + * @function toObject + * @memberof GOnHookPet + * @static + * @param {GOnHookPet} message GOnHookPet + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + + + GOnHookPet.toObject = function toObject(message, options) { + if (!options) options = {}; + var object = {}; + + if (options.defaults) { + object.key = ""; + object.petTbId = 0; + } + + if (message.key != null && message.hasOwnProperty("key")) object.key = message.key; + if (message.petTbId != null && message.hasOwnProperty("petTbId")) object.petTbId = message.petTbId; + return object; + }; + /** + * Converts this GOnHookPet to JSON. + * @function toJSON + * @memberof GOnHookPet + * @instance + * @returns {Object.} JSON object + */ + + + GOnHookPet.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + /** + * Gets the default type url for GOnHookPet + * @function getTypeUrl + * @memberof GOnHookPet + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + + + GOnHookPet.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + + return typeUrlPrefix + "/GOnHookPet"; + }; + + return GOnHookPet; + }(); + + $root.GOnHookPets = function () { + /** + * Properties of a GOnHookPets. + * @exports IGOnHookPets + * @interface IGOnHookPets + * @property {Array.|null} [pets] GOnHookPets pets + */ + + /** + * Constructs a new GOnHookPets. + * @exports GOnHookPets + * @classdesc Represents a GOnHookPets. + * @implements IGOnHookPets + * @constructor + * @param {IGOnHookPets=} [properties] Properties to set + */ + function GOnHookPets(properties) { + this.pets = []; + if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; + } + /** + * GOnHookPets pets. + * @member {Array.} pets + * @memberof GOnHookPets + * @instance + */ + + + GOnHookPets.prototype.pets = $util.emptyArray; + /** + * Creates a new GOnHookPets instance using the specified properties. + * @function create + * @memberof GOnHookPets + * @static + * @param {IGOnHookPets=} [properties] Properties to set + * @returns {GOnHookPets} GOnHookPets instance + */ + + GOnHookPets.create = function create(properties) { + return new GOnHookPets(properties); + }; + /** + * Encodes the specified GOnHookPets message. Does not implicitly {@link GOnHookPets.verify|verify} messages. + * @function encode + * @memberof GOnHookPets + * @static + * @param {IGOnHookPets} message GOnHookPets message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + GOnHookPets.encode = function encode(message, writer) { + if (!writer) writer = $Writer.create(); + if (message.pets != null && message.pets.length) for (var i = 0; i < message.pets.length; ++i) $root.GOnHookPet.encode(message.pets[i], writer.uint32( + /* id 1, wireType 2 =*/ + 10).fork()).ldelim(); + return writer; + }; + /** + * Encodes the specified GOnHookPets message, length delimited. Does not implicitly {@link GOnHookPets.verify|verify} messages. + * @function encodeDelimited + * @memberof GOnHookPets + * @static + * @param {IGOnHookPets} message GOnHookPets message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + GOnHookPets.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a GOnHookPets message from the specified reader or buffer. + * @function decode + * @memberof GOnHookPets + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {GOnHookPets} GOnHookPets + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + GOnHookPets.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, + message = new $root.GOnHookPets(); + + while (reader.pos < end) { + var tag = reader.uint32(); + + switch (tag >>> 3) { + case 1: + { + if (!(message.pets && message.pets.length)) message.pets = []; + message.pets.push($root.GOnHookPet.decode(reader, reader.uint32())); + break; + } + + default: + reader.skipType(tag & 7); + break; + } + } + + return message; + }; + /** + * Decodes a GOnHookPets message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof GOnHookPets + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {GOnHookPets} GOnHookPets + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + GOnHookPets.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a GOnHookPets message. + * @function verify + * @memberof GOnHookPets + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + + + GOnHookPets.verify = function verify(message) { + if (typeof message !== "object" || message === null) return "object expected"; + + if (message.pets != null && message.hasOwnProperty("pets")) { + if (!Array.isArray(message.pets)) return "pets: array expected"; + + for (var i = 0; i < message.pets.length; ++i) { + var error = $root.GOnHookPet.verify(message.pets[i]); + if (error) return "pets." + error; + } + } + + return null; + }; + /** + * Creates a GOnHookPets message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof GOnHookPets + * @static + * @param {Object.} object Plain object + * @returns {GOnHookPets} GOnHookPets + */ + + + GOnHookPets.fromObject = function fromObject(object) { + if (object instanceof $root.GOnHookPets) return object; + var message = new $root.GOnHookPets(); + + if (object.pets) { + if (!Array.isArray(object.pets)) throw TypeError(".GOnHookPets.pets: array expected"); + message.pets = []; + + for (var i = 0; i < object.pets.length; ++i) { + if (typeof object.pets[i] !== "object") throw TypeError(".GOnHookPets.pets: object expected"); + message.pets[i] = $root.GOnHookPet.fromObject(object.pets[i]); + } + } + + return message; + }; + /** + * Creates a plain object from a GOnHookPets message. Also converts values to other types if specified. + * @function toObject + * @memberof GOnHookPets + * @static + * @param {GOnHookPets} message GOnHookPets + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + + + GOnHookPets.toObject = function toObject(message, options) { + if (!options) options = {}; + var object = {}; + if (options.arrays || options.defaults) object.pets = []; + + if (message.pets && message.pets.length) { + object.pets = []; + + for (var j = 0; j < message.pets.length; ++j) object.pets[j] = $root.GOnHookPet.toObject(message.pets[j], options); + } + + return object; + }; + /** + * Converts this GOnHookPets to JSON. + * @function toJSON + * @memberof GOnHookPets + * @instance + * @returns {Object.} JSON object + */ + + + GOnHookPets.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + /** + * Gets the default type url for GOnHookPets + * @function getTypeUrl + * @memberof GOnHookPets + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + + + GOnHookPets.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + + return typeUrlPrefix + "/GOnHookPets"; + }; + + return GOnHookPets; + }(); + + $root.GPVPStart = function () { + /** + * Properties of a GPVPStart. + * @exports IGPVPStart + * @interface IGPVPStart + * @property {string|null} [leftTactical] GPVPStart leftTactical + * @property {Object.|null} [leftPets] GPVPStart leftPets + * @property {string|null} [rightTactical] GPVPStart rightTactical + * @property {Object.|null} [rightPets] GPVPStart rightPets + */ + + /** + * Constructs a new GPVPStart. + * @exports GPVPStart + * @classdesc Represents a GPVPStart. + * @implements IGPVPStart + * @constructor + * @param {IGPVPStart=} [properties] Properties to set + */ + function GPVPStart(properties) { + this.leftPets = {}; + this.rightPets = {}; + if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; + } + /** + * GPVPStart leftTactical. + * @member {string} leftTactical + * @memberof GPVPStart + * @instance + */ + + + GPVPStart.prototype.leftTactical = ""; + /** + * GPVPStart leftPets. + * @member {Object.} leftPets + * @memberof GPVPStart + * @instance + */ + + GPVPStart.prototype.leftPets = $util.emptyObject; + /** + * GPVPStart rightTactical. + * @member {string} rightTactical + * @memberof GPVPStart + * @instance + */ + + GPVPStart.prototype.rightTactical = ""; + /** + * GPVPStart rightPets. + * @member {Object.} rightPets + * @memberof GPVPStart + * @instance + */ + + GPVPStart.prototype.rightPets = $util.emptyObject; + /** + * Creates a new GPVPStart instance using the specified properties. + * @function create + * @memberof GPVPStart + * @static + * @param {IGPVPStart=} [properties] Properties to set + * @returns {GPVPStart} GPVPStart instance + */ + + GPVPStart.create = function create(properties) { + return new GPVPStart(properties); + }; + /** + * Encodes the specified GPVPStart message. Does not implicitly {@link GPVPStart.verify|verify} messages. + * @function encode + * @memberof GPVPStart + * @static + * @param {IGPVPStart} message GPVPStart message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + GPVPStart.encode = function encode(message, writer) { + if (!writer) writer = $Writer.create(); + if (message.leftTactical != null && Object.hasOwnProperty.call(message, "leftTactical")) writer.uint32( + /* id 1, wireType 2 =*/ + 10).string(message.leftTactical); + if (message.leftPets != null && Object.hasOwnProperty.call(message, "leftPets")) for (var keys = Object.keys(message.leftPets), i = 0; i < keys.length; ++i) writer.uint32( + /* id 2, wireType 2 =*/ + 18).fork().uint32( + /* id 1, wireType 0 =*/ + 8).int64(keys[i]).uint32( + /* id 2, wireType 2 =*/ + 18).string(message.leftPets[keys[i]]).ldelim(); + if (message.rightTactical != null && Object.hasOwnProperty.call(message, "rightTactical")) writer.uint32( + /* id 3, wireType 2 =*/ + 26).string(message.rightTactical); + if (message.rightPets != null && Object.hasOwnProperty.call(message, "rightPets")) for (var keys = Object.keys(message.rightPets), i = 0; i < keys.length; ++i) writer.uint32( + /* id 4, wireType 2 =*/ + 34).fork().uint32( + /* id 1, wireType 0 =*/ + 8).int64(keys[i]).uint32( + /* id 2, wireType 2 =*/ + 18).string(message.rightPets[keys[i]]).ldelim(); + return writer; + }; + /** + * Encodes the specified GPVPStart message, length delimited. Does not implicitly {@link GPVPStart.verify|verify} messages. + * @function encodeDelimited + * @memberof GPVPStart + * @static + * @param {IGPVPStart} message GPVPStart message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + GPVPStart.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a GPVPStart message from the specified reader or buffer. + * @function decode + * @memberof GPVPStart + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {GPVPStart} GPVPStart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + GPVPStart.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, + message = new $root.GPVPStart(), + key, + value; + + while (reader.pos < end) { + var tag = reader.uint32(); + + switch (tag >>> 3) { + case 1: + { + message.leftTactical = reader.string(); + break; + } + + case 2: + { + if (message.leftPets === $util.emptyObject) message.leftPets = {}; + var end2 = reader.uint32() + reader.pos; + key = 0; + value = ""; + + while (reader.pos < end2) { + var tag2 = reader.uint32(); + + switch (tag2 >>> 3) { + case 1: + key = reader.int64(); + break; + + case 2: + value = reader.string(); + break; + + default: + reader.skipType(tag2 & 7); + break; + } + } + + message.leftPets[typeof key === "object" ? $util.longToHash(key) : key] = value; + break; + } + + case 3: + { + message.rightTactical = reader.string(); + break; + } + + case 4: + { + if (message.rightPets === $util.emptyObject) message.rightPets = {}; + var end2 = reader.uint32() + reader.pos; + key = 0; + value = ""; + + while (reader.pos < end2) { + var tag2 = reader.uint32(); + + switch (tag2 >>> 3) { + case 1: + key = reader.int64(); + break; + + case 2: + value = reader.string(); + break; + + default: + reader.skipType(tag2 & 7); + break; + } + } + + message.rightPets[typeof key === "object" ? $util.longToHash(key) : key] = value; + break; + } + + default: + reader.skipType(tag & 7); + break; + } + } + + return message; + }; + /** + * Decodes a GPVPStart message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof GPVPStart + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {GPVPStart} GPVPStart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + GPVPStart.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a GPVPStart message. + * @function verify + * @memberof GPVPStart + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + + + GPVPStart.verify = function verify(message) { + if (typeof message !== "object" || message === null) return "object expected"; + if (message.leftTactical != null && message.hasOwnProperty("leftTactical")) if (!$util.isString(message.leftTactical)) return "leftTactical: string expected"; + + if (message.leftPets != null && message.hasOwnProperty("leftPets")) { + if (!$util.isObject(message.leftPets)) return "leftPets: object expected"; + var key = Object.keys(message.leftPets); + + for (var i = 0; i < key.length; ++i) { + if (!$util.key64Re.test(key[i])) return "leftPets: integer|Long key{k:int64} expected"; + if (!$util.isString(message.leftPets[key[i]])) return "leftPets: string{k:int64} expected"; + } + } + + if (message.rightTactical != null && message.hasOwnProperty("rightTactical")) if (!$util.isString(message.rightTactical)) return "rightTactical: string expected"; + + if (message.rightPets != null && message.hasOwnProperty("rightPets")) { + if (!$util.isObject(message.rightPets)) return "rightPets: object expected"; + var key = Object.keys(message.rightPets); + + for (var i = 0; i < key.length; ++i) { + if (!$util.key64Re.test(key[i])) return "rightPets: integer|Long key{k:int64} expected"; + if (!$util.isString(message.rightPets[key[i]])) return "rightPets: string{k:int64} expected"; + } + } + + return null; + }; + /** + * Creates a GPVPStart message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof GPVPStart + * @static + * @param {Object.} object Plain object + * @returns {GPVPStart} GPVPStart + */ + + + GPVPStart.fromObject = function fromObject(object) { + if (object instanceof $root.GPVPStart) return object; + var message = new $root.GPVPStart(); + if (object.leftTactical != null) message.leftTactical = String(object.leftTactical); + + if (object.leftPets) { + if (typeof object.leftPets !== "object") throw TypeError(".GPVPStart.leftPets: object expected"); + message.leftPets = {}; + + for (var keys = Object.keys(object.leftPets), i = 0; i < keys.length; ++i) message.leftPets[keys[i]] = String(object.leftPets[keys[i]]); + } + + if (object.rightTactical != null) message.rightTactical = String(object.rightTactical); + + if (object.rightPets) { + if (typeof object.rightPets !== "object") throw TypeError(".GPVPStart.rightPets: object expected"); + message.rightPets = {}; + + for (var keys = Object.keys(object.rightPets), i = 0; i < keys.length; ++i) message.rightPets[keys[i]] = String(object.rightPets[keys[i]]); + } + + return message; + }; + /** + * Creates a plain object from a GPVPStart message. Also converts values to other types if specified. + * @function toObject + * @memberof GPVPStart + * @static + * @param {GPVPStart} message GPVPStart + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + + + GPVPStart.toObject = function toObject(message, options) { + if (!options) options = {}; + var object = {}; + + if (options.objects || options.defaults) { + object.leftPets = {}; + object.rightPets = {}; + } + + if (options.defaults) { + object.leftTactical = ""; + object.rightTactical = ""; + } + + if (message.leftTactical != null && message.hasOwnProperty("leftTactical")) object.leftTactical = message.leftTactical; + var keys2; + + if (message.leftPets && (keys2 = Object.keys(message.leftPets)).length) { + object.leftPets = {}; + + for (var j = 0; j < keys2.length; ++j) object.leftPets[keys2[j]] = message.leftPets[keys2[j]]; + } + + if (message.rightTactical != null && message.hasOwnProperty("rightTactical")) object.rightTactical = message.rightTactical; + + if (message.rightPets && (keys2 = Object.keys(message.rightPets)).length) { + object.rightPets = {}; + + for (var j = 0; j < keys2.length; ++j) object.rightPets[keys2[j]] = message.rightPets[keys2[j]]; + } + + return object; + }; + /** + * Converts this GPVPStart to JSON. + * @function toJSON + * @memberof GPVPStart + * @instance + * @returns {Object.} JSON object + */ + + + GPVPStart.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + /** + * Gets the default type url for GPVPStart + * @function getTypeUrl + * @memberof GPVPStart + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + + + GPVPStart.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + + return typeUrlPrefix + "/GPVPStart"; + }; + + return GPVPStart; + }(); + + $root.GPVPText = function () { + /** + * Properties of a GPVPText. + * @exports IGPVPText + * @interface IGPVPText + * @property {string|null} [text] GPVPText text + */ + + /** + * Constructs a new GPVPText. + * @exports GPVPText + * @classdesc Represents a GPVPText. + * @implements IGPVPText + * @constructor + * @param {IGPVPText=} [properties] Properties to set + */ + function GPVPText(properties) { + if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; + } + /** + * GPVPText text. + * @member {string} text + * @memberof GPVPText + * @instance + */ + + + GPVPText.prototype.text = ""; + /** + * Creates a new GPVPText instance using the specified properties. + * @function create + * @memberof GPVPText + * @static + * @param {IGPVPText=} [properties] Properties to set + * @returns {GPVPText} GPVPText instance + */ + + GPVPText.create = function create(properties) { + return new GPVPText(properties); + }; + /** + * Encodes the specified GPVPText message. Does not implicitly {@link GPVPText.verify|verify} messages. + * @function encode + * @memberof GPVPText + * @static + * @param {IGPVPText} message GPVPText message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + GPVPText.encode = function encode(message, writer) { + if (!writer) writer = $Writer.create(); + if (message.text != null && Object.hasOwnProperty.call(message, "text")) writer.uint32( + /* id 1, wireType 2 =*/ + 10).string(message.text); + return writer; + }; + /** + * Encodes the specified GPVPText message, length delimited. Does not implicitly {@link GPVPText.verify|verify} messages. + * @function encodeDelimited + * @memberof GPVPText + * @static + * @param {IGPVPText} message GPVPText message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + GPVPText.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a GPVPText message from the specified reader or buffer. + * @function decode + * @memberof GPVPText + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {GPVPText} GPVPText + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + GPVPText.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, + message = new $root.GPVPText(); + + while (reader.pos < end) { + var tag = reader.uint32(); + + switch (tag >>> 3) { + case 1: + { + message.text = reader.string(); + break; + } + + default: + reader.skipType(tag & 7); + break; + } + } + + return message; + }; + /** + * Decodes a GPVPText message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof GPVPText + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {GPVPText} GPVPText + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + GPVPText.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a GPVPText message. + * @function verify + * @memberof GPVPText + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + + + GPVPText.verify = function verify(message) { + if (typeof message !== "object" || message === null) return "object expected"; + if (message.text != null && message.hasOwnProperty("text")) if (!$util.isString(message.text)) return "text: string expected"; + return null; + }; + /** + * Creates a GPVPText message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof GPVPText + * @static + * @param {Object.} object Plain object + * @returns {GPVPText} GPVPText + */ + + + GPVPText.fromObject = function fromObject(object) { + if (object instanceof $root.GPVPText) return object; + var message = new $root.GPVPText(); + if (object.text != null) message.text = String(object.text); + return message; + }; + /** + * Creates a plain object from a GPVPText message. Also converts values to other types if specified. + * @function toObject + * @memberof GPVPText + * @static + * @param {GPVPText} message GPVPText + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + + + GPVPText.toObject = function toObject(message, options) { + if (!options) options = {}; + var object = {}; + if (options.defaults) object.text = ""; + if (message.text != null && message.hasOwnProperty("text")) object.text = message.text; + return object; + }; + /** + * Converts this GPVPText to JSON. + * @function toJSON + * @memberof GPVPText + * @instance + * @returns {Object.} JSON object + */ + + + GPVPText.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + /** + * Gets the default type url for GPVPText + * @function getTypeUrl + * @memberof GPVPText + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + + + GPVPText.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + + return typeUrlPrefix + "/GPVPText"; + }; + + return GPVPText; + }(); + + $root.GUIChatMessage = function () { + /** + * Properties of a GUIChatMessage. + * @exports IGUIChatMessage + * @interface IGUIChatMessage + * @property {string|null} [message] GUIChatMessage message + */ + + /** + * Constructs a new GUIChatMessage. + * @exports GUIChatMessage + * @classdesc Represents a GUIChatMessage. + * @implements IGUIChatMessage + * @constructor + * @param {IGUIChatMessage=} [properties] Properties to set + */ + function GUIChatMessage(properties) { + if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; + } + /** + * GUIChatMessage message. + * @member {string} message + * @memberof GUIChatMessage + * @instance + */ + + + GUIChatMessage.prototype.message = ""; + /** + * Creates a new GUIChatMessage instance using the specified properties. + * @function create + * @memberof GUIChatMessage + * @static + * @param {IGUIChatMessage=} [properties] Properties to set + * @returns {GUIChatMessage} GUIChatMessage instance + */ + + GUIChatMessage.create = function create(properties) { + return new GUIChatMessage(properties); + }; + /** + * Encodes the specified GUIChatMessage message. Does not implicitly {@link GUIChatMessage.verify|verify} messages. + * @function encode + * @memberof GUIChatMessage + * @static + * @param {IGUIChatMessage} message GUIChatMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + GUIChatMessage.encode = function encode(message, writer) { + if (!writer) writer = $Writer.create(); + if (message.message != null && Object.hasOwnProperty.call(message, "message")) writer.uint32( + /* id 1, wireType 2 =*/ + 10).string(message.message); + return writer; + }; + /** + * Encodes the specified GUIChatMessage message, length delimited. Does not implicitly {@link GUIChatMessage.verify|verify} messages. + * @function encodeDelimited + * @memberof GUIChatMessage + * @static + * @param {IGUIChatMessage} message GUIChatMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + GUIChatMessage.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a GUIChatMessage message from the specified reader or buffer. + * @function decode + * @memberof GUIChatMessage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {GUIChatMessage} GUIChatMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + GUIChatMessage.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, + message = new $root.GUIChatMessage(); + + while (reader.pos < end) { + var tag = reader.uint32(); + + switch (tag >>> 3) { + case 1: + { + message.message = reader.string(); + break; + } + + default: + reader.skipType(tag & 7); + break; + } + } + + return message; + }; + /** + * Decodes a GUIChatMessage message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof GUIChatMessage + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {GUIChatMessage} GUIChatMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + GUIChatMessage.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a GUIChatMessage message. + * @function verify + * @memberof GUIChatMessage + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + + + GUIChatMessage.verify = function verify(message) { + if (typeof message !== "object" || message === null) return "object expected"; + if (message.message != null && message.hasOwnProperty("message")) if (!$util.isString(message.message)) return "message: string expected"; + return null; + }; + /** + * Creates a GUIChatMessage message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof GUIChatMessage + * @static + * @param {Object.} object Plain object + * @returns {GUIChatMessage} GUIChatMessage + */ + + + GUIChatMessage.fromObject = function fromObject(object) { + if (object instanceof $root.GUIChatMessage) return object; + var message = new $root.GUIChatMessage(); + if (object.message != null) message.message = String(object.message); + return message; + }; + /** + * Creates a plain object from a GUIChatMessage message. Also converts values to other types if specified. + * @function toObject + * @memberof GUIChatMessage + * @static + * @param {GUIChatMessage} message GUIChatMessage + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + + + GUIChatMessage.toObject = function toObject(message, options) { + if (!options) options = {}; + var object = {}; + if (options.defaults) object.message = ""; + if (message.message != null && message.hasOwnProperty("message")) object.message = message.message; + return object; + }; + /** + * Converts this GUIChatMessage to JSON. + * @function toJSON + * @memberof GUIChatMessage + * @instance + * @returns {Object.} JSON object + */ + + + GUIChatMessage.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + /** + * Gets the default type url for GUIChatMessage + * @function getTypeUrl + * @memberof GUIChatMessage + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + + + GUIChatMessage.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + + return typeUrlPrefix + "/GUIChatMessage"; + }; + + return GUIChatMessage; + }(); + + $root.JNFrameInput = function () { + /** + * Properties of a JNFrameInput. + * @exports IJNFrameInput + * @interface IJNFrameInput + * @property {number|null} [nId] JNFrameInput nId + * @property {Uint8Array|null} [input] JNFrameInput input + */ + + /** + * Constructs a new JNFrameInput. + * @exports JNFrameInput + * @classdesc Represents a JNFrameInput. + * @implements IJNFrameInput + * @constructor + * @param {IJNFrameInput=} [properties] Properties to set + */ + function JNFrameInput(properties) { + if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; + } + /** + * JNFrameInput nId. + * @member {number} nId + * @memberof JNFrameInput + * @instance + */ + + + JNFrameInput.prototype.nId = 0; + /** + * JNFrameInput input. + * @member {Uint8Array|null|undefined} input + * @memberof JNFrameInput + * @instance + */ + + JNFrameInput.prototype.input = null; // OneOf field names bound to virtual getters and setters + + var $oneOfFields; + /** + * JNFrameInput _input. + * @member {"input"|undefined} _input + * @memberof JNFrameInput + * @instance + */ + + Object.defineProperty(JNFrameInput.prototype, "_input", { + get: $util.oneOfGetter($oneOfFields = ["input"]), + set: $util.oneOfSetter($oneOfFields) + }); + /** + * Creates a new JNFrameInput instance using the specified properties. + * @function create + * @memberof JNFrameInput + * @static + * @param {IJNFrameInput=} [properties] Properties to set + * @returns {JNFrameInput} JNFrameInput instance + */ + + JNFrameInput.create = function create(properties) { + return new JNFrameInput(properties); + }; + /** + * Encodes the specified JNFrameInput message. Does not implicitly {@link JNFrameInput.verify|verify} messages. + * @function encode + * @memberof JNFrameInput + * @static + * @param {IJNFrameInput} message JNFrameInput message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + JNFrameInput.encode = function encode(message, writer) { + if (!writer) writer = $Writer.create(); + if (message.nId != null && Object.hasOwnProperty.call(message, "nId")) writer.uint32( + /* id 1, wireType 0 =*/ + 8).int32(message.nId); + if (message.input != null && Object.hasOwnProperty.call(message, "input")) writer.uint32( + /* id 2, wireType 2 =*/ + 18).bytes(message.input); + return writer; + }; + /** + * Encodes the specified JNFrameInput message, length delimited. Does not implicitly {@link JNFrameInput.verify|verify} messages. + * @function encodeDelimited + * @memberof JNFrameInput + * @static + * @param {IJNFrameInput} message JNFrameInput message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + JNFrameInput.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a JNFrameInput message from the specified reader or buffer. + * @function decode + * @memberof JNFrameInput + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {JNFrameInput} JNFrameInput + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + JNFrameInput.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, + message = new $root.JNFrameInput(); + + while (reader.pos < end) { + var tag = reader.uint32(); + + switch (tag >>> 3) { + case 1: + { + message.nId = reader.int32(); + break; + } + + case 2: + { + message.input = reader.bytes(); + break; + } + + default: + reader.skipType(tag & 7); + break; + } + } + + return message; + }; + /** + * Decodes a JNFrameInput message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof JNFrameInput + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {JNFrameInput} JNFrameInput + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + JNFrameInput.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a JNFrameInput message. + * @function verify + * @memberof JNFrameInput + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + + + JNFrameInput.verify = function verify(message) { + if (typeof message !== "object" || message === null) return "object expected"; + if (message.nId != null && message.hasOwnProperty("nId")) if (!$util.isInteger(message.nId)) return "nId: integer expected"; + + if (message.input != null && message.hasOwnProperty("input")) { + if (!(message.input && typeof message.input.length === "number" || $util.isString(message.input))) return "input: buffer expected"; + } + + return null; + }; + /** + * Creates a JNFrameInput message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof JNFrameInput + * @static + * @param {Object.} object Plain object + * @returns {JNFrameInput} JNFrameInput + */ + + + JNFrameInput.fromObject = function fromObject(object) { + if (object instanceof $root.JNFrameInput) return object; + var message = new $root.JNFrameInput(); + if (object.nId != null) message.nId = object.nId | 0; + if (object.input != null) if (typeof object.input === "string") $util.base64.decode(object.input, message.input = $util.newBuffer($util.base64.length(object.input)), 0);else if (object.input.length >= 0) message.input = object.input; + return message; + }; + /** + * Creates a plain object from a JNFrameInput message. Also converts values to other types if specified. + * @function toObject + * @memberof JNFrameInput + * @static + * @param {JNFrameInput} message JNFrameInput + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + + + JNFrameInput.toObject = function toObject(message, options) { + if (!options) options = {}; + var object = {}; + if (options.defaults) object.nId = 0; + if (message.nId != null && message.hasOwnProperty("nId")) object.nId = message.nId; + + if (message.input != null && message.hasOwnProperty("input")) { + object.input = options.bytes === String ? $util.base64.encode(message.input, 0, message.input.length) : options.bytes === Array ? Array.prototype.slice.call(message.input) : message.input; + if (options.oneofs) object._input = "input"; + } + + return object; + }; + /** + * Converts this JNFrameInput to JSON. + * @function toJSON + * @memberof JNFrameInput + * @instance + * @returns {Object.} JSON object + */ + + + JNFrameInput.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + /** + * Gets the default type url for JNFrameInput + * @function getTypeUrl + * @memberof JNFrameInput + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + + + JNFrameInput.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + + return typeUrlPrefix + "/JNFrameInput"; + }; + + return JNFrameInput; + }(); + + $root.JNFrameInputs = function () { + /** + * Properties of a JNFrameInputs. + * @exports IJNFrameInputs + * @interface IJNFrameInputs + * @property {Array.|null} [inputs] JNFrameInputs inputs + */ + + /** + * Constructs a new JNFrameInputs. + * @exports JNFrameInputs + * @classdesc Represents a JNFrameInputs. + * @implements IJNFrameInputs + * @constructor + * @param {IJNFrameInputs=} [properties] Properties to set + */ + function JNFrameInputs(properties) { + this.inputs = []; + if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; + } + /** + * JNFrameInputs inputs. + * @member {Array.} inputs + * @memberof JNFrameInputs + * @instance + */ + + + JNFrameInputs.prototype.inputs = $util.emptyArray; + /** + * Creates a new JNFrameInputs instance using the specified properties. + * @function create + * @memberof JNFrameInputs + * @static + * @param {IJNFrameInputs=} [properties] Properties to set + * @returns {JNFrameInputs} JNFrameInputs instance + */ + + JNFrameInputs.create = function create(properties) { + return new JNFrameInputs(properties); + }; + /** + * Encodes the specified JNFrameInputs message. Does not implicitly {@link JNFrameInputs.verify|verify} messages. + * @function encode + * @memberof JNFrameInputs + * @static + * @param {IJNFrameInputs} message JNFrameInputs message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + JNFrameInputs.encode = function encode(message, writer) { + if (!writer) writer = $Writer.create(); + if (message.inputs != null && message.inputs.length) for (var i = 0; i < message.inputs.length; ++i) $root.JNFrameInput.encode(message.inputs[i], writer.uint32( + /* id 1, wireType 2 =*/ + 10).fork()).ldelim(); + return writer; + }; + /** + * Encodes the specified JNFrameInputs message, length delimited. Does not implicitly {@link JNFrameInputs.verify|verify} messages. + * @function encodeDelimited + * @memberof JNFrameInputs + * @static + * @param {IJNFrameInputs} message JNFrameInputs message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + JNFrameInputs.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a JNFrameInputs message from the specified reader or buffer. + * @function decode + * @memberof JNFrameInputs + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {JNFrameInputs} JNFrameInputs + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + JNFrameInputs.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, + message = new $root.JNFrameInputs(); + + while (reader.pos < end) { + var tag = reader.uint32(); + + switch (tag >>> 3) { + case 1: + { + if (!(message.inputs && message.inputs.length)) message.inputs = []; + message.inputs.push($root.JNFrameInput.decode(reader, reader.uint32())); + break; + } + + default: + reader.skipType(tag & 7); + break; + } + } + + return message; + }; + /** + * Decodes a JNFrameInputs message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof JNFrameInputs + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {JNFrameInputs} JNFrameInputs + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + JNFrameInputs.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a JNFrameInputs message. + * @function verify + * @memberof JNFrameInputs + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + + + JNFrameInputs.verify = function verify(message) { + if (typeof message !== "object" || message === null) return "object expected"; + + if (message.inputs != null && message.hasOwnProperty("inputs")) { + if (!Array.isArray(message.inputs)) return "inputs: array expected"; + + for (var i = 0; i < message.inputs.length; ++i) { + var error = $root.JNFrameInput.verify(message.inputs[i]); + if (error) return "inputs." + error; + } + } + + return null; + }; + /** + * Creates a JNFrameInputs message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof JNFrameInputs + * @static + * @param {Object.} object Plain object + * @returns {JNFrameInputs} JNFrameInputs + */ + + + JNFrameInputs.fromObject = function fromObject(object) { + if (object instanceof $root.JNFrameInputs) return object; + var message = new $root.JNFrameInputs(); + + if (object.inputs) { + if (!Array.isArray(object.inputs)) throw TypeError(".JNFrameInputs.inputs: array expected"); + message.inputs = []; + + for (var i = 0; i < object.inputs.length; ++i) { + if (typeof object.inputs[i] !== "object") throw TypeError(".JNFrameInputs.inputs: object expected"); + message.inputs[i] = $root.JNFrameInput.fromObject(object.inputs[i]); + } + } + + return message; + }; + /** + * Creates a plain object from a JNFrameInputs message. Also converts values to other types if specified. + * @function toObject + * @memberof JNFrameInputs + * @static + * @param {JNFrameInputs} message JNFrameInputs + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + + + JNFrameInputs.toObject = function toObject(message, options) { + if (!options) options = {}; + var object = {}; + if (options.arrays || options.defaults) object.inputs = []; + + if (message.inputs && message.inputs.length) { + object.inputs = []; + + for (var j = 0; j < message.inputs.length; ++j) object.inputs[j] = $root.JNFrameInput.toObject(message.inputs[j], options); + } + + return object; + }; + /** + * Converts this JNFrameInputs to JSON. + * @function toJSON + * @memberof JNFrameInputs + * @instance + * @returns {Object.} JSON object + */ + + + JNFrameInputs.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + /** + * Gets the default type url for JNFrameInputs + * @function getTypeUrl + * @memberof JNFrameInputs + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + + + JNFrameInputs.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + + return typeUrlPrefix + "/JNFrameInputs"; + }; + + return JNFrameInputs; + }(); + + $root.JNFrameInfo = function () { + /** + * Properties of a JNFrameInfo. + * @exports IJNFrameInfo + * @interface IJNFrameInfo + * @property {number|null} [index] JNFrameInfo index + * @property {Array.|null} [messages] JNFrameInfo messages + */ + + /** + * Constructs a new JNFrameInfo. + * @exports JNFrameInfo + * @classdesc Represents a JNFrameInfo. + * @implements IJNFrameInfo + * @constructor + * @param {IJNFrameInfo=} [properties] Properties to set + */ + function JNFrameInfo(properties) { + this.messages = []; + if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; + } + /** + * JNFrameInfo index. + * @member {number} index + * @memberof JNFrameInfo + * @instance + */ + + + JNFrameInfo.prototype.index = 0; + /** + * JNFrameInfo messages. + * @member {Array.} messages + * @memberof JNFrameInfo + * @instance + */ + + JNFrameInfo.prototype.messages = $util.emptyArray; + /** + * Creates a new JNFrameInfo instance using the specified properties. + * @function create + * @memberof JNFrameInfo + * @static + * @param {IJNFrameInfo=} [properties] Properties to set + * @returns {JNFrameInfo} JNFrameInfo instance + */ + + JNFrameInfo.create = function create(properties) { + return new JNFrameInfo(properties); + }; + /** + * Encodes the specified JNFrameInfo message. Does not implicitly {@link JNFrameInfo.verify|verify} messages. + * @function encode + * @memberof JNFrameInfo + * @static + * @param {IJNFrameInfo} message JNFrameInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + JNFrameInfo.encode = function encode(message, writer) { + if (!writer) writer = $Writer.create(); + if (message.index != null && Object.hasOwnProperty.call(message, "index")) writer.uint32( + /* id 1, wireType 0 =*/ + 8).int32(message.index); + if (message.messages != null && message.messages.length) for (var i = 0; i < message.messages.length; ++i) $root.JNFrameInput.encode(message.messages[i], writer.uint32( + /* id 2, wireType 2 =*/ + 18).fork()).ldelim(); + return writer; + }; + /** + * Encodes the specified JNFrameInfo message, length delimited. Does not implicitly {@link JNFrameInfo.verify|verify} messages. + * @function encodeDelimited + * @memberof JNFrameInfo + * @static + * @param {IJNFrameInfo} message JNFrameInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + JNFrameInfo.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a JNFrameInfo message from the specified reader or buffer. + * @function decode + * @memberof JNFrameInfo + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {JNFrameInfo} JNFrameInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + JNFrameInfo.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, + message = new $root.JNFrameInfo(); + + while (reader.pos < end) { + var tag = reader.uint32(); + + switch (tag >>> 3) { + case 1: + { + message.index = reader.int32(); + break; + } + + case 2: + { + if (!(message.messages && message.messages.length)) message.messages = []; + message.messages.push($root.JNFrameInput.decode(reader, reader.uint32())); + break; + } + + default: + reader.skipType(tag & 7); + break; + } + } + + return message; + }; + /** + * Decodes a JNFrameInfo message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof JNFrameInfo + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {JNFrameInfo} JNFrameInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + JNFrameInfo.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a JNFrameInfo message. + * @function verify + * @memberof JNFrameInfo + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + + + JNFrameInfo.verify = function verify(message) { + if (typeof message !== "object" || message === null) return "object expected"; + if (message.index != null && message.hasOwnProperty("index")) if (!$util.isInteger(message.index)) return "index: integer expected"; + + if (message.messages != null && message.hasOwnProperty("messages")) { + if (!Array.isArray(message.messages)) return "messages: array expected"; + + for (var i = 0; i < message.messages.length; ++i) { + var error = $root.JNFrameInput.verify(message.messages[i]); + if (error) return "messages." + error; + } + } + + return null; + }; + /** + * Creates a JNFrameInfo message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof JNFrameInfo + * @static + * @param {Object.} object Plain object + * @returns {JNFrameInfo} JNFrameInfo + */ + + + JNFrameInfo.fromObject = function fromObject(object) { + if (object instanceof $root.JNFrameInfo) return object; + var message = new $root.JNFrameInfo(); + if (object.index != null) message.index = object.index | 0; + + if (object.messages) { + if (!Array.isArray(object.messages)) throw TypeError(".JNFrameInfo.messages: array expected"); + message.messages = []; + + for (var i = 0; i < object.messages.length; ++i) { + if (typeof object.messages[i] !== "object") throw TypeError(".JNFrameInfo.messages: object expected"); + message.messages[i] = $root.JNFrameInput.fromObject(object.messages[i]); + } + } + + return message; + }; + /** + * Creates a plain object from a JNFrameInfo message. Also converts values to other types if specified. + * @function toObject + * @memberof JNFrameInfo + * @static + * @param {JNFrameInfo} message JNFrameInfo + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + + + JNFrameInfo.toObject = function toObject(message, options) { + if (!options) options = {}; + var object = {}; + if (options.arrays || options.defaults) object.messages = []; + if (options.defaults) object.index = 0; + if (message.index != null && message.hasOwnProperty("index")) object.index = message.index; + + if (message.messages && message.messages.length) { + object.messages = []; + + for (var j = 0; j < message.messages.length; ++j) object.messages[j] = $root.JNFrameInput.toObject(message.messages[j], options); + } + + return object; + }; + /** + * Converts this JNFrameInfo to JSON. + * @function toJSON + * @memberof JNFrameInfo + * @instance + * @returns {Object.} JSON object + */ + + + JNFrameInfo.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + /** + * Gets the default type url for JNFrameInfo + * @function getTypeUrl + * @memberof JNFrameInfo + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + + + JNFrameInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + + return typeUrlPrefix + "/JNFrameInfo"; + }; + + return JNFrameInfo; + }(); + + $root.JNFrameInfos = function () { + /** + * Properties of a JNFrameInfos. + * @exports IJNFrameInfos + * @interface IJNFrameInfos + * @property {Array.|null} [frames] JNFrameInfos frames + */ + + /** + * Constructs a new JNFrameInfos. + * @exports JNFrameInfos + * @classdesc Represents a JNFrameInfos. + * @implements IJNFrameInfos + * @constructor + * @param {IJNFrameInfos=} [properties] Properties to set + */ + function JNFrameInfos(properties) { + this.frames = []; + if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; + } + /** + * JNFrameInfos frames. + * @member {Array.} frames + * @memberof JNFrameInfos + * @instance + */ + + + JNFrameInfos.prototype.frames = $util.emptyArray; + /** + * Creates a new JNFrameInfos instance using the specified properties. + * @function create + * @memberof JNFrameInfos + * @static + * @param {IJNFrameInfos=} [properties] Properties to set + * @returns {JNFrameInfos} JNFrameInfos instance + */ + + JNFrameInfos.create = function create(properties) { + return new JNFrameInfos(properties); + }; + /** + * Encodes the specified JNFrameInfos message. Does not implicitly {@link JNFrameInfos.verify|verify} messages. + * @function encode + * @memberof JNFrameInfos + * @static + * @param {IJNFrameInfos} message JNFrameInfos message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + JNFrameInfos.encode = function encode(message, writer) { + if (!writer) writer = $Writer.create(); + if (message.frames != null && message.frames.length) for (var i = 0; i < message.frames.length; ++i) $root.JNFrameInfo.encode(message.frames[i], writer.uint32( + /* id 1, wireType 2 =*/ + 10).fork()).ldelim(); + return writer; + }; + /** + * Encodes the specified JNFrameInfos message, length delimited. Does not implicitly {@link JNFrameInfos.verify|verify} messages. + * @function encodeDelimited + * @memberof JNFrameInfos + * @static + * @param {IJNFrameInfos} message JNFrameInfos message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + JNFrameInfos.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a JNFrameInfos message from the specified reader or buffer. + * @function decode + * @memberof JNFrameInfos + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {JNFrameInfos} JNFrameInfos + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + JNFrameInfos.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, + message = new $root.JNFrameInfos(); + + while (reader.pos < end) { + var tag = reader.uint32(); + + switch (tag >>> 3) { + case 1: + { + if (!(message.frames && message.frames.length)) message.frames = []; + message.frames.push($root.JNFrameInfo.decode(reader, reader.uint32())); + break; + } + + default: + reader.skipType(tag & 7); + break; + } + } + + return message; + }; + /** + * Decodes a JNFrameInfos message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof JNFrameInfos + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {JNFrameInfos} JNFrameInfos + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + JNFrameInfos.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a JNFrameInfos message. + * @function verify + * @memberof JNFrameInfos + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + + + JNFrameInfos.verify = function verify(message) { + if (typeof message !== "object" || message === null) return "object expected"; + + if (message.frames != null && message.hasOwnProperty("frames")) { + if (!Array.isArray(message.frames)) return "frames: array expected"; + + for (var i = 0; i < message.frames.length; ++i) { + var error = $root.JNFrameInfo.verify(message.frames[i]); + if (error) return "frames." + error; + } + } + + return null; + }; + /** + * Creates a JNFrameInfos message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof JNFrameInfos + * @static + * @param {Object.} object Plain object + * @returns {JNFrameInfos} JNFrameInfos + */ + + + JNFrameInfos.fromObject = function fromObject(object) { + if (object instanceof $root.JNFrameInfos) return object; + var message = new $root.JNFrameInfos(); + + if (object.frames) { + if (!Array.isArray(object.frames)) throw TypeError(".JNFrameInfos.frames: array expected"); + message.frames = []; + + for (var i = 0; i < object.frames.length; ++i) { + if (typeof object.frames[i] !== "object") throw TypeError(".JNFrameInfos.frames: object expected"); + message.frames[i] = $root.JNFrameInfo.fromObject(object.frames[i]); + } + } + + return message; + }; + /** + * Creates a plain object from a JNFrameInfos message. Also converts values to other types if specified. + * @function toObject + * @memberof JNFrameInfos + * @static + * @param {JNFrameInfos} message JNFrameInfos + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + + + JNFrameInfos.toObject = function toObject(message, options) { + if (!options) options = {}; + var object = {}; + if (options.arrays || options.defaults) object.frames = []; + + if (message.frames && message.frames.length) { + object.frames = []; + + for (var j = 0; j < message.frames.length; ++j) object.frames[j] = $root.JNFrameInfo.toObject(message.frames[j], options); + } + + return object; + }; + /** + * Converts this JNFrameInfos to JSON. + * @function toJSON + * @memberof JNFrameInfos + * @instance + * @returns {Object.} JSON object + */ + + + JNFrameInfos.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + /** + * Gets the default type url for JNFrameInfos + * @function getTypeUrl + * @memberof JNFrameInfos + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + + + JNFrameInfos.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + + return typeUrlPrefix + "/JNFrameInfos"; + }; + + return JNFrameInfos; + }(); + + $root.JNInput = function () { + /** + * Properties of a JNInput. + * @exports IJNInput + * @interface IJNInput + * @property {string|null} [message] JNInput message + */ + + /** + * Constructs a new JNInput. + * @exports JNInput + * @classdesc Represents a JNInput. + * @implements IJNInput + * @constructor + * @param {IJNInput=} [properties] Properties to set + */ + function JNInput(properties) { + if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; + } + /** + * JNInput message. + * @member {string|null|undefined} message + * @memberof JNInput + * @instance + */ + + + JNInput.prototype.message = null; // OneOf field names bound to virtual getters and setters + + var $oneOfFields; + /** + * JNInput _message. + * @member {"message"|undefined} _message + * @memberof JNInput + * @instance + */ + + Object.defineProperty(JNInput.prototype, "_message", { + get: $util.oneOfGetter($oneOfFields = ["message"]), + set: $util.oneOfSetter($oneOfFields) + }); + /** + * Creates a new JNInput instance using the specified properties. + * @function create + * @memberof JNInput + * @static + * @param {IJNInput=} [properties] Properties to set + * @returns {JNInput} JNInput instance + */ + + JNInput.create = function create(properties) { + return new JNInput(properties); + }; + /** + * Encodes the specified JNInput message. Does not implicitly {@link JNInput.verify|verify} messages. + * @function encode + * @memberof JNInput + * @static + * @param {IJNInput} message JNInput message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + JNInput.encode = function encode(message, writer) { + if (!writer) writer = $Writer.create(); + if (message.message != null && Object.hasOwnProperty.call(message, "message")) writer.uint32( + /* id 1, wireType 2 =*/ + 10).string(message.message); + return writer; + }; + /** + * Encodes the specified JNInput message, length delimited. Does not implicitly {@link JNInput.verify|verify} messages. + * @function encodeDelimited + * @memberof JNInput + * @static + * @param {IJNInput} message JNInput message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + JNInput.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a JNInput message from the specified reader or buffer. + * @function decode + * @memberof JNInput + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {JNInput} JNInput + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + JNInput.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, + message = new $root.JNInput(); + + while (reader.pos < end) { + var tag = reader.uint32(); + + switch (tag >>> 3) { + case 1: + { + message.message = reader.string(); + break; + } + + default: + reader.skipType(tag & 7); + break; + } + } + + return message; + }; + /** + * Decodes a JNInput message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof JNInput + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {JNInput} JNInput + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + JNInput.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a JNInput message. + * @function verify + * @memberof JNInput + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + + + JNInput.verify = function verify(message) { + if (typeof message !== "object" || message === null) return "object expected"; + + if (message.message != null && message.hasOwnProperty("message")) { + if (!$util.isString(message.message)) return "message: string expected"; + } + + return null; + }; + /** + * Creates a JNInput message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof JNInput + * @static + * @param {Object.} object Plain object + * @returns {JNInput} JNInput + */ + + + JNInput.fromObject = function fromObject(object) { + if (object instanceof $root.JNInput) return object; + var message = new $root.JNInput(); + if (object.message != null) message.message = String(object.message); + return message; + }; + /** + * Creates a plain object from a JNInput message. Also converts values to other types if specified. + * @function toObject + * @memberof JNInput + * @static + * @param {JNInput} message JNInput + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + + + JNInput.toObject = function toObject(message, options) { + if (!options) options = {}; + var object = {}; + + if (message.message != null && message.hasOwnProperty("message")) { + object.message = message.message; + if (options.oneofs) object._message = "message"; + } + + return object; + }; + /** + * Converts this JNInput to JSON. + * @function toJSON + * @memberof JNInput + * @instance + * @returns {Object.} JSON object + */ + + + JNInput.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + /** + * Gets the default type url for JNInput + * @function getTypeUrl + * @memberof JNInput + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + + + JNInput.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + + return typeUrlPrefix + "/JNInput"; + }; + + return JNInput; + }(); + + $root.NActionDemo = function () { + /** + * Properties of a NActionDemo. + * @exports INActionDemo + * @interface INActionDemo + * @property {string|null} [message] NActionDemo message + */ + + /** + * Constructs a new NActionDemo. + * @exports NActionDemo + * @classdesc Represents a NActionDemo. + * @implements INActionDemo + * @constructor + * @param {INActionDemo=} [properties] Properties to set + */ + function NActionDemo(properties) { + if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; + } + /** + * NActionDemo message. + * @member {string|null|undefined} message + * @memberof NActionDemo + * @instance + */ + + + NActionDemo.prototype.message = null; // OneOf field names bound to virtual getters and setters + + var $oneOfFields; + /** + * NActionDemo _message. + * @member {"message"|undefined} _message + * @memberof NActionDemo + * @instance + */ + + Object.defineProperty(NActionDemo.prototype, "_message", { + get: $util.oneOfGetter($oneOfFields = ["message"]), + set: $util.oneOfSetter($oneOfFields) + }); + /** + * Creates a new NActionDemo instance using the specified properties. + * @function create + * @memberof NActionDemo + * @static + * @param {INActionDemo=} [properties] Properties to set + * @returns {NActionDemo} NActionDemo instance + */ + + NActionDemo.create = function create(properties) { + return new NActionDemo(properties); + }; + /** + * Encodes the specified NActionDemo message. Does not implicitly {@link NActionDemo.verify|verify} messages. + * @function encode + * @memberof NActionDemo + * @static + * @param {INActionDemo} message NActionDemo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + NActionDemo.encode = function encode(message, writer) { + if (!writer) writer = $Writer.create(); + if (message.message != null && Object.hasOwnProperty.call(message, "message")) writer.uint32( + /* id 1, wireType 2 =*/ + 10).string(message.message); + return writer; + }; + /** + * Encodes the specified NActionDemo message, length delimited. Does not implicitly {@link NActionDemo.verify|verify} messages. + * @function encodeDelimited + * @memberof NActionDemo + * @static + * @param {INActionDemo} message NActionDemo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + NActionDemo.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a NActionDemo message from the specified reader or buffer. + * @function decode + * @memberof NActionDemo + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {NActionDemo} NActionDemo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + NActionDemo.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, + message = new $root.NActionDemo(); + + while (reader.pos < end) { + var tag = reader.uint32(); + + switch (tag >>> 3) { + case 1: + { + message.message = reader.string(); + break; + } + + default: + reader.skipType(tag & 7); + break; + } + } + + return message; + }; + /** + * Decodes a NActionDemo message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof NActionDemo + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {NActionDemo} NActionDemo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + NActionDemo.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a NActionDemo message. + * @function verify + * @memberof NActionDemo + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + + + NActionDemo.verify = function verify(message) { + if (typeof message !== "object" || message === null) return "object expected"; + + if (message.message != null && message.hasOwnProperty("message")) { + if (!$util.isString(message.message)) return "message: string expected"; + } + + return null; + }; + /** + * Creates a NActionDemo message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof NActionDemo + * @static + * @param {Object.} object Plain object + * @returns {NActionDemo} NActionDemo + */ + + + NActionDemo.fromObject = function fromObject(object) { + if (object instanceof $root.NActionDemo) return object; + var message = new $root.NActionDemo(); + if (object.message != null) message.message = String(object.message); + return message; + }; + /** + * Creates a plain object from a NActionDemo message. Also converts values to other types if specified. + * @function toObject + * @memberof NActionDemo + * @static + * @param {NActionDemo} message NActionDemo + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + + + NActionDemo.toObject = function toObject(message, options) { + if (!options) options = {}; + var object = {}; + + if (message.message != null && message.hasOwnProperty("message")) { + object.message = message.message; + if (options.oneofs) object._message = "message"; + } + + return object; + }; + /** + * Converts this NActionDemo to JSON. + * @function toJSON + * @memberof NActionDemo + * @instance + * @returns {Object.} JSON object + */ + + + NActionDemo.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + /** + * Gets the default type url for NActionDemo + * @function getTypeUrl + * @memberof NActionDemo + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + + + NActionDemo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + + return typeUrlPrefix + "/NActionDemo"; + }; + + return NActionDemo; + }(); + + $root.NActionDemo2 = function () { + /** + * Properties of a NActionDemo2. + * @exports INActionDemo2 + * @interface INActionDemo2 + * @property {string|null} [message] NActionDemo2 message + */ + + /** + * Constructs a new NActionDemo2. + * @exports NActionDemo2 + * @classdesc Represents a NActionDemo2. + * @implements INActionDemo2 + * @constructor + * @param {INActionDemo2=} [properties] Properties to set + */ + function NActionDemo2(properties) { + if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; + } + /** + * NActionDemo2 message. + * @member {string|null|undefined} message + * @memberof NActionDemo2 + * @instance + */ + + + NActionDemo2.prototype.message = null; // OneOf field names bound to virtual getters and setters + + var $oneOfFields; + /** + * NActionDemo2 _message. + * @member {"message"|undefined} _message + * @memberof NActionDemo2 + * @instance + */ + + Object.defineProperty(NActionDemo2.prototype, "_message", { + get: $util.oneOfGetter($oneOfFields = ["message"]), + set: $util.oneOfSetter($oneOfFields) + }); + /** + * Creates a new NActionDemo2 instance using the specified properties. + * @function create + * @memberof NActionDemo2 + * @static + * @param {INActionDemo2=} [properties] Properties to set + * @returns {NActionDemo2} NActionDemo2 instance + */ + + NActionDemo2.create = function create(properties) { + return new NActionDemo2(properties); + }; + /** + * Encodes the specified NActionDemo2 message. Does not implicitly {@link NActionDemo2.verify|verify} messages. + * @function encode + * @memberof NActionDemo2 + * @static + * @param {INActionDemo2} message NActionDemo2 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + NActionDemo2.encode = function encode(message, writer) { + if (!writer) writer = $Writer.create(); + if (message.message != null && Object.hasOwnProperty.call(message, "message")) writer.uint32( + /* id 1, wireType 2 =*/ + 10).string(message.message); + return writer; + }; + /** + * Encodes the specified NActionDemo2 message, length delimited. Does not implicitly {@link NActionDemo2.verify|verify} messages. + * @function encodeDelimited + * @memberof NActionDemo2 + * @static + * @param {INActionDemo2} message NActionDemo2 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + + + NActionDemo2.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a NActionDemo2 message from the specified reader or buffer. + * @function decode + * @memberof NActionDemo2 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {NActionDemo2} NActionDemo2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + NActionDemo2.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, + message = new $root.NActionDemo2(); + + while (reader.pos < end) { + var tag = reader.uint32(); + + switch (tag >>> 3) { + case 1: + { + message.message = reader.string(); + break; + } + + default: + reader.skipType(tag & 7); + break; + } + } + + return message; + }; + /** + * Decodes a NActionDemo2 message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof NActionDemo2 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {NActionDemo2} NActionDemo2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + + + NActionDemo2.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a NActionDemo2 message. + * @function verify + * @memberof NActionDemo2 + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + + + NActionDemo2.verify = function verify(message) { + if (typeof message !== "object" || message === null) return "object expected"; + + if (message.message != null && message.hasOwnProperty("message")) { + if (!$util.isString(message.message)) return "message: string expected"; + } + + return null; + }; + /** + * Creates a NActionDemo2 message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof NActionDemo2 + * @static + * @param {Object.} object Plain object + * @returns {NActionDemo2} NActionDemo2 + */ + + + NActionDemo2.fromObject = function fromObject(object) { + if (object instanceof $root.NActionDemo2) return object; + var message = new $root.NActionDemo2(); + if (object.message != null) message.message = String(object.message); + return message; + }; + /** + * Creates a plain object from a NActionDemo2 message. Also converts values to other types if specified. + * @function toObject + * @memberof NActionDemo2 + * @static + * @param {NActionDemo2} message NActionDemo2 + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + + + NActionDemo2.toObject = function toObject(message, options) { + if (!options) options = {}; + var object = {}; + + if (message.message != null && message.hasOwnProperty("message")) { + object.message = message.message; + if (options.oneofs) object._message = "message"; + } + + return object; + }; + /** + * Converts this NActionDemo2 to JSON. + * @function toJSON + * @memberof NActionDemo2 + * @instance + * @returns {Object.} JSON object + */ + + + NActionDemo2.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + /** + * Gets the default type url for NActionDemo2 + * @function getTypeUrl + * @memberof NActionDemo2 + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + + + NActionDemo2.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + + return typeUrlPrefix + "/NActionDemo2"; + }; + + return NActionDemo2; + }(); + + module.exports = $root; // #endregion ORIGINAL CODE + + _cjsExports = module.exports; + }, function () { + return { + 'protobufjs/minimal.js': __cjsMetaURL$h + }; + }); // I am the facade module who provides access to the CommonJS module './proto.js'~ + + if (!__cjsMetaURL$i) { + loader.throwInvalidWrapper('./proto.js', 'file:///D:/myproject/JisolGame/JisolGameCocos/extensions/ngame/assets/ngame/message/proto.mjs?cjs=&original=.js'); + } + + loader.require(__cjsMetaURL$i); + + cclegacy._RF.push({}, "76819YCVqJHsqMBzTfl7gkG", "NGameMessage", undefined); + + var NGameMessage = /*#__PURE__*/function (_Singleton) { + _inheritsLoose(NGameMessage, _Singleton); + + function NGameMessage() { + return _Singleton.apply(this, arguments) || this; + } + + var _proto = NGameMessage.prototype; //通过类名获取类 + + _proto.getType = function getType(name) { + return _cjsExports[name]; + }; + + _proto.DataToByte4 = function DataToByte4(type, data) { + if (!data) { + return new Uint8Array(0); + } + + return this.getType(type).encode(data).finish(); + }; + + _proto.Byte4ToData = function Byte4ToData(type, data) { + return this.getType(type).decode(data); + }; + + return NGameMessage; + }(Singleton); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "4cc38D1sJBB6bH41sF00uMK", "ToUtil", undefined); + + var ToUtil = /*#__PURE__*/function () { + function ToUtil() {} + + ToUtil.IntToByte4 = function IntToByte4(data) { + var targets = []; + targets[0] = data & 0xFF; + targets[1] = data >> 8 & 0xFF; + targets[2] = data >> 16 & 0xFF; + targets[3] = data >> 24 & 0xFF; + return targets; + }; + + ToUtil.Byte4ToInt = function Byte4ToInt(bytes) { + var b3 = bytes[0] & 0xFF; + var b2 = bytes[0 + 1] & 0xFF; + var b1 = bytes[0 + 2] & 0xFF; + var b0 = bytes[0 + 3] & 0xFF; + return b0 << 24 | b1 << 16 | b2 << 8 | b3; + }; + + return ToUtil; + }(); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "4b809uBRuFHT4rYma/mnJ38", "NDataUtil", undefined); //网络数据工具类 + + + var NDataUtil = /*#__PURE__*/function () { + function NDataUtil() {} //解析 + + + NDataUtil.Parse = function Parse(data) { + data = Array.from(new Uint8Array(data)); + if (data.length < 8) return; + return JNetParam.Build(ToUtil.Byte4ToInt([].concat(data.slice(0, 4))), ToUtil.Byte4ToInt([].concat(data.slice(4, 8)))).setByte(data.slice(8, data.length)); + } //加密 [请求Id*4,处理Id*4,...参数数据*N] + ; + + NDataUtil.Encrypt = function Encrypt(data, type) { + var datas = Array.from(NGameMessage.getIns().DataToByte4(type, data.data)); + + var _byte = [].concat(ToUtil.IntToByte4(data.id), ToUtil.IntToByte4(data.hId), datas); + + var array = new ArrayBuffer(_byte.length); + var datao = new DataView(array); + + for (var index = 0; index < _byte.length; index++) { + datao.setUint8(index, _byte[index]); + } + + return array; + }; + + return NDataUtil; + }(); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "eba91Ga4SlFGrcWjEmwdraC", "JNSocket", undefined); //WebSocket 连接的 JNetGame + + + var JNSocket = /*#__PURE__*/function (_SystemBase) { + _inheritsLoose(JNSocket, _SystemBase); + + function JNSocket() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _SystemBase.call.apply(_SystemBase, [this].concat(args)) || this; + _this.socket = void 0; + _this.id = 0; + _this.events = {}; //是否连接成功 + + _this.isConnect = false; //消息返回回调 + + _this.callback = new Map(); //延迟 (10s) + + _this.timeout = 10000; + return _this; + } + + var _proto = JNSocket.prototype; + + _proto.onInit = /*#__PURE__*/function () { + var _onInit = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return this.onConnect(); + + case 2: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onInit() { + return _onInit.apply(this, arguments); + } + + return onInit; + }(); + + _proto.onConnect = /*#__PURE__*/function () { + var _onConnect = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(resolve) { + var _this2 = this; + + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + if (!resolve) { + _context3.next = 17; + break; + } + + if (!this.isConnect) { + _context3.next = 3; + break; + } + + return _context3.abrupt("return"); + + case 3: + this.isConnect = true; + _context3.t0 = WebSocket; + _context3.next = 7; + return this.url(); + + case 7: + _context3.t1 = _context3.sent; + _context3.t2 = "" + _context3.t1; + this.socket = new _context3.t0(_context3.t2); + this.socket.binaryType = 'arraybuffer'; + + this.socket.onopen = function () { + console.log("NGame WebSocket \u8FDE\u63A5\u6210\u529F"); + resolve(); + }; + + this.socket.onmessage = this.onMessage.bind(this); + + this.socket.onclose = function () { + console.log("NGame WebSocket \u65AD\u5F00\u8FDE\u63A5"); + _this2.isConnect = false; + setTimeout(function () { + _this2.onConnect(resolve); + }, 1000); + }; + + return _context3.abrupt("return"); + + case 17: + return _context3.abrupt("return", new Promise( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(resolve) { + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return _this2.onConnect(resolve); + + case 2: + case "end": + return _context2.stop(); + } + }, _callee2); + })))); + + case 18: + case "end": + return _context3.stop(); + } + }, _callee3, this); + })); + + function onConnect(_x) { + return _onConnect.apply(this, arguments); + } + + return onConnect; + }() //接收到消息 + ; + + _proto.onMessage = function onMessage(message) { + this.emit(NDataUtil.Parse(message.data)); + }; + + _proto.emit = function emit(data) { + //处理方法0可能是返回消息 + if (data.hId == 0) { + //回调方法 + var callback = this.callback.get(data.id); + + if (callback) { + this.callback.get(data.id).fun(NGameMessage.getIns().Byte4ToData(callback.type, data["byte"])); + } + } else { + if (!this.events["" + data.hId]) this.events["" + data.hId] = []; //广播 + + this.events["" + data.hId].forEach(function (item) { + if (item.className) { + if (item.root) ;else { + item.func.bind(item.target)(NGameMessage.getIns().Byte4ToData(item.className, data["byte"])); + } + } else { + item.func.bind(item.target)(); + } + }); + } + } //外部监听消息 + ; + + _proto.on = function on(hId, func, target, className, root) { + // this.event.on(`${hId}`,func,target); + if (!this.events["" + hId]) this.events["" + hId] = []; + this.events["" + hId].push({ + func: func, + target: target, + className: className, + root: root + }); + } //删除外部监听 + ; + + _proto.off = function off(hId, func, target, className, root) { + if (!this.events["" + hId]) this.events["" + hId] = []; + + for (var index = 0; index < this.events["" + hId].length; index++) { + var item = this.events["" + hId][index]; + + if (item.func == func && item.target == target && item.className == className && item.root == root) { + this.events["" + hId].splice(index, 1); + index--; + } + } + } //发送消息 + ; + + _proto.Send = function Send(hId, data, type) { + var send = NDataUtil.Encrypt(JNetParam.Build(this.id++, hId).setData(data), type); + console.log("send", send); + this.socket.send(send); + } //发送消息并且等待返回 (一般用来接受可能返回的消息) + ; + + _proto.SendBack = function SendBack(hId, back, data, type) { + var _this3 = this; + + var id = this.id++; + var send = NDataUtil.Encrypt(JNetParam.Build(id, hId).setData(data), type); + console.log("sendback", send); + this.socket.send(send); //创建返回监听 + + this.callback.set(id, back); //如果长时间没有返回则移除 + + setTimeout(function () { + if (_this3.callback.get(id)) { + //移除 + _this3.callback.set(id, null); + } + }, this.timeout); + }; + + return JNSocket; + }(SystemBase); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "d97c0FjrAxEh6jbVSTsles9", "JNSyncAction", undefined); + + var JNSyncAction = /*#__PURE__*/function (JNSyncAction) { + JNSyncAction[JNSyncAction["NSyncFrameStart"] = 100] = "NSyncFrameStart"; + JNSyncAction[JNSyncAction["NSyncFrameEnd"] = 101] = "NSyncFrameEnd"; + JNSyncAction[JNSyncAction["NSyncFrameBack"] = 102] = "NSyncFrameBack"; + JNSyncAction[JNSyncAction["NSyncFrameInput"] = 103] = "NSyncFrameInput"; + JNSyncAction[JNSyncAction["NSyncFrameReset"] = 104] = "NSyncFrameReset"; + return JNSyncAction; + }({}); //帧同步重置 + + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "b26a0TOXyhOYahKasytChyi", "JNSyncMessage", undefined); + + var JNSyncMessage = /*#__PURE__*/function (JNSyncMessage) { + JNSyncMessage["JNInput"] = "JNInput"; + JNSyncMessage["JNFrameInputs"] = "JNFrameInputs"; + JNSyncMessage["JNFrameInfos"] = "JNFrameInfos"; + return JNSyncMessage; + }({}); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "3e996ylIKJO6aFY1//5+RRj", "JNFrameSkeletonSystem", undefined); + + var JNFrameSkeletonSystem = /*#__PURE__*/function (_System) { + _inheritsLoose(JNFrameSkeletonSystem, _System); + + function JNFrameSkeletonSystem() { + var _this; + + _this = _System.call(this) || this; + _this._skeletons = new Set(); + return _this; + } + /** + * @en + * Gets the instance of the Spine Skeleton system. + * @zh + * 获取 Spine 骨骼系统的单例。 + */ + + + JNFrameSkeletonSystem.getInstance = function getInstance() { + if (!JNFrameSkeletonSystem._instance) { + console.log("JNSyncFrame 创建SpineSystem"); + JNFrameSkeletonSystem._instance = new JNFrameSkeletonSystem(); + } + + return JNFrameSkeletonSystem._instance; + } + /** + * 销毁 + */ + ; + + JNFrameSkeletonSystem.deleteInstance = function deleteInstance() { + console.log("JNSyncFrame 销毁 SpineSystem"); + JNFrameSkeletonSystem._instance = new JNFrameSkeletonSystem(); + }; + + var _proto = JNFrameSkeletonSystem.prototype; + + _proto.add = function add(skeleton) { + if (!skeleton) return; + + if (!this._skeletons.has(skeleton)) { + this._skeletons.add(skeleton); + } + }; + + _proto.remove = function remove(skeleton) { + if (!skeleton) return; + + if (this._skeletons.has(skeleton)) { + this._skeletons["delete"](skeleton); + } + }; + + _proto.onUpdate = function onUpdate(dt) { + this.postUpdate(dt); + }; + + _proto.postUpdate = function postUpdate(dt) { + if (!this._skeletons) { + return; + } + + this._skeletons.forEach(function (skeleton) { + skeleton.updateAnimation(dt); + skeleton["syncAttachedNode"](); + }); + }; + + _proto.prepareRenderData = function prepareRenderData() { + if (!this._skeletons) { + return; + } + + this._skeletons.forEach(function (skeleton) { + skeleton.markForUpdateRenderData(); + }); + }; + + return JNFrameSkeletonSystem; + }(System); + /** + * @en + * The ID flag of the system. + * @zh + * 此系统的 ID 标记。 + */ + + + JNFrameSkeletonSystem.ID = 'JNFrameSkeletonSystem'; + JNFrameSkeletonSystem._instance = void 0; + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "430adDYWTZM5JW11ED9WlF2", "RandomUtil", undefined); //随机工具类 + + + var RandomUtil = /*#__PURE__*/function () { + function RandomUtil() {} //用于同步的随机方法 + + + RandomUtil.SyncRandom = function SyncRandom(seed, start) { + if (start === void 0) { + start = 0; + } + + for (var i = 0; i < start; i++) { + seed = (seed * 9301 + 49297) % 233280; + } + + return function (max, min) { + if (max === void 0) { + max = 1; + } + + if (min === void 0) { + min = 0; + } + + seed = (seed * 9301 + 49297) % 233280; + var rnd = seed / 233280.0; + return min + rnd * (max - min); + }; + } //++ + ; + + RandomUtil.Next = function Next(start) { + return function () { + return start++; + }; + }; + + return RandomUtil; + }(); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "c31f3aSNUdI5KVdkTB1wVr+", "EventDispatcher", undefined); + + var EventDispatcher = /*#__PURE__*/function (_Singleton) { + _inheritsLoose(EventDispatcher, _Singleton); + + function EventDispatcher() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Singleton.call.apply(_Singleton, [this].concat(args)) || this; + /** + * key: 事件名 + * value: 缓存事件 + */ + + _this._eventCacheMap = js.createMap(); + /**未找到监听事件的留存 */ + + _this._bufferMap = js.createMap(); + /**是否自动清理监听留存 */ + + _this.isAutoClearBufferMap = true; + return _this; + } + + var _proto = EventDispatcher.prototype; + /** + * 广播事件 + * + * @param eventName 事件名 + * @param param 传递的剩余不定参数 + */ + + _proto.emit = function emit(eventName) { + if (EventDispatcher.excludeEventNameLogList.indexOf(eventName) == -1) ; + var eventCacheArray = this._eventCacheMap[eventName]; + + for (var _len2 = arguments.length, param = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + param[_key2 - 1] = arguments[_key2]; + } + + if (eventCacheArray && eventCacheArray.length > 0) { + var eventCache = null; + + for (var i = 0; i < eventCacheArray.length; i++) { + eventCache = eventCacheArray[i]; // call 方法的语法和作用与 apply() 方法类似 + // 只有一个区别 + // 就是 call() 方法接受的是一个参数列表,而 apply() 方法接受的是一个包含多个参数的数组。 + + eventCache.func.apply(eventCache.target, param); + } + + for (var _i = eventCacheArray.length - 1; _i >= 0; _i--) { + eventCache = eventCacheArray[_i]; + + if (eventCache.once) { + eventCacheArray.splice(_i, 1); + } + } + } else { + if (EventDispatcher.autoClearBufferTime > 0) { + var _eventCacheArray = this._bufferMap[eventName]; + + if (!_eventCacheArray) { + _eventCacheArray = []; + this._bufferMap[eventName] = _eventCacheArray; + } + + _eventCacheArray.push(param); + + if (this.isAutoClearBufferMap) { + this.autoClearBuffer(eventName); + } + } + } + } + /**自动清理未找到监听事件的留存 */ + ; + + _proto.autoClearBuffer = function autoClearBuffer(eventName) { + var _this2 = this; + + setTimeout(function () { + if (_this2._bufferMap[eventName]) delete _this2._bufferMap[eventName]; + }, EventDispatcher.autoClearBufferTime * 1000); + } + /** + * 注册事件 + * + * @param eventName 事件名 + * @param func 事件处理函数 + * @param target 事件处理函数的执行对象 + */ + ; + + _proto.on = function on(eventName, func, target) { + if (!eventName) { + error("EventDispatcher on eventName 不合法", eventName); + return; + } + + this._on(eventName, func, target, false); + } + /** + * 注册事件(接受函数执行一次后会自动销毁,不用主动off) + * + * @param eventName 事件名 + * @param func 事件处理函数 + * @param target 事件处理函数的执行对象 + */ + ; + + _proto.onOnce = function onOnce(eventName, func, target) { + this._on(eventName, func, target, true); + } + /** + * 注册事件 + * + * @param eventName 事件名 + * @param func 事件处理函数 + * @param target 事件处理函数的执行对象 + * @param once 是否只回调一次 + */ + ; + + _proto._on = function _on(eventName, func, target, once) { + var eventCacheArray = this._eventCacheMap[eventName]; + + if (!eventCacheArray) { + eventCacheArray = []; + } + + var isAddOn = true; + + if (eventCacheArray && eventCacheArray.length > 0) { + for (var index = 0; index < eventCacheArray.length; index++) { + var element = eventCacheArray[index]; + + if (element.target == target && element.func == func) { + isAddOn = false; + } + } + } + + if (isAddOn) { + eventCacheArray.push({ + target: target, + func: func, + once: once + }); + this._eventCacheMap[eventName] = eventCacheArray; + } + + if (Object.getOwnPropertyNames(this._bufferMap).length > 0) { + var eventBufferArrays = this._bufferMap[eventName]; + + if (eventBufferArrays) { + for (var _index = 0; _index < eventBufferArrays.length; _index++) { + var eventBufferArray = eventBufferArrays[_index]; + var newBuff = [eventName].concat(eventBufferArray); + this.emit.apply(this, newBuff); + } + + delete this._bufferMap[eventName]; + } + } + } + /** + * 注销事件 + * + * @param eventName 事件名 + * @param func 事件处理函数 + * @param target 事件处理函数的执行对象 + */ + ; + + _proto.off = function off(eventName, func, target) { + var eventCacheArray = this._eventCacheMap[eventName]; + + if (eventCacheArray) { + if (func && target) { + for (var index = 0; index < eventCacheArray.length; index++) { + var element = eventCacheArray[index]; + + if (element.target == target && element.func) { + eventCacheArray.splice(index, 1); + } + } + } else { + delete this._eventCacheMap[eventName]; + } + } + } + /** + * 注销某个已经注册的对象的所有事件 + * @param target 事件函数处理的执行对象 + */ + ; + + _proto.targetOff = function targetOff(target) { + for (var _key3 in this._eventCacheMap) { + var eventCacheArrays = this._eventCacheMap[_key3]; + + for (var index = eventCacheArrays.length - 1; index >= 0; index--) { + var eventCacheArray = eventCacheArrays[index]; + + if (eventCacheArray[index].target == target) { + eventCacheArrays.splice(index, 1); + } + } + } + }; + + return EventDispatcher; + }(Singleton); + /**自动清理监听留存的时间 */ + + + EventDispatcher.autoClearBufferTime = 0; + EventDispatcher.excludeEventNameLogList = []; + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "8cae3AOhplLwrwVlDX0hR27", "JNFrameTweenSystem", undefined); + + var JNFrameTweenSystem = /*#__PURE__*/function () { + function JNFrameTweenSystem() { + this.tweens = []; + this._addTime = 0; + } + + var _proto = JNFrameTweenSystem.prototype; + + _proto.addTween = function addTween(tween) { + this.tweens.push(tween); + }; + + _proto.hasTween = function hasTween(tween) { + return this.tweens.indexOf(tween) >= 0; + }; + + _proto.delTween = function delTween(tween) { + this.tweens.splice(this.tweens.indexOf(tween), 1); + }; + + JNFrameTweenSystem.getInstance = function getInstance() { + if (JNFrameTweenSystem._instance) return JNFrameTweenSystem._instance; + return JNFrameTweenSystem._instance = new JNFrameTweenSystem(); + }; + + JNFrameTweenSystem.deleteInstance = function deleteInstance() { + JNFrameTweenSystem._instance = null; + }; + + _proto.onUpdate = function onUpdate(dt) { + var _this = this; + + this._addTime += dt; + this.tweens.forEach(function (tween) { + tween.update(_this.addTime); + }); + }; + + _createClass(JNFrameTweenSystem, [{ + key: "addTime", + get: function get() { + return this._addTime; + } + /** + * @en + * Gets the instance of the tween system. + * @zh + * 获取缓动系统的实例。 + */ + + }]); + + return JNFrameTweenSystem; + }(); + + JNFrameTweenSystem._instance = void 0; + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "ea662LlXAFHnKlv4AWNqVQM", "JNFrameTime", undefined); //帧同步定时器 + + + var JNFrameTime = /*#__PURE__*/function () { + function JNFrameTime() { + this.id = void 0; + this.handlers = []; + } + + JNFrameTime.getInstance = function getInstance() { + if (JNFrameTime._instance) return JNFrameTime._instance; + return JNFrameTime._instance = new JNFrameTime(); + }; + + JNFrameTime.deleteInstance = function deleteInstance() { + JNFrameTime._instance = null; + }; + + var _proto = JNFrameTime.prototype; //设置定时器 + + _proto.setTimeout = function setTimeout(handler, timeout) { + if (timeout === void 0) { + timeout = 0; + } + + return this.handlers.push({ + id: this.id++, + handler: handler, + timeout: timeout + }); + } //清除定时器 + ; + + _proto.clearTimeout = function clearTimeout(id) { + for (var index = 0; index < this.handlers.length; index++) { + var handler = this.handlers[index]; + + if (handler.id === id) { + this.handlers.splice(index, 1); + index--; + } + } + }; + + _proto.onUpdate = function onUpdate(dt) { + for (var index = 0; index < this.handlers.length; index++) { + var handler = this.handlers[index]; + handler.timeout -= dt; + + if (handler.timeout <= 0) { + this.handlers.splice(index, 1); + index--; + handler.handler(); + } + } + }; + + return JNFrameTime; + }(); + + JNFrameTime._instance = void 0; + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "91284Dns1RBj4aiBAyz9XQk", "JNSyncFrame", undefined); //通知 + + + var JNSyncFrameEvent = /*#__PURE__*/function (JNSyncFrameEvent) { + JNSyncFrameEvent["CLEAR"] = "JNSyncFrameEvent_CLEAR"; + JNSyncFrameEvent["CREATE"] = "JNSyncFrameEvent_CREATE"; + return JNSyncFrameEvent; + }({}); //创建世界 + //操作数据包 + //操作列表 + //数据包 + //数据包列表 + //帧同步核心类 + + + var JNSyncFrame = /*#__PURE__*/function (_SystemBase) { + _inheritsLoose(JNSyncFrame, _SystemBase); + + function JNSyncFrame() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _SystemBase.call.apply(_SystemBase, [this].concat(args)) || this; //物理 + + _this.instance = null; //同步时间 (和服务器保持一致) + + _this.nSyncTime = 67; //大于多少帧进行追帧 + + _this.nMaxFrameBan = 3; //大于多少帧进行快速追帧 + + _this.nMaxFrameLoopBan = 18; //将服务器帧数进行平分 + + _this.nDivideFrame = 3; //帧队列 + + _this.nFrameQueue = []; //本地帧 + + _this.nLocalFrame = 0; //运行的帧 + + _this.nFrameRun = 0; //暂存帧列表 + + _this.nFrameTempQueue = new Map(); //帧更新 + + _this.dtTotal = 0; //输入更新 + + _this.dtInputTotal = 0; //需要同步的Actor + + _this.nSyncActors = []; //ID 每添加 JNSyncFrameComponent + 1 + + _this.nSyncID = RandomUtil.Next(0); //初始化随机 + + _this.nRandSyncNumber = RandomUtil.SyncRandom(100); //是否开始同步 + + _this.isStart = false; //是否请求服务器数据中 + + _this.isServerData = false; + return _this; + } + + var _proto = JNSyncFrame.prototype; + + _proto.onInit = /*#__PURE__*/function () { + var _onInit = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + var that; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + //通知清除 + EventDispatcher.getIns().emit(JNSyncFrameEvent.CLEAR); //即使摧毁 + + CCObject._deferredDestroy(); + + that = this; //------------------- 重写 2D 物理 ----------------------- + + Object.defineProperty(PhysicsSystem2D, "instance", { + get: function get() { + if (!that.instance) { + console.log("JNSyncFrame 初始化物理"); + that.instance = new PhysicsSystem2D(); + that.instance.enable = false; + that.instance.autoSimulation = false; + return that.instance; + } else { + return that.instance; + } + } + }); + + PhysicsSystem2D["deleteInstance"] = function () { + console.log("JNSyncFrame 销毁物理"); + that.instance = null; + }; + + PhysicsSystem2D.prototype.postUpdate = function () {}; + + PhysicsSystem2D.prototype.update = function () {}; + + sp.spine.MathUtils.randomTriangularWith = function (min, max, mode) { + console.log("randomTriangularWith"); + var d = max - min; + if (0.1 <= (mode - min) / d) return min + Math.sqrt(0.1 * d * (mode - min)); + return max - Math.sqrt((1 - 0.1) * d * (max - mode)); + }; //摧毁Tween + + + JNFrameTweenSystem.deleteInstance(); //摧毁定时器 + + JNFrameTime.deleteInstance(); + this.onResetValue(); //通知创建 + + EventDispatcher.getIns().emit(JNSyncFrameEvent.CREATE); + this.onActionInit(); + + case 13: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onInit() { + return _onInit.apply(this, arguments); + } + + return onInit; + }() //开始 + ; + + _proto.onStart = function onStart() { + this.isStart = true; + } //重置 JNSyncFrame + ; + + _proto.onReset = function onReset() { + //通知清除 + EventDispatcher.getIns().emit(JNSyncFrameEvent.CLEAR); //销毁物理 + + PhysicsSystem2D["deleteInstance"](); //销毁Spine + + JNFrameSkeletonSystem.deleteInstance(); //摧毁Tween + + JNFrameTweenSystem.deleteInstance(); //摧毁定时器 + + JNFrameTime.deleteInstance(); //即使摧毁 + + CCObject._deferredDestroy(); + + this.onResetValue(); //通知创建 + + EventDispatcher.getIns().emit(JNSyncFrameEvent.CREATE); + this.onActionInit(); + } //重置数据 + ; + + _proto.onResetValue = function onResetValue() { + this.isStart = false; + this.nFrameQueue = []; + this.nFrameTempQueue = new Map(); + this.nLocalFrame = 0; + this.dtTotal = 0; + this.nSyncActors = []; + this.nSyncID = RandomUtil.Next(0); + this.nRandSyncNumber = RandomUtil.SyncRandom(100); + PhysicsSystem2D.instance.enable = false; + PhysicsSystem2D.instance.autoSimulation = false; + } //通知Action初始化完成 + ; + + _proto.onActionInit = function onActionInit() { + this.nSyncActors.forEach(function (action) { + if (!action.isSyncInitSuccess) { + action.isSyncInitSuccess = true; + action.onSyncInitSuccess(); + } + }); + } //添加同步组件 + ; + + _proto.addSyncActor = function addSyncActor(sync) { + if (this.nSyncActors.indexOf(sync) == -1) { + this.nSyncActors.push(sync); + } + } //销毁同步组件 + ; + + _proto.delSyncActor = function delSyncActor(sync) { + this.nSyncActors.splice(this.nSyncActors.indexOf(sync), 1); + } //更新同步 + ; + + _proto.update = function update(dt) { + if (!this.isStart) return; + this.dtTotal += dt * 1000; + this.dtInputTotal += dt * 1000; + var nSyncTime = this.dyTime(); + + if (nSyncTime) { + while (nSyncTime != 0 && this.dtTotal > nSyncTime) { + this.onUpdate(); + this.dtTotal -= nSyncTime; + nSyncTime = this.dyTime(); + } + } else { + //追帧运行 保持前端 15 帧 刷新 + var endTime = Date.now() + 66; + + while (this.dyTime() == 0 && Date.now() < endTime) { + this.onUpdate(); + } + } //更新输入 + + + if (this.dtInputTotal > this.nSyncTime) { + this.dtInputTotal = 0; + this.onUpdateInput(); + } + } //更新输入 + ; + + _proto.onUpdateInput = function onUpdateInput() { + //帧数据 + var inputs = []; //收集帧数据 + + this.nSyncActors.forEach(function (action) { + if (action.isInput()) { + //如果输入了 + inputs.push({ + nId: action.nId, + input: action.encoder(action.input) + }); + } //清空输入 + + + action.clearInput(); + }); //发送输入 + + inputs.length && this.onSendInput({ + inputs: inputs + }); + } //获取帧数据 + ; + /** + * 接收帧数据 + * @param frame 帧数据 + * @param isLatestData 是否最新的帧数据 + */ + + + _proto.addFrame = function addFrame(info, isLatestData) { + var _this2 = this; + + if (isLatestData === void 0) { + isLatestData = false; + } + + info.index = info.index || 0; + info.messages = info.messages || []; + + if (isLatestData) { + //如果推的帧小于本地帧 则 重开 + if (info.index < this.nLocalFrame) { + this.onReset(); + return; + } + } //我需要的下一帧 + + + var index = this.nLocalFrame + 1; //判断接受的帧是否下一帧 如果不是则加入未列入 + + if (info.index != index) { + this.nFrameTempQueue[info.index] = info; //在未列入中拿到需要的帧 + + var tamp = null; + + if (!(tamp = this.nFrameTempQueue[index])) { + //如果没有则向服务器请求我需要的帧数 + if (!this.isServerData) { + this.isServerData = true; //请求 + + this.onServerData(this.nLocalFrame).then(function (infos) { + //拿到数据 插入 帧列表 + infos.frames.forEach(function (frame) { + if (frame.index > _this2.nLocalFrame) { + _this2.addFrame(frame); + } + }); //结束 + + _this2.isServerData = false; + }); + } + + return; + } else { + info = tamp; + } + } //删除临时帧 + + + this.nFrameTempQueue["delete"](info.index); + this.nLocalFrame = index; //分帧插入 + + this.nFrameQueue.push(info); + + for (var _index = 0; _index < this.nDivideFrame - 1; _index++) { + this.nFrameQueue.push({}); + } + }; + + _proto.dyTime = function dyTime() { + var dt = this.nSyncTime / this.nDivideFrame; + var loop = dt; //大于nMaxFrameBan 进行 追帧 + + if (this.nFrameQueue.length > this.nMaxFrameBan) { + //计算超过的帧数 + var exceed = this.nFrameQueue.length - this.nMaxFrameBan; + var most = this.nMaxFrameLoopBan - this.nMaxFrameBan; + var ldt = (most - exceed) / most * dt; //自适应追帧算法 + + if (exceed <= this.nMaxFrameLoopBan) { + loop = ldt; + } else { + loop = 0; + } + } else { + loop = dt; + } + + return loop; // return dt; + }; + + _proto.onUpdatePhysics = function onUpdatePhysics() { + var dt = this.nSyncTime / this.nDivideFrame / 1000; + this.instance.physicsWorld.step(dt, 10, 10); + this.instance.physicsWorld.syncPhysicsToScene(); // this.instance.enable = true; + // this.instance.autoSimulation = true; + // this.instance.update(dt); + // this.instance.enable = false; + // this.instance.autoSimulation = false; + // // if (this.instance.debugDrawFlags) { + // this.instance.physicsWorld.drawDebug(); + // let canvas = find("Canvas"); + // let physics2dDebugDrawNode = canvas.getChildByName("PHYSICS_2D_DEBUG_DRAW"); + // if (physics2dDebugDrawNode) { + // physics2dDebugDrawNode.layer = 1; + // } + // // } + } //运行帧 + ; + + _proto.onUpdate = function onUpdate() { + var frame = this.nFrameQueue.shift(); + if (!frame) return; // if(frame.index == 115) debugger; + + var dt = this.nSyncTime / this.nDivideFrame; //拆出输入 + + var inputs = {}; + (frame.messages || []).forEach(function (input) { + inputs[input.nId] = input; + }); //更新帧 + + this.nSyncActors.forEach(function (action) { + var input = inputs[action.nId]; + + if (input) { + //解码 + action.onSyncUpdate(dt, frame, action.decoder(input.input)); + return; + } + + action.onSyncUpdate(dt, frame); + }); //运行物理 + + this.onUpdatePhysics(); //运行Spine + + JNFrameSkeletonSystem.getInstance().onUpdate(dt / 1000); //更新Tween + + JNFrameTweenSystem.getInstance().onUpdate(dt); //更新定时器 + + JNFrameTime.getInstance().onUpdate(dt); //即使摧毁 + + CCObject._deferredDestroy(); //通知初始化 + + + this.onActionInit(); + this.nFrameRun = frame.index || this.nFrameRun; + return frame; + }; + + _createClass(JNSyncFrame, [{ + key: "frame", + get: function get() { + return this.nFrameRun; + } + }, { + key: "dt", + get: function get() { + return this.nSyncTime / this.nDivideFrame / 1000; + } + }]); + + return JNSyncFrame; + }(SystemBase); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "c225anFAwNI0KCBbuX8L7G1", "NGameRes", undefined); + + var NGameRes = /*#__PURE__*/function () { + function NGameRes() {} + + NGameRes.load = /*#__PURE__*/function () { + var _load = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(url) { + var _this = this; + + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + return _context2.abrupt("return", new Promise( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(resolve) { + var loadRes; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + loadRes = function _loadRes() { + NGameRes.bundle.load(url, resolve); + }; + + if (!_this.bundle) { + assetManager.loadBundle('ngame_src', function (err, bundle) { + NGameRes.bundle = bundle; + loadRes(); + }); + } else { + loadRes(); + } + + case 2: + case "end": + return _context.stop(); + } + }, _callee); + })))); + + case 1: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + + function load(_x) { + return _load.apply(this, arguments); + } + + return load; + }(); + + NGameRes.loadBundle = /*#__PURE__*/function () { + var _loadBundle = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() { + var _this2 = this; + + return _regeneratorRuntime().wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + return _context4.abrupt("return", new Promise( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(resolve) { + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + if (!_this2.bundle) { + assetManager.loadBundle('ngame_src', function (err, bundle) { + resolve(NGameRes.bundle = bundle); + }); + } else { + resolve(_this2.bundle); + } + + case 1: + case "end": + return _context3.stop(); + } + }, _callee3); + })))); + + case 1: + case "end": + return _context4.stop(); + } + }, _callee4); + })); + + function loadBundle() { + return _loadBundle.apply(this, arguments); + } + + return loadBundle; + }(); + + NGameRes.BindSpriteFrame = /*#__PURE__*/function () { + var _BindSpriteFrame = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(sprite, path) { + return _regeneratorRuntime().wrap(function _callee5$(_context5) { + while (1) switch (_context5.prev = _context5.next) { + case 0: + _context5.next = 2; + return this.loadBundle(); + + case 2: + _context5.sent.load(path, function (err, data) { + sprite.spriteFrame = data; + }); + + case 3: + case "end": + return _context5.stop(); + } + }, _callee5, this); + })); + + function BindSpriteFrame(_x4, _x5) { + return _BindSpriteFrame.apply(this, arguments); + } + + return BindSpriteFrame; + }(); + + return NGameRes; + }(); + + NGameRes.bundle = void 0; + + cclegacy._RF.pop(); + + var _dec$o, _dec2$d, _dec3$5, _dec4$4, _class$o, _class2$9, _descriptor$9, _descriptor2$4, _descriptor3$4; + + cclegacy._RF.push({}, "dcc7dYVLyxK+LNjgpBMDIUi", "JNLayerBase", undefined); + + var ccclass$9 = _decorator.ccclass, + property$4 = _decorator.property; + /** + * JNLayerBase + * UI Base 类 + */ + + var JNLayerBase = (_dec$o = ccclass$9('JNLayerBase'), _dec2$d = property$4(CCBoolean), _dec3$5 = property$4({ + type: CCInteger, + visible: function visible() { + return this.mask; + } + }), _dec4$4 = property$4({ + type: CCBoolean, + visible: function visible() { + return this.mask; + } + }), _dec$o(_class$o = (_class2$9 = /*#__PURE__*/function (_Component) { + _inheritsLoose(JNLayerBase, _Component); + + function JNLayerBase() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "mask", _descriptor$9, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "maskOpcity", _descriptor2$4, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "isClickMaskeClose", _descriptor3$4, _assertThisInitialized(_this)); + + _this.maskNode = void 0; + return _this; + } + + var _proto = JNLayerBase.prototype; //加载 + + _proto.onJNLoad = function onJNLoad(data) { + var _this2 = this; + + if (this.mask) { + var node = new Node("mask"); + var ui = node.addComponent(UITransform); + node.addComponent(BlockInputEvents); + node.layer = this.node.layer; + this.node.addChild(node); + var mask = node.addComponent(Sprite); + mask.color = color(0, 0, 0, this.maskOpcity); + mask.sizeMode = Sprite.SizeMode.CUSTOM; + NGameRes.BindSpriteFrame(mask, "ui/default_sprite_splash/spriteFrame"); + ui.width = 99999; + ui.height = 99999; + node.on(Node.EventType.TOUCH_START, function () { + if (_this2.isClickMaskeClose) _this2.onJNClose(); + }); + node.setSiblingIndex(0); + this.maskNode = node; + } + } //加载动画结束 + ; + + _proto.onJNLoadAnimEnd = function onJNLoadAnimEnd() {} //关闭 + ; + + _proto.onJNClose = function onJNClose() { + if (this.node.isValid) this.node.destroy(); + }; + + return JNLayerBase; + }(Component), (_descriptor$9 = _applyDecoratedDescriptor(_class2$9.prototype, "mask", [_dec2$d], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor2$4 = _applyDecoratedDescriptor(_class2$9.prototype, "maskOpcity", [_dec3$5], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 80; + } + }), _descriptor3$4 = _applyDecoratedDescriptor(_class2$9.prototype, "isClickMaskeClose", [_dec4$4], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + })), _class2$9)) || _class$o); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "9d319eiU1VDuIYjkV2Z7Fi4", "AnimsNodeUtil", undefined); //CC Node 动画工具 + + + var AnimsNodeUtil = /*#__PURE__*/function () { + function AnimsNodeUtil() {} + + AnimsNodeUtil.onEnlarge = function onEnlarge(node, time, info, callback) { + var _tween$to; + + if (time === void 0) { + time = 0.3; + } + + if (info === void 0) { + info = { + key: "scale", + start: v3(0, 0, 0), + end: v3(1, 1, 1) + }; + } + + console.log("AnimsNodeUtil_onEnlarge", node); + node[info.key] = info.start; + tween(node).to(time, (_tween$to = {}, _tween$to[info.key] = info.end, _tween$to), { + onComplete: function onComplete() { + callback && callback(); + } + }).start(); + }; + + AnimsNodeUtil.onSmaller = function onSmaller(node, time, info, callback) { + var _tween$to2; + + if (time === void 0) { + time = 0.3; + } + + if (info === void 0) { + info = { + key: "scale", + start: v3(0, 0, 0), + end: v3(0, 0, 0) + }; + } + + console.log("AnimsNodeUtil_onSmaller", node); + tween(node).to(time, (_tween$to2 = {}, _tween$to2[info.key] = info.end, _tween$to2), { + onComplete: function onComplete() { + callback && callback(); + } + }).start(); + }; + + AnimsNodeUtil.onCubicInOutOpen = function onCubicInOutOpen(node, time, info) { + if (time === void 0) { + time = 0.5; + } + + this.Open("cubicInOut", node, time, info); + }; + + AnimsNodeUtil.onCubicInOutClose = function onCubicInOutClose(node, time, info) { + if (time === void 0) { + time = 0.5; + } + + this.Close("cubicInOut", node, time, info); + }; + + AnimsNodeUtil.onBackOutOpen = function onBackOutOpen(node, time, info) { + if (time === void 0) { + time = 0.5; + } + + this.Open("backOut", node, time, info); + }; + + AnimsNodeUtil.onBackInClose = function onBackInClose(node, time, info) { + if (time === void 0) { + time = 0.5; + } + + this.Close("backIn", node, time, info); + }; + + AnimsNodeUtil.Open = function Open(easing, node, time, info, callback) { + var _tween$to3; + + if (time === void 0) { + time = 0.3; + } + + if (info === void 0) { + info = { + key: "scale", + start: v3(0, 0, 0), + end: v3(1, 1, 1) + }; + } + + console.log("AnimsNodeUtil_Open", node); + node[info.key] = info.start; + tween(node).to(time, (_tween$to3 = {}, _tween$to3[info.key] = info.end, _tween$to3), { + onComplete: function onComplete() { + callback && callback(); + }, + easing: easing + }).start(); + }; + + AnimsNodeUtil.Close = function Close(easing, node, time, info, callback) { + var _tween$to4; + + if (time === void 0) { + time = 0.3; + } + + if (info === void 0) { + info = { + key: "scale", + start: v3(0, 0, 0), + end: v3(0, 0, 0) + }; + } + + console.log("AnimsNodeUtil_Close", node); + tween(node).to(time, (_tween$to4 = {}, _tween$to4[info.key] = info.end, _tween$to4), { + onComplete: function onComplete() { + callback && callback(); + }, + easing: easing + }).start(); + }; + + return AnimsNodeUtil; + }(); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "1b20f8bo8tAN5sIOQ+GEvSr", "JNLayer", undefined); + + var JNLayerAnim = /*#__PURE__*/function (JNLayerAnim) { + JNLayerAnim["Enlarge"] = "Enlarge"; + JNLayerAnim["Smaller"] = "Smaller"; + JNLayerAnim["CubicInOutOpen"] = "CubicInOutOpen"; + JNLayerAnim["CubicInOutClose"] = "CubicInOutClose"; + JNLayerAnim["BackOutOpen"] = "BackOutOpen"; + JNLayerAnim["BackInClose"] = "BackInClose"; + return JNLayerAnim; + }({}); //页面回调生命周期 + + + var JNLayer = /*#__PURE__*/function (_SystemBase) { + _inheritsLoose(JNLayer, _SystemBase); + + function JNLayer() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _SystemBase.call.apply(_SystemBase, [this].concat(args)) || this; //层 + + _this.layers = []; //Node 层 + + _this.layerMap = {}; //根节点 + + _this.root = void 0; //页面 + + _this.views = {}; //当前打开的页面 + + _this.nodes = {}; + return _this; + } + + var _proto = JNLayer.prototype; + + _proto.bind = function bind(root) { + var _this2 = this; + + this.root = root; + this.root.removeAllChildren(); //初始化层 + + this.layers.forEach(function (view) { + // this.root.addChild(); + var node = new Node(view); + _this2.layerMap[view] = node; + var widget = node.addComponent(Widget); + widget.isAlignBottom = true; + widget.isAlignTop = true; + widget.isAlignLeft = true; + widget.isAlignRight = true; + widget.bottom = widget.left = widget.right = widget.top = 0; + + _this2.root.addChild(node); + + widget.updateAlignment(); + }); + } //初始化 + ; + + _proto.onInit = /*#__PURE__*/function () { + var _onInit = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (this.root) { + _context.next = 2; + break; + } + + return _context.abrupt("return"); + + case 2: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onInit() { + return _onInit.apply(this, arguments); + } + + return onInit; + }() //打开页面 + ; + + _proto.Open = /*#__PURE__*/function () { + var _Open = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(key, args, callback) { + var info, prefab, view, _view$getComponent, uiBase, onJNLoad, onJNLoadAnimEnd, onJNClose; + + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + if (args === void 0) { + args = null; + } + + if (callback === void 0) { + callback = {}; + } + + if (!(!key || !(info = this.views[key]))) { + _context2.next = 5; + break; + } + + console.info("JNLayer \u6CA1\u6709 " + key + " \u9875\u9762"); + return _context2.abrupt("return"); + + case 5: + if (!info) { + _context2.next = 14; + break; + } + + _context2.next = 8; + return this.loadPrefab(info); + + case 8: + prefab = _context2.sent; + view = instantiate(prefab); + this.layerMap[info.layer].addChild(view); + (this.nodes[key] || (this.nodes[key] = [])).push(view); + + if (view.getComponent(Widget)) { + (_view$getComponent = view.getComponent(Widget)) == null ? void 0 : _view$getComponent.updateAlignment(); + view.getComponent(Widget).enabled = false; + } + + if (uiBase = view.getComponent(JNLayerBase)) { + //播放动画 + if (info.anims) { + this.onHandleAnim(info.anims, uiBase); + } //打开生命周期 + + + onJNLoad = uiBase.onJNLoad; + + uiBase.onJNLoad = function (args) { + callback.onJNLoad && callback.onJNLoad(args); + onJNLoad.bind(uiBase)(args); + }; //打开动画生命周期 + + + onJNLoadAnimEnd = uiBase.onJNLoadAnimEnd; + + uiBase.onJNLoadAnimEnd = function () { + onJNLoadAnimEnd.bind(uiBase)(args); + + if (view.getComponent(Widget)) { + view.getComponent(Widget).enabled = true; + } + }; //关闭生命周期 + + + onJNClose = uiBase.onJNClose; + + uiBase.onJNClose = function () { + callback.onJNClose && callback.onJNClose(); + onJNClose.bind(uiBase)(); + }; //生命周期 + + + uiBase.onJNLoad(args); + } + + case 14: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + + function Open(_x, _x2, _x3) { + return _Open.apply(this, arguments); + } + + return Open; + }() //打开到关闭 + ; + + _proto.OpenToClose = function OpenToClose(key, args) { + var _this3 = this; + + if (args === void 0) { + args = null; + } + + return new Promise(function (resolve) { + _this3.Open(key, args, { + onJNClose: resolve + }); + }); + } //关闭Node页面 + ; + + _proto.CloseNode = function CloseNode(node) { + if (!node.isValid) return; + + if (node.getComponent(JNLayerBase)) { + node.getComponent(JNLayerBase).onJNClose(); + } else { + node.destroy(); + } //删除记录 + + + Object.values(this.nodes).forEach(function (nodes) { + if (nodes.indexOf(node) >= 0) { + nodes.splice(nodes.indexOf(node), 1); + } + }); + } //关闭 + ; + + _proto.Close = function Close(key) { + var list = this.nodes[key] || (this.nodes[key] = []); + + for (var index = 0; index < list.length; index++) { + var node = list[index]; + + if (node.isValid) { + if (node.getComponent(JNLayerBase)) { + node.getComponent(JNLayerBase).onJNClose(); + } else { + node.destroy(); + } + } + + list.splice(index, 1); + index--; + } + } //处理动画 + ; + + _proto.onHandleAnim = function onHandleAnim(anims, node) { + //显示 + if (anims.front) { + var onJNLoad = node.onJNLoad; + + node.onJNLoad = function (data) { + AnimsNodeUtil["on" + anims.front](this.node, anims.frontTime || 0.5, anims.frontInfo, node.onJNLoadAnimEnd.bind(this)); + onJNLoad.bind(this)(data); + }; + } //关闭 + + + if (anims.back) { + var onJNClose = node.onJNClose; + + node.onJNClose = function (data) { + var _this4 = this; + + AnimsNodeUtil["on" + anims.back](this.node, anims.backTime || 0.5, anims.backInfo); + this.scheduleOnce(function () { + onJNClose.bind(_this4)(data); + }, anims.backTime || 0.5); + }; + } + } //加载页面 + ; + + _proto.loadPrefab = /*#__PURE__*/function () { + var _loadPrefab = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(info) { + var _this5 = this; + + return _regeneratorRuntime().wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + return _context4.abrupt("return", new Promise( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(resolve) { + var res; + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + _context3.next = 2; + return _this5.getBundle(); + + case 2: + res = _context3.sent; + res.load(info.uri, function (error, data) { + return resolve(data); + }); + + case 4: + case "end": + return _context3.stop(); + } + }, _callee3); + })))); + + case 1: + case "end": + return _context4.stop(); + } + }, _callee4); + })); + + function loadPrefab(_x4) { + return _loadPrefab.apply(this, arguments); + } + + return loadPrefab; + }(); + + _proto.getBundle = /*#__PURE__*/function () { + var _getBundle = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() { + return _regeneratorRuntime().wrap(function _callee5$(_context5) { + while (1) switch (_context5.prev = _context5.next) { + case 0: + return _context5.abrupt("return", resources); + + case 1: + case "end": + return _context5.stop(); + } + }, _callee5); + })); + + function getBundle() { + return _getBundle.apply(this, arguments); + } + + return getBundle; + }(); + + return JNLayer; + }(SystemBase); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "d70f4XXAwBAVbHduLz9UWd7", "loader", undefined); + + var loader$1 = /*#__PURE__*/function () { + function loader() {} + + loader.loadurl = /*#__PURE__*/function () { + var _loadurl = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(url, type) { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (type === void 0) { + type = Asset; + } + + return _context.abrupt("return", new Promise(function (resolve, reject) { + assetManager.resources.load(url, type, function (err, res) { + if (err) { + reject(err); + } else { + resolve(res); + } + }); + })); + + case 2: + case "end": + return _context.stop(); + } + }, _callee); + })); + + function loadurl(_x, _x2) { + return _loadurl.apply(this, arguments); + } + + return loadurl; + }(); + + loader.loadlocalCache = function loadlocalCache(path, bundleName) { + var bundle = resources; + + if (bundleName) { + bundle = assetManager.getBundle(bundleName) || bundle; + } + + return bundle.get(path); + }; + + loader.loadlocal = /*#__PURE__*/function () { + var _loadlocal = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(path, bundleName) { + var bundle; + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + if (!bundleName) { + _context2.next = 9; + break; + } + + _context2.next = 3; + return loader.getBundle(bundleName); + + case 3: + bundle = _context2.sent; + + if (!bundle.get(path)) { + _context2.next = 6; + break; + } + + return _context2.abrupt("return", bundle.get(path)); + + case 6: + return _context2.abrupt("return", new Promise(function (resolve, reject) { + bundle.load(path, function (err, res) { + //assets.addRef(); + if (err) { + reject(err); + return; + } + + resolve(res); + }); + })); + + case 9: + if (!resources.get(path)) { + _context2.next = 11; + break; + } + + return _context2.abrupt("return", resources.get(path)); + + case 11: + return _context2.abrupt("return", new Promise(function (resolve, reject) { + resources.load(path, function (err, res) { + if (err) { + reject(err); + } else { + resolve(res); + } + }); + })); + + case 12: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + + function loadlocal(_x3, _x4) { + return _loadlocal.apply(this, arguments); + } + + return loadlocal; + }(); + + loader.loadPrefab = /*#__PURE__*/function () { + var _loadPrefab = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(uiPrefabPath, bundleName) { + var bundle, prefab; + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + bundleName = bundleName || "resources"; + _context3.next = 3; + return loader.getBundle(bundleName); + + case 3: + bundle = _context3.sent; + + if (!bundle.get(uiPrefabPath)) { + _context3.next = 7; + break; + } + + prefab = bundle.get(uiPrefabPath); + return _context3.abrupt("return", instantiate(prefab)); + + case 7: + return _context3.abrupt("return", new Promise(function (res, rej) { + bundle.load(uiPrefabPath, Prefab, function (err, assets) { + //assets.addRef(); + if (err) { + res(null); + return; + } + + res(instantiate(assets)); + }); + })); + + case 8: + case "end": + return _context3.stop(); + } + }, _callee3); + })); + + function loadPrefab(_x5, _x6) { + return _loadPrefab.apply(this, arguments); + } + + return loadPrefab; + }(); + + loader.getBundle = /*#__PURE__*/function () { + var _getBundle = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(bundleName) { + var bundle; + return _regeneratorRuntime().wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + bundle = assetManager.getBundle(bundleName); + + if (!bundle) { + _context4.next = 5; + break; + } + + return _context4.abrupt("return", bundle); + + case 5: + _context4.next = 7; + return loader.loadBundle(bundleName); + + case 7: + return _context4.abrupt("return", _context4.sent); + + case 8: + case "end": + return _context4.stop(); + } + }, _callee4); + })); + + function getBundle(_x7) { + return _getBundle.apply(this, arguments); + } + + return getBundle; + }(); + + loader.loadBundle = /*#__PURE__*/function () { + var _loadBundle = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(bundleName) { + return _regeneratorRuntime().wrap(function _callee5$(_context5) { + while (1) switch (_context5.prev = _context5.next) { + case 0: + return _context5.abrupt("return", new Promise(function (res, rej) { + assetManager.loadBundle(bundleName, function (err, bundle) { + if (!err) { + res(bundle); + } else { + rej(bundle); + } + }); + })); + + case 1: + case "end": + return _context5.stop(); + } + }, _callee5); + })); + + function loadBundle(_x8) { + return _loadBundle.apply(this, arguments); + } + + return loadBundle; + }(); + + loader.release = /*#__PURE__*/function () { + var _release = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(bundleName, path) { + var bundle, asset; + return _regeneratorRuntime().wrap(function _callee6$(_context6) { + while (1) switch (_context6.prev = _context6.next) { + case 0: + if (path === void 0) { + path = null; + } + + bundle = assetManager.getBundle(bundleName); + + if (bundle) { + _context6.next = 4; + break; + } + + return _context6.abrupt("return"); + + case 4: + if (path == null) bundle.releaseAll();else { + asset = bundle.get(path); + + if (asset) { + assetManager.releaseAsset(asset); + } + } + + case 5: + case "end": + return _context6.stop(); + } + }, _callee6); + })); + + function release(_x9, _x10) { + return _release.apply(this, arguments); + } + + return release; + }(); + + return loader; + }(); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "612dc7ThI1OcZZKFoIpVlSo", "JAPI", undefined); + + var JAPIMethod = /*#__PURE__*/function (JAPIMethod) { + JAPIMethod["POST"] = "POST"; + JAPIMethod["GET"] = "GET"; + return JAPIMethod; + }({}); + + var JAPI = /*#__PURE__*/function () { + function JAPI(config) { + if (config === void 0) { + config = {}; + } + + this.config = { + headers: { + "Content-Type": "application/json; charset=utf-8" + } + }; + this.requestInterceptors = []; + this.responseInterceptors = []; + Object.assign(this.config, config); + this.config.baseURL = config.baseURL || ""; + this.config.timeout = config.timeout || 5000; + this.config.headers = config.headers || { + "Content-Type": "application/json; charset=utf-8" + }; + this.config.responseType = config.responseType || "json"; + } + + JAPI.create = function create(config) { + if (config === void 0) { + config = {}; + } + + return new JAPI(config); + }; + + var _proto = JAPI.prototype; + + _proto.post = function post(url, data) { + if (data === void 0) { + data = {}; + } + + var config = Object.assign({}, this.config); + if (!this.onRequestInterceptors(config)) return; + return new Promise(function (resolve, reject) { + JAPI.request("" + config.baseURL + url, JAPIMethod.POST, data, config, resolve, reject); + }); + }; + + JAPI.get = function get(url, data) { + if (data === void 0) { + data = {}; + } + + return new Promise(function (resolve, reject) { + JAPI.request("" + url, JAPIMethod.GET, data, {}, resolve, reject); + }); + }; + + _proto.get = function get(url, data) { + if (data === void 0) { + data = {}; + } + + data.responseType = data.responseType || this.config.responseType; + data.params = data.params || {}; + var config = Object.assign({}, this.config); + config.responseType = data.responseType; + if (!this.onRequestInterceptors(config)) return; + return new Promise(function (resolve, reject) { + JAPI.request("" + config.baseURL + url, JAPIMethod.GET, data, config, resolve, reject); + }); + }; + + _proto.onRequestInterceptors = function onRequestInterceptors(config) { + //执行拦截器 + for (var index = 0; index < this.requestInterceptors.length; index++) { + var inter = this.requestInterceptors[index]; + if (!inter(config)) return false; + } + + return true; + } //请求拦截 + ; + + _proto.addRequestInterceptors = function addRequestInterceptors(inter) { + this.requestInterceptors.push(inter); + } //响应拦截 + ; + + _proto.addResponseInterceptors = function addResponseInterceptors(inter) { + this.responseInterceptors.push(inter); + }; + + JAPI.request = function request(url, method, data, config, resolve, reject) { + if (data === void 0) { + data = {}; + } + + if (config === void 0) { + config = {}; + } + + if (resolve === void 0) { + resolve = function resolve(data) {}; + } + + if (reject === void 0) { + reject = function reject(data) {}; + } + + config.headers = config.headers || {}; + var result = { + data: null + }; + var xhr = new XMLHttpRequest(); + xhr.responseType = config.responseType; + xhr.open(method, url); //设置请求头 + + Object.keys(config.headers).forEach(function (key) { + xhr.setRequestHeader(key, config.headers[key]); + }); //设置超时 + + if (config.timeout) { + xhr.timeout = config.timeout; + + xhr.ontimeout = function () { + console.log("JAPI ontimeout"); + reject(result); + }; + } + + xhr.onloadend = function (data) { + console.log("JAPI onloadend"); + }; + + xhr.onerror = function (data) { + console.log("JAPI onerror"); + reject(result); + }; + + xhr.onreadystatechange = function () { + if (xhr.readyState != 4) return; + + if (xhr.status == 200) { + console.log("JAPI", xhr.response); + + if (xhr.responseType == 'arraybuffer') { + // 加载非文本格式 + result.data = xhr.response; + resolve(result); + return; + } else { + //默认JSON + if (config.responseType == "text") result.data = JSON.parse(xhr.response); + if (config.responseType == "json") result.data = xhr.response; + resolve(result); + return; + } + } + }; + + if (method == JAPIMethod.GET) { + xhr.send(); + } else { + xhr.send(JSON.stringify(data)); + } + }; + + return JAPI; + }(); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "e222cbSaP5J4qhkT4UwKEXW", "JsonUtil", undefined); + /** 数据缓存 */ + + + var data = new Map(); + /** JSON数据表工具 */ + + var JsonUtil = /*#__PURE__*/function () { + function JsonUtil() {} + /** + * 通知资源名从缓存中获取一个Json数据表 + * @param name 资源名 + */ + + + JsonUtil.get = function get(name) { + if (data.has(name)) return data.get(name); + } + /** + * 获取所有Json + */ + ; + + JsonUtil.getAll = function getAll() { + return data; + } + /** + * 通知资源名加载Json数据表 + * @param name 资源名 + * @param callback 资源加载完成回调 + */ + ; + + JsonUtil.load = /*#__PURE__*/function () { + var _load2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_load, callback) { + var json, res, path, _res; + + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (callback === void 0) { + callback = function callback() {}; + } + + if (!data.has(_load.name)) { + _context.next = 6; + break; + } + + callback(data.get(_load.name)); + return _context.abrupt("return", data.get(_load.name)); + + case 6: + json = null; + + if (!_load.isHttp) { + _context.next = 14; + break; + } + + _context.next = 10; + return JAPI.get(_load.path); + + case 10: + res = _context.sent.data; + json = res; + _context.next = 20; + break; + + case 14: + //加载Json文件 + _load.bundle = _load.bundle || 'resources'; + path = _load.path + _load.name; + _context.next = 18; + return loader$1.loadlocal(path, _load.bundle); + + case 18: + _res = _context.sent; + json = _res.json; + + case 20: + json && data.set(_load.name, json); + callback(json); + return _context.abrupt("return", json); + + case 23: + case "end": + return _context.stop(); + } + }, _callee); + })); + + function load(_x, _x2) { + return _load2.apply(this, arguments); + } + + return load; + }() + /** + * 通过指定资源名释放资源 + * @param name 资源名 + */ + ; + + JsonUtil.release = function release(load) { + data["delete"](load.name); + var path = load.path + load.name; + loader$1.release(load.bundle, path); + }; + + return JsonUtil; + }(); + + cclegacy._RF.pop(); + /** + * The Ease class provides a collection of easing functions for use with tween.js. + */ + + + var Easing = Object.freeze({ + Linear: Object.freeze({ + None: function None(amount) { + return amount; + }, + In: function In(amount) { + return this.None(amount); + }, + Out: function Out(amount) { + return this.None(amount); + }, + InOut: function InOut(amount) { + return this.None(amount); + } + }), + Quadratic: Object.freeze({ + In: function In(amount) { + return amount * amount; + }, + Out: function Out(amount) { + return amount * (2 - amount); + }, + InOut: function InOut(amount) { + if ((amount *= 2) < 1) { + return 0.5 * amount * amount; + } + + return -0.5 * (--amount * (amount - 2) - 1); + } + }), + Cubic: Object.freeze({ + In: function In(amount) { + return amount * amount * amount; + }, + Out: function Out(amount) { + return --amount * amount * amount + 1; + }, + InOut: function InOut(amount) { + if ((amount *= 2) < 1) { + return 0.5 * amount * amount * amount; + } + + return 0.5 * ((amount -= 2) * amount * amount + 2); + } + }), + Quartic: Object.freeze({ + In: function In(amount) { + return amount * amount * amount * amount; + }, + Out: function Out(amount) { + return 1 - --amount * amount * amount * amount; + }, + InOut: function InOut(amount) { + if ((amount *= 2) < 1) { + return 0.5 * amount * amount * amount * amount; + } + + return -0.5 * ((amount -= 2) * amount * amount * amount - 2); + } + }), + Quintic: Object.freeze({ + In: function In(amount) { + return amount * amount * amount * amount * amount; + }, + Out: function Out(amount) { + return --amount * amount * amount * amount * amount + 1; + }, + InOut: function InOut(amount) { + if ((amount *= 2) < 1) { + return 0.5 * amount * amount * amount * amount * amount; + } + + return 0.5 * ((amount -= 2) * amount * amount * amount * amount + 2); + } + }), + Sinusoidal: Object.freeze({ + In: function In(amount) { + return 1 - Math.sin((1.0 - amount) * Math.PI / 2); + }, + Out: function Out(amount) { + return Math.sin(amount * Math.PI / 2); + }, + InOut: function InOut(amount) { + return 0.5 * (1 - Math.sin(Math.PI * (0.5 - amount))); + } + }), + Exponential: Object.freeze({ + In: function In(amount) { + return amount === 0 ? 0 : Math.pow(1024, amount - 1); + }, + Out: function Out(amount) { + return amount === 1 ? 1 : 1 - Math.pow(2, -10 * amount); + }, + InOut: function InOut(amount) { + if (amount === 0) { + return 0; + } + + if (amount === 1) { + return 1; + } + + if ((amount *= 2) < 1) { + return 0.5 * Math.pow(1024, amount - 1); + } + + return 0.5 * (-Math.pow(2, -10 * (amount - 1)) + 2); + } + }), + Circular: Object.freeze({ + In: function In(amount) { + return 1 - Math.sqrt(1 - amount * amount); + }, + Out: function Out(amount) { + return Math.sqrt(1 - --amount * amount); + }, + InOut: function InOut(amount) { + if ((amount *= 2) < 1) { + return -0.5 * (Math.sqrt(1 - amount * amount) - 1); + } + + return 0.5 * (Math.sqrt(1 - (amount -= 2) * amount) + 1); + } + }), + Elastic: Object.freeze({ + In: function In(amount) { + if (amount === 0) { + return 0; + } + + if (amount === 1) { + return 1; + } + + return -Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI); + }, + Out: function Out(amount) { + if (amount === 0) { + return 0; + } + + if (amount === 1) { + return 1; + } + + return Math.pow(2, -10 * amount) * Math.sin((amount - 0.1) * 5 * Math.PI) + 1; + }, + InOut: function InOut(amount) { + if (amount === 0) { + return 0; + } + + if (amount === 1) { + return 1; + } + + amount *= 2; + + if (amount < 1) { + return -0.5 * Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI); + } + + return 0.5 * Math.pow(2, -10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI) + 1; + } + }), + Back: Object.freeze({ + In: function In(amount) { + var s = 1.70158; + return amount === 1 ? 1 : amount * amount * ((s + 1) * amount - s); + }, + Out: function Out(amount) { + var s = 1.70158; + return amount === 0 ? 0 : --amount * amount * ((s + 1) * amount + s) + 1; + }, + InOut: function InOut(amount) { + var s = 1.70158 * 1.525; + + if ((amount *= 2) < 1) { + return 0.5 * (amount * amount * ((s + 1) * amount - s)); + } + + return 0.5 * ((amount -= 2) * amount * ((s + 1) * amount + s) + 2); + } + }), + Bounce: Object.freeze({ + In: function In(amount) { + return 1 - Easing.Bounce.Out(1 - amount); + }, + Out: function Out(amount) { + if (amount < 1 / 2.75) { + return 7.5625 * amount * amount; + } else if (amount < 2 / 2.75) { + return 7.5625 * (amount -= 1.5 / 2.75) * amount + 0.75; + } else if (amount < 2.5 / 2.75) { + return 7.5625 * (amount -= 2.25 / 2.75) * amount + 0.9375; + } else { + return 7.5625 * (amount -= 2.625 / 2.75) * amount + 0.984375; + } + }, + InOut: function InOut(amount) { + if (amount < 0.5) { + return Easing.Bounce.In(amount * 2) * 0.5; + } + + return Easing.Bounce.Out(amount * 2 - 1) * 0.5 + 0.5; + } + }), + generatePow: function generatePow(power) { + if (power === void 0) { + power = 4; + } + + power = power < Number.EPSILON ? Number.EPSILON : power; + power = power > 10000 ? 10000 : power; + return { + In: function In(amount) { + return Math.pow(amount, power); + }, + Out: function Out(amount) { + return 1 - Math.pow(1 - amount, power); + }, + InOut: function InOut(amount) { + if (amount < 0.5) { + return Math.pow(amount * 2, power) / 2; + } + + return (1 - Math.pow(2 - amount * 2, power)) / 2 + 0.5; + } + }; + } + }); + + var now = function now() { + return performance.now(); + }; + /** + * Controlling groups of tweens + * + * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components. + * In these cases, you may want to create your own smaller groups of tween + */ + + + var Group = + /** @class */ + function () { + function Group() { + this._tweens = {}; + this._tweensAddedDuringUpdate = {}; + } + + Group.prototype.getAll = function () { + var _this = this; + + return Object.keys(this._tweens).map(function (tweenId) { + return _this._tweens[tweenId]; + }); + }; + + Group.prototype.removeAll = function () { + this._tweens = {}; + }; + + Group.prototype.add = function (tween) { + this._tweens[tween.getId()] = tween; + this._tweensAddedDuringUpdate[tween.getId()] = tween; + }; + + Group.prototype.remove = function (tween) { + delete this._tweens[tween.getId()]; + delete this._tweensAddedDuringUpdate[tween.getId()]; + }; + + Group.prototype.update = function (time, preserve) { + if (time === void 0) { + time = now(); + } + + if (preserve === void 0) { + preserve = false; + } + + var tweenIds = Object.keys(this._tweens); + + if (tweenIds.length === 0) { + return false; + } // Tweens are updated in "batches". If you add a new tween during an + // update, then the new tween will be updated in the next batch. + // If you remove a tween during an update, it may or may not be updated. + // However, if the removed tween was added during the current batch, + // then it will not be updated. + + + while (tweenIds.length > 0) { + this._tweensAddedDuringUpdate = {}; + + for (var i = 0; i < tweenIds.length; i++) { + var tween = this._tweens[tweenIds[i]]; + var autoStart = !preserve; + + if (tween && tween.update(time, autoStart) === false && !preserve) { + delete this._tweens[tweenIds[i]]; + } + } + + tweenIds = Object.keys(this._tweensAddedDuringUpdate); + } + + return true; + }; + + return Group; + }(); + /** + * + */ + + + var Interpolation = { + Linear: function Linear(v, k) { + var m = v.length - 1; + var f = m * k; + var i = Math.floor(f); + var fn = Interpolation.Utils.Linear; + + if (k < 0) { + return fn(v[0], v[1], f); + } + + if (k > 1) { + return fn(v[m], v[m - 1], m - f); + } + + return fn(v[i], v[i + 1 > m ? m : i + 1], f - i); + }, + Bezier: function Bezier(v, k) { + var b = 0; + var n = v.length - 1; + var pw = Math.pow; + var bn = Interpolation.Utils.Bernstein; + + for (var i = 0; i <= n; i++) { + b += pw(1 - k, n - i) * pw(k, i) * v[i] * bn(n, i); + } + + return b; + }, + CatmullRom: function CatmullRom(v, k) { + var m = v.length - 1; + var f = m * k; + var i = Math.floor(f); + var fn = Interpolation.Utils.CatmullRom; + + if (v[0] === v[m]) { + if (k < 0) { + i = Math.floor(f = m * (1 + k)); + } + + return fn(v[(i - 1 + m) % m], v[i], v[(i + 1) % m], v[(i + 2) % m], f - i); + } else { + if (k < 0) { + return v[0] - (fn(v[0], v[0], v[1], v[1], -f) - v[0]); + } + + if (k > 1) { + return v[m] - (fn(v[m], v[m], v[m - 1], v[m - 1], f - m) - v[m]); + } + + return fn(v[i ? i - 1 : 0], v[i], v[m < i + 1 ? m : i + 1], v[m < i + 2 ? m : i + 2], f - i); + } + }, + Utils: { + Linear: function Linear(p0, p1, t) { + return (p1 - p0) * t + p0; + }, + Bernstein: function Bernstein(n, i) { + var fc = Interpolation.Utils.Factorial; + return fc(n) / fc(i) / fc(n - i); + }, + Factorial: function () { + var a = [1]; + return function (n) { + var s = 1; + + if (a[n]) { + return a[n]; + } + + for (var i = n; i > 1; i--) { + s *= i; + } + + a[n] = s; + return s; + }; + }(), + CatmullRom: function CatmullRom(p0, p1, p2, p3, t) { + var v0 = (p2 - p0) * 0.5; + var v1 = (p3 - p1) * 0.5; + var t2 = t * t; + var t3 = t * t2; + return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1; + } + } + }; + /** + * Utils + */ + + var Sequence$1 = + /** @class */ + function () { + function Sequence() {} + + Sequence.nextId = function () { + return Sequence._nextId++; + }; + + Sequence._nextId = 0; + return Sequence; + }(); + + var mainGroup = new Group(); + /** + * Tween.js - Licensed under the MIT license + * https://github.com/tweenjs/tween.js + * ---------------------------------------------- + * + * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors. + * Thank you all, you're awesome! + */ + + var Tween = + /** @class */ + function () { + function Tween(_object, _group) { + if (_group === void 0) { + _group = mainGroup; + } + + this._object = _object; + this._group = _group; + this._isPaused = false; + this._pauseStart = 0; + this._valuesStart = {}; + this._valuesEnd = {}; + this._valuesStartRepeat = {}; + this._duration = 1000; + this._isDynamic = false; + this._initialRepeat = 0; + this._repeat = 0; + this._yoyo = false; + this._isPlaying = false; + this._reversed = false; + this._delayTime = 0; + this._startTime = 0; + this._easingFunction = Easing.Linear.None; + this._interpolationFunction = Interpolation.Linear; // eslint-disable-next-line + + this._chainedTweens = []; + this._onStartCallbackFired = false; + this._onEveryStartCallbackFired = false; + this._id = Sequence$1.nextId(); + this._isChainStopped = false; + this._propertiesAreSetUp = false; + this._goToEnd = false; + } + + Tween.prototype.getId = function () { + return this._id; + }; + + Tween.prototype.isPlaying = function () { + return this._isPlaying; + }; + + Tween.prototype.isPaused = function () { + return this._isPaused; + }; + + Tween.prototype.to = function (target, duration) { + if (duration === void 0) { + duration = 1000; + } + + if (this._isPlaying) throw new Error('Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.'); + this._valuesEnd = target; + this._propertiesAreSetUp = false; + this._duration = duration; + return this; + }; + + Tween.prototype.duration = function (duration) { + if (duration === void 0) { + duration = 1000; + } + + this._duration = duration; + return this; + }; + + Tween.prototype.dynamic = function (dynamic) { + if (dynamic === void 0) { + dynamic = false; + } + + this._isDynamic = dynamic; + return this; + }; + + Tween.prototype.start = function (time, overrideStartingValues) { + if (time === void 0) { + time = now(); + } + + if (overrideStartingValues === void 0) { + overrideStartingValues = false; + } + + if (this._isPlaying) { + return this; + } // eslint-disable-next-line + + + this._group && this._group.add(this); + this._repeat = this._initialRepeat; + + if (this._reversed) { + // If we were reversed (f.e. using the yoyo feature) then we need to + // flip the tween direction back to forward. + this._reversed = false; + + for (var property in this._valuesStartRepeat) { + this._swapEndStartRepeatValues(property); + + this._valuesStart[property] = this._valuesStartRepeat[property]; + } + } + + this._isPlaying = true; + this._isPaused = false; + this._onStartCallbackFired = false; + this._onEveryStartCallbackFired = false; + this._isChainStopped = false; + this._startTime = time; + this._startTime += this._delayTime; + + if (!this._propertiesAreSetUp || overrideStartingValues) { + this._propertiesAreSetUp = true; // If dynamic is not enabled, clone the end values instead of using the passed-in end values. + + if (!this._isDynamic) { + var tmp = {}; + + for (var prop in this._valuesEnd) tmp[prop] = this._valuesEnd[prop]; + + this._valuesEnd = tmp; + } + + this._setupProperties(this._object, this._valuesStart, this._valuesEnd, this._valuesStartRepeat, overrideStartingValues); + } + + return this; + }; + + Tween.prototype.startFromCurrentValues = function (time) { + return this.start(time, true); + }; + + Tween.prototype._setupProperties = function (_object, _valuesStart, _valuesEnd, _valuesStartRepeat, overrideStartingValues) { + for (var property in _valuesEnd) { + var startValue = _object[property]; + var startValueIsArray = Array.isArray(startValue); + var propType = startValueIsArray ? 'array' : typeof startValue; + var isInterpolationList = !startValueIsArray && Array.isArray(_valuesEnd[property]); // If `to()` specifies a property that doesn't exist in the source object, + // we should not set that property in the object + + if (propType === 'undefined' || propType === 'function') { + continue; + } // Check if an Array was provided as property value + + + if (isInterpolationList) { + var endValues = _valuesEnd[property]; + + if (endValues.length === 0) { + continue; + } // Handle an array of relative values. + // Creates a local copy of the Array with the start value at the front + + + var temp = [startValue]; + + for (var i = 0, l = endValues.length; i < l; i += 1) { + var value = this._handleRelativeValue(startValue, endValues[i]); + + if (isNaN(value)) { + isInterpolationList = false; + console.warn('Found invalid interpolation list. Skipping.'); + break; + } + + temp.push(value); + } + + if (isInterpolationList) { + // if (_valuesStart[property] === undefined) { // handle end values only the first time. NOT NEEDED? setupProperties is now guarded by _propertiesAreSetUp. + _valuesEnd[property] = temp; // } + } + } // handle the deepness of the values + + + if ((propType === 'object' || startValueIsArray) && startValue && !isInterpolationList) { + _valuesStart[property] = startValueIsArray ? [] : {}; + var nestedObject = startValue; + + for (var prop in nestedObject) { + _valuesStart[property][prop] = nestedObject[prop]; + } // TODO? repeat nested values? And yoyo? And array values? + + + _valuesStartRepeat[property] = startValueIsArray ? [] : {}; + var endValues = _valuesEnd[property]; // If dynamic is not enabled, clone the end values instead of using the passed-in end values. + + if (!this._isDynamic) { + var tmp = {}; + + for (var prop in endValues) tmp[prop] = endValues[prop]; + + _valuesEnd[property] = endValues = tmp; + } + + this._setupProperties(nestedObject, _valuesStart[property], endValues, _valuesStartRepeat[property], overrideStartingValues); + } else { + // Save the starting value, but only once unless override is requested. + if (typeof _valuesStart[property] === 'undefined' || overrideStartingValues) { + _valuesStart[property] = startValue; + } + + if (!startValueIsArray) { + // eslint-disable-next-line + // @ts-ignore FIXME? + _valuesStart[property] *= 1.0; // Ensures we're using numbers, not strings + } + + if (isInterpolationList) { + // eslint-disable-next-line + // @ts-ignore FIXME? + _valuesStartRepeat[property] = _valuesEnd[property].slice().reverse(); + } else { + _valuesStartRepeat[property] = _valuesStart[property] || 0; + } + } + } + }; + + Tween.prototype.stop = function () { + if (!this._isChainStopped) { + this._isChainStopped = true; + this.stopChainedTweens(); + } + + if (!this._isPlaying) { + return this; + } // eslint-disable-next-line + + + this._group && this._group.remove(this); + this._isPlaying = false; + this._isPaused = false; + + if (this._onStopCallback) { + this._onStopCallback(this._object); + } + + return this; + }; + + Tween.prototype.end = function () { + this._goToEnd = true; + this.update(Infinity); + return this; + }; + + Tween.prototype.pause = function (time) { + if (time === void 0) { + time = now(); + } + + if (this._isPaused || !this._isPlaying) { + return this; + } + + this._isPaused = true; + this._pauseStart = time; // eslint-disable-next-line + + this._group && this._group.remove(this); + return this; + }; + + Tween.prototype.resume = function (time) { + if (time === void 0) { + time = now(); + } + + if (!this._isPaused || !this._isPlaying) { + return this; + } + + this._isPaused = false; + this._startTime += time - this._pauseStart; + this._pauseStart = 0; // eslint-disable-next-line + + this._group && this._group.add(this); + return this; + }; + + Tween.prototype.stopChainedTweens = function () { + for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) { + this._chainedTweens[i].stop(); + } + + return this; + }; + + Tween.prototype.group = function (group) { + if (group === void 0) { + group = mainGroup; + } + + this._group = group; + return this; + }; + + Tween.prototype.delay = function (amount) { + if (amount === void 0) { + amount = 0; + } + + this._delayTime = amount; + return this; + }; + + Tween.prototype.repeat = function (times) { + if (times === void 0) { + times = 0; + } + + this._initialRepeat = times; + this._repeat = times; + return this; + }; + + Tween.prototype.repeatDelay = function (amount) { + this._repeatDelayTime = amount; + return this; + }; + + Tween.prototype.yoyo = function (yoyo) { + if (yoyo === void 0) { + yoyo = false; + } + + this._yoyo = yoyo; + return this; + }; + + Tween.prototype.easing = function (easingFunction) { + if (easingFunction === void 0) { + easingFunction = Easing.Linear.None; + } + + this._easingFunction = easingFunction; + return this; + }; + + Tween.prototype.interpolation = function (interpolationFunction) { + if (interpolationFunction === void 0) { + interpolationFunction = Interpolation.Linear; + } + + this._interpolationFunction = interpolationFunction; + return this; + }; // eslint-disable-next-line + + + Tween.prototype.chain = function () { + var tweens = []; + + for (var _i = 0; _i < arguments.length; _i++) { + tweens[_i] = arguments[_i]; + } + + this._chainedTweens = tweens; + return this; + }; + + Tween.prototype.onStart = function (callback) { + this._onStartCallback = callback; + return this; + }; + + Tween.prototype.onEveryStart = function (callback) { + this._onEveryStartCallback = callback; + return this; + }; + + Tween.prototype.onUpdate = function (callback) { + this._onUpdateCallback = callback; + return this; + }; + + Tween.prototype.onRepeat = function (callback) { + this._onRepeatCallback = callback; + return this; + }; + + Tween.prototype.onComplete = function (callback) { + this._onCompleteCallback = callback; + return this; + }; + + Tween.prototype.onStop = function (callback) { + this._onStopCallback = callback; + return this; + }; + /** + * @returns true if the tween is still playing after the update, false + * otherwise (calling update on a paused tween still returns true because + * it is still playing, just paused). + */ + + + Tween.prototype.update = function (time, autoStart) { + if (time === void 0) { + time = now(); + } + + if (autoStart === void 0) { + autoStart = true; + } + + if (this._isPaused) return true; + var property; + var elapsed; + var endTime = this._startTime + this._duration; + + if (!this._goToEnd && !this._isPlaying) { + if (time > endTime) return false; + if (autoStart) this.start(time, true); + } + + this._goToEnd = false; + + if (time < this._startTime) { + return true; + } + + if (this._onStartCallbackFired === false) { + if (this._onStartCallback) { + this._onStartCallback(this._object); + } + + this._onStartCallbackFired = true; + } + + if (this._onEveryStartCallbackFired === false) { + if (this._onEveryStartCallback) { + this._onEveryStartCallback(this._object); + } + + this._onEveryStartCallbackFired = true; + } + + elapsed = (time - this._startTime) / this._duration; + elapsed = this._duration === 0 || elapsed > 1 ? 1 : elapsed; + + var value = this._easingFunction(elapsed); // properties transformations + + + this._updateProperties(this._object, this._valuesStart, this._valuesEnd, value); + + if (this._onUpdateCallback) { + this._onUpdateCallback(this._object, elapsed); + } + + if (elapsed === 1) { + if (this._repeat > 0) { + if (isFinite(this._repeat)) { + this._repeat--; + } // Reassign starting values, restart by making startTime = now + + + for (property in this._valuesStartRepeat) { + if (!this._yoyo && typeof this._valuesEnd[property] === 'string') { + this._valuesStartRepeat[property] = // eslint-disable-next-line + // @ts-ignore FIXME? + this._valuesStartRepeat[property] + parseFloat(this._valuesEnd[property]); + } + + if (this._yoyo) { + this._swapEndStartRepeatValues(property); + } + + this._valuesStart[property] = this._valuesStartRepeat[property]; + } + + if (this._yoyo) { + this._reversed = !this._reversed; + } + + if (this._repeatDelayTime !== undefined) { + this._startTime = time + this._repeatDelayTime; + } else { + this._startTime = time + this._delayTime; + } + + if (this._onRepeatCallback) { + this._onRepeatCallback(this._object); + } + + this._onEveryStartCallbackFired = false; + return true; + } else { + if (this._onCompleteCallback) { + this._onCompleteCallback(this._object); + } + + for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) { + // Make the chained tweens start exactly at the time they should, + // even if the `update()` method was called way past the duration of the tween + this._chainedTweens[i].start(this._startTime + this._duration, false); + } + + this._isPlaying = false; + return false; + } + } + + return true; + }; + + Tween.prototype._updateProperties = function (_object, _valuesStart, _valuesEnd, value) { + for (var property in _valuesEnd) { + // Don't update properties that do not exist in the source object + if (_valuesStart[property] === undefined) { + continue; + } + + var start = _valuesStart[property] || 0; + var end = _valuesEnd[property]; + var startIsArray = Array.isArray(_object[property]); + var endIsArray = Array.isArray(end); + var isInterpolationList = !startIsArray && endIsArray; + + if (isInterpolationList) { + _object[property] = this._interpolationFunction(end, value); + } else if (typeof end === 'object' && end) { + // eslint-disable-next-line + // @ts-ignore FIXME? + this._updateProperties(_object[property], start, end, value); + } else { + // Parses relative end values with start as base (e.g.: +10, -3) + end = this._handleRelativeValue(start, end); // Protect against non numeric properties. + + if (typeof end === 'number') { + // eslint-disable-next-line + // @ts-ignore FIXME? + _object[property] = start + (end - start) * value; + } + } + } + }; + + Tween.prototype._handleRelativeValue = function (start, end) { + if (typeof end !== 'string') { + return end; + } + + if (end.charAt(0) === '+' || end.charAt(0) === '-') { + return start + parseFloat(end); + } + + return parseFloat(end); + }; + + Tween.prototype._swapEndStartRepeatValues = function (property) { + var tmp = this._valuesStartRepeat[property]; + var endValue = this._valuesEnd[property]; + + if (typeof endValue === 'string') { + this._valuesStartRepeat[property] = this._valuesStartRepeat[property] + parseFloat(endValue); + } else { + this._valuesStartRepeat[property] = this._valuesEnd[property]; + } + + this._valuesEnd[property] = tmp; + }; + + return Tween; + }(); + /** + * Controlling groups of tweens + * + * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components. + * In these cases, you may want to create your own smaller groups of tweens. + */ + + + var TWEEN = mainGroup; // This is the best way to export things in a way that's compatible with both ES + // Modules and CommonJS, without build hacks, and so as not to break the + // existing API. + // https://github.com/rollup/rollup/issues/1961#issuecomment-423037881 + + var getAll = TWEEN.getAll.bind(TWEEN); + var removeAll = TWEEN.removeAll.bind(TWEEN); + var add = TWEEN.add.bind(TWEEN); + var remove = TWEEN.remove.bind(TWEEN); + var update = TWEEN.update.bind(TWEEN); + + cclegacy._RF.push({}, "af5886sl8VPnoWB+INr7Cqa", "JNFrameTween", undefined); + + var JNFrameTween = /*#__PURE__*/function (_Tween) { + _inheritsLoose(JNFrameTween, _Tween); + + var _proto = JNFrameTween.prototype; //是否Node可用 + + _proto.isNodeValid = function isNodeValid() { + if (!this.node) return true; + return this.node.isValid; + }; + + function JNFrameTween(_object, node, _group) { + var _this; + + _this = _Tween.call(this, _object, _group) || this; + _this.node = void 0; + _this.node = node; + return _this; + } + + _proto.start = function start(time, overrideStartingValues) { + if (!this.isNodeValid) return this; + time = JNFrameTweenSystem.getInstance().addTime; + JNFrameTweenSystem.getInstance().addTween(this); + + _Tween.prototype.start.call(this, time, overrideStartingValues); + + return this; + }; + + _proto.update = function update(time, autoStart) { + var bool = _Tween.prototype.update.call(this, time, autoStart); + + if (!bool && JNFrameTweenSystem.getInstance().hasTween(this) || !this.isNodeValid) { + JNFrameTweenSystem.getInstance().delTween(this); + } + + return bool; + }; + + _proto.stop = function stop() { + _Tween.prototype.stop.call(this); + + if (JNFrameTweenSystem.getInstance().hasTween(this)) { + JNFrameTweenSystem.getInstance().delTween(this); + } + + return this; + }; + + return JNFrameTween; + }(Tween); + + function JTween(data, node) { + return new JNFrameTween(data, node); + } + + var JEasing = Easing; + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "5a9e0xvXXdDkoFmTsVtmxi8", "JNSyncFrameComponent", undefined); + + var JNSyncFrameComponent = /*#__PURE__*/function (_Component) { + _inheritsLoose(JNSyncFrameComponent, _Component); + + function JNSyncFrameComponent() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this._nId = void 0; + _this._input = void 0; //是否初始化完成 + + _this.isSyncInitSuccess = false; + return _this; + } + + var _proto = JNSyncFrameComponent.prototype; //清空输入 + + _proto.clearInput = function clearInput() { + this._input = null; + } //判断是否输入 + ; + + _proto.isInput = function isInput() { + return !(!this._input || Object.keys(this._input).length == 0); + }; //初始化完成 + + + _proto.onSyncInitSuccess = function onSyncInitSuccess() {} //帧同步 + ; + + _proto.onLoad = function onLoad() { + //将组件添加到 JNSyncFrame + this._nId = this.getSync().nSyncID(); + this.getSync().addSyncActor(this); + this.onSyncLoad(); + } //解析 + ; + + _proto.decoder = function decoder(bytes) { + return JSON.parse(new TextDecoder().decode(bytes)); + } //编码 + ; + + _proto.encoder = function encoder(input) { + return new TextEncoder().encode(JSON.stringify(input)); + }; + + _proto.JTween = function JTween(data) { + return new JNFrameTween(data, this.node); + } //销毁 + ; + + _proto.onDestroy = function onDestroy() { + this.getSync().delSyncActor(this); + }; + + _createClass(JNSyncFrameComponent, [{ + key: "input", + get: function get() { + if (!this._input) { + //初始化一个输入 + this._input = {}; + } + + return this._input; + } + }, { + key: "nId", + get: function get() { + return this._nId; + } + }]); + + return JNSyncFrameComponent; + }(Component); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "b64dbKTho9J9aj21aGu9sfD", "JNSyncFrameProtoComponent", undefined); + + var JNSyncFrameProtoComponent = /*#__PURE__*/function (_JNSyncFrameComponent) { + _inheritsLoose(JNSyncFrameProtoComponent, _JNSyncFrameComponent); + + function JNSyncFrameProtoComponent() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _JNSyncFrameComponent.call.apply(_JNSyncFrameComponent, [this].concat(args)) || this; + _this.TYPE = void 0; + return _this; + } + + var _proto = JNSyncFrameProtoComponent.prototype; + + _proto.onLoad = function onLoad() { + console.log("this.getClassName()", this.getClassName()); + + if (this.getClassName()) { + this.TYPE = NGameMessage.getIns().getType(this.getClassName()); + } + + _JNSyncFrameComponent.prototype.onLoad.call(this); + }; + + _proto.getClassName = function getClassName() { + return null; + }; //解析 + + + _proto.decoder = function decoder(bytes) { + if (this.TYPE) { + return this.TYPE.decode(bytes); + } else { + return {}; + } + } //编码 + ; + + _proto.encoder = function encoder(input) { + return this.TYPE.encode(input).finish(); + }; + + return JNSyncFrameProtoComponent; + }(JNSyncFrameComponent); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "1dcadbI3X5NMK09LZjh6fSN", "JNComponent", undefined); //重写UI Base + + + var JNGLayerBase = /*#__PURE__*/function (_JNLayerBase) { + _inheritsLoose(JNGLayerBase, _JNLayerBase); + + function JNGLayerBase() { + return _JNLayerBase.apply(this, arguments) || this; + } + + var _proto = JNGLayerBase.prototype; + + _proto.close = function close() { + console.log("close"); + app.layer.CloseNode(this.node); + }; + + return JNGLayerBase; + }(JNLayerBase); //重写Sync Base + + + var JNGSyncBase = /*#__PURE__*/function (_JNSyncFrameComponent) { + _inheritsLoose(JNGSyncBase, _JNSyncFrameComponent); + + function JNGSyncBase() { + return _JNSyncFrameComponent.apply(this, arguments) || this; + } + + var _proto2 = JNGSyncBase.prototype; + + _proto2.onSyncLoad = function onSyncLoad() {}; + + _proto2.onSyncUpdate = function onSyncUpdate(dt, frame, input) {}; + + _proto2.getSync = function getSync() { + return app.sync; + }; + + return JNGSyncBase; + }(JNSyncFrameComponent); //重写Sync Proto Base + + + var JNGSyncProtoBase = /*#__PURE__*/function (_JNSyncFrameProtoComp) { + _inheritsLoose(JNGSyncProtoBase, _JNSyncFrameProtoComp); + + function JNGSyncProtoBase() { + return _JNSyncFrameProtoComp.apply(this, arguments) || this; + } + + var _proto3 = JNGSyncProtoBase.prototype; + + _proto3.onSyncLoad = function onSyncLoad() {}; + + _proto3.onSyncUpdate = function onSyncUpdate(dt, frame, input) {}; + + _proto3.getSync = function getSync() { + return app.sync; + }; + + return JNGSyncProtoBase; + }(JNSyncFrameProtoComponent); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "465ebGO6ExMv5MPlJDF9RUQ", "GObject", undefined); + + var GTowards = /*#__PURE__*/function (GTowards) { + GTowards[GTowards["RIGHT"] = 0] = "RIGHT"; + GTowards[GTowards["LEFT"] = 1] = "LEFT"; + return GTowards; + }({}); + + var GObject = /*#__PURE__*/function (_JNGSyncProtoBase) { + _inheritsLoose(GObject, _JNGSyncProtoBase); + + function GObject() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _JNGSyncProtoBase.call.apply(_JNGSyncProtoBase, [this].concat(args)) || this; //当前模式 + + _this._mode = void 0; //是否镜像 + + _this._isMirror = false; + return _this; + } //设置镜像 + + + GObject.SetMirror = function SetMirror(role, flipX, flipY) { + if (flipX === void 0) { + flipX = true; + } + + if (flipY === void 0) { + flipY = false; + } + + var node = role.node; + node.setScale(flipX ? -Math.abs(node.scale.x) : Math.abs(node.scale.x), flipY ? -Math.abs(node.scale.y) : Math.abs(node.scale.y)); + } //获取v2世界坐标 + ; + + var _proto = GObject.prototype; //向后添加距离 + + _proto.getWorldBackLen = function getWorldBackLen(add) { + if (this.isMirror) { + return this.v2World.add(add); + } else { + add.y = 0 - add.y; + return this.v2World.subtract(add); + } + } //设置朝向 + ; + + _proto.setTowards = function setTowards(towards) { + if (towards == GTowards.LEFT) { + this.isMirror = true; + } else { + this.isMirror = false; + } + } //镜像值处理 + ; + + _proto.getMirrorValue = function getMirrorValue(value) { + if (this.isMirror) { + return value * -1; + } else { + return value; + } + }; + + _createClass(GObject, [{ + key: "isMirror", + get: function get() { + return this._isMirror; + }, + set: function set(value) { + if (value) { + GObject.SetMirror(this); + } else { + GObject.SetMirror(this, false); + } + + this._isMirror = value; + } + }, { + key: "mode", + get: function get() { + return this._mode; + }, + set: function set(value) { + this._mode = value; + } + }, { + key: "v2World", + get: function get() { + var world = this.node.worldPosition; + return v2(world.x, world.y); + } + }]); + + return GObject; + }(JNGSyncProtoBase); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "4ec90lxNMhHRrDGry2/sj7E", "GBaseMode", undefined); + + var GBaseMode = /*#__PURE__*/function (_GObject) { + _inheritsLoose(GBaseMode, _GObject); + + function GBaseMode() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _GObject.call.apply(_GObject, [this].concat(args)) || this; //场景相机 + + _this.camera = void 0; //模式数据 + + _this.data = void 0; + return _this; + } + + var _proto = GBaseMode.prototype; //添加对象到场景中 + + _proto.addGObject = function addGObject(obj, pos) { + obj.mode = this; + this.scene.addChild(obj.node); + + if (pos) { + obj.node.setWorldPosition(v3(pos.x, pos.y, 0)); + } + } //添加Node到场景中 + ; + + _proto.addGNode = function addGNode(obj, pos) { + this.scene.addChild(obj); + + if (pos) { + obj.setWorldPosition(v3(pos.x, pos.y, 0)); + } + } //结束场景 + ; + + _proto.Close = function Close() { + GBattleModeManager.getIns().Close(); + }; + + _proto.onSyncUpdate = function onSyncUpdate(dt, frame, input) { + //重置 场景中的层级 + [].concat(this.scene.children).sort(function (node1, node2) { + return node2.worldPosition.y - node1.worldPosition.y; + }).forEach(function (node, index) { + node.setSiblingIndex(index); + }); + }; + + _createClass(GBaseMode, [{ + key: "scene", + get: function get() { + return this.node; + } + }]); + + return GBaseMode; + }(GObject); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "9e451PIj11Pt6IQEG1Q1KfG", "GBattleModeManager", undefined); + + var BattleMode = /*#__PURE__*/function (BattleMode) { + BattleMode[BattleMode["OnHook"] = 0] = "OnHook"; + BattleMode[BattleMode["PVP"] = 1] = "PVP"; + return BattleMode; + }({}); //全局战斗模式管理器 + + + var GBattleModeManager = /*#__PURE__*/function (_Singleton) { + _inheritsLoose(GBattleModeManager, _Singleton); + + function GBattleModeManager() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Singleton.call.apply(_Singleton, [this].concat(args)) || this; //模式预制体 + + _this.modes = []; //场景相机 + + _this.camera = void 0; //世界场景Root + + _this.root = void 0; //是否初始化 + + _this.isInit = false; //当前模式 + + _this.current = null; //是否自动退帧 + + _this.isAuto = false; //自动推帧间隔 + + _this.autoTime = 0; //默认模式 + + _this["default"] = BattleMode.OnHook; //默认无限模式 + //当前帧不切换模式 + + _this.frameNoSwitch = false; //模式数据 + + _this.data = void 0; + return _this; + } + + var _proto = GBattleModeManager.prototype; //初始化管理器 + + _proto.onInit = /*#__PURE__*/function () { + var _onInit = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(info) { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + this.modes = info.modes || []; + this.camera = info.camera; + this.root = info.root; //监听帧同步 世界创建逻辑 + + app.event.on(JNSyncFrameEvent.CLEAR, this.clear, this); + app.event.on(JNSyncFrameEvent.CREATE, this.create, this); + this.isInit = true; + + case 6: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onInit(_x) { + return _onInit.apply(this, arguments); + } + + return onInit; + }() //打开指定模式 + ; + + _proto.Open = /*#__PURE__*/function () { + var _Open = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(mode, isAuto, data) { + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + if (mode === void 0) { + mode = null; + } + + if (isAuto === void 0) { + isAuto = false; + } + + if (data === void 0) { + data = this.data; + } + + this.data = data; + + if (!(!this.current && mode == null)) { + _context2.next = 10; + break; + } + + _context2.next = 7; + return this.Open(this["default"], true, data); + + case 7: + return _context2.abrupt("return"); + + case 10: + if (!(mode == null)) { + _context2.next = 12; + break; + } + + return _context2.abrupt("return"); + + case 12: + this.current = mode; + this.setAuto(isAuto); + app.sync.onReset(); + app.sync.onStart(); + + case 16: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + + function Open(_x2, _x3, _x4) { + return _Open.apply(this, arguments); + } + + return Open; + }() //关闭当前模式 + ; + + _proto.Close = /*#__PURE__*/function () { + var _Close = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() { + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + //主动调用场景销毁 + app.sync.onReset(); + this.current = null; + this.frameNoSwitch = true; + + case 3: + case "end": + return _context3.stop(); + } + }, _callee3, this); + })); + + function Close() { + return _Close.apply(this, arguments); + } + + return Close; + }() //设置自动推帧 ( 帧不由addFrame控制 管理器自动推帧) + ; + + _proto.setAuto = function setAuto(is) { + this.isAuto = is; + this.autoTime = 0; + } //清除当前模式 + ; + + _proto.clear = function clear() { + if (!this.isInit) return; + this.root.destroyAllChildren(); + } //创建当前模式 + ; + + _proto.create = function create() { + if (!this.isInit || this.current == null) return; + var mode = instantiate(this.modes[this.current]); + mode.getComponent(GBaseMode).camera = this.camera; + mode.getComponent(GBaseMode).data = this.data; + this.root.addChild(mode); + } //向场景推帧 + ; + + _proto.addFrame = function addFrame(info) { + if (this.isAuto) return; //如果是自动推帧则返回 + + app.sync.addFrame(info, true); + } //管理器更新 + ; + + _proto.onUpdate = function onUpdate(dt) { + //更新帧同步 + app.sync.update(dt); //自动推帧 + + this.onAutoFrame(dt); //如果当前模式是空则默认模式 + + if (this.current == null && !this.frameNoSwitch) { + this.Open(); + } + + this.frameNoSwitch = false; + } //自动推帧 + ; + + _proto.onAutoFrame = function onAutoFrame(dt) { + if (!this.isAuto) return; + this.autoTime += dt * 1000; //获取当前帧同步的帧数推空帧 + + if (app.sync.nSyncTime < this.autoTime) { + //如果事件够则推帧 + this.autoTime -= app.sync.nSyncTime; + app.sync.addFrame({ + index: app.sync.nLocalFrame + 1 + }); + } + }; + + return GBattleModeManager; + }(Singleton); + + cclegacy._RF.pop(); + + var _UISystemConfig, _UIMainConfig, _UINoviceConfig, _UIGModeConfig, _extends2; + + cclegacy._RF.push({}, "08b7e3BKnhOJp3kLeQaOsG9", "UIConfig", undefined); + + var GLayer = /*#__PURE__*/function (GLayer) { + GLayer["View"] = "View"; + GLayer["Popup"] = "Popup"; + GLayer["Tips"] = "Tips"; + return GLayer; + }({}); + + var GUI = /*#__PURE__*/function (GUI) { + GUI["Login"] = "Login"; + GUI["Loading"] = "Loading"; + GUI["Tips"] = "Tips"; + GUI["SelectionBox"] = "SelectionBox"; + GUI["NoviceNamingView"] = "NoviceNamingView"; + GUI["NoviceSelectPetView"] = "NoviceSelectPetView"; + GUI["MainChat"] = "MainChat"; + GUI["IntoBattleView"] = "IntoBattleView"; + GUI["PVPModeMatchView"] = "PVPModeMatchView"; + GUI["Home"] = "Home"; + GUI["Main"] = "Main"; + return GUI; + }({}); //主页面2 + //常用动画 + + + var BackOutScale = { + front: JNLayerAnim.BackOutOpen, + back: JNLayerAnim.BackInClose + }; //系统UI + + var UISystemConfig = (_UISystemConfig = {}, _UISystemConfig[GUI.Tips] = { + layer: GLayer.Tips, + uri: "prefab/ui/系统页面/提示/TipsView", + anims: BackOutScale + }, _UISystemConfig[GUI.SelectionBox] = { + layer: GLayer.Tips, + uri: "prefab/ui/系统页面/选择提示/SelectionBox", + anims: BackOutScale + }, _UISystemConfig[GUI.Login] = { + layer: GLayer.Popup, + uri: "prefab/ui/系统页面/LoginView", + anims: BackOutScale + }, _UISystemConfig[GUI.Loading] = { + layer: GLayer.View, + uri: "prefab/ui/加载页面/LoadingView", + anims: { + back: JNLayerAnim.Smaller, + backInfo: { + key: "position", + start: v3(0, 0, 0), + end: v3(-720, 0, 0) + } + } + }, _UISystemConfig); //主页UI + + var UIMainConfig = (_UIMainConfig = {}, _UIMainConfig[GUI.MainChat] = { + layer: GLayer.Popup, + uri: "prefab/ui/主页/聊天/MainChatView", + anims: { + front: JNLayerAnim.Enlarge, + back: JNLayerAnim.Smaller, + frontInfo: { + key: "position", + start: v3(0, -1280, 0), + end: v3(0, 0, 0) + }, + backInfo: { + key: "position", + start: v3(0, 0, 0), + end: v3(0, -1280, 0) + } + } + }, _UIMainConfig[GUI.IntoBattleView] = { + layer: GLayer.Popup, + uri: "prefab/ui/阵法/阵法选择页面", + anims: BackOutScale + }, _UIMainConfig); //新手引导页面 + + var UINoviceConfig = (_UINoviceConfig = {}, _UINoviceConfig[GUI.NoviceNamingView] = { + layer: GLayer.Popup, + uri: "prefab/ui/新手引导页面/NoviceNamingView", + anims: BackOutScale + }, _UINoviceConfig[GUI.NoviceSelectPetView] = { + layer: GLayer.Popup, + uri: "prefab/ui/新手引导页面/NoviceSelectPetView", + anims: BackOutScale + }, _UINoviceConfig); //游戏模式页面 + + var UIGModeConfig = (_UIGModeConfig = {}, _UIGModeConfig[GUI.PVPModeMatchView] = { + layer: GLayer.Popup, + uri: "prefab/ui/模式/PVP/PVP匹配页面", + anims: BackOutScale + }, _UIGModeConfig); + + var UIConfig = _extends((_extends2 = {}, _extends2[GUI.Home] = { + layer: GLayer.View, + uri: "prefab/ui/主页/HomeView", + anims: { + front: JNLayerAnim.Enlarge, + back: JNLayerAnim.Smaller, + frontInfo: { + key: "position", + start: v3(720, 0, 0), + end: v3(0, 0, 0) + }, + backInfo: { + key: "position", + start: v3(0, 0, 0), + end: v3(-720, 0, 0) + } + } + }, _extends2[GUI.Main] = { + layer: GLayer.View, + uri: "prefab/ui/主页/MainView", + anims: { + front: JNLayerAnim.Enlarge, + back: JNLayerAnim.Smaller, + frontInfo: { + key: "position", + start: v3(720, 0, 0), + end: v3(0, 0, 0) + }, + backInfo: { + key: "position", + start: v3(0, 0, 0), + end: v3(-720, 0, 0) + } + } + }, _extends2), UISystemConfig, UINoviceConfig, UIMainConfig, UIGModeConfig); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "6a51fjqlUJAq5TKjkfOS8Pc", "JLoaderSystem", undefined); //加载指定包 + + + var JLoaderSystem = /*#__PURE__*/function (_SystemBase) { + _inheritsLoose(JLoaderSystem, _SystemBase); + + function JLoaderSystem(bundle) { + var _this; + + _this = _SystemBase.call(this) || this; + _this.bundle = void 0; + _this.bundleName = void 0; + _this.bundleName = bundle; + return _this; + } + + var _proto = JLoaderSystem.prototype; + + _proto.onInit = /*#__PURE__*/function () { + var _onInit = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return loader$1.getBundle(this.bundleName); + + case 2: + this.bundle = _context.sent; + + case 3: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onInit() { + return _onInit.apply(this, arguments); + } + + return onInit; + }(); + + _proto.get = function get() { + return this.bundle; + }; + + return JLoaderSystem; + }(SystemBase); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "3c8c0jzEGpMr5OzvpGA9gsn", "Loading", undefined); //加载类 用于 显示加载信息 + + + var Loading = /*#__PURE__*/function () { + function Loading(loadings) { + this.loadings = {}; + this.current = void 0; + Object.values(loadings).forEach(function (info) { + info.isLoadingSuccess = false; + }); + this.loadings = loadings; + } //设置当前加载内容 + + + var _proto = Loading.prototype; + + _proto.setCurrent = function setCurrent(key) { + this.current = key; + } //指定加载完成 + ; + + _proto.ok = function ok(key) { + this.loadings[key].isLoadingSuccess = true; + } //返回当前加载内容 + ; + + _proto.getCurrentInfo = function getCurrentInfo() { + return this.loadings[this.current]; + } //返回进度 + ; + + _proto.progress = function progress() { + var infos = Object.values(this.loadings); + var ok = 0; + + for (var index = 0; index < infos.length; index++) { + if (infos[index].isLoadingSuccess) { + ok += 1; + } + } + + return ok / infos.length; + } //是否全部加载完成 + ; + + _proto.isAllSuccess = function isAllSuccess() { + var infos = Object.values(this.loadings); + + for (var index = 0; index < infos.length; index++) { + if (!infos[index].isLoadingSuccess) return false; + } + + return true; + }; + + return Loading; + }(); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "a7027bx4hhCfLqWeREzNBNj", "GAction", undefined); + + var GAction = /*#__PURE__*/function (GAction) { + GAction[GAction["TOKEN_EXPIRED"] = 1001] = "TOKEN_EXPIRED"; + GAction[GAction["CHAT_MESSAGE"] = 2001] = "CHAT_MESSAGE"; + GAction[GAction["CHAT_RECEIVE_MESSAGE"] = 2002] = "CHAT_RECEIVE_MESSAGE"; + GAction[GAction["S_MODE_PVP_JOIN"] = 3001] = "S_MODE_PVP_JOIN"; + GAction[GAction["S_MODE_PVP_LEAVE"] = 3002] = "S_MODE_PVP_LEAVE"; + GAction[GAction["C_MODE_PVP_WAIT"] = 3003] = "C_MODE_PVP_WAIT"; + GAction[GAction["C_MODE_PVP_START"] = 3004] = "C_MODE_PVP_START"; + GAction[GAction["C_MODE_PVP_END"] = 3005] = "C_MODE_PVP_END"; + GAction[GAction["C_MODE_PVP_START_WAIT"] = 3006] = "C_MODE_PVP_START_WAIT"; + GAction[GAction["C_MODE_PVP_END_WAIT"] = 3007] = "C_MODE_PVP_END_WAIT"; + GAction[GAction["C_MODE_PVP_MESSAGE"] = 3008] = "C_MODE_PVP_MESSAGE"; + return GAction; + }({}); //PVP 消息通知 + + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "d784f7OGolErZEZKbllkSx9", "GData", undefined); //UI 动画 + + + var UIPetAnim = /*#__PURE__*/function (UIPetAnim) { + UIPetAnim["std"] = "std"; + return UIPetAnim; + }({}); //存储Key + + + var StorageEnum = /*#__PURE__*/function (StorageEnum) { + StorageEnum["Token"] = "Storage_Token"; + return StorageEnum; + }({}); // Token + + + var StorageData = /*#__PURE__*/function () { + function StorageData() {} + + StorageData.get = function get(key) { + return sys.localStorage.getItem(key); + }; + + StorageData.set = function set(key, value) { + sys.localStorage.setItem(key, value); + }; + + StorageData.delect = function delect(key) { + sys.localStorage.removeItem(key); + }; + + return StorageData; + }(); + + var GData = function GData() {}; //层级 + + + GData.layer = { + World: 1 + }; //世界画布节点 + + GData.WorldCanvas = void 0; + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "d3e60dltMpMY53YIL79ZYRX", "GActionType", undefined); + + var GActionType = /*#__PURE__*/function (GActionType) { + GActionType["GUIChatMessage"] = "GUIChatMessage"; + GActionType["GOnHookPet"] = "GOnHookPet"; + GActionType["GOnHookPets"] = "GOnHookPets"; + GActionType["GPVPStart"] = "GPVPStart"; + GActionType["GPVPText"] = "GPVPText"; + return GActionType; + }({}); //PVP 提示 + + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "3caceebNrVP1Kz6iKSyEOOr", "BaseData", undefined); //数据基类 + + + var BaseData = /*#__PURE__*/function (_Singleton) { + _inheritsLoose(BaseData, _Singleton); + + function BaseData() { + return _Singleton.apply(this, arguments) || this; + } + + return BaseData; + }(Singleton); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "37e2ca9UHJDH6nE7H/aU7Qf", "ChatData", undefined); //聊天数据 + + + var ChatData = /*#__PURE__*/function (_BaseData) { + _inheritsLoose(ChatData, _BaseData); + + function ChatData() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _BaseData.call.apply(_BaseData, [this].concat(args)) || this; //世界消息列表 + + _this.datas = []; + return _this; + } + + var _proto = ChatData.prototype; + + _proto.onInit = function onInit() { + //监听聊天消息 + app.socket.on(GAction.CHAT_RECEIVE_MESSAGE, this.onChatReceiveMessage, this, GActionType.GUIChatMessage); + } //接受聊天消息 + ; + + _proto.onChatReceiveMessage = function onChatReceiveMessage(info) { + console.log("ChatData - onChatReceiveMessage", info.message); + this.datas.push(info.message); + app.event.emit(ChatData.Event, info); + } //发送消息 + ; + + _proto.onSend = function onSend(message) { + app.socket.Send(GAction.CHAT_MESSAGE, message, GActionType.GUIChatMessage); + } //监听接受消息 + ; + + _proto.on = function on(receive, target) { + app.event.on(ChatData.Event, receive, target); + } //取消 + ; + + _proto.off = function off(receive, target) { + app.event.off(ChatData.Event, receive, target); + }; + + return ChatData; + }(BaseData); + + ChatData.Event = "ChatData_Event_Message"; + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "7d3c7X0N/1ACbqrH8wkMLc5", "ResourceData", undefined); + + var ResourceEvent = /*#__PURE__*/function (ResourceEvent) { + ResourceEvent["UPDATE"] = "ResourceEvent_UPDATE"; + return ResourceEvent; + }({}); //刷新资源 + //资源类型 + + + var ResourceType = /*#__PURE__*/function (ResourceType) { + ResourceType[ResourceType["Gold"] = 90001] = "Gold"; + return ResourceType; + }({}); //金币 + //玩家资源数据 + + + var ResourceData = /*#__PURE__*/function (_BaseData) { + _inheritsLoose(ResourceData, _BaseData); + + function ResourceData() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _BaseData.call.apply(_BaseData, [this].concat(args)) || this; //资源数据 {资源Id:资源数量} + + _this.data = {}; + return _this; + } + + var _proto = ResourceData.prototype; //初始化 + + _proto.onInit = /*#__PURE__*/function () { + var _onInit = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return this.onUpdateResource(); + + case 2: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onInit() { + return _onInit.apply(this, arguments); + } + + return onInit; + }() //更新玩家资源 + ; + + _proto.onUpdateResource = /*#__PURE__*/function () { + var _onUpdateResource = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { + var _this2 = this; + + var res; + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return API.GetPlayerResource(); + + case 2: + res = _context2.sent; //保存资源数量 + + res.forEach(function (data) { + _this2.data[data.resourceTbId] = data.resourceValue; + }); + + case 4: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + + function onUpdateResource() { + return _onUpdateResource.apply(this, arguments); + } + + return onUpdateResource; + }() //获取指定资源的数量 + ; + + _proto.getValue = function getValue(type) { + return this.data[type] || 0; + } //刷新返回资源 + ; + + _proto.onUpdateOV = function onUpdateOV(operation, resource) { + if (operation == 0) { + //更新资源 + this.data[resource.resourceTbId] = resource.resourceValue; + } + + app.event.emit(ResourceEvent.UPDATE); + }; + + return ResourceData; + }(BaseData); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "503f2CGLEhHDJDgmOksXdNU", "API", undefined); //接受到JSON消息 + + + var RData = function RData(data, isTips) { + if (isTips === void 0) { + isTips = true; + } + + if (data.data.state == 200) { + //如果有 Resource 字段 表示要刷新资源 + if (data.data['resources']) { + //刷新资源 + data.data['resources'].forEach(function (res) { + ResourceData.getIns().onUpdateOV(res.operation, res.resource); + }); + } + + return data.data.data; + } else { + //弹出提示 + if (isTips) { + app.layer.Open(GUI.Tips, { + text: data.data.msg + }); + } + + return data.data.data; + } + }; //接受到Protobuf + + + var RProto = function RProto(data, type) { + try { + return app.proto.getType(type).decode(new Uint8Array(data.data)); + ; + } catch (_unused) { + app.layer.Open(GUI.Tips, { + text: "Protobuf 解析失败" + }); + } + }; + /************** 请求类 *******************/ + //玩家登录返回 + + /************** 实体类 **************************/ + //玩家信息 + //游戏玩家信息 + //玩家宠物信息 + //玩家阵法信息 + //玩家资源 + + + var API = { + UserRegister: function () { + var _UserRegister = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.t0 = RData; + _context.next = 3; + return app.api.post("/user/register"); + + case 3: + _context.t1 = _context.sent; + return _context.abrupt("return", (0, _context.t0)(_context.t1)); + + case 5: + case "end": + return _context.stop(); + } + }, _callee); + })); + + function UserRegister() { + return _UserRegister.apply(this, arguments); + } + + return UserRegister; + }(), + //玩家注册 + UserLogin: function () { + var _UserLogin = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(account, password) { + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + _context2.t0 = RData; + _context2.next = 3; + return app.api.post("/user/login", { + userId: account, + userPass: password + }); + + case 3: + _context2.t1 = _context2.sent; + return _context2.abrupt("return", (0, _context2.t0)(_context2.t1)); + + case 5: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + + function UserLogin(_x, _x2) { + return _UserLogin.apply(this, arguments); + } + + return UserLogin; + }(), + //玩家登录 + GetPlayerInfo: function () { + var _GetPlayerInfo = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() { + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + _context3.t0 = RData; + _context3.next = 3; + return app.api.get("/game/player/info"); + + case 3: + _context3.t1 = _context3.sent; + return _context3.abrupt("return", (0, _context3.t0)(_context3.t1, false)); + + case 5: + case "end": + return _context3.stop(); + } + }, _callee3); + })); + + function GetPlayerInfo() { + return _GetPlayerInfo.apply(this, arguments); + } + + return GetPlayerInfo; + }(), + //获取玩家信息 + + /********** 新手引导接口 *****************/ + SavePlayerInfo: function () { + var _SavePlayerInfo = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(playerName, novice) { + return _regeneratorRuntime().wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + if (novice === void 0) { + novice = true; + } + + _context4.next = 3; + return app.api.post("/game/player/info/save", { + playerName: playerName, + novice: novice + }); + + case 3: + return _context4.abrupt("return", _context4.sent.data); + + case 4: + case "end": + return _context4.stop(); + } + }, _callee4); + })); + + function SavePlayerInfo(_x3, _x4) { + return _SavePlayerInfo.apply(this, arguments); + } + + return SavePlayerInfo; + }(), + //保存玩家信息 + SelectNovicePet: function () { + var _SelectNovicePet = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(petId) { + return _regeneratorRuntime().wrap(function _callee5$(_context5) { + while (1) switch (_context5.prev = _context5.next) { + case 0: + _context5.t0 = RData; + _context5.next = 3; + return app.api.post("/game/novice/select/" + petId); + + case 3: + _context5.t1 = _context5.sent; + return _context5.abrupt("return", (0, _context5.t0)(_context5.t1, true)); + + case 5: + case "end": + return _context5.stop(); + } + }, _callee5); + })); + + function SelectNovicePet(_x5) { + return _SelectNovicePet.apply(this, arguments); + } + + return SelectNovicePet; + }(), + //选择新手引导宠物 + + /********** 宠物接口 ******************/ + GetPlayerPets: function () { + var _GetPlayerPets = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() { + return _regeneratorRuntime().wrap(function _callee6$(_context6) { + while (1) switch (_context6.prev = _context6.next) { + case 0: + _context6.t0 = RData; + _context6.next = 3; + return app.api.get("/game/pet/list"); + + case 3: + _context6.t1 = _context6.sent; + return _context6.abrupt("return", (0, _context6.t0)(_context6.t1, false)); + + case 5: + case "end": + return _context6.stop(); + } + }, _callee6); + })); + + function GetPlayerPets() { + return _GetPlayerPets.apply(this, arguments); + } + + return GetPlayerPets; + }(), + //获取玩家全部宠物 + + /********** 阵法接口 ******************/ + GetPlayerTactical: function () { + var _GetPlayerTactical = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() { + return _regeneratorRuntime().wrap(function _callee7$(_context7) { + while (1) switch (_context7.prev = _context7.next) { + case 0: + _context7.t0 = RData; + _context7.next = 3; + return app.api.get("/game/tactical/get"); + + case 3: + _context7.t1 = _context7.sent; + return _context7.abrupt("return", (0, _context7.t0)(_context7.t1, false)); + + case 5: + case "end": + return _context7.stop(); + } + }, _callee7); + })); + + function GetPlayerTactical() { + return _GetPlayerTactical.apply(this, arguments); + } + + return GetPlayerTactical; + }(), + //获取玩家阵法 + SetPlayerTactical: function () { + var _SetPlayerTactical = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(data) { + return _regeneratorRuntime().wrap(function _callee8$(_context8) { + while (1) switch (_context8.prev = _context8.next) { + case 0: + _context8.t0 = RData; + _context8.next = 3; + return app.api.post("/game/tactical/set", data); + + case 3: + _context8.t1 = _context8.sent; + return _context8.abrupt("return", (0, _context8.t0)(_context8.t1, false)); + + case 5: + case "end": + return _context8.stop(); + } + }, _callee8); + })); + + function SetPlayerTactical(_x6) { + return _SetPlayerTactical.apply(this, arguments); + } + + return SetPlayerTactical; + }(), + //更新玩家阵法 + + /********** 资源接口 ******************/ + GetPlayerResource: function () { + var _GetPlayerResource = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() { + return _regeneratorRuntime().wrap(function _callee9$(_context9) { + while (1) switch (_context9.prev = _context9.next) { + case 0: + _context9.t0 = RData; + _context9.next = 3; + return app.api.get("/game/resource/get"); + + case 3: + _context9.t1 = _context9.sent; + return _context9.abrupt("return", (0, _context9.t0)(_context9.t1, false)); + + case 5: + case "end": + return _context9.stop(); + } + }, _callee9); + })); + + function GetPlayerResource() { + return _GetPlayerResource.apply(this, arguments); + } + + return GetPlayerResource; + }() //获取玩家资源 + + }; + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "58cb2vhEnlAXoyJF6NcoM1t", "PlayerData", undefined); //玩家数据 + + + var PlayerData = /*#__PURE__*/function (_BaseData) { + _inheritsLoose(PlayerData, _BaseData); + + function PlayerData() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _BaseData.call.apply(_BaseData, [this].concat(args)) || this; + _this.data = void 0; + return _this; + } + + var _proto = PlayerData.prototype; + + _proto.onInit = /*#__PURE__*/function () { + var _onInit = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.t0 = console; + _context.next = 3; + return API.GetPlayerInfo(); + + case 3: + _context.t1 = _context.sent; + + _context.t0.log.call(_context.t0, "PlayerData", _context.t1); + + _context.next = 7; + return API.GetPlayerInfo(); + + case 7: + this.data = _context.sent; + + case 8: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onInit() { + return _onInit.apply(this, arguments); + } + + return onInit; + }() //获取玩家信息 + ; + + _proto.getInfo = function getInfo() { + return this.data; + }; + + return PlayerData; + }(BaseData); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "405fdElK6FItbwVf24UVpJx", "PlayerPetData", undefined); //玩家宠物数据 + + + var PlayerPetData = /*#__PURE__*/function (_BaseData) { + _inheritsLoose(PlayerPetData, _BaseData); + + function PlayerPetData() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _BaseData.call.apply(_BaseData, [this].concat(args)) || this; //玩家宠物列表 + + _this.datas = []; + return _this; + } + + var _proto = PlayerPetData.prototype; + + _proto.onInit = /*#__PURE__*/function () { + var _onInit = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return this.UpdatePlayerPet(); + + case 2: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onInit() { + return _onInit.apply(this, arguments); + } + + return onInit; + }() //获取全部宠物 + ; + + _proto.getData = function getData() { + return this.datas; + } //更新玩家宠物 + ; + + _proto.UpdatePlayerPet = /*#__PURE__*/function () { + var _UpdatePlayerPet = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return API.GetPlayerPets(); + + case 2: + this.datas = _context2.sent; + + case 3: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + + function UpdatePlayerPet() { + return _UpdatePlayerPet.apply(this, arguments); + } + + return UpdatePlayerPet; + }() //选择宠物 + ; + + _proto.SelectNovicePet = /*#__PURE__*/function () { + var _SelectNovicePet = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(petId) { + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + _context3.next = 2; + return API.SelectNovicePet(petId); + + case 2: + _context3.next = 4; + return this.UpdatePlayerPet(); + + case 4: + case "end": + return _context3.stop(); + } + }, _callee3, this); + })); + + function SelectNovicePet(_x) { + return _SelectNovicePet.apply(this, arguments); + } + + return SelectNovicePet; + }() //通过宠物Id找到宠物 + ; + + _proto.petIdQueryPetInfo = function petIdQueryPetInfo(petId) { + return this.datas.filter(function (item) { + return item.petId == petId; + })[0]; + } //添加宠物 + ; + + _proto.addPet = function addPet(pet) { + this.datas.push(pet); + }; + + return PlayerPetData; + }(BaseData); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "d2425NSrdZGGqsgMlFc+ese", "PlayerTacticalData", undefined); + + var PlayerTacticalEvent = /*#__PURE__*/function (PlayerTacticalEvent) { + PlayerTacticalEvent["UPDATE_TACTICAL"] = "PlayerTacticalEvent_UPDATE_TACTICAL"; + return PlayerTacticalEvent; + }({}); //玩家阵法数据 (玩家最多上阵 9 个宠物) + + + var PlayerTacticalData = /*#__PURE__*/function (_BaseData) { + _inheritsLoose(PlayerTacticalData, _BaseData); + + function PlayerTacticalData() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _BaseData.call.apply(_BaseData, [this].concat(args)) || this; //阵法信息 + + _this.info = void 0; + return _this; + } + + var _proto = PlayerTacticalData.prototype; + + _proto.onInit = /*#__PURE__*/function () { + var _onInit = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return this.onUpdateInfo(); + + case 2: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onInit() { + return _onInit.apply(this, arguments); + } + + return onInit; + }() //保存阵法信息 + ; + + _proto.onSaveTacticalInfo = function onSaveTacticalInfo(ov) { + if (!ov.tacticalData) { + ov.tacticalData = JSON.stringify(this.getInitTacticalInfo()); + } + + this.info = _extends({}, ov, { + roles: JSON.parse(ov.tacticalData) + }); //通知阵法信息已更新 + + app.event.emit(PlayerTacticalEvent.UPDATE_TACTICAL); + } //更新阵法信息 + ; + + _proto.onUpdateInfo = /*#__PURE__*/function () { + var _onUpdateInfo = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + _context2.t0 = this; + _context2.next = 3; + return API.GetPlayerTactical(); + + case 3: + _context2.t1 = _context2.sent; + + _context2.t0.onSaveTacticalInfo.call(_context2.t0, _context2.t1); + + case 5: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + + function onUpdateInfo() { + return _onUpdateInfo.apply(this, arguments); + } + + return onUpdateInfo; + }() //更新上阵 + ; + + _proto.UpdateTactical = /*#__PURE__*/function () { + var _UpdateTactical = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(roles) { + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + if (!(this.info.tacticalData == JSON.stringify(roles))) { + _context3.next = 2; + break; + } + + return _context3.abrupt("return", false); + + case 2: + this.info.roles = roles; + this.info.tacticalData = JSON.stringify(this.info.roles); //上传到服务器 并且保存 + + _context3.t0 = this; + _context3.next = 7; + return API.SetPlayerTactical(this.info); + + case 7: + _context3.t1 = _context3.sent; + + _context3.t0.onSaveTacticalInfo.call(_context3.t0, _context3.t1); + + return _context3.abrupt("return", true); + + case 10: + case "end": + return _context3.stop(); + } + }, _callee3, this); + })); + + function UpdateTactical(_x) { + return _UpdateTactical.apply(this, arguments); + } + + return UpdateTactical; + }() //修改指定位置的上阵 上阵下标,上阵的宠物Id + ; + + _proto.UpdateIndexTactical = /*#__PURE__*/function () { + var _UpdateIndexTactical = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(index, petId) { + return _regeneratorRuntime().wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + this.info.roles[index] = petId; + _context4.next = 3; + return this.UpdateTactical(this.info.roles); + + case 3: + case "end": + return _context4.stop(); + } + }, _callee4, this); + })); + + function UpdateIndexTactical(_x2, _x3) { + return _UpdateIndexTactical.apply(this, arguments); + } + + return UpdateIndexTactical; + }() //获取指定位置 + ; + + _proto.getItem = function getItem(index) { + return this.info.roles[index]; + } //获取初始化上阵信息 + ; + + _proto.getInitTacticalInfo = function getInitTacticalInfo() { + return [0, 0, 0, 0, 0, 0, 0, 0, 0]; + }; + + _proto.getTacticalInfo = function getTacticalInfo() { + return this.info.roles; + }; + + return PlayerTacticalData; + }(BaseData); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "edb3b67abJKSaqoOzxTmI9G", "AppData", undefined); //数据类 (用于初始化游戏信息) + + + var AppData = /*#__PURE__*/function (_SystemBase) { + _inheritsLoose(AppData, _SystemBase); + + function AppData() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _SystemBase.call.apply(_SystemBase, [this].concat(args)) || this; + _this.loadings = [PlayerData.getIns(), //玩家信息 + PlayerPetData.getIns(), //玩家宠物信息 + ChatData.getIns(), //聊天 + PlayerTacticalData.getIns(), //阵法 + ResourceData.getIns() //玩家资源 + ]; + return _this; + } + + var _proto = AppData.prototype; + + _proto.onInit = /*#__PURE__*/function () { + var _onInit = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + var index, data; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + app.loading.setCurrent(AppData.loading); //初始化所有数据类 + + index = 0; + + case 2: + if (!(index < this.loadings.length)) { + _context.next = 9; + break; + } + + data = this.loadings[index]; + _context.next = 6; + return data.onInit(); + + case 6: + index++; + _context.next = 2; + break; + + case 9: + app.loading.ok(AppData.loading); + + case 10: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onInit() { + return _onInit.apply(this, arguments); + } + + return onInit; + }(); + + return AppData; + }(SystemBase); + + AppData.loading = "AppData"; + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "60bafZucVZCNIR76lIMHgzB", "BaseAction", undefined); + + var BaseAction = /*#__PURE__*/function (_Singleton) { + _inheritsLoose(BaseAction, _Singleton); + + function BaseAction() { + return _Singleton.apply(this, arguments) || this; + } + + return BaseAction; + }(Singleton); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "20d83kR+8VA07lwtIq0pSm/", "PVPAction", undefined); + + var PVPAction = /*#__PURE__*/function (_BaseAction) { + _inheritsLoose(PVPAction, _BaseAction); + + function PVPAction() { + return _BaseAction.apply(this, arguments) || this; + } + + var _proto = PVPAction.prototype; + + _proto.onInit = function onInit() { + app.socket.on(GAction.C_MODE_PVP_START_WAIT, this.onModePVPStartWait, this); + app.socket.on(GAction.C_MODE_PVP_END_WAIT, this.onModePVPEndWait, this); + app.socket.on(GAction.C_MODE_PVP_START, this.onModePVPStart, this, GActionType.GPVPStart); + app.socket.on(GAction.C_MODE_PVP_MESSAGE, this.onModePVPMessage, this, GActionType.GPVPText); + } //PVP开始等待 + ; + + _proto.onModePVPStartWait = function onModePVPStartWait() { + //PVP 匹配页面 + app.layer.Open(GUI.PVPModeMatchView); + } //PVP结束等待 + ; + + _proto.onModePVPEndWait = function onModePVPEndWait() { + //PVP 匹配页面 + app.layer.Close(GUI.PVPModeMatchView); + } //开始PVP + ; + + _proto.onModePVPStart = function onModePVPStart(info) { + console.log("开始PVP", info); + GBattleModeManager.getIns().Open(BattleMode.PVP, true, info); + } //提示 + ; + + _proto.onModePVPMessage = function onModePVPMessage(info) { + console.log("提示PVP", info); + app.layer.Open(GUI.Tips, { + text: info.text + }); + }; + + return PVPAction; + }(BaseAction); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "b1127AuCcBApoiH6nlxlUiO", "AppAction", undefined); + + var AppAction = /*#__PURE__*/function (_SystemBase) { + _inheritsLoose(AppAction, _SystemBase); + + function AppAction() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _SystemBase.call.apply(_SystemBase, [this].concat(args)) || this; + _this.loadings = [PVPAction.getIns() //PVP Action + ]; + return _this; + } + + var _proto = AppAction.prototype; + + _proto.onInit = /*#__PURE__*/function () { + var _onInit = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + var index, data; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + index = 0; + + case 1: + if (!(index < this.loadings.length)) { + _context.next = 8; + break; + } + + data = this.loadings[index]; + _context.next = 5; + return data.onInit(); + + case 5: + index++; + _context.next = 1; + break; + + case 8: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onInit() { + return _onInit.apply(this, arguments); + } + + return onInit; + }(); + + return AppAction; + }(SystemBase); + + cclegacy._RF.pop(); + + var _Loading; + + cclegacy._RF.push({}, "5731aetpcVDX4ch210LIxqv", "App", undefined); // let APIPath = `http://localhost:8080` + // let WsPath = `ws://localhost:8080/websocket` + + + var APIPath = "http://192.168.0.174:8080"; + var WsPath = "ws://192.168.0.174:8080/websocket"; // let APIPath = `https://api.pet.jisol.cn` + // let WsPath = `wss://api.pet.jisol.cn/websocket` + //重写UI + + var JNGLayer = /*#__PURE__*/function (_JNLayer) { + _inheritsLoose(JNGLayer, _JNLayer); + + function JNGLayer() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _JNLayer.call.apply(_JNLayer, [this].concat(args)) || this; + _this.layers = [GLayer.View, GLayer.Popup, GLayer.Tips]; + _this.views = UIConfig; + return _this; + } + + return JNGLayer; + }(JNLayer); //重写Socket + + + var JNGSocket = /*#__PURE__*/function (_JNSocket) { + _inheritsLoose(JNGSocket, _JNSocket); + + function JNGSocket() { + return _JNSocket.apply(this, arguments) || this; + } + + var _proto = JNGSocket.prototype; + + _proto.onInit = /*#__PURE__*/function () { + var _onInit = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + this.on(GAction.TOKEN_EXPIRED, this.onTokenExpired.bind(this)); + _context.next = 3; + return _JNSocket.prototype.onInit.call(this); + + case 3: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onInit() { + return _onInit.apply(this, arguments); + } + + return onInit; + }(); + + _proto.url = function url() { + return new Promise(function (resolve) { + //获取Token + var token = StorageData.get(StorageEnum.Token); + + if (token) { + resolve(WsPath + "/" + token); + return; + } + + var loginResolve = function loginResolve(token) { + resolve(WsPath + "/" + token); + }; //如果没有Token则弹出登入页面 + + + app.layer.Open(GUI.Login, loginResolve); + }); + } //Token失效 + ; + + _proto.onTokenExpired = function onTokenExpired() { + console.log("onTokenExpired"); //清除Token + + StorageData.delect(StorageEnum.Token); + }; + + return JNGSocket; + }(JNSocket); // 重写帧同步 + + + var JNGSyncFrame = /*#__PURE__*/function (_JNSyncFrame) { + _inheritsLoose(JNGSyncFrame, _JNSyncFrame); + + function JNGSyncFrame() { + return _JNSyncFrame.apply(this, arguments) || this; + } + + var _proto2 = JNGSyncFrame.prototype; + + _proto2.onResetValue = function onResetValue() { + //重置状态机 + BehaviorManager.deleteInstance(); + + _JNSyncFrame.prototype.onResetValue.call(this); + }; + + _proto2.onServerData = /*#__PURE__*/function () { + var _onServerData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(start, end) { + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + _context2.t0 = app.proto.getType(JNSyncMessage.JNFrameInfos); + _context2.t1 = Uint8Array; + _context2.next = 4; + return app.api.get("/sync/frame", { + responseType: 'arraybuffer', + params: { + start: start, + end: end + } + }); + + case 4: + _context2.t2 = _context2.sent.data; + _context2.t3 = new _context2.t1(_context2.t2); + return _context2.abrupt("return", _context2.t0.decode.call(_context2.t0, _context2.t3)); + + case 7: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + + function onServerData(_x, _x2) { + return _onServerData.apply(this, arguments); + } + + return onServerData; + }(); + + _proto2.onSendInput = function onSendInput(message) { + app.socket.Send(JNSyncAction.NSyncFrameInput, message, JNSyncMessage.JNFrameInputs); + }; + + return JNGSyncFrame; + }(JNSyncFrame); + + var TD = null; //读写config + + var JNGConfig = /*#__PURE__*/function (_SystemBase) { + _inheritsLoose(JNGConfig, _SystemBase); + + function JNGConfig() { + return _SystemBase.apply(this, arguments) || this; + } + + var _proto3 = JNGConfig.prototype; + + _proto3.onInit = /*#__PURE__*/function () { + var _onInit2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() { + var json2, _key2, load; + + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + app.loading.setCurrent(JNGConfig.loading); + json2 = resources.getDirWithPath("config/json/", JsonAsset).map(function (info) { + var args = info.path.split("/"); + return { + name: args[args.length - 1], + bundle: "resources", + path: "config/json/" + }; + }); + _context3.t0 = _regeneratorRuntime().keys(json2); + + case 3: + if ((_context3.t1 = _context3.t0()).done) { + _context3.next = 10; + break; + } + + _key2 = _context3.t1.value; + load = json2[_key2]; + _context3.next = 8; + return JsonUtil.load(load); + + case 8: + _context3.next = 3; + break; + + case 10: + TD = new Tables(function (file) { + return JsonUtil.get(file); + }); + console.log(TD); + app.loading.ok(JNGConfig.loading); + + case 13: + case "end": + return _context3.stop(); + } + }, _callee3); + })); + + function onInit() { + return _onInit2.apply(this, arguments); + } + + return onInit; + }(); + + return JNGConfig; + }(SystemBase); //资源初始器 + + + JNGConfig.loading = "JNGConfig"; + + var JLoaderBattle = /*#__PURE__*/function (_JLoaderSystem) { + _inheritsLoose(JLoaderBattle, _JLoaderSystem); + + function JLoaderBattle() { + var _this2; + + for (var _len2 = arguments.length, args = new Array(_len2), _key3 = 0; _key3 < _len2; _key3++) { + args[_key3] = arguments[_key3]; + } + + _this2 = _JLoaderSystem.call.apply(_JLoaderSystem, [this].concat(args)) || this; + _this2.roleSpine = {}; //角色Spine + + _this2.roleResImage = {}; //角色战斗素材图片 + + _this2.roleResSpine = {}; //角色战斗素材Spine + + _this2.effects = {}; //Spine特效 + + _this2.maps = {}; + return _this2; + } + + var _proto4 = JLoaderBattle.prototype; //地图 + + _proto4.onInit = /*#__PURE__*/function () { + var _onInit3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() { + var _this3 = this; + + var _loop, _iterator, _step, _loop2, _iterator2, _step2, _loop3, _iterator3, _step3; + + return _regeneratorRuntime().wrap(function _callee4$(_context7) { + while (1) switch (_context7.prev = _context7.next) { + case 0: + app.loading.setCurrent(JLoaderBattle.loading); + _context7.next = 3; + return _JLoaderSystem.prototype.onInit.call(this); + + case 3: + app.loading.ok(JLoaderBattle.loading); + app.loading.setCurrent(JLoaderBattle.loadingInit); //将配置表的角色都读取出来 + + _loop = /*#__PURE__*/_regeneratorRuntime().mark(function _loop() { + var info; + return _regeneratorRuntime().wrap(function _loop$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + info = _step.value; + _context4.next = 3; + return new Promise(function (r) { + _this3.bundle.load(info.spine, sp.SkeletonData, function (err, data) { + r(data); + }); + }); + + case 3: + _this3.roleSpine[info.id] = _context4.sent; + + case 4: + case "end": + return _context4.stop(); + } + }, _loop); + }); + _iterator = _createForOfIteratorHelperLoose(TD.TbGRole.getDataMap().values()); + + case 7: + if ((_step = _iterator()).done) { + _context7.next = 11; + break; + } + + return _context7.delegateYield(_loop(), "t0", 9); + + case 9: + _context7.next = 7; + break; + + case 11: + _loop2 = /*#__PURE__*/_regeneratorRuntime().mark(function _loop2() { + var info; + return _regeneratorRuntime().wrap(function _loop2$(_context5) { + while (1) switch (_context5.prev = _context5.next) { + case 0: + info = _step2.value; + + if (!(info.resType == "Spine")) { + _context5.next = 7; + break; + } + + _context5.next = 4; + return new Promise(function (r) { + _this3.bundle.load(info.resSrc, sp.SkeletonData, function (err, data) { + r(data); + }); + }); + + case 4: + _this3.roleResSpine[info.id] = _context5.sent; + _context5.next = 10; + break; + + case 7: + _context5.next = 9; + return new Promise(function (r) { + _this3.bundle.load(info.resSrc, SpriteFrame, function (err, data) { + r(data); + }); + }); + + case 9: + _this3.roleResImage[info.id] = _context5.sent; + + case 10: + case "end": + return _context5.stop(); + } + }, _loop2); + }); + _iterator2 = _createForOfIteratorHelperLoose(TD.TbGRoleBattleRes.getDataMap().values()); + + case 13: + if ((_step2 = _iterator2()).done) { + _context7.next = 17; + break; + } + + return _context7.delegateYield(_loop2(), "t1", 15); + + case 15: + _context7.next = 13; + break; + + case 17: + _loop3 = /*#__PURE__*/_regeneratorRuntime().mark(function _loop3() { + var info; + return _regeneratorRuntime().wrap(function _loop3$(_context6) { + while (1) switch (_context6.prev = _context6.next) { + case 0: + info = _step3.value; + _context6.next = 3; + return Promise.all(["1", "2", "3"].map(function (index) { + return "map" + index; + }).map(function (key) { + return new Promise(function (r) { + if (info[key]) { + _this3.bundle.load(info[key], SpriteFrame, function (err, data) { + r(data); + }); + } + }); + })); + + case 3: + _this3.maps[info.id] = _context6.sent; + + case 4: + case "end": + return _context6.stop(); + } + }, _loop3); + }); + _iterator3 = _createForOfIteratorHelperLoose(TD.TbGMap.getDataMap().values()); + + case 19: + if ((_step3 = _iterator3()).done) { + _context7.next = 23; + break; + } + + return _context7.delegateYield(_loop3(), "t2", 21); + + case 21: + _context7.next = 19; + break; + + case 23: + app.loading.ok(JLoaderBattle.loadingInit); + + case 24: + case "end": + return _context7.stop(); + } + }, _callee4, this); + })); + + function onInit() { + return _onInit3.apply(this, arguments); + } + + return onInit; + }(); + + return JLoaderBattle; + }(JLoaderSystem); + + JLoaderBattle.loading = "JLoaderBattle"; + JLoaderBattle.loadingInit = "JLoaderBattle_Init"; + var app = { + layer: new JNGLayer(), + //UI + socket: new JNGSocket(), + //Socket + sync: new JNGSyncFrame(), + //同步 + event: EventDispatcher.getIns(), + //通知 + proto: NGameMessage.getIns(), + //消息 + api: JAPI.create({ + baseURL: "" + APIPath + }), + //请求 + // api : {}, //请求 + battle: GBattleModeManager.getIns(), + //战斗 + config: new JNGConfig(), + //配置文件 + battleRes: new JLoaderBattle("battle"), + //battle包 + data: new AppData(), + //游戏基础信息 + action: new AppAction(), + //游戏行为 + loading: new Loading((_Loading = {}, _Loading[JNGConfig.loading] = { + title: "加载配置文件" + }, _Loading[JLoaderBattle.loading] = { + title: "加载战斗资源" + }, _Loading[JLoaderBattle.loadingInit] = { + title: "初始化战斗资源" + }, _Loading[AppData.loading] = { + title: "初始化信息" + }, _Loading)) + }; + app.api.addRequestInterceptors(function (config) { + //设置Token + config.headers["Token"] = StorageData.get(StorageEnum.Token); + return true; + }); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "46f6f6rTlxAVJ3gEcOHPhcp", "JNGame", undefined); + + var Env = /*#__PURE__*/function (Env) { + Env[Env["WEB"] = 0] = "WEB"; + Env[Env["WX"] = 1] = "WX"; + return Env; + }({}); + + var JNGame = /*#__PURE__*/function () { + function JNGame() {} + + JNGame.Init = /*#__PURE__*/function () { + var _Init = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(data) { + var _i, _Object$values, value; + + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _i = 0, _Object$values = Object.values(data); + + case 1: + if (!(_i < _Object$values.length)) { + _context.next = 9; + break; + } + + value = _Object$values[_i]; + + if (!(value instanceof SystemBase)) { + _context.next = 6; + break; + } + + _context.next = 6; + return value.onInit(); + + case 6: + _i++; + _context.next = 1; + break; + + case 9: + case "end": + return _context.stop(); + } + }, _callee); + })); + + function Init(_x) { + return _Init.apply(this, arguments); + } + + return Init; + }(); + + return JNGame; + }(); + + JNGame.env = Env.WEB; + + cclegacy._RF.pop(); + + var _dec$p, _dec2$e, _dec3$6, _class$p, _class2$a, _descriptor$a, _descriptor2$5; + + cclegacy._RF.push({}, "1e0e1EfsZhOOZDlp+IFMryA", "Main", undefined); + + var ccclass$a = _decorator.ccclass, + property$5 = _decorator.property; + var Main = (_dec$p = ccclass$a('Main'), _dec2$e = property$5(Prefab), _dec3$6 = property$5(Prefab), _dec$p(_class$p = (_class2$a = /*#__PURE__*/function (_Component) { + _inheritsLoose(Main, _Component); + + function Main() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "UIPrefab", _descriptor$a, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "WorldPrefab", _descriptor2$5, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = Main.prototype; + + _proto.onLoad = /*#__PURE__*/function () { + var _onLoad = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + // 创建UI + director.getScene().addChild(instantiate(this.UIPrefab)); //加载 APP + + _context.next = 3; + return JNGame.Init(app); + + case 3: + //发生帧同步开始 + app.socket.Send(JNSyncAction.NSyncFrameStart); // 创建世界 + + director.getScene().addChild(instantiate(this.WorldPrefab)); + + case 5: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onLoad() { + return _onLoad.apply(this, arguments); + } + + return onLoad; + }(); + + return Main; + }(Component), (_descriptor$a = _applyDecoratedDescriptor(_class2$a.prototype, "UIPrefab", [_dec2$e], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + }), _descriptor2$5 = _applyDecoratedDescriptor(_class2$a.prototype, "WorldPrefab", [_dec3$6], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + })), _class2$a)) || _class$p); + + cclegacy._RF.pop(); + + var _dec$q, _dec2$f, _class$q, _class2$b, _descriptor$b; + + cclegacy._RF.push({}, "34651Y5HSBHQZzfE+T94QNV", "UICanvas", undefined); + + var ccclass$b = _decorator.ccclass, + property$6 = _decorator.property; + var UICanvas = (_dec$q = ccclass$b('UICanvas'), _dec2$f = property$6(Node), _dec$q(_class$q = (_class2$b = /*#__PURE__*/function (_Component) { + _inheritsLoose(UICanvas, _Component); + + function UICanvas() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "root", _descriptor$b, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = UICanvas.prototype; + + _proto.onLoad = function onLoad() { + //绑定层级 + app.layer.bind(this.root); //显示Loading + + app.layer.Open(GUI.Loading); + }; + + return UICanvas; + }(Component), _descriptor$b = _applyDecoratedDescriptor(_class2$b.prototype, "root", [_dec2$f], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _class2$b)) || _class$q); + + cclegacy._RF.pop(); + + var _dec$r, _dec2$g, _dec3$7, _dec4$5, _class$r, _class2$c, _descriptor$c, _descriptor2$6, _descriptor3$5; + + cclegacy._RF.push({}, "40653r5OQJPFZf7cTR6hCHX", "WorldCanvas", undefined); + + var ccclass$c = _decorator.ccclass, + property$7 = _decorator.property; + var WorldCanvas = (_dec$r = ccclass$c('WorldCanvas'), _dec2$g = property$7(Node), _dec3$7 = property$7(Camera), _dec4$5 = property$7([Prefab]), _dec$r(_class$r = (_class2$c = /*#__PURE__*/function (_Component) { + _inheritsLoose(WorldCanvas, _Component); + + function WorldCanvas() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "root", _descriptor$c, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "camera", _descriptor2$6, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "modes", _descriptor3$5, _assertThisInitialized(_this)); + + _this.index = 1; + return _this; + } + + var _proto = WorldCanvas.prototype; + + _proto.onLoad = /*#__PURE__*/function () { + var _onLoad = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + GData.WorldCanvas = this; //重置相机位置 + + this.camera.node.setWorldPosition(0, 0, 1000); //初始化游戏模式管理器 + + GBattleModeManager.getIns().onInit({ + modes: this.modes, + //模式 + camera: this.camera, + //相机 + root: this.root //场景 + + }); + + case 3: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onLoad() { + return _onLoad.apply(this, arguments); + } + + return onLoad; + }(); + + _proto.update = function update(deltaTime) { + GBattleModeManager.getIns().onUpdate(deltaTime); + }; + + return WorldCanvas; + }(Component), (_descriptor$c = _applyDecoratedDescriptor(_class2$c.prototype, "root", [_dec2$g], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + }), _descriptor2$6 = _applyDecoratedDescriptor(_class2$c.prototype, "camera", [_dec3$7], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + }), _descriptor3$5 = _applyDecoratedDescriptor(_class2$c.prototype, "modes", [_dec4$5], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return []; + } + })), _class2$c)) || _class$r); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "9504004sm5N6JfInh7IYIQ+", "GAttackNormal", undefined); //普通攻击 + + + var GAttackNormal = /*#__PURE__*/function () { + function GAttackNormal() {} + + var _proto = GAttackNormal.prototype; + + _proto.attack = function attack(role, info) { + role.fsm.enemy.onHit(); + }; + + return GAttackNormal; + }(); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "66564hubHtC8JAK1q8sBXha", "GButtleBase", undefined); //子弹基类 + + + var GButtleBase = /*#__PURE__*/function (_GObject) { + _inheritsLoose(GButtleBase, _GObject); + + function GButtleBase() { + return _GObject.apply(this, arguments) || this; + } + + var _proto = GButtleBase.prototype; + + _proto.setData = function setData(data) {}; + + return GButtleBase; + }(GObject); + + cclegacy._RF.pop(); + + var _dec$s, _class$s; + + cclegacy._RF.push({}, "cf273RbsI9Il4oua+MJ6dB2", "GButtleDefault", undefined); + + var ccclass$d = _decorator.ccclass, + property$8 = _decorator.property; //默认子弹类 + + var GButtleDefault = (_dec$s = ccclass$d("GButtleDefault"), _dec$s(_class$s = /*#__PURE__*/function (_GButtleBase) { + _inheritsLoose(GButtleDefault, _GButtleBase); + + function GButtleDefault() { + return _GButtleBase.apply(this, arguments) || this; + } + + var _proto = GButtleDefault.prototype; + + _proto.setData = function setData(info) { + this.node.layer = GData.layer.World; + this.node.addComponent(Sprite).spriteFrame = info.image; + this.node.scale = v3(info.scale, info.scale, 0); + }; + + return GButtleDefault; + }(GButtleBase)) || _class$s); + + cclegacy._RF.pop(); + + var _dec$t, _class$t; + + cclegacy._RF.push({}, "7bbd2ZLN+pAR5d5W2wmy3A0", "JNFrameSkeleton", undefined); + + var ccclass$e = _decorator.ccclass, + property$9 = _decorator.property; + var JNSkeleton = (_dec$t = ccclass$e('JNSkeleton'), _dec$t(_class$t = /*#__PURE__*/function (_sp$Skeleton) { + _inheritsLoose(JNSkeleton, _sp$Skeleton); + + function JNSkeleton() { + return _sp$Skeleton.apply(this, arguments) || this; + } + + var _proto = JNSkeleton.prototype; + + _proto.onEnable = function onEnable() { + UIRenderer.prototype.onEnable.bind(this)(); + + this._flushAssembler(); + + JNFrameSkeletonSystem.getInstance().add(this); + }; + + _proto.onDisable = function onDisable() { + UIRenderer.prototype.onDisable.bind(this)(); + JNFrameSkeletonSystem.getInstance().remove(this); + }; + + return JNSkeleton; + }(sp.Skeleton)) || _class$t); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "4ab3eCYAqFCdIwXvCrAj2Q7", "GNode", undefined); //Node 工具 + + + var GNode = /*#__PURE__*/function () { + function GNode() {} + + GNode.create = function create() { + var mapNode = new Node(); + mapNode.layer = GData.layer.World; + return mapNode; + }; + + return GNode; + }(); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "c0673NyN/lFOrQ5ESNLwtin", "GEffectUtil", undefined); + + var GEffectUtil = /*#__PURE__*/function () { + function GEffectUtil() {} //创建一个Spine特效 + + + GEffectUtil.create = function create(spine) { + var effectNode = GNode.create(); + effectNode.addComponent(UITransform); + var ske = effectNode.addComponent(JNSkeleton); + ske.skeletonData = spine; + ske.premultipliedAlpha = false; + return ske; + } //创建只播放一次的Spine特效 + ; + + GEffectUtil.createOne = function createOne(spine) { + var ske = GEffectUtil.create(spine); + ske.setCompleteListener(function () { + ske.node.destroy(); + }); + return ske; + }; + + return GEffectUtil; + }(); + + cclegacy._RF.pop(); + + var _dec$u, _class$u, _descriptor$d; + + cclegacy._RF.push({}, "15e91RcTrhIXZnrbXCbOZHn", "GRoleBase", undefined); + + var ccclass$f = _decorator.ccclass, + property$a = _decorator.property; + + var GRoleAnimEvent = /*#__PURE__*/function (GRoleAnimEvent) { + GRoleAnimEvent["Attack"] = "attack"; + return GRoleAnimEvent; + }({}); //普通攻击 + //角色基类 + + + var GRoleBase = (_dec$u = property$a(JNSkeleton), (_class$u = /*#__PURE__*/function (_GObject) { + _inheritsLoose(GRoleBase, _GObject); + + function GRoleBase() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _GObject.call.apply(_GObject, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "spine", _descriptor$d, _assertThisInitialized(_this)); //角色 + + + _this.role = void 0; //状态机 + + _this.fsm = void 0; //动画状态机 + + _this.fsmAnim = void 0; //玩家攻击范围 + + _this.range = 100; //移动速度 + + _this.moveSpeed = 80; //血量 + + _this.blood = 100; + _this.fullBlood = 100; //是否死亡 + + _this._isDie = false; //受击回调 + + _this.hitCallbacks = []; //攻击回调 + + _this.attackCallbacks = []; + return _this; + } + + var _proto = GRoleBase.prototype; //添加受击回调 + + _proto.addHitCallback = function addHitCallback(fun) { + this.hitCallbacks.push(fun); + }; //添加攻击回调 + + + _proto.addAttackCallback = function addAttackCallback(fun) { + this.attackCallbacks.push(fun); + }; + + _proto.get = function get() { + if (this.isDie) return null; + return this; + }; + + _proto.onSyncLoad = function onSyncLoad() { + if (!this.spine) this.spine = this.node.getComponent(JNSkeleton); //如果没有生成则直接销毁 + + if (!this.spine) { + this.node.destroy(); + return; + } //创建角色状态机 + + + this.fsm = this.fsmCreate(); //创建角色动画状态机 + + this.fsmAnim = this.fsmAnimCreate(); + } //初始化 + ; + + _proto.init = function init(role) { + if (this.spine) this.spine.skeletonData = app.battleRes.roleSpine[role.id]; + } //创建一个状态机 + ; + + _proto.onSyncUpdate = function onSyncUpdate(dt, frame, input) { + //更新状态机 + this.fsm && this.fsm.onUpdate(dt / 1000, frame); + this.fsmAnim && this.fsmAnim.onUpdate(dt / 1000, frame); + } //向目标点移动 + ; + + _proto.onMoveTarget = function onMoveTarget(target, dt) { + //获取两个坐标差值向量 + var mins = this.v2World.subtract(target); + var normal = this.v2World.subtract(target).normalize(); //设置朝向 + + if (normal.x != 0) { + if (normal.x < 0) { + this.setTowards(GTowards.RIGHT); + } else { + this.setTowards(GTowards.LEFT); + } + } + + if (Vec2.len(normal) >= Vec2.len(mins)) { + this.node.setWorldPosition(Object.assign(v3(), target.clone())); + return true; + } else { + //移动 + this.node.worldPosition = this.node.worldPosition.subtract(v3(normal.x * dt * this.moveSpeed, normal.y * dt * this.moveSpeed, 0)); + return false; + } + } //朝向目标 + ; + + _proto.onTowardsTarget = function onTowardsTarget(role) { + //获取两个坐标差值向量 + var normal = this.v2World.subtract(role.v2World).normalize(); //设置朝向 + + if (normal.x != 0) { + if (normal.x < 0) { + this.setTowards(GTowards.RIGHT); + } else { + this.setTowards(GTowards.LEFT); + } + } + } //受击 + ; + + _proto.onHit = function onHit() { + var _this2 = this; // return; + + + this.blood -= 10; + this.hitCallbacks.forEach(function (fun) { + return fun(_this2, 10); + }); //检测是否死亡 + + if (this.blood <= 0) { + //关闭状态机 + this.fsm.close(); //设置死亡 + + this.isDie = true; + } + }; + + _proto.onDebugHit = function onDebugHit() { + this.blood -= 10; //检测是否死亡 + + if (this.blood <= 0) { + //关闭状态机 + this.fsm.close(); //设置死亡 + + this.isDie = true; + } + }; + + _createClass(GRoleBase, [{ + key: "isDie", + get: function get() { + return this._isDie; + }, + set: function set(value) { + this._isDie = value; + + if (this.isDie) { + //如果死亡则关闭状态机 + //关闭状态机 + this.fsm.close(); + } + } + }]); + + return GRoleBase; + }(GObject), _descriptor$d = _applyDecoratedDescriptor(_class$u.prototype, "spine", [_dec$u], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _class$u)); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "a2cdfylR5xOUZJFKd02JsvC", "GDetection", undefined); //检测工具类 + + + var GDetection = /*#__PURE__*/function () { + function GDetection() {} //检测角色 + + + GDetection.testAABBRole = function testAABBRole(rect) { + //@ts-ignore + return PhysicsSystem2D.instance.testAABB(rect).map(function (item) { + return item.getComponent(GRoleBase); + }); + } //检测角色 + ; + + GDetection.testPointRole = function testPointRole(pos) { + //@ts-ignore + console.log(PhysicsSystem2D.instance.testPoint(pos)); + }; + + return GDetection; + }(); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "f4c29zeLKNFLa0+PWN28r1s", "GAttackParabolicBangRemote", undefined); + /** + * 抛物线 爆炸普攻 + * 攻击子弹,爆炸特效,龙骨-初始位置,子弹大小,爆炸宽度,爆炸高度 + */ + + + var GAttackParabolicRemote = /*#__PURE__*/function () { + function GAttackParabolicRemote() {} + + var _proto = GAttackParabolicRemote.prototype; + + _proto.attack = function attack(role, info) { + var enemy = role.fsm.enemy; + if (!enemy) return; + var image = app.battleRes.roleResImage[info.attackArgs[0]]; + var bang = { + ske: app.battleRes.roleResSpine[info.attackArgs[1]], + info: TD.TbGRoleBattleRes.get(parseInt(info.attackArgs[1])) + }; + var bone = role.spine.findBone(info.attackArgs[2]); + var scale = parseFloat(info.attackArgs[3]); + var aw = parseFloat(info.attackArgs[4]); + var ah = parseFloat(info.attackArgs[5]); + + if (!image || !bone || !scale || !bang || !aw || !ah) { + console.warn("GAttackParabolicRemote ERROR", image, bone, scale, bang); + return; + } // console.log(`播放动画[GAttackParabolicRemote]`,role.nId,enemy.nId) + + + console.log(role.spine, bone); + var bullet = GAttackBullet.create(GButtleDefault, { + image: image, + scale: scale + }); + role.mode.addGObject(bullet); + var world2 = role.node.worldPosition.clone().add(v3(role.getMirrorValue(bone.worldX), bone.worldY, 0)); //设置子弹位置 + + bullet.node.setWorldPosition(v3(world2.x, world2.y, world2.z)); //子弹移动 + + var start = bullet.v2World; + var end = enemy.v2World; + var center = v2((start.x + end.x) / 2, (start.y + end.y) / 2 + Math.abs(start.x - end.x) / 2); + bullet.JTween({}).to({}, Vec2.distance(start, end) * 3).onUpdate(function (data, elapsed) { + bullet.node.setWorldPosition(v3(bezier(start.x, center.x, center.x, end.x, elapsed), bezier(start.y, center.y, center.y, end.y, elapsed), 0)); + }).onComplete(function () { + //生成爆炸特效 + var effect = GEffectUtil.createOne(bang.ske); + role.mode.addGNode(effect.node, bullet.node.worldPosition); //获取默认动画 + + effect.setAnimation(0, "animation", false); //销毁 + + bullet.node.destroy(); // enemy.getComponent(BoxCollider2D).apply(); + // console.log(enemy.v2World,enemy.getComponent(BoxCollider2D).worldPoints,enemy.getComponent(UITransform).getBoundingBoxToWorld()); + + GDetection.testAABBRole(rect(effect.node.worldPosition.x, effect.node.worldPosition.y, aw, ah)).forEach(function (role) { + role.onHit(); + }); + }).start(); + }; + + return GAttackParabolicRemote; + }(); + + cclegacy._RF.pop(); + + var _GAttack; + + cclegacy._RF.push({}, "27b492StadJcppyhWy7Larz", "GAttack", undefined); //攻击子弹类 + + + var GAttackBullet = /*#__PURE__*/function () { + function GAttackBullet() {} //创建子弹 + + + GAttackBullet.create = function create(GClass, data) { + var bulletNode = GNode.create(); + bulletNode.addComponent(UITransform); + var bullet = bulletNode.addComponent(GClass); + bullet.setData(data); + return bullet; + }; + + return GAttackBullet; + }(); //攻击方式基类 + //攻击方式 + + + var GAttack = (_GAttack = {}, _GAttack["Normal"] = GAttackNormal, _GAttack["ParabolicBangRemote"] = GAttackParabolicRemote, _GAttack); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "ded09l3kfFJMqunycXYSJhZ", "GSpine", undefined); //Spine 工具 + + + var GSpine = /*#__PURE__*/function () { + function GSpine() {} //保存当前Spine 播放新 Spine 结束后还原 + + + GSpine.onPlayAnotherSpine = function onPlayAnotherSpine(role, spine, play, fun) { + if (fun === void 0) { + fun = {}; + } //关闭当前角色原本的Spine + + + role.spine.enabled = false; //添加新的spine + + var spineNode = GNode.create(); + role.node.addChild(spineNode); + var another = spineNode.addComponent(JNSkeleton); + another.skeletonData = spine; + fun.start && fun.start(another); + another.setCompleteListener(function () { + //还原 + role.spine.enabled = true; + spineNode.destroy(); + fun.end && fun.end(); + }); + another.setAnimation(0, play, false); // another.setAnimation(0,play,false); + + return another; + } //创建一个Spine + ; + + GSpine.onCreateSpine = function onCreateSpine(spine) { + var spineNode = GNode.create(); + var another = spineNode.addComponent(JNSkeleton); + another.premultipliedAlpha = false; + another.skeletonData = spine; + return another; + } // 创建一个 Spine 并且 播放 销毁 + ; + + GSpine.onPlaySceneSpine = function onPlaySceneSpine(scene, pos, spine, play) { + var create = this.onCreateSpine(spine); + scene.addGNode(create.node, pos); + create.setCompleteListener(function () { + //销毁 + create.node.destroy(); + }); + create.setAnimation(0, play, false); + return create; + }; + + return GSpine; + }(); + + cclegacy._RF.pop(); + + var _dec$v, _class$v; + + cclegacy._RF.push({}, "0dd9fmWmbBAra4y0n8wnsva", "GMapLoop", undefined); + + var ccclass$g = _decorator.ccclass, + property$b = _decorator.property; + /** + * 循环地图 + */ + + var GMapLoop = (_dec$v = ccclass$g('GMapLoop'), _dec$v(_class$v = /*#__PURE__*/function (_JNGSyncBase) { + _inheritsLoose(GMapLoop, _JNGSyncBase); + + function GMapLoop() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _JNGSyncBase.call.apply(_JNGSyncBase, [this].concat(args)) || this; + _this.map = void 0; //地图 + //地图重复次数 + + _this.repeat = 1; //一块的地图宽度 + + _this.mapWidth = 100; //一块的地图高度 + + _this.mapHeight = 100; //是否初始化 + + _this.isInit = false; //世界坐标Y轴 + + _this.worldY = 0; //创建的地图列表{开始区块:地图图片} + + _this.createMaps = new Map(); + return _this; + } + + var _proto = GMapLoop.prototype; + + _proto.init = function init(map, repeat, width, height) { + if (repeat === void 0) { + repeat = 1; + } + + if (width === void 0) { + width = 0; + } + + if (height === void 0) { + height = 0; + } + + this.map = map; + this.isInit = true; + this.repeat = repeat; + this.mapWidth = width || this.map.width; + this.mapHeight = height || this.map.height; + } //更新地图(世界坐标X) + ; + + _proto.UpdateMap = function UpdateMap(x, offsetX, offsetY) { + var _this2 = this; + + if (offsetX === void 0) { + offsetX = 0; + } + + if (offsetY === void 0) { + offsetY = 0; + } //计算x在第几个区块 + + + var blockIndex = Math.floor((x + offsetX) / this.mapWidth); //生成区块的列表 + + var maps = []; + + for (var index = 0; index < 1 + this.repeat * 2; index++) { + maps.push(blockIndex + (index - this.repeat)); + } //生成 + + + maps.forEach(function (blockIndex) { + _this2.createMap(blockIndex, offsetX, offsetY); + }); //销毁其他地图 + + var keys = Array.from(this.createMaps.keys()); + keys.forEach(function (key) { + if (maps.indexOf(key) < 0) { + _this2.createMaps.get(key).destroy(); + + _this2.createMaps["delete"](key); + } + }); + } //生成区块地图 + ; + + _proto.createMap = function createMap(blockIndex, offsetX, offsetY) { + if (offsetX === void 0) { + offsetX = 0; + } + + if (offsetY === void 0) { + offsetY = 0; + } //计算区块开始位置 + + + var start = blockIndex * this.mapWidth - offsetX; + + if (!this.createMaps.get(blockIndex)) { + //生成地图 + var mapNode = GNode.create(); + var uiTransform = mapNode.addComponent(UITransform); + uiTransform.anchorX = 0; + this.node.addChild(mapNode); + mapNode.worldPosition = v3(start, offsetY, 0); + var mapImage = mapNode.addComponent(Sprite); + mapImage.spriteFrame = this.map; + mapImage.sizeMode = Sprite.SizeMode.CUSTOM; + uiTransform.contentSize = size(this.mapWidth, this.mapHeight); + this.createMaps.set(blockIndex, mapNode); + } else { + this.createMaps.get(blockIndex).worldPosition = v3(start, offsetY, 0); + } + }; + + return GMapLoop; + }(JNGSyncBase)) || _class$v); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "6b762Fkk2dPa6Foi3FaydW1", "GFSMBase", undefined); //流程模式 + + + var GFSMProcessMode = /*#__PURE__*/function (GFSMProcessMode) { + GFSMProcessMode[GFSMProcessMode["Execute"] = 0] = "Execute"; + GFSMProcessMode[GFSMProcessMode["WaitExecute"] = 1] = "WaitExecute"; + return GFSMProcessMode; + }({}); //等待执行 + //流程信息 + //流程枚举 + + + var GFSMProcessEnum = /*#__PURE__*/function (GFSMProcessEnum) { + GFSMProcessEnum[GFSMProcessEnum["Reset"] = -1] = "Reset"; + GFSMProcessEnum[GFSMProcessEnum["Wait"] = -2] = "Wait"; + return GFSMProcessEnum; + }({}); //等待 + //状态机基类 + + + var GFSMBase = /*#__PURE__*/function () { + function GFSMBase() { + //是否关闭 + this.isClose = false; //状态流程图 + + this.process = {}; //开始流程Id + + this.start = 0; //当前流程 + + this.current = 0; + } + + var _proto = GFSMBase.prototype; //状态机刷新 + + _proto.onUpdate = function onUpdate(dt, frame) { + if (this.isClose) return; + if (!this.start) this.start = 0; + if (!this.current) this.current = 0; //运行流程 + + this.execute(this.process[this.current], dt, frame); + }; + + _proto.close = function close() { + this.isClose = true; + }; + + _proto.open = function open() { + this.current = 0; + this.isClose = false; + } //执行流程 + ; + + _proto.execute = function execute(process, dt, frame) { + if (!process) return; + process.mode = process.mode || GFSMProcessMode.Execute; + process.to = process.to || []; + var next; + var isReset = true; //执行流程 + + switch (process.mode) { + case GFSMProcessMode.Execute: + //执行方法 + next = process.execute(dt, process, frame); + break; + + case GFSMProcessMode.WaitExecute: + //执行等待方法 + next = process.execute(dt, process, frame); //如果 状态 Wait 则 不重置 下一次状态从当前开始流程执行 + + if (next == GFSMProcessEnum.Wait) { + isReset = false; + } + + break; + } + + if (process.to.indexOf(next) == -1 && next != GFSMProcessEnum.Wait && next != GFSMProcessEnum.Reset) { + console.log("[GFSM]: \u6D41\u7A0BTo\u4E2D\u6CA1\u6709\u8FD9\u4E2A\u6D41\u7A0B \u8BF7\u68C0\u67E5\u4EE3\u7801", process, next); + return; + } + + if (!this.process[next]) next = null; + + if (next) { + this.current = next; //运行下一个流程 + + this.execute(this.process[next], dt, frame); + } else { + if (isReset) { + //重置 + this.current = this.start; + } + } + }; + + return GFSMBase; + }(); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "ff6b5u3W9pCu79MDZGnYnUk", "GRole", undefined); //角色工具类 + + + var GRoleUtil = /*#__PURE__*/function () { + function GRoleUtil() {} //获取存活的玩家 如果不存活则返回 null + + + GRoleUtil.get = function get(player) { + if (!player) return null; + return function () { + if (player) return player.get(); + return null; + }; + } //通过Id 获取 GRole + ; + + GRoleUtil.getGRole = function getGRole(id) { + var info; + if (!(info = TD.TbGRole.get(id))) return null; + return info; + }; + + GRoleUtil.getGRoles = function getGRoles(ids) { + return ids.map(function (id) { + return GRoleUtil.getGRole(id); + }); + }; + + return GRoleUtil; + }(); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "37959w4UMxDCriS7w5t8/Fd", "GFSMDefault", undefined); //流程枚举 + + + var ProcessEnum = /*#__PURE__*/function (ProcessEnum) { + ProcessEnum[ProcessEnum["SeekEnemy"] = 0] = "SeekEnemy"; + ProcessEnum[ProcessEnum["MoveToAttackRange"] = 1] = "MoveToAttackRange"; + ProcessEnum[ProcessEnum["AttackEnemy"] = 2] = "AttackEnemy"; + ProcessEnum[ProcessEnum["MoveToTactical"] = 3] = "MoveToTactical"; + ProcessEnum[ProcessEnum["ReleaseSkills"] = 4] = "ReleaseSkills"; + return ProcessEnum; + }(ProcessEnum || {}); + + var GFSMDefault = /*#__PURE__*/function (_GFSMBase) { + _inheritsLoose(GFSMDefault, _GFSMBase); + + function GFSMDefault(player) { + var _this$process; + + var _this; + + _this = _GFSMBase.call(this) || this; + _this._player = void 0; //锁定的敌人 + + _this._enemy = void 0; //流程图 + + _this.process = (_this$process = {}, _this$process[ProcessEnum.SeekEnemy] = { + title: "寻找敌人", + execute: _this.onSeekEnemyProcess.bind(_assertThisInitialized(_this)), + // to:[ProcessEnum.MoveToAttackRange], //移动到可攻击范围 + to: [ProcessEnum.MoveToAttackRange, ProcessEnum.MoveToTactical] //移动到可攻击范围 + + }, _this$process[ProcessEnum.MoveToAttackRange] = { + title: "移动到可攻击范围", + mode: GFSMProcessMode.WaitExecute, + execute: _this.onMoveToAttackRangeProcess.bind(_assertThisInitialized(_this)), + to: [ProcessEnum.AttackEnemy] //攻击敌人 回阵型 + + }, _this$process[ProcessEnum.AttackEnemy] = { + title: "攻击敌人", + mode: GFSMProcessMode.WaitExecute, + execute: _this.onAttackProcess.bind(_assertThisInitialized(_this)), + to: [ProcessEnum.SeekEnemy, ProcessEnum.ReleaseSkills] //移动回阵型 释放技能 + + }, _this$process[ProcessEnum.MoveToTactical] = { + title: "获取初始点", + mode: GFSMProcessMode.WaitExecute, + execute: _this.onMoveToInitPosProcess.bind(_assertThisInitialized(_this)), + to: [ProcessEnum.SeekEnemy] //移动回阵型 + + }, _this$process[ProcessEnum.ReleaseSkills] = { + title: "释放技能", + mode: GFSMProcessMode.WaitExecute, + execute: _this.onReleaseSkillsProcess.bind(_assertThisInitialized(_this)), + to: [ProcessEnum.AttackEnemy] //继续攻击 + + }, _this$process); + _this._player = GRoleUtil.get(player); + return _this; + } //寻敌 + + + var _proto = GFSMDefault.prototype; + + _proto.onSeekEnemy = function onSeekEnemy() { + return this.player.onQueryEunmy(); + } //寻敌流程 + ; + + _proto.onSeekEnemyProcess = function onSeekEnemyProcess(dt) { + //播放等待 + this.player.fsmAnim.isMove = false; + this.player.fsmAnim.isAttack = false; + + if (this.enemy) { + //如果有敌人 直接 攻击 + return ProcessEnum.MoveToAttackRange; + } + + if ((this._enemy = GRoleUtil.get(this.onSeekEnemy())) && this.enemy) { + //如果有敌人 直接 攻击 + return ProcessEnum.MoveToAttackRange; + } else { + //如果没有敌人则回去 + if (!this.player.tacticalPos.equals(this.player.v2World)) { + return ProcessEnum.MoveToTactical; + } else { + return GFSMProcessEnum.Reset; + } + } + } //移动可攻击范围 + ; + + _proto.onMoveToAttackRangeProcess = function onMoveToAttackRangeProcess(dt) { + //播放移动 + this.player.fsmAnim.isMove = true; + this.player.fsmAnim.isAttack = false; //如果没有敌人则重置 + + if (!this.enemy) return GFSMProcessEnum.Reset; + var distance = Vec2.distance(this.player.v2World, this.enemy.v2World); //如果在攻击范围则调用攻击 负责 靠近目标 + + if (distance < this.player.range) { + return ProcessEnum.AttackEnemy; + } else { + //靠近目标 + this.player.onMoveTarget(this.enemy.v2World, dt); + return GFSMProcessEnum.Wait; + } + } //移动回阵型 + ; + + _proto.onMoveToInitPosProcess = function onMoveToInitPosProcess(dt) { + //播放移动 + this.player.fsmAnim.isMove = true; + this.player.fsmAnim.isAttack = false; + + if (this.player.onMoveTarget(this.player.tacticalPos, dt)) { + this.player.onRecoverTacticalTowards(); //回到阵容 搜索敌人 + + return ProcessEnum.SeekEnemy; + } + + return GFSMProcessEnum.Wait; + } //攻击敌人 + ; + + _proto.onAttackProcess = function onAttackProcess(dt) { + //播放移动 + this.player.fsmAnim.isMove = false; + this.player.fsmAnim.isAttack = true; //如果有敌人则攻击 没有 则 重置 + + if (this.enemy) { + //朝向敌人 + this.player.onTowardsTarget(this.enemy); //是否可释放技能 + + if (this.player.isReleaseSkill()) { + //则释放技能 + return ProcessEnum.ReleaseSkills; + } else { + return GFSMProcessEnum.Wait; + } + } else { + return ProcessEnum.SeekEnemy; + } + } //释放技能 + ; + + _proto.onReleaseSkillsProcess = function onReleaseSkillsProcess() { + //如果正在释放则等待 + if (this.player.isReleasingSkill()) { + return GFSMProcessEnum.Wait; + } //释放技能 + + + if (this.player.isReleaseSkill()) { + //如果可以释放技能则释放 + this.player.onReleaseSkill(); + return GFSMProcessEnum.Wait; + } else { + //不可以则回到攻击 + return ProcessEnum.AttackEnemy; + } + } //获取 寻找敌人状态 + ; + + _proto.getSeekEnemyProcessEnum = function getSeekEnemyProcessEnum() { + return ProcessEnum.SeekEnemy; + }; + + _createClass(GFSMDefault, [{ + key: "player", + get: function get() { + return this._player(); + } + }, { + key: "enemy", + get: function get() { + if (this._enemy) return this._enemy(); + return null; + } + }]); + + return GFSMDefault; + }(GFSMBase); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "dda21qPk9pEIaDZvaKYF6bJ", "GFSMAnimBase", undefined); //角色动画名称枚举 + + + var GFSMBattleAminEnum = /*#__PURE__*/function (GFSMBattleAminEnum) { + GFSMBattleAminEnum["Wait"] = "std"; + GFSMBattleAminEnum["Walk"] = "walk"; + GFSMBattleAminEnum["Attack"] = "atk"; + GFSMBattleAminEnum["Fly"] = "jifei"; + return GFSMBattleAminEnum; + }({}); //击飞 + //动画流程信息 + //动画状态机基类 + + + var GFSMAnimBase = /*#__PURE__*/function (_GFSMBase) { + _inheritsLoose(GFSMAnimBase, _GFSMBase); + + function GFSMAnimBase(spine, trackIndex) { + var _this; + + if (trackIndex === void 0) { + trackIndex = 0; + } + + _this = _GFSMBase.call(this) || this; //轨道的索引 + + _this.trackIndex = void 0; //动画Root + + _this.spine = void 0; + _this.events = {}; + _this.starts = {}; + _this.ends = {}; // 流程图 + + _this.process = {}; + _this.spine = spine; + _this.trackIndex = trackIndex; //设置监听 + + _this.spine.setEventListener(_this.onEventListener.bind(_assertThisInitialized(_this))); //设置结束监听 + + + _this.spine.setCompleteListener(_this.onEndListener.bind(_assertThisInitialized(_this))); // //因为SpineBUG所以不使用Spine监听 采用自己调用 + // this.spine.setStartListener(this.onStartListener.bind(this)); + + + return _this; + } + + var _proto = GFSMAnimBase.prototype; + + _proto.open = function open() { + _GFSMBase.prototype.open.call(this); //重置 + + + Object.values(this.process).forEach(function (info) { + info.track = null; + }); + } //添加事件监听 + ; + + _proto.addEventListener = function addEventListener(event, fun) { + if (!this.events[event]) this.events[event] = []; + this.events[event].push(fun); + } //监听动画开始播放 + ; + + _proto.addStartListener = function addStartListener(name, fun) { + if (!this.starts[name]) this.starts[name] = []; + this.starts[name].push(fun); + } //监听动画结束播放 + ; + + _proto.addEndListener = function addEndListener(name, fun) { + if (!this.ends[name]) this.ends[name] = []; + this.ends[name].push(fun); + } //删除事件监听 + ; + + _proto.delEventListener = function delEventListener(event, fun) { + if (!this.events[event]) this.events[event] = []; + var index = this.events[event].indexOf(fun); + if (index >= 0) this.events[event].splice(index, 1); + } //删除动画开始播放 + ; + + _proto.delStartListener = function delStartListener(name, fun) { + if (!this.starts[name]) this.starts[name] = []; + var index = this.starts[name].indexOf(fun); + if (index >= 0) this.starts[name].splice(index, 1); + } //删除动画结束播放 + ; + + _proto.delEndListener = function delEndListener(name, fun) { + if (!this.ends[name]) this.ends[name] = []; + var index = this.ends[name].indexOf(fun); + if (index >= 0) this.ends[name].splice(index, 1); + }; + + _proto.onEventListener = function onEventListener(entry, ev) { + if (!this.events[ev.data.name]) this.events[ev.data.name] = []; + this.events[ev.data.name].forEach(function (fun) { + fun(); + }); + }; + + _proto.onStartListener = function onStartListener(entry) { + if (!this.starts[entry.animation.name]) this.starts[entry.animation.name] = []; + this.starts[entry.animation.name].forEach(function (fun) { + fun(); + }); + }; + + _proto.onEndListener = function onEndListener(entry) { + if (!this.ends[entry.animation.name]) this.ends[entry.animation.name] = []; + this.ends[entry.animation.name].forEach(function (fun) { + fun(); + }); + }; + + _proto.execute = function execute(process, dt, frame) { + process.ifTo = process.ifTo || []; + process.to = process.to || []; + process.mode = GFSMProcessMode.WaitExecute; + process.execute = this.tick.bind(this); + + _GFSMBase.prototype.execute.call(this, process, dt, frame); + } //-1 继续播放 0 重新执行流程 * 指定分支 + ; + + _proto.tick = function tick(dt, info, frame) { + //判断是否会切换动画 (默认不切换) + var to = GFSMProcessEnum.Wait; + info.ifTo.forEach(function (run, index) { + if (run()) { + to = info.to[index]; + } + }); + + if (to >= 0) { + //和下一个动作融合 + var mix = info.mixs[to - 1] || 0; + + if (mix) { + //设置融合 + this.spine.setMix(info.animName, this.process[to].animName, mix); + } + + info.track = null; + return to; + } //播放动画 + + + if (!info.track) { + // console.log(`${frame.index} 播放动画-${this.spine.getComponent(GObject).nId}-`,info); + info.track = this.spine.setAnimation(this.trackIndex, info.animName, !!info.isLoop); + this.onStartListener(info.track); + } + + return to; + }; + + return GFSMAnimBase; + }(GFSMBase); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "1016ewzttJFPZ7iare6W/t6", "GFSMDefaultAnim", undefined); //角色动画名称枚举 + + + var GFSMBattleAminEnum$1 = /*#__PURE__*/function (GFSMBattleAminEnum) { + GFSMBattleAminEnum["Wait"] = "std"; + GFSMBattleAminEnum["Walk"] = "walk"; + GFSMBattleAminEnum["Attack"] = "atk"; + GFSMBattleAminEnum["Fly"] = "jifei"; + return GFSMBattleAminEnum; + }({}); //击飞 + //流程枚举 + + + var ProcessEnum$1 = /*#__PURE__*/function (ProcessEnum) { + ProcessEnum[ProcessEnum["Wait"] = 0] = "Wait"; + ProcessEnum[ProcessEnum["Move"] = 1] = "Move"; + ProcessEnum[ProcessEnum["Attack"] = 2] = "Attack"; + ProcessEnum[ProcessEnum["Die"] = 3] = "Die"; + return ProcessEnum; + }(ProcessEnum$1 || {}); //动画状态机基类 + + + var GFSMDefaultAnim = /*#__PURE__*/function (_GFSMAnimBase) { + _inheritsLoose(GFSMDefaultAnim, _GFSMAnimBase); + + function GFSMDefaultAnim() { + var _this$process; + + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _GFSMAnimBase.call.apply(_GFSMAnimBase, [this].concat(args)) || this; //是否攻击 + + _this.isAttack = false; //是否移动 + + _this.isMove = false; //是否死亡 + + _this.isDie = false; // 流程图 + + _this.process = (_this$process = {}, _this$process[ProcessEnum$1.Wait] = { + title: "等待", + isLoop: true, + animName: GFSMBattleAminEnum$1.Wait, + mixs: [0.1, 0.1], + to: [ProcessEnum$1.Move, ProcessEnum$1.Attack, ProcessEnum$1.Die], + ifTo: [function () { + return _this.isMove; + }, //前往移动 + function () { + return _this.isAttack; + }, //前往攻击 + function () { + return _this.isDie; + }] + }, _this$process[ProcessEnum$1.Move] = { + title: "移动", + animName: GFSMBattleAminEnum$1.Walk, + isLoop: true, + mixs: [0.1, 0.1], + to: [ProcessEnum$1.Wait, ProcessEnum$1.Attack, ProcessEnum$1.Die], + ifTo: [function () { + return !_this.isMove; + }, //前往等待 + function () { + return _this.isAttack; + }, //前往攻击 + function () { + return _this.isDie; + }] + }, _this$process[ProcessEnum$1.Attack] = { + title: "攻击", + animName: GFSMBattleAminEnum$1.Attack, + isLoop: true, + mixs: [0.1, 0.1], + to: [ProcessEnum$1.Wait, ProcessEnum$1.Move, ProcessEnum$1.Die], + ifTo: [function () { + return !_this.isAttack; + }, //前往等待 + function () { + return !_this.isAttack && _this.isMove; + }, //前往移动 + function () { + return _this.isDie; + }] + }, _this$process[ProcessEnum$1.Die] = { + title: "死亡", + animName: GFSMBattleAminEnum$1.Fly, + isLoop: true, + mixs: [0.1, 0.1] + }, _this$process); + return _this; + } + + return GFSMDefaultAnim; + }(GFSMAnimBase); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "0f31efIwBhMPasMrQx1nk6x", "GSkillCDBase", undefined); //冷却技能基类 用于多长时间释放技能 + + + var GSkillCDBase = /*#__PURE__*/function () { + function GSkillCDBase() { + //冷却总时间 + this.cdTatal = 0; //冷却时间 + + this.cdTime = 0; + } + + var _proto = GSkillCDBase.prototype; + + _proto.bind = function bind(role, info) { + return this; + } //是否可以释放技能 + ; + + _proto.isRelease = function isRelease() { + return this.cdTime >= this.cdTatal; + } //释放技能 + ; + + _proto.release = function release() { + //是否可以释放技能 + if (!this.isRelease()) return false; + this.cdTime = 0; + return this.onRelease(); + } //子类实现释放 + ; //查询状态 + + + _proto.state = function state() { + if (this.isReleasing()) { + return GSkillState.Releasing; + } + + if (this.isRelease()) return GSkillState.Releasable;else return GSkillState.NoRelease; + } //是否正在释放技能 + ; + + _proto.isReleasing = function isReleasing() { + return false; + } //更新 + ; + + _proto.onUpdate = function onUpdate(dt) { + if (this.state() == GSkillState.NoRelease) { + this.cdTime += dt / 1000; + } + } //返回进度 + ; + + _proto.getProgress = function getProgress() { + return this.cdTime / this.cdTatal; + }; + + return GSkillCDBase; + }(); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "d06a5iSB4dGNLhKnSOATwFu", "GSkillCrazySquirrel", undefined); + /** + * 疯狂松鼠技能 + * 参数:[技能冷却] + */ + + + var GSkillCrazySquirrel = /*#__PURE__*/function (_GSkillCDBase) { + _inheritsLoose(GSkillCrazySquirrel, _GSkillCDBase); + + function GSkillCrazySquirrel() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _GSkillCDBase.call.apply(_GSkillCDBase, [this].concat(args)) || this; + _this.role = void 0; + _this.info = void 0; + return _this; + } + + var _proto = GSkillCrazySquirrel.prototype; + + _proto.bind = function bind(role, info) { + //技能冷却 + this.cdTatal = parseInt(info.skillArgs[0]); + this.role = role; + this.info = info; + return this; + }; + + _proto.onRelease = function onRelease() { + var _this2 = this; //获取敌人位置 + + + var enemy = this.role.fsm.enemy; + var scene = this.role.mode; + if (!enemy) return false; + var aw = parseInt(this.info.skillArgs[1]); + var ah = parseInt(this.info.skillArgs[2]); //出现松鼠丢炸弹 + + GSpine.onPlayAnotherSpine(this.role, app.battleRes.roleResSpine[30003], "skill", { + end: function end() { + //从天而降 + var pos = enemy.v2World.add(v2(0, 1000)); + var end = enemy.v2World.clone(); //生成火球 + + var spine = GSpine.onCreateSpine(app.battleRes.roleResSpine[30004]); + + _this2.role.mode.addGNode(spine.node, pos); + + spine.setAnimation(0, "animation", true); + spine.node.angle = 90; + JTween(pos).to(end, 600).onUpdate(function (pos) { + spine.node.worldPosition = v3(pos.x, pos.y, 0); + }).onComplete(function () { + var world = spine.node.worldPosition; + spine.node.destroy(); + GSpine.onPlaySceneSpine(scene, v2(world.x, world.y), app.battleRes.roleResSpine[30005], "animation"); + console.log(GDetection.testAABBRole(rect(world.x, world.y, aw, ah)).length); + GDetection.testAABBRole(rect(world.x, world.y, aw, ah)).forEach(function (role) { + role.onHit(); + }); + }).start(); + } + }); + return true; + }; + + return GSkillCrazySquirrel; + }(GSkillCDBase); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "e648a7txJxPELJPau9F/BT1", "GSkillAngerBase", undefined); //怒气冷却 + + + var GSkillAngerBase = /*#__PURE__*/function () { + function GSkillAngerBase() { + //怒气值 + this.anger = 0; //怒气最大值 + + this.angerMax = 0; + } + + var _proto = GSkillAngerBase.prototype; + + _proto.bind = function bind(role, info) { + throw new Error("Method not implemented."); + }; + + _proto.isRelease = function isRelease() { + return this.anger >= this.angerMax; + }; + + _proto.release = function release() { + //是否可以释放技能 + if (!this.isRelease()) return false; + this.anger = 0; + return this.onRelease(); + } //子类实现释放 + ; //是否正在释放技能 + + + _proto.isReleasing = function isReleasing() { + return false; + }; + + _proto.state = function state() { + if (this.isReleasing()) { + return GSkillState.Releasing; + } + + if (this.isRelease()) return GSkillState.Releasable;else return GSkillState.NoRelease; + }; + + _proto.onUpdate = function onUpdate(dt) {} //返回进度条 + ; + + _proto.getProgress = function getProgress() { + return this.anger / this.angerMax; + }; + + return GSkillAngerBase; + }(); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "74452kLXoZKiaKB+QGu1jEu", "GSkillBulbasaurDoubleHit", undefined); + + var GSkillBulbasaurDoubleHit = /*#__PURE__*/function (_GSkillAngerBase) { + _inheritsLoose(GSkillBulbasaurDoubleHit, _GSkillAngerBase); + + function GSkillBulbasaurDoubleHit() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _GSkillAngerBase.call.apply(_GSkillAngerBase, [this].concat(args)) || this; + _this.role = void 0; + _this.info = void 0; + return _this; + } + + var _proto = GSkillBulbasaurDoubleHit.prototype; + + _proto.bind = function bind(role, info) { + //技能冷却 + this.role = role; + this.info = info; + this.angerMax = parseInt(info.skillArgs[0]); + this.role.addAttackCallback(this.addAnger.bind(this)); + return this; + }; + + _proto.onRelease = function onRelease() { + var _this2 = this; + + var enemy = this.role.fsm.enemy; //关闭动画管理器 + + this.role.fsmAnim.close(); + + var skill1Attack = function skill1Attack() { + if (!enemy.isDie) { + enemy.onHit(); + } + }; + + var end = function end() { + _this2.role.fsmAnim.open(); + + _this2.role.fsmAnim.delEventListener("skill1Attack", skill1Attack); + + _this2.role.fsmAnim.delEndListener("skill1", end); + }; //监听伤害 + + + this.role.fsmAnim.addEventListener("skill1Attack", skill1Attack); //播放妙蛙种子技能 + + this.role.spine.setAnimation(0, "skill1", false); + this.role.fsmAnim.addEndListener("skill1", end); + return true; + } //添加怒气 + ; + + _proto.addAnger = function addAnger() { + this.anger++; + }; + + return GSkillBulbasaurDoubleHit; + }(GSkillAngerBase); + + cclegacy._RF.pop(); + + var _GSkill; + + cclegacy._RF.push({}, "a6992qkqjFBs6pfQkh+QXgW", "GSkill", undefined); //技能状态 + + + var GSkillState = /*#__PURE__*/function (GSkillState) { + GSkillState[GSkillState["NoRelease"] = 0] = "NoRelease"; + GSkillState[GSkillState["Releasable"] = 1] = "Releasable"; + GSkillState[GSkillState["Releasing"] = 2] = "Releasing"; + return GSkillState; + }({}); //释放中 + //技能基类 + //技能方式 + + + var GSkill = (_GSkill = {}, _GSkill["GSkillCrazySquirrel"] = GSkillCrazySquirrel, _GSkill["GSkillBulbasaurDoubleHit"] = GSkillBulbasaurDoubleHit, _GSkill); + + cclegacy._RF.pop(); + + var _dec$w, _dec2$h, _dec3$8, _class$w, _class2$d, _descriptor$e, _descriptor2$7; + + cclegacy._RF.push({}, "276817jnQlKBr5eca8EUxm4", "GRoleDefault", undefined); + + var property$c = _decorator.property, + ccclass$h = _decorator.ccclass; //默认角色类 + + var GRoleDefault = (_dec$w = ccclass$h('GRoleDefault'), _dec2$h = property$c(ProgressBar), _dec3$8 = property$c(ProgressBar), _dec$w(_class$w = (_class2$d = /*#__PURE__*/function (_GRoleBase) { + _inheritsLoose(GRoleDefault, _GRoleBase); + + function GRoleDefault() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _GRoleBase.call.apply(_GRoleBase, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "bloodVolume", _descriptor$e, _assertThisInitialized(_this)); //能量条 + + + _initializerDefineProperty(_this, "energyVolume", _descriptor2$7, _assertThisInitialized(_this)); //状态机 + + + _this.fsm = void 0; //动画状态机 + + _this.fsmAnim = void 0; //角色类型 + + _this.type = void 0; //在阵容中的下标 + + _this.tacticalIndex = void 0; //阵容 + + _this._tactical = void 0; //角色技能 + + _this.skills = []; //宠物死亡回调 + + _this.killBack = []; + return _this; + } + + var _proto = GRoleDefault.prototype; + + _proto.onSyncLoad = function onSyncLoad() { + _GRoleBase.prototype.onSyncLoad.call(this); //监听攻击 + + + this.fsmAnim.addEventListener(GRoleAnimEvent.Attack, this.onAttack.bind(this)); //监听死亡击飞 + + this.fsmAnim.addStartListener(GFSMBattleAminEnum.Fly, this.onFly.bind(this)); + } //初始化 + ; + + _proto.onInit = function onInit(type, role, tactical, tacticalIndex) { + var _this2 = this; + + _GRoleBase.prototype.init.call(this, role); + + this.type = type; + this.range = role.roleAttackRange; //设置攻击范围 + + this.role = role; //设置角色 + + this.tactical = tactical; + this.tacticalIndex = tacticalIndex; // 设置技能 + + this.skills = role.roleSkillIds.map(function (skillId) { + var info = TD.TbGRoleSkill.get(skillId); + return new GSkill[info.skillController]().bind(_this2, info); + }); + }; + + _proto.onSyncUpdate = function onSyncUpdate(dt, frame, input) { + _GRoleBase.prototype.onSyncUpdate.call(this, dt, frame, input); //更新技能 + + + this.skills.forEach(function (skill) { + return skill.onUpdate(dt); + }); //更新显示 + + this.bloodVolume.progress = this.blood / this.fullBlood; //显示第一个技能进度条 + + if (this.skills[0]) { + this.energyVolume.progress = this.skills[0].getProgress(); + } + }; + + _proto.fsmCreate = function fsmCreate() { + return new GFSMDefault(this); + }; + + _proto.fsmAnimCreate = function fsmAnimCreate() { + return new GFSMDefaultAnim(this.spine); + } //攻击 + ; + + _proto.onAttack = function onAttack() { + if (!this.fsm.enemy) return; // console.log(`播放动画[${this.nId}] onAttack`,this.fsm.enemy.nId) + //敌人扣血 + + var info = TD.TbGRoleAttack.get(this.role.id); + new GAttack[info.attackWay]().attack(this, info); + this.attackCallbacks.forEach(function (fun) { + return fun(); + }); + } //击飞 + ; + + _proto.onFly = function onFly() { + var _this3 = this; + + var vWorld = this.node.worldPosition; + var vEndWorld = this.getWorldBackLen(v2(1500, 500)); + this.JTween(vWorld).to({ + x: vEndWorld.x + }, 1000).onUpdate(function (pos) { + return _this3.node.worldPosition = pos; + }).start(); + this.JTween(vWorld).to({ + y: vEndWorld.y + }, 1000).easing(JEasing.Circular.Out).onUpdate(function (pos) { + return _this3.node.worldPosition = vWorld; + }).start(); + } //过滤敌人 + ; + + _proto.filterEnemy = function filterEnemy(roles) { + var _this4 = this; + + if (roles === void 0) { + roles = []; + } + + return roles.filter(function (role) { + return role.type != _this4.type; + }); + } //恢复阵容朝向 + ; + + _proto.onRecoverTacticalTowards = function onRecoverTacticalTowards() { + this.setTowards(this.tactical.towards); + } //释放技能 每一次只能释放一次 + ; + + _proto.onSkill = function onSkill() { + for (var _iterator = _createForOfIteratorHelperLoose(this.skills), _step; !(_step = _iterator()).done;) { + var item = _step.value; + + if (item.isRelease()) { + //如果可以释放则释放 + item.release(); + return true; + } + } + + return false; + } //判断是否可以释放技能 + ; + + _proto.isReleaseSkill = function isReleaseSkill() { + for (var _iterator2 = _createForOfIteratorHelperLoose(this.skills), _step2; !(_step2 = _iterator2()).done;) { + var skill = _step2.value; + + if (skill.isRelease()) { + return true; + } + } + + return false; + } //释放技能 + ; + + _proto.onReleaseSkill = function onReleaseSkill() { + for (var _iterator3 = _createForOfIteratorHelperLoose(this.skills), _step3; !(_step3 = _iterator3()).done;) { + var skill = _step3.value; + + if (skill.isRelease()) { + skill.release(); + return true; + } + } + + return false; + } //是否正在释放技能 + ; + + _proto.isReleasingSkill = function isReleasingSkill() { + for (var _iterator4 = _createForOfIteratorHelperLoose(this.skills), _step4; !(_step4 = _iterator4()).done;) { + var skill = _step4.value; + + if (skill.state() == GSkillState.Releasing) { + return true; + } + } + + return false; + }; + + _proto.onQueryEunmy = function onQueryEunmy() { + return null; + } //添加一个死亡回调 + ; + + _proto.addKillBackEvent = function addKillBackEvent(callback) { + this.killBack.push(callback); + } //判断玩家是否在阵法位置 + ; + + _proto.isTacticalPos = function isTacticalPos() { + return this.tactical.getPosition(this.tacticalIndex).equals(this.v2World); + }; + + _createClass(GRoleDefault, [{ + key: "isDie", + get: function get() { + return this._isDie; + }, + set: function set(value) { + var _this5 = this; + + this._isDie = value; //设置死亡状态 + + this.fsmAnim.isDie = value; + + if (this.isDie) { + //关闭状态机 + this.fsm.close(); //死亡回调 + + this.killBack.forEach(function (fun) { + return fun(_this5); + }); + } + } + }, { + key: "tactical", + get: function get() { + return this._tactical; + }, + set: function set(value) { + this.setTowards(value.towards); + this._tactical = value; + } //阵容位置 + + }, { + key: "tacticalPos", + get: function get() { + return this.tactical.getPosition(this.tacticalIndex); + } + }]); + + return GRoleDefault; + }(GRoleBase), (_descriptor$e = _applyDecoratedDescriptor(_class2$d.prototype, "bloodVolume", [_dec2$h], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _descriptor2$7 = _applyDecoratedDescriptor(_class2$d.prototype, "energyVolume", [_dec3$8], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + })), _class2$d)) || _class$w); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "bba56EVqsFOXryOCHv5IjKj", "GRoleExpandBase", undefined); + /** + * 扩展类基类 用于代码动态添加 角色脚本的类 + */ + + + var GRoleExpandBase = /*#__PURE__*/function (_JNGSyncProtoBase) { + _inheritsLoose(GRoleExpandBase, _JNGSyncProtoBase); + + function GRoleExpandBase() { + return _JNGSyncProtoBase.apply(this, arguments) || this; + } + + return GRoleExpandBase; + }(JNGSyncProtoBase); + + cclegacy._RF.pop(); + + var _dec$x, _class$x; + + cclegacy._RF.push({}, "3a215GKdmtPYaWfPoglzwjw", "GRoleOnHookCreepsExpand", undefined); + + var ccclass$i = _decorator.ccclass, + property$d = _decorator.property; + /** + * 无限模式 野怪 扩展类 + */ + + var GRoleOnHookCreepsExpand = (_dec$x = ccclass$i('GRoleOnHookCreepsExpand'), _dec$x(_class$x = /*#__PURE__*/function (_GRoleExpandBase) { + _inheritsLoose(GRoleOnHookCreepsExpand, _GRoleExpandBase); + + function GRoleOnHookCreepsExpand() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _GRoleExpandBase.call.apply(_GRoleExpandBase, [this].concat(args)) || this; //野怪 + + _this.creeps = void 0; + return _this; + } + + return GRoleOnHookCreepsExpand; + }(GRoleExpandBase)) || _class$x); + + cclegacy._RF.pop(); + + var _dec$y, _class$y; + + cclegacy._RF.push({}, "3c2ffA7p+RK+7s8zqyxcwCu", "GRoleOnHookPlayerExpand", undefined); + + var ccclass$j = _decorator.ccclass, + property$e = _decorator.property; + /** + * 无限模式 玩家 扩展类 + */ + + var GRoleOnHookPlayerExpand = (_dec$y = ccclass$j('GRoleOnHookPlayerExpand'), _dec$y(_class$y = /*#__PURE__*/function (_GRoleExpandBase) { + _inheritsLoose(GRoleOnHookPlayerExpand, _GRoleExpandBase); + + function GRoleOnHookPlayerExpand() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _GRoleExpandBase.call.apply(_GRoleExpandBase, [this].concat(args)) || this; //角色Id + + _this.petId = void 0; + return _this; + } + + return GRoleOnHookPlayerExpand; + }(GRoleExpandBase)) || _class$y); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "1b62196PL1BZYo+V2Xwi/Gf", "GTactical", undefined); //阵法类 + + + var GTactical = /*#__PURE__*/function () { + function GTactical(tactical, towards, offset) { + if (towards === void 0) { + towards = GTowards.RIGHT; + } + + if (offset === void 0) { + offset = Vec2.ZERO; + } + + this.tactical = void 0; //阵容朝向 + + this.towards = void 0; //位置偏差 + + this.offset = void 0; + this.tactical = tactical; + this.towards = towards; + this.offset = offset; + } + + var _proto = GTactical.prototype; + + _proto.setOffset = function setOffset(offset) { + this.offset = offset; + return this; + } //获取阵法 + ; + + GTactical.getTactical = function getTactical(isReversed) { + if (isReversed === void 0) { + isReversed = false; + } + + var tactical = [[7, 4, 1], [8, 5, 2], [9, 6, 3]]; + + if (isReversed) { + tactical = this.getTacticalFlipX(tactical); + return new GTactical(tactical, GTowards.LEFT); + } + + return new GTactical(tactical); + } //获取阵法 + ; + + GTactical.getTactical1 = function getTactical1(isReversed) { + if (isReversed === void 0) { + isReversed = false; + } + + var tactical = [[0, 3, 0], [0, 1, 0], [0, 2, 0]]; + + if (isReversed) { + tactical = this.getTacticalFlipX(tactical); + return new GTactical(tactical, GTowards.LEFT); + } + + return new GTactical(tactical); + } //获取阵法 + ; + + GTactical.getTactical2 = function getTactical2(isReversed) { + if (isReversed === void 0) { + isReversed = false; + } + + var tactical = [[0, 0, 3], [0, 1, 0], [2, 0, 0]]; + + if (isReversed) { + tactical = this.getTacticalFlipX(tactical); + return new GTactical(tactical, GTowards.LEFT); + } + + return new GTactical(tactical); + } //阵法取反 + ; + + GTactical.getTacticalFlipX = function getTacticalFlipX(tactical) { + return tactical.map(function (row) { + return row.reverse(); + }); + } //返回阵法位置 + ; + + _proto.getPosition = function getPosition(index, father) { + if (father === void 0) { + father = this.offset; + } + + var pos; + + if (pos = this.getXY(index)) { + return father.clone().add(GTactical.pos[pos.y][pos.x].clone()); + } + + return null; + } //返回XY + ; + + _proto.getXY = function getXY(index) { + for (var i = 0; i < 3; i++) { + for (var j = 0; j < 3; j++) { + var tag = this.tactical[i][j]; + + if (tag == index) { + return v2(j, i); + } + } + } + + return null; + } //返回我在第几排 + ; + + _proto.getRow = function getRow(index) { + var pos; + + if (pos = this.getXY(index)) { + return pos.y; + } + + return null; + }; + + return GTactical; + }(); //阵法位置 + + + GTactical.pos = [[v2(-100, 150), v2(0, 150), v2(100, 150)], [v2(-100, 0), v2(0, 0), v2(100, 0)], [v2(-100, -150), v2(0, -150), v2(100, -150)]]; + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "9168apnWORDNLXGmn9hYcE7", "GFSMOnHookMode", undefined); //流程枚举 + + + var ProcessEnum$2 = /*#__PURE__*/function (ProcessEnum) { + ProcessEnum[ProcessEnum["SeekEnemy"] = 0] = "SeekEnemy"; + ProcessEnum[ProcessEnum["GenNextFight"] = 1] = "GenNextFight"; + ProcessEnum[ProcessEnum["LeaveFight"] = 2] = "LeaveFight"; + ProcessEnum[ProcessEnum["GenEnemy"] = 3] = "GenEnemy"; + ProcessEnum[ProcessEnum["Fight"] = 4] = "Fight"; + return ProcessEnum; + }(ProcessEnum$2 || {}); //战斗 + //无限模式的状态类 + + + var GFSMOnHookMode = /*#__PURE__*/function (_GFSMBase) { + _inheritsLoose(GFSMOnHookMode, _GFSMBase); + + function GFSMOnHookMode(mode) { + var _this$process; + + var _this; + + _this = _GFSMBase.call(this) || this; + _this.mode = void 0; + _this.start = ProcessEnum$2.SeekEnemy; + _this.process = (_this$process = {}, _this$process[ProcessEnum$2.SeekEnemy] = { + title: "寻找敌人", + mode: GFSMProcessMode.Execute, + execute: _this.onSeekEnemyProcess.bind(_assertThisInitialized(_this)), + to: [ProcessEnum$2.GenNextFight, ProcessEnum$2.Fight] + }, _this$process[ProcessEnum$2.GenNextFight] = { + title: "生成下一个战斗位置", + mode: GFSMProcessMode.Execute, + execute: _this.onGenNextFightProcess.bind(_assertThisInitialized(_this)), + to: [ProcessEnum$2.GenEnemy] + }, _this$process[ProcessEnum$2.GenEnemy] = { + title: "生成敌人", + mode: GFSMProcessMode.Execute, + execute: _this.onGenEnemyProcess.bind(_assertThisInitialized(_this)), + to: [ProcessEnum$2.LeaveFight] + }, _this$process[ProcessEnum$2.LeaveFight] = { + title: "前往战斗", + mode: GFSMProcessMode.WaitExecute, + execute: _this.onLeaveFightProcess.bind(_assertThisInitialized(_this)), + to: [ProcessEnum$2.Fight] + }, _this$process[ProcessEnum$2.Fight] = { + title: "战斗", + mode: GFSMProcessMode.WaitExecute, + execute: _this.onFightProcess.bind(_assertThisInitialized(_this)), + to: [ProcessEnum$2.SeekEnemy] + }, _this$process); + _this.mode = mode; + return _this; + } + + var _proto = GFSMOnHookMode.prototype; //寻找敌人 + + _proto.onSeekEnemyProcess = function onSeekEnemyProcess(dt) { + //判断是否还有敌人 + if (this.mode.isHaveEnemy()) { + return ProcessEnum$2.Fight; //如果有则攻击 + } else { + return ProcessEnum$2.GenNextFight; //没有则生成下一个战斗位置 + } + } //生成下一个战斗位置 + ; + + _proto.onGenNextFightProcess = function onGenNextFightProcess() { + this.mode.isAllowAttack = false; + this.mode.onNextTarget(); + return ProcessEnum$2.GenEnemy; //生成敌人 + } //生成敌人 + ; + + _proto.onGenEnemyProcess = function onGenEnemyProcess() { + this.mode.onResetGenerateEnemy(); + return ProcessEnum$2.LeaveFight; //前往战斗 + } //前往战斗 + ; + + _proto.onLeaveFightProcess = function onLeaveFightProcess() { + //判断玩家是否前往到战斗位置 + var roles = this.mode.getOnesRoleAlive(GOnHookModePlayerEnum.PLAYER); + if (roles.length == 0) return GFSMProcessEnum.Reset; + + for (var index = 0; index < roles.length; index++) { + var role = roles[index]; + + if (!role.isTacticalPos()) { + //如果不在位置则等待 + return GFSMProcessEnum.Wait; + } + } //到达位置生成敌人 + + + return ProcessEnum$2.Fight; + } //战斗 + ; + + _proto.onFightProcess = function onFightProcess() { + this.mode.isAllowAttack = true; //等待敌人击杀完 + + if (!this.mode.isHaveEnemy()) { + return ProcessEnum$2.SeekEnemy; //击杀完寻找敌人 + } //没有击杀完则等待击杀 + + + return GFSMProcessEnum.Wait; + }; + + return GFSMOnHookMode; + }(GFSMBase); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "4ecc4gMbQVLV7wBFgWuDBUS", "GAPI", undefined); + + var GAPI = { + /************** 无限模式接口 ********************/ + //生成野怪 + GOnHookSpawnCreeps: function () { + var _GOnHookSpawnCreeps = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.t0 = RProto; + _context.next = 3; + return app.api.get("/game/mode/onHook/onSpawnCreeps", { + responseType: 'arraybuffer' + }); + + case 3: + _context.t1 = _context.sent; + _context.t2 = GActionType.GOnHookPets; + return _context.abrupt("return", (0, _context.t0)(_context.t1, _context.t2)); + + case 6: + case "end": + return _context.stop(); + } + }, _callee); + })); + + function GOnHookSpawnCreeps() { + return _GOnHookSpawnCreeps.apply(this, arguments); + } + + return GOnHookSpawnCreeps; + }(), + //捕捉野怪 + GOnHookCatchCreeps: function () { + var _GOnHookCatchCreeps = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(creepId) { + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + _context2.t0 = RData; + _context2.next = 3; + return app.api.post("/game/mode/onHook/onCatchCreeps/" + creepId); + + case 3: + _context2.t1 = _context2.sent; + return _context2.abrupt("return", (0, _context2.t0)(_context2.t1)); + + case 5: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + + function GOnHookCatchCreeps(_x) { + return _GOnHookCatchCreeps.apply(this, arguments); + } + + return GOnHookCatchCreeps; + }(), + //出售野怪 + GOnHookSellCreeps: function () { + var _GOnHookSellCreeps = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(creepId) { + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + _context3.t0 = RData; + _context3.next = 3; + return app.api.post("/game/mode/onHook/onSellCreeps/" + creepId); + + case 3: + _context3.t1 = _context3.sent; + return _context3.abrupt("return", (0, _context3.t0)(_context3.t1)); + + case 5: + case "end": + return _context3.stop(); + } + }, _callee3); + })); + + function GOnHookSellCreeps(_x2) { + return _GOnHookSellCreeps.apply(this, arguments); + } + + return GOnHookSellCreeps; + }() + }; + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "3e8810K3WhMppBDc+LUUxi9", "GOnHookManager", undefined); + + var GOnHookManagerEvent = /*#__PURE__*/function (GOnHookManagerEvent) { + GOnHookManagerEvent["ADD_KILL_SREEP"] = "GOnHookManagerEvent_ADD_KILL_SREEP"; + GOnHookManagerEvent["DEL_KILL_SREEP"] = "GOnHookManagerEvent_DEL_KILL_SREEP"; + return GOnHookManagerEvent; + }({}); //游戏模式 OnHook 管理器 + + + var GOnHookManager = /*#__PURE__*/function (_Singleton) { + _inheritsLoose(GOnHookManager, _Singleton); + + function GOnHookManager() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Singleton.call.apply(_Singleton, [this].concat(args)) || this; //野怪列表 + + _this._sreeps = new Map(); //已经死亡的野怪列表 + + _this.killSreeps = []; + return _this; + } + + var _proto = GOnHookManager.prototype; //生成野怪 + + _proto.onSpawnSreeps = function onSpawnSreeps() { + var _this2 = this; + + GAPI.GOnHookSpawnCreeps().then(function (data) { + data.pets.forEach(function (pet) { + _this2._sreeps.set(pet.key, pet); + }); + }); + } //获取下一只野怪 + ; + + _proto.getNextCreeps = function getNextCreeps() { + var _this$sreeps$keys$nex; + + if (!this.sreeps) return; + var creeps = this.sreeps.get((_this$sreeps$keys$nex = this.sreeps.keys().next()) == null ? void 0 : _this$sreeps$keys$nex.value); + return creeps; + } //野怪死亡 + ; + + _proto.onKillSreeps = function onKillSreeps(creeps) { + this.sreeps["delete"](creeps.key); //记入死亡 + //判断是否在死亡中如果在则跳出 + + if (this.killSreeps.indexOf(creeps) > -1) { + return; + } + + this.killSreeps.push(creeps); //通知添加死亡野怪 + + app.event.emit(GOnHookManagerEvent.ADD_KILL_SREEP, creeps); + console.log("GOnHookManager : " + creeps.key + " \u5BA0\u7269\u6B7B\u4EA1 \u53EF\u8FDB\u884C\u6355\u6349 \u51FA\u552E"); + } //捕捉野怪 + ; + + _proto.onCatchCreeps = /*#__PURE__*/function () { + var _onCatchCreeps = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(creeps) { + var index, pet; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (!((index = this.killSreeps.indexOf(creeps)) < 0)) { + _context.next = 3; + break; + } + + app.layer.Open(GUI.Tips, { + text: "不可捕捉该野怪" + }); + return _context.abrupt("return", false); + + case 3: + //删除 + this.killSreeps.splice(index, 1); //通知添加野怪被删除 + + app.event.emit(GOnHookManagerEvent.DEL_KILL_SREEP, creeps); + _context.next = 7; + return GAPI.GOnHookCatchCreeps(creeps.key); + + case 7: + pet = _context.sent; //保存宠物 + + if (pet) { + PlayerPetData.getIns().addPet(pet); + } + + return _context.abrupt("return", !!pet); + + case 10: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onCatchCreeps(_x) { + return _onCatchCreeps.apply(this, arguments); + } + + return onCatchCreeps; + }() //出售野怪 + ; + + _proto.onSellCreeps = /*#__PURE__*/function () { + var _onSellCreeps = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(creeps) { + var index; + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + if (!((index = this.killSreeps.indexOf(creeps)) < 0)) { + _context2.next = 3; + break; + } + + app.layer.Open(GUI.Tips, { + text: "不可出售当前野怪" + }); + return _context2.abrupt("return", false); + + case 3: + //删除 + this.killSreeps.splice(index, 1); //通知添加野怪被删除 + + app.event.emit(GOnHookManagerEvent.DEL_KILL_SREEP, creeps); + _context2.next = 7; + return GAPI.GOnHookSellCreeps(creeps.key); + + case 7: + return _context2.abrupt("return", _context2.sent); + + case 8: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + + function onSellCreeps(_x2) { + return _onSellCreeps.apply(this, arguments); + } + + return onSellCreeps; + }(); + + _createClass(GOnHookManager, [{ + key: "sreeps", + get: function get() { + //如果没有野怪了 则 向服务器生成 + if (!this._sreeps || !this._sreeps.size) { + //生成 + this.onSpawnSreeps(); + return null; + } + + return this._sreeps; + }, + set: function set(data) { + this._sreeps = data; + } + }]); + + return GOnHookManager; + }(Singleton); + + cclegacy._RF.pop(); + + var _dec$z, _dec2$i, _class$z, _class2$e, _descriptor$f; + + cclegacy._RF.push({}, "fad17KCTqZBj4nGCb/xtHxi", "ModeRenderHitText", undefined); + + var ccclass$k = _decorator.ccclass, + property$f = _decorator.property; + var ModeRenderHitText = (_dec$z = ccclass$k('ModeRenderHitText'), _dec2$i = property$f(Label), _dec$z(_class$z = (_class2$e = /*#__PURE__*/function (_Component) { + _inheritsLoose(ModeRenderHitText, _Component); + + function ModeRenderHitText() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "hitLabel", _descriptor$f, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = ModeRenderHitText.prototype; + + _proto.setText = function setText(hit) { + this.hitLabel.string = "" + hit; + this.setAnimation(); + } //设置动画 + ; + + _proto.setAnimation = function setAnimation() { + var _this2 = this; + + this.node.scale = v3(0, 0, 0); + tween(this.node).to(.5, { + position: this.node.position.clone().add(v3(0, 100, 0)), + scale: v3(1, 1, 1) + }, { + onComplete: function onComplete() { + _this2.node.destroy(); + }, + easing: "quadInOut" + }).start(); + }; + + return ModeRenderHitText; + }(Component), _descriptor$f = _applyDecoratedDescriptor(_class2$e.prototype, "hitLabel", [_dec2$i], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _class2$e)) || _class$z); + + cclegacy._RF.pop(); + + var _dec$A, _dec2$j, _class$A, _class2$f, _descriptor$g; + + cclegacy._RF.push({}, "00e93M1gwFDX4OxuD8p5I6L", "ModeRender", undefined); + + var ccclass$l = _decorator.ccclass, + property$g = _decorator.property; + + var ModeRenderEvent = /*#__PURE__*/function (ModeRenderEvent) { + ModeRenderEvent["HIT"] = "ModeRenderEvent_HIT"; + return ModeRenderEvent; + }({}); + + var ModeRender = (_dec$A = ccclass$l('ModeRender'), _dec2$j = property$g(Prefab), _dec$A(_class$A = (_class2$f = /*#__PURE__*/function (_Component) { + _inheritsLoose(ModeRender, _Component); + + function ModeRender() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; //受击预制体 + + _initializerDefineProperty(_this, "hitPrefab", _descriptor$g, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = ModeRender.prototype; + + _proto.onLoad = function onLoad() { + app.event.on(ModeRenderEvent.HIT, this.onHit, this); + }; + + _proto.onDestroy = function onDestroy() { + app.event.off(ModeRenderEvent.HIT, this.onHit, this); + } //受击 + ; + + _proto.onHit = function onHit(pos, hit) { + var rolePos = GData.WorldCanvas.camera.worldToScreen(v3(pos.x, pos.y)); + var hitNode = instantiate(this.hitPrefab); + this.node.addChild(hitNode); + hitNode.position = rolePos.add(v3(0, 100, 0)); + hitNode.getComponent(ModeRenderHitText).setText(hit); + }; + + return ModeRender; + }(Component), _descriptor$g = _applyDecoratedDescriptor(_class2$f.prototype, "hitPrefab", [_dec2$j], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _class2$f)) || _class$A); + + cclegacy._RF.pop(); + + var _dec$B, _dec2$k, _dec3$9, _dec4$6, _dec5$2, _dec6$2, _class$B, _class2$g, _descriptor$h, _descriptor2$8, _descriptor3$6, _descriptor4$3, _descriptor5$3; + + cclegacy._RF.push({}, "84547zJhY9O5JtlJy/NgK9H", "GOnHookMode", undefined); + + var ccclass$m = _decorator.ccclass, + property$h = _decorator.property; //角色 + + var GOnHookModePlayerEnum = /*#__PURE__*/function (GOnHookModePlayerEnum) { + GOnHookModePlayerEnum[GOnHookModePlayerEnum["PLAYER"] = 0] = "PLAYER"; + GOnHookModePlayerEnum[GOnHookModePlayerEnum["ENEMY"] = 1] = "ENEMY"; + return GOnHookModePlayerEnum; + }({}); //怪物 + //玩家信息 + + /** + * 挂机模式 无限出现小怪 (不是联机模式 该模式支持使用本地数据 和 API) + */ + + + var GOnHookMode = (_dec$B = ccclass$m('GOnHookMode'), _dec2$k = property$h(Prefab), _dec3$9 = property$h(GMapLoop), _dec4$6 = property$h(GMapLoop), _dec5$2 = property$h(GMapLoop), _dec6$2 = property$h(Node), _dec$B(_class$B = (_class2$g = /*#__PURE__*/function (_GBaseMode) { + _inheritsLoose(GOnHookMode, _GBaseMode); + + function GOnHookMode() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _GBaseMode.call.apply(_GBaseMode, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "rolePrefab", _descriptor$h, _assertThisInitialized(_this)); //场景地图 + + + _initializerDefineProperty(_this, "map1", _descriptor2$8, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "map2", _descriptor3$6, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "map3", _descriptor4$3, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "objects", _descriptor5$3, _assertThisInitialized(_this)); //玩家信息 + + + _this.playerInfo = void 0; //宠物信息 + + _this.enemyInfo = void 0; //玩家宠物位置 + + _this.playerPos = new Vec2(-400, 0); //怪物位置 + + _this.enemyPos = new Vec2(400, 0); //玩家宠物 + + _this.playerRoles = []; //敌方宠物 + + _this.enemyRoles = []; //地图信息 + + _this.mapInfo = void 0; //每一波怪的距离 + + _this.everyX = 600; //下一波怪的对战位置X + + _this._nextFightX = 0; + _this.fsm = void 0; //是否允许攻击 + + _this.isAllowAttack = false; + return _this; + } + + var _proto = GOnHookMode.prototype; //添加监听事件 + + _proto.addEvent = function addEvent() { + app.event.on(PlayerTacticalEvent.UPDATE_TACTICAL, this.onUpdatePlayerPet, this); + } //移除监听事件 + ; + + _proto.onDestroy = function onDestroy() { + _GBaseMode.prototype.onDestroy.call(this); + + app.event.off(PlayerTacticalEvent.UPDATE_TACTICAL, this.onUpdatePlayerPet, this); + }; + + _proto.onSyncInitSuccess = function onSyncInitSuccess() { + //初始化战斗 + console.log("GOnHookMode 模式初始化"); //调整相机 + + var camreaPos = this.camera.node.worldPosition; + this.camera.node.worldPosition = v3(0, 800, camreaPos.z); //初始化状态机 + + this.fsm = new GFSMOnHookMode(this); //初始化地图 + + this.mapInfo = TD.TbGMap.get(60001); + var scale = this.mapInfo.scale; + this.map1.init(app.battleRes.maps[60001][0], 1, app.battleRes.maps[60001][0].width * scale, app.battleRes.maps[60001][0].height * scale); + this.map2.init(app.battleRes.maps[60001][1], 1, app.battleRes.maps[60001][1].width * scale, app.battleRes.maps[60001][1].height * scale); + this.map3.init(app.battleRes.maps[60001][2], 1, app.battleRes.maps[60001][1].width * scale, 1048 * scale); + this.onUpdateMap(0); + this.playerInfo = { + tactical: GTactical.getTactical().setOffset(this.playerPos) + }; + this.enemyInfo = { + tactical: GTactical.getTactical(true).setOffset(this.enemyPos) + }; + this.onUpdatePlayerPet(); //添加监听 + + this.addEvent(); // //模拟请求生成宠物 + // app.socket.SendBack(GAction.MODE_ON_HOOK_SPAWN_PET,{ + // type:GActionType.GOnHookPets, + // fun:(info:GOnHookPets) => { + // console.log("接受到野怪列表",info) + // } + // }) + //生成玩家 + // this.playerInfo.roles.forEach((info,index) => this.onGenRole(GOnHookModePlayerEnum.PLAYER,index + 1,info)) + // //生成敌人 + // this.onResetGenerateEnemy(); + } //更新玩家宠物 + ; + + _proto.onUpdatePlayerPet = function onUpdatePlayerPet() { + var _this2 = this; //获取玩家阵容 + + + var infos = PlayerTacticalData.getIns().getTacticalInfo(); //移除不再阵容中的宠物 + + var roles = [].concat(this.getOnesRoleAlive(GOnHookModePlayerEnum.PLAYER)); + roles.forEach(function (role) { + var expand = role.getComponent(GRoleOnHookPlayerExpand); //如果宠物不再阵容中 则 移除宠物 + + if (infos.indexOf(expand.petId) < 0) { + //移除宠物 + _this2.playerRoles.splice(_this2.playerRoles.indexOf(role), 1); + + role.isDie = true; + } + }); + infos.forEach(function (petId, index) { + if (petId) { + _this2.onGenPlayerPet(index + 1, petId); + } + }); + } //更新帧 + ; + + _proto.onSyncUpdate = function onSyncUpdate(dt, frame, input) { + _GBaseMode.prototype.onSyncUpdate.call(this, dt, frame, input); + + this.onUpdateMap(dt); + this.onUpdateCamera(dt); + this.fsm.onUpdate(dt, frame); + } //更新地图 + ; + + _proto.onUpdateMap = function onUpdateMap(dt) { + var cameraX = this.camera.node.worldPosition.x; + this.map1.UpdateMap(cameraX, 0, this.mapInfo.map1OffsetY); + this.map2.UpdateMap(cameraX, cameraX / 10, this.mapInfo.map2OffsetY); + this.map3.UpdateMap(cameraX, 0, this.mapInfo.map3OffsetY); + } //更新相机逻辑 + ; + + _proto.onUpdateCamera = function onUpdateCamera(dt) { + //如果没有敌人相机永远锁定最前面的宠物 + if (this.isAllowAttack && this.isHaveEnemy()) { + //如果有敌人则移动到战斗位置 + var cameraWorld = this.camera.node.worldPosition.clone(); + this.camera.node.worldPosition = cameraWorld.lerp(v3(this.nextFightX, cameraWorld.y, cameraWorld.z), dt / 1000); + } else { + //获取冲到最前面的宠物 + var roles = this.getOnesRoleAlive(GOnHookModePlayerEnum.PLAYER); + var frontRole = roles.sort(function (role1, role2) { + return role2.v2World.x - role1.v2World.x; + })[0]; + if (!frontRole) return; //设置相机 位置 + + var _cameraWorld = this.camera.node.worldPosition.clone(); + + this.camera.node.worldPosition = _cameraWorld.lerp(v3(frontRole.v2World.x, _cameraWorld.y, _cameraWorld.z), dt / 1000); + } + } //生成玩家宠物 + ; + + _proto.onGenPlayerPet = function onGenPlayerPet(index, petId) { + //如果场上有这个宠物则更新阵法位置 + var passRole; + this.playerRoles.forEach(function (role) { + if (role.getComponent(GRoleOnHookPlayerExpand).petId == petId) passRole = role; + }); + + if (passRole) { + //更新宠物阵法位置 + passRole.tacticalIndex = index; + return; + } //获取要生成的宠物 + + + var info = PlayerPetData.getIns().petIdQueryPetInfo(petId); + + if (!info) { + app.layer.Open(GUI.Tips, { + text: "未拥有当前上阵的宠物" + }); + return; + } + + var role = this.onGenRole(GOnHookModePlayerEnum.PLAYER, index, TD.TbGRole.get(info.petTbId)); //向宠物添加 OnHook 扩展 + + var expand = role.node.addComponent(GRoleOnHookPlayerExpand); + expand.petId = petId; + } //生成野怪 + ; + + _proto.onGenCreeps = function onGenCreeps(index, creeps) { + var role = this.onGenRole(GOnHookModePlayerEnum.ENEMY, index, TD.TbGRole.get(creeps.petTbId)); //向野怪添加扩展 + + var expand = role.node.addComponent(GRoleOnHookCreepsExpand); + expand.creeps = creeps; + } //生成宠物 + ; + + _proto.onGenRole = function onGenRole(type, index, info) { + var _this3 = this; + + var tactical = this.getInfo(type).tactical; + var pos = this.getInfo(type).tactical.getPosition(index); + if (!pos) return; + var role = instantiate(this.rolePrefab); + var entity = role.getComponent(GRoleDefault); //初始化 + + entity.onInit(type, info, tactical, index); //绑定寻敌 + + entity.onQueryEunmy = function () { + return _this3.getEnumy(entity, type); + }; //绑定死亡回调 + + + entity.addKillBackEvent(this.onRoleKillBack.bind(this)); //绑定受击回调 + + entity.addHitCallback(this.onHitBack.bind(this)); + this.addGObject(entity, tactical.getPosition(index)); + this.getOnesRole(type).push(entity); + return entity; + } //获取配置 + ; + + _proto.getInfo = function getInfo(type) { + if (type == GOnHookModePlayerEnum.PLAYER) return this.playerInfo; + if (type == GOnHookModePlayerEnum.ENEMY) return this.enemyInfo; + } //获取阵营宠物 + ; + + _proto.getOnesRole = function getOnesRole(type) { + if (type == GOnHookModePlayerEnum.PLAYER) return this.playerRoles; + if (type == GOnHookModePlayerEnum.ENEMY) return this.enemyRoles; + } //获取存活的宠物 + ; + + _proto.getOnesRoleAlive = function getOnesRoleAlive(type) { + if (type == GOnHookModePlayerEnum.PLAYER) return this.playerRoles.filter(function (role) { + return !!role.get(); + }); + if (type == GOnHookModePlayerEnum.ENEMY) return this.enemyRoles.filter(function (role) { + return !!role.get(); + }); + } //获取敌人 + ; + + _proto.getEnumy = function getEnumy(player, type) { + if (!this.isAllowAttack) return null; + var enumyOnes = GOnHookModePlayerEnum.ENEMY; //如果是ENEMY 则 它的敌人是 PLAYER + + if (type == GOnHookModePlayerEnum.ENEMY) enumyOnes = GOnHookModePlayerEnum.PLAYER; //获取敌人 + + var roles = this.getOnesRoleAlive(enumyOnes); //通过距离获取最近的敌人 + + if (roles[0]) { + var len = Math.abs(Vec2.distance(player.v2World, roles[0].v2World)); + var enumy = roles[0]; + + for (var index = 0; index < roles.length; index++) { + var role = roles[index]; + var tLen = void 0; + + if (tLen = Math.abs(Vec2.distance(player.v2World, role.v2World)) < len) { + enumy = role; + len = tLen; + } + } + + return enumy; + } else { + return null; + } + } //生成敌人 + ; + + _proto.onResetGenerateEnemy = function onResetGenerateEnemy() { + this.enemyRoles = []; //获取敌人 + + var creeps = GOnHookManager.getIns().getNextCreeps(); + if (!creeps) return; //没有获取到野怪则返回 + + this.onGenCreeps(2, creeps); // this.enemyInfo.roles.forEach((info,index) => this.onGenRole(GOnHookModePlayerEnum.ENEMY,index + 1,info)); + } //角色死亡回调 + ; + + _proto.onRoleKillBack = function onRoleKillBack(role) { + //死亡销毁 + JNFrameTime.getInstance().setTimeout(function () { + if (role.isValid) role.node.destroy(); + }, 3000); //如果死亡的是野怪则通知野怪死亡 + + if (role.getComponent(GRoleOnHookCreepsExpand)) { + GOnHookManager.getIns().onKillSreeps(role.getComponent(GRoleOnHookCreepsExpand).creeps); + } //清理 + + + this.onClearCache(); + } //角色受击回调 + ; + + _proto.onHitBack = function onHitBack(role, hit) { + if (!role.get()) return; //添加受击显示 + + app.event.emit(ModeRenderEvent.HIT, role.v2World.clone(), hit); + } //清理缓存 + ; + + _proto.onClearCache = function onClearCache() { + var _this4 = this; //清理宠物 + + + var roles = [].concat(this.playerRoles); + roles.forEach(function (role) { + if (!role.get()) { + _this4.playerRoles.splice(_this4.playerRoles.indexOf(role), 1); + } + }); + roles = [].concat(this.enemyRoles); + roles.forEach(function (role) { + if (!role.get()) { + _this4.enemyRoles.splice(_this4.enemyRoles.indexOf(role), 1); + } + }); + } //是否有怪物 + ; + + _proto.isHaveEnemy = function isHaveEnemy() { + if (!this.isAllowAttack) return []; + return this.getOnesRoleAlive(GOnHookModePlayerEnum.ENEMY).filter(function (role) { + return !!role.get(); + }).length > 0; + } //前往下一个目标 + ; + + _proto.onNextTarget = function onNextTarget() { + //下一个目标点 + this.nextFightX = this.nextFightX + this.everyX; + }; + + _createClass(GOnHookMode, [{ + key: "scene", + get: function get() { + return this.objects; + } + }, { + key: "nextFightX", + get: function get() { + return this._nextFightX; + }, + set: function set(value) { + //修改玩家阵法位置 + this.playerInfo.tactical.setOffset(this.playerPos.clone().add(v2(value, 0))); + this.enemyInfo.tactical.setOffset(this.enemyPos.clone().add(v2(value, 0))); + this._nextFightX = value; + } + }]); + + return GOnHookMode; + }(GBaseMode), (_descriptor$h = _applyDecoratedDescriptor(_class2$g.prototype, "rolePrefab", [_dec2$k], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + }), _descriptor2$8 = _applyDecoratedDescriptor(_class2$g.prototype, "map1", [_dec3$9], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _descriptor3$6 = _applyDecoratedDescriptor(_class2$g.prototype, "map2", [_dec4$6], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _descriptor4$3 = _applyDecoratedDescriptor(_class2$g.prototype, "map3", [_dec5$2], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _descriptor5$3 = _applyDecoratedDescriptor(_class2$g.prototype, "objects", [_dec6$2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + })), _class2$g)) || _class$B); + + cclegacy._RF.pop(); + + var _dec$C, _dec2$l, _dec3$a, _class$C, _class2$h, _descriptor$i, _descriptor2$9; + + cclegacy._RF.push({}, "31e6dKeQdRNfaJKs3+cDKq9", "GPVPMode", undefined); + + var ccclass$n = _decorator.ccclass, + property$i = _decorator.property; //PVP 角色 + + var GPVPModePlayerEnum = /*#__PURE__*/function (GPVPModePlayerEnum) { + GPVPModePlayerEnum[GPVPModePlayerEnum["PLAYER"] = 0] = "PLAYER"; + GPVPModePlayerEnum[GPVPModePlayerEnum["ENEMY"] = 1] = "ENEMY"; + return GPVPModePlayerEnum; + }({}); //敌人 + //PVP 玩家信息 + + /** + * PVP 模式 + */ + + + var GPVPMode = (_dec$C = ccclass$n('GPVPMode'), _dec2$l = property$i(Prefab), _dec3$a = property$i(Node), _dec$C(_class$C = (_class2$h = /*#__PURE__*/function (_GBaseMode) { + _inheritsLoose(GPVPMode, _GBaseMode); + + function GPVPMode() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _GBaseMode.call.apply(_GBaseMode, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "rolePrefab", _descriptor$i, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "objects", _descriptor2$9, _assertThisInitialized(_this)); //玩家信息 + + + _this.playerInfo = void 0; //敌方信息 + + _this.enemyInfo = void 0; //玩家宠物 + + _this.playerRoles = []; //敌方宠物 + + _this.enemyRoles = []; //玩家位置 + + _this.playerPos = new Vec2(-400, 0); //敌方位置 + + _this.enemyPos = new Vec2(400, 0); //是否结束游戏 + + _this.isEndGame = false; + return _this; + } + + var _proto = GPVPMode.prototype; + + _proto.onLoad = function onLoad() { + //整理GPVPStart数据 + //宠物Id列表 + var leftTactical = JSON.parse(this.data.leftTactical); + var rightTactical = JSON.parse(this.data.rightTactical); //宠物列表 + + var leftTbs = JSON.parse(this.data.leftTactical); + var rightTbs = JSON.parse(this.data.rightTactical); //玩家宠物信息 + + for (var index = 0; index < leftTactical.length; index++) { + var petId = leftTactical[index]; + + if (petId != 0) { + var pet = JSON.parse(this.data.leftPets[petId]); + leftTbs[index] = TD.TbGRole.get(pet.petTbId); + } else { + leftTbs[index] = null; + } + } + + for (var _index = 0; _index < rightTactical.length; _index++) { + var _petId = rightTactical[_index]; + + if (_petId != 0) { + var _pet = JSON.parse(this.data.leftPets[_petId]); + + rightTbs[_index] = TD.TbGRole.get(_pet.petTbId); + } else { + rightTbs[_index] = null; + } + } + + this.playerInfo = { + tactical: GTactical.getTactical().setOffset(this.playerPos), + roles: leftTbs + }; + this.enemyInfo = { + tactical: GTactical.getTactical(true).setOffset(this.enemyPos), + roles: rightTbs + }; + + _GBaseMode.prototype.onLoad.call(this); + }; + + _proto.onSyncInitSuccess = function onSyncInitSuccess() { + var _this2 = this; //调整相机 + + + var camreaPos = this.camera.node.worldPosition; + this.camera.node.worldPosition = v3(0, 800, camreaPos.z); //初始化战斗 + + console.log("GPVPMode 模式初始化"); //生成宠物 + + this.playerInfo.roles.forEach(function (info, index) { + return info && _this2.onGenRole(GPVPModePlayerEnum.PLAYER, index + 1, info); + }); + this.enemyInfo.roles.forEach(function (info, index) { + return info && _this2.onGenRole(GPVPModePlayerEnum.ENEMY, index + 1, info); + }); + } //生成角色 + ; + + _proto.onGenRole = function onGenRole(type, index, info) { + var _this3 = this; + + var tactical = this.getInfo(type).tactical; + var pos = this.getInfo(type).tactical.getPosition(index); + if (!pos) return; + var role = instantiate(this.rolePrefab); + var entity = role.getComponent(GRoleDefault); //初始化 + + entity.onInit(type, info, tactical, index); //绑定寻敌 + + entity.onQueryEunmy = function () { + return _this3.getEnumy(entity, type); + }; //绑定受击回调 + + + entity.addHitCallback(this.onHitBack.bind(this)); //绑定死亡回调 + + entity.addKillBackEvent(this.onRoleKillBack.bind(this)); + this.addGObject(entity, tactical.getPosition(index)); + this.getOnesRole(type).push(entity); + } //获取配置 + ; + + _proto.getInfo = function getInfo(type) { + if (type == GPVPModePlayerEnum.PLAYER) return this.playerInfo; + if (type == GPVPModePlayerEnum.ENEMY) return this.enemyInfo; + } //获取阵营角色 + ; + + _proto.getOnesRole = function getOnesRole(type) { + if (type == GPVPModePlayerEnum.PLAYER) return this.playerRoles; + if (type == GPVPModePlayerEnum.ENEMY) return this.enemyRoles; + } //获取存活的宠物 + ; + + _proto.getOnesRoleAlive = function getOnesRoleAlive(type) { + if (type == GPVPModePlayerEnum.PLAYER) return this.playerRoles.filter(function (role) { + return !!role.get(); + }); + if (type == GPVPModePlayerEnum.ENEMY) return this.enemyRoles.filter(function (role) { + return !!role.get(); + }); + } //获取敌人 + ; + + _proto.getEnumy = function getEnumy(player, type) { + var enumyOnes = GPVPModePlayerEnum.ENEMY; //如果是ENEMY 则 它的敌人是 PLAYER + + if (type == GPVPModePlayerEnum.ENEMY) enumyOnes = GPVPModePlayerEnum.PLAYER; //获取敌人 + + var roles = this.getOnesRoleAlive(enumyOnes); //通过距离获取最近的敌人 + + if (roles[0]) { + var len = Math.abs(Vec2.distance(player.v2World, roles[0].v2World)); + var enumy = roles[0]; + + for (var index = 0; index < roles.length; index++) { + var role = roles[index]; + var tLen = void 0; + + if (tLen = Math.abs(Vec2.distance(player.v2World, role.v2World)) < len) { + enumy = role; + len = tLen; + } + } + + return enumy; + } else { + return null; + } + } //角色死亡回调 + ; + + _proto.onRoleKillBack = function onRoleKillBack(role) { + //死亡销毁 + JNFrameTime.getInstance().setTimeout(function () { + if (role.isValid) role.node.destroy(); + }, 3000); + this.onUpdateEndState(); + } //刷新结束状态 + ; + + _proto.onUpdateEndState = function onUpdateEndState() { + var _this4 = this; //如果已经结束则返回 + + + if (this.isEndGame) return; //判断是否有队伍都死亡 + + if (this.getOnesRoleAlive(GPVPModePlayerEnum.PLAYER).length == 0 || this.getOnesRoleAlive(GPVPModePlayerEnum.ENEMY).length == 0) { + this.isEndGame = true; //结束游戏 + + JNFrameTime.getInstance().setTimeout(function () { + _this4.Close(); + }, 3000); + } + } //角色受击回调 + ; + + _proto.onHitBack = function onHitBack(role, hit) { + if (!role.get()) return; //添加受击显示 + + app.event.emit(ModeRenderEvent.HIT, role.v2World.clone(), hit); + }; + + _createClass(GPVPMode, [{ + key: "scene", + get: function get() { + return this.objects; + } + }]); + + return GPVPMode; + }(GBaseMode), (_descriptor$i = _applyDecoratedDescriptor(_class2$h.prototype, "rolePrefab", [_dec2$l], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + }), _descriptor2$9 = _applyDecoratedDescriptor(_class2$h.prototype, "objects", [_dec3$a], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + })), _class2$h)) || _class$C); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "772c2FoloVFZ5Kwk8sAuNZ5", "HttpCode", undefined); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "ef14djFn1NPQrrrHGY75fKD", "NoviceManager", undefined); + + var NoviceManager = /*#__PURE__*/function (_Singleton) { + _inheritsLoose(NoviceManager, _Singleton); + + function NoviceManager() { + return _Singleton.apply(this, arguments) || this; + } + + var _proto = NoviceManager.prototype; //新手引导执行 + + _proto.onStart = /*#__PURE__*/function () { + var _onStart = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (PlayerData.getIns().data.novice) { + _context.next = 3; + break; + } + + _context.next = 3; + return app.layer.OpenToClose(GUI.NoviceNamingView); + + case 3: + if (!(PlayerPetData.getIns().getData().length == 0)) { + _context.next = 6; + break; + } + + _context.next = 6; + return app.layer.OpenToClose(GUI.NoviceSelectPetView); + + case 6: + console.log("新手引导结束"); + + case 7: + case "end": + return _context.stop(); + } + }, _callee); + })); + + function onStart() { + return _onStart.apply(this, arguments); + } + + return onStart; + }(); + + return NoviceManager; + }(Singleton); + + cclegacy._RF.pop(); + + var _dec$D, _dec2$m, _class$D, _class2$i, _descriptor$j; + + cclegacy._RF.push({}, "b3809FuWrhB2ovECDdqMTOs", "PetIcon", undefined); + + var ccclass$o = _decorator.ccclass, + property$j = _decorator.property; + var PetIcon = (_dec$D = ccclass$o('PetIcon'), _dec2$m = property$j(sp.Skeleton), _dec$D(_class$D = (_class2$i = /*#__PURE__*/function (_Component) { + _inheritsLoose(PetIcon, _Component); + + function PetIcon() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "spine", _descriptor$j, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = PetIcon.prototype; //设置icon + + _proto.setIcon = function setIcon(petTbId) { + this.spine.skeletonData = app.battleRes.roleSpine[petTbId]; + this.spine.setAnimation(0, UIPetAnim.std, true); + }; + + return PetIcon; + }(Component), _descriptor$j = _applyDecoratedDescriptor(_class2$i.prototype, "spine", [_dec2$m], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _class2$i)) || _class$D); + + cclegacy._RF.pop(); + + var _dec$E, _dec2$n, _dec3$b, _dec4$7, _class$E, _class2$j, _descriptor$k, _descriptor2$a, _descriptor3$7; + + cclegacy._RF.push({}, "7c665fcvLRGDqzjhgvUI4oN", "PetIconSelect", undefined); + + var ccclass$p = _decorator.ccclass, + property$k = _decorator.property; + var PetIconSelect = (_dec$E = ccclass$p('PetIconSelect'), _dec2$n = property$k(PetIcon), _dec3$b = property$k(Node), _dec4$7 = property$k(Node), _dec$E(_class$E = (_class2$j = /*#__PURE__*/function (_Component) { + _inheritsLoose(PetIconSelect, _Component); + + function PetIconSelect() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "petIcon", _descriptor$k, _assertThisInitialized(_this)); //选中节点 + + + _initializerDefineProperty(_this, "select", _descriptor2$a, _assertThisInitialized(_this)); //不可选中节点 + + + _initializerDefineProperty(_this, "noselect", _descriptor3$7, _assertThisInitialized(_this)); //是否被选中 + + + _this._isSelect = false; //是否不可选中 + + _this._isNoSelect = false; + return _this; + } + + var _proto = PetIconSelect.prototype; + + _proto.onLoad = function onLoad() { + this.onUpdateSelect(); + this.noselect.active = false; + this.select.active = false; + } //设置icon + ; + + _proto.setIcon = function setIcon(petTbId) { + this.petIcon.setIcon(petTbId); + }; + + _proto.onUpdateSelect = function onUpdateSelect() { + this.select.active = this.isSelect; + this.noselect.active = this.isNoSelect; + }; + + _createClass(PetIconSelect, [{ + key: "isSelect", + get: function get() { + return this._isSelect; + }, + set: function set(data) { + this._isSelect = data; + this.onUpdateSelect(); + } + }, { + key: "isNoSelect", + get: function get() { + return this._isNoSelect; + }, + set: function set(data) { + this._isNoSelect = data; + this.onUpdateSelect(); + } + }]); + + return PetIconSelect; + }(Component), (_descriptor$k = _applyDecoratedDescriptor(_class2$j.prototype, "petIcon", [_dec2$n], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _descriptor2$a = _applyDecoratedDescriptor(_class2$j.prototype, "select", [_dec3$b], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _descriptor3$7 = _applyDecoratedDescriptor(_class2$j.prototype, "noselect", [_dec4$7], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + })), _class2$j)) || _class$E); + + cclegacy._RF.pop(); + + var _dec$F, _dec2$o, _dec3$c, _class$F, _class2$k, _descriptor$l, _descriptor2$b; + + cclegacy._RF.push({}, "dd6ff3gNGFAzKeTlGPK1jnx", "PlayerResourceShow", undefined); + + var ccclass$q = _decorator.ccclass, + property$l = _decorator.property; + var PlayerResourceShow = (_dec$F = ccclass$q('PlayerResourceShow'), _dec2$o = property$l({ + type: Enum(ResourceType) + }), _dec3$c = property$l(Label), _dec$F(_class$F = (_class2$k = /*#__PURE__*/function (_Component) { + _inheritsLoose(PlayerResourceShow, _Component); + + function PlayerResourceShow() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; //显示的资源 + + _initializerDefineProperty(_this, "type", _descriptor$l, _assertThisInitialized(_this)); //显示文本 + + + _initializerDefineProperty(_this, "show", _descriptor2$b, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = PlayerResourceShow.prototype; + + _proto.onLoad = function onLoad() { + //更新 + this.onUpdateView(); //监听 + + app.event.on(ResourceEvent.UPDATE, this.onUpdateView, this); + }; + + _proto.onDestroy = function onDestroy() { + app.event.off(ResourceEvent.UPDATE, this.onUpdateView, this); + } //刷新 + ; + + _proto.onUpdateView = function onUpdateView() { + //更新资源数量 + this.show.string = "" + ResourceData.getIns().getValue(this.type); + }; + + return PlayerResourceShow; + }(Component), (_descriptor$l = _applyDecoratedDescriptor(_class2$k.prototype, "type", [_dec2$o], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return ResourceType.Gold; + } + }), _descriptor2$b = _applyDecoratedDescriptor(_class2$k.prototype, "show", [_dec3$c], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + })), _class2$k)) || _class$F); + + cclegacy._RF.pop(); + + var _dec$G, _class$G; + + cclegacy._RF.push({}, "a3a9dIzSOFPPpmZbiL9N5+m", "JNodeDrag", undefined); + + var ccclass$r = _decorator.ccclass, + property$m = _decorator.property; + /** + * 拖拽组件 + */ + + var JNodeDrag = (_dec$G = ccclass$r('JNodeDrag'), _dec$G(_class$G = /*#__PURE__*/function (_Component) { + _inheritsLoose(JNodeDrag, _Component); + + function JNodeDrag() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; //原始位置 + + _this.original = void 0; //开始接触时候的位置 + + _this.startTouchPos = void 0; //是否拖拽了 + + _this.isMove = false; //是否触摸 + + _this.isTouch = false; //添加移动回调 + + _this.moveFuns = []; //添加移动结束回调 + + _this.moveEndFuns = []; + return _this; + } + + var _proto = JNodeDrag.prototype; + + _proto.addMoveEvent = function addMoveEvent(fun) { + this.moveFuns.push(fun); + }; + + _proto.addMoveEndEvent = function addMoveEndEvent(fun) { + this.moveEndFuns.push(fun); + }; + + _proto.onLoad = function onLoad() { + this.original = this.original || this.node.position.clone(); //添加拖拽事件 + + this.node.on(NodeEventType.TOUCH_START, this.onTouchStart, this); + this.node.on(NodeEventType.TOUCH_MOVE, this.onTouchMove, this); + this.node.on(NodeEventType.TOUCH_END, this.onTouchEnd, this); + this.node.on(NodeEventType.TOUCH_CANCEL, this.onTouchEnd, this); + } //传入UI位置返回位置 + ; + + _proto.getPosition = function getPosition(ui) { + return Object.assign(v2(), this.node.parent.getComponent(UITransform).convertToNodeSpaceAR(v3(ui.x, ui.y))); + } //触摸开始 + ; + + _proto.onTouchStart = function onTouchStart() { + this.startTouchPos = this.node.position.clone(); + this.isMove = false; + this.isTouch = true; + } //触摸移动 + ; + + _proto.onTouchMove = function onTouchMove(e) { + var start = this.getPosition(e.getUIStartLocation()); + var move = this.getPosition(e.getUILocation()); //移动了标记移动了 + + if (!e.getUIStartLocation().equals(e.getUILocation())) this.isMove = true; + var diff = move.subtract(start); + this.node.position = this.startTouchPos.clone().add(v3(diff.x, diff.y, 0)); //移动事件通知 + + this.moveFuns.forEach(function (fun) { + return fun(e); + }); + } //触摸结束 + ; + + _proto.onTouchEnd = function onTouchEnd(e) { + console.log("触摸结束"); + this.isTouch = false; //结束之后回到原始位置 + + this.onReturnAnim(); //移动结束通知 + + this.moveEndFuns.forEach(function (fun) { + return fun(e); + }); + }; + + _proto.onReturnAnim = function onReturnAnim() { + if (this.isTouch) return; //回到原始位置 + + tween(this.node).to(.25, { + position: this.original + }).start(); + } //更新原始点 + ; + + _proto.onUpdateOriginal = function onUpdateOriginal(original) { + if (this.original.equals(original)) return; + this.original = original; + this.onReturnAnim(); + }; + + return JNodeDrag; + }(Component)) || _class$G); + + cclegacy._RF.pop(); + + var _dec$H, _dec2$p, _dec3$d, _dec4$8, _class$H, _class2$l, _descriptor$m, _descriptor2$c, _descriptor3$8; + + cclegacy._RF.push({}, "78c308a0dBCEJ/E9wZzZPJq", "PlayerTacticalItem", undefined); + + var ccclass$s = _decorator.ccclass, + property$n = _decorator.property; + var PlayerTacticalItem = (_dec$H = ccclass$s('PlayerTacticalItem'), _dec2$p = property$n(Node), _dec3$d = property$n(Node), _dec4$8 = property$n(JNodeDrag), _dec$H(_class$H = (_class2$l = /*#__PURE__*/function (_Component) { + _inheritsLoose(PlayerTacticalItem, _Component); + + function PlayerTacticalItem() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; //阵法的Index; + + _this.index = void 0; //没有宠物的节点 + + _initializerDefineProperty(_this, "noPet", _descriptor$m, _assertThisInitialized(_this)); //有宠物的节点 + + + _initializerDefineProperty(_this, "havePet", _descriptor2$c, _assertThisInitialized(_this)); //拖拽 + + + _initializerDefineProperty(_this, "drag", _descriptor3$8, _assertThisInitialized(_this)); //当前上阵的宠物 + + + _this.petId = void 0; //初始位置 + + _this.initPos = void 0; + return _this; + } + + var _proto = PlayerTacticalItem.prototype; //初始化阵法 + + _proto.onInit = function onInit(index) { + this.index = index; + this.initPos = this.node.position; + }; + + _proto.start = function start() { + this.onUpdateView(); + } //更新信息 + ; + + _proto.onUpdateView = function onUpdateView() { + //获取阵法下的宠物 + this.petId = PlayerTacticalData.getIns().getItem(this.index); //如果为0则没有宠物 + + if (this.petId) { + this.havePet.active = true; + this.noPet.active = false; + this.onUpdatePetView(); + } else { + this.noPet.active = true; + this.havePet.active = false; + } + } //更新宠物信息 + ; + + _proto.onUpdatePetView = function onUpdatePetView() { + var spine = this.havePet.getComponentInChildren(sp.Skeleton); //获取宠物信息 + + var info = PlayerPetData.getIns().petIdQueryPetInfo(this.petId); + spine.skeletonData = app.battleRes.roleSpine[info.petTbId]; + spine.setAnimation(0, UIPetAnim.std, true); + } //打开选择阵法宠物 + ; + + _proto.onClick = function onClick() { + var _this2 = this; //如果拖拽了则不生效点击事件 + + + if (this.drag.isMove) return; //如果没有宠物则弹出选择宠物 负责 删除宠物 + + if (this.petId) { + //移除宠物 + //提示是否移除宠物 + app.layer.Open(GUI.SelectionBox, { + tigText: "是否移除宠物?", + cancel: function cancel() {}, + confirm: function () { + var _confirm = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return PlayerTacticalData.getIns().UpdateIndexTactical(_this2.index, 0); + + case 2: + case "end": + return _context.stop(); + } + }, _callee); + })); + + function confirm() { + return _confirm.apply(this, arguments); + } + + return confirm; + }() + }); + } else { + //选择宠物 + app.layer.Open(GUI.IntoBattleView, { + index: this.index //当前选择的阵法下标 + + }); + } + } //交换阵法 + ; + + _proto.onExchange = function onExchange(item) { + var rootIndex = this.index; + this.index = item.index; + item.index = rootIndex; //更新拖拽位置 + + var rootOriginal = this.drag.original; + this.drag.onUpdateOriginal(item.drag.original); + item.drag.onUpdateOriginal(rootOriginal); + }; + + _proto.addMoveEvent = function addMoveEvent(fun) { + var _this3 = this; + + this.drag.addMoveEvent(function (e) { + fun(_this3, e); + }); + }; + + _proto.addMoveEndEvent = function addMoveEndEvent(fun) { + var _this4 = this; + + this.drag.addMoveEndEvent(function (e) { + fun(_this4, e); + }); + }; + + return PlayerTacticalItem; + }(Component), (_descriptor$m = _applyDecoratedDescriptor(_class2$l.prototype, "noPet", [_dec2$p], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _descriptor2$c = _applyDecoratedDescriptor(_class2$l.prototype, "havePet", [_dec3$d], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _descriptor3$8 = _applyDecoratedDescriptor(_class2$l.prototype, "drag", [_dec4$8], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + })), _class2$l)) || _class$H); + + cclegacy._RF.pop(); + + var _dec$I, _class$I; + + cclegacy._RF.push({}, "a93723onHFJLq9yzuZv1eBF", "PlayerTacticalView", undefined); + + var ccclass$t = _decorator.ccclass, + property$o = _decorator.property; + /** + * 玩家阵法 + */ + + var PlayerTacticalView = (_dec$I = ccclass$t('PlayerTacticalView'), _dec$I(_class$I = /*#__PURE__*/function (_Component) { + _inheritsLoose(PlayerTacticalView, _Component); + + function PlayerTacticalView() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; //阵法子节点列表 + + _this.items = []; + return _this; + } + + var _proto = PlayerTacticalView.prototype; + + _proto.onLoad = function onLoad() { + var _this2 = this; //阵法 + + + this.items = this.node.getComponentsInChildren(PlayerTacticalItem); + this.items.forEach(function (item, index) { + item.onInit(index); //初始化阵法下标 + //添加移动事件 + + item.addMoveEvent(_this2.onMoveItem.bind(_this2)); //添加移动结束事件 + + item.addMoveEndEvent(_this2.onMoveEndItem.bind(_this2)); + }); + this.onUpdateView(); + this.onEvent(); + } //移动子节点 + ; + + _proto.onMoveItem = function onMoveItem(root, e) { + //获取接触的节点(除了自己) + this.items.forEach(function (item) { + //排除自己 + if (item == root) return; //排除在移动的节点 + + if (!item.node.position.equals(item.drag.original)) return; //检测接触 + + if (item.getComponent(UITransform).isHit(e.getUILocation())) { + //如果手指接触了 则 将接触的阵法移动到自己 + item.onExchange(root); + } + }); + } //子节点移动结束 + ; + + _proto.onMoveEndItem = /*#__PURE__*/function () { + var _onMoveEndItem = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + var pets; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + //移动结束则保存阵法 + pets = PlayerTacticalData.getIns().getInitTacticalInfo(); + this.items.forEach(function (item) { + pets[item.index] = item.petId || 0; + }); + _context.next = 4; + return PlayerTacticalData.getIns().UpdateTactical(pets); + + case 4: + if (!_context.sent) { + _context.next = 6; + break; + } + + app.layer.Open(GUI.Tips, { + text: "保存阵法成功" + }); + + case 6: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onMoveEndItem() { + return _onMoveEndItem.apply(this, arguments); + } + + return onMoveEndItem; + }(); + + _proto.onDestroy = function onDestroy() { + this.offEvent(); + } //添加监听 + ; + + _proto.onEvent = function onEvent() { + app.event.on(PlayerTacticalEvent.UPDATE_TACTICAL, this.onUpdateView, this); + } //移除监听 + ; + + _proto.offEvent = function offEvent() { + app.event.off(PlayerTacticalEvent.UPDATE_TACTICAL, this.onUpdateView, this); + } //更新阵法显示 + ; + + _proto.onUpdateView = function onUpdateView() { + this.items.forEach(function (item) { + item.onUpdateView(); + }); + }; + + return PlayerTacticalView; + }(Component)) || _class$I); + + cclegacy._RF.pop(); + + var _dec$J, _dec2$q, _dec3$e, _class$J, _class2$m, _descriptor$n, _descriptor2$d; + + cclegacy._RF.push({}, "e1d16dgPwNMG6XbZzTQUsMn", "JScrollExceedHide", undefined); + + var ccclass$u = _decorator.ccclass, + property$p = _decorator.property; + /** + * 超出隐藏 可简单的实现虚拟列表 + */ + + var JScrollExceedHide = (_dec$J = ccclass$u('JScrollExceedHide'), _dec2$q = property$p(UITransform), _dec3$e = property$p(Node), _dec$J(_class$J = (_class2$m = /*#__PURE__*/function (_Component) { + _inheritsLoose(JScrollExceedHide, _Component); + + function JScrollExceedHide() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; //列表 + + _this.scroll = void 0; + + _initializerDefineProperty(_this, "view", _descriptor$n, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "content", _descriptor2$d, _assertThisInitialized(_this)); //上次更新的数量 + + + _this.lastUpdate = 0; + return _this; + } + + var _proto = JScrollExceedHide.prototype; + + _proto.onLoad = function onLoad() { + var _this2 = this; + + this.scheduleOnce(function () { + _this2.scroll = _this2.getComponent(ScrollView); + + _this2.scroll.node.on('scrolling', _this2.onScrolling, _this2); + + _this2.onScrolling(); + }); + } //滑动事件 + ; + + _proto.onScrolling = function onScrolling() { + this.onUpdate(); + }; + + _proto.onUpdate = function onUpdate() { + var children = this.content.children; //动态隐藏显示 + //获取 view 最高高度 和 最低高度 + + var viewWorld = this.view.node.worldPosition; + var viewSize = this.view.contentSize; + var anchorPoint = this.view.anchorPoint; + var top = viewWorld.y + viewSize.height / 2 * (2 - anchorPoint.y * 2); + var bottom = viewWorld.y - viewSize.height / 2 * (anchorPoint.y * 2); + var right = viewWorld.x + viewSize.width / 2 * (2 - anchorPoint.x * 2); + var left = viewWorld.x - viewSize.width / 2 * (anchorPoint.x * 2); + children.forEach(function (child) { + var childRect = child.getComponent(UITransform).getBoundingBoxToWorld(); + var ctop = childRect.center.y + childRect.height / 2; + var cbottom = childRect.center.y - childRect.height / 2; + var cright = childRect.center.x + childRect.width / 2; + var cleft = childRect.center.x - childRect.width / 2; + var opacity; + + if (!(opacity = child.getComponent(UIOpacity))) { + opacity = child.addComponent(UIOpacity); + } //如果在框里面则显示 否则隐藏 + + + if ((top >= ctop && bottom <= ctop || top >= cbottom && bottom <= cbottom //Y 在内容中间 + ) && (right >= cright && left <= cright || right >= cleft && left <= cleft) //X 在内容中间 + ) { + opacity.opacity = 255; + } else { + opacity.opacity = 0; + } + }); + }; + + return JScrollExceedHide; + }(Component), (_descriptor$n = _applyDecoratedDescriptor(_class2$m.prototype, "view", [_dec2$q], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _descriptor2$d = _applyDecoratedDescriptor(_class2$m.prototype, "content", [_dec3$e], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + })), _class2$m)) || _class$J); + + cclegacy._RF.pop(); + + var _dec$K, _dec2$r, _dec3$f, _dec4$9, _class$K, _class2$n, _descriptor$o, _descriptor2$e, _descriptor3$9; + + cclegacy._RF.push({}, "ec6f0yWsr5CypPnEboLemYl", "MainChatView", undefined); + + var ccclass$v = _decorator.ccclass, + property$q = _decorator.property; + var MainChatView = (_dec$K = ccclass$v('MainChatView'), _dec2$r = property$q(Node), _dec3$f = property$q(Prefab), _dec4$9 = property$q(EditBox), _dec$K(_class$K = (_class2$n = /*#__PURE__*/function (_JNGLayerBase) { + _inheritsLoose(MainChatView, _JNGLayerBase); + + function MainChatView() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _JNGLayerBase.call.apply(_JNGLayerBase, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "content", _descriptor$o, _assertThisInitialized(_this)); //聊天内容 + + + _initializerDefineProperty(_this, "chatPrefab", _descriptor2$e, _assertThisInitialized(_this)); //聊天预制体 + + + _initializerDefineProperty(_this, "inputMessage", _descriptor3$9, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = MainChatView.prototype; //聊天输入框 + + _proto.onJNLoad = function onJNLoad(data) { + _JNGLayerBase.prototype.onJNLoad.call(this, data); + + this.onInitUpdate(); //监听消息 + + ChatData.getIns().on(this.onMessage.bind(this), this); + }; + + _proto.onJNClose = function onJNClose() { + _JNGLayerBase.prototype.onJNClose.call(this); + + ChatData.getIns().off(this.onMessage.bind(this), this); + } //初始化聊天显示 + ; + + _proto.onInitUpdate = function onInitUpdate() { + var _this2 = this; + + this.content.destroyAllChildren(); + var messages = ChatData.getIns().datas; + messages.forEach(function (message) { + var node = instantiate(_this2.chatPrefab); + node.getComponent(Label).string = message; + + _this2.content.addChild(node); + }); + } //发送消息 + ; + + _proto.onClickSendMessage = function onClickSendMessage() { + if (!this.inputMessage.string) { + app.layer.Open(GUI.Tips, { + text: "请输入内容" + }); + return; + } + + ChatData.getIns().onSend({ + message: this.inputMessage.string + }); + } //接受到消息 + ; + + _proto.onMessage = function onMessage(info) { + var _this3 = this; //插入数据 + + + var node = instantiate(this.chatPrefab); + node.getComponent(Label).string = info.message; + this.content.addChild(node); + this.scheduleOnce(function () { + _this3.getComponentInChildren(JScrollExceedHide).onUpdate(); + }); + }; + + return MainChatView; + }(JNGLayerBase), (_descriptor$o = _applyDecoratedDescriptor(_class2$n.prototype, "content", [_dec2$r], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _descriptor2$e = _applyDecoratedDescriptor(_class2$n.prototype, "chatPrefab", [_dec3$f], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _descriptor3$9 = _applyDecoratedDescriptor(_class2$n.prototype, "inputMessage", [_dec4$9], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + })), _class2$n)) || _class$K); + + cclegacy._RF.pop(); + + var _dec$L, _dec2$s, _class$L, _class2$o, _descriptor$p; + + cclegacy._RF.push({}, "15051raQgZN6J5ICgY2OfSS", "HomeView", undefined); + + var ccclass$w = _decorator.ccclass, + property$r = _decorator.property; + var HomeView = (_dec$L = ccclass$w('HomeView'), _dec2$s = property$r(Label), _dec$L(_class$L = (_class2$o = /*#__PURE__*/function (_JNGLayerBase) { + _inheritsLoose(HomeView, _JNGLayerBase); + + function HomeView() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _JNGLayerBase.call.apply(_JNGLayerBase, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "frameText", _descriptor$p, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = HomeView.prototype; + + _proto.onLoad = /*#__PURE__*/function () { + var _onLoad = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + case "end": + return _context.stop(); + } + }, _callee); + })); + + function onLoad() { + return _onLoad.apply(this, arguments); + } + + return onLoad; + }(); + + _proto.update = function update() { + this.frameText.string = "\u5F53\u524D\u5E27\u6570: " + app.sync.frame; + } //设置移动 + ; + + _proto.setRoleMove = function setRoleMove(data) { + console.log("移动", data.isChecked); + } //设置攻击 + ; + + _proto.setRoleAttack = function setRoleAttack(data) { + console.log("攻击", data.isChecked); + } //重置 + ; + + _proto.onClickReset = function onClickReset() { + app.sync.onReset(); + } //重置服务器帧 + ; + + _proto.onClickResetServer = function onClickResetServer() { + app.socket.Send(JNSyncAction.NSyncFrameReset); + } //前往PVP + ; + + _proto.onClickGoPVP = function onClickGoPVP() { + director.getScene().getComponentInChildren(WorldCanvas).index = 0; + app.layer.Open(GUI.Tips, { + text: "切换成功 请点击重置" + }); + } //前往无尽 + ; + + _proto.onClickGoOnHook = function onClickGoOnHook() { + director.getScene().getComponentInChildren(WorldCanvas).index = 1; + app.layer.Open(GUI.Tips, { + text: "切换成功 请点击重置" + }); + } //清除Token + ; + + _proto.onClickToken = function onClickToken() { + StorageData.delect(StorageEnum.Token); + app.layer.Open(GUI.Tips, { + text: "清除成功" + }); + }; + + return HomeView; + }(JNGLayerBase), _descriptor$p = _applyDecoratedDescriptor(_class2$o.prototype, "frameText", [_dec2$s], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _class2$o)) || _class$L); + + cclegacy._RF.pop(); + + var _dec$M, _dec2$t, _class$M, _class2$p, _descriptor$q; + + cclegacy._RF.push({}, "b51bfKvsidNPKBbFirAFgQI", "MainView", undefined); + + var ccclass$x = _decorator.ccclass, + property$s = _decorator.property; + var MainView = (_dec$M = ccclass$x('MainView'), _dec2$t = property$s(Label), _dec$M(_class$M = (_class2$p = /*#__PURE__*/function (_JNGLayerBase) { + _inheritsLoose(MainView, _JNGLayerBase); + + function MainView() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _JNGLayerBase.call.apply(_JNGLayerBase, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "playerNameLabel", _descriptor$q, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = MainView.prototype; //玩家名称 + + _proto.onJNLoad = function onJNLoad(data) { + //发送消息 + ChatData.getIns().onSend({ + message: PlayerData.getIns().data.playerId + " \u52A0\u5165\u6E38\u620F" + }); + this.onUpdateView(); + } //更新UI界面 + ; + + _proto.onUpdateView = function onUpdateView() { + this.playerNameLabel.string = PlayerData.getIns().getInfo().playerName; + } //打开Demo页面 + ; + + _proto.onOpenDemo = function onOpenDemo() { + app.layer.Open(GUI.Home); + } //打开聊天页面 + ; + + _proto.onOpenChat = function onOpenChat() { + app.layer.Open(GUI.MainChat); + } //点击打开无限模式 + ; + + _proto.onOpenOnHook = function onOpenOnHook() { + GBattleModeManager.getIns().Open(BattleMode.OnHook, true); + } //点击PVP模式 + ; + + _proto.onOpenPVP = function onOpenPVP() { + app.socket.Send(GAction.S_MODE_PVP_JOIN); + }; + + return MainView; + }(JNGLayerBase), _descriptor$q = _applyDecoratedDescriptor(_class2$p.prototype, "playerNameLabel", [_dec2$t], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _class2$p)) || _class$M); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "cd19ccYjRJABKH8rmg7daLy", "JNScrollViewItem", undefined); + + var JNScrollViewItem = /*#__PURE__*/function (_Component) { + _inheritsLoose(JNScrollViewItem, _Component); + + function JNScrollViewItem() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; //数据 + + _this.data = void 0; + return _this; + } + + var _proto = JNScrollViewItem.prototype; + + _proto.onInit = function onInit(data) {}; + + return JNScrollViewItem; + }(Component); + + cclegacy._RF.pop(); + + var _dec$N, _dec2$u, _class$N, _class2$q, _descriptor$r; + + cclegacy._RF.push({}, "590f9LG0/NBQ53k5HoSVyV6", "MainSreepsIcon", undefined); + + var ccclass$y = _decorator.ccclass, + property$t = _decorator.property; + var MainSreepsIcon = (_dec$N = ccclass$y('MainSreepsIcon'), _dec2$u = property$t(PetIconSelect), _dec$N(_class$N = (_class2$q = /*#__PURE__*/function (_JNScrollViewItem) { + _inheritsLoose(MainSreepsIcon, _JNScrollViewItem); + + function MainSreepsIcon() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _JNScrollViewItem.call.apply(_JNScrollViewItem, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "icon", _descriptor$r, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = MainSreepsIcon.prototype; + + _proto.start = function start() { + this.icon.setIcon(this.data.petTbId); + }; + + return MainSreepsIcon; + }(JNScrollViewItem), _descriptor$r = _applyDecoratedDescriptor(_class2$q.prototype, "icon", [_dec2$u], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _class2$q)) || _class$N); + + cclegacy._RF.pop(); + + var _dec$O, _dec2$v, _class$O, _class2$r, _descriptor$s; + + cclegacy._RF.push({}, "563f2c1JcVKmrpHhC0vl3PI", "JNScrollView", undefined); + + var ccclass$z = _decorator.ccclass, + property$u = _decorator.property; //一个通过对象控制的 ScrollView + //预制体必须拥有 JNScrollViewItem 组件 + + var JNScrollView = (_dec$O = ccclass$z('JNScrollView'), _dec2$v = property$u(Prefab), _dec$O(_class$O = (_class2$r = /*#__PURE__*/function (_ScrollView) { + _inheritsLoose(JNScrollView, _ScrollView); + + function JNScrollView() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _ScrollView.call.apply(_ScrollView, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "itemPrefab", _descriptor$s, _assertThisInitialized(_this)); //预制体 + + + _this.exceed = void 0; + _this.events = {}; + return _this; + } + + var _proto = JNScrollView.prototype; + + _proto.onLoad = function onLoad() { + //清除数据 + this.content.destroyAllChildren(); //挂载虚拟列表组件 + + if (!this.node.getComponent(JScrollExceedHide)) { + var exceed = this.node.addComponent(JScrollExceedHide); + exceed.view = this.view; + exceed.content = this.content; + this.exceed = exceed; + } + } //刷新数据 + ; + + _proto.refreshData = function refreshData(dataList) { + var _this2 = this; //清除数据 + + + this.content.destroyAllChildren(); //添加新数据 + + dataList.forEach(function (data) { + var item = instantiate(_this2.itemPrefab); //获取 JNScrollViewItem 组件赋值 + + var itemSC = item.getComponent(JNScrollViewItem); + itemSC.data = data; + itemSC.onInit(itemSC.data); + + _this2.content.addChild(item); + }); + } //添加数据 + ; + + _proto.addData = function addData(data) { + var _this3 = this; + + var item = instantiate(this.itemPrefab); //获取 JNScrollViewItem 组件赋值 + + var itemSC = item.getComponent(JNScrollViewItem); + itemSC.data = data; + itemSC.onInit(itemSC.data); + this.content.addChild(item); //添加事件 + + Object.keys(this.events).forEach(function (type) { + item.off(type); + item.on(type, function (e) { + _this3.events[type](item.getSiblingIndex(), e); //传入下标和事件 + + }); + }); //刷新虚拟列表 + + this.scheduleOnce(function () { + return _this3.exceed.onUpdate(); + }); + } //删除数据 + ; + + _proto.delData = function delData(data) { + var _this4 = this; + + var items = this.getItems(); + + for (var index = 0; index < items.length; index++) { + var child = items[index]; + + if (child.data == data) { + //销毁 + child.node.destroy(); + } + } //刷新虚拟列表 + + + this.scheduleOnce(function () { + return _this4.exceed.onUpdate(); + }); + } //获取列表中Item的组件 + ; + + _proto.getItems = function getItems() { + return this.content.getComponentsInChildren(JNScrollViewItem).filter(function (item) { + return item.node.active && item.node.isValid; + }); + } //向Item 添加监听事件 + ; + + _proto.addItemEvent = function addItemEvent(type, callback) { + this.events[type] = callback; + this.getItems().forEach(function (item) { + item.node.off(type); + item.node.on(type, function (e) { + callback(item.node.getSiblingIndex(), e); //传入下标和事件 + }); + }); + }; + + return JNScrollView; + }(ScrollView), _descriptor$s = _applyDecoratedDescriptor(_class2$r.prototype, "itemPrefab", [_dec2$v], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _class2$r)) || _class$O); + + cclegacy._RF.pop(); + + var _dec$P, _dec2$w, _class$P, _class2$s, _descriptor$t; + + cclegacy._RF.push({}, "fe2adMH7MZF5KXgR4KwvwJX", "MainSreepsList", undefined); + + var ccclass$A = _decorator.ccclass, + property$v = _decorator.property; + var MainSreepsList = (_dec$P = ccclass$A('MainSreepsList'), _dec2$w = property$v(JNScrollView), _dec$P(_class$P = (_class2$s = /*#__PURE__*/function (_Component) { + _inheritsLoose(MainSreepsList, _Component); + + function MainSreepsList() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; //野怪列表 + + _initializerDefineProperty(_this, "views", _descriptor$t, _assertThisInitialized(_this)); //默认选择 + + + _this.index = 0; + return _this; + } + + var _proto = MainSreepsList.prototype; + + _proto.onLoad = function onLoad() { + //监听 野怪死亡 + app.event.on(GOnHookManagerEvent.ADD_KILL_SREEP, this.onAddSreep, this); //监听 野怪删除 + + app.event.on(GOnHookManagerEvent.DEL_KILL_SREEP, this.onDelSreep, this); //添加子节点事件 + + this.views.addItemEvent(NodeEventType.TOUCH_END, this.onClickItem.bind(this)); + }; + + _proto.onDestroy = function onDestroy() { + //取消监听 + app.event.off(GOnHookManagerEvent.ADD_KILL_SREEP, this.onAddSreep, this); + app.event.on(GOnHookManagerEvent.DEL_KILL_SREEP, this.onDelSreep, this); + } //添加野怪 + ; + + _proto.onAddSreep = function onAddSreep(sreep) { + this.views.addData(sreep); + this.onUpdateView(); + } //删除野怪 + ; + + _proto.onDelSreep = function onDelSreep(sreep) { + this.views.delData(sreep); + this.onUpdateView(); + } //刷新 + ; + + _proto.onUpdateView = function onUpdateView() { + var items = this.views.getItems(); + if (items.length <= 0) return; //取消选中 + + items.forEach(function (item) { + return item.icon.isSelect = false; + }); //选中index + + if (items[this.index]) items[this.index].icon.isSelect = true; + } //点击子节点 + ; + + _proto.onClickItem = function onClickItem(index) { + this.index = index; + this.onUpdateView(); + } //捕捉野怪 + ; + + _proto.onClickCatch = /*#__PURE__*/function () { + var _onClickCatch = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + var item; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + //获取选中的野怪 + item = this.views.getItems()[this.index]; + + if (item) { + _context.next = 4; + break; + } + + app.layer.Open(GUI.Tips, { + text: "请选择需要捕捉的宠物" + }); + return _context.abrupt("return"); + + case 4: + _context.next = 6; + return GOnHookManager.getIns().onCatchCreeps(item.data); + + case 6: + if (!_context.sent) { + _context.next = 8; + break; + } + + app.layer.Open(GUI.Tips, { + text: "捕捉成功!" + }); + + case 8: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onClickCatch() { + return _onClickCatch.apply(this, arguments); + } + + return onClickCatch; + }() //野怪出售 + ; + + _proto.onClickSell = /*#__PURE__*/function () { + var _onClickSell = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { + var item; + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + //获取选中的野怪 + item = this.views.getItems()[this.index]; + + if (item) { + _context2.next = 4; + break; + } + + app.layer.Open(GUI.Tips, { + text: "请选择需要出售的宠物" + }); + return _context2.abrupt("return"); + + case 4: + _context2.next = 6; + return GOnHookManager.getIns().onSellCreeps(item.data); + + case 6: + if (!_context2.sent) { + _context2.next = 8; + break; + } + + app.layer.Open(GUI.Tips, { + text: "出售成功!" + }); + + case 8: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + + function onClickSell() { + return _onClickSell.apply(this, arguments); + } + + return onClickSell; + }(); + + return MainSreepsList; + }(Component), _descriptor$t = _applyDecoratedDescriptor(_class2$s.prototype, "views", [_dec2$w], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _class2$s)) || _class$P); + + cclegacy._RF.pop(); + + var _dec$Q, _dec2$x, _dec3$g, _class$Q, _class2$t, _descriptor$u, _descriptor2$f; + + cclegacy._RF.push({}, "7b00a/4yERL/LgI4ZobxPAs", "LoadingView", undefined); + + var ccclass$B = _decorator.ccclass, + property$w = _decorator.property; + var LoadingView = (_dec$Q = ccclass$B('LoadingView'), _dec2$x = property$w(ProgressBar), _dec3$g = property$w(Label), _dec$Q(_class$Q = (_class2$t = /*#__PURE__*/function (_JNGLayerBase) { + _inheritsLoose(LoadingView, _JNGLayerBase); + + function LoadingView() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _JNGLayerBase.call.apply(_JNGLayerBase, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "progress", _descriptor$u, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "label", _descriptor2$f, _assertThisInitialized(_this)); //是否加载成功 + + + _this.isOk = false; + return _this; + } + + var _proto = LoadingView.prototype; + + _proto.update = function update(dt) { + if (app.loading.getCurrentInfo()) this.label.string = app.loading.getCurrentInfo().title; + this.progress.progress = lerp(this.progress.progress, app.loading.progress(), dt); + + if (!this.isOk && app.loading.isAllSuccess()) { + this.isOk = true; + this.onSuccess(); + } + }; + + _proto.onSuccess = /*#__PURE__*/function () { + var _onSuccess = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return NoviceManager.getIns().onStart(); + + case 2: + _context.next = 4; + return app.layer.Open(GUI.Main); + + case 4: + app.layer.Close(GUI.Loading); + + case 5: + case "end": + return _context.stop(); + } + }, _callee); + })); + + function onSuccess() { + return _onSuccess.apply(this, arguments); + } + + return onSuccess; + }(); + + return LoadingView; + }(JNGLayerBase), (_descriptor$u = _applyDecoratedDescriptor(_class2$t.prototype, "progress", [_dec2$x], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _descriptor2$f = _applyDecoratedDescriptor(_class2$t.prototype, "label", [_dec3$g], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + })), _class2$t)) || _class$Q); + + cclegacy._RF.pop(); + + var _dec$R, _dec2$y, _class$R, _class2$u, _descriptor$v; + + cclegacy._RF.push({}, "9979dVt91REw44px2Tq6wqv", "PVPMatchView", undefined); + + var ccclass$C = _decorator.ccclass, + property$x = _decorator.property; + /** + * 游戏匹配页面 + */ + + var PVPMatchView = (_dec$R = ccclass$C('PVPMatchView'), _dec2$y = property$x(Node), _dec$R(_class$R = (_class2$u = /*#__PURE__*/function (_JNGLayerBase) { + _inheritsLoose(PVPMatchView, _JNGLayerBase); + + function PVPMatchView() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _JNGLayerBase.call.apply(_JNGLayerBase, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "content", _descriptor$v, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = PVPMatchView.prototype; + + _proto.onJNLoad = function onJNLoad(data) { + _JNGLayerBase.prototype.onJNLoad.call(this, data); + + tween(this.content).repeatForever(tween().to(.5, { + scale: v3(.8, .8, .8) + }).to(.5, { + scale: v3(1, 1, 1) + })).start(); + } //取消匹配 + ; + + _proto.onClickCancel = function onClickCancel() { + app.socket.Send(GAction.S_MODE_PVP_LEAVE); + }; + + return PVPMatchView; + }(JNGLayerBase), _descriptor$v = _applyDecoratedDescriptor(_class2$u.prototype, "content", [_dec2$y], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _class2$u)) || _class$R); + + cclegacy._RF.pop(); + + var _dec$S, _dec2$z, _class$S, _class2$v, _descriptor$w; + + cclegacy._RF.push({}, "ccac1QqhdBMwp9m5xEQ4dad", "NoviceNamingView", undefined); + + var ccclass$D = _decorator.ccclass, + property$y = _decorator.property; + var NoviceNamingView = (_dec$S = ccclass$D('NoviceNamingView'), _dec2$z = property$y(EditBox), _dec$S(_class$S = (_class2$v = /*#__PURE__*/function (_JNGLayerBase) { + _inheritsLoose(NoviceNamingView, _JNGLayerBase); + + function NoviceNamingView() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _JNGLayerBase.call.apply(_JNGLayerBase, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "text", _descriptor$w, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = NoviceNamingView.prototype; //保存名称 + + _proto.onSave = /*#__PURE__*/function () { + var _onSave = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (!this.text.string) { + _context.next = 4; + break; + } + + _context.next = 3; + return API.SavePlayerInfo(this.text.string); + + case 3: + //关闭页面 + app.layer.CloseNode(this.node); + + case 4: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onSave() { + return _onSave.apply(this, arguments); + } + + return onSave; + }(); + + return NoviceNamingView; + }(JNGLayerBase), _descriptor$w = _applyDecoratedDescriptor(_class2$v.prototype, "text", [_dec2$z], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _class2$v)) || _class$S); + + cclegacy._RF.pop(); + + var _dec$T, _dec2$A, _class$T, _class2$w, _descriptor$x; + + cclegacy._RF.push({}, "0bc93vaJLZPuYCc1dTrvyLs", "NoviceSelectPetView", undefined); + + var ccclass$E = _decorator.ccclass, + property$z = _decorator.property; + var NoviceSelectPetView = (_dec$T = ccclass$E('NoviceSelectPetView'), _dec2$A = property$z([Node]), _dec$T(_class$T = (_class2$w = /*#__PURE__*/function (_JNGLayerBase) { + _inheritsLoose(NoviceSelectPetView, _JNGLayerBase); + + function NoviceSelectPetView() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _JNGLayerBase.call.apply(_JNGLayerBase, [this].concat(args)) || this; //选择宠物的节点 + + _initializerDefineProperty(_this, "selects", _descriptor$x, _assertThisInitialized(_this)); //可选择宠物的列表 + + + _this.petIds = void 0; //选择index + + _this.index = 0; + return _this; + } + + var _proto = NoviceSelectPetView.prototype; + + _proto.onJNLoad = /*#__PURE__*/function () { + var _onJNLoad = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(data) { + var _this2 = this; + + var info; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _JNGLayerBase.prototype.onJNLoad.call(this); //加载配置表 (找到可选择的宠物Id) + + + info = TD.TbGGlobal.get(TbGGlobalEnum.SELECT_PET_ID); + this.petIds = JSON.parse(info.args); //显示宠物 + + this.selects.forEach(function (item, index) { + //获取Spine组件 + var spine = item.getComponentInChildren(sp.Skeleton); //设置显示的角色 + + spine.skeletonData = app.battleRes.roleSpine[_this2.petIds[index]]; //全部角色播放等待动画 + + spine.setAnimation(0, UIPetAnim.std, true); + }); + this.onUpdateView(); + + case 5: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onJNLoad(_x) { + return _onJNLoad.apply(this, arguments); + } + + return onJNLoad; + }() //更新UI + ; + + _proto.onUpdateView = function onUpdateView() { + this.selects.forEach(function (item) { + item.getComponent(Sprite).color = new Color("8D8D8D"); + }); //被选择赋黑 + + this.selects[this.index].getComponent(Sprite).color = new Color("#000000"); + } //点击选择 + ; + + _proto.onClickSelect = function onClickSelect(e, data) { + var index = parseInt(data); + this.index = index; //更新UI + + this.onUpdateView(); + } //点击确定 + ; + + _proto.onClickOk = /*#__PURE__*/function () { + var _onClickOk = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + _context2.t0 = console; + _context2.next = 3; + return PlayerPetData.getIns().SelectNovicePet(this.petIds[this.index]); + + case 3: + _context2.t1 = _context2.sent; + + _context2.t0.log.call(_context2.t0, _context2.t1); + + app.layer.Open(GUI.Tips, { + text: "选择宠物成功 欢迎来到宠物世界..." + }); //关闭页面 + + app.layer.CloseNode(this.node); + + case 7: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + + function onClickOk() { + return _onClickOk.apply(this, arguments); + } + + return onClickOk; + }(); + + return NoviceSelectPetView; + }(JNGLayerBase), _descriptor$x = _applyDecoratedDescriptor(_class2$w.prototype, "selects", [_dec2$A], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return []; + } + }), _class2$w)) || _class$T); + + cclegacy._RF.pop(); + + var _dec$U, _dec2$B, _dec3$h, _class$U, _class2$x, _descriptor$y, _descriptor2$g; + + cclegacy._RF.push({}, "d36bcqouzBBm74l7Z8QrvOH", "LoginView", undefined); + + var ccclass$F = _decorator.ccclass, + property$A = _decorator.property; + var LoginView = (_dec$U = ccclass$F('LoginView'), _dec2$B = property$A(EditBox), _dec3$h = property$A(EditBox), _dec$U(_class$U = (_class2$x = /*#__PURE__*/function (_JNLayerBase) { + _inheritsLoose(LoginView, _JNLayerBase); + + function LoginView() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _JNLayerBase.call.apply(_JNLayerBase, [this].concat(args)) || this; + _this.resolve = void 0; + + _initializerDefineProperty(_this, "account", _descriptor$y, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "password", _descriptor2$g, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = LoginView.prototype; + + _proto.onJNLoad = function onJNLoad(resolve) { + _JNLayerBase.prototype.onJNLoad.call(this); + + this.resolve = resolve; + } //点击登录 + ; + + _proto.onClickLogin = /*#__PURE__*/function () { + var _onClickLogin = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + var info; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (!(!this.account.string.length || !this.password.string.length)) { + _context.next = 3; + break; + } + + app.layer.Open(GUI.Tips, { + text: "请输入账号密码" + }); + return _context.abrupt("return"); + + case 3: + _context.next = 5; + return API.UserLogin(this.account.string, this.password.string); + + case 5: + info = _context.sent; + + if (info) { + app.layer.Open(GUI.Tips, { + text: "登录成功" + }); //保存Token + + StorageData.set(StorageEnum.Token, info.token); + this.resolve(info.token); + this.onJNClose(); + } + + case 7: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onClickLogin() { + return _onClickLogin.apply(this, arguments); + } + + return onClickLogin; + }() //点击注册账号 + ; + + _proto.onClickRegister = /*#__PURE__*/function () { + var _onClickRegister = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { + var info; + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return API.UserRegister(); + + case 2: + info = _context2.sent; //显示提示 + + app.layer.Open(GUI.Tips, { + text: "注册成功" + }); //显示账号和密码 + + this.account.string = "" + info.userId; + this.password.string = info.userPass; + + case 6: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + + function onClickRegister() { + return _onClickRegister.apply(this, arguments); + } + + return onClickRegister; + }(); + + return LoginView; + }(JNLayerBase), (_descriptor$y = _applyDecoratedDescriptor(_class2$x.prototype, "account", [_dec2$B], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _descriptor2$g = _applyDecoratedDescriptor(_class2$x.prototype, "password", [_dec3$h], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + })), _class2$x)) || _class$U); + + cclegacy._RF.pop(); + + var _dec$V, _dec2$C, _dec3$i, _dec4$a, _dec5$3, _dec6$3, _class$V, _class2$y, _descriptor$z, _descriptor2$h, _descriptor3$a, _descriptor4$4, _descriptor5$4; + + cclegacy._RF.push({}, "637d2qdlk5B8rlrK/1+fcaG", "SelectionBox", undefined); + + var ccclass$G = _decorator.ccclass, + property$B = _decorator.property; + var SelectionBox = (_dec$V = ccclass$G('SelectionBox'), _dec2$C = property$B(Label), _dec3$i = property$B(Label), _dec4$a = property$B(Button), _dec5$3 = property$B(Button), _dec6$3 = property$B(Node), _dec$V(_class$V = (_class2$y = /*#__PURE__*/function (_JNLayerBase) { + _inheritsLoose(SelectionBox, _JNLayerBase); + + function SelectionBox() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _JNLayerBase.call.apply(_JNLayerBase, [this].concat(args)) || this; //标题 + + _initializerDefineProperty(_this, "titleLabel", _descriptor$z, _assertThisInitialized(_this)); //提示文字 + + + _initializerDefineProperty(_this, "tigLabel", _descriptor2$h, _assertThisInitialized(_this)); //取消按钮 + + + _initializerDefineProperty(_this, "cancalBtn", _descriptor3$a, _assertThisInitialized(_this)); //确认按钮 + + + _initializerDefineProperty(_this, "confirmBtn", _descriptor4$4, _assertThisInitialized(_this)); //按钮列表 + + + _initializerDefineProperty(_this, "btns", _descriptor5$4, _assertThisInitialized(_this)); + + _this.data = void 0; + return _this; + } + + var _proto = SelectionBox.prototype; + + _proto.onJNLoad = function onJNLoad(data) { + this.data = data; //默认不可以 + + data.isMaskClose = !!data.isMaskClose; + data.tigText = data.tigText || "这是一个提示选择框"; + data.titleText = data.titleText || "标 题"; + data.cancelText = data.cancelText || "取 消"; + data.confirmText = data.confirmText || "确 认"; + this.mask = !data.isHideMake; + this.isClickMaskeClose = data.isMaskClose; + this.tigLabel.string = data.tigText; + this.titleLabel.string = data.titleText; //没有事件则不显示 + + this.cancalBtn.node.active = !!data.cancel; + this.confirmBtn.node.active = !!data.confirm; //显示按钮文字 + + this.cancalBtn.getComponentInChildren(Label).string = data.cancelText; + this.confirmBtn.getComponentInChildren(Label).string = data.confirmText; //如果都没有则隐藏按钮列表 + + if (!data.cancel && data.confirm) this.btns.active = false; + + _JNLayerBase.prototype.onJNLoad.call(this); + } //点击确认 + ; + + _proto.onClickConfirm = /*#__PURE__*/function () { + var _onClickConfirm = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.t0 = this.data.confirm; + + if (!_context.t0) { + _context.next = 4; + break; + } + + _context.next = 4; + return this.data.confirm(); + + case 4: + //关闭页面 + app.layer.CloseNode(this.node); + + case 5: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onClickConfirm() { + return _onClickConfirm.apply(this, arguments); + } + + return onClickConfirm; + }() //点击取消 + ; + + _proto.onClickCancel = /*#__PURE__*/function () { + var _onClickCancel = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + _context2.t0 = this.data.cancel; + + if (!_context2.t0) { + _context2.next = 4; + break; + } + + _context2.next = 4; + return this.data.cancel(); + + case 4: + //关闭页面 + app.layer.CloseNode(this.node); + + case 5: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + + function onClickCancel() { + return _onClickCancel.apply(this, arguments); + } + + return onClickCancel; + }(); + + return SelectionBox; + }(JNLayerBase), (_descriptor$z = _applyDecoratedDescriptor(_class2$y.prototype, "titleLabel", [_dec2$C], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _descriptor2$h = _applyDecoratedDescriptor(_class2$y.prototype, "tigLabel", [_dec3$i], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _descriptor3$a = _applyDecoratedDescriptor(_class2$y.prototype, "cancalBtn", [_dec4$a], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _descriptor4$4 = _applyDecoratedDescriptor(_class2$y.prototype, "confirmBtn", [_dec5$3], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _descriptor5$4 = _applyDecoratedDescriptor(_class2$y.prototype, "btns", [_dec6$3], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + })), _class2$y)) || _class$V); + + cclegacy._RF.pop(); + + var _dec$W, _dec2$D, _class$W, _class2$z, _descriptor$A; + + cclegacy._RF.push({}, "76584YE7/1K9rPvckaow3Jg", "TipsView", undefined); + + var ccclass$H = _decorator.ccclass, + property$C = _decorator.property; + var TipsView = (_dec$W = ccclass$H('TipsView'), _dec2$D = property$C(Label), _dec$W(_class$W = (_class2$z = /*#__PURE__*/function (_JNLayerBase) { + _inheritsLoose(TipsView, _JNLayerBase); + + function TipsView() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _JNLayerBase.call.apply(_JNLayerBase, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "text", _descriptor$A, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = TipsView.prototype; + + _proto.onJNLoad = function onJNLoad(data) { + var _this2 = this; + + if (data === void 0) { + data = {}; + } + + if (!data) data = {}; + data.text = data.text || "这是一个提示"; + data.time = data.time || 3; //显示弹窗内容 + + this.text.string = data.text; + this.scheduleOnce(function () { + _this2.onJNClose(); + }, data.time); + }; + + return TipsView; + }(JNLayerBase), _descriptor$A = _applyDecoratedDescriptor(_class2$z.prototype, "text", [_dec2$D], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _class2$z)) || _class$W); + + cclegacy._RF.pop(); + + var _dec$X, _dec2$E, _class$X, _class2$A, _descriptor$B; + + cclegacy._RF.push({}, "0d7f0xLgLJJ+7qr9McTG53a", "IntoBattlePetIcon", undefined); + + var ccclass$I = _decorator.ccclass, + property$D = _decorator.property; + var IntoBattlePetIcon = (_dec$X = ccclass$I('IntoBattlePetIcon'), _dec2$E = property$D(PetIconSelect), _dec$X(_class$X = (_class2$A = /*#__PURE__*/function (_JNScrollViewItem) { + _inheritsLoose(IntoBattlePetIcon, _JNScrollViewItem); + + function IntoBattlePetIcon() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _JNScrollViewItem.call.apply(_JNScrollViewItem, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "select", _descriptor$B, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = IntoBattlePetIcon.prototype; + + _proto.start = function start() { + this.select.setIcon(this.data.petTbId); + }; + + return IntoBattlePetIcon; + }(JNScrollViewItem), _descriptor$B = _applyDecoratedDescriptor(_class2$A.prototype, "select", [_dec2$E], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _class2$A)) || _class$X); + + cclegacy._RF.pop(); + + var _dec$Y, _dec2$F, _dec3$j, _class$Y, _class2$B, _descriptor$C, _descriptor2$i; + + cclegacy._RF.push({}, "00e5fiwk55OFq7ZIZmksXGJ", "IntoBattleView", undefined); + + var ccclass$J = _decorator.ccclass, + property$E = _decorator.property; //上阵页面 + + var IntoBattleView = (_dec$Y = ccclass$J('IntoBattleView'), _dec2$F = property$E(JNScrollView), _dec3$j = property$E(sp.Skeleton), _dec$Y(_class$Y = (_class2$B = /*#__PURE__*/function (_JNLayerBase) { + _inheritsLoose(IntoBattleView, _JNLayerBase); + + function IntoBattleView() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _JNLayerBase.call.apply(_JNLayerBase, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "views", _descriptor$C, _assertThisInitialized(_this)); //宠物列表 + + + _initializerDefineProperty(_this, "spine", _descriptor2$i, _assertThisInitialized(_this)); //当前选中的宠物 + //宠物数据 + + + _this.pets = []; //当前选中 + + _this.index = -1; + _this.tIndex = -1; + return _this; + } + + var _proto = IntoBattleView.prototype; //阵法下标 + + _proto.onJNLoad = function onJNLoad(data) { + _JNLayerBase.prototype.onJNLoad.call(this); //获取传入的下标 + + + this.tIndex = data.index; + console.log("你选择的是", this.tIndex); + this.onUpdateView(); + } //刷新页面 + ; + + _proto.onUpdateView = function onUpdateView() { + //获取所有玩家宠物 + this.pets = PlayerPetData.getIns().getData(); + this.views.refreshData(this.pets); //设置不可选中 + + this.views.getItems().forEach(function (item) { + if (PlayerTacticalData.getIns().getTacticalInfo().indexOf(item.data.petId) != -1) item.select.isNoSelect = true; //如果在阵法里则不可选中 + }); //向子节点添加点击事件 + + this.views.addItemEvent(NodeEventType.TOUCH_START, this.onClickItem.bind(this)); + this.onUpdateSelect(); + } //刷新选中 + ; + + _proto.onUpdateSelect = function onUpdateSelect() { + //默认都不选中 + this.views.getItems().forEach(function (item) { + item.select.isSelect = false; + }); //设置选中 + + if (this.index != -1) { + var current = this.views.getItems()[this.index]; + current.select.isSelect = true; //显示选中宠物 + + this.spine.skeletonData = app.battleRes.roleSpine[this.pets[this.index].petTbId]; + this.spine.setAnimation(0, UIPetAnim.std, true); + } + } //点击Item + ; + + _proto.onClickItem = function onClickItem(index) { + //判断是否不可选中 + if (this.views.getItems()[index].select.isNoSelect) { + app.layer.Open(GUI.Tips, { + text: "当前宠物已上阵" + }); + return; + } //设置当前选中 + + + this.index = index; //刷新 + + this.onUpdateSelect(); + } //点击上阵 + ; + + _proto.onClickTactical = /*#__PURE__*/function () { + var _onClickTactical = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (!(this.index < 0)) { + _context.next = 3; + break; + } + + app.layer.Open(GUI.Tips, { + text: "请选择要上阵的宠物." + }); + return _context.abrupt("return"); + + case 3: + _context.next = 5; + return PlayerTacticalData.getIns().UpdateIndexTactical(this.tIndex, this.pets[this.index].petId); + + case 5: + //上阵完 关闭页面 + app.layer.CloseNode(this.node); + + case 6: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + + function onClickTactical() { + return _onClickTactical.apply(this, arguments); + } + + return onClickTactical; + }(); + + return IntoBattleView; + }(JNLayerBase), (_descriptor$C = _applyDecoratedDescriptor(_class2$B.prototype, "views", [_dec2$F], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + }), _descriptor2$i = _applyDecoratedDescriptor(_class2$B.prototype, "spine", [_dec3$j], { + configurable: true, + enumerable: true, + writable: true, + initializer: null + })), _class2$B)) || _class$Y); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "94eea0qL7tIYZDZNUN4PCRC", "attribute-defines", undefined); + /* + * @Author: OreoWang + * @Email: ihc523@163.com + * @Date: 2022-03-21 21:24:23 + * @LastEditors: OreoWang + * @LastEditTime: 2022-04-21 15:54:10 + * @Description: + */ + + /* + Copyright (c) 2020 Xiamen Yaji Software Co., Ltd. + https://www.cocos.com/ + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated engine source code (the "Software"), a limited, + worldwide, royalty-free, non-assignable, revocable and non-exclusive license + to use Cocos Creator solely to develop games on your target platforms. You shall + not use Cocos Creator software for developing other software or tools that's + used for developing games. You are not granted to publish, distribute, + sublicense, and/or sell copies of Cocos Creator. + The software or tools in this License Agreement are licensed, not sold. + Xiamen Yaji Software Co., Ltd. reserves all rights not expressly granted to you. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + */ + + + cclegacy._RF.pop(); + + var _dec$Z, _dec2$G, _class$Z, _descriptor$D, _descriptor2$j; + + cclegacy._RF.push({}, "bdb14ZbxzRA7qS7Pg3O51rm", "TestCondition", undefined); // @bt.ccclass("TestCondition") + + + var TestCondition = (_dec$Z = property$1({ + type: SharedNumber + }), _dec2$G = property$1({ + type: SharedNode + }), (_class$Z = /*#__PURE__*/function (_bt$Conditional) { + _inheritsLoose(TestCondition, _bt$Conditional); + + function TestCondition() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _bt$Conditional.call.apply(_bt$Conditional, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "count", _descriptor$D, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "target", _descriptor2$j, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = TestCondition.prototype; + + _proto.load = function load() {}; + + return TestCondition; + }(Conditional), (_descriptor$D = _applyDecoratedDescriptor(_class$Z.prototype, "count", [_dec$Z], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + }), _descriptor2$j = _applyDecoratedDescriptor(_class$Z.prototype, "target", [_dec2$G], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + })), _class$Z)); + + cclegacy._RF.pop(); + + var _dec$_, _dec2$H, _class$_, _descriptor$E, _descriptor2$k; + + cclegacy._RF.push({}, "05febjgu/lCc46QCxo0tPhb", "TestDecorator", undefined); // @bt.ccclass("TestDecorator") + + + var TestDecorator = (_dec$_ = property$1({ + type: SharedNumber + }), _dec2$H = property$1({ + type: SharedNode + }), (_class$_ = /*#__PURE__*/function (_bt$Decorator) { + _inheritsLoose(TestDecorator, _bt$Decorator); + + function TestDecorator() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _bt$Decorator.call.apply(_bt$Decorator, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "count", _descriptor$E, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "target", _descriptor2$k, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = TestDecorator.prototype; + + _proto.load = function load() {}; + + return TestDecorator; + }(Decorator), (_descriptor$E = _applyDecoratedDescriptor(_class$_.prototype, "count", [_dec$_], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + }), _descriptor2$k = _applyDecoratedDescriptor(_class$_.prototype, "target", [_dec2$H], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + })), _class$_)); + + cclegacy._RF.pop(); + + var _dec$$, _dec2$I, _class$$, _descriptor$F, _descriptor2$l; + + cclegacy._RF.push({}, "f45f3T5fCBHN4A89j+0tKIo", "TestService", undefined); // @bt.ccclass("TestService") + + + var TestService = (_dec$$ = property$1({ + type: SharedNumber + }), _dec2$I = property$1({ + type: SharedNode + }), (_class$$ = /*#__PURE__*/function (_bt$Service) { + _inheritsLoose(TestService, _bt$Service); + + function TestService() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _bt$Service.call.apply(_bt$Service, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "count", _descriptor$F, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "target", _descriptor2$l, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = TestService.prototype; + + _proto.load = function load() {}; + + return TestService; + }(Service), (_descriptor$F = _applyDecoratedDescriptor(_class$$.prototype, "count", [_dec$$], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + }), _descriptor2$l = _applyDecoratedDescriptor(_class$$.prototype, "target", [_dec2$I], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + })), _class$$)); + + cclegacy._RF.pop(); + + var _dec$10, _dec2$J, _dec3$k, _class$10, _descriptor$G, _descriptor2$m, _descriptor3$b; + + cclegacy._RF.push({}, "b8a95IvA3BKL7nNXvpCa2CL", "TestTask", undefined); // @bt.ccclass("TestTask") + + + var TestTask = (_dec$10 = property$1({ + type: SharedNumber + }), _dec2$J = property$1({ + type: SharedNode + }), _dec3$k = property$1(Node), (_class$10 = /*#__PURE__*/function (_bt$Task) { + _inheritsLoose(TestTask, _bt$Task); + + function TestTask() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _bt$Task.call.apply(_bt$Task, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "count", _descriptor$G, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "targetShared", _descriptor2$m, _assertThisInitialized(_this)); + + _initializerDefineProperty(_this, "target", _descriptor3$b, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = TestTask.prototype; + + _proto.load = function load() {}; + + return TestTask; + }(Task), (_descriptor$G = _applyDecoratedDescriptor(_class$10.prototype, "count", [_dec$10], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + }), _descriptor2$m = _applyDecoratedDescriptor(_class$10.prototype, "targetShared", [_dec2$J], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + }), _descriptor3$b = _applyDecoratedDescriptor(_class$10.prototype, "target", [_dec3$k], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + })), _class$10)); + + cclegacy._RF.pop(); + + var _dec$11, _dec2$K, _dec3$l, _class$11, _class2$C, _descriptor$H; + + cclegacy._RF.push({}, "af7c4rIqLhGK6XwHK/SZ/ry", "ConditionalFilter", undefined); // const { Behavior } = Node; + + + var ConditionalFilter = (_dec$11 = ccclass$5('bt.ConditionalFilter'), _dec2$K = delegate(), _dec3$l = property$1({ + type: SharedBoolean, + tooltip: "Filter by shared variable / 根据共享变量值进行条件过滤" + }), _dec$11(_class$11 = _dec2$K(_class$11 = (_class2$C = /*#__PURE__*/function (_bt$BehaviorCondition) { + _inheritsLoose(ConditionalFilter, _bt$BehaviorCondition); + + function ConditionalFilter() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _bt$BehaviorCondition.call.apply(_bt$BehaviorCondition, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "filter", _descriptor$H, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = ConditionalFilter.prototype; + + _proto.execute = function execute(status) { + if (this.filter) { + var _this$filter; + + status = (_this$filter = this.filter) != null && _this$filter.value ? BehaviorStatus.Success : BehaviorStatus.Failure; + } + + return _bt$BehaviorCondition.prototype.execute.call(this, status); + }; + + return ConditionalFilter; + }(BehaviorConditional), _descriptor$H = _applyDecoratedDescriptor(_class2$C.prototype, "filter", [_dec3$l], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + }), _class2$C)) || _class$11) || _class$11); + + cclegacy._RF.pop(); + + var _dec$12, _class$12; + + cclegacy._RF.push({}, "d859ahQW6VIxatfaZ96fDkw", "ConditionalInverter", undefined); // const { Behavior } = Node; + + + var ConditionalInverter = (_dec$12 = ccclass$5('bt.ConditionalInverter'), _dec$12(_class$12 = /*#__PURE__*/function (_bt$BehaviorCondition) { + _inheritsLoose(ConditionalInverter, _bt$BehaviorCondition); + + function ConditionalInverter() { + return _bt$BehaviorCondition.apply(this, arguments) || this; + } + + var _proto = ConditionalInverter.prototype; + + _proto.execute = function execute(status) { + if (status == BehaviorStatus.Success) { + status = BehaviorStatus.Failure; + } else if (status == BehaviorStatus.Failure) { + status = BehaviorStatus.Success; + } + + return _bt$BehaviorCondition.prototype.execute.call(this, status); + }; + + return ConditionalInverter; + }(BehaviorConditional)) || _class$12); + + cclegacy._RF.pop(); + + var _dec$13, _class$13; + + cclegacy._RF.push({}, "b7669siUSlIOpyiRz9musn0", "ForceRunning", undefined); // const { Behavior } = Node; + + + var ForceRunning = (_dec$13 = ccclass$5('bt.ForceRunning'), _dec$13(_class$13 = /*#__PURE__*/function (_bt$BehaviorDecorator) { + _inheritsLoose(ForceRunning, _bt$BehaviorDecorator); + + function ForceRunning() { + return _bt$BehaviorDecorator.apply(this, arguments) || this; + } + + var _proto = ForceRunning.prototype; + + _proto.execute = function execute(status) { + status = BehaviorStatus.Running; + return _bt$BehaviorDecorator.prototype.execute.call(this, status); + }; + + return ForceRunning; + }(BehaviorDecorator)) || _class$13); + + cclegacy._RF.pop(); + + var _dec$14, _dec2$L, _class$14, _class2$D, _descriptor$I; + + cclegacy._RF.push({}, "e9db3uUzwpLYpDF+APaIB+Q", "RandomSuccessful", undefined); + + var RandomSuccessful = (_dec$14 = ccclass$5('bt.RandomSuccessful'), _dec2$L = property$1({ + tooltip: "返回成功的机率(0~1)" + }), _dec$14(_class$14 = (_class2$D = /*#__PURE__*/function (_bt$BehaviorDecorator) { + _inheritsLoose(RandomSuccessful, _bt$BehaviorDecorator); + + function RandomSuccessful() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _bt$BehaviorDecorator.call.apply(_bt$BehaviorDecorator, [this].concat(args)) || this; + + _initializerDefineProperty(_this, "percent", _descriptor$I, _assertThisInitialized(_this)); + + return _this; + } + + var _proto = RandomSuccessful.prototype; + + _proto.execute = function execute(status) { + if (this.percent == 0) { + status = BehaviorStatus.Failure; + } else if (this.percent == 1) { + status = BehaviorStatus.Success; + } else { + var percent = Math.random(); + + if (percent < this.percent) { + status = BehaviorStatus.Success; + } else { + status = BehaviorStatus.Failure; + } + } + + return _bt$BehaviorDecorator.prototype.execute.call(this, status); + }; + + return RandomSuccessful; + }(BehaviorDecorator), _descriptor$I = _applyDecoratedDescriptor(_class2$D.prototype, "percent", [_dec2$L], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0.5; + } + }), _class2$D)) || _class$14); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "5ba0eod3LhAg514wDDq7aT4", "NActionMessage", undefined); + + cclegacy._RF.pop(); + + cclegacy._RF.push({}, "b4012r8xoRP+b8Xs1YkV5UZ", "NActionServer", undefined); + + cclegacy._RF.pop(); + } + }; +}); + +(function(r) { + r('virtual:///prerequisite-imports/main', 'chunks:///main.js'); +})(function(mid, cid) { + System.register(mid, [cid], function (_export, _context) { + return { + setters: [function(_m) { + var _exportObj = {}; + + for (var _key in _m) { + if (_key !== "default" && _key !== "__esModule") _exportObj[_key] = _m[_key]; + } + + _export(_exportObj); + }], + execute: function () { } + }; + }); +}); \ No newline at end of file diff --git a/headless/static/cocos-js/_virtual_cc-3c607f36.js b/headless/static/cocos-js/_virtual_cc-3c607f36.js new file mode 100644 index 00000000..9a9da34a --- /dev/null +++ b/headless/static/cocos-js/_virtual_cc-3c607f36.js @@ -0,0 +1,119696 @@ +System.register([], (function (exports, module) { + 'use strict'; + return { + execute: (function () { + + exports({ + D: getBaselineOffset, + J: isUnicodeCJK, + K: isUnicodeSpace, + N: safeMeasureText, + P: isEnglishWordPartAtFirst, + W: isEnglishWordPartAtLast, + X: getEnglishWordPartAtFirst, + Y: getEnglishWordPartAtLast, + Z: fragmentText, + _: _createForOfIteratorHelperLoose, + a$: nextPow2, + aB: mat4, + aE: size, + aG: rect, + aI: color, + aN: equals$2, + aO: approx, + aP: clamp$1, + aQ: clamp01, + aR: lerp, + aS: toRadian, + aT: toDegree, + aU: random, + aV: setRandGenerator, + aW: randomRange, + aX: randomRangeInt, + aY: pseudoRandom, + aZ: pseudoRandomRange, + a_: pseudoRandomRangeInt, + aa: sampleAnimationCurve, + ab: computeRatioByType, + ad: getPathFromRoot, + ae: getWorldTransformUntilRoot, + as: v2$1, + au: v3, + aw: v4, + ay: quat, + b0: repeat$1, + b1: pingPong, + b2: inverseLerp, + b3: absMaxComponent, + b4: absMax, + b5: enumerableProps, + b6: floatToHalf, + b7: halfToFloat, + bG: getSerializationMetadata, + bJ: Eventify, + bL: debug, + bM: log, + bN: error, + bO: warn, + bP: assert, + bQ: logID, + bR: errorID, + bS: warnID, + bT: assertID, + bU: isDisplayStats, + bV: setDisplayStats, + bW: getError, + bd: BitMask, + be: Enum, + bf: ccenum, + bk: setDefaultLogTimes, + bo: deprecateModuleExportedName, + bp: __checkObsolete__, + bq: __checkObsoleteInNamespace__, + br: WorldNode3DToLocalNodeUI, + bs: WorldNode3DToWorldNodeUI, + bv: CCClass, + bw: isCCClassOrFastDefined, + cC: isCCObject, + cD: isValid, + cG: applyMixins, + cH: _resetDebugSetting, + cI: binarySearch, + cJ: binarySearchEpsilon, + cK: binarySearchBy, + cL: assertIsNonNullable, + cM: assertIsTrue, + cN: assertsArrayIndex, + cO: flattenCodeArray, + cV: createDefaultPipeline, + cf: murmurhash2_32_gc, + cg: bezier, + ch: bezierByTime, + ct: formerlySerializedAs$1, + cv: shift, + cy: setPropertyEnumType, + cz: setPropertyEnumTypeOnAttrs, + dN: deserialize, + dP: instantiate, + dh: find, + fd: tween, + fe: tweenUtil + }); + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { + writable: false + }); + return Constructor; + } + function _extends() { + _extends = Object.assign ? Object.assign.bind() : function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; + return _extends.apply(this, arguments); + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + _setPrototypeOf(subClass, superClass); + } + function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); + } + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + if (Reflect.construct.sham) return false; + if (typeof Proxy === "function") return true; + try { + Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); + return true; + } catch (e) { + return false; + } + } + function _construct(Parent, args, Class) { + if (_isNativeReflectConstruct()) { + _construct = Reflect.construct.bind(); + } else { + _construct = function _construct(Parent, args, Class) { + var a = [null]; + a.push.apply(a, args); + var Constructor = Function.bind.apply(Parent, a); + var instance = new Constructor(); + if (Class) _setPrototypeOf(instance, Class.prototype); + return instance; + }; + } + return _construct.apply(null, arguments); + } + function _isNativeFunction(fn) { + return Function.toString.call(fn).indexOf("[native code]") !== -1; + } + function _wrapNativeSuper(Class) { + var _cache = typeof Map === "function" ? new Map() : undefined; + _wrapNativeSuper = function _wrapNativeSuper(Class) { + if (Class === null || !_isNativeFunction(Class)) return Class; + if (typeof Class !== "function") { + throw new TypeError("Super expression must either be null or a function"); + } + if (typeof _cache !== "undefined") { + if (_cache.has(Class)) return _cache.get(Class); + _cache.set(Class, Wrapper); + } + function Wrapper() { + return _construct(Class, arguments, _getPrototypeOf(this).constructor); + } + Wrapper.prototype = Object.create(Class.prototype, { + constructor: { + value: Wrapper, + enumerable: false, + writable: true, + configurable: true + } + }); + return _setPrototypeOf(Wrapper, Class); + }; + return _wrapNativeSuper(Class); + } + function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + return self; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + return arr2; + } + function _createForOfIteratorHelperLoose(o, allowArrayLike) { + var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; + if (it) return (it = it.call(o)).next.bind(it); + if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { + if (it) o = it; + var i = 0; + return function () { + if (i >= o.length) return { + done: true + }; + return { + done: false, + value: o[i++] + }; + }; + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _toPrimitive(input, hint) { + if (typeof input !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== undefined) { + var res = prim.call(input, hint || "default"); + if (typeof res !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (hint === "string" ? String : Number)(input); + } + function _toPropertyKey(arg) { + var key = _toPrimitive(arg, "string"); + return typeof key === "symbol" ? key : String(key); + } + function _initializerDefineProperty(target, property, descriptor, context) { + if (!descriptor) return; + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 + }); + } + function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { + var desc = {}; + Object.keys(descriptor).forEach(function (key) { + desc[key] = descriptor[key]; + }); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + if ('value' in desc || desc.initializer) { + desc.writable = true; + } + desc = decorators.slice().reverse().reduce(function (desc, decorator) { + return decorator(target, property, desc) || desc; + }, desc); + if (context && desc.initializer !== void 0) { + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = undefined; + } + if (desc.initializer === void 0) { + Object.defineProperty(target, property, desc); + desc = null; + } + return desc; + } + + function tryDefineGlobal (name, value) { + const _global = typeof window === 'undefined' ? global : window; + if (typeof _global[name] === 'undefined') { + return (_global[name] = value); + } else { + // eslint-disable-next-line @typescript-eslint/no-unsafe-return + return _global[name]; + } + } + + const NATIVE = false; + tryDefineGlobal('CC_WECHAT', false); + + const WECHAT_MINI_PROGRAM = false; + tryDefineGlobal('CC_BAIDU', false); + + const XIAOMI = false; + tryDefineGlobal('CC_XIAOMI', false); + tryDefineGlobal('CC_ALIPAY', false); + tryDefineGlobal('CC_BYTEDANCE', false); + tryDefineGlobal('CC_OPPO', false); + tryDefineGlobal('CC_VIVO', false); + tryDefineGlobal('CC_HUAWEI', false); + tryDefineGlobal('CC_COCOSPLAY', false); + tryDefineGlobal('CC_QTT', false); + tryDefineGlobal('CC_LINKSURE', false); + + const EDITOR = false; + tryDefineGlobal('CC_EDITOR', false); + + const EDITOR_NOT_IN_PREVIEW = false; + + const PREVIEW = false; + tryDefineGlobal('CC_PREVIEW', false); + tryDefineGlobal('CC_BUILD', true); + + const TEST = false; + tryDefineGlobal('CC_TEST', false); + tryDefineGlobal('CC_DEBUG', true); + tryDefineGlobal('CC_DEV', false); + + const MINIGAME = false; + tryDefineGlobal('CC_MINIGAME', false); + + const RUNTIME_BASED = false; + tryDefineGlobal('CC_RUNTIME_BASED', false); + tryDefineGlobal('CC_SUPPORT_JIT', true); + + const JSB = false; + tryDefineGlobal('CC_JSB', false); + + var _global = typeof window === 'undefined' ? global : window; + var legacyCC = exports('ap', { + _global: _global + }); + legacyCC.internal = {}; + var engineVersion = exports('ao', '3.8.1'); + _global.CocosEngine = legacyCC.ENGINE_VERSION = engineVersion; + _global.cc = legacyCC; + var ccwindow = typeof globalThis.jsb !== 'undefined' ? typeof jsb.window !== 'undefined' ? jsb.window : globalThis : globalThis; + _global.ccwindow = ccwindow; + + var INT_BITS = 32; + var INT_MAX = 0x7fffffff; + var INT_MIN = -1 << INT_BITS - 1; + function sign$1(v) { + return (v > 0) - (v < 0); + } + function abs$1(v) { + var mask = v >> INT_BITS - 1; + return (v ^ mask) - mask; + } + function min$3(x, y) { + return y ^ (x ^ y) & -(x < y); + } + function max$4(x, y) { + return x ^ (x ^ y) & -(x < y); + } + function isPow2(v) { + return !(v & v - 1) && !!v; + } + function log2(v) { + var r; + var shift; + r = (v > 0xFFFF) << 4; + v >>>= r; + shift = (v > 0xFF) << 3; + v >>>= shift; + r |= shift; + shift = (v > 0xF) << 2; + v >>>= shift; + r |= shift; + shift = (v > 0x3) << 1; + v >>>= shift; + r |= shift; + return r | v >> 1; + } + function log10(v) { + return v >= 1000000000 ? 9 : v >= 100000000 ? 8 : v >= 10000000 ? 7 : v >= 1000000 ? 6 : v >= 100000 ? 5 : v >= 10000 ? 4 : v >= 1000 ? 3 : v >= 100 ? 2 : v >= 10 ? 1 : 0; + } + function popCount(v) { + v -= v >>> 1 & 0x55555555; + v = (v & 0x33333333) + (v >>> 2 & 0x33333333); + return (v + (v >>> 4) & 0xF0F0F0F) * 0x1010101 >>> 24; + } + function countTrailingZeros(v) { + var c = 32; + v &= -v; + if (v) { + c--; + } + if (v & 0x0000FFFF) { + c -= 16; + } + if (v & 0x00FF00FF) { + c -= 8; + } + if (v & 0x0F0F0F0F) { + c -= 4; + } + if (v & 0x33333333) { + c -= 2; + } + if (v & 0x55555555) { + c -= 1; + } + return c; + } + function nextPow2$1(v) { + --v; + v |= v >>> 1; + v |= v >>> 2; + v |= v >>> 4; + v |= v >>> 8; + v |= v >>> 16; + return v + 1; + } + function prevPow2(v) { + v |= v >>> 1; + v |= v >>> 2; + v |= v >>> 4; + v |= v >>> 8; + v |= v >>> 16; + return v - (v >>> 1); + } + function parity(v) { + v ^= v >>> 16; + v ^= v >>> 8; + v ^= v >>> 4; + v &= 0xf; + return 0x6996 >>> v & 1; + } + var REVERSE_TABLE = new Array(256); + (function (tab) { + for (var i = 0; i < 256; ++i) { + var v = i; + var r = i; + var s = 7; + for (v >>>= 1; v; v >>>= 1) { + r <<= 1; + r |= v & 1; + --s; + } + tab[i] = r << s & 0xff; + } + })(REVERSE_TABLE); + function reverse(v) { + return REVERSE_TABLE[v & 0xff] << 24 | REVERSE_TABLE[v >>> 8 & 0xff] << 16 | REVERSE_TABLE[v >>> 16 & 0xff] << 8 | REVERSE_TABLE[v >>> 24 & 0xff]; + } + function interleave2(x, y) { + x &= 0xFFFF; + x = (x | x << 8) & 0x00FF00FF; + x = (x | x << 4) & 0x0F0F0F0F; + x = (x | x << 2) & 0x33333333; + x = (x | x << 1) & 0x55555555; + y &= 0xFFFF; + y = (y | y << 8) & 0x00FF00FF; + y = (y | y << 4) & 0x0F0F0F0F; + y = (y | y << 2) & 0x33333333; + y = (y | y << 1) & 0x55555555; + return x | y << 1; + } + function deinterleave2(v, n) { + v = v >>> n & 0x55555555; + v = (v | v >>> 1) & 0x33333333; + v = (v | v >>> 2) & 0x0F0F0F0F; + v = (v | v >>> 4) & 0x00FF00FF; + v = (v | v >>> 16) & 0x000FFFF; + return v << 16 >> 16; + } + function interleave3(x, y, z) { + x &= 0x3FF; + x = (x | x << 16) & 4278190335; + x = (x | x << 8) & 251719695; + x = (x | x << 4) & 3272356035; + x = (x | x << 2) & 1227133513; + y &= 0x3FF; + y = (y | y << 16) & 4278190335; + y = (y | y << 8) & 251719695; + y = (y | y << 4) & 3272356035; + y = (y | y << 2) & 1227133513; + x |= y << 1; + z &= 0x3FF; + z = (z | z << 16) & 4278190335; + z = (z | z << 8) & 251719695; + z = (z | z << 4) & 3272356035; + z = (z | z << 2) & 1227133513; + return x | z << 2; + } + function deinterleave3(v, n) { + v = v >>> n & 1227133513; + v = (v | v >>> 2) & 3272356035; + v = (v | v >>> 4) & 251719695; + v = (v | v >>> 8) & 4278190335; + v = (v | v >>> 16) & 0x3FF; + return v << 22 >> 22; + } + function nextCombination(v) { + var t = v | v - 1; + return t + 1 | (~t & -~t) - 1 >>> countTrailingZeros(v) + 1; + } + + var bits = /*#__PURE__*/Object.freeze({ + __proto__: null, + INT_BITS: INT_BITS, + INT_MAX: INT_MAX, + INT_MIN: INT_MIN, + sign: sign$1, + abs: abs$1, + min: min$3, + max: max$4, + isPow2: isPow2, + log2: log2, + log10: log10, + popCount: popCount, + countTrailingZeros: countTrailingZeros, + nextPow2: nextPow2$1, + prevPow2: prevPow2, + parity: parity, + reverse: reverse, + interleave2: interleave2, + deinterleave2: deinterleave2, + interleave3: interleave3, + deinterleave3: deinterleave3, + nextCombination: nextCombination + }); + exports('aq', bits); + + var debugInfos = { + "1006": "[Action step]. override me", + "1007": "[Action update]. override me", + "1008": "[Action reverse]. override me", + "1100": "Expected 'data' dict, but not found. Config file: %s", + "1101": "Please load the resource first : %s", + "1102": "Effect settings not found, effects will not be imported.", + "1103": "Success to load scene: %s", + "1200": "cocos2d: Director: Error in gettimeofday", + "1204": "Running scene should not be null", + "1205": "The scene should not be null", + "1206": "loadScene: The scene index to load (%s) is out of range.", + "1207": "loadScene: Unknown name type to load: '%s'", + "1208": "loadScene: Failed to load scene '%s' because '%s' is already being loaded.", + "1209": "loadScene: Can not load the scene '%s' because it was not in the build settings before playing.", + "1210": "Failed to preload '%s', %s", + "1211": "loadScene: The scene index to load (%s) is out of range.", + "1212": "loadScene: Unknown name type to load: '%s'", + "1213": "loadScene: Failed to load scene '%s' because '%s' is already loading", + "1214": "loadScene: Can not load the scene '%s' because it was not in the build settings before playing.", + "1215": "Failed to preload '%s', %s", + "1216": "Director.runSceneImmediate: scene is not valid", + "1217": "Director._initOnEngineInitialized: renderer root initialization failed", + "1218": "Forward render pipeline initialized.", + "1219": "Deferred render pipeline initialized. Note that non-transparent materials with no lighting will not be rendered, such as builtin-unlit.", + "1220": "Failed to set shading scale, pipelineSceneData is invalid.", + "1221": "Setting orientation is not supported yet.", + "1300": "%s is not in the model pool and cannot be destroyed by destroyModel.", + "1400": "'%s' is deprecated, please use '%s' instead.", + "1404": "cc.spriteFrameCache is removed, please use cc.loader to load and cache sprite frames of atlas format.", + "1406": "'%s.%s' is removed", + "1408": "'%s' is removed", + "1409": "element type is wrong!", + "1502": "cc.scheduler.scheduleCallbackForTarget(): target should be non-null.", + "1503": "cc.Scheduler.pauseTarget():target should be non-null", + "1504": "cc.Scheduler.resumeTarget():target should be non-null", + "1505": "cc.Scheduler.isTargetPaused():target should be non-null", + "1506": "warning: you CANNOT change update priority in scheduled function", + "1507": "scheduler#scheduleSelector. Selector already scheduled. Updating interval from: %.4f to %.4f", + "1508": "Argument callback must not be empty", + "1509": "Argument target must be non-nullptr", + "1510": "cc.Scheduler: Illegal target which doesn't have id, you should do Scheduler.enableForTarget(target) before all scheduler API usage on target", + "1511": "cc.Scheduler: pause state of the scheduled task doesn't match the element pause state in Scheduler, the given paused state will be ignored.", + "1513": "cc.Scheduler: scheduler stopped using `__instanceId` as id since v2.0, you should do Scheduler.enableForTarget(target) before all scheduler API usage on target", + "1514": "since v3.8.0, `Scheduler.schedule(target, callback, interval)` is deprecated, please use `Scheduler.schedule(callback, target, interval)` instead.", + "1607": "removeFromParentAndCleanup is deprecated. Use removeFromParent instead", + "1619": "callback function must be non-null", + "1620": "interval must be positive", + "1623": "Set '%s' to normal node (not persist root node).", + "1624": "Replacing with the same sgNode", + "1625": "The replacement sgNode should not contain any child.", + "1626": "Should not set alpha via 'color', set 'opacity' please.", + "1627": "Not support for asynchronous creating node in SG", + "1632": "Node name can not include '/'.", + "1633": "Internal error, should not remove unknown node from parent.", + "1635": "reorderChild: this child is not in children list.", + "1636": "Node's zIndex value can't be greater than cc.macro.MAX_ZINDEX, setting to the maximum value", + "1637": "Node's zIndex value can't be smaller than cc.macro.MIN_ZINDEX, setting to the minimum value", + "1638": "Private node's zIndex can't be set, it will keep cc.macro.MIN_ZINDEX as its value", + "1800": "cc._EventListenerKeyboard.checkAvailable(): Invalid EventListenerKeyboard!", + "1801": "cc._EventListenerTouchOneByOne.checkAvailable(): Invalid EventListenerTouchOneByOne!", + "1802": "cc._EventListenerTouchAllAtOnce.checkAvailable(): Invalid EventListenerTouchAllAtOnce!", + "1803": "cc._EventListenerAcceleration.checkAvailable():_onAccelerationEvent must be non-nil", + "1900": "Invalid parameter.", + "2104": "Layer collision. The name of layer (%s) is collided with the name or value of some layer", + "2200": "Design resolution not valid", + "2201": "should set resolutionPolicy", + "2300": "The touches is more than MAX_TOUCHES, nUnusedIndex = %s", + "2402": "Forward pipeline startup failed!", + "3103": "cc.Texture.addImage(): path should be non-null", + "3119": "Lazy init texture with image element failed due to image loading failure: %s", + "3120": "Loading texture with unsupported type: '%s'. Add '%s' into 'cc.macro.SUPPORT_TEXTURE_FORMATS' please.", + "3121": "Can't find a texture format supported by the current platform! Please add a fallback format in the editor.", + "3122": "Error Texture in %s.", + "3123": "Set same texture %s.", + "3124": "Texture: setMipRange failed because base level is larger than max level", + "3300": "Rect width exceeds maximum margin: %s", + "3301": "Rect height exceeds maximum margin: %s", + "3500": "0 priority is forbidden for fixed priority since it's used for scene graph based priority.", + "3501": "Invalid listener type!", + "3502": "Can't set fixed priority with scene graph based listener.", + "3503": "Invalid parameters.", + "3504": "listener must be a cc.EventListener object when adding a fixed priority listener", + "3505": "The listener has been registered, please don't register it again.", + "3506": "Unsupported listener target.", + "3507": "Invalid scene graph priority!", + "3508": "If program goes here, there should be event in dispatch.", + "3509": "_inDispatch should be 1 here.", + "3510": "%s's scene graph node not contains in the parent's children", + "3511": "event is undefined", + "3512": "Event manager only support scene graph priority for ui nodes which contain UIComponent", + "3520": "Device Motion Event request permission: %s", + "3521": "Device Motion Event request permission failed: %s", + "3601": "The editor property 'playOnFocus' should be used with 'executeInEditMode' in class '%s'", + "3602": "Unknown editor property '%s' in class '%s'.", + "3603": "Use 'cc.Float' or 'cc.Integer' instead of 'cc.Number' please.", + "3604": "Can only indicate one type attribute for %s.", + "3605": "The default value of %s is not instance of %s.", + "3606": "No needs to indicate the '%s' attribute for %s, which its default value is type of %s.", + "3607": "The default value of %s must be an empty string.", + "3608": "The type of %s must be CCString, not String.", + "3609": "The type of %s must be CCBoolean, not Boolean.", + "3610": "The type of %s must be CCFloat or CCInteger, not Number.", + "3611": "Can not indicate the '%s' attribute for %s, which its default value is type of %s.", + "3612": "%s Just set the default value to 'new %s()' and it will be handled properly.", + "3613": "'No need to use 'serializable: false' or 'editorOnly: true' for the getter of '%s.%s', every getter is actually non-serialized.", + "3614": "Should not define constructor for cc.Component %s.", + "3615": "Each script can have at most one Component.", + "3616": "Should not specify class name %s for Component which defines in project.", + "3618": "ctor of '%s' can not be another CCClass", + "3623": "Can not use 'editor' attribute, '%s' not inherits from Components.", + "3625": "[isChildClassOf] superclass should be function type, not", + "3626": "Can't remove '%s' because '%s' depends on it.", + "3627": "Should not add renderer component (%s) to a Canvas node.", + "3628": "Should not add %s to a node which size is already used by its other component.", + "3633": "Properties function of '%s' should return an object!", + "3634": "Disallow to use '.' in property name", + "3637": "Can not declare %s.%s, it is already defined in the prototype of %s", + "3639": "Can not apply the specified attribute to the getter of '%s.%s', attribute index: %s", + "3640": "'%s': the setter of '%s' is already defined!", + "3641": "Can not construct %s because it contains object property.", + "3644": "Please define 'type' parameter of %s.%s as the actual constructor.", + "3645": "Please define 'type' parameter of %s.%s as the constructor of %s.", + "3646": "Unknown 'type' parameter of %s.%s:%s", + "3647": "The length of range array must be equal or greater than 2", + "3648": "Can not declare %s.%s method, it is already defined in the properties of %s.", + "3652": "Failed to `new %s()` under the hood, %s\nIt is used for getting default values declared in TypeScript in the first place.\nPlease ensure the constructor can be called during the script's initialization.", + "3653": "Please do not specifiy \"default\" attribute in decorator of \"%s\" property in \"%s\" class.\nDefault value must be initialized at their declaration:\n\n \n// Before:\n@property({\n type: cc.SpriteFrame\n default: null // <--\n})\nmyProp;\n// After:\n@property({\n type: cc.SpriteFrame\n})\nmyProp = null; // <--", + "3654": "Please specifiy a default value for \"%s.%s\" property at its declaration:\n\n \n// Before:\n@property(...)\nmyProp;\n// After:\n@property(...)\nmyProp = 0;", + "3655": "Can not specifiy \"get\" or \"set\" attribute in decorator for \"%s\" property in \"%s\" class.\nPlease use:\n\n \n@property(...)\nget %s () {\n ...\n}\n@property\nset %s (value) {\n ...\n}", + "3659": "Violation error: extending enumerations shall have non-overlaped member names or member values", + "3660": "You are explicitly specifying `undefined` type to cc property \"%s\" of cc class \"%s\".\nIs this intended? If not, this may indicate a circular reference.\nFor example:\n\n \n// foo.ts\nimport { _decorator } from 'cc';\nimport { Bar } from './bar'; // Given that './bar' also reference 'foo.ts'.\n // When importing './bar', execution of './bar' is hung on to wait execution of 'foo.ts',\n // the `Bar` imported here is `undefined` until './bar' finish its execution.\n // It leads to that\n@_decorator.ccclass // ↓\nexport class Foo { // ↓\n @_decorator.type(Bar) // → is equivalent to `@_decorator.type(undefined)`\n public bar: Bar; // To eliminate this error, either:\n // - Refactor your module structure(recommended), or\n // - specify the type as cc class name: `@_decorator.type('Bar'/* or any name you specified for `Bar` */)`\n}", + "3700": "internal error: _prefab is undefined", + "3701": "Failed to load prefab asset for node '%s'", + "3800": "The target can not be made persist because it's not a cc.Node or it doesn't have _id property.", + "3801": "The node can not be made persist because it's not under root node.", + "3802": "The node can not be made persist because it's not in current scene.", + "3803": "The target can not be made persist because it's not a cc.Node or it doesn't have _id property.", + "3804": "getComponent: Type must be non-nil", + "3805": "Can't add component '%s' because %s already contains the same component.", + "3806": "Can't add component '%s' to %s because it conflicts with the existing '%s' derived component.", + "3807": "addComponent: Failed to get class '%s'", + "3808": "addComponent: Should not add component ('%s') when the scripts are still loading.", + "3809": "addComponent: The component to add must be a constructor", + "3810": "addComponent: The component to add must be child class of cc.Component", + "3811": "_addComponentAt: The component to add must be a constructor", + "3812": "_addComponentAt: Index out of range", + "3813": "removeComponent: Component must be non-nil", + "3814": "Argument must be non-nil", + "3815": "Component not owned by this entity", + "3816": "Node '%s' is already activating", + "3817": "Sorry, the component of '%s' which with an index of %s is corrupted! It has been removed.", + "3818": "Failed to read or parse project.json", + "3819": "Warning: target element is not a DIV or CANVAS", + "3820": "The renderer doesn't support the renderMode %s", + "3821": "Cannot change hierarchy while activating or deactivating the parent.", + "3822": "addComponent: Cannot add any component to the scene.", + "3823": "The enabled component (id: %s, name: %s) doesn't have a valid node", + "3900": "Invalid clip to add", + "3901": "Invalid clip to remove", + "3902": "clip is defaultClip, set force to true to force remove clip and animation state", + "3903": "animation state is playing, set force to true to force stop and remove clip and animation state", + "3904": "motion path of target [%s] in prop [%s] frame [%s] is not valid", + "3905": "sprite frames must be an Array.", + "3906": "Can't find easing type [%s]", + "3907": "Animation state is not playing or already removed", + "3912": "already-playing", + "3920": "Current context does not allow root motion.", + "3921": "You provided a ill-formed track path. The last component of track path should be property key, or the setter should not be empty.", + "3923": "Root motion is ignored since root bone could not be located in animation.", + "3924": "Root motion is ignored since the root bone could not be located in scene.", + "3925": "Target of hierarchy path should be of type Node.", + "3926": "Node \"%s\" has no path \"%s\".", + "3927": "Target of component path should be of type Node.", + "3928": "Node \"%s\" has no component \"%s\".", + "3929": "Target object has no property \"%s\".", + "3930": "Can not decide type for untyped track: runtime binding does not provide a getter.", + "3931": "Can not decide type for untyped track: got a unsupported value from runtime binding.", + "3932": "Common targets should only target Vectors/`Size`/`Color`.", + "3933": "Each curve that has common target should be numeric curve and targets string property.", + "3934": "Misconfigured legacy curve: the first keyframe value is number but others aren't.", + "3935": "We don't currently support conversion of \\`CubicSplineQuatValue\\`.", + "3936": "Instancing/Batching enabled for non-baked skinning model '%s', this may result in unexpected rendering artifacts. Consider turning it off in the material if you do not intend to do this.", + "3937": "Previous error occurred when instantiating animation clip %s on node %s.", + "3938": "'%s' is not found from '%s'. It's specified as the root node to play animation clip '%s'.", + "3940": "Error when animation attempted to bind material uniform target: target %s is not a material.", + "3941": "Error when animation attempted to bind material uniform target: material %s has no recorded pass %s.", + "3942": "Error when animation attempted to bind material uniform target: material %s at pass %s has no recorded uniform %s.", + "3943": "Error when animation attempted to bind material uniform target: material %s at pass %s's uniform %s has no recorded channel %s.", + "4003": "Label font size can't be shirnked less than 0!", + "4004": "force notify all fonts loaded!", + "4011": "Property spriteFrame of Font '%s' is invalid. Using system font instead.", + "4012": "The texture of Font '%s' must be already loaded on JSB. Using system font instead.", + "4013": "Sorry, lineHeight of system font not supported on JSB.", + "4200": "MaskType: IMAGE_STENCIL only support WebGL mode.", + "4201": "The alphaThreshold invalid in Canvas Mode.", + "4202": "The inverted invalid in Canvas Mode.", + "4300": "Can not found the %s page.", + "4301": "Can not add a page without UITransform.", + "4302": "Can not set the scroll view content when it hasn't UITransform or its parent hasn't UITransform.", + "4303": "The %s scrollBar on the '%s' node is not available, please check it.", + "4400": "Invalid RichText img tag! The sprite frame name can't be found in the ImageAtlas!", + "4500": "Graphics: There is no model in %s.", + "4600": "Script attached to '%s' is missing or invalid.", + "4601": "Failed to load wasm module, WebAssembly is not supported on this platform, but as a fallback Asm.js module is culled by mistake.", + "4700": "The dom control is not created!", + "4800": "unknown asset type", + "4901": "loadRes: should not specify the extname in %s %s", + "4902": "No need to release non-cached asset.", + "4914": "Resources url '%s' does not exist.", + "4915": "Pack indices and data do not match in size", + "4916": "Failed to download package for %s", + "4921": "Invalid pipe or invalid index provided!", + "4922": "The pipe to be inserted is already in the pipeline!", + "4923": "Uuid Loader: Parse asset [ %s ] failed : %s", + "4924": "JSON Loader: Input item doesn't contain string content", + "4925": "Uuid Loader: Deserialize asset [ %s ] failed : %s", + "4926": "Audio Downloader: no web audio context.", + "4927": "Audio Downloader: audio not supported on this browser!", + "4928": "Load %s failed!", + "4929": "Load Webp ( %s ) failed", + "4930": "Load image ( %s ) failed", + "4932": "Since v1.10, for any atlas (\"%s\") in the \"resources\" directory, it is not possible to find the contained SpriteFrames via `loadRes`, `getRes` or `releaseRes`. Load the SpriteAtlas first and then use `spriteAtlas.getSpriteFrame(name)` instead please.", + "4933": "Download Font [ %s ] failed, using Arial or system default font instead", + "4934": "Please assure that the full path of sub asset is correct!", + "4935": "Failed to skip prefab asset while deserializing PrefabInfo", + "5000": "You are trying to destroy a object twice or more.", + "5001": "object not yet destroyed", + "5100": "Not a plist file!", + "5200": "Warning: localStorage isn't enabled. Please confirm browser cookie or privacy option", + "5201": "browser don't support web audio", + "5202": "This feature supports WebGL render mode only.", + "5300": "Type of target to deserialize not matched with data: target is %s, data is %s", + "5301": "Can not find script '%s'", + "5302": "Can not find class '%s'", + "5303": "Failed to deserialize %s, missing _deserialize function.", + "5304": "Unable to deserialize version %s data.", + "5402": "cc.js.addon called on non-object:", + "5403": "cc.js.mixin: arguments must be type object:", + "5404": "The base class to extend from must be non-nil", + "5405": "The class to extend must be non-nil", + "5406": "Class should be extended before assigning any prototype members.", + "5500": "'notify' can not be used in 'get/set' !", + "5501": "'notify' must be used with 'default' !", + "5507": "The 'default' attribute of '%s.%s' must be an array", + "5508": "Invalid type of %s.%s", + "5510": "The 'type' attribute of '%s.%s' can not be 'Number', use cc.Float or cc.Integer instead please.", + "5511": "The 'type' attribute of '%s.%s' is undefined when loading script", + "5512": "Can not serialize '%s.%s' because the specified type is anonymous, please provide a class name or set the 'serializable' attribute of '%s.%s' to 'false'.", + "5513": "The 'default' value of '%s.%s' should not be used with a 'get' function.", + "5514": "The 'default' value of '%s.%s' should not be used with a 'set' function.", + "5515": "The 'default' value of '%s.%s' can not be an constructor. Set default to null please.", + "5517": "'%s.%s' hides inherited property '%s.%s'. To make the current property override that implementation, add the `override: true` attribute please.", + "5601": "Can not get current scene.", + "5602": "Scene is destroyed", + "5603": "reference node is destroyed", + "5700": "no %s or %s on %s", + "5800": "%s.lerp not yet implemented.", + "5801": "%s.clone not yet implemented.", + "5802": "%s.equals not yet implemented.", + "5900": "MotionStreak only support WebGL mode.", + "5901": "cc.MotionStreak.getOpacity has not been supported.", + "5902": "cc.MotionStreak.setOpacity has not been supported.", + "6000": "Custom should not be false if file is not specified.", + "6001": "The new %s must not be NaN", + "6017": "Incomplete or corrupt PNG file", + "6018": "Invalid filter algorithm: %s", + "6019": "Invalid byte order value.", + "6020": "You forgot your towel!", + "6021": "Unknown Field Tag: %s", + "6022": "Too many bits requested", + "6023": "No bits requested", + "6024": "Cannot recover from missing StripByteCounts", + "6025": "Cannot handle sub-byte bits per sample", + "6026": "Cannot handle sub-byte bits per pixel", + "6027": "Palette image missing color map", + "6028": "Unknown Photometric Interpretation: %s", + "6029": "Unkown error", + "6030": "cc.ParticleSystem: error decoding or ungzipping textureImageData", + "6031": "cc.ParticleSystem: unknown image format with Data", + "6032": "cc.ParticleSystem.initWithDictionary() : error loading the texture", + "6033": "cc.ParticleSystem: not allowing create to be invoked twice with different particle system", + "6034": "cc.ParticleSystem: shouldn't be initialized repetitively, otherwise there will be potential leak", + "6035": "cc.ParticleSystem: change material failed, please use proper particle material", + "6036": "cc.ParticleSystem: life time should bigger than 1 or buffer will be insufficient", + "6400": "asset.url is not usable in core process", + "6402": "AssetLibrary has already been initialized!", + "6500": "Widget target must be one of the parent nodes of it", + "6600": "collider not added or already removed", + "6601": "Can't find testFunc for (%s, $s).", + "6700": "Can't init canvas '%s' because it conflicts with the existing '%s', the scene should only have one active canvas at the same time.", + "6705": "Argument must be non-nil", + "6706": "Priority can't be set in RenderRoot2D node", + "6800": "Callback of event must be non-nil", + "6801": "The message must be provided", + "6900": "The thing you want to instantiate must be an object", + "6901": "The thing you want to instantiate is nil", + "6902": "The thing you want to instantiate is destroyed", + "6903": "The instantiate method for given asset do not implemented", + "6904": "Can not instantiate array", + "6905": "Can not instantiate DOM element", + "7100": "%s already defined in Enum.", + "7101": "Sorry, 'cc.Enum' not available on this platform, please report this error here: ", + "7200": "Method 'initWithTMXFile' is no effect now, please set property 'tmxAsset' instead.", + "7201": "Method 'initWithXML' is no effect now, please set property 'tmxAsset' instead.", + "7202": "Add component TiledLayer into node failed.", + "7203": "Property 'mapLoaded' is unused now. Please write the logic to the callback 'start'.", + "7210": "TMX Hexa zOrder not supported", + "7211": "TMX invalid value", + "7215": "cocos2d: Warning: TMX Layer %s has no tiles", + "7216": "cocos2d: TMXFormat: Unsupported TMX version: %s", + "7217": "cocos2d: TMXFomat: Unsupported orientation: %s", + "7218": "cc.TMXMapInfo.parseXMLFile(): unsupported compression method", + "7219": "cc.TMXMapInfo.parseXMLFile(): Only base64 and/or gzip/zlib maps are supported", + "7221": "cc.TMXMapInfo.parseXMLFile(): Texture '%s' not found.", + "7222": "Parse %s failed.", + "7236": "cc.TMXLayer.getTileAt(): TMXLayer: the tiles map has been released", + "7237": "cc.TMXLayer.getTileGIDAt(): TMXLayer: the tiles map has been released", + "7238": "cc.TMXLayer.setTileGID(): TMXLayer: the tiles map has been released", + "7239": "cc.TMXLayer.setTileGID(): invalid gid: %s", + "7240": "cc.TMXLayer.getTileFlagsAt(): TMXLayer: the tiles map has been released", + "7241": "cc.TiledMap.initWithXML(): Map not found. Please check the filename.", + "7401": "Failed to set _defaultArmatureIndex for '%s' because the index is out of range.", + "7402": "Failed to set _animationIndex for '%s' because the index is out of range.", + "7501": "Failed to set _defaultSkinIndex for '%s' because the index is out of range.", + "7502": "Failed to set _animationIndex for '%s' because its skeletonData is invalid.", + "7503": "Failed to set _animationIndex for '%s' because the index is out of range.", + "7504": "Can not render dynamic created SkeletonData", + "7506": "Failed to load spine atlas '$s'", + "7507": "Please re-import '%s' because its textures is not initialized! (This workflow will be improved in the future.)", + "7508": "The atlas asset of '%s' is not exists!", + "7509": "Spine: Animation not found: %s", + "7510": "Spine: Animation not found: %s", + "7511": "Spine: Invalid input!", + "7600": "The context of RenderTexture is invalid.", + "7601": "cc.RenderTexture._initWithWidthAndHeightForWebGL() : only RGB and RGBA formats are valid for a render texture;", + "7602": "Could not attach texture to the framebuffer", + "7603": "clearDepth isn't supported on Cocos2d-Html5", + "7604": "saveToFile isn't supported on Cocos2d-Html5", + "7605": "newCCImage isn't supported on Cocos2d-Html5", + "7606": "GFXTexture is null", + "7607": "readPixels buffer size smaller than %d", + "7700": "On the web is always keep the aspect ratio", + "7701": "Can't know status", + "7702": "Video player's duration is not ready to get now!", + "7703": "Video Downloader: video not supported on this browser!", + "7800": "Web does not support loading", + "7801": "Web does not support query history", + "7802": "Web does not support query history", + "7803": "The current browser does not support the GoBack", + "7804": "The current browser does not support the GoForward", + "7805": "Web does not support zoom", + "7900": "cc.math.Matrix3.assign(): current matrix equals matIn", + "7901": "cc.math.mat4Assign(): pOut equals pIn", + "7902": "cc.mat.Matrix4.assignFrom(): mat4 equals current matrix", + "7903": "cc.math.Matrix4 equal: pMat1 and pMat2 are same object.", + "7904": "cc.math.Matrix4.extractPlane: Invalid plane index", + "7905": "cc.math.mat4Assign(): pOut equals pIn", + "7906": "cc.mat.Matrix4.assignFrom(): mat4 equals current matrix", + "7907": "cc.math.Matrix4 equals: pMat1 and pMat2 are same object.", + "7908": "Invalid matrix mode specified", + "7909": "current quaternion is an invalid value", + "8000": "Can't handle this field type or size", + "8001": "No bytes requested", + "8002": "Too many bytes requested", + "8003": "Missing StripByteCounts!", + "8100": "cocos2d: ERROR: Failed to compile shader:\n %s", + "8101": "cocos2d: ERROR: Failed to compile vertex shader", + "8102": "cocos2d: ERROR: Failed to compile fragment shader", + "8103": "cc.GLProgram.link(): Cannot link invalid program", + "8104": "cocos2d: ERROR: Failed to link program: %s", + "8105": "cocos2d: cc.shaderCache._loadDefaultShader, error shader type", + "8106": "Please load the resource firset : %s", + "8107": "cc.GLProgram.getUniformLocationForName(): uniform name should be non-null", + "8108": "cc.GLProgram.getUniformLocationForName(): Invalid operation. Cannot get uniform location when program is not initialized", + "8109": "modelView matrix is undefined.", + "8200": "Please set node's active instead of rigidbody's enabled.", + "8300": "Should only one camera exists, please check your project.", + "8301": "Camera does not support Canvas Mode.", + "8302": "Camera.viewport is deprecated, please use setViewportInOrientedSpace instead.", + "8400": "Wrong type arguments, 'filePath' must be a String.", + "9000": "Stencil manager does not support level bigger than %d in this device.", + "9001": "Stencil manager is already empty, cannot pop any mask", + "9002": "Failed to request any buffer from a mesh buffer without accessor", + "9003": "The internal state of LinearBufferAccessor have severe issue and irreversible, please check the reason", + "9004": "Failed to allocate chunk in StaticVBAccessor, the requested buffer might be too large: %d bytes", + "9005": "BATCHER2D_MEM_INCREMENT is too large, the Max value for BATCHER2D_MEM_INCREMENT is 2303KB (smaller than 65536 *9* 4 / 1024 = 2304KB)", + "9006": "QuadRenderData is removed, please use MeshRenderData instead.", + "9007": "Since v3.6, Because mask changes the inheritance relationship, you can directly manipulate the rendering components under the same node to complete the operation.", + "9100": "texture size exceeds current device limits %d/%d", + "9101": "The length of the TypedArrayBuffer must be an integer.", + "9201": "Cannot access game frame or container.", + "9202": "Setting window size is not supported.", + "9300": "The current buffer beyond the limit in ui static component, please reduce the amount", + "9301": "The UI has not been initialized", + "9302": "Can't getGFXSampler with out device", + "9600": "[Physics]: please check to see if physics modules are included", + "9610": "[Physics]: cannon.js physics system doesn't support capsule collider", + "9611": "[Physics]: builtin physics system doesn't support mesh collider", + "9612": "[Physics]: builtin physics system doesn't support cylinder collider", + "9613": "[Physics]: cannon.js physics system doesn't support hinge drive and angular limit", + "9620": "[Physics][Ammo]: changing the mesh is not supported after the initialization is completed", + "9630": "[Physics]: A dynamic rigid body can not have the following collider shapes: Terrain, Plane and Non-convex Mesh. Node name: %s", + "9640": "[Physics][builtin]: sweep functions are not supported in builtin", + "9641": "[Physics][cannon.js]: sweep functions are not supported in cannon.js", + "10001": "The sub-mesh contains %d vertices, which beyonds the capability (%d vertices most) of renderer of your platform.", + "10002": "Sub-mesh may include at most %d morph targets, but you specified %d.", + "11000": "WebGL context lost.", + "12001": "BlendFactors are disabled when using custom material, please modify the blend state in the material instead.", + "12002": "Can't add renderable component to this node because it already have one.", + "12004": "SubModel can only support %d passes.", + "12005": "Material already initialized, request aborted.", + "12006": "Pass already destroyed.", + "12007": "This is old usage, please swap the parameters.", + "12008": "GeometryRenderer: too many lines.", + "12009": "GeometryRenderer: too many triangles.", + "12010": "PassUtils: illegal uniform handle, accessing uniform at offset %d", + "12011": "Pass: setUniform is invoked with incompatible uniform data type for binding %d, expected type is %s", + "12012": "Can't set a material instance to a sharedMaterial slot", + "12100": "The font size is too big to be fitted into texture atlas. Please switch to other label cache modes or choose a smaller font size.", + "12101": "The asset %s has been destroyed!", + "12102": "Base pass cannot override states, please use pass instance instead.", + "12103": "Custom pipeline create shader %s failed. Please restart editor.", + "12104": "Create shader %s failed.", + "12105": "Pass resources incomplete.", + "12106": "Cannot patch non-builtin macros.", + "12107": "Custom pipeline invalid render pass, program: %s. Please restart editor.", + "12108": "Custom pipeline invalid render phase, program: %s. Please restart editor.", + "13100": "Incorrect CCON magic.", + "13101": "Unknown CCON version number: %d.", + "13102": "CCON Format error.", + "13103": "Can not encode CCON binary: lack of text encoder.", + "13104": "Can not decode CCON binary: lack of text decoder.", + "14000": "State machine matched too many transitions(greater than %s) during this frame: %s.", + "14100": "Pool.destroy no longer take a function as parameter, Please specify destruct function in the construction of Pool instead", + "14200": "Can not update a static mesh.", + "14201": "The primitiveIndex is out of range.", + "14202": "meshopt asm decoder initialized", + "14203": "meshopt wasm decoder initialized", + "14204": "meshopt decoder error: %d", + "14300": "Can not keep world transform due to the zero scaling of parent node", + "14400": "Spline error: less than 2 knots.", + "14401": "Spline error: less than 4 knots or not a multiple of 4.\n\n", + "15000": "Can not find corresponding diffuse map for environment lighting, use hemisphere diffuse instead, change environment lighting type to regenerate diffuse map", + "15001": "Can not find environment map, disable IBL lighting", + "15002": "Diffuse map resource is missing, please change environment lighting type to regenerate resource", + "15003": "The shadow visible distance is so small that CSM stratification is not effective, Please change the value of shadowDistance so that it is 10 times greater than 0.1", + "15004": "The native folder may be generated from older versions, please refer https://docs.cocos.com/creator/manual/en/release-notes/ to upgrade.", + "15100": "Camera '%s' clear flag is skybox, but skybox is disabled, may cause strange background effect, please set camera clear flag to solid color.", + "16000": "'%s' is deprecated since v%s.", + "16001": "'%s' is deprecated since v%s, please use '%s' instead.", + "16002": "'%s' is removed since v%s.", + "16003": "'%s' is removed since v%s, please use '%s' instead.", + "16101": "The effect('%s') you are looking for does not exist, please confirm the effect name in the editor. NOTE: Since 3.6, the name of the built-in effect has been changed to its name in the editor, please check it out. More information please refer to https://docs.cocos.com/creator/manual/en/shader/effect-inspector.html", + "16201": "The asset replacing failed, can not found override asset('%s') for '%s'", + "16301": "node '%s' doesn't have any ModelRenderer component, this component will not work. please add ModelRenderer component first", + "16302": "There is no reflection probe in the scene or no probe is near the current object. No reflection probe will take effect on this object. Please create a new reflection probe or move existing ones closer.", + "16303": "Skin material needs floating-point render target, please check ENABLE_FLOAT_OUTPUT define in Project Settings--Macro", + "16304": "Skin material may need more accurate calculations, please select a head model of standard size, check the isGlobalStandardSkinObject option in the MeshRender component.", + "0100": "%s not yet implemented.", + "0200": "You should specify a valid DOM canvas element." + }; + + var ccdocument$6 = ccwindow.document; + var logList = null; + var ccLog = console.log.bind(console); + var ccWarn = ccLog; + var ccError = ccLog; + var ccAssert = function ccAssert(condition, message) { + if (!condition) { + for (var _len = arguments.length, optionalParams = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + optionalParams[_key - 2] = arguments[_key]; + } + console.log("ASSERT: " + formatString.apply(void 0, [message].concat(optionalParams))); + } + }; + var ccDebug = ccLog; + function formatString() { + for (var _len2 = arguments.length, data = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + data[_key2] = arguments[_key2]; + } + return legacyCC.js.formatStr.apply(null, data); + } + function log() { + return ccLog.apply(void 0, arguments); + } + function warn() { + return ccWarn.apply(void 0, arguments); + } + function error() { + return ccError.apply(void 0, arguments); + } + function assert(condition, message) { + for (var _len3 = arguments.length, optionalParams = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) { + optionalParams[_key3 - 2] = arguments[_key3]; + } + return ccAssert.apply(void 0, [condition, message].concat(optionalParams)); + } + function debug() { + return ccDebug.apply(void 0, arguments); + } + function _resetDebugSetting(mode) { + ccLog = ccWarn = ccError = ccAssert = ccDebug = function ccDebug() {}; + if (mode === DebugMode.NONE) { + return; + } + if (mode > DebugMode.ERROR) { + var logToWebPage = function logToWebPage(msg) { + if (!legacyCC.game.canvas) { + return; + } + if (!logList) { + var logDiv = ccdocument$6.createElement('Div'); + logDiv.setAttribute('id', 'logInfoDiv'); + logDiv.setAttribute('width', '200'); + logDiv.setAttribute('height', legacyCC.game.canvas.height); + var logDivStyle = logDiv.style; + logDivStyle.zIndex = '99999'; + logDivStyle.position = 'absolute'; + logDivStyle.top = logDivStyle.left = '0'; + logList = ccdocument$6.createElement('textarea'); + logList.setAttribute('rows', '20'); + logList.setAttribute('cols', '30'); + logList.setAttribute('disabled', 'true'); + var logListStyle = logList.style; + logListStyle.backgroundColor = 'transparent'; + logListStyle.borderBottom = '1px solid #cccccc'; + logListStyle.borderTopWidth = logListStyle.borderLeftWidth = logListStyle.borderRightWidth = '0px'; + logListStyle.borderTopStyle = logListStyle.borderLeftStyle = logListStyle.borderRightStyle = 'none'; + logListStyle.padding = '0px'; + logListStyle.margin = '0px'; + logDiv.appendChild(logList); + legacyCC.game.canvas.parentNode.appendChild(logDiv); + } + logList.value = logList.value + msg + "\r\n"; + logList.scrollTop = logList.scrollHeight; + }; + ccError = function ccError() { + logToWebPage("ERROR : " + formatString.apply(void 0, arguments)); + }; + ccAssert = function ccAssert(condition, message) { + if (!condition) { + for (var _len4 = arguments.length, optionalParams = new Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) { + optionalParams[_key4 - 2] = arguments[_key4]; + } + logToWebPage("ASSERT: " + formatString.apply(void 0, [message].concat(optionalParams))); + } + }; + if (mode !== DebugMode.ERROR_FOR_WEB_PAGE) { + ccWarn = function ccWarn() { + logToWebPage("WARN : " + formatString.apply(void 0, arguments)); + }; + } + if (mode === DebugMode.INFO_FOR_WEB_PAGE) { + ccLog = function ccLog() { + logToWebPage(formatString.apply(void 0, arguments)); + }; + } + } else if (console) { + if (!console.error) { + console.error = console.log; + } + if (!console.warn) { + console.warn = console.log; + } + if (console.error.bind) { + ccError = console.error.bind(console); + } else { + ccError = function () { + for (var _len5 = arguments.length, data = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { + data[_key5] = arguments[_key5]; + } + return console.error.apply(console, data); + }; + } + ccAssert = function ccAssert(condition, message) { + if (!condition) { + for (var _len6 = arguments.length, optionalParams = new Array(_len6 > 2 ? _len6 - 2 : 0), _key6 = 2; _key6 < _len6; _key6++) { + optionalParams[_key6 - 2] = arguments[_key6]; + } + var errorText = formatString.apply(void 0, [message].concat(optionalParams)); + { + throw new Error(errorText); + } + } + }; + } + if (mode !== DebugMode.ERROR) { + if (console.warn.bind) { + ccWarn = console.warn.bind(console); + } else { + ccWarn = function () { + for (var _len7 = arguments.length, data = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { + data[_key7] = arguments[_key7]; + } + return console.warn.apply(console, data); + }; + } + } + if (mode <= DebugMode.INFO) { + if (console.log.bind) { + ccLog = console.log.bind(console); + } else { + ccLog = function ccLog() { + for (var _len8 = arguments.length, data = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { + data[_key8] = arguments[_key8]; + } + return console.log.apply(console, data); + }; + } + } + if (mode <= DebugMode.VERBOSE) { + if (typeof console.debug === 'function') { + var vendorDebug = console.debug.bind(console); + ccDebug = function ccDebug() { + return vendorDebug.apply(void 0, arguments); + }; + } + } + } + function _throw(error_) { + { + var stack = error_.stack; + if (stack) { + error(stack); + } else { + error(error_); + } + return undefined; + } + } + function getTypedFormatter(type) { + return function (id) { + var msg = debugInfos[id] || 'unknown id' ; + for (var _len9 = arguments.length, args = new Array(_len9 > 1 ? _len9 - 1 : 0), _key9 = 1; _key9 < _len9; _key9++) { + args[_key9 - 1] = arguments[_key9]; + } + if (args.length === 0) { + return msg; + } + return formatString.apply(void 0, [msg].concat(args)) ; + }; + } + var logFormatter = getTypedFormatter(); + function logID(id) { + for (var _len10 = arguments.length, optionalParams = new Array(_len10 > 1 ? _len10 - 1 : 0), _key10 = 1; _key10 < _len10; _key10++) { + optionalParams[_key10 - 1] = arguments[_key10]; + } + log(logFormatter.apply(void 0, [id].concat(optionalParams))); + } + var warnFormatter = getTypedFormatter(); + function warnID(id) { + for (var _len11 = arguments.length, optionalParams = new Array(_len11 > 1 ? _len11 - 1 : 0), _key11 = 1; _key11 < _len11; _key11++) { + optionalParams[_key11 - 1] = arguments[_key11]; + } + warn(warnFormatter.apply(void 0, [id].concat(optionalParams))); + } + var errorFormatter = getTypedFormatter(); + function errorID(id) { + for (var _len12 = arguments.length, optionalParams = new Array(_len12 > 1 ? _len12 - 1 : 0), _key12 = 1; _key12 < _len12; _key12++) { + optionalParams[_key12 - 1] = arguments[_key12]; + } + error(errorFormatter.apply(void 0, [id].concat(optionalParams))); + } + var assertFormatter = getTypedFormatter(); + function assertID(condition, id) { + if (condition) { + return; + } + for (var _len13 = arguments.length, optionalParams = new Array(_len13 > 2 ? _len13 - 2 : 0), _key13 = 2; _key13 < _len13; _key13++) { + optionalParams[_key13 - 2] = arguments[_key13]; + } + assert(false, assertFormatter.apply(void 0, [id].concat(optionalParams))); + } + var DebugMode; exports('bX', DebugMode); + (function (DebugMode) { + DebugMode[DebugMode["NONE"] = 0] = "NONE"; + DebugMode[DebugMode["VERBOSE"] = 1] = "VERBOSE"; + DebugMode[DebugMode["INFO"] = 2] = "INFO"; + DebugMode[DebugMode["WARN"] = 3] = "WARN"; + DebugMode[DebugMode["ERROR"] = 4] = "ERROR"; + DebugMode[DebugMode["INFO_FOR_WEB_PAGE"] = 5] = "INFO_FOR_WEB_PAGE"; + DebugMode[DebugMode["WARN_FOR_WEB_PAGE"] = 6] = "WARN_FOR_WEB_PAGE"; + DebugMode[DebugMode["ERROR_FOR_WEB_PAGE"] = 7] = "ERROR_FOR_WEB_PAGE"; + })(DebugMode || (exports('bX', DebugMode = {}))); + function getError(errorId) { + for (var _len14 = arguments.length, param = new Array(_len14 > 1 ? _len14 - 1 : 0), _key14 = 1; _key14 < _len14; _key14++) { + param[_key14 - 1] = arguments[_key14]; + } + return errorFormatter.apply(void 0, [errorId].concat(param)); + } + function isDisplayStats() { + return legacyCC.profiler ? legacyCC.profiler.isShowingStats() : false; + } + function setDisplayStats(displayStats) { + if (legacyCC.profiler) { + displayStats ? legacyCC.profiler.showStats() : legacyCC.profiler.hideStats(); + } + } + + var debug$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + log: log, + warn: warn, + error: error, + assert: assert, + debug: debug, + _resetDebugSetting: _resetDebugSetting, + _throw: _throw, + logID: logID, + warnID: warnID, + errorID: errorID, + assertID: assertID, + get DebugMode () { return DebugMode; }, + getError: getError, + isDisplayStats: isDisplayStats, + setDisplayStats: setDisplayStats + }); + + var defaultLogTimes = 10; + function setDefaultLogTimes(times) { + if (times > 0) { + defaultLogTimes = times; + } + } + var replaceProperty; exports('bl', replaceProperty); + var removeProperty; exports('bm', removeProperty); + var markAsWarning; exports('bn', markAsWarning); + var replacePropertyLog; + var markAsWarningLog; + var removePropertyLog; + var messageID = 0; + var messageMap = new Map(); + replacePropertyLog = function replacePropertyLog(n, dp, n2, newp, f, id, s) { + var item = messageMap.get(id); + if (item && item.logTimes > item.count) { + f("'%s' is deprecated, please use '%s' instead. " + s, n + "." + dp, n2 + "." + newp); + item.count++; + } + }; + exports('bl', replaceProperty = function replaceProperty(owner, ownerName, properties) { + if (owner == null) return; + properties.forEach(function (item) { + var id = messageID++; + messageMap.set(id, { + id: id, + count: 0, + logTimes: item.logTimes !== undefined ? item.logTimes : defaultLogTimes + }); + var target = item.target != null ? item.target : owner; + var newName = item.newName != null ? item.newName : item.name; + var targetName = item.targetName != null ? item.targetName : ownerName; + var sameTarget = target === owner; + var suggest = item.suggest ? "(" + item.suggest + ")" : ''; + if (item.customFunction != null) { + owner[item.name] = function () { + var _ref; + replacePropertyLog(ownerName, item.name, targetName, newName, warn, id, suggest); + return (_ref = item.customFunction).call.apply(_ref, [this].concat(Array.prototype.slice.call(arguments))); + }; + } else if (item.customSetter != null || item.customGetter != null) { + var hasSetter = item.customSetter != null; + var hasGetter = item.customGetter != null; + if (hasSetter && hasGetter) { + Object.defineProperty(owner, item.name, { + get: function get() { + replacePropertyLog(ownerName, item.name, targetName, newName, warn, id, suggest); + return item.customGetter.call(this); + }, + set: function set(v) { + replacePropertyLog(ownerName, item.name, targetName, newName, warn, id, suggest); + item.customSetter.call(this, v); + }, + enumerable: false + }); + } else if (hasSetter) { + Object.defineProperty(owner, item.name, { + set: function set(v) { + replacePropertyLog(ownerName, item.name, targetName, newName, warn, id, suggest); + item.customSetter.call(this, v); + }, + enumerable: false + }); + } else if (hasGetter) { + Object.defineProperty(owner, item.name, { + get: function get() { + replacePropertyLog(ownerName, item.name, targetName, newName, warn, id, suggest); + return item.customGetter.call(this); + }, + enumerable: false + }); + } + } else { + Object.defineProperty(owner, item.name, { + get: function get() { + replacePropertyLog(ownerName, item.name, targetName, newName, warn, id, suggest); + return sameTarget ? this[newName] : target[newName]; + }, + set: function set(v) { + replacePropertyLog(ownerName, item.name, targetName, newName, warn, id, suggest); + if (sameTarget) { + this[newName] = v; + } else { + target[newName] = v; + } + }, + enumerable: false + }); + } + }); + }); + removePropertyLog = function removePropertyLog(n, dp, f, id, s) { + var item = messageMap.get(id); + if (item && item.logTimes > item.count) { + f("'%s' has been removed. " + s, n + "." + dp); + item.count++; + } + }; + exports('bm', removeProperty = function removeProperty(owner, ownerName, properties) { + if (owner == null) return; + properties.forEach(function (item) { + var id = messageID++; + messageMap.set(id, { + id: id, + count: 0, + logTimes: item.logTimes !== undefined ? item.logTimes : defaultLogTimes + }); + var suggest = item.suggest ? "(" + item.suggest + ")" : ''; + Object.defineProperty(owner, item.name, { + get: function get() { + return removePropertyLog(ownerName, item.name, error, id, suggest); + }, + set: function set() { + removePropertyLog(ownerName, item.name, error, id, suggest); + }, + enumerable: false + }); + }); + }); + markAsWarningLog = function markAsWarningLog(n, dp, f, id, s) { + var item = messageMap.get(id); + if (item && item.logTimes > item.count) { + f("'%s' is deprecated. " + s, n + "." + dp); + item.count++; + } + }; + exports('bn', markAsWarning = function markAsWarning(owner, ownerName, properties) { + if (owner == null) return; + var _defaultGetSet = function _defaultGetSet(d, n, dp, f, id, s) { + if (d.get) { + var oldGet = d.get; + d.get = function () { + markAsWarningLog(n, dp, f, id, s); + return oldGet.call(this); + }; + } + if (d.set) { + var oldSet = d.set; + d.set = function (v) { + markAsWarningLog(n, dp, f, id, s); + oldSet.call(this, v); + }; + } + Object.defineProperty(owner, dp, d); + }; + properties.forEach(function (item) { + var deprecatedProp = item.name; + var descriptor = Object.getOwnPropertyDescriptor(owner, deprecatedProp); + if (!descriptor || !descriptor.configurable) { + return; + } + var id = messageID++; + messageMap.set(id, { + id: id, + count: 0, + logTimes: item.logTimes !== undefined ? item.logTimes : defaultLogTimes + }); + var suggest = item.suggest ? "(" + item.suggest + ")" : ''; + if (typeof descriptor.value !== 'undefined') { + if (typeof descriptor.value === 'function') { + var oldValue = descriptor.value; + owner[deprecatedProp] = function () { + markAsWarningLog(ownerName, deprecatedProp, warn, id, suggest); + return oldValue.call.apply(oldValue, [this].concat(Array.prototype.slice.call(arguments))); + }; + } else { + var _oldValue = descriptor.value; + Object.defineProperty(owner, deprecatedProp, { + configurable: true, + get: function get() { + markAsWarningLog(ownerName, deprecatedProp, warn, id, suggest); + return _oldValue; + } + }); + if (descriptor.writable) { + Object.defineProperty(owner, deprecatedProp, { + set: function set(value) { + markAsWarningLog(ownerName, deprecatedProp, warn, id, suggest); + _oldValue = value; + } + }); + } + } + } else { + _defaultGetSet(descriptor, ownerName, deprecatedProp, warn, id, suggest); + } + Object.defineProperty(owner, deprecatedProp, { + enumerable: false + }); + }); + }); + var topLevelDeprecateList = {}; + function deprecateModuleExportedName(deprecateList) { + for (var deprecateName in deprecateList) { + var deprecateInfo = deprecateList[deprecateName]; + topLevelDeprecateList[deprecateName] = deprecateInfo; + } + } + function _checkObsoleteByName(checkName) { + var deprecateInfo = topLevelDeprecateList[checkName]; + if (!deprecateInfo) { + return; + } + var newName = deprecateInfo.newName, + since = deprecateInfo.since, + removed = deprecateInfo.removed; + if (removed) { + if (newName) { + errorID(16003, checkName, since, newName); + } else { + errorID(16002, checkName, since); + } + } else if (newName) { + warnID(16001, checkName, since, newName); + } else { + warnID(16000, checkName, since); + } + } + function __checkObsolete__(checkList) { + for (var _iterator = _createForOfIteratorHelperLoose(checkList), _step; !(_step = _iterator()).done;) { + var checkName = _step.value; + _checkObsoleteByName(checkName); + } + } + var _cachedProxy; + function __checkObsoleteInNamespace__(ccNamespace) { + if (!_cachedProxy) { + if (typeof Proxy === 'undefined') { + _cachedProxy = {}; + } else { + _cachedProxy = new Proxy(ccNamespace, { + get: function get(target, name, receiver) { + _checkObsoleteByName(name); + return Reflect.get(target, name, receiver); + } + }); + } + } + return _cachedProxy; + } + + var _class$2q; + var NonUuidMark = '.'; + var IDGenerator = function () { + function IDGenerator(category) { + this.id = void 0; + this.prefix = void 0; + this.id = 0 | Math.random() * 998; + this.prefix = category ? category + NonUuidMark : ''; + } + var _proto = IDGenerator.prototype; + _proto.getNewId = function getNewId() { + return this.prefix + (++this.id).toString(); + }; + return IDGenerator; + }(); + _class$2q = IDGenerator; + IDGenerator.global = new _class$2q('global'); + + var tempCIDGenerator = new IDGenerator('TmpCId.'); + var aliasesTag = typeof Symbol === 'undefined' ? '__aliases__' : Symbol('[[Aliases]]'); + var classNameTag = '__classname__'; + var classIdTag = '__cid__'; + function isNumber(object) { + return typeof object === 'number' || object instanceof Number; + } + function isString(object) { + return typeof object === 'string' || object instanceof String; + } + function isEmptyObject(obj) { + for (var key in obj) { + return false; + } + return true; + } + var value = function () { + var descriptor = { + value: undefined, + enumerable: false, + writable: false, + configurable: true + }; + return function (object, propertyName, value_, writable, enumerable) { + descriptor.value = value_; + descriptor.writable = writable; + descriptor.enumerable = enumerable; + Object.defineProperty(object, propertyName, descriptor); + descriptor.value = undefined; + }; + }(); + var getset = function () { + var descriptor = { + get: undefined, + set: undefined, + enumerable: false + }; + return function (object, propertyName, getter, setter, enumerable, configurable) { + if (enumerable === void 0) { + enumerable = false; + } + if (configurable === void 0) { + configurable = false; + } + if (typeof setter === 'boolean') { + console.log('Set `setter` to boolean is deprecated. Please don not use like this again.'); + enumerable = setter; + setter = undefined; + } + descriptor.get = getter; + descriptor.set = setter; + descriptor.enumerable = enumerable; + descriptor.configurable = configurable; + Object.defineProperty(object, propertyName, descriptor); + descriptor.get = undefined; + descriptor.set = undefined; + }; + }(); + var get = function () { + var descriptor = { + get: undefined, + enumerable: false, + configurable: false + }; + return function (object, propertyName, getter, enumerable, configurable) { + descriptor.get = getter; + descriptor.enumerable = enumerable; + descriptor.configurable = configurable; + Object.defineProperty(object, propertyName, descriptor); + descriptor.get = undefined; + }; + }(); + var set = function () { + var descriptor = { + set: undefined, + enumerable: false, + configurable: false + }; + return function (object, propertyName, setter, enumerable, configurable) { + descriptor.set = setter; + descriptor.enumerable = enumerable; + descriptor.configurable = configurable; + Object.defineProperty(object, propertyName, descriptor); + descriptor.set = undefined; + }; + }(); + function createMap(forceDictMode) { + var map = Object.create(null); + if (forceDictMode) { + var INVALID_IDENTIFIER_1 = '.'; + var INVALID_IDENTIFIER_2 = '/'; + map[INVALID_IDENTIFIER_1] = 1; + map[INVALID_IDENTIFIER_2] = 1; + delete map[INVALID_IDENTIFIER_1]; + delete map[INVALID_IDENTIFIER_2]; + } + return map; + } + function getClassName(objOrCtor) { + if (typeof objOrCtor === 'function') { + var prototype = objOrCtor.prototype; + if (prototype && prototype.hasOwnProperty(classNameTag) && prototype[classNameTag]) { + return prototype[classNameTag]; + } + var ret = ''; + if (objOrCtor.name) { + ret = objOrCtor.name; + } + if (objOrCtor.toString) { + var arr; + var str = objOrCtor.toString(); + if (str.charAt(0) === '[') { + arr = /\[\w+\s*(\w+)\]/.exec(str); + } else { + arr = /function\s*(\w+)/.exec(str); + } + if (arr && arr.length === 2) { + ret = arr[1]; + } + } + return ret !== 'Object' ? ret : ''; + } else if (objOrCtor && objOrCtor.constructor) { + return getClassName(objOrCtor.constructor); + } + return ''; + } + function obsolete(object, obsoleted, newExpr, writable) { + var extractPropName = /([^.]+)$/; + var oldProp = extractPropName.exec(obsoleted)[0]; + var newProp = extractPropName.exec(newExpr)[0]; + function getter() { + return this[newProp]; + } + function setter(value_) { + this[newProp] = value_; + } + if (writable) { + getset(object, oldProp, getter, setter); + } else { + get(object, oldProp, getter); + } + } + function obsoletes(obj, objName, props, writable) { + for (var obsoleted in props) { + var newName = props[obsoleted]; + obsolete(obj, objName + "." + obsoleted, newName, writable); + } + } + var REGEXP_NUM_OR_STR = /(%d)|(%s)/; + var REGEXP_STR = /%s/; + function formatStr(msg) { + for (var _len = arguments.length, subst = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + subst[_key - 1] = arguments[_key]; + } + if (arguments.length === 0) { + return ''; + } + if (subst.length === 0) { + return "" + msg; + } + var hasSubstitution = typeof msg === 'string' && REGEXP_NUM_OR_STR.test(msg); + if (hasSubstitution) { + for (var _iterator = _createForOfIteratorHelperLoose(subst), _step; !(_step = _iterator()).done;) { + var arg = _step.value; + var regExpToTest = typeof arg === 'number' ? REGEXP_NUM_OR_STR : REGEXP_STR; + if (regExpToTest.test(msg)) { + var notReplaceFunction = "" + arg; + msg = msg.replace(regExpToTest, notReplaceFunction); + } else { + msg += " " + arg; + } + } + } else { + for (var _iterator2 = _createForOfIteratorHelperLoose(subst), _step2; !(_step2 = _iterator2()).done;) { + var _arg = _step2.value; + msg += " " + _arg; + } + } + return msg; + } + function shiftArguments() { + var len = arguments.length - 1; + var args = new Array(len); + for (var i = 0; i < len; ++i) { + args[i] = arguments[i + 1]; + } + return args; + } + function getPropertyDescriptor(object, propertyName) { + while (object) { + var pd = Object.getOwnPropertyDescriptor(object, propertyName); + if (pd) { + return pd; + } + object = Object.getPrototypeOf(object); + } + return null; + } + function _copyProp(name, source, target) { + var pd = getPropertyDescriptor(source, name); + if (pd) { + Object.defineProperty(target, name, pd); + } + } + function copyAllProperties(source, target, excepts) { + var propertyNames = Object.getOwnPropertyNames(source); + for (var i = 0, len = propertyNames.length; i < len; ++i) { + var _propertyName = propertyNames[i]; + if (excepts.indexOf(_propertyName) !== -1) { + continue; + } + _copyProp(_propertyName, source, target); + } + } + function addon(object) { + object = object || {}; + for (var _len2 = arguments.length, sources = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + sources[_key2 - 1] = arguments[_key2]; + } + for (var _i = 0, _sources = sources; _i < _sources.length; _i++) { + var source = _sources[_i]; + if (source) { + if (typeof source !== 'object') { + errorID(5402, source); + continue; + } + for (var name in source) { + if (!(name in object)) { + _copyProp(name, source, object); + } + } + } + } + return object; + } + function mixin(object) { + object = object || {}; + for (var _len3 = arguments.length, sources = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { + sources[_key3 - 1] = arguments[_key3]; + } + for (var _i2 = 0, _sources2 = sources; _i2 < _sources2.length; _i2++) { + var source = _sources2[_i2]; + if (source) { + if (typeof source !== 'object') { + errorID(5403, source); + continue; + } + for (var name in source) { + _copyProp(name, source, object); + } + } + } + return object; + } + function extend(cls, base) { + for (var p in base) { + if (base.hasOwnProperty(p)) { + cls[p] = base[p]; + } + } + cls.prototype = Object.create(base.prototype, { + constructor: { + value: cls, + writable: true, + configurable: true + } + }); + return cls; + } + function getSuper(constructor) { + var proto = constructor.prototype; + var dunderProto = proto && Object.getPrototypeOf(proto); + return dunderProto && dunderProto.constructor; + } + function isChildClassOf(subclass, superclass) { + if (subclass && superclass) { + if (typeof subclass !== 'function') { + return false; + } + if (typeof superclass !== 'function') { + return false; + } + if (subclass === superclass) { + return true; + } + for (;;) { + subclass = getSuper(subclass); + if (!subclass) { + return false; + } + if (subclass === superclass) { + return true; + } + } + } + return false; + } + function clear$1(object) { + for (var _i3 = 0, _Object$keys = Object.keys(object); _i3 < _Object$keys.length; _i3++) { + var key = _Object$keys[_i3]; + delete object[key]; + } + } + function isTempClassId(id) { + return typeof id !== 'string' || id.startsWith(tempCIDGenerator.prefix); + } + var _idToClass = createMap(true); + var _nameToClass = createMap(true); + function setup(tag, table, allowExist) { + return function (id, constructor) { + if (constructor.prototype.hasOwnProperty(tag)) { + delete table[constructor.prototype[tag]]; + } + value(constructor.prototype, tag, id); + if (id) { + var registered = table[id]; + if (!allowExist && registered && registered !== constructor) { + var err = "A Class already exists with the same " + tag + " : \"" + id + "\"."; + error(err); + } else { + table[id] = constructor; + } + } + }; + } + var _setClassId = setup('__cid__', _idToClass, false); + var doSetClassName = setup('__classname__', _nameToClass, true); + function setClassName(className, constructor) { + doSetClassName(className, constructor); + if (!constructor.prototype.hasOwnProperty(classIdTag)) { + var _id = className || tempCIDGenerator.getNewId(); + if (_id) { + _setClassId(_id, constructor); + } + } + } + function setClassAlias(target, alias) { + var nameRegistry = _nameToClass[alias]; + var idRegistry = _idToClass[alias]; + var ok = true; + if (nameRegistry && nameRegistry !== target) { + error("\"" + alias + "\" has already been set as name or alias of another class."); + ok = false; + } + if (idRegistry && idRegistry !== target) { + error("\"" + alias + "\" has already been set as id or alias of another class."); + ok = false; + } + if (ok) { + var classAliases = target[aliasesTag]; + if (!classAliases) { + classAliases = []; + target[aliasesTag] = classAliases; + } + classAliases.push(alias); + _nameToClass[alias] = target; + _idToClass[alias] = target; + } + } + function unregisterClass() { + for (var _len4 = arguments.length, constructors = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + constructors[_key4] = arguments[_key4]; + } + for (var _i4 = 0, _constructors = constructors; _i4 < _constructors.length; _i4++) { + var _constructor = _constructors[_i4]; + var p = _constructor.prototype; + var classId = p[classIdTag]; + if (classId) { + delete _idToClass[classId]; + } + var classname = p[classNameTag]; + if (classname) { + delete _nameToClass[classname]; + } + var aliases = p[aliasesTag]; + if (aliases) { + for (var iAlias = 0; iAlias < aliases.length; ++iAlias) { + var alias = aliases[iAlias]; + delete _nameToClass[alias]; + delete _idToClass[alias]; + } + } + } + } + function _getClassById(classId) { + return getClassById(classId); + } + function getClassById(classId) { + return _idToClass[classId]; + } + function getClassByName(classname) { + return _nameToClass[classname]; + } + function _getClassId(obj, allowTempId) { + return getClassId(obj, allowTempId); + } + function getClassId(obj, allowTempId) { + allowTempId = typeof allowTempId !== 'undefined' ? allowTempId : true; + var res; + if (typeof obj === 'function' && obj.prototype.hasOwnProperty(classIdTag)) { + res = obj.prototype[classIdTag]; + if (!allowTempId && (EDITOR) && isTempClassId(res)) { + return ''; + } + return res; + } + if (obj && obj.constructor) { + var prototype = obj.constructor.prototype; + if (prototype && prototype.hasOwnProperty(classIdTag)) { + res = obj[classIdTag]; + if (!allowTempId && (EDITOR) && isTempClassId(res)) { + return ''; + } + return res; + } + } + return ''; + } + + var Pool$1 = function () { + var _proto = Pool.prototype; + _proto.get = function get() { + return this._get(); + }; + function Pool(_0, _1) { + this.count = void 0; + this._pool = void 0; + this._cleanup = void 0; + var size = _1 === undefined ? _0 : _1; + var cleanupFunc = _1 === undefined ? null : _0; + this.count = 0; + this._pool = new Array(size); + this._cleanup = cleanupFunc; + } + _proto._get = function _get() { + if (this.count > 0) { + --this.count; + var cache = this._pool[this.count]; + this._pool[this.count] = null; + return cache; + } + return null; + }; + _proto.put = function put(obj) { + var pool = this._pool; + if (this.count < pool.length) { + if (this._cleanup && this._cleanup(obj) === false) { + return; + } + pool[this.count] = obj; + ++this.count; + } + }; + _proto.resize = function resize(length) { + if (length >= 0) { + this._pool.length = length; + if (this.count > length) { + this.count = length; + } + } + }; + return Pool; + }(); + + var MutableForwardIterator = function () { + function MutableForwardIterator(array) { + this.i = 0; + this.array = array; + } + var _proto = MutableForwardIterator.prototype; + _proto.remove = function remove(value) { + var index = this.array.indexOf(value); + if (index >= 0) { + this.removeAt(index); + } + }; + _proto.removeAt = function removeAt(i) { + this.array.splice(i, 1); + if (i <= this.i) { + --this.i; + } + }; + _proto.fastRemove = function fastRemove(value) { + var index = this.array.indexOf(value); + if (index >= 0) { + this.fastRemoveAt(index); + } + }; + _proto.fastRemoveAt = function fastRemoveAt(i) { + var array = this.array; + array[i] = array[array.length - 1]; + --array.length; + if (i <= this.i) { + --this.i; + } + }; + _proto.push = function push(item) { + this.array.push(item); + }; + _createClass(MutableForwardIterator, [{ + key: "length", + get: function get() { + return this.array.length; + }, + set: function set(value) { + this.array.length = value; + if (this.i >= value) { + this.i = value - 1; + } + } + }]); + return MutableForwardIterator; + }(); + + function removeAt(array, index) { + array.splice(index, 1); + } + function fastRemoveAt$2(array, index) { + var length = array.length; + if (index < 0 || index >= length) { + return; + } + array[index] = array[length - 1]; + array.length = length - 1; + } + function remove(array, value) { + var index = array.indexOf(value); + if (index >= 0) { + removeAt(array, index); + return true; + } else { + return false; + } + } + function fastRemove(array, value) { + var index = array.indexOf(value); + if (index >= 0) { + array[index] = array[array.length - 1]; + --array.length; + } + } + function removeIf(array, predicate) { + var index = array.findIndex(predicate); + if (index >= 0) { + var _value = array[index]; + removeAt(array, index); + return _value; + } + } + function verifyType(array, type) { + if (array && array.length > 0) { + for (var _iterator = _createForOfIteratorHelperLoose(array), _step; !(_step = _iterator()).done;) { + var item = _step.value; + if (!(item instanceof type)) { + logID(1300); + return false; + } + } + } + return true; + } + function removeArray(array, removals) { + for (var i = 0, l = removals.length; i < l; i++) { + remove(array, removals[i]); + } + } + function appendObjectsAt(array, objects, index) { + array.splice.apply(array, [index, 0].concat(objects)); + return array; + } + function contains$2(array, value) { + return array.indexOf(value) >= 0; + } + function copy(array) { + var len = array.length; + var cloned = new Array(len); + for (var i = 0; i < len; i += 1) { + cloned[i] = array[i]; + } + return cloned; + } + + var array = /*#__PURE__*/Object.freeze({ + __proto__: null, + removeAt: removeAt, + fastRemoveAt: fastRemoveAt$2, + remove: remove, + fastRemove: fastRemove, + removeIf: removeIf, + verifyType: verifyType, + removeArray: removeArray, + appendObjectsAt: appendObjectsAt, + contains: contains$2, + copy: copy, + MutableForwardIterator: MutableForwardIterator + }); + + var js = { + IDGenerator: IDGenerator, + Pool: Pool$1, + array: array, + isNumber: isNumber, + isString: isString, + isEmptyObject: isEmptyObject, + getPropertyDescriptor: getPropertyDescriptor, + addon: addon, + mixin: mixin, + extend: extend, + getSuper: getSuper, + isChildClassOf: isChildClassOf, + clear: clear$1, + value: value, + getset: getset, + get: get, + set: set, + unregisterClass: unregisterClass, + getClassName: getClassName, + setClassName: setClassName, + setClassAlias: setClassAlias, + getClassByName: getClassByName, + getClassById: getClassById, + get _registeredClassNames() { + return _extends({}, _nameToClass); + }, + set _registeredClassNames(value) { + clear$1(_nameToClass); + Object.assign(_nameToClass, value); + }, + get _registeredClassIds() { + return _extends({}, _idToClass); + }, + set _registeredClassIds(value) { + clear$1(_idToClass); + Object.assign(_idToClass, value); + }, + _getClassId: _getClassId, + getClassId: getClassId, + _setClassId: _setClassId, + _getClassById: _getClassById, + obsolete: obsolete, + obsoletes: obsoletes, + formatStr: formatStr, + shiftArguments: shiftArguments, + createMap: createMap + }; + legacyCC.js = js; + + var js$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + array: array, + js: js, + IDGenerator: IDGenerator, + Pool: Pool$1, + isNumber: isNumber, + isString: isString, + isEmptyObject: isEmptyObject, + value: value, + getset: getset, + get: get, + set: set, + createMap: createMap, + getClassName: getClassName, + obsolete: obsolete, + obsoletes: obsoletes, + formatStr: formatStr, + shiftArguments: shiftArguments, + getPropertyDescriptor: getPropertyDescriptor, + copyAllProperties: copyAllProperties, + addon: addon, + mixin: mixin, + extend: extend, + getSuper: getSuper, + isChildClassOf: isChildClassOf, + clear: clear$1, + _idToClass: _idToClass, + _nameToClass: _nameToClass, + _setClassId: _setClassId, + setClassName: setClassName, + setClassAlias: setClassAlias, + unregisterClass: unregisterClass, + _getClassById: _getClassById, + getClassById: getClassById, + getClassByName: getClassByName, + _getClassId: _getClassId, + getClassId: getClassId + }); + exports('bh', js$1); + + function BitMask(obj) { + if ('__bitmask__' in obj) { + return obj; + } + value(obj, '__bitmask__', null, true); + var lastIndex = -1; + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var val = obj[key]; + if (val === -1) { + val = ++lastIndex; + obj[key] = val; + } else if (typeof val === 'number') { + lastIndex = val; + } else if (typeof val === 'string' && Number.isInteger(parseFloat(key))) { + continue; + } + var reverseKey = "" + val; + if (key !== reverseKey) { + value(obj, reverseKey, key); + } + } + return obj; + } + BitMask.isBitMask = function (BitMaskType) { + return BitMaskType && BitMaskType.hasOwnProperty('__bitmask__'); + }; + BitMask.getList = function (BitMaskDef) { + if (BitMaskDef.__bitmask__) { + return BitMaskDef.__bitmask__; + } + return BitMask.update(BitMaskDef); + }; + BitMask.update = function (BitMaskDef) { + if (!Array.isArray(BitMaskDef.__bitmask__)) { + BitMaskDef.__bitmask__ = []; + } + var bitList = BitMaskDef.__bitmask__; + bitList.length = 0; + for (var name in BitMaskDef) { + var v = BitMaskDef[name]; + if (Number.isInteger(v)) { + bitList.push({ + name: name, + value: v + }); + } + } + bitList.sort(function (a, b) { + return a.value - b.value; + }); + return bitList; + }; + legacyCC.BitMask = BitMask; + + function assertIsNonNullable(expr, message) { + assertIsTrue(!(expr === null || expr === undefined), message); + } + function assertIsTrue(expr, message) { + if (!expr) { + throw new Error("Assertion failed: " + (message !== null && message !== void 0 ? message : '')); + } + } + function assertsArrayIndex(array, index) { + assertIsTrue(index >= 0 && index < array.length, "Array index " + index + " out of bounds: [0, " + array.length + ")"); + } + + function Enum(obj) { + if ('__enums__' in obj) { + return obj; + } + value(obj, '__enums__', null, true); + return Enum.update(obj); + } + Enum.update = function (obj) { + var lastIndex = -1; + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var val = obj[key]; + if (val === -1) { + val = ++lastIndex; + obj[key] = val; + } else if (typeof val === 'number') { + lastIndex = val; + } else if (typeof val === 'string' && Number.isInteger(parseFloat(key))) { + continue; + } + var reverseKey = "" + val; + if (key !== reverseKey) { + value(obj, reverseKey, key); + } + } + if (Array.isArray(obj.__enums__)) { + updateList(obj); + } + return obj; + }; + (function (_Enum) {})(Enum || (exports('be', Enum = {}))); + Enum.isEnum = function (enumType) { + return enumType && enumType.hasOwnProperty('__enums__'); + }; + function assertIsEnum(enumType) { + assertIsTrue(enumType.hasOwnProperty('__enums__')); + } + Enum.getList = function (enumType) { + assertIsEnum(enumType); + if (enumType.__enums__) { + return enumType.__enums__; + } + return updateList(enumType); + }; + function updateList(enumType) { + assertIsEnum(enumType); + var enums = enumType.__enums__ || []; + enums.length = 0; + for (var name in enumType) { + var v = enumType[name]; + if (Number.isInteger(v)) { + enums.push({ + name: name, + value: v + }); + } + } + enums.sort(function (a, b) { + return a.value - b.value; + }); + enumType.__enums__ = enums; + return enums; + } + Enum.sortList = function (enumType, compareFn) { + assertIsEnum(enumType); + if (!Array.isArray(enumType.__enums__)) { + return; + } + enumType.__enums__.sort(compareFn); + }; + function ccenum(enumType) { + if (!('__enums__' in enumType)) { + value(enumType, '__enums__', null, true); + } + } + legacyCC.Enum = Enum; + + var ValueType = exports('bg', function () { + function ValueType() {} + var _proto = ValueType.prototype; + _proto.clone = function clone() { + errorID(100, getClassName(this) + ".clone"); + return this; + }; + _proto.equals = function equals(other) { + return false; + }; + _proto.set = function set(other) { + errorID(100, getClassName(this) + ".set"); + }; + _proto.toString = function toString() { + return ""; + }; + return ValueType; + }()); + setClassName('cc.ValueType', ValueType); + legacyCC.ValueType = ValueType; + + var Category; + (function (Category) { + Category["PATH"] = "path"; + Category["ENGINE"] = "engine"; + Category["ASSETS"] = "assets"; + Category["SCRIPTING"] = "scripting"; + Category["PHYSICS"] = "physics"; + Category["RENDERING"] = "rendering"; + Category["LAUNCH"] = "launch"; + Category["SCREEN"] = "screen"; + Category["SPLASH_SCREEN"] = "splashScreen"; + Category["ANIMATION"] = "animation"; + Category["PROFILING"] = "profiling"; + Category["PLUGINS"] = "plugins"; + Category["XR"] = "xr"; + })(Category || (Category = {})); + var Settings = exports('cb', function () { + function Settings() { + this._settings = {}; + this._override = {}; + } + var _proto = Settings.prototype; + _proto.init = function init(path, overrides) { + var _this = this; + if (path === void 0) { + path = ''; + } + if (overrides === void 0) { + overrides = {}; + } + for (var categoryName in overrides) { + var category = overrides[categoryName]; + if (category) { + for (var name in category) { + this.overrideSettings(categoryName, name, category[name]); + } + } + } + if (!path) return Promise.resolve(); + if (window.oh) { + return new Promise(function (resolve, reject) { + var settingsModule = '../settings.js'; + module.import(settingsModule).then(function (res) { + _this._settings = res["default"]; + resolve(); + })["catch"](function (e) { + return reject(e); + }); + }); + } + return new Promise(function (resolve, reject) { + { + var xhr = new XMLHttpRequest(); + xhr.open('GET', path); + xhr.responseType = 'text'; + xhr.onload = function () { + _this._settings = JSON.parse(xhr.response); + resolve(); + }; + xhr.onerror = function () { + reject(new Error('request settings failed!')); + }; + xhr.send(null); + } + }); + }; + _proto.overrideSettings = function overrideSettings(category, name, value) { + if (!(category in this._override)) { + this._override[category] = {}; + } + this._override[category][name] = value; + }; + _proto.querySettings = function querySettings(category, name) { + if (category in this._override) { + var categorySettings = this._override[category]; + if (categorySettings && name in categorySettings) { + return categorySettings[name]; + } + } + if (category in this._settings) { + var _categorySettings = this._settings[category]; + if (_categorySettings && name in _categorySettings) { + return _categorySettings[name]; + } + } + return null; + }; + return Settings; + }()); + Settings.Category = Category; + var settings = exports('cc', new Settings()); + legacyCC.settings = settings; + + var SUPPORT_TEXTURE_FORMATS = ['.astc', '.pkm', '.pvr', '.webp', '.jpg', '.jpeg', '.bmp', '.png']; + var KEY = { + none: 0, + back: 6, + menu: 18, + backspace: 8, + tab: 9, + enter: 13, + shift: 16, + ctrl: 17, + alt: 18, + pause: 19, + capslock: 20, + escape: 27, + space: 32, + pageup: 33, + pagedown: 34, + end: 35, + home: 36, + left: 37, + up: 38, + right: 39, + down: 40, + select: 41, + insert: 45, + Delete: 46, + 0: 48, + 1: 49, + 2: 50, + 3: 51, + 4: 52, + 5: 53, + 6: 54, + 7: 55, + 8: 56, + 9: 57, + a: 65, + b: 66, + c: 67, + d: 68, + e: 69, + f: 70, + g: 71, + h: 72, + i: 73, + j: 74, + k: 75, + l: 76, + m: 77, + n: 78, + o: 79, + p: 80, + q: 81, + r: 82, + s: 83, + t: 84, + u: 85, + v: 86, + w: 87, + x: 88, + y: 89, + z: 90, + num0: 96, + num1: 97, + num2: 98, + num3: 99, + num4: 100, + num5: 101, + num6: 102, + num7: 103, + num8: 104, + num9: 105, + '*': 106, + '+': 107, + '-': 109, + numdel: 110, + '/': 111, + f1: 112, + f2: 113, + f3: 114, + f4: 115, + f5: 116, + f6: 117, + f7: 118, + f8: 119, + f9: 120, + f10: 121, + f11: 122, + f12: 123, + numlock: 144, + scrolllock: 145, + ';': 186, + semicolon: 186, + equal: 187, + '=': 187, + ',': 188, + comma: 188, + dash: 189, + '.': 190, + period: 190, + forwardslash: 191, + grave: 192, + '[': 219, + openbracket: 219, + backslash: 220, + ']': 221, + closebracket: 221, + quote: 222, + dpadLeft: 1000, + dpadRight: 1001, + dpadUp: 1003, + dpadDown: 1004, + dpadCenter: 1005 + }; + var macro = exports('b_', { + SUPPORT_TEXTURE_FORMATS: SUPPORT_TEXTURE_FORMATS, + KEY: KEY, + RAD: Math.PI / 180, + DEG: 180 / Math.PI, + REPEAT_FOREVER: Number.MAX_VALUE - 1, + FLT_EPSILON: 0.0000001192092896, + ORIENTATION_PORTRAIT: 1, + ORIENTATION_LANDSCAPE: 2, + ORIENTATION_AUTO: 3, + ENABLE_TILEDMAP_CULLING: true, + TOUCH_TIMEOUT: 5000, + ENABLE_TRANSPARENT_CANVAS: false, + ENABLE_WEBGL_ANTIALIAS: true, + ENABLE_FLOAT_OUTPUT: false, + CLEANUP_IMAGE_CACHE: false, + ENABLE_MULTI_TOUCH: true, + MAX_LABEL_CANVAS_POOL_SIZE: 20, + ENABLE_WEBGL_HIGHP_STRUCT_VALUES: false, + BATCHER2D_MEM_INCREMENT: 144, + CUSTOM_PIPELINE_NAME: '', + init: function init() { + var defaultValues = settings.querySettings(Settings.Category.ENGINE, 'macros'); + if (defaultValues) { + for (var key in defaultValues) { + macro[key] = defaultValues[key]; + } + } + } + }); + legacyCC.macro = macro; + + function setTimeoutRAF(callback, delay) { + var _globalThis$__globalX; + for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + args[_key - 2] = arguments[_key]; + } + var start = performance.now(); + var raf = requestAnimationFrame || window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame; + if (raf === undefined || (_globalThis$__globalX = globalThis.__globalXR) !== null && _globalThis$__globalX !== void 0 && _globalThis$__globalX.isWebXR) { + return setTimeout.apply(void 0, [callback, delay].concat(args)); + } + var handleRAF = function handleRAF() { + if (performance.now() - start < delay) { + raf(handleRAF); + } else { + callback.apply(void 0, args); + } + }; + return raf(handleRAF); + } + + var BUILTIN_CLASSID_RE = /^(?:cc|dragonBones|sp|ccsg)\..+/; + var BASE64_KEYS$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + var values = new Array(123); + for (var i$4 = 0; i$4 < 123; ++i$4) { + values[i$4] = 64; + } + for (var _i$1 = 0; _i$1 < 64; ++_i$1) { + values[BASE64_KEYS$1.charCodeAt(_i$1)] = _i$1; + } + var BASE64_VALUES$1 = values; + function propertyDefine(ctor, sameNameGetSets, diffNameGetSets) { + function define(np, propName, getter, setter) { + var pd = Object.getOwnPropertyDescriptor(np, propName); + if (pd) { + if (pd.get) { + np[getter] = pd.get; + } + if (pd.set && setter) { + np[setter] = pd.set; + } + } else { + var getterFunc = np[getter]; + { + getset(np, propName, getterFunc, np[setter]); + } + } + } + var propName; + var np = ctor.prototype; + for (var _i2 = 0; _i2 < sameNameGetSets.length; _i2++) { + propName = sameNameGetSets[_i2]; + var suffix = propName[0].toUpperCase() + propName.slice(1); + define(np, propName, "get" + suffix, "set" + suffix); + } + for (propName in diffNameGetSets) { + var gs = diffNameGetSets[propName]; + define(np, propName, gs[0], gs[1]); + } + } + function pushToMap(map, key, value, pushFront) { + var exists = map[key]; + if (exists) { + if (Array.isArray(exists)) { + if (pushFront) { + exists.push(exists[0]); + exists[0] = value; + } else { + exists.push(value); + } + } else { + map[key] = pushFront ? [value, exists] : [exists, value]; + } + } else { + map[key] = value; + } + } + function contains$1(refNode, otherNode) { + if (typeof refNode.contains === 'function') { + return refNode.contains(otherNode); + } else if (typeof refNode.compareDocumentPosition === 'function') { + return !!(refNode.compareDocumentPosition(otherNode) & 16); + } else { + var node = otherNode.parentNode; + if (node) { + do { + if (node === refNode) { + return true; + } else { + node = node.parentNode; + } + } while (node !== null); + } + return false; + } + } + function isDomNode(node) { + if (typeof window === 'object' && typeof Node === 'function') { + return node instanceof Node; + } else { + return !!node && typeof node === 'object' && typeof node.nodeType === 'number' && typeof node.nodeName === 'string'; + } + } + function callInNextTick(callback, p1, p2) { + if (callback) { + setTimeoutRAF(function () { + callback(p1, p2); + }, 0); + } + } + function tryCatchFunctor_EDITOR(funcName) { + return Function('target', "" + ('try {\n' + ' target.') + funcName + "();\n" + "}\n" + "catch (e) {\n" + " cc._throw(e);\n" + "}"); + } + function isPlainEmptyObj_DEV(obj) { + if (!obj || obj.constructor !== Object) { + return false; + } + return isEmptyObject(obj); + } + function clampf(value, min_inclusive, max_inclusive) { + if (min_inclusive > max_inclusive) { + var temp = min_inclusive; + min_inclusive = max_inclusive; + max_inclusive = temp; + } + return value < min_inclusive ? min_inclusive : value < max_inclusive ? value : max_inclusive; + } + function degreesToRadians(angle) { + return angle * macro.RAD; + } + function radiansToDegrees(angle) { + return angle * macro.DEG; + } + legacyCC.misc = { + BUILTIN_CLASSID_RE: BUILTIN_CLASSID_RE, + BASE64_VALUES: BASE64_VALUES$1, + propertyDefine: propertyDefine, + pushToMap: pushToMap, + contains: contains$1, + isDomNode: isDomNode, + callInNextTick: callInNextTick, + isPlainEmptyObj_DEV: isPlainEmptyObj_DEV, + clampf: clampf, + degreesToRadians: degreesToRadians, + radiansToDegrees: radiansToDegrees + }; + + var misc = /*#__PURE__*/Object.freeze({ + __proto__: null, + BUILTIN_CLASSID_RE: BUILTIN_CLASSID_RE, + BASE64_VALUES: BASE64_VALUES$1, + propertyDefine: propertyDefine, + pushToMap: pushToMap, + contains: contains$1, + isDomNode: isDomNode, + callInNextTick: callInNextTick, + tryCatchFunctor_EDITOR: tryCatchFunctor_EDITOR, + isPlainEmptyObj_DEV: isPlainEmptyObj_DEV, + clampf: clampf, + degreesToRadians: degreesToRadians, + radiansToDegrees: radiansToDegrees + }); + exports('bi', misc); + + var DELIMETER$1 = '$_$'; + function createAttrsSingle(owner, superAttrs) { + var attrs = superAttrs ? Object.create(superAttrs) : {}; + value(owner, '__attrs__', attrs); + return attrs; + } + function createAttrs(subclass) { + if (typeof subclass !== 'function') { + var instance = subclass; + return createAttrsSingle(instance, getClassAttrs(instance.constructor)); + } + var superClass; + var chains = legacyCC.Class.getInheritanceChain(subclass); + for (var i = chains.length - 1; i >= 0; i--) { + var cls = chains[i]; + var attrs = cls.hasOwnProperty('__attrs__') && cls.__attrs__; + if (!attrs) { + superClass = chains[i + 1]; + createAttrsSingle(cls, superClass && superClass.__attrs__); + } + } + superClass = chains[0]; + createAttrsSingle(subclass, superClass && superClass.__attrs__); + return subclass.__attrs__; + } + function attr(constructor, propertyName) { + var attrs = getClassAttrs(constructor); + var prefix = propertyName + DELIMETER$1; + var ret = {}; + for (var key in attrs) { + if (key.startsWith(prefix)) { + ret[key.slice(prefix.length)] = attrs[key]; + } + } + return ret; + } + function getClassAttrs(constructor) { + return constructor.hasOwnProperty('__attrs__') && constructor.__attrs__ || createAttrs(constructor); + } + function setClassAttr(ctor, propName, key, value) { + getClassAttrs(ctor)[propName + DELIMETER$1 + key] = value; + } + var PrimitiveType = function () { + function PrimitiveType(name, defaultValue) { + this.name = void 0; + this["default"] = void 0; + this.name = name; + this["default"] = defaultValue; + } + var _proto = PrimitiveType.prototype; + _proto.toString = function toString() { + return this.name; + }; + return PrimitiveType; + }(); + var CCInteger = exports('by', new PrimitiveType('Integer', 0)); + legacyCC.Integer = CCInteger; + legacyCC.CCInteger = CCInteger; + var CCFloat = exports('bz', new PrimitiveType('Float', 0.0)); + legacyCC.Float = CCFloat; + legacyCC.CCFloat = CCFloat; + var CCBoolean = exports('bA', new PrimitiveType('Boolean', false)); + legacyCC.Boolean = CCBoolean; + legacyCC.CCBoolean = CCBoolean; + var CCString = exports('bB', new PrimitiveType('String', '')); + legacyCC.String = CCString; + legacyCC.CCString = CCString; + function getTypeChecker_ET(type, attributeName) { + return function (constructor, mainPropertyName) { + var propInfo = "\"" + getClassName(constructor) + "." + mainPropertyName + "\""; + var mainPropAttrs = attr(constructor, mainPropertyName); + var mainPropAttrsType = mainPropAttrs.type; + if (mainPropAttrsType === CCInteger || mainPropAttrsType === CCFloat) { + mainPropAttrsType = 'Number'; + } else if (mainPropAttrsType === CCString || mainPropAttrsType === CCBoolean) { + mainPropAttrsType = "" + mainPropAttrsType; + } + if (mainPropAttrsType !== type) { + warnID(3604, propInfo); + return; + } + if (!mainPropAttrs.hasOwnProperty('default')) { + return; + } + var defaultVal = mainPropAttrs["default"]; + if (typeof defaultVal === 'undefined') { + return; + } + var isContainer = Array.isArray(defaultVal) || isPlainEmptyObj_DEV(defaultVal); + if (isContainer) { + return; + } + var defaultType = typeof defaultVal; + var type_lowerCase = type.toLowerCase(); + if (defaultType === type_lowerCase) { + if (type_lowerCase === 'object') { + if (defaultVal && !(defaultVal instanceof mainPropAttrs.ctor)) { + warnID(3605, propInfo, getClassName(mainPropAttrs.ctor)); + } else { + return; + } + } else if (type !== 'Number') { + warnID(3606, attributeName, propInfo, type); + } + } else if (defaultType !== 'function') { + if (type === CCString["default"] && defaultVal == null) { + warnID(3607, propInfo); + } else { + warnID(3611, attributeName, propInfo, defaultType); + } + } else { + return; + } + delete mainPropAttrs.type; + }; + } + function getObjTypeChecker_ET(typeCtor) { + return function (classCtor, mainPropName) { + getTypeChecker_ET('Object', 'type')(classCtor, mainPropName); + var defaultDef = getClassAttrs(classCtor)[mainPropName + DELIMETER$1 + "default"]; + var defaultVal = legacyCC.Class.getDefault(defaultDef); + if (!Array.isArray(defaultVal) && isChildClassOf(typeCtor, legacyCC.ValueType)) { + var typename = getClassName(typeCtor); + var info = formatStr('No need to specify the "type" of "%s.%s" because %s is a child class of ValueType.', getClassName(classCtor), mainPropName, typename); + if (defaultDef) { + log(info); + } else { + warnID(3612, info, typename, getClassName(classCtor), mainPropName, typename); + } + } + }; + } + + var attributeUtils = /*#__PURE__*/Object.freeze({ + __proto__: null, + DELIMETER: DELIMETER$1, + createAttrsSingle: createAttrsSingle, + createAttrs: createAttrs, + attr: attr, + getClassAttrs: getClassAttrs, + setClassAttr: setClassAttr, + PrimitiveType: PrimitiveType, + CCInteger: CCInteger, + CCFloat: CCFloat, + CCBoolean: CCBoolean, + CCString: CCString, + getTypeChecker_ET: getTypeChecker_ET, + getObjTypeChecker_ET: getObjTypeChecker_ET + }); + + var SerializableAttrs = { + "default": {}, + serializable: {}, + editorOnly: {}, + formerlySerializedAs: {} + }; + function parseNotify(val, propName, notify, properties) { + if (val.get || val.set) { + return; + } + if (val.hasOwnProperty('default')) { + var newKey = "_N$" + propName; + val.get = function () { + return this[newKey]; + }; + val.set = function (value) { + var oldValue = this[newKey]; + this[newKey] = value; + notify.call(this, oldValue); + }; + var newValue = {}; + properties[newKey] = newValue; + for (var attr in SerializableAttrs) { + var v = SerializableAttrs[attr]; + if (val.hasOwnProperty(attr)) { + newValue[attr] = val[attr]; + if (!v.canUsedInGet) { + delete val[attr]; + } + } + } + } + } + function parseType(val, type, className, propName) { + if (Array.isArray(type)) { + if (type.length > 0) { + val.type = type = type[0]; + } else { + return errorID(5508, className, propName); + } + } + if (typeof type === 'function') { + if (type === String) { + val.type = legacyCC.String; + } else if (type === Boolean) { + val.type = legacyCC.Boolean; + } else if (type === Number) { + val.type = legacyCC.Float; + } + } + } + function _wrapOptions(isGetset, _default, type) { + var res = isGetset || typeof _default === 'undefined' ? { + _short: true + } : { + _short: true, + "default": _default + }; + if (type) { + res.type = type; + } + return res; + } + function getFullFormOfProperty(options, isGetset) { + var isLiteral = options && options.constructor === Object; + if (!isLiteral) { + if (Array.isArray(options) && options.length > 0) { + return _wrapOptions(isGetset, [], options); + } else if (typeof options === 'function') { + var type = options; + return _wrapOptions(isGetset, isChildClassOf(type, legacyCC.ValueType) ? new type() : null, type); + } else if (options instanceof PrimitiveType) { + return _wrapOptions(isGetset, undefined, options); + } else { + return _wrapOptions(isGetset, options); + } + } + return null; + } + function preprocessAttrs(properties, className, cls) { + for (var propName in properties) { + var val = properties[propName]; + var fullForm = getFullFormOfProperty(val, false); + if (fullForm) { + val = properties[propName] = fullForm; + } + if (val) { + var notify = val.notify; + if (notify) { + { + parseNotify(val, propName, notify, properties); + } + } + if ('type' in val) { + parseType(val, val.type, className, propName); + } + } + } + } + + var requiringFrames = []; + function push(module, uuid, script, importMeta) { + if (script === undefined) { + script = uuid; + uuid = ''; + } + requiringFrames.push({ + uuid: uuid, + script: script, + module: module, + exports: module.exports, + beh: null, + importMeta: importMeta + }); + } + function pop() { + var frameInfo = requiringFrames.pop(); + var module = frameInfo.module; + var exports = module.exports; + if (exports === frameInfo.exports) { + for (var anykey in exports) { + return; + } + module.exports = exports = frameInfo.cls; + } + } + function peek() { + return requiringFrames[requiringFrames.length - 1]; + } + legacyCC._RF = { + push: push, + pop: pop, + peek: peek + }; + + var PropertyStashInternalFlag; + (function (PropertyStashInternalFlag) { + PropertyStashInternalFlag[PropertyStashInternalFlag["STANDALONE"] = 1] = "STANDALONE"; + PropertyStashInternalFlag[PropertyStashInternalFlag["IMPLICIT_VISIBLE"] = 2] = "IMPLICIT_VISIBLE"; + PropertyStashInternalFlag[PropertyStashInternalFlag["IMPLICIT_SERIALIZABLE"] = 4] = "IMPLICIT_SERIALIZABLE"; + })(PropertyStashInternalFlag || (PropertyStashInternalFlag = {})); + + function setPropertyEnumType(objectOrConstructor, propertyName, enumType) { + setPropertyEnumTypeOnAttrs(getClassAttrs(objectOrConstructor), propertyName, enumType); + } + function setPropertyEnumTypeOnAttrs(attrs, propertyName, enumType) { + attrs["" + propertyName + DELIMETER$1 + "type"] = 'Enum'; + attrs["" + propertyName + DELIMETER$1 + "enumList"] = Enum.getList(enumType); + } + + var DELIMETER = DELIMETER$1; + var CCCLASS_TAG = '__ctors__'; + var ENUM_TAG = exports('cA', 'Enum'); + var BITMASK_TAG = exports('cB', 'BitMask'); + function pushUnique(array, item) { + if (array.indexOf(item) < 0) { + array.push(item); + } + } + function appendProp(cls, name) { + pushUnique(cls.__props__, name); + } + function defineProp(cls, className, propName, val) { + appendProp(cls, propName); + parseAttributes(cls, val, className, propName); + } + function defineGetSet(cls, name, propName, val) { + var getter = val.get; + val.set; + if (getter) { + parseAttributes(cls, val, name, propName); + setClassAttr(cls, propName, 'serializable', false); + } + } + function getDefault(defaultVal) { + if (typeof defaultVal === 'function') { + { + return defaultVal(); + } + } + return defaultVal; + } + function doDefine(className, baseClass, options) { + var ctor = options.ctor; + value(ctor, CCCLASS_TAG, true, true); + ctor.prototype; + if (baseClass) { + ctor.$super = baseClass; + } + setClassName(className, ctor); + return ctor; + } + function define$1(className, baseClass, options) { + var Component = legacyCC.Component; + var frame = peek(); + if (frame && isChildClassOf(baseClass, Component)) { + if (isChildClassOf(frame.cls, Component)) { + errorID(3615); + return null; + } + className = className || frame.script; + } + var cls = doDefine(className, baseClass, options); + if (frame) { + if (isChildClassOf(baseClass, Component)) { + var uuid = frame.uuid; + if (uuid) { + _setClassId(uuid, cls); + } + frame.cls = cls; + } else if (!isChildClassOf(frame.cls, Component)) { + frame.cls = cls; + } + } + return cls; + } + function getNewValueTypeCodeJit(value) { + var clsName = getClassName(value); + var type = value.constructor; + var res = "new " + clsName + "("; + for (var i = 0; i < type.__props__.length; i++) { + var prop = type.__props__[i]; + var propVal = value[prop]; + res += propVal; + if (i < type.__props__.length - 1) { + res += ','; + } + } + return res + ")"; + } + function escapeForJS$1(s) { + return JSON.stringify(s).replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029"); + } + var IDENTIFIER_RE$1 = /^[A-Za-z_$][0-9A-Za-z_$]*$/; + function declareProperties(cls, className, properties, baseClass) { + cls.__props__ = []; + if (baseClass && baseClass.__props__) { + cls.__props__ = baseClass.__props__.slice(); + } + if (properties) { + preprocessAttrs(properties, className); + for (var propName in properties) { + var val = properties[propName]; + if (!val.get && !val.set) { + defineProp(cls, className, propName, val); + } else { + defineGetSet(cls, className, propName, val); + } + } + } + var attrs = getClassAttrs(cls); + cls.__values__ = cls.__props__.filter(function (prop) { + return attrs["" + prop + DELIMETER + "serializable"] !== false; + }); + } + function CCClass(options) { + var name = options.name; + var base = options["extends"]; + var cls = define$1(name, base, options); + if (!name) { + name = legacyCC.js.getClassName(cls); + } + cls._sealed = true; + if (base) { + base._sealed = false; + } + var properties = options.properties; + declareProperties(cls, name, properties, base); + var editor = options.editor; + if (editor) { + if (isChildClassOf(base, legacyCC.Component)) { + legacyCC.Component._registerEditorProps(cls, editor); + } + } + return cls; + } + CCClass._isCCClass = function isCCClass(constructor) { + var _constructor$hasOwnPr; + return constructor === null || constructor === void 0 ? void 0 : (_constructor$hasOwnPr = constructor.hasOwnProperty) === null || _constructor$hasOwnPr === void 0 ? void 0 : _constructor$hasOwnPr.call(constructor, CCCLASS_TAG); + }; + CCClass.fastDefine = function (className, constructor, serializableFields) { + setClassName(className, constructor); + var props = constructor.__props__ = constructor.__values__ = Object.keys(serializableFields); + var attrs = getClassAttrs(constructor); + for (var i = 0; i < props.length; i++) { + var key = props[i]; + attrs[key + DELIMETER + "visible"] = false; + attrs[key + DELIMETER + "default"] = serializableFields[key]; + } + }; + CCClass.Attr = attributeUtils; + CCClass.attr = attr; + function isCCClassOrFastDefined(constructor) { + var _constructor$hasOwnPr2; + return constructor === null || constructor === void 0 ? void 0 : (_constructor$hasOwnPr2 = constructor.hasOwnProperty) === null || _constructor$hasOwnPr2 === void 0 ? void 0 : _constructor$hasOwnPr2.call(constructor, '__values__'); + } + CCClass.isCCClassOrFastDefined = isCCClassOrFastDefined; + function getInheritanceChain(constructor) { + var chain = []; + for (;;) { + constructor = getSuper(constructor); + if (!constructor) { + break; + } + if (constructor !== Object) { + chain.push(constructor); + } + } + return chain; + } + CCClass.getInheritanceChain = getInheritanceChain; + var PrimitiveTypes = { + Integer: 'Number', + Float: 'Number', + Boolean: 'Boolean', + String: 'String' + }; + function parseAttributes(constructor, attributes, className, propertyName, usedInGetter) { + var attrs = null; + var propertyNamePrefix = ''; + function initAttrs() { + propertyNamePrefix = propertyName + DELIMETER; + return attrs = getClassAttrs(constructor); + } + if ('type' in attributes && typeof attributes.type === 'undefined') { + warnID(3660, propertyName, className); + } + var type = attributes.type; + if (type) { + var primitiveType = PrimitiveTypes[type]; + if (primitiveType) { + (attrs || initAttrs())[propertyNamePrefix + "type"] = type; + } else if (type === 'Object') ; else if (typeof type === 'object') { + if (Enum.isEnum(type)) { + setPropertyEnumTypeOnAttrs(attrs || initAttrs(), propertyName, type); + } else if (BitMask.isBitMask(type)) { + (attrs || initAttrs())[propertyNamePrefix + "type"] = BITMASK_TAG; + attrs[propertyNamePrefix + "bitmaskList"] = BitMask.getList(type); + } else ; + } else if (typeof type === 'function') { + (attrs || initAttrs())[propertyNamePrefix + "type"] = 'Object'; + attrs[propertyNamePrefix + "ctor"] = type; + } else ; + } + if ('default' in attributes) { + (attrs || initAttrs())[propertyNamePrefix + "default"] = attributes["default"]; + } + var parseSimpleAttribute = function parseSimpleAttribute(attributeName, expectType) { + if (attributeName in attributes) { + var val = attributes[attributeName]; + if (typeof val === expectType) { + (attrs || initAttrs())[propertyNamePrefix + attributeName] = val; + } + } + }; + if (attributes.editorOnly) { + { + (attrs || initAttrs())[propertyNamePrefix + "editorOnly"] = true; + } + } + var isStandaloneMode = attributes.__internalFlags & PropertyStashInternalFlag.STANDALONE; + var normalizedSerializable; + if (isStandaloneMode) { + normalizedSerializable = attributes.serializable === true || (attributes.__internalFlags & PropertyStashInternalFlag.IMPLICIT_SERIALIZABLE) !== 0; + } else if (attributes.serializable === false) { + normalizedSerializable = false; + } + if (typeof normalizedSerializable !== 'undefined') { + (attrs || initAttrs())[propertyNamePrefix + "serializable"] = normalizedSerializable; + } + parseSimpleAttribute('formerlySerializedAs', 'string'); + var range = attributes.range; + if (range) { + if (Array.isArray(range)) { + if (range.length >= 2) { + (attrs || initAttrs())[propertyNamePrefix + "min"] = range[0]; + attrs[propertyNamePrefix + "max"] = range[1]; + if (range.length > 2) { + attrs[propertyNamePrefix + "step"] = range[2]; + } + } + } + } + parseSimpleAttribute('min', 'number'); + parseSimpleAttribute('max', 'number'); + parseSimpleAttribute('step', 'number'); + } + CCClass.isArray = function (defaultVal) { + defaultVal = getDefault(defaultVal); + return Array.isArray(defaultVal); + }; + CCClass.getDefault = getDefault; + CCClass.escapeForJS = escapeForJS$1; + CCClass.IDENTIFIER_RE = IDENTIFIER_RE$1; + CCClass.getNewValueTypeCode = getNewValueTypeCodeJit; + legacyCC.Class = CCClass; + + var _d2r = Math.PI / 180.0; + var _r2d = 180.0 / Math.PI; + var _random = Math.random; + var HALF_PI = exports('aK', Math.PI * 0.5); + var TWO_PI = exports('aL', Math.PI * 2.0); + var EPSILON$3 = exports('aM', 0.000001); + function equals$2(a, b) { + return Math.abs(a - b) <= EPSILON$3 * Math.max(1.0, Math.abs(a), Math.abs(b)); + } + function approx(a, b, maxDiff) { + maxDiff = maxDiff || EPSILON$3; + return Math.abs(a - b) <= maxDiff; + } + function clamp$1(val, min, max) { + if (min > max) { + var temp = min; + min = max; + max = temp; + } + return val < min ? min : val > max ? max : val; + } + function clamp01(val) { + return val < 0 ? 0 : val > 1 ? 1 : val; + } + function lerp(from, to, ratio) { + return from + (to - from) * ratio; + } + function toRadian(a) { + return a * _d2r; + } + function toDegree(a) { + return a * _r2d; + } + function random() { + return _random(); + } + function setRandGenerator(func) { + _random = func; + } + function randomRange(min, max) { + return random() * (max - min) + min; + } + function randomRangeInt(min, max) { + return Math.floor(randomRange(min, max)); + } + function pseudoRandom(seed) { + seed = (seed * 9301 + 49297) % 233280; + return seed / 233280.0; + } + function pseudoRandomRange(seed, min, max) { + return pseudoRandom(seed) * (max - min) + min; + } + function pseudoRandomRangeInt(seed, min, max) { + return Math.floor(pseudoRandomRange(seed, min, max)); + } + function nextPow2(val) { + return nextPow2$1(val); + } + function repeat$1(t, length) { + return t - Math.floor(t / length) * length; + } + function pingPong(t, length) { + t = repeat$1(t, length * 2); + t = length - Math.abs(t - length); + return t; + } + function inverseLerp(from, to, value) { + return (value - from) / (to - from); + } + function absMaxComponent(v) { + if (Math.abs(v.x) > Math.abs(v.y)) { + if (Math.abs(v.x) > Math.abs(v.z)) { + return v.x; + } else { + return v.z; + } + } else if (Math.abs(v.y) > Math.abs(v.z)) { + return v.y; + } else { + return v.z; + } + } + function absMax(a, b) { + if (Math.abs(a) > Math.abs(b)) { + return a; + } else { + return b; + } + } + function enumerableProps(prototype, attrs) { + attrs.forEach(function (key) { + Object.defineProperty(prototype, key, { + enumerable: true + }); + }); + } + var toHalf = function () { + var floatView = new Float32Array(1); + var int32View = new Int32Array(floatView.buffer); + return function toHalf(fval) { + floatView[0] = fval; + var fbits = int32View[0]; + var s = fbits >> 16 & 0x8000; + var em = fbits & 0x7fffffff; + var h = em - (112 << 23) + (1 << 12) >> 13; + h = em < 113 << 23 ? 0 : h; + h = em >= 143 << 23 ? 0x7c00 : h; + h = em > 255 << 23 ? 0x7e00 : h; + int32View[0] = s | h; + return int32View[0]; + }; + }(); + var fromHalf = function () { + var floatView = new Float32Array(1); + var int32View = new Int32Array(floatView.buffer); + return function fromHalf(hval) { + var s = hval >> 15 & 0x00000001; + var em = hval & 0x00007fff; + var h = em << 13; + var fbits = 0; + if (h !== 0x7c00) { + h += 112 << 23; + if (em === 0) { + h = (h & 0xfffff) >> 1; + } else if (em === 0x7fff) { + h = 0x7fffffff; + } + } else { + h = 0x7f800000; + } + fbits = s << 31 | h; + int32View[0] = fbits; + return floatView[0]; + }; + }(); + function floatToHalf(val) { + return toHalf(val); + } + function halfToFloat(val) { + return fromHalf(val); + } + + var _class$2p; + var Vec4 = exports('av', function (_ValueType) { + _inheritsLoose(Vec4, _ValueType); + Vec4.clone = function clone(a) { + return new Vec4(a.x, a.y, a.z, a.w); + }; + Vec4.copy = function copy(out, a) { + out.x = a.x; + out.y = a.y; + out.z = a.z; + out.w = a.w; + return out; + }; + Vec4.set = function set(out, x, y, z, w) { + out.x = x; + out.y = y; + out.z = z; + out.w = w; + return out; + }; + Vec4.fromColor = function fromColor(out, color) { + out.x = color.r; + out.y = color.g; + out.z = color.b; + out.w = color.a; + return out; + }; + Vec4.angle = function angle(a, b) { + var dx = a.y * b.z - a.z * b.y; + var dy = a.z * b.x - a.x * b.z; + var dz = a.x * b.y - a.y * b.x; + var dotVal = a.x * b.x + a.y * b.y + a.z * b.z; + return Math.atan2(Math.sqrt(dx * dx + dy * dy + dz * dz), dotVal); + }; + Vec4.add = function add(out, a, b) { + out.x = a.x + b.x; + out.y = a.y + b.y; + out.z = a.z + b.z; + out.w = a.w + b.w; + return out; + }; + Vec4.subtract = function subtract(out, a, b) { + out.x = a.x - b.x; + out.y = a.y - b.y; + out.z = a.z - b.z; + out.w = a.w - b.w; + return out; + }; + Vec4.multiply = function multiply(out, a, b) { + out.x = a.x * b.x; + out.y = a.y * b.y; + out.z = a.z * b.z; + out.w = a.w * b.w; + return out; + }; + Vec4.divide = function divide(out, a, b) { + out.x = a.x / b.x; + out.y = a.y / b.y; + out.z = a.z / b.z; + out.w = a.w / b.w; + return out; + }; + Vec4.ceil = function ceil(out, a) { + out.x = Math.ceil(a.x); + out.y = Math.ceil(a.y); + out.z = Math.ceil(a.z); + out.w = Math.ceil(a.w); + return out; + }; + Vec4.floor = function floor(out, a) { + out.x = Math.floor(a.x); + out.y = Math.floor(a.y); + out.z = Math.floor(a.z); + out.w = Math.floor(a.w); + return out; + }; + Vec4.min = function min(out, a, b) { + out.x = Math.min(a.x, b.x); + out.y = Math.min(a.y, b.y); + out.z = Math.min(a.z, b.z); + out.w = Math.min(a.w, b.w); + return out; + }; + Vec4.max = function max(out, a, b) { + out.x = Math.max(a.x, b.x); + out.y = Math.max(a.y, b.y); + out.z = Math.max(a.z, b.z); + out.w = Math.max(a.w, b.w); + return out; + }; + Vec4.round = function round(out, a) { + out.x = Math.round(a.x); + out.y = Math.round(a.y); + out.z = Math.round(a.z); + out.w = Math.round(a.w); + return out; + }; + Vec4.multiplyScalar = function multiplyScalar(out, a, b) { + out.x = a.x * b; + out.y = a.y * b; + out.z = a.z * b; + out.w = a.w * b; + return out; + }; + Vec4.scaleAndAdd = function scaleAndAdd(out, a, b, scale) { + out.x = a.x + b.x * scale; + out.y = a.y + b.y * scale; + out.z = a.z + b.z * scale; + out.w = a.w + b.w * scale; + return out; + }; + Vec4.distance = function distance(a, b) { + var x = b.x - a.x; + var y = b.y - a.y; + var z = b.z - a.z; + var w = b.w - a.w; + return Math.sqrt(x * x + y * y + z * z + w * w); + }; + Vec4.squaredDistance = function squaredDistance(a, b) { + var x = b.x - a.x; + var y = b.y - a.y; + var z = b.z - a.z; + var w = b.w - a.w; + return x * x + y * y + z * z + w * w; + }; + Vec4.len = function len(a) { + var x = a.x; + var y = a.y; + var z = a.z; + var w = a.w; + return Math.sqrt(x * x + y * y + z * z + w * w); + }; + Vec4.lengthSqr = function lengthSqr(a) { + var x = a.x; + var y = a.y; + var z = a.z; + var w = a.w; + return x * x + y * y + z * z + w * w; + }; + Vec4.negate = function negate(out, a) { + out.x = -a.x; + out.y = -a.y; + out.z = -a.z; + out.w = -a.w; + return out; + }; + Vec4.inverse = function inverse(out, a) { + out.x = 1.0 / a.x; + out.y = 1.0 / a.y; + out.z = 1.0 / a.z; + out.w = 1.0 / a.w; + return out; + }; + Vec4.inverseSafe = function inverseSafe(out, a) { + var x = a.x; + var y = a.y; + var z = a.z; + var w = a.w; + if (Math.abs(x) < EPSILON$3) { + out.x = 0; + } else { + out.x = 1.0 / x; + } + if (Math.abs(y) < EPSILON$3) { + out.y = 0; + } else { + out.y = 1.0 / y; + } + if (Math.abs(z) < EPSILON$3) { + out.z = 0; + } else { + out.z = 1.0 / z; + } + if (Math.abs(w) < EPSILON$3) { + out.w = 0; + } else { + out.w = 1.0 / w; + } + return out; + }; + Vec4.normalize = function normalize(out, a) { + var x = a.x; + var y = a.y; + var z = a.z; + var w = a.w; + var len = x * x + y * y + z * z + w * w; + if (len > 0) { + len = 1 / Math.sqrt(len); + out.x = x * len; + out.y = y * len; + out.z = z * len; + out.w = w * len; + } else { + out.x = 0; + out.y = 0; + out.z = 0; + out.w = 0; + } + return out; + }; + Vec4.dot = function dot(a, b) { + return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w; + }; + Vec4.lerp = function lerp(out, a, b, t) { + out.x = a.x + t * (b.x - a.x); + out.y = a.y + t * (b.y - a.y); + out.z = a.z + t * (b.z - a.z); + out.w = a.w + t * (b.w - a.w); + return out; + }; + Vec4.scale = function scale(out, a, b) { + out.x = a.x * b; + out.y = a.y * b; + out.z = a.z * b; + out.w = a.w * b; + return out; + }; + Vec4.random = function random$1(out, scale) { + scale = scale || 1.0; + var phi = random() * 2.0 * Math.PI; + var cosTheta = random() * 2 - 1; + var sinTheta = Math.sqrt(1 - cosTheta * cosTheta); + out.x = sinTheta * Math.cos(phi) * scale; + out.y = sinTheta * Math.sin(phi) * scale; + out.z = cosTheta * scale; + out.w = 0; + return out; + }; + Vec4.transformMat4 = function transformMat4(out, a, m) { + var x = a.x; + var y = a.y; + var z = a.z; + var w = a.w; + out.x = m.m00 * x + m.m04 * y + m.m08 * z + m.m12 * w; + out.y = m.m01 * x + m.m05 * y + m.m09 * z + m.m13 * w; + out.z = m.m02 * x + m.m06 * y + m.m10 * z + m.m14 * w; + out.w = m.m03 * x + m.m07 * y + m.m11 * z + m.m15 * w; + return out; + }; + Vec4.transformAffine = function transformAffine(out, v, m) { + var x = v.x; + var y = v.y; + var z = v.z; + var w = v.w; + out.x = m.m00 * x + m.m04 * y + m.m08 * z + m.m12 * w; + out.y = m.m01 * x + m.m05 * y + m.m09 * z + m.m13 * w; + out.z = m.m02 * x + m.m06 * y + m.m10 * z + m.m14 * w; + out.w = v.w; + return out; + }; + Vec4.transformQuat = function transformQuat(out, a, q) { + var x = a.x, + y = a.y, + z = a.z; + var _x = q.x; + var _y = q.y; + var _z = q.z; + var _w = q.w; + var ix = _w * x + _y * z - _z * y; + var iy = _w * y + _z * x - _x * z; + var iz = _w * z + _x * y - _y * x; + var iw = -_x * x - _y * y - _z * z; + out.x = ix * _w + iw * -_x + iy * -_z - iz * -_y; + out.y = iy * _w + iw * -_y + iz * -_x - ix * -_z; + out.z = iz * _w + iw * -_z + ix * -_y - iy * -_x; + out.w = a.w; + return out; + }; + Vec4.toArray = function toArray(out, v, ofs) { + if (ofs === void 0) { + ofs = 0; + } + out[ofs + 0] = v.x; + out[ofs + 1] = v.y; + out[ofs + 2] = v.z; + out[ofs + 3] = v.w; + return out; + }; + Vec4.fromArray = function fromArray(out, arr, ofs) { + if (ofs === void 0) { + ofs = 0; + } + out.x = arr[ofs + 0]; + out.y = arr[ofs + 1]; + out.z = arr[ofs + 2]; + out.w = arr[ofs + 3]; + return out; + }; + Vec4.strictEquals = function strictEquals(a, b) { + return a.x === b.x && a.y === b.y && a.z === b.z && a.w === b.w; + }; + Vec4.equals = function equals(a, b, epsilon) { + if (epsilon === void 0) { + epsilon = EPSILON$3; + } + var hasInf = Math.abs(a.x) === Infinity || Math.abs(a.y) === Infinity || Math.abs(a.z) === Infinity || Math.abs(a.w) === Infinity || Math.abs(b.x) === Infinity || Math.abs(b.y) === Infinity || Math.abs(b.z) === Infinity || Math.abs(b.w) === Infinity; + return !hasInf && Math.abs(a.x - b.x) <= epsilon * Math.max(1.0, Math.abs(a.x), Math.abs(b.x)) && Math.abs(a.y - b.y) <= epsilon * Math.max(1.0, Math.abs(a.y), Math.abs(b.y)) && Math.abs(a.z - b.z) <= epsilon * Math.max(1.0, Math.abs(a.z), Math.abs(b.z)) && Math.abs(a.w - b.w) <= epsilon * Math.max(1.0, Math.abs(a.w), Math.abs(b.w)); + }; + function Vec4(x, y, z, w) { + var _this; + _this = _ValueType.call(this) || this; + if (typeof x === 'object') { + _this.x = x.x; + _this.y = x.y; + _this.z = x.z; + _this.w = x.w; + } else { + _this.x = x || 0; + _this.y = y || 0; + _this.z = z || 0; + _this.w = w || 0; + } + return _this; + } + var _proto = Vec4.prototype; + _proto.clone = function clone() { + return new Vec4(this.x, this.y, this.z, this.w); + }; + _proto.set = function set(x, y, z, w) { + if (typeof x === 'object') { + this.x = x.x; + this.y = x.y; + this.z = x.z; + this.w = x.w; + } else { + this.x = x || 0; + this.y = y || 0; + this.z = z || 0; + this.w = w || 0; + } + return this; + }; + _proto.equals = function equals(other, epsilon) { + if (epsilon === void 0) { + epsilon = EPSILON$3; + } + return Math.abs(this.x - other.x) <= epsilon * Math.max(1.0, Math.abs(this.x), Math.abs(other.x)) && Math.abs(this.y - other.y) <= epsilon * Math.max(1.0, Math.abs(this.y), Math.abs(other.y)) && Math.abs(this.z - other.z) <= epsilon * Math.max(1.0, Math.abs(this.z), Math.abs(other.z)) && Math.abs(this.w - other.w) <= epsilon * Math.max(1.0, Math.abs(this.w), Math.abs(other.w)); + }; + _proto.equals4f = function equals4f(x, y, z, w, epsilon) { + if (epsilon === void 0) { + epsilon = EPSILON$3; + } + return Math.abs(this.x - x) <= epsilon * Math.max(1.0, Math.abs(this.x), Math.abs(x)) && Math.abs(this.y - y) <= epsilon * Math.max(1.0, Math.abs(this.y), Math.abs(y)) && Math.abs(this.z - z) <= epsilon * Math.max(1.0, Math.abs(this.z), Math.abs(z)) && Math.abs(this.w - w) <= epsilon * Math.max(1.0, Math.abs(this.w), Math.abs(w)); + }; + _proto.strictEquals = function strictEquals(other) { + return this.x === other.x && this.y === other.y && this.z === other.z && this.w === other.w; + }; + _proto.strictEquals4f = function strictEquals4f(x, y, z, w) { + return this.x === x && this.y === y && this.z === z && this.w === w; + }; + _proto.lerp = function lerp(to, ratio) { + var x = this.x; + var y = this.y; + var z = this.z; + var w = this.w; + this.x = x + ratio * (to.x - x); + this.y = y + ratio * (to.y - y); + this.z = z + ratio * (to.z - z); + this.w = w + ratio * (to.w - w); + return this; + }; + _proto.toString = function toString() { + return "(" + this.x.toFixed(2) + ", " + this.y.toFixed(2) + ", " + this.z.toFixed(2) + ", " + this.w.toFixed(2) + ")"; + }; + _proto.clampf = function clampf(minInclusive, maxInclusive) { + this.x = clamp$1(this.x, minInclusive.x, maxInclusive.x); + this.y = clamp$1(this.y, minInclusive.y, maxInclusive.y); + this.z = clamp$1(this.z, minInclusive.z, maxInclusive.z); + this.w = clamp$1(this.w, minInclusive.w, maxInclusive.w); + return this; + }; + _proto.add = function add(other) { + this.x += other.x; + this.y += other.y; + this.z += other.z; + this.w += other.w; + return this; + }; + _proto.add4f = function add4f(x, y, z, w) { + this.x += x; + this.y += y; + this.z += z; + this.w += w; + return this; + }; + _proto.subtract = function subtract(other) { + this.x -= other.x; + this.y -= other.y; + this.z -= other.z; + this.w -= other.w; + return this; + }; + _proto.subtract4f = function subtract4f(x, y, z, w) { + this.x -= x; + this.y -= y; + this.z -= z; + this.w -= w; + return this; + }; + _proto.multiplyScalar = function multiplyScalar(scalar) { + if (typeof scalar === 'object') { + console.warn('should use Vec4.multiply for vector * vector operation'); + } + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + this.w *= scalar; + return this; + }; + _proto.multiply = function multiply(other) { + if (typeof other !== 'object') { + console.warn('should use Vec4.scale for vector * scalar operation'); + } + this.x *= other.x; + this.y *= other.y; + this.z *= other.z; + this.w *= other.w; + return this; + }; + _proto.multiply4f = function multiply4f(x, y, z, w) { + this.x *= x; + this.y *= y; + this.z *= z; + this.w *= w; + return this; + }; + _proto.divide = function divide(other) { + this.x /= other.x; + this.y /= other.y; + this.z /= other.z; + this.w /= other.w; + return this; + }; + _proto.divide4f = function divide4f(x, y, z, w) { + this.x /= x; + this.y /= y; + this.z /= z; + this.w /= w; + return this; + }; + _proto.negative = function negative() { + this.x = -this.x; + this.y = -this.y; + this.z = -this.z; + this.w = -this.w; + return this; + }; + _proto.dot = function dot(vector) { + return this.x * vector.x + this.y * vector.y + this.z * vector.z + this.w * vector.w; + }; + _proto.cross = function cross(vector) { + var ax = this.x, + ay = this.y, + az = this.z; + var bx = vector.x, + by = vector.y, + bz = vector.z; + this.x = ay * bz - az * by; + this.y = az * bx - ax * bz; + this.z = ax * by - ay * bx; + return this; + }; + _proto.length = function length() { + var x = this.x; + var y = this.y; + var z = this.z; + var w = this.w; + return Math.sqrt(x * x + y * y + z * z + w * w); + }; + _proto.lengthSqr = function lengthSqr() { + var x = this.x; + var y = this.y; + var z = this.z; + var w = this.w; + return x * x + y * y + z * z + w * w; + }; + _proto.normalize = function normalize() { + var x = this.x; + var y = this.y; + var z = this.z; + var w = this.w; + var len = x * x + y * y + z * z + w * w; + if (len > 0) { + len = 1 / Math.sqrt(len); + this.x = x * len; + this.y = y * len; + this.z = z * len; + this.w = w * len; + } + return this; + }; + _proto.scale = function scale(scalar) { + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + this.w *= scalar; + return this; + }; + _proto.transformMat4 = function transformMat4(matrix) { + var x = this.x; + var y = this.y; + var z = this.z; + var w = this.w; + this.x = matrix.m00 * x + matrix.m04 * y + matrix.m08 * z + matrix.m12 * w; + this.y = matrix.m01 * x + matrix.m05 * y + matrix.m09 * z + matrix.m13 * w; + this.z = matrix.m02 * x + matrix.m06 * y + matrix.m10 * z + matrix.m14 * w; + this.w = matrix.m03 * x + matrix.m07 * y + matrix.m11 * z + matrix.m15 * w; + return this; + }; + return Vec4; + }(ValueType)); + _class$2p = Vec4; + Vec4.ZERO = Object.freeze(new _class$2p(0, 0, 0, 0)); + Vec4.ONE = Object.freeze(new _class$2p(1, 1, 1, 1)); + Vec4.NEG_ONE = Object.freeze(new _class$2p(-1, -1, -1, -1)); + Vec4.UNIT_X = Object.freeze(new _class$2p(1, 0, 0, 0)); + Vec4.UNIT_Y = Object.freeze(new _class$2p(0, 1, 0, 0)); + Vec4.UNIT_Z = Object.freeze(new _class$2p(0, 0, 1, 0)); + Vec4.UNIT_W = Object.freeze(new _class$2p(0, 0, 0, 1)); + CCClass.fastDefine('cc.Vec4', Vec4, { + x: 0, + y: 0, + z: 0, + w: 0 + }); + legacyCC.Vec4 = Vec4; + function v4(x, y, z, w) { + return new Vec4(x, y, z, w); + } + legacyCC.v4 = v4; + + var _class$2o; + var Vec3 = exports('at', function (_ValueType) { + _inheritsLoose(Vec3, _ValueType); + Vec3.zero = function zero(out) { + out.x = 0; + out.y = 0; + out.z = 0; + return out; + }; + Vec3.clone = function clone(a) { + return new Vec3(a.x, a.y, a.z); + }; + Vec3.copy = function copy(out, a) { + out.x = a.x; + out.y = a.y; + out.z = a.z; + return out; + }; + Vec3.set = function set(out, x, y, z) { + out.x = x; + out.y = y; + out.z = z; + return out; + }; + Vec3.add = function add(out, a, b) { + out.x = a.x + b.x; + out.y = a.y + b.y; + out.z = a.z + b.z; + return out; + }; + Vec3.subtract = function subtract(out, a, b) { + out.x = a.x - b.x; + out.y = a.y - b.y; + out.z = a.z - b.z; + return out; + }; + Vec3.multiply = function multiply(out, a, b) { + out.x = a.x * b.x; + out.y = a.y * b.y; + out.z = a.z * b.z; + return out; + }; + Vec3.divide = function divide(out, a, b) { + out.x = a.x / b.x; + out.y = a.y / b.y; + out.z = a.z / b.z; + return out; + }; + Vec3.ceil = function ceil(out, a) { + out.x = Math.ceil(a.x); + out.y = Math.ceil(a.y); + out.z = Math.ceil(a.z); + return out; + }; + Vec3.floor = function floor(out, a) { + out.x = Math.floor(a.x); + out.y = Math.floor(a.y); + out.z = Math.floor(a.z); + return out; + }; + Vec3.min = function min(out, a, b) { + out.x = Math.min(a.x, b.x); + out.y = Math.min(a.y, b.y); + out.z = Math.min(a.z, b.z); + return out; + }; + Vec3.max = function max(out, a, b) { + out.x = Math.max(a.x, b.x); + out.y = Math.max(a.y, b.y); + out.z = Math.max(a.z, b.z); + return out; + }; + Vec3.round = function round(out, a) { + out.x = Math.round(a.x); + out.y = Math.round(a.y); + out.z = Math.round(a.z); + return out; + }; + Vec3.multiplyScalar = function multiplyScalar(out, a, b) { + out.x = a.x * b; + out.y = a.y * b; + out.z = a.z * b; + return out; + }; + Vec3.scaleAndAdd = function scaleAndAdd(out, a, b, scale) { + out.x = a.x + b.x * scale; + out.y = a.y + b.y * scale; + out.z = a.z + b.z * scale; + return out; + }; + Vec3.distance = function distance(a, b) { + var x = b.x - a.x; + var y = b.y - a.y; + var z = b.z - a.z; + return Math.sqrt(x * x + y * y + z * z); + }; + Vec3.squaredDistance = function squaredDistance(a, b) { + var x = b.x - a.x; + var y = b.y - a.y; + var z = b.z - a.z; + return x * x + y * y + z * z; + }; + Vec3.len = function len(a) { + var x = a.x; + var y = a.y; + var z = a.z; + return Math.sqrt(x * x + y * y + z * z); + }; + Vec3.lengthSqr = function lengthSqr(a) { + var x = a.x; + var y = a.y; + var z = a.z; + return x * x + y * y + z * z; + }; + Vec3.negate = function negate(out, a) { + out.x = -a.x; + out.y = -a.y; + out.z = -a.z; + return out; + }; + Vec3.invert = function invert(out, a) { + out.x = 1.0 / a.x; + out.y = 1.0 / a.y; + out.z = 1.0 / a.z; + return out; + }; + Vec3.invertSafe = function invertSafe(out, a) { + var x = a.x; + var y = a.y; + var z = a.z; + if (Math.abs(x) < EPSILON$3) { + out.x = 0; + } else { + out.x = 1.0 / x; + } + if (Math.abs(y) < EPSILON$3) { + out.y = 0; + } else { + out.y = 1.0 / y; + } + if (Math.abs(z) < EPSILON$3) { + out.z = 0; + } else { + out.z = 1.0 / z; + } + return out; + }; + Vec3.normalize = function normalize(out, a) { + var x = a.x; + var y = a.y; + var z = a.z; + var len = x * x + y * y + z * z; + if (len > 0) { + len = 1 / Math.sqrt(len); + out.x = x * len; + out.y = y * len; + out.z = z * len; + } else { + out.x = 0; + out.y = 0; + out.z = 0; + } + return out; + }; + Vec3.dot = function dot(a, b) { + return a.x * b.x + a.y * b.y + a.z * b.z; + }; + Vec3.cross = function cross(out, a, b) { + var ax = a.x, + ay = a.y, + az = a.z; + var bx = b.x, + by = b.y, + bz = b.z; + out.x = ay * bz - az * by; + out.y = az * bx - ax * bz; + out.z = ax * by - ay * bx; + return out; + }; + Vec3.lerp = function lerp(out, a, b, t) { + out.x = a.x + t * (b.x - a.x); + out.y = a.y + t * (b.y - a.y); + out.z = a.z + t * (b.z - a.z); + return out; + }; + Vec3.random = function random$1(out, scale) { + scale = scale || 1.0; + var phi = random() * 2.0 * Math.PI; + var cosTheta = random() * 2 - 1; + var sinTheta = Math.sqrt(1 - cosTheta * cosTheta); + out.x = sinTheta * Math.cos(phi) * scale; + out.y = sinTheta * Math.sin(phi) * scale; + out.z = cosTheta * scale; + return out; + }; + Vec3.transformMat4 = function transformMat4(out, a, m) { + var x = a.x; + var y = a.y; + var z = a.z; + var rhw = m.m03 * x + m.m07 * y + m.m11 * z + m.m15; + rhw = rhw ? 1 / rhw : 1; + out.x = (m.m00 * x + m.m04 * y + m.m08 * z + m.m12) * rhw; + out.y = (m.m01 * x + m.m05 * y + m.m09 * z + m.m13) * rhw; + out.z = (m.m02 * x + m.m06 * y + m.m10 * z + m.m14) * rhw; + return out; + }; + Vec3.transformMat4Normal = function transformMat4Normal(out, a, m) { + var x = a.x; + var y = a.y; + var z = a.z; + var rhw = m.m03 * x + m.m07 * y + m.m11 * z; + rhw = rhw ? 1 / rhw : 1; + out.x = (m.m00 * x + m.m04 * y + m.m08 * z) * rhw; + out.y = (m.m01 * x + m.m05 * y + m.m09 * z) * rhw; + out.z = (m.m02 * x + m.m06 * y + m.m10 * z) * rhw; + return out; + }; + Vec3.transformMat3 = function transformMat3(out, a, m) { + var x = a.x; + var y = a.y; + var z = a.z; + out.x = x * m.m00 + y * m.m03 + z * m.m06; + out.y = x * m.m01 + y * m.m04 + z * m.m07; + out.z = x * m.m02 + y * m.m05 + z * m.m08; + return out; + }; + Vec3.transformAffine = function transformAffine(out, v, m) { + var x = v.x; + var y = v.y; + var z = v.z; + out.x = m.m00 * x + m.m04 * y + m.m08 * z + m.m12; + out.y = m.m01 * x + m.m05 * y + m.m09 * z + m.m13; + out.z = m.m02 * x + m.m06 * y + m.m10 * z + m.m14; + return out; + }; + Vec3.transformQuat = function transformQuat(out, a, q) { + var ix = q.w * a.x + q.y * a.z - q.z * a.y; + var iy = q.w * a.y + q.z * a.x - q.x * a.z; + var iz = q.w * a.z + q.x * a.y - q.y * a.x; + var iw = -q.x * a.x - q.y * a.y - q.z * a.z; + out.x = ix * q.w + iw * -q.x + iy * -q.z - iz * -q.y; + out.y = iy * q.w + iw * -q.y + iz * -q.x - ix * -q.z; + out.z = iz * q.w + iw * -q.z + ix * -q.y - iy * -q.x; + return out; + }; + Vec3.transformRTS = function transformRTS(out, a, r, t, s) { + var x = a.x * s.x; + var y = a.y * s.y; + var z = a.z * s.z; + var ix = r.w * x + r.y * z - r.z * y; + var iy = r.w * y + r.z * x - r.x * z; + var iz = r.w * z + r.x * y - r.y * x; + var iw = -r.x * x - r.y * y - r.z * z; + out.x = ix * r.w + iw * -r.x + iy * -r.z - iz * -r.y + t.x; + out.y = iy * r.w + iw * -r.y + iz * -r.x - ix * -r.z + t.y; + out.z = iz * r.w + iw * -r.z + ix * -r.y - iy * -r.x + t.z; + return out; + }; + Vec3.transformInverseRTS = function transformInverseRTS(out, a, r, t, s) { + var x = a.x - t.x; + var y = a.y - t.y; + var z = a.z - t.z; + var ix = r.w * x - r.y * z + r.z * y; + var iy = r.w * y - r.z * x + r.x * z; + var iz = r.w * z - r.x * y + r.y * x; + var iw = r.x * x + r.y * y + r.z * z; + out.x = (ix * r.w + iw * r.x + iy * r.z - iz * r.y) / s.x; + out.y = (iy * r.w + iw * r.y + iz * r.x - ix * r.z) / s.y; + out.z = (iz * r.w + iw * r.z + ix * r.y - iy * r.x) / s.z; + return out; + }; + Vec3.rotateX = function rotateX(out, v, o, a) { + var x = v.x - o.x; + var y = v.y - o.y; + var z = v.z - o.z; + var cos = Math.cos(a); + var sin = Math.sin(a); + var rx = x; + var ry = y * cos - z * sin; + var rz = y * sin + z * cos; + out.x = rx + o.x; + out.y = ry + o.y; + out.z = rz + o.z; + return out; + }; + Vec3.rotateY = function rotateY(out, v, o, a) { + var x = v.x - o.x; + var y = v.y - o.y; + var z = v.z - o.z; + var cos = Math.cos(a); + var sin = Math.sin(a); + var rx = z * sin + x * cos; + var ry = y; + var rz = z * cos - x * sin; + out.x = rx + o.x; + out.y = ry + o.y; + out.z = rz + o.z; + return out; + }; + Vec3.rotateZ = function rotateZ(out, v, o, a) { + var x = v.x - o.x; + var y = v.y - o.y; + var z = v.z - o.z; + var cos = Math.cos(a); + var sin = Math.sin(a); + var rx = x * cos - y * sin; + var ry = x * sin + y * cos; + var rz = z; + out.x = rx + o.x; + out.y = ry + o.y; + out.z = rz + o.z; + return out; + }; + Vec3.rotateN = function rotateN(out, v, o, n, a) { + var x = v.x - o.x; + var y = v.y - o.y; + var z = v.z - o.z; + var nx = n.x; + var ny = n.y; + var nz = n.z; + var cos = Math.cos(a); + var sin = Math.sin(a); + var rx = x * (nx * nx * (1.0 - cos) + cos) + y * (nx * ny * (1.0 - cos) - nx * sin) + z * (nx * nz * (1.0 - cos) + ny * sin); + var ry = x * (nx * ny * (1.0 - cos) + nz * sin) + y * (ny * ny * (1.0 - cos) + cos) + z * (ny * nz * (1.0 - cos) - nx * sin); + var rz = x * (nx * nz * (1.0 - cos) - ny * sin) + y * (ny * nz * (1.0 - cos) + nx * sin) + z * (nz * nz * (1.0 - cos) + cos); + out.x = rx + o.x; + out.y = ry + o.y; + out.z = rz + o.z; + return out; + }; + Vec3.toArray = function toArray(out, v, ofs) { + if (ofs === void 0) { + ofs = 0; + } + out[ofs + 0] = v.x; + out[ofs + 1] = v.y; + out[ofs + 2] = v.z; + return out; + }; + Vec3.fromArray = function fromArray(out, arr, ofs) { + if (ofs === void 0) { + ofs = 0; + } + out.x = arr[ofs + 0]; + out.y = arr[ofs + 1]; + out.z = arr[ofs + 2]; + return out; + }; + Vec3.strictEquals = function strictEquals(a, b) { + return a.x === b.x && a.y === b.y && a.z === b.z; + }; + Vec3.equals = function equals(a, b, epsilon) { + if (epsilon === void 0) { + epsilon = EPSILON$3; + } + var a0 = a.x, + a1 = a.y, + a2 = a.z; + var b0 = b.x, + b1 = b.y, + b2 = b.z; + return Math.abs(a0 - b0) <= epsilon * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= epsilon * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= epsilon * Math.max(1.0, Math.abs(a2), Math.abs(b2)); + }; + Vec3.angle = function angle(a, b) { + var magSqr1 = a.x * a.x + a.y * a.y + a.z * a.z; + var magSqr2 = b.x * b.x + b.y * b.y + b.z * b.z; + if (magSqr1 === 0 || magSqr2 === 0) { + return 0.0; + } + var dot = a.x * b.x + a.y * b.y + a.z * b.z; + var cosine = dot / Math.sqrt(magSqr1 * magSqr2); + cosine = clamp$1(cosine, -1.0, 1.0); + return Math.acos(cosine); + }; + Vec3.projectOnPlane = function projectOnPlane(out, a, n) { + return Vec3.subtract(out, a, Vec3.project(out, a, n)); + }; + Vec3.project = function project(out, a, b) { + var sqrLen = Vec3.lengthSqr(b); + if (sqrLen < 0.000001) { + return Vec3.set(out, 0, 0, 0); + } else { + return Vec3.multiplyScalar(out, b, Vec3.dot(a, b) / sqrLen); + } + }; + Vec3.moveTowards = function moveTowards(out, current, target, maxStep) { + var deltaX = target.x - current.x; + var deltaY = target.y - current.y; + var deltaZ = target.z - current.z; + var distanceSqr = deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ; + if (distanceSqr === 0 || maxStep >= 0 && distanceSqr < maxStep * maxStep) { + out.x = target.x; + out.y = target.y; + out.z = target.z; + return out; + } + var distance = Math.sqrt(distanceSqr); + var scale = maxStep / distance; + out.x = current.x + deltaX * scale; + out.y = current.y + deltaY * scale; + out.z = current.z + deltaZ * scale; + return out; + }; + Vec3.generateOrthogonal = function generateOrthogonal(out, n) { + var x = n.x, + y = n.y, + z = n.z; + var absX = Math.abs(x); + var absY = Math.abs(y); + var absZ = Math.abs(z); + if (absX < absY && absX < absZ) { + Vec3.set(out, 0.0, z, -y); + } else if (absY < absZ) { + Vec3.set(out, z, 0.0, -x); + } else { + Vec3.set(out, y, -x, 0.0); + } + return Vec3.normalize(out, out); + }; + function Vec3(x, y, z) { + var _this; + _this = _ValueType.call(this) || this; + if (typeof x === 'object') { + _this.x = x.x; + _this.y = x.y; + _this.z = x.z; + } else { + _this.x = x || 0; + _this.y = y || 0; + _this.z = z || 0; + } + return _this; + } + var _proto = Vec3.prototype; + _proto.clone = function clone() { + return new Vec3(this.x, this.y, this.z); + }; + _proto.set = function set(x, y, z) { + if (typeof x === 'object') { + this.x = x.x; + this.y = x.y; + this.z = x.z; + } else { + this.x = x || 0; + this.y = y || 0; + this.z = z || 0; + } + return this; + }; + _proto.equals = function equals(other, epsilon) { + if (epsilon === void 0) { + epsilon = EPSILON$3; + } + return Math.abs(this.x - other.x) <= epsilon && Math.abs(this.y - other.y) <= epsilon && Math.abs(this.z - other.z) <= epsilon; + }; + _proto.equals3f = function equals3f(x, y, z, epsilon) { + if (epsilon === void 0) { + epsilon = EPSILON$3; + } + return Math.abs(this.x - x) <= epsilon && Math.abs(this.y - y) <= epsilon && Math.abs(this.z - z) <= epsilon; + }; + _proto.strictEquals = function strictEquals(other) { + return this.x === other.x && this.y === other.y && this.z === other.z; + }; + _proto.strictEquals3f = function strictEquals3f(x, y, z) { + return this.x === x && this.y === y && this.z === z; + }; + _proto.toString = function toString() { + return "(" + this.x.toFixed(2) + ", " + this.y.toFixed(2) + ", " + this.z.toFixed(2) + ")"; + }; + _proto.lerp = function lerp(to, ratio) { + this.x += ratio * (to.x - this.x); + this.y += ratio * (to.y - this.y); + this.z += ratio * (to.z - this.z); + return this; + }; + _proto.add = function add(other) { + this.x += other.x; + this.y += other.y; + this.z += other.z; + return this; + }; + _proto.add3f = function add3f(x, y, z) { + this.x += x; + this.y += y; + this.z += z; + return this; + }; + _proto.subtract = function subtract(other) { + this.x -= other.x; + this.y -= other.y; + this.z -= other.z; + return this; + }; + _proto.subtract3f = function subtract3f(x, y, z) { + this.x -= x; + this.y -= y; + this.z -= z; + return this; + }; + _proto.multiplyScalar = function multiplyScalar(scalar) { + if (typeof scalar === 'object') { + console.warn('should use Vec3.multiply for vector * vector operation'); + } + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + return this; + }; + _proto.multiply = function multiply(other) { + if (typeof other !== 'object') { + console.warn('should use Vec3.scale for vector * scalar operation'); + } + this.x *= other.x; + this.y *= other.y; + this.z *= other.z; + return this; + }; + _proto.multiply3f = function multiply3f(x, y, z) { + this.x *= x; + this.y *= y; + this.z *= z; + return this; + }; + _proto.divide = function divide(other) { + this.x /= other.x; + this.y /= other.y; + this.z /= other.z; + return this; + }; + _proto.divide3f = function divide3f(x, y, z) { + this.x /= x; + this.y /= y; + this.z /= z; + return this; + }; + _proto.negative = function negative() { + this.x = -this.x; + this.y = -this.y; + this.z = -this.z; + return this; + }; + _proto.clampf = function clampf(minInclusive, maxInclusive) { + this.x = clamp$1(this.x, minInclusive.x, maxInclusive.x); + this.y = clamp$1(this.y, minInclusive.y, maxInclusive.y); + this.z = clamp$1(this.z, minInclusive.z, maxInclusive.z); + return this; + }; + _proto.dot = function dot(other) { + return this.x * other.x + this.y * other.y + this.z * other.z; + }; + _proto.cross = function cross(other) { + var ax = this.x, + ay = this.y, + az = this.z; + var bx = other.x, + by = other.y, + bz = other.z; + this.x = ay * bz - az * by; + this.y = az * bx - ax * bz; + this.z = ax * by - ay * bx; + return this; + }; + _proto.length = function length() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + }; + _proto.lengthSqr = function lengthSqr() { + return this.x * this.x + this.y * this.y + this.z * this.z; + }; + _proto.normalize = function normalize() { + var x = this.x; + var y = this.y; + var z = this.z; + var len = x * x + y * y + z * z; + if (len > 0) { + len = 1 / Math.sqrt(len); + this.x = x * len; + this.y = y * len; + this.z = z * len; + } + return this; + }; + _proto.transformMat4 = function transformMat4(matrix) { + var x = this.x; + var y = this.y; + var z = this.z; + var rhw = matrix.m03 * x + matrix.m07 * y + matrix.m11 * z + matrix.m15; + rhw = rhw ? 1 / rhw : 1; + this.x = (matrix.m00 * x + matrix.m04 * y + matrix.m08 * z + matrix.m12) * rhw; + this.y = (matrix.m01 * x + matrix.m05 * y + matrix.m09 * z + matrix.m13) * rhw; + this.z = (matrix.m02 * x + matrix.m06 * y + matrix.m10 * z + matrix.m14) * rhw; + return this; + }; + return Vec3; + }(ValueType)); + _class$2o = Vec3; + Vec3.UNIT_X = Object.freeze(new _class$2o(1, 0, 0)); + Vec3.UNIT_Y = Object.freeze(new _class$2o(0, 1, 0)); + Vec3.UNIT_Z = Object.freeze(new _class$2o(0, 0, 1)); + Vec3.RIGHT = Object.freeze(new _class$2o(1, 0, 0)); + Vec3.UP = Object.freeze(new _class$2o(0, 1, 0)); + Vec3.FORWARD = Object.freeze(new _class$2o(0, 0, -1)); + Vec3.ZERO = Object.freeze(new _class$2o(0, 0, 0)); + Vec3.ONE = Object.freeze(new _class$2o(1, 1, 1)); + Vec3.NEG_ONE = Object.freeze(new _class$2o(-1, -1, -1)); + Vec3.slerp = function () { + var cacheV1 = new _class$2o(); + var cacheV2 = new _class$2o(); + var cacheV3 = new _class$2o(); + return function (out, from, to, t) { + var EPSILON = 1e-5; + var lenFrom = _class$2o.len(from); + var lenTo = _class$2o.len(to); + if (lenFrom < EPSILON || lenTo < EPSILON) { + return _class$2o.lerp(out, from, to, t); + } + var lenLerped = lerp(lenFrom, lenTo, t); + var dot = _class$2o.dot(from, to) / (lenFrom * lenTo); + if (dot > 1.0 - EPSILON) { + return _class$2o.lerp(out, from, to, t); + } else if (dot < -1.0 + EPSILON) { + var fromNormalized = _class$2o.multiplyScalar(cacheV1, from, 1.0 / lenFrom); + var _axis = _class$2o.generateOrthogonal(cacheV2, fromNormalized); + var _angle = Math.PI * t; + rotateAxisAngle(cacheV3, fromNormalized, _axis, _angle); + _class$2o.multiplyScalar(out, cacheV3, lenLerped); + return out; + } else { + var dotClamped = dot; + var theta = Math.acos(dotClamped) * t; + var _fromNormalized = _class$2o.multiplyScalar(cacheV1, from, 1.0 / lenFrom); + var toNormalized = _class$2o.multiplyScalar(cacheV2, to, 1.0 / lenTo); + _class$2o.scaleAndAdd(cacheV3, toNormalized, _fromNormalized, -dotClamped); + _class$2o.normalize(cacheV3, cacheV3); + _class$2o.multiplyScalar(cacheV3, cacheV3, Math.sin(theta)); + _class$2o.scaleAndAdd(cacheV3, cacheV3, _fromNormalized, Math.cos(theta)); + _class$2o.multiplyScalar(out, cacheV3, lenLerped); + return out; + } + }; + }(); + CCClass.fastDefine('cc.Vec3', Vec3, { + x: 0, + y: 0, + z: 0 + }); + legacyCC.Vec3 = Vec3; + function v3(x, y, z) { + return new Vec3(x, y, z); + } + var rotateAxisAngle = function () { + var cacheQ = { + x: 0.0, + y: 0.0, + z: 0.0, + w: 0.0 + }; + return function (out, input, axis, angle) { + var rad = angle * 0.5; + var s = Math.sin(rad); + cacheQ.x = s * axis.x; + cacheQ.y = s * axis.y; + cacheQ.z = s * axis.z; + cacheQ.w = Math.cos(rad); + Vec3.transformQuat(out, input, cacheQ); + return out; + }; + }(); + legacyCC.v3 = v3; + + var _class$2n; + var toFloat = 1 / 255; + var Color$1 = exports('aH', function (_ValueType) { + _inheritsLoose(Color, _ValueType); + Color.clone = function clone(a) { + var out = new Color(); + if (a._val) { + out._val = a._val; + } else { + out._val = (a.a << 24 >>> 0) + (a.b << 16) + (a.g << 8) + a.r; + } + return out; + }; + Color.copy = function copy(out, a) { + out.r = a.r; + out.g = a.g; + out.b = a.b; + out.a = a.a; + return out; + }; + Color.set = function set(out, r, g, b, a) { + out.r = r; + out.g = g; + out.b = b; + out.a = a; + return out; + }; + Color.toVec4 = function toVec4(color, out) { + out = out !== undefined ? out : new Vec4(); + out.x = color.r * toFloat; + out.y = color.g * toFloat; + out.z = color.b * toFloat; + out.w = color.a * toFloat; + return out; + }; + Color.fromVec4 = function fromVec4(value, out) { + out = out === undefined ? new Color() : out; + out.r = Math.floor(value.x / toFloat); + out.g = Math.floor(value.y / toFloat); + out.b = Math.floor(value.z / toFloat); + out.a = Math.floor(value.w / toFloat); + return out; + }; + Color.fromHEX = function fromHEX(out, hexString) { + hexString = hexString.indexOf('#') === 0 ? hexString.substring(1) : hexString; + out.r = parseInt(hexString.substr(0, 2), 16) || 0; + out.g = parseInt(hexString.substr(2, 2), 16) || 0; + out.b = parseInt(hexString.substr(4, 2), 16) || 0; + var a = parseInt(hexString.substr(6, 2), 16); + out.a = !Number.isNaN(a) ? a : 255; + out._val = (out.a << 24 >>> 0) + (out.b << 16) + (out.g << 8) + out.r; + return out; + }; + Color.add = function add(out, a, b) { + out.r = a.r + b.r; + out.g = a.g + b.g; + out.b = a.b + b.b; + out.a = a.a + b.a; + return out; + }; + Color.subtract = function subtract(out, a, b) { + out.r = a.r - b.r; + out.g = a.g - b.g; + out.b = a.b - b.b; + out.a = a.a - b.a; + return out; + }; + Color.multiply = function multiply(out, a, b) { + out.r = a.r * b.r; + out.g = a.g * b.g; + out.b = a.b * b.b; + out.a = a.a * b.a; + return out; + }; + Color.divide = function divide(out, a, b) { + out.r = a.r / b.r; + out.g = a.g / b.g; + out.b = a.b / b.b; + out.a = a.a / b.a; + return out; + }; + Color.scale = function scale(out, a, b) { + out.r = a.r * b; + out.g = a.g * b; + out.b = a.b * b; + out.a = a.a * b; + return out; + }; + Color.lerp = function lerp(out, from, to, ratio) { + var r = from.r; + var g = from.g; + var b = from.b; + var a = from.a; + r += (to.r - r) * ratio; + g += (to.g - g) * ratio; + b += (to.b - b) * ratio; + a += (to.a - a) * ratio; + out._val = Math.floor((a << 24 >>> 0) + (b << 16) + (g << 8) + r); + return out; + }; + Color.toArray = function toArray(out, a, ofs) { + if (ofs === void 0) { + ofs = 0; + } + var scale = a instanceof Color || a.a > 1 ? 1 / 255 : 1; + out[ofs + 0] = a.r * scale; + out[ofs + 1] = a.g * scale; + out[ofs + 2] = a.b * scale; + out[ofs + 3] = a.a * scale; + return out; + }; + Color.fromArray = function fromArray(arr, out, ofs) { + if (ofs === void 0) { + ofs = 0; + } + out.r = arr[ofs + 0] * 255; + out.g = arr[ofs + 1] * 255; + out.b = arr[ofs + 2] * 255; + out.a = arr[ofs + 3] * 255; + return out; + }; + Color.fromUint32 = function fromUint32(out, uint32) { + out._val = uint32; + return out; + }; + Color.toUint32 = function toUint32(color) { + return color._val; + }; + Color.strictEquals = function strictEquals(a, b) { + return a.r === b.r && a.g === b.g && a.b === b.b && a.a === b.a; + }; + Color.equals = function equals(a, b, epsilon) { + if (epsilon === void 0) { + epsilon = EPSILON$3; + } + var hasInf = Math.abs(a.r) === Infinity || Math.abs(a.g) === Infinity || Math.abs(a.b) === Infinity || Math.abs(a.a) === Infinity; + return !hasInf && Math.abs(a.r - b.r) <= epsilon * Math.max(1.0, Math.abs(a.r), Math.abs(b.r)) && Math.abs(a.g - b.g) <= epsilon * Math.max(1.0, Math.abs(a.g), Math.abs(b.g)) && Math.abs(a.b - b.b) <= epsilon * Math.max(1.0, Math.abs(a.b), Math.abs(b.b)) && Math.abs(a.a - b.a) <= epsilon * Math.max(1.0, Math.abs(a.a), Math.abs(b.a)); + }; + Color.hex = function hex(a) { + return (a.r * 255 << 24 | a.g * 255 << 16 | a.b * 255 << 8 | a.a * 255) >>> 0; + }; + function Color(r, g, b, a) { + var _this; + _this = _ValueType.call(this) || this; + _this._val = 0; + if (typeof r === 'string') { + _this.fromHEX(r); + } else if (g !== undefined) { + _this.set(r, g, b, a); + } else { + _this.set(r); + } + return _this; + } + var _proto = Color.prototype; + _proto.clone = function clone() { + var ret = new Color(); + ret._val = this._val; + return ret; + }; + _proto.equals = function equals(other) { + return other && this._val === other._val; + }; + _proto.lerp = function lerp(to, ratio) { + var r = this.r; + var g = this.g; + var b = this.b; + var a = this.a; + r += (to.r - r) * ratio; + g += (to.g - g) * ratio; + b += (to.b - b) * ratio; + a += (to.a - a) * ratio; + this._val = Math.floor((a << 24 >>> 0) + (b << 16) + (g << 8) + r); + return this; + }; + _proto.toString = function toString() { + return "rgba(" + this.r.toFixed() + ", " + this.g.toFixed() + ", " + this.b.toFixed() + ", " + this.a.toFixed() + ")"; + }; + _proto.toCSS = function toCSS(opt) { + if (opt === void 0) { + opt = 'rgba'; + } + if (opt === 'rgba') { + return "rgba(" + this.r + "," + this.g + "," + this.b + "," + (this.a * toFloat).toFixed(2) + ")"; + } else if (opt === 'rgb') { + return "rgb(" + this.r + "," + this.g + "," + this.b + ")"; + } else { + return "#" + this.toHEX(opt); + } + }; + _proto.fromHEX = function fromHEX(hexString) { + hexString = hexString.indexOf('#') === 0 ? hexString.substring(1) : hexString; + var r = parseInt(hexString.substr(0, 2), 16) || 0; + var g = parseInt(hexString.substr(2, 2), 16) || 0; + var b = parseInt(hexString.substr(4, 2), 16) || 0; + var a = parseInt(hexString.substr(6, 2), 16); + a = !Number.isNaN(a) ? a : 255; + this._val = (a << 24 >>> 0) + (b << 16) + (g << 8) + (r | 0); + return this; + }; + _proto.toHEX = function toHEX(fmt) { + if (fmt === void 0) { + fmt = '#rrggbb'; + } + var prefix = '0'; + var hex = [(this.r < 16 ? prefix : '') + this.r.toString(16), (this.g < 16 ? prefix : '') + this.g.toString(16), (this.b < 16 ? prefix : '') + this.b.toString(16)]; + if (fmt === '#rgb') { + hex[0] = hex[0][0]; + hex[1] = hex[1][0]; + hex[2] = hex[2][0]; + } else if (fmt === '#rrggbbaa') { + hex.push((this.a < 16 ? prefix : '') + this.a.toString(16)); + } + return hex.join(''); + }; + _proto.toRGBValue = function toRGBValue() { + return this._val & 0x00ffffff; + }; + _proto.fromHSV = function fromHSV(h, s, v) { + var r = 0; + var g = 0; + var b = 0; + if (s === 0) { + r = g = b = v; + } else if (v === 0) { + r = g = b = 0; + } else { + if (h === 1) { + h = 0; + } + h *= 6; + var i = Math.floor(h); + var f = h - i; + var p = v * (1 - s); + var q = v * (1 - s * f); + var t = v * (1 - s * (1 - f)); + switch (i) { + default: + assertIsTrue(false); + case 0: + r = v; + g = t; + b = p; + break; + case 1: + r = q; + g = v; + b = p; + break; + case 2: + r = p; + g = v; + b = t; + break; + case 3: + r = p; + g = q; + b = v; + break; + case 4: + r = t; + g = p; + b = v; + break; + case 5: + r = v; + g = p; + b = q; + break; + } + } + r *= 255; + g *= 255; + b *= 255; + this._val = (this.a << 24 >>> 0) + (b << 16) + (g << 8) + (r | 0); + return this; + }; + _proto.toHSV = function toHSV() { + var r = this.r * toFloat; + var g = this.g * toFloat; + var b = this.b * toFloat; + var hsv = { + h: 0, + s: 0, + v: 0 + }; + var max = Math.max(r, g, b); + var min = Math.min(r, g, b); + var delta = 0; + hsv.v = max; + hsv.s = max ? (max - min) / max : 0; + if (!hsv.s) { + hsv.h = 0; + } else { + delta = max - min; + if (r === max) { + hsv.h = (g - b) / delta; + } else if (g === max) { + hsv.h = 2 + (b - r) / delta; + } else { + hsv.h = 4 + (r - g) / delta; + } + hsv.h /= 6; + if (hsv.h < 0) { + hsv.h += 1.0; + } + } + return hsv; + }; + _proto.set = function set(r, g, b, a) { + if (typeof r === 'object') { + if (r._val != null) { + this._val = r._val; + } else { + g = r.g || 0; + b = r.b || 0; + a = typeof r.a === 'number' ? r.a : 255; + r = r.r || 0; + this._val = (a << 24 >>> 0) + (b << 16) + (g << 8) + (r | 0); + } + } else { + r = r || 0; + g = g || 0; + b = b || 0; + a = typeof a === 'number' ? a : 255; + this._val = (a << 24 >>> 0) + (b << 16) + (g << 8) + (r | 0); + } + return this; + }; + _proto.multiply = function multiply(other) { + var r = (this._val & 0x000000ff) * other.r >> 8; + var g = (this._val & 0x0000ff00) * other.g >> 8; + var b = (this._val & 0x00ff0000) * other.b >> 8; + var a = ((this._val & 0xff000000) >>> 8) * other.a; + this._val = a & 0xff000000 | b & 0x00ff0000 | g & 0x0000ff00 | r & 0x000000ff; + return this; + }; + _proto._set_r_unsafe = function _set_r_unsafe(red) { + this._val = (this._val & 0xffffff00 | red) >>> 0; + return this; + }; + _proto._set_g_unsafe = function _set_g_unsafe(green) { + this._val = (this._val & 0xffff00ff | green << 8) >>> 0; + return this; + }; + _proto._set_b_unsafe = function _set_b_unsafe(blue) { + this._val = (this._val & 0xff00ffff | blue << 16) >>> 0; + return this; + }; + _proto._set_a_unsafe = function _set_a_unsafe(alpha) { + this._val = (this._val & 0x00ffffff | alpha << 24) >>> 0; + return this; + }; + _createClass(Color, [{ + key: "r", + get: function get() { + return this._val & 0x000000ff; + }, + set: function set(red) { + red = ~~clamp$1(red, 0, 255); + this._val = (this._val & 0xffffff00 | red) >>> 0; + } + }, { + key: "g", + get: function get() { + return (this._val & 0x0000ff00) >> 8; + }, + set: function set(green) { + green = ~~clamp$1(green, 0, 255); + this._val = (this._val & 0xffff00ff | green << 8) >>> 0; + } + }, { + key: "b", + get: function get() { + return (this._val & 0x00ff0000) >> 16; + }, + set: function set(blue) { + blue = ~~clamp$1(blue, 0, 255); + this._val = (this._val & 0xff00ffff | blue << 16) >>> 0; + } + }, { + key: "a", + get: function get() { + return (this._val & 0xff000000) >>> 24; + }, + set: function set(alpha) { + alpha = ~~clamp$1(alpha, 0, 255); + this._val = (this._val & 0x00ffffff | alpha << 24) >>> 0; + } + }, { + key: "x", + get: function get() { + return this.r * toFloat; + }, + set: function set(value) { + this.r = value * 255; + } + }, { + key: "y", + get: function get() { + return this.g * toFloat; + }, + set: function set(value) { + this.g = value * 255; + } + }, { + key: "z", + get: function get() { + return this.b * toFloat; + }, + set: function set(value) { + this.b = value * 255; + } + }, { + key: "w", + get: function get() { + return this.a * toFloat; + }, + set: function set(value) { + this.a = value * 255; + } + }]); + return Color; + }(ValueType)); + _class$2n = Color$1; + Color$1.WHITE = Object.freeze(new _class$2n(255, 255, 255, 255)); + Color$1.GRAY = Object.freeze(new _class$2n(127, 127, 127, 255)); + Color$1.BLACK = Object.freeze(new _class$2n(0, 0, 0, 255)); + Color$1.TRANSPARENT = Object.freeze(new _class$2n(0, 0, 0, 0)); + Color$1.RED = Object.freeze(new _class$2n(255, 0, 0, 255)); + Color$1.GREEN = Object.freeze(new _class$2n(0, 255, 0, 255)); + Color$1.BLUE = Object.freeze(new _class$2n(0, 0, 255, 255)); + Color$1.CYAN = Object.freeze(new _class$2n(0, 255, 255, 255)); + Color$1.MAGENTA = Object.freeze(new _class$2n(255, 0, 255, 255)); + Color$1.YELLOW = Object.freeze(new _class$2n(255, 255, 0, 255)); + CCClass.fastDefine('cc.Color', Color$1, { + r: 0, + g: 0, + b: 0, + a: 255 + }); + legacyCC.Color = Color$1; + function color(r, g, b, a) { + return new Color$1(r, g, b, a); + } + legacyCC.color = color; + function clampVec3(val, min, max) { + if (min > max) { + var temp = min; + min = max; + max = temp; + } + return val < min ? min : val > max ? max : val; + } + function floorVec3(val) { + var temp = val.clone(); + temp.x = Math.floor(val.x); + temp.y = Math.floor(val.y); + temp.z = Math.floor(val.z); + return temp; + } + function stepVec3(a, b) { + if (a < b) { + return b; + } else { + return a; + } + } + function packRGBE(rgb) { + var maxComp = Math.max(Math.max(rgb.x, rgb.y), rgb.z); + var e = 128.0; + if (maxComp > 0.0001) { + e = Math.log(maxComp) / Math.log(1.1); + e = Math.ceil(e); + e = clamp$1(e + 128.0, 0.0, 255.0); + } + var sc = 1.0 / Math.pow(1.1, e - 128.0); + var encode = clampVec3(rgb.multiplyScalar(sc), new Vec3(0.0, 0.0, 0.0), new Vec3(1.0, 1.0, 1.0)); + encode.multiplyScalar(255.0); + var encode_rounded = floorVec3(encode).add(stepVec3(encode.subtract(floorVec3(encode)), new Vec3(0.5, 0.5, 0.5))); + return new Vec4(encode_rounded.x / 255.0, encode_rounded.y / 255.0, encode_rounded.z / 255.0, e / 255.0); + } + + var _class$2m; + var Mat3 = exports('az', function (_ValueType) { + _inheritsLoose(Mat3, _ValueType); + Mat3.clone = function clone(a) { + return new Mat3(a.m00, a.m01, a.m02, a.m03, a.m04, a.m05, a.m06, a.m07, a.m08); + }; + Mat3.copy = function copy(out, a) { + out.m00 = a.m00; + out.m01 = a.m01; + out.m02 = a.m02; + out.m03 = a.m03; + out.m04 = a.m04; + out.m05 = a.m05; + out.m06 = a.m06; + out.m07 = a.m07; + out.m08 = a.m08; + return out; + }; + Mat3.set = function set(out, m00, m01, m02, m03, m04, m05, m06, m07, m08) { + out.m00 = m00; + out.m01 = m01; + out.m02 = m02; + out.m03 = m03; + out.m04 = m04; + out.m05 = m05; + out.m06 = m06; + out.m07 = m07; + out.m08 = m08; + return out; + }; + Mat3.identity = function identity(out) { + out.m00 = 1; + out.m01 = 0; + out.m02 = 0; + out.m03 = 0; + out.m04 = 1; + out.m05 = 0; + out.m06 = 0; + out.m07 = 0; + out.m08 = 1; + return out; + }; + Mat3.transpose = function transpose(out, a) { + if (out === a) { + var a01 = a.m01; + var a02 = a.m02; + var a12 = a.m05; + out.m01 = a.m03; + out.m02 = a.m06; + out.m03 = a01; + out.m05 = a.m07; + out.m06 = a02; + out.m07 = a12; + } else { + out.m00 = a.m00; + out.m01 = a.m03; + out.m02 = a.m06; + out.m03 = a.m01; + out.m04 = a.m04; + out.m05 = a.m07; + out.m06 = a.m02; + out.m07 = a.m05; + out.m08 = a.m08; + } + return out; + }; + Mat3.invert = function invert(out, a) { + var a00 = a.m00; + var a01 = a.m01; + var a02 = a.m02; + var a10 = a.m03; + var a11 = a.m04; + var a12 = a.m05; + var a20 = a.m06; + var a21 = a.m07; + var a22 = a.m08; + var b01 = a22 * a11 - a12 * a21; + var b11 = -a22 * a10 + a12 * a20; + var b21 = a21 * a10 - a11 * a20; + var det = a00 * b01 + a01 * b11 + a02 * b21; + if (det === 0) { + out.m00 = 0; + out.m01 = 0; + out.m02 = 0; + out.m03 = 0; + out.m04 = 0; + out.m05 = 0; + out.m06 = 0; + out.m07 = 0; + out.m08 = 0; + return out; + } + det = 1.0 / det; + out.m00 = b01 * det; + out.m01 = (-a22 * a01 + a02 * a21) * det; + out.m02 = (a12 * a01 - a02 * a11) * det; + out.m03 = b11 * det; + out.m04 = (a22 * a00 - a02 * a20) * det; + out.m05 = (-a12 * a00 + a02 * a10) * det; + out.m06 = b21 * det; + out.m07 = (-a21 * a00 + a01 * a20) * det; + out.m08 = (a11 * a00 - a01 * a10) * det; + return out; + }; + Mat3.determinant = function determinant(a) { + var a00 = a.m00; + var a01 = a.m01; + var a02 = a.m02; + var a10 = a.m03; + var a11 = a.m04; + var a12 = a.m05; + var a20 = a.m06; + var a21 = a.m07; + var a22 = a.m08; + return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20); + }; + Mat3.multiply = function multiply(out, a, b) { + var a00 = a.m00; + var a01 = a.m01; + var a02 = a.m02; + var a10 = a.m03; + var a11 = a.m04; + var a12 = a.m05; + var a20 = a.m06; + var a21 = a.m07; + var a22 = a.m08; + var b00 = b.m00; + var b01 = b.m01; + var b02 = b.m02; + var b10 = b.m03; + var b11 = b.m04; + var b12 = b.m05; + var b20 = b.m06; + var b21 = b.m07; + var b22 = b.m08; + out.m00 = b00 * a00 + b01 * a10 + b02 * a20; + out.m01 = b00 * a01 + b01 * a11 + b02 * a21; + out.m02 = b00 * a02 + b01 * a12 + b02 * a22; + out.m03 = b10 * a00 + b11 * a10 + b12 * a20; + out.m04 = b10 * a01 + b11 * a11 + b12 * a21; + out.m05 = b10 * a02 + b11 * a12 + b12 * a22; + out.m06 = b20 * a00 + b21 * a10 + b22 * a20; + out.m07 = b20 * a01 + b21 * a11 + b22 * a21; + out.m08 = b20 * a02 + b21 * a12 + b22 * a22; + return out; + }; + Mat3.multiplyMat4 = function multiplyMat4(out, a, b) { + var a00 = a.m00; + var a01 = a.m01; + var a02 = a.m02; + var a10 = a.m03; + var a11 = a.m04; + var a12 = a.m05; + var a20 = a.m06; + var a21 = a.m07; + var a22 = a.m08; + var b00 = b.m00; + var b01 = b.m01; + var b02 = b.m02; + var b10 = b.m04; + var b11 = b.m05; + var b12 = b.m06; + var b20 = b.m08; + var b21 = b.m09; + var b22 = b.m10; + out.m00 = b00 * a00 + b01 * a10 + b02 * a20; + out.m01 = b00 * a01 + b01 * a11 + b02 * a21; + out.m02 = b00 * a02 + b01 * a12 + b02 * a22; + out.m03 = b10 * a00 + b11 * a10 + b12 * a20; + out.m04 = b10 * a01 + b11 * a11 + b12 * a21; + out.m05 = b10 * a02 + b11 * a12 + b12 * a22; + out.m06 = b20 * a00 + b21 * a10 + b22 * a20; + out.m07 = b20 * a01 + b21 * a11 + b22 * a21; + out.m08 = b20 * a02 + b21 * a12 + b22 * a22; + return out; + }; + Mat3.transform = function transform(out, a, v) { + this.translate(out, a, v); + }; + Mat3.translate = function translate(out, a, v) { + var a00 = a.m00; + var a01 = a.m01; + var a02 = a.m02; + var a10 = a.m03; + var a11 = a.m04; + var a12 = a.m05; + var a20 = a.m06; + var a21 = a.m07; + var a22 = a.m08; + var x = v.x; + var y = v.y; + out.m00 = a00; + out.m01 = a01; + out.m02 = a02; + out.m03 = a10; + out.m04 = a11; + out.m05 = a12; + out.m06 = x * a00 + y * a10 + a20; + out.m07 = x * a01 + y * a11 + a21; + out.m08 = x * a02 + y * a12 + a22; + return out; + }; + Mat3.scale = function scale(out, a, v) { + var x = v.x; + var y = v.y; + out.m00 = x * a.m00; + out.m01 = x * a.m01; + out.m02 = x * a.m02; + out.m03 = y * a.m03; + out.m04 = y * a.m04; + out.m05 = y * a.m05; + out.m06 = a.m06; + out.m07 = a.m07; + out.m08 = a.m08; + return out; + }; + Mat3.rotate = function rotate(out, a, rad) { + var a00 = a.m00; + var a01 = a.m01; + var a02 = a.m02; + var a10 = a.m03; + var a11 = a.m04; + var a12 = a.m05; + var a20 = a.m06; + var a21 = a.m07; + var a22 = a.m08; + var s = Math.sin(rad); + var c = Math.cos(rad); + out.m00 = c * a00 + s * a10; + out.m01 = c * a01 + s * a11; + out.m02 = c * a02 + s * a12; + out.m03 = c * a10 - s * a00; + out.m04 = c * a11 - s * a01; + out.m05 = c * a12 - s * a02; + out.m06 = a20; + out.m07 = a21; + out.m08 = a22; + return out; + }; + Mat3.fromMat4 = function fromMat4(out, a) { + out.m00 = a.m00; + out.m01 = a.m01; + out.m02 = a.m02; + out.m03 = a.m04; + out.m04 = a.m05; + out.m05 = a.m06; + out.m06 = a.m08; + out.m07 = a.m09; + out.m08 = a.m10; + return out; + }; + Mat3.fromViewUp = function fromViewUp(out, view, up) { + if (Vec3.lengthSqr(view) < EPSILON$3 * EPSILON$3) { + Mat3.identity(out); + return out; + } + up = up || Vec3.UNIT_Y; + Vec3.normalize(v3_1$4, Vec3.cross(v3_1$4, up, view)); + if (Vec3.lengthSqr(v3_1$4) < EPSILON$3 * EPSILON$3) { + Mat3.identity(out); + return out; + } + Vec3.cross(v3_2$1, view, v3_1$4); + Mat3.set(out, v3_1$4.x, v3_1$4.y, v3_1$4.z, v3_2$1.x, v3_2$1.y, v3_2$1.z, view.x, view.y, view.z); + return out; + }; + Mat3.fromTranslation = function fromTranslation(out, v) { + out.m00 = 1; + out.m01 = 0; + out.m02 = 0; + out.m03 = 0; + out.m04 = 1; + out.m05 = 0; + out.m06 = v.x; + out.m07 = v.y; + out.m08 = 1; + return out; + }; + Mat3.fromScaling = function fromScaling(out, v) { + out.m00 = v.x; + out.m01 = 0; + out.m02 = 0; + out.m03 = 0; + out.m04 = v.y; + out.m05 = 0; + out.m06 = 0; + out.m07 = 0; + out.m08 = 1; + return out; + }; + Mat3.fromRotation = function fromRotation(out, rad) { + var s = Math.sin(rad); + var c = Math.cos(rad); + out.m00 = c; + out.m01 = s; + out.m02 = 0; + out.m03 = -s; + out.m04 = c; + out.m05 = 0; + out.m06 = 0; + out.m07 = 0; + out.m08 = 1; + return out; + }; + Mat3.fromQuat = function fromQuat(out, q) { + var x = q.x; + var y = q.y; + var z = q.z; + var w = q.w; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var yx = y * x2; + var yy = y * y2; + var zx = z * x2; + var zy = z * y2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + out.m00 = 1 - yy - zz; + out.m03 = yx - wz; + out.m06 = zx + wy; + out.m01 = yx + wz; + out.m04 = 1 - xx - zz; + out.m07 = zy - wx; + out.m02 = zx - wy; + out.m05 = zy + wx; + out.m08 = 1 - xx - yy; + return out; + }; + Mat3.inverseTransposeMat4 = function inverseTransposeMat4(out, a) { + var a00 = a.m00; + var a01 = a.m01; + var a02 = a.m02; + var a03 = a.m03; + var a10 = a.m04; + var a11 = a.m05; + var a12 = a.m06; + var a13 = a.m07; + var a20 = a.m08; + var a21 = a.m09; + var a22 = a.m10; + var a23 = a.m11; + var a30 = a.m12; + var a31 = a.m13; + var a32 = a.m14; + var a33 = a.m15; + var b00 = a00 * a11 - a01 * a10; + var b01 = a00 * a12 - a02 * a10; + var b02 = a00 * a13 - a03 * a10; + var b03 = a01 * a12 - a02 * a11; + var b04 = a01 * a13 - a03 * a11; + var b05 = a02 * a13 - a03 * a12; + var b06 = a20 * a31 - a21 * a30; + var b07 = a20 * a32 - a22 * a30; + var b08 = a20 * a33 - a23 * a30; + var b09 = a21 * a32 - a22 * a31; + var b10 = a21 * a33 - a23 * a31; + var b11 = a22 * a33 - a23 * a32; + var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + if (!det) { + return null; + } + det = 1.0 / det; + out.m00 = (a11 * b11 - a12 * b10 + a13 * b09) * det; + out.m01 = (a12 * b08 - a10 * b11 - a13 * b07) * det; + out.m02 = (a10 * b10 - a11 * b08 + a13 * b06) * det; + out.m03 = (a02 * b10 - a01 * b11 - a03 * b09) * det; + out.m04 = (a00 * b11 - a02 * b08 + a03 * b07) * det; + out.m05 = (a01 * b08 - a00 * b10 - a03 * b06) * det; + out.m06 = (a31 * b05 - a32 * b04 + a33 * b03) * det; + out.m07 = (a32 * b02 - a30 * b05 - a33 * b01) * det; + out.m08 = (a30 * b04 - a31 * b02 + a33 * b00) * det; + return out; + }; + Mat3.toArray = function toArray(out, m, ofs) { + if (ofs === void 0) { + ofs = 0; + } + out[ofs + 0] = m.m00; + out[ofs + 1] = m.m01; + out[ofs + 2] = m.m02; + out[ofs + 3] = m.m03; + out[ofs + 4] = m.m04; + out[ofs + 5] = m.m05; + out[ofs + 6] = m.m06; + out[ofs + 7] = m.m07; + out[ofs + 8] = m.m08; + return out; + }; + Mat3.fromArray = function fromArray(out, arr, ofs) { + if (ofs === void 0) { + ofs = 0; + } + out.m00 = arr[ofs + 0]; + out.m01 = arr[ofs + 1]; + out.m02 = arr[ofs + 2]; + out.m03 = arr[ofs + 3]; + out.m04 = arr[ofs + 4]; + out.m05 = arr[ofs + 5]; + out.m06 = arr[ofs + 6]; + out.m07 = arr[ofs + 7]; + out.m08 = arr[ofs + 8]; + return out; + }; + Mat3.add = function add(out, a, b) { + out.m00 = a.m00 + b.m00; + out.m01 = a.m01 + b.m01; + out.m02 = a.m02 + b.m02; + out.m03 = a.m03 + b.m03; + out.m04 = a.m04 + b.m04; + out.m05 = a.m05 + b.m05; + out.m06 = a.m06 + b.m06; + out.m07 = a.m07 + b.m07; + out.m08 = a.m08 + b.m08; + return out; + }; + Mat3.subtract = function subtract(out, a, b) { + out.m00 = a.m00 - b.m00; + out.m01 = a.m01 - b.m01; + out.m02 = a.m02 - b.m02; + out.m03 = a.m03 - b.m03; + out.m04 = a.m04 - b.m04; + out.m05 = a.m05 - b.m05; + out.m06 = a.m06 - b.m06; + out.m07 = a.m07 - b.m07; + out.m08 = a.m08 - b.m08; + return out; + }; + Mat3.multiplyScalar = function multiplyScalar(out, a, b) { + out.m00 = a.m00 * b; + out.m01 = a.m01 * b; + out.m02 = a.m02 * b; + out.m03 = a.m03 * b; + out.m04 = a.m04 * b; + out.m05 = a.m05 * b; + out.m06 = a.m06 * b; + out.m07 = a.m07 * b; + out.m08 = a.m08 * b; + return out; + }; + Mat3.multiplyScalarAndAdd = function multiplyScalarAndAdd(out, a, b, scale) { + out.m00 = b.m00 * scale + a.m00; + out.m01 = b.m01 * scale + a.m01; + out.m02 = b.m02 * scale + a.m02; + out.m03 = b.m03 * scale + a.m03; + out.m04 = b.m04 * scale + a.m04; + out.m05 = b.m05 * scale + a.m05; + out.m06 = b.m06 * scale + a.m06; + out.m07 = b.m07 * scale + a.m07; + out.m08 = b.m08 * scale + a.m08; + return out; + }; + Mat3.strictEquals = function strictEquals(a, b) { + return a.m00 === b.m00 && a.m01 === b.m01 && a.m02 === b.m02 && a.m03 === b.m03 && a.m04 === b.m04 && a.m05 === b.m05 && a.m06 === b.m06 && a.m07 === b.m07 && a.m08 === b.m08; + }; + Mat3.equals = function equals(a, b, epsilon) { + if (epsilon === void 0) { + epsilon = EPSILON$3; + } + return Math.abs(a.m00 - b.m00) <= epsilon * Math.max(1.0, Math.abs(a.m00), Math.abs(b.m00)) && Math.abs(a.m01 - b.m01) <= epsilon * Math.max(1.0, Math.abs(a.m01), Math.abs(b.m01)) && Math.abs(a.m02 - b.m02) <= epsilon * Math.max(1.0, Math.abs(a.m02), Math.abs(b.m02)) && Math.abs(a.m03 - b.m03) <= epsilon * Math.max(1.0, Math.abs(a.m03), Math.abs(b.m03)) && Math.abs(a.m04 - b.m04) <= epsilon * Math.max(1.0, Math.abs(a.m04), Math.abs(b.m04)) && Math.abs(a.m05 - b.m05) <= epsilon * Math.max(1.0, Math.abs(a.m05), Math.abs(b.m05)) && Math.abs(a.m06 - b.m06) <= epsilon * Math.max(1.0, Math.abs(a.m06), Math.abs(b.m06)) && Math.abs(a.m07 - b.m07) <= epsilon * Math.max(1.0, Math.abs(a.m07), Math.abs(b.m07)) && Math.abs(a.m08 - b.m08) <= epsilon * Math.max(1.0, Math.abs(a.m08), Math.abs(b.m08)); + }; + Mat3.toEuler = function toEuler(matrix, v) { + var a00 = matrix.m00; + var a01 = matrix.m01; + matrix.m02; + var a10 = matrix.m03; + var a11 = matrix.m04; + matrix.m05; + var a20 = matrix.m06; + var a21 = matrix.m07; + var a22 = matrix.m08; + if (a21 < 0.999) { + if (a21 > -0.999) { + v.x = Math.asin(-a21); + v.y = Math.atan2(a20, a22); + v.z = Math.atan2(a01, a11); + return true; + } else { + v.x = HALF_PI; + v.y = Math.atan2(a10, a00); + v.z = 0.0; + return false; + } + } else { + v.x = -HALF_PI; + v.y = Math.atan2(-a10, a00); + v.z = 0.0; + return false; + } + }; + function Mat3(m00, m01, m02, m03, m04, m05, m06, m07, m08) { + var _this; + if (m00 === void 0) { + m00 = 1; + } + if (m01 === void 0) { + m01 = 0; + } + if (m02 === void 0) { + m02 = 0; + } + if (m03 === void 0) { + m03 = 0; + } + if (m04 === void 0) { + m04 = 1; + } + if (m05 === void 0) { + m05 = 0; + } + if (m06 === void 0) { + m06 = 0; + } + if (m07 === void 0) { + m07 = 0; + } + if (m08 === void 0) { + m08 = 1; + } + _this = _ValueType.call(this) || this; + if (typeof m00 === 'object') { + _this.m00 = m00.m00; + _this.m01 = m00.m01; + _this.m02 = m00.m02; + _this.m03 = m00.m03; + _this.m04 = m00.m04; + _this.m05 = m00.m05; + _this.m06 = m00.m06; + _this.m07 = m00.m07; + _this.m08 = m00.m08; + } else { + _this.m00 = m00; + _this.m01 = m01; + _this.m02 = m02; + _this.m03 = m03; + _this.m04 = m04; + _this.m05 = m05; + _this.m06 = m06; + _this.m07 = m07; + _this.m08 = m08; + } + return _this; + } + var _proto = Mat3.prototype; + _proto.clone = function clone() { + var t = this; + return new Mat3(t.m00, t.m01, t.m02, t.m03, t.m04, t.m05, t.m06, t.m07, t.m08); + }; + _proto.set = function set(m00, m01, m02, m03, m04, m05, m06, m07, m08) { + if (m00 === void 0) { + m00 = 1; + } + if (m01 === void 0) { + m01 = 0; + } + if (m02 === void 0) { + m02 = 0; + } + if (m03 === void 0) { + m03 = 0; + } + if (m04 === void 0) { + m04 = 1; + } + if (m05 === void 0) { + m05 = 0; + } + if (m06 === void 0) { + m06 = 0; + } + if (m07 === void 0) { + m07 = 0; + } + if (m08 === void 0) { + m08 = 1; + } + if (typeof m00 === 'object') { + this.m00 = m00.m00; + this.m01 = m00.m01; + this.m02 = m00.m02; + this.m03 = m00.m03; + this.m04 = m00.m04; + this.m05 = m00.m05; + this.m06 = m00.m06; + this.m07 = m00.m07; + this.m08 = m00.m08; + } else { + this.m00 = m00; + this.m01 = m01; + this.m02 = m02; + this.m03 = m03; + this.m04 = m04; + this.m05 = m05; + this.m06 = m06; + this.m07 = m07; + this.m08 = m08; + } + return this; + }; + _proto.equals = function equals(other, epsilon) { + if (epsilon === void 0) { + epsilon = EPSILON$3; + } + return Math.abs(this.m00 - other.m00) <= epsilon * Math.max(1.0, Math.abs(this.m00), Math.abs(other.m00)) && Math.abs(this.m01 - other.m01) <= epsilon * Math.max(1.0, Math.abs(this.m01), Math.abs(other.m01)) && Math.abs(this.m02 - other.m02) <= epsilon * Math.max(1.0, Math.abs(this.m02), Math.abs(other.m02)) && Math.abs(this.m03 - other.m03) <= epsilon * Math.max(1.0, Math.abs(this.m03), Math.abs(other.m03)) && Math.abs(this.m04 - other.m04) <= epsilon * Math.max(1.0, Math.abs(this.m04), Math.abs(other.m04)) && Math.abs(this.m05 - other.m05) <= epsilon * Math.max(1.0, Math.abs(this.m05), Math.abs(other.m05)) && Math.abs(this.m06 - other.m06) <= epsilon * Math.max(1.0, Math.abs(this.m06), Math.abs(other.m06)) && Math.abs(this.m07 - other.m07) <= epsilon * Math.max(1.0, Math.abs(this.m07), Math.abs(other.m07)) && Math.abs(this.m08 - other.m08) <= epsilon * Math.max(1.0, Math.abs(this.m08), Math.abs(other.m08)); + }; + _proto.strictEquals = function strictEquals(other) { + return this.m00 === other.m00 && this.m01 === other.m01 && this.m02 === other.m02 && this.m03 === other.m03 && this.m04 === other.m04 && this.m05 === other.m05 && this.m06 === other.m06 && this.m07 === other.m07 && this.m08 === other.m08; + }; + _proto.toString = function toString() { + var t = this; + return "[\n" + t.m00 + ", " + t.m01 + ", " + t.m02 + ",\n" + t.m03 + ",\n" + t.m04 + ", " + t.m05 + ",\n" + t.m06 + ", " + t.m07 + ",\n" + t.m08 + "\n" + "]"; + }; + _proto.identity = function identity() { + this.m00 = 1; + this.m01 = 0; + this.m02 = 0; + this.m03 = 0; + this.m04 = 1; + this.m05 = 0; + this.m06 = 0; + this.m07 = 0; + this.m08 = 1; + return this; + }; + _proto.transpose = function transpose() { + var a01 = this.m01; + var a02 = this.m02; + var a12 = this.m05; + this.m01 = this.m03; + this.m02 = this.m06; + this.m03 = a01; + this.m05 = this.m07; + this.m06 = a02; + this.m07 = a12; + return this; + }; + _proto.invert = function invert() { + var a00 = this.m00; + var a01 = this.m01; + var a02 = this.m02; + var a10 = this.m03; + var a11 = this.m04; + var a12 = this.m05; + var a20 = this.m06; + var a21 = this.m07; + var a22 = this.m08; + var b01 = a22 * a11 - a12 * a21; + var b11 = -a22 * a10 + a12 * a20; + var b21 = a21 * a10 - a11 * a20; + var det = a00 * b01 + a01 * b11 + a02 * b21; + if (det === 0) { + this.set(0, 0, 0, 0, 0, 0, 0, 0, 0); + return this; + } + det = 1.0 / det; + this.m00 = b01 * det; + this.m01 = (-a22 * a01 + a02 * a21) * det; + this.m02 = (a12 * a01 - a02 * a11) * det; + this.m03 = b11 * det; + this.m04 = (a22 * a00 - a02 * a20) * det; + this.m05 = (-a12 * a00 + a02 * a10) * det; + this.m06 = b21 * det; + this.m07 = (-a21 * a00 + a01 * a20) * det; + this.m08 = (a11 * a00 - a01 * a10) * det; + return this; + }; + _proto.determinant = function determinant() { + var a00 = this.m00; + var a01 = this.m01; + var a02 = this.m02; + var a10 = this.m03; + var a11 = this.m04; + var a12 = this.m05; + var a20 = this.m06; + var a21 = this.m07; + var a22 = this.m08; + return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20); + }; + _proto.add = function add(mat) { + this.m00 += mat.m00; + this.m01 += mat.m01; + this.m02 += mat.m02; + this.m03 += mat.m03; + this.m04 += mat.m04; + this.m05 += mat.m05; + this.m06 += mat.m06; + this.m07 += mat.m07; + this.m08 += mat.m08; + return this; + }; + _proto.subtract = function subtract(mat) { + this.m00 -= mat.m00; + this.m01 -= mat.m01; + this.m02 -= mat.m02; + this.m03 -= mat.m03; + this.m04 -= mat.m04; + this.m05 -= mat.m05; + this.m06 -= mat.m06; + this.m07 -= mat.m07; + this.m08 -= mat.m08; + return this; + }; + _proto.multiply = function multiply(mat) { + var a00 = this.m00; + var a01 = this.m01; + var a02 = this.m02; + var a10 = this.m03; + var a11 = this.m04; + var a12 = this.m05; + var a20 = this.m06; + var a21 = this.m07; + var a22 = this.m08; + var b00 = mat.m00; + var b01 = mat.m01; + var b02 = mat.m02; + var b10 = mat.m03; + var b11 = mat.m04; + var b12 = mat.m05; + var b20 = mat.m06; + var b21 = mat.m07; + var b22 = mat.m08; + this.m00 = b00 * a00 + b01 * a10 + b02 * a20; + this.m01 = b00 * a01 + b01 * a11 + b02 * a21; + this.m02 = b00 * a02 + b01 * a12 + b02 * a22; + this.m03 = b10 * a00 + b11 * a10 + b12 * a20; + this.m04 = b10 * a01 + b11 * a11 + b12 * a21; + this.m05 = b10 * a02 + b11 * a12 + b12 * a22; + this.m06 = b20 * a00 + b21 * a10 + b22 * a20; + this.m07 = b20 * a01 + b21 * a11 + b22 * a21; + this.m08 = b20 * a02 + b21 * a12 + b22 * a22; + return this; + }; + _proto.multiplyScalar = function multiplyScalar(scalar) { + this.m00 *= scalar; + this.m01 *= scalar; + this.m02 *= scalar; + this.m03 *= scalar; + this.m04 *= scalar; + this.m05 *= scalar; + this.m06 *= scalar; + this.m07 *= scalar; + this.m08 *= scalar; + return this; + }; + _proto.scale = function scale(vec) { + var x = vec.x; + var y = vec.y; + this.m00 = x * this.m00; + this.m01 = x * this.m01; + this.m02 = x * this.m02; + this.m03 = y * this.m03; + this.m04 = y * this.m04; + this.m05 = y * this.m05; + this.m06 = this.m06; + this.m07 = this.m07; + this.m08 = this.m08; + return this; + }; + _proto.rotate = function rotate(rad) { + var a00 = this.m00; + var a01 = this.m01; + var a02 = this.m02; + var a10 = this.m03; + var a11 = this.m04; + var a12 = this.m05; + var a20 = this.m06; + var a21 = this.m07; + var a22 = this.m08; + var s = Math.sin(rad); + var c = Math.cos(rad); + this.m00 = c * a00 + s * a10; + this.m01 = c * a01 + s * a11; + this.m02 = c * a02 + s * a12; + this.m03 = c * a10 - s * a00; + this.m04 = c * a11 - s * a01; + this.m05 = c * a12 - s * a02; + this.m06 = a20; + this.m07 = a21; + this.m08 = a22; + return this; + }; + _proto.fromQuat = function fromQuat(q) { + var x = q.x; + var y = q.y; + var z = q.z; + var w = q.w; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var yx = y * x2; + var yy = y * y2; + var zx = z * x2; + var zy = z * y2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + this.m00 = 1 - yy - zz; + this.m03 = yx - wz; + this.m06 = zx + wy; + this.m01 = yx + wz; + this.m04 = 1 - xx - zz; + this.m07 = zy - wx; + this.m02 = zx - wy; + this.m05 = zy + wx; + this.m08 = 1 - xx - yy; + return this; + }; + return Mat3; + }(ValueType)); + _class$2m = Mat3; + Mat3.IDENTITY = Object.freeze(new _class$2m()); + var v3_1$4 = new Vec3(); + var v3_2$1 = new Vec3(); + CCClass.fastDefine('cc.Mat3', Mat3, { + m00: 1, + m01: 0, + m02: 0, + m03: 0, + m04: 1, + m05: 0, + m06: 0, + m07: 0, + m08: 1 + }); + legacyCC.Mat3 = Mat3; + + var _class$2l; + var Quat = exports('ax', function (_ValueType) { + _inheritsLoose(Quat, _ValueType); + Quat.clone = function clone(a) { + return new Quat(a.x, a.y, a.z, a.w); + }; + Quat.copy = function copy(out, a) { + out.x = a.x; + out.y = a.y; + out.z = a.z; + out.w = a.w; + return out; + }; + Quat.set = function set(out, x, y, z, w) { + out.x = x; + out.y = y; + out.z = z; + out.w = w; + return out; + }; + Quat.identity = function identity(out) { + out.x = 0; + out.y = 0; + out.z = 0; + out.w = 1; + return out; + }; + Quat.rotationTo = function rotationTo(out, a, b) { + var dot = Vec3.dot(a, b); + if (dot < -0.999999) { + Vec3.cross(v3_1$3, Vec3.UNIT_X, a); + if (v3_1$3.length() < 0.000001) { + Vec3.cross(v3_1$3, Vec3.UNIT_Y, a); + } + Vec3.normalize(v3_1$3, v3_1$3); + Quat.fromAxisAngle(out, v3_1$3, Math.PI); + return out; + } else if (dot > 0.999999) { + out.x = 0; + out.y = 0; + out.z = 0; + out.w = 1; + return out; + } else { + Vec3.cross(v3_1$3, a, b); + out.x = v3_1$3.x; + out.y = v3_1$3.y; + out.z = v3_1$3.z; + out.w = 1 + dot; + return Quat.normalize(out, out); + } + }; + Quat.getAxisAngle = function getAxisAngle(outAxis, q) { + var rad = Math.acos(q.w) * 2.0; + var s = Math.sin(rad / 2.0); + if (s !== 0.0) { + outAxis.x = q.x / s; + outAxis.y = q.y / s; + outAxis.z = q.z / s; + } else { + outAxis.x = 1; + outAxis.y = 0; + outAxis.z = 0; + } + return rad; + }; + Quat.multiply = function multiply(out, a, b) { + var x = a.x * b.w + a.w * b.x + a.y * b.z - a.z * b.y; + var y = a.y * b.w + a.w * b.y + a.z * b.x - a.x * b.z; + var z = a.z * b.w + a.w * b.z + a.x * b.y - a.y * b.x; + var w = a.w * b.w - a.x * b.x - a.y * b.y - a.z * b.z; + out.x = x; + out.y = y; + out.z = z; + out.w = w; + return out; + }; + Quat.multiplyScalar = function multiplyScalar(out, a, b) { + out.x = a.x * b; + out.y = a.y * b; + out.z = a.z * b; + out.w = a.w * b; + return out; + }; + Quat.scaleAndAdd = function scaleAndAdd(out, a, b, scale) { + out.x = a.x + b.x * scale; + out.y = a.y + b.y * scale; + out.z = a.z + b.z * scale; + out.w = a.w + b.w * scale; + return out; + }; + Quat.rotateX = function rotateX(out, a, rad) { + rad *= 0.5; + var bx = Math.sin(rad); + var bw = Math.cos(rad); + var x = a.x, + y = a.y, + z = a.z, + w = a.w; + out.x = x * bw + w * bx; + out.y = y * bw + z * bx; + out.z = z * bw - y * bx; + out.w = w * bw - x * bx; + return out; + }; + Quat.rotateY = function rotateY(out, a, rad) { + rad *= 0.5; + var by = Math.sin(rad); + var bw = Math.cos(rad); + var x = a.x, + y = a.y, + z = a.z, + w = a.w; + out.x = x * bw - z * by; + out.y = y * bw + w * by; + out.z = z * bw + x * by; + out.w = w * bw - y * by; + return out; + }; + Quat.rotateZ = function rotateZ(out, a, rad) { + rad *= 0.5; + var bz = Math.sin(rad); + var bw = Math.cos(rad); + var x = a.x, + y = a.y, + z = a.z, + w = a.w; + out.x = x * bw + y * bz; + out.y = y * bw - x * bz; + out.z = z * bw + w * bz; + out.w = w * bw - z * bz; + return out; + }; + Quat.rotateAround = function rotateAround(out, rot, axis, rad) { + Quat.invert(qt_1$1, rot); + Vec3.transformQuat(v3_1$3, axis, qt_1$1); + Quat.fromAxisAngle(qt_1$1, v3_1$3, rad); + Quat.multiply(out, rot, qt_1$1); + return out; + }; + Quat.rotateAroundLocal = function rotateAroundLocal(out, rot, axis, rad) { + Quat.fromAxisAngle(qt_1$1, axis, rad); + Quat.multiply(out, rot, qt_1$1); + return out; + }; + Quat.calculateW = function calculateW(out, a) { + out.x = a.x; + out.y = a.y; + out.z = a.z; + out.w = Math.sqrt(Math.abs(1.0 - a.x * a.x - a.y * a.y - a.z * a.z)); + return out; + }; + Quat.dot = function dot(a, b) { + return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w; + }; + Quat.lerp = function lerp(out, a, b, t) { + out.x = a.x + t * (b.x - a.x); + out.y = a.y + t * (b.y - a.y); + out.z = a.z + t * (b.z - a.z); + out.w = a.w + t * (b.w - a.w); + return out; + }; + Quat.slerp = function slerp(out, a, b, t) { + var scale0 = 0; + var scale1 = 0; + var bx = b.x; + var by = b.y; + var bz = b.z; + var bw = b.w; + var cosom = a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w; + if (cosom < 0.0) { + cosom = -cosom; + bx = -bx; + by = -by; + bz = -bz; + bw = -bw; + } + if (1.0 - cosom > 0.000001) { + var omega = Math.acos(cosom); + var sinom = Math.sin(omega); + scale0 = Math.sin((1.0 - t) * omega) / sinom; + scale1 = Math.sin(t * omega) / sinom; + } else { + scale0 = 1.0 - t; + scale1 = t; + } + out.x = scale0 * a.x + scale1 * bx; + out.y = scale0 * a.y + scale1 * by; + out.z = scale0 * a.z + scale1 * bz; + out.w = scale0 * a.w + scale1 * bw; + return out; + }; + Quat.sqlerp = function sqlerp(out, a, b, c, d, t) { + Quat.slerp(qt_1$1, a, d, t); + Quat.slerp(qt_2, b, c, t); + Quat.slerp(out, qt_1$1, qt_2, 2 * t * (1 - t)); + return out; + }; + Quat.invert = function invert(out, a) { + var dot = a.x * a.x + a.y * a.y + a.z * a.z + a.w * a.w; + var invDot = dot ? 1.0 / dot : 0; + out.x = -a.x * invDot; + out.y = -a.y * invDot; + out.z = -a.z * invDot; + out.w = a.w * invDot; + return out; + }; + Quat.conjugate = function conjugate(out, a) { + out.x = -a.x; + out.y = -a.y; + out.z = -a.z; + out.w = a.w; + return out; + }; + Quat.len = function len(a) { + return Math.sqrt(a.x * a.x + a.y * a.y + a.z * a.z + a.w * a.w); + }; + Quat.lengthSqr = function lengthSqr(a) { + return a.x * a.x + a.y * a.y + a.z * a.z + a.w * a.w; + }; + Quat.normalize = function normalize(out, a) { + var len = a.x * a.x + a.y * a.y + a.z * a.z + a.w * a.w; + if (len > 0) { + len = 1 / Math.sqrt(len); + out.x = a.x * len; + out.y = a.y * len; + out.z = a.z * len; + out.w = a.w * len; + } else { + out.x = 0; + out.y = 0; + out.z = 0; + out.w = 0; + } + return out; + }; + Quat.fromAxes = function fromAxes(out, xAxis, yAxis, zAxis) { + Mat3.set(m3_1$2, xAxis.x, xAxis.y, xAxis.z, yAxis.x, yAxis.y, yAxis.z, zAxis.x, zAxis.y, zAxis.z); + return Quat.normalize(out, Quat.fromMat3(out, m3_1$2)); + }; + Quat.fromViewUp = function fromViewUp(out, view, up) { + Mat3.fromViewUp(m3_1$2, view, up); + return Quat.normalize(out, Quat.fromMat3(out, m3_1$2)); + }; + Quat.fromAxisAngle = function fromAxisAngle(out, axis, rad) { + rad *= 0.5; + var s = Math.sin(rad); + out.x = s * axis.x; + out.y = s * axis.y; + out.z = s * axis.z; + out.w = Math.cos(rad); + return out; + }; + Quat.fromMat3 = function fromMat3(out, m) { + var m00 = m.m00, + m01 = m.m01, + m02 = m.m02, + m10 = m.m03, + m11 = m.m04, + m12 = m.m05, + m20 = m.m06, + m21 = m.m07, + m22 = m.m08; + var fourXSquaredMinus1 = m00 - m11 - m22; + var fourYSquaredMinus1 = m11 - m00 - m22; + var fourZSquaredMinus1 = m22 - m00 - m11; + var fourWSquaredMinus1 = m00 + m11 + m22; + var biggestIndex = 0; + var fourBiggestSquaredMinus1 = fourWSquaredMinus1; + if (fourXSquaredMinus1 > fourBiggestSquaredMinus1) { + fourBiggestSquaredMinus1 = fourXSquaredMinus1; + biggestIndex = 1; + } + if (fourYSquaredMinus1 > fourBiggestSquaredMinus1) { + fourBiggestSquaredMinus1 = fourYSquaredMinus1; + biggestIndex = 2; + } + if (fourZSquaredMinus1 > fourBiggestSquaredMinus1) { + fourBiggestSquaredMinus1 = fourZSquaredMinus1; + biggestIndex = 3; + } + var biggestVal = Math.sqrt(fourBiggestSquaredMinus1 + 1) * 0.5; + var mult = 0.25 / biggestVal; + switch (biggestIndex) { + case 0: + out.w = biggestVal; + out.x = (m12 - m21) * mult; + out.y = (m20 - m02) * mult; + out.z = (m01 - m10) * mult; + break; + case 1: + out.w = (m12 - m21) * mult; + out.x = biggestVal; + out.y = (m01 + m10) * mult; + out.z = (m20 + m02) * mult; + break; + case 2: + out.w = (m20 - m02) * mult; + out.x = (m01 + m10) * mult; + out.y = biggestVal; + out.z = (m12 + m21) * mult; + break; + case 3: + out.w = (m01 - m10) * mult; + out.x = (m20 + m02) * mult; + out.y = (m12 + m21) * mult; + out.z = biggestVal; + break; + default: + out.w = 1; + out.x = 0; + out.y = 0; + out.z = 0; + break; + } + return out; + }; + Quat.fromEuler = function fromEuler(out, x, y, z) { + x *= halfToRad; + y *= halfToRad; + z *= halfToRad; + var sx = Math.sin(x); + var cx = Math.cos(x); + var sy = Math.sin(y); + var cy = Math.cos(y); + var sz = Math.sin(z); + var cz = Math.cos(z); + out.x = sx * cy * cz + cx * sy * sz; + out.y = cx * sy * cz + sx * cy * sz; + out.z = cx * cy * sz - sx * sy * cz; + out.w = cx * cy * cz - sx * sy * sz; + return out; + }; + Quat.fromAngleZ = function fromAngleZ(out, z) { + z *= halfToRad; + out.x = out.y = 0; + out.z = Math.sin(z); + out.w = Math.cos(z); + return out; + }; + Quat.toAxisX = function toAxisX(out, q) { + var fy = 2.0 * q.y; + var fz = 2.0 * q.z; + out.x = 1.0 - fy * q.y - fz * q.z; + out.y = fy * q.x + fz * q.w; + out.z = fz * q.x - fy * q.w; + return out; + }; + Quat.toAxisY = function toAxisY(out, q) { + var fx = 2.0 * q.x; + var fy = 2.0 * q.y; + var fz = 2.0 * q.z; + out.x = fy * q.x - fz * q.w; + out.y = 1.0 - fx * q.x - fz * q.z; + out.z = fz * q.y + fx * q.w; + return out; + }; + Quat.toAxisZ = function toAxisZ(out, q) { + var fx = 2.0 * q.x; + var fy = 2.0 * q.y; + var fz = 2.0 * q.z; + out.x = fz * q.x + fy * q.w; + out.y = fz * q.y - fx * q.w; + out.z = 1.0 - fx * q.x - fy * q.y; + return out; + }; + Quat.toEuler = function toEuler(out, q, outerZ) { + var x = q.x, + y = q.y, + z = q.z, + w = q.w; + var bank = 0; + var heading = 0; + var attitude = 0; + var test = x * y + z * w; + if (test > 0.499999) { + bank = 0; + heading = toDegree(2 * Math.atan2(x, w)); + attitude = 90; + } else if (test < -0.499999) { + bank = 0; + heading = -toDegree(2 * Math.atan2(x, w)); + attitude = -90; + } else { + var sqx = x * x; + var sqy = y * y; + var sqz = z * z; + bank = toDegree(Math.atan2(2 * x * w - 2 * y * z, 1 - 2 * sqx - 2 * sqz)); + heading = toDegree(Math.atan2(2 * y * w - 2 * x * z, 1 - 2 * sqy - 2 * sqz)); + attitude = toDegree(Math.asin(2 * test)); + if (outerZ) { + bank = -180 * Math.sign(bank + 1e-6) + bank; + heading = -180 * Math.sign(heading + 1e-6) + heading; + attitude = 180 * Math.sign(attitude + 1e-6) - attitude; + } + } + out.x = bank; + out.y = heading; + out.z = attitude; + return out; + }; + Quat.toEulerInYXZOrder = function toEulerInYXZOrder(out, q) { + Mat3.fromQuat(m3_1$2, q); + Mat3.toEuler(m3_1$2, out); + out.x = toDegree(out.x); + out.y = toDegree(out.y); + out.z = toDegree(out.z); + }; + Quat.toArray = function toArray(out, q, ofs) { + if (ofs === void 0) { + ofs = 0; + } + out[ofs + 0] = q.x; + out[ofs + 1] = q.y; + out[ofs + 2] = q.z; + out[ofs + 3] = q.w; + return out; + }; + Quat.fromArray = function fromArray(out, arr, ofs) { + if (ofs === void 0) { + ofs = 0; + } + out.x = arr[ofs + 0]; + out.y = arr[ofs + 1]; + out.z = arr[ofs + 2]; + out.w = arr[ofs + 3]; + return out; + }; + Quat.strictEquals = function strictEquals(a, b) { + return a.x === b.x && a.y === b.y && a.z === b.z && a.w === b.w; + }; + Quat.equals = function equals(a, b, epsilon) { + if (epsilon === void 0) { + epsilon = EPSILON$3; + } + return Math.abs(a.x - b.x) <= epsilon * Math.max(1.0, Math.abs(a.x), Math.abs(b.x)) && Math.abs(a.y - b.y) <= epsilon * Math.max(1.0, Math.abs(a.y), Math.abs(b.y)) && Math.abs(a.z - b.z) <= epsilon * Math.max(1.0, Math.abs(a.z), Math.abs(b.z)) && Math.abs(a.w - b.w) <= epsilon * Math.max(1.0, Math.abs(a.w), Math.abs(b.w)); + }; + Quat.angle = function angle(a, b) { + var dot = Math.min(Math.abs(Quat.dot(a, b)), 1.0); + return Math.acos(dot) * 2.0; + }; + Quat.rotateTowards = function rotateTowards(out, from, to, maxStep) { + var angle = Quat.angle(from, to); + if (angle === 0) { + out.x = to.x; + out.y = to.y; + out.z = to.z; + out.w = to.w; + return out; + } + var t = Math.min(maxStep / toDegree(angle), 1.0); + return Quat.slerp(out, from, to, t); + }; + function Quat(x, y, z, w) { + var _this; + _this = _ValueType.call(this) || this; + if (typeof x === 'object') { + _this.x = x.x; + _this.y = x.y; + _this.z = x.z; + _this.w = x.w; + } else { + _this.x = x || 0; + _this.y = y || 0; + _this.z = z || 0; + _this.w = w !== null && w !== void 0 ? w : 1; + } + return _this; + } + var _proto = Quat.prototype; + _proto.clone = function clone() { + return new Quat(this.x, this.y, this.z, this.w); + }; + _proto.set = function set(x, y, z, w) { + if (typeof x === 'object') { + this.x = x.x; + this.y = x.y; + this.z = x.z; + this.w = x.w; + } else { + this.x = x || 0; + this.y = y || 0; + this.z = z || 0; + this.w = w !== null && w !== void 0 ? w : 1; + } + return this; + }; + _proto.equals = function equals(other, epsilon) { + if (epsilon === void 0) { + epsilon = EPSILON$3; + } + return Math.abs(this.x - other.x) <= epsilon * Math.max(1.0, Math.abs(this.x), Math.abs(other.x)) && Math.abs(this.y - other.y) <= epsilon * Math.max(1.0, Math.abs(this.y), Math.abs(other.y)) && Math.abs(this.z - other.z) <= epsilon * Math.max(1.0, Math.abs(this.z), Math.abs(other.z)) && Math.abs(this.w - other.w) <= epsilon * Math.max(1.0, Math.abs(this.w), Math.abs(other.w)); + }; + _proto.strictEquals = function strictEquals(other) { + return other && this.x === other.x && this.y === other.y && this.z === other.z && this.w === other.w; + }; + _proto.getEulerAngles = function getEulerAngles(out) { + return Quat.toEuler(out, this); + }; + _proto.lerp = function lerp(to, ratio) { + this.x += ratio * (to.x - this.x); + this.y += ratio * (to.y - this.y); + this.z += ratio * (to.z - this.z); + this.w += ratio * (to.w - this.w); + return this; + }; + _proto.slerp = function slerp(to, ratio) { + return Quat.slerp(this, this, to, ratio); + }; + _proto.length = function length() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w); + }; + _proto.lengthSqr = function lengthSqr() { + return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w; + }; + return Quat; + }(ValueType)); + _class$2l = Quat; + Quat.IDENTITY = Object.freeze(new _class$2l()); + var qt_1$1 = new Quat(); + var qt_2 = new Quat(); + var v3_1$3 = new Vec3(); + var m3_1$2 = new Mat3(); + var halfToRad = 0.5 * Math.PI / 180.0; + CCClass.fastDefine('cc.Quat', Quat, { + x: 0, + y: 0, + z: 0, + w: 1 + }); + legacyCC.Quat = Quat; + function quat(x, y, z, w) { + if (x === void 0) { + x = 0; + } + if (y === void 0) { + y = 0; + } + if (z === void 0) { + z = 0; + } + if (w === void 0) { + w = 1; + } + return new Quat(x, y, z, w); + } + legacyCC.quat = quat; + + var _class$2k; + var preTransforms = exports('aJ', Object.freeze([Object.freeze([1, 0, 0, 1]), Object.freeze([0, 1, -1, 0]), Object.freeze([-1, 0, 0, -1]), Object.freeze([0, -1, 1, 0])])); + var Mat4 = exports('aA', function (_ValueType) { + _inheritsLoose(Mat4, _ValueType); + Mat4.clone = function clone(a) { + return new Mat4(a.m00, a.m01, a.m02, a.m03, a.m04, a.m05, a.m06, a.m07, a.m08, a.m09, a.m10, a.m11, a.m12, a.m13, a.m14, a.m15); + }; + Mat4.copy = function copy(out, a) { + out.m00 = a.m00; + out.m01 = a.m01; + out.m02 = a.m02; + out.m03 = a.m03; + out.m04 = a.m04; + out.m05 = a.m05; + out.m06 = a.m06; + out.m07 = a.m07; + out.m08 = a.m08; + out.m09 = a.m09; + out.m10 = a.m10; + out.m11 = a.m11; + out.m12 = a.m12; + out.m13 = a.m13; + out.m14 = a.m14; + out.m15 = a.m15; + return out; + }; + Mat4.set = function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) { + out.m00 = m00; + out.m01 = m01; + out.m02 = m02; + out.m03 = m03; + out.m04 = m10; + out.m05 = m11; + out.m06 = m12; + out.m07 = m13; + out.m08 = m20; + out.m09 = m21; + out.m10 = m22; + out.m11 = m23; + out.m12 = m30; + out.m13 = m31; + out.m14 = m32; + out.m15 = m33; + return out; + }; + Mat4.identity = function identity(out) { + out.m00 = 1; + out.m01 = 0; + out.m02 = 0; + out.m03 = 0; + out.m04 = 0; + out.m05 = 1; + out.m06 = 0; + out.m07 = 0; + out.m08 = 0; + out.m09 = 0; + out.m10 = 1; + out.m11 = 0; + out.m12 = 0; + out.m13 = 0; + out.m14 = 0; + out.m15 = 1; + return out; + }; + Mat4.transpose = function transpose(out, a) { + if (out === a) { + var a01 = a.m01; + var a02 = a.m02; + var a03 = a.m03; + var a12 = a.m06; + var a13 = a.m07; + var a23 = a.m11; + out.m01 = a.m04; + out.m02 = a.m08; + out.m03 = a.m12; + out.m04 = a01; + out.m06 = a.m09; + out.m07 = a.m13; + out.m08 = a02; + out.m09 = a12; + out.m11 = a.m14; + out.m12 = a03; + out.m13 = a13; + out.m14 = a23; + } else { + out.m00 = a.m00; + out.m01 = a.m04; + out.m02 = a.m08; + out.m03 = a.m12; + out.m04 = a.m01; + out.m05 = a.m05; + out.m06 = a.m09; + out.m07 = a.m13; + out.m08 = a.m02; + out.m09 = a.m06; + out.m10 = a.m10; + out.m11 = a.m14; + out.m12 = a.m03; + out.m13 = a.m07; + out.m14 = a.m11; + out.m15 = a.m15; + } + return out; + }; + Mat4.invert = function invert(out, a) { + var a00 = a.m00; + var a01 = a.m01; + var a02 = a.m02; + var a03 = a.m03; + var a10 = a.m04; + var a11 = a.m05; + var a12 = a.m06; + var a13 = a.m07; + var a20 = a.m08; + var a21 = a.m09; + var a22 = a.m10; + var a23 = a.m11; + var a30 = a.m12; + var a31 = a.m13; + var a32 = a.m14; + var a33 = a.m15; + var b00 = a00 * a11 - a01 * a10; + var b01 = a00 * a12 - a02 * a10; + var b02 = a00 * a13 - a03 * a10; + var b03 = a01 * a12 - a02 * a11; + var b04 = a01 * a13 - a03 * a11; + var b05 = a02 * a13 - a03 * a12; + var b06 = a20 * a31 - a21 * a30; + var b07 = a20 * a32 - a22 * a30; + var b08 = a20 * a33 - a23 * a30; + var b09 = a21 * a32 - a22 * a31; + var b10 = a21 * a33 - a23 * a31; + var b11 = a22 * a33 - a23 * a32; + var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + if (det === 0) { + out.m00 = 0; + out.m01 = 0; + out.m02 = 0; + out.m03 = 0; + out.m04 = 0; + out.m05 = 0; + out.m06 = 0; + out.m07 = 0; + out.m08 = 0; + out.m09 = 0; + out.m10 = 0; + out.m11 = 0; + out.m12 = 0; + out.m13 = 0; + out.m14 = 0; + out.m15 = 0; + return out; + } + det = 1.0 / det; + out.m00 = (a11 * b11 - a12 * b10 + a13 * b09) * det; + out.m01 = (a02 * b10 - a01 * b11 - a03 * b09) * det; + out.m02 = (a31 * b05 - a32 * b04 + a33 * b03) * det; + out.m03 = (a22 * b04 - a21 * b05 - a23 * b03) * det; + out.m04 = (a12 * b08 - a10 * b11 - a13 * b07) * det; + out.m05 = (a00 * b11 - a02 * b08 + a03 * b07) * det; + out.m06 = (a32 * b02 - a30 * b05 - a33 * b01) * det; + out.m07 = (a20 * b05 - a22 * b02 + a23 * b01) * det; + out.m08 = (a10 * b10 - a11 * b08 + a13 * b06) * det; + out.m09 = (a01 * b08 - a00 * b10 - a03 * b06) * det; + out.m10 = (a30 * b04 - a31 * b02 + a33 * b00) * det; + out.m11 = (a21 * b02 - a20 * b04 - a23 * b00) * det; + out.m12 = (a11 * b07 - a10 * b09 - a12 * b06) * det; + out.m13 = (a00 * b09 - a01 * b07 + a02 * b06) * det; + out.m14 = (a31 * b01 - a30 * b03 - a32 * b00) * det; + out.m15 = (a20 * b03 - a21 * b01 + a22 * b00) * det; + return out; + }; + Mat4.determinant = function determinant(a) { + var a00 = a.m00; + var a01 = a.m01; + var a02 = a.m02; + var a03 = a.m03; + var a10 = a.m04; + var a11 = a.m05; + var a12 = a.m06; + var a13 = a.m07; + var a20 = a.m08; + var a21 = a.m09; + var a22 = a.m10; + var a23 = a.m11; + var a30 = a.m12; + var a31 = a.m13; + var a32 = a.m14; + var a33 = a.m15; + var b00 = a00 * a11 - a01 * a10; + var b01 = a00 * a12 - a02 * a10; + var b02 = a00 * a13 - a03 * a10; + var b03 = a01 * a12 - a02 * a11; + var b04 = a01 * a13 - a03 * a11; + var b05 = a02 * a13 - a03 * a12; + var b06 = a20 * a31 - a21 * a30; + var b07 = a20 * a32 - a22 * a30; + var b08 = a20 * a33 - a23 * a30; + var b09 = a21 * a32 - a22 * a31; + var b10 = a21 * a33 - a23 * a31; + var b11 = a22 * a33 - a23 * a32; + return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + }; + Mat4.multiply = function multiply(out, a, b) { + var a00 = a.m00; + var a01 = a.m01; + var a02 = a.m02; + var a03 = a.m03; + var a10 = a.m04; + var a11 = a.m05; + var a12 = a.m06; + var a13 = a.m07; + var a20 = a.m08; + var a21 = a.m09; + var a22 = a.m10; + var a23 = a.m11; + var a30 = a.m12; + var a31 = a.m13; + var a32 = a.m14; + var a33 = a.m15; + var b0 = b.m00; + var b1 = b.m01; + var b2 = b.m02; + var b3 = b.m03; + out.m00 = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + out.m01 = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + out.m02 = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + out.m03 = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = b.m04; + b1 = b.m05; + b2 = b.m06; + b3 = b.m07; + out.m04 = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + out.m05 = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + out.m06 = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + out.m07 = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = b.m08; + b1 = b.m09; + b2 = b.m10; + b3 = b.m11; + out.m08 = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + out.m09 = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + out.m10 = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + out.m11 = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = b.m12; + b1 = b.m13; + b2 = b.m14; + b3 = b.m15; + out.m12 = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + out.m13 = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + out.m14 = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + out.m15 = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + return out; + }; + Mat4.transform = function transform(out, a, v) { + var x = v.x; + var y = v.y; + var z = v.z; + if (a === out) { + out.m12 = a.m00 * x + a.m04 * y + a.m08 * z + a.m12; + out.m13 = a.m01 * x + a.m05 * y + a.m09 * z + a.m13; + out.m14 = a.m02 * x + a.m06 * y + a.m10 * z + a.m14; + out.m15 = a.m03 * x + a.m07 * y + a.m11 * z + a.m15; + } else { + var a00 = a.m00; + var a01 = a.m01; + var a02 = a.m02; + var a03 = a.m03; + var a10 = a.m04; + var a11 = a.m05; + var a12 = a.m06; + var a13 = a.m07; + var a20 = a.m08; + var a21 = a.m09; + var a22 = a.m10; + var a23 = a.m11; + out.m00 = a00; + out.m01 = a01; + out.m02 = a02; + out.m03 = a03; + out.m04 = a10; + out.m05 = a11; + out.m06 = a12; + out.m07 = a13; + out.m08 = a20; + out.m09 = a21; + out.m10 = a22; + out.m11 = a23; + out.m12 = a00 * x + a10 * y + a20 * z + a.m12; + out.m13 = a01 * x + a11 * y + a21 * z + a.m13; + out.m14 = a02 * x + a12 * y + a22 * z + a.m14; + out.m15 = a03 * x + a13 * y + a23 * z + a.m15; + } + return out; + }; + Mat4.translate = function translate(out, a, v) { + if (a === out) { + out.m12 += v.x; + out.m13 += v.y; + out.m14 += v.z; + } else { + out.m00 = a.m00; + out.m01 = a.m01; + out.m02 = a.m02; + out.m03 = a.m03; + out.m04 = a.m04; + out.m05 = a.m05; + out.m06 = a.m06; + out.m07 = a.m07; + out.m08 = a.m08; + out.m09 = a.m09; + out.m10 = a.m10; + out.m11 = a.m11; + out.m12 = a.m12 + v.x; + out.m13 = a.m13 + v.y; + out.m14 = a.m14 + v.z; + out.m15 = a.m15; + } + return out; + }; + Mat4.scale = function scale(out, a, v) { + var x = v.x; + var y = v.y; + var z = v.z; + out.m00 = a.m00 * x; + out.m01 = a.m01 * x; + out.m02 = a.m02 * x; + out.m03 = a.m03 * x; + out.m04 = a.m04 * y; + out.m05 = a.m05 * y; + out.m06 = a.m06 * y; + out.m07 = a.m07 * y; + out.m08 = a.m08 * z; + out.m09 = a.m09 * z; + out.m10 = a.m10 * z; + out.m11 = a.m11 * z; + out.m12 = a.m12; + out.m13 = a.m13; + out.m14 = a.m14; + out.m15 = a.m15; + return out; + }; + Mat4.rotate = function rotate(out, a, rad, axis) { + var x = axis.x; + var y = axis.y; + var z = axis.z; + var len = Math.sqrt(x * x + y * y + z * z); + if (Math.abs(len) < EPSILON$3) { + return null; + } + len = 1 / len; + x *= len; + y *= len; + z *= len; + var s = Math.sin(rad); + var c = Math.cos(rad); + var t = 1 - c; + var a00 = a.m00; + var a01 = a.m01; + var a02 = a.m02; + var a03 = a.m03; + var a10 = a.m04; + var a11 = a.m05; + var a12 = a.m06; + var a13 = a.m07; + var a20 = a.m08; + var a21 = a.m09; + var a22 = a.m10; + var a23 = a.m11; + var b00 = x * x * t + c; + var b01 = y * x * t + z * s; + var b02 = z * x * t - y * s; + var b10 = x * y * t - z * s; + var b11 = y * y * t + c; + var b12 = z * y * t + x * s; + var b20 = x * z * t + y * s; + var b21 = y * z * t - x * s; + var b22 = z * z * t + c; + out.m00 = a00 * b00 + a10 * b01 + a20 * b02; + out.m01 = a01 * b00 + a11 * b01 + a21 * b02; + out.m02 = a02 * b00 + a12 * b01 + a22 * b02; + out.m03 = a03 * b00 + a13 * b01 + a23 * b02; + out.m04 = a00 * b10 + a10 * b11 + a20 * b12; + out.m05 = a01 * b10 + a11 * b11 + a21 * b12; + out.m06 = a02 * b10 + a12 * b11 + a22 * b12; + out.m07 = a03 * b10 + a13 * b11 + a23 * b12; + out.m08 = a00 * b20 + a10 * b21 + a20 * b22; + out.m09 = a01 * b20 + a11 * b21 + a21 * b22; + out.m10 = a02 * b20 + a12 * b21 + a22 * b22; + out.m11 = a03 * b20 + a13 * b21 + a23 * b22; + if (a !== out) { + out.m12 = a.m12; + out.m13 = a.m13; + out.m14 = a.m14; + out.m15 = a.m15; + } + return out; + }; + Mat4.rotateX = function rotateX(out, a, rad) { + var s = Math.sin(rad); + var c = Math.cos(rad); + var a10 = a.m04; + var a11 = a.m05; + var a12 = a.m06; + var a13 = a.m07; + var a20 = a.m08; + var a21 = a.m09; + var a22 = a.m10; + var a23 = a.m11; + if (a !== out) { + out.m00 = a.m00; + out.m01 = a.m01; + out.m02 = a.m02; + out.m03 = a.m03; + out.m12 = a.m12; + out.m13 = a.m13; + out.m14 = a.m14; + out.m15 = a.m15; + } + out.m04 = a10 * c + a20 * s; + out.m05 = a11 * c + a21 * s; + out.m06 = a12 * c + a22 * s; + out.m07 = a13 * c + a23 * s; + out.m08 = a20 * c - a10 * s; + out.m09 = a21 * c - a11 * s; + out.m10 = a22 * c - a12 * s; + out.m11 = a23 * c - a13 * s; + return out; + }; + Mat4.rotateY = function rotateY(out, a, rad) { + var s = Math.sin(rad); + var c = Math.cos(rad); + var a00 = a.m00; + var a01 = a.m01; + var a02 = a.m02; + var a03 = a.m03; + var a20 = a.m08; + var a21 = a.m09; + var a22 = a.m10; + var a23 = a.m11; + if (a !== out) { + out.m04 = a.m04; + out.m05 = a.m05; + out.m06 = a.m06; + out.m07 = a.m07; + out.m12 = a.m12; + out.m13 = a.m13; + out.m14 = a.m14; + out.m15 = a.m15; + } + out.m00 = a00 * c - a20 * s; + out.m01 = a01 * c - a21 * s; + out.m02 = a02 * c - a22 * s; + out.m03 = a03 * c - a23 * s; + out.m08 = a00 * s + a20 * c; + out.m09 = a01 * s + a21 * c; + out.m10 = a02 * s + a22 * c; + out.m11 = a03 * s + a23 * c; + return out; + }; + Mat4.rotateZ = function rotateZ(out, a, rad) { + var s = Math.sin(rad); + var c = Math.cos(rad); + var a00 = a.m00; + var a01 = a.m01; + var a02 = a.m02; + var a03 = a.m03; + var a10 = a.m04; + var a11 = a.m05; + var a12 = a.m06; + var a13 = a.m07; + if (a !== out) { + out.m08 = a.m08; + out.m09 = a.m09; + out.m10 = a.m10; + out.m11 = a.m11; + out.m12 = a.m12; + out.m13 = a.m13; + out.m14 = a.m14; + out.m15 = a.m15; + } + out.m00 = a00 * c + a10 * s; + out.m01 = a01 * c + a11 * s; + out.m02 = a02 * c + a12 * s; + out.m03 = a03 * c + a13 * s; + out.m04 = a10 * c - a00 * s; + out.m05 = a11 * c - a01 * s; + out.m06 = a12 * c - a02 * s; + out.m07 = a13 * c - a03 * s; + return out; + }; + Mat4.fromTranslation = function fromTranslation(out, v) { + out.m00 = 1; + out.m01 = 0; + out.m02 = 0; + out.m03 = 0; + out.m04 = 0; + out.m05 = 1; + out.m06 = 0; + out.m07 = 0; + out.m08 = 0; + out.m09 = 0; + out.m10 = 1; + out.m11 = 0; + out.m12 = v.x; + out.m13 = v.y; + out.m14 = v.z; + out.m15 = 1; + return out; + }; + Mat4.fromScaling = function fromScaling(out, v) { + out.m00 = v.x; + out.m01 = 0; + out.m02 = 0; + out.m03 = 0; + out.m04 = 0; + out.m05 = v.y; + out.m06 = 0; + out.m07 = 0; + out.m08 = 0; + out.m09 = 0; + out.m10 = v.z; + out.m11 = 0; + out.m12 = 0; + out.m13 = 0; + out.m14 = 0; + out.m15 = 1; + return out; + }; + Mat4.fromRotation = function fromRotation(out, rad, axis) { + var x = axis.x; + var y = axis.y; + var z = axis.z; + var len = Math.sqrt(x * x + y * y + z * z); + if (Math.abs(len) < EPSILON$3) { + return null; + } + len = 1 / len; + x *= len; + y *= len; + z *= len; + var s = Math.sin(rad); + var c = Math.cos(rad); + var t = 1 - c; + out.m00 = x * x * t + c; + out.m01 = y * x * t + z * s; + out.m02 = z * x * t - y * s; + out.m03 = 0; + out.m04 = x * y * t - z * s; + out.m05 = y * y * t + c; + out.m06 = z * y * t + x * s; + out.m07 = 0; + out.m08 = x * z * t + y * s; + out.m09 = y * z * t - x * s; + out.m10 = z * z * t + c; + out.m11 = 0; + out.m12 = 0; + out.m13 = 0; + out.m14 = 0; + out.m15 = 1; + return out; + }; + Mat4.fromXRotation = function fromXRotation(out, rad) { + var s = Math.sin(rad); + var c = Math.cos(rad); + out.m00 = 1; + out.m01 = 0; + out.m02 = 0; + out.m03 = 0; + out.m04 = 0; + out.m05 = c; + out.m06 = s; + out.m07 = 0; + out.m08 = 0; + out.m09 = -s; + out.m10 = c; + out.m11 = 0; + out.m12 = 0; + out.m13 = 0; + out.m14 = 0; + out.m15 = 1; + return out; + }; + Mat4.fromYRotation = function fromYRotation(out, rad) { + var s = Math.sin(rad); + var c = Math.cos(rad); + out.m00 = c; + out.m01 = 0; + out.m02 = -s; + out.m03 = 0; + out.m04 = 0; + out.m05 = 1; + out.m06 = 0; + out.m07 = 0; + out.m08 = s; + out.m09 = 0; + out.m10 = c; + out.m11 = 0; + out.m12 = 0; + out.m13 = 0; + out.m14 = 0; + out.m15 = 1; + return out; + }; + Mat4.fromZRotation = function fromZRotation(out, rad) { + var s = Math.sin(rad); + var c = Math.cos(rad); + out.m00 = c; + out.m01 = s; + out.m02 = 0; + out.m03 = 0; + out.m04 = -s; + out.m05 = c; + out.m06 = 0; + out.m07 = 0; + out.m08 = 0; + out.m09 = 0; + out.m10 = 1; + out.m11 = 0; + out.m12 = 0; + out.m13 = 0; + out.m14 = 0; + out.m15 = 1; + return out; + }; + Mat4.fromRT = function fromRT(out, q, v) { + var x = q.x; + var y = q.y; + var z = q.z; + var w = q.w; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + out.m00 = 1 - (yy + zz); + out.m01 = xy + wz; + out.m02 = xz - wy; + out.m03 = 0; + out.m04 = xy - wz; + out.m05 = 1 - (xx + zz); + out.m06 = yz + wx; + out.m07 = 0; + out.m08 = xz + wy; + out.m09 = yz - wx; + out.m10 = 1 - (xx + yy); + out.m11 = 0; + out.m12 = v.x; + out.m13 = v.y; + out.m14 = v.z; + out.m15 = 1; + return out; + }; + Mat4.getTranslation = function getTranslation(out, mat) { + out.x = mat.m12; + out.y = mat.m13; + out.z = mat.m14; + return out; + }; + Mat4.getScaling = function getScaling(out, mat) { + var m00 = m3_1$1.m00 = mat.m00; + var m01 = m3_1$1.m01 = mat.m01; + var m02 = m3_1$1.m02 = mat.m02; + var m04 = m3_1$1.m03 = mat.m04; + var m05 = m3_1$1.m04 = mat.m05; + var m06 = m3_1$1.m05 = mat.m06; + var m08 = m3_1$1.m06 = mat.m08; + var m09 = m3_1$1.m07 = mat.m09; + var m10 = m3_1$1.m08 = mat.m10; + out.x = Math.sqrt(m00 * m00 + m01 * m01 + m02 * m02); + out.y = Math.sqrt(m04 * m04 + m05 * m05 + m06 * m06); + out.z = Math.sqrt(m08 * m08 + m09 * m09 + m10 * m10); + if (Mat3.determinant(m3_1$1) < 0) { + out.x *= -1; + } + return out; + }; + Mat4.getRotation = function getRotation(out, mat) { + var trace = mat.m00 + mat.m05 + mat.m10; + var S = 0; + if (trace > 0) { + S = Math.sqrt(trace + 1.0) * 2; + out.w = 0.25 * S; + out.x = (mat.m06 - mat.m09) / S; + out.y = (mat.m08 - mat.m02) / S; + out.z = (mat.m01 - mat.m04) / S; + } else if (mat.m00 > mat.m05 && mat.m00 > mat.m10) { + S = Math.sqrt(1.0 + mat.m00 - mat.m05 - mat.m10) * 2; + out.w = (mat.m06 - mat.m09) / S; + out.x = 0.25 * S; + out.y = (mat.m01 + mat.m04) / S; + out.z = (mat.m08 + mat.m02) / S; + } else if (mat.m05 > mat.m10) { + S = Math.sqrt(1.0 + mat.m05 - mat.m00 - mat.m10) * 2; + out.w = (mat.m08 - mat.m02) / S; + out.x = (mat.m01 + mat.m04) / S; + out.y = 0.25 * S; + out.z = (mat.m06 + mat.m09) / S; + } else { + S = Math.sqrt(1.0 + mat.m10 - mat.m00 - mat.m05) * 2; + out.w = (mat.m01 - mat.m04) / S; + out.x = (mat.m08 + mat.m02) / S; + out.y = (mat.m06 + mat.m09) / S; + out.z = 0.25 * S; + } + return out; + }; + Mat4.toRTS = function toRTS(m, q, v, s) { + var sx = Vec3.set(v3_1$2, m.m00, m.m01, m.m02).length(); + var sy = Vec3.set(v3_1$2, m.m04, m.m05, m.m06).length(); + var sz = Vec3.set(v3_1$2, m.m08, m.m09, m.m10).length(); + m3_1$1.m00 = m.m00 / sx; + m3_1$1.m01 = m.m01 / sx; + m3_1$1.m02 = m.m02 / sx; + m3_1$1.m03 = m.m04 / sy; + m3_1$1.m04 = m.m05 / sy; + m3_1$1.m05 = m.m06 / sy; + m3_1$1.m06 = m.m08 / sz; + m3_1$1.m07 = m.m09 / sz; + m3_1$1.m08 = m.m10 / sz; + var det = Mat3.determinant(m3_1$1); + if (s) { + Vec3.set(s, sx, sy, sz); + if (det < 0) { + s.x *= -1; + } + } + if (v) { + Vec3.set(v, m.m12, m.m13, m.m14); + } + if (q) { + if (det < 0) { + m3_1$1.m00 *= -1; + m3_1$1.m01 *= -1; + m3_1$1.m02 *= -1; + } + Quat.fromMat3(q, m3_1$1); + } + }; + Mat4.toSRT = function toSRT(m, q, v, s) { + var sx = Vec3.set(v3_1$2, m.m00, m.m01, m.m02).length(); + var sy = Vec3.set(v3_1$2, m.m04, m.m05, m.m06).length(); + var sz = Vec3.set(v3_1$2, m.m08, m.m09, m.m10).length(); + if (s) { + s.x = sx; + s.y = sy; + s.z = sz; + } + if (v) { + Vec3.set(v, m.m12, m.m13, m.m14); + } + if (q) { + m3_1$1.m00 = m.m00 / sx; + m3_1$1.m01 = m.m01 / sx; + m3_1$1.m02 = m.m02 / sx; + m3_1$1.m03 = m.m04 / sy; + m3_1$1.m04 = m.m05 / sy; + m3_1$1.m05 = m.m06 / sy; + m3_1$1.m06 = m.m08 / sz; + m3_1$1.m07 = m.m09 / sz; + m3_1$1.m08 = m.m10 / sz; + var det = Mat3.determinant(m3_1$1); + if (det < 0) { + if (s) s.x *= -1; + m3_1$1.m00 *= -1; + m3_1$1.m01 *= -1; + m3_1$1.m02 *= -1; + } + Quat.fromMat3(q, m3_1$1); + } + }; + Mat4.toEuler = function toEuler(m, v) { + Mat3.set(m3_1$1, m.m00, m.m01, m.m02, m.m04, m.m05, m.m06, m.m08, m.m09, m.m10); + return Mat3.toEuler(m3_1$1, v); + }; + Mat4.fromRTS = function fromRTS(out, q, v, s) { + var x = q.x; + var y = q.y; + var z = q.z; + var w = q.w; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + var sx = s.x; + var sy = s.y; + var sz = s.z; + out.m00 = (1 - (yy + zz)) * sx; + out.m01 = (xy + wz) * sx; + out.m02 = (xz - wy) * sx; + out.m03 = 0; + out.m04 = (xy - wz) * sy; + out.m05 = (1 - (xx + zz)) * sy; + out.m06 = (yz + wx) * sy; + out.m07 = 0; + out.m08 = (xz + wy) * sz; + out.m09 = (yz - wx) * sz; + out.m10 = (1 - (xx + yy)) * sz; + out.m11 = 0; + out.m12 = v.x; + out.m13 = v.y; + out.m14 = v.z; + out.m15 = 1; + return out; + }; + Mat4.fromSRT = function fromSRT(out, q, v, s) { + var x = q.x; + var y = q.y; + var z = q.z; + var w = q.w; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + var sx = s.x; + var sy = s.y; + var sz = s.z; + out.m00 = (1 - (yy + zz)) * sx; + out.m01 = (xy + wz) * sx; + out.m02 = (xz - wy) * sx; + out.m03 = 0; + out.m04 = (xy - wz) * sy; + out.m05 = (1 - (xx + zz)) * sy; + out.m06 = (yz + wx) * sy; + out.m07 = 0; + out.m08 = (xz + wy) * sz; + out.m09 = (yz - wx) * sz; + out.m10 = (1 - (xx + yy)) * sz; + out.m11 = 0; + out.m12 = v.x; + out.m13 = v.y; + out.m14 = v.z; + out.m15 = 1; + return out; + }; + Mat4.fromRTSOrigin = function fromRTSOrigin(out, q, v, s, o) { + var x = q.x; + var y = q.y; + var z = q.z; + var w = q.w; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + var sx = s.x; + var sy = s.y; + var sz = s.z; + var ox = o.x; + var oy = o.y; + var oz = o.z; + out.m00 = (1 - (yy + zz)) * sx; + out.m01 = (xy + wz) * sx; + out.m02 = (xz - wy) * sx; + out.m03 = 0; + out.m04 = (xy - wz) * sy; + out.m05 = (1 - (xx + zz)) * sy; + out.m06 = (yz + wx) * sy; + out.m07 = 0; + out.m08 = (xz + wy) * sz; + out.m09 = (yz - wx) * sz; + out.m10 = (1 - (xx + yy)) * sz; + out.m11 = 0; + out.m12 = v.x + ox - (out.m00 * ox + out.m04 * oy + out.m08 * oz); + out.m13 = v.y + oy - (out.m01 * ox + out.m05 * oy + out.m09 * oz); + out.m14 = v.z + oz - (out.m02 * ox + out.m06 * oy + out.m10 * oz); + out.m15 = 1; + return out; + }; + Mat4.fromSRTOrigin = function fromSRTOrigin(out, q, v, s, o) { + var x = q.x; + var y = q.y; + var z = q.z; + var w = q.w; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + var sx = s.x; + var sy = s.y; + var sz = s.z; + var ox = o.x; + var oy = o.y; + var oz = o.z; + out.m00 = (1 - (yy + zz)) * sx; + out.m01 = (xy + wz) * sx; + out.m02 = (xz - wy) * sx; + out.m03 = 0; + out.m04 = (xy - wz) * sy; + out.m05 = (1 - (xx + zz)) * sy; + out.m06 = (yz + wx) * sy; + out.m07 = 0; + out.m08 = (xz + wy) * sz; + out.m09 = (yz - wx) * sz; + out.m10 = (1 - (xx + yy)) * sz; + out.m11 = 0; + out.m12 = v.x + ox - (out.m00 * ox + out.m04 * oy + out.m08 * oz); + out.m13 = v.y + oy - (out.m01 * ox + out.m05 * oy + out.m09 * oz); + out.m14 = v.z + oz - (out.m02 * ox + out.m06 * oy + out.m10 * oz); + out.m15 = 1; + return out; + }; + Mat4.fromQuat = function fromQuat(out, q) { + var x = q.x; + var y = q.y; + var z = q.z; + var w = q.w; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var yx = y * x2; + var yy = y * y2; + var zx = z * x2; + var zy = z * y2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + out.m00 = 1 - yy - zz; + out.m01 = yx + wz; + out.m02 = zx - wy; + out.m03 = 0; + out.m04 = yx - wz; + out.m05 = 1 - xx - zz; + out.m06 = zy + wx; + out.m07 = 0; + out.m08 = zx + wy; + out.m09 = zy - wx; + out.m10 = 1 - xx - yy; + out.m11 = 0; + out.m12 = 0; + out.m13 = 0; + out.m14 = 0; + out.m15 = 1; + return out; + }; + Mat4.frustum = function frustum(out, left, right, bottom, top, near, far) { + var rl = 1 / (right - left); + var tb = 1 / (top - bottom); + var nf = 1 / (near - far); + out.m00 = near * 2 * rl; + out.m01 = 0; + out.m02 = 0; + out.m03 = 0; + out.m04 = 0; + out.m05 = near * 2 * tb; + out.m06 = 0; + out.m07 = 0; + out.m08 = (right + left) * rl; + out.m09 = (top + bottom) * tb; + out.m10 = (far + near) * nf; + out.m11 = -1; + out.m12 = 0; + out.m13 = 0; + out.m14 = far * near * 2 * nf; + out.m15 = 0; + return out; + }; + Mat4.perspective = function perspective(out, fov, aspect, near, far, isFOVY, minClipZ, projectionSignY, orientation) { + if (isFOVY === void 0) { + isFOVY = true; + } + if (minClipZ === void 0) { + minClipZ = -1; + } + if (projectionSignY === void 0) { + projectionSignY = 1; + } + if (orientation === void 0) { + orientation = 0; + } + var f = 1.0 / Math.tan(fov / 2); + var nf = 1 / (near - far); + var x = isFOVY ? f / aspect : f; + var y = (isFOVY ? f : f * aspect) * projectionSignY; + var preTransform = preTransforms[orientation]; + out.m00 = x * preTransform[0]; + out.m01 = x * preTransform[1]; + out.m02 = 0; + out.m03 = 0; + out.m04 = y * preTransform[2]; + out.m05 = y * preTransform[3]; + out.m06 = 0; + out.m07 = 0; + out.m08 = 0; + out.m09 = 0; + out.m10 = (far - minClipZ * near) * nf; + out.m11 = -1; + out.m12 = 0; + out.m13 = 0; + out.m14 = far * near * nf * (1 - minClipZ); + out.m15 = 0; + return out; + }; + Mat4.ortho = function ortho(out, left, right, bottom, top, near, far, minClipZ, projectionSignY, orientation) { + if (minClipZ === void 0) { + minClipZ = -1; + } + if (projectionSignY === void 0) { + projectionSignY = 1; + } + if (orientation === void 0) { + orientation = 0; + } + var lr = 1 / (left - right); + var bt = 1 / (bottom - top) * projectionSignY; + var nf = 1 / (near - far); + var x = -2 * lr; + var y = -2 * bt; + var dx = (left + right) * lr; + var dy = (top + bottom) * bt; + var preTransform = preTransforms[orientation]; + out.m00 = x * preTransform[0]; + out.m01 = x * preTransform[1]; + out.m02 = 0; + out.m03 = 0; + out.m04 = y * preTransform[2]; + out.m05 = y * preTransform[3]; + out.m06 = 0; + out.m07 = 0; + out.m08 = 0; + out.m09 = 0; + out.m10 = nf * (1 - minClipZ); + out.m11 = 0; + out.m12 = dx * preTransform[0] + dy * preTransform[2]; + out.m13 = dx * preTransform[1] + dy * preTransform[3]; + out.m14 = (near - minClipZ * far) * nf; + out.m15 = 1; + return out; + }; + Mat4.lookAt = function lookAt(out, eye, center, up) { + var eyex = eye.x; + var eyey = eye.y; + var eyez = eye.z; + var upx = up.x; + var upy = up.y; + var upz = up.z; + var centerx = center.x; + var centery = center.y; + var centerz = center.z; + var z0 = eyex - centerx; + var z1 = eyey - centery; + var z2 = eyez - centerz; + var len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2); + z0 *= len; + z1 *= len; + z2 *= len; + var x0 = upy * z2 - upz * z1; + var x1 = upz * z0 - upx * z2; + var x2 = upx * z1 - upy * z0; + len = 1 / Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2); + x0 *= len; + x1 *= len; + x2 *= len; + var y0 = z1 * x2 - z2 * x1; + var y1 = z2 * x0 - z0 * x2; + var y2 = z0 * x1 - z1 * x0; + out.m00 = x0; + out.m01 = y0; + out.m02 = z0; + out.m03 = 0; + out.m04 = x1; + out.m05 = y1; + out.m06 = z1; + out.m07 = 0; + out.m08 = x2; + out.m09 = y2; + out.m10 = z2; + out.m11 = 0; + out.m12 = -(x0 * eyex + x1 * eyey + x2 * eyez); + out.m13 = -(y0 * eyex + y1 * eyey + y2 * eyez); + out.m14 = -(z0 * eyex + z1 * eyey + z2 * eyez); + out.m15 = 1; + return out; + }; + Mat4.inverseTranspose = function inverseTranspose(out, a) { + var a00 = a.m00; + var a01 = a.m01; + var a02 = a.m02; + var a03 = a.m03; + var a10 = a.m04; + var a11 = a.m05; + var a12 = a.m06; + var a13 = a.m07; + var a20 = a.m08; + var a21 = a.m09; + var a22 = a.m10; + var a23 = a.m11; + var a30 = a.m12; + var a31 = a.m13; + var a32 = a.m14; + var a33 = a.m15; + var b00 = a00 * a11 - a01 * a10; + var b01 = a00 * a12 - a02 * a10; + var b02 = a00 * a13 - a03 * a10; + var b03 = a01 * a12 - a02 * a11; + var b04 = a01 * a13 - a03 * a11; + var b05 = a02 * a13 - a03 * a12; + var b06 = a20 * a31 - a21 * a30; + var b07 = a20 * a32 - a22 * a30; + var b08 = a20 * a33 - a23 * a30; + var b09 = a21 * a32 - a22 * a31; + var b10 = a21 * a33 - a23 * a31; + var b11 = a22 * a33 - a23 * a32; + var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + if (!det) { + return null; + } + det = 1.0 / det; + out.m00 = (a11 * b11 - a12 * b10 + a13 * b09) * det; + out.m01 = (a12 * b08 - a10 * b11 - a13 * b07) * det; + out.m02 = (a10 * b10 - a11 * b08 + a13 * b06) * det; + out.m03 = 0; + out.m04 = (a02 * b10 - a01 * b11 - a03 * b09) * det; + out.m05 = (a00 * b11 - a02 * b08 + a03 * b07) * det; + out.m06 = (a01 * b08 - a00 * b10 - a03 * b06) * det; + out.m07 = 0; + out.m08 = (a31 * b05 - a32 * b04 + a33 * b03) * det; + out.m09 = (a32 * b02 - a30 * b05 - a33 * b01) * det; + out.m10 = (a30 * b04 - a31 * b02 + a33 * b00) * det; + out.m11 = 0; + out.m12 = 0; + out.m13 = 0; + out.m14 = 0; + out.m15 = 1; + return out; + }; + Mat4.toArray = function toArray(out, m, ofs) { + if (ofs === void 0) { + ofs = 0; + } + out[ofs + 0] = m.m00; + out[ofs + 1] = m.m01; + out[ofs + 2] = m.m02; + out[ofs + 3] = m.m03; + out[ofs + 4] = m.m04; + out[ofs + 5] = m.m05; + out[ofs + 6] = m.m06; + out[ofs + 7] = m.m07; + out[ofs + 8] = m.m08; + out[ofs + 9] = m.m09; + out[ofs + 10] = m.m10; + out[ofs + 11] = m.m11; + out[ofs + 12] = m.m12; + out[ofs + 13] = m.m13; + out[ofs + 14] = m.m14; + out[ofs + 15] = m.m15; + return out; + }; + Mat4.fromArray = function fromArray(out, arr, ofs) { + if (ofs === void 0) { + ofs = 0; + } + out.m00 = arr[ofs + 0]; + out.m01 = arr[ofs + 1]; + out.m02 = arr[ofs + 2]; + out.m03 = arr[ofs + 3]; + out.m04 = arr[ofs + 4]; + out.m05 = arr[ofs + 5]; + out.m06 = arr[ofs + 6]; + out.m07 = arr[ofs + 7]; + out.m08 = arr[ofs + 8]; + out.m09 = arr[ofs + 9]; + out.m10 = arr[ofs + 10]; + out.m11 = arr[ofs + 11]; + out.m12 = arr[ofs + 12]; + out.m13 = arr[ofs + 13]; + out.m14 = arr[ofs + 14]; + out.m15 = arr[ofs + 15]; + return out; + }; + Mat4.add = function add(out, a, b) { + out.m00 = a.m00 + b.m00; + out.m01 = a.m01 + b.m01; + out.m02 = a.m02 + b.m02; + out.m03 = a.m03 + b.m03; + out.m04 = a.m04 + b.m04; + out.m05 = a.m05 + b.m05; + out.m06 = a.m06 + b.m06; + out.m07 = a.m07 + b.m07; + out.m08 = a.m08 + b.m08; + out.m09 = a.m09 + b.m09; + out.m10 = a.m10 + b.m10; + out.m11 = a.m11 + b.m11; + out.m12 = a.m12 + b.m12; + out.m13 = a.m13 + b.m13; + out.m14 = a.m14 + b.m14; + out.m15 = a.m15 + b.m15; + return out; + }; + Mat4.subtract = function subtract(out, a, b) { + out.m00 = a.m00 - b.m00; + out.m01 = a.m01 - b.m01; + out.m02 = a.m02 - b.m02; + out.m03 = a.m03 - b.m03; + out.m04 = a.m04 - b.m04; + out.m05 = a.m05 - b.m05; + out.m06 = a.m06 - b.m06; + out.m07 = a.m07 - b.m07; + out.m08 = a.m08 - b.m08; + out.m09 = a.m09 - b.m09; + out.m10 = a.m10 - b.m10; + out.m11 = a.m11 - b.m11; + out.m12 = a.m12 - b.m12; + out.m13 = a.m13 - b.m13; + out.m14 = a.m14 - b.m14; + out.m15 = a.m15 - b.m15; + return out; + }; + Mat4.multiplyScalar = function multiplyScalar(out, a, b) { + out.m00 = a.m00 * b; + out.m01 = a.m01 * b; + out.m02 = a.m02 * b; + out.m03 = a.m03 * b; + out.m04 = a.m04 * b; + out.m05 = a.m05 * b; + out.m06 = a.m06 * b; + out.m07 = a.m07 * b; + out.m08 = a.m08 * b; + out.m09 = a.m09 * b; + out.m10 = a.m10 * b; + out.m11 = a.m11 * b; + out.m12 = a.m12 * b; + out.m13 = a.m13 * b; + out.m14 = a.m14 * b; + out.m15 = a.m15 * b; + return out; + }; + Mat4.multiplyScalarAndAdd = function multiplyScalarAndAdd(out, a, b, scale) { + out.m00 = a.m00 + b.m00 * scale; + out.m01 = a.m01 + b.m01 * scale; + out.m02 = a.m02 + b.m02 * scale; + out.m03 = a.m03 + b.m03 * scale; + out.m04 = a.m04 + b.m04 * scale; + out.m05 = a.m05 + b.m05 * scale; + out.m06 = a.m06 + b.m06 * scale; + out.m07 = a.m07 + b.m07 * scale; + out.m08 = a.m08 + b.m08 * scale; + out.m09 = a.m09 + b.m09 * scale; + out.m10 = a.m10 + b.m10 * scale; + out.m11 = a.m11 + b.m11 * scale; + out.m12 = a.m12 + b.m12 * scale; + out.m13 = a.m13 + b.m13 * scale; + out.m14 = a.m14 + b.m14 * scale; + out.m15 = a.m15 + b.m15 * scale; + return out; + }; + Mat4.strictEquals = function strictEquals(a, b) { + return a.m00 === b.m00 && a.m01 === b.m01 && a.m02 === b.m02 && a.m03 === b.m03 && a.m04 === b.m04 && a.m05 === b.m05 && a.m06 === b.m06 && a.m07 === b.m07 && a.m08 === b.m08 && a.m09 === b.m09 && a.m10 === b.m10 && a.m11 === b.m11 && a.m12 === b.m12 && a.m13 === b.m13 && a.m14 === b.m14 && a.m15 === b.m15; + }; + Mat4.equals = function equals(a, b, epsilon) { + if (epsilon === void 0) { + epsilon = EPSILON$3; + } + return Math.abs(a.m00 - b.m00) <= epsilon * Math.max(1.0, Math.abs(a.m00), Math.abs(b.m00)) && Math.abs(a.m01 - b.m01) <= epsilon * Math.max(1.0, Math.abs(a.m01), Math.abs(b.m01)) && Math.abs(a.m02 - b.m02) <= epsilon * Math.max(1.0, Math.abs(a.m02), Math.abs(b.m02)) && Math.abs(a.m03 - b.m03) <= epsilon * Math.max(1.0, Math.abs(a.m03), Math.abs(b.m03)) && Math.abs(a.m04 - b.m04) <= epsilon * Math.max(1.0, Math.abs(a.m04), Math.abs(b.m04)) && Math.abs(a.m05 - b.m05) <= epsilon * Math.max(1.0, Math.abs(a.m05), Math.abs(b.m05)) && Math.abs(a.m06 - b.m06) <= epsilon * Math.max(1.0, Math.abs(a.m06), Math.abs(b.m06)) && Math.abs(a.m07 - b.m07) <= epsilon * Math.max(1.0, Math.abs(a.m07), Math.abs(b.m07)) && Math.abs(a.m08 - b.m08) <= epsilon * Math.max(1.0, Math.abs(a.m08), Math.abs(b.m08)) && Math.abs(a.m09 - b.m09) <= epsilon * Math.max(1.0, Math.abs(a.m09), Math.abs(b.m09)) && Math.abs(a.m10 - b.m10) <= epsilon * Math.max(1.0, Math.abs(a.m10), Math.abs(b.m10)) && Math.abs(a.m11 - b.m11) <= epsilon * Math.max(1.0, Math.abs(a.m11), Math.abs(b.m11)) && Math.abs(a.m12 - b.m12) <= epsilon * Math.max(1.0, Math.abs(a.m12), Math.abs(b.m12)) && Math.abs(a.m13 - b.m13) <= epsilon * Math.max(1.0, Math.abs(a.m13), Math.abs(b.m13)) && Math.abs(a.m14 - b.m14) <= epsilon * Math.max(1.0, Math.abs(a.m14), Math.abs(b.m14)) && Math.abs(a.m15 - b.m15) <= epsilon * Math.max(1.0, Math.abs(a.m15), Math.abs(b.m15)); + }; + function Mat4(m00, m01, m02, m03, m04, m05, m06, m07, m08, m09, m10, m11, m12, m13, m14, m15) { + var _this; + if (m00 === void 0) { + m00 = 1; + } + if (m01 === void 0) { + m01 = 0; + } + if (m02 === void 0) { + m02 = 0; + } + if (m03 === void 0) { + m03 = 0; + } + if (m04 === void 0) { + m04 = 0; + } + if (m05 === void 0) { + m05 = 1; + } + if (m06 === void 0) { + m06 = 0; + } + if (m07 === void 0) { + m07 = 0; + } + if (m08 === void 0) { + m08 = 0; + } + if (m09 === void 0) { + m09 = 0; + } + if (m10 === void 0) { + m10 = 1; + } + if (m11 === void 0) { + m11 = 0; + } + if (m12 === void 0) { + m12 = 0; + } + if (m13 === void 0) { + m13 = 0; + } + if (m14 === void 0) { + m14 = 0; + } + if (m15 === void 0) { + m15 = 1; + } + _this = _ValueType.call(this) || this; + if (typeof m00 === 'object') { + _this.m00 = m00.m00; + _this.m01 = m00.m01; + _this.m02 = m00.m02; + _this.m03 = m00.m03; + _this.m04 = m00.m04; + _this.m05 = m00.m05; + _this.m06 = m00.m06; + _this.m07 = m00.m07; + _this.m08 = m00.m08; + _this.m09 = m00.m09; + _this.m10 = m00.m10; + _this.m11 = m00.m11; + _this.m12 = m00.m12; + _this.m13 = m00.m13; + _this.m14 = m00.m14; + _this.m15 = m00.m15; + } else { + _this.m00 = m00; + _this.m01 = m01; + _this.m02 = m02; + _this.m03 = m03; + _this.m04 = m04; + _this.m05 = m05; + _this.m06 = m06; + _this.m07 = m07; + _this.m08 = m08; + _this.m09 = m09; + _this.m10 = m10; + _this.m11 = m11; + _this.m12 = m12; + _this.m13 = m13; + _this.m14 = m14; + _this.m15 = m15; + } + return _this; + } + var _proto = Mat4.prototype; + _proto.clone = function clone() { + return new Mat4(this.m00, this.m01, this.m02, this.m03, this.m04, this.m05, this.m06, this.m07, this.m08, this.m09, this.m10, this.m11, this.m12, this.m13, this.m14, this.m15); + }; + _proto.set = function set(m00, m01, m02, m03, m04, m05, m06, m07, m08, m09, m10, m11, m12, m13, m14, m15) { + if (m00 === void 0) { + m00 = 1; + } + if (m01 === void 0) { + m01 = 0; + } + if (m02 === void 0) { + m02 = 0; + } + if (m03 === void 0) { + m03 = 0; + } + if (m04 === void 0) { + m04 = 0; + } + if (m05 === void 0) { + m05 = 1; + } + if (m06 === void 0) { + m06 = 0; + } + if (m07 === void 0) { + m07 = 0; + } + if (m08 === void 0) { + m08 = 0; + } + if (m09 === void 0) { + m09 = 0; + } + if (m10 === void 0) { + m10 = 1; + } + if (m11 === void 0) { + m11 = 0; + } + if (m12 === void 0) { + m12 = 0; + } + if (m13 === void 0) { + m13 = 0; + } + if (m14 === void 0) { + m14 = 0; + } + if (m15 === void 0) { + m15 = 1; + } + if (typeof m00 === 'object') { + this.m01 = m00.m01; + this.m02 = m00.m02; + this.m03 = m00.m03; + this.m04 = m00.m04; + this.m05 = m00.m05; + this.m06 = m00.m06; + this.m07 = m00.m07; + this.m08 = m00.m08; + this.m09 = m00.m09; + this.m10 = m00.m10; + this.m11 = m00.m11; + this.m12 = m00.m12; + this.m13 = m00.m13; + this.m14 = m00.m14; + this.m15 = m00.m15; + this.m00 = m00.m00; + } else { + this.m01 = m01; + this.m02 = m02; + this.m03 = m03; + this.m04 = m04; + this.m05 = m05; + this.m06 = m06; + this.m07 = m07; + this.m08 = m08; + this.m09 = m09; + this.m10 = m10; + this.m11 = m11; + this.m12 = m12; + this.m13 = m13; + this.m14 = m14; + this.m15 = m15; + this.m00 = m00; + } + return this; + }; + _proto.equals = function equals(other, epsilon) { + if (epsilon === void 0) { + epsilon = EPSILON$3; + } + var hasInf = Math.abs(this.m00) === Infinity || Math.abs(this.m01) === Infinity || Math.abs(this.m02) === Infinity || Math.abs(this.m03) === Infinity || Math.abs(this.m04) === Infinity || Math.abs(this.m05) === Infinity || Math.abs(this.m06) === Infinity || Math.abs(this.m07) === Infinity || Math.abs(this.m08) === Infinity || Math.abs(this.m09) === Infinity || Math.abs(this.m10) === Infinity || Math.abs(this.m11) === Infinity || Math.abs(this.m12) === Infinity || Math.abs(this.m13) === Infinity || Math.abs(this.m14) === Infinity || Math.abs(this.m15) === Infinity; + return !hasInf && Math.abs(this.m00 - other.m00) <= epsilon * Math.max(1.0, Math.abs(this.m00), Math.abs(other.m00)) && Math.abs(this.m01 - other.m01) <= epsilon * Math.max(1.0, Math.abs(this.m01), Math.abs(other.m01)) && Math.abs(this.m02 - other.m02) <= epsilon * Math.max(1.0, Math.abs(this.m02), Math.abs(other.m02)) && Math.abs(this.m03 - other.m03) <= epsilon * Math.max(1.0, Math.abs(this.m03), Math.abs(other.m03)) && Math.abs(this.m04 - other.m04) <= epsilon * Math.max(1.0, Math.abs(this.m04), Math.abs(other.m04)) && Math.abs(this.m05 - other.m05) <= epsilon * Math.max(1.0, Math.abs(this.m05), Math.abs(other.m05)) && Math.abs(this.m06 - other.m06) <= epsilon * Math.max(1.0, Math.abs(this.m06), Math.abs(other.m06)) && Math.abs(this.m07 - other.m07) <= epsilon * Math.max(1.0, Math.abs(this.m07), Math.abs(other.m07)) && Math.abs(this.m08 - other.m08) <= epsilon * Math.max(1.0, Math.abs(this.m08), Math.abs(other.m08)) && Math.abs(this.m09 - other.m09) <= epsilon * Math.max(1.0, Math.abs(this.m09), Math.abs(other.m09)) && Math.abs(this.m10 - other.m10) <= epsilon * Math.max(1.0, Math.abs(this.m10), Math.abs(other.m10)) && Math.abs(this.m11 - other.m11) <= epsilon * Math.max(1.0, Math.abs(this.m11), Math.abs(other.m11)) && Math.abs(this.m12 - other.m12) <= epsilon * Math.max(1.0, Math.abs(this.m12), Math.abs(other.m12)) && Math.abs(this.m13 - other.m13) <= epsilon * Math.max(1.0, Math.abs(this.m13), Math.abs(other.m13)) && Math.abs(this.m14 - other.m14) <= epsilon * Math.max(1.0, Math.abs(this.m14), Math.abs(other.m14)) && Math.abs(this.m15 - other.m15) <= epsilon * Math.max(1.0, Math.abs(this.m15), Math.abs(other.m15)); + }; + _proto.strictEquals = function strictEquals(other) { + return this.m00 === other.m00 && this.m01 === other.m01 && this.m02 === other.m02 && this.m03 === other.m03 && this.m04 === other.m04 && this.m05 === other.m05 && this.m06 === other.m06 && this.m07 === other.m07 && this.m08 === other.m08 && this.m09 === other.m09 && this.m10 === other.m10 && this.m11 === other.m11 && this.m12 === other.m12 && this.m13 === other.m13 && this.m14 === other.m14 && this.m15 === other.m15; + }; + _proto.toString = function toString() { + return "[\n" + this.m00 + ", " + this.m01 + ", " + this.m02 + ", " + this.m03 + ",\n" + this.m04 + ", " + this.m05 + ", " + this.m06 + ", " + this.m07 + ",\n" + this.m08 + ", " + this.m09 + ", " + this.m10 + ", " + this.m11 + ",\n" + this.m12 + ", " + this.m13 + ", " + this.m14 + ", " + this.m15 + "\n" + ']'; + }; + _proto.identity = function identity() { + this.m00 = 1; + this.m01 = 0; + this.m02 = 0; + this.m03 = 0; + this.m04 = 0; + this.m05 = 1; + this.m06 = 0; + this.m07 = 0; + this.m08 = 0; + this.m09 = 0; + this.m10 = 1; + this.m11 = 0; + this.m12 = 0; + this.m13 = 0; + this.m14 = 0; + this.m15 = 1; + return this; + }; + _proto.zero = function zero() { + this.m00 = 0; + this.m01 = 0; + this.m02 = 0; + this.m03 = 0; + this.m04 = 0; + this.m05 = 0; + this.m06 = 0; + this.m07 = 0; + this.m08 = 0; + this.m09 = 0; + this.m10 = 0; + this.m11 = 0; + this.m12 = 0; + this.m13 = 0; + this.m14 = 0; + this.m15 = 0; + return this; + }; + _proto.transpose = function transpose() { + var a01 = this.m01; + var a02 = this.m02; + var a03 = this.m03; + var a12 = this.m06; + var a13 = this.m07; + var a23 = this.m11; + this.m01 = this.m04; + this.m02 = this.m08; + this.m03 = this.m12; + this.m04 = a01; + this.m06 = this.m09; + this.m07 = this.m13; + this.m08 = a02; + this.m09 = a12; + this.m11 = this.m14; + this.m12 = a03; + this.m13 = a13; + this.m14 = a23; + return this; + }; + _proto.invert = function invert() { + var a00 = this.m00; + var a01 = this.m01; + var a02 = this.m02; + var a03 = this.m03; + var a10 = this.m04; + var a11 = this.m05; + var a12 = this.m06; + var a13 = this.m07; + var a20 = this.m08; + var a21 = this.m09; + var a22 = this.m10; + var a23 = this.m11; + var a30 = this.m12; + var a31 = this.m13; + var a32 = this.m14; + var a33 = this.m15; + var b00 = a00 * a11 - a01 * a10; + var b01 = a00 * a12 - a02 * a10; + var b02 = a00 * a13 - a03 * a10; + var b03 = a01 * a12 - a02 * a11; + var b04 = a01 * a13 - a03 * a11; + var b05 = a02 * a13 - a03 * a12; + var b06 = a20 * a31 - a21 * a30; + var b07 = a20 * a32 - a22 * a30; + var b08 = a20 * a33 - a23 * a30; + var b09 = a21 * a32 - a22 * a31; + var b10 = a21 * a33 - a23 * a31; + var b11 = a22 * a33 - a23 * a32; + var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + if (det === 0) { + this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + return this; + } + det = 1.0 / det; + this.m00 = (a11 * b11 - a12 * b10 + a13 * b09) * det; + this.m01 = (a02 * b10 - a01 * b11 - a03 * b09) * det; + this.m02 = (a31 * b05 - a32 * b04 + a33 * b03) * det; + this.m03 = (a22 * b04 - a21 * b05 - a23 * b03) * det; + this.m04 = (a12 * b08 - a10 * b11 - a13 * b07) * det; + this.m05 = (a00 * b11 - a02 * b08 + a03 * b07) * det; + this.m06 = (a32 * b02 - a30 * b05 - a33 * b01) * det; + this.m07 = (a20 * b05 - a22 * b02 + a23 * b01) * det; + this.m08 = (a10 * b10 - a11 * b08 + a13 * b06) * det; + this.m09 = (a01 * b08 - a00 * b10 - a03 * b06) * det; + this.m10 = (a30 * b04 - a31 * b02 + a33 * b00) * det; + this.m11 = (a21 * b02 - a20 * b04 - a23 * b00) * det; + this.m12 = (a11 * b07 - a10 * b09 - a12 * b06) * det; + this.m13 = (a00 * b09 - a01 * b07 + a02 * b06) * det; + this.m14 = (a31 * b01 - a30 * b03 - a32 * b00) * det; + this.m15 = (a20 * b03 - a21 * b01 + a22 * b00) * det; + return this; + }; + _proto.determinant = function determinant() { + var a00 = this.m00; + var a01 = this.m01; + var a02 = this.m02; + var a03 = this.m03; + var a10 = this.m04; + var a11 = this.m05; + var a12 = this.m06; + var a13 = this.m07; + var a20 = this.m08; + var a21 = this.m09; + var a22 = this.m10; + var a23 = this.m11; + var a30 = this.m12; + var a31 = this.m13; + var a32 = this.m14; + var a33 = this.m15; + var b00 = a00 * a11 - a01 * a10; + var b01 = a00 * a12 - a02 * a10; + var b02 = a00 * a13 - a03 * a10; + var b03 = a01 * a12 - a02 * a11; + var b04 = a01 * a13 - a03 * a11; + var b05 = a02 * a13 - a03 * a12; + var b06 = a20 * a31 - a21 * a30; + var b07 = a20 * a32 - a22 * a30; + var b08 = a20 * a33 - a23 * a30; + var b09 = a21 * a32 - a22 * a31; + var b10 = a21 * a33 - a23 * a31; + var b11 = a22 * a33 - a23 * a32; + return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + }; + _proto.add = function add(mat) { + this.m00 += mat.m00; + this.m01 += mat.m01; + this.m02 += mat.m02; + this.m03 += mat.m03; + this.m04 += mat.m04; + this.m05 += mat.m05; + this.m06 += mat.m06; + this.m07 += mat.m07; + this.m08 += mat.m08; + this.m09 += mat.m09; + this.m10 += mat.m10; + this.m11 += mat.m11; + this.m12 += mat.m12; + this.m13 += mat.m13; + this.m14 += mat.m14; + this.m15 += mat.m15; + return this; + }; + _proto.subtract = function subtract(mat) { + this.m00 -= mat.m00; + this.m01 -= mat.m01; + this.m02 -= mat.m02; + this.m03 -= mat.m03; + this.m04 -= mat.m04; + this.m05 -= mat.m05; + this.m06 -= mat.m06; + this.m07 -= mat.m07; + this.m08 -= mat.m08; + this.m09 -= mat.m09; + this.m10 -= mat.m10; + this.m11 -= mat.m11; + this.m12 -= mat.m12; + this.m13 -= mat.m13; + this.m14 -= mat.m14; + this.m15 -= mat.m15; + return this; + }; + _proto.multiply = function multiply(mat) { + var a00 = this.m00; + var a01 = this.m01; + var a02 = this.m02; + var a03 = this.m03; + var a10 = this.m04; + var a11 = this.m05; + var a12 = this.m06; + var a13 = this.m07; + var a20 = this.m08; + var a21 = this.m09; + var a22 = this.m10; + var a23 = this.m11; + var a30 = this.m12; + var a31 = this.m13; + var a32 = this.m14; + var a33 = this.m15; + var b0 = mat.m00; + var b1 = mat.m01; + var b2 = mat.m02; + var b3 = mat.m03; + this.m00 = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + this.m01 = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + this.m02 = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + this.m03 = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = mat.m04; + b1 = mat.m05; + b2 = mat.m06; + b3 = mat.m07; + this.m04 = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + this.m05 = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + this.m06 = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + this.m07 = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = mat.m08; + b1 = mat.m09; + b2 = mat.m10; + b3 = mat.m11; + this.m08 = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + this.m09 = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + this.m10 = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + this.m11 = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = mat.m12; + b1 = mat.m13; + b2 = mat.m14; + b3 = mat.m15; + this.m12 = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + this.m13 = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + this.m14 = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + this.m15 = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + return this; + }; + _proto.multiplyScalar = function multiplyScalar(scalar) { + this.m00 *= scalar; + this.m01 *= scalar; + this.m02 *= scalar; + this.m03 *= scalar; + this.m04 *= scalar; + this.m05 *= scalar; + this.m06 *= scalar; + this.m07 *= scalar; + this.m08 *= scalar; + this.m09 *= scalar; + this.m10 *= scalar; + this.m11 *= scalar; + this.m12 *= scalar; + this.m13 *= scalar; + this.m14 *= scalar; + this.m15 *= scalar; + return this; + }; + _proto.translate = function translate(vec) { + this.m12 += vec.x; + this.m13 += vec.y; + this.m14 += vec.z; + return this; + }; + _proto.transform = function transform(vec) { + var x = vec.x, + y = vec.y, + z = vec.z; + var a00 = this.m00; + var a01 = this.m01; + var a02 = this.m02; + var a03 = this.m03; + var a10 = this.m04; + var a11 = this.m05; + var a12 = this.m06; + var a13 = this.m07; + var a20 = this.m08; + var a21 = this.m09; + var a22 = this.m10; + var a23 = this.m11; + this.m12 = a00 * x + a10 * y + a20 * z + this.m12; + this.m13 = a01 * x + a11 * y + a21 * z + this.m13; + this.m14 = a02 * x + a12 * y + a22 * z + this.m14; + this.m15 = a03 * x + a13 * y + a23 * z + this.m15; + return this; + }; + _proto.scale = function scale(vec) { + var x = vec.x; + var y = vec.y; + var z = vec.z; + this.m00 *= x; + this.m01 *= x; + this.m02 *= x; + this.m03 *= x; + this.m04 *= y; + this.m05 *= y; + this.m06 *= y; + this.m07 *= y; + this.m08 *= z; + this.m09 *= z; + this.m10 *= z; + this.m11 *= z; + return this; + }; + _proto.rotate = function rotate(rad, axis) { + var x = axis.x; + var y = axis.y; + var z = axis.z; + var len = Math.sqrt(x * x + y * y + z * z); + if (Math.abs(len) < EPSILON$3) { + return null; + } + len = 1 / len; + x *= len; + y *= len; + z *= len; + var s = Math.sin(rad); + var c = Math.cos(rad); + var t = 1 - c; + var a00 = this.m00; + var a01 = this.m01; + var a02 = this.m02; + var a03 = this.m03; + var a10 = this.m04; + var a11 = this.m05; + var a12 = this.m06; + var a13 = this.m07; + var a20 = this.m08; + var a21 = this.m09; + var a22 = this.m10; + var a23 = this.m11; + var b00 = x * x * t + c; + var b01 = y * x * t + z * s; + var b02 = z * x * t - y * s; + var b10 = x * y * t - z * s; + var b11 = y * y * t + c; + var b12 = z * y * t + x * s; + var b20 = x * z * t + y * s; + var b21 = y * z * t - x * s; + var b22 = z * z * t + c; + this.m00 = a00 * b00 + a10 * b01 + a20 * b02; + this.m01 = a01 * b00 + a11 * b01 + a21 * b02; + this.m02 = a02 * b00 + a12 * b01 + a22 * b02; + this.m03 = a03 * b00 + a13 * b01 + a23 * b02; + this.m04 = a00 * b10 + a10 * b11 + a20 * b12; + this.m05 = a01 * b10 + a11 * b11 + a21 * b12; + this.m06 = a02 * b10 + a12 * b11 + a22 * b12; + this.m07 = a03 * b10 + a13 * b11 + a23 * b12; + this.m08 = a00 * b20 + a10 * b21 + a20 * b22; + this.m09 = a01 * b20 + a11 * b21 + a21 * b22; + this.m10 = a02 * b20 + a12 * b21 + a22 * b22; + this.m11 = a03 * b20 + a13 * b21 + a23 * b22; + return this; + }; + _proto.getTranslation = function getTranslation(out) { + out.x = this.m12; + out.y = this.m13; + out.z = this.m14; + return out; + }; + _proto.getScale = function getScale(out) { + var m00 = m3_1$1.m00 = this.m00; + var m01 = m3_1$1.m01 = this.m01; + var m02 = m3_1$1.m02 = this.m02; + var m04 = m3_1$1.m03 = this.m04; + var m05 = m3_1$1.m04 = this.m05; + var m06 = m3_1$1.m05 = this.m06; + var m08 = m3_1$1.m06 = this.m08; + var m09 = m3_1$1.m07 = this.m09; + var m10 = m3_1$1.m08 = this.m10; + out.x = Math.sqrt(m00 * m00 + m01 * m01 + m02 * m02); + out.y = Math.sqrt(m04 * m04 + m05 * m05 + m06 * m06); + out.z = Math.sqrt(m08 * m08 + m09 * m09 + m10 * m10); + if (Mat3.determinant(m3_1$1) < 0) { + out.x *= -1; + } + return out; + }; + _proto.getRotation = function getRotation(out) { + var sx = Vec3.set(v3_1$2, this.m00, this.m01, this.m02).length(); + var sy = Vec3.set(v3_1$2, this.m04, this.m05, this.m06).length(); + var sz = Vec3.set(v3_1$2, this.m08, this.m09, this.m10).length(); + m3_1$1.m00 = this.m00 / sx; + m3_1$1.m01 = this.m01 / sx; + m3_1$1.m02 = this.m02 / sx; + m3_1$1.m03 = this.m04 / sy; + m3_1$1.m04 = this.m05 / sy; + m3_1$1.m05 = this.m06 / sy; + m3_1$1.m06 = this.m08 / sz; + m3_1$1.m07 = this.m09 / sz; + m3_1$1.m08 = this.m10 / sz; + var det = Mat3.determinant(m3_1$1); + if (det < 0) { + m3_1$1.m00 *= -1; + m3_1$1.m01 *= -1; + m3_1$1.m02 *= -1; + } + return Quat.fromMat3(out, m3_1$1); + }; + _proto.fromRTS = function fromRTS(q, v, s) { + var x = q.x; + var y = q.y; + var z = q.z; + var w = q.w; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + var sx = s.x; + var sy = s.y; + var sz = s.z; + this.m00 = (1 - (yy + zz)) * sx; + this.m01 = (xy + wz) * sx; + this.m02 = (xz - wy) * sx; + this.m03 = 0; + this.m04 = (xy - wz) * sy; + this.m05 = (1 - (xx + zz)) * sy; + this.m06 = (yz + wx) * sy; + this.m07 = 0; + this.m08 = (xz + wy) * sz; + this.m09 = (yz - wx) * sz; + this.m10 = (1 - (xx + yy)) * sz; + this.m11 = 0; + this.m12 = v.x; + this.m13 = v.y; + this.m14 = v.z; + this.m15 = 1; + return this; + }; + _proto.fromSRT = function fromSRT(q, v, s) { + var x = q.x; + var y = q.y; + var z = q.z; + var w = q.w; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + var sx = s.x; + var sy = s.y; + var sz = s.z; + this.m00 = (1 - (yy + zz)) * sx; + this.m01 = (xy + wz) * sx; + this.m02 = (xz - wy) * sx; + this.m03 = 0; + this.m04 = (xy - wz) * sy; + this.m05 = (1 - (xx + zz)) * sy; + this.m06 = (yz + wx) * sy; + this.m07 = 0; + this.m08 = (xz + wy) * sz; + this.m09 = (yz - wx) * sz; + this.m10 = (1 - (xx + yy)) * sz; + this.m11 = 0; + this.m12 = v.x; + this.m13 = v.y; + this.m14 = v.z; + this.m15 = 1; + return this; + }; + _proto.fromQuat = function fromQuat(q) { + var x = q.x; + var y = q.y; + var z = q.z; + var w = q.w; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var yx = y * x2; + var yy = y * y2; + var zx = z * x2; + var zy = z * y2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + this.m00 = 1 - yy - zz; + this.m01 = yx + wz; + this.m02 = zx - wy; + this.m03 = 0; + this.m04 = yx - wz; + this.m05 = 1 - xx - zz; + this.m06 = zy + wx; + this.m07 = 0; + this.m08 = zx + wy; + this.m09 = zy - wx; + this.m10 = 1 - xx - yy; + this.m11 = 0; + this.m12 = 0; + this.m13 = 0; + this.m14 = 0; + this.m15 = 1; + return this; + }; + return Mat4; + }(ValueType)); + _class$2k = Mat4; + Mat4.IDENTITY = Object.freeze(new _class$2k()); + var v3_1$2 = new Vec3(); + var m3_1$1 = new Mat3(); + CCClass.fastDefine('cc.Mat4', Mat4, { + m00: 1, + m01: 0, + m02: 0, + m03: 0, + m04: 0, + m05: 1, + m06: 0, + m07: 0, + m08: 0, + m09: 0, + m10: 1, + m11: 0, + m12: 0, + m13: 0, + m14: 0, + m15: 1 + }); + legacyCC.Mat4 = Mat4; + function mat4(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) { + return new Mat4(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33); + } + legacyCC.mat4 = mat4; + + var _class$2j; + var Vec2 = exports('ar', function (_ValueType) { + _inheritsLoose(Vec2, _ValueType); + Vec2.clone = function clone(a) { + return new Vec2(a.x, a.y); + }; + Vec2.copy = function copy(out, a) { + out.x = a.x; + out.y = a.y; + return out; + }; + Vec2.set = function set(out, x, y) { + out.x = x; + out.y = y; + return out; + }; + Vec2.add = function add(out, a, b) { + out.x = a.x + b.x; + out.y = a.y + b.y; + return out; + }; + Vec2.subtract = function subtract(out, a, b) { + out.x = a.x - b.x; + out.y = a.y - b.y; + return out; + }; + Vec2.multiply = function multiply(out, a, b) { + out.x = a.x * b.x; + out.y = a.y * b.y; + return out; + }; + Vec2.divide = function divide(out, a, b) { + out.x = a.x / b.x; + out.y = a.y / b.y; + return out; + }; + Vec2.ceil = function ceil(out, a) { + out.x = Math.ceil(a.x); + out.y = Math.ceil(a.y); + return out; + }; + Vec2.floor = function floor(out, a) { + out.x = Math.floor(a.x); + out.y = Math.floor(a.y); + return out; + }; + Vec2.min = function min(out, a, b) { + out.x = Math.min(a.x, b.x); + out.y = Math.min(a.y, b.y); + return out; + }; + Vec2.max = function max(out, a, b) { + out.x = Math.max(a.x, b.x); + out.y = Math.max(a.y, b.y); + return out; + }; + Vec2.round = function round(out, a) { + out.x = Math.round(a.x); + out.y = Math.round(a.y); + return out; + }; + Vec2.multiplyScalar = function multiplyScalar(out, a, b) { + out.x = a.x * b; + out.y = a.y * b; + return out; + }; + Vec2.scaleAndAdd = function scaleAndAdd(out, a, b, scale) { + out.x = a.x + b.x * scale; + out.y = a.y + b.y * scale; + return out; + }; + Vec2.distance = function distance(a, b) { + var x = b.x - a.x; + var y = b.y - a.y; + return Math.sqrt(x * x + y * y); + }; + Vec2.squaredDistance = function squaredDistance(a, b) { + var x = b.x - a.x; + var y = b.y - a.y; + return x * x + y * y; + }; + Vec2.len = function len(a) { + var x = a.x; + var y = a.y; + return Math.sqrt(x * x + y * y); + }; + Vec2.lengthSqr = function lengthSqr(a) { + var x = a.x; + var y = a.y; + return x * x + y * y; + }; + Vec2.negate = function negate(out, a) { + out.x = -a.x; + out.y = -a.y; + return out; + }; + Vec2.inverse = function inverse(out, a) { + out.x = 1.0 / a.x; + out.y = 1.0 / a.y; + return out; + }; + Vec2.inverseSafe = function inverseSafe(out, a) { + var x = a.x; + var y = a.y; + if (Math.abs(x) < EPSILON$3) { + out.x = 0; + } else { + out.x = 1.0 / x; + } + if (Math.abs(y) < EPSILON$3) { + out.y = 0; + } else { + out.y = 1.0 / y; + } + return out; + }; + Vec2.normalize = function normalize(out, a) { + var x = a.x; + var y = a.y; + var len = x * x + y * y; + if (len > 0) { + len = 1 / Math.sqrt(len); + out.x = x * len; + out.y = y * len; + } else { + out.x = 0; + out.y = 0; + } + return out; + }; + Vec2.dot = function dot(a, b) { + return a.x * b.x + a.y * b.y; + }; + Vec2.cross = function cross(out, a, b) { + if (out instanceof Vec3) { + out.x = out.y = 0; + out.z = a.x * b.y - a.y * b.x; + return out; + } else { + return out.x * a.y - out.y * a.x; + } + }; + Vec2.lerp = function lerp(out, a, b, t) { + var x = a.x; + var y = a.y; + out.x = x + t * (b.x - x); + out.y = y + t * (b.y - y); + return out; + }; + Vec2.random = function random$1(out, scale) { + scale = scale || 1.0; + var r = random() * 2.0 * Math.PI; + out.x = Math.cos(r) * scale; + out.y = Math.sin(r) * scale; + return out; + }; + Vec2.transformMat3 = function transformMat3(out, a, m) { + var x = a.x; + var y = a.y; + out.x = m.m00 * x + m.m03 * y + m.m06; + out.y = m.m01 * x + m.m04 * y + m.m07; + return out; + }; + Vec2.transformMat4 = function transformMat4(out, a, m) { + var x = a.x; + var y = a.y; + out.x = m.m00 * x + m.m04 * y + m.m12; + out.y = m.m01 * x + m.m05 * y + m.m13; + return out; + }; + Vec2.str = function str(a) { + return "Vec2(" + a.x + ", " + a.y + ")"; + }; + Vec2.toArray = function toArray(out, v, ofs) { + if (ofs === void 0) { + ofs = 0; + } + out[ofs + 0] = v.x; + out[ofs + 1] = v.y; + return out; + }; + Vec2.fromArray = function fromArray(out, arr, ofs) { + if (ofs === void 0) { + ofs = 0; + } + out.x = arr[ofs + 0]; + out.y = arr[ofs + 1]; + return out; + }; + Vec2.strictEquals = function strictEquals(a, b) { + return a.x === b.x && a.y === b.y; + }; + Vec2.equals = function equals(a, b, epsilon) { + if (epsilon === void 0) { + epsilon = EPSILON$3; + } + return Math.abs(a.x - b.x) <= epsilon * Math.max(1.0, Math.abs(a.x), Math.abs(b.x)) && Math.abs(a.y - b.y) <= epsilon * Math.max(1.0, Math.abs(a.y), Math.abs(b.y)); + }; + Vec2.angle = function angle(a, b) { + var magSqr1 = a.x * a.x + a.y * a.y; + var magSqr2 = b.x * b.x + b.y * b.y; + if (magSqr1 === 0 || magSqr2 === 0) { + return 0.0; + } + var dot = a.x * b.x + a.y * b.y; + var cosine = dot / Math.sqrt(magSqr1 * magSqr2); + cosine = clamp$1(cosine, -1.0, 1.0); + return Math.acos(cosine); + }; + function Vec2(x, y) { + var _this; + _this = _ValueType.call(this) || this; + if (typeof x === 'object') { + _this.x = x.x; + _this.y = x.y; + } else { + _this.x = x || 0; + _this.y = y || 0; + } + return _this; + } + var _proto = Vec2.prototype; + _proto.clone = function clone() { + return new Vec2(this.x, this.y); + }; + _proto.set = function set(x, y) { + if (typeof x === 'object') { + this.x = x.x; + this.y = x.y; + } else { + this.x = x || 0; + this.y = y || 0; + } + return this; + }; + _proto.equals = function equals(other, epsilon) { + if (epsilon === void 0) { + epsilon = EPSILON$3; + } + return Math.abs(this.x - other.x) <= epsilon * Math.max(1.0, Math.abs(this.x), Math.abs(other.x)) && Math.abs(this.y - other.y) <= epsilon * Math.max(1.0, Math.abs(this.y), Math.abs(other.y)); + }; + _proto.equals2f = function equals2f(x, y, epsilon) { + if (epsilon === void 0) { + epsilon = EPSILON$3; + } + return Math.abs(this.x - x) <= epsilon * Math.max(1.0, Math.abs(this.x), Math.abs(x)) && Math.abs(this.y - y) <= epsilon * Math.max(1.0, Math.abs(this.y), Math.abs(y)); + }; + _proto.strictEquals = function strictEquals(other) { + return other && this.x === other.x && this.y === other.y; + }; + _proto.strictEquals2f = function strictEquals2f(x, y) { + return this.x === x && this.y === y; + }; + _proto.toString = function toString() { + return "(" + this.x.toFixed(2) + ", " + this.y.toFixed(2) + ")"; + }; + _proto.lerp = function lerp(to, ratio) { + var x = this.x; + var y = this.y; + this.x = x + ratio * (to.x - x); + this.y = y + ratio * (to.y - y); + return this; + }; + _proto.clampf = function clampf(minInclusive, maxInclusive) { + this.x = clamp$1(this.x, minInclusive.x, maxInclusive.x); + this.y = clamp$1(this.y, minInclusive.y, maxInclusive.y); + return this; + }; + _proto.add = function add(other) { + this.x += other.x; + this.y += other.y; + return this; + }; + _proto.add2f = function add2f(x, y) { + this.x += x; + this.y += y; + return this; + }; + _proto.subtract = function subtract(other) { + this.x -= other.x; + this.y -= other.y; + return this; + }; + _proto.subtract2f = function subtract2f(x, y) { + this.x -= x; + this.y -= y; + return this; + }; + _proto.multiplyScalar = function multiplyScalar(scalar) { + if (typeof scalar === 'object') { + console.warn('should use Vec2.multiply for vector * vector operation'); + } + this.x *= scalar; + this.y *= scalar; + return this; + }; + _proto.multiply = function multiply(other) { + if (typeof other !== 'object') { + console.warn('should use Vec2.scale for vector * scalar operation'); + } + this.x *= other.x; + this.y *= other.y; + return this; + }; + _proto.multiply2f = function multiply2f(x, y) { + this.x *= x; + this.y *= y; + return this; + }; + _proto.divide = function divide(other) { + this.x /= other.x; + this.y /= other.y; + return this; + }; + _proto.divide2f = function divide2f(x, y) { + this.x /= x; + this.y /= y; + return this; + }; + _proto.negative = function negative() { + this.x = -this.x; + this.y = -this.y; + return this; + }; + _proto.dot = function dot(other) { + return this.x * other.x + this.y * other.y; + }; + _proto.cross = function cross(other) { + return this.x * other.y - this.y * other.x; + }; + _proto.length = function length() { + return Math.sqrt(this.x * this.x + this.y * this.y); + }; + _proto.lengthSqr = function lengthSqr() { + return this.x * this.x + this.y * this.y; + }; + _proto.normalize = function normalize() { + var x = this.x; + var y = this.y; + var len = x * x + y * y; + if (len > 0) { + len = 1 / Math.sqrt(len); + this.x *= len; + this.y *= len; + } + return this; + }; + _proto.angle = function angle(other) { + var magSqr1 = this.lengthSqr(); + var magSqr2 = other.lengthSqr(); + if (magSqr1 === 0 || magSqr2 === 0) { + return 0.0; + } + var dot = this.dot(other); + var cosine = dot / Math.sqrt(magSqr1 * magSqr2); + cosine = clamp$1(cosine, -1.0, 1.0); + return Math.acos(cosine); + }; + _proto.signAngle = function signAngle(other) { + var angle = this.angle(other); + return this.cross(other) < 0 ? -angle : angle; + }; + _proto.rotate = function rotate(radians) { + var x = this.x; + var y = this.y; + var sin = Math.sin(radians); + var cos = Math.cos(radians); + this.x = cos * x - sin * y; + this.y = sin * x + cos * y; + return this; + }; + _proto.project = function project(other) { + var scalar = this.dot(other) / other.dot(other); + this.x = other.x * scalar; + this.y = other.y * scalar; + return this; + }; + _proto.transformMat4 = function transformMat4(matrix) { + var x = this.x; + var y = this.y; + this.x = matrix.m00 * x + matrix.m04 * y + matrix.m12; + this.y = matrix.m01 * x + matrix.m05 * y + matrix.m13; + return this; + }; + return Vec2; + }(ValueType)); + _class$2j = Vec2; + Vec2.ZERO = Object.freeze(new _class$2j(0, 0)); + Vec2.ONE = Object.freeze(new _class$2j(1, 1)); + Vec2.NEG_ONE = Object.freeze(new _class$2j(-1, -1)); + Vec2.UNIT_X = Object.freeze(new _class$2j(1, 0)); + Vec2.UNIT_Y = Object.freeze(new _class$2j(0, 1)); + CCClass.fastDefine('cc.Vec2', Vec2, { + x: 0, + y: 0 + }); + legacyCC.Vec2 = Vec2; + function v2$1(x, y) { + return new Vec2(x, y); + } + legacyCC.v2 = v2$1; + + replaceProperty(Vec2, 'Vec2', [{ + name: 'sub', + newName: 'subtract', + target: Vec2, + targetName: 'Vec2' + }, { + name: 'mul', + newName: 'multiply', + target: Vec2, + targetName: 'Vec2' + }, { + name: 'div', + newName: 'divide', + target: Vec2, + targetName: 'Vec2' + }, { + name: 'dist', + newName: 'distance', + target: Vec2, + targetName: 'Vec2' + }, { + name: 'sqrDist', + newName: 'squaredDistance', + target: Vec2, + targetName: 'Vec2' + }, { + name: 'mag', + newName: 'len', + target: Vec2, + targetName: 'Vec2' + }, { + name: 'sqrMag', + newName: 'lengthSqr', + target: Vec2, + targetName: 'Vec2' + }, { + name: 'scale', + newName: 'multiplyScalar', + target: Vec2, + targetName: 'Vec2' + }, { + name: 'exactEquals', + newName: 'strictEquals', + target: Vec2, + targetName: 'Vec2' + }]); + replaceProperty(Vec2.prototype, 'Vec2', [{ + name: 'mag', + newName: 'length', + target: Vec2.prototype, + targetName: 'Vec2' + }, { + name: 'magSqr', + newName: 'lengthSqr', + target: Vec2.prototype, + targetName: 'Vec2' + }, { + name: 'scale', + newName: 'multiplyScalar', + target: Vec2.prototype, + targetName: 'Vec2' + }, { + name: 'exactEquals', + newName: 'strictEquals', + target: Vec2.prototype, + targetName: 'Vec2' + }]); + replaceProperty(Vec3, 'Vec3', [{ + name: 'sub', + newName: 'subtract', + target: Vec3, + targetName: 'Vec3' + }, { + name: 'mul', + newName: 'multiply', + target: Vec3, + targetName: 'Vec3' + }, { + name: 'div', + newName: 'divide', + target: Vec3, + targetName: 'Vec3' + }, { + name: 'dist', + newName: 'distance', + target: Vec3, + targetName: 'Vec3' + }, { + name: 'sqrDist', + newName: 'squaredDistance', + target: Vec3, + targetName: 'Vec3' + }, { + name: 'mag', + newName: 'len', + target: Vec3, + targetName: 'Vec3' + }, { + name: 'sqrMag', + newName: 'lengthSqr', + target: Vec3, + targetName: 'Vec3' + }, { + name: 'scale', + newName: 'multiplyScalar', + target: Vec3, + targetName: 'Vec3' + }, { + name: 'exactEquals', + newName: 'strictEquals', + target: Vec3, + targetName: 'Vec3' + }]); + replaceProperty(Vec3.prototype, 'Vec3', [{ + name: 'mag', + newName: 'length', + target: Vec3.prototype, + targetName: 'Vec3' + }, { + name: 'magSqr', + newName: 'lengthSqr', + target: Vec3.prototype, + targetName: 'Vec3' + }, { + name: 'scale', + newName: 'multiplyScalar', + target: Vec3.prototype, + targetName: 'Vec3' + }, { + name: 'exactEquals', + newName: 'strictEquals', + target: Vec3.prototype, + targetName: 'Vec3' + }]); + replaceProperty(Vec4, 'Vec4', [{ + name: 'sub', + newName: 'subtract', + target: Vec4, + targetName: 'Vec4' + }, { + name: 'mul', + newName: 'multiply', + target: Vec4, + targetName: 'Vec4' + }, { + name: 'div', + newName: 'divide', + target: Vec4, + targetName: 'Vec4' + }, { + name: 'dist', + newName: 'distance', + target: Vec4, + targetName: 'Vec4' + }, { + name: 'sqrDist', + newName: 'squaredDistance', + target: Vec4, + targetName: 'Vec4' + }, { + name: 'mag', + newName: 'len', + target: Vec4, + targetName: 'Vec4' + }, { + name: 'sqrMag', + newName: 'lengthSqr', + target: Vec4, + targetName: 'Vec4' + }, { + name: 'scale', + newName: 'multiplyScalar', + target: Vec4, + targetName: 'Vec4' + }, { + name: 'exactEquals', + newName: 'strictEquals', + target: Vec4, + targetName: 'Vec4' + }]); + replaceProperty(Vec4.prototype, 'Vec4', [{ + name: 'mag', + newName: 'length', + target: Vec4.prototype, + targetName: 'Vec4' + }, { + name: 'magSqr', + newName: 'lengthSqr', + target: Vec4.prototype, + targetName: 'Vec4' + }, { + name: 'scale', + newName: 'multiplyScalar', + target: Vec4.prototype, + targetName: 'Vec4' + }, { + name: 'exactEquals', + newName: 'strictEquals', + target: Vec4.prototype, + targetName: 'Vec4' + }]); + replaceProperty(Quat, 'Quat', [{ + name: 'mag', + newName: 'len', + target: Quat, + targetName: 'Quat' + }, { + name: 'mul', + newName: 'multiply', + target: Quat, + targetName: 'Quat' + }, { + name: 'sqrMag', + newName: 'lengthSqr', + target: Quat, + targetName: 'Quat' + }, { + name: 'scale', + newName: 'multiplyScalar', + target: Quat, + targetName: 'Quat' + }, { + name: 'exactEquals', + newName: 'strictEquals', + target: Quat, + targetName: 'Quat' + }]); + replaceProperty(Quat.prototype, 'Quat', [{ + name: 'scale', + newName: 'multiplyScalar', + target: Quat.prototype, + targetName: 'Quat' + }, { + name: 'exactEquals', + newName: 'strictEquals', + target: Quat.prototype, + targetName: 'Quat' + }]); + replaceProperty(Color$1, 'Color', [{ + name: 'sub', + newName: 'subtract', + target: Color$1, + targetName: 'Color' + }, { + name: 'mul', + newName: 'multiply', + target: Color$1, + targetName: 'Color' + }, { + name: 'div', + newName: 'divide', + target: Color$1, + targetName: 'Color' + }, { + name: 'exactEquals', + newName: 'strictEquals', + target: Color$1, + targetName: 'Color' + }, { + name: 'fromHex', + newName: 'fromHEX', + customFunction: function customFunction() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + var arg1 = args[1].toString(16); + return legacyCC.Color.fromHEX(args[0], arg1); + } + }]); + replaceProperty(Mat3, 'Mat3', [{ + name: 'sub', + newName: 'subtract', + target: Mat3, + targetName: 'Mat3' + }, { + name: 'mul', + newName: 'multiply', + target: Mat3, + targetName: 'Mat3' + }, { + name: 'exactEquals', + newName: 'strictEquals', + target: Mat3, + targetName: 'Mat3' + }, { + name: 'transfrom', + newName: 'transform', + target: Mat3, + targetName: 'Mat3' + }]); + replaceProperty(Mat3.prototype, 'Mat3', [{ + name: 'sub', + newName: 'subtract', + target: Mat3.prototype, + targetName: 'Mat3' + }, { + name: 'mul', + newName: 'multiply', + target: Mat3.prototype, + targetName: 'Mat3' + }, { + name: 'mulScalar', + newName: 'multiplyScalar', + target: Mat3.prototype, + targetName: 'Mat3' + }, { + name: 'exactEquals', + newName: 'strictEquals', + target: Mat3.prototype, + targetName: 'Mat3' + }]); + replaceProperty(Mat4, 'Mat4', [{ + name: 'sub', + newName: 'subtract', + target: Mat4, + targetName: 'Mat4' + }, { + name: 'mul', + newName: 'multiply', + target: Mat4, + targetName: 'Mat4' + }, { + name: 'exactEquals', + newName: 'strictEquals', + target: Mat4, + targetName: 'Mat4' + }]); + replaceProperty(Mat4.prototype, 'Mat4', [{ + name: 'sub', + newName: 'subtract', + target: Mat4.prototype, + targetName: 'Mat4' + }, { + name: 'mul', + newName: 'multiply', + target: Mat4.prototype, + targetName: 'Mat4' + }, { + name: 'mulScalar', + newName: 'multiplyScalar', + target: Mat4.prototype, + targetName: 'Mat4' + }, { + name: 'exactEquals', + newName: 'strictEquals', + target: Mat4.prototype, + targetName: 'Mat4' + }]); + + var MathType; + (function (MathType) { + MathType[MathType["VEC2"] = 0] = "VEC2"; + MathType[MathType["VEC3"] = 1] = "VEC3"; + MathType[MathType["VEC4"] = 2] = "VEC4"; + MathType[MathType["QUATERNION"] = 3] = "QUATERNION"; + MathType[MathType["MAT3"] = 4] = "MAT3"; + MathType[MathType["MAT4"] = 5] = "MAT4"; + MathType[MathType["SIZE"] = 6] = "SIZE"; + MathType[MathType["RECT"] = 7] = "RECT"; + MathType[MathType["COLOR"] = 8] = "COLOR"; + })(MathType || (MathType = {})); + + var AffineTransform = exports('aC', function () { + AffineTransform.identity = function identity() { + return new AffineTransform(); + }; + AffineTransform.clone = function clone(affineTransform) { + return new AffineTransform(affineTransform.a, affineTransform.b, affineTransform.c, affineTransform.d, affineTransform.tx, affineTransform.ty); + }; + AffineTransform.concat = function concat(out, t1, t2) { + var a = t1.a; + var b = t1.b; + var c = t1.c; + var d = t1.d; + var tx = t1.tx; + var ty = t1.ty; + out.a = a * t2.a + b * t2.c; + out.b = a * t2.b + b * t2.d; + out.c = c * t2.a + d * t2.c; + out.d = c * t2.b + d * t2.d; + out.tx = tx * t2.a + ty * t2.c + t2.tx; + out.ty = tx * t2.b + ty * t2.d + t2.ty; + }; + AffineTransform.invert = function invert(out, t) { + var determinant = 1 / (t.a * t.d - t.b * t.c); + out.a = determinant * t.d; + out.b = -determinant * t.b; + out.c = -determinant * t.c; + out.d = determinant * t.a; + out.tx = determinant * (t.c * t.ty - t.d * t.tx); + out.ty = determinant * (t.b * t.tx - t.a * t.ty); + }; + AffineTransform.fromMat4 = function fromMat4(out, mat) { + out.a = mat.m00; + out.b = mat.m01; + out.c = mat.m04; + out.d = mat.m05; + out.tx = mat.m12; + out.ty = mat.m13; + }; + AffineTransform.transformVec2 = function transformVec2(out, point, transOrY, t) { + var x; + var y; + if (!t) { + t = transOrY; + x = point.x; + y = point.y; + } else { + x = point; + y = transOrY; + } + out.x = t.a * x + t.c * y + t.tx; + out.y = t.b * x + t.d * y + t.ty; + }; + AffineTransform.transformSize = function transformSize(out, size, t) { + out.width = t.a * size.width + t.c * size.height; + out.height = t.b * size.width + t.d * size.height; + }; + AffineTransform.transformRect = function transformRect(out, rect, t) { + var or = rect.x + rect.width; + var ot = rect.y + rect.height; + var lbx = t.a * rect.x + t.c * rect.y + t.tx; + var lby = t.b * rect.x + t.d * rect.y + t.ty; + var rbx = t.a * or + t.c * rect.y + t.tx; + var rby = t.b * or + t.d * rect.y + t.ty; + var ltx = t.a * rect.x + t.c * ot + t.tx; + var lty = t.b * rect.x + t.d * ot + t.ty; + var rtx = t.a * or + t.c * ot + t.tx; + var rty = t.b * or + t.d * ot + t.ty; + var minX = Math.min(lbx, rbx, ltx, rtx); + var maxX = Math.max(lbx, rbx, ltx, rtx); + var minY = Math.min(lby, rby, lty, rty); + var maxY = Math.max(lby, rby, lty, rty); + out.x = minX; + out.y = minY; + out.width = maxX - minX; + out.height = maxY - minY; + }; + AffineTransform.transformObb = function transformObb(out_bl, out_tl, out_tr, out_br, rect, anAffineTransform, flipY) { + if (flipY === void 0) { + flipY = true; + } + var tx = anAffineTransform.a * rect.x + anAffineTransform.c * rect.y + anAffineTransform.tx; + var ty = anAffineTransform.b * rect.x + anAffineTransform.d * rect.y + anAffineTransform.ty; + var xa = anAffineTransform.a * rect.width; + var xb = anAffineTransform.b * rect.width; + var yc = anAffineTransform.c * rect.height; + var yd = anAffineTransform.d * rect.height; + if (flipY) { + out_tl.x = tx; + out_tl.y = ty; + out_tr.x = xa + tx; + out_tr.y = xb + ty; + out_bl.x = yc + tx; + out_bl.y = yd + ty; + out_br.x = xa + yc + tx; + out_br.y = xb + yd + ty; + } else { + out_bl.x = tx; + out_bl.y = ty; + out_br.x = xa + tx; + out_br.y = xb + ty; + out_tl.x = yc + tx; + out_tl.y = yd + ty; + out_tr.x = xa + yc + tx; + out_tr.y = xb + yd + ty; + } + }; + function AffineTransform(a, b, c, d, tx, ty) { + if (a === void 0) { + a = 1; + } + if (b === void 0) { + b = 0; + } + if (c === void 0) { + c = 0; + } + if (d === void 0) { + d = 1; + } + if (tx === void 0) { + tx = 0; + } + if (ty === void 0) { + ty = 0; + } + this.a = a; + this.b = b; + this.c = c; + this.d = d; + this.tx = tx; + this.ty = ty; + } + return AffineTransform; + }()); + legacyCC.AffineTransform = AffineTransform; + + var _class$2i; + var Size$1 = exports('aD', function (_ValueType) { + _inheritsLoose(Size, _ValueType); + Size.lerp = function lerp(out, from, to, ratio) { + out.width = from.width + (to.width - from.width) * ratio; + out.height = from.height + (to.height - from.height) * ratio; + return out; + }; + Size.equals = function equals(a, b) { + return a.width === b.width && a.height === b.height; + }; + function Size(width, height) { + var _this; + _this = _ValueType.call(this) || this; + if (typeof width === 'object') { + _this.width = width.width; + _this.height = width.height; + } else { + _this.width = width || 0; + _this.height = height || 0; + } + return _this; + } + var _proto = Size.prototype; + _proto.clone = function clone() { + return new Size(this.width, this.height); + }; + _proto.set = function set(width, height) { + if (typeof width === 'object') { + this.height = width.height; + this.width = width.width; + } else { + this.width = width || 0; + this.height = height || 0; + } + return this; + }; + _proto.equals = function equals(other) { + return this.width === other.width && this.height === other.height; + }; + _proto.lerp = function lerp(to, ratio) { + this.width += (to.width - this.width) * ratio; + this.height += (to.height - this.height) * ratio; + return this; + }; + _proto.toString = function toString() { + return "(" + this.width.toFixed(2) + ", " + this.height.toFixed(2) + ")"; + }; + _createClass(Size, [{ + key: "x", + get: function get() { + return this.width; + }, + set: function set(val) { + this.width = val; + } + }, { + key: "y", + get: function get() { + return this.height; + }, + set: function set(val) { + this.height = val; + } + }]); + return Size; + }(ValueType)); + _class$2i = Size$1; + Size$1.ZERO = Object.freeze(new _class$2i(0, 0)); + Size$1.ONE = Object.freeze(new _class$2i(1, 1)); + CCClass.fastDefine('cc.Size', Size$1, { + width: 0, + height: 0 + }); + function size(width, height) { + if (width === void 0) { + width = 0; + } + if (height === void 0) { + height = 0; + } + return new Size$1(width, height); + } + legacyCC.size = size; + legacyCC.Size = Size$1; + + var Rect$1 = exports('aF', function (_ValueType) { + _inheritsLoose(Rect, _ValueType); + Rect.fromMinMax = function fromMinMax(out, v1, v2) { + var minX = Math.min(v1.x, v2.x); + var minY = Math.min(v1.y, v2.y); + var maxX = Math.max(v1.x, v2.x); + var maxY = Math.max(v1.y, v2.y); + out.x = minX; + out.y = minY; + out.width = maxX - minX; + out.height = maxY - minY; + return out; + }; + Rect.lerp = function lerp(out, from, to, ratio) { + var x = from.x; + var y = from.y; + var w = from.width; + var h = from.height; + out.x = x + (to.x - x) * ratio; + out.y = y + (to.y - y) * ratio; + out.width = w + (to.width - w) * ratio; + out.height = h + (to.height - h) * ratio; + return out; + }; + Rect.intersection = function intersection(out, one, other) { + var axMin = one.x; + var ayMin = one.y; + var axMax = one.x + one.width; + var ayMax = one.y + one.height; + var bxMin = other.x; + var byMin = other.y; + var bxMax = other.x + other.width; + var byMax = other.y + other.height; + out.x = Math.max(axMin, bxMin); + out.y = Math.max(ayMin, byMin); + out.width = Math.min(axMax, bxMax) - out.x; + out.height = Math.min(ayMax, byMax) - out.y; + return out; + }; + Rect.union = function union(out, one, other) { + var x = one.x; + var y = one.y; + var w = one.width; + var h = one.height; + var bx = other.x; + var by = other.y; + var bw = other.width; + var bh = other.height; + out.x = Math.min(x, bx); + out.y = Math.min(y, by); + out.width = Math.max(x + w, bx + bw) - out.x; + out.height = Math.max(y + h, by + bh) - out.y; + return out; + }; + Rect.equals = function equals(a, b) { + return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height; + }; + function Rect(x, y, width, height) { + var _this; + _this = _ValueType.call(this) || this; + if (typeof x === 'object') { + _this.x = x.x; + _this.y = x.y; + _this.width = x.width; + _this.height = x.height; + } else { + _this.x = x || 0; + _this.y = y || 0; + _this.width = width || 0; + _this.height = height || 0; + } + return _this; + } + var _proto = Rect.prototype; + _proto.clone = function clone() { + return new Rect(this.x, this.y, this.width, this.height); + }; + _proto.set = function set(x, y, width, height) { + if (typeof x === 'object') { + this.x = x.x; + this.y = x.y; + this.width = x.width; + this.height = x.height; + } else { + this.x = x || 0; + this.y = y || 0; + this.width = width || 0; + this.height = height || 0; + } + return this; + }; + _proto.equals = function equals(other) { + return this.x === other.x && this.y === other.y && this.width === other.width && this.height === other.height; + }; + _proto.lerp = function lerp(to, ratio) { + var x = this.x; + var y = this.y; + var w = this.width; + var h = this.height; + this.x = x + (to.x - x) * ratio; + this.y = y + (to.y - y) * ratio; + this.width = w + (to.width - w) * ratio; + this.height = h + (to.height - h) * ratio; + return this; + }; + _proto.toString = function toString() { + return "(" + this.x.toFixed(2) + ", " + this.y.toFixed(2) + ", " + this.width.toFixed(2) + ", " + this.height.toFixed(2) + ")"; + }; + _proto.intersects = function intersects(other) { + var maxax = this.x + this.width; + var maxay = this.y + this.height; + var maxbx = other.x + other.width; + var maxby = other.y + other.height; + return !(maxax < other.x || maxbx < this.x || maxay < other.y || maxby < this.y); + }; + _proto.contains = function contains(point) { + return this.x <= point.x && this.x + this.width >= point.x && this.y <= point.y && this.y + this.height >= point.y; + }; + _proto.containsRect = function containsRect(other) { + return this.x <= other.x && this.x + this.width >= other.x + other.width && this.y <= other.y && this.y + this.height >= other.y + other.height; + }; + _proto.transformMat4 = function transformMat4(mat) { + var ol = this.x; + var ob = this.y; + var or = ol + this.width; + var ot = ob + this.height; + var lbx = mat.m00 * ol + mat.m04 * ob + mat.m12; + var lby = mat.m01 * ol + mat.m05 * ob + mat.m13; + var rbx = mat.m00 * or + mat.m04 * ob + mat.m12; + var rby = mat.m01 * or + mat.m05 * ob + mat.m13; + var ltx = mat.m00 * ol + mat.m04 * ot + mat.m12; + var lty = mat.m01 * ol + mat.m05 * ot + mat.m13; + var rtx = mat.m00 * or + mat.m04 * ot + mat.m12; + var rty = mat.m01 * or + mat.m05 * ot + mat.m13; + var minX = Math.min(lbx, rbx, ltx, rtx); + var maxX = Math.max(lbx, rbx, ltx, rtx); + var minY = Math.min(lby, rby, lty, rty); + var maxY = Math.max(lby, rby, lty, rty); + this.x = minX; + this.y = minY; + this.width = maxX - minX; + this.height = maxY - minY; + return this; + }; + _proto.transformMat4ToPoints = function transformMat4ToPoints(mat, out_lb, out_lt, out_rt, out_rb) { + var ol = this.x; + var ob = this.y; + var or = ol + this.width; + var ot = ob + this.height; + out_lb.x = mat.m00 * ol + mat.m04 * ob + mat.m12; + out_lb.y = mat.m01 * ol + mat.m05 * ob + mat.m13; + out_rb.x = mat.m00 * or + mat.m04 * ob + mat.m12; + out_rb.y = mat.m01 * or + mat.m05 * ob + mat.m13; + out_lt.x = mat.m00 * ol + mat.m04 * ot + mat.m12; + out_lt.y = mat.m01 * ol + mat.m05 * ot + mat.m13; + out_rt.x = mat.m00 * or + mat.m04 * ot + mat.m12; + out_rt.y = mat.m01 * or + mat.m05 * ot + mat.m13; + }; + _createClass(Rect, [{ + key: "xMin", + get: function get() { + return this.x; + }, + set: function set(value) { + this.width += this.x - value; + this.x = value; + } + }, { + key: "yMin", + get: function get() { + return this.y; + }, + set: function set(value) { + this.height += this.y - value; + this.y = value; + } + }, { + key: "xMax", + get: function get() { + return this.x + this.width; + }, + set: function set(value) { + this.width = value - this.x; + } + }, { + key: "yMax", + get: function get() { + return this.y + this.height; + }, + set: function set(value) { + this.height = value - this.y; + } + }, { + key: "center", + get: function get() { + return new Vec2(this.x + this.width * 0.5, this.y + this.height * 0.5); + }, + set: function set(value) { + this.x = value.x - this.width * 0.5; + this.y = value.y - this.height * 0.5; + } + }, { + key: "origin", + get: function get() { + return new Vec2(this.x, this.y); + }, + set: function set(value) { + this.x = value.x; + this.y = value.y; + } + }, { + key: "size", + get: function get() { + return new Size$1(this.width, this.height); + }, + set: function set(value) { + this.width = value.width; + this.height = value.height; + } + }, { + key: "z", + get: function get() { + return this.width; + }, + set: function set(val) { + this.width = val; + } + }, { + key: "w", + get: function get() { + return this.height; + }, + set: function set(val) { + this.height = val; + } + }]); + return Rect; + }(ValueType)); + CCClass.fastDefine('cc.Rect', Rect$1, { + x: 0, + y: 0, + width: 0, + height: 0 + }); + legacyCC.Rect = Rect$1; + function rect(x, y, width, height) { + if (x === void 0) { + x = 0; + } + if (y === void 0) { + y = 0; + } + if (width === void 0) { + width = 0; + } + if (height === void 0) { + height = 0; + } + return new Rect$1(x, y, width, height); + } + legacyCC.rect = rect; + + var MATH_FLOAT_ARRAY = exports('b8', Float64Array); + var MathBase = exports('b9', function (_ValueType) { + _inheritsLoose(MathBase, _ValueType); + function MathBase() { + return _ValueType.apply(this, arguments) || this; + } + MathBase.createFloatArray = function createFloatArray(size) { + return new MATH_FLOAT_ARRAY(size); + }; + _createClass(MathBase, [{ + key: "array", + get: function get() { + return this._array; + } + }]); + return MathBase; + }(ValueType)); + + var math = /*#__PURE__*/Object.freeze({ + __proto__: null, + bits: bits, + Vec2: Vec2, + v2: v2$1, + Vec3: Vec3, + v3: v3, + Vec4: Vec4, + v4: v4, + Quat: Quat, + quat: quat, + Mat3: Mat3, + Mat4: Mat4, + mat4: mat4, + AffineTransform: AffineTransform, + Size: Size$1, + size: size, + Rect: Rect$1, + rect: rect, + Color: Color$1, + color: color, + preTransforms: preTransforms, + HALF_PI: HALF_PI, + TWO_PI: TWO_PI, + EPSILON: EPSILON$3, + equals: equals$2, + approx: approx, + clamp: clamp$1, + clamp01: clamp01, + lerp: lerp, + toRadian: toRadian, + toDegree: toDegree, + random: random, + setRandGenerator: setRandGenerator, + randomRange: randomRange, + randomRangeInt: randomRangeInt, + pseudoRandom: pseudoRandom, + pseudoRandomRange: pseudoRandomRange, + pseudoRandomRangeInt: pseudoRandomRangeInt, + nextPow2: nextPow2, + repeat: repeat$1, + pingPong: pingPong, + inverseLerp: inverseLerp, + absMaxComponent: absMaxComponent, + absMax: absMax, + enumerableProps: enumerableProps, + floatToHalf: floatToHalf, + halfToFloat: halfToFloat, + MATH_FLOAT_ARRAY: MATH_FLOAT_ARRAY, + MathBase: MathBase + }); + exports('al', math); + + var X = new Vec3(); + var Y = new Vec3(); + var Z = new Vec3(); + var d = new Vec3(); + var min$2 = new Vec3(); + var max$3 = new Vec3(); + var u = new Array(3); + var e = new Array(3); + function point_plane(point, plane_) { + return Vec3.dot(plane_.n, point) - plane_.d; + } + function pt_point_plane(out, point, plane_) { + var t = point_plane(point, plane_); + return Vec3.subtract(out, point, Vec3.multiplyScalar(out, plane_.n, t)); + } + function pt_point_aabb(out, point, aabb_) { + Vec3.copy(out, point); + Vec3.subtract(min$2, aabb_.center, aabb_.halfExtents); + Vec3.add(max$3, aabb_.center, aabb_.halfExtents); + out.x = out.x < min$2.x ? min$2.x : out.x; + out.y = out.y < min$2.y ? min$2.y : out.y; + out.z = out.z < min$2.z ? min$2.z : out.z; + out.x = out.x > max$3.x ? max$3.x : out.x; + out.y = out.y > max$3.y ? max$3.y : out.y; + out.z = out.z > max$3.z ? max$3.z : out.z; + return out; + } + function pt_point_obb(out, point, obb_) { + Vec3.set(X, obb_.orientation.m00, obb_.orientation.m01, obb_.orientation.m02); + Vec3.set(Y, obb_.orientation.m03, obb_.orientation.m04, obb_.orientation.m05); + Vec3.set(Z, obb_.orientation.m06, obb_.orientation.m07, obb_.orientation.m08); + u[0] = X; + u[1] = Y; + u[2] = Z; + e[0] = obb_.halfExtents.x; + e[1] = obb_.halfExtents.y; + e[2] = obb_.halfExtents.z; + Vec3.subtract(d, point, obb_.center); + Vec3.set(out, obb_.center.x, obb_.center.y, obb_.center.z); + for (var i = 0; i < 3; i++) { + var dist = Vec3.dot(d, u[i]); + if (dist > e[i]) { + dist = e[i]; + } + if (dist < -e[i]) { + dist = -e[i]; + } + out.x += dist * u[i].x; + out.y += dist * u[i].y; + out.z += dist * u[i].z; + } + return out; + } + function pt_point_line(out, point, linePointA, linePointB) { + Vec3.subtract(X, linePointA, linePointB); + var dir = X.clone(); + var dirSquaredLength = Vec3.lengthSqr(dir); + if (dirSquaredLength === 0) { + Vec3.copy(out, linePointA); + } else { + Vec3.subtract(X, point, linePointA); + var t = Vec3.dot(X, dir) / dirSquaredLength; + if (t < 0) { + Vec3.copy(out, linePointA); + } else if (t > 1) { + Vec3.copy(out, linePointB); + } else { + Vec3.scaleAndAdd(out, linePointA, dir, t); + } + } + } + + var distance = /*#__PURE__*/Object.freeze({ + __proto__: null, + point_plane: point_plane, + pt_point_plane: pt_point_plane, + pt_point_aabb: pt_point_aabb, + pt_point_obb: pt_point_obb, + pt_point_line: pt_point_line + }); + + var enums = { + SHAPE_RAY: 1 << 0, + SHAPE_LINE: 1 << 1, + SHAPE_SPHERE: 1 << 2, + SHAPE_AABB: 1 << 3, + SHAPE_OBB: 1 << 4, + SHAPE_PLANE: 1 << 5, + SHAPE_TRIANGLE: 1 << 6, + SHAPE_FRUSTUM: 1 << 7, + SHAPE_FRUSTUM_ACCURATE: 1 << 8, + SHAPE_CAPSULE: 1 << 9, + SHAPE_SPLINE: 1 << 10 + }; + + var Line = function () { + Line.create = function create(sx, sy, sz, ex, ey, ez) { + return new Line(sx, sy, sz, ex, ey, ez); + }; + Line.clone = function clone(a) { + return new Line(a.s.x, a.s.y, a.s.z, a.e.x, a.e.y, a.e.z); + }; + Line.copy = function copy(out, a) { + Vec3.copy(out.s, a.s); + Vec3.copy(out.e, a.e); + return out; + }; + Line.fromPoints = function fromPoints(out, start, end) { + Vec3.copy(out.s, start); + Vec3.copy(out.e, end); + return out; + }; + Line.set = function set(out, sx, sy, sz, ex, ey, ez) { + out.s.x = sx; + out.s.y = sy; + out.s.z = sz; + out.e.x = ex; + out.e.y = ey; + out.e.z = ez; + return out; + }; + Line.len = function len(a) { + return Vec3.distance(a.s, a.e); + }; + function Line(sx, sy, sz, ex, ey, ez) { + if (sx === void 0) { + sx = 0; + } + if (sy === void 0) { + sy = 0; + } + if (sz === void 0) { + sz = 0; + } + if (ex === void 0) { + ex = 0; + } + if (ey === void 0) { + ey = 0; + } + if (ez === void 0) { + ez = -1; + } + this.s = void 0; + this.e = void 0; + this._type = void 0; + this._type = enums.SHAPE_LINE; + this.s = new Vec3(sx, sy, sz); + this.e = new Vec3(ex, ey, ez); + } + var _proto = Line.prototype; + _proto.length = function length() { + return Vec3.distance(this.s, this.e); + }; + _createClass(Line, [{ + key: "type", + get: function get() { + return this._type; + } + }]); + return Line; + }(); + + var Ray = function () { + Ray.create = function create(ox, oy, oz, dx, dy, dz) { + if (ox === void 0) { + ox = 0; + } + if (oy === void 0) { + oy = 0; + } + if (oz === void 0) { + oz = 0; + } + if (dx === void 0) { + dx = 0; + } + if (dy === void 0) { + dy = 0; + } + if (dz === void 0) { + dz = 1; + } + return new Ray(ox, oy, oz, dx, dy, dz); + }; + Ray.clone = function clone(a) { + return new Ray(a.o.x, a.o.y, a.o.z, a.d.x, a.d.y, a.d.z); + }; + Ray.copy = function copy(out, a) { + Vec3.copy(out.o, a.o); + Vec3.copy(out.d, a.d); + return out; + }; + Ray.fromPoints = function fromPoints(out, origin, target) { + Vec3.copy(out.o, origin); + Vec3.normalize(out.d, Vec3.subtract(out.d, target, origin)); + return out; + }; + Ray.set = function set(out, ox, oy, oz, dx, dy, dz) { + out.o.x = ox; + out.o.y = oy; + out.o.z = oz; + out.d.x = dx; + out.d.y = dy; + out.d.z = dz; + return out; + }; + function Ray(ox, oy, oz, dx, dy, dz) { + if (ox === void 0) { + ox = 0; + } + if (oy === void 0) { + oy = 0; + } + if (oz === void 0) { + oz = 0; + } + if (dx === void 0) { + dx = 0; + } + if (dy === void 0) { + dy = 0; + } + if (dz === void 0) { + dz = -1; + } + this.o = void 0; + this.d = void 0; + this._type = void 0; + this._type = enums.SHAPE_RAY; + this.o = new Vec3(ox, oy, oz); + this.d = new Vec3(dx, dy, dz); + } + var _proto = Ray.prototype; + _proto.computeHit = function computeHit(out, distance) { + Vec3.normalize(out, this.d); + Vec3.scaleAndAdd(out, this.o, out, distance); + }; + _createClass(Ray, [{ + key: "type", + get: function get() { + return this._type; + } + }]); + return Ray; + }(); + + var _v3_tmp$2 = new Vec3(); + var _offset = new Vec3(); + var _min = new Vec3(); + var _max = new Vec3(); + function maxComponent(v) { + return Math.max(Math.max(v.x, v.y), v.z); + } + var Sphere = function () { + Sphere.create = function create(cx, cy, cz, r) { + return new Sphere(cx, cy, cz, r); + }; + Sphere.clone = function clone(p) { + return new Sphere(p.center.x, p.center.y, p.center.z, p.radius); + }; + Sphere.copy = function copy(out, p) { + Vec3.copy(out.center, p.center); + out.radius = p.radius; + return out; + }; + Sphere.fromPoints = function fromPoints(out, minPos, maxPos) { + Vec3.multiplyScalar(out.center, Vec3.add(_v3_tmp$2, minPos, maxPos), 0.5); + out.radius = Vec3.subtract(_v3_tmp$2, maxPos, minPos).length() * 0.5; + return out; + }; + Sphere.set = function set(out, cx, cy, cz, r) { + out.center.x = cx; + out.center.y = cy; + out.center.z = cz; + out.radius = r; + return out; + }; + function Sphere(cx, cy, cz, r) { + if (cx === void 0) { + cx = 0; + } + if (cy === void 0) { + cy = 0; + } + if (cz === void 0) { + cz = 0; + } + if (r === void 0) { + r = 1; + } + this._center = new Vec3(0, 0, 0); + this._radius = 0; + this._type = void 0; + this._type = enums.SHAPE_SPHERE; + this._center = new Vec3(cx, cy, cz); + this._radius = r; + } + var _proto = Sphere.prototype; + _proto.destroy = function destroy() {}; + _proto.clone = function clone() { + return Sphere.clone(this); + }; + _proto.copy = function copy(a) { + return Sphere.copy(this, a); + }; + _proto.getBoundary = function getBoundary(minPos, maxPos) { + Vec3.set(minPos, this.center.x - this.radius, this.center.y - this.radius, this.center.z - this.radius); + Vec3.set(maxPos, this.center.x + this.radius, this.center.y + this.radius, this.center.z + this.radius); + }; + _proto.transform = function transform(m, pos, rot, scale, out) { + Vec3.transformMat4(out.center, this.center, m); + out.radius = this.radius * maxComponent(scale); + }; + _proto.translateAndRotate = function translateAndRotate(m, rot, out) { + Vec3.transformMat4(out.center, this.center, m); + }; + _proto.setScale = function setScale(scale, out) { + out.radius = this.radius * maxComponent(scale); + }; + _proto.mergePoint = function mergePoint(point) { + if (this.radius < 0.0) { + this.center.set(point); + this.radius = 0.0; + } + Vec3.subtract(_offset, point, this.center); + var dist = _offset.length(); + if (dist > this.radius) { + var half = (dist - this.radius) * 0.5; + this.radius += half; + Vec3.multiplyScalar(_offset, _offset, half / dist); + Vec3.add(this.center, this.center, _offset); + } + }; + _proto.mergePoints = function mergePoints(points) { + var length = points.length; + if (length < 1) return; + this.radius = -1.0; + for (var i = 0; i < length; i++) { + this.mergePoint(points[i]); + } + }; + _proto.mergeAABB = function mergeAABB(a) { + a.getBoundary(_min, _max); + this.mergePoint(_min); + this.mergePoint(_max); + }; + _createClass(Sphere, [{ + key: "center", + get: function get() { + return this._center; + }, + set: function set(val) { + this._center = val; + } + }, { + key: "radius", + get: function get() { + return this._radius; + }, + set: function set(val) { + this._radius = val; + } + }, { + key: "type", + get: function get() { + return this._type; + } + }]); + return Sphere; + }(); + + var rayPlane = function () { + return function (ray, plane) { + var denom = Vec3.dot(ray.d, plane.n); + if (Math.abs(denom) < Number.EPSILON) { + return 0; + } + var d = point_plane(ray.o, plane); + var t = -d / denom; + if (t < 0) { + return 0; + } + return t; + }; + }(); + var rayTriangle = function () { + var ab = new Vec3(0, 0, 0); + var ac = new Vec3(0, 0, 0); + var pvec = new Vec3(0, 0, 0); + var tvec = new Vec3(0, 0, 0); + var qvec = new Vec3(0, 0, 0); + return function (ray, triangle, doubleSided) { + Vec3.subtract(ab, triangle.b, triangle.a); + Vec3.subtract(ac, triangle.c, triangle.a); + Vec3.cross(pvec, ray.d, ac); + var det = Vec3.dot(ab, pvec); + if (det < Number.EPSILON && (!doubleSided || det > -Number.EPSILON)) { + return 0; + } + var inv_det = 1 / det; + Vec3.subtract(tvec, ray.o, triangle.a); + var u = Vec3.dot(tvec, pvec) * inv_det; + if (u < 0 || u > 1) { + return 0; + } + Vec3.cross(qvec, tvec, ab); + var v = Vec3.dot(ray.d, qvec) * inv_det; + if (v < 0 || u + v > 1) { + return 0; + } + var t = Vec3.dot(ac, qvec) * inv_det; + return t < 0 ? 0 : t; + }; + }(); + var raySphere = function () { + var e = new Vec3(0, 0, 0); + return function (ray, sphere) { + var r = sphere.radius; + var c = sphere.center; + var o = ray.o; + var d = ray.d; + var rSq = r * r; + Vec3.subtract(e, c, o); + var eSq = e.lengthSqr(); + var aLength = Vec3.dot(e, d); + var fSq = rSq - (eSq - aLength * aLength); + if (fSq < 0) { + return 0; + } + var f = Math.sqrt(fSq); + var t = eSq < rSq ? aLength + f : aLength - f; + if (t < 0) { + return 0; + } + return t; + }; + }(); + var rayAABB = function () { + var min = new Vec3(); + var max = new Vec3(); + return function (ray, aabb) { + Vec3.subtract(min, aabb.center, aabb.halfExtents); + Vec3.add(max, aabb.center, aabb.halfExtents); + return rayAABB2$1(ray, min, max); + }; + }(); + function rayAABB2$1(ray, min, max) { + var o = ray.o; + var d = ray.d; + var ix = 1 / d.x; + var iy = 1 / d.y; + var iz = 1 / d.z; + var t1 = (min.x - o.x) * ix; + var t2 = (max.x - o.x) * ix; + var t3 = (min.y - o.y) * iy; + var t4 = (max.y - o.y) * iy; + var t5 = (min.z - o.z) * iz; + var t6 = (max.z - o.z) * iz; + var tmin = Math.max(Math.max(Math.min(t1, t2), Math.min(t3, t4)), Math.min(t5, t6)); + var tmax = Math.min(Math.min(Math.max(t1, t2), Math.max(t3, t4)), Math.max(t5, t6)); + if (tmax < 0 || tmin > tmax) { + return 0; + } + return tmin > 0 ? tmin : tmax; + } + var rayOBB = function () { + var center = new Vec3(); + var o = new Vec3(); + var d = new Vec3(); + var X = new Vec3(); + var Y = new Vec3(); + var Z = new Vec3(); + var p = new Vec3(); + var size = new Array(3); + var f = new Array(3); + var e = new Array(3); + var t = new Array(6); + return function (ray, obb) { + size[0] = obb.halfExtents.x; + size[1] = obb.halfExtents.y; + size[2] = obb.halfExtents.z; + center = obb.center; + o = ray.o; + d = ray.d; + Vec3.set(X, obb.orientation.m00, obb.orientation.m01, obb.orientation.m02); + Vec3.set(Y, obb.orientation.m03, obb.orientation.m04, obb.orientation.m05); + Vec3.set(Z, obb.orientation.m06, obb.orientation.m07, obb.orientation.m08); + Vec3.subtract(p, center, o); + f[0] = Vec3.dot(X, d); + f[1] = Vec3.dot(Y, d); + f[2] = Vec3.dot(Z, d); + e[0] = Vec3.dot(X, p); + e[1] = Vec3.dot(Y, p); + e[2] = Vec3.dot(Z, p); + for (var i = 0; i < 3; ++i) { + if (f[i] === 0) { + if (-e[i] - size[i] > 0 || -e[i] + size[i] < 0) { + return 0; + } + f[i] = 0.0000001; + } + t[i * 2 + 0] = (e[i] + size[i]) / f[i]; + t[i * 2 + 1] = (e[i] - size[i]) / f[i]; + } + var tmin = Math.max(Math.max(Math.min(t[0], t[1]), Math.min(t[2], t[3])), Math.min(t[4], t[5])); + var tmax = Math.min(Math.min(Math.max(t[0], t[1]), Math.max(t[2], t[3])), Math.max(t[4], t[5])); + if (tmax < 0 || tmin > tmax) { + return 0; + } + return tmin > 0 ? tmin : tmax; + }; + }(); + var rayCapsule = function () { + var v3_0 = new Vec3(); + var v3_1 = new Vec3(); + var v3_2 = new Vec3(); + var v3_3 = new Vec3(); + var v3_4 = new Vec3(); + var v3_5 = new Vec3(); + var v3_6 = new Vec3(); + var sphere_0 = new Sphere(); + return function (ray, capsule) { + var A = capsule.ellipseCenter0; + var B = capsule.ellipseCenter1; + var BA = Vec3.subtract(v3_1, B, A); + if (BA.length() < EPSILON$3) { + sphere_0.radius = capsule.radius; + sphere_0.center.set(capsule.ellipseCenter0); + return intersect.raySphere(ray, sphere_0); + } + var O = ray.o; + var OA = Vec3.subtract(v3_2, O, A); + var vRayNorm = Vec3.normalize(v3_0, ray.d); + var VxBA = Vec3.cross(v3_3, vRayNorm, BA); + var a = VxBA.lengthSqr(); + if (a === 0) { + sphere_0.radius = capsule.radius; + var BO = Vec3.subtract(v3_4, B, O); + if (OA.lengthSqr() < BO.lengthSqr()) { + sphere_0.center.set(A); + } else { + sphere_0.center.set(B); + } + return intersect.raySphere(ray, sphere_0); + } + var OAxBA = Vec3.cross(v3_4, OA, BA); + var ab2 = BA.lengthSqr(); + var b = 2 * Vec3.dot(VxBA, OAxBA); + var radiusSqr = capsule.radius * capsule.radius; + var c = OAxBA.lengthSqr() - radiusSqr * ab2; + var d = b * b - 4 * a * c; + if (d < 0) { + return 0; + } + var t = (-b - Math.sqrt(d)) / (2 * a); + if (t < 0) { + sphere_0.radius = capsule.radius; + var _BO = Vec3.subtract(v3_5, B, O); + if (OA.lengthSqr() < _BO.lengthSqr()) { + sphere_0.center.set(capsule.ellipseCenter0); + } else { + sphere_0.center.set(capsule.ellipseCenter1); + } + return intersect.raySphere(ray, sphere_0); + } else { + var iPos = Vec3.scaleAndAdd(v3_5, ray.o, vRayNorm, t); + var iPosLen = Vec3.subtract(v3_6, iPos, A); + var tLimit = Vec3.dot(iPosLen, BA) / ab2; + if (tLimit >= 0 && tLimit <= 1) { + return t; + } else if (tLimit < 0) { + sphere_0.radius = capsule.radius; + sphere_0.center.set(capsule.ellipseCenter0); + return intersect.raySphere(ray, sphere_0); + } else if (tLimit > 1) { + sphere_0.radius = capsule.radius; + sphere_0.center.set(capsule.ellipseCenter1); + return intersect.raySphere(ray, sphere_0); + } else { + return 0; + } + } + }; + }(); + var linePlane = function () { + var ab = new Vec3(0, 0, 0); + return function (line, plane) { + Vec3.subtract(ab, line.e, line.s); + var t = -point_plane(line.s, plane) / Vec3.dot(ab, plane.n); + if (t < 0 || t > 1) { + return 0; + } + return t; + }; + }(); + var lineTriangle = function () { + var ab = new Vec3(0, 0, 0); + var ac = new Vec3(0, 0, 0); + var qp = new Vec3(0, 0, 0); + var ap = new Vec3(0, 0, 0); + var n = new Vec3(0, 0, 0); + var e = new Vec3(0, 0, 0); + return function (line, triangle, outPt) { + Vec3.subtract(ab, triangle.b, triangle.a); + Vec3.subtract(ac, triangle.c, triangle.a); + Vec3.subtract(qp, line.s, line.e); + Vec3.cross(n, ab, ac); + var det = Vec3.dot(qp, n); + if (det <= 0.0) { + return 0; + } + Vec3.subtract(ap, line.s, triangle.a); + var t = Vec3.dot(ap, n); + if (t < 0 || t > det) { + return 0; + } + Vec3.cross(e, qp, ap); + var v = Vec3.dot(ac, e); + if (v < 0 || v > det) { + return 0; + } + var w = -Vec3.dot(ab, e); + if (w < 0.0 || v + w > det) { + return 0; + } + if (outPt) { + var invDet = 1.0 / det; + v *= invDet; + w *= invDet; + var u = 1.0 - v - w; + Vec3.set(outPt, triangle.a.x * u + triangle.b.x * v + triangle.c.x * w, triangle.a.y * u + triangle.b.y * v + triangle.c.y * w, triangle.a.z * u + triangle.b.z * v + triangle.c.z * w); + } + return 1; + }; + }(); + var r_t = new Ray(); + function lineAABB(line, aabb) { + r_t.o.set(line.s); + Vec3.subtract(r_t.d, line.e, line.s); + r_t.d.normalize(); + var min = rayAABB(r_t, aabb); + var len = line.length(); + if (min <= len) { + return min; + } else { + return 0; + } + } + function lineOBB(line, obb) { + r_t.o.set(line.s); + Vec3.subtract(r_t.d, line.e, line.s); + r_t.d.normalize(); + var min = rayOBB(r_t, obb); + var len = line.length(); + if (min <= len) { + return min; + } else { + return 0; + } + } + function lineSphere(line, sphere) { + r_t.o.set(line.s); + Vec3.subtract(r_t.d, line.e, line.s); + r_t.d.normalize(); + var min = raySphere(r_t, sphere); + var len = line.length(); + if (min <= len) { + return min; + } else { + return 0; + } + } + var aabbWithAABB = function () { + var aMin = new Vec3(); + var aMax = new Vec3(); + var bMin = new Vec3(); + var bMax = new Vec3(); + return function (aabb1, aabb2) { + Vec3.subtract(aMin, aabb1.center, aabb1.halfExtents); + Vec3.add(aMax, aabb1.center, aabb1.halfExtents); + Vec3.subtract(bMin, aabb2.center, aabb2.halfExtents); + Vec3.add(bMax, aabb2.center, aabb2.halfExtents); + return aMin.x <= bMax.x && aMax.x >= bMin.x && aMin.y <= bMax.y && aMax.y >= bMin.y && aMin.z <= bMax.z && aMax.z >= bMin.z; + }; + }(); + function getAABBVertices(min, max, out) { + Vec3.set(out[0], min.x, max.y, max.z); + Vec3.set(out[1], min.x, max.y, min.z); + Vec3.set(out[2], min.x, min.y, max.z); + Vec3.set(out[3], min.x, min.y, min.z); + Vec3.set(out[4], max.x, max.y, max.z); + Vec3.set(out[5], max.x, max.y, min.z); + Vec3.set(out[6], max.x, min.y, max.z); + Vec3.set(out[7], max.x, min.y, min.z); + } + function getOBBVertices(c, e, a1, a2, a3, out) { + Vec3.set(out[0], c.x + a1.x * e.x + a2.x * e.y + a3.x * e.z, c.y + a1.y * e.x + a2.y * e.y + a3.y * e.z, c.z + a1.z * e.x + a2.z * e.y + a3.z * e.z); + Vec3.set(out[1], c.x - a1.x * e.x + a2.x * e.y + a3.x * e.z, c.y - a1.y * e.x + a2.y * e.y + a3.y * e.z, c.z - a1.z * e.x + a2.z * e.y + a3.z * e.z); + Vec3.set(out[2], c.x + a1.x * e.x - a2.x * e.y + a3.x * e.z, c.y + a1.y * e.x - a2.y * e.y + a3.y * e.z, c.z + a1.z * e.x - a2.z * e.y + a3.z * e.z); + Vec3.set(out[3], c.x + a1.x * e.x + a2.x * e.y - a3.x * e.z, c.y + a1.y * e.x + a2.y * e.y - a3.y * e.z, c.z + a1.z * e.x + a2.z * e.y - a3.z * e.z); + Vec3.set(out[4], c.x - a1.x * e.x - a2.x * e.y - a3.x * e.z, c.y - a1.y * e.x - a2.y * e.y - a3.y * e.z, c.z - a1.z * e.x - a2.z * e.y - a3.z * e.z); + Vec3.set(out[5], c.x + a1.x * e.x - a2.x * e.y - a3.x * e.z, c.y + a1.y * e.x - a2.y * e.y - a3.y * e.z, c.z + a1.z * e.x - a2.z * e.y - a3.z * e.z); + Vec3.set(out[6], c.x - a1.x * e.x + a2.x * e.y - a3.x * e.z, c.y - a1.y * e.x + a2.y * e.y - a3.y * e.z, c.z - a1.z * e.x + a2.z * e.y - a3.z * e.z); + Vec3.set(out[7], c.x - a1.x * e.x - a2.x * e.y + a3.x * e.z, c.y - a1.y * e.x - a2.y * e.y + a3.y * e.z, c.z - a1.z * e.x - a2.z * e.y + a3.z * e.z); + } + function getInterval(vertices, axis) { + var min = Vec3.dot(axis, vertices[0]); + var max = min; + for (var i = 1; i < 8; ++i) { + var projection = Vec3.dot(axis, vertices[i]); + min = projection < min ? projection : min; + max = projection > max ? projection : max; + } + return [min, max]; + } + var aabbWithOBB = function () { + var test = new Array(15); + for (var i = 0; i < 15; i++) { + test[i] = new Vec3(0, 0, 0); + } + var vertices = new Array(8); + var vertices2 = new Array(8); + for (var _i = 0; _i < 8; _i++) { + vertices[_i] = new Vec3(0, 0, 0); + vertices2[_i] = new Vec3(0, 0, 0); + } + var min = new Vec3(); + var max = new Vec3(); + return function (aabb, obb) { + Vec3.set(test[0], 1, 0, 0); + Vec3.set(test[1], 0, 1, 0); + Vec3.set(test[2], 0, 0, 1); + Vec3.set(test[3], obb.orientation.m00, obb.orientation.m01, obb.orientation.m02); + Vec3.set(test[4], obb.orientation.m03, obb.orientation.m04, obb.orientation.m05); + Vec3.set(test[5], obb.orientation.m06, obb.orientation.m07, obb.orientation.m08); + for (var _i2 = 0; _i2 < 3; ++_i2) { + Vec3.cross(test[6 + _i2 * 3 + 0], test[_i2], test[3]); + Vec3.cross(test[6 + _i2 * 3 + 1], test[_i2], test[4]); + Vec3.cross(test[6 + _i2 * 3 + 1], test[_i2], test[5]); + } + Vec3.subtract(min, aabb.center, aabb.halfExtents); + Vec3.add(max, aabb.center, aabb.halfExtents); + getAABBVertices(min, max, vertices); + getOBBVertices(obb.center, obb.halfExtents, test[3], test[4], test[5], vertices2); + for (var j = 0; j < 15; ++j) { + var a = getInterval(vertices, test[j]); + var b = getInterval(vertices2, test[j]); + if (b[0] > a[1] || a[0] > b[1]) { + return 0; + } + } + return 1; + }; + }(); + var aabbPlane = function aabbPlane(aabb, plane) { + var r = aabb.halfExtents.x * Math.abs(plane.n.x) + aabb.halfExtents.y * Math.abs(plane.n.y) + aabb.halfExtents.z * Math.abs(plane.n.z); + var dot = Vec3.dot(plane.n, aabb.center); + if (dot + r < plane.d) { + return -1; + } else if (dot - r > plane.d) { + return 0; + } + return 1; + }; + var aabbFrustum = function aabbFrustum(aabb, frustum) { + for (var i = 0; i < frustum.planes.length; i++) { + if (aabbPlane(aabb, frustum.planes[i]) === -1) { + return 0; + } + } + return 1; + }; + var aabbFrustumCompletelyInside = function aabbFrustumCompletelyInside(aabb, frustum) { + for (var i = 0; i < frustum.planes.length; i++) { + if (aabbPlane(aabb, frustum.planes[i]) !== 0) { + return 0; + } + } + return 1; + }; + var aabbFrustumAccurate = function () { + var tmp = new Array(8); + var out1 = 0; + var out2 = 0; + for (var i = 0; i < tmp.length; i++) { + tmp[i] = new Vec3(0, 0, 0); + } + return function (aabb, frustum) { + var result = 0; + var intersects = false; + for (var _i3 = 0; _i3 < frustum.planes.length; _i3++) { + result = aabbPlane(aabb, frustum.planes[_i3]); + if (result === -1) return 0;else if (result === 1) { + intersects = true; + } + } + if (!intersects) { + return 1; + } + for (var _i4 = 0; _i4 < frustum.vertices.length; _i4++) { + Vec3.subtract(tmp[_i4], frustum.vertices[_i4], aabb.center); + } + out1 = 0, out2 = 0; + for (var _i5 = 0; _i5 < frustum.vertices.length; _i5++) { + if (tmp[_i5].x > aabb.halfExtents.x) { + out1++; + } else if (tmp[_i5].x < -aabb.halfExtents.x) { + out2++; + } + } + if (out1 === frustum.vertices.length || out2 === frustum.vertices.length) { + return 0; + } + out1 = 0; + out2 = 0; + for (var _i6 = 0; _i6 < frustum.vertices.length; _i6++) { + if (tmp[_i6].y > aabb.halfExtents.y) { + out1++; + } else if (tmp[_i6].y < -aabb.halfExtents.y) { + out2++; + } + } + if (out1 === frustum.vertices.length || out2 === frustum.vertices.length) { + return 0; + } + out1 = 0; + out2 = 0; + for (var _i7 = 0; _i7 < frustum.vertices.length; _i7++) { + if (tmp[_i7].z > aabb.halfExtents.z) { + out1++; + } else if (tmp[_i7].z < -aabb.halfExtents.z) { + out2++; + } + } + if (out1 === frustum.vertices.length || out2 === frustum.vertices.length) { + return 0; + } + return 1; + }; + }(); + var obbPoint = function () { + var tmp = new Vec3(0, 0, 0); + var m3 = new Mat3(); + var lessThan = function lessThan(a, b) { + return Math.abs(a.x) < b.x && Math.abs(a.y) < b.y && Math.abs(a.z) < b.z; + }; + return function (obb, point) { + Vec3.subtract(tmp, point, obb.center); + Vec3.transformMat3(tmp, tmp, Mat3.transpose(m3, obb.orientation)); + return lessThan(tmp, obb.halfExtents); + }; + }(); + var obbPlane = function () { + var absDot = function absDot(n, x, y, z) { + return Math.abs(n.x * x + n.y * y + n.z * z); + }; + return function (obb, plane) { + var r = obb.halfExtents.x * absDot(plane.n, obb.orientation.m00, obb.orientation.m01, obb.orientation.m02) + obb.halfExtents.y * absDot(plane.n, obb.orientation.m03, obb.orientation.m04, obb.orientation.m05) + obb.halfExtents.z * absDot(plane.n, obb.orientation.m06, obb.orientation.m07, obb.orientation.m08); + var dot = Vec3.dot(plane.n, obb.center); + if (dot + r < plane.d) { + return -1; + } else if (dot - r > plane.d) { + return 0; + } + return 1; + }; + }(); + var obbFrustum = function obbFrustum(obb, frustum) { + for (var i = 0; i < frustum.planes.length; i++) { + if (obbPlane(obb, frustum.planes[i]) === -1) { + return 0; + } + } + return 1; + }; + var obbFrustumAccurate = function () { + var tmp = new Array(8); + var dist = 0; + var out1 = 0; + var out2 = 0; + for (var i = 0; i < tmp.length; i++) { + tmp[i] = new Vec3(0, 0, 0); + } + var dot = function dot(n, x, y, z) { + return n.x * x + n.y * y + n.z * z; + }; + return function (obb, frustum) { + var result = 0; + var intersects = false; + for (var _i8 = 0; _i8 < frustum.planes.length; _i8++) { + result = obbPlane(obb, frustum.planes[_i8]); + if (result === -1) return 0;else if (result === 1) { + intersects = true; + } + } + if (!intersects) { + return 1; + } + for (var _i9 = 0; _i9 < frustum.vertices.length; _i9++) { + Vec3.subtract(tmp[_i9], frustum.vertices[_i9], obb.center); + } + out1 = 0, out2 = 0; + for (var _i10 = 0; _i10 < frustum.vertices.length; _i10++) { + dist = dot(tmp[_i10], obb.orientation.m00, obb.orientation.m01, obb.orientation.m02); + if (dist > obb.halfExtents.x) { + out1++; + } else if (dist < -obb.halfExtents.x) { + out2++; + } + } + if (out1 === frustum.vertices.length || out2 === frustum.vertices.length) { + return 0; + } + out1 = 0; + out2 = 0; + for (var _i11 = 0; _i11 < frustum.vertices.length; _i11++) { + dist = dot(tmp[_i11], obb.orientation.m03, obb.orientation.m04, obb.orientation.m05); + if (dist > obb.halfExtents.y) { + out1++; + } else if (dist < -obb.halfExtents.y) { + out2++; + } + } + if (out1 === frustum.vertices.length || out2 === frustum.vertices.length) { + return 0; + } + out1 = 0; + out2 = 0; + for (var _i12 = 0; _i12 < frustum.vertices.length; _i12++) { + dist = dot(tmp[_i12], obb.orientation.m06, obb.orientation.m07, obb.orientation.m08); + if (dist > obb.halfExtents.z) { + out1++; + } else if (dist < -obb.halfExtents.z) { + out2++; + } + } + if (out1 === frustum.vertices.length || out2 === frustum.vertices.length) { + return 0; + } + return 1; + }; + }(); + var obbWithOBB = function () { + var test = new Array(15); + for (var i = 0; i < 15; i++) { + test[i] = new Vec3(0, 0, 0); + } + var vertices = new Array(8); + var vertices2 = new Array(8); + for (var _i13 = 0; _i13 < 8; _i13++) { + vertices[_i13] = new Vec3(0, 0, 0); + vertices2[_i13] = new Vec3(0, 0, 0); + } + return function (obb1, obb2) { + Vec3.set(test[0], obb1.orientation.m00, obb1.orientation.m01, obb1.orientation.m02); + Vec3.set(test[1], obb1.orientation.m03, obb1.orientation.m04, obb1.orientation.m05); + Vec3.set(test[2], obb1.orientation.m06, obb1.orientation.m07, obb1.orientation.m08); + Vec3.set(test[3], obb2.orientation.m00, obb2.orientation.m01, obb2.orientation.m02); + Vec3.set(test[4], obb2.orientation.m03, obb2.orientation.m04, obb2.orientation.m05); + Vec3.set(test[5], obb2.orientation.m06, obb2.orientation.m07, obb2.orientation.m08); + for (var _i14 = 0; _i14 < 3; ++_i14) { + Vec3.cross(test[6 + _i14 * 3 + 0], test[_i14], test[3]); + Vec3.cross(test[6 + _i14 * 3 + 1], test[_i14], test[4]); + Vec3.cross(test[6 + _i14 * 3 + 2], test[_i14], test[5]); + } + getOBBVertices(obb1.center, obb1.halfExtents, test[0], test[1], test[2], vertices); + getOBBVertices(obb2.center, obb2.halfExtents, test[3], test[4], test[5], vertices2); + for (var _i15 = 0; _i15 < 15; ++_i15) { + var a = getInterval(vertices, test[_i15]); + var b = getInterval(vertices2, test[_i15]); + if (b[0] > a[1] || a[0] > b[1]) { + return 0; + } + } + return 1; + }; + }(); + var obbCapsule = function () { + var sphere_0 = new Sphere(); + var v3_0 = new Vec3(); + var v3_1 = new Vec3(); + var v3_2 = new Vec3(); + var v3_verts8 = new Array(8); + for (var i = 0; i < 8; i++) { + v3_verts8[i] = new Vec3(); + } + var v3_axis8 = new Array(8); + for (var _i16 = 0; _i16 < 8; _i16++) { + v3_axis8[_i16] = new Vec3(); + } + return function (obb, capsule) { + var h = Vec3.squaredDistance(capsule.ellipseCenter0, capsule.ellipseCenter1); + if (h === 0) { + sphere_0.radius = capsule.radius; + sphere_0.center.set(capsule.ellipseCenter0); + return intersect.sphereOBB(sphere_0, obb); + } else { + v3_0.x = obb.orientation.m00; + v3_0.y = obb.orientation.m01; + v3_0.z = obb.orientation.m02; + v3_1.x = obb.orientation.m03; + v3_1.y = obb.orientation.m04; + v3_1.z = obb.orientation.m05; + v3_2.x = obb.orientation.m06; + v3_2.y = obb.orientation.m07; + v3_2.z = obb.orientation.m08; + getOBBVertices(obb.center, obb.halfExtents, v3_0, v3_1, v3_2, v3_verts8); + var axes = v3_axis8; + var a0 = Vec3.copy(axes[0], v3_0); + var a1 = Vec3.copy(axes[1], v3_1); + var a2 = Vec3.copy(axes[2], v3_2); + var C = Vec3.subtract(axes[3], capsule.center, obb.center); + C.normalize(); + var B = Vec3.subtract(axes[4], capsule.ellipseCenter0, capsule.ellipseCenter1); + B.normalize(); + Vec3.cross(axes[5], a0, B); + Vec3.cross(axes[6], a1, B); + Vec3.cross(axes[7], a2, B); + for (var _i17 = 0; _i17 < 8; ++_i17) { + var a = getInterval(v3_verts8, axes[_i17]); + var d0 = Vec3.dot(axes[_i17], capsule.ellipseCenter0); + var d1 = Vec3.dot(axes[_i17], capsule.ellipseCenter1); + var max_d = Math.max(d0, d1); + var min_d = Math.min(d0, d1); + var d_min = min_d - capsule.radius; + var d_max = max_d + capsule.radius; + if (d_min > a[1] || a[0] > d_max) { + return 0; + } + } + return 1; + } + }; + }(); + var spherePlane = function spherePlane(sphere, plane) { + var dot = Vec3.dot(plane.n, sphere.center); + var r = sphere.radius * plane.n.length(); + if (dot + r < plane.d) { + return -1; + } else if (dot - r > plane.d) { + return 0; + } + return 1; + }; + var sphereFrustum = function sphereFrustum(sphere, frustum) { + for (var i = 0; i < frustum.planes.length; i++) { + if (spherePlane(sphere, frustum.planes[i]) === -1) { + return 0; + } + } + return 1; + }; + var sphereFrustumAccurate = function () { + var pt = new Vec3(0, 0, 0); + var map = [1, -1, 1, -1, 1, -1]; + return function (sphere, frustum) { + for (var i = 0; i < 6; i++) { + var _plane = frustum.planes[i]; + var _r = sphere.radius; + var c = sphere.center; + var n = _plane.n; + var d = _plane.d; + var dot = Vec3.dot(n, c); + if (dot + _r < d) return 0;else if (dot - _r > d) { + continue; + } + Vec3.add(pt, c, Vec3.multiplyScalar(pt, n, _r)); + for (var j = 0; j < 6; j++) { + if (j === i || j === i + map[i]) { + continue; + } + var test = frustum.planes[j]; + if (Vec3.dot(test.n, pt) < test.d) { + return 0; + } + } + } + return 1; + }; + }(); + var sphereWithSphere = function sphereWithSphere(sphere0, sphere1) { + var r = sphere0.radius + sphere1.radius; + return Vec3.squaredDistance(sphere0.center, sphere1.center) < r * r; + }; + var sphereAABB = function () { + var pt = new Vec3(); + return function (sphere, aabb) { + pt_point_aabb(pt, sphere.center, aabb); + return Vec3.squaredDistance(sphere.center, pt) < sphere.radius * sphere.radius; + }; + }(); + var sphereOBB = function () { + var pt = new Vec3(); + return function (sphere, obb) { + pt_point_obb(pt, sphere.center, obb); + return Vec3.squaredDistance(sphere.center, pt) < sphere.radius * sphere.radius; + }; + }(); + var sphereCapsule = function () { + var v3_0 = new Vec3(); + var v3_1 = new Vec3(); + return function (sphere, capsule) { + var r = sphere.radius + capsule.radius; + var squaredR = r * r; + var h = Vec3.squaredDistance(capsule.ellipseCenter0, capsule.ellipseCenter1); + if (h === 0) { + return Vec3.squaredDistance(sphere.center, capsule.center) < squaredR; + } else { + Vec3.subtract(v3_0, sphere.center, capsule.ellipseCenter0); + Vec3.subtract(v3_1, capsule.ellipseCenter1, capsule.ellipseCenter0); + var t = Vec3.dot(v3_0, v3_1) / h; + if (t < 0) { + return Vec3.squaredDistance(sphere.center, capsule.ellipseCenter0) < squaredR; + } else if (t > 1) { + return Vec3.squaredDistance(sphere.center, capsule.ellipseCenter1) < squaredR; + } else { + Vec3.scaleAndAdd(v3_0, capsule.ellipseCenter0, v3_1, t); + return Vec3.squaredDistance(sphere.center, v3_0) < squaredR; + } + } + }; + }(); + var capsuleWithCapsule = function () { + var v3_0 = new Vec3(); + var v3_1 = new Vec3(); + var v3_2 = new Vec3(); + var v3_3 = new Vec3(); + var v3_4 = new Vec3(); + var v3_5 = new Vec3(); + return function capsuleWithCapsule(capsuleA, capsuleB) { + var u = Vec3.subtract(v3_0, capsuleA.ellipseCenter1, capsuleA.ellipseCenter0); + var v = Vec3.subtract(v3_1, capsuleB.ellipseCenter1, capsuleB.ellipseCenter0); + var w = Vec3.subtract(v3_2, capsuleA.ellipseCenter0, capsuleB.ellipseCenter0); + var a = Vec3.dot(u, u); + var b = Vec3.dot(u, v); + var c = Vec3.dot(v, v); + var d = Vec3.dot(u, w); + var e = Vec3.dot(v, w); + var D = a * c - b * b; + var sN; + var sD = D; + var tN; + var tD = D; + if (D < EPSILON$3) { + sN = 0.0; + sD = 1.0; + tN = e; + tD = c; + } else { + sN = b * e - c * d; + tN = a * e - b * d; + if (sN < 0.0) { + sN = 0.0; + tN = e; + tD = c; + } else if (sN > sD) { + sN = sD; + tN = e + b; + tD = c; + } + } + if (tN < 0.0) { + tN = 0.0; + if (-d < 0.0) { + sN = 0.0; + } else if (-d > a) { + sN = sD; + } else { + sN = -d; + sD = a; + } + } else if (tN > tD) { + tN = tD; + if (-d + b < 0.0) { + sN = 0; + } else if (-d + b > a) { + sN = sD; + } else { + sN = -d + b; + sD = a; + } + } + var sc = Math.abs(sN) < EPSILON$3 ? 0.0 : sN / sD; + var tc = Math.abs(tN) < EPSILON$3 ? 0.0 : tN / tD; + var dP = v3_3; + dP.set(w); + dP.add(Vec3.multiplyScalar(v3_4, u, sc)); + dP.subtract(Vec3.multiplyScalar(v3_5, v, tc)); + var radius = capsuleA.radius + capsuleB.radius; + return dP.lengthSqr() < radius * radius; + }; + }(); + var intersect = { + raySphere: raySphere, + rayAABB: rayAABB, + rayOBB: rayOBB, + rayPlane: rayPlane, + rayTriangle: rayTriangle, + rayCapsule: rayCapsule, + raySubMesh: null, + rayMesh: null, + rayModel: null, + lineSphere: lineSphere, + lineAABB: lineAABB, + lineOBB: lineOBB, + linePlane: linePlane, + lineTriangle: lineTriangle, + sphereWithSphere: sphereWithSphere, + sphereAABB: sphereAABB, + sphereOBB: sphereOBB, + spherePlane: spherePlane, + sphereFrustum: sphereFrustum, + sphereFrustumAccurate: sphereFrustumAccurate, + sphereCapsule: sphereCapsule, + aabbWithAABB: aabbWithAABB, + aabbWithOBB: aabbWithOBB, + aabbPlane: aabbPlane, + aabbFrustum: aabbFrustum, + aabbFrustumAccurate: aabbFrustumAccurate, + obbWithOBB: obbWithOBB, + obbPlane: obbPlane, + obbFrustum: obbFrustum, + obbFrustumAccurate: obbFrustumAccurate, + obbPoint: obbPoint, + obbCapsule: obbCapsule, + aabbFrustumCompletelyInside: aabbFrustumCompletelyInside, + capsuleWithCapsule: capsuleWithCapsule, + resolve: function resolve(g1, g2, outPt) { + if (outPt === void 0) { + outPt = null; + } + var type1 = g1._type; + var type2 = g2._type; + var resolver = this[type1 | type2]; + return type1 < type2 ? resolver(g1, g2, outPt) : resolver(g2, g1, outPt); + } + }; + intersect[enums.SHAPE_RAY | enums.SHAPE_SPHERE] = raySphere; + intersect[enums.SHAPE_RAY | enums.SHAPE_AABB] = rayAABB; + intersect[enums.SHAPE_RAY | enums.SHAPE_OBB] = rayOBB; + intersect[enums.SHAPE_RAY | enums.SHAPE_PLANE] = rayPlane; + intersect[enums.SHAPE_RAY | enums.SHAPE_TRIANGLE] = rayTriangle; + intersect[enums.SHAPE_RAY | enums.SHAPE_CAPSULE] = rayCapsule; + intersect[enums.SHAPE_LINE | enums.SHAPE_SPHERE] = lineSphere; + intersect[enums.SHAPE_LINE | enums.SHAPE_AABB] = lineAABB; + intersect[enums.SHAPE_LINE | enums.SHAPE_OBB] = lineOBB; + intersect[enums.SHAPE_LINE | enums.SHAPE_PLANE] = linePlane; + intersect[enums.SHAPE_LINE | enums.SHAPE_TRIANGLE] = lineTriangle; + intersect[enums.SHAPE_SPHERE] = sphereWithSphere; + intersect[enums.SHAPE_SPHERE | enums.SHAPE_AABB] = sphereAABB; + intersect[enums.SHAPE_SPHERE | enums.SHAPE_OBB] = sphereOBB; + intersect[enums.SHAPE_SPHERE | enums.SHAPE_PLANE] = spherePlane; + intersect[enums.SHAPE_SPHERE | enums.SHAPE_FRUSTUM] = sphereFrustum; + intersect[enums.SHAPE_SPHERE | enums.SHAPE_FRUSTUM_ACCURATE] = sphereFrustumAccurate; + intersect[enums.SHAPE_SPHERE | enums.SHAPE_CAPSULE] = sphereCapsule; + intersect[enums.SHAPE_AABB] = aabbWithAABB; + intersect[enums.SHAPE_AABB | enums.SHAPE_OBB] = aabbWithOBB; + intersect[enums.SHAPE_AABB | enums.SHAPE_PLANE] = aabbPlane; + intersect[enums.SHAPE_AABB | enums.SHAPE_FRUSTUM] = aabbFrustum; + intersect[enums.SHAPE_AABB | enums.SHAPE_FRUSTUM_ACCURATE] = aabbFrustumAccurate; + intersect[enums.SHAPE_OBB] = obbWithOBB; + intersect[enums.SHAPE_OBB | enums.SHAPE_PLANE] = obbPlane; + intersect[enums.SHAPE_OBB | enums.SHAPE_FRUSTUM] = obbFrustum; + intersect[enums.SHAPE_OBB | enums.SHAPE_FRUSTUM_ACCURATE] = obbFrustumAccurate; + intersect[enums.SHAPE_OBB | enums.SHAPE_CAPSULE] = obbCapsule; + intersect[enums.SHAPE_CAPSULE] = capsuleWithCapsule; + + replaceProperty(Line.prototype, 'line', [{ + name: 'mag', + newName: 'len' + }, { + name: 'magnitude', + newName: 'len' + }]); + removeProperty(intersect, 'intersect', [{ + name: 'line_quad' + }]); + + var v1 = new Vec3(0, 0, 0); + var v2 = new Vec3(0, 0, 0); + var temp_mat = legacyCC.mat4(); + var temp_vec4 = legacyCC.v4(); + var Plane = function () { + Plane.create = function create(nx, ny, nz, d) { + return new Plane(nx, ny, nz, d); + }; + Plane.clone = function clone(p) { + return new Plane(p.n.x, p.n.y, p.n.z, p.d); + }; + Plane.copy = function copy(out, p) { + Vec3.copy(out.n, p.n); + out.d = p.d; + return out; + }; + Plane.fromPoints = function fromPoints(out, a, b, c) { + Vec3.subtract(v1, b, a); + Vec3.subtract(v2, c, a); + Vec3.normalize(out.n, Vec3.cross(out.n, v1, v2)); + out.d = Vec3.dot(out.n, a); + return out; + }; + Plane.set = function set(out, nx, ny, nz, d) { + out.n.x = nx; + out.n.y = ny; + out.n.z = nz; + out.d = d; + return out; + }; + Plane.fromNormalAndPoint = function fromNormalAndPoint(out, normal, point) { + Vec3.copy(out.n, normal); + out.d = Vec3.dot(normal, point); + return out; + }; + Plane.normalize = function normalize(out, a) { + var len = a.n.length(); + Vec3.normalize(out.n, a.n); + if (len > 0) { + out.d = a.d / len; + } + return out; + }; + function Plane(nx, ny, nz, d) { + if (nx === void 0) { + nx = 0; + } + if (ny === void 0) { + ny = 1; + } + if (nz === void 0) { + nz = 0; + } + if (d === void 0) { + d = 0; + } + this.n = void 0; + this._type = enums.SHAPE_PLANE; + this.n = new Vec3(nx, ny, nz); + this.d = d; + } + var _proto = Plane.prototype; + _proto.transform = function transform(mat) { + Mat4.invert(temp_mat, mat); + Mat4.transpose(temp_mat, temp_mat); + Vec4.set(temp_vec4, this.n.x, this.n.y, this.n.z, -this.d); + Vec4.transformMat4(temp_vec4, temp_vec4, temp_mat); + Vec3.set(this.n, temp_vec4.x, temp_vec4.y, temp_vec4.z); + this.d = -temp_vec4.w; + }; + _createClass(Plane, [{ + key: "type", + get: function get() { + return this._type; + } + }, { + key: "x", + get: function get() { + return this.n.x; + }, + set: function set(val) { + this.n.x = val; + } + }, { + key: "y", + get: function get() { + return this.n.y; + }, + set: function set(val) { + this.n.y = val; + } + }, { + key: "z", + get: function get() { + return this.n.z; + }, + set: function set(val) { + this.n.z = val; + } + }, { + key: "w", + get: function get() { + return this.d; + }, + set: function set(val) { + this.d = val; + } + }]); + return Plane; + }(); + + var Triangle = function () { + Triangle.create = function create(ax, ay, az, bx, by, bz, cx, cy, cz) { + if (ax === void 0) { + ax = 1; + } + if (ay === void 0) { + ay = 0; + } + if (az === void 0) { + az = 0; + } + if (bx === void 0) { + bx = 0; + } + if (by === void 0) { + by = 0; + } + if (bz === void 0) { + bz = 0; + } + if (cx === void 0) { + cx = 0; + } + if (cy === void 0) { + cy = 0; + } + if (cz === void 0) { + cz = 1; + } + return new Triangle(ax, ay, az, bx, by, bz, cx, cy, cz); + }; + Triangle.clone = function clone(t) { + return new Triangle(t.a.x, t.a.y, t.a.z, t.b.x, t.b.y, t.b.z, t.c.x, t.c.y, t.c.z); + }; + Triangle.copy = function copy(out, t) { + Vec3.copy(out.a, t.a); + Vec3.copy(out.b, t.b); + Vec3.copy(out.c, t.c); + return out; + }; + Triangle.fromPoints = function fromPoints(out, a, b, c) { + Vec3.copy(out.a, a); + Vec3.copy(out.b, b); + Vec3.copy(out.c, c); + return out; + }; + Triangle.set = function set(out, ax, ay, az, bx, by, bz, cx, cy, cz) { + out.a.x = ax; + out.a.y = ay; + out.a.z = az; + out.b.x = bx; + out.b.y = by; + out.b.z = bz; + out.c.x = cx; + out.c.y = cy; + out.c.z = cz; + return out; + }; + function Triangle(ax, ay, az, bx, by, bz, cx, cy, cz) { + if (ax === void 0) { + ax = 0; + } + if (ay === void 0) { + ay = 0; + } + if (az === void 0) { + az = 0; + } + if (bx === void 0) { + bx = 1; + } + if (by === void 0) { + by = 0; + } + if (bz === void 0) { + bz = 0; + } + if (cx === void 0) { + cx = 0; + } + if (cy === void 0) { + cy = 1; + } + if (cz === void 0) { + cz = 0; + } + this.a = void 0; + this.b = void 0; + this.c = void 0; + this._type = void 0; + this._type = enums.SHAPE_TRIANGLE; + this.a = new Vec3(ax, ay, az); + this.b = new Vec3(bx, by, bz); + this.c = new Vec3(cx, cy, cz); + } + _createClass(Triangle, [{ + key: "type", + get: function get() { + return this._type; + } + }]); + return Triangle; + }(); + + var _v3_tmp$1 = new Vec3(); + var _v3_tmp2$1 = new Vec3(); + var _v3_tmp3 = new Vec3(); + var _v3_tmp4 = new Vec3(); + var _m3_tmp$1 = new Mat3(); + var transform_extent_m4 = function transform_extent_m4(out, extent, m4) { + _m3_tmp$1.m00 = Math.abs(m4.m00); + _m3_tmp$1.m01 = Math.abs(m4.m01); + _m3_tmp$1.m02 = Math.abs(m4.m02); + _m3_tmp$1.m03 = Math.abs(m4.m04); + _m3_tmp$1.m04 = Math.abs(m4.m05); + _m3_tmp$1.m05 = Math.abs(m4.m06); + _m3_tmp$1.m06 = Math.abs(m4.m08); + _m3_tmp$1.m07 = Math.abs(m4.m09); + _m3_tmp$1.m08 = Math.abs(m4.m10); + Vec3.transformMat3(out, extent, _m3_tmp$1); + }; + var AABB = function () { + AABB.create = function create(px, py, pz, hw, hh, hl) { + return new AABB(px, py, pz, hw, hh, hl); + }; + AABB.clone = function clone(a) { + return new AABB(a.center.x, a.center.y, a.center.z, a.halfExtents.x, a.halfExtents.y, a.halfExtents.z); + }; + AABB.copy = function copy(out, a) { + Vec3.copy(out.center, a.center); + Vec3.copy(out.halfExtents, a.halfExtents); + return out; + }; + AABB.fromPoints = function fromPoints(out, minPos, maxPos) { + Vec3.add(_v3_tmp$1, maxPos, minPos); + Vec3.subtract(_v3_tmp2$1, maxPos, minPos); + Vec3.multiplyScalar(out.center, _v3_tmp$1, 0.5); + Vec3.multiplyScalar(out.halfExtents, _v3_tmp2$1, 0.5); + return out; + }; + AABB.set = function set(out, px, py, pz, hw, hh, hl) { + out.center.set(px, py, pz); + out.halfExtents.set(hw, hh, hl); + return out; + }; + AABB.merge = function merge(out, a, b) { + Vec3.subtract(_v3_tmp$1, a.center, a.halfExtents); + Vec3.subtract(_v3_tmp2$1, b.center, b.halfExtents); + Vec3.add(_v3_tmp3, a.center, a.halfExtents); + Vec3.add(_v3_tmp4, b.center, b.halfExtents); + Vec3.max(_v3_tmp4, _v3_tmp3, _v3_tmp4); + Vec3.min(_v3_tmp3, _v3_tmp$1, _v3_tmp2$1); + return AABB.fromPoints(out, _v3_tmp3, _v3_tmp4); + }; + AABB.toBoundingSphere = function toBoundingSphere(out, a) { + out.center.set(a.center); + out.radius = a.halfExtents.length(); + return out; + }; + AABB.transform = function transform(out, a, matrix) { + Vec3.transformMat4(out.center, a.center, matrix); + transform_extent_m4(out.halfExtents, a.halfExtents, matrix); + return out; + }; + function AABB(px, py, pz, hw, hh, hl) { + if (px === void 0) { + px = 0; + } + if (py === void 0) { + py = 0; + } + if (pz === void 0) { + pz = 0; + } + if (hw === void 0) { + hw = 1; + } + if (hh === void 0) { + hh = 1; + } + if (hl === void 0) { + hl = 1; + } + this.center = void 0; + this.halfExtents = void 0; + this._type = void 0; + this._type = enums.SHAPE_AABB; + this.center = new Vec3(px, py, pz); + this.halfExtents = new Vec3(hw, hh, hl); + } + var _proto = AABB.prototype; + _proto.getBoundary = function getBoundary(minPos, maxPos) { + Vec3.subtract(minPos, this.center, this.halfExtents); + Vec3.add(maxPos, this.center, this.halfExtents); + }; + _proto.transform = function transform(m, pos, rot, scale, out) { + Vec3.transformMat4(out.center, this.center, m); + transform_extent_m4(out.halfExtents, this.halfExtents, m); + }; + _proto.clone = function clone() { + return AABB.clone(this); + }; + _proto.copy = function copy(a) { + return AABB.copy(this, a); + }; + _proto.mergePoint = function mergePoint(point) { + this.getBoundary(_v3_tmp$1, _v3_tmp2$1); + if (point.x < _v3_tmp$1.x) { + _v3_tmp$1.x = point.x; + } + if (point.y < _v3_tmp$1.y) { + _v3_tmp$1.y = point.y; + } + if (point.z < _v3_tmp$1.z) { + _v3_tmp$1.z = point.z; + } + if (point.x > _v3_tmp2$1.x) { + _v3_tmp2$1.x = point.x; + } + if (point.y > _v3_tmp2$1.y) { + _v3_tmp2$1.y = point.y; + } + if (point.z > _v3_tmp2$1.z) { + _v3_tmp2$1.z = point.z; + } + Vec3.add(_v3_tmp3, _v3_tmp$1, _v3_tmp2$1); + this.center.set(Vec3.multiplyScalar(_v3_tmp3, _v3_tmp3, 0.5)); + this.halfExtents.set(_v3_tmp2$1.x - _v3_tmp3.x, _v3_tmp2$1.y - _v3_tmp3.y, _v3_tmp2$1.z - _v3_tmp3.z); + }; + _proto.mergePoints = function mergePoints(points) { + if (points.length < 1) { + return; + } + for (var i = 0; i < points.length; i++) { + this.mergePoint(points[i]); + } + }; + _proto.mergeFrustum = function mergeFrustum(frustum) { + this.mergePoints(frustum.vertices); + }; + _createClass(AABB, [{ + key: "type", + get: function get() { + return this._type; + } + }]); + return AABB; + }(); + + var Capsule = function () { + function Capsule(radius, halfHeight, axis) { + if (radius === void 0) { + radius = 0.5; + } + if (halfHeight === void 0) { + halfHeight = 0.5; + } + if (axis === void 0) { + axis = 1; + } + this._type = void 0; + this.radius = void 0; + this.halfHeight = void 0; + this.axis = void 0; + this.center = void 0; + this.rotation = void 0; + this.ellipseCenter0 = void 0; + this.ellipseCenter1 = void 0; + this._type = enums.SHAPE_CAPSULE; + this.radius = radius; + this.halfHeight = halfHeight; + this.axis = axis; + this.center = new Vec3(); + this.rotation = new Quat(); + this.ellipseCenter0 = new Vec3(0, halfHeight, 0); + this.ellipseCenter1 = new Vec3(0, -halfHeight, 0); + this.updateCache(); + } + var _proto = Capsule.prototype; + _proto.transform = function transform(m, pos, rot, scale, out) { + var ws = scale; + var s = absMaxComponent(ws); + out.radius = this.radius * Math.abs(s); + var halfTotalWorldHeight = (this.halfHeight + this.radius) * Math.abs(ws.y); + var halfWorldHeight = halfTotalWorldHeight - out.radius; + if (halfWorldHeight < 0) halfWorldHeight = 0; + out.halfHeight = halfWorldHeight; + Vec3.transformMat4(out.center, this.center, m); + Quat.multiply(out.rotation, this.rotation, rot); + out.updateCache(); + }; + _proto.updateCache = function updateCache() { + this.updateLocalCenter(); + Vec3.transformQuat(this.ellipseCenter0, this.ellipseCenter0, this.rotation); + Vec3.transformQuat(this.ellipseCenter1, this.ellipseCenter1, this.rotation); + this.ellipseCenter0.add(this.center); + this.ellipseCenter1.add(this.center); + }; + _proto.updateLocalCenter = function updateLocalCenter() { + var halfHeight = this.halfHeight; + var axis = this.axis; + switch (axis) { + case 0: + this.ellipseCenter0.set(halfHeight, 0, 0); + this.ellipseCenter1.set(-halfHeight, 0, 0); + break; + case 1: + this.ellipseCenter0.set(0, halfHeight, 0); + this.ellipseCenter1.set(0, -halfHeight, 0); + break; + case 2: + this.ellipseCenter0.set(0, 0, halfHeight); + this.ellipseCenter1.set(0, 0, -halfHeight); + break; + } + }; + _createClass(Capsule, [{ + key: "type", + get: function get() { + return this._type; + } + }]); + return Capsule; + }(); + + var _v = new Array(8); + _v[0] = new Vec3(1, 1, 1); + _v[1] = new Vec3(-1, 1, 1); + _v[2] = new Vec3(-1, -1, 1); + _v[3] = new Vec3(1, -1, 1); + _v[4] = new Vec3(1, 1, -1); + _v[5] = new Vec3(-1, 1, -1); + _v[6] = new Vec3(-1, -1, -1); + _v[7] = new Vec3(1, -1, -1); + var _nearTemp = new Vec3(); + var _farTemp = new Vec3(); + var _temp_v3 = new Vec3(); + var Frustum = function () { + Frustum.createOrthographic = function createOrthographic(out, width, height, near, far, transform) { + var halfWidth = width / 2; + var halfHeight = height / 2; + Vec3.set(_temp_v3, halfWidth, halfHeight, -near); + Vec3.transformMat4(out.vertices[0], _temp_v3, transform); + Vec3.set(_temp_v3, -halfWidth, halfHeight, -near); + Vec3.transformMat4(out.vertices[1], _temp_v3, transform); + Vec3.set(_temp_v3, -halfWidth, -halfHeight, -near); + Vec3.transformMat4(out.vertices[2], _temp_v3, transform); + Vec3.set(_temp_v3, halfWidth, -halfHeight, -near); + Vec3.transformMat4(out.vertices[3], _temp_v3, transform); + Vec3.set(_temp_v3, halfWidth, halfHeight, -far); + Vec3.transformMat4(out.vertices[4], _temp_v3, transform); + Vec3.set(_temp_v3, -halfWidth, halfHeight, -far); + Vec3.transformMat4(out.vertices[5], _temp_v3, transform); + Vec3.set(_temp_v3, -halfWidth, -halfHeight, -far); + Vec3.transformMat4(out.vertices[6], _temp_v3, transform); + Vec3.set(_temp_v3, halfWidth, -halfHeight, -far); + Vec3.transformMat4(out.vertices[7], _temp_v3, transform); + out.updatePlanes(); + }; + Frustum.createOrtho = function createOrtho(out, width, height, near, far, transform) { + return Frustum.createOrthographic(out, width, height, near, far, transform); + }; + Frustum.createPerspective = function createPerspective(out, aspect, fov, near, far, transform) { + var h = Math.tan(fov * 0.5); + var w = h * aspect; + _nearTemp.set(near * w, near * h, near); + _farTemp.set(far * w, far * h, far); + var vertexes = out.vertices; + _temp_v3.set(_nearTemp.x, _nearTemp.y, -_nearTemp.z); + Vec3.transformMat4(vertexes[0], _temp_v3, transform); + _temp_v3.set(-_nearTemp.x, _nearTemp.y, -_nearTemp.z); + Vec3.transformMat4(vertexes[1], _temp_v3, transform); + _temp_v3.set(-_nearTemp.x, -_nearTemp.y, -_nearTemp.z); + Vec3.transformMat4(vertexes[2], _temp_v3, transform); + _temp_v3.set(_nearTemp.x, -_nearTemp.y, -_nearTemp.z); + Vec3.transformMat4(vertexes[3], _temp_v3, transform); + _temp_v3.set(_farTemp.x, _farTemp.y, -_farTemp.z); + Vec3.transformMat4(vertexes[4], _temp_v3, transform); + _temp_v3.set(-_farTemp.x, _farTemp.y, -_farTemp.z); + Vec3.transformMat4(vertexes[5], _temp_v3, transform); + _temp_v3.set(-_farTemp.x, -_farTemp.y, -_farTemp.z); + Vec3.transformMat4(vertexes[6], _temp_v3, transform); + _temp_v3.set(_farTemp.x, -_farTemp.y, -_farTemp.z); + Vec3.transformMat4(vertexes[7], _temp_v3, transform); + out.updatePlanes(); + }; + Frustum.createFromAABB = function createFromAABB(out, aabb) { + var vec3_min = new Vec3(); + var vec3_max = new Vec3(); + Vec3.subtract(vec3_min, aabb.center, aabb.halfExtents); + Vec3.add(vec3_max, aabb.center, aabb.halfExtents); + out.vertices[0].set(vec3_max.x, vec3_max.y, -vec3_min.z); + out.vertices[1].set(vec3_min.x, vec3_max.y, -vec3_min.z); + out.vertices[2].set(vec3_min.x, vec3_min.y, -vec3_min.z); + out.vertices[3].set(vec3_max.x, vec3_min.y, -vec3_min.z); + out.vertices[4].set(vec3_max.x, vec3_max.y, -vec3_max.z); + out.vertices[5].set(vec3_min.x, vec3_max.y, -vec3_max.z); + out.vertices[6].set(vec3_min.x, vec3_min.y, -vec3_max.z); + out.vertices[7].set(vec3_max.x, vec3_min.y, -vec3_max.z); + out.updatePlanes(); + return out; + }; + var _proto = Frustum.prototype; + _proto.split = function split(start, end, aspect, fov, m) { + return Frustum.createPerspective(this, aspect, fov, start, end, m); + }; + Frustum.create = function create() { + return new Frustum(); + }; + Frustum.clone = function clone(f) { + return Frustum.copy(new Frustum(), f); + }; + Frustum.copy = function copy(out, f) { + out._type = f.type; + for (var i = 0; i < 6; ++i) { + Plane.copy(out.planes[i], f.planes[i]); + } + for (var _i = 0; _i < 8; ++_i) { + Vec3.copy(out.vertices[_i], f.vertices[_i]); + } + return out; + }; + function Frustum() { + this.planes = void 0; + this.vertices = void 0; + this._type = void 0; + this._type = enums.SHAPE_FRUSTUM; + this.planes = new Array(6); + for (var i = 0; i < 6; ++i) { + this.planes[i] = Plane.create(0, 0, 0, 0); + } + this.vertices = new Array(8); + for (var _i2 = 0; _i2 < 8; ++_i2) { + this.vertices[_i2] = new Vec3(); + } + } + _proto.update = function update(m, inv) { + Vec3.set(this.planes[0].n, m.m03 + m.m00, m.m07 + m.m04, m.m11 + m.m08); + this.planes[0].d = -(m.m15 + m.m12); + Vec3.set(this.planes[1].n, m.m03 - m.m00, m.m07 - m.m04, m.m11 - m.m08); + this.planes[1].d = -(m.m15 - m.m12); + Vec3.set(this.planes[2].n, m.m03 + m.m01, m.m07 + m.m05, m.m11 + m.m09); + this.planes[2].d = -(m.m15 + m.m13); + Vec3.set(this.planes[3].n, m.m03 - m.m01, m.m07 - m.m05, m.m11 - m.m09); + this.planes[3].d = -(m.m15 - m.m13); + Vec3.set(this.planes[4].n, m.m03 + m.m02, m.m07 + m.m06, m.m11 + m.m10); + this.planes[4].d = -(m.m15 + m.m14); + Vec3.set(this.planes[5].n, m.m03 - m.m02, m.m07 - m.m06, m.m11 - m.m10); + this.planes[5].d = -(m.m15 - m.m14); + for (var i = 0; i < 6; i++) { + var pl = this.planes[i]; + var invDist = 1 / pl.n.length(); + Vec3.multiplyScalar(pl.n, pl.n, invDist); + pl.d *= invDist; + } + for (var _i3 = 0; _i3 < 8; _i3++) { + Vec3.transformMat4(this.vertices[_i3], _v[_i3], inv); + } + }; + _proto.transform = function transform(mat) { + for (var i = 0; i < 8; i++) { + Vec3.transformMat4(this.vertices[i], this.vertices[i], mat); + } + this.updatePlanes(); + }; + _proto.zero = function zero() { + for (var i = 0; i < 8; i++) { + this.vertices[i].set(0.0, 0.0, 0.0); + } + for (var _i4 = 0; _i4 < 6; _i4++) { + Plane.set(this.planes[_i4], 0, 0, 0, 0); + } + }; + _proto.updatePlanes = function updatePlanes() { + Plane.fromPoints(this.planes[0], this.vertices[1], this.vertices[6], this.vertices[5]); + Plane.fromPoints(this.planes[1], this.vertices[3], this.vertices[4], this.vertices[7]); + Plane.fromPoints(this.planes[2], this.vertices[6], this.vertices[3], this.vertices[7]); + Plane.fromPoints(this.planes[3], this.vertices[0], this.vertices[5], this.vertices[4]); + Plane.fromPoints(this.planes[4], this.vertices[2], this.vertices[0], this.vertices[3]); + Plane.fromPoints(this.planes[5], this.vertices[7], this.vertices[5], this.vertices[6]); + }; + _createClass(Frustum, [{ + key: "accurate", + set: function set(b) { + this._type = b ? enums.SHAPE_FRUSTUM_ACCURATE : enums.SHAPE_FRUSTUM; + } + }, { + key: "type", + get: function get() { + return this._type; + } + }]); + return Frustum; + }(); + + var _v3_tmp = new Vec3(); + var _v3_tmp2 = new Vec3(); + var _m3_tmp = new Mat3(); + var transform_extent_m3 = function transform_extent_m3(out, extent, m3) { + _m3_tmp.m00 = Math.abs(m3.m00); + _m3_tmp.m01 = Math.abs(m3.m01); + _m3_tmp.m02 = Math.abs(m3.m02); + _m3_tmp.m03 = Math.abs(m3.m03); + _m3_tmp.m04 = Math.abs(m3.m04); + _m3_tmp.m05 = Math.abs(m3.m05); + _m3_tmp.m06 = Math.abs(m3.m06); + _m3_tmp.m07 = Math.abs(m3.m07); + _m3_tmp.m08 = Math.abs(m3.m08); + Vec3.transformMat3(out, extent, _m3_tmp); + }; + var OBB = function () { + OBB.create = function create(cx, cy, cz, hw, hh, hl, ox_1, ox_2, ox_3, oy_1, oy_2, oy_3, oz_1, oz_2, oz_3) { + return new OBB(cx, cy, cz, hw, hh, hl, ox_1, ox_2, ox_3, oy_1, oy_2, oy_3, oz_1, oz_2, oz_3); + }; + OBB.clone = function clone(a) { + return new OBB(a.center.x, a.center.y, a.center.z, a.halfExtents.x, a.halfExtents.y, a.halfExtents.z, a.orientation.m00, a.orientation.m01, a.orientation.m02, a.orientation.m03, a.orientation.m04, a.orientation.m05, a.orientation.m06, a.orientation.m07, a.orientation.m08); + }; + OBB.copy = function copy(out, a) { + Vec3.copy(out.center, a.center); + Vec3.copy(out.halfExtents, a.halfExtents); + Mat3.copy(out.orientation, a.orientation); + return out; + }; + OBB.fromPoints = function fromPoints(out, minPos, maxPos) { + Vec3.multiplyScalar(out.center, Vec3.add(_v3_tmp, minPos, maxPos), 0.5); + Vec3.multiplyScalar(out.halfExtents, Vec3.subtract(_v3_tmp2, maxPos, minPos), 0.5); + Mat3.identity(out.orientation); + return out; + }; + OBB.set = function set(out, cx, cy, cz, hw, hh, hl, ox_1, ox_2, ox_3, oy_1, oy_2, oy_3, oz_1, oz_2, oz_3) { + Vec3.set(out.center, cx, cy, cz); + Vec3.set(out.halfExtents, hw, hh, hl); + Mat3.set(out.orientation, ox_1, ox_2, ox_3, oy_1, oy_2, oy_3, oz_1, oz_2, oz_3); + return out; + }; + function OBB(cx, cy, cz, hw, hh, hl, ox_1, ox_2, ox_3, oy_1, oy_2, oy_3, oz_1, oz_2, oz_3) { + if (cx === void 0) { + cx = 0; + } + if (cy === void 0) { + cy = 0; + } + if (cz === void 0) { + cz = 0; + } + if (hw === void 0) { + hw = 1; + } + if (hh === void 0) { + hh = 1; + } + if (hl === void 0) { + hl = 1; + } + if (ox_1 === void 0) { + ox_1 = 1; + } + if (ox_2 === void 0) { + ox_2 = 0; + } + if (ox_3 === void 0) { + ox_3 = 0; + } + if (oy_1 === void 0) { + oy_1 = 0; + } + if (oy_2 === void 0) { + oy_2 = 1; + } + if (oy_3 === void 0) { + oy_3 = 0; + } + if (oz_1 === void 0) { + oz_1 = 0; + } + if (oz_2 === void 0) { + oz_2 = 0; + } + if (oz_3 === void 0) { + oz_3 = 1; + } + this.center = void 0; + this.halfExtents = void 0; + this.orientation = void 0; + this._type = void 0; + this._type = enums.SHAPE_OBB; + this.center = new Vec3(cx, cy, cz); + this.halfExtents = new Vec3(hw, hh, hl); + this.orientation = new Mat3(ox_1, ox_2, ox_3, oy_1, oy_2, oy_3, oz_1, oz_2, oz_3); + } + var _proto = OBB.prototype; + _proto.getBoundary = function getBoundary(minPos, maxPos) { + transform_extent_m3(_v3_tmp, this.halfExtents, this.orientation); + Vec3.subtract(minPos, this.center, _v3_tmp); + Vec3.add(maxPos, this.center, _v3_tmp); + }; + _proto.transform = function transform(m, pos, rot, scale, out) { + Vec3.transformMat4(out.center, this.center, m); + Mat3.fromQuat(out.orientation, rot); + Vec3.multiply(out.halfExtents, this.halfExtents, scale); + }; + _proto.translateAndRotate = function translateAndRotate(m, rot, out) { + Vec3.transformMat4(out.center, this.center, m); + Mat3.fromQuat(out.orientation, rot); + }; + _proto.setScale = function setScale(scale, out) { + Vec3.multiply(out.halfExtents, this.halfExtents, scale); + }; + _createClass(OBB, [{ + key: "type", + get: function get() { + return this._type; + } + }]); + return OBB; + }(); + + function binarySearch(array, value) { + return binarySearchEpsilon(array, value, 0); + } + function binarySearchEpsilon(array, value, EPSILON) { + if (EPSILON === void 0) { + EPSILON = 1e-6; + } + var low = 0; + var high = array.length - 1; + var middle = high >>> 1; + for (; low <= high; middle = low + high >>> 1) { + var test = array[middle]; + if (test > value + EPSILON) { + high = middle - 1; + } else if (test < value - EPSILON) { + low = middle + 1; + } else { + return middle; + } + } + return ~low; + } + function binarySearchBy(array, value, lessThan) { + var low = 0; + var high = array.length - 1; + var middle = high >>> 1; + for (; low <= high; middle = low + high >>> 1) { + var test = array[middle]; + if (lessThan(test, value) < 0) { + high = middle - 1; + } else if (lessThan(test, value) > 0) { + low = middle + 1; + } else { + return middle; + } + } + return ~low; + } + + var _Symbol$iterator; + _Symbol$iterator = Symbol.iterator; + var KeyframeCurve = function () { + function KeyframeCurve() { + this._times = []; + this._values = []; + } + var _proto = KeyframeCurve.prototype; + _proto[_Symbol$iterator] = function () { + var _this = this; + var index = 0; + return { + next: function next() { + if (index >= _this._times.length) { + return { + done: true, + value: undefined + }; + } else { + var value = [_this._times[index], _this._values[index]]; + ++index; + return { + done: false, + value: value + }; + } + } + }; + }; + _proto.keyframes = function keyframes() { + return this; + }; + _proto.times = function times() { + return this._times; + }; + _proto.values = function values() { + return this._values; + }; + _proto.getKeyframeTime = function getKeyframeTime(index) { + return this._times[index]; + }; + _proto.getKeyframeValue = function getKeyframeValue(index) { + return this._values[index]; + }; + _proto.addKeyFrame = function addKeyFrame(time, keyframeValue) { + return this._insertNewKeyframe(time, keyframeValue); + }; + _proto.removeKeyframe = function removeKeyframe(index) { + this._times.splice(index, 1); + this._values.splice(index, 1); + }; + _proto.indexOfKeyframe = function indexOfKeyframe(time) { + return binarySearchEpsilon(this._times, time); + }; + _proto.updateTime = function updateTime(index, time) { + var value = this._values[index]; + this.removeKeyframe(index); + this._insertNewKeyframe(time, value); + }; + _proto.assignSorted = function assignSorted(times, values) { + if (values !== undefined) { + assertIsTrue(Array.isArray(times)); + this.setKeyframes(times.slice(), values.slice()); + } else { + var _keyframes = Array.from(times); + this.setKeyframes(_keyframes.map(function (_ref) { + var time = _ref[0]; + return time; + }), _keyframes.map(function (_ref2) { + var value = _ref2[1]; + return value; + })); + } + }; + _proto.clear = function clear() { + this._times.length = 0; + this._values.length = 0; + }; + _proto.searchKeyframe = function searchKeyframe(time) { + return binarySearchEpsilon(this._times, time); + }; + _proto.setKeyframes = function setKeyframes(times, values) { + assertIsTrue(times.length === values.length); + assertIsTrue(isSorted(times)); + this._times = times; + this._values = values; + }; + _proto._insertNewKeyframe = function _insertNewKeyframe(time, value) { + var times = this._times; + var values = this._values; + var nFrames = times.length; + var index = binarySearchEpsilon(times, time); + if (index >= 0) { + return index; + } + var iNext = ~index; + if (iNext === 0) { + times.unshift(time); + values.unshift(value); + } else if (iNext === nFrames) { + times.push(time); + values.push(value); + } else { + assertIsTrue(nFrames > 1); + times.splice(iNext - 1, 0, time); + values.splice(iNext - 1, 0, value); + } + return iNext; + }; + _createClass(KeyframeCurve, [{ + key: "keyFramesCount", + get: function get() { + return this._times.length; + } + }, { + key: "rangeMin", + get: function get() { + return this._times[0]; + } + }, { + key: "rangeMax", + get: function get() { + return this._times[this._values.length - 1]; + } + }]); + return KeyframeCurve; + }(); + CCClass.fastDefine('cc.KeyframeCurve', KeyframeCurve, { + _times: [], + _values: [] + }); + function isSorted(values) { + return values.every(function (value, index, array) { + return index === 0 || value > array[index - 1] || approx(value, array[index - 1], 1e-6); + }); + } + + var RealInterpolationMode; exports('c2', RealInterpolationMode); + (function (RealInterpolationMode) { + RealInterpolationMode[RealInterpolationMode["LINEAR"] = 0] = "LINEAR"; + RealInterpolationMode[RealInterpolationMode["CONSTANT"] = 1] = "CONSTANT"; + RealInterpolationMode[RealInterpolationMode["CUBIC"] = 2] = "CUBIC"; + })(RealInterpolationMode || (exports('c2', RealInterpolationMode = {}))); + var ExtrapolationMode; exports('c3', ExtrapolationMode); + (function (ExtrapolationMode) { + ExtrapolationMode[ExtrapolationMode["LINEAR"] = 0] = "LINEAR"; + ExtrapolationMode[ExtrapolationMode["CLAMP"] = 1] = "CLAMP"; + ExtrapolationMode[ExtrapolationMode["LOOP"] = 2] = "LOOP"; + ExtrapolationMode[ExtrapolationMode["PING_PONG"] = 3] = "PING_PONG"; + })(ExtrapolationMode || (exports('c3', ExtrapolationMode = {}))); + var TangentWeightMode; exports('c4', TangentWeightMode); + (function (TangentWeightMode) { + TangentWeightMode[TangentWeightMode["NONE"] = 0] = "NONE"; + TangentWeightMode[TangentWeightMode["LEFT"] = 1] = "LEFT"; + TangentWeightMode[TangentWeightMode["RIGHT"] = 2] = "RIGHT"; + TangentWeightMode[TangentWeightMode["BOTH"] = 3] = "BOTH"; + })(TangentWeightMode || (exports('c4', TangentWeightMode = {}))); + + function solveCubic(coeff0, coeff1, coeff2, coeff3, solutions) { + var a = coeff2 / coeff3; + var b = coeff1 / coeff3; + var c = coeff0 / coeff3; + var sqrA = a * a; + var p = 1.0 / 3.0 * (-1.0 / 3 * sqrA + b); + var q = 1.0 / 2.0 * (2.0 / 27.0 * a * sqrA - 1.0 / 3 * a * b + c); + var cubicP = p * p * p; + var d = q * q + cubicP; + var nSolutions = 0; + if (isZero(d)) { + if (isZero(q)) { + solutions[0] = 0; + return 1; + } else { + var u = Math.cbrt(-q); + solutions[0] = 2 * u; + solutions[1] = -u; + return 2; + } + } else if (d < 0) { + var phi = 1.0 / 3 * Math.acos(-q / Math.sqrt(-cubicP)); + var t = 2 * Math.sqrt(-p); + solutions[0] = t * Math.cos(phi); + solutions[1] = -t * Math.cos(phi + Math.PI / 3); + solutions[2] = -t * Math.cos(phi - Math.PI / 3); + nSolutions = 3; + } else { + var sqrtD = Math.sqrt(d); + var _u = Math.cbrt(sqrtD - q); + var v = -Math.cbrt(sqrtD + q); + solutions[0] = _u + v; + nSolutions = 1; + } + var sub = 1.0 / 3 * a; + for (var i = 0; i < nSolutions; ++i) { + solutions[i] -= sub; + } + return nSolutions; + } + var EQN_EPS = 1e-9; + function isZero(x) { + return x > -EQN_EPS && x < EQN_EPS; + } + + function applyDecoratedInitializer(target, property, decorators, initializer) { + return decorators.slice().reverse().reduce(function (decoratedInitializer, decorator) { + return decorator(target, property, decoratedInitializer) || decoratedInitializer; + }, initializer); + } + + var emptyDecorator = function emptyDecorator() {}; + var emptyDecoratorFn = function emptyDecoratorFn() { + return emptyDecorator; + }; + var emptySmartClassDecorator = makeSmartClassDecorator(function () {}); + function makeSmartClassDecorator(decorate) { + return proxyFn; + function proxyFn(target) { + if (typeof target === 'function') { + return decorate(target); + } else { + return function (constructor) { + return decorate(constructor, target); + }; + } + } + } + function writeEditorClassProperty(constructor, propertyName, value) { + var cache = getClassCache(constructor); + if (cache) { + var proto = getSubDict(cache, 'proto'); + getSubDict(proto, 'editor')[propertyName] = value; + } + } + function makeEditorClassDecoratorFn(propertyName) { + return function (value) { + return function (constructor) { + writeEditorClassProperty(constructor, propertyName, value); + }; + }; + } + var CACHE_KEY = '__ccclassCache__'; + function getClassCache(ctor, decoratorName) { + return getSubDict(ctor, CACHE_KEY); + } + function getSubDict(obj, key) { + return obj[key] || (obj[key] = {}); + } + + var ccclass$t = makeSmartClassDecorator(function (constructor, name) { + var base = getSuper(constructor); + if (base === Object) { + base = null; + } + var proto = { + name: name, + "extends": base, + ctor: constructor + }; + var cache = constructor[CACHE_KEY]; + if (cache) { + var decoratedProto = cache.proto; + if (decoratedProto) { + mixin(proto, decoratedProto); + } + constructor[CACHE_KEY] = undefined; + } + var res = CCClass(proto); + return res; + }); + + var requireComponent = makeEditorClassDecoratorFn('requireComponent'); + var executionOrder$1 = makeEditorClassDecoratorFn('executionOrder'); + var disallowMultiple$1 = emptySmartClassDecorator; + + function property$1(target, propertyKey, descriptorOrInitializer) { + var options = null; + function normalized(target, propertyKey, descriptorOrInitializer) { + var classStash = getOrCreateClassStash(target); + var propertyStash = getOrCreateEmptyPropertyStash(target, propertyKey); + var classConstructor = target.constructor; + mergePropertyOptions(classStash, propertyStash, classConstructor, propertyKey, options, descriptorOrInitializer); + } + if (target === undefined) { + return property$1({ + type: undefined + }); + } else if (typeof propertyKey === 'undefined') { + options = target; + return normalized; + } else { + normalized(target, propertyKey, descriptorOrInitializer); + return undefined; + } + } + function getDefaultFromInitializer(initializer) { + var value; + try { + value = initializer(); + } catch (e) { + return initializer; + } + if (typeof value !== 'object' || value === null) { + return value; + } else { + return initializer; + } + } + function extractActualDefaultValues(classConstructor) { + var dummyObj; + try { + dummyObj = new classConstructor(); + } catch (e) { + return {}; + } + return dummyObj; + } + function getOrCreateClassStash(target) { + var cache = getClassCache(target.constructor); + return cache; + } + function getOrCreateEmptyPropertyStash(target, propertyKey) { + var _ref, _properties$_ref; + var classStash = getClassCache(target.constructor); + var ccclassProto = getSubDict(classStash, 'proto'); + var properties = getSubDict(ccclassProto, 'properties'); + var propertyStash = (_properties$_ref = properties[_ref = propertyKey]) !== null && _properties$_ref !== void 0 ? _properties$_ref : properties[_ref] = {}; + return propertyStash; + } + function getOrCreatePropertyStash(target, propertyKey, descriptorOrInitializer) { + var _ref2, _properties$_ref2; + var classStash = getClassCache(target.constructor); + var ccclassProto = getSubDict(classStash, 'proto'); + var properties = getSubDict(ccclassProto, 'properties'); + var propertyStash = (_properties$_ref2 = properties[_ref2 = propertyKey]) !== null && _properties$_ref2 !== void 0 ? _properties$_ref2 : properties[_ref2] = {}; + propertyStash.__internalFlags |= PropertyStashInternalFlag.STANDALONE; + if (descriptorOrInitializer && typeof descriptorOrInitializer !== 'function' && (descriptorOrInitializer.get || descriptorOrInitializer.set)) { + if (descriptorOrInitializer.get) { + propertyStash.get = descriptorOrInitializer.get; + } + if (descriptorOrInitializer.set) { + propertyStash.set = descriptorOrInitializer.set; + } + } else { + setDefaultValue(classStash, propertyStash, target.constructor, propertyKey, descriptorOrInitializer); + } + return propertyStash; + } + function mergePropertyOptions(cache, propertyStash, ctor, propertyKey, options, descriptorOrInitializer) { + var fullOptions; + var isGetset = descriptorOrInitializer && typeof descriptorOrInitializer !== 'function' && (descriptorOrInitializer.get || descriptorOrInitializer.set); + if (options) { + fullOptions = getFullFormOfProperty(options, isGetset); + } + var propertyRecord = mixin(propertyStash, fullOptions || options || {}); + if (isGetset) { + if (descriptorOrInitializer.get) { + propertyRecord.get = descriptorOrInitializer.get; + } + if (descriptorOrInitializer.set) { + propertyRecord.set = descriptorOrInitializer.set; + } + } else { + setDefaultValue(cache, propertyRecord, ctor, propertyKey, descriptorOrInitializer); + } + } + function setDefaultValue(classStash, propertyStash, classConstructor, propertyKey, descriptorOrInitializer) { + if (descriptorOrInitializer !== undefined) { + if (typeof descriptorOrInitializer === 'function') { + propertyStash["default"] = getDefaultFromInitializer(descriptorOrInitializer); + } else if (descriptorOrInitializer === null) ; else if (descriptorOrInitializer.initializer) { + propertyStash["default"] = getDefaultFromInitializer(descriptorOrInitializer.initializer); + } + } else { + var actualDefaultValues = classStash["default"] || (classStash["default"] = extractActualDefaultValues(classConstructor)); + if (actualDefaultValues.hasOwnProperty(propertyKey)) { + propertyStash["default"] = actualDefaultValues[propertyKey]; + } + } + } + + var sMetadataTag = Symbol('cc:SerializationMetadata'); + function getSerializationMetadata(constructor) { + return constructor[sMetadataTag]; + } + function getOrCreateSerializationMetadata(constructor) { + var _ref, _ref$sMetadataTag; + return (_ref$sMetadataTag = (_ref = constructor)[sMetadataTag]) !== null && _ref$sMetadataTag !== void 0 ? _ref$sMetadataTag : _ref[sMetadataTag] = {}; + } + + var serializable$9 = exports('cu', function serializable(target, propertyKey, descriptorOrInitializer) { + var propertyStash = getOrCreatePropertyStash(target, propertyKey, descriptorOrInitializer); + setImplicitSerializable(propertyStash); + }); + function formerlySerializedAs$1(name) { + return function (target, propertyKey, descriptorOrInitializer) { + var propertyStash = getOrCreatePropertyStash(target, propertyKey, descriptorOrInitializer); + propertyStash.formerlySerializedAs = name; + setImplicitSerializable(propertyStash); + }; + } + var editorOnly = function editorOnly(target, propertyKey, descriptorOrInitializer) { + var propertyStash = getOrCreatePropertyStash(target, propertyKey, descriptorOrInitializer); + propertyStash.editorOnly = true; + setImplicitSerializable(propertyStash); + }; + function setImplicitSerializable(propertyStash) { + propertyStash.__internalFlags |= PropertyStashInternalFlag.IMPLICIT_SERIALIZABLE; + } + var uniquelyReferenced = emptyDecorator ; + + var executeInEditMode = emptySmartClassDecorator; + var menu = emptyDecoratorFn; + var playOnFocus = emptySmartClassDecorator; + var inspector = emptyDecoratorFn; + var icon = emptyDecoratorFn; + var help = emptyDecoratorFn; + var editable = exports('cj', emptyDecorator ); + var visible = exports('cl', emptyDecoratorFn ); + var displayName = exports('cm', emptyDecoratorFn ); + var tooltip = exports('ck', emptyDecoratorFn ); + var range = exports('co', emptyDecoratorFn ); + var rangeStep = exports('cp', emptyDecoratorFn ); + var slide = exports('cq', emptyDecorator ); + var displayOrder = exports('cn', emptyDecoratorFn ); + var disallowAnimation = exports('cr', emptyDecorator ); + + var integer = type$8(CCInteger); + var _float = type$8(CCFloat); + var _boolean = type$8(CCBoolean); + var string = type$8(CCString); + function type$8(type) { + return property$1({ + type: type + }); + } + + var override$1 = exports('cs', function override(target, propertyKey, descriptorOrInitializer) { + var propertyStash = getOrCreatePropertyStash(target, propertyKey, descriptorOrInitializer); + propertyStash.override = true; + }); + + var editorExtrasTag = exports('bD', '__editorExtras__'); + + var Empty$1 = function Empty() {}; + var EditorExtendable = exports('bH', editorExtendableInternal()); + assertIsTrue(editorExtrasTag === '__editorExtras__', 'editorExtrasTag needs to be updated.'); + function editorExtendableInternal(Base, className) { + { + return Base !== null && Base !== void 0 ? Base : Empty$1; + } + } + + var _decorator = /*#__PURE__*/Object.freeze({ + __proto__: null, + uniquelyReferenced: uniquelyReferenced, + ccclass: ccclass$t, + property: property$1, + requireComponent: requireComponent, + executionOrder: executionOrder$1, + disallowMultiple: disallowMultiple$1, + executeInEditMode: executeInEditMode, + menu: menu, + playOnFocus: playOnFocus, + inspector: inspector, + icon: icon, + help: help, + type: type$8, + integer: integer, + float: _float, + boolean: _boolean, + string: string, + editable: editable, + tooltip: tooltip, + visible: visible, + displayName: displayName, + displayOrder: displayOrder, + range: range, + rangeStep: rangeStep, + slide: slide, + disallowAnimation: disallowAnimation, + override: override$1, + formerlySerializedAs: formerlySerializedAs$1, + serializable: serializable$9 + }); + exports('bu', _decorator); + + var Destroyed$2 = 1 << 0; + var ToDestroy = 1 << 2; + var DontSave$1 = 1 << 3; + var EditorOnly = 1 << 4; + var Dirty = 1 << 5; + var DontDestroy$1 = 1 << 6; + var Destroying$1 = 1 << 7; + var Deactivating$2 = 1 << 8; + var LockedInEditor = 1 << 9; + var HideInHierarchy$1 = 1 << 10; + var IsOnEnableCalled$2 = 1 << 11; + var IsEditorOnEnableCalled = 1 << 12; + var IsPreloadStarted$1 = 1 << 13; + var IsOnLoadCalled$2 = 1 << 14; + var IsOnLoadStarted$1 = 1 << 15; + var IsStartCalled$1 = 1 << 16; + var IsRotationLocked = 1 << 17; + var IsScaleLocked = 1 << 18; + var IsAnchorLocked = 1 << 19; + var IsSizeLocked = 1 << 20; + var IsPositionLocked = 1 << 21; + var PersistentMask$2 = ~(ToDestroy | Dirty | Destroying$1 | DontDestroy$1 | Deactivating$2 | IsPreloadStarted$1 | IsOnLoadStarted$1 | IsOnLoadCalled$2 | IsStartCalled$1 | IsOnEnableCalled$2 | IsEditorOnEnableCalled | IsRotationLocked | IsScaleLocked | IsAnchorLocked | IsSizeLocked | IsPositionLocked); + var AllHideMasks = DontSave$1 | EditorOnly | LockedInEditor | HideInHierarchy$1; + var objectsToDestroy = []; + function compileDestruct(obj, ctor) { + var shouldSkipId = obj instanceof legacyCC.Node || obj instanceof legacyCC.Component; + var idToSkip = shouldSkipId ? '_id' : null; + var key; + var propsToReset = {}; + for (key in obj) { + if (obj.hasOwnProperty(key)) { + if (key === idToSkip) { + continue; + } + switch (typeof obj[key]) { + case 'string': + propsToReset[key] = ''; + break; + case 'object': + case 'function': + propsToReset[key] = null; + break; + } + } + } + if (CCClass._isCCClass(ctor)) { + var attrs = legacyCC.Class.Attr.getClassAttrs(ctor); + var propList = ctor.__props__; + for (var i = 0; i < propList.length; i++) { + key = propList[i]; + var attrKey = "" + key; + if (attrKey in attrs) { + if (shouldSkipId && key === '_id') { + continue; + } + switch (typeof attrs[attrKey]) { + case 'string': + propsToReset[key] = ''; + break; + case 'object': + case 'function': + propsToReset[key] = null; + break; + case 'undefined': + propsToReset[key] = undefined; + break; + } + } + } + } + { + var func = ''; + for (key in propsToReset) { + var statement = void 0; + if (CCClass.IDENTIFIER_RE.test(key)) { + statement = "o." + key + "="; + } else { + statement = "o[" + CCClass.escapeForJS(key) + "]="; + } + var val = propsToReset[key]; + if (val === '') { + val = '""'; + } + func += statement + val + ";\n"; + } + return Function('o', func); + } + } + var CCObject = exports('bx', function () { + CCObject._deferredDestroy = function _deferredDestroy() { + var deleteCount = objectsToDestroy.length; + for (var i = 0; i < deleteCount; ++i) { + var obj = objectsToDestroy[i]; + if (!(obj._objFlags & Destroyed$2)) { + obj._destroyImmediate(); + } + } + if (deleteCount === objectsToDestroy.length) { + objectsToDestroy.length = 0; + } else { + objectsToDestroy.splice(0, deleteCount); + } + }; + function CCObject(name) { + if (name === void 0) { + name = ''; + } + this._objFlags = void 0; + this._name = void 0; + this._name = name; + this._objFlags = 0; + } + var _proto = CCObject.prototype; + _proto.destroy = function destroy() { + if (this._objFlags & Destroyed$2) { + warnID(5000); + return false; + } + if (this._objFlags & ToDestroy) { + return false; + } + this._objFlags |= ToDestroy; + objectsToDestroy.push(this); + return true; + }; + _proto._destruct = function _destruct() { + var ctor = this.constructor; + var destruct = ctor.__destruct__; + if (!destruct) { + destruct = compileDestruct(this, ctor); + value(ctor, '__destruct__', destruct, true); + } + destruct(this); + }; + _proto._destroyImmediate = function _destroyImmediate() { + var _onPreDestroy, _ref; + if (this._objFlags & Destroyed$2) { + errorID(5000); + return; + } + (_onPreDestroy = (_ref = this)._onPreDestroy) === null || _onPreDestroy === void 0 ? void 0 : _onPreDestroy.call(_ref); + { + this._destruct(); + } + this._objFlags |= Destroyed$2; + }; + _createClass(CCObject, [{ + key: "name", + get: function get() { + return this._name; + }, + set: function set(value) { + this._name = value; + } + }, { + key: "hideFlags", + get: function get() { + return this._objFlags & CCObject.Flags.AllHideMasks; + }, + set: function set(hideFlags) { + var flags = hideFlags & CCObject.Flags.AllHideMasks; + this._objFlags = this._objFlags & ~CCObject.Flags.AllHideMasks | flags; + } + }, { + key: "isValid", + get: function get() { + return !(this._objFlags & Destroyed$2); + } + }]); + return CCObject; + }()); + var prototype = CCObject.prototype; + prototype._deserialize = null; + { + CCClass.fastDefine('cc.Object', CCObject, { + _name: '', + _objFlags: 0 + }); + } + value(CCObject, 'Flags', { + Destroyed: Destroyed$2, + DontSave: DontSave$1, + EditorOnly: EditorOnly, + Dirty: Dirty, + DontDestroy: DontDestroy$1, + PersistentMask: PersistentMask$2, + Destroying: Destroying$1, + Deactivating: Deactivating$2, + LockedInEditor: LockedInEditor, + HideInHierarchy: HideInHierarchy$1, + AllHideMasks: AllHideMasks, + IsPreloadStarted: IsPreloadStarted$1, + IsOnLoadStarted: IsOnLoadStarted$1, + IsOnLoadCalled: IsOnLoadCalled$2, + IsOnEnableCalled: IsOnEnableCalled$2, + IsStartCalled: IsStartCalled$1, + IsEditorOnEnableCalled: IsEditorOnEnableCalled, + IsPositionLocked: IsPositionLocked, + IsRotationLocked: IsRotationLocked, + IsScaleLocked: IsScaleLocked, + IsAnchorLocked: IsAnchorLocked, + IsSizeLocked: IsSizeLocked + }); + function isCCObject(object) { + return object instanceof CCObject; + } + function isValid(value, strictMode) { + if (typeof value === 'object') { + return !!value && !(value._objFlags & (strictMode ? Destroyed$2 | ToDestroy : Destroyed$2)); + } else { + return typeof value !== 'undefined'; + } + } + legacyCC.isValid = isValid; + legacyCC.Object = CCObject; + + var _dec$2j, _class$2h, _class2$21, _initializer$1M, _initializer2$1l, _initializer3$10, _initializer4$S, _class3$N, _BuiltinElementTypeTr; + var StorageUnit; + (function (StorageUnit) { + StorageUnit[StorageUnit["Uint8"] = 0] = "Uint8"; + StorageUnit[StorageUnit["Uint16"] = 1] = "Uint16"; + StorageUnit[StorageUnit["Uint32"] = 2] = "Uint32"; + StorageUnit[StorageUnit["Int8"] = 3] = "Int8"; + StorageUnit[StorageUnit["Int16"] = 4] = "Int16"; + StorageUnit[StorageUnit["Int32"] = 5] = "Int32"; + StorageUnit[StorageUnit["Float32"] = 6] = "Float32"; + StorageUnit[StorageUnit["Float64"] = 7] = "Float64"; + })(StorageUnit || (StorageUnit = {})); + var ElementType; + (function (ElementType) { + ElementType[ElementType["Scalar"] = 0] = "Scalar"; + ElementType[ElementType["Vec2"] = 1] = "Vec2"; + ElementType[ElementType["Vec3"] = 2] = "Vec3"; + ElementType[ElementType["Vec4"] = 3] = "Vec4"; + ElementType[ElementType["Quat"] = 4] = "Quat"; + ElementType[ElementType["Mat4"] = 5] = "Mat4"; + })(ElementType || (ElementType = {})); + var elementTypeBits = 3; + function combineStorageUnitElementType(unit, elementType) { + return (elementType << elementTypeBits) + unit; + } + function extractStorageUnitElementType(combined) { + return { + storageUnit: ~(-1 << elementTypeBits) & combined, + elementType: combined >> elementTypeBits + }; + } + var CompactValueTypeArray = exports('bC', (_dec$2j = ccclass$t('cc.CompactValueTypeArray'), _dec$2j(_class$2h = (_class2$21 = (_class3$N = function () { + function CompactValueTypeArray() { + this._byteOffset = _initializer$1M && _initializer$1M(); + this._unitCount = _initializer2$1l && _initializer2$1l(); + this._unitElement = _initializer3$10 && _initializer3$10(); + this._length = _initializer4$S && _initializer4$S(); + } + CompactValueTypeArray.lengthFor = function lengthFor(values, elementType, unit) { + var elementTraits = getElementTraits(elementType); + return elementTraits.requiredUnits * values.length * getStorageConstructor(unit).BYTES_PER_ELEMENT; + }; + CompactValueTypeArray.compress = function compress(values, elementType, unit, arrayBuffer, byteOffset, presumedByteOffset) { + var elementTraits = getElementTraits(elementType); + var storageConstructor = getStorageConstructor(unit); + var unitCount = elementTraits.requiredUnits * values.length; + var storage = new storageConstructor(arrayBuffer, byteOffset, unitCount); + for (var i = 0; i < values.length; ++i) { + elementTraits.compress(storage, i, values[i]); + } + var result = new CompactValueTypeArray(); + result._unitElement = combineStorageUnitElementType(unit, elementType); + result._byteOffset = presumedByteOffset; + result._unitCount = unitCount; + result._length = values.length; + return result; + }; + var _proto = CompactValueTypeArray.prototype; + _proto.decompress = function decompress(arrayBuffer) { + var _extractStorageUnitEl = extractStorageUnitElementType(this._unitElement), + storageUnit = _extractStorageUnitEl.storageUnit, + elementType = _extractStorageUnitEl.elementType; + var elementTraits = getElementTraits(elementType); + var storageConstructor = getStorageConstructor(storageUnit); + var storage = new storageConstructor(arrayBuffer, this._byteOffset, this._unitCount); + var result = new Array(this._length); + for (var i = 0; i < this._length; ++i) { + result[i] = elementTraits.decompress(storage, i); + } + return result; + }; + return CompactValueTypeArray; + }(), _class3$N.StorageUnit = StorageUnit, _class3$N.ElementType = ElementType, _class3$N), (_initializer$1M = applyDecoratedInitializer(_class2$21.prototype, "_byteOffset", [serializable$9], function () { + return 0; + }), _initializer2$1l = applyDecoratedInitializer(_class2$21.prototype, "_unitCount", [serializable$9], function () { + return 0; + }), _initializer3$10 = applyDecoratedInitializer(_class2$21.prototype, "_unitElement", [serializable$9], function () { + return combineStorageUnitElementType(StorageUnit.Uint8, ElementType.Scalar); + }), _initializer4$S = applyDecoratedInitializer(_class2$21.prototype, "_length", [serializable$9], function () { + return 0; + })), _class2$21)) || _class$2h)); + function getElementTraits(elementType) { + return BuiltinElementTypeTraits[elementType]; + } + function getStorageConstructor(unit) { + switch (unit) { + case StorageUnit.Uint8: + return Uint8Array; + case StorageUnit.Uint16: + return Uint16Array; + case StorageUnit.Uint32: + return Uint32Array; + case StorageUnit.Int8: + return Int8Array; + case StorageUnit.Int16: + return Int16Array; + case StorageUnit.Int32: + return Int32Array; + case StorageUnit.Float32: + return Float32Array; + case StorageUnit.Float64: + return Float64Array; + } + } + var BuiltinElementTypeTraits = (_BuiltinElementTypeTr = {}, _BuiltinElementTypeTr[ElementType.Scalar] = { + requiredUnits: 1, + compress: function compress(storage, index, value) { + storage[index] = value; + }, + decompress: function decompress(storage, index) { + return storage[index]; + } + }, _BuiltinElementTypeTr[ElementType.Vec2] = { + requiredUnits: 2, + compress: function compress(storage, index, value) { + storage[index * 2] = value.x; + storage[index * 2 + 1] = value.y; + }, + decompress: function decompress(storage, index) { + return new Vec3(storage[index * 2], storage[index * 2 + 1]); + } + }, _BuiltinElementTypeTr[ElementType.Vec3] = { + requiredUnits: 3, + compress: function compress(storage, index, value) { + storage[index * 3] = value.x; + storage[index * 3 + 1] = value.y; + storage[index * 3 + 2] = value.z; + }, + decompress: function decompress(storage, index) { + return new Vec3(storage[index * 3], storage[index * 3 + 1], storage[index * 3 + 2]); + } + }, _BuiltinElementTypeTr[ElementType.Vec4] = { + requiredUnits: 4, + compress: function compress(storage, index, value) { + storage[index * 4] = value.x; + storage[index * 4 + 1] = value.y; + storage[index * 4 + 2] = value.z; + storage[index * 4 + 3] = value.w; + }, + decompress: function decompress(storage, index) { + return new Vec4(storage[index * 4], storage[index * 4 + 1], storage[index * 4 + 2], storage[index * 4 + 3]); + } + }, _BuiltinElementTypeTr[ElementType.Quat] = { + requiredUnits: 4, + compress: function compress(storage, index, value) { + storage[index * 4] = value.x; + storage[index * 4 + 1] = value.y; + storage[index * 4 + 2] = value.z; + storage[index * 4 + 3] = value.w; + }, + decompress: function decompress(storage, index) { + return new Quat(storage[index * 4], storage[index * 4 + 1], storage[index * 4 + 2], storage[index * 4 + 3]); + } + }, _BuiltinElementTypeTr[ElementType.Mat4] = { + requiredUnits: 16, + compress: function compress(storage, index, value) { + Mat4.toArray(storage, value, index * 16); + }, + decompress: function decompress(storage, index) { + return Mat4.fromArray(new Mat4(), storage, index * 16); + } + }, _BuiltinElementTypeTr); + + var serializeTag = exports('bF', Symbol('[[Serialize]]')); + var deserializeTag = exports('bE', Symbol('[[Deserialize]]')); + + legacyCC._decorator = _decorator; + + function constant() { + return 0; + } + function linear(k) { + return k; + } + function quadIn(k) { + return k * k; + } + function quadOut(k) { + return k * (2 - k); + } + function quadInOut(k) { + k *= 2; + if (k < 1) { + return 0.5 * k * k; + } + return -0.5 * (--k * (k - 2) - 1); + } + function cubicIn(k) { + return k * k * k; + } + function cubicOut(k) { + return --k * k * k + 1; + } + function cubicInOut(k) { + k *= 2; + if (k < 1) { + return 0.5 * k * k * k; + } + return 0.5 * ((k -= 2) * k * k + 2); + } + function quartIn(k) { + return k * k * k * k; + } + function quartOut(k) { + return 1 - --k * k * k * k; + } + function quartInOut(k) { + k *= 2; + if (k < 1) { + return 0.5 * k * k * k * k; + } + return -0.5 * ((k -= 2) * k * k * k - 2); + } + function quintIn(k) { + return k * k * k * k * k; + } + function quintOut(k) { + return --k * k * k * k * k + 1; + } + function quintInOut(k) { + k *= 2; + if (k < 1) { + return 0.5 * k * k * k * k * k; + } + return 0.5 * ((k -= 2) * k * k * k * k + 2); + } + function sineIn(k) { + if (k === 1) { + return 1; + } + return 1 - Math.cos(k * Math.PI / 2); + } + function sineOut(k) { + return Math.sin(k * Math.PI / 2); + } + function sineInOut(k) { + return 0.5 * (1 - Math.cos(Math.PI * k)); + } + function expoIn(k) { + return k === 0 ? 0 : Math.pow(1024, k - 1); + } + function expoOut(k) { + return k === 1 ? 1 : 1 - Math.pow(2, -10 * k); + } + function expoInOut(k) { + if (k === 0) { + return 0; + } + if (k === 1) { + return 1; + } + k *= 2; + if (k < 1) { + return 0.5 * Math.pow(1024, k - 1); + } + return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2); + } + function circIn(k) { + return 1 - Math.sqrt(1 - k * k); + } + function circOut(k) { + return Math.sqrt(1 - --k * k); + } + function circInOut(k) { + k *= 2; + if (k < 1) { + return -0.5 * (Math.sqrt(1 - k * k) - 1); + } + return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1); + } + function elasticIn(k) { + var s; + var a = 0.1; + var p = 0.4; + if (k === 0) { + return 0; + } + if (k === 1) { + return 1; + } + if (!a || a < 1) { + a = 1; + s = p / 4; + } else { + s = p * Math.asin(1 / a) / (2 * Math.PI); + } + return -(a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p)); + } + function elasticOut(k) { + var s; + var a = 0.1; + var p = 0.4; + if (k === 0) { + return 0; + } + if (k === 1) { + return 1; + } + if (!a || a < 1) { + a = 1; + s = p / 4; + } else { + s = p * Math.asin(1 / a) / (2 * Math.PI); + } + return a * Math.pow(2, -10 * k) * Math.sin((k - s) * (2 * Math.PI) / p) + 1; + } + function elasticInOut(k) { + var s; + var a = 0.1; + var p = 0.4; + if (k === 0) { + return 0; + } + if (k === 1) { + return 1; + } + if (!a || a < 1) { + a = 1; + s = p / 4; + } else { + s = p * Math.asin(1 / a) / (2 * Math.PI); + } + k *= 2; + if (k < 1) { + return -0.5 * (a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p)); + } + return a * Math.pow(2, -10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1; + } + function backIn(k) { + if (k === 1) { + return 1; + } + var s = 1.70158; + return k * k * ((s + 1) * k - s); + } + function backOut(k) { + if (k === 0) { + return 0; + } + var s = 1.70158; + return --k * k * ((s + 1) * k + s) + 1; + } + function backInOut(k) { + var s = 1.70158 * 1.525; + k *= 2; + if (k < 1) { + return 0.5 * (k * k * ((s + 1) * k - s)); + } + return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2); + } + function bounceIn(k) { + return 1 - bounceOut(1 - k); + } + function bounceOut(k) { + if (k < 1 / 2.75) { + return 7.5625 * k * k; + } else if (k < 2 / 2.75) { + return 7.5625 * (k -= 1.5 / 2.75) * k + 0.75; + } else if (k < 2.5 / 2.75) { + return 7.5625 * (k -= 2.25 / 2.75) * k + 0.9375; + } else { + return 7.5625 * (k -= 2.625 / 2.75) * k + 0.984375; + } + } + function bounceInOut(k) { + if (k < 0.5) { + return bounceIn(k * 2) * 0.5; + } + return bounceOut(k * 2 - 1) * 0.5 + 0.5; + } + function smooth(k) { + if (k <= 0) { + return 0; + } + if (k >= 1) { + return 1; + } + return k * k * (3 - 2 * k); + } + function fade(k) { + if (k <= 0) { + return 0; + } + if (k >= 1) { + return 1; + } + return k * k * k * (k * (k * 6 - 15) + 10); + } + var quadOutIn = _makeOutIn(quadIn, quadOut); + var cubicOutIn = _makeOutIn(cubicIn, cubicOut); + var quartOutIn = _makeOutIn(quartIn, quartOut); + var quintOutIn = _makeOutIn(quintIn, quintOut); + var sineOutIn = _makeOutIn(sineIn, sineOut); + var expoOutIn = _makeOutIn(expoIn, expoOut); + var circOutIn = _makeOutIn(circIn, circOut); + var elasticOutIn = _makeOutIn(elasticIn, elasticOut); + var backOutIn = _makeOutIn(backIn, backOut); + var bounceOutIn = _makeOutIn(bounceIn, bounceOut); + function _makeOutIn(fnIn, fnOut) { + return function (k) { + if (k < 0.5) { + return fnOut(k * 2) / 2; + } + return fnIn(2 * k - 1) / 2 + 0.5; + }; + } + + var easing = /*#__PURE__*/Object.freeze({ + __proto__: null, + constant: constant, + linear: linear, + quadIn: quadIn, + quadOut: quadOut, + quadInOut: quadInOut, + cubicIn: cubicIn, + cubicOut: cubicOut, + cubicInOut: cubicInOut, + quartIn: quartIn, + quartOut: quartOut, + quartInOut: quartInOut, + quintIn: quintIn, + quintOut: quintOut, + quintInOut: quintInOut, + sineIn: sineIn, + sineOut: sineOut, + sineInOut: sineInOut, + expoIn: expoIn, + expoOut: expoOut, + expoInOut: expoInOut, + circIn: circIn, + circOut: circOut, + circInOut: circInOut, + elasticIn: elasticIn, + elasticOut: elasticOut, + elasticInOut: elasticInOut, + backIn: backIn, + backOut: backOut, + backInOut: backInOut, + bounceIn: bounceIn, + bounceOut: bounceOut, + bounceInOut: bounceInOut, + smooth: smooth, + fade: fade, + quadOutIn: quadOutIn, + cubicOutIn: cubicOutIn, + quartOutIn: quartOutIn, + quintOutIn: quintOutIn, + sineOutIn: sineOutIn, + expoOutIn: expoOutIn, + circOutIn: circOutIn, + elasticOutIn: elasticOutIn, + backOutIn: backOutIn, + bounceOutIn: bounceOutIn + }); + exports('ce', easing); + + var _easingMethodFnMap; + var EasingMethod; exports('cE', EasingMethod); + (function (EasingMethod) { + EasingMethod[EasingMethod["LINEAR"] = 0] = "LINEAR"; + EasingMethod[EasingMethod["CONSTANT"] = 1] = "CONSTANT"; + EasingMethod[EasingMethod["QUAD_IN"] = 2] = "QUAD_IN"; + EasingMethod[EasingMethod["QUAD_OUT"] = 3] = "QUAD_OUT"; + EasingMethod[EasingMethod["QUAD_IN_OUT"] = 4] = "QUAD_IN_OUT"; + EasingMethod[EasingMethod["QUAD_OUT_IN"] = 5] = "QUAD_OUT_IN"; + EasingMethod[EasingMethod["CUBIC_IN"] = 6] = "CUBIC_IN"; + EasingMethod[EasingMethod["CUBIC_OUT"] = 7] = "CUBIC_OUT"; + EasingMethod[EasingMethod["CUBIC_IN_OUT"] = 8] = "CUBIC_IN_OUT"; + EasingMethod[EasingMethod["CUBIC_OUT_IN"] = 9] = "CUBIC_OUT_IN"; + EasingMethod[EasingMethod["QUART_IN"] = 10] = "QUART_IN"; + EasingMethod[EasingMethod["QUART_OUT"] = 11] = "QUART_OUT"; + EasingMethod[EasingMethod["QUART_IN_OUT"] = 12] = "QUART_IN_OUT"; + EasingMethod[EasingMethod["QUART_OUT_IN"] = 13] = "QUART_OUT_IN"; + EasingMethod[EasingMethod["QUINT_IN"] = 14] = "QUINT_IN"; + EasingMethod[EasingMethod["QUINT_OUT"] = 15] = "QUINT_OUT"; + EasingMethod[EasingMethod["QUINT_IN_OUT"] = 16] = "QUINT_IN_OUT"; + EasingMethod[EasingMethod["QUINT_OUT_IN"] = 17] = "QUINT_OUT_IN"; + EasingMethod[EasingMethod["SINE_IN"] = 18] = "SINE_IN"; + EasingMethod[EasingMethod["SINE_OUT"] = 19] = "SINE_OUT"; + EasingMethod[EasingMethod["SINE_IN_OUT"] = 20] = "SINE_IN_OUT"; + EasingMethod[EasingMethod["SINE_OUT_IN"] = 21] = "SINE_OUT_IN"; + EasingMethod[EasingMethod["EXPO_IN"] = 22] = "EXPO_IN"; + EasingMethod[EasingMethod["EXPO_OUT"] = 23] = "EXPO_OUT"; + EasingMethod[EasingMethod["EXPO_IN_OUT"] = 24] = "EXPO_IN_OUT"; + EasingMethod[EasingMethod["EXPO_OUT_IN"] = 25] = "EXPO_OUT_IN"; + EasingMethod[EasingMethod["CIRC_IN"] = 26] = "CIRC_IN"; + EasingMethod[EasingMethod["CIRC_OUT"] = 27] = "CIRC_OUT"; + EasingMethod[EasingMethod["CIRC_IN_OUT"] = 28] = "CIRC_IN_OUT"; + EasingMethod[EasingMethod["CIRC_OUT_IN"] = 29] = "CIRC_OUT_IN"; + EasingMethod[EasingMethod["ELASTIC_IN"] = 30] = "ELASTIC_IN"; + EasingMethod[EasingMethod["ELASTIC_OUT"] = 31] = "ELASTIC_OUT"; + EasingMethod[EasingMethod["ELASTIC_IN_OUT"] = 32] = "ELASTIC_IN_OUT"; + EasingMethod[EasingMethod["ELASTIC_OUT_IN"] = 33] = "ELASTIC_OUT_IN"; + EasingMethod[EasingMethod["BACK_IN"] = 34] = "BACK_IN"; + EasingMethod[EasingMethod["BACK_OUT"] = 35] = "BACK_OUT"; + EasingMethod[EasingMethod["BACK_IN_OUT"] = 36] = "BACK_IN_OUT"; + EasingMethod[EasingMethod["BACK_OUT_IN"] = 37] = "BACK_OUT_IN"; + EasingMethod[EasingMethod["BOUNCE_IN"] = 38] = "BOUNCE_IN"; + EasingMethod[EasingMethod["BOUNCE_OUT"] = 39] = "BOUNCE_OUT"; + EasingMethod[EasingMethod["BOUNCE_IN_OUT"] = 40] = "BOUNCE_IN_OUT"; + EasingMethod[EasingMethod["BOUNCE_OUT_IN"] = 41] = "BOUNCE_OUT_IN"; + EasingMethod[EasingMethod["SMOOTH"] = 42] = "SMOOTH"; + EasingMethod[EasingMethod["FADE"] = 43] = "FADE"; + })(EasingMethod || (exports('cE', EasingMethod = {}))); + var easingMethodFnMap = (_easingMethodFnMap = {}, _easingMethodFnMap[EasingMethod.CONSTANT] = constant, _easingMethodFnMap[EasingMethod.LINEAR] = linear, _easingMethodFnMap[EasingMethod.QUAD_IN] = quadIn, _easingMethodFnMap[EasingMethod.QUAD_OUT] = quadOut, _easingMethodFnMap[EasingMethod.QUAD_IN_OUT] = quadInOut, _easingMethodFnMap[EasingMethod.QUAD_OUT_IN] = quadOutIn, _easingMethodFnMap[EasingMethod.CUBIC_IN] = cubicIn, _easingMethodFnMap[EasingMethod.CUBIC_OUT] = cubicOut, _easingMethodFnMap[EasingMethod.CUBIC_IN_OUT] = cubicInOut, _easingMethodFnMap[EasingMethod.CUBIC_OUT_IN] = cubicOutIn, _easingMethodFnMap[EasingMethod.QUART_IN] = quartIn, _easingMethodFnMap[EasingMethod.QUART_OUT] = quartOut, _easingMethodFnMap[EasingMethod.QUART_IN_OUT] = quartInOut, _easingMethodFnMap[EasingMethod.QUART_OUT_IN] = quartOutIn, _easingMethodFnMap[EasingMethod.QUINT_IN] = quintIn, _easingMethodFnMap[EasingMethod.QUINT_OUT] = quintOut, _easingMethodFnMap[EasingMethod.QUINT_IN_OUT] = quintInOut, _easingMethodFnMap[EasingMethod.QUINT_OUT_IN] = quintOutIn, _easingMethodFnMap[EasingMethod.SINE_IN] = sineIn, _easingMethodFnMap[EasingMethod.SINE_OUT] = sineOut, _easingMethodFnMap[EasingMethod.SINE_IN_OUT] = sineInOut, _easingMethodFnMap[EasingMethod.SINE_OUT_IN] = sineOutIn, _easingMethodFnMap[EasingMethod.EXPO_IN] = expoIn, _easingMethodFnMap[EasingMethod.EXPO_OUT] = expoOut, _easingMethodFnMap[EasingMethod.EXPO_IN_OUT] = expoInOut, _easingMethodFnMap[EasingMethod.EXPO_OUT_IN] = expoOutIn, _easingMethodFnMap[EasingMethod.CIRC_IN] = circIn, _easingMethodFnMap[EasingMethod.CIRC_OUT] = circOut, _easingMethodFnMap[EasingMethod.CIRC_IN_OUT] = circInOut, _easingMethodFnMap[EasingMethod.CIRC_OUT_IN] = circOutIn, _easingMethodFnMap[EasingMethod.ELASTIC_IN] = elasticIn, _easingMethodFnMap[EasingMethod.ELASTIC_OUT] = elasticOut, _easingMethodFnMap[EasingMethod.ELASTIC_IN_OUT] = elasticInOut, _easingMethodFnMap[EasingMethod.ELASTIC_OUT_IN] = elasticOutIn, _easingMethodFnMap[EasingMethod.BACK_IN] = backIn, _easingMethodFnMap[EasingMethod.BACK_OUT] = backOut, _easingMethodFnMap[EasingMethod.BACK_IN_OUT] = backInOut, _easingMethodFnMap[EasingMethod.BACK_OUT_IN] = backOutIn, _easingMethodFnMap[EasingMethod.BOUNCE_IN] = bounceIn, _easingMethodFnMap[EasingMethod.BOUNCE_OUT] = bounceOut, _easingMethodFnMap[EasingMethod.BOUNCE_IN_OUT] = bounceInOut, _easingMethodFnMap[EasingMethod.BOUNCE_OUT_IN] = bounceOutIn, _easingMethodFnMap[EasingMethod.SMOOTH] = smooth, _easingMethodFnMap[EasingMethod.FADE] = fade, _easingMethodFnMap); + function getEasingFn(easingMethod) { + assertIsTrue(easingMethod in easingMethodFnMap); + return easingMethodFnMap[easingMethod]; + } + + var _CCClass$fastDefine; + var REAL_KEYFRAME_VALUE_FLAGS_INTERPOLATION_MODE_START = 0; + var REAL_KEYFRAME_VALUE_FLAGS_INTERPOLATION_MODE_MASK = 0xFF << REAL_KEYFRAME_VALUE_FLAGS_INTERPOLATION_MODE_START; + var REAL_KEYFRAME_VALUE_FLAGS_TANGENT_WEIGHT_MODE_START = 8; + var REAL_KEYFRAME_VALUE_FLAGS_TANGENT_WEIGHT_MODE_MASK = 0xFF << REAL_KEYFRAME_VALUE_FLAGS_TANGENT_WEIGHT_MODE_START; + var REAL_KEYFRAME_VALUE_FLAGS_EASING_METHOD_START = 16; + var REAL_KEYFRAME_VALUE_FLAGS_EASING_METHOD_MASK = 0xFF << REAL_KEYFRAME_VALUE_FLAGS_EASING_METHOD_START; + assertIsTrue(REAL_KEYFRAME_VALUE_FLAGS_TANGENT_WEIGHT_MODE_START === REAL_KEYFRAME_VALUE_FLAGS_INTERPOLATION_MODE_START + popCount(REAL_KEYFRAME_VALUE_FLAGS_INTERPOLATION_MODE_MASK)); + assertIsTrue(REAL_KEYFRAME_VALUE_FLAGS_EASING_METHOD_START === REAL_KEYFRAME_VALUE_FLAGS_TANGENT_WEIGHT_MODE_START + popCount(REAL_KEYFRAME_VALUE_FLAGS_TANGENT_WEIGHT_MODE_MASK)); + var REAL_KEYFRAME_VALUE_DEFAULT_FLAGS = RealInterpolationMode.LINEAR << REAL_KEYFRAME_VALUE_FLAGS_INTERPOLATION_MODE_START | TangentWeightMode.NONE << REAL_KEYFRAME_VALUE_FLAGS_TANGENT_WEIGHT_MODE_START | EasingMethod.LINEAR << REAL_KEYFRAME_VALUE_FLAGS_EASING_METHOD_START; + var RealKeyframeValue = function (_EditorExtendable) { + _inheritsLoose(RealKeyframeValue, _EditorExtendable); + function RealKeyframeValue() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _EditorExtendable.call.apply(_EditorExtendable, [this].concat(args)) || this; + _this.value = 0.0; + _this.rightTangent = 0.0; + _this.rightTangentWeight = 0.0; + _this.leftTangent = 0.0; + _this.leftTangentWeight = 0.0; + _this._flags = REAL_KEYFRAME_VALUE_DEFAULT_FLAGS; + return _this; + } + _createClass(RealKeyframeValue, [{ + key: "interpolationMode", + get: function get() { + return (this._flags & REAL_KEYFRAME_VALUE_FLAGS_INTERPOLATION_MODE_MASK) >> REAL_KEYFRAME_VALUE_FLAGS_INTERPOLATION_MODE_START; + }, + set: function set(value) { + this._flags &= ~REAL_KEYFRAME_VALUE_FLAGS_INTERPOLATION_MODE_MASK; + this._flags |= value << REAL_KEYFRAME_VALUE_FLAGS_INTERPOLATION_MODE_START; + } + }, { + key: "tangentWeightMode", + get: function get() { + return (this._flags & REAL_KEYFRAME_VALUE_FLAGS_TANGENT_WEIGHT_MODE_MASK) >> REAL_KEYFRAME_VALUE_FLAGS_TANGENT_WEIGHT_MODE_START; + }, + set: function set(value) { + this._flags &= ~REAL_KEYFRAME_VALUE_FLAGS_TANGENT_WEIGHT_MODE_MASK; + this._flags |= value << REAL_KEYFRAME_VALUE_FLAGS_TANGENT_WEIGHT_MODE_START; + } + }, { + key: "easingMethod", + get: function get() { + return (this._flags & REAL_KEYFRAME_VALUE_FLAGS_EASING_METHOD_MASK) >> REAL_KEYFRAME_VALUE_FLAGS_EASING_METHOD_START; + }, + set: function set(value) { + this._flags &= ~REAL_KEYFRAME_VALUE_FLAGS_EASING_METHOD_MASK; + this._flags |= value << REAL_KEYFRAME_VALUE_FLAGS_EASING_METHOD_START; + } + }]); + return RealKeyframeValue; + }(EditorExtendable); + CCClass.fastDefine('cc.RealKeyframeValue', RealKeyframeValue, (_CCClass$fastDefine = { + interpolationMode: RealInterpolationMode.LINEAR, + tangentWeightMode: TangentWeightMode.NONE, + value: 0.0, + rightTangent: 0.0, + rightTangentWeight: 0.0, + leftTangent: 0.0, + leftTangentWeight: 0.0, + easingMethod: EasingMethod.LINEAR + }, _CCClass$fastDefine[editorExtrasTag] = undefined, _CCClass$fastDefine)); + CCClass.Attr.setClassAttr(RealKeyframeValue, editorExtrasTag, 'editorOnly', true); + getOrCreateSerializationMetadata(RealKeyframeValue).uniquelyReferenced = true; + function createRealKeyframeValue(params) { + var realKeyframeValue = new RealKeyframeValue(); + if (typeof params === 'number') { + realKeyframeValue.value = params; + } else { + var interpolationMode = params.interpolationMode, + tangentWeightMode = params.tangentWeightMode, + value = params.value, + rightTangent = params.rightTangent, + rightTangentWeight = params.rightTangentWeight, + leftTangent = params.leftTangent, + leftTangentWeight = params.leftTangentWeight, + easingMethod = params.easingMethod, + editorExtras = params[editorExtrasTag]; + realKeyframeValue.value = value !== null && value !== void 0 ? value : realKeyframeValue.value; + realKeyframeValue.rightTangent = rightTangent !== null && rightTangent !== void 0 ? rightTangent : realKeyframeValue.rightTangent; + realKeyframeValue.rightTangentWeight = rightTangentWeight !== null && rightTangentWeight !== void 0 ? rightTangentWeight : realKeyframeValue.rightTangentWeight; + realKeyframeValue.leftTangent = leftTangent !== null && leftTangent !== void 0 ? leftTangent : realKeyframeValue.leftTangent; + realKeyframeValue.leftTangentWeight = leftTangentWeight !== null && leftTangentWeight !== void 0 ? leftTangentWeight : realKeyframeValue.leftTangentWeight; + realKeyframeValue.interpolationMode = interpolationMode !== null && interpolationMode !== void 0 ? interpolationMode : realKeyframeValue.interpolationMode; + realKeyframeValue.tangentWeightMode = tangentWeightMode !== null && tangentWeightMode !== void 0 ? tangentWeightMode : realKeyframeValue.tangentWeightMode; + realKeyframeValue.easingMethod = easingMethod !== null && easingMethod !== void 0 ? easingMethod : realKeyframeValue.easingMethod; + if (editorExtras) { + realKeyframeValue[editorExtrasTag] = editorExtras; + } + } + return realKeyframeValue; + } + var RealCurve = exports('c1', function (_KeyframeCurve) { + _inheritsLoose(RealCurve, _KeyframeCurve); + function RealCurve() { + var _this2; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + _this2 = _KeyframeCurve.call.apply(_KeyframeCurve, [this].concat(args)) || this; + _this2.preExtrapolation = ExtrapolationMode.CLAMP; + _this2.postExtrapolation = ExtrapolationMode.CLAMP; + return _this2; + } + var _proto = RealCurve.prototype; + _proto.evaluate = function evaluate(time) { + var times = this._times, + values = this._values; + var nFrames = times.length; + if (nFrames === 0) { + return 0.0; + } + var firstTime = times[0]; + var lastTime = times[nFrames - 1]; + if (time < firstTime) { + var preExtrapolation = this.preExtrapolation; + var _preValue = values[0]; + if (preExtrapolation === ExtrapolationMode.CLAMP || nFrames < 2) { + return _preValue.value; + } + switch (preExtrapolation) { + case ExtrapolationMode.LINEAR: + return linearTrend(firstTime, values[0].value, times[1], values[1].value, time); + case ExtrapolationMode.LOOP: + time = wrapRepeat(time, firstTime, lastTime); + break; + case ExtrapolationMode.PING_PONG: + time = wrapPingPong(time, firstTime, lastTime); + break; + default: + return _preValue.value; + } + } else if (time > lastTime) { + var postExtrapolation = this.postExtrapolation; + var preFrame = values[nFrames - 1]; + if (postExtrapolation === ExtrapolationMode.CLAMP || nFrames < 2) { + return preFrame.value; + } + switch (postExtrapolation) { + case ExtrapolationMode.LINEAR: + return linearTrend(lastTime, preFrame.value, times[nFrames - 2], values[nFrames - 2].value, time); + case ExtrapolationMode.LOOP: + time = wrapRepeat(time, firstTime, lastTime); + break; + case ExtrapolationMode.PING_PONG: + time = wrapPingPong(time, firstTime, lastTime); + break; + default: + return preFrame.value; + } + } + var index = binarySearchEpsilon(times, time); + if (index >= 0) { + return values[index].value; + } + var iNext = ~index; + { + assertIsTrue(iNext !== 0 && iNext !== nFrames && nFrames > 1); + } + var iPre = iNext - 1; + var preTime = times[iPre]; + var preValue = values[iPre]; + var nextTime = times[iNext]; + var nextValue = values[iNext]; + { + assertIsTrue(nextTime > time && time > preTime); + } + var dt = nextTime - preTime; + var ratio = (time - preTime) / dt; + return evalBetweenTwoKeyFrames(preTime, preValue, nextTime, nextValue, ratio); + }; + _proto.addKeyFrame = function addKeyFrame(time, value) { + return _KeyframeCurve.prototype.addKeyFrame.call(this, time, createRealKeyframeValue(value)); + }; + _proto.assignSorted = function assignSorted(times, values) { + if (values !== undefined) { + assertIsTrue(Array.isArray(times)); + this.setKeyframes(times.slice(), values.map(function (value) { + return createRealKeyframeValue(value); + })); + } else { + var _keyframes = Array.from(times); + this.setKeyframes(_keyframes.map(function (_ref) { + var time = _ref[0]; + return time; + }), _keyframes.map(function (_ref2) { + var value = _ref2[1]; + return createRealKeyframeValue(value); + })); + } + }; + _proto.isConstant = function isConstant(tolerance) { + if (this._values.length <= 1) { + return true; + } + var firstVal = this._values[0].value; + return this._values.every(function (frame) { + return approx(frame.value, firstVal, tolerance); + }); + }; + _proto[serializeTag] = function (output, context) { + if (!context.toCCON) { + output.writeThis(); + return; + } + var times = this._times, + keyframeValues = this._values; + var nKeyframes = times.length; + var dataSize = 0 + OVERFLOW_BYTES + OVERFLOW_BYTES + FRAME_COUNT_BYTES$1 + TIME_BYTES$1 * nKeyframes + REAL_KEY_FRAME_VALUE_MAX_SIZE * nKeyframes; + var dataView = new DataView(new ArrayBuffer(dataSize)); + var currentOffset = 0; + dataView.setUint8(currentOffset, this.preExtrapolation); + currentOffset += OVERFLOW_BYTES; + dataView.setUint8(currentOffset, this.postExtrapolation); + currentOffset += OVERFLOW_BYTES; + dataView.setUint32(currentOffset, nKeyframes, true); + currentOffset += FRAME_COUNT_BYTES$1; + times.forEach(function (time, index) { + return dataView.setFloat32(currentOffset + TIME_BYTES$1 * index, time, true); + }); + currentOffset += TIME_BYTES$1 * nKeyframes; + for (var _iterator = _createForOfIteratorHelperLoose(keyframeValues), _step; !(_step = _iterator()).done;) { + var keyframeValue = _step.value; + currentOffset = saveRealKeyFrameValue(dataView, keyframeValue, currentOffset); + } + var bytes = new Uint8Array(dataView.buffer, 0, currentOffset); + output.writeProperty('bytes', bytes); + var keyframeValueEditorExtras = keyframeValues.map(function (keyframeValue) { + return keyframeValue[editorExtrasTag]; + }); + if (keyframeValueEditorExtras.some(function (extras) { + return extras !== undefined; + })) { + output.writeProperty("keyframeValueEditorExtras", keyframeValueEditorExtras); + } + }; + _proto[deserializeTag] = function (input, context) { + if (!context.fromCCON) { + input.readThis(); + return; + } + var bytes = input.readProperty('bytes'); + var dataView = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength); + var currentOffset = 0; + this.preExtrapolation = dataView.getUint8(currentOffset); + currentOffset += OVERFLOW_BYTES; + this.postExtrapolation = dataView.getUint8(currentOffset); + currentOffset += OVERFLOW_BYTES; + var nKeyframes = dataView.getUint32(currentOffset, true); + currentOffset += FRAME_COUNT_BYTES$1; + var times = Array.from({ + length: nKeyframes + }, function (_, index) { + return dataView.getFloat32(currentOffset + TIME_BYTES$1 * index, true); + }); + currentOffset += TIME_BYTES$1 * nKeyframes; + var keyframeValues = new Array(nKeyframes); + for (var iKeyFrame = 0; iKeyFrame < nKeyframes; ++iKeyFrame) { + var keyframeValue = createRealKeyframeValue({}); + currentOffset = loadRealKeyFrameValue(dataView, keyframeValue, currentOffset); + keyframeValues[iKeyFrame] = keyframeValue; + } + assertIsTrue(currentOffset === bytes.byteLength); + var keyframeValueEditorExtras = input.readProperty("keyframeValueEditorExtras"); + if (keyframeValueEditorExtras) { + assertIsTrue(keyframeValueEditorExtras.length === nKeyframes); + keyframeValueEditorExtras.forEach(function (extras, index) { + return keyframeValues[index][editorExtrasTag] = extras; + }); + } + this._times = times; + this._values = keyframeValues; + }; + return RealCurve; + }(KeyframeCurve)); + CCClass.fastDefine('cc.RealCurve', RealCurve, { + _times: [], + _values: [], + preExtrapolation: ExtrapolationMode.CLAMP, + postExtrapolation: ExtrapolationMode.CLAMP + }); + var FLAGS_EASING_METHOD_BITS_START = 8; + var FLAG_EASING_METHOD_MASK = 0xFF << FLAGS_EASING_METHOD_BITS_START; + var KeyframeValueFlagMask$1; + (function (KeyframeValueFlagMask) { + KeyframeValueFlagMask[KeyframeValueFlagMask["VALUE"] = 1] = "VALUE"; + KeyframeValueFlagMask[KeyframeValueFlagMask["INTERPOLATION_MODE"] = 2] = "INTERPOLATION_MODE"; + KeyframeValueFlagMask[KeyframeValueFlagMask["TANGENT_WEIGHT_MODE"] = 4] = "TANGENT_WEIGHT_MODE"; + KeyframeValueFlagMask[KeyframeValueFlagMask["LEFT_TANGENT"] = 8] = "LEFT_TANGENT"; + KeyframeValueFlagMask[KeyframeValueFlagMask["LEFT_TANGENT_WEIGHT"] = 16] = "LEFT_TANGENT_WEIGHT"; + KeyframeValueFlagMask[KeyframeValueFlagMask["RIGHT_TANGENT"] = 32] = "RIGHT_TANGENT"; + KeyframeValueFlagMask[KeyframeValueFlagMask["RIGHT_TANGENT_WEIGHT"] = 64] = "RIGHT_TANGENT_WEIGHT"; + })(KeyframeValueFlagMask$1 || (KeyframeValueFlagMask$1 = {})); + var OVERFLOW_BYTES = 1; + var FRAME_COUNT_BYTES$1 = 4; + var TIME_BYTES$1 = 4; + var KEY_FRAME_VALUE_FLAGS_BYTES = 4; + var VALUE_BYTES$1 = 4; + var INTERPOLATION_MODE_BYTES$1 = 1; + var TANGENT_WEIGHT_MODE_BYTES = 1; + var LEFT_TANGENT_BYTES = 4; + var LEFT_TANGENT_WEIGHT_BYTES = 4; + var RIGHT_TANGENT_BYTES = 4; + var RIGHT_TANGENT_WEIGHT_BYTES = 4; + var _createRealKeyframeVa = createRealKeyframeValue({}), + DEFAULT_INTERPOLATION_MODE = _createRealKeyframeVa.interpolationMode, + DEFAULT_TANGENT_WEIGHT_MODE = _createRealKeyframeVa.tangentWeightMode, + DEFAULT_LEFT_TANGENT = _createRealKeyframeVa.leftTangent, + DEFAULT_LEFT_TANGENT_WEIGHT = _createRealKeyframeVa.leftTangentWeight, + DEFAULT_RIGHT_TANGENT = _createRealKeyframeVa.rightTangent, + DEFAULT_RIGHT_TANGENT_WEIGHT = _createRealKeyframeVa.rightTangentWeight; + var REAL_KEY_FRAME_VALUE_MAX_SIZE = KEY_FRAME_VALUE_FLAGS_BYTES + VALUE_BYTES$1 + INTERPOLATION_MODE_BYTES$1 + TANGENT_WEIGHT_MODE_BYTES + LEFT_TANGENT_BYTES + LEFT_TANGENT_WEIGHT_BYTES + RIGHT_TANGENT_BYTES + RIGHT_TANGENT_WEIGHT_BYTES + 0; + function saveRealKeyFrameValue(dataView, keyframeValue, offset) { + var flags = 0; + var currentOffset = offset; + var pFlags = currentOffset; + currentOffset += KEY_FRAME_VALUE_FLAGS_BYTES; + var value = keyframeValue.value, + interpolationMode = keyframeValue.interpolationMode, + tangentWeightMode = keyframeValue.tangentWeightMode, + rightTangent = keyframeValue.rightTangent, + rightTangentWeight = keyframeValue.rightTangentWeight, + leftTangent = keyframeValue.leftTangent, + leftTangentWeight = keyframeValue.leftTangentWeight, + easingMethod = keyframeValue.easingMethod; + dataView.setFloat32(currentOffset, value, true); + currentOffset += VALUE_BYTES$1; + if (interpolationMode !== DEFAULT_INTERPOLATION_MODE) { + flags |= KeyframeValueFlagMask$1.INTERPOLATION_MODE; + dataView.setUint8(currentOffset, interpolationMode); + currentOffset += INTERPOLATION_MODE_BYTES$1; + } + if (tangentWeightMode !== DEFAULT_TANGENT_WEIGHT_MODE) { + flags |= KeyframeValueFlagMask$1.TANGENT_WEIGHT_MODE; + dataView.setUint8(currentOffset, tangentWeightMode); + currentOffset += TANGENT_WEIGHT_MODE_BYTES; + } + if (leftTangent !== DEFAULT_LEFT_TANGENT) { + flags |= KeyframeValueFlagMask$1.LEFT_TANGENT; + dataView.setFloat32(currentOffset, leftTangent, true); + currentOffset += LEFT_TANGENT_BYTES; + } + if (leftTangentWeight !== DEFAULT_LEFT_TANGENT_WEIGHT) { + flags |= KeyframeValueFlagMask$1.LEFT_TANGENT_WEIGHT; + dataView.setFloat32(currentOffset, leftTangentWeight, true); + currentOffset += LEFT_TANGENT_WEIGHT_BYTES; + } + if (rightTangent !== DEFAULT_RIGHT_TANGENT) { + flags |= KeyframeValueFlagMask$1.RIGHT_TANGENT; + dataView.setFloat32(currentOffset, rightTangent, true); + currentOffset += RIGHT_TANGENT_BYTES; + } + if (rightTangentWeight !== DEFAULT_RIGHT_TANGENT_WEIGHT) { + flags |= KeyframeValueFlagMask$1.RIGHT_TANGENT_WEIGHT; + dataView.setFloat32(currentOffset, rightTangentWeight, true); + currentOffset += RIGHT_TANGENT_WEIGHT_BYTES; + } + flags |= easingMethod << FLAGS_EASING_METHOD_BITS_START; + dataView.setUint32(pFlags, flags, true); + return currentOffset; + } + function loadRealKeyFrameValue(dataView, keyframeValue, offset) { + var currentOffset = offset; + var flags = dataView.getUint32(currentOffset, true); + currentOffset += KEY_FRAME_VALUE_FLAGS_BYTES; + keyframeValue.value = dataView.getFloat32(currentOffset, true); + currentOffset += VALUE_BYTES$1; + if (flags & KeyframeValueFlagMask$1.INTERPOLATION_MODE) { + keyframeValue.interpolationMode = dataView.getUint8(currentOffset); + currentOffset += INTERPOLATION_MODE_BYTES$1; + } + if (flags & KeyframeValueFlagMask$1.TANGENT_WEIGHT_MODE) { + keyframeValue.tangentWeightMode = dataView.getUint8(currentOffset); + currentOffset += TANGENT_WEIGHT_MODE_BYTES; + } + if (flags & KeyframeValueFlagMask$1.LEFT_TANGENT) { + keyframeValue.leftTangent = dataView.getFloat32(currentOffset, true); + currentOffset += LEFT_TANGENT_BYTES; + } + if (flags & KeyframeValueFlagMask$1.LEFT_TANGENT_WEIGHT) { + keyframeValue.leftTangentWeight = dataView.getFloat32(currentOffset, true); + currentOffset += LEFT_TANGENT_WEIGHT_BYTES; + } + if (flags & KeyframeValueFlagMask$1.RIGHT_TANGENT) { + keyframeValue.rightTangent = dataView.getFloat32(currentOffset, true); + currentOffset += RIGHT_TANGENT_BYTES; + } + if (flags & KeyframeValueFlagMask$1.RIGHT_TANGENT_WEIGHT) { + keyframeValue.rightTangentWeight = dataView.getFloat32(currentOffset, true); + currentOffset += RIGHT_TANGENT_WEIGHT_BYTES; + } + var easingMethod = (flags & FLAG_EASING_METHOD_MASK) >> FLAGS_EASING_METHOD_BITS_START; + keyframeValue.easingMethod = easingMethod; + return currentOffset; + } + function wrapRepeat(time, prevTime, nextTime) { + return prevTime + repeat$1(time - prevTime, nextTime - prevTime); + } + function wrapPingPong(time, prevTime, nextTime) { + return prevTime + pingPong(time - prevTime, nextTime - prevTime); + } + function linearTrend(prevTime, prevValue, nextTime, nextValue, time) { + var slope = (nextValue - prevValue) / (nextTime - prevTime); + return prevValue + (time - prevTime) * slope; + } + function evalBetweenTwoKeyFrames(prevTime, prevValue, nextTime, nextValue, ratio) { + var dt = nextTime - prevTime; + switch (prevValue.interpolationMode) { + default: + case RealInterpolationMode.CONSTANT: + return prevValue.value; + case RealInterpolationMode.LINEAR: + { + var transformedRatio = prevValue.easingMethod === EasingMethod.LINEAR ? ratio : getEasingFn(prevValue.easingMethod)(ratio); + return lerp(prevValue.value, nextValue.value, transformedRatio); + } + case RealInterpolationMode.CUBIC: + { + var ONE_THIRD = 1.0 / 3.0; + var prevTangent = prevValue.rightTangent, + prevTangentWeightSpecified = prevValue.rightTangentWeight; + var prevTangentWeightEnabled = isRightTangentWeightEnabled(prevValue.tangentWeightMode); + var nextTangent = nextValue.leftTangent, + nextTangentWeightSpecified = nextValue.leftTangentWeight; + var nextTangentWeightEnabled = isLeftTangentWeightEnabled(nextValue.tangentWeightMode); + if (!prevTangentWeightEnabled && !nextTangentWeightEnabled) { + var p1 = prevValue.value + ONE_THIRD * prevTangent * dt; + var p2 = nextValue.value - ONE_THIRD * nextTangent * dt; + return bezierInterpolate(prevValue.value, p1, p2, nextValue.value, ratio); + } else { + var prevTangentWeight = 0.0; + if (prevTangentWeightEnabled) { + prevTangentWeight = prevTangentWeightSpecified; + } else { + var x = dt; + var _y = dt * prevTangent; + prevTangentWeight = Math.sqrt(x * x + _y * _y) * ONE_THIRD; + } + var angle0 = Math.atan(prevTangent); + var tx0 = Math.cos(angle0) * prevTangentWeight + prevTime; + var ty0 = Math.sin(angle0) * prevTangentWeight + prevValue.value; + var nextTangentWeight = 0.0; + if (nextTangentWeightEnabled) { + nextTangentWeight = nextTangentWeightSpecified; + } else { + var _x = dt; + var _y2 = dt * nextTangent; + nextTangentWeight = Math.sqrt(_x * _x + _y2 * _y2) * ONE_THIRD; + } + var angle1 = Math.atan(nextTangent); + var tx1 = -Math.cos(angle1) * nextTangentWeight + nextTime; + var ty1 = -Math.sin(angle1) * nextTangentWeight + nextValue.value; + var dx = dt; + var u0x = (tx0 - prevTime) / dx; + var u1x = (tx1 - prevTime) / dx; + var u0y = ty0; + var u1y = ty1; + var coeff0 = 0.0; + var coeff1 = 3.0 * u0x; + var coeff2 = 3.0 * u1x - 6.0 * u0x; + var coeff3 = 3.0 * (u0x - u1x) + 1.0; + var solutions = [0.0, 0.0, 0.0]; + var nSolutions = solveCubic(coeff0 - ratio, coeff1, coeff2, coeff3, solutions); + var param = getParamFromCubicSolution(solutions, nSolutions, ratio); + var y = bezierInterpolate(prevValue.value, u0y, u1y, nextValue.value, param); + return y; + } + } + } + } + function isLeftTangentWeightEnabled(tangentWeightMode) { + return (tangentWeightMode & TangentWeightMode.LEFT) !== 0; + } + function isRightTangentWeightEnabled(tangentWeightMode) { + return (tangentWeightMode & TangentWeightMode.RIGHT) !== 0; + } + function bezierInterpolate(p0, p1, p2, p3, t) { + var u = 1 - t; + var coeff0 = u * u * u; + var coeff1 = 3 * u * u * t; + var coeff2 = 3 * u * t * t; + var coeff3 = t * t * t; + return coeff0 * p0 + coeff1 * p1 + coeff2 * p2 + coeff3 * p3; + } + function getParamFromCubicSolution(solutions, solutionsCount, x) { + var param = x; + if (solutionsCount === 1) { + param = solutions[0]; + } else { + param = -Infinity; + for (var iSolution = 0; iSolution < solutionsCount; ++iSolution) { + var solution = solutions[iSolution]; + if (solution >= 0.0 && solution <= 1.0) { + if (solution > param) { + param = solution; + } + } + } + if (param === -Infinity) { + param = 0.0; + } + } + return param; + } + + function bezier(C1, C2, C3, C4, t) { + var t1 = 1 - t; + return t1 * (t1 * (C1 + (C2 * 3 - C1) * t) + C3 * 3 * t * t) + C4 * t * t * t; + } + legacyCC.bezier = bezier; + var cos$2 = Math.cos; + var acos$1 = Math.acos; + var max$2 = Math.max; + var pi = Math.PI; + var tau = 2 * pi; + var sqrt = Math.sqrt; + function crt(v) { + if (v < 0) { + return -Math.pow(-v, 1 / 3); + } else { + return Math.pow(v, 1 / 3); + } + } + function cardano(curve, x) { + var pa = x - 0; + var pb = x - curve[0]; + var pc = x - curve[2]; + var pd = x - 1; + var pa3 = pa * 3; + var pb3 = pb * 3; + var pc3 = pc * 3; + var d = -pa + pb3 - pc3 + pd; + var rd = 1 / d; + var r3 = 1 / 3; + var a = (pa3 - 6 * pb + pc3) * rd; + var a3 = a * r3; + var b = (-pa3 + pb3) * rd; + var c = pa * rd; + var p = (3 * b - a * a) * r3; + var p3 = p * r3; + var q = (2 * a * a * a - 9 * a * b + 27 * c) / 27; + var q2 = q / 2; + var discriminant = q2 * q2 + p3 * p3 * p3; + var u1; + var v1; + var x1; + var x2; + var x3; + if (discriminant < 0) { + var mp3 = -p * r3; + var mp33 = mp3 * mp3 * mp3; + var r = sqrt(mp33); + var t = -q / (2 * r); + var cosphi = t < -1 ? -1 : t > 1 ? 1 : t; + var phi = acos$1(cosphi); + var crtr = crt(r); + var t1 = 2 * crtr; + x1 = t1 * cos$2(phi * r3) - a3; + x2 = t1 * cos$2((phi + tau) * r3) - a3; + x3 = t1 * cos$2((phi + 2 * tau) * r3) - a3; + if (x1 >= 0 && x1 <= 1) { + if (x2 >= 0 && x2 <= 1) { + if (x3 >= 0 && x3 <= 1) { + return max$2(x1, x2, x3); + } else { + return max$2(x1, x2); + } + } else if (x3 >= 0 && x3 <= 1) { + return max$2(x1, x3); + } else { + return x1; + } + } else if (x2 >= 0 && x2 <= 1) { + if (x3 >= 0 && x3 <= 1) { + return max$2(x2, x3); + } else { + return x2; + } + } else { + return x3; + } + } else if (discriminant === 0) { + u1 = q2 < 0 ? crt(-q2) : -crt(q2); + x1 = 2 * u1 - a3; + x2 = -u1 - a3; + if (x1 >= 0 && x1 <= 1) { + if (x2 >= 0 && x2 <= 1) { + return max$2(x1, x2); + } else { + return x1; + } + } else { + return x2; + } + } else { + var sd = sqrt(discriminant); + u1 = crt(-q2 + sd); + v1 = crt(q2 + sd); + x1 = u1 - v1 - a3; + return x1; + } + } + function bezierByTime(controlPoints, x) { + var percent = cardano(controlPoints, x); + var p1y = controlPoints[1]; + var p2y = controlPoints[3]; + return ((1 - percent) * (p1y + (p2y - p1y) * percent) * 3 + percent * percent) * percent; + } + legacyCC.bezierByTime = bezierByTime; + + var _dec$2i, _class$2g, _class2$20, _initializer$1L, _initializer2$1k, _initializer3$$, _dec2$1s, _class4$h, _class5$h, _initializer4$R, _initializer5$F; + var QuatInterpolationMode; exports('c6', QuatInterpolationMode); + (function (QuatInterpolationMode) { + QuatInterpolationMode[QuatInterpolationMode["SLERP"] = 0] = "SLERP"; + QuatInterpolationMode[QuatInterpolationMode["CONSTANT"] = 1] = "CONSTANT"; + })(QuatInterpolationMode || (exports('c6', QuatInterpolationMode = {}))); + var QuatKeyframeValue = (_dec$2i = ccclass$t('cc.QuatKeyframeValue'), _dec$2i(_class$2g = uniquelyReferenced(_class$2g = (_class2$20 = function QuatKeyframeValue(_temp) { + var _ref = _temp === void 0 ? {} : _temp, + value = _ref.value, + interpolationMode = _ref.interpolationMode, + easingMethod = _ref.easingMethod; + this.interpolationMode = _initializer$1L && _initializer$1L(); + this.value = _initializer2$1k && _initializer2$1k(); + this.easingMethod = _initializer3$$ && _initializer3$$(); + this.value = value ? Quat.clone(value) : this.value; + this.interpolationMode = interpolationMode !== null && interpolationMode !== void 0 ? interpolationMode : this.interpolationMode; + this.easingMethod = easingMethod !== null && easingMethod !== void 0 ? easingMethod : this.easingMethod; + }, (_initializer$1L = applyDecoratedInitializer(_class2$20.prototype, "interpolationMode", [serializable$9], function () { + return QuatInterpolationMode.SLERP; + }), _initializer2$1k = applyDecoratedInitializer(_class2$20.prototype, "value", [serializable$9], function () { + return Quat.clone(Quat.IDENTITY); + }), _initializer3$$ = applyDecoratedInitializer(_class2$20.prototype, "easingMethod", [serializable$9], function () { + return EasingMethod.LINEAR; + })), _class2$20)) || _class$2g) || _class$2g); + function createQuatKeyframeValue(params) { + return new QuatKeyframeValue(params); + } + var QuatCurve = exports('c5', (_dec2$1s = ccclass$t('cc.QuatCurve'), _dec2$1s(_class4$h = (_class5$h = function (_KeyframeCurve) { + _inheritsLoose(QuatCurve, _KeyframeCurve); + function QuatCurve() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _KeyframeCurve.call.apply(_KeyframeCurve, [this].concat(args)) || this; + _this.preExtrapolation = _initializer4$R && _initializer4$R(); + _this.postExtrapolation = _initializer5$F && _initializer5$F(); + return _this; + } + var _proto = QuatCurve.prototype; + _proto.evaluate = function evaluate(time, quat) { + var _quat; + (_quat = quat) !== null && _quat !== void 0 ? _quat : quat = new Quat(); + var times = this._times, + values = this._values, + postExtrapolation = this.postExtrapolation, + preExtrapolation = this.preExtrapolation; + var nFrames = times.length; + if (nFrames === 0) { + return quat; + } + var firstTime = times[0]; + var lastTime = times[nFrames - 1]; + if (time < firstTime) { + var _preValue = values[0]; + switch (preExtrapolation) { + case ExtrapolationMode.LOOP: + time = firstTime + repeat$1(time - firstTime, lastTime - firstTime); + break; + case ExtrapolationMode.PING_PONG: + time = firstTime + pingPong(time - firstTime, lastTime - firstTime); + break; + case ExtrapolationMode.CLAMP: + default: + return Quat.copy(quat, _preValue.value); + } + } else if (time > lastTime) { + var _preValue2 = values[nFrames - 1]; + switch (postExtrapolation) { + case ExtrapolationMode.LOOP: + time = firstTime + repeat$1(time - firstTime, lastTime - firstTime); + break; + case ExtrapolationMode.PING_PONG: + time = firstTime + pingPong(time - firstTime, lastTime - firstTime); + break; + case ExtrapolationMode.CLAMP: + default: + return Quat.copy(quat, _preValue2.value); + } + } + var index = binarySearchEpsilon(times, time); + if (index >= 0) { + return Quat.copy(quat, values[index].value); + } + var iNext = ~index; + assertIsTrue(iNext !== 0 && iNext !== nFrames && nFrames > 1); + var iPre = iNext - 1; + var preTime = times[iPre]; + var preValue = values[iPre]; + var nextTime = times[iNext]; + var nextValue = values[iNext]; + assertIsTrue(nextTime > time && time > preTime); + var dt = nextTime - preTime; + var ratio = (time - preTime) / dt; + switch (preValue.interpolationMode) { + default: + case QuatInterpolationMode.CONSTANT: + return Quat.copy(quat, preValue.value); + case QuatInterpolationMode.SLERP: + { + var easingMethod = preValue.easingMethod; + var transformedRatio = easingMethod === EasingMethod.LINEAR ? ratio : Array.isArray(easingMethod) ? bezierByTime(easingMethod, ratio) : getEasingFn(easingMethod)(ratio); + return Quat.slerp(quat, preValue.value, nextValue.value, transformedRatio); + } + } + }; + _proto.addKeyFrame = function addKeyFrame(time, value) { + var keyframeValue = new QuatKeyframeValue(value); + return _KeyframeCurve.prototype.addKeyFrame.call(this, time, keyframeValue); + }; + _proto.assignSorted = function assignSorted(times, values) { + if (values !== undefined) { + assertIsTrue(Array.isArray(times)); + this.setKeyframes(times.slice(), values.map(function (value) { + return createQuatKeyframeValue(value); + })); + } else { + var _keyframes = Array.from(times); + this.setKeyframes(_keyframes.map(function (_ref2) { + var time = _ref2[0]; + return time; + }), _keyframes.map(function (_ref3) { + var value = _ref3[1]; + return createQuatKeyframeValue(value); + })); + } + }; + _proto[serializeTag] = function (output, context) { + if (!context.toCCON) { + output.writeThis(); + return; + } + var times = this._times, + keyframeValues = this._values; + var interpolationModeRepeated = true; + keyframeValues.forEach(function (keyframeValue, _index, _ref4) { + var firstKeyframeValue = _ref4[0]; + if (interpolationModeRepeated && keyframeValue.interpolationMode !== firstKeyframeValue.interpolationMode) { + interpolationModeRepeated = false; + } + }); + var nKeyframes = times.length; + var nFrames = nKeyframes; + var interpolationModesSize = INTERPOLATION_MODE_BYTES * (interpolationModeRepeated ? 1 : nFrames); + var easingMethodsSize = keyframeValues.reduce(function (result, _ref5) { + var easingMethod = _ref5.easingMethod; + return result += Array.isArray(easingMethod) ? EASING_METHOD_BYTES + EASING_METHOD_BEZIER_COMPONENT_BYTES * 4 : EASING_METHOD_BYTES; + }, 0); + var dataSize = 0; + dataSize += FLAGS_BYTES + FRAME_COUNT_BYTES + TIME_BYTES * nFrames + VALUE_BYTES * 4 * nFrames + easingMethodsSize + interpolationModesSize + 0; + var dataView = new DataView(new ArrayBuffer(dataSize)); + var P = 0; + var flags = 0; + if (interpolationModeRepeated) { + flags |= KeyframeValueFlagMask.INTERPOLATION_MODE; + } + dataView.setUint32(P, flags, true); + P += FLAGS_BYTES; + dataView.setUint32(P, nFrames, true); + P += FRAME_COUNT_BYTES; + times.forEach(function (time, index) { + return dataView.setFloat32(P + TIME_BYTES * index, time, true); + }); + P += TIME_BYTES * nFrames; + keyframeValues.forEach(function (_ref6, index) { + var _ref6$value = _ref6.value, + x = _ref6$value.x, + y = _ref6$value.y, + z = _ref6$value.z, + w = _ref6$value.w; + var pQuat = P + VALUE_BYTES * 4 * index; + dataView.setFloat32(pQuat + VALUE_BYTES * 0, x, true); + dataView.setFloat32(pQuat + VALUE_BYTES * 1, y, true); + dataView.setFloat32(pQuat + VALUE_BYTES * 2, z, true); + dataView.setFloat32(pQuat + VALUE_BYTES * 3, w, true); + }); + P += VALUE_BYTES * 4 * nFrames; + keyframeValues.forEach(function (_ref7, index) { + var easingMethod = _ref7.easingMethod; + if (!Array.isArray(easingMethod)) { + dataView.setUint8(P, easingMethod); + ++P; + } else { + dataView.setUint8(P, EASING_METHOD_BEZIER_TAG); + ++P; + dataView.setFloat32(P + EASING_METHOD_BEZIER_COMPONENT_BYTES * 0, easingMethod[0], true); + dataView.setFloat32(P + EASING_METHOD_BEZIER_COMPONENT_BYTES * 1, easingMethod[1], true); + dataView.setFloat32(P + EASING_METHOD_BEZIER_COMPONENT_BYTES * 2, easingMethod[2], true); + dataView.setFloat32(P + EASING_METHOD_BEZIER_COMPONENT_BYTES * 3, easingMethod[3], true); + P += EASING_METHOD_BEZIER_COMPONENT_BYTES * 4; + } + }); + var INTERPOLATION_MODES_START = P; + P += interpolationModesSize; + var pInterpolationMode = INTERPOLATION_MODES_START; + keyframeValues.forEach(function (_ref8) { + var interpolationMode = _ref8.interpolationMode; + dataView.setUint8(pInterpolationMode, interpolationMode); + if (!interpolationModeRepeated) { + pInterpolationMode += INTERPOLATION_MODE_BYTES; + } + }); + var bytes = new Uint8Array(dataView.buffer); + output.writeProperty('bytes', bytes); + }; + _proto[deserializeTag] = function (input, context) { + if (!context.fromCCON) { + input.readThis(); + return; + } + var bytes = input.readProperty('bytes'); + var dataView = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength); + var P = 0; + var flags = dataView.getUint32(P, true); + P += FLAGS_BYTES; + var interpolationModeRepeated = flags & KeyframeValueFlagMask.INTERPOLATION_MODE; + var nFrames = dataView.getUint32(P, true); + P += FRAME_COUNT_BYTES; + var times = Array.from({ + length: nFrames + }, function (_, index) { + return dataView.getFloat32(P + TIME_BYTES * index, true); + }); + P += TIME_BYTES * nFrames; + var P_VALUES = P; + P += VALUE_BYTES * 4 * nFrames; + var keyframeValues = Array.from({ + length: nFrames + }, function (_, index) { + var pQuat = P_VALUES + VALUE_BYTES * 4 * index; + var x = dataView.getFloat32(pQuat + VALUE_BYTES * 0, true); + var y = dataView.getFloat32(pQuat + VALUE_BYTES * 1, true); + var z = dataView.getFloat32(pQuat + VALUE_BYTES * 2, true); + var w = dataView.getFloat32(pQuat + VALUE_BYTES * 3, true); + var easingMethod = dataView.getUint8(P); + ++P; + var keyframeValue = createQuatKeyframeValue({ + value: { + x: x, + y: y, + z: z, + w: w + } + }); + if (easingMethod !== EASING_METHOD_BEZIER_TAG) { + keyframeValue.easingMethod = easingMethod; + } else { + keyframeValue.easingMethod = [dataView.getFloat32(P + EASING_METHOD_BEZIER_COMPONENT_BYTES * 0, true), dataView.getFloat32(P + EASING_METHOD_BEZIER_COMPONENT_BYTES * 1, true), dataView.getFloat32(P + EASING_METHOD_BEZIER_COMPONENT_BYTES * 2, true), dataView.getFloat32(P + EASING_METHOD_BEZIER_COMPONENT_BYTES * 3, true)]; + P += EASING_METHOD_BEZIER_COMPONENT_BYTES * 4; + } + return keyframeValue; + }); + if (interpolationModeRepeated) { + var interpolationMode = dataView.getUint8(P); + ++P; + for (var iKeyframe = 0; iKeyframe < nFrames; ++iKeyframe) { + keyframeValues[iKeyframe].interpolationMode = interpolationMode; + } + } else { + for (var _iKeyframe = 0; _iKeyframe < nFrames; ++_iKeyframe) { + var _interpolationMode = dataView.getUint8(P + _iKeyframe); + keyframeValues[_iKeyframe].interpolationMode = _interpolationMode; + } + P += nFrames; + } + this._times = times; + this._values = keyframeValues; + }; + return QuatCurve; + }(KeyframeCurve), (_initializer4$R = applyDecoratedInitializer(_class5$h.prototype, "preExtrapolation", [serializable$9], function () { + return ExtrapolationMode.CLAMP; + }), _initializer5$F = applyDecoratedInitializer(_class5$h.prototype, "postExtrapolation", [serializable$9], function () { + return ExtrapolationMode.CLAMP; + })), _class5$h)) || _class4$h)); + var KeyframeValueFlagMask; + (function (KeyframeValueFlagMask) { + KeyframeValueFlagMask[KeyframeValueFlagMask["INTERPOLATION_MODE"] = 1] = "INTERPOLATION_MODE"; + })(KeyframeValueFlagMask || (KeyframeValueFlagMask = {})); + var FLAGS_BYTES = 1; + var FRAME_COUNT_BYTES = 4; + var TIME_BYTES = 4; + var VALUE_BYTES = 4; + var INTERPOLATION_MODE_BYTES = 1; + var EASING_METHOD_BYTES = 1; + var EASING_METHOD_BEZIER_TAG = 255; + var EASING_METHOD_BEZIER_COMPONENT_BYTES = 4; + + var _dec$2h, _class$2f; + var ObjectCurve = exports('c7', (_dec$2h = ccclass$t('cc.ObjectCurve'), _dec$2h(_class$2f = function (_KeyframeCurve) { + _inheritsLoose(ObjectCurve, _KeyframeCurve); + function ObjectCurve() { + return _KeyframeCurve.apply(this, arguments) || this; + } + var _proto = ObjectCurve.prototype; + _proto.evaluate = function evaluate(time) { + var iSearch = this.searchKeyframe(time); + if (iSearch >= 0) { + return this._values[iSearch]; + } + var iPrev = clamp$1(~iSearch - 1, 0, this._values.length - 1); + return this._values[iPrev]; + }; + return ObjectCurve; + }(KeyframeCurve)) || _class$2f)); + + var Mode$1 = Enum({ + Blend: 0, + Fixed: 1 + }); + var ColorKey = exports('c8', function ColorKey() { + this.color = Color$1.WHITE.clone(); + this.time = 0; + }); + CCClass.fastDefine('cc.ColorKey', ColorKey, { + color: Color$1.WHITE.clone(), + time: 0 + }); + CCClass.Attr.setClassAttr(ColorKey, 'color', 'visible', true); + CCClass.Attr.setClassAttr(ColorKey, 'time', 'visible', true); + var AlphaKey = exports('c9', function AlphaKey() { + this.alpha = 1; + this.time = 0; + }); + CCClass.fastDefine('cc.AlphaKey', AlphaKey, { + alpha: 1, + time: 0 + }); + CCClass.Attr.setClassAttr(AlphaKey, 'alpha', 'visible', true); + CCClass.Attr.setClassAttr(AlphaKey, 'time', 'visible', true); + var Gradient = exports('ca', function () { + function Gradient() { + this.colorKeys = []; + this.alphaKeys = []; + this.mode = Mode$1.Blend; + } + var _proto = Gradient.prototype; + _proto.setKeys = function setKeys(colorKeys, alphaKeys) { + this.colorKeys = colorKeys; + this.alphaKeys = alphaKeys; + }; + _proto.sortKeys = function sortKeys() { + if (this.colorKeys.length > 1) { + this.colorKeys.sort(function (a, b) { + return a.time - b.time; + }); + } + if (this.alphaKeys.length > 1) { + this.alphaKeys.sort(function (a, b) { + return a.time - b.time; + }); + } + }; + _proto.evaluate = function evaluate(time) { + return this.evaluateFast(new Color$1(), time); + }; + _proto.evaluateFast = function evaluateFast(out, time) { + this.getRGB(out, time); + out._set_a_unsafe(this.getAlpha(time)); + return out; + }; + _proto.randomColor = function randomColor() { + return this.getRandomColor(new Color$1()); + }; + _proto.getRandomColor = function getRandomColor(out) { + var c = this.colorKeys[Math.trunc(random() * this.colorKeys.length)]; + var a = this.alphaKeys[Math.trunc(random() * this.alphaKeys.length)]; + out.set(c.color); + out._set_a_unsafe(a.alpha); + return out; + }; + _proto.getRGB = function getRGB(out, time) { + var colorKeys = this.colorKeys; + var length = colorKeys.length; + if (length > 1) { + time = repeat$1(time, 1.0 + EPSILON$3); + for (var i = 1; i < length; ++i) { + var preTime = colorKeys[i - 1].time; + var curTime = colorKeys[i].time; + if (time >= preTime && time < curTime) { + if (this.mode === Mode$1.Fixed) { + Color$1.copy(out, colorKeys[i].color); + return out; + } + var factor = (time - preTime) / (curTime - preTime); + Color$1.lerp(out, colorKeys[i - 1].color, colorKeys[i].color, factor); + return out; + } + } + var lastIndex = length - 1; + if (approx(time, colorKeys[lastIndex].time, EPSILON$3)) { + Color$1.copy(out, colorKeys[lastIndex].color); + } else if (time < colorKeys[0].time) { + Color$1.lerp(out, Color$1.BLACK, colorKeys[0].color, time / colorKeys[0].time); + } else if (time > colorKeys[lastIndex].time) { + Color$1.lerp(out, colorKeys[lastIndex].color, Color$1.BLACK, (time - colorKeys[lastIndex].time) / (1 - colorKeys[lastIndex].time)); + } + } else if (length === 1) { + Color$1.copy(out, colorKeys[0].color); + } else { + Color$1.copy(out, Color$1.WHITE); + } + return out; + }; + _proto.getAlpha = function getAlpha(time) { + var basicAlpha = 0; + var alphaKeys = this.alphaKeys; + var length = alphaKeys.length; + if (length > 1) { + time = repeat$1(time, 1.0 + EPSILON$3); + for (var i = 1; i < length; ++i) { + var preTime = alphaKeys[i - 1].time; + var curTime = alphaKeys[i].time; + if (time >= preTime && time < curTime) { + if (this.mode === Mode$1.Fixed) { + return alphaKeys[i].alpha; + } + var factor = (time - preTime) / (curTime - preTime); + return lerp(alphaKeys[i - 1].alpha, alphaKeys[i].alpha, factor); + } + } + var lastIndex = length - 1; + if (approx(time, alphaKeys[lastIndex].time, EPSILON$3)) { + return alphaKeys[lastIndex].alpha; + } else if (time < alphaKeys[0].time) { + return lerp(basicAlpha, alphaKeys[0].alpha, time / alphaKeys[0].time); + } else if (time > alphaKeys[lastIndex].time) { + return lerp(alphaKeys[lastIndex].alpha, basicAlpha, (time - alphaKeys[lastIndex].time) / (1 - alphaKeys[lastIndex].time)); + } + return 255; + } else if (length === 1) { + return alphaKeys[0].alpha; + } else { + return 255; + } + }; + return Gradient; + }()); + Gradient.Mode = Mode$1; + CCClass.fastDefine('cc.Gradient', Gradient, { + colorKeys: [], + alphaKeys: [], + mode: Mode$1.Blend + }); + CCClass.Attr.setClassAttr(Gradient, 'colorKeys', 'visible', true); + CCClass.Attr.setClassAttr(Gradient, 'alphaKeys', 'visible', true); + CCClass.Attr.setClassAttr(Gradient, 'mode', 'visible', true); + + var LOOK_FORWARD = 3; + var Keyframe = function Keyframe() { + this.time = 0; + this.value = 0; + this.inTangent = 0; + this.outTangent = 0; + }; + CCClass.fastDefine('cc.Keyframe', Keyframe, { + time: 0, + value: 0, + inTangent: 0, + outTangent: 0 + }); + var OptimizedKey = function () { + function OptimizedKey() { + this.index = void 0; + this.time = void 0; + this.endTime = void 0; + this.coefficient = void 0; + this.index = -1; + this.time = 0; + this.endTime = 0; + this.coefficient = new Float32Array(4); + } + var _proto = OptimizedKey.prototype; + _proto.evaluate = function evaluate(T) { + var t = T - this.time; + return evalOptCurve(t, this.coefficient); + }; + return OptimizedKey; + }(); + function evalOptCurve(t, coefs) { + return t * (t * (t * coefs[0] + coefs[1]) + coefs[2]) + coefs[3]; + } + var AnimationCurve = function () { + function AnimationCurve(keyFrames) { + if (keyFrames === void 0) { + keyFrames = null; + } + this._curve = void 0; + this.cachedKey = void 0; + if (keyFrames instanceof RealCurve) { + this._curve = keyFrames; + } else { + var curve = new RealCurve(); + this._curve = curve; + curve.preExtrapolation = ExtrapolationMode.LOOP; + curve.postExtrapolation = ExtrapolationMode.CLAMP; + if (!keyFrames) { + curve.assignSorted([[0.0, { + interpolationMode: RealInterpolationMode.CUBIC, + value: 1.0 + }], [1.0, { + interpolationMode: RealInterpolationMode.CUBIC, + value: 1.0 + }]]); + } else { + curve.assignSorted(keyFrames.map(function (legacyKeyframe) { + return [legacyKeyframe.time, { + interpolationMode: RealInterpolationMode.CUBIC, + value: legacyKeyframe.value, + leftTangent: legacyKeyframe.inTangent, + rightTangent: legacyKeyframe.outTangent + }]; + })); + } + } + this.cachedKey = new OptimizedKey(); + } + var _proto2 = AnimationCurve.prototype; + _proto2.addKey = function addKey(keyFrame) { + if (!keyFrame) { + this._curve.clear(); + } else { + this._curve.addKeyFrame(keyFrame.time, { + interpolationMode: RealInterpolationMode.CUBIC, + value: keyFrame.value, + leftTangent: keyFrame.inTangent, + rightTangent: keyFrame.outTangent + }); + } + }; + _proto2.evaluate_slow = function evaluate_slow(time) { + return this._curve.evaluate(time); + }; + _proto2.evaluate = function evaluate(time) { + var cachedKey = this.cachedKey, + curve = this._curve; + var nKeyframes = curve.keyFramesCount; + var lastKeyframeIndex = nKeyframes - 1; + var wrappedTime = time; + var extrapolationMode = time < 0 ? curve.preExtrapolation : curve.postExtrapolation; + var startTime = curve.getKeyframeTime(0); + var endTime = curve.getKeyframeTime(lastKeyframeIndex); + switch (extrapolationMode) { + case ExtrapolationMode.LOOP: + wrappedTime = repeat$1(time - startTime, endTime - startTime) + startTime; + break; + case ExtrapolationMode.PING_PONG: + wrappedTime = pingPong(time - startTime, endTime - startTime) + startTime; + break; + case ExtrapolationMode.CLAMP: + default: + wrappedTime = clamp$1(time, startTime, endTime); + break; + } + if (wrappedTime >= cachedKey.time && wrappedTime < cachedKey.endTime) { + return cachedKey.evaluate(wrappedTime); + } + var leftIndex = this.findIndex(cachedKey, wrappedTime); + var rightIndex = Math.min(leftIndex + 1, lastKeyframeIndex); + this.calcOptimizedKey(cachedKey, leftIndex, rightIndex); + return cachedKey.evaluate(wrappedTime); + }; + _proto2.calcOptimizedKey = function calcOptimizedKey(optKey, leftIndex, rightIndex) { + var lhsTime = this._curve.getKeyframeTime(leftIndex); + var rhsTime = this._curve.getKeyframeTime(rightIndex); + var _this$_curve$getKeyfr = this._curve.getKeyframeValue(leftIndex), + lhsValue = _this$_curve$getKeyfr.value, + lhsOutTangent = _this$_curve$getKeyfr.leftTangent; + var _this$_curve$getKeyfr2 = this._curve.getKeyframeValue(rightIndex), + rhsValue = _this$_curve$getKeyfr2.value, + rhsInTangent = _this$_curve$getKeyfr2.rightTangent; + optKey.index = leftIndex; + optKey.time = lhsTime; + optKey.endTime = rhsTime; + var dx = rhsTime - lhsTime; + var dy = rhsValue - lhsValue; + var length = 1 / (dx * dx); + var d1 = lhsOutTangent * dx; + var d2 = rhsInTangent * dx; + optKey.coefficient[0] = (d1 + d2 - dy - dy) * length / dx; + optKey.coefficient[1] = (dy + dy + dy - d1 - d1 - d2) * length; + optKey.coefficient[2] = lhsOutTangent; + optKey.coefficient[3] = lhsValue; + }; + _proto2.findIndex = function findIndex(optKey, t) { + var curve = this._curve; + var nKeyframes = curve.keyFramesCount; + var cachedIndex = optKey.index; + if (cachedIndex !== -1) { + var cachedTime = curve.getKeyframeTime(cachedIndex); + if (t > cachedTime) { + for (var i = 0; i < LOOK_FORWARD; i++) { + var currIndex = cachedIndex + i; + if (currIndex + 1 < nKeyframes && curve.getKeyframeTime(currIndex + 1) > t) { + return currIndex; + } + } + } else { + for (var _i = 0; _i < LOOK_FORWARD; _i++) { + var _currIndex = cachedIndex - _i; + if (_currIndex >= 0 && curve.getKeyframeTime(_currIndex - 1) <= t) { + return _currIndex - 1; + } + } + } + } + var left = 0; + var right = nKeyframes; + var mid; + while (right - left > 1) { + mid = Math.floor((left + right) / 2); + if (curve.getKeyframeTime(mid) >= t) { + right = mid; + } else { + left = mid; + } + } + return left; + }; + _createClass(AnimationCurve, [{ + key: "_internalCurve", + get: function get() { + return this._curve; + } + }, { + key: "keyFrames", + get: function get() { + return Array.from(this._curve.keyframes()).map(function (_ref) { + var time = _ref[0], + value = _ref[1]; + var legacyKeyframe = new Keyframe(); + legacyKeyframe.time = time; + legacyKeyframe.value = value.value; + legacyKeyframe.inTangent = value.leftTangent; + legacyKeyframe.outTangent = value.rightTangent; + return legacyKeyframe; + }); + }, + set: function set(value) { + this._curve.assignSorted(value.map(function (legacyCurve) { + return [legacyCurve.time, { + interpolationMode: RealInterpolationMode.CUBIC, + value: legacyCurve.value, + leftTangent: legacyCurve.inTangent, + rightTangent: legacyCurve.outTangent + }]; + })); + } + }, { + key: "preWrapMode", + get: function get() { + return toLegacyWrapMode(this._curve.preExtrapolation); + }, + set: function set(value) { + this._curve.preExtrapolation = fromLegacyWrapMode(value); + } + }, { + key: "postWrapMode", + get: function get() { + return toLegacyWrapMode(this._curve.postExtrapolation); + }, + set: function set(value) { + this._curve.postExtrapolation = fromLegacyWrapMode(value); + } + }]); + return AnimationCurve; + }(); + AnimationCurve.defaultKF = [{ + time: 0, + value: 1, + inTangent: 0, + outTangent: 0 + }, { + time: 1, + value: 1, + inTangent: 0, + outTangent: 0 + }]; + CCClass.fastDefine('cc.AnimationCurve', AnimationCurve, { + _curve: null + }); + var WrapModeMask; + (function (WrapModeMask) { + WrapModeMask[WrapModeMask["Default"] = 0] = "Default"; + WrapModeMask[WrapModeMask["Normal"] = 1] = "Normal"; + WrapModeMask[WrapModeMask["Loop"] = 2] = "Loop"; + WrapModeMask[WrapModeMask["ShouldWrap"] = 4] = "ShouldWrap"; + WrapModeMask[WrapModeMask["Clamp"] = 8] = "Clamp"; + WrapModeMask[WrapModeMask["PingPong"] = 22] = "PingPong"; + WrapModeMask[WrapModeMask["Reverse"] = 36] = "Reverse"; + })(WrapModeMask || (WrapModeMask = {})); + function fromLegacyWrapMode(legacyWrapMode) { + switch (legacyWrapMode) { + default: + case WrapModeMask.Default: + case WrapModeMask.Normal: + case WrapModeMask.Clamp: + return ExtrapolationMode.CLAMP; + case WrapModeMask.PingPong: + return ExtrapolationMode.PING_PONG; + case WrapModeMask.Loop: + return ExtrapolationMode.LOOP; + } + } + function toLegacyWrapMode(extrapolationMode) { + switch (extrapolationMode) { + default: + case ExtrapolationMode.LINEAR: + case ExtrapolationMode.CLAMP: + return WrapModeMask.Clamp; + case ExtrapolationMode.PING_PONG: + return WrapModeMask.PingPong; + case ExtrapolationMode.LOOP: + return WrapModeMask.Loop; + } + } + function constructLegacyCurveAndConvert() { + var curve = new RealCurve(); + curve.assignSorted([[0.0, { + interpolationMode: RealInterpolationMode.CUBIC, + value: 1.0 + }], [1.0, { + interpolationMode: RealInterpolationMode.CUBIC, + value: 1.0 + }]]); + return curve; + } + + var SplineMode; + (function (SplineMode) { + SplineMode[SplineMode["LINEAR"] = 0] = "LINEAR"; + SplineMode[SplineMode["BEZIER"] = 1] = "BEZIER"; + SplineMode[SplineMode["CATMULL_ROM"] = 2] = "CATMULL_ROM"; + })(SplineMode || (SplineMode = {})); + var SPLINE_WHOLE_INDEX = 0xffffffff; + var _v0 = new Vec3(); + var _v1 = new Vec3(); + var _v2 = new Vec3(); + var _v3$4 = new Vec3(); + var Spline = function () { + function Spline(mode, knots) { + if (mode === void 0) { + mode = SplineMode.CATMULL_ROM; + } + if (knots === void 0) { + knots = []; + } + this._type = void 0; + this._mode = SplineMode.CATMULL_ROM; + this._knots = []; + this._type = enums.SHAPE_SPLINE; + this._mode = mode; + for (var i = 0; i < knots.length; i++) { + this._knots[i] = new Vec3(knots[i]); + } + } + Spline.create = function create(mode, knots) { + if (knots === void 0) { + knots = []; + } + return new Spline(mode, knots); + }; + Spline.clone = function clone(s) { + return new Spline(s.mode, s.knots); + }; + Spline.copy = function copy(out, s) { + out._mode = s.mode; + out._knots.length = 0; + var knots = s.knots; + var length = knots.length; + for (var i = 0; i < length; i++) { + out._knots[i] = new Vec3(knots[i]); + } + return out; + }; + var _proto = Spline.prototype; + _proto.setModeAndKnots = function setModeAndKnots(mode, knots) { + this._mode = mode; + this._knots.length = 0; + for (var i = 0; i < knots.length; i++) { + this._knots[i] = new Vec3(knots[i]); + } + }; + _proto.clearKnots = function clearKnots() { + this._knots.length = 0; + }; + _proto.getKnotCount = function getKnotCount() { + return this._knots.length; + }; + _proto.addKnot = function addKnot(knot) { + this._knots.push(new Vec3(knot)); + }; + _proto.insertKnot = function insertKnot(index, knot) { + var item = new Vec3(knot); + if (index >= this._knots.length) { + this._knots.push(item); + return; + } + this._knots.splice(index, 0, item); + }; + _proto.removeKnot = function removeKnot(index) { + assertIsTrue(index >= 0 && index < this._knots.length, 'Spline: invalid index'); + this._knots.splice(index, 1); + }; + _proto.setKnot = function setKnot(index, knot) { + assertIsTrue(index >= 0 && index < this._knots.length, 'Spline: invalid index'); + this._knots[index].set(knot); + }; + _proto.getKnot = function getKnot(index) { + assertIsTrue(index >= 0 && index < this._knots.length, 'Spline: invalid index'); + return this._knots[index]; + }; + _proto.getPoint = function getPoint(t, index) { + if (index === void 0) { + index = SPLINE_WHOLE_INDEX; + } + t = clamp$1(t, 0.0, 1.0); + var segments = this.getSegments(); + if (segments === 0) { + return new Vec3(0.0, 0.0, 0.0); + } + if (index === SPLINE_WHOLE_INDEX) { + var deltaT = 1.0 / segments; + index = Math.floor(t / deltaT); + t = t % deltaT / deltaT; + } + if (index >= segments) { + return new Vec3(this._knots[this._knots.length - 1]); + } + switch (this._mode) { + case SplineMode.LINEAR: + return Spline.calcLinear(this._knots[index], this._knots[index + 1], t); + case SplineMode.BEZIER: + return Spline.calcBezier(this._knots[index * 4], this._knots[index * 4 + 1], this._knots[index * 4 + 2], this._knots[index * 4 + 3], t); + case SplineMode.CATMULL_ROM: + { + var v0 = index > 0 ? this._knots[index - 1] : this._knots[index]; + var v3 = index + 2 < this._knots.length ? this._knots[index + 2] : this._knots[index + 1]; + return Spline.calcCatmullRom(v0, this._knots[index], this._knots[index + 1], v3, t); + } + default: + return new Vec3(0.0, 0.0, 0.0); + } + }; + _proto.getPoints = function getPoints(num, index) { + if (index === void 0) { + index = SPLINE_WHOLE_INDEX; + } + if (num === 0) { + return []; + } + if (num === 1) { + var point = this.getPoint(0.0, index); + return [point]; + } + var points = []; + var deltaT = 1.0 / (num - 1.0); + for (var i = 0; i < num; i++) { + var t = i * deltaT; + var _point = this.getPoint(t, index); + points.push(_point); + } + return points; + }; + _proto.getSegments = function getSegments() { + var count = this._knots.length; + switch (this._mode) { + case SplineMode.LINEAR: + case SplineMode.CATMULL_ROM: + if (count < 2) { + warnID(14300); + return 0; + } + return count - 1; + case SplineMode.BEZIER: + if (count < 4 || count % 4 != 0) { + warnID(14301); + return 0; + } + return count / 4; + default: + assertIsTrue(false, 'Spline error: invalid mode'); + } + }; + Spline.calcLinear = function calcLinear(v0, v1, t) { + var result = new Vec3(); + Vec3.multiplyScalar(_v0, v0, 1.0 - t); + Vec3.multiplyScalar(_v1, v1, t); + Vec3.add(result, _v0, _v1); + return result; + }; + Spline.calcBezier = function calcBezier(v0, v1, v2, v3, t) { + var result = new Vec3(); + var s = 1.0 - t; + Vec3.multiplyScalar(_v0, v0, s * s * s); + Vec3.multiplyScalar(_v1, v1, 3.0 * t * s * s); + Vec3.multiplyScalar(_v2, v2, 3.0 * t * t * s); + Vec3.multiplyScalar(_v3$4, v3, t * t * t); + Vec3.add(_v0, _v0, _v1); + Vec3.add(_v2, _v2, _v3$4); + Vec3.add(result, _v0, _v2); + return result; + }; + Spline.calcCatmullRom = function calcCatmullRom(v0, v1, v2, v3, t) { + var result = new Vec3(); + var t2 = t * t; + var t3 = t2 * t; + Vec3.multiplyScalar(_v0, v0, -0.5 * t3 + t2 - 0.5 * t); + Vec3.multiplyScalar(_v1, v1, 1.5 * t3 - 2.5 * t2 + 1.0); + Vec3.multiplyScalar(_v2, v2, -1.5 * t3 + 2.0 * t2 + 0.5 * t); + Vec3.multiplyScalar(_v3$4, v3, 0.5 * t3 - 0.5 * t2); + Vec3.add(_v0, _v0, _v1); + Vec3.add(_v2, _v2, _v3$4); + Vec3.add(result, _v0, _v2); + return result; + }; + _createClass(Spline, [{ + key: "type", + get: function get() { + return this._type; + } + }, { + key: "mode", + get: function get() { + return this._mode; + } + }, { + key: "knots", + get: function get() { + return this._knots; + } + }]); + return Spline; + }(); + + var ERaycastMode; + (function (ERaycastMode) { + ERaycastMode[ERaycastMode["ALL"] = 0] = "ALL"; + ERaycastMode[ERaycastMode["CLOSEST"] = 1] = "CLOSEST"; + ERaycastMode[ERaycastMode["ANY"] = 2] = "ANY"; + })(ERaycastMode || (ERaycastMode = {})); + + replaceProperty(intersect, 'intersect', [{ + name: 'ray_aabb', + newName: 'rayAABB' + }, { + name: 'ray_plane', + newName: 'rayPlane' + }, { + name: 'ray_triangle', + newName: 'rayTriangle' + }, { + name: 'ray_sphere', + newName: 'raySphere' + }, { + name: 'ray_obb', + newName: 'rayOBB' + }, { + name: 'ray_capsule', + newName: 'rayCapsule' + }, { + name: 'ray_subMesh', + newName: 'raySubMesh' + }, { + name: 'ray_mesh', + newName: 'rayMesh' + }, { + name: 'ray_model', + newName: 'rayModel' + }, { + name: 'line_plane', + newName: 'linePlane' + }, { + name: 'line_triangle', + newName: 'lineTriangle' + }, { + name: 'line_aabb', + newName: 'lineAABB' + }, { + name: 'line_obb', + newName: 'lineOBB' + }, { + name: 'line_sphere', + newName: 'lineSphere' + }, { + name: 'aabb_aabb', + newName: 'aabbWithAABB' + }, { + name: 'aabb_obb', + newName: 'aabbWithOBB' + }, { + name: 'aabb_plane', + newName: 'aabbPlane' + }, { + name: 'aabb_frustum', + newName: 'aabbFrustum' + }, { + name: 'aabbFrustum_accurate', + newName: 'aabbFrustumAccurate' + }, { + name: 'obb_point', + newName: 'obbPoint' + }, { + name: 'obb_plane', + newName: 'obbPlane' + }, { + name: 'obb_frustum', + newName: 'obbFrustum' + }, { + name: 'obbFrustum_accurate', + newName: 'obbFrustumAccurate' + }, { + name: 'obb_obb', + newName: 'obbWithOBB' + }, { + name: 'obb_capsule', + newName: 'obbCapsule' + }, { + name: 'sphere_plane', + newName: 'spherePlane' + }, { + name: 'sphere_frustum', + newName: 'sphereFrustum' + }, { + name: 'sphereFrustum_accurate', + newName: 'sphereFrustumAccurate' + }, { + name: 'sphere_sphere', + newName: 'sphereWithSphere' + }, { + name: 'sphere_aabb', + newName: 'sphereAABB' + }, { + name: 'sphere_obb', + newName: 'sphereOBB' + }, { + name: 'sphere_capsule', + newName: 'sphereCapsule' + }, { + name: 'capsule_capsule', + newName: 'capsuleWithCapsule' + }]); + function deprecatedClassMessage(oldClassName, newClassName) { + console.warn(oldClassName + " is deprecated, please use " + newClassName + " instead."); + } + var line = function (_Line) { + _inheritsLoose(line, _Line); + function line() { + var _this; + _this = _Line.call(this) || this; + deprecatedClassMessage('line', 'Line'); + return _this; + } + return line; + }(Line); + var plane = function (_Plane) { + _inheritsLoose(plane, _Plane); + function plane() { + var _this2; + _this2 = _Plane.call(this) || this; + deprecatedClassMessage('plane', 'Plane'); + return _this2; + } + return plane; + }(Plane); + var ray = function (_Ray) { + _inheritsLoose(ray, _Ray); + function ray() { + var _this3; + _this3 = _Ray.call(this) || this; + deprecatedClassMessage('ray', 'Ray'); + return _this3; + } + return ray; + }(Ray); + var triangle = function (_Triangle) { + _inheritsLoose(triangle, _Triangle); + function triangle() { + var _this4; + _this4 = _Triangle.call(this) || this; + deprecatedClassMessage('triangle', 'Triangle'); + return _this4; + } + return triangle; + }(Triangle); + var sphere = function (_Sphere) { + _inheritsLoose(sphere, _Sphere); + function sphere() { + var _this5; + _this5 = _Sphere.call(this) || this; + deprecatedClassMessage('sphere', 'Sphere'); + return _this5; + } + return sphere; + }(Sphere); + var aabb = function (_AABB) { + _inheritsLoose(aabb, _AABB); + function aabb() { + var _this6; + _this6 = _AABB.call(this) || this; + deprecatedClassMessage('aabb', 'AABB'); + return _this6; + } + return aabb; + }(AABB); + var obb = function (_OBB) { + _inheritsLoose(obb, _OBB); + function obb() { + var _this7; + _this7 = _OBB.call(this) || this; + deprecatedClassMessage('obb', 'OBB'); + return _this7; + } + return obb; + }(OBB); + var capsule = function (_Capsule) { + _inheritsLoose(capsule, _Capsule); + function capsule() { + var _this8; + _this8 = _Capsule.call(this) || this; + deprecatedClassMessage('capsule', 'Capsule'); + return _this8; + } + return capsule; + }(Capsule); + var frustum = function (_Frustum) { + _inheritsLoose(frustum, _Frustum); + function frustum() { + var _this9; + _this9 = _Frustum.call(this) || this; + deprecatedClassMessage('frustum', 'Frustum'); + return _this9; + } + return frustum; + }(Frustum); + + var geometry = /*#__PURE__*/Object.freeze({ + __proto__: null, + distance: distance, + enums: enums, + intersect: intersect, + Line: Line, + Plane: Plane, + Ray: Ray, + Triangle: Triangle, + Sphere: Sphere, + AABB: AABB, + OBB: OBB, + Capsule: Capsule, + Frustum: Frustum, + Keyframe: Keyframe, + AnimationCurve: AnimationCurve, + get WrapModeMask () { return WrapModeMask; }, + get SplineMode () { return SplineMode; }, + Spline: Spline, + constructLegacyCurveAndConvert: constructLegacyCurveAndConvert, + OptimizedKey: OptimizedKey, + evalOptCurve: evalOptCurve, + get ERaycastMode () { return ERaycastMode; }, + line: line, + plane: plane, + ray: ray, + triangle: triangle, + sphere: sphere, + aabb: aabb, + obb: obb, + capsule: capsule, + frustum: frustum + }); + exports('an', geometry); + + var ScalableContainer = function () { + function ScalableContainer() { + this._poolHandle = -1; + scalableContainerManager.addContainer(this); + } + var _proto = ScalableContainer.prototype; + _proto.destroy = function destroy() { + scalableContainerManager.removeContainer(this); + }; + return ScalableContainer; + }(); + var ScalableContainerManager = function () { + function ScalableContainerManager() { + this._pools = []; + this._lastShrinkPassed = 0; + this.shrinkTimeSpan = 5; + } + var _proto2 = ScalableContainerManager.prototype; + _proto2.addContainer = function addContainer(pool) { + if (pool._poolHandle !== -1) return; + pool._poolHandle = this._pools.length; + this._pools.push(pool); + }; + _proto2.removeContainer = function removeContainer(pool) { + if (pool._poolHandle === -1) return; + this._pools[this._pools.length - 1]._poolHandle = pool._poolHandle; + fastRemoveAt$2(this._pools, pool._poolHandle); + pool._poolHandle = -1; + }; + _proto2.tryShrink = function tryShrink() { + for (var i = 0; i < this._pools.length; i++) { + this._pools[i].tryShrink(); + } + }; + _proto2.update = function update(dt) { + this._lastShrinkPassed += dt; + if (this._lastShrinkPassed > this.shrinkTimeSpan) { + this.tryShrink(); + this._lastShrinkPassed -= this.shrinkTimeSpan; + } + }; + return ScalableContainerManager; + }(); + var scalableContainerManager = new ScalableContainerManager(); + + var Pool = exports('ba', function (_ScalableContainer) { + _inheritsLoose(Pool, _ScalableContainer); + function Pool(ctor, elementsPerBatch, dtor) { + var _this; + _this = _ScalableContainer.call(this) || this; + _this._ctor = void 0; + _this._elementsPerBatch = void 0; + _this._nextAvail = void 0; + _this._freePool = []; + _this._dtor = void 0; + _this._ctor = ctor; + _this._dtor = dtor || null; + _this._elementsPerBatch = Math.max(elementsPerBatch, 1); + _this._nextAvail = _this._elementsPerBatch - 1; + for (var i = 0; i < _this._elementsPerBatch; ++i) { + _this._freePool.push(ctor()); + } + return _this; + } + var _proto = Pool.prototype; + _proto.alloc = function alloc() { + if (this._nextAvail < 0) { + this._freePool.length = this._elementsPerBatch; + for (var i = 0; i < this._elementsPerBatch; i++) { + this._freePool[i] = this._ctor(); + } + this._nextAvail = this._elementsPerBatch - 1; + } + return this._freePool[this._nextAvail--]; + }; + _proto.free = function free(obj) { + this._freePool[++this._nextAvail] = obj; + }; + _proto.freeArray = function freeArray(objs) { + this._freePool.length = this._nextAvail + 1; + Array.prototype.push.apply(this._freePool, objs); + this._nextAvail += objs.length; + }; + _proto.tryShrink = function tryShrink() { + if (this._nextAvail >> 1 > this._elementsPerBatch) { + if (this._dtor) { + for (var i = this._nextAvail >> 1; i <= this._nextAvail; i++) { + this._dtor(this._freePool[i]); + } + } + this._freePool.length = this._nextAvail >> 1; + this._nextAvail = this._freePool.length - 1; + } + }; + _proto.destroy = function destroy() { + var dtor = arguments.length > 0 ? arguments[0] : null; + if (dtor) { + warnID(14100); + } + var readDtor = dtor || this._dtor; + if (readDtor) { + for (var i = 0; i <= this._nextAvail; i++) { + readDtor(this._freePool[i]); + } + } + this._freePool.length = 0; + this._nextAvail = -1; + _ScalableContainer.prototype.destroy.call(this); + }; + return Pool; + }(ScalableContainer)); + + var RecyclePool = exports('bb', function (_ScalableContainer) { + _inheritsLoose(RecyclePool, _ScalableContainer); + function RecyclePool(fn, size, dtor) { + var _this; + _this = _ScalableContainer.call(this) || this; + _this._fn = void 0; + _this._dtor = null; + _this._count = 0; + _this._data = void 0; + _this._initSize = 0; + _this._fn = fn; + _this._dtor = dtor || null; + _this._data = new Array(size); + _this._initSize = size; + for (var i = 0; i < size; ++i) { + _this._data[i] = fn(); + } + return _this; + } + var _proto = RecyclePool.prototype; + _proto.reset = function reset() { + this._count = 0; + }; + _proto.resize = function resize(size) { + if (size > this._data.length) { + for (var i = this._data.length; i < size; ++i) { + this._data[i] = this._fn(); + } + } + }; + _proto.add = function add() { + if (this._count >= this._data.length) { + this.resize(this._data.length << 1); + } + return this._data[this._count++]; + }; + _proto.destroy = function destroy() { + if (this._dtor) { + for (var i = 0; i < this._data.length; i++) { + this._dtor(this._data[i]); + } + } + this._data.length = 0; + this._count = 0; + _ScalableContainer.prototype.destroy.call(this); + }; + _proto.tryShrink = function tryShrink() { + if (this._data.length >> 2 > this._count) { + var length = Math.max(this._initSize, this._data.length >> 1); + if (this._dtor) { + for (var i = length; i < this._data.length; i++) { + this._dtor(this._data[i]); + } + } + this._data.length = length; + } + }; + _proto.removeAt = function removeAt(idx) { + if (idx >= this._count) { + return; + } + var last = this._count - 1; + var tmp = this._data[idx]; + this._data[idx] = this._data[last]; + this._data[last] = tmp; + this._count -= 1; + }; + _createClass(RecyclePool, [{ + key: "length", + get: function get() { + return this._count; + } + }, { + key: "data", + get: function get() { + return this._data; + } + }]); + return RecyclePool; + }(ScalableContainer)); + + var CachedArray = exports('bc', function (_ScalableContainer) { + _inheritsLoose(CachedArray, _ScalableContainer); + function CachedArray(length, compareFn) { + var _this; + _this = _ScalableContainer.call(this) || this; + _this.array = void 0; + _this.length = 0; + _this._compareFn = void 0; + _this._initSize = 0; + _this.array = new Array(length); + _this._initSize = length; + _this.length = 0; + _this._compareFn = compareFn; + return _this; + } + var _proto = CachedArray.prototype; + _proto.push = function push(item) { + this.array[this.length++] = item; + }; + _proto.pop = function pop() { + return this.array[--this.length]; + }; + _proto.get = function get(idx) { + return this.array[idx]; + }; + _proto.clear = function clear() { + this.length = 0; + }; + _proto.destroy = function destroy() { + this.length = 0; + this.array.length = 0; + _ScalableContainer.prototype.destroy.call(this); + }; + _proto.tryShrink = function tryShrink() { + if (this.array.length >> 2 > this.length) { + this.array.length = Math.max(this._initSize, this.array.length >> 1); + } + }; + _proto.sort = function sort() { + this.array.length = this.length; + this.array.sort(this._compareFn); + }; + _proto.concat = function concat(array) { + for (var i = 0; i < array.length; ++i) { + this.array[this.length++] = array[i]; + } + }; + _proto.fastRemove = function fastRemove(idx) { + if (idx >= this.length || idx < 0) { + return; + } + var last = --this.length; + this.array[idx] = this.array[last]; + }; + _proto.indexOf = function indexOf(val) { + for (var i = 0, len = this.length; i < len; ++i) { + if (this.array[i] === val) { + return i; + } + } + return -1; + }; + return CachedArray; + }(ScalableContainer)); + + var index$4 = /*#__PURE__*/Object.freeze({ + __proto__: null, + Pool: Pool, + RecyclePool: RecyclePool, + CachedArray: CachedArray + }); + exports('am', index$4); + + var System = exports('cd', function () { + function System() { + this._id = ''; + this._priority = 0; + this._executeInEditMode = false; + } + System.sortByPriority = function sortByPriority(a, b) { + if (a._priority < b._priority) { + return 1; + } else if (a._priority > b.priority) { + return -1; + } else { + return 0; + } + }; + var _proto = System.prototype; + _proto.init = function init() {}; + _proto.update = function update(dt) {}; + _proto.postUpdate = function postUpdate(dt) {}; + _proto.destroy = function destroy() {}; + _createClass(System, [{ + key: "priority", + get: function get() { + return this._priority; + }, + set: function set(value) { + this._priority = value; + } + }, { + key: "id", + get: function get() { + return this._id; + }, + set: function set(id) { + this._id = id; + } + }]); + return System; + }()); + System.Priority = Enum({ + LOW: 0, + MEDIUM: 100, + HIGH: 200, + SCHEDULER: 1 << 31 >>> 0 + }); + + var MAX_POOL_SIZE$1 = 20; + var idGenerator$3 = new IDGenerator('Scheduler'); + var ListEntry = function () { + ListEntry.get = function get(target, priority, paused, markedForDeletion) { + var result = ListEntry._listEntries.pop(); + if (result) { + result.target = target; + result.priority = priority; + result.paused = paused; + result.markedForDeletion = markedForDeletion; + } else { + result = new ListEntry(target, priority, paused, markedForDeletion); + } + return result; + }; + ListEntry.put = function put(entry) { + if (ListEntry._listEntries.length < MAX_POOL_SIZE$1) { + entry.target = null; + ListEntry._listEntries.push(entry); + } + }; + function ListEntry(target, priority, paused, markedForDeletion) { + this.target = void 0; + this.priority = void 0; + this.paused = void 0; + this.markedForDeletion = void 0; + this.target = target; + this.priority = priority; + this.paused = paused; + this.markedForDeletion = markedForDeletion; + } + return ListEntry; + }(); + ListEntry._listEntries = []; + var HashUpdateEntry = function () { + HashUpdateEntry.get = function get(list, entry, target, callback) { + var result = HashUpdateEntry._hashUpdateEntries.pop(); + if (result) { + result.list = list; + result.entry = entry; + result.target = target; + result.callback = callback; + } else { + result = new HashUpdateEntry(list, entry, target, callback); + } + return result; + }; + HashUpdateEntry.put = function put(entry) { + if (HashUpdateEntry._hashUpdateEntries.length < MAX_POOL_SIZE$1) { + entry.list = entry.entry = entry.target = entry.callback = null; + HashUpdateEntry._hashUpdateEntries.push(entry); + } + }; + function HashUpdateEntry(list, entry, target, callback) { + this.list = void 0; + this.entry = void 0; + this.target = void 0; + this.callback = void 0; + this.list = list; + this.entry = entry; + this.target = target; + this.callback = callback; + } + return HashUpdateEntry; + }(); + HashUpdateEntry._hashUpdateEntries = []; + var HashTimerEntry = function () { + HashTimerEntry.get = function get(timers, target, timerIndex, currentTimer, currentTimerSalvaged, paused) { + var result = HashTimerEntry._hashTimerEntries.pop(); + if (result) { + result.timers = timers; + result.target = target; + result.timerIndex = timerIndex; + result.currentTimer = currentTimer; + result.currentTimerSalvaged = currentTimerSalvaged; + result.paused = paused; + } else { + result = new HashTimerEntry(timers, target, timerIndex, currentTimer, currentTimerSalvaged, paused); + } + return result; + }; + HashTimerEntry.put = function put(entry) { + if (HashTimerEntry._hashTimerEntries.length < MAX_POOL_SIZE$1) { + entry.timers = entry.target = entry.currentTimer = null; + HashTimerEntry._hashTimerEntries.push(entry); + } + }; + function HashTimerEntry(timers, target, timerIndex, currentTimer, currentTimerSalvaged, paused) { + this.timers = void 0; + this.target = void 0; + this.timerIndex = void 0; + this.currentTimer = void 0; + this.currentTimerSalvaged = void 0; + this.paused = void 0; + this.timers = timers; + this.target = target; + this.timerIndex = timerIndex; + this.currentTimer = currentTimer; + this.currentTimerSalvaged = currentTimerSalvaged; + this.paused = paused; + } + return HashTimerEntry; + }(); + HashTimerEntry._hashTimerEntries = []; + var CallbackTimer = function () { + CallbackTimer.get = function get() { + return CallbackTimer._timers.pop() || new CallbackTimer(); + }; + CallbackTimer.put = function put(timer) { + if (CallbackTimer._timers.length < MAX_POOL_SIZE$1 && !timer._lock) { + timer._scheduler = timer._target = timer._callback = null; + CallbackTimer._timers.push(timer); + } + }; + function CallbackTimer() { + this._lock = void 0; + this._scheduler = void 0; + this._elapsed = void 0; + this._runForever = void 0; + this._useDelay = void 0; + this._timesExecuted = void 0; + this._repeat = void 0; + this._delay = void 0; + this._interval = void 0; + this._target = void 0; + this._callback = void 0; + this._lock = false; + this._scheduler = null; + this._elapsed = -1; + this._runForever = false; + this._useDelay = false; + this._timesExecuted = 0; + this._repeat = 0; + this._delay = 0; + this._interval = 0; + this._target = null; + } + var _proto = CallbackTimer.prototype; + _proto.initWithCallback = function initWithCallback(scheduler, callback, target, seconds, repeat, delay) { + this._lock = false; + this._scheduler = scheduler; + this._target = target; + this._callback = callback; + this._elapsed = -1; + this._interval = seconds; + this._delay = delay; + this._useDelay = this._delay > 0; + this._repeat = repeat; + this._runForever = this._repeat === legacyCC.macro.REPEAT_FOREVER; + return true; + }; + _proto.getInterval = function getInterval() { + return this._interval; + }; + _proto.setInterval = function setInterval(interval) { + this._interval = interval; + }; + _proto.update = function update(dt) { + if (this._elapsed === -1) { + this._elapsed = 0; + this._timesExecuted = 0; + } else { + this._elapsed += dt; + if (this._runForever && !this._useDelay) { + if (this._elapsed >= this._interval) { + this.trigger(); + this._elapsed = 0; + } + } else { + if (this._useDelay) { + if (this._elapsed >= this._delay) { + this.trigger(); + this._elapsed -= this._delay; + this._timesExecuted += 1; + this._useDelay = false; + } + } else if (this._elapsed >= this._interval) { + this.trigger(); + this._elapsed = 0; + this._timesExecuted += 1; + } + if (this._callback && !this._runForever && this._timesExecuted > this._repeat) { + this.cancel(); + } + } + } + }; + _proto.getCallback = function getCallback() { + return this._callback; + }; + _proto.trigger = function trigger() { + if (this._target && this._callback) { + this._lock = true; + this._callback.call(this._target, this._elapsed); + this._lock = false; + } + }; + _proto.cancel = function cancel() { + if (this._scheduler && this._callback && this._target) { + this._scheduler.unschedule(this._callback, this._target); + } + }; + return CallbackTimer; + }(); + CallbackTimer._timers = []; + var Scheduler = exports('c0', function (_System) { + _inheritsLoose(Scheduler, _System); + Scheduler.enableForTarget = function enableForTarget(target) { + var found = false; + if (target.uuid) { + found = true; + } else if (target.id) { + found = true; + } + if (!found) { + target.id = idGenerator$3.getNewId(); + } + }; + function Scheduler() { + var _this; + _this = _System.call(this) || this; + _this._timeScale = void 0; + _this._updatesNegList = void 0; + _this._updates0List = void 0; + _this._updatesPosList = void 0; + _this._hashForUpdates = void 0; + _this._hashForTimers = void 0; + _this._currentTarget = void 0; + _this._currentTargetSalvaged = void 0; + _this._updateHashLocked = void 0; + _this._arrayForTimers = void 0; + _this._timeScale = 1.0; + _this._updatesNegList = []; + _this._updates0List = []; + _this._updatesPosList = []; + _this._hashForUpdates = createMap(true); + _this._hashForTimers = createMap(true); + _this._currentTarget = null; + _this._currentTargetSalvaged = false; + _this._updateHashLocked = false; + _this._arrayForTimers = []; + return _this; + } + var _proto2 = Scheduler.prototype; + _proto2.setTimeScale = function setTimeScale(timeScale) { + this._timeScale = timeScale; + }; + _proto2.getTimeScale = function getTimeScale() { + return this._timeScale; + }; + _proto2.update = function update(dt) { + this._updateHashLocked = true; + if (this._timeScale !== 1) { + dt *= this._timeScale; + } + var i; + var list; + var len; + var entry; + for (i = 0, list = this._updatesNegList, len = list.length; i < len; i++) { + entry = list[i]; + if (!entry.paused && !entry.markedForDeletion && entry.target) { + var _entry$target$update, _entry$target; + (_entry$target$update = (_entry$target = entry.target).update) === null || _entry$target$update === void 0 ? void 0 : _entry$target$update.call(_entry$target, dt); + } + } + for (i = 0, list = this._updates0List, len = list.length; i < len; i++) { + entry = list[i]; + if (!entry.paused && !entry.markedForDeletion && entry.target) { + var _entry$target$update2, _entry$target2; + (_entry$target$update2 = (_entry$target2 = entry.target).update) === null || _entry$target$update2 === void 0 ? void 0 : _entry$target$update2.call(_entry$target2, dt); + } + } + for (i = 0, list = this._updatesPosList, len = list.length; i < len; i++) { + entry = list[i]; + if (!entry.paused && !entry.markedForDeletion && entry.target) { + var _entry$target$update3, _entry$target3; + (_entry$target$update3 = (_entry$target3 = entry.target).update) === null || _entry$target$update3 === void 0 ? void 0 : _entry$target$update3.call(_entry$target3, dt); + } + } + var elt; + var arr = this._arrayForTimers; + for (i = 0; i < arr.length; i++) { + var _this$_currentTarget$; + elt = arr[i]; + this._currentTarget = elt; + this._currentTargetSalvaged = false; + if (!elt.paused && elt.timers) { + for (elt.timerIndex = 0; elt.timerIndex < elt.timers.length; ++elt.timerIndex) { + elt.currentTimer = elt.timers[elt.timerIndex]; + elt.currentTimerSalvaged = false; + elt.currentTimer.update(dt); + elt.currentTimer = null; + } + } + if (this._currentTargetSalvaged && ((_this$_currentTarget$ = this._currentTarget.timers) === null || _this$_currentTarget$ === void 0 ? void 0 : _this$_currentTarget$.length) === 0) { + this._removeHashElement(this._currentTarget); + --i; + } + } + for (i = 0, list = this._updatesNegList; i < list.length;) { + entry = list[i]; + if (entry.markedForDeletion) { + this._removeUpdateFromHash(entry); + } else { + i++; + } + } + for (i = 0, list = this._updates0List; i < list.length;) { + entry = list[i]; + if (entry.markedForDeletion) { + this._removeUpdateFromHash(entry); + } else { + i++; + } + } + for (i = 0, list = this._updatesPosList; i < list.length;) { + entry = list[i]; + if (entry.markedForDeletion) { + this._removeUpdateFromHash(entry); + } else { + i++; + } + } + this._updateHashLocked = false; + this._currentTarget = null; + }; + _proto2.schedule = function schedule(callbackTmp, targetTmp, interval, repeat, delay, paused) { + var _repeat, _delay; + var callback; + var target; + if (typeof callbackTmp !== 'function') { + warnID(1514); + callback = targetTmp; + target = callbackTmp; + } else { + callback = callbackTmp; + target = targetTmp; + } + if (arguments.length === 3 || arguments.length === 4 || arguments.length === 5) { + paused = !!repeat; + repeat = legacyCC.macro.REPEAT_FOREVER; + delay = 0; + } + assertID(Boolean(target), 1502); + var targetId = target.uuid || target.id; + if (!targetId) { + errorID(1510); + return; + } + var element = this._hashForTimers[targetId]; + if (!element) { + element = HashTimerEntry.get(null, target, 0, null, false, Boolean(paused)); + this._arrayForTimers.push(element); + this._hashForTimers[targetId] = element; + } else if (element.paused !== paused) { + warnID(1511); + } + var timer; + var i; + if (element.timers == null) { + element.timers = []; + } else { + for (i = 0; i < element.timers.length; ++i) { + timer = element.timers[i]; + if (timer && callback === timer.getCallback()) { + logID(1507, timer.getInterval(), interval); + timer.setInterval(interval); + return; + } + } + } + timer = CallbackTimer.get(); + timer.initWithCallback(this, callback, target, interval, (_repeat = repeat) !== null && _repeat !== void 0 ? _repeat : 0, (_delay = delay) !== null && _delay !== void 0 ? _delay : 0); + element.timers.push(timer); + if (this._currentTarget === element && this._currentTargetSalvaged) { + this._currentTargetSalvaged = false; + } + }; + _proto2.scheduleUpdate = function scheduleUpdate(target, priority, paused) { + var targetId = target.uuid || target.id; + if (!targetId) { + errorID(1510); + return; + } + var hashElement = this._hashForUpdates[targetId]; + if (hashElement && hashElement.entry) { + if (hashElement.entry.priority !== priority) { + if (this._updateHashLocked) { + logID(1506); + hashElement.entry.markedForDeletion = false; + hashElement.entry.paused = paused; + return; + } else { + this.unscheduleUpdate(target); + } + } else { + hashElement.entry.markedForDeletion = false; + hashElement.entry.paused = paused; + return; + } + } + var listElement = ListEntry.get(target, priority, paused, false); + var ppList; + if (priority === 0) { + ppList = this._updates0List; + this._appendIn(ppList, listElement); + } else { + ppList = priority < 0 ? this._updatesNegList : this._updatesPosList; + this._priorityIn(ppList, listElement, priority); + } + this._hashForUpdates[targetId] = HashUpdateEntry.get(ppList, listElement, target, null); + }; + _proto2.unschedule = function unschedule(callback, target) { + if (!target || !callback) { + return; + } + var targetId = target.uuid || target.id; + if (!targetId) { + errorID(1510); + return; + } + var element = this._hashForTimers[targetId]; + if (element) { + var timers = element.timers; + if (!timers) { + return; + } + for (var i = 0, li = timers.length; i < li; i++) { + var timer = timers[i]; + if (callback === timer.getCallback()) { + if (timer === element.currentTimer && !element.currentTimerSalvaged) { + element.currentTimerSalvaged = true; + } + timers.splice(i, 1); + CallbackTimer.put(timer); + if (element.timerIndex >= i) { + element.timerIndex--; + } + if (timers.length === 0) { + if (this._currentTarget === element) { + this._currentTargetSalvaged = true; + } else { + this._removeHashElement(element); + } + } + return; + } + } + } + }; + _proto2.unscheduleUpdate = function unscheduleUpdate(target) { + if (!target) { + return; + } + var targetId = target.uuid || target.id; + if (!targetId) { + errorID(1510); + return; + } + var element = this._hashForUpdates[targetId]; + if (element !== null && element !== void 0 && element.entry) { + if (this._updateHashLocked) { + element.entry.markedForDeletion = true; + } else { + this._removeUpdateFromHash(element.entry); + } + } + }; + _proto2.unscheduleAllForTarget = function unscheduleAllForTarget(target) { + if (!target) { + return; + } + var targetId = target.uuid || target.id; + if (!targetId) { + errorID(1510); + return; + } + var element = this._hashForTimers[targetId]; + if (element !== null && element !== void 0 && element.timers) { + var timers = element.timers; + if (element.currentTimer && timers.indexOf(element.currentTimer) > -1 && !element.currentTimerSalvaged) { + element.currentTimerSalvaged = true; + } + for (var i = 0, l = timers.length; i < l; i++) { + CallbackTimer.put(timers[i]); + } + timers.length = 0; + if (this._currentTarget === element) { + this._currentTargetSalvaged = true; + } else { + this._removeHashElement(element); + } + } + this.unscheduleUpdate(target); + }; + _proto2.unscheduleAll = function unscheduleAll() { + this.unscheduleAllWithMinPriority(System.Priority.SCHEDULER); + }; + _proto2.unscheduleAllWithMinPriority = function unscheduleAllWithMinPriority(minPriority) { + var i; + var element; + var arr = this._arrayForTimers; + for (i = arr.length - 1; i >= 0; i--) { + element = arr[i]; + if (element.target) { + this.unscheduleAllForTarget(element.target); + } + } + var entry; + var temp_length = 0; + if (minPriority < 0) { + for (i = 0; i < this._updatesNegList.length;) { + var _entry; + temp_length = this._updatesNegList.length; + entry = this._updatesNegList[i]; + if ((_entry = entry) !== null && _entry !== void 0 && _entry.target && entry.priority >= minPriority) { + this.unscheduleUpdate(entry.target); + } + if (temp_length === this._updatesNegList.length) { + i++; + } + } + } + if (minPriority <= 0) { + for (i = 0; i < this._updates0List.length;) { + var _entry2; + temp_length = this._updates0List.length; + entry = this._updates0List[i]; + if ((_entry2 = entry) !== null && _entry2 !== void 0 && _entry2.target) { + this.unscheduleUpdate(entry.target); + } + if (temp_length === this._updates0List.length) { + i++; + } + } + } + for (i = 0; i < this._updatesPosList.length;) { + var _entry3; + temp_length = this._updatesPosList.length; + entry = this._updatesPosList[i]; + if ((_entry3 = entry) !== null && _entry3 !== void 0 && _entry3.target && entry.priority >= minPriority) { + this.unscheduleUpdate(entry.target); + } + if (temp_length === this._updatesPosList.length) { + i++; + } + } + }; + _proto2.isScheduled = function isScheduled(callback, target) { + assertID(Boolean(callback), 1508); + assertID(Boolean(target), 1509); + var targetId = target.uuid || target.id; + if (!targetId) { + errorID(1510); + return false; + } + var element = this._hashForTimers[targetId]; + if (!element) { + return false; + } + if (element.timers == null) { + return false; + } else { + var timers = element.timers; + for (var i = 0; i < timers.length; ++i) { + var timer = timers[i]; + if (callback === timer.getCallback()) { + return true; + } + } + return false; + } + }; + _proto2.pauseAllTargets = function pauseAllTargets() { + return this.pauseAllTargetsWithMinPriority(System.Priority.SCHEDULER); + }; + _proto2.pauseAllTargetsWithMinPriority = function pauseAllTargetsWithMinPriority(minPriority) { + var idsWithSelectors = []; + var element; + var locArrayForTimers = this._arrayForTimers; + var i; + var li; + for (i = 0, li = locArrayForTimers.length; i < li; i++) { + var _element; + element = locArrayForTimers[i]; + if ((_element = element) !== null && _element !== void 0 && _element.target) { + element.paused = true; + idsWithSelectors.push(element.target); + } + } + var entry; + if (minPriority < 0) { + for (i = 0; i < this._updatesNegList.length; i++) { + var _entry4; + entry = this._updatesNegList[i]; + if ((_entry4 = entry) !== null && _entry4 !== void 0 && _entry4.target) { + if (entry.priority >= minPriority) { + entry.paused = true; + idsWithSelectors.push(entry.target); + } + } + } + } + if (minPriority <= 0) { + for (i = 0; i < this._updates0List.length; i++) { + var _entry5; + entry = this._updates0List[i]; + if ((_entry5 = entry) !== null && _entry5 !== void 0 && _entry5.target) { + entry.paused = true; + idsWithSelectors.push(entry.target); + } + } + } + for (i = 0; i < this._updatesPosList.length; i++) { + var _entry6; + entry = this._updatesPosList[i]; + if ((_entry6 = entry) !== null && _entry6 !== void 0 && _entry6.target) { + if (entry.priority >= minPriority) { + entry.paused = true; + idsWithSelectors.push(entry.target); + } + } + } + return idsWithSelectors; + }; + _proto2.resumeTargets = function resumeTargets(targetsToResume) { + if (!targetsToResume) { + return; + } + for (var i = 0; i < targetsToResume.length; i++) { + this.resumeTarget(targetsToResume[i]); + } + }; + _proto2.pauseTarget = function pauseTarget(target) { + assertID(Boolean(target), 1503); + var targetId = target.uuid || target.id; + if (!targetId) { + errorID(1510); + return; + } + var element = this._hashForTimers[targetId]; + if (element) { + element.paused = true; + } + var elementUpdate = this._hashForUpdates[targetId]; + if (elementUpdate !== null && elementUpdate !== void 0 && elementUpdate.entry) { + elementUpdate.entry.paused = true; + } + }; + _proto2.resumeTarget = function resumeTarget(target) { + assertID(Boolean(target), 1504); + var targetId = target.uuid || target.id; + if (!targetId) { + errorID(1510); + return; + } + var element = this._hashForTimers[targetId]; + if (element) { + element.paused = false; + } + var elementUpdate = this._hashForUpdates[targetId]; + if (elementUpdate !== null && elementUpdate !== void 0 && elementUpdate.entry) { + elementUpdate.entry.paused = false; + } + }; + _proto2.isTargetPaused = function isTargetPaused(target) { + assertID(Boolean(target), 1505); + var targetId = target.uuid || target.id; + if (!targetId) { + errorID(1510); + return false; + } + var element = this._hashForTimers[targetId]; + if (element) { + return element.paused; + } + var elementUpdate = this._hashForUpdates[targetId]; + if (elementUpdate !== null && elementUpdate !== void 0 && elementUpdate.entry) { + return elementUpdate.entry.paused; + } + return false; + }; + _proto2._removeHashElement = function _removeHashElement(element) { + if (!element.target) { + return; + } + var targetId = element.target.uuid || element.target.id; + if (typeof targetId === 'undefined') { + return; + } + delete this._hashForTimers[targetId]; + var arr = this._arrayForTimers; + for (var i = 0, l = arr.length; i < l; i++) { + if (arr[i] === element) { + arr.splice(i, 1); + break; + } + } + HashTimerEntry.put(element); + }; + _proto2._removeUpdateFromHash = function _removeUpdateFromHash(entry) { + if (!entry.target) { + return; + } + var targetId = entry.target.uuid || entry.target.id; + if (typeof targetId === 'undefined') { + return; + } + var element = this._hashForUpdates[targetId]; + if (element) { + var list = element.list; + var listEntry = element.entry; + if (list) { + for (var i = 0, l = list.length; i < l; i++) { + if (list[i] === listEntry) { + list.splice(i, 1); + break; + } + } + } + delete this._hashForUpdates[targetId]; + if (listEntry) { + ListEntry.put(listEntry); + } + HashUpdateEntry.put(element); + } + }; + _proto2._priorityIn = function _priorityIn(ppList, listElement, priority) { + for (var i = 0; i < ppList.length; i++) { + if (priority < ppList[i].priority) { + ppList.splice(i, 0, listElement); + return; + } + } + ppList.push(listElement); + }; + _proto2._appendIn = function _appendIn(ppList, listElement) { + ppList.push(listElement); + }; + return Scheduler; + }(System)); + Scheduler.ID = 'scheduler'; + legacyCC.Scheduler = Scheduler; + + var vmath = {}; + replaceProperty(vmath, 'vmath', [{ + name: 'vec2', + newName: 'Vec2', + target: math, + targetName: 'math' + }, { + name: 'vec3', + newName: 'Vec3', + target: math, + targetName: 'math' + }, { + name: 'vec4', + newName: 'Vec4', + target: math, + targetName: 'math' + }, { + name: 'quat', + newName: 'Quat', + target: math, + targetName: 'math' + }, { + name: 'mat3', + newName: 'Mat3', + target: math, + targetName: 'math' + }, { + name: 'mat4', + newName: 'Mat4', + target: math, + targetName: 'math' + }, { + name: 'color4', + newName: 'Color', + target: math, + targetName: 'math' + }, { + name: 'rect', + newName: 'Rect', + target: math, + targetName: 'math' + }, { + name: 'approx', + newName: 'approx', + target: math, + targetName: 'math' + }, { + name: 'EPSILON', + newName: 'EPSILON', + target: math, + targetName: 'math' + }, { + name: 'equals', + newName: 'equals', + target: math, + targetName: 'math' + }, { + name: 'clamp', + newName: 'clamp', + target: math, + targetName: 'math' + }, { + name: 'clamp01', + newName: 'clamp01', + target: math, + targetName: 'math' + }, { + name: 'lerp', + newName: 'lerp', + target: math, + targetName: 'math' + }, { + name: 'toRadian', + newName: 'toRadian', + target: math, + targetName: 'math' + }, { + name: 'toDegree', + newName: 'toDegree', + target: math, + targetName: 'math' + }, { + name: 'random', + newName: 'random', + target: math, + targetName: 'math' + }, { + name: 'randomRange', + newName: 'randomRange', + target: math, + targetName: 'math' + }, { + name: 'randomRangeInt', + newName: 'randomRangeInt', + target: math, + targetName: 'math' + }, { + name: 'pseudoRandom', + newName: 'pseudoRandom', + target: math, + targetName: 'math' + }, { + name: 'pseudoRandomRangeInt', + newName: 'pseudoRandomRangeInt', + target: math, + targetName: 'math' + }, { + name: 'nextPow2', + newName: 'nextPow2', + target: math, + targetName: 'math' + }, { + name: 'repeat', + newName: 'repeat', + target: math, + targetName: 'math' + }, { + name: 'pingPong', + newName: 'pingPong', + target: math, + targetName: 'math' + }, { + name: 'inverseLerp', + newName: 'inverseLerp', + target: math, + targetName: 'math' + }]); + legacyCC.vmath = vmath; + replaceProperty(Scheduler.prototype, 'Scheduler.prototype', [{ + name: 'enableForTarget', + newName: 'enableForTarget', + target: Scheduler, + targetName: 'Scheduler' + }]); + replaceProperty(Scheduler, 'Scheduler', [{ + name: 'PRIORITY_SYSTEM', + newName: 'System.Priority.SCHEDULER', + customGetter: function customGetter() { + return System.Priority.SCHEDULER; + } + }]); + removeProperty(Scheduler, 'Scheduler', [{ + name: 'PRIORITY_NON_SYSTEM', + suggest: 'Use enum` System.Priority` instead' + }]); + + deprecateModuleExportedName({ + replaceProperty: { + since: '3.6.0', + removed: false + }, + removeProperty: { + since: '3.6.0', + removed: false + }, + markAsWarning: { + since: '3.6.0', + removed: false + }, + setDefaultLogTimes: { + since: '3.6.0', + removed: false + } + }); + + var fastRemoveAt$1 = fastRemoveAt$2; + function empty() {} + var CallbackInfo = function () { + function CallbackInfo() { + this.callback = empty; + this.target = undefined; + this.once = false; + } + var _proto = CallbackInfo.prototype; + _proto.set = function set(callback, target, once) { + this.callback = callback || empty; + this.target = target; + this.once = !!once; + }; + _proto.reset = function reset() { + this.target = undefined; + this.callback = empty; + this.once = false; + }; + _proto.check = function check() { + if (isCCObject(this.target) && !isValid(this.target, true)) { + return false; + } else { + return true; + } + }; + return CallbackInfo; + }(); + var callbackInfoPool = new Pool(function () { + return new CallbackInfo(); + }, 32); + var CallbackList = function () { + function CallbackList() { + this.callbackInfos = []; + this.isInvoking = false; + this.containCanceled = false; + } + var _proto2 = CallbackList.prototype; + _proto2.removeByCallback = function removeByCallback(cb) { + for (var i = 0; i < this.callbackInfos.length; ++i) { + var info = this.callbackInfos[i]; + if (info && info.callback === cb) { + info.reset(); + callbackInfoPool.free(info); + fastRemoveAt$1(this.callbackInfos, i); + --i; + } + } + }; + _proto2.removeByTarget = function removeByTarget(target) { + for (var i = 0; i < this.callbackInfos.length; ++i) { + var info = this.callbackInfos[i]; + if (info && info.target === target) { + info.reset(); + callbackInfoPool.free(info); + fastRemoveAt$1(this.callbackInfos, i); + --i; + } + } + }; + _proto2.cancel = function cancel(index) { + var info = this.callbackInfos[index]; + if (info) { + info.reset(); + if (this.isInvoking) { + this.callbackInfos[index] = null; + } else { + fastRemoveAt$1(this.callbackInfos, index); + } + callbackInfoPool.free(info); + } + this.containCanceled = true; + }; + _proto2.cancelAll = function cancelAll() { + for (var i = 0; i < this.callbackInfos.length; i++) { + var info = this.callbackInfos[i]; + if (info) { + info.reset(); + callbackInfoPool.free(info); + this.callbackInfos[i] = null; + } + } + this.containCanceled = true; + }; + _proto2.purgeCanceled = function purgeCanceled() { + for (var i = this.callbackInfos.length - 1; i >= 0; --i) { + var info = this.callbackInfos[i]; + if (!info) { + fastRemoveAt$1(this.callbackInfos, i); + } + } + this.containCanceled = false; + }; + _proto2.clear = function clear() { + this.cancelAll(); + this.callbackInfos.length = 0; + this.isInvoking = false; + this.containCanceled = false; + }; + return CallbackList; + }(); + var MAX_SIZE$1 = 16; + var callbackListPool = new Pool(function () { + return new CallbackList(); + }, MAX_SIZE$1); + var CallbacksInvoker = exports('cF', function () { + function CallbacksInvoker() { + this._callbackTable = createMap(true); + this._offCallback = void 0; + } + var _proto3 = CallbacksInvoker.prototype; + _proto3.on = function on(key, callback, target, once) { + if (!this.hasEventListener(key, callback, target)) { + var list = this._callbackTable[key]; + if (!list) { + list = this._callbackTable[key] = callbackListPool.alloc(); + } + var info = callbackInfoPool.alloc(); + info.set(callback, target, once); + list.callbackInfos.push(info); + } + return callback; + }; + _proto3.hasEventListener = function hasEventListener(key, callback, target) { + var list = this._callbackTable && this._callbackTable[key]; + if (!list) { + return false; + } + var infos = list.callbackInfos; + if (!callback) { + if (list.isInvoking) { + for (var i = 0; i < infos.length; ++i) { + if (infos[i]) { + return true; + } + } + return false; + } else { + return infos.length > 0; + } + } + for (var _i = 0; _i < infos.length; ++_i) { + var info = infos[_i]; + if (info && info.check() && info.callback === callback && info.target === target) { + return true; + } + } + return false; + }; + _proto3.removeAll = function removeAll(keyOrTarget) { + var type = typeof keyOrTarget; + if (type === 'string' || type === 'number') { + var list = this._callbackTable && this._callbackTable[keyOrTarget]; + if (list) { + if (list.isInvoking) { + list.cancelAll(); + } else { + list.clear(); + callbackListPool.free(list); + delete this._callbackTable[keyOrTarget]; + } + } + } else if (keyOrTarget) { + for (var key in this._callbackTable) { + var _list = this._callbackTable[key]; + if (_list.isInvoking) { + var infos = _list.callbackInfos; + for (var i = 0; i < infos.length; ++i) { + var info = infos[i]; + if (info && info.target === keyOrTarget) { + _list.cancel(i); + } + } + } else { + _list.removeByTarget(keyOrTarget); + } + } + } + }; + _proto3.off = function off(key, callback, target) { + var _this$_offCallback; + var list = this._callbackTable && this._callbackTable[key]; + if (list) { + var infos = list.callbackInfos; + if (callback) { + for (var i = 0; i < infos.length; ++i) { + var info = infos[i]; + if (info && info.callback === callback && info.target === target) { + list.cancel(i); + break; + } + } + } else { + this.removeAll(key); + } + } + (_this$_offCallback = this._offCallback) === null || _this$_offCallback === void 0 ? void 0 : _this$_offCallback.call(this); + }; + _proto3.emit = function emit(key, arg0, arg1, arg2, arg3, arg4) { + var list = this._callbackTable && this._callbackTable[key]; + if (list) { + var rootInvoker = !list.isInvoking; + list.isInvoking = true; + var infos = list.callbackInfos; + for (var i = 0, len = infos.length; i < len; ++i) { + var info = infos[i]; + if (info) { + var callback = info.callback; + var target = info.target; + if (info.once) { + this.off(key, callback, target); + } + if (!info.check()) { + this.off(key, callback, target); + } else if (target) { + callback.call(target, arg0, arg1, arg2, arg3, arg4); + } else { + callback(arg0, arg1, arg2, arg3, arg4); + } + } + } + if (rootInvoker) { + list.isInvoking = false; + if (list.containCanceled) { + list.purgeCanceled(); + } + } + } + }; + _proto3.clear = function clear() { + for (var key in this._callbackTable) { + var list = this._callbackTable[key]; + if (list) { + list.clear(); + callbackListPool.free(list); + delete this._callbackTable[key]; + } + } + }; + _proto3._registerOffCallback = function _registerOffCallback(cb) { + this._offCallback = cb; + }; + return CallbacksInvoker; + }()); + + function Eventify(base) { + var Eventified = function (_ref) { + _inheritsLoose(Eventified, _ref); + function Eventified() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _ref.call.apply(_ref, [this].concat(args)) || this; + _this._callbackTable = createMap(true); + return _this; + } + var _proto = Eventified.prototype; + _proto.once = function once(type, callback, target) { + return this.on(type, callback, target, true); + }; + _proto.targetOff = function targetOff(typeOrTarget) { + this.removeAll(typeOrTarget); + }; + return Eventified; + }(base); + var callbacksInvokerPrototype = CallbacksInvoker.prototype; + var propertyKeys = Object.getOwnPropertyNames(callbacksInvokerPrototype).concat(Object.getOwnPropertySymbols(callbacksInvokerPrototype)); + for (var iPropertyKey = 0; iPropertyKey < propertyKeys.length; ++iPropertyKey) { + var propertyKey = propertyKeys[iPropertyKey]; + if (!(propertyKey in Eventified.prototype)) { + var propertyDescriptor = Object.getOwnPropertyDescriptor(callbacksInvokerPrototype, propertyKey); + if (propertyDescriptor) { + Object.defineProperty(Eventified.prototype, propertyKey, propertyDescriptor); + } + } + } + return Eventified; + } + + var Empty = function Empty() {}; + var EventTarget = exports('bI', Eventify(Empty)); + legacyCC.EventTarget = EventTarget; + + var AsyncDelegate = exports('bK', function () { + function AsyncDelegate() { + this._delegates = []; + } + var _proto = AsyncDelegate.prototype; + _proto.add = function add(callback) { + if (!this._delegates.includes(callback)) { + this._delegates.push(callback); + } + }; + _proto.hasListener = function hasListener(callback) { + return this._delegates.includes(callback); + }; + _proto.remove = function remove(callback) { + fastRemove(this._delegates, callback); + }; + _proto.dispatch = function dispatch() { + var _arguments = arguments; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return Promise.all(this._delegates.map(function (func) { + return func.apply(void 0, _arguments); + }).filter(Boolean)); + }; + return AsyncDelegate; + }()); + + var BrowserType; + (function (BrowserType) { + BrowserType["UNKNOWN"] = "unknown"; + BrowserType["WECHAT"] = "wechat"; + BrowserType["ANDROID"] = "androidbrowser"; + BrowserType["IE"] = "ie"; + BrowserType["EDGE"] = "edge"; + BrowserType["QQ"] = "qqbrowser"; + BrowserType["MOBILE_QQ"] = "mqqbrowser"; + BrowserType["UC"] = "ucbrowser"; + BrowserType["UCBS"] = "ucbs"; + BrowserType["BROWSER_360"] = "360browser"; + BrowserType["BAIDU_APP"] = "baiduboxapp"; + BrowserType["BAIDU"] = "baidubrowser"; + BrowserType["MAXTHON"] = "maxthon"; + BrowserType["OPERA"] = "opera"; + BrowserType["OUPENG"] = "oupeng"; + BrowserType["MIUI"] = "miuibrowser"; + BrowserType["FIREFOX"] = "firefox"; + BrowserType["SAFARI"] = "safari"; + BrowserType["CHROME"] = "chrome"; + BrowserType["LIEBAO"] = "liebao"; + BrowserType["QZONE"] = "qzone"; + BrowserType["SOUGOU"] = "sogou"; + BrowserType["HUAWEI"] = "huawei"; + })(BrowserType || (BrowserType = {})); + + var Language; + (function (Language) { + Language["UNKNOWN"] = "unknown"; + Language["ENGLISH"] = "en"; + Language["CHINESE"] = "zh"; + Language["FRENCH"] = "fr"; + Language["ITALIAN"] = "it"; + Language["GERMAN"] = "de"; + Language["SPANISH"] = "es"; + Language["DUTCH"] = "du"; + Language["RUSSIAN"] = "ru"; + Language["KOREAN"] = "ko"; + Language["JAPANESE"] = "ja"; + Language["HUNGARIAN"] = "hu"; + Language["PORTUGUESE"] = "pt"; + Language["ARABIC"] = "ar"; + Language["NORWEGIAN"] = "no"; + Language["POLISH"] = "pl"; + Language["TURKISH"] = "tr"; + Language["UKRAINIAN"] = "uk"; + Language["ROMANIAN"] = "ro"; + Language["BULGARIAN"] = "bg"; + Language["HINDI"] = "hi"; + })(Language || (Language = {})); + + var NetworkType; + (function (NetworkType) { + NetworkType[NetworkType["NONE"] = 0] = "NONE"; + NetworkType[NetworkType["LAN"] = 1] = "LAN"; + NetworkType[NetworkType["WWAN"] = 2] = "WWAN"; + })(NetworkType || (NetworkType = {})); + + var OS; + (function (OS) { + OS["UNKNOWN"] = "Unknown"; + OS["IOS"] = "iOS"; + OS["ANDROID"] = "Android"; + OS["WINDOWS"] = "Windows"; + OS["LINUX"] = "Linux"; + OS["OSX"] = "OS X"; + OS["OHOS"] = "OHOS"; + OS["OPENHARMONY"] = "OpenHarmony"; + })(OS || (OS = {})); + + var Platform; + (function (Platform) { + Platform["UNKNOWN"] = "UNKNOWN"; + Platform["EDITOR_PAGE"] = "EDITOR_PAGE"; + Platform["EDITOR_CORE"] = "EDITOR_CORE"; + Platform["MOBILE_BROWSER"] = "MOBILE_BROWSER"; + Platform["DESKTOP_BROWSER"] = "DESKTOP_BROWSER"; + Platform["WIN32"] = "WIN32"; + Platform["ANDROID"] = "ANDROID"; + Platform["IOS"] = "IOS"; + Platform["MACOS"] = "MACOS"; + Platform["OHOS"] = "OHOS"; + Platform["OPENHARMONY"] = "OPENHARMONY"; + Platform["WECHAT_GAME"] = "WECHAT_GAME"; + Platform["WECHAT_MINI_PROGRAM"] = "WECHAT_MINI_PROGRAM"; + Platform["BAIDU_MINI_GAME"] = "BAIDU_MINI_GAME"; + Platform["XIAOMI_QUICK_GAME"] = "XIAOMI_QUICK_GAME"; + Platform["ALIPAY_MINI_GAME"] = "ALIPAY_MINI_GAME"; + Platform["TAOBAO_CREATIVE_APP"] = "TAOBAO_CREATIVE_APP"; + Platform["TAOBAO_MINI_GAME"] = "TAOBAO_MINI_GAME"; + Platform["BYTEDANCE_MINI_GAME"] = "BYTEDANCE_MINI_GAME"; + Platform["OPPO_MINI_GAME"] = "OPPO_MINI_GAME"; + Platform["VIVO_MINI_GAME"] = "VIVO_MINI_GAME"; + Platform["HUAWEI_QUICK_GAME"] = "HUAWEI_QUICK_GAME"; + Platform["COCOSPLAY"] = "COCOSPLAY"; + Platform["LINKSURE_MINI_GAME"] = "LINKSURE_MINI_GAME"; + Platform["QTT_MINI_GAME"] = "QTT_MINI_GAME"; + })(Platform || (Platform = {})); + + var Feature$1; + (function (Feature) { + Feature["WEBP"] = "WEBP"; + Feature["IMAGE_BITMAP"] = "IMAGE_BITMAP"; + Feature["WEB_VIEW"] = "WEB_VIEW"; + Feature["VIDEO_PLAYER"] = "VIDEO_PLAYER"; + Feature["SAFE_AREA"] = "SAFE_AREA"; + Feature["HPE"] = "HPE"; + Feature["INPUT_TOUCH"] = "INPUT_TOUCH"; + Feature["EVENT_KEYBOARD"] = "EVENT_KEYBOARD"; + Feature["EVENT_MOUSE"] = "EVENT_MOUSE"; + Feature["EVENT_TOUCH"] = "EVENT_TOUCH"; + Feature["EVENT_ACCELEROMETER"] = "EVENT_ACCELEROMETER"; + Feature["EVENT_GAMEPAD"] = "EVENT_GAMEPAD"; + Feature["EVENT_HANDLE"] = "EVENT_HANDLE"; + Feature["EVENT_HMD"] = "EVENT_HMD"; + Feature["EVENT_HANDHELD"] = "EVENT_HANDHELD"; + Feature["WASM"] = "WASM"; + })(Feature$1 || (Feature$1 = {})); + + var SystemInfo = function (_EventTarget) { + _inheritsLoose(SystemInfo, _EventTarget); + function SystemInfo() { + var _getBattery, _ref, _this$_featureMap; + var _this; + _this = _EventTarget.call(this) || this; + _this.networkType = void 0; + _this.isNative = void 0; + _this.isBrowser = void 0; + _this.isMobile = void 0; + _this.isLittleEndian = void 0; + _this.platform = void 0; + _this.language = void 0; + _this.nativeLanguage = void 0; + _this.os = void 0; + _this.osVersion = void 0; + _this.osMainVersion = void 0; + _this.browserType = void 0; + _this.browserVersion = void 0; + _this.isXR = void 0; + _this._battery = void 0; + _this._featureMap = void 0; + _this._initPromise = void 0; + var nav = window.navigator; + var ua = nav.userAgent.toLowerCase(); + (_getBattery = (_ref = nav).getBattery) === null || _getBattery === void 0 ? void 0 : _getBattery.call(_ref).then(function (battery) { + _this._battery = battery; + }); + _this.networkType = NetworkType.LAN; + _this.isNative = false; + _this.isBrowser = true; + { + _this.isMobile = /mobile|android|iphone|ipad/.test(ua); + _this.platform = _this.isMobile ? Platform.MOBILE_BROWSER : Platform.DESKTOP_BROWSER; + } + _this.isLittleEndian = function () { + var buffer = new ArrayBuffer(2); + new DataView(buffer).setInt16(0, 256, true); + return new Int16Array(buffer)[0] === 256; + }(); + var currLanguage = nav.language; + _this.nativeLanguage = currLanguage.toLowerCase(); + currLanguage = currLanguage || nav.browserLanguage; + currLanguage = currLanguage ? currLanguage.split('-')[0] : Language.ENGLISH; + _this.language = currLanguage; + var isAndroid = false; + var iOS = false; + var osVersion = ''; + var osMajorVersion = 0; + var uaResult = /android\s*(\d+(?:\.\d+)*)/i.exec(ua) || /android\s*(\d+(?:\.\d+)*)/i.exec(nav.platform); + if (uaResult) { + isAndroid = true; + osVersion = uaResult[1] || ''; + osMajorVersion = parseInt(osVersion) || 0; + } + uaResult = /(iPad|iPhone|iPod).*OS ((\d+_?){2,3})/i.exec(ua); + if (uaResult) { + iOS = true; + osVersion = uaResult[2] || ''; + osMajorVersion = parseInt(osVersion) || 0; + } else if (/(iPhone|iPad|iPod)/.exec(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints && nav.maxTouchPoints > 1) { + iOS = true; + osVersion = ''; + osMajorVersion = 0; + } + var osName = OS.UNKNOWN; + if (nav.appVersion.indexOf('Win') !== -1) { + osName = OS.WINDOWS; + } else if (iOS) { + osName = OS.IOS; + } else if (nav.appVersion.indexOf('Mac') !== -1) { + osName = OS.OSX; + } else if (nav.appVersion.indexOf('X11') !== -1 && nav.appVersion.indexOf('Linux') === -1) { + osName = OS.LINUX; + } else if (isAndroid) { + osName = OS.ANDROID; + } else if (nav.appVersion.indexOf('Linux') !== -1 || ua.indexOf('ubuntu') !== -1) { + osName = OS.LINUX; + } + _this.os = osName; + _this.osVersion = osVersion; + _this.osMainVersion = osMajorVersion; + _this.browserType = BrowserType.UNKNOWN; + var typeReg0 = /wechat|weixin|micromessenger/i; + var typeReg1 = /mqqbrowser|micromessenger|qqbrowser|sogou|qzone|liebao|maxthon|ucbs|360 aphone|360browser|baiduboxapp|baidubrowser|maxthon|mxbrowser|miuibrowser/i; + var typeReg2 = /qq|qqbrowser|ucbrowser|ubrowser|edge|HuaweiBrowser/i; + var typeReg3 = /chrome|safari|firefox|trident|opera|opr\/|oupeng/i; + var browserTypes = typeReg0.exec(ua) || typeReg1.exec(ua) || typeReg2.exec(ua) || typeReg3.exec(ua); + var browserType = browserTypes ? browserTypes[0].toLowerCase() : OS.UNKNOWN; + if (browserType === 'safari' && isAndroid) { + browserType = BrowserType.ANDROID; + } else if (browserType === 'qq' && /android.*applewebkit/i.test(ua)) { + browserType = BrowserType.ANDROID; + } + var typeMap = { + micromessenger: BrowserType.WECHAT, + wechat: BrowserType.WECHAT, + weixin: BrowserType.WECHAT, + trident: BrowserType.IE, + edge: BrowserType.EDGE, + '360 aphone': BrowserType.BROWSER_360, + mxbrowser: BrowserType.MAXTHON, + 'opr/': BrowserType.OPERA, + ubrowser: BrowserType.UC, + huaweibrowser: BrowserType.HUAWEI + }; + _this.browserType = typeMap[browserType] || browserType; + _this.browserVersion = ''; + var versionReg1 = /(mqqbrowser|micromessenger|qqbrowser|sogou|qzone|liebao|maxthon|uc|ucbs|360 aphone|360|baiduboxapp|baidu|maxthon|mxbrowser|miui(?:.hybrid)?)(mobile)?(browser)?\/?([\d.]+)/i; + var versionReg2 = /(qq|chrome|safari|firefox|trident|opera|opr\/|oupeng)(mobile)?(browser)?\/?([\d.]+)/i; + var tmp = versionReg1.exec(ua); + if (!tmp) { + tmp = versionReg2.exec(ua); + } + _this.browserVersion = tmp ? tmp[4] : ''; + _this.isXR = false; + var _tmpCanvas1 = document.createElement('canvas'); + !!_tmpCanvas1.getContext('2d'); + var supportWebp; + try { + supportWebp = TEST ? false : _tmpCanvas1.toDataURL('image/webp').startsWith('data:image/webp'); + } catch (e) { + supportWebp = false; + } + if (_this.browserType === BrowserType.SAFARI) { + var _exec; + var result = (_exec = / version\/(\d+)/.exec(ua)) === null || _exec === void 0 ? void 0 : _exec[1]; + if (typeof result === 'string') { + if (Number.parseInt(result) >= 14) { + supportWebp = true; + } + } + } + var supportTouch = document.documentElement.ontouchstart !== undefined || document.ontouchstart !== undefined || EDITOR; + var supportMouse = document.documentElement.onmouseup !== undefined || EDITOR; + var supportXR = typeof navigator.xr !== 'undefined'; + var supportWasm = function () { + var isSafari_15_4 = (_this.os === OS.IOS || _this.os === OS.OSX) && /(OS 15_4)|(Version\/15.4)/.test(window.navigator.userAgent); + if (isSafari_15_4) { + return false; + } + try { + if (typeof WebAssembly === 'object' && typeof WebAssembly.instantiate === 'function') { + var module = new WebAssembly.Module(new Uint8Array([0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00])); + if (module instanceof WebAssembly.Module) { + return new WebAssembly.Instance(module) instanceof WebAssembly.Instance; + } + } + } catch (e) { + return false; + } + return false; + }(); + _this._featureMap = (_this$_featureMap = {}, _this$_featureMap[Feature$1.WEBP] = supportWebp, _this$_featureMap[Feature$1.IMAGE_BITMAP] = false, _this$_featureMap[Feature$1.WEB_VIEW] = true, _this$_featureMap[Feature$1.VIDEO_PLAYER] = true, _this$_featureMap[Feature$1.SAFE_AREA] = false, _this$_featureMap[Feature$1.HPE] = false, _this$_featureMap[Feature$1.INPUT_TOUCH] = supportTouch, _this$_featureMap[Feature$1.EVENT_KEYBOARD] = document.documentElement.onkeyup !== undefined || EDITOR, _this$_featureMap[Feature$1.EVENT_MOUSE] = supportMouse, _this$_featureMap[Feature$1.EVENT_TOUCH] = supportTouch || supportMouse, _this$_featureMap[Feature$1.EVENT_ACCELEROMETER] = window.DeviceMotionEvent !== undefined || window.DeviceOrientationEvent !== undefined, _this$_featureMap[Feature$1.EVENT_GAMEPAD] = navigator.getGamepads !== undefined || navigator.webkitGetGamepads !== undefined || supportXR, _this$_featureMap[Feature$1.EVENT_HANDLE] = PREVIEW, _this$_featureMap[Feature$1.EVENT_HMD] = supportXR, _this$_featureMap[Feature$1.EVENT_HANDHELD] = supportXR, _this$_featureMap[Feature$1.WASM] = supportWasm, _this$_featureMap); + _this._initPromise = []; + _this._initPromise.push(_this._supportsImageBitmapPromise()); + _this._registerEvent(); + return _this; + } + var _proto = SystemInfo.prototype; + _proto._supportsImageBitmapPromise = function _supportsImageBitmapPromise() { + var _this2 = this; + if (typeof createImageBitmap !== 'undefined' && typeof Blob !== 'undefined') { + var canvas = document.createElement('canvas'); + canvas.width = canvas.height = 2; + var promise = createImageBitmap(canvas, {}); + if (promise instanceof Promise) { + return promise.then(function (imageBitmap) { + _this2._setFeature(Feature$1.IMAGE_BITMAP, true); + imageBitmap === null || imageBitmap === void 0 ? void 0 : imageBitmap.close(); + }); + } else { + console.warn('The return value of createImageBitmap is not Promise.'); + } + } + return Promise.resolve(); + }; + _proto._registerEvent = function _registerEvent() { + var _this3 = this; + var hiddenPropName; + if (typeof document.hidden !== 'undefined') { + hiddenPropName = 'hidden'; + } else if (typeof document.mozHidden !== 'undefined') { + hiddenPropName = 'mozHidden'; + } else if (typeof document.msHidden !== 'undefined') { + hiddenPropName = 'msHidden'; + } else if (typeof document.webkitHidden !== 'undefined') { + hiddenPropName = 'webkitHidden'; + } else { + hiddenPropName = 'hidden'; + } + var hidden = false; + var onHidden = function onHidden() { + if (!hidden) { + hidden = true; + _this3.emit('hide'); + } + }; + var onShown = function onShown(arg0, arg1, arg2, arg3, arg4) { + if (hidden) { + hidden = false; + _this3.emit('show', arg0, arg1, arg2, arg3, arg4); + } + }; + if (hiddenPropName) { + var changeList = ['visibilitychange', 'mozvisibilitychange', 'msvisibilitychange', 'webkitvisibilitychange', 'qbrowserVisibilityChange']; + for (var i = 0; i < changeList.length; i++) { + document.addEventListener(changeList[i], function (event) { + var visible = document[hiddenPropName]; + visible = visible || event.hidden; + if (visible) { + onHidden(); + } else { + onShown(); + } + }); + } + } else { + window.addEventListener('blur', onHidden); + window.addEventListener('focus', onShown); + } + if (window.navigator.userAgent.indexOf('MicroMessenger') > -1) { + window.onfocus = onShown; + } + if ('onpageshow' in window && 'onpagehide' in window) { + window.addEventListener('pagehide', onHidden); + window.addEventListener('pageshow', onShown); + document.addEventListener('pagehide', onHidden); + document.addEventListener('pageshow', onShown); + } + }; + _proto._setFeature = function _setFeature(feature, value) { + return this._featureMap[feature] = value; + }; + _proto.init = function init() { + return Promise.all(this._initPromise); + }; + _proto.hasFeature = function hasFeature(feature) { + return this._featureMap[feature]; + }; + _proto.getBatteryLevel = function getBatteryLevel() { + if (this._battery) { + return this._battery.level; + } else { + { + console.warn('getBatteryLevel is not supported'); + } + return 1; + } + }; + _proto.triggerGC = function triggerGC() { + { + console.warn('triggerGC is not supported.'); + } + }; + _proto.openURL = function openURL(url) { + window.open(url); + }; + _proto.now = function now() { + if (Date.now) { + return Date.now(); + } + return +new Date(); + }; + _proto.restartJSVM = function restartJSVM() { + { + console.warn('restartJSVM is not supported.'); + } + }; + _proto.exit = function exit() { + window.close(); + }; + _proto.close = function close() { + this.emit('close'); + }; + return SystemInfo; + }(EventTarget); + var systemInfo = new SystemInfo(); + + var EXTNAME_RE = /(\.[^\.\/\?\\]*)(\?.*)?$/; + var DIRNAME_RE = /((.*)(\/|\\|\\\\))?(.*?\..*$)?/; + var NORMALIZE_RE = /[^\.\/]+\/\.\.\//; + function join() { + var result = ''; + for (var _len = arguments.length, segments = new Array(_len), _key = 0; _key < _len; _key++) { + segments[_key] = arguments[_key]; + } + for (var _i = 0, _segments = segments; _i < _segments.length; _i++) { + var segment = _segments[_i]; + result = (result + (result === '' ? '' : '/') + segment).replace(/(\/|\\\\)$/, ''); + } + return result; + } + function extname(path) { + var temp = EXTNAME_RE.exec(path); + return temp ? temp[1] : ''; + } + function mainFileName(fileName) { + if (fileName) { + var idx = fileName.lastIndexOf('.'); + if (idx !== -1) { + return fileName.substring(0, idx); + } + } + return fileName; + } + function basename(path, extName) { + var index = path.indexOf('?'); + if (index > 0) { + path = path.substring(0, index); + } + var reg = /(\/|\\)([^\/\\]+)$/g; + var result = reg.exec(path.replace(/(\/|\\)$/, '')); + if (!result) { + return path; + } + var baseName = result[2]; + if (extName && path.substring(path.length - extName.length).toLowerCase() === extName.toLowerCase()) { + return baseName.substring(0, baseName.length - extName.length); + } + return baseName; + } + function dirname(path) { + var temp = DIRNAME_RE.exec(path); + return temp ? temp[2] : ''; + } + function changeExtname(path, extName) { + extName = extName || ''; + var index = path.indexOf('?'); + var tempStr = ''; + if (index > 0) { + tempStr = path.substring(index); + path = path.substring(0, index); + } + index = path.lastIndexOf('.'); + if (index < 0) { + return path + extName + tempStr; + } + return path.substring(0, index) + extName + tempStr; + } + function changeBasename(path, newBaseName, keepExt) { + if (newBaseName.indexOf('.') === 0) { + return changeExtname(path, newBaseName); + } + var index = path.indexOf('?'); + var tempStr = ''; + var ext = keepExt ? extname(path) : ''; + if (index > 0) { + tempStr = path.substring(index); + path = path.substring(0, index); + } + index = path.lastIndexOf('/'); + index = index <= 0 ? 0 : index + 1; + return path.substring(0, index) + newBaseName + ext + tempStr; + } + function _normalize(url) { + var oldUrl = url = String(url); + do { + oldUrl = url; + url = url.replace(NORMALIZE_RE, ''); + } while (oldUrl.length !== url.length); + return url; + } + function stripSep(path) { + return path.replace(/[\/\\]$/, ''); + } + function getSeperator() { + return systemInfo.os === OS.WINDOWS ? '\\' : '/'; + } + + var path = /*#__PURE__*/Object.freeze({ + __proto__: null, + join: join, + extname: extname, + mainFileName: mainFileName, + basename: basename, + dirname: dirname, + changeExtname: changeExtname, + changeBasename: changeBasename, + _normalize: _normalize, + stripSep: stripSep, + getSeperator: getSeperator + }); + exports('bj', path); + + var _vec3$1 = new Vec3(); + function WorldNode3DToLocalNodeUI(mainCamera, wpos, uiNode, out) { + if (!out) { + out = new Vec3(); + } + mainCamera.convertToUINode(wpos, uiNode, out); + var pos = uiNode.position; + out.add(pos); + return out; + } + function WorldNode3DToWorldNodeUI(mainCamera, wpos, out) { + if (!out) { + out = new Vec3(); + } + mainCamera.worldToScreen(wpos, out); + out.x /= legacyCC.view.getScaleX(); + out.y /= legacyCC.view.getScaleY(); + return out; + } + var convertUtils = exports('bt', { + WorldNode3DToLocalNodeUI: WorldNode3DToLocalNodeUI, + WorldNode3DToWorldNodeUI: WorldNode3DToWorldNodeUI + }); + legacyCC.pipelineUtils = convertUtils; + replaceProperty(legacyCC.pipelineUtils, 'cc.pipelineUtils', [{ + name: 'WorldNode3DToLocalNodeUI', + newName: 'convertToUINode', + targetName: 'cc.Camera.prototype', + customFunction: function customFunction() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + var camera = args[0]; + var out = args[3] || _vec3$1; + camera.convertToUINode(args[1], args[2], out); + out.add(args[2].position); + return args[3] || out.clone(); + } + }]); + + markAsWarning(js$1, 'js', [{ + name: 'js', + suggest: "'js.js' is deprecated since v3.7.0, please access 'js' directly instead." + }]); + + var _PORTRAIT = 1; + var _PORTRAIT_UPSIDE_DOWN = _PORTRAIT << 1; + var _LEFT = _PORTRAIT << 2; + var _RIGHT = _PORTRAIT << 3; + var _LANDSCAPE = _LEFT | _RIGHT; + var _AUTO = _PORTRAIT | _LANDSCAPE; + var Orientation$1; + (function (Orientation) { + Orientation[Orientation["PORTRAIT"] = _PORTRAIT] = "PORTRAIT"; + Orientation[Orientation["PORTRAIT_UPSIDE_DOWN"] = _PORTRAIT_UPSIDE_DOWN] = "PORTRAIT_UPSIDE_DOWN"; + Orientation[Orientation["LANDSCAPE_LEFT"] = _LEFT] = "LANDSCAPE_LEFT"; + Orientation[Orientation["LANDSCAPE_RIGHT"] = _RIGHT] = "LANDSCAPE_RIGHT"; + Orientation[Orientation["LANDSCAPE"] = _LANDSCAPE] = "LANDSCAPE"; + Orientation[Orientation["AUTO"] = _AUTO] = "AUTO"; + })(Orientation$1 || (Orientation$1 = {})); + + var EVENT_TIMEOUT = 200; + var orientationMap$2 = { + auto: Orientation$1.AUTO, + landscape: Orientation$1.LANDSCAPE, + portrait: Orientation$1.PORTRAIT + }; + var WindowType; + (function (WindowType) { + WindowType[WindowType["Unknown"] = 0] = "Unknown"; + WindowType[WindowType["SubFrame"] = 1] = "SubFrame"; + WindowType[WindowType["BrowserWindow"] = 2] = "BrowserWindow"; + WindowType[WindowType["Fullscreen"] = 3] = "Fullscreen"; + })(WindowType || (WindowType = {})); + var ScreenAdapter = function (_EventTarget) { + _inheritsLoose(ScreenAdapter, _EventTarget); + function ScreenAdapter() { + var _this; + _this = _EventTarget.call(this) || this; + _this.isFrameRotated = false; + _this.handleResizeEvent = true; + _this._gameFrame = void 0; + _this._gameContainer = void 0; + _this._gameCanvas = void 0; + _this._isProportionalToFrame = false; + _this._cachedFrameStyle = { + width: '0px', + height: '0px' + }; + _this._cachedContainerStyle = { + width: '0px', + height: '0px' + }; + _this._cbToUpdateFrameBuffer = void 0; + _this._supportFullScreen = false; + _this._touchEventName = void 0; + _this._onFullscreenChange = void 0; + _this._onFullscreenError = void 0; + _this._orientationChangeTimeoutId = -1; + _this._cachedFrameSize = new Size$1(0, 0); + _this._exactFitScreen = false; + _this._isHeadlessMode = false; + _this._fn = {}; + _this._fnGroup = [['requestFullscreen', 'exitFullscreen', 'fullscreenchange', 'fullscreenEnabled', 'fullscreenElement', 'fullscreenerror'], ['requestFullScreen', 'exitFullScreen', 'fullScreenchange', 'fullScreenEnabled', 'fullScreenElement', 'fullscreenerror'], ['webkitRequestFullScreen', 'webkitCancelFullScreen', 'webkitfullscreenchange', 'webkitIsFullScreen', 'webkitCurrentFullScreenElement', 'webkitfullscreenerror'], ['mozRequestFullScreen', 'mozCancelFullScreen', 'mozfullscreenchange', 'mozFullScreen', 'mozFullScreenElement', 'mozfullscreenerror'], ['msRequestFullscreen', 'msExitFullscreen', 'MSFullscreenChange', 'msFullscreenEnabled', 'msFullscreenElement', 'msfullscreenerror']]; + _this._resolutionScale = 1; + _this._orientation = Orientation$1.AUTO; + _this._gameFrame = document.getElementById('GameDiv'); + _this._gameContainer = document.getElementById('Cocos3dGameContainer'); + _this._gameCanvas = document.getElementById('GameCanvas'); + { + if (!_this._gameFrame) { + var _this$_gameCanvas, _this$_gameCanvas$par; + _this._gameFrame = document.createElement('div'); + _this._gameFrame.setAttribute('id', 'GameDiv'); + (_this$_gameCanvas = _this._gameCanvas) === null || _this$_gameCanvas === void 0 ? void 0 : (_this$_gameCanvas$par = _this$_gameCanvas.parentNode) === null || _this$_gameCanvas$par === void 0 ? void 0 : _this$_gameCanvas$par.insertBefore(_this._gameFrame, _this._gameCanvas); + _this._gameFrame.appendChild(_this._gameCanvas); + } + if (!_this._gameContainer) { + var _this$_gameCanvas2, _this$_gameCanvas2$pa; + _this._gameContainer = document.createElement('div'); + _this._gameContainer.setAttribute('id', 'Cocos3dGameContainer'); + (_this$_gameCanvas2 = _this._gameCanvas) === null || _this$_gameCanvas2 === void 0 ? void 0 : (_this$_gameCanvas2$pa = _this$_gameCanvas2.parentNode) === null || _this$_gameCanvas2$pa === void 0 ? void 0 : _this$_gameCanvas2$pa.insertBefore(_this._gameContainer, _this._gameCanvas); + _this._gameContainer.appendChild(_this._gameCanvas); + } + } + var fnList; + var fnGroup = _this._fnGroup; + for (var i = 0; i < fnGroup.length; i++) { + fnList = fnGroup[i]; + if (typeof document[fnList[1]] !== 'undefined') { + for (var _i = 0; _i < fnList.length; _i++) { + _this._fn[fnGroup[0][_i]] = fnList[_i]; + } + break; + } + } + _this._supportFullScreen = _this._fn.requestFullscreen !== undefined; + _this._touchEventName = 'ontouchstart' in window ? 'touchend' : 'mousedown'; + _this._registerEvent(); + return _this; + } + var _proto = ScreenAdapter.prototype; + _proto.init = function init(options, cbToRebuildFrameBuffer) { + this._cbToUpdateFrameBuffer = cbToRebuildFrameBuffer; + this.orientation = orientationMap$2[options.configOrientation]; + this._exactFitScreen = options.exactFitScreen; + this._isHeadlessMode = options.isHeadlessMode; + this._resizeFrame(); + }; + _proto.requestFullScreen = function requestFullScreen() { + var _this2 = this; + return new Promise(function (resolve, reject) { + if (_this2.isFullScreen) { + resolve(); + return; + } + _this2._cachedFrameSize = _this2.windowSize; + _this2._doRequestFullScreen().then(function () { + resolve(); + })["catch"](function () { + var fullscreenTarget = _this2._getFullscreenTarget(); + if (!fullscreenTarget) { + reject(new Error('Cannot access fullscreen target')); + return; + } + fullscreenTarget.addEventListener(_this2._touchEventName, function () { + _this2._doRequestFullScreen().then(function () { + resolve(); + })["catch"](reject); + }, { + once: true, + capture: true + }); + }); + }); + }; + _proto.exitFullScreen = function exitFullScreen() { + var _this3 = this; + return new Promise(function (resolve, reject) { + var requestPromise = document[_this3._fn.exitFullscreen](); + if (window.Promise && requestPromise instanceof Promise) { + requestPromise.then(function () { + _this3.windowSize = _this3._cachedFrameSize; + resolve(); + })["catch"](reject); + return; + } + _this3.windowSize = _this3._cachedFrameSize; + resolve(); + }); + }; + _proto._registerEvent = function _registerEvent() { + var _this4 = this; + document.addEventListener(this._fn.fullscreenerror, function () { + var _this4$_onFullscreenE; + (_this4$_onFullscreenE = _this4._onFullscreenError) === null || _this4$_onFullscreenE === void 0 ? void 0 : _this4$_onFullscreenE.call(_this4); + }); + window.addEventListener('resize', function () { + if (!_this4.handleResizeEvent) { + return; + } + _this4._resizeFrame(); + }); + if (typeof window.matchMedia === 'function') { + var updateDPRChangeListener = function updateDPRChangeListener() { + var _window$matchMedia, _window$matchMedia$ad; + var dpr = window.devicePixelRatio; + (_window$matchMedia = window.matchMedia("(resolution: " + dpr + "dppx)")) === null || _window$matchMedia === void 0 ? void 0 : (_window$matchMedia$ad = _window$matchMedia.addEventListener) === null || _window$matchMedia$ad === void 0 ? void 0 : _window$matchMedia$ad.call(_window$matchMedia, 'change', function () { + _this4.emit('window-resize', _this4.windowSize.width, _this4.windowSize.height); + updateDPRChangeListener(); + }, { + once: true + }); + }; + updateDPRChangeListener(); + } + window.addEventListener('orientationchange', function () { + if (_this4._orientationChangeTimeoutId !== -1) { + clearTimeout(_this4._orientationChangeTimeoutId); + } + _this4._orientationChangeTimeoutId = setTimeout(function () { + if (!_this4.handleResizeEvent) { + return; + } + _this4._updateFrameState(); + _this4._resizeFrame(); + _this4.emit('orientation-change', _this4.windowSize.width, _this4.windowSize.height); + _this4._orientationChangeTimeoutId = -1; + }, EVENT_TIMEOUT); + }); + document.addEventListener(this._fn.fullscreenchange, function () { + var _this4$_onFullscreenC; + (_this4$_onFullscreenC = _this4._onFullscreenChange) === null || _this4$_onFullscreenC === void 0 ? void 0 : _this4$_onFullscreenC.call(_this4); + _this4.emit('fullscreen-change', _this4.windowSize.width, _this4.windowSize.height); + }); + }; + _proto._convertToSizeInCssPixels = function _convertToSizeInCssPixels(size) { + var clonedSize = size.clone(); + var dpr = this.devicePixelRatio; + clonedSize.width /= dpr; + clonedSize.height /= dpr; + return clonedSize; + }; + _proto._resizeFrame = function _resizeFrame(sizeInCssPixels) { + if (!this._gameFrame) { + return; + } + this._gameFrame.style.display = 'flex'; + this._gameFrame.style['justify-content'] = 'center'; + this._gameFrame.style['align-items'] = 'center'; + if (this._windowType === WindowType.SubFrame) { + if (!sizeInCssPixels) { + this._updateContainer(); + return; + } + this._gameFrame.style.width = sizeInCssPixels.width + "px"; + this._gameFrame.style.height = sizeInCssPixels.height + "px"; + } else { + var winWidth = window.innerWidth; + var winHeight = window.innerHeight; + if (this.isFrameRotated) { + this._gameFrame.style['-webkit-transform'] = 'rotate(90deg)'; + this._gameFrame.style.transform = 'rotate(90deg)'; + this._gameFrame.style['-webkit-transform-origin'] = '0px 0px 0px'; + this._gameFrame.style.transformOrigin = '0px 0px 0px'; + this._gameFrame.style.margin = "0 0 0 " + winWidth + "px"; + this._gameFrame.style.width = winHeight + "px"; + this._gameFrame.style.height = winWidth + "px"; + } else { + this._gameFrame.style['-webkit-transform'] = 'rotate(0deg)'; + this._gameFrame.style.transform = 'rotate(0deg)'; + this._gameFrame.style.margin = '0px auto'; + this._gameFrame.style.width = winWidth + "px"; + this._gameFrame.style.height = winHeight + "px"; + } + } + this._updateContainer(); + }; + _proto._getFullscreenTarget = function _getFullscreenTarget() { + var windowType = this._windowType; + if (windowType === WindowType.Fullscreen) { + return document[this._fn.fullscreenElement]; + } + if (windowType === WindowType.SubFrame) { + return this._gameFrame; + } + return document.body; + }; + _proto._doRequestFullScreen = function _doRequestFullScreen() { + var _this5 = this; + return new Promise(function (resolve, reject) { + if (!_this5._supportFullScreen) { + reject(new Error('fullscreen is not supported')); + return; + } + var fullscreenTarget = _this5._getFullscreenTarget(); + if (!fullscreenTarget) { + reject(new Error('Cannot access fullscreen target')); + return; + } + _this5._onFullscreenChange = undefined; + _this5._onFullscreenError = undefined; + var requestPromise = fullscreenTarget[_this5._fn.requestFullscreen](); + if (window.Promise && requestPromise instanceof Promise) { + requestPromise.then(resolve)["catch"](reject); + } else { + _this5._onFullscreenChange = resolve; + _this5._onFullscreenError = reject; + } + }); + }; + _proto._updateFrameState = function _updateFrameState() { + var orientation = this.orientation; + var width = window.innerWidth; + var height = window.innerHeight; + var isBrowserLandscape = width > height; + this.isFrameRotated = systemInfo.isMobile && (isBrowserLandscape && orientation === Orientation$1.PORTRAIT || !isBrowserLandscape && orientation === Orientation$1.LANDSCAPE); + }; + _proto._updateContainer = function _updateContainer() { + if (!this._gameContainer) { + warnID(9201); + return; + } + if (this.isProportionalToFrame) { + if (!this._gameFrame) { + warnID(9201); + return; + } + var designedResolution = legacyCC.view.getDesignResolutionSize(); + var frame = this._gameFrame; + var frameW = frame.clientWidth; + var frameH = frame.clientHeight; + var designW = designedResolution.width; + var designH = designedResolution.height; + var scaleX = frameW / designW; + var scaleY = frameH / designH; + var containerStyle = this._gameContainer.style; + var containerW; + var containerH; + if (scaleX < scaleY) { + containerW = frameW; + containerH = designH * scaleX; + } else { + containerW = designW * scaleY; + containerH = frameH; + } + containerStyle.width = containerW + "px"; + containerStyle.height = containerH + "px"; + } else { + var _containerStyle = this._gameContainer.style; + _containerStyle.width = '100%'; + _containerStyle.height = '100%'; + } + if (this._gameFrame && (this._cachedFrameStyle.width !== this._gameFrame.style.width || this._cachedFrameStyle.height !== this._gameFrame.style.height || this._cachedContainerStyle.width !== this._gameContainer.style.width || this._cachedContainerStyle.height !== this._gameContainer.style.height)) { + this.emit('window-resize', this.windowSize.width, this.windowSize.height); + this._cachedFrameStyle.width = this._gameFrame.style.width; + this._cachedFrameStyle.height = this._gameFrame.style.height; + this._cachedContainerStyle.width = this._gameContainer.style.width; + this._cachedContainerStyle.height = this._gameContainer.style.height; + } + }; + _createClass(ScreenAdapter, [{ + key: "supportFullScreen", + get: function get() { + return this._supportFullScreen; + } + }, { + key: "isFullScreen", + get: function get() { + if (!this._supportFullScreen) { + return false; + } + return !!document[this._fn.fullscreenElement]; + } + }, { + key: "devicePixelRatio", + get: function get() { + var _window$devicePixelRa; + return Math.min((_window$devicePixelRa = window.devicePixelRatio) !== null && _window$devicePixelRa !== void 0 ? _window$devicePixelRa : 1, 2); + } + }, { + key: "windowSize", + get: function get() { + var result = this._windowSizeInCssPixels; + var dpr = this.devicePixelRatio; + result.width *= dpr; + result.height *= dpr; + return result; + }, + set: function set(size) { + if (this._windowType !== WindowType.SubFrame) { + warnID(9202); + return; + } + this._resizeFrame(this._convertToSizeInCssPixels(size)); + } + }, { + key: "resolution", + get: function get() { + var windowSize = this.windowSize; + var resolutionScale = this.resolutionScale; + return new Size$1(windowSize.width * resolutionScale, windowSize.height * resolutionScale); + } + }, { + key: "resolutionScale", + get: function get() { + return this._resolutionScale; + }, + set: function set(v) { + var _this$_cbToUpdateFram; + if (v === this._resolutionScale) { + return; + } + this._resolutionScale = v; + (_this$_cbToUpdateFram = this._cbToUpdateFrameBuffer) === null || _this$_cbToUpdateFram === void 0 ? void 0 : _this$_cbToUpdateFram.call(this); + } + }, { + key: "orientation", + get: function get() { + return this._orientation; + }, + set: function set(value) { + if (this._orientation === value) { + return; + } + this._orientation = value; + this._updateFrameState(); + } + }, { + key: "safeAreaEdge", + get: function get() { + var dpr = this.devicePixelRatio; + var _top = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--safe-top') || '0') * dpr; + var _bottom = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--safe-bottom') || '0') * dpr; + var _left = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--safe-left') || '0') * dpr; + var _right = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--safe-right') || '0') * dpr; + return { + top: _top, + bottom: _bottom, + left: _left, + right: _right + }; + } + }, { + key: "isProportionalToFrame", + get: function get() { + return this._isProportionalToFrame; + }, + set: function set(v) { + if (this._isProportionalToFrame === v) { + return; + } + this._isProportionalToFrame = v; + this._updateContainer(); + } + }, { + key: "_windowSizeInCssPixels", + get: function get() { + if (this.isProportionalToFrame) { + if (!this._gameContainer) { + warnID(9201); + return new Size$1(0, 0); + } + return new Size$1(this._gameContainer.clientWidth, this._gameContainer.clientHeight); + } + var fullscreenTarget; + var width; + var height; + switch (this._windowType) { + case WindowType.SubFrame: + if (!this._gameFrame) { + warnID(9201); + return new Size$1(0, 0); + } + return new Size$1(this._gameFrame.clientWidth, this._gameFrame.clientHeight); + case WindowType.Fullscreen: + fullscreenTarget = this._getFullscreenTarget(); + width = this.isFrameRotated ? fullscreenTarget.clientHeight : fullscreenTarget.clientWidth; + height = this.isFrameRotated ? fullscreenTarget.clientWidth : fullscreenTarget.clientHeight; + return new Size$1(width, height); + case WindowType.BrowserWindow: + width = this.isFrameRotated ? window.innerHeight : window.innerWidth; + height = this.isFrameRotated ? window.innerWidth : window.innerHeight; + return new Size$1(width, height); + case WindowType.Unknown: + default: + return new Size$1(0, 0); + } + } + }, { + key: "_windowType", + get: function get() { + if (this._isHeadlessMode) { + return WindowType.Unknown; + } + if (this.isFullScreen) { + return WindowType.Fullscreen; + } + if (!this._gameFrame) { + warnID(9201); + return WindowType.Unknown; + } + if (this._exactFitScreen) { + return WindowType.BrowserWindow; + } + return WindowType.SubFrame; + } + }]); + return ScreenAdapter; + }(EventTarget); + var screenAdapter = new ScreenAdapter(); + + var Screen = function () { + function Screen() {} + var _proto = Screen.prototype; + _proto.init = function init() { + var _settings$querySettin, _settings$querySettin2; + var exactFitScreen = (_settings$querySettin = settings.querySettings(Settings.Category.SCREEN, 'exactFitScreen')) !== null && _settings$querySettin !== void 0 ? _settings$querySettin : true; + var orientation = (_settings$querySettin2 = settings.querySettings(Settings.Category.SCREEN, 'orientation')) !== null && _settings$querySettin2 !== void 0 ? _settings$querySettin2 : 'auto'; + var isHeadlessMode = settings.querySettings(Settings.Category.RENDERING, 'renderMode') === 3; + screenAdapter.init({ + exactFitScreen: exactFitScreen, + configOrientation: orientation, + isHeadlessMode: isHeadlessMode + }, function () { + var _director$root; + var director = legacyCC.director; + if (!((_director$root = director.root) !== null && _director$root !== void 0 && _director$root.pipeline)) { + warnID(1220); + return; + } + director.root.pipeline.shadingScale = screenAdapter.resolutionScale; + }); + }; + _proto.fullScreen = function fullScreen() { + return screenAdapter.isFullScreen; + }; + _proto.requestFullScreen = function requestFullScreen(element, onFullScreenChange, onFullScreenError) { + if (arguments.length > 0) { + warnID(1400, 'screen.requestFullScreen(element, onFullScreenChange?, onFullScreenError?)', 'screen.requestFullScreen(): Promise'); + } + return screenAdapter.requestFullScreen().then(function () { + onFullScreenChange === null || onFullScreenChange === void 0 ? void 0 : onFullScreenChange.call(document); + })["catch"](function (err) { + error(err); + onFullScreenError === null || onFullScreenError === void 0 ? void 0 : onFullScreenError.call(document); + }); + }; + _proto.exitFullScreen = function exitFullScreen() { + return screenAdapter.exitFullScreen(); + }; + _proto.autoFullScreen = function autoFullScreen(element, onFullScreenChange) { + var _this$requestFullScre; + (_this$requestFullScre = this.requestFullScreen(element, onFullScreenChange)) === null || _this$requestFullScre === void 0 ? void 0 : _this$requestFullScre["catch"](function (e) { + warn(e); + }); + }; + _proto.disableAutoFullScreen = function disableAutoFullScreen(element) {}; + _proto.on = function on(type, callback, target) { + screenAdapter.on(type, callback, target); + }; + _proto.once = function once(type, callback, target) { + screenAdapter.once(type, callback, target); + }; + _proto.off = function off(type, callback, target) { + screenAdapter.off(type, callback, target); + }; + _createClass(Screen, [{ + key: "devicePixelRatio", + get: function get() { + return screenAdapter.devicePixelRatio; + } + }, { + key: "windowSize", + get: function get() { + return screenAdapter.windowSize; + }, + set: function set(size) { + screenAdapter.windowSize = size; + } + }, { + key: "resolution", + get: function get() { + return screenAdapter.resolution; + } + }, { + key: "supportsFullScreen", + get: function get() { + return screenAdapter.supportFullScreen; + } + }]); + return Screen; + }(); + var screen = exports('bY', new Screen()); + legacyCC.screen = screen; + + var sys = exports('bZ', { + Feature: Feature$1, + hasFeature: function hasFeature(feature) { + return systemInfo.hasFeature(feature); + }, + NetworkType: NetworkType, + Language: Language, + OS: OS, + Platform: Platform, + BrowserType: BrowserType, + isNative: systemInfo.isNative, + isBrowser: systemInfo.isBrowser, + isMobile: systemInfo.isMobile, + isLittleEndian: systemInfo.isLittleEndian, + platform: systemInfo.platform, + language: systemInfo.language, + languageCode: systemInfo.nativeLanguage, + os: systemInfo.os, + osVersion: systemInfo.osVersion, + osMainVersion: systemInfo.osMainVersion, + browserType: systemInfo.browserType, + browserVersion: systemInfo.browserVersion, + isXR: systemInfo.isXR, + windowPixelResolution: screen.windowSize, + capabilities: { + canvas: true, + opengl: true, + webp: systemInfo.hasFeature(Feature$1.WEBP), + imageBitmap: systemInfo.hasFeature(Feature$1.IMAGE_BITMAP), + touches: systemInfo.hasFeature(Feature$1.INPUT_TOUCH), + mouse: systemInfo.hasFeature(Feature$1.EVENT_MOUSE), + keyboard: systemInfo.hasFeature(Feature$1.EVENT_KEYBOARD), + accelerometer: systemInfo.hasFeature(Feature$1.EVENT_ACCELEROMETER) + }, + localStorage: {}, + getNetworkType: function getNetworkType() { + return systemInfo.networkType; + }, + getBatteryLevel: function getBatteryLevel() { + return systemInfo.getBatteryLevel(); + }, + garbageCollect: function garbageCollect() { + systemInfo.triggerGC(); + }, + isObjectValid: function isObjectValid(obj) { + if (obj === null || obj === undefined) { + return false; + } + return true; + }, + __isWebIOS14OrIPadOS14Env: false, + dump: function dump() { + var str = ''; + str += "isMobile : " + this.isMobile + "\r\n"; + str += "language : " + this.language + "\r\n"; + str += "browserType : " + this.browserType + "\r\n"; + str += "browserVersion : " + this.browserVersion + "\r\n"; + str += "supports webp: " + sys.hasFeature(Feature$1.WEBP) + "\r\n"; + str += "supports bitmap: " + sys.hasFeature(Feature$1.IMAGE_BITMAP) + "\r\n"; + str += "supports touches: " + sys.hasFeature(Feature$1.INPUT_TOUCH) + "\r\n"; + str += "supports mouse: " + sys.hasFeature(Feature$1.EVENT_MOUSE) + "\r\n"; + str += "supports keyboard: " + sys.hasFeature(Feature$1.EVENT_KEYBOARD) + "\r\n"; + str += "supports accelerometer: " + sys.hasFeature(Feature$1.EVENT_ACCELEROMETER) + "\r\n"; + str += "os : " + this.os + "\r\n"; + str += "osVersion : " + this.osVersion + "\r\n"; + str += "platform : " + this.platform + "\r\n"; + str += "Using " + (legacyCC.game.renderType === legacyCC.game.RENDER_TYPE_WEBGL ? 'WEBGL' : 'CANVAS') + " renderer.\r\n"; + log(str); + }, + openURL: function openURL(url) { + systemInfo.openURL(url); + }, + init: function init() { + var _this = this; + return Promise.resolve().then(function () { + return systemInfo.init(); + }).then(function () { + try { + var localStorage = sys.localStorage = window.localStorage; + localStorage.setItem('storage', ''); + localStorage.removeItem('storage'); + localStorage = null; + } catch (e) { + var warn = function warn() { + warnID(5200); + }; + _this.localStorage = { + getItem: warn, + setItem: warn, + clear: warn, + removeItem: warn, + key: warn, + length: 0 + }; + } + { + _this.__isWebIOS14OrIPadOS14Env = (sys.os === OS.IOS || sys.os === OS.OSX) && systemInfo.isBrowser && /(OS 14)|(Version\/14)/.test(window.navigator.userAgent); + } + }); + }, + now: function now() { + return systemInfo.now(); + }, + restartVM: function restartVM() { + systemInfo.restartJSVM(); + }, + getSafeAreaRect: function getSafeAreaRect() { + var locView = legacyCC.view; + var edge = screenAdapter.safeAreaEdge; + var windowSize = screenAdapter.windowSize; + var leftBottom = new Vec2(edge.left, edge.bottom); + var rightTop = new Vec2(windowSize.width - edge.right, windowSize.height - edge.top); + locView._convertToUISpace(leftBottom); + locView._convertToUISpace(rightTop); + var x = leftBottom.x; + var y = leftBottom.y; + var width = rightTop.x - leftBottom.x; + var height = rightTop.y - leftBottom.y; + return new Rect$1(x, y, width, height); + } + }); + legacyCC.sys = sys; + + markAsWarning(legacyCC, 'cc', [{ + name: 'winSize', + suggest: 'please use view.getVisibleSize() instead.' + }]); + markAsWarning(sys, 'sys', [{ + name: 'capabilities', + suggest: 'please use sys.hasFeature() method instead.' + }]); + replaceProperty(sys, 'sys', ['UNKNOWN', 'ENGLISH', 'CHINESE', 'FRENCH', 'ITALIAN', 'GERMAN', 'SPANISH', 'DUTCH', 'RUSSIAN', 'KOREAN', 'JAPANESE', 'HUNGARIAN', 'PORTUGUESE', 'ARABIC', 'NORWEGIAN', 'POLISH', 'TURKISH', 'UKRAINIAN', 'ROMANIAN', 'BULGARIAN'].map(function (item) { + return { + name: "LANGUAGE_" + item, + newName: item, + target: sys.Language, + targetName: 'sys.Language' + }; + })); + replaceProperty(sys, 'sys', ['UNKNOWN', 'IOS', 'ANDROID', 'WINDOWS', 'LINUX', 'OSX'].map(function (item) { + return { + name: "OS_" + item, + newName: item, + target: sys.OS, + targetName: 'sys.OS' + }; + })); + replaceProperty(sys, 'sys', ['UNKNOWN', 'WECHAT', 'ANDROID', 'IE', 'EDGE', 'QQ', 'MOBILE_QQ', 'UC', 'UCBS', 'BAIDU_APP', 'BAIDU', 'MAXTHON', 'OPERA', 'OUPENG', 'MIUI', 'FIREFOX', 'SAFARI', 'CHROME', 'LIEBAO', 'QZONE', 'SOUGOU', 'HUAWEI'].map(function (item) { + return { + name: "BROWSER_TYPE_" + item, + newName: item, + target: sys.BrowserType, + targetName: 'sys.BrowserType' + }; + })); + replaceProperty(sys, 'sys', [{ + name: 'BROWSER_TYPE_360', + newName: 'BROWSER_360', + target: sys.BrowserType, + targetName: 'sys.BrowserType' + }]); + replaceProperty(sys, 'sys', ['UNKNOWN', 'EDITOR_PAGE', 'EDITOR_CORE', 'MOBILE_BROWSER', 'DESKTOP_BROWSER', 'WIN32', 'MACOS', 'IOS', 'ANDROID', 'OHOS', 'WECHAT_GAME', 'BAIDU_MINI_GAME', 'XIAOMI_QUICK_GAME', 'ALIPAY_MINI_GAME', 'BYTEDANCE_MINI_GAME', 'OPPO_MINI_GAME', 'VIVO_MINI_GAME', 'HUAWEI_QUICK_GAME', 'COCOSPLAY', 'LINKSURE_MINI_GAME', 'QTT_MINI_GAME'].map(function (item) { + return { + name: item, + target: sys.Platform, + targetName: 'sys.Platform' + }; + })); + replaceProperty(sys, 'sys', [{ + name: 'IPHONE', + newName: 'IOS', + target: sys.Platform, + targetName: 'sys.Platform' + }, { + name: 'IPAD', + newName: 'IOS', + target: sys.Platform, + targetName: 'sys.Platform' + }]); + removeProperty(sys, 'sys', ['LINUX', 'BLACKBERRY', 'NACL', 'EMSCRIPTEN', 'TIZEN', 'WINRT', 'WP8', 'QQ_PLAY', 'FB_PLAYABLE_ADS'].map(function (item) { + return { + name: item + }; + })); + replaceProperty(sys, 'sys', [{ + name: 'windowPixelResolution', + target: screen, + targetName: 'screen', + newName: 'windowSize' + }]); + markAsWarning(screen, 'screen', [{ + name: 'autoFullScreen', + suggest: 'please use screen.requestFullScreen() instead.' + }, { + name: 'disableAutoFullScreen' + }]); + + var visibleRect = exports('b$', { + topLeft: legacyCC.v2(0, 0), + topRight: legacyCC.v2(0, 0), + top: legacyCC.v2(0, 0), + bottomLeft: legacyCC.v2(0, 0), + bottomRight: legacyCC.v2(0, 0), + bottom: legacyCC.v2(0, 0), + center: legacyCC.v2(0, 0), + left: legacyCC.v2(0, 0), + right: legacyCC.v2(0, 0), + width: 0, + height: 0, + init: function init(visibleRect_) { + var w = this.width = visibleRect_.width; + var h = this.height = visibleRect_.height; + var l = visibleRect_.x; + var b = visibleRect_.y; + var t = b + h; + var r = l + w; + this.topLeft.x = l; + this.topLeft.y = t; + this.topRight.x = r; + this.topRight.y = t; + this.top.x = l + w / 2; + this.top.y = t; + this.bottomLeft.x = l; + this.bottomLeft.y = b; + this.bottomRight.x = r; + this.bottomRight.y = b; + this.bottom.x = l + w / 2; + this.bottom.y = b; + this.center.x = l + w / 2; + this.center.y = b + h / 2; + this.left.x = l; + this.left.y = b + h / 2; + this.right.x = r; + this.right.y = b + h / 2; + } + }); + legacyCC.visibleRect = visibleRect; + + var getUint8ForString = String.prototype.charCodeAt; + function getUint8ForArray(idx) { + return this[idx]; + } + function murmurhash2_32_gc(input, seed) { + var l = input.length; + var h = seed ^ l; + var i = 0; + var getUint8 = typeof input === 'string' ? getUint8ForString : getUint8ForArray; + while (l >= 4) { + var k = getUint8.call(input, i) & 0xff | (getUint8.call(input, ++i) & 0xff) << 8 | (getUint8.call(input, ++i) & 0xff) << 16 | (getUint8.call(input, ++i) & 0xff) << 24; + k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16); + k ^= k >>> 24; + k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16); + h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16) ^ k; + l -= 4; + ++i; + } + switch (l) { + case 3: + h ^= (getUint8.call(input, i + 2) & 0xff) << 16; + case 2: + h ^= (getUint8.call(input, i + 1) & 0xff) << 8; + case 1: + h ^= getUint8.call(input, i) & 0xff; + h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16); + break; + } + h ^= h >>> 13; + h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16); + h ^= h >>> 15; + return h >>> 0; + } + + legacyCC.easing = easing; + + function syncNodeValues(node) { + var lpos = node._lpos; + node.setPositionForJS(lpos.x, lpos.y, lpos.z); + var lscale = node._lscale; + node.setScaleForJS(lscale.x, lscale.y, lscale.z); + var lrot = node._lrot; + node.setRotationForJS(lrot.x, lrot.y, lrot.z, lrot.w); + var euler = node._euler; + node.setRotationFromEulerForJS(euler.x, euler.y, euler.z); + } + function updateChildrenForDeserialize(node) { + if (!node) { + return; + } + var children = node.children; + if (!children) { + return; + } + var len = children.length; + if (!len) { + return; + } + node._setChildren(children); + for (var i = 0; i < len; ++i) { + var child = children[i]; + updateChildrenForDeserialize(child); + } + } + function ExtraEventMethods() {} + ExtraEventMethods.prototype.once = function once(type, callback, target) { + return this.on(type, callback, target, true); + }; + ExtraEventMethods.prototype.targetOff = function targetOff(typeOrTarget) { + this.removeAll(typeOrTarget); + }; + + var jsbUtils = /*#__PURE__*/Object.freeze({ + __proto__: null, + syncNodeValues: syncNodeValues, + updateChildrenForDeserialize: updateChildrenForDeserialize, + ExtraEventMethods: ExtraEventMethods + }); + exports('ci', jsbUtils); + + function shift(array, first, last) { + assertsArrayIndex(array, first); + assertsArrayIndex(array, last); + if (first === last) { + return array; + } + var element = array[first]; + if (first < last) { + for (var iElement = first + 1; iElement <= last; ++iElement) { + array[iElement - 1] = array[iElement]; + } + } else { + for (var _iElement = first; _iElement !== last; --_iElement) { + array[_iElement] = array[_iElement - 1]; + } + } + array[last] = element; + return array; + } + + var GarbageCollectionManager = function () { + function GarbageCollectionManager() { + this._finalizationRegistry = null; + this._gcObjects = new WeakMap(); + } + var _proto = GarbageCollectionManager.prototype; + _proto.registerGCObject = function registerGCObject(gcObject) { + { + return gcObject; + } + }; + _proto.init = function init() {}; + _proto.finalizationRegistryCallback = function finalizationRegistryCallback(token) { + var gcObject = this._gcObjects.get(token); + if (gcObject) { + this._gcObjects["delete"](token); + gcObject.destroy(); + } + this._finalizationRegistry.unregister(token); + }; + _proto.destroy = function destroy() {}; + return GarbageCollectionManager; + }(); + var garbageCollectionManager = exports('cw', new GarbageCollectionManager()); + + var GCObject = exports('cx', function () { + function GCObject() { + return garbageCollectionManager.registerGCObject(this); + } + var _proto = GCObject.prototype; + _proto.destroy = function destroy() {}; + return GCObject; + }()); + + function deepFlatten(strList, array) { + for (var _iterator = _createForOfIteratorHelperLoose(array), _step; !(_step = _iterator()).done;) { + var item = _step.value; + if (Array.isArray(item)) { + deepFlatten(strList, item); + } else { + strList.push(item); + } + } + } + function flattenCodeArray(array) { + var separator = ''; + var strList = []; + deepFlatten(strList, array); + return strList.join(separator); + } + + function applyMixins(derivedCtor, baseCtors) { + baseCtors.forEach(function (baseCtor) { + Object.getOwnPropertyNames(baseCtor.prototype).forEach(function (name) { + if (name !== 'constructor') { + Object.defineProperty(derivedCtor.prototype, name, Object.getOwnPropertyDescriptor(baseCtor.prototype, name)); + } + }); + }); + } + + legacyCC.math = math; + legacyCC.geometry = geometry; + + var deepCopy = function deepCopy(target, source, Ctor) { + for (var i = 0; i < source.length; ++i) { + if (target.length <= i) target.push(new Ctor()); + target[i].copy(source[i]); + } + target.length = source.length; + }; + var ObjectType; + (function (ObjectType) { + ObjectType[ObjectType["UNKNOWN"] = 0] = "UNKNOWN"; + ObjectType[ObjectType["SWAPCHAIN"] = 1] = "SWAPCHAIN"; + ObjectType[ObjectType["BUFFER"] = 2] = "BUFFER"; + ObjectType[ObjectType["TEXTURE"] = 3] = "TEXTURE"; + ObjectType[ObjectType["RENDER_PASS"] = 4] = "RENDER_PASS"; + ObjectType[ObjectType["FRAMEBUFFER"] = 5] = "FRAMEBUFFER"; + ObjectType[ObjectType["SAMPLER"] = 6] = "SAMPLER"; + ObjectType[ObjectType["SHADER"] = 7] = "SHADER"; + ObjectType[ObjectType["DESCRIPTOR_SET_LAYOUT"] = 8] = "DESCRIPTOR_SET_LAYOUT"; + ObjectType[ObjectType["PIPELINE_LAYOUT"] = 9] = "PIPELINE_LAYOUT"; + ObjectType[ObjectType["PIPELINE_STATE"] = 10] = "PIPELINE_STATE"; + ObjectType[ObjectType["DESCRIPTOR_SET"] = 11] = "DESCRIPTOR_SET"; + ObjectType[ObjectType["INPUT_ASSEMBLER"] = 12] = "INPUT_ASSEMBLER"; + ObjectType[ObjectType["COMMAND_BUFFER"] = 13] = "COMMAND_BUFFER"; + ObjectType[ObjectType["QUEUE"] = 14] = "QUEUE"; + ObjectType[ObjectType["QUERY_POOL"] = 15] = "QUERY_POOL"; + ObjectType[ObjectType["GLOBAL_BARRIER"] = 16] = "GLOBAL_BARRIER"; + ObjectType[ObjectType["TEXTURE_BARRIER"] = 17] = "TEXTURE_BARRIER"; + ObjectType[ObjectType["BUFFER_BARRIER"] = 18] = "BUFFER_BARRIER"; + ObjectType[ObjectType["COUNT"] = 19] = "COUNT"; + })(ObjectType || (ObjectType = {})); + var Status; + (function (Status) { + Status[Status["UNREADY"] = 0] = "UNREADY"; + Status[Status["FAILED"] = 1] = "FAILED"; + Status[Status["SUCCESS"] = 2] = "SUCCESS"; + })(Status || (Status = {})); + var API; + (function (API) { + API[API["UNKNOWN"] = 0] = "UNKNOWN"; + API[API["GLES2"] = 1] = "GLES2"; + API[API["GLES3"] = 2] = "GLES3"; + API[API["METAL"] = 3] = "METAL"; + API[API["VULKAN"] = 4] = "VULKAN"; + API[API["NVN"] = 5] = "NVN"; + API[API["WEBGL"] = 6] = "WEBGL"; + API[API["WEBGL2"] = 7] = "WEBGL2"; + API[API["WEBGPU"] = 8] = "WEBGPU"; + })(API || (API = {})); + var SurfaceTransform; + (function (SurfaceTransform) { + SurfaceTransform[SurfaceTransform["IDENTITY"] = 0] = "IDENTITY"; + SurfaceTransform[SurfaceTransform["ROTATE_90"] = 1] = "ROTATE_90"; + SurfaceTransform[SurfaceTransform["ROTATE_180"] = 2] = "ROTATE_180"; + SurfaceTransform[SurfaceTransform["ROTATE_270"] = 3] = "ROTATE_270"; + })(SurfaceTransform || (SurfaceTransform = {})); + var Feature; + (function (Feature) { + Feature[Feature["ELEMENT_INDEX_UINT"] = 0] = "ELEMENT_INDEX_UINT"; + Feature[Feature["INSTANCED_ARRAYS"] = 1] = "INSTANCED_ARRAYS"; + Feature[Feature["MULTIPLE_RENDER_TARGETS"] = 2] = "MULTIPLE_RENDER_TARGETS"; + Feature[Feature["BLEND_MINMAX"] = 3] = "BLEND_MINMAX"; + Feature[Feature["COMPUTE_SHADER"] = 4] = "COMPUTE_SHADER"; + Feature[Feature["INPUT_ATTACHMENT_BENEFIT"] = 5] = "INPUT_ATTACHMENT_BENEFIT"; + Feature[Feature["SUBPASS_COLOR_INPUT"] = 6] = "SUBPASS_COLOR_INPUT"; + Feature[Feature["SUBPASS_DEPTH_STENCIL_INPUT"] = 7] = "SUBPASS_DEPTH_STENCIL_INPUT"; + Feature[Feature["RASTERIZATION_ORDER_COHERENT"] = 8] = "RASTERIZATION_ORDER_COHERENT"; + Feature[Feature["MULTI_SAMPLE_RESOLVE_DEPTH_STENCIL"] = 9] = "MULTI_SAMPLE_RESOLVE_DEPTH_STENCIL"; + Feature[Feature["COUNT"] = 10] = "COUNT"; + })(Feature || (Feature = {})); + var Format; + (function (Format) { + Format[Format["UNKNOWN"] = 0] = "UNKNOWN"; + Format[Format["A8"] = 1] = "A8"; + Format[Format["L8"] = 2] = "L8"; + Format[Format["LA8"] = 3] = "LA8"; + Format[Format["R8"] = 4] = "R8"; + Format[Format["R8SN"] = 5] = "R8SN"; + Format[Format["R8UI"] = 6] = "R8UI"; + Format[Format["R8I"] = 7] = "R8I"; + Format[Format["R16F"] = 8] = "R16F"; + Format[Format["R16UI"] = 9] = "R16UI"; + Format[Format["R16I"] = 10] = "R16I"; + Format[Format["R32F"] = 11] = "R32F"; + Format[Format["R32UI"] = 12] = "R32UI"; + Format[Format["R32I"] = 13] = "R32I"; + Format[Format["RG8"] = 14] = "RG8"; + Format[Format["RG8SN"] = 15] = "RG8SN"; + Format[Format["RG8UI"] = 16] = "RG8UI"; + Format[Format["RG8I"] = 17] = "RG8I"; + Format[Format["RG16F"] = 18] = "RG16F"; + Format[Format["RG16UI"] = 19] = "RG16UI"; + Format[Format["RG16I"] = 20] = "RG16I"; + Format[Format["RG32F"] = 21] = "RG32F"; + Format[Format["RG32UI"] = 22] = "RG32UI"; + Format[Format["RG32I"] = 23] = "RG32I"; + Format[Format["RGB8"] = 24] = "RGB8"; + Format[Format["SRGB8"] = 25] = "SRGB8"; + Format[Format["RGB8SN"] = 26] = "RGB8SN"; + Format[Format["RGB8UI"] = 27] = "RGB8UI"; + Format[Format["RGB8I"] = 28] = "RGB8I"; + Format[Format["RGB16F"] = 29] = "RGB16F"; + Format[Format["RGB16UI"] = 30] = "RGB16UI"; + Format[Format["RGB16I"] = 31] = "RGB16I"; + Format[Format["RGB32F"] = 32] = "RGB32F"; + Format[Format["RGB32UI"] = 33] = "RGB32UI"; + Format[Format["RGB32I"] = 34] = "RGB32I"; + Format[Format["RGBA8"] = 35] = "RGBA8"; + Format[Format["BGRA8"] = 36] = "BGRA8"; + Format[Format["SRGB8_A8"] = 37] = "SRGB8_A8"; + Format[Format["RGBA8SN"] = 38] = "RGBA8SN"; + Format[Format["RGBA8UI"] = 39] = "RGBA8UI"; + Format[Format["RGBA8I"] = 40] = "RGBA8I"; + Format[Format["RGBA16F"] = 41] = "RGBA16F"; + Format[Format["RGBA16UI"] = 42] = "RGBA16UI"; + Format[Format["RGBA16I"] = 43] = "RGBA16I"; + Format[Format["RGBA32F"] = 44] = "RGBA32F"; + Format[Format["RGBA32UI"] = 45] = "RGBA32UI"; + Format[Format["RGBA32I"] = 46] = "RGBA32I"; + Format[Format["R5G6B5"] = 47] = "R5G6B5"; + Format[Format["R11G11B10F"] = 48] = "R11G11B10F"; + Format[Format["RGB5A1"] = 49] = "RGB5A1"; + Format[Format["RGBA4"] = 50] = "RGBA4"; + Format[Format["RGB10A2"] = 51] = "RGB10A2"; + Format[Format["RGB10A2UI"] = 52] = "RGB10A2UI"; + Format[Format["RGB9E5"] = 53] = "RGB9E5"; + Format[Format["DEPTH"] = 54] = "DEPTH"; + Format[Format["DEPTH_STENCIL"] = 55] = "DEPTH_STENCIL"; + Format[Format["BC1"] = 56] = "BC1"; + Format[Format["BC1_ALPHA"] = 57] = "BC1_ALPHA"; + Format[Format["BC1_SRGB"] = 58] = "BC1_SRGB"; + Format[Format["BC1_SRGB_ALPHA"] = 59] = "BC1_SRGB_ALPHA"; + Format[Format["BC2"] = 60] = "BC2"; + Format[Format["BC2_SRGB"] = 61] = "BC2_SRGB"; + Format[Format["BC3"] = 62] = "BC3"; + Format[Format["BC3_SRGB"] = 63] = "BC3_SRGB"; + Format[Format["BC4"] = 64] = "BC4"; + Format[Format["BC4_SNORM"] = 65] = "BC4_SNORM"; + Format[Format["BC5"] = 66] = "BC5"; + Format[Format["BC5_SNORM"] = 67] = "BC5_SNORM"; + Format[Format["BC6H_UF16"] = 68] = "BC6H_UF16"; + Format[Format["BC6H_SF16"] = 69] = "BC6H_SF16"; + Format[Format["BC7"] = 70] = "BC7"; + Format[Format["BC7_SRGB"] = 71] = "BC7_SRGB"; + Format[Format["ETC_RGB8"] = 72] = "ETC_RGB8"; + Format[Format["ETC2_RGB8"] = 73] = "ETC2_RGB8"; + Format[Format["ETC2_SRGB8"] = 74] = "ETC2_SRGB8"; + Format[Format["ETC2_RGB8_A1"] = 75] = "ETC2_RGB8_A1"; + Format[Format["ETC2_SRGB8_A1"] = 76] = "ETC2_SRGB8_A1"; + Format[Format["ETC2_RGBA8"] = 77] = "ETC2_RGBA8"; + Format[Format["ETC2_SRGB8_A8"] = 78] = "ETC2_SRGB8_A8"; + Format[Format["EAC_R11"] = 79] = "EAC_R11"; + Format[Format["EAC_R11SN"] = 80] = "EAC_R11SN"; + Format[Format["EAC_RG11"] = 81] = "EAC_RG11"; + Format[Format["EAC_RG11SN"] = 82] = "EAC_RG11SN"; + Format[Format["PVRTC_RGB2"] = 83] = "PVRTC_RGB2"; + Format[Format["PVRTC_RGBA2"] = 84] = "PVRTC_RGBA2"; + Format[Format["PVRTC_RGB4"] = 85] = "PVRTC_RGB4"; + Format[Format["PVRTC_RGBA4"] = 86] = "PVRTC_RGBA4"; + Format[Format["PVRTC2_2BPP"] = 87] = "PVRTC2_2BPP"; + Format[Format["PVRTC2_4BPP"] = 88] = "PVRTC2_4BPP"; + Format[Format["ASTC_RGBA_4X4"] = 89] = "ASTC_RGBA_4X4"; + Format[Format["ASTC_RGBA_5X4"] = 90] = "ASTC_RGBA_5X4"; + Format[Format["ASTC_RGBA_5X5"] = 91] = "ASTC_RGBA_5X5"; + Format[Format["ASTC_RGBA_6X5"] = 92] = "ASTC_RGBA_6X5"; + Format[Format["ASTC_RGBA_6X6"] = 93] = "ASTC_RGBA_6X6"; + Format[Format["ASTC_RGBA_8X5"] = 94] = "ASTC_RGBA_8X5"; + Format[Format["ASTC_RGBA_8X6"] = 95] = "ASTC_RGBA_8X6"; + Format[Format["ASTC_RGBA_8X8"] = 96] = "ASTC_RGBA_8X8"; + Format[Format["ASTC_RGBA_10X5"] = 97] = "ASTC_RGBA_10X5"; + Format[Format["ASTC_RGBA_10X6"] = 98] = "ASTC_RGBA_10X6"; + Format[Format["ASTC_RGBA_10X8"] = 99] = "ASTC_RGBA_10X8"; + Format[Format["ASTC_RGBA_10X10"] = 100] = "ASTC_RGBA_10X10"; + Format[Format["ASTC_RGBA_12X10"] = 101] = "ASTC_RGBA_12X10"; + Format[Format["ASTC_RGBA_12X12"] = 102] = "ASTC_RGBA_12X12"; + Format[Format["ASTC_SRGBA_4X4"] = 103] = "ASTC_SRGBA_4X4"; + Format[Format["ASTC_SRGBA_5X4"] = 104] = "ASTC_SRGBA_5X4"; + Format[Format["ASTC_SRGBA_5X5"] = 105] = "ASTC_SRGBA_5X5"; + Format[Format["ASTC_SRGBA_6X5"] = 106] = "ASTC_SRGBA_6X5"; + Format[Format["ASTC_SRGBA_6X6"] = 107] = "ASTC_SRGBA_6X6"; + Format[Format["ASTC_SRGBA_8X5"] = 108] = "ASTC_SRGBA_8X5"; + Format[Format["ASTC_SRGBA_8X6"] = 109] = "ASTC_SRGBA_8X6"; + Format[Format["ASTC_SRGBA_8X8"] = 110] = "ASTC_SRGBA_8X8"; + Format[Format["ASTC_SRGBA_10X5"] = 111] = "ASTC_SRGBA_10X5"; + Format[Format["ASTC_SRGBA_10X6"] = 112] = "ASTC_SRGBA_10X6"; + Format[Format["ASTC_SRGBA_10X8"] = 113] = "ASTC_SRGBA_10X8"; + Format[Format["ASTC_SRGBA_10X10"] = 114] = "ASTC_SRGBA_10X10"; + Format[Format["ASTC_SRGBA_12X10"] = 115] = "ASTC_SRGBA_12X10"; + Format[Format["ASTC_SRGBA_12X12"] = 116] = "ASTC_SRGBA_12X12"; + Format[Format["COUNT"] = 117] = "COUNT"; + })(Format || (Format = {})); + var FormatType; + (function (FormatType) { + FormatType[FormatType["NONE"] = 0] = "NONE"; + FormatType[FormatType["UNORM"] = 1] = "UNORM"; + FormatType[FormatType["SNORM"] = 2] = "SNORM"; + FormatType[FormatType["UINT"] = 3] = "UINT"; + FormatType[FormatType["INT"] = 4] = "INT"; + FormatType[FormatType["UFLOAT"] = 5] = "UFLOAT"; + FormatType[FormatType["FLOAT"] = 6] = "FLOAT"; + })(FormatType || (FormatType = {})); + var Type$1; + (function (Type) { + Type[Type["UNKNOWN"] = 0] = "UNKNOWN"; + Type[Type["BOOL"] = 1] = "BOOL"; + Type[Type["BOOL2"] = 2] = "BOOL2"; + Type[Type["BOOL3"] = 3] = "BOOL3"; + Type[Type["BOOL4"] = 4] = "BOOL4"; + Type[Type["INT"] = 5] = "INT"; + Type[Type["INT2"] = 6] = "INT2"; + Type[Type["INT3"] = 7] = "INT3"; + Type[Type["INT4"] = 8] = "INT4"; + Type[Type["UINT"] = 9] = "UINT"; + Type[Type["UINT2"] = 10] = "UINT2"; + Type[Type["UINT3"] = 11] = "UINT3"; + Type[Type["UINT4"] = 12] = "UINT4"; + Type[Type["FLOAT"] = 13] = "FLOAT"; + Type[Type["FLOAT2"] = 14] = "FLOAT2"; + Type[Type["FLOAT3"] = 15] = "FLOAT3"; + Type[Type["FLOAT4"] = 16] = "FLOAT4"; + Type[Type["MAT2"] = 17] = "MAT2"; + Type[Type["MAT2X3"] = 18] = "MAT2X3"; + Type[Type["MAT2X4"] = 19] = "MAT2X4"; + Type[Type["MAT3X2"] = 20] = "MAT3X2"; + Type[Type["MAT3"] = 21] = "MAT3"; + Type[Type["MAT3X4"] = 22] = "MAT3X4"; + Type[Type["MAT4X2"] = 23] = "MAT4X2"; + Type[Type["MAT4X3"] = 24] = "MAT4X3"; + Type[Type["MAT4"] = 25] = "MAT4"; + Type[Type["SAMPLER1D"] = 26] = "SAMPLER1D"; + Type[Type["SAMPLER1D_ARRAY"] = 27] = "SAMPLER1D_ARRAY"; + Type[Type["SAMPLER2D"] = 28] = "SAMPLER2D"; + Type[Type["SAMPLER2D_ARRAY"] = 29] = "SAMPLER2D_ARRAY"; + Type[Type["SAMPLER3D"] = 30] = "SAMPLER3D"; + Type[Type["SAMPLER_CUBE"] = 31] = "SAMPLER_CUBE"; + Type[Type["SAMPLER"] = 32] = "SAMPLER"; + Type[Type["TEXTURE1D"] = 33] = "TEXTURE1D"; + Type[Type["TEXTURE1D_ARRAY"] = 34] = "TEXTURE1D_ARRAY"; + Type[Type["TEXTURE2D"] = 35] = "TEXTURE2D"; + Type[Type["TEXTURE2D_ARRAY"] = 36] = "TEXTURE2D_ARRAY"; + Type[Type["TEXTURE3D"] = 37] = "TEXTURE3D"; + Type[Type["TEXTURE_CUBE"] = 38] = "TEXTURE_CUBE"; + Type[Type["IMAGE1D"] = 39] = "IMAGE1D"; + Type[Type["IMAGE1D_ARRAY"] = 40] = "IMAGE1D_ARRAY"; + Type[Type["IMAGE2D"] = 41] = "IMAGE2D"; + Type[Type["IMAGE2D_ARRAY"] = 42] = "IMAGE2D_ARRAY"; + Type[Type["IMAGE3D"] = 43] = "IMAGE3D"; + Type[Type["IMAGE_CUBE"] = 44] = "IMAGE_CUBE"; + Type[Type["SUBPASS_INPUT"] = 45] = "SUBPASS_INPUT"; + Type[Type["COUNT"] = 46] = "COUNT"; + })(Type$1 || (Type$1 = {})); + var BufferUsageBit; + (function (BufferUsageBit) { + BufferUsageBit[BufferUsageBit["NONE"] = 0] = "NONE"; + BufferUsageBit[BufferUsageBit["TRANSFER_SRC"] = 1] = "TRANSFER_SRC"; + BufferUsageBit[BufferUsageBit["TRANSFER_DST"] = 2] = "TRANSFER_DST"; + BufferUsageBit[BufferUsageBit["INDEX"] = 4] = "INDEX"; + BufferUsageBit[BufferUsageBit["VERTEX"] = 8] = "VERTEX"; + BufferUsageBit[BufferUsageBit["UNIFORM"] = 16] = "UNIFORM"; + BufferUsageBit[BufferUsageBit["STORAGE"] = 32] = "STORAGE"; + BufferUsageBit[BufferUsageBit["INDIRECT"] = 64] = "INDIRECT"; + })(BufferUsageBit || (BufferUsageBit = {})); + var BufferFlagBit; + (function (BufferFlagBit) { + BufferFlagBit[BufferFlagBit["NONE"] = 0] = "NONE"; + })(BufferFlagBit || (BufferFlagBit = {})); + var MemoryAccessBit; + (function (MemoryAccessBit) { + MemoryAccessBit[MemoryAccessBit["NONE"] = 0] = "NONE"; + MemoryAccessBit[MemoryAccessBit["READ_ONLY"] = 1] = "READ_ONLY"; + MemoryAccessBit[MemoryAccessBit["WRITE_ONLY"] = 2] = "WRITE_ONLY"; + MemoryAccessBit[MemoryAccessBit["READ_WRITE"] = 3] = "READ_WRITE"; + })(MemoryAccessBit || (MemoryAccessBit = {})); + var MemoryUsageBit; + (function (MemoryUsageBit) { + MemoryUsageBit[MemoryUsageBit["NONE"] = 0] = "NONE"; + MemoryUsageBit[MemoryUsageBit["DEVICE"] = 1] = "DEVICE"; + MemoryUsageBit[MemoryUsageBit["HOST"] = 2] = "HOST"; + })(MemoryUsageBit || (MemoryUsageBit = {})); + var TextureType; + (function (TextureType) { + TextureType[TextureType["TEX1D"] = 0] = "TEX1D"; + TextureType[TextureType["TEX2D"] = 1] = "TEX2D"; + TextureType[TextureType["TEX3D"] = 2] = "TEX3D"; + TextureType[TextureType["CUBE"] = 3] = "CUBE"; + TextureType[TextureType["TEX1D_ARRAY"] = 4] = "TEX1D_ARRAY"; + TextureType[TextureType["TEX2D_ARRAY"] = 5] = "TEX2D_ARRAY"; + })(TextureType || (TextureType = {})); + var TextureUsageBit; + (function (TextureUsageBit) { + TextureUsageBit[TextureUsageBit["NONE"] = 0] = "NONE"; + TextureUsageBit[TextureUsageBit["TRANSFER_SRC"] = 1] = "TRANSFER_SRC"; + TextureUsageBit[TextureUsageBit["TRANSFER_DST"] = 2] = "TRANSFER_DST"; + TextureUsageBit[TextureUsageBit["SAMPLED"] = 4] = "SAMPLED"; + TextureUsageBit[TextureUsageBit["STORAGE"] = 8] = "STORAGE"; + TextureUsageBit[TextureUsageBit["COLOR_ATTACHMENT"] = 16] = "COLOR_ATTACHMENT"; + TextureUsageBit[TextureUsageBit["DEPTH_STENCIL_ATTACHMENT"] = 32] = "DEPTH_STENCIL_ATTACHMENT"; + TextureUsageBit[TextureUsageBit["INPUT_ATTACHMENT"] = 64] = "INPUT_ATTACHMENT"; + })(TextureUsageBit || (TextureUsageBit = {})); + var TextureFlagBit; + (function (TextureFlagBit) { + TextureFlagBit[TextureFlagBit["NONE"] = 0] = "NONE"; + TextureFlagBit[TextureFlagBit["GEN_MIPMAP"] = 1] = "GEN_MIPMAP"; + TextureFlagBit[TextureFlagBit["GENERAL_LAYOUT"] = 2] = "GENERAL_LAYOUT"; + TextureFlagBit[TextureFlagBit["EXTERNAL_OES"] = 4] = "EXTERNAL_OES"; + TextureFlagBit[TextureFlagBit["EXTERNAL_NORMAL"] = 8] = "EXTERNAL_NORMAL"; + TextureFlagBit[TextureFlagBit["LAZILY_ALLOCATED"] = 16] = "LAZILY_ALLOCATED"; + TextureFlagBit[TextureFlagBit["MUTABLE_VIEW_FORMAT"] = 64] = "MUTABLE_VIEW_FORMAT"; + })(TextureFlagBit || (TextureFlagBit = {})); + var FormatFeatureBit; + (function (FormatFeatureBit) { + FormatFeatureBit[FormatFeatureBit["NONE"] = 0] = "NONE"; + FormatFeatureBit[FormatFeatureBit["RENDER_TARGET"] = 1] = "RENDER_TARGET"; + FormatFeatureBit[FormatFeatureBit["SAMPLED_TEXTURE"] = 2] = "SAMPLED_TEXTURE"; + FormatFeatureBit[FormatFeatureBit["LINEAR_FILTER"] = 4] = "LINEAR_FILTER"; + FormatFeatureBit[FormatFeatureBit["STORAGE_TEXTURE"] = 8] = "STORAGE_TEXTURE"; + FormatFeatureBit[FormatFeatureBit["VERTEX_ATTRIBUTE"] = 16] = "VERTEX_ATTRIBUTE"; + })(FormatFeatureBit || (FormatFeatureBit = {})); + var SampleCount; + (function (SampleCount) { + SampleCount[SampleCount["X1"] = 1] = "X1"; + SampleCount[SampleCount["X2"] = 2] = "X2"; + SampleCount[SampleCount["X4"] = 4] = "X4"; + SampleCount[SampleCount["X8"] = 8] = "X8"; + SampleCount[SampleCount["X16"] = 16] = "X16"; + SampleCount[SampleCount["X32"] = 32] = "X32"; + SampleCount[SampleCount["X64"] = 64] = "X64"; + })(SampleCount || (SampleCount = {})); + var VsyncMode; + (function (VsyncMode) { + VsyncMode[VsyncMode["OFF"] = 0] = "OFF"; + VsyncMode[VsyncMode["ON"] = 1] = "ON"; + VsyncMode[VsyncMode["RELAXED"] = 2] = "RELAXED"; + VsyncMode[VsyncMode["MAILBOX"] = 3] = "MAILBOX"; + VsyncMode[VsyncMode["HALF"] = 4] = "HALF"; + })(VsyncMode || (VsyncMode = {})); + var Filter$1; + (function (Filter) { + Filter[Filter["NONE"] = 0] = "NONE"; + Filter[Filter["POINT"] = 1] = "POINT"; + Filter[Filter["LINEAR"] = 2] = "LINEAR"; + Filter[Filter["ANISOTROPIC"] = 3] = "ANISOTROPIC"; + })(Filter$1 || (Filter$1 = {})); + var Address; + (function (Address) { + Address[Address["WRAP"] = 0] = "WRAP"; + Address[Address["MIRROR"] = 1] = "MIRROR"; + Address[Address["CLAMP"] = 2] = "CLAMP"; + Address[Address["BORDER"] = 3] = "BORDER"; + })(Address || (Address = {})); + var ComparisonFunc; + (function (ComparisonFunc) { + ComparisonFunc[ComparisonFunc["NEVER"] = 0] = "NEVER"; + ComparisonFunc[ComparisonFunc["LESS"] = 1] = "LESS"; + ComparisonFunc[ComparisonFunc["EQUAL"] = 2] = "EQUAL"; + ComparisonFunc[ComparisonFunc["LESS_EQUAL"] = 3] = "LESS_EQUAL"; + ComparisonFunc[ComparisonFunc["GREATER"] = 4] = "GREATER"; + ComparisonFunc[ComparisonFunc["NOT_EQUAL"] = 5] = "NOT_EQUAL"; + ComparisonFunc[ComparisonFunc["GREATER_EQUAL"] = 6] = "GREATER_EQUAL"; + ComparisonFunc[ComparisonFunc["ALWAYS"] = 7] = "ALWAYS"; + })(ComparisonFunc || (ComparisonFunc = {})); + var StencilOp; + (function (StencilOp) { + StencilOp[StencilOp["ZERO"] = 0] = "ZERO"; + StencilOp[StencilOp["KEEP"] = 1] = "KEEP"; + StencilOp[StencilOp["REPLACE"] = 2] = "REPLACE"; + StencilOp[StencilOp["INCR"] = 3] = "INCR"; + StencilOp[StencilOp["DECR"] = 4] = "DECR"; + StencilOp[StencilOp["INVERT"] = 5] = "INVERT"; + StencilOp[StencilOp["INCR_WRAP"] = 6] = "INCR_WRAP"; + StencilOp[StencilOp["DECR_WRAP"] = 7] = "DECR_WRAP"; + })(StencilOp || (StencilOp = {})); + var BlendFactor; + (function (BlendFactor) { + BlendFactor[BlendFactor["ZERO"] = 0] = "ZERO"; + BlendFactor[BlendFactor["ONE"] = 1] = "ONE"; + BlendFactor[BlendFactor["SRC_ALPHA"] = 2] = "SRC_ALPHA"; + BlendFactor[BlendFactor["DST_ALPHA"] = 3] = "DST_ALPHA"; + BlendFactor[BlendFactor["ONE_MINUS_SRC_ALPHA"] = 4] = "ONE_MINUS_SRC_ALPHA"; + BlendFactor[BlendFactor["ONE_MINUS_DST_ALPHA"] = 5] = "ONE_MINUS_DST_ALPHA"; + BlendFactor[BlendFactor["SRC_COLOR"] = 6] = "SRC_COLOR"; + BlendFactor[BlendFactor["DST_COLOR"] = 7] = "DST_COLOR"; + BlendFactor[BlendFactor["ONE_MINUS_SRC_COLOR"] = 8] = "ONE_MINUS_SRC_COLOR"; + BlendFactor[BlendFactor["ONE_MINUS_DST_COLOR"] = 9] = "ONE_MINUS_DST_COLOR"; + BlendFactor[BlendFactor["SRC_ALPHA_SATURATE"] = 10] = "SRC_ALPHA_SATURATE"; + BlendFactor[BlendFactor["CONSTANT_COLOR"] = 11] = "CONSTANT_COLOR"; + BlendFactor[BlendFactor["ONE_MINUS_CONSTANT_COLOR"] = 12] = "ONE_MINUS_CONSTANT_COLOR"; + BlendFactor[BlendFactor["CONSTANT_ALPHA"] = 13] = "CONSTANT_ALPHA"; + BlendFactor[BlendFactor["ONE_MINUS_CONSTANT_ALPHA"] = 14] = "ONE_MINUS_CONSTANT_ALPHA"; + })(BlendFactor || (BlendFactor = {})); + var BlendOp; + (function (BlendOp) { + BlendOp[BlendOp["ADD"] = 0] = "ADD"; + BlendOp[BlendOp["SUB"] = 1] = "SUB"; + BlendOp[BlendOp["REV_SUB"] = 2] = "REV_SUB"; + BlendOp[BlendOp["MIN"] = 3] = "MIN"; + BlendOp[BlendOp["MAX"] = 4] = "MAX"; + })(BlendOp || (BlendOp = {})); + var ColorMask; + (function (ColorMask) { + ColorMask[ColorMask["NONE"] = 0] = "NONE"; + ColorMask[ColorMask["R"] = 1] = "R"; + ColorMask[ColorMask["G"] = 2] = "G"; + ColorMask[ColorMask["B"] = 4] = "B"; + ColorMask[ColorMask["A"] = 8] = "A"; + ColorMask[ColorMask["ALL"] = 15] = "ALL"; + })(ColorMask || (ColorMask = {})); + var ShaderStageFlagBit; + (function (ShaderStageFlagBit) { + ShaderStageFlagBit[ShaderStageFlagBit["NONE"] = 0] = "NONE"; + ShaderStageFlagBit[ShaderStageFlagBit["VERTEX"] = 1] = "VERTEX"; + ShaderStageFlagBit[ShaderStageFlagBit["CONTROL"] = 2] = "CONTROL"; + ShaderStageFlagBit[ShaderStageFlagBit["EVALUATION"] = 4] = "EVALUATION"; + ShaderStageFlagBit[ShaderStageFlagBit["GEOMETRY"] = 8] = "GEOMETRY"; + ShaderStageFlagBit[ShaderStageFlagBit["FRAGMENT"] = 16] = "FRAGMENT"; + ShaderStageFlagBit[ShaderStageFlagBit["COMPUTE"] = 32] = "COMPUTE"; + ShaderStageFlagBit[ShaderStageFlagBit["ALL"] = 63] = "ALL"; + })(ShaderStageFlagBit || (ShaderStageFlagBit = {})); + var LoadOp; + (function (LoadOp) { + LoadOp[LoadOp["LOAD"] = 0] = "LOAD"; + LoadOp[LoadOp["CLEAR"] = 1] = "CLEAR"; + LoadOp[LoadOp["DISCARD"] = 2] = "DISCARD"; + })(LoadOp || (LoadOp = {})); + var StoreOp; + (function (StoreOp) { + StoreOp[StoreOp["STORE"] = 0] = "STORE"; + StoreOp[StoreOp["DISCARD"] = 1] = "DISCARD"; + })(StoreOp || (StoreOp = {})); + var AccessFlagBit; + (function (AccessFlagBit) { + AccessFlagBit[AccessFlagBit["NONE"] = 0] = "NONE"; + AccessFlagBit[AccessFlagBit["INDIRECT_BUFFER"] = 1] = "INDIRECT_BUFFER"; + AccessFlagBit[AccessFlagBit["INDEX_BUFFER"] = 2] = "INDEX_BUFFER"; + AccessFlagBit[AccessFlagBit["VERTEX_BUFFER"] = 4] = "VERTEX_BUFFER"; + AccessFlagBit[AccessFlagBit["VERTEX_SHADER_READ_UNIFORM_BUFFER"] = 8] = "VERTEX_SHADER_READ_UNIFORM_BUFFER"; + AccessFlagBit[AccessFlagBit["VERTEX_SHADER_READ_TEXTURE"] = 16] = "VERTEX_SHADER_READ_TEXTURE"; + AccessFlagBit[AccessFlagBit["VERTEX_SHADER_READ_OTHER"] = 32] = "VERTEX_SHADER_READ_OTHER"; + AccessFlagBit[AccessFlagBit["FRAGMENT_SHADER_READ_UNIFORM_BUFFER"] = 64] = "FRAGMENT_SHADER_READ_UNIFORM_BUFFER"; + AccessFlagBit[AccessFlagBit["FRAGMENT_SHADER_READ_TEXTURE"] = 128] = "FRAGMENT_SHADER_READ_TEXTURE"; + AccessFlagBit[AccessFlagBit["FRAGMENT_SHADER_READ_COLOR_INPUT_ATTACHMENT"] = 256] = "FRAGMENT_SHADER_READ_COLOR_INPUT_ATTACHMENT"; + AccessFlagBit[AccessFlagBit["FRAGMENT_SHADER_READ_DEPTH_STENCIL_INPUT_ATTACHMENT"] = 512] = "FRAGMENT_SHADER_READ_DEPTH_STENCIL_INPUT_ATTACHMENT"; + AccessFlagBit[AccessFlagBit["FRAGMENT_SHADER_READ_OTHER"] = 1024] = "FRAGMENT_SHADER_READ_OTHER"; + AccessFlagBit[AccessFlagBit["COLOR_ATTACHMENT_READ"] = 2048] = "COLOR_ATTACHMENT_READ"; + AccessFlagBit[AccessFlagBit["DEPTH_STENCIL_ATTACHMENT_READ"] = 4096] = "DEPTH_STENCIL_ATTACHMENT_READ"; + AccessFlagBit[AccessFlagBit["COMPUTE_SHADER_READ_UNIFORM_BUFFER"] = 8192] = "COMPUTE_SHADER_READ_UNIFORM_BUFFER"; + AccessFlagBit[AccessFlagBit["COMPUTE_SHADER_READ_TEXTURE"] = 16384] = "COMPUTE_SHADER_READ_TEXTURE"; + AccessFlagBit[AccessFlagBit["COMPUTE_SHADER_READ_OTHER"] = 32768] = "COMPUTE_SHADER_READ_OTHER"; + AccessFlagBit[AccessFlagBit["TRANSFER_READ"] = 65536] = "TRANSFER_READ"; + AccessFlagBit[AccessFlagBit["HOST_READ"] = 131072] = "HOST_READ"; + AccessFlagBit[AccessFlagBit["PRESENT"] = 262144] = "PRESENT"; + AccessFlagBit[AccessFlagBit["VERTEX_SHADER_WRITE"] = 524288] = "VERTEX_SHADER_WRITE"; + AccessFlagBit[AccessFlagBit["FRAGMENT_SHADER_WRITE"] = 1048576] = "FRAGMENT_SHADER_WRITE"; + AccessFlagBit[AccessFlagBit["COLOR_ATTACHMENT_WRITE"] = 2097152] = "COLOR_ATTACHMENT_WRITE"; + AccessFlagBit[AccessFlagBit["DEPTH_STENCIL_ATTACHMENT_WRITE"] = 4194304] = "DEPTH_STENCIL_ATTACHMENT_WRITE"; + AccessFlagBit[AccessFlagBit["COMPUTE_SHADER_WRITE"] = 8388608] = "COMPUTE_SHADER_WRITE"; + AccessFlagBit[AccessFlagBit["TRANSFER_WRITE"] = 16777216] = "TRANSFER_WRITE"; + AccessFlagBit[AccessFlagBit["HOST_PREINITIALIZED"] = 33554432] = "HOST_PREINITIALIZED"; + AccessFlagBit[AccessFlagBit["HOST_WRITE"] = 67108864] = "HOST_WRITE"; + })(AccessFlagBit || (AccessFlagBit = {})); + var ResolveMode; + (function (ResolveMode) { + ResolveMode[ResolveMode["NONE"] = 0] = "NONE"; + ResolveMode[ResolveMode["SAMPLE_ZERO"] = 1] = "SAMPLE_ZERO"; + ResolveMode[ResolveMode["AVERAGE"] = 2] = "AVERAGE"; + ResolveMode[ResolveMode["MIN"] = 3] = "MIN"; + ResolveMode[ResolveMode["MAX"] = 4] = "MAX"; + })(ResolveMode || (ResolveMode = {})); + var PipelineBindPoint; + (function (PipelineBindPoint) { + PipelineBindPoint[PipelineBindPoint["GRAPHICS"] = 0] = "GRAPHICS"; + PipelineBindPoint[PipelineBindPoint["COMPUTE"] = 1] = "COMPUTE"; + PipelineBindPoint[PipelineBindPoint["RAY_TRACING"] = 2] = "RAY_TRACING"; + })(PipelineBindPoint || (PipelineBindPoint = {})); + var PrimitiveMode; + (function (PrimitiveMode) { + PrimitiveMode[PrimitiveMode["POINT_LIST"] = 0] = "POINT_LIST"; + PrimitiveMode[PrimitiveMode["LINE_LIST"] = 1] = "LINE_LIST"; + PrimitiveMode[PrimitiveMode["LINE_STRIP"] = 2] = "LINE_STRIP"; + PrimitiveMode[PrimitiveMode["LINE_LOOP"] = 3] = "LINE_LOOP"; + PrimitiveMode[PrimitiveMode["LINE_LIST_ADJACENCY"] = 4] = "LINE_LIST_ADJACENCY"; + PrimitiveMode[PrimitiveMode["LINE_STRIP_ADJACENCY"] = 5] = "LINE_STRIP_ADJACENCY"; + PrimitiveMode[PrimitiveMode["ISO_LINE_LIST"] = 6] = "ISO_LINE_LIST"; + PrimitiveMode[PrimitiveMode["TRIANGLE_LIST"] = 7] = "TRIANGLE_LIST"; + PrimitiveMode[PrimitiveMode["TRIANGLE_STRIP"] = 8] = "TRIANGLE_STRIP"; + PrimitiveMode[PrimitiveMode["TRIANGLE_FAN"] = 9] = "TRIANGLE_FAN"; + PrimitiveMode[PrimitiveMode["TRIANGLE_LIST_ADJACENCY"] = 10] = "TRIANGLE_LIST_ADJACENCY"; + PrimitiveMode[PrimitiveMode["TRIANGLE_STRIP_ADJACENCY"] = 11] = "TRIANGLE_STRIP_ADJACENCY"; + PrimitiveMode[PrimitiveMode["TRIANGLE_PATCH_ADJACENCY"] = 12] = "TRIANGLE_PATCH_ADJACENCY"; + PrimitiveMode[PrimitiveMode["QUAD_PATCH_LIST"] = 13] = "QUAD_PATCH_LIST"; + })(PrimitiveMode || (PrimitiveMode = {})); + var PolygonMode; + (function (PolygonMode) { + PolygonMode[PolygonMode["FILL"] = 0] = "FILL"; + PolygonMode[PolygonMode["POINT"] = 1] = "POINT"; + PolygonMode[PolygonMode["LINE"] = 2] = "LINE"; + })(PolygonMode || (PolygonMode = {})); + var ShadeModel; + (function (ShadeModel) { + ShadeModel[ShadeModel["GOURAND"] = 0] = "GOURAND"; + ShadeModel[ShadeModel["FLAT"] = 1] = "FLAT"; + })(ShadeModel || (ShadeModel = {})); + var CullMode; + (function (CullMode) { + CullMode[CullMode["NONE"] = 0] = "NONE"; + CullMode[CullMode["FRONT"] = 1] = "FRONT"; + CullMode[CullMode["BACK"] = 2] = "BACK"; + })(CullMode || (CullMode = {})); + var DynamicStateFlagBit; + (function (DynamicStateFlagBit) { + DynamicStateFlagBit[DynamicStateFlagBit["NONE"] = 0] = "NONE"; + DynamicStateFlagBit[DynamicStateFlagBit["LINE_WIDTH"] = 1] = "LINE_WIDTH"; + DynamicStateFlagBit[DynamicStateFlagBit["DEPTH_BIAS"] = 2] = "DEPTH_BIAS"; + DynamicStateFlagBit[DynamicStateFlagBit["BLEND_CONSTANTS"] = 4] = "BLEND_CONSTANTS"; + DynamicStateFlagBit[DynamicStateFlagBit["DEPTH_BOUNDS"] = 8] = "DEPTH_BOUNDS"; + DynamicStateFlagBit[DynamicStateFlagBit["STENCIL_WRITE_MASK"] = 16] = "STENCIL_WRITE_MASK"; + DynamicStateFlagBit[DynamicStateFlagBit["STENCIL_COMPARE_MASK"] = 32] = "STENCIL_COMPARE_MASK"; + })(DynamicStateFlagBit || (DynamicStateFlagBit = {})); + var StencilFace; + (function (StencilFace) { + StencilFace[StencilFace["FRONT"] = 1] = "FRONT"; + StencilFace[StencilFace["BACK"] = 2] = "BACK"; + StencilFace[StencilFace["ALL"] = 3] = "ALL"; + })(StencilFace || (StencilFace = {})); + var DescriptorType; + (function (DescriptorType) { + DescriptorType[DescriptorType["UNKNOWN"] = 0] = "UNKNOWN"; + DescriptorType[DescriptorType["UNIFORM_BUFFER"] = 1] = "UNIFORM_BUFFER"; + DescriptorType[DescriptorType["DYNAMIC_UNIFORM_BUFFER"] = 2] = "DYNAMIC_UNIFORM_BUFFER"; + DescriptorType[DescriptorType["STORAGE_BUFFER"] = 4] = "STORAGE_BUFFER"; + DescriptorType[DescriptorType["DYNAMIC_STORAGE_BUFFER"] = 8] = "DYNAMIC_STORAGE_BUFFER"; + DescriptorType[DescriptorType["SAMPLER_TEXTURE"] = 16] = "SAMPLER_TEXTURE"; + DescriptorType[DescriptorType["SAMPLER"] = 32] = "SAMPLER"; + DescriptorType[DescriptorType["TEXTURE"] = 64] = "TEXTURE"; + DescriptorType[DescriptorType["STORAGE_IMAGE"] = 128] = "STORAGE_IMAGE"; + DescriptorType[DescriptorType["INPUT_ATTACHMENT"] = 256] = "INPUT_ATTACHMENT"; + })(DescriptorType || (DescriptorType = {})); + var QueueType; + (function (QueueType) { + QueueType[QueueType["GRAPHICS"] = 0] = "GRAPHICS"; + QueueType[QueueType["COMPUTE"] = 1] = "COMPUTE"; + QueueType[QueueType["TRANSFER"] = 2] = "TRANSFER"; + })(QueueType || (QueueType = {})); + var QueryType; + (function (QueryType) { + QueryType[QueryType["OCCLUSION"] = 0] = "OCCLUSION"; + QueryType[QueryType["PIPELINE_STATISTICS"] = 1] = "PIPELINE_STATISTICS"; + QueryType[QueryType["TIMESTAMP"] = 2] = "TIMESTAMP"; + })(QueryType || (QueryType = {})); + var CommandBufferType; + (function (CommandBufferType) { + CommandBufferType[CommandBufferType["PRIMARY"] = 0] = "PRIMARY"; + CommandBufferType[CommandBufferType["SECONDARY"] = 1] = "SECONDARY"; + })(CommandBufferType || (CommandBufferType = {})); + var ClearFlagBit; + (function (ClearFlagBit) { + ClearFlagBit[ClearFlagBit["NONE"] = 0] = "NONE"; + ClearFlagBit[ClearFlagBit["COLOR"] = 1] = "COLOR"; + ClearFlagBit[ClearFlagBit["DEPTH"] = 2] = "DEPTH"; + ClearFlagBit[ClearFlagBit["STENCIL"] = 4] = "STENCIL"; + ClearFlagBit[ClearFlagBit["DEPTH_STENCIL"] = 6] = "DEPTH_STENCIL"; + ClearFlagBit[ClearFlagBit["ALL"] = 7] = "ALL"; + })(ClearFlagBit || (ClearFlagBit = {})); + var BarrierType; + (function (BarrierType) { + BarrierType[BarrierType["FULL"] = 0] = "FULL"; + BarrierType[BarrierType["SPLIT_BEGIN"] = 1] = "SPLIT_BEGIN"; + BarrierType[BarrierType["SPLIT_END"] = 2] = "SPLIT_END"; + })(BarrierType || (BarrierType = {})); + var PassType; + (function (PassType) { + PassType[PassType["RASTER"] = 0] = "RASTER"; + PassType[PassType["COMPUTE"] = 1] = "COMPUTE"; + PassType[PassType["COPY"] = 2] = "COPY"; + PassType[PassType["MOVE"] = 3] = "MOVE"; + PassType[PassType["RAYTRACE"] = 4] = "RAYTRACE"; + PassType[PassType["PRESENT"] = 5] = "PRESENT"; + })(PassType || (PassType = {})); + var Size = function () { + function Size(x, y, z) { + if (x === void 0) { + x = 0; + } + if (y === void 0) { + y = 0; + } + if (z === void 0) { + z = 0; + } + this.x = x; + this.y = y; + this.z = z; + } + var _proto = Size.prototype; + _proto.copy = function copy(info) { + this.x = info.x; + this.y = info.y; + this.z = info.z; + return this; + }; + return Size; + }(); + var DeviceCaps = function () { + function DeviceCaps(maxVertexAttributes, maxVertexUniformVectors, maxFragmentUniformVectors, maxTextureUnits, maxImageUnits, maxVertexTextureUnits, maxColorRenderTargets, maxShaderStorageBufferBindings, maxShaderStorageBlockSize, maxUniformBufferBindings, maxUniformBlockSize, maxTextureSize, maxCubeMapTextureSize, maxArrayTextureLayers, max3DTextureSize, uboOffsetAlignment, maxComputeSharedMemorySize, maxComputeWorkGroupInvocations, maxComputeWorkGroupSize, maxComputeWorkGroupCount, supportQuery, clipSpaceMinZ, screenSpaceSignY, clipSpaceSignY) { + if (maxVertexAttributes === void 0) { + maxVertexAttributes = 0; + } + if (maxVertexUniformVectors === void 0) { + maxVertexUniformVectors = 0; + } + if (maxFragmentUniformVectors === void 0) { + maxFragmentUniformVectors = 0; + } + if (maxTextureUnits === void 0) { + maxTextureUnits = 0; + } + if (maxImageUnits === void 0) { + maxImageUnits = 0; + } + if (maxVertexTextureUnits === void 0) { + maxVertexTextureUnits = 0; + } + if (maxColorRenderTargets === void 0) { + maxColorRenderTargets = 0; + } + if (maxShaderStorageBufferBindings === void 0) { + maxShaderStorageBufferBindings = 0; + } + if (maxShaderStorageBlockSize === void 0) { + maxShaderStorageBlockSize = 0; + } + if (maxUniformBufferBindings === void 0) { + maxUniformBufferBindings = 0; + } + if (maxUniformBlockSize === void 0) { + maxUniformBlockSize = 0; + } + if (maxTextureSize === void 0) { + maxTextureSize = 0; + } + if (maxCubeMapTextureSize === void 0) { + maxCubeMapTextureSize = 0; + } + if (maxArrayTextureLayers === void 0) { + maxArrayTextureLayers = 0; + } + if (max3DTextureSize === void 0) { + max3DTextureSize = 0; + } + if (uboOffsetAlignment === void 0) { + uboOffsetAlignment = 1; + } + if (maxComputeSharedMemorySize === void 0) { + maxComputeSharedMemorySize = 0; + } + if (maxComputeWorkGroupInvocations === void 0) { + maxComputeWorkGroupInvocations = 0; + } + if (maxComputeWorkGroupSize === void 0) { + maxComputeWorkGroupSize = new Size(); + } + if (maxComputeWorkGroupCount === void 0) { + maxComputeWorkGroupCount = new Size(); + } + if (supportQuery === void 0) { + supportQuery = false; + } + if (clipSpaceMinZ === void 0) { + clipSpaceMinZ = -1; + } + if (screenSpaceSignY === void 0) { + screenSpaceSignY = 1; + } + if (clipSpaceSignY === void 0) { + clipSpaceSignY = 1; + } + this.maxVertexAttributes = maxVertexAttributes; + this.maxVertexUniformVectors = maxVertexUniformVectors; + this.maxFragmentUniformVectors = maxFragmentUniformVectors; + this.maxTextureUnits = maxTextureUnits; + this.maxImageUnits = maxImageUnits; + this.maxVertexTextureUnits = maxVertexTextureUnits; + this.maxColorRenderTargets = maxColorRenderTargets; + this.maxShaderStorageBufferBindings = maxShaderStorageBufferBindings; + this.maxShaderStorageBlockSize = maxShaderStorageBlockSize; + this.maxUniformBufferBindings = maxUniformBufferBindings; + this.maxUniformBlockSize = maxUniformBlockSize; + this.maxTextureSize = maxTextureSize; + this.maxCubeMapTextureSize = maxCubeMapTextureSize; + this.maxArrayTextureLayers = maxArrayTextureLayers; + this.max3DTextureSize = max3DTextureSize; + this.uboOffsetAlignment = uboOffsetAlignment; + this.maxComputeSharedMemorySize = maxComputeSharedMemorySize; + this.maxComputeWorkGroupInvocations = maxComputeWorkGroupInvocations; + this.maxComputeWorkGroupSize = maxComputeWorkGroupSize; + this.maxComputeWorkGroupCount = maxComputeWorkGroupCount; + this.supportQuery = supportQuery; + this.clipSpaceMinZ = clipSpaceMinZ; + this.screenSpaceSignY = screenSpaceSignY; + this.clipSpaceSignY = clipSpaceSignY; + } + var _proto2 = DeviceCaps.prototype; + _proto2.copy = function copy(info) { + this.maxVertexAttributes = info.maxVertexAttributes; + this.maxVertexUniformVectors = info.maxVertexUniformVectors; + this.maxFragmentUniformVectors = info.maxFragmentUniformVectors; + this.maxTextureUnits = info.maxTextureUnits; + this.maxImageUnits = info.maxImageUnits; + this.maxVertexTextureUnits = info.maxVertexTextureUnits; + this.maxColorRenderTargets = info.maxColorRenderTargets; + this.maxShaderStorageBufferBindings = info.maxShaderStorageBufferBindings; + this.maxShaderStorageBlockSize = info.maxShaderStorageBlockSize; + this.maxUniformBufferBindings = info.maxUniformBufferBindings; + this.maxUniformBlockSize = info.maxUniformBlockSize; + this.maxTextureSize = info.maxTextureSize; + this.maxCubeMapTextureSize = info.maxCubeMapTextureSize; + this.maxArrayTextureLayers = info.maxArrayTextureLayers; + this.max3DTextureSize = info.max3DTextureSize; + this.uboOffsetAlignment = info.uboOffsetAlignment; + this.maxComputeSharedMemorySize = info.maxComputeSharedMemorySize; + this.maxComputeWorkGroupInvocations = info.maxComputeWorkGroupInvocations; + this.maxComputeWorkGroupSize.copy(info.maxComputeWorkGroupSize); + this.maxComputeWorkGroupCount.copy(info.maxComputeWorkGroupCount); + this.supportQuery = info.supportQuery; + this.clipSpaceMinZ = info.clipSpaceMinZ; + this.screenSpaceSignY = info.screenSpaceSignY; + this.clipSpaceSignY = info.clipSpaceSignY; + return this; + }; + return DeviceCaps; + }(); + var DeviceOptions = function () { + function DeviceOptions(enableBarrierDeduce) { + if (enableBarrierDeduce === void 0) { + enableBarrierDeduce = true; + } + this.enableBarrierDeduce = enableBarrierDeduce; + } + var _proto3 = DeviceOptions.prototype; + _proto3.copy = function copy(info) { + this.enableBarrierDeduce = info.enableBarrierDeduce; + return this; + }; + return DeviceOptions; + }(); + var Offset = function () { + function Offset(x, y, z) { + if (x === void 0) { + x = 0; + } + if (y === void 0) { + y = 0; + } + if (z === void 0) { + z = 0; + } + this.x = x; + this.y = y; + this.z = z; + } + var _proto4 = Offset.prototype; + _proto4.copy = function copy(info) { + this.x = info.x; + this.y = info.y; + this.z = info.z; + return this; + }; + return Offset; + }(); + var Rect = function () { + function Rect(x, y, width, height) { + if (x === void 0) { + x = 0; + } + if (y === void 0) { + y = 0; + } + if (width === void 0) { + width = 0; + } + if (height === void 0) { + height = 0; + } + this.x = x; + this.y = y; + this.width = width; + this.height = height; + } + var _proto5 = Rect.prototype; + _proto5.copy = function copy(info) { + this.x = info.x; + this.y = info.y; + this.width = info.width; + this.height = info.height; + return this; + }; + return Rect; + }(); + var Extent = function () { + function Extent(width, height, depth) { + if (width === void 0) { + width = 0; + } + if (height === void 0) { + height = 0; + } + if (depth === void 0) { + depth = 1; + } + this.width = width; + this.height = height; + this.depth = depth; + } + var _proto6 = Extent.prototype; + _proto6.copy = function copy(info) { + this.width = info.width; + this.height = info.height; + this.depth = info.depth; + return this; + }; + return Extent; + }(); + var TextureSubresLayers = function () { + function TextureSubresLayers(mipLevel, baseArrayLayer, layerCount) { + if (mipLevel === void 0) { + mipLevel = 0; + } + if (baseArrayLayer === void 0) { + baseArrayLayer = 0; + } + if (layerCount === void 0) { + layerCount = 1; + } + this.mipLevel = mipLevel; + this.baseArrayLayer = baseArrayLayer; + this.layerCount = layerCount; + } + var _proto7 = TextureSubresLayers.prototype; + _proto7.copy = function copy(info) { + this.mipLevel = info.mipLevel; + this.baseArrayLayer = info.baseArrayLayer; + this.layerCount = info.layerCount; + return this; + }; + return TextureSubresLayers; + }(); + var TextureSubresRange = function () { + function TextureSubresRange(baseMipLevel, levelCount, baseArrayLayer, layerCount) { + if (baseMipLevel === void 0) { + baseMipLevel = 0; + } + if (levelCount === void 0) { + levelCount = 1; + } + if (baseArrayLayer === void 0) { + baseArrayLayer = 0; + } + if (layerCount === void 0) { + layerCount = 1; + } + this.baseMipLevel = baseMipLevel; + this.levelCount = levelCount; + this.baseArrayLayer = baseArrayLayer; + this.layerCount = layerCount; + } + var _proto8 = TextureSubresRange.prototype; + _proto8.copy = function copy(info) { + this.baseMipLevel = info.baseMipLevel; + this.levelCount = info.levelCount; + this.baseArrayLayer = info.baseArrayLayer; + this.layerCount = info.layerCount; + return this; + }; + return TextureSubresRange; + }(); + var TextureCopy = function () { + function TextureCopy(srcSubres, srcOffset, dstSubres, dstOffset, extent) { + if (srcSubres === void 0) { + srcSubres = new TextureSubresLayers(); + } + if (srcOffset === void 0) { + srcOffset = new Offset(); + } + if (dstSubres === void 0) { + dstSubres = new TextureSubresLayers(); + } + if (dstOffset === void 0) { + dstOffset = new Offset(); + } + if (extent === void 0) { + extent = new Extent(); + } + this.srcSubres = srcSubres; + this.srcOffset = srcOffset; + this.dstSubres = dstSubres; + this.dstOffset = dstOffset; + this.extent = extent; + } + var _proto9 = TextureCopy.prototype; + _proto9.copy = function copy(info) { + this.srcSubres.copy(info.srcSubres); + this.srcOffset.copy(info.srcOffset); + this.dstSubres.copy(info.dstSubres); + this.dstOffset.copy(info.dstOffset); + this.extent.copy(info.extent); + return this; + }; + return TextureCopy; + }(); + var TextureBlit = function () { + function TextureBlit(srcSubres, srcOffset, srcExtent, dstSubres, dstOffset, dstExtent) { + if (srcSubres === void 0) { + srcSubres = new TextureSubresLayers(); + } + if (srcOffset === void 0) { + srcOffset = new Offset(); + } + if (srcExtent === void 0) { + srcExtent = new Extent(); + } + if (dstSubres === void 0) { + dstSubres = new TextureSubresLayers(); + } + if (dstOffset === void 0) { + dstOffset = new Offset(); + } + if (dstExtent === void 0) { + dstExtent = new Extent(); + } + this.srcSubres = srcSubres; + this.srcOffset = srcOffset; + this.srcExtent = srcExtent; + this.dstSubres = dstSubres; + this.dstOffset = dstOffset; + this.dstExtent = dstExtent; + } + var _proto10 = TextureBlit.prototype; + _proto10.copy = function copy(info) { + this.srcSubres.copy(info.srcSubres); + this.srcOffset.copy(info.srcOffset); + this.srcExtent.copy(info.srcExtent); + this.dstSubres.copy(info.dstSubres); + this.dstOffset.copy(info.dstOffset); + this.dstExtent.copy(info.dstExtent); + return this; + }; + return TextureBlit; + }(); + var BufferTextureCopy = function () { + function BufferTextureCopy(buffOffset, buffStride, buffTexHeight, texOffset, texExtent, texSubres) { + if (buffOffset === void 0) { + buffOffset = 0; + } + if (buffStride === void 0) { + buffStride = 0; + } + if (buffTexHeight === void 0) { + buffTexHeight = 0; + } + if (texOffset === void 0) { + texOffset = new Offset(); + } + if (texExtent === void 0) { + texExtent = new Extent(); + } + if (texSubres === void 0) { + texSubres = new TextureSubresLayers(); + } + this.buffOffset = buffOffset; + this.buffStride = buffStride; + this.buffTexHeight = buffTexHeight; + this.texOffset = texOffset; + this.texExtent = texExtent; + this.texSubres = texSubres; + } + var _proto11 = BufferTextureCopy.prototype; + _proto11.copy = function copy(info) { + this.buffOffset = info.buffOffset; + this.buffStride = info.buffStride; + this.buffTexHeight = info.buffTexHeight; + this.texOffset.copy(info.texOffset); + this.texExtent.copy(info.texExtent); + this.texSubres.copy(info.texSubres); + return this; + }; + return BufferTextureCopy; + }(); + var Viewport = function () { + function Viewport(left, top, width, height, minDepth, maxDepth) { + if (left === void 0) { + left = 0; + } + if (top === void 0) { + top = 0; + } + if (width === void 0) { + width = 0; + } + if (height === void 0) { + height = 0; + } + if (minDepth === void 0) { + minDepth = 0; + } + if (maxDepth === void 0) { + maxDepth = 1; + } + this.left = left; + this.top = top; + this.width = width; + this.height = height; + this.minDepth = minDepth; + this.maxDepth = maxDepth; + } + var _proto12 = Viewport.prototype; + _proto12.copy = function copy(info) { + this.left = info.left; + this.top = info.top; + this.width = info.width; + this.height = info.height; + this.minDepth = info.minDepth; + this.maxDepth = info.maxDepth; + return this; + }; + return Viewport; + }(); + var Color = function () { + function Color(x, y, z, w) { + if (x === void 0) { + x = 0; + } + if (y === void 0) { + y = 0; + } + if (z === void 0) { + z = 0; + } + if (w === void 0) { + w = 0; + } + this.x = x; + this.y = y; + this.z = z; + this.w = w; + } + var _proto13 = Color.prototype; + _proto13.copy = function copy(info) { + this.x = info.x; + this.y = info.y; + this.z = info.z; + this.w = info.w; + return this; + }; + _proto13.set = function set(x, y, z, w) { + this.x = x; + this.y = y; + this.z = z; + this.w = w; + return this; + }; + return Color; + }(); + var BindingMappingInfo = function () { + function BindingMappingInfo(maxBlockCounts, maxSamplerTextureCounts, maxSamplerCounts, maxTextureCounts, maxBufferCounts, maxImageCounts, maxSubpassInputCounts, setIndices) { + if (maxBlockCounts === void 0) { + maxBlockCounts = [0]; + } + if (maxSamplerTextureCounts === void 0) { + maxSamplerTextureCounts = [0]; + } + if (maxSamplerCounts === void 0) { + maxSamplerCounts = [0]; + } + if (maxTextureCounts === void 0) { + maxTextureCounts = [0]; + } + if (maxBufferCounts === void 0) { + maxBufferCounts = [0]; + } + if (maxImageCounts === void 0) { + maxImageCounts = [0]; + } + if (maxSubpassInputCounts === void 0) { + maxSubpassInputCounts = [0]; + } + if (setIndices === void 0) { + setIndices = [0]; + } + this.maxBlockCounts = maxBlockCounts; + this.maxSamplerTextureCounts = maxSamplerTextureCounts; + this.maxSamplerCounts = maxSamplerCounts; + this.maxTextureCounts = maxTextureCounts; + this.maxBufferCounts = maxBufferCounts; + this.maxImageCounts = maxImageCounts; + this.maxSubpassInputCounts = maxSubpassInputCounts; + this.setIndices = setIndices; + } + var _proto14 = BindingMappingInfo.prototype; + _proto14.copy = function copy(info) { + this.maxBlockCounts = info.maxBlockCounts.slice(); + this.maxSamplerTextureCounts = info.maxSamplerTextureCounts.slice(); + this.maxSamplerCounts = info.maxSamplerCounts.slice(); + this.maxTextureCounts = info.maxTextureCounts.slice(); + this.maxBufferCounts = info.maxBufferCounts.slice(); + this.maxImageCounts = info.maxImageCounts.slice(); + this.maxSubpassInputCounts = info.maxSubpassInputCounts.slice(); + this.setIndices = info.setIndices.slice(); + return this; + }; + return BindingMappingInfo; + }(); + var SwapchainInfo = function () { + function SwapchainInfo(windowId, windowHandle, vsyncMode, width, height) { + if (windowId === void 0) { + windowId = 0; + } + if (windowHandle === void 0) { + windowHandle = null; + } + if (vsyncMode === void 0) { + vsyncMode = VsyncMode.ON; + } + if (width === void 0) { + width = 0; + } + if (height === void 0) { + height = 0; + } + this.windowId = windowId; + this.windowHandle = windowHandle; + this.vsyncMode = vsyncMode; + this.width = width; + this.height = height; + } + var _proto15 = SwapchainInfo.prototype; + _proto15.copy = function copy(info) { + this.windowId = info.windowId; + this.windowHandle = info.windowHandle; + this.vsyncMode = info.vsyncMode; + this.width = info.width; + this.height = info.height; + return this; + }; + return SwapchainInfo; + }(); + var DeviceInfo = function () { + function DeviceInfo(bindingMappingInfo) { + if (bindingMappingInfo === void 0) { + bindingMappingInfo = new BindingMappingInfo(); + } + this.bindingMappingInfo = bindingMappingInfo; + } + var _proto16 = DeviceInfo.prototype; + _proto16.copy = function copy(info) { + this.bindingMappingInfo.copy(info.bindingMappingInfo); + return this; + }; + return DeviceInfo; + }(); + var BufferInfo = function () { + function BufferInfo(usage, memUsage, size, stride, flags) { + if (usage === void 0) { + usage = BufferUsageBit.NONE; + } + if (memUsage === void 0) { + memUsage = MemoryUsageBit.NONE; + } + if (size === void 0) { + size = 0; + } + if (stride === void 0) { + stride = 1; + } + if (flags === void 0) { + flags = BufferFlagBit.NONE; + } + this.usage = usage; + this.memUsage = memUsage; + this.size = size; + this.stride = stride; + this.flags = flags; + } + var _proto17 = BufferInfo.prototype; + _proto17.copy = function copy(info) { + this.usage = info.usage; + this.memUsage = info.memUsage; + this.size = info.size; + this.stride = info.stride; + this.flags = info.flags; + return this; + }; + return BufferInfo; + }(); + var BufferViewInfo = function () { + function BufferViewInfo(buffer, offset, range) { + if (buffer === void 0) { + buffer = null; + } + if (offset === void 0) { + offset = 0; + } + if (range === void 0) { + range = 0; + } + this.buffer = buffer; + this.offset = offset; + this.range = range; + } + var _proto18 = BufferViewInfo.prototype; + _proto18.copy = function copy(info) { + this.buffer = info.buffer; + this.offset = info.offset; + this.range = info.range; + return this; + }; + return BufferViewInfo; + }(); + var DrawInfo = function () { + function DrawInfo(vertexCount, firstVertex, indexCount, firstIndex, vertexOffset, instanceCount, firstInstance) { + if (vertexCount === void 0) { + vertexCount = 0; + } + if (firstVertex === void 0) { + firstVertex = 0; + } + if (indexCount === void 0) { + indexCount = 0; + } + if (firstIndex === void 0) { + firstIndex = 0; + } + if (vertexOffset === void 0) { + vertexOffset = 0; + } + if (instanceCount === void 0) { + instanceCount = 0; + } + if (firstInstance === void 0) { + firstInstance = 0; + } + this.vertexCount = vertexCount; + this.firstVertex = firstVertex; + this.indexCount = indexCount; + this.firstIndex = firstIndex; + this.vertexOffset = vertexOffset; + this.instanceCount = instanceCount; + this.firstInstance = firstInstance; + } + var _proto19 = DrawInfo.prototype; + _proto19.copy = function copy(info) { + this.vertexCount = info.vertexCount; + this.firstVertex = info.firstVertex; + this.indexCount = info.indexCount; + this.firstIndex = info.firstIndex; + this.vertexOffset = info.vertexOffset; + this.instanceCount = info.instanceCount; + this.firstInstance = info.firstInstance; + return this; + }; + return DrawInfo; + }(); + var DispatchInfo = function () { + function DispatchInfo(groupCountX, groupCountY, groupCountZ, indirectBuffer, indirectOffset) { + if (groupCountX === void 0) { + groupCountX = 0; + } + if (groupCountY === void 0) { + groupCountY = 0; + } + if (groupCountZ === void 0) { + groupCountZ = 0; + } + if (indirectBuffer === void 0) { + indirectBuffer = null; + } + if (indirectOffset === void 0) { + indirectOffset = 0; + } + this.groupCountX = groupCountX; + this.groupCountY = groupCountY; + this.groupCountZ = groupCountZ; + this.indirectBuffer = indirectBuffer; + this.indirectOffset = indirectOffset; + } + var _proto20 = DispatchInfo.prototype; + _proto20.copy = function copy(info) { + this.groupCountX = info.groupCountX; + this.groupCountY = info.groupCountY; + this.groupCountZ = info.groupCountZ; + this.indirectBuffer = info.indirectBuffer; + this.indirectOffset = info.indirectOffset; + return this; + }; + return DispatchInfo; + }(); + var IndirectBuffer = function () { + function IndirectBuffer(drawInfos) { + if (drawInfos === void 0) { + drawInfos = []; + } + this.drawInfos = drawInfos; + } + var _proto21 = IndirectBuffer.prototype; + _proto21.copy = function copy(info) { + deepCopy(this.drawInfos, info.drawInfos, DrawInfo); + return this; + }; + return IndirectBuffer; + }(); + var TextureInfo = function () { + function TextureInfo(type, usage, format, width, height, flags, layerCount, levelCount, samples, depth, externalRes) { + if (type === void 0) { + type = TextureType.TEX2D; + } + if (usage === void 0) { + usage = TextureUsageBit.NONE; + } + if (format === void 0) { + format = Format.UNKNOWN; + } + if (width === void 0) { + width = 0; + } + if (height === void 0) { + height = 0; + } + if (flags === void 0) { + flags = TextureFlagBit.NONE; + } + if (layerCount === void 0) { + layerCount = 1; + } + if (levelCount === void 0) { + levelCount = 1; + } + if (samples === void 0) { + samples = SampleCount.X1; + } + if (depth === void 0) { + depth = 1; + } + if (externalRes === void 0) { + externalRes = 0; + } + this.type = type; + this.usage = usage; + this.format = format; + this.width = width; + this.height = height; + this.flags = flags; + this.layerCount = layerCount; + this.levelCount = levelCount; + this.samples = samples; + this.depth = depth; + this.externalRes = externalRes; + } + var _proto22 = TextureInfo.prototype; + _proto22.copy = function copy(info) { + this.type = info.type; + this.usage = info.usage; + this.format = info.format; + this.width = info.width; + this.height = info.height; + this.flags = info.flags; + this.layerCount = info.layerCount; + this.levelCount = info.levelCount; + this.samples = info.samples; + this.depth = info.depth; + this.externalRes = info.externalRes; + return this; + }; + return TextureInfo; + }(); + var TextureViewInfo = function () { + function TextureViewInfo(texture, type, format, baseLevel, levelCount, baseLayer, layerCount) { + if (texture === void 0) { + texture = null; + } + if (type === void 0) { + type = TextureType.TEX2D; + } + if (format === void 0) { + format = Format.UNKNOWN; + } + if (baseLevel === void 0) { + baseLevel = 0; + } + if (levelCount === void 0) { + levelCount = 1; + } + if (baseLayer === void 0) { + baseLayer = 0; + } + if (layerCount === void 0) { + layerCount = 1; + } + this.texture = texture; + this.type = type; + this.format = format; + this.baseLevel = baseLevel; + this.levelCount = levelCount; + this.baseLayer = baseLayer; + this.layerCount = layerCount; + } + var _proto23 = TextureViewInfo.prototype; + _proto23.copy = function copy(info) { + this.texture = info.texture; + this.type = info.type; + this.format = info.format; + this.baseLevel = info.baseLevel; + this.levelCount = info.levelCount; + this.baseLayer = info.baseLayer; + this.layerCount = info.layerCount; + return this; + }; + return TextureViewInfo; + }(); + var SamplerInfo = function () { + function SamplerInfo(minFilter, magFilter, mipFilter, addressU, addressV, addressW, maxAnisotropy, cmpFunc) { + if (minFilter === void 0) { + minFilter = Filter$1.LINEAR; + } + if (magFilter === void 0) { + magFilter = Filter$1.LINEAR; + } + if (mipFilter === void 0) { + mipFilter = Filter$1.NONE; + } + if (addressU === void 0) { + addressU = Address.WRAP; + } + if (addressV === void 0) { + addressV = Address.WRAP; + } + if (addressW === void 0) { + addressW = Address.WRAP; + } + if (maxAnisotropy === void 0) { + maxAnisotropy = 0; + } + if (cmpFunc === void 0) { + cmpFunc = ComparisonFunc.ALWAYS; + } + this.minFilter = minFilter; + this.magFilter = magFilter; + this.mipFilter = mipFilter; + this.addressU = addressU; + this.addressV = addressV; + this.addressW = addressW; + this.maxAnisotropy = maxAnisotropy; + this.cmpFunc = cmpFunc; + } + var _proto24 = SamplerInfo.prototype; + _proto24.copy = function copy(info) { + this.minFilter = info.minFilter; + this.magFilter = info.magFilter; + this.mipFilter = info.mipFilter; + this.addressU = info.addressU; + this.addressV = info.addressV; + this.addressW = info.addressW; + this.maxAnisotropy = info.maxAnisotropy; + this.cmpFunc = info.cmpFunc; + return this; + }; + return SamplerInfo; + }(); + var Uniform = function () { + function Uniform(name, type, count) { + if (name === void 0) { + name = ''; + } + if (type === void 0) { + type = Type$1.UNKNOWN; + } + if (count === void 0) { + count = 0; + } + this.name = name; + this.type = type; + this.count = count; + } + var _proto25 = Uniform.prototype; + _proto25.copy = function copy(info) { + this.name = info.name; + this.type = info.type; + this.count = info.count; + return this; + }; + return Uniform; + }(); + var UniformBlock = function () { + function UniformBlock(set, binding, name, members, count, flattened) { + if (set === void 0) { + set = 0; + } + if (binding === void 0) { + binding = 0; + } + if (name === void 0) { + name = ''; + } + if (members === void 0) { + members = []; + } + if (count === void 0) { + count = 0; + } + if (flattened === void 0) { + flattened = 0; + } + this.set = set; + this.binding = binding; + this.name = name; + this.members = members; + this.count = count; + this.flattened = flattened; + } + var _proto26 = UniformBlock.prototype; + _proto26.copy = function copy(info) { + this.set = info.set; + this.binding = info.binding; + this.name = info.name; + deepCopy(this.members, info.members, Uniform); + this.count = info.count; + this.flattened = info.flattened; + return this; + }; + return UniformBlock; + }(); + var UniformSamplerTexture = function () { + function UniformSamplerTexture(set, binding, name, type, count, flattened) { + if (set === void 0) { + set = 0; + } + if (binding === void 0) { + binding = 0; + } + if (name === void 0) { + name = ''; + } + if (type === void 0) { + type = Type$1.UNKNOWN; + } + if (count === void 0) { + count = 0; + } + if (flattened === void 0) { + flattened = 0; + } + this.set = set; + this.binding = binding; + this.name = name; + this.type = type; + this.count = count; + this.flattened = flattened; + } + var _proto27 = UniformSamplerTexture.prototype; + _proto27.copy = function copy(info) { + this.set = info.set; + this.binding = info.binding; + this.name = info.name; + this.type = info.type; + this.count = info.count; + this.flattened = info.flattened; + return this; + }; + return UniformSamplerTexture; + }(); + var UniformSampler = function () { + function UniformSampler(set, binding, name, count, flattened) { + if (set === void 0) { + set = 0; + } + if (binding === void 0) { + binding = 0; + } + if (name === void 0) { + name = ''; + } + if (count === void 0) { + count = 0; + } + if (flattened === void 0) { + flattened = 0; + } + this.set = set; + this.binding = binding; + this.name = name; + this.count = count; + this.flattened = flattened; + } + var _proto28 = UniformSampler.prototype; + _proto28.copy = function copy(info) { + this.set = info.set; + this.binding = info.binding; + this.name = info.name; + this.count = info.count; + this.flattened = info.flattened; + return this; + }; + return UniformSampler; + }(); + var UniformTexture = function () { + function UniformTexture(set, binding, name, type, count, flattened) { + if (set === void 0) { + set = 0; + } + if (binding === void 0) { + binding = 0; + } + if (name === void 0) { + name = ''; + } + if (type === void 0) { + type = Type$1.UNKNOWN; + } + if (count === void 0) { + count = 0; + } + if (flattened === void 0) { + flattened = 0; + } + this.set = set; + this.binding = binding; + this.name = name; + this.type = type; + this.count = count; + this.flattened = flattened; + } + var _proto29 = UniformTexture.prototype; + _proto29.copy = function copy(info) { + this.set = info.set; + this.binding = info.binding; + this.name = info.name; + this.type = info.type; + this.count = info.count; + this.flattened = info.flattened; + return this; + }; + return UniformTexture; + }(); + var UniformStorageImage = function () { + function UniformStorageImage(set, binding, name, type, count, memoryAccess, flattened) { + if (set === void 0) { + set = 0; + } + if (binding === void 0) { + binding = 0; + } + if (name === void 0) { + name = ''; + } + if (type === void 0) { + type = Type$1.UNKNOWN; + } + if (count === void 0) { + count = 0; + } + if (memoryAccess === void 0) { + memoryAccess = MemoryAccessBit.READ_WRITE; + } + if (flattened === void 0) { + flattened = 0; + } + this.set = set; + this.binding = binding; + this.name = name; + this.type = type; + this.count = count; + this.memoryAccess = memoryAccess; + this.flattened = flattened; + } + var _proto30 = UniformStorageImage.prototype; + _proto30.copy = function copy(info) { + this.set = info.set; + this.binding = info.binding; + this.name = info.name; + this.type = info.type; + this.count = info.count; + this.memoryAccess = info.memoryAccess; + this.flattened = info.flattened; + return this; + }; + return UniformStorageImage; + }(); + var UniformStorageBuffer = function () { + function UniformStorageBuffer(set, binding, name, count, memoryAccess, flattened) { + if (set === void 0) { + set = 0; + } + if (binding === void 0) { + binding = 0; + } + if (name === void 0) { + name = ''; + } + if (count === void 0) { + count = 0; + } + if (memoryAccess === void 0) { + memoryAccess = MemoryAccessBit.READ_WRITE; + } + if (flattened === void 0) { + flattened = 0; + } + this.set = set; + this.binding = binding; + this.name = name; + this.count = count; + this.memoryAccess = memoryAccess; + this.flattened = flattened; + } + var _proto31 = UniformStorageBuffer.prototype; + _proto31.copy = function copy(info) { + this.set = info.set; + this.binding = info.binding; + this.name = info.name; + this.count = info.count; + this.memoryAccess = info.memoryAccess; + this.flattened = info.flattened; + return this; + }; + return UniformStorageBuffer; + }(); + var UniformInputAttachment = function () { + function UniformInputAttachment(set, binding, name, count, flattened) { + if (set === void 0) { + set = 0; + } + if (binding === void 0) { + binding = 0; + } + if (name === void 0) { + name = ''; + } + if (count === void 0) { + count = 0; + } + if (flattened === void 0) { + flattened = 0; + } + this.set = set; + this.binding = binding; + this.name = name; + this.count = count; + this.flattened = flattened; + } + var _proto32 = UniformInputAttachment.prototype; + _proto32.copy = function copy(info) { + this.set = info.set; + this.binding = info.binding; + this.name = info.name; + this.count = info.count; + this.flattened = info.flattened; + return this; + }; + return UniformInputAttachment; + }(); + var ShaderStage = function () { + function ShaderStage(stage, source) { + if (stage === void 0) { + stage = ShaderStageFlagBit.NONE; + } + if (source === void 0) { + source = ''; + } + this.stage = stage; + this.source = source; + } + var _proto33 = ShaderStage.prototype; + _proto33.copy = function copy(info) { + this.stage = info.stage; + this.source = info.source; + return this; + }; + return ShaderStage; + }(); + var Attribute = function () { + function Attribute(name, format, isNormalized, stream, isInstanced, location) { + if (name === void 0) { + name = ''; + } + if (format === void 0) { + format = Format.UNKNOWN; + } + if (isNormalized === void 0) { + isNormalized = false; + } + if (stream === void 0) { + stream = 0; + } + if (isInstanced === void 0) { + isInstanced = false; + } + if (location === void 0) { + location = 0; + } + this.name = name; + this.format = format; + this.isNormalized = isNormalized; + this.stream = stream; + this.isInstanced = isInstanced; + this.location = location; + } + var _proto34 = Attribute.prototype; + _proto34.copy = function copy(info) { + this.name = info.name; + this.format = info.format; + this.isNormalized = info.isNormalized; + this.stream = info.stream; + this.isInstanced = info.isInstanced; + this.location = info.location; + return this; + }; + return Attribute; + }(); + var ShaderInfo = function () { + function ShaderInfo(name, stages, attributes, blocks, buffers, samplerTextures, samplers, textures, images, subpassInputs) { + if (name === void 0) { + name = ''; + } + if (stages === void 0) { + stages = []; + } + if (attributes === void 0) { + attributes = []; + } + if (blocks === void 0) { + blocks = []; + } + if (buffers === void 0) { + buffers = []; + } + if (samplerTextures === void 0) { + samplerTextures = []; + } + if (samplers === void 0) { + samplers = []; + } + if (textures === void 0) { + textures = []; + } + if (images === void 0) { + images = []; + } + if (subpassInputs === void 0) { + subpassInputs = []; + } + this.name = name; + this.stages = stages; + this.attributes = attributes; + this.blocks = blocks; + this.buffers = buffers; + this.samplerTextures = samplerTextures; + this.samplers = samplers; + this.textures = textures; + this.images = images; + this.subpassInputs = subpassInputs; + } + var _proto35 = ShaderInfo.prototype; + _proto35.copy = function copy(info) { + this.name = info.name; + deepCopy(this.stages, info.stages, ShaderStage); + deepCopy(this.attributes, info.attributes, Attribute); + deepCopy(this.blocks, info.blocks, UniformBlock); + deepCopy(this.buffers, info.buffers, UniformStorageBuffer); + deepCopy(this.samplerTextures, info.samplerTextures, UniformSamplerTexture); + deepCopy(this.samplers, info.samplers, UniformSampler); + deepCopy(this.textures, info.textures, UniformTexture); + deepCopy(this.images, info.images, UniformStorageImage); + deepCopy(this.subpassInputs, info.subpassInputs, UniformInputAttachment); + return this; + }; + return ShaderInfo; + }(); + var InputAssemblerInfo = function () { + function InputAssemblerInfo(attributes, vertexBuffers, indexBuffer, indirectBuffer) { + if (attributes === void 0) { + attributes = []; + } + if (vertexBuffers === void 0) { + vertexBuffers = []; + } + if (indexBuffer === void 0) { + indexBuffer = null; + } + if (indirectBuffer === void 0) { + indirectBuffer = null; + } + this.attributes = attributes; + this.vertexBuffers = vertexBuffers; + this.indexBuffer = indexBuffer; + this.indirectBuffer = indirectBuffer; + } + var _proto36 = InputAssemblerInfo.prototype; + _proto36.copy = function copy(info) { + deepCopy(this.attributes, info.attributes, Attribute); + this.vertexBuffers = info.vertexBuffers.slice(); + this.indexBuffer = info.indexBuffer; + this.indirectBuffer = info.indirectBuffer; + return this; + }; + return InputAssemblerInfo; + }(); + var ColorAttachment = function () { + function ColorAttachment(format, sampleCount, loadOp, storeOp, barrier) { + if (format === void 0) { + format = Format.UNKNOWN; + } + if (sampleCount === void 0) { + sampleCount = SampleCount.X1; + } + if (loadOp === void 0) { + loadOp = LoadOp.CLEAR; + } + if (storeOp === void 0) { + storeOp = StoreOp.STORE; + } + if (barrier === void 0) { + barrier = null; + } + this.format = format; + this.sampleCount = sampleCount; + this.loadOp = loadOp; + this.storeOp = storeOp; + this.barrier = barrier; + } + var _proto37 = ColorAttachment.prototype; + _proto37.copy = function copy(info) { + this.format = info.format; + this.sampleCount = info.sampleCount; + this.loadOp = info.loadOp; + this.storeOp = info.storeOp; + this.barrier = info.barrier; + return this; + }; + return ColorAttachment; + }(); + var DepthStencilAttachment = function () { + function DepthStencilAttachment(format, sampleCount, depthLoadOp, depthStoreOp, stencilLoadOp, stencilStoreOp, barrier) { + if (format === void 0) { + format = Format.UNKNOWN; + } + if (sampleCount === void 0) { + sampleCount = SampleCount.X1; + } + if (depthLoadOp === void 0) { + depthLoadOp = LoadOp.CLEAR; + } + if (depthStoreOp === void 0) { + depthStoreOp = StoreOp.STORE; + } + if (stencilLoadOp === void 0) { + stencilLoadOp = LoadOp.CLEAR; + } + if (stencilStoreOp === void 0) { + stencilStoreOp = StoreOp.STORE; + } + if (barrier === void 0) { + barrier = null; + } + this.format = format; + this.sampleCount = sampleCount; + this.depthLoadOp = depthLoadOp; + this.depthStoreOp = depthStoreOp; + this.stencilLoadOp = stencilLoadOp; + this.stencilStoreOp = stencilStoreOp; + this.barrier = barrier; + } + var _proto38 = DepthStencilAttachment.prototype; + _proto38.copy = function copy(info) { + this.format = info.format; + this.sampleCount = info.sampleCount; + this.depthLoadOp = info.depthLoadOp; + this.depthStoreOp = info.depthStoreOp; + this.stencilLoadOp = info.stencilLoadOp; + this.stencilStoreOp = info.stencilStoreOp; + this.barrier = info.barrier; + return this; + }; + return DepthStencilAttachment; + }(); + var SubpassInfo = function () { + function SubpassInfo(inputs, colors, resolves, preserves, depthStencil, depthStencilResolve, depthResolveMode, stencilResolveMode) { + if (inputs === void 0) { + inputs = []; + } + if (colors === void 0) { + colors = []; + } + if (resolves === void 0) { + resolves = []; + } + if (preserves === void 0) { + preserves = []; + } + if (depthStencil === void 0) { + depthStencil = -1; + } + if (depthStencilResolve === void 0) { + depthStencilResolve = -1; + } + if (depthResolveMode === void 0) { + depthResolveMode = ResolveMode.NONE; + } + if (stencilResolveMode === void 0) { + stencilResolveMode = ResolveMode.NONE; + } + this.inputs = inputs; + this.colors = colors; + this.resolves = resolves; + this.preserves = preserves; + this.depthStencil = depthStencil; + this.depthStencilResolve = depthStencilResolve; + this.depthResolveMode = depthResolveMode; + this.stencilResolveMode = stencilResolveMode; + } + var _proto39 = SubpassInfo.prototype; + _proto39.copy = function copy(info) { + this.inputs = info.inputs.slice(); + this.colors = info.colors.slice(); + this.resolves = info.resolves.slice(); + this.preserves = info.preserves.slice(); + this.depthStencil = info.depthStencil; + this.depthStencilResolve = info.depthStencilResolve; + this.depthResolveMode = info.depthResolveMode; + this.stencilResolveMode = info.stencilResolveMode; + return this; + }; + return SubpassInfo; + }(); + var SubpassDependency = function () { + function SubpassDependency(srcSubpass, dstSubpass, generalBarrier, prevAccesses, nextAccesses) { + if (srcSubpass === void 0) { + srcSubpass = 0; + } + if (dstSubpass === void 0) { + dstSubpass = 0; + } + if (generalBarrier === void 0) { + generalBarrier = null; + } + if (prevAccesses === void 0) { + prevAccesses = [AccessFlagBit.NONE]; + } + if (nextAccesses === void 0) { + nextAccesses = [AccessFlagBit.NONE]; + } + this.srcSubpass = srcSubpass; + this.dstSubpass = dstSubpass; + this.generalBarrier = generalBarrier; + this.prevAccesses = prevAccesses; + this.nextAccesses = nextAccesses; + } + var _proto40 = SubpassDependency.prototype; + _proto40.copy = function copy(info) { + this.srcSubpass = info.srcSubpass; + this.dstSubpass = info.dstSubpass; + this.generalBarrier = info.generalBarrier; + this.prevAccesses = info.prevAccesses.slice(); + this.nextAccesses = info.nextAccesses.slice(); + return this; + }; + return SubpassDependency; + }(); + var RenderPassInfo = function () { + function RenderPassInfo(colorAttachments, depthStencilAttachment, depthStencilResolveAttachment, subpasses, dependencies) { + if (colorAttachments === void 0) { + colorAttachments = []; + } + if (depthStencilAttachment === void 0) { + depthStencilAttachment = new DepthStencilAttachment(); + } + if (depthStencilResolveAttachment === void 0) { + depthStencilResolveAttachment = new DepthStencilAttachment(); + } + if (subpasses === void 0) { + subpasses = []; + } + if (dependencies === void 0) { + dependencies = []; + } + this.colorAttachments = colorAttachments; + this.depthStencilAttachment = depthStencilAttachment; + this.depthStencilResolveAttachment = depthStencilResolveAttachment; + this.subpasses = subpasses; + this.dependencies = dependencies; + } + var _proto41 = RenderPassInfo.prototype; + _proto41.copy = function copy(info) { + deepCopy(this.colorAttachments, info.colorAttachments, ColorAttachment); + this.depthStencilAttachment.copy(info.depthStencilAttachment); + this.depthStencilResolveAttachment.copy(info.depthStencilResolveAttachment); + deepCopy(this.subpasses, info.subpasses, SubpassInfo); + deepCopy(this.dependencies, info.dependencies, SubpassDependency); + return this; + }; + return RenderPassInfo; + }(); + var GeneralBarrierInfo = function () { + function GeneralBarrierInfo(prevAccesses, nextAccesses, type) { + if (prevAccesses === void 0) { + prevAccesses = AccessFlagBit.NONE; + } + if (nextAccesses === void 0) { + nextAccesses = AccessFlagBit.NONE; + } + if (type === void 0) { + type = BarrierType.FULL; + } + this.prevAccesses = prevAccesses; + this.nextAccesses = nextAccesses; + this.type = type; + } + var _proto42 = GeneralBarrierInfo.prototype; + _proto42.copy = function copy(info) { + this.prevAccesses = info.prevAccesses; + this.nextAccesses = info.nextAccesses; + this.type = info.type; + return this; + }; + return GeneralBarrierInfo; + }(); + var TextureBarrierInfo = function () { + function TextureBarrierInfo(prevAccesses, nextAccesses, type, baseMipLevel, levelCount, baseSlice, sliceCount, discardContents, srcQueue, dstQueue) { + if (prevAccesses === void 0) { + prevAccesses = AccessFlagBit.NONE; + } + if (nextAccesses === void 0) { + nextAccesses = AccessFlagBit.NONE; + } + if (type === void 0) { + type = BarrierType.FULL; + } + if (baseMipLevel === void 0) { + baseMipLevel = 0; + } + if (levelCount === void 0) { + levelCount = 1; + } + if (baseSlice === void 0) { + baseSlice = 0; + } + if (sliceCount === void 0) { + sliceCount = 1; + } + if (discardContents === void 0) { + discardContents = false; + } + if (srcQueue === void 0) { + srcQueue = null; + } + if (dstQueue === void 0) { + dstQueue = null; + } + this.prevAccesses = prevAccesses; + this.nextAccesses = nextAccesses; + this.type = type; + this.baseMipLevel = baseMipLevel; + this.levelCount = levelCount; + this.baseSlice = baseSlice; + this.sliceCount = sliceCount; + this.discardContents = discardContents; + this.srcQueue = srcQueue; + this.dstQueue = dstQueue; + } + var _proto43 = TextureBarrierInfo.prototype; + _proto43.copy = function copy(info) { + this.prevAccesses = info.prevAccesses; + this.nextAccesses = info.nextAccesses; + this.type = info.type; + this.baseMipLevel = info.baseMipLevel; + this.levelCount = info.levelCount; + this.baseSlice = info.baseSlice; + this.sliceCount = info.sliceCount; + this.discardContents = info.discardContents; + this.srcQueue = info.srcQueue; + this.dstQueue = info.dstQueue; + return this; + }; + return TextureBarrierInfo; + }(); + var BufferBarrierInfo = function () { + function BufferBarrierInfo(prevAccesses, nextAccesses, type, offset, size, discardContents, srcQueue, dstQueue) { + if (prevAccesses === void 0) { + prevAccesses = AccessFlagBit.NONE; + } + if (nextAccesses === void 0) { + nextAccesses = AccessFlagBit.NONE; + } + if (type === void 0) { + type = BarrierType.FULL; + } + if (offset === void 0) { + offset = 0; + } + if (size === void 0) { + size = 0; + } + if (discardContents === void 0) { + discardContents = false; + } + if (srcQueue === void 0) { + srcQueue = null; + } + if (dstQueue === void 0) { + dstQueue = null; + } + this.prevAccesses = prevAccesses; + this.nextAccesses = nextAccesses; + this.type = type; + this.offset = offset; + this.size = size; + this.discardContents = discardContents; + this.srcQueue = srcQueue; + this.dstQueue = dstQueue; + } + var _proto44 = BufferBarrierInfo.prototype; + _proto44.copy = function copy(info) { + this.prevAccesses = info.prevAccesses; + this.nextAccesses = info.nextAccesses; + this.type = info.type; + this.offset = info.offset; + this.size = info.size; + this.discardContents = info.discardContents; + this.srcQueue = info.srcQueue; + this.dstQueue = info.dstQueue; + return this; + }; + return BufferBarrierInfo; + }(); + var FramebufferInfo = function () { + function FramebufferInfo(renderPass, colorTextures, depthStencilTexture, depthStencilResolveTexture) { + if (renderPass === void 0) { + renderPass = null; + } + if (colorTextures === void 0) { + colorTextures = []; + } + if (depthStencilTexture === void 0) { + depthStencilTexture = null; + } + if (depthStencilResolveTexture === void 0) { + depthStencilResolveTexture = null; + } + this.renderPass = renderPass; + this.colorTextures = colorTextures; + this.depthStencilTexture = depthStencilTexture; + this.depthStencilResolveTexture = depthStencilResolveTexture; + } + var _proto45 = FramebufferInfo.prototype; + _proto45.copy = function copy(info) { + this.renderPass = info.renderPass; + this.colorTextures = info.colorTextures.slice(); + this.depthStencilTexture = info.depthStencilTexture; + this.depthStencilResolveTexture = info.depthStencilResolveTexture; + return this; + }; + return FramebufferInfo; + }(); + var DescriptorSetLayoutBinding = function () { + function DescriptorSetLayoutBinding(binding, descriptorType, count, stageFlags, immutableSamplers) { + if (binding === void 0) { + binding = -1; + } + if (descriptorType === void 0) { + descriptorType = DescriptorType.UNKNOWN; + } + if (count === void 0) { + count = 0; + } + if (stageFlags === void 0) { + stageFlags = ShaderStageFlagBit.NONE; + } + if (immutableSamplers === void 0) { + immutableSamplers = []; + } + this.binding = binding; + this.descriptorType = descriptorType; + this.count = count; + this.stageFlags = stageFlags; + this.immutableSamplers = immutableSamplers; + } + var _proto46 = DescriptorSetLayoutBinding.prototype; + _proto46.copy = function copy(info) { + this.binding = info.binding; + this.descriptorType = info.descriptorType; + this.count = info.count; + this.stageFlags = info.stageFlags; + this.immutableSamplers = info.immutableSamplers.slice(); + return this; + }; + return DescriptorSetLayoutBinding; + }(); + var DescriptorSetLayoutInfo = function () { + function DescriptorSetLayoutInfo(bindings) { + if (bindings === void 0) { + bindings = []; + } + this.bindings = bindings; + } + var _proto47 = DescriptorSetLayoutInfo.prototype; + _proto47.copy = function copy(info) { + deepCopy(this.bindings, info.bindings, DescriptorSetLayoutBinding); + return this; + }; + return DescriptorSetLayoutInfo; + }(); + var DescriptorSetInfo = function () { + function DescriptorSetInfo(layout) { + if (layout === void 0) { + layout = null; + } + this.layout = layout; + } + var _proto48 = DescriptorSetInfo.prototype; + _proto48.copy = function copy(info) { + this.layout = info.layout; + return this; + }; + return DescriptorSetInfo; + }(); + var PipelineLayoutInfo = function () { + function PipelineLayoutInfo(setLayouts) { + if (setLayouts === void 0) { + setLayouts = []; + } + this.setLayouts = setLayouts; + } + var _proto49 = PipelineLayoutInfo.prototype; + _proto49.copy = function copy(info) { + this.setLayouts = info.setLayouts.slice(); + return this; + }; + return PipelineLayoutInfo; + }(); + var InputState = function () { + function InputState(attributes) { + if (attributes === void 0) { + attributes = []; + } + this.attributes = attributes; + } + var _proto50 = InputState.prototype; + _proto50.copy = function copy(info) { + deepCopy(this.attributes, info.attributes, Attribute); + return this; + }; + return InputState; + }(); + var CommandBufferInfo = function () { + function CommandBufferInfo(queue, type) { + if (queue === void 0) { + queue = null; + } + if (type === void 0) { + type = CommandBufferType.PRIMARY; + } + this.queue = queue; + this.type = type; + } + var _proto51 = CommandBufferInfo.prototype; + _proto51.copy = function copy(info) { + this.queue = info.queue; + this.type = info.type; + return this; + }; + return CommandBufferInfo; + }(); + var QueueInfo = function () { + function QueueInfo(type) { + if (type === void 0) { + type = QueueType.GRAPHICS; + } + this.type = type; + } + var _proto52 = QueueInfo.prototype; + _proto52.copy = function copy(info) { + this.type = info.type; + return this; + }; + return QueueInfo; + }(); + var QueryPoolInfo = function () { + function QueryPoolInfo(type, maxQueryObjects, forceWait) { + if (type === void 0) { + type = QueryType.OCCLUSION; + } + if (maxQueryObjects === void 0) { + maxQueryObjects = 32767; + } + if (forceWait === void 0) { + forceWait = true; + } + this.type = type; + this.maxQueryObjects = maxQueryObjects; + this.forceWait = forceWait; + } + var _proto53 = QueryPoolInfo.prototype; + _proto53.copy = function copy(info) { + this.type = info.type; + this.maxQueryObjects = info.maxQueryObjects; + this.forceWait = info.forceWait; + return this; + }; + return QueryPoolInfo; + }(); + var FormatInfo = function FormatInfo(name, size, count, type, hasAlpha, hasDepth, hasStencil, isCompressed) { + if (name === void 0) { + name = ''; + } + if (size === void 0) { + size = 0; + } + if (count === void 0) { + count = 0; + } + if (type === void 0) { + type = FormatType.NONE; + } + if (hasAlpha === void 0) { + hasAlpha = false; + } + if (hasDepth === void 0) { + hasDepth = false; + } + if (hasStencil === void 0) { + hasStencil = false; + } + if (isCompressed === void 0) { + isCompressed = false; + } + this.name = name; + this.size = size; + this.count = count; + this.type = type; + this.hasAlpha = hasAlpha; + this.hasDepth = hasDepth; + this.hasStencil = hasStencil; + this.isCompressed = isCompressed; + }; + var MemoryStatus = function () { + function MemoryStatus(bufferSize, textureSize) { + if (bufferSize === void 0) { + bufferSize = 0; + } + if (textureSize === void 0) { + textureSize = 0; + } + this.bufferSize = bufferSize; + this.textureSize = textureSize; + } + var _proto54 = MemoryStatus.prototype; + _proto54.copy = function copy(info) { + this.bufferSize = info.bufferSize; + this.textureSize = info.textureSize; + return this; + }; + return MemoryStatus; + }(); + var DynamicStencilStates = function () { + function DynamicStencilStates(writeMask, compareMask, reference) { + if (writeMask === void 0) { + writeMask = 0; + } + if (compareMask === void 0) { + compareMask = 0; + } + if (reference === void 0) { + reference = 0; + } + this.writeMask = writeMask; + this.compareMask = compareMask; + this.reference = reference; + } + var _proto55 = DynamicStencilStates.prototype; + _proto55.copy = function copy(info) { + this.writeMask = info.writeMask; + this.compareMask = info.compareMask; + this.reference = info.reference; + return this; + }; + return DynamicStencilStates; + }(); + var DynamicStates = function () { + function DynamicStates(viewport, scissor, blendConstant, lineWidth, depthBiasConstant, depthBiasClamp, depthBiasSlope, depthMinBounds, depthMaxBounds, stencilStatesFront, stencilStatesBack) { + if (viewport === void 0) { + viewport = new Viewport(); + } + if (scissor === void 0) { + scissor = new Rect(); + } + if (blendConstant === void 0) { + blendConstant = new Color(); + } + if (lineWidth === void 0) { + lineWidth = 1; + } + if (depthBiasConstant === void 0) { + depthBiasConstant = 0; + } + if (depthBiasClamp === void 0) { + depthBiasClamp = 0; + } + if (depthBiasSlope === void 0) { + depthBiasSlope = 0; + } + if (depthMinBounds === void 0) { + depthMinBounds = 0; + } + if (depthMaxBounds === void 0) { + depthMaxBounds = 0; + } + if (stencilStatesFront === void 0) { + stencilStatesFront = new DynamicStencilStates(); + } + if (stencilStatesBack === void 0) { + stencilStatesBack = new DynamicStencilStates(); + } + this.viewport = viewport; + this.scissor = scissor; + this.blendConstant = blendConstant; + this.lineWidth = lineWidth; + this.depthBiasConstant = depthBiasConstant; + this.depthBiasClamp = depthBiasClamp; + this.depthBiasSlope = depthBiasSlope; + this.depthMinBounds = depthMinBounds; + this.depthMaxBounds = depthMaxBounds; + this.stencilStatesFront = stencilStatesFront; + this.stencilStatesBack = stencilStatesBack; + } + var _proto56 = DynamicStates.prototype; + _proto56.copy = function copy(info) { + this.viewport.copy(info.viewport); + this.scissor.copy(info.scissor); + this.blendConstant.copy(info.blendConstant); + this.lineWidth = info.lineWidth; + this.depthBiasConstant = info.depthBiasConstant; + this.depthBiasClamp = info.depthBiasClamp; + this.depthBiasSlope = info.depthBiasSlope; + this.depthMinBounds = info.depthMinBounds; + this.depthMaxBounds = info.depthMaxBounds; + this.stencilStatesFront.copy(info.stencilStatesFront); + this.stencilStatesBack.copy(info.stencilStatesBack); + return this; + }; + return DynamicStates; + }(); + var GFXObject = function (_GCObject) { + _inheritsLoose(GFXObject, _GCObject); + function GFXObject(objectType) { + var _this; + _this = _GCObject.call(this) || this; + _this._objectType = ObjectType.UNKNOWN; + _this._objectID = 0; + _this._typedID = 0; + _this._objectType = objectType; + _this._objectID = GFXObject._idTable[ObjectType.UNKNOWN]++; + _this._typedID = GFXObject._idTable[objectType]++; + return _this; + } + _createClass(GFXObject, [{ + key: "objectType", + get: function get() { + return this._objectType; + } + }, { + key: "objectID", + get: function get() { + return this._objectID; + } + }, { + key: "typedID", + get: function get() { + return this._typedID; + } + }]); + return GFXObject; + }(GCObject); + GFXObject._idTable = Array(ObjectType.COUNT).fill(1 << 16); + var AttributeName; + (function (AttributeName) { + AttributeName["ATTR_POSITION"] = "a_position"; + AttributeName["ATTR_NORMAL"] = "a_normal"; + AttributeName["ATTR_TANGENT"] = "a_tangent"; + AttributeName["ATTR_BITANGENT"] = "a_bitangent"; + AttributeName["ATTR_WEIGHTS"] = "a_weights"; + AttributeName["ATTR_JOINTS"] = "a_joints"; + AttributeName["ATTR_COLOR"] = "a_color"; + AttributeName["ATTR_COLOR1"] = "a_color1"; + AttributeName["ATTR_COLOR2"] = "a_color2"; + AttributeName["ATTR_TEX_COORD"] = "a_texCoord"; + AttributeName["ATTR_TEX_COORD1"] = "a_texCoord1"; + AttributeName["ATTR_TEX_COORD2"] = "a_texCoord2"; + AttributeName["ATTR_TEX_COORD3"] = "a_texCoord3"; + AttributeName["ATTR_TEX_COORD4"] = "a_texCoord4"; + AttributeName["ATTR_TEX_COORD5"] = "a_texCoord5"; + AttributeName["ATTR_TEX_COORD6"] = "a_texCoord6"; + AttributeName["ATTR_TEX_COORD7"] = "a_texCoord7"; + AttributeName["ATTR_TEX_COORD8"] = "a_texCoord8"; + AttributeName["ATTR_BATCH_ID"] = "a_batch_id"; + AttributeName["ATTR_BATCH_UV"] = "a_batch_uv"; + })(AttributeName || (AttributeName = {})); + var FormatInfos = Object.freeze([new FormatInfo('UNKNOWN', 0, 0, FormatType.NONE, false, false, false, false), new FormatInfo('A8', 1, 1, FormatType.UNORM, true, false, false, false), new FormatInfo('L8', 1, 1, FormatType.UNORM, false, false, false, false), new FormatInfo('LA8', 1, 2, FormatType.UNORM, true, false, false, false), new FormatInfo('R8', 1, 1, FormatType.UNORM, false, false, false, false), new FormatInfo('R8SN', 1, 1, FormatType.SNORM, false, false, false, false), new FormatInfo('R8UI', 1, 1, FormatType.UINT, false, false, false, false), new FormatInfo('R8I', 1, 1, FormatType.INT, false, false, false, false), new FormatInfo('R16F', 2, 1, FormatType.FLOAT, false, false, false, false), new FormatInfo('R16UI', 2, 1, FormatType.UINT, false, false, false, false), new FormatInfo('R16I', 2, 1, FormatType.INT, false, false, false, false), new FormatInfo('R32F', 4, 1, FormatType.FLOAT, false, false, false, false), new FormatInfo('R32UI', 4, 1, FormatType.UINT, false, false, false, false), new FormatInfo('R32I', 4, 1, FormatType.INT, false, false, false, false), new FormatInfo('RG8', 2, 2, FormatType.UNORM, false, false, false, false), new FormatInfo('RG8SN', 2, 2, FormatType.SNORM, false, false, false, false), new FormatInfo('RG8UI', 2, 2, FormatType.UINT, false, false, false, false), new FormatInfo('RG8I', 2, 2, FormatType.INT, false, false, false, false), new FormatInfo('RG16F', 4, 2, FormatType.FLOAT, false, false, false, false), new FormatInfo('RG16UI', 4, 2, FormatType.UINT, false, false, false, false), new FormatInfo('RG16I', 4, 2, FormatType.INT, false, false, false, false), new FormatInfo('RG32F', 8, 2, FormatType.FLOAT, false, false, false, false), new FormatInfo('RG32UI', 8, 2, FormatType.UINT, false, false, false, false), new FormatInfo('RG32I', 8, 2, FormatType.INT, false, false, false, false), new FormatInfo('RGB8', 3, 3, FormatType.UNORM, false, false, false, false), new FormatInfo('SRGB8', 3, 3, FormatType.UNORM, false, false, false, false), new FormatInfo('RGB8SN', 3, 3, FormatType.SNORM, false, false, false, false), new FormatInfo('RGB8UI', 3, 3, FormatType.UINT, false, false, false, false), new FormatInfo('RGB8I', 3, 3, FormatType.INT, false, false, false, false), new FormatInfo('RGB16F', 6, 3, FormatType.FLOAT, false, false, false, false), new FormatInfo('RGB16UI', 6, 3, FormatType.UINT, false, false, false, false), new FormatInfo('RGB16I', 6, 3, FormatType.INT, false, false, false, false), new FormatInfo('RGB32F', 12, 3, FormatType.FLOAT, false, false, false, false), new FormatInfo('RGB32UI', 12, 3, FormatType.UINT, false, false, false, false), new FormatInfo('RGB32I', 12, 3, FormatType.INT, false, false, false, false), new FormatInfo('RGBA8', 4, 4, FormatType.UNORM, true, false, false, false), new FormatInfo('BGRA8', 4, 4, FormatType.UNORM, true, false, false, false), new FormatInfo('SRGB8_A8', 4, 4, FormatType.UNORM, true, false, false, false), new FormatInfo('RGBA8SN', 4, 4, FormatType.SNORM, true, false, false, false), new FormatInfo('RGBA8UI', 4, 4, FormatType.UINT, true, false, false, false), new FormatInfo('RGBA8I', 4, 4, FormatType.INT, true, false, false, false), new FormatInfo('RGBA16F', 8, 4, FormatType.FLOAT, true, false, false, false), new FormatInfo('RGBA16UI', 8, 4, FormatType.UINT, true, false, false, false), new FormatInfo('RGBA16I', 8, 4, FormatType.INT, true, false, false, false), new FormatInfo('RGBA32F', 16, 4, FormatType.FLOAT, true, false, false, false), new FormatInfo('RGBA32UI', 16, 4, FormatType.UINT, true, false, false, false), new FormatInfo('RGBA32I', 16, 4, FormatType.INT, true, false, false, false), new FormatInfo('R5G6B5', 2, 3, FormatType.UNORM, false, false, false, false), new FormatInfo('R11G11B10F', 4, 3, FormatType.FLOAT, false, false, false, false), new FormatInfo('RGB5A1', 2, 4, FormatType.UNORM, true, false, false, false), new FormatInfo('RGBA4', 2, 4, FormatType.UNORM, true, false, false, false), new FormatInfo('RGB10A2', 2, 4, FormatType.UNORM, true, false, false, false), new FormatInfo('RGB10A2UI', 2, 4, FormatType.UINT, true, false, false, false), new FormatInfo('RGB9E5', 2, 4, FormatType.FLOAT, true, false, false, false), new FormatInfo('DEPTH', 4, 1, FormatType.FLOAT, false, true, false, false), new FormatInfo('DEPTH_STENCIL', 5, 2, FormatType.FLOAT, false, true, true, false), new FormatInfo('BC1', 1, 3, FormatType.UNORM, false, false, false, true), new FormatInfo('BC1_ALPHA', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('BC1_SRGB', 1, 3, FormatType.UNORM, false, false, false, true), new FormatInfo('BC1_SRGB_ALPHA', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('BC2', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('BC2_SRGB', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('BC3', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('BC3_SRGB', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('BC4', 1, 1, FormatType.UNORM, false, false, false, true), new FormatInfo('BC4_SNORM', 1, 1, FormatType.SNORM, false, false, false, true), new FormatInfo('BC5', 1, 2, FormatType.UNORM, false, false, false, true), new FormatInfo('BC5_SNORM', 1, 2, FormatType.SNORM, false, false, false, true), new FormatInfo('BC6H_UF16', 1, 3, FormatType.UFLOAT, false, false, false, true), new FormatInfo('BC6H_SF16', 1, 3, FormatType.FLOAT, false, false, false, true), new FormatInfo('BC7', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('BC7_SRGB', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ETC_RGB8', 1, 3, FormatType.UNORM, false, false, false, true), new FormatInfo('ETC2_RGB8', 1, 3, FormatType.UNORM, false, false, false, true), new FormatInfo('ETC2_SRGB8', 1, 3, FormatType.UNORM, false, false, false, true), new FormatInfo('ETC2_RGB8_A1', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ETC2_SRGB8_A1', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ETC2_RGBA8', 2, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ETC2_SRGB8_A8', 2, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('EAC_R11', 1, 1, FormatType.UNORM, false, false, false, true), new FormatInfo('EAC_R11SN', 1, 1, FormatType.SNORM, false, false, false, true), new FormatInfo('EAC_RG11', 2, 2, FormatType.UNORM, false, false, false, true), new FormatInfo('EAC_RG11SN', 2, 2, FormatType.SNORM, false, false, false, true), new FormatInfo('PVRTC_RGB2', 2, 3, FormatType.UNORM, false, false, false, true), new FormatInfo('PVRTC_RGBA2', 2, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('PVRTC_RGB4', 2, 3, FormatType.UNORM, false, false, false, true), new FormatInfo('PVRTC_RGBA4', 2, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('PVRTC2_2BPP', 2, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('PVRTC2_4BPP', 2, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_RGBA_4x4', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_RGBA_5x4', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_RGBA_5x5', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_RGBA_6x5', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_RGBA_6x6', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_RGBA_8x5', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_RGBA_8x6', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_RGBA_8x8', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_RGBA_10x5', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_RGBA_10x6', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_RGBA_10x8', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_RGBA_10x10', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_RGBA_12x10', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_RGBA_12x12', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_SRGBA_4x4', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_SRGBA_5x4', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_SRGBA_5x5', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_SRGBA_6x5', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_SRGBA_6x6', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_SRGBA_8x5', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_SRGBA_8x6', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_SRGBA_8x8', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_SRGBA_10x5', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_SRGBA_10x6', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_SRGBA_10x8', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_SRGBA_10x10', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_SRGBA_12x10', 1, 4, FormatType.UNORM, true, false, false, true), new FormatInfo('ASTC_SRGBA_12x12', 1, 4, FormatType.UNORM, true, false, false, true)]); + var DESCRIPTOR_BUFFER_TYPE = DescriptorType.UNIFORM_BUFFER | DescriptorType.DYNAMIC_UNIFORM_BUFFER | DescriptorType.STORAGE_BUFFER | DescriptorType.DYNAMIC_STORAGE_BUFFER; + var DESCRIPTOR_SAMPLER_TYPE = DescriptorType.SAMPLER_TEXTURE | DescriptorType.SAMPLER | DescriptorType.TEXTURE | DescriptorType.STORAGE_IMAGE | DescriptorType.INPUT_ATTACHMENT; + var DESCRIPTOR_DYNAMIC_TYPE = DescriptorType.DYNAMIC_STORAGE_BUFFER | DescriptorType.DYNAMIC_UNIFORM_BUFFER; + var DRAW_INFO_SIZE = 28; + function IsPowerOf2(x) { + return x > 0 && (x & x - 1) === 0; + } + function FormatSize(format, width, height, depth) { + if (!FormatInfos[format].isCompressed) { + return width * height * depth * FormatInfos[format].size; + } else { + switch (format) { + case Format.BC1: + case Format.BC1_ALPHA: + case Format.BC1_SRGB: + case Format.BC1_SRGB_ALPHA: + return Math.ceil(width / 4) * Math.ceil(height / 4) * 8 * depth; + case Format.BC2: + case Format.BC2_SRGB: + case Format.BC3: + case Format.BC3_SRGB: + case Format.BC4: + case Format.BC4_SNORM: + case Format.BC6H_SF16: + case Format.BC6H_UF16: + case Format.BC7: + case Format.BC7_SRGB: + return Math.ceil(width / 4) * Math.ceil(height / 4) * 16 * depth; + case Format.BC5: + case Format.BC5_SNORM: + return Math.ceil(width / 4) * Math.ceil(height / 4) * 32 * depth; + case Format.ETC_RGB8: + case Format.ETC2_RGB8: + case Format.ETC2_SRGB8: + case Format.ETC2_RGB8_A1: + case Format.EAC_R11: + case Format.EAC_R11SN: + return Math.ceil(width / 4) * Math.ceil(height / 4) * 8 * depth; + case Format.ETC2_RGBA8: + case Format.ETC2_SRGB8_A1: + case Format.EAC_RG11: + case Format.EAC_RG11SN: + return Math.ceil(width / 4) * Math.ceil(height / 4) * 16 * depth; + case Format.PVRTC_RGB2: + case Format.PVRTC_RGBA2: + case Format.PVRTC2_2BPP: + return Math.ceil(width / 8) * Math.ceil(height / 4) * 8 * depth; + case Format.PVRTC_RGB4: + case Format.PVRTC_RGBA4: + case Format.PVRTC2_4BPP: + return Math.ceil(width / 4) * Math.ceil(height / 4) * 8 * depth; + case Format.ASTC_RGBA_4X4: + case Format.ASTC_SRGBA_4X4: + return Math.ceil(width / 4) * Math.ceil(height / 4) * 16 * depth; + case Format.ASTC_RGBA_5X4: + case Format.ASTC_SRGBA_5X4: + return Math.ceil(width / 5) * Math.ceil(height / 4) * 16 * depth; + case Format.ASTC_RGBA_5X5: + case Format.ASTC_SRGBA_5X5: + return Math.ceil(width / 5) * Math.ceil(height / 5) * 16 * depth; + case Format.ASTC_RGBA_6X5: + case Format.ASTC_SRGBA_6X5: + return Math.ceil(width / 6) * Math.ceil(height / 5) * 16 * depth; + case Format.ASTC_RGBA_6X6: + case Format.ASTC_SRGBA_6X6: + return Math.ceil(width / 6) * Math.ceil(height / 6) * 16 * depth; + case Format.ASTC_RGBA_8X5: + case Format.ASTC_SRGBA_8X5: + return Math.ceil(width / 8) * Math.ceil(height / 5) * 16 * depth; + case Format.ASTC_RGBA_8X6: + case Format.ASTC_SRGBA_8X6: + return Math.ceil(width / 8) * Math.ceil(height / 6) * 16 * depth; + case Format.ASTC_RGBA_8X8: + case Format.ASTC_SRGBA_8X8: + return Math.ceil(width / 8) * Math.ceil(height / 8) * 16 * depth; + case Format.ASTC_RGBA_10X5: + case Format.ASTC_SRGBA_10X5: + return Math.ceil(width / 10) * Math.ceil(height / 5) * 16 * depth; + case Format.ASTC_RGBA_10X6: + case Format.ASTC_SRGBA_10X6: + return Math.ceil(width / 10) * Math.ceil(height / 6) * 16 * depth; + case Format.ASTC_RGBA_10X8: + case Format.ASTC_SRGBA_10X8: + return Math.ceil(width / 10) * Math.ceil(height / 8) * 16 * depth; + case Format.ASTC_RGBA_10X10: + case Format.ASTC_SRGBA_10X10: + return Math.ceil(width / 10) * Math.ceil(height / 10) * 16 * depth; + case Format.ASTC_RGBA_12X10: + case Format.ASTC_SRGBA_12X10: + return Math.ceil(width / 12) * Math.ceil(height / 10) * 16 * depth; + case Format.ASTC_RGBA_12X12: + case Format.ASTC_SRGBA_12X12: + return Math.ceil(width / 12) * Math.ceil(height / 12) * 16 * depth; + default: + { + return 0; + } + } + } + } + function FormatSurfaceSize(format, width, height, depth, mips) { + var size = 0; + for (var i = 0; i < mips; ++i) { + size += FormatSize(format, width, height, depth); + width = Math.max(width >> 1, 1); + height = Math.max(height >> 1, 1); + } + return size; + } + var _type2size = [0, 4, 8, 12, 16, 4, 8, 12, 16, 4, 8, 12, 16, 4, 8, 12, 16, 16, 24, 32, 24, 36, 48, 32, 48, 64, 4, 4, 4, 4, 4, 4]; + function GetTypeSize(type) { + return _type2size[type] || 0; + } + function getTypedArrayConstructor(info) { + if (info.isCompressed) { + return Uint8Array; + } + var stride = info.size / info.count; + switch (info.type) { + case FormatType.UNORM: + case FormatType.UINT: + { + switch (stride) { + case 1: + return Uint8Array; + case 2: + return Uint16Array; + case 4: + return Uint32Array; + default: + return Uint8Array; + } + } + case FormatType.SNORM: + case FormatType.INT: + { + switch (stride) { + case 1: + return Int8Array; + case 2: + return Int16Array; + case 4: + return Int32Array; + default: + return Int8Array; + } + } + case FormatType.FLOAT: + { + switch (stride) { + case 2: + return Uint16Array; + case 4: + return Float32Array; + default: + return Float32Array; + } + } + } + return Float32Array; + } + function formatAlignment(format) { + switch (format) { + case Format.BC1: + case Format.BC1_ALPHA: + case Format.BC1_SRGB: + case Format.BC1_SRGB_ALPHA: + case Format.BC2: + case Format.BC2_SRGB: + case Format.BC3: + case Format.BC3_SRGB: + case Format.BC4: + case Format.BC4_SNORM: + case Format.BC6H_SF16: + case Format.BC6H_UF16: + case Format.BC7: + case Format.BC7_SRGB: + case Format.BC5: + case Format.BC5_SNORM: + case Format.ETC_RGB8: + case Format.ETC2_RGB8: + case Format.ETC2_SRGB8: + case Format.ETC2_RGB8_A1: + case Format.EAC_R11: + case Format.EAC_R11SN: + case Format.ETC2_RGBA8: + case Format.ETC2_SRGB8_A1: + case Format.EAC_RG11: + case Format.EAC_RG11SN: + return { + width: 4, + height: 4 + }; + case Format.PVRTC_RGB2: + case Format.PVRTC_RGBA2: + case Format.PVRTC2_2BPP: + return { + width: 8, + height: 4 + }; + case Format.PVRTC_RGB4: + case Format.PVRTC_RGBA4: + case Format.PVRTC2_4BPP: + return { + width: 4, + height: 4 + }; + case Format.ASTC_RGBA_4X4: + case Format.ASTC_SRGBA_4X4: + return { + width: 4, + height: 4 + }; + case Format.ASTC_RGBA_5X4: + case Format.ASTC_SRGBA_5X4: + return { + width: 5, + height: 4 + }; + case Format.ASTC_RGBA_5X5: + case Format.ASTC_SRGBA_5X5: + return { + width: 5, + height: 5 + }; + case Format.ASTC_RGBA_6X5: + case Format.ASTC_SRGBA_6X5: + return { + width: 6, + height: 5 + }; + case Format.ASTC_RGBA_6X6: + case Format.ASTC_SRGBA_6X6: + return { + width: 6, + height: 6 + }; + case Format.ASTC_RGBA_8X5: + case Format.ASTC_SRGBA_8X5: + return { + width: 8, + height: 5 + }; + case Format.ASTC_RGBA_8X6: + case Format.ASTC_SRGBA_8X6: + return { + width: 8, + height: 6 + }; + case Format.ASTC_RGBA_8X8: + case Format.ASTC_SRGBA_8X8: + return { + width: 8, + height: 8 + }; + case Format.ASTC_RGBA_10X5: + case Format.ASTC_SRGBA_10X5: + return { + width: 10, + height: 5 + }; + case Format.ASTC_RGBA_10X6: + case Format.ASTC_SRGBA_10X6: + return { + width: 10, + height: 6 + }; + case Format.ASTC_RGBA_10X8: + case Format.ASTC_SRGBA_10X8: + return { + width: 10, + height: 8 + }; + case Format.ASTC_RGBA_10X10: + case Format.ASTC_SRGBA_10X10: + return { + width: 10, + height: 10 + }; + case Format.ASTC_RGBA_12X10: + case Format.ASTC_SRGBA_12X10: + return { + width: 12, + height: 10 + }; + case Format.ASTC_RGBA_12X12: + case Format.ASTC_SRGBA_12X12: + return { + width: 12, + height: 12 + }; + default: + return { + width: 1, + height: 1 + }; + } + } + function alignTo(size, alignment) { + return Math.ceil(size / alignment) * alignment; + } + + var defines = /*#__PURE__*/Object.freeze({ + __proto__: null, + get ObjectType () { return ObjectType; }, + get Status () { return Status; }, + get API () { return API; }, + get SurfaceTransform () { return SurfaceTransform; }, + get Feature () { return Feature; }, + get Format () { return Format; }, + get FormatType () { return FormatType; }, + get Type () { return Type$1; }, + get BufferUsageBit () { return BufferUsageBit; }, + get BufferFlagBit () { return BufferFlagBit; }, + get MemoryAccessBit () { return MemoryAccessBit; }, + get MemoryUsageBit () { return MemoryUsageBit; }, + get TextureType () { return TextureType; }, + get TextureUsageBit () { return TextureUsageBit; }, + get TextureFlagBit () { return TextureFlagBit; }, + get FormatFeatureBit () { return FormatFeatureBit; }, + get SampleCount () { return SampleCount; }, + get VsyncMode () { return VsyncMode; }, + get Filter () { return Filter$1; }, + get Address () { return Address; }, + get ComparisonFunc () { return ComparisonFunc; }, + get StencilOp () { return StencilOp; }, + get BlendFactor () { return BlendFactor; }, + get BlendOp () { return BlendOp; }, + get ColorMask () { return ColorMask; }, + get ShaderStageFlagBit () { return ShaderStageFlagBit; }, + get LoadOp () { return LoadOp; }, + get StoreOp () { return StoreOp; }, + get AccessFlagBit () { return AccessFlagBit; }, + get ResolveMode () { return ResolveMode; }, + get PipelineBindPoint () { return PipelineBindPoint; }, + get PrimitiveMode () { return PrimitiveMode; }, + get PolygonMode () { return PolygonMode; }, + get ShadeModel () { return ShadeModel; }, + get CullMode () { return CullMode; }, + get DynamicStateFlagBit () { return DynamicStateFlagBit; }, + get StencilFace () { return StencilFace; }, + get DescriptorType () { return DescriptorType; }, + get QueueType () { return QueueType; }, + get QueryType () { return QueryType; }, + get CommandBufferType () { return CommandBufferType; }, + get ClearFlagBit () { return ClearFlagBit; }, + get BarrierType () { return BarrierType; }, + get PassType () { return PassType; }, + Size: Size, + DeviceCaps: DeviceCaps, + DeviceOptions: DeviceOptions, + Offset: Offset, + Rect: Rect, + Extent: Extent, + TextureSubresLayers: TextureSubresLayers, + TextureSubresRange: TextureSubresRange, + TextureCopy: TextureCopy, + TextureBlit: TextureBlit, + BufferTextureCopy: BufferTextureCopy, + Viewport: Viewport, + Color: Color, + BindingMappingInfo: BindingMappingInfo, + SwapchainInfo: SwapchainInfo, + DeviceInfo: DeviceInfo, + BufferInfo: BufferInfo, + BufferViewInfo: BufferViewInfo, + DrawInfo: DrawInfo, + DispatchInfo: DispatchInfo, + IndirectBuffer: IndirectBuffer, + TextureInfo: TextureInfo, + TextureViewInfo: TextureViewInfo, + SamplerInfo: SamplerInfo, + Uniform: Uniform, + UniformBlock: UniformBlock, + UniformSamplerTexture: UniformSamplerTexture, + UniformSampler: UniformSampler, + UniformTexture: UniformTexture, + UniformStorageImage: UniformStorageImage, + UniformStorageBuffer: UniformStorageBuffer, + UniformInputAttachment: UniformInputAttachment, + ShaderStage: ShaderStage, + Attribute: Attribute, + ShaderInfo: ShaderInfo, + InputAssemblerInfo: InputAssemblerInfo, + ColorAttachment: ColorAttachment, + DepthStencilAttachment: DepthStencilAttachment, + SubpassInfo: SubpassInfo, + SubpassDependency: SubpassDependency, + RenderPassInfo: RenderPassInfo, + GeneralBarrierInfo: GeneralBarrierInfo, + TextureBarrierInfo: TextureBarrierInfo, + BufferBarrierInfo: BufferBarrierInfo, + FramebufferInfo: FramebufferInfo, + DescriptorSetLayoutBinding: DescriptorSetLayoutBinding, + DescriptorSetLayoutInfo: DescriptorSetLayoutInfo, + DescriptorSetInfo: DescriptorSetInfo, + PipelineLayoutInfo: PipelineLayoutInfo, + InputState: InputState, + CommandBufferInfo: CommandBufferInfo, + QueueInfo: QueueInfo, + QueryPoolInfo: QueryPoolInfo, + FormatInfo: FormatInfo, + MemoryStatus: MemoryStatus, + DynamicStencilStates: DynamicStencilStates, + DynamicStates: DynamicStates, + GFXObject: GFXObject, + get AttributeName () { return AttributeName; }, + FormatInfos: FormatInfos, + DESCRIPTOR_BUFFER_TYPE: DESCRIPTOR_BUFFER_TYPE, + DESCRIPTOR_SAMPLER_TYPE: DESCRIPTOR_SAMPLER_TYPE, + DESCRIPTOR_DYNAMIC_TYPE: DESCRIPTOR_DYNAMIC_TYPE, + DRAW_INFO_SIZE: DRAW_INFO_SIZE, + IsPowerOf2: IsPowerOf2, + FormatSize: FormatSize, + FormatSurfaceSize: FormatSurfaceSize, + GetTypeSize: GetTypeSize, + getTypedArrayConstructor: getTypedArrayConstructor, + formatAlignment: formatAlignment, + alignTo: alignTo + }); + + var Buffer = function (_GFXObject) { + _inheritsLoose(Buffer, _GFXObject); + function Buffer() { + var _this; + _this = _GFXObject.call(this, ObjectType.BUFFER) || this; + _this._usage = BufferUsageBit.NONE; + _this._memUsage = MemoryUsageBit.NONE; + _this._size = 0; + _this._stride = 1; + _this._count = 0; + _this._flags = BufferFlagBit.NONE; + _this._isBufferView = false; + return _this; + } + _createClass(Buffer, [{ + key: "usage", + get: function get() { + return this._usage; + } + }, { + key: "memUsage", + get: function get() { + return this._memUsage; + } + }, { + key: "size", + get: function get() { + return this._size; + } + }, { + key: "stride", + get: function get() { + return this._stride; + } + }, { + key: "count", + get: function get() { + return this._count; + } + }, { + key: "flags", + get: function get() { + return this._flags; + } + }]); + return Buffer; + }(GFXObject); + + var CommandBuffer = function (_GFXObject) { + _inheritsLoose(CommandBuffer, _GFXObject); + function CommandBuffer() { + var _this; + _this = _GFXObject.call(this, ObjectType.COMMAND_BUFFER) || this; + _this._queue = null; + _this._type = CommandBufferType.PRIMARY; + _this._numDrawCalls = 0; + _this._numInstances = 0; + _this._numTris = 0; + return _this; + } + _createClass(CommandBuffer, [{ + key: "type", + get: function get() { + return this._type; + } + }, { + key: "queue", + get: function get() { + return this._queue; + } + }, { + key: "numDrawCalls", + get: function get() { + return this._numDrawCalls; + } + }, { + key: "numInstances", + get: function get() { + return this._numInstances; + } + }, { + key: "numTris", + get: function get() { + return this._numTris; + } + }]); + return CommandBuffer; + }(GFXObject); + + var Device = function () { + function Device() { + this._gfxAPI = API.UNKNOWN; + this._renderer = ''; + this._vendor = ''; + this._features = new Array(Feature.COUNT); + this._formatFeatures = new Array(Format.COUNT); + this._queue = null; + this._cmdBuff = null; + this._numDrawCalls = 0; + this._numInstances = 0; + this._numTris = 0; + this._memoryStatus = new MemoryStatus(); + this._caps = new DeviceCaps(); + this._bindingMappingInfo = new BindingMappingInfo(); + this._samplers = new Map(); + this._generalBarrierss = new Map(); + this._textureBarriers = new Map(); + this._bufferBarriers = new Map(); + } + var _proto = Device.prototype; + _proto.hasFeature = function hasFeature(feature) { + return this._features[feature]; + }; + _proto.getFormatFeatures = function getFormatFeatures(format) { + return this._formatFeatures[format]; + }; + _proto.enableAutoBarrier = function enableAutoBarrier(en) {}; + _proto.getMaxSampleCount = function getMaxSampleCount(format, usage, flags) { + return SampleCount.X1; + }; + _createClass(Device, [{ + key: "gfxAPI", + get: function get() { + return this._gfxAPI; + } + }, { + key: "queue", + get: function get() { + return this._queue; + } + }, { + key: "commandBuffer", + get: function get() { + return this._cmdBuff; + } + }, { + key: "renderer", + get: function get() { + return this._renderer; + } + }, { + key: "vendor", + get: function get() { + return this._vendor; + } + }, { + key: "numDrawCalls", + get: function get() { + return this._numDrawCalls; + } + }, { + key: "numInstances", + get: function get() { + return this._numInstances; + } + }, { + key: "numTris", + get: function get() { + return this._numTris; + } + }, { + key: "memoryStatus", + get: function get() { + return this._memoryStatus; + } + }, { + key: "capabilities", + get: function get() { + return this._caps; + } + }, { + key: "bindingMappingInfo", + get: function get() { + return this._bindingMappingInfo; + } + }]); + return Device; + }(); + Device.canvas = void 0; + var DefaultResource = function () { + function DefaultResource(device) { + this._texture2D = null; + this._texture3D = null; + this._textureCube = null; + this._texture2DArray = null; + var bufferSize = 64; + var buffer = new Uint8Array(bufferSize); + buffer.fill(255); + if (device.capabilities.maxTextureSize >= 2) { + this._texture2D = device.createTexture(new TextureInfo(TextureType.TEX2D, TextureUsageBit.STORAGE | TextureUsageBit.SAMPLED, Format.RGBA8, 2, 2, TextureFlagBit.NONE)); + var copyRegion = new BufferTextureCopy(0, 0, 0, new Offset(0, 0, 0), new Extent(2, 2, 1)); + device.copyBuffersToTexture([buffer], this._texture2D, [copyRegion]); + } + if (device.capabilities.maxTextureSize >= 2) { + this._textureCube = device.createTexture(new TextureInfo(TextureType.CUBE, TextureUsageBit.STORAGE | TextureUsageBit.SAMPLED, Format.RGBA8, 2, 2, TextureFlagBit.NONE, 6)); + var _copyRegion = new BufferTextureCopy(0, 0, 0, new Offset(0, 0, 0), new Extent(2, 2, 1)); + device.copyBuffersToTexture([buffer], this._textureCube, [_copyRegion]); + _copyRegion.texSubres.baseArrayLayer = 1; + device.copyBuffersToTexture([buffer], this._textureCube, [_copyRegion]); + _copyRegion.texSubres.baseArrayLayer = 2; + device.copyBuffersToTexture([buffer], this._textureCube, [_copyRegion]); + _copyRegion.texSubres.baseArrayLayer = 3; + device.copyBuffersToTexture([buffer], this._textureCube, [_copyRegion]); + _copyRegion.texSubres.baseArrayLayer = 4; + device.copyBuffersToTexture([buffer], this._textureCube, [_copyRegion]); + _copyRegion.texSubres.baseArrayLayer = 5; + device.copyBuffersToTexture([buffer], this._textureCube, [_copyRegion]); + } + if (device.capabilities.max3DTextureSize >= 2) { + this._texture3D = device.createTexture(new TextureInfo(TextureType.TEX3D, TextureUsageBit.STORAGE | TextureUsageBit.SAMPLED, Format.RGBA8, 2, 2, TextureFlagBit.NONE, 1, 1, SampleCount.X1, 2)); + var _copyRegion2 = new BufferTextureCopy(0, 0, 0, new Offset(0, 0, 0), new Extent(2, 2, 2), new TextureSubresLayers(0, 0, 1)); + device.copyBuffersToTexture([buffer], this._texture3D, [_copyRegion2]); + } + if (device.capabilities.maxArrayTextureLayers >= 2) { + this._texture2DArray = device.createTexture(new TextureInfo(TextureType.TEX2D_ARRAY, TextureUsageBit.STORAGE | TextureUsageBit.SAMPLED, Format.RGBA8, 2, 2, TextureFlagBit.NONE, 2)); + var _copyRegion3 = new BufferTextureCopy(0, 0, 0, new Offset(0, 0, 0), new Extent(2, 2, 1), new TextureSubresLayers(0, 0, 1)); + device.copyBuffersToTexture([buffer], this._texture2DArray, [_copyRegion3]); + _copyRegion3.texSubres.baseArrayLayer = 1; + device.copyBuffersToTexture([buffer], this._texture2DArray, [_copyRegion3]); + } + } + var _proto2 = DefaultResource.prototype; + _proto2.getTexture = function getTexture(type) { + switch (type) { + case TextureType.TEX2D: + return this._texture2D; + case TextureType.TEX3D: + return this._texture3D; + case TextureType.CUBE: + return this._textureCube; + case TextureType.TEX2D_ARRAY: + return this._texture2DArray; + default: + return null; + } + }; + return DefaultResource; + }(); + + var Swapchain = function (_GFXObject) { + _inheritsLoose(Swapchain, _GFXObject); + function Swapchain() { + var _this; + _this = _GFXObject.call(this, ObjectType.SWAPCHAIN) || this; + _this._transform = SurfaceTransform.IDENTITY; + _this._colorTexture = null; + _this._depthStencilTexture = null; + return _this; + } + _createClass(Swapchain, [{ + key: "colorTexture", + get: function get() { + return this._colorTexture; + } + }, { + key: "depthStencilTexture", + get: function get() { + return this._depthStencilTexture; + } + }, { + key: "surfaceTransform", + get: function get() { + return this._transform; + } + }, { + key: "width", + get: function get() { + return this._colorTexture.width; + } + }, { + key: "height", + get: function get() { + return this._colorTexture.height; + } + }]); + return Swapchain; + }(GFXObject); + + var Framebuffer = function (_GFXObject) { + _inheritsLoose(Framebuffer, _GFXObject); + function Framebuffer() { + var _this; + _this = _GFXObject.call(this, ObjectType.FRAMEBUFFER) || this; + _this._renderPass = null; + _this._colorTextures = []; + _this._depthStencilTexture = null; + _this._width = 0; + _this._height = 0; + return _this; + } + _createClass(Framebuffer, [{ + key: "renderPass", + get: function get() { + return this._renderPass; + } + }, { + key: "colorTextures", + get: function get() { + return this._colorTextures; + } + }, { + key: "depthStencilTexture", + get: function get() { + return this._depthStencilTexture; + } + }, { + key: "width", + get: function get() { + return this._width; + } + }, { + key: "height", + get: function get() { + return this._height; + } + }]); + return Framebuffer; + }(GFXObject); + + var InputAssembler = function (_GFXObject) { + _inheritsLoose(InputAssembler, _GFXObject); + function InputAssembler() { + var _this; + _this = _GFXObject.call(this, ObjectType.INPUT_ASSEMBLER) || this; + _this._attributes = []; + _this._attributesHash = 0; + _this._vertexBuffers = []; + _this._indexBuffer = null; + _this._indirectBuffer = null; + _this._drawInfo = new DrawInfo(); + return _this; + } + var _proto = InputAssembler.prototype; + _proto.getVertexBuffer = function getVertexBuffer(stream) { + if (stream === void 0) { + stream = 0; + } + if (stream < this._vertexBuffers.length) { + return this._vertexBuffers[stream]; + } else { + return null; + } + }; + _proto.computeAttributesHash = function computeAttributesHash() { + var res = 'attrs'; + for (var i = 0; i < this.attributes.length; ++i) { + var at = this.attributes[i]; + res += "," + at.name + "," + at.format + "," + at.isNormalized + "," + at.stream + "," + at.isInstanced + "," + at.location; + } + return murmurhash2_32_gc(res, 666); + }; + _createClass(InputAssembler, [{ + key: "attributes", + get: function get() { + return this._attributes; + } + }, { + key: "vertexBuffers", + get: function get() { + return this._vertexBuffers; + } + }, { + key: "indexBuffer", + get: function get() { + return this._indexBuffer; + } + }, { + key: "indirectBuffer", + get: function get() { + return this._indirectBuffer; + } + }, { + key: "attributesHash", + get: function get() { + return this._attributesHash; + } + }, { + key: "vertexCount", + get: function get() { + return this._drawInfo.vertexCount; + }, + set: function set(count) { + this._drawInfo.vertexCount = count; + } + }, { + key: "firstVertex", + get: function get() { + return this._drawInfo.firstVertex; + }, + set: function set(first) { + this._drawInfo.firstVertex = first; + } + }, { + key: "indexCount", + get: function get() { + return this._drawInfo.indexCount; + }, + set: function set(count) { + this._drawInfo.indexCount = count; + } + }, { + key: "firstIndex", + get: function get() { + return this._drawInfo.firstIndex; + }, + set: function set(first) { + this._drawInfo.firstIndex = first; + } + }, { + key: "vertexOffset", + get: function get() { + return this._drawInfo.vertexOffset; + }, + set: function set(offset) { + this._drawInfo.vertexOffset = offset; + } + }, { + key: "instanceCount", + get: function get() { + return this._drawInfo.instanceCount; + }, + set: function set(count) { + this._drawInfo.instanceCount = count; + } + }, { + key: "firstInstance", + get: function get() { + return this._drawInfo.firstInstance; + }, + set: function set(first) { + this._drawInfo.firstInstance = first; + } + }, { + key: "drawInfo", + get: function get() { + return this._drawInfo; + }, + set: function set(info) { + this._drawInfo = info; + } + }]); + return InputAssembler; + }(GFXObject); + + var DescriptorSet = function (_GFXObject) { + _inheritsLoose(DescriptorSet, _GFXObject); + function DescriptorSet() { + var _this; + _this = _GFXObject.call(this, ObjectType.DESCRIPTOR_SET) || this; + _this._layout = null; + _this._buffers = []; + _this._textures = []; + _this._samplers = []; + _this._isDirty = false; + return _this; + } + var _proto = DescriptorSet.prototype; + _proto.bindBuffer = function bindBuffer(binding, buffer, index) { + if (index === void 0) { + index = 0; + } + var bindingIndex = this._layout.bindingIndices[binding]; + var info = this._layout.bindings[bindingIndex]; + if (!info) { + return; + } + if (info.descriptorType & DESCRIPTOR_BUFFER_TYPE) { + var descriptorIndex = this._layout.descriptorIndices[binding]; + if (this._buffers[descriptorIndex + index] !== buffer) { + this._buffers[descriptorIndex + index] = buffer; + this._isDirty = true; + } + } + }; + _proto.bindSampler = function bindSampler(binding, sampler, index) { + if (index === void 0) { + index = 0; + } + var bindingIndex = this._layout.bindingIndices[binding]; + var info = this._layout.bindings[bindingIndex]; + if (!info) { + return; + } + if (info.descriptorType & DESCRIPTOR_SAMPLER_TYPE) { + var descriptorIndex = this._layout.descriptorIndices[binding]; + if (this._samplers[descriptorIndex + index] !== sampler) { + this._samplers[descriptorIndex + index] = sampler; + this._isDirty = true; + } + } + }; + _proto.bindTexture = function bindTexture(binding, texture, index, flags) { + if (index === void 0) { + index = 0; + } + var bindingIndex = this._layout.bindingIndices[binding]; + var info = this._layout.bindings[bindingIndex]; + if (!info) { + return; + } + if (info.descriptorType & DESCRIPTOR_SAMPLER_TYPE) { + var descriptorIndex = this._layout.descriptorIndices[binding]; + if (this._textures[descriptorIndex + index] !== texture) { + this._textures[descriptorIndex + index] = texture; + this._isDirty = true; + } + } + }; + _proto.getBuffer = function getBuffer(binding, index) { + if (index === void 0) { + index = 0; + } + var descriptorIndex = this._layout.descriptorIndices[binding]; + return this._buffers[descriptorIndex + index]; + }; + _proto.getSampler = function getSampler(binding, index) { + if (index === void 0) { + index = 0; + } + var descriptorIndex = this._layout.descriptorIndices[binding]; + return this._samplers[descriptorIndex + index]; + }; + _proto.getTexture = function getTexture(binding, index) { + if (index === void 0) { + index = 0; + } + var descriptorIndex = this._layout.descriptorIndices[binding]; + return this._textures[descriptorIndex + index]; + }; + _createClass(DescriptorSet, [{ + key: "layout", + get: function get() { + return this._layout; + } + }]); + return DescriptorSet; + }(GFXObject); + + var DescriptorSetLayout = function (_GFXObject) { + _inheritsLoose(DescriptorSetLayout, _GFXObject); + function DescriptorSetLayout() { + var _this; + _this = _GFXObject.call(this, ObjectType.DESCRIPTOR_SET_LAYOUT) || this; + _this._bindings = []; + _this._bindingIndices = []; + _this._descriptorIndices = []; + return _this; + } + _createClass(DescriptorSetLayout, [{ + key: "bindings", + get: function get() { + return this._bindings; + } + }, { + key: "bindingIndices", + get: function get() { + return this._bindingIndices; + } + }, { + key: "descriptorIndices", + get: function get() { + return this._descriptorIndices; + } + }]); + return DescriptorSetLayout; + }(GFXObject); + + var PipelineLayout = function (_GFXObject) { + _inheritsLoose(PipelineLayout, _GFXObject); + function PipelineLayout() { + var _this; + _this = _GFXObject.call(this, ObjectType.PIPELINE_LAYOUT) || this; + _this._setLayouts = []; + return _this; + } + _createClass(PipelineLayout, [{ + key: "setLayouts", + get: function get() { + return this._setLayouts; + } + }]); + return PipelineLayout; + }(GFXObject); + + var RasterizerState = function () { + function RasterizerState(isDiscard, polygonMode, shadeModel, cullMode, isFrontFaceCCW, depthBiasEnabled, depthBias, depthBiasClamp, depthBiasSlop, isDepthClip, isMultisample, lineWidth) { + if (isDiscard === void 0) { + isDiscard = false; + } + if (polygonMode === void 0) { + polygonMode = PolygonMode.FILL; + } + if (shadeModel === void 0) { + shadeModel = ShadeModel.GOURAND; + } + if (cullMode === void 0) { + cullMode = CullMode.BACK; + } + if (isFrontFaceCCW === void 0) { + isFrontFaceCCW = true; + } + if (depthBiasEnabled === void 0) { + depthBiasEnabled = false; + } + if (depthBias === void 0) { + depthBias = 0; + } + if (depthBiasClamp === void 0) { + depthBiasClamp = 0.0; + } + if (depthBiasSlop === void 0) { + depthBiasSlop = 0.0; + } + if (isDepthClip === void 0) { + isDepthClip = true; + } + if (isMultisample === void 0) { + isMultisample = false; + } + if (lineWidth === void 0) { + lineWidth = 1.0; + } + this.isDiscard = isDiscard; + this.polygonMode = polygonMode; + this.shadeModel = shadeModel; + this.cullMode = cullMode; + this.isFrontFaceCCW = isFrontFaceCCW; + this.depthBiasEnabled = depthBiasEnabled; + this.depthBias = depthBias; + this.depthBiasClamp = depthBiasClamp; + this.depthBiasSlop = depthBiasSlop; + this.isDepthClip = isDepthClip; + this.isMultisample = isMultisample; + this.lineWidth = lineWidth; + } + var _proto = RasterizerState.prototype; + _proto.reset = function reset() { + this.isDiscard = false; + this.polygonMode = PolygonMode.FILL; + this.shadeModel = ShadeModel.GOURAND; + this.cullMode = CullMode.BACK; + this.isFrontFaceCCW = true; + this.depthBiasEnabled = false; + this.depthBias = 0; + this.depthBiasClamp = 0.0; + this.depthBiasSlop = 0.0; + this.isDepthClip = true; + this.isMultisample = false; + this.lineWidth = 1.0; + }; + _proto.assign = function assign(rs) { + Object.assign(this, rs); + }; + _proto.destroy = function destroy() {}; + _createClass(RasterizerState, [{ + key: "native", + get: function get() { + return this; + } + }]); + return RasterizerState; + }(); + var DepthStencilState = function () { + function DepthStencilState(depthTest, depthWrite, depthFunc, stencilTestFront, stencilFuncFront, stencilReadMaskFront, stencilWriteMaskFront, stencilFailOpFront, stencilZFailOpFront, stencilPassOpFront, stencilRefFront, stencilTestBack, stencilFuncBack, stencilReadMaskBack, stencilWriteMaskBack, stencilFailOpBack, stencilZFailOpBack, stencilPassOpBack, stencilRefBack) { + if (depthTest === void 0) { + depthTest = true; + } + if (depthWrite === void 0) { + depthWrite = true; + } + if (depthFunc === void 0) { + depthFunc = ComparisonFunc.LESS; + } + if (stencilTestFront === void 0) { + stencilTestFront = false; + } + if (stencilFuncFront === void 0) { + stencilFuncFront = ComparisonFunc.ALWAYS; + } + if (stencilReadMaskFront === void 0) { + stencilReadMaskFront = 0xffff; + } + if (stencilWriteMaskFront === void 0) { + stencilWriteMaskFront = 0xffff; + } + if (stencilFailOpFront === void 0) { + stencilFailOpFront = StencilOp.KEEP; + } + if (stencilZFailOpFront === void 0) { + stencilZFailOpFront = StencilOp.KEEP; + } + if (stencilPassOpFront === void 0) { + stencilPassOpFront = StencilOp.KEEP; + } + if (stencilRefFront === void 0) { + stencilRefFront = 1; + } + if (stencilTestBack === void 0) { + stencilTestBack = false; + } + if (stencilFuncBack === void 0) { + stencilFuncBack = ComparisonFunc.ALWAYS; + } + if (stencilReadMaskBack === void 0) { + stencilReadMaskBack = 0xffff; + } + if (stencilWriteMaskBack === void 0) { + stencilWriteMaskBack = 0xffff; + } + if (stencilFailOpBack === void 0) { + stencilFailOpBack = StencilOp.KEEP; + } + if (stencilZFailOpBack === void 0) { + stencilZFailOpBack = StencilOp.KEEP; + } + if (stencilPassOpBack === void 0) { + stencilPassOpBack = StencilOp.KEEP; + } + if (stencilRefBack === void 0) { + stencilRefBack = 1; + } + this.depthTest = depthTest; + this.depthWrite = depthWrite; + this.depthFunc = depthFunc; + this.stencilTestFront = stencilTestFront; + this.stencilFuncFront = stencilFuncFront; + this.stencilReadMaskFront = stencilReadMaskFront; + this.stencilWriteMaskFront = stencilWriteMaskFront; + this.stencilFailOpFront = stencilFailOpFront; + this.stencilZFailOpFront = stencilZFailOpFront; + this.stencilPassOpFront = stencilPassOpFront; + this.stencilRefFront = stencilRefFront; + this.stencilTestBack = stencilTestBack; + this.stencilFuncBack = stencilFuncBack; + this.stencilReadMaskBack = stencilReadMaskBack; + this.stencilWriteMaskBack = stencilWriteMaskBack; + this.stencilFailOpBack = stencilFailOpBack; + this.stencilZFailOpBack = stencilZFailOpBack; + this.stencilPassOpBack = stencilPassOpBack; + this.stencilRefBack = stencilRefBack; + } + var _proto2 = DepthStencilState.prototype; + _proto2.reset = function reset() { + this.depthTest = true; + this.depthWrite = true; + this.depthFunc = ComparisonFunc.LESS; + this.stencilTestFront = false; + this.stencilFuncFront = ComparisonFunc.ALWAYS; + this.stencilReadMaskFront = 0xffff; + this.stencilWriteMaskFront = 0xffff; + this.stencilFailOpFront = StencilOp.KEEP; + this.stencilZFailOpFront = StencilOp.KEEP; + this.stencilPassOpFront = StencilOp.KEEP; + this.stencilRefFront = 1; + this.stencilTestBack = false; + this.stencilFuncBack = ComparisonFunc.ALWAYS; + this.stencilReadMaskBack = 0xffff; + this.stencilWriteMaskBack = 0xffff; + this.stencilFailOpBack = StencilOp.KEEP; + this.stencilZFailOpBack = StencilOp.KEEP; + this.stencilPassOpBack = StencilOp.KEEP; + this.stencilRefBack = 1; + }; + _proto2.assign = function assign(dss) { + Object.assign(this, dss); + }; + _proto2.destroy = function destroy() {}; + _createClass(DepthStencilState, [{ + key: "native", + get: function get() { + return this; + } + }]); + return DepthStencilState; + }(); + var BlendTarget = function () { + function BlendTarget(blend, blendSrc, blendDst, blendEq, blendSrcAlpha, blendDstAlpha, blendAlphaEq, blendColorMask) { + if (blend === void 0) { + blend = false; + } + if (blendSrc === void 0) { + blendSrc = BlendFactor.ONE; + } + if (blendDst === void 0) { + blendDst = BlendFactor.ZERO; + } + if (blendEq === void 0) { + blendEq = BlendOp.ADD; + } + if (blendSrcAlpha === void 0) { + blendSrcAlpha = BlendFactor.ONE; + } + if (blendDstAlpha === void 0) { + blendDstAlpha = BlendFactor.ZERO; + } + if (blendAlphaEq === void 0) { + blendAlphaEq = BlendOp.ADD; + } + if (blendColorMask === void 0) { + blendColorMask = ColorMask.ALL; + } + this.blend = blend; + this.blendSrc = blendSrc; + this.blendDst = blendDst; + this.blendEq = blendEq; + this.blendSrcAlpha = blendSrcAlpha; + this.blendDstAlpha = blendDstAlpha; + this.blendAlphaEq = blendAlphaEq; + this.blendColorMask = blendColorMask; + } + var _proto3 = BlendTarget.prototype; + _proto3.reset = function reset() { + this.blend = false; + this.blendSrc = BlendFactor.ONE; + this.blendDst = BlendFactor.ZERO; + this.blendEq = BlendOp.ADD; + this.blendSrcAlpha = BlendFactor.ONE; + this.blendDstAlpha = BlendFactor.ZERO; + this.blendAlphaEq = BlendOp.ADD; + this.blendColorMask = ColorMask.ALL; + }; + _proto3.assign = function assign(target) { + Object.assign(this, target); + }; + _proto3.destroy = function destroy() {}; + return BlendTarget; + }(); + var BlendState$1 = function () { + function BlendState(isA2C, isIndepend, blendColor, targets) { + if (isA2C === void 0) { + isA2C = false; + } + if (isIndepend === void 0) { + isIndepend = false; + } + if (blendColor === void 0) { + blendColor = new Color(); + } + if (targets === void 0) { + targets = [new BlendTarget()]; + } + this.isA2C = isA2C; + this.isIndepend = isIndepend; + this.blendColor = blendColor; + this.targets = targets; + } + var _proto4 = BlendState.prototype; + _proto4.setTarget = function setTarget(index, target) { + var tg = this.targets[index]; + if (!tg) { + tg = this.targets[index] = new BlendTarget(); + } + Object.assign(tg, target); + }; + _proto4.reset = function reset() { + this.isA2C = false; + this.isIndepend = false; + this.blendColor.x = 0; + this.blendColor.y = 0; + this.blendColor.z = 0; + this.blendColor.w = 0; + this.targets.length = 1; + this.targets[0].reset(); + }; + _proto4.destroy = function destroy() {}; + _createClass(BlendState, [{ + key: "native", + get: function get() { + return this; + } + }]); + return BlendState; + }(); + + var PipelineStateInfo = function PipelineStateInfo(shader, pipelineLayout, renderPass, inputState, rasterizerState, depthStencilState, blendState, primitive, dynamicStates, bindPoint) { + if (shader === void 0) { + shader = null; + } + if (pipelineLayout === void 0) { + pipelineLayout = null; + } + if (renderPass === void 0) { + renderPass = null; + } + if (inputState === void 0) { + inputState = new InputState(); + } + if (rasterizerState === void 0) { + rasterizerState = new RasterizerState(); + } + if (depthStencilState === void 0) { + depthStencilState = new DepthStencilState(); + } + if (blendState === void 0) { + blendState = new BlendState$1(); + } + if (primitive === void 0) { + primitive = PrimitiveMode.TRIANGLE_LIST; + } + if (dynamicStates === void 0) { + dynamicStates = DynamicStateFlagBit.NONE; + } + if (bindPoint === void 0) { + bindPoint = PipelineBindPoint.GRAPHICS; + } + this.shader = shader; + this.pipelineLayout = pipelineLayout; + this.renderPass = renderPass; + this.inputState = inputState; + this.rasterizerState = rasterizerState; + this.depthStencilState = depthStencilState; + this.blendState = blendState; + this.primitive = primitive; + this.dynamicStates = dynamicStates; + this.bindPoint = bindPoint; + }; + var PipelineState = function (_GFXObject) { + _inheritsLoose(PipelineState, _GFXObject); + function PipelineState() { + var _this; + _this = _GFXObject.call(this, ObjectType.PIPELINE_STATE) || this; + _this._shader = null; + _this._pipelineLayout = null; + _this._primitive = PrimitiveMode.TRIANGLE_LIST; + _this._is = null; + _this._rs = new RasterizerState(); + _this._dss = new DepthStencilState(); + _this._bs = new BlendState$1(); + _this._dynamicStates = DynamicStateFlagBit.NONE; + _this._renderPass = null; + return _this; + } + _createClass(PipelineState, [{ + key: "shader", + get: function get() { + return this._shader; + } + }, { + key: "pipelineLayout", + get: function get() { + return this._pipelineLayout; + } + }, { + key: "primitive", + get: function get() { + return this._primitive; + } + }, { + key: "rasterizerState", + get: function get() { + return this._rs; + } + }, { + key: "depthStencilState", + get: function get() { + return this._dss; + } + }, { + key: "blendState", + get: function get() { + return this._bs; + } + }, { + key: "inputState", + get: function get() { + return this._is; + } + }, { + key: "dynamicStates", + get: function get() { + return this._dynamicStates; + } + }, { + key: "renderPass", + get: function get() { + return this._renderPass; + } + }]); + return PipelineState; + }(GFXObject); + + var Queue = function (_GFXObject) { + _inheritsLoose(Queue, _GFXObject); + function Queue() { + var _this; + _this = _GFXObject.call(this, ObjectType.QUEUE) || this; + _this._type = QueueType.GRAPHICS; + return _this; + } + _createClass(Queue, [{ + key: "type", + get: function get() { + return this._type; + } + }]); + return Queue; + }(GFXObject); + + var RenderPass = function (_GFXObject) { + _inheritsLoose(RenderPass, _GFXObject); + function RenderPass() { + var _this; + _this = _GFXObject.call(this, ObjectType.RENDER_PASS) || this; + _this._colorInfos = []; + _this._depthStencilInfo = null; + _this._subpasses = []; + _this._hash = 0; + return _this; + } + var _proto = RenderPass.prototype; + _proto.computeHash = function computeHash() { + var res = ''; + if (this._subpasses.length) { + for (var i = 0; i < this._subpasses.length; ++i) { + var subpass = this._subpasses[i]; + if (subpass.inputs.length) { + res += 'ia'; + for (var j = 0; j < subpass.inputs.length; ++j) { + var ia = this._colorInfos[subpass.inputs[j]]; + res += "," + ia.format + "," + ia.sampleCount; + } + } + if (subpass.colors.length) { + res += 'ca'; + for (var _j = 0; _j < subpass.inputs.length; ++_j) { + var ca = this._colorInfos[subpass.inputs[_j]]; + res += "," + ca.format + "," + ca.sampleCount; + } + } + if (subpass.depthStencil >= 0) { + var ds = this._colorInfos[subpass.depthStencil]; + res += "ds," + ds.format + "," + ds.sampleCount; + } + } + } else { + res += 'ca'; + for (var _i = 0; _i < this._colorInfos.length; ++_i) { + var _ca = this._colorInfos[_i]; + res += "," + _ca.format + "," + _ca.sampleCount; + } + var _ds = this._depthStencilInfo; + if (_ds) { + res += "ds," + _ds.format + "," + _ds.sampleCount; + } + } + return murmurhash2_32_gc(res, 666); + }; + _createClass(RenderPass, [{ + key: "colorAttachments", + get: function get() { + return this._colorInfos; + } + }, { + key: "depthStencilAttachment", + get: function get() { + return this._depthStencilInfo; + } + }, { + key: "subPasses", + get: function get() { + return this._subpasses; + } + }, { + key: "hash", + get: function get() { + return this._hash; + } + }]); + return RenderPass; + }(GFXObject); + + var Sampler = function (_GFXObject) { + _inheritsLoose(Sampler, _GFXObject); + function Sampler(info, hash) { + var _this; + _this = _GFXObject.call(this, ObjectType.SAMPLER) || this; + _this._info = new SamplerInfo(); + _this._hash = 0; + _this._info.copy(info); + _this._hash = hash; + return _this; + } + Sampler.computeHash = function computeHash(info) { + var hash = info.minFilter; + hash |= info.magFilter << 2; + hash |= info.mipFilter << 4; + hash |= info.addressU << 6; + hash |= info.addressV << 8; + hash |= info.addressW << 10; + hash |= info.maxAnisotropy << 12; + hash |= info.cmpFunc << 16; + return hash; + }; + Sampler.unpackFromHash = function unpackFromHash(hash) { + var info = new SamplerInfo(); + info.minFilter = (hash & (1 << 2) - 1) >> 0; + info.magFilter = (hash & (1 << 2) - 1) >> 2; + info.mipFilter = (hash & (1 << 2) - 1) >> 4; + info.addressU = (hash & (1 << 2) - 1) >> 6; + info.addressV = (hash & (1 << 2) - 1) >> 8; + info.addressW = (hash & (1 << 2) - 1) >> 10; + info.maxAnisotropy = (hash & (1 << 4) - 1) >> 12; + info.cmpFunc = (hash & (1 << 3) - 1) >> 16; + return info; + }; + _createClass(Sampler, [{ + key: "info", + get: function get() { + return this._info; + } + }, { + key: "hash", + get: function get() { + return this._hash; + } + }]); + return Sampler; + }(GFXObject); + + var Shader = function (_GFXObject) { + _inheritsLoose(Shader, _GFXObject); + function Shader() { + var _this; + _this = _GFXObject.call(this, ObjectType.SHADER) || this; + _this._name = ''; + _this._stages = []; + _this._attributes = []; + _this._blocks = []; + _this._samplers = []; + return _this; + } + _createClass(Shader, [{ + key: "name", + get: function get() { + return this._name; + } + }, { + key: "attributes", + get: function get() { + return this._attributes; + } + }, { + key: "blocks", + get: function get() { + return this._blocks; + } + }, { + key: "samplers", + get: function get() { + return this._samplers; + } + }]); + return Shader; + }(GFXObject); + + var Texture = function (_GFXObject) { + _inheritsLoose(Texture, _GFXObject); + function Texture() { + var _this; + _this = _GFXObject.call(this, ObjectType.TEXTURE) || this; + _this._info = new TextureInfo(); + _this._viewInfo = new TextureViewInfo(); + _this._isPowerOf2 = false; + _this._isTextureView = false; + _this._size = 0; + return _this; + } + Texture.getLevelCount = function getLevelCount(width, height) { + return Math.floor(Math.log2(Math.max(width, height))); + }; + _createClass(Texture, [{ + key: "type", + get: function get() { + return this._info.type; + } + }, { + key: "usage", + get: function get() { + return this._info.usage; + } + }, { + key: "format", + get: function get() { + return this._info.format; + } + }, { + key: "width", + get: function get() { + return this._info.width; + } + }, { + key: "height", + get: function get() { + return this._info.height; + } + }, { + key: "depth", + get: function get() { + return this._info.depth; + } + }, { + key: "layerCount", + get: function get() { + return this._info.layerCount; + } + }, { + key: "levelCount", + get: function get() { + return this._info.levelCount; + } + }, { + key: "samples", + get: function get() { + return this._info.samples; + } + }, { + key: "flags", + get: function get() { + return this._info.flags; + } + }, { + key: "size", + get: function get() { + return this._size; + } + }, { + key: "info", + get: function get() { + return this._info; + } + }, { + key: "viewInfo", + get: function get() { + return this._viewInfo; + } + }, { + key: "isTextureView", + get: function get() { + return this._isTextureView; + } + }]); + return Texture; + }(GFXObject); + + var GeneralBarrier = function (_GFXObject) { + _inheritsLoose(GeneralBarrier, _GFXObject); + function GeneralBarrier(info, hash) { + var _this; + _this = _GFXObject.call(this, ObjectType.GLOBAL_BARRIER) || this; + _this._info = new GeneralBarrierInfo(); + _this._hash = 0; + _this._info.copy(info); + _this._hash = hash; + return _this; + } + GeneralBarrier.computeHash = function computeHash(info) { + return murmurhash2_32_gc(info.prevAccesses + " " + info.nextAccesses + " " + info.type, 666); + }; + _createClass(GeneralBarrier, [{ + key: "info", + get: function get() { + return this._info; + } + }, { + key: "hash", + get: function get() { + return this._hash; + } + }]); + return GeneralBarrier; + }(GFXObject); + + var TextureBarrier = function (_GFXObject) { + _inheritsLoose(TextureBarrier, _GFXObject); + function TextureBarrier(info, hash) { + var _this; + _this = _GFXObject.call(this, ObjectType.TEXTURE_BARRIER) || this; + _this._info = new TextureBarrierInfo(); + _this._hash = 0; + _this._info.copy(info); + _this._hash = hash; + return _this; + } + TextureBarrier.computeHash = function computeHash(info) { + var res = info.prevAccesses + " " + info.nextAccesses; + res += info.type; + res += info.baseMipLevel; + res += info.levelCount; + res += info.baseSlice; + res += info.sliceCount; + res += info.discardContents; + res += info.srcQueue ? info.srcQueue.type : 0; + res += info.dstQueue ? info.dstQueue.type : 0; + return murmurhash2_32_gc(res, 666); + }; + _createClass(TextureBarrier, [{ + key: "info", + get: function get() { + return this._info; + } + }, { + key: "hash", + get: function get() { + return this._hash; + } + }]); + return TextureBarrier; + }(GFXObject); + + var BufferBarrier = function (_GFXObject) { + _inheritsLoose(BufferBarrier, _GFXObject); + function BufferBarrier(info, hash) { + var _this; + _this = _GFXObject.call(this, ObjectType.BUFFER_BARRIER) || this; + _this._info = new BufferBarrierInfo(); + _this._hash = 0; + _this._info.copy(info); + _this._hash = hash; + return _this; + } + BufferBarrier.computeHash = function computeHash(info) { + var res = info.prevAccesses + " " + info.nextAccesses; + res += info.type; + res += info.offset; + res += info.size; + res += info.discardContents; + res += info.srcQueue ? info.srcQueue.type : 0; + res += info.dstQueue ? info.dstQueue.type : 0; + return murmurhash2_32_gc(res, 666); + }; + _createClass(BufferBarrier, [{ + key: "info", + get: function get() { + return this._info; + } + }, { + key: "hash", + get: function get() { + return this._hash; + } + }]); + return BufferBarrier; + }(GFXObject); + + var polyfills$1 = { + Device: Device, + Swapchain: Swapchain, + Buffer: Buffer, + Texture: Texture, + Sampler: Sampler, + Shader: Shader, + InputAssembler: InputAssembler, + RenderPass: RenderPass, + Framebuffer: Framebuffer, + DescriptorSet: DescriptorSet, + DescriptorSetLayout: DescriptorSetLayout, + PipelineLayout: PipelineLayout, + PipelineState: PipelineState, + CommandBuffer: CommandBuffer, + Queue: Queue, + GeneralBarrier: GeneralBarrier, + TextureBarrier: TextureBarrier, + BufferBarrier: BufferBarrier, + RasterizerState: RasterizerState, + BlendState: BlendState$1, + BlendTarget: BlendTarget, + DepthStencilState: DepthStencilState, + PipelineStateInfo: PipelineStateInfo + }; + Object.assign(polyfills$1, defines); + legacyCC.gfx = polyfills$1; + + var polyfills = { + GFXDevice: true, + GFXBuffer: true, + GFXTexture: true, + GFXSampler: true, + GFXShader: true, + GFXInputAssembler: true, + GFXRenderPass: true, + GFXFramebuffer: true, + GFXPipelineState: true, + GFXCommandBuffer: true, + GFXQueue: true, + GFXObjectType: true, + GFXObject: false, + GFXAttributeName: true, + GFXType: true, + GFXFormat: true, + GFXBufferUsageBit: true, + GFXMemoryUsageBit: true, + GFXBufferFlagBit: true, + GFXBufferAccessBit: 'MemoryAccessBit', + GFXPrimitiveMode: true, + GFXPolygonMode: true, + GFXShadeModel: true, + GFXCullMode: true, + GFXComparisonFunc: true, + GFXStencilOp: true, + GFXBlendOp: true, + GFXBlendFactor: true, + GFXColorMask: true, + GFXFilter: true, + GFXAddress: true, + GFXTextureType: true, + GFXTextureUsageBit: true, + GFXSampleCount: true, + GFXTextureFlagBit: true, + GFXShaderStageFlagBit: true, + GFXDescriptorType: true, + GFXCommandBufferType: true, + GFXLoadOp: true, + GFXStoreOp: true, + GFXPipelineBindPoint: true, + GFXDynamicStateFlagBit: true, + GFXStencilFace: true, + GFXQueueType: true, + GFXRect: true, + GFXViewport: true, + GFXColor: true, + GFXClearFlag: true, + GFXOffset: true, + GFXExtent: true, + GFXTextureSubres: 'TextureSubresLayers', + GFXTextureCopy: true, + GFXBufferTextureCopy: true, + GFXFormatType: true, + GFXFormatInfo: true, + GFXMemoryStatus: true, + GFXFormatInfos: true, + GFXFormatSize: true, + GFXFormatSurfaceSize: true, + GFXGetTypeSize: true, + getTypedArrayConstructor: false + }; + for (var name in polyfills) { + var newName = polyfills[name]; + if (newName === true) { + newName = name.slice(3); + } else if (newName === false) { + newName = name; + } + replaceProperty(legacyCC, 'cc', [{ + name: name, + newName: newName, + target: legacyCC.gfx, + targetName: 'cc.gfx' + }]); + } + removeProperty(legacyCC, 'cc', [{ + name: 'GFX_MAX_VERTEX_ATTRIBUTES' + }, { + name: 'GFX_MAX_TEXTURE_UNITS' + }, { + name: 'GFX_MAX_ATTACHMENTS' + }, { + name: 'GFX_MAX_BUFFER_BINDINGS' + }, { + name: 'GFXTextureLayout' + }]); + + removeProperty(Feature, 'Feature', [{ + name: 'COLOR_FLOAT', + suggest: 'Please use device.getFormatFeatures() instead, like: \n' + 'let isSupported = device.getFormatFeatures(Format.R32F) & FormatFeatureBit.RENDER_TARGET;' + }, { + name: 'COLOR_HALF_FLOAT', + suggest: 'Please use device.getFormatFeatures() instead, like: \n' + 'let isSupported = device.getFormatFeatures(Format.R16F) & FormatFeatureBit.RENDER_TARGET;' + }, { + name: 'TEXTURE_FLOAT', + suggest: 'Please use device.getFormatFeatures() instead, like: \n' + 'let isSupported = (device.getFormatFeatures(Format.R32F) & (FormatFeatureBit.RENDER_TARGET' + ' | FormatFeatureBit.SAMPLED_TEXTURE)) === (FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.SAMPLED_TEXTURE);' + }, { + name: 'TEXTURE_HALF_FLOAT', + suggest: 'Please use device.getFormatFeatures() instead, like: \n' + 'let isSupported = (device.getFormatFeatures(Format.R16F) & (FormatFeatureBit.RENDER_TARGET' + ' | FormatFeatureBit.SAMPLED_TEXTURE)) === (FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.SAMPLED_TEXTURE);' + }, { + name: 'TEXTURE_FLOAT_LINEAR', + suggest: 'Please use device.getFormatFeatures() instead, like: \n' + 'let isSupported = device.getFormatFeatures(Format.R32F) & FormatFeatureBit.LINEAR_FILTER;' + }, { + name: 'TEXTURE_HALF_FLOAT_LINEAR', + suggest: 'Please use device.getFormatFeatures() instead, like: \n' + 'let isSupported = device.getFormatFeatures(Format.R16F) & FormatFeatureBit.LINEAR_FILTER;' + }, { + name: 'FORMAT_R11G11B10F', + suggest: 'Please use device.getFormatFeatures() instead, like: \n' + 'let isSupported = device.getFormatFeatures(Format.R11G11B10F) !== FormatFeatureBit.NONE;' + }, { + name: 'FORMAT_SRGB', + suggest: 'Please use device.getFormatFeatures() instead, like: \n' + 'let isSupported = device.getFormatFeatures(Format.SRGB8) !== FormatFeatureBit.NONE;' + }, { + name: 'FORMAT_ETC1', + suggest: 'Please use device.getFormatFeatures() instead, like: \n' + 'let isSupported = device.getFormatFeatures(Format.ETC_RGB8) !== FormatFeatureBit.NONE;' + }, { + name: 'FORMAT_ETC2', + suggest: 'Please use device.getFormatFeatures() instead, like: \n' + 'let isSupported = device.getFormatFeatures(Format.ETC2_RGB8) !== FormatFeatureBit.NONE;' + }, { + name: 'FORMAT_DXT', + suggest: 'Please use device.getFormatFeatures() instead, like: \n' + 'let isSupported = device.getFormatFeatures(Format.BC1) !== FormatFeatureBit.NONE;' + }, { + name: 'FORMAT_PVRTC', + suggest: 'Please use device.getFormatFeatures() instead, like: \n' + 'let isSupported = device.getFormatFeatures(Format.PVRTC_RGB2) !== FormatFeatureBit.NONE;' + }, { + name: 'FORMAT_ASTC', + suggest: 'Please use device.getFormatFeatures() instead, like: \n' + 'let isSupported = device.getFormatFeatures(Format.ASTC_RGBA_4x4) !== FormatFeatureBit.NONE;' + }, { + name: 'FORMAT_RGB8', + suggest: 'Please use device.getFormatFeatures() instead, like: \n' + 'let isSupported = device.getFormatFeatures(Format.RGB8) !== FormatFeatureBit.NONE;' + }]); + removeProperty(ColorAttachment.prototype, 'ColorAttachment', [{ + name: 'beginAccesses', + suggest: 'Please assign to ColorAttachment.barrier instead' + }, { + name: 'endAccesses', + suggest: 'Please assign to ColorAttachment.barrier instead' + }]); + removeProperty(DepthStencilAttachment.prototype, 'DepthStencilAttachment', [{ + name: 'beginAccesses', + suggest: 'Please assign to DepthStencilAttachment.barrier instead' + }, { + name: 'endAccesses', + suggest: 'Please assign to DepthStencilAttachment.barrier instead' + }]); + replaceProperty(Device.prototype, 'Device', [{ + name: 'getGlobalBarrier', + newName: 'getGeneralBarrier' + }]); + + var LegacyRenderMode; + (function (LegacyRenderMode) { + LegacyRenderMode[LegacyRenderMode["AUTO"] = 0] = "AUTO"; + LegacyRenderMode[LegacyRenderMode["CANVAS"] = 1] = "CANVAS"; + LegacyRenderMode[LegacyRenderMode["WEBGL"] = 2] = "WEBGL"; + LegacyRenderMode[LegacyRenderMode["HEADLESS"] = 3] = "HEADLESS"; + })(LegacyRenderMode || (LegacyRenderMode = {})); + var RenderType; + (function (RenderType) { + RenderType[RenderType["UNKNOWN"] = -1] = "UNKNOWN"; + RenderType[RenderType["CANVAS"] = 0] = "CANVAS"; + RenderType[RenderType["WEBGL"] = 1] = "WEBGL"; + RenderType[RenderType["OPENGL"] = 2] = "OPENGL"; + RenderType[RenderType["HEADLESS"] = 3] = "HEADLESS"; + })(RenderType || (RenderType = {})); + var DeviceManager = function () { + function DeviceManager() { + this.initialized = false; + this._gfxDevice = void 0; + this._canvas = null; + this._swapchain = void 0; + this._renderType = RenderType.UNKNOWN; + } + var _proto = DeviceManager.prototype; + _proto.init = function init(canvas, bindingMappingInfo) { + if (this.initialized) { + return; + } + var renderMode = settings.querySettings(Settings.Category.RENDERING, 'renderMode'); + this._canvas = canvas; + this._renderType = this._determineRenderType(renderMode); + if (this._renderType === RenderType.WEBGL) { + var deviceInfo = new DeviceInfo(bindingMappingInfo); + { + var useWebGL2 = !!globalThis.WebGL2RenderingContext; + globalThis.navigator.userAgent.toLowerCase(); + if (sys.browserType === BrowserType.UC) { + useWebGL2 = false; + } + var deviceCtors = []; + if (useWebGL2 && legacyCC.WebGL2Device) { + deviceCtors.push(legacyCC.WebGL2Device); + } + if (legacyCC.WebGLDevice) { + deviceCtors.push(legacyCC.WebGLDevice); + } + if (legacyCC.EmptyDevice) { + deviceCtors.push(legacyCC.EmptyDevice); + } + Device.canvas = canvas; + for (var i = 0; i < deviceCtors.length; i++) { + this._gfxDevice = new deviceCtors[i](); + if (this._gfxDevice.initialize(deviceInfo)) { + break; + } + } + this._initSwapchain(); + } + } else if (this._renderType === RenderType.HEADLESS && legacyCC.EmptyDevice) { + this._gfxDevice = new legacyCC.EmptyDevice(); + this._gfxDevice.initialize(new DeviceInfo(bindingMappingInfo)); + this._initSwapchain(); + } + if (!this._gfxDevice) { + error('can not support canvas rendering in 3D'); + this._renderType = RenderType.UNKNOWN; + return; + } + if (this._canvas) { + this._canvas.oncontextmenu = function () { + return false; + }; + } + }; + _proto._initSwapchain = function _initSwapchain() { + var swapchainInfo = new SwapchainInfo(1, this._canvas); + var windowSize = screen.windowSize; + swapchainInfo.width = windowSize.width; + swapchainInfo.height = windowSize.height; + this._swapchain = this._gfxDevice.createSwapchain(swapchainInfo); + }; + _proto._determineRenderType = function _determineRenderType(renderMode) { + if (typeof renderMode !== 'number' || renderMode > RenderType.HEADLESS || renderMode < LegacyRenderMode.AUTO) { + renderMode = LegacyRenderMode.AUTO; + } + var renderType = RenderType.CANVAS; + var supportRender = false; + if (renderMode === LegacyRenderMode.CANVAS) { + renderType = RenderType.CANVAS; + supportRender = true; + } else if (renderMode === LegacyRenderMode.AUTO || renderMode === LegacyRenderMode.WEBGL) { + renderType = RenderType.WEBGL; + supportRender = true; + } else if (renderMode === LegacyRenderMode.HEADLESS) { + renderType = RenderType.HEADLESS; + supportRender = true; + } + if (!supportRender) { + throw new Error(getError(3820, renderMode)); + } + return renderType; + }; + _createClass(DeviceManager, [{ + key: "gfxDevice", + get: function get() { + return this._gfxDevice; + } + }, { + key: "swapchain", + get: function get() { + return this._swapchain; + } + }]); + return DeviceManager; + }(); + var deviceManager = new DeviceManager(); + + var index$3 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DescriptorSet: DescriptorSet, + Buffer: Buffer, + CommandBuffer: CommandBuffer, + get ObjectType () { return ObjectType; }, + get Status () { return Status; }, + get API () { return API; }, + get SurfaceTransform () { return SurfaceTransform; }, + get Feature () { return Feature; }, + get Format () { return Format; }, + get FormatType () { return FormatType; }, + get Type () { return Type$1; }, + get BufferUsageBit () { return BufferUsageBit; }, + get BufferFlagBit () { return BufferFlagBit; }, + get MemoryAccessBit () { return MemoryAccessBit; }, + get MemoryUsageBit () { return MemoryUsageBit; }, + get TextureType () { return TextureType; }, + get TextureUsageBit () { return TextureUsageBit; }, + get TextureFlagBit () { return TextureFlagBit; }, + get FormatFeatureBit () { return FormatFeatureBit; }, + get SampleCount () { return SampleCount; }, + get VsyncMode () { return VsyncMode; }, + get Filter () { return Filter$1; }, + get Address () { return Address; }, + get ComparisonFunc () { return ComparisonFunc; }, + get StencilOp () { return StencilOp; }, + get BlendFactor () { return BlendFactor; }, + get BlendOp () { return BlendOp; }, + get ColorMask () { return ColorMask; }, + get ShaderStageFlagBit () { return ShaderStageFlagBit; }, + get LoadOp () { return LoadOp; }, + get StoreOp () { return StoreOp; }, + get AccessFlagBit () { return AccessFlagBit; }, + get ResolveMode () { return ResolveMode; }, + get PipelineBindPoint () { return PipelineBindPoint; }, + get PrimitiveMode () { return PrimitiveMode; }, + get PolygonMode () { return PolygonMode; }, + get ShadeModel () { return ShadeModel; }, + get CullMode () { return CullMode; }, + get DynamicStateFlagBit () { return DynamicStateFlagBit; }, + get StencilFace () { return StencilFace; }, + get DescriptorType () { return DescriptorType; }, + get QueueType () { return QueueType; }, + get QueryType () { return QueryType; }, + get CommandBufferType () { return CommandBufferType; }, + get ClearFlagBit () { return ClearFlagBit; }, + get BarrierType () { return BarrierType; }, + get PassType () { return PassType; }, + Size: Size, + DeviceCaps: DeviceCaps, + DeviceOptions: DeviceOptions, + Offset: Offset, + Rect: Rect, + Extent: Extent, + TextureSubresLayers: TextureSubresLayers, + TextureSubresRange: TextureSubresRange, + TextureCopy: TextureCopy, + TextureBlit: TextureBlit, + BufferTextureCopy: BufferTextureCopy, + Viewport: Viewport, + Color: Color, + BindingMappingInfo: BindingMappingInfo, + SwapchainInfo: SwapchainInfo, + DeviceInfo: DeviceInfo, + BufferInfo: BufferInfo, + BufferViewInfo: BufferViewInfo, + DrawInfo: DrawInfo, + DispatchInfo: DispatchInfo, + IndirectBuffer: IndirectBuffer, + TextureInfo: TextureInfo, + TextureViewInfo: TextureViewInfo, + SamplerInfo: SamplerInfo, + Uniform: Uniform, + UniformBlock: UniformBlock, + UniformSamplerTexture: UniformSamplerTexture, + UniformSampler: UniformSampler, + UniformTexture: UniformTexture, + UniformStorageImage: UniformStorageImage, + UniformStorageBuffer: UniformStorageBuffer, + UniformInputAttachment: UniformInputAttachment, + ShaderStage: ShaderStage, + Attribute: Attribute, + ShaderInfo: ShaderInfo, + InputAssemblerInfo: InputAssemblerInfo, + ColorAttachment: ColorAttachment, + DepthStencilAttachment: DepthStencilAttachment, + SubpassInfo: SubpassInfo, + SubpassDependency: SubpassDependency, + RenderPassInfo: RenderPassInfo, + GeneralBarrierInfo: GeneralBarrierInfo, + TextureBarrierInfo: TextureBarrierInfo, + BufferBarrierInfo: BufferBarrierInfo, + FramebufferInfo: FramebufferInfo, + DescriptorSetLayoutBinding: DescriptorSetLayoutBinding, + DescriptorSetLayoutInfo: DescriptorSetLayoutInfo, + DescriptorSetInfo: DescriptorSetInfo, + PipelineLayoutInfo: PipelineLayoutInfo, + InputState: InputState, + CommandBufferInfo: CommandBufferInfo, + QueueInfo: QueueInfo, + QueryPoolInfo: QueryPoolInfo, + FormatInfo: FormatInfo, + MemoryStatus: MemoryStatus, + DynamicStencilStates: DynamicStencilStates, + DynamicStates: DynamicStates, + GFXObject: GFXObject, + get AttributeName () { return AttributeName; }, + FormatInfos: FormatInfos, + DESCRIPTOR_BUFFER_TYPE: DESCRIPTOR_BUFFER_TYPE, + DESCRIPTOR_SAMPLER_TYPE: DESCRIPTOR_SAMPLER_TYPE, + DESCRIPTOR_DYNAMIC_TYPE: DESCRIPTOR_DYNAMIC_TYPE, + DRAW_INFO_SIZE: DRAW_INFO_SIZE, + IsPowerOf2: IsPowerOf2, + FormatSize: FormatSize, + FormatSurfaceSize: FormatSurfaceSize, + GetTypeSize: GetTypeSize, + getTypedArrayConstructor: getTypedArrayConstructor, + formatAlignment: formatAlignment, + alignTo: alignTo, + Device: Device, + DefaultResource: DefaultResource, + Swapchain: Swapchain, + Framebuffer: Framebuffer, + InputAssembler: InputAssembler, + DescriptorSetLayout: DescriptorSetLayout, + PipelineLayout: PipelineLayout, + BlendState: BlendState$1, + BlendTarget: BlendTarget, + RasterizerState: RasterizerState, + DepthStencilState: DepthStencilState, + PipelineStateInfo: PipelineStateInfo, + PipelineState: PipelineState, + Queue: Queue, + RenderPass: RenderPass, + Sampler: Sampler, + Shader: Shader, + Texture: Texture, + GeneralBarrier: GeneralBarrier, + TextureBarrier: TextureBarrier, + get LegacyRenderMode () { return LegacyRenderMode; }, + get RenderType () { return RenderType; }, + DeviceManager: DeviceManager, + deviceManager: deviceManager + }); + exports('ai', index$3); + + var m$4 = new Mat4(); + function fillMeshVertices3D(node, renderer, renderData, color) { + var chunk = renderData.chunk; + var dataList = renderData.data; + var vData = chunk.vb; + var vertexCount = renderData.vertexCount; + node.getWorldMatrix(m$4); + var vertexOffset = 0; + for (var i = 0; i < vertexCount; i++) { + var vert = dataList[i]; + var x = vert.x; + var y = vert.y; + var rhw = m$4.m03 * x + m$4.m07 * y + m$4.m15; + rhw = rhw ? 1 / rhw : 1; + vData[vertexOffset + 0] = (m$4.m00 * x + m$4.m04 * y + m$4.m12) * rhw; + vData[vertexOffset + 1] = (m$4.m01 * x + m$4.m05 * y + m$4.m13) * rhw; + vData[vertexOffset + 2] = (m$4.m02 * x + m$4.m06 * y + m$4.m14) * rhw; + Color$1.toArray(vData, color, vertexOffset + 5); + vertexOffset += 9; + } + chunk.bufferId; + var vid = chunk.vertexOffset; + var meshBuffer = chunk.meshBuffer; + var ib = chunk.meshBuffer.iData; + var indexOffset = meshBuffer.indexOffset; + for (var _i = 0, count = vertexCount / 4; _i < count; _i++) { + var start = vid + _i * 4; + ib[indexOffset++] = start; + ib[indexOffset++] = start + 1; + ib[indexOffset++] = start + 2; + ib[indexOffset++] = start + 1; + ib[indexOffset++] = start + 3; + ib[indexOffset++] = start + 2; + } + meshBuffer.indexOffset += renderData.indexCount; + meshBuffer.setDirty(); + } + function updateOpacity(renderData, opacity) { + var vfmt = renderData.vertexFormat; + var vb = renderData.chunk.vb; + var attr; + var format; + var stride; + var offset = 0; + for (var i = 0; i < vfmt.length; ++i) { + attr = vfmt[i]; + format = FormatInfos[attr.format]; + if (format.hasAlpha) { + stride = renderData.floatStride; + if (format.size / format.count === 1) { + var alpha = ~~clamp$1(Math.round(opacity * 255), 0, 255); + for (var color = offset; color < vb.length; color += stride) { + vb[color] = (vb[color] & 0xffffff00 | alpha) >>> 0; + } + } else if (format.size / format.count === 4) { + for (var _alpha = offset + 3; _alpha < vb.length; _alpha += stride) { + vb[_alpha] = opacity; + } + } + } + offset += format.size >> 2; + } + } + + var minigame = {}; + + var Cache = function () { + function Cache(map) { + this._map = null; + this._count = 0; + if (map) { + this._map = map; + this._count = Object.keys(map).length; + } else { + this._map = createMap(true); + this._count = 0; + } + } + var _proto = Cache.prototype; + _proto.add = function add(key, val) { + if (!(key in this._map)) { + this._count++; + } + return this._map[key] = val; + }; + _proto.get = function get(key) { + return this._map[key]; + }; + _proto.has = function has(key) { + return key in this._map; + }; + _proto.remove = function remove(key) { + var out = this._map[key]; + if (key in this._map) { + delete this._map[key]; + this._count--; + } + return out; + }; + _proto.clear = function clear() { + if (this._count !== 0) { + this._map = createMap(true); + this._count = 0; + } + }; + _proto.forEach = function forEach(func) { + for (var _key in this._map) { + func(this._map[_key], _key); + } + }; + _proto.find = function find(predicate) { + for (var _key2 in this._map) { + if (predicate(this._map[_key2], _key2)) { + return this._map[_key2]; + } + } + return null; + }; + _proto.destroy = function destroy() { + this._map = null; + }; + _createClass(Cache, [{ + key: "map", + get: function get() { + return this._map; + } + }, { + key: "count", + get: function get() { + return this._count; + } + }]); + return Cache; + }(); + + var Pipeline = function () { + function Pipeline(name, funcs) { + this.id = Pipeline._pipelineId++; + this.name = ''; + this.pipes = []; + this.name = name; + for (var i = 0, l = funcs.length; i < l; i++) { + this.pipes.push(funcs[i]); + } + } + var _proto = Pipeline.prototype; + _proto.insert = function insert(func, index) { + if (index > this.pipes.length) { + warnID(4921); + return this; + } + this.pipes.splice(index, 0, func); + return this; + }; + _proto.append = function append(func) { + this.pipes.push(func); + return this; + }; + _proto.remove = function remove(index) { + this.pipes.splice(index, 1); + return this; + }; + _proto.sync = function sync(task) { + var pipes = this.pipes; + if (pipes.length === 0) { + return null; + } + task.isFinished = false; + for (var i = 0, l = pipes.length; i < l;) { + var pipe = pipes[i]; + var result = pipe(task); + if (result) { + task.isFinished = true; + return result; + } + i++; + if (i !== l) { + task.input = task.output; + task.output = null; + } + } + task.isFinished = true; + return task.output; + }; + _proto.async = function async(task) { + var pipes = this.pipes; + if (pipes.length === 0) { + return; + } + task.isFinished = false; + this._flow(0, task); + }; + _proto._flow = function _flow(index, task) { + var _this = this; + var pipe = this.pipes[index]; + pipe(task, function (result) { + if (result) { + task.isFinished = true; + task.dispatch('complete', result); + } else { + index++; + if (index < _this.pipes.length) { + task.input = task.output; + task.output = null; + _this._flow(index, task); + } else { + task.isFinished = true; + task.dispatch('complete', result, task.output); + } + } + }); + }; + return Pipeline; + }(); + Pipeline._pipelineId = 0; + + (function () { + function WeakCache(map) { + this._weakMap = {}; + if (typeof window.WeakRef === 'undefined') throw new Error('this platform does not support WeakRef!'); + if (map) { + for (var _key in map) { + this._weakMap[_key] = new WeakRef(map[_key]); + } + } + } + var _proto = WeakCache.prototype; + _proto.add = function add(key, val) { + this._weakMap[key] = new WeakRef(val); + return val; + }; + _proto.has = function has(key) { + return key in this._weakMap && !!this._weakMap[key].deref(); + }; + _proto.get = function get(key) { + return this._weakMap[key] && this._weakMap[key].deref(); + }; + _proto.remove = function remove(key) { + var out = this._weakMap[key]; + delete this._weakMap[key]; + return out && out.deref(); + }; + _proto.clear = function clear() { + this._weakMap = createMap(true); + }; + _proto.forEach = function forEach(func) { + for (var _key2 in this._weakMap) { + var _val = this.get(_key2); + if (_val) { + func(_val, _key2); + } + } + }; + _proto.find = function find(predicate) { + for (var _key3 in this._weakMap) { + var _val2 = this.get(_key3); + if (_val2 && predicate(_val2, _key3)) { + return this._weakMap[_key3].deref(); + } + } + return null; + }; + _proto.destroy = function destroy() { + this._weakMap = {}; + }; + _createClass(WeakCache, [{ + key: "count", + get: function get() { + return Object.values(this._weakMap).filter(function (weakRef) { + return weakRef.deref(); + }).length; + } + }]); + return WeakCache; + })(); + + var assets = new Cache(); + var files = new Cache(); + var parsed = new Cache(); + var bundles = new Cache(); + var pipeline = new Pipeline('normal load', []); + var fetchPipeline = new Pipeline('fetch', []); + var transformPipeline = new Pipeline('transform url', []); + var references = null; + var assetsOverrideMap = new Map(); + var RequestType; + (function (RequestType) { + RequestType["UUID"] = "uuid"; + RequestType["PATH"] = "path"; + RequestType["DIR"] = "dir"; + RequestType["URL"] = "url"; + RequestType["SCENE"] = "scene"; + })(RequestType || (RequestType = {})); + var presets = { + "default": { + priority: 0 + }, + preload: { + maxConcurrency: 6, + maxRequestsPerFrame: 2, + priority: -1 + }, + scene: { + maxConcurrency: 20, + maxRequestsPerFrame: 20, + priority: 1 + }, + bundle: { + maxConcurrency: 20, + maxRequestsPerFrame: 20, + priority: 2 + }, + remote: { + maxRetryCount: 4 + } + }; + var BuiltinBundleName; + (function (BuiltinBundleName) { + BuiltinBundleName["INTERNAL"] = "internal"; + BuiltinBundleName["RESOURCES"] = "resources"; + BuiltinBundleName["MAIN"] = "main"; + BuiltinBundleName["START_SCENE"] = "start-scene"; + })(BuiltinBundleName || (BuiltinBundleName = {})); + + var Task = function () { + Task.create = function create(options) { + var out; + if (Task._deadPool.length !== 0) { + out = Task._deadPool.pop(); + out.set(options); + } else { + out = new Task(options); + } + return out; + }; + function Task(options) { + this.id = Task._taskId++; + this.onComplete = null; + this.onProgress = null; + this.onError = null; + this.source = null; + this.output = null; + this.input = null; + this.progress = null; + this.options = null; + this.isFinished = true; + this.set(options); + } + var _proto = Task.prototype; + _proto.set = function set(options) { + if (options === void 0) { + options = Object.create(null); + } + this.onComplete = options.onComplete || null; + this.onProgress = options.onProgress || null; + this.onError = options.onError || null; + this.source = this.input = options.input; + this.output = null; + this.progress = options.progress; + this.options = options.options || Object.create(null); + }; + _proto.dispatch = function dispatch(event, param1, param2, param3, param4) { + switch (event) { + case 'complete': + if (this.onComplete) { + this.onComplete(param1, param2); + } + break; + case 'progress': + if (this.onProgress) { + this.onProgress(param1, param2, param3, param4); + } + break; + case 'error': + if (this.onError) { + this.onError(param1, param2, param3, param4); + } + break; + default: + { + var str = "on" + event[0].toUpperCase() + event.substr(1); + if (typeof this[str] === 'function') { + this[str](param1, param2, param3, param4); + } + break; + } + } + }; + _proto.recycle = function recycle() { + if (Task._deadPool.length === Task.MAX_DEAD_NUM) { + return; + } + this.onComplete = null; + this.onProgress = null; + this.onError = null; + this.source = this.output = this.input = null; + this.progress = null; + this.options = null; + Task._deadPool.push(this); + }; + _createClass(Task, [{ + key: "isFinish", + get: function get() { + return this.isFinished; + }, + set: function set(val) { + this.isFinished = val; + } + }]); + return Task; + }(); + Task.MAX_DEAD_NUM = 500; + Task._taskId = 0; + Task._deadPool = []; + + var separator = '@'; + var HexChars = '0123456789abcdef'.split(''); + var _t = ['', '', '', '']; + var UuidTemplate = _t.concat(_t, '-', _t, '-', _t, '-', _t, '-', _t, _t, _t); + var Indices = UuidTemplate.map(function (x, i) { + return x === '-' ? NaN : i; + }).filter(Number.isFinite); + function decodeUuid(base64) { + var strs = base64.split(separator); + var uuid = strs[0]; + if (uuid.length !== 22) { + return base64; + } + UuidTemplate[0] = base64[0]; + UuidTemplate[1] = base64[1]; + for (var i = 2, j = 2; i < 22; i += 2) { + var lhs = BASE64_VALUES$1[base64.charCodeAt(i)]; + var rhs = BASE64_VALUES$1[base64.charCodeAt(i + 1)]; + UuidTemplate[Indices[j++]] = HexChars[lhs >> 2]; + UuidTemplate[Indices[j++]] = HexChars[(lhs & 3) << 2 | rhs >> 4]; + UuidTemplate[Indices[j++]] = HexChars[rhs & 0xF]; + } + return base64.replace(uuid, UuidTemplate.join('')); + } + + var _uuidRegex = /.*[/\\][0-9a-fA-F]{2}[/\\]([0-9a-fA-F-@]{8,}).*/; + function getUuidFromURL(url) { + var matches = _uuidRegex.exec(url); + if (matches) { + return matches[1]; + } + return ''; + } + function getUrlWithUuid(uuid, options) { + options = options || Object.create(null); + options.__isNative__ = options.isNative; + if (options.nativeExt) { + options.ext = options.nativeExt; + } + var bundle = bundles.find(function (b) { + return !!b.getAssetInfo(uuid); + }); + if (bundle) { + options.bundle = bundle.name; + } + return transform(uuid, options); + } + function isScene(asset) { + return !!asset && (asset instanceof legacyCC.SceneAsset || asset instanceof legacyCC.Scene); + } + function normalize(url) { + if (url) { + if (url.charCodeAt(0) === 46 && url.charCodeAt(1) === 47) { + url = url.slice(2); + } else if (url.charCodeAt(0) === 47) { + url = url.slice(1); + } + } + return url; + } + function transform(input, options) { + var subTask = Task.create({ + input: input, + options: options + }); + var urls = []; + try { + var result = transformPipeline.sync(subTask); + for (var _iterator = _createForOfIteratorHelperLoose(result), _step; !(_step = _iterator()).done;) { + var requestItem = _step.value; + var url = requestItem.url; + requestItem.recycle(); + urls.push(url); + } + } catch (e) { + for (var _iterator2 = _createForOfIteratorHelperLoose(subTask.output), _step2; !(_step2 = _iterator2()).done;) { + var item = _step2.value; + item.recycle(); + } + error(e.message, e.stack); + } + subTask.recycle(); + return urls.length > 1 ? urls : urls[0]; + } + + var helper = /*#__PURE__*/Object.freeze({ + __proto__: null, + getUuidFromURL: getUuidFromURL, + getUrlWithUuid: getUrlWithUuid, + isScene: isScene, + normalize: normalize, + transform: transform, + decodeUuid: decodeUuid + }); + + var _dec$2g, _class$2e, _class2$1$, _initializer$1K; + var ccclass$s = ccclass$t, + serializable$8 = serializable$9, + property = property$1; + var Asset = exports('dQ', (_dec$2g = ccclass$s('cc.Asset'), _dec$2g(_class$2e = (_class2$1$ = function (_Eventify) { + _inheritsLoose(Asset, _Eventify); + Asset.deserialize = function deserialize(data) { + return legacyCC.deserialize(data); + }; + function Asset() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Eventify.call.apply(_Eventify, [this].concat(args)) || this; + _this.loaded = true; + _this._native = _initializer$1K && _initializer$1K(); + _this._nativeUrl = ''; + _this._file = null; + _this._ref = 0; + Object.defineProperty(_assertThisInitialized(_this), '_uuid', { + value: '', + writable: true + }); + return _this; + } + var _proto = Asset.prototype; + _proto.toString = function toString() { + return this.nativeUrl; + }; + _proto.serialize = function serialize() {}; + _proto._setRawAsset = function _setRawAsset(filename, inLibrary) { + if (inLibrary === void 0) { + inLibrary = true; + } + if (inLibrary !== false) { + this._native = filename || ''; + } else { + this._native = "/" + filename; + } + }; + _proto.addRef = function addRef() { + this._ref++; + return this; + }; + _proto.decRef = function decRef(autoRelease) { + if (autoRelease === void 0) { + autoRelease = true; + } + if (this._ref > 0) { + this._ref--; + } + if (autoRelease) { + legacyCC.assetManager._releaseManager.tryRelease(this); + } + return this; + }; + _proto.onLoaded = function onLoaded() {}; + _proto.initDefault = function initDefault(uuid) { + if (uuid) { + this._uuid = uuid; + } + this.isDefault = true; + }; + _proto.validate = function validate() { + return true; + }; + _proto.destroy = function destroy() { + debug(getError(12101, this._uuid)); + return _Eventify.prototype.destroy.call(this); + }; + _createClass(Asset, [{ + key: "nativeUrl", + get: function get() { + if (!this._nativeUrl) { + if (!this._native) return ''; + var name = this._native; + if (name.charCodeAt(0) === 47) { + return name.slice(1); + } + if (name.charCodeAt(0) === 46) { + this._nativeUrl = getUrlWithUuid(this._uuid, { + nativeExt: name, + isNative: true + }); + } else { + this._nativeUrl = getUrlWithUuid(this._uuid, { + __nativeName__: name, + nativeExt: extname(name), + isNative: true + }); + } + } + return this._nativeUrl; + } + }, { + key: "uuid", + get: function get() { + return this._uuid; + } + }, { + key: "_nativeAsset", + get: function get() { + return this._file; + }, + set: function set(obj) { + this._file = obj; + } + }, { + key: "nativeAsset", + get: function get() { + return this._file; + } + }, { + key: "_nativeDep", + get: function get() { + if (this._native) { + return { + __isNative__: true, + uuid: this._uuid, + ext: this._native + }; + } + return undefined; + } + }, { + key: "refCount", + get: function get() { + return this._ref; + } + }]); + return Asset; + }(Eventify(CCObject)), (_initializer$1K = applyDecoratedInitializer(_class2$1$.prototype, "_native", [serializable$8], function () { + return ''; + }), _applyDecoratedDescriptor(_class2$1$.prototype, "_nativeAsset", [property], Object.getOwnPropertyDescriptor(_class2$1$.prototype, "_nativeAsset"), _class2$1$.prototype)), _class2$1$)) || _class$2e)); + Asset.prototype.createNode = null; + legacyCC.Asset = Asset; + + var CUSTOM_PIXEL_FORMAT = 1024; + var PixelFormat; + (function (PixelFormat) { + PixelFormat[PixelFormat["RGB565"] = Format.R5G6B5] = "RGB565"; + PixelFormat[PixelFormat["RGB5A1"] = Format.RGB5A1] = "RGB5A1"; + PixelFormat[PixelFormat["RGBA4444"] = Format.RGBA4] = "RGBA4444"; + PixelFormat[PixelFormat["RGB888"] = Format.RGB8] = "RGB888"; + PixelFormat[PixelFormat["RGB32F"] = Format.RGB32F] = "RGB32F"; + PixelFormat[PixelFormat["RGBA8888"] = Format.RGBA8] = "RGBA8888"; + PixelFormat[PixelFormat["RGBA32F"] = Format.RGBA32F] = "RGBA32F"; + PixelFormat[PixelFormat["A8"] = Format.A8] = "A8"; + PixelFormat[PixelFormat["I8"] = Format.L8] = "I8"; + PixelFormat[PixelFormat["AI8"] = Format.LA8] = "AI8"; + PixelFormat[PixelFormat["RGB_PVRTC_2BPPV1"] = Format.PVRTC_RGB2] = "RGB_PVRTC_2BPPV1"; + PixelFormat[PixelFormat["RGBA_PVRTC_2BPPV1"] = Format.PVRTC_RGBA2] = "RGBA_PVRTC_2BPPV1"; + PixelFormat[PixelFormat["RGB_A_PVRTC_2BPPV1"] = CUSTOM_PIXEL_FORMAT] = "RGB_A_PVRTC_2BPPV1"; + PixelFormat[PixelFormat["RGB_PVRTC_4BPPV1"] = Format.PVRTC_RGB4] = "RGB_PVRTC_4BPPV1"; + PixelFormat[PixelFormat["RGBA_PVRTC_4BPPV1"] = Format.PVRTC_RGBA4] = "RGBA_PVRTC_4BPPV1"; + PixelFormat[PixelFormat["RGB_A_PVRTC_4BPPV1"] = CUSTOM_PIXEL_FORMAT + 1] = "RGB_A_PVRTC_4BPPV1"; + PixelFormat[PixelFormat["RGB_ETC1"] = Format.ETC_RGB8] = "RGB_ETC1"; + PixelFormat[PixelFormat["RGBA_ETC1"] = CUSTOM_PIXEL_FORMAT + 2] = "RGBA_ETC1"; + PixelFormat[PixelFormat["RGB_ETC2"] = Format.ETC2_RGB8] = "RGB_ETC2"; + PixelFormat[PixelFormat["RGBA_ETC2"] = Format.ETC2_RGBA8] = "RGBA_ETC2"; + PixelFormat[PixelFormat["RGBA_ASTC_4x4"] = Format.ASTC_RGBA_4X4] = "RGBA_ASTC_4x4"; + PixelFormat[PixelFormat["RGBA_ASTC_5x4"] = Format.ASTC_RGBA_5X4] = "RGBA_ASTC_5x4"; + PixelFormat[PixelFormat["RGBA_ASTC_5x5"] = Format.ASTC_RGBA_5X5] = "RGBA_ASTC_5x5"; + PixelFormat[PixelFormat["RGBA_ASTC_6x5"] = Format.ASTC_RGBA_6X5] = "RGBA_ASTC_6x5"; + PixelFormat[PixelFormat["RGBA_ASTC_6x6"] = Format.ASTC_RGBA_6X6] = "RGBA_ASTC_6x6"; + PixelFormat[PixelFormat["RGBA_ASTC_8x5"] = Format.ASTC_RGBA_8X5] = "RGBA_ASTC_8x5"; + PixelFormat[PixelFormat["RGBA_ASTC_8x6"] = Format.ASTC_RGBA_8X6] = "RGBA_ASTC_8x6"; + PixelFormat[PixelFormat["RGBA_ASTC_8x8"] = Format.ASTC_RGBA_8X8] = "RGBA_ASTC_8x8"; + PixelFormat[PixelFormat["RGBA_ASTC_10x5"] = Format.ASTC_RGBA_10X5] = "RGBA_ASTC_10x5"; + PixelFormat[PixelFormat["RGBA_ASTC_10x6"] = Format.ASTC_RGBA_10X6] = "RGBA_ASTC_10x6"; + PixelFormat[PixelFormat["RGBA_ASTC_10x8"] = Format.ASTC_RGBA_10X8] = "RGBA_ASTC_10x8"; + PixelFormat[PixelFormat["RGBA_ASTC_10x10"] = Format.ASTC_RGBA_10X10] = "RGBA_ASTC_10x10"; + PixelFormat[PixelFormat["RGBA_ASTC_12x10"] = Format.ASTC_RGBA_12X10] = "RGBA_ASTC_12x10"; + PixelFormat[PixelFormat["RGBA_ASTC_12x12"] = Format.ASTC_RGBA_12X12] = "RGBA_ASTC_12x12"; + })(PixelFormat || (PixelFormat = {})); + var WrapMode$1; + (function (WrapMode) { + WrapMode[WrapMode["REPEAT"] = Address.WRAP] = "REPEAT"; + WrapMode[WrapMode["CLAMP_TO_EDGE"] = Address.CLAMP] = "CLAMP_TO_EDGE"; + WrapMode[WrapMode["MIRRORED_REPEAT"] = Address.MIRROR] = "MIRRORED_REPEAT"; + WrapMode[WrapMode["CLAMP_TO_BORDER"] = Address.BORDER] = "CLAMP_TO_BORDER"; + })(WrapMode$1 || (WrapMode$1 = {})); + var Filter; + (function (Filter) { + Filter[Filter["NONE"] = Filter$1.NONE] = "NONE"; + Filter[Filter["LINEAR"] = Filter$1.LINEAR] = "LINEAR"; + Filter[Filter["NEAREST"] = Filter$1.POINT] = "NEAREST"; + })(Filter || (Filter = {})); + + var _dec$2f, _class$2d, _class2$1_, _class3$M; + var COMPRESSED_HEADER_LENGTH = 4; + var COMPRESSED_MIPMAP_DATA_SIZE_LENGTH = 4; + var COMPRESSED_MIPMAP_LEVEL_COUNT_LENGTH = 4; + var COMPRESSED_MIPMAP_MAGIC = 0x50494d43; + var compressType = Enum({ + PVR: 0, + PKM: 1, + ASTC: 2 + }); + var PVR_HEADER_LENGTH = 13; + var PVR_MAGIC = 0x03525650; + var PVR_HEADER_MAGIC = 0; + var PVR_HEADER_HEIGHT = 6; + var PVR_HEADER_WIDTH = 7; + var PVR_HEADER_METADATA = 12; + var ETC_PKM_HEADER_LENGTH = 16; + var ETC_PKM_FORMAT_OFFSET = 6; + var ETC_PKM_WIDTH_OFFSET = 12; + var ETC_PKM_HEIGHT_OFFSET = 14; + var ETC1_RGB_NO_MIPMAPS = 0; + var ETC2_RGB_NO_MIPMAPS = 1; + var ETC2_RGBA_NO_MIPMAPS = 3; + var ASTC_MAGIC = 0x5CA1AB13; + var ASTC_HEADER_LENGTH = 16; + var ASTC_HEADER_MAGIC = 4; + var ASTC_HEADER_SIZE_X_BEGIN = 7; + var ASTC_HEADER_SIZE_Y_BEGIN = 10; + function getASTCFormat(xdim, ydim) { + if (xdim === 4) { + return PixelFormat.RGBA_ASTC_4x4; + } + if (xdim === 5) { + if (ydim === 4) { + return PixelFormat.RGBA_ASTC_5x4; + } + return PixelFormat.RGBA_ASTC_5x5; + } + if (xdim === 6) { + if (ydim === 5) { + return PixelFormat.RGBA_ASTC_6x5; + } + return PixelFormat.RGBA_ASTC_6x6; + } + if (xdim === 8) { + if (ydim === 5) { + return PixelFormat.RGBA_ASTC_8x5; + } + if (ydim === 6) { + return PixelFormat.RGBA_ASTC_8x6; + } + return PixelFormat.RGBA_ASTC_8x8; + } + if (xdim === 10) { + if (ydim === 5) { + return PixelFormat.RGBA_ASTC_10x5; + } + if (ydim === 6) { + return PixelFormat.RGBA_ASTC_10x6; + } + if (ydim === 8) { + return PixelFormat.RGBA_ASTC_10x8; + } + return PixelFormat.RGBA_ASTC_10x10; + } + if (ydim === 10) { + return PixelFormat.RGBA_ASTC_12x10; + } + return PixelFormat.RGBA_ASTC_12x12; + } + function readBEUint16(header, offset) { + return header[offset] << 8 | header[offset + 1]; + } + function isImageBitmap(imageSource) { + return !!(sys.hasFeature(sys.Feature.IMAGE_BITMAP) && imageSource instanceof ImageBitmap); + } + function isNativeImage(imageSource) { + return imageSource instanceof HTMLImageElement || imageSource instanceof HTMLCanvasElement || isImageBitmap(imageSource); + } + var ImageAsset = exports('dW', (_dec$2f = ccclass$t('cc.ImageAsset'), _dec$2f(_class$2d = (_class2$1_ = (_class3$M = function (_Asset) { + _inheritsLoose(ImageAsset, _Asset); + ImageAsset.mergeCompressedTextureMips = function mergeCompressedTextureMips(files) { + var out = new Uint8Array(0); + var err = null; + try { + var fileHeaderLength = COMPRESSED_HEADER_LENGTH + COMPRESSED_MIPMAP_LEVEL_COUNT_LENGTH + files.length * COMPRESSED_MIPMAP_DATA_SIZE_LENGTH; + var fileLength = 0; + for (var _iterator = _createForOfIteratorHelperLoose(files), _step; !(_step = _iterator()).done;) { + var _file = _step.value; + fileLength += _file.byteLength; + } + fileLength += fileHeaderLength; + out = new Uint8Array(fileLength); + var outView = new DataView(out.buffer, out.byteOffset, out.byteLength); + outView.setUint32(0, COMPRESSED_MIPMAP_MAGIC, true); + outView.setUint32(COMPRESSED_HEADER_LENGTH, files.length, true); + var dataOffset = fileHeaderLength; + for (var i = 0; i < files.length; i++) { + var file = files[i]; + outView.setUint32(COMPRESSED_HEADER_LENGTH + COMPRESSED_MIPMAP_LEVEL_COUNT_LENGTH + i * COMPRESSED_MIPMAP_DATA_SIZE_LENGTH, file.byteLength, true); + if (file instanceof ArrayBuffer) { + var srcArray = new Uint8Array(file); + out.set(srcArray, dataOffset); + } else { + var _srcArray = new Uint8Array(file.buffer, file.byteOffset, file.byteLength); + out.set(_srcArray, dataOffset); + } + dataOffset += file.byteLength; + } + } catch (e) { + err = e; + console.warn(err); + } + return out; + }; + ImageAsset.parseCompressedTextures = function parseCompressedTextures(file, type) { + var out = { + _data: new Uint8Array(0), + _compressed: true, + width: 0, + height: 0, + format: 0, + mipmapLevelDataSize: [] + }; + var buffer = file instanceof ArrayBuffer ? file : file.buffer; + var bufferView = new DataView(buffer); + var magicNumber = bufferView.getUint32(0, true); + if (magicNumber === COMPRESSED_MIPMAP_MAGIC) { + var mipmapLevelNumber = bufferView.getUint32(COMPRESSED_HEADER_LENGTH, true); + var mipmapLevelDataSize = bufferView.getUint32(COMPRESSED_HEADER_LENGTH + COMPRESSED_MIPMAP_LEVEL_COUNT_LENGTH, true); + var fileHeaderByteLength = COMPRESSED_HEADER_LENGTH + COMPRESSED_MIPMAP_LEVEL_COUNT_LENGTH + mipmapLevelNumber * COMPRESSED_MIPMAP_DATA_SIZE_LENGTH; + ImageAsset.parseCompressedTexture(file, 0, fileHeaderByteLength, mipmapLevelDataSize, type, out); + var beginOffset = fileHeaderByteLength + mipmapLevelDataSize; + for (var i = 1; i < mipmapLevelNumber; i++) { + var endOffset = bufferView.getUint32(COMPRESSED_HEADER_LENGTH + COMPRESSED_MIPMAP_LEVEL_COUNT_LENGTH + i * COMPRESSED_MIPMAP_DATA_SIZE_LENGTH, true); + ImageAsset.parseCompressedTexture(file, i, beginOffset, endOffset, type, out); + beginOffset += endOffset; + } + } else { + ImageAsset.parseCompressedTexture(file, 0, 0, 0, type, out); + } + return out; + }; + ImageAsset.parseCompressedTexture = function parseCompressedTexture(file, levelIndex, beginOffset, endOffset, type, out) { + switch (type) { + case compressType.PVR: + ImageAsset.parsePVRTexture(file, levelIndex, beginOffset, endOffset, out); + break; + case compressType.PKM: + ImageAsset.parsePKMTexture(file, levelIndex, beginOffset, endOffset, out); + break; + case compressType.ASTC: + ImageAsset.parseASTCTexture(file, levelIndex, beginOffset, endOffset, out); + break; + } + }; + ImageAsset.parsePVRTexture = function parsePVRTexture(file, levelIndex, beginOffset, endOffset, out) { + var buffer = file instanceof ArrayBuffer ? file : file.buffer; + var header = new Int32Array(buffer, beginOffset, PVR_HEADER_LENGTH); + if (header[PVR_HEADER_MAGIC] === PVR_MAGIC) { + var byteOffset = beginOffset + header[PVR_HEADER_METADATA] + 52; + var length = endOffset - header.byteLength; + if (endOffset > 0) { + var srcView = new Uint8Array(buffer, byteOffset, length); + var dstView = new Uint8Array(out._data.byteLength + srcView.byteLength); + dstView.set(out._data); + dstView.set(srcView, out._data.byteLength); + out._data = dstView; + out.mipmapLevelDataSize[levelIndex] = length; + } else { + out._data = new Uint8Array(buffer, byteOffset); + } + out.width = levelIndex > 0 ? out.width : header[PVR_HEADER_WIDTH]; + out.height = levelIndex > 0 ? out.height : header[PVR_HEADER_HEIGHT]; + } else if (header[11] === 0x21525650) { + var _byteOffset = beginOffset + header[0]; + var _length = endOffset - header.byteLength; + if (endOffset > 0) { + var _srcView = new Uint8Array(buffer, _byteOffset, _length); + var _dstView = new Uint8Array(out._data.byteLength + _srcView.byteLength); + _dstView.set(out._data); + _dstView.set(_srcView, out._data.byteLength); + out._data = _dstView; + out.mipmapLevelDataSize[levelIndex] = _length; + } else { + out._data = new Uint8Array(buffer, _byteOffset); + } + out.width = levelIndex > 0 ? out.width : header[1]; + out.height = levelIndex > 0 ? out.height : header[2]; + } else { + throw new Error('Invalid magic number in PVR header'); + } + }; + ImageAsset.parsePKMTexture = function parsePKMTexture(file, levelIndex, beginOffset, endOffset, out) { + var buffer = file instanceof ArrayBuffer ? file : file.buffer; + var header = new Uint8Array(buffer, beginOffset, ETC_PKM_HEADER_LENGTH); + var format = readBEUint16(header, ETC_PKM_FORMAT_OFFSET); + if (format !== ETC1_RGB_NO_MIPMAPS && format !== ETC2_RGB_NO_MIPMAPS && format !== ETC2_RGBA_NO_MIPMAPS) { + throw new Error('Invalid magic number in ETC header'); + } + var byteOffset = beginOffset + ETC_PKM_HEADER_LENGTH; + var length = endOffset - ETC_PKM_HEADER_LENGTH; + if (endOffset > 0) { + var srcView = new Uint8Array(buffer, byteOffset, length); + var dstView = new Uint8Array(out._data.byteLength + srcView.byteLength); + dstView.set(out._data); + dstView.set(srcView, out._data.byteLength); + out._data = dstView; + out.mipmapLevelDataSize[levelIndex] = length; + } else { + out._data = new Uint8Array(buffer, byteOffset); + } + out.width = levelIndex > 0 ? out.width : readBEUint16(header, ETC_PKM_WIDTH_OFFSET); + out.height = levelIndex > 0 ? out.height : readBEUint16(header, ETC_PKM_HEIGHT_OFFSET); + }; + ImageAsset.parseASTCTexture = function parseASTCTexture(file, levelIndex, beginOffset, endOffset, out) { + var buffer = file instanceof ArrayBuffer ? file : file.buffer; + var header = new Uint8Array(buffer, beginOffset, ASTC_HEADER_LENGTH); + var magicval = header[0] + (header[1] << 8) + (header[2] << 16) + (header[3] << 24); + if (magicval !== ASTC_MAGIC) { + throw new Error('Invalid magic number in ASTC header'); + } + var xdim = header[ASTC_HEADER_MAGIC]; + var ydim = header[ASTC_HEADER_MAGIC + 1]; + var zdim = header[ASTC_HEADER_MAGIC + 2]; + if ((xdim < 3 || xdim > 6 || ydim < 3 || ydim > 6 || zdim < 3 || zdim > 6) && (xdim < 4 || xdim === 7 || xdim === 9 || xdim === 11 || xdim > 12 || ydim < 4 || ydim === 7 || ydim === 9 || ydim === 11 || ydim > 12 || zdim !== 1)) { + throw new Error('Invalid block number in ASTC header'); + } + var format = getASTCFormat(xdim, ydim); + var byteOffset = beginOffset + ASTC_HEADER_LENGTH; + var length = endOffset - ASTC_HEADER_LENGTH; + if (endOffset > 0) { + var srcView = new Uint8Array(buffer, byteOffset, length); + var dstView = new Uint8Array(out._data.byteLength + srcView.byteLength); + dstView.set(out._data); + dstView.set(srcView, out._data.byteLength); + out._data = dstView; + out.mipmapLevelDataSize[levelIndex] = length; + } else { + out._data = new Uint8Array(buffer, byteOffset); + } + out.width = levelIndex > 0 ? out.width : header[ASTC_HEADER_SIZE_X_BEGIN] + (header[ASTC_HEADER_SIZE_X_BEGIN + 1] << 8) + (header[ASTC_HEADER_SIZE_X_BEGIN + 2] << 16); + out.height = levelIndex > 0 ? out.height : header[ASTC_HEADER_SIZE_Y_BEGIN] + (header[ASTC_HEADER_SIZE_Y_BEGIN + 1] << 8) + (header[ASTC_HEADER_SIZE_Y_BEGIN + 2] << 16); + out.format = format; + }; + var _proto = ImageAsset.prototype; + _proto.extractMipmap0 = function extractMipmap0() { + if (this.mipmapLevelDataSize && this.mipmapLevelDataSize.length > 0) { + var mipmapSize = this.mipmapLevelDataSize[0]; + var data = this.data; + var dataView = new Uint8Array(data.buffer, 0, mipmapSize); + var mipmap = new ImageAsset({ + _data: dataView, + _compressed: true, + width: this.width, + height: this.height, + format: this.format, + mipmapLevelDataSize: [] + }); + mipmap._uuid = "" + this._uuid; + return mipmap; + } else { + return this; + } + }; + _proto.extractMipmaps = function extractMipmaps() { + var images = []; + if (this.mipmapLevelDataSize && this.mipmapLevelDataSize.length > 0) { + var mipmapLevelDataSize = this.mipmapLevelDataSize; + var data = this.data; + var byteOffset = 0; + var height = this.height; + var width = this.width; + for (var _iterator2 = _createForOfIteratorHelperLoose(mipmapLevelDataSize), _step2; !(_step2 = _iterator2()).done;) { + var mipmapSize = _step2.value; + var dataView = new Uint8Array(data.buffer, byteOffset, mipmapSize); + var mipmap = new ImageAsset({ + _data: dataView, + _compressed: true, + width: width, + height: height, + format: this.format, + mipmapLevelDataSize: [] + }); + byteOffset += mipmapSize; + mipmap._uuid = "" + this._uuid; + width = Math.max(width >> 1, 1); + height = Math.max(height >> 1, 1); + images.push(mipmap); + } + } else { + images.push(this); + } + return images; + }; + function ImageAsset(nativeAsset) { + var _this; + _this = _Asset.call(this) || this; + _this._nativeData = void 0; + _this._exportedExts = undefined; + _this._format = PixelFormat.RGBA8888; + _this._width = 0; + _this._height = 0; + _this._nativeData = { + _data: null, + width: 0, + height: 0, + format: 0, + _compressed: false, + mipmapLevelDataSize: [] + }; + if (nativeAsset !== undefined) { + _this.reset(nativeAsset); + } + return _this; + } + _proto.reset = function reset(data) { + if (isImageBitmap(data)) { + this._nativeData = data; + } else if (!(data instanceof HTMLElement)) { + this._nativeData = data; + this._format = data.format; + } else { + this._nativeData = data; + } + }; + _proto.destroy = function destroy() { + if (this.data && this.data instanceof HTMLImageElement) { + this.data.src = ''; + this._setRawAsset(''); + } else if (isImageBitmap(this.data)) { + var _this$data; + (_this$data = this.data) === null || _this$data === void 0 ? void 0 : _this$data.close(); + } + return _Asset.prototype.destroy.call(this); + }; + _proto._serialize = function _serialize() { + }; + _proto._deserialize = function _deserialize(data) { + var fmtStr = ''; + if (typeof data === 'string') { + fmtStr = data; + } else { + this._width = data.w; + this._height = data.h; + fmtStr = data.fmt; + } + var device = _getGlobalDevice(); + var extensionIDs = fmtStr.split('_'); + var preferedExtensionIndex = Number.MAX_VALUE; + var format = this._format; + var ext = ''; + var SupportTextureFormats = macro.SUPPORT_TEXTURE_FORMATS; + for (var _iterator4 = _createForOfIteratorHelperLoose(extensionIDs), _step4; !(_step4 = _iterator4()).done;) { + var extensionID = _step4.value; + var extFormat = extensionID.split('@'); + var i = parseInt(extFormat[0], undefined); + var tmpExt = ImageAsset.extnames[i] || extFormat[0]; + var index = SupportTextureFormats.indexOf(tmpExt); + if (index !== -1 && index < preferedExtensionIndex) { + var fmt = extFormat[1] ? parseInt(extFormat[1]) : this._format; + if (tmpExt === '.astc' && (!device || !(device.getFormatFeatures(Format.ASTC_RGBA_4X4) & FormatFeatureBit.SAMPLED_TEXTURE))) { + continue; + } else if (tmpExt === '.pvr' && (!device || !(device.getFormatFeatures(Format.PVRTC_RGBA4) & FormatFeatureBit.SAMPLED_TEXTURE))) { + continue; + } else if ((fmt === PixelFormat.RGB_ETC1 || fmt === PixelFormat.RGBA_ETC1) && (!device || !(device.getFormatFeatures(Format.ETC_RGB8) & FormatFeatureBit.SAMPLED_TEXTURE))) { + continue; + } else if ((fmt === PixelFormat.RGB_ETC2 || fmt === PixelFormat.RGBA_ETC2) && (!device || !(device.getFormatFeatures(Format.ETC2_RGB8) & FormatFeatureBit.SAMPLED_TEXTURE))) { + continue; + } else if (tmpExt === '.webp' && !sys.hasFeature(sys.Feature.WEBP)) { + continue; + } + preferedExtensionIndex = index; + ext = tmpExt; + format = fmt; + } + } + if (ext) { + this._setRawAsset(ext); + this._format = format; + } else { + warnID(3121); + } + }; + _proto.initDefault = function initDefault(uuid) { + _Asset.prototype.initDefault.call(this, uuid); + if (!ImageAsset._sharedPlaceHolderCanvas) { + var canvas = ccwindow.document.createElement('canvas'); + var context = canvas.getContext('2d'); + var l = canvas.width = canvas.height = 2; + context.fillStyle = '#ff00ff'; + context.fillRect(0, 0, l, l); + this.reset(canvas); + ImageAsset._sharedPlaceHolderCanvas = canvas; + } else { + this.reset(ImageAsset._sharedPlaceHolderCanvas); + } + }; + _proto.validate = function validate() { + return !!this.data; + }; + _createClass(ImageAsset, [{ + key: "_nativeAsset", + get: function get() { + return this._nativeData; + }, + set: function set(value) { + if (!(value instanceof HTMLElement) && !isImageBitmap(value)) { + value.format = value.format || this._format; + } + this.reset(value); + } + }, { + key: "data", + get: function get() { + if (isNativeImage(this._nativeData)) { + return this._nativeData; + } + return this._nativeData && this._nativeData._data; + } + }, { + key: "width", + get: function get() { + return this._nativeData.width || this._width; + } + }, { + key: "height", + get: function get() { + return this._nativeData.height || this._height; + } + }, { + key: "format", + get: function get() { + return this._format; + } + }, { + key: "isCompressed", + get: function get() { + return this._format >= PixelFormat.RGB_ETC1 && this._format <= PixelFormat.RGBA_ASTC_12x12 || this._format >= PixelFormat.RGB_A_PVRTC_2BPPV1 && this._format <= PixelFormat.RGBA_ETC1; + } + }, { + key: "mipmapLevelDataSize", + get: function get() { + return this._nativeData.mipmapLevelDataSize; + } + }, { + key: "url", + get: function get() { + return this.nativeUrl; + } + }]); + return ImageAsset; + }(Asset), _class3$M.extnames = ['.png', '.jpg', '.jpeg', '.bmp', '.webp', '.pvr', '.pkm', '.astc'], _class3$M._sharedPlaceHolderCanvas = null, _class3$M), (_applyDecoratedDescriptor(_class2$1_.prototype, "_nativeAsset", [override$1], Object.getOwnPropertyDescriptor(_class2$1_.prototype, "_nativeAsset"), _class2$1_.prototype)), _class2$1_)) || _class$2d)); + function _getGlobalDevice() { + return deviceManager.gfxDevice; + } + legacyCC.ImageAsset = ImageAsset; + + var _dec$2e, _class$2c, _class2$1Z, _initializer$1J, _initializer2$1j, _initializer3$_, _initializer4$Q, _initializer5$E, _initializer6$x, _initializer7$p, _initializer8$o, _class3$L; + ccenum(Format); + var idGenerator$2 = new IDGenerator('Tex'); + var TextureBase = (_dec$2e = ccclass$t('cc.TextureBase'), _dec$2e(_class$2c = (_class2$1Z = (_class3$L = function (_Asset) { + _inheritsLoose(TextureBase, _Asset); + function TextureBase() { + var _this; + _this = _Asset.call(this) || this; + _this._format = _initializer$1J && _initializer$1J(); + _this._minFilter = _initializer2$1j && _initializer2$1j(); + _this._magFilter = _initializer3$_ && _initializer3$_(); + _this._mipFilter = _initializer4$Q && _initializer4$Q(); + _this._wrapS = _initializer5$E && _initializer5$E(); + _this._wrapT = _initializer6$x && _initializer6$x(); + _this._wrapR = _initializer7$p && _initializer7$p(); + _this._anisotropy = _initializer8$o && _initializer8$o(); + _this._width = 1; + _this._height = 1; + _this._id = void 0; + _this._samplerInfo = new SamplerInfo(); + _this._gfxSampler = null; + _this._gfxDevice = null; + _this._textureHash = 0; + _this._id = idGenerator$2.getNewId(); + _this._gfxDevice = _this._getGFXDevice(); + _this._textureHash = murmurhash2_32_gc(_this._id, 666); + return _this; + } + var _proto = TextureBase.prototype; + _proto.getId = function getId() { + return this._id; + }; + _proto.getPixelFormat = function getPixelFormat() { + return this._format; + }; + _proto.getAnisotropy = function getAnisotropy() { + return this._anisotropy; + }; + _proto.setWrapMode = function setWrapMode(wrapS, wrapT, wrapR) { + if (wrapR === undefined) wrapR = wrapS; + this._wrapS = wrapS; + this._samplerInfo.addressU = wrapS; + this._wrapT = wrapT; + this._samplerInfo.addressV = wrapT; + this._wrapR = wrapR; + this._samplerInfo.addressW = wrapR; + if (this._gfxDevice) { + this._gfxSampler = this._gfxDevice.getSampler(this._samplerInfo); + } + }; + _proto.setFilters = function setFilters(minFilter, magFilter) { + this._minFilter = minFilter; + this._samplerInfo.minFilter = minFilter; + this._magFilter = magFilter; + this._samplerInfo.magFilter = magFilter; + if (this._gfxDevice) { + this._gfxSampler = this._gfxDevice.getSampler(this._samplerInfo); + } + }; + _proto.setMipFilter = function setMipFilter(mipFilter) { + this._mipFilter = mipFilter; + this._samplerInfo.mipFilter = mipFilter; + if (this._gfxDevice) { + this._gfxSampler = this._gfxDevice.getSampler(this._samplerInfo); + } + }; + _proto.setAnisotropy = function setAnisotropy(anisotropy) { + this._anisotropy = anisotropy; + this._samplerInfo.maxAnisotropy = anisotropy; + if (this._gfxDevice) { + this._gfxSampler = this._gfxDevice.getSampler(this._samplerInfo); + } + }; + _proto.destroy = function destroy() { + var _cclegacy$director$ro; + var destroyed = _Asset.prototype.destroy.call(this); + if (destroyed && (_cclegacy$director$ro = legacyCC.director.root) !== null && _cclegacy$director$ro !== void 0 && _cclegacy$director$ro.batcher2D) { + legacyCC.director.root.batcher2D._releaseDescriptorSetCache(this._textureHash); + } + return destroyed; + }; + _proto.getHash = function getHash() { + return this._textureHash; + }; + _proto.getGFXTexture = function getGFXTexture() { + return null; + }; + _proto.getSamplerInfo = function getSamplerInfo() { + return this._samplerInfo; + }; + _proto.getGFXSampler = function getGFXSampler() { + if (!this._gfxSampler) { + if (this._gfxDevice) { + this._gfxSampler = this._gfxDevice.getSampler(this._samplerInfo); + } else { + errorID(9302); + } + } + return this._gfxSampler; + }; + _proto._serialize = function _serialize(ctxForExporting) { + return ''; + }; + _proto._deserialize = function _deserialize(serializedData, handle) { + var data = serializedData; + var fields = data.split(','); + fields.unshift(''); + if (fields.length >= 5) { + this.setFilters(parseInt(fields[1]), parseInt(fields[2])); + this.setWrapMode(parseInt(fields[3]), parseInt(fields[4])); + } + if (fields.length >= 7) { + this.setMipFilter(parseInt(fields[5])); + this.setAnisotropy(parseInt(fields[6])); + } + }; + _proto._getGFXDevice = function _getGFXDevice() { + return deviceManager.gfxDevice; + }; + _proto._getGFXFormat = function _getGFXFormat() { + return this._getGFXPixelFormat(this._format); + }; + _proto._setGFXFormat = function _setGFXFormat(format) { + this._format = format === undefined ? PixelFormat.RGBA8888 : format; + }; + _proto._getGFXPixelFormat = function _getGFXPixelFormat(format) { + if (format === PixelFormat.RGBA_ETC1) { + format = PixelFormat.RGB_ETC1; + } else if (format === PixelFormat.RGB_A_PVRTC_4BPPV1) { + format = PixelFormat.RGB_PVRTC_4BPPV1; + } else if (format === PixelFormat.RGB_A_PVRTC_2BPPV1) { + format = PixelFormat.RGB_PVRTC_2BPPV1; + } + return format; + }; + _createClass(TextureBase, [{ + key: "isCompressed", + get: function get() { + return this._format >= PixelFormat.RGB_ETC1 && this._format <= PixelFormat.RGBA_ASTC_12x12 || this._format >= PixelFormat.RGB_A_PVRTC_2BPPV1 && this._format <= PixelFormat.RGBA_ETC1; + } + }, { + key: "width", + get: function get() { + return this._width; + } + }, { + key: "height", + get: function get() { + return this._height; + } + }]); + return TextureBase; + }(Asset), _class3$L.PixelFormat = PixelFormat, _class3$L.WrapMode = WrapMode$1, _class3$L.Filter = Filter, _class3$L), (_initializer$1J = applyDecoratedInitializer(_class2$1Z.prototype, "_format", [serializable$9], function () { + return PixelFormat.RGBA8888; + }), _initializer2$1j = applyDecoratedInitializer(_class2$1Z.prototype, "_minFilter", [serializable$9], function () { + return Filter.LINEAR; + }), _initializer3$_ = applyDecoratedInitializer(_class2$1Z.prototype, "_magFilter", [serializable$9], function () { + return Filter.LINEAR; + }), _initializer4$Q = applyDecoratedInitializer(_class2$1Z.prototype, "_mipFilter", [serializable$9], function () { + return Filter.NONE; + }), _initializer5$E = applyDecoratedInitializer(_class2$1Z.prototype, "_wrapS", [serializable$9], function () { + return WrapMode$1.REPEAT; + }), _initializer6$x = applyDecoratedInitializer(_class2$1Z.prototype, "_wrapT", [serializable$9], function () { + return WrapMode$1.REPEAT; + }), _initializer7$p = applyDecoratedInitializer(_class2$1Z.prototype, "_wrapR", [serializable$9], function () { + return WrapMode$1.REPEAT; + }), _initializer8$o = applyDecoratedInitializer(_class2$1Z.prototype, "_anisotropy", [serializable$9], function () { + return 0; + })), _class2$1Z)) || _class$2c); + legacyCC.TextureBase = TextureBase; + + var _dec$2d, _class$2b, _dec2$1r, _class2$1Y, _dec3$_, _class3$K; + var Script = exports('e0', (_dec$2d = ccclass$t('cc.Script'), _dec$2d(_class$2b = function (_Asset) { + _inheritsLoose(Script, _Asset); + function Script() { + return _Asset.apply(this, arguments) || this; + } + return Script; + }(Asset)) || _class$2b)); + legacyCC._Script = Script; + var JavaScript = exports('e1', (_dec2$1r = ccclass$t('cc.JavaScript'), _dec2$1r(_class2$1Y = function (_Script) { + _inheritsLoose(JavaScript, _Script); + function JavaScript() { + return _Script.apply(this, arguments) || this; + } + return JavaScript; + }(Script)) || _class2$1Y)); + legacyCC._JavaScript = JavaScript; + var TypeScript = exports('e2', (_dec3$_ = ccclass$t('cc.TypeScript'), _dec3$_(_class3$K = function (_Script2) { + _inheritsLoose(TypeScript, _Script2); + function TypeScript() { + return _Script2.apply(this, arguments) || this; + } + return TypeScript; + }(Script)) || _class3$K)); + legacyCC._TypeScript = TypeScript; + + var _dec$2c, _class$2a, _class2$1X, _initializer$1I, _initializer2$1i, _initializer3$Z, _initializer4$P, _initializer5$D; + var EventHandler = exports('di', (_dec$2c = ccclass$t('cc.ClickEvent'), _dec$2c(_class$2a = (_class2$1X = function () { + function EventHandler() { + this.target = _initializer$1I && _initializer$1I(); + this.component = _initializer2$1i && _initializer2$1i(); + this._componentId = _initializer3$Z && _initializer3$Z(); + this.handler = _initializer4$P && _initializer4$P(); + this.customEventData = _initializer5$D && _initializer5$D(); + } + EventHandler.emitEvents = function emitEvents(events) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + for (var i = 0, l = events.length; i < l; i++) { + var event = events[i]; + if (!(event instanceof EventHandler)) { + continue; + } + event.emit(args); + } + }; + var _proto = EventHandler.prototype; + _proto.emit = function emit(params) { + var target = this.target; + if (!legacyCC.isValid(target)) { + return; + } + this._genCompIdIfNeeded(); + var compType = legacyCC.js.getClassById(this._componentId); + var comp = target.getComponent(compType); + if (!legacyCC.isValid(comp)) { + return; + } + var handler = comp[this.handler]; + if (typeof handler !== 'function') { + return; + } + if (this.customEventData != null && this.customEventData !== '') { + params = params.slice(); + params.push(this.customEventData); + } + handler.apply(comp, params); + }; + _proto._compName2Id = function _compName2Id(compName) { + var comp = legacyCC.js.getClassByName(compName); + return legacyCC.js.getClassId(comp); + }; + _proto._compId2Name = function _compId2Name(compId) { + var comp = legacyCC.js.getClassById(compId); + return legacyCC.js.getClassName(comp); + }; + _proto._genCompIdIfNeeded = function _genCompIdIfNeeded() { + if (!this._componentId) { + this._componentName = this.component; + this.component = ''; + } + }; + _createClass(EventHandler, [{ + key: "_componentName", + get: function get() { + this._genCompIdIfNeeded(); + return this._compId2Name(this._componentId); + }, + set: function set(value) { + this._componentId = this._compName2Id(value); + } + }]); + return EventHandler; + }(), (_initializer$1I = applyDecoratedInitializer(_class2$1X.prototype, "target", [serializable$9], function () { + return null; + }), _initializer2$1i = applyDecoratedInitializer(_class2$1X.prototype, "component", [serializable$9], function () { + return ''; + }), _initializer3$Z = applyDecoratedInitializer(_class2$1X.prototype, "_componentId", [serializable$9], function () { + return ''; + }), _initializer4$P = applyDecoratedInitializer(_class2$1X.prototype, "handler", [serializable$9], function () { + return ''; + }), _initializer5$D = applyDecoratedInitializer(_class2$1X.prototype, "customEventData", [serializable$9], function () { + return ''; + })), _class2$1X)) || _class$2a)); + + var _dec$2b, _dec2$1q, _class$29, _class2$1W, _initializer$1H, _initializer2$1h, _initializer3$Y, _class3$J; + var idGenerator$1 = new IDGenerator('Comp'); + var IsOnLoadCalled$1 = CCObject.Flags.IsOnLoadCalled; + var NullNode = null; + var Component = exports('dj', (_dec$2b = ccclass$t('cc.Component'), _dec2$1q = type$8(Script), _dec$2b(_class$29 = (_class2$1W = (_class3$J = function (_CCObject) { + _inheritsLoose(Component, _CCObject); + function Component() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _CCObject.call.apply(_CCObject, [this].concat(args)) || this; + _this.node = _initializer$1H && _initializer$1H(); + _this._enabled = _initializer2$1h && _initializer2$1h(); + _this.__prefab = _initializer3$Y && _initializer3$Y(); + _this._sceneGetter = null; + _this._id = idGenerator$1.getNewId(); + return _this; + } + var _proto = Component.prototype; + _proto._getRenderScene = function _getRenderScene() { + if (this._sceneGetter) { + return this._sceneGetter(); + } + return this.node.scene.renderScene; + }; + _proto.addComponent = function addComponent(typeOrClassName) { + return this.node.addComponent(typeOrClassName); + }; + _proto.getComponent = function getComponent(typeOrClassName) { + return this.node.getComponent(typeOrClassName); + }; + _proto.getComponents = function getComponents(typeOrClassName) { + return this.node.getComponents(typeOrClassName); + }; + _proto.getComponentInChildren = function getComponentInChildren(typeOrClassName) { + return this.node.getComponentInChildren(typeOrClassName); + }; + _proto.getComponentsInChildren = function getComponentsInChildren(typeOrClassName) { + return this.node.getComponentsInChildren(typeOrClassName); + }; + _proto.destroy = function destroy() { + if (_CCObject.prototype.destroy.call(this)) { + if (this._enabled && this.node.activeInHierarchy) { + legacyCC.director._compScheduler.disableComp(this); + } + return true; + } + return false; + }; + _proto._onPreDestroy = function _onPreDestroy() { + this.unscheduleAllCallbacks(); + legacyCC.director._nodeActivator.destroyComp(this); + this.node._removeComponent(this); + }; + _proto._instantiate = function _instantiate(cloned) { + if (!cloned) { + cloned = legacyCC.instantiate._clone(this, this); + } + if (cloned) { + cloned.node = NullNode; + } + return cloned; + }; + _proto.schedule = function schedule(callback, interval, repeat, delay) { + if (interval === void 0) { + interval = 0; + } + if (repeat === void 0) { + repeat = legacyCC.macro.REPEAT_FOREVER; + } + if (delay === void 0) { + delay = 0; + } + assertID(Boolean(callback), 1619); + interval = interval || 0; + assertID(interval >= 0, 1620); + repeat = Number.isNaN(repeat) ? legacyCC.macro.REPEAT_FOREVER : repeat; + delay = delay || 0; + var scheduler = legacyCC.director.getScheduler(); + var paused = scheduler.isTargetPaused(this); + scheduler.schedule(callback, this, interval, repeat, delay, paused); + }; + _proto.scheduleOnce = function scheduleOnce(callback, delay) { + if (delay === void 0) { + delay = 0; + } + this.schedule(callback, 0, 0, delay); + }; + _proto.unschedule = function unschedule(callback_fn) { + if (!callback_fn) { + return; + } + legacyCC.director.getScheduler().unschedule(callback_fn, this); + }; + _proto.unscheduleAllCallbacks = function unscheduleAllCallbacks() { + legacyCC.director.getScheduler().unscheduleAllForTarget(this); + }; + _createClass(Component, [{ + key: "name", + get: function get() { + if (this._name) { + return this._name; + } + var className = getClassName(this); + var trimLeft = className.lastIndexOf('.'); + if (trimLeft >= 0) { + className = className.slice(trimLeft + 1); + } + if (this.node) { + return this.node.name + "<" + className + ">"; + } else { + return className; + } + }, + set: function set(value) { + this._name = value; + } + }, { + key: "uuid", + get: function get() { + return this._id; + } + }, { + key: "__scriptAsset", + get: function get() { + return null; + } + }, { + key: "enabled", + get: function get() { + return this._enabled; + }, + set: function set(value) { + if (this._enabled !== value) { + this._enabled = value; + if (this.node.activeInHierarchy) { + var compScheduler = legacyCC.director._compScheduler; + if (value) { + compScheduler.enableComp(this); + } else { + compScheduler.disableComp(this); + } + } + } + } + }, { + key: "enabledInHierarchy", + get: function get() { + return this._enabled && this.node && this.node.activeInHierarchy; + } + }, { + key: "_isOnLoadCalled", + get: function get() { + return this._objFlags & IsOnLoadCalled$1; + } + }, { + key: "internalUpdate", + get: function get() { + return this.update; + } + }, { + key: "internalLateUpdate", + get: function get() { + return this.lateUpdate; + } + }, { + key: "internalPreload", + get: function get() { + return this.__preload; + } + }, { + key: "internalOnLoad", + get: function get() { + return this.onLoad; + } + }, { + key: "internalStart", + get: function get() { + return this.start; + } + }, { + key: "internalOnEnable", + get: function get() { + return this.onEnable; + } + }, { + key: "internalOnDisable", + get: function get() { + return this.onDisable; + } + }, { + key: "internalOnDestroy", + get: function get() { + return this.onDestroy; + } + }]); + return Component; + }(CCObject), _class3$J.EventHandler = EventHandler, _class3$J._executionOrder = 0, _class3$J._requireComponent = null, _class3$J.system = null, _class3$J), (_applyDecoratedDescriptor(_class2$1W.prototype, "__scriptAsset", [_dec2$1q], Object.getOwnPropertyDescriptor(_class2$1W.prototype, "__scriptAsset"), _class2$1W.prototype), _initializer$1H = applyDecoratedInitializer(_class2$1W.prototype, "node", [serializable$9], function () { + return NullNode; + }), _initializer2$1h = applyDecoratedInitializer(_class2$1W.prototype, "_enabled", [serializable$9], function () { + return true; + }), _initializer3$Y = applyDecoratedInitializer(_class2$1W.prototype, "__prefab", [serializable$9], function () { + return null; + })), _class2$1W)) || _class$29)); + value(Component, '_registerEditorProps', function (cls, props) { + var reqComp = props.requireComponent; + if (reqComp) { + if (Array.isArray(reqComp)) { + reqComp = reqComp.filter(Boolean); + } + cls._requireComponent = reqComp; + } + var order = props.executionOrder; + if (order && typeof order === 'number') { + cls._executionOrder = order; + } + }); + legacyCC.Component = Component; + + var _dec$2a, _class$28, _class2$1V, _initializer$1G; + var MissingScript = exports('dH', (_dec$2a = ccclass$t('cc.MissingScript'), _dec$2a(_class$28 = (_class2$1V = function (_Component) { + _inheritsLoose(MissingScript, _Component); + MissingScript.safeFindClass = function safeFindClass(id) { + var cls = getClassById(id); + if (cls) { + return cls; + } + legacyCC.deserialize.reportMissingClass(id); + return undefined; + }; + function MissingScript() { + var _this; + _this = _Component.call(this) || this; + _this._$erialized = _initializer$1G && _initializer$1G(); + return _this; + } + var _proto = MissingScript.prototype; + _proto.onLoad = function onLoad() { + warnID(4600, this.node.name); + }; + return MissingScript; + }(Component), (_initializer$1G = applyDecoratedInitializer(_class2$1V.prototype, "_$erialized", [serializable$9, editorOnly], function () { + return null; + })), _class2$1V)) || _class$28)); + legacyCC._MissingScript = MissingScript; + try { + var props = MissingScript.__values__; + if (props.length === 0 || props[props.length - 1] !== '_$erialized') { + error("The '_$erialized' prop in MissingScript is missing. Please contact jare."); + error(" Error props: ['" + props + "']"); + } + } catch (e) { + error("Error when checking MissingScript 5, " + e); + } + + var VERSION = 1; + var MAGIC = 0x4E4F4343; + var CHUNK_ALIGN_AS = 8; + var CCON = function () { + function CCON(document, chunks) { + this._document = void 0; + this._chunks = void 0; + this._document = document; + this._chunks = chunks; + } + _createClass(CCON, [{ + key: "document", + get: function get() { + return this._document; + } + }, { + key: "chunks", + get: function get() { + return this._chunks; + } + }]); + return CCON; + }(); + function parseCCONJson(json) { + var cconPreface = json; + return { + chunks: cconPreface.chunks, + document: cconPreface.document + }; + } + function decodeCCONBinary(bytes) { + if (bytes.length < 16) { + throw new InvalidCCONError(getError(13102)); + } + var dataView = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength); + var magic = dataView.getUint32(0, true); + if (magic !== MAGIC) { + throw new InvalidCCONError(getError(13100)); + } + var version = dataView.getUint32(4, true); + if (version !== VERSION) { + throw new InvalidCCONError(getError(13101, version)); + } + var dataByteLength = dataView.getUint32(8, true); + if (dataByteLength !== dataView.byteLength) { + throw new InvalidCCONError(getError(13102)); + } + var chunksStart = 12; + var jsonDataLength = dataView.getUint32(chunksStart, true); + chunksStart += 4; + var jsonData = new Uint8Array(dataView.buffer, chunksStart + dataView.byteOffset, jsonDataLength); + chunksStart += jsonDataLength; + var jsonString = decodeJson(jsonData); + var json; + try { + json = JSON.parse(jsonString); + } catch (err) { + throw new InvalidCCONError(err); + } + var chunks = []; + while (chunksStart < dataView.byteLength) { + if (chunksStart % CHUNK_ALIGN_AS !== 0) { + var padding = CHUNK_ALIGN_AS - chunksStart % CHUNK_ALIGN_AS; + chunksStart += padding; + } + var chunkDataLength = dataView.getUint32(chunksStart, true); + chunksStart += 4; + chunks.push(new Uint8Array(dataView.buffer, chunksStart + dataView.byteOffset, chunkDataLength)); + chunksStart += chunkDataLength; + } + if (chunksStart !== dataView.byteLength) { + throw new InvalidCCONError(getError(13102)); + } + return new CCON(json, chunks); + } + function decodeJson(data) { + if (typeof TextDecoder !== 'undefined') { + return new TextDecoder().decode(data); + } else if ('Buffer' in globalThis) { + var _ref2 = globalThis, + _Buffer2 = _ref2.Buffer; + return _Buffer2.from(data.buffer, data.byteOffset, data.byteLength).toString(); + } else { + throw new Error(getError(13104)); + } + } + var InvalidCCONError = function (_Error) { + _inheritsLoose(InvalidCCONError, _Error); + function InvalidCCONError() { + return _Error.apply(this, arguments) || this; + } + return InvalidCCONError; + }(_wrapNativeSuper(Error)); + (function () { + function BufferBuilder() { + this._viewOrPaddings = []; + this._length = 0; + } + var _proto = BufferBuilder.prototype; + _proto.alignAs = function alignAs(align) { + if (align !== 0) { + var remainder = this._length % align; + if (remainder !== 0) { + var padding = align - remainder; + this._viewOrPaddings.push(padding); + this._length += padding; + return padding; + } + } + return 0; + }; + _proto.append = function append(view) { + var result = this._length; + this._viewOrPaddings.push(view); + this._length += view.byteLength; + return result; + }; + _proto.get = function get() { + var result = new Uint8Array(this._length); + var counter = 0; + this._viewOrPaddings.forEach(function (viewOrPadding) { + if (typeof viewOrPadding === 'number') { + counter += viewOrPadding; + } else { + result.set(new Uint8Array(viewOrPadding.buffer, viewOrPadding.byteOffset, viewOrPadding.byteLength), counter); + counter += viewOrPadding.byteLength; + } + }); + return result; + }; + _createClass(BufferBuilder, [{ + key: "byteLength", + get: function get() { + return this._length; + } + }]); + return BufferBuilder; + })(); + legacyCC.internal.parseCCONJson = parseCCONJson; + legacyCC.internal.decodeCCONBinary = decodeCCONBinary; + legacyCC.internal.CCON = CCON; + + function compileObjectTypeJit(sources, defaultValue, accessorToSet, propNameLiteralToSet, assumeHavePropIfIsValue) { + if (defaultValue instanceof legacyCC.ValueType) { + if (!assumeHavePropIfIsValue) { + sources.push('if(prop){'); + } + var ctorCode = getClassName(defaultValue); + sources.push("s._deserializeFastDefinedObject(o" + accessorToSet + ",prop," + ctorCode + ");"); + if (!assumeHavePropIfIsValue) { + sources.push("}else o" + accessorToSet + "=null;"); + } + } else { + sources.push("\nif (prop) {\n s._deserializeAndAssignField(o, prop, " + propNameLiteralToSet + ");\n} else {\n o" + accessorToSet + "=null;\n}\n"); + } + } + var compileDeserialize = compileDeserializeJIT ; + var DELIMITER = CCClass.Attr.DELIMETER; + var POSTFIX_TYPE = DELIMITER + "type"; + var POSTFIX_DEFAULT = DELIMITER + "default"; + var POSTFIX_FORMERLY_SERIALIZED_AS = DELIMITER + "formerlySerializedAs"; + function compileDeserializeJIT(self, klass) { + var attrs = CCClass.Attr.getClassAttrs(klass); + var props = klass.__values__; + var sources = ['var prop;']; + var fastMode = canBeDeserializedInFastMode(klass); + for (var p = 0; p < props.length; p++) { + var propName = props[p]; + var accessorToSet = void 0; + var propNameLiteralToSet = void 0; + if (CCClass.IDENTIFIER_RE.test(propName)) { + propNameLiteralToSet = "\"" + propName + "\""; + accessorToSet = "." + propName; + } else { + propNameLiteralToSet = CCClass.escapeForJS(propName); + accessorToSet = "[" + propNameLiteralToSet + "]"; + } + var accessorToGet = accessorToSet; + if (attrs[propName + POSTFIX_FORMERLY_SERIALIZED_AS]) { + var propNameToRead = attrs[propName + POSTFIX_FORMERLY_SERIALIZED_AS]; + if (CCClass.IDENTIFIER_RE.test(propNameToRead)) { + accessorToGet = "." + propNameToRead; + } else { + accessorToGet = "[" + CCClass.escapeForJS(propNameToRead) + "]"; + } + } + sources.push("prop=d" + accessorToGet + ";"); + sources.push("if(typeof " + ('prop') + "!==\"undefined\"){"); + var defaultValue = CCClass.getDefault(attrs[propName + POSTFIX_DEFAULT]); + var userType = attrs[propName + POSTFIX_TYPE]; + if (fastMode && (defaultValue !== undefined || userType)) { + var isPrimitiveTypeInFastMode = isPrimitivePropertyByDefaultOrType(defaultValue, userType); + if (isPrimitiveTypeInFastMode) { + sources.push("o" + accessorToSet + "=prop;"); + } else { + compileObjectTypeJit(sources, defaultValue, accessorToSet, propNameLiteralToSet, true); + } + } else { + sources.push("" + ("if(typeof " + ('prop') + "!==\"object\"){" + 'o') + accessorToSet + "=prop;" + "}else{"); + compileObjectTypeJit(sources, defaultValue, accessorToSet, propNameLiteralToSet, false); + sources.push('}'); + } + sources.push('}'); + } + if (isChildClassOf(klass, legacyCC.Node) || isChildClassOf(klass, legacyCC.Component)) { + { + sources.push('d._id&&(o._id=d._id);'); + } + } + if (props[props.length - 1] === '_$erialized') { + sources.push('o._$erialized=JSON.parse(JSON.stringify(d));'); + sources.push('s._fillPlainObject(o._$erialized,d);'); + } + return Function('s', 'o', 'd', 'k', sources.join('')); + } + function canBeDeserializedInFastMode(klass) { + return BUILTIN_CLASSID_RE.test(getClassId(klass)); + } + function isPrimitivePropertyByDefaultOrType(defaultValue, userType) { + if (defaultValue === undefined) { + return userType instanceof CCClass.Attr.PrimitiveType || userType === ENUM_TAG || userType === BITMASK_TAG; + } else { + var defaultType = typeof defaultValue; + return defaultType === 'string' || defaultType === 'number' || defaultType === 'boolean'; + } + } + var DeserializerPool = function (_js$Pool) { + _inheritsLoose(DeserializerPool, _js$Pool); + function DeserializerPool() { + return _js$Pool.call(this, function (deserializer) { + deserializer.clear(); + }, 1) || this; + } + return DeserializerPool; + }(Pool$1); + DeserializerPool.prototype.get = function (details, classFinder, reportMissingClass, customEnv, ignoreEditorOnly) { + var cache = this._get(); + if (cache) { + cache.reset(details, classFinder, reportMissingClass, customEnv, ignoreEditorOnly); + return cache; + } else { + return new _Deserializer(details, classFinder, reportMissingClass, customEnv, ignoreEditorOnly); + } + }; + var _Deserializer = function () { + function _Deserializer(result, classFinder, reportMissingClass, customEnv, ignoreEditorOnly) { + this.deserializedList = void 0; + this.deserializedData = void 0; + this._ignoreEditorOnly = void 0; + this.result = result; + this.customEnv = customEnv; + this.deserializedList = []; + this.deserializedData = null; + this._classFinder = classFinder; + this._reportMissingClass = reportMissingClass; + this._onDereferenced = classFinder === null || classFinder === void 0 ? void 0 : classFinder.onDereferenced; + } + var _proto = _Deserializer.prototype; + _proto.reset = function reset(result, classFinder, reportMissingClass, customEnv, ignoreEditorOnly) { + this.result = result; + this.customEnv = customEnv; + this._classFinder = classFinder; + this._reportMissingClass = reportMissingClass; + this._onDereferenced = classFinder === null || classFinder === void 0 ? void 0 : classFinder.onDereferenced; + }; + _proto.clear = function clear() { + this.result = null; + this.customEnv = null; + this.deserializedList.length = 0; + this.deserializedData = null; + this._classFinder = null; + this._reportMissingClass = null; + this._onDereferenced = null; + }; + _proto.deserialize = function deserialize(serializedData) { + var fromCCON = false; + var jsonObj; + if (serializedData instanceof CCON) { + fromCCON = true; + jsonObj = serializedData.document; + if (serializedData.chunks.length > 0) { + assertIsTrue(serializedData.chunks.length === 1); + this._mainBinChunk = serializedData.chunks[0]; + } + } else { + jsonObj = serializedData; + } + this._serializedData = jsonObj; + this._context = { + fromCCON: fromCCON + }; + var serializedRootObject = Array.isArray(jsonObj) ? jsonObj[0] : jsonObj; + { + this.deserializedData = this._deserializeObject(serializedRootObject, 0); + } + this._serializedData = undefined; + this._mainBinChunk = undefined; + this._context = undefined; + return this.deserializedData; + }; + _proto._deserializeObject = function _deserializeObject(serialized, globalIndex, owner, propName) { + switch (serialized.__type__) { + case 'TypedArray': + return this._deserializeTypedArrayView(serialized); + case 'TypedArrayRef': + return this._deserializeTypedArrayViewRef(serialized); + default: + if (serialized.__type__) { + return this._deserializeTypeTaggedObject(serialized, globalIndex, owner, propName); + } else if (!Array.isArray(serialized)) { + return this._deserializePlainObject(serialized); + } else { + return this._deserializeArray(serialized); + } + } + }; + _proto._deserializeTypedArrayView = function _deserializeTypedArrayView(value) { + return globalThis[value.ctor].from(value.array); + }; + _proto._deserializeTypedArrayViewRef = function _deserializeTypedArrayViewRef(value) { + var offset = value.offset, + length = value.length, + constructorName = value.ctor; + var obj = new globalThis[constructorName](this._mainBinChunk.buffer, this._mainBinChunk.byteOffset + offset, length); + return obj; + }; + _proto._deserializeArray = function _deserializeArray(value) { + var obj = new Array(value.length); + var prop; + for (var i = 0; i < value.length; i++) { + prop = value[i]; + if (typeof prop === 'object' && prop) { + var isAssetType = this._deserializeAndAssignField(obj, prop, "" + i); + if (isAssetType) { + obj[i] = null; + } + } else { + obj[i] = prop; + } + } + return obj; + }; + _proto._deserializePlainObject = function _deserializePlainObject(value) { + var obj = {}; + this._fillPlainObject(obj, value); + return obj; + }; + _proto._deserializeTypeTaggedObject = function _deserializeTypeTaggedObject(value, globalIndex, owner, propName) { + var _this = this; + var type = value.__type__; + var klass = this._classFinder(type, value, owner, propName); + if (!klass) { + var notReported = this._classFinder === getClassById; + if (notReported) { + this._reportMissingClass(type); + } + return null; + } + var createObject = function createObject(constructor) { + var obj = new constructor(); + if (globalIndex >= 0) { + _this.deserializedList[globalIndex] = obj; + } + return obj; + }; + { + var obj = createObject(klass); + this._deserializeInto(value, obj, klass); + return obj; + } + }; + _proto._deserializeInto = function _deserializeInto(value, object, constructor, skipCustomized) { + if (skipCustomized === void 0) { + skipCustomized = false; + } + if (!skipCustomized && object[deserializeTag]) { + this._runCustomizedDeserialize(value, object, constructor); + return; + } + if (object._deserialize) { + object._deserialize(value.content, this); + return; + } + if (legacyCC.Class._isCCClass(constructor)) { + this._deserializeFireClass(object, value, constructor); + } else { + this._deserializeFastDefinedObject(object, value, constructor); + } + }; + _proto._runCustomizedDeserialize = function _runCustomizedDeserialize(value, object, constructor) { + var _this2 = this; + var serializationInput = { + readProperty: function readProperty(name) { + var serializedField = value[name]; + if (typeof serializedField !== 'object' || !serializedField) { + return serializedField; + } else { + return _this2._deserializeObjectField(serializedField); + } + }, + readThis: function readThis() { + _this2._deserializeInto(value, object, constructor, true); + }, + readSuper: function readSuper() { + var superConstructor = getSuper(constructor); + if (superConstructor) { + _this2._deserializeInto(value, object, superConstructor); + } + } + }; + object[deserializeTag](serializationInput, this._context); + }; + _proto._deserializeFireClass = function _deserializeFireClass(obj, serialized, klass) { + var deserialize; + if (klass.hasOwnProperty('__deserialize__')) { + deserialize = klass.__deserialize__; + } else { + deserialize = compileDeserialize(this, klass); + try { + if (klass === MissingScript) { + var props = klass.__values__; + if (props.length === 0 || props[props.length - 1] !== '_$erialized') { + error("The '_$erialized' prop of MissingScript is missing. Will force the raw data to be save."); + error(" Error props: ['" + props + "']. Please contact jare."); + } + var rawDeserialize = deserialize; + deserialize = function deserialize(deserializer, object, deserialized, constructor) { + rawDeserialize(deserializer, object, deserialized, constructor); + if (!object._$erialized) { + error("Unable to stash previously serialized data. " + JSON.stringify(deserialized)); + } + }; + } + } catch (e) { + error("Error when checking MissingScript 6, " + e); + } + value(klass, '__deserialize__', deserialize, true); + } + deserialize(this, obj, serialized, klass); + }; + _proto._deserializeAndAssignField = function _deserializeAndAssignField(obj, serializedField, propName) { + var id = serializedField.__id__; + if (typeof id === 'number') { + var field = this.deserializedList[id]; + if (field) { + obj[propName] = field; + } else { + var _this$_onDereferenced; + var source = this._serializedData[id]; + { + obj[propName] = this._deserializeObject(source, id, undefined, propName); + } + (_this$_onDereferenced = this._onDereferenced) === null || _this$_onDereferenced === void 0 ? void 0 : _this$_onDereferenced.call(this, this.deserializedList, id, obj, propName); + } + } else { + var uuid = serializedField.__uuid__; + if (uuid) { + var expectedType = serializedField.__expectedType__; + this.result.push(obj, propName, uuid, expectedType); + } else { + obj[propName] = this._deserializeObject(serializedField, -1); + } + } + return false; + }; + _proto._deserializeObjectField = function _deserializeObjectField(serializedField) { + var id = serializedField.__id__; + if (typeof id === 'number') { + var field = this.deserializedList[id]; + if (field) { + return field; + } else { + var source = this._serializedData[id]; + var _field = this._deserializeObject(source, id, undefined, undefined); + return _field; + } + } else { + var uuid = serializedField.__uuid__; + if (uuid) { + serializedField.__expectedType__; + throw new Error("Asset reference field serialization is currently not supported in custom serialization."); + } else { + return this._deserializeObject(serializedField, -1); + } + } + }; + _proto._fillPlainObject = function _fillPlainObject(instance, serialized) { + for (var propName in serialized) { + if (!serialized.hasOwnProperty(propName)) { + continue; + } + var prop = serialized[propName]; + if (typeof prop !== 'object') { + if (propName !== '__type__') { + instance[propName] = prop; + } + } else if (prop) { + var isAssetType = this._deserializeAndAssignField(instance, prop, propName); + if (isAssetType) { + instance[propName] = null; + } + } else { + instance[propName] = null; + } + } + }; + _proto._deserializeFastDefinedObject = function _deserializeFastDefinedObject(instance, serialized, klass) { + if (klass === legacyCC.Vec2) { + instance.x = serialized.x || 0; + instance.y = serialized.y || 0; + return; + } else if (klass === legacyCC.Vec3) { + instance.x = serialized.x || 0; + instance.y = serialized.y || 0; + instance.z = serialized.z || 0; + return; + } else if (klass === legacyCC.Color) { + instance.r = serialized.r || 0; + instance.g = serialized.g || 0; + instance.b = serialized.b || 0; + var a = serialized.a; + instance.a = a === undefined ? 255 : a; + return; + } else if (klass === legacyCC.Size) { + instance.width = serialized.width || 0; + instance.height = serialized.height || 0; + return; + } + var attrs = CCClass.Attr.getClassAttrs(klass); + var props = klass.__values__; + if (!props) { + error("Unable to deserialize " + getClassName(klass) + ". " + 'For non-CCClass types, they can only be marked as serializable by `CCClass.fastDefine`.'); + } + for (var i = 0; i < props.length; i++) { + var propName = props[i]; + var value = serialized[propName]; + var exists = value !== undefined || serialized.hasOwnProperty(propName); + if (!exists) { + value = CCClass.getDefault(attrs[propName + POSTFIX_DEFAULT]); + } + if (typeof value !== 'object') { + instance[propName] = value; + } else if (value) { + this._deserializeAndAssignField(instance, value, propName); + } else { + instance[propName] = null; + } + } + }; + _createClass(_Deserializer, [{ + key: "ignoreEditorOnly", + get: function get() { + return this._ignoreEditorOnly; + } + }]); + return _Deserializer; + }(); + _Deserializer.pool = new DeserializerPool(); + function deserializeDynamic(data, details, options) { + var _options$reportMissin; + options = options || {}; + var classFinder = options.classFinder || getClassById; + var createAssetRefs = options.createAssetRefs || sys.platform === Platform.EDITOR_CORE; + var customEnv = options.customEnv; + var ignoreEditorOnly = options.ignoreEditorOnly; + var reportMissingClass = (_options$reportMissin = options.reportMissingClass) !== null && _options$reportMissin !== void 0 ? _options$reportMissin : legacyCC.deserialize.reportMissingClass; + details.init(); + var deserializer = _Deserializer.pool.get(details, classFinder, reportMissingClass, customEnv, ignoreEditorOnly); + legacyCC.game._isCloning = true; + var res = deserializer.deserialize(data); + legacyCC.game._isCloning = false; + _Deserializer.pool.put(deserializer); + if (createAssetRefs) { + details.assignAssetsBy(function (uuid, options) { + return EditorExtends.serialize.asAsset(uuid, options.type); + }); + } + return res; + } + + function reportMissingClass(id) { + { + errorID(5302, id); + } + } + + var constructorMap = [Vec2, Vec3, Vec4, Quat, Color$1, Size$1, Rect$1, Mat4]; + function vec4LikeSetter(obj, data) { + obj.x = data[1]; + obj.y = data[2]; + obj.z = data[3]; + obj.w = data[4]; + } + var setterMap = [function (obj, data) { + obj.x = data[1]; + obj.y = data[2]; + }, function (obj, data) { + obj.x = data[1]; + obj.y = data[2]; + obj.z = data[3]; + }, vec4LikeSetter, vec4LikeSetter, function (obj, data) { + obj._val = data[1]; + }, function (obj, data) { + obj.width = data[1]; + obj.height = data[2]; + }, function (obj, data) { + obj.x = data[1]; + obj.y = data[2]; + obj.width = data[3]; + obj.height = data[4]; + }, function (obj, data) { + Mat4.fromArray(obj, data, 1); + }]; + function deserializeBuiltinValueType(data, owner, key, value) { + var typeIndex = value[0]; + assertIsTrue(typeIndex >= 0 && typeIndex < constructorMap.length); + var object = new constructorMap[typeIndex](); + var setter = setterMap[typeIndex]; + setter(object, value); + owner[key] = object; + } + function deserializeBuiltinValueTypeInto(data, owner, key, value) { + var typeIndex = value[0]; + assertIsTrue(typeIndex >= 0 && typeIndex < constructorMap.length); + { + var object = owner[key]; + var _setter = setterMap[typeIndex]; + _setter(object, value); + } + } + + var SUPPORT_MIN_FORMAT_VERSION = 1; + var EMPTY_PLACEHOLDER = 0; + var DataTypeID = { + SimpleType: 0, + InstanceRef: 1, + Array_InstanceRef: 2, + Array_AssetRefByInnerObj: 3, + Class: 4, + ValueTypeCreated: 5, + AssetRefByInnerObj: 6, + TRS: 7, + ValueType: 8, + Array_Class: 9, + CustomizedClass: 10, + Dict: 11, + Array: 12, + ARRAY_LENGTH: 13 + }; + var CLASS_TYPE = 0; + var CLASS_KEYS = 1; + var CLASS_PROP_TYPE_OFFSET = 2; + var MASK_CLASS = 0; + var OBJ_DATA_MASK = 0; + var CUSTOM_OBJ_DATA_CLASS = 0; + var CUSTOM_OBJ_DATA_CONTENT = 1; + var DICT_JSON_LAYOUT = 0; + var ARRAY_ITEM_VALUES = 0; + var Refs = { + EACH_RECORD_LENGTH: 3, + OWNER_OFFSET: 0, + KEY_OFFSET: 1, + TARGET_OFFSET: 2 + }; + var File = { + Version: 0, + Context: 0, + SharedUuids: 1, + SharedStrings: 2, + SharedClasses: 3, + SharedMasks: 4, + Instances: 5, + InstanceTypes: 6, + Refs: 7, + DependObjs: 8, + DependKeys: 9, + DependUuidIndices: 10, + ARRAY_LENGTH: 11 + }; + var PACKED_SECTIONS = File.Instances; + var Details = exports('dO', function () { + function Details() { + this.uuidObjList = null; + this.uuidPropList = null; + this.uuidList = null; + this.uuidTypeList = []; + } + var _proto = Details.prototype; + _proto.init = function init(data) { + if (data) { + this.uuidObjList = data[File.DependObjs]; + this.uuidPropList = data[File.DependKeys]; + this.uuidList = data[File.DependUuidIndices]; + } else { + var used = this.uuidList; + if (!used) { + this.uuidList = []; + this.uuidObjList = []; + this.uuidPropList = []; + this.uuidTypeList = []; + } + } + }; + _proto.reset = function reset() { + { + var used = this.uuidList; + if (used) { + this.uuidList.length = 0; + this.uuidObjList.length = 0; + this.uuidPropList.length = 0; + this.uuidTypeList.length = 0; + } + } + }; + _proto.push = function push(obj, propName, uuid, type) { + this.uuidObjList.push(obj); + this.uuidPropList.push(propName); + this.uuidList.push(uuid); + this.uuidTypeList.push(type || ''); + }; + return Details; + }()); + Details.pool = new Pool$1(function (obj) { + obj.reset(); + }, 5); + Details.pool.get = function () { + return this._get() || new Details(); + }; + function dereference(refs, instances, strings) { + var dataLength = refs.length - 1; + var i = 0; + var instanceOffset = refs[dataLength] * Refs.EACH_RECORD_LENGTH; + for (; i < instanceOffset; i += Refs.EACH_RECORD_LENGTH) { + var _owner = refs[i]; + var target = instances[refs[i + Refs.TARGET_OFFSET]]; + var keyIndex = refs[i + Refs.KEY_OFFSET]; + if (keyIndex >= 0) { + _owner[strings[keyIndex]] = target; + } else { + _owner[~keyIndex] = target; + } + } + for (; i < dataLength; i += Refs.EACH_RECORD_LENGTH) { + var _owner2 = instances[refs[i]]; + var _target = instances[refs[i + Refs.TARGET_OFFSET]]; + var _keyIndex = refs[i + Refs.KEY_OFFSET]; + if (_keyIndex >= 0) { + _owner2[strings[_keyIndex]] = _target; + } else { + _owner2[~_keyIndex] = _target; + } + } + } + function deserializeCCObject(data, objectData) { + var mask = data[File.SharedMasks][objectData[OBJ_DATA_MASK]]; + var clazz = mask[MASK_CLASS]; + var ctor = clazz[CLASS_TYPE]; + var obj = new ctor(); + var keys = clazz[CLASS_KEYS]; + var classTypeOffset = clazz[CLASS_PROP_TYPE_OFFSET]; + var maskTypeOffset = mask[mask.length - 1]; + var i = MASK_CLASS + 1; + for (; i < maskTypeOffset; ++i) { + var _key = keys[mask[i]]; + obj[_key] = objectData[i]; + } + for (; i < objectData.length; ++i) { + var _key2 = keys[mask[i]]; + var type = clazz[mask[i] + classTypeOffset]; + var op = ASSIGNMENTS[type]; + op(data, obj, _key2, objectData[i]); + } + return obj; + } + function deserializeCustomCCObject(data, ctor, value) { + var obj = new ctor(); + if (obj._deserialize) { + obj._deserialize(value, data[File.Context]); + } else { + errorID(5303, getClassName(ctor)); + } + return obj; + } + function assignSimple(data, owner, key, value) { + owner[key] = value; + } + function assignInstanceRef(data, owner, key, value) { + if (value >= 0) { + owner[key] = data[File.Instances][value]; + } else { + data[File.Refs][~value * Refs.EACH_RECORD_LENGTH] = owner; + } + } + function genArrayParser(parser) { + return function (data, owner, key, value) { + for (var i = 0; i < value.length; ++i) { + parser(data, value, i, value[i]); + } + owner[key] = value; + }; + } + function parseAssetRefByInnerObj(data, owner, key, value) { + owner[key] = null; + data[File.DependObjs][value] = owner; + } + function parseClass(data, owner, key, value) { + owner[key] = deserializeCCObject(data, value); + } + function parseCustomClass(data, owner, key, value) { + var ctor = data[File.SharedClasses][value[CUSTOM_OBJ_DATA_CLASS]]; + owner[key] = deserializeCustomCCObject(data, ctor, value[CUSTOM_OBJ_DATA_CONTENT]); + } + function parseTRS(data, owner, key, value) { + var typedArray = owner[key]; + typedArray.set(value); + } + function parseDict(data, owner, key, value) { + var dict = value[DICT_JSON_LAYOUT]; + owner[key] = dict; + for (var i = DICT_JSON_LAYOUT + 1; i < value.length; i += 3) { + var subKey = value[i]; + var subType = value[i + 1]; + var subValue = value[i + 2]; + var op = ASSIGNMENTS[subType]; + op(data, dict, subKey, subValue); + } + } + function parseArray(data, owner, key, value) { + var array = value[ARRAY_ITEM_VALUES]; + for (var i = 0; i < array.length; ++i) { + var subValue = array[i]; + var type = value[i + 1]; + if (type !== DataTypeID.SimpleType) { + var op = ASSIGNMENTS[type]; + op(data, array, i, subValue); + } + } + owner[key] = array; + } + var ASSIGNMENTS = new Array(DataTypeID.ARRAY_LENGTH); + ASSIGNMENTS[DataTypeID.SimpleType] = assignSimple; + ASSIGNMENTS[DataTypeID.InstanceRef] = assignInstanceRef; + ASSIGNMENTS[DataTypeID.Array_InstanceRef] = genArrayParser(assignInstanceRef); + ASSIGNMENTS[DataTypeID.Array_AssetRefByInnerObj] = genArrayParser(parseAssetRefByInnerObj); + ASSIGNMENTS[DataTypeID.Class] = parseClass; + ASSIGNMENTS[DataTypeID.ValueTypeCreated] = deserializeBuiltinValueTypeInto; + ASSIGNMENTS[DataTypeID.AssetRefByInnerObj] = parseAssetRefByInnerObj; + ASSIGNMENTS[DataTypeID.TRS] = parseTRS; + ASSIGNMENTS[DataTypeID.ValueType] = deserializeBuiltinValueType; + ASSIGNMENTS[DataTypeID.Array_Class] = genArrayParser(parseClass); + ASSIGNMENTS[DataTypeID.CustomizedClass] = parseCustomClass; + ASSIGNMENTS[DataTypeID.Dict] = parseDict; + ASSIGNMENTS[DataTypeID.Array] = parseArray; + function parseInstances(data) { + var instances = data[File.Instances]; + var instanceTypes = data[File.InstanceTypes]; + var instanceTypesLen = instanceTypes === EMPTY_PLACEHOLDER ? 0 : instanceTypes.length; + var rootIndex = instances[instances.length - 1]; + var normalObjectCount = instances.length - instanceTypesLen; + if (typeof rootIndex !== 'number') { + rootIndex = 0; + } else { + if (rootIndex < 0) { + rootIndex = ~rootIndex; + } + --normalObjectCount; + } + var insIndex = 0; + for (; insIndex < normalObjectCount; ++insIndex) { + instances[insIndex] = deserializeCCObject(data, instances[insIndex]); + } + var classes = data[File.SharedClasses]; + for (var typeIndex = 0; typeIndex < instanceTypesLen; ++typeIndex, ++insIndex) { + var type = instanceTypes[typeIndex]; + var eachData = instances[insIndex]; + if (type >= 0) { + var ctor = classes[type]; + instances[insIndex] = deserializeCustomCCObject(data, ctor, eachData); + } else { + type = ~type; + var op = ASSIGNMENTS[type]; + op(data, instances, insIndex, eachData); + } + } + return rootIndex; + } + function getMissingClass(hasCustomFinder, type, reportMissingClass) { + if (!hasCustomFinder) { + reportMissingClass(type); + } + return Object; + } + function doLookupClass(classFinder, type, container, index, silent, hasCustomFinder, reportMissingClass) { + var klass = classFinder(type); + if (!klass) { + if (silent) { + container[index] = function (c, i, t) { + return function proxy() { + var actualClass = classFinder(t) || getMissingClass(hasCustomFinder, t, reportMissingClass); + c[i] = actualClass; + return new actualClass(); + }; + }(container, index, type); + return; + } else { + klass = getMissingClass(hasCustomFinder, type, reportMissingClass); + } + } + container[index] = klass; + } + function lookupClasses(data, silent, customFinder, reportMissingClass) { + var classFinder = customFinder || getClassById; + var classes = data[File.SharedClasses]; + for (var i = 0; i < classes.length; ++i) { + var klassLayout = classes[i]; + if (typeof klassLayout !== 'string') { + { + if (typeof klassLayout[CLASS_TYPE] === 'function') { + throw new Error('Can not deserialize the same JSON data again.'); + } + } + var type = klassLayout[CLASS_TYPE]; + doLookupClass(classFinder, type, klassLayout, CLASS_TYPE, silent, customFinder, reportMissingClass); + } else { + doLookupClass(classFinder, klassLayout, classes, i, silent, customFinder, reportMissingClass); + } + } + } + function cacheMasks(data) { + var masks = data[File.SharedMasks]; + if (masks) { + var classes = data[File.SharedClasses]; + for (var i = 0; i < masks.length; ++i) { + var mask = masks[i]; + mask[MASK_CLASS] = classes[mask[MASK_CLASS]]; + } + } + } + function parseResult(data) { + var instances = data[File.Instances]; + var sharedStrings = data[File.SharedStrings]; + var dependSharedUuids = data[File.SharedUuids]; + var dependObjs = data[File.DependObjs]; + var dependKeys = data[File.DependKeys]; + var dependUuids = data[File.DependUuidIndices]; + for (var i = 0; i < dependObjs.length; ++i) { + var obj = dependObjs[i]; + if (typeof obj === 'number') { + dependObjs[i] = instances[obj]; + } + var _key3 = dependKeys[i]; + if (typeof _key3 === 'number') { + if (_key3 >= 0) { + _key3 = sharedStrings[_key3]; + } else { + _key3 = ~_key3; + } + dependKeys[i] = _key3; + } + var _uuid2 = dependUuids[i]; + if (typeof _uuid2 === 'number') { + dependUuids[i] = dependSharedUuids[_uuid2]; + } + } + } + function isCompiledJson(json) { + if (Array.isArray(json)) { + var _version = json[0]; + return typeof _version === 'number' || _version instanceof FileInfo; + } else { + return false; + } + } + function initializeDeserializationContext(data, details, options) { + var _options; + details.init(data); + (_options = options) !== null && _options !== void 0 ? _options : options = {}; + var version = data[File.Version]; + var preprocessed = false; + if (typeof version === 'object') { + preprocessed = version.preprocessed; + version = version.version; + } + if (version < SUPPORT_MIN_FORMAT_VERSION) { + throw new Error(getError(5304, version)); + } + var context = options; + context._version = version; + context.result = details; + data[File.Context] = context; + if (!preprocessed) { + var _options$reportMissin; + lookupClasses(data, false, options.classFinder, (_options$reportMissin = options.reportMissingClass) !== null && _options$reportMissin !== void 0 ? _options$reportMissin : deserialize.reportMissingClass); + cacheMasks(data); + } + } + function deserialize(data, details, options) { + if (typeof data === 'string') { + data = JSON.parse(data); + } + var isBorrowedDetails = false; + if (!details) { + var borrowedDetails = Details.pool.get(); + assertIsTrue(borrowedDetails, "Can not allocate deserialization details"); + details = borrowedDetails; + isBorrowedDetails = true; + } + var res; + if (!isCompiledJson(data)) { + res = deserializeDynamic(data, details, options); + } else { + initializeDeserializationContext(data, details, options); + var runtimeData = data; + legacyCC.game._isCloning = true; + var instances = runtimeData[File.Instances]; + var rootIndex = parseInstances(runtimeData); + legacyCC.game._isCloning = false; + if (runtimeData[File.Refs]) { + dereference(runtimeData[File.Refs], instances, runtimeData[File.SharedStrings]); + } + parseResult(runtimeData); + res = instances[rootIndex]; + } + if (isBorrowedDetails) { + Details.pool.put(details); + } + return res; + } + deserialize.Details = Details; + deserialize.reportMissingClass = reportMissingClass; + var FileInfo = function FileInfo(version) { + this.preprocessed = true; + this.version = version; + }; + function unpackJSONs(data, classFinder, reportMissingClass) { + if (data[File.Version] < SUPPORT_MIN_FORMAT_VERSION) { + throw new Error(getError(5304, data[File.Version])); + } + lookupClasses(data, true, classFinder, reportMissingClass !== null && reportMissingClass !== void 0 ? reportMissingClass : deserialize.reportMissingClass); + cacheMasks(data); + var version = new FileInfo(data[File.Version]); + var sharedUuids = data[File.SharedUuids]; + var sharedStrings = data[File.SharedStrings]; + var sharedClasses = data[File.SharedClasses]; + var sharedMasks = data[File.SharedMasks]; + var sections = data[PACKED_SECTIONS]; + for (var i = 0; i < sections.length; ++i) { + var section = sections[i]; + section.unshift(version, sharedUuids, sharedStrings, sharedClasses, sharedMasks); + } + return sections; + } + function packCustomObjData(type, data, hasNativeDep) { + return [SUPPORT_MIN_FORMAT_VERSION, EMPTY_PLACEHOLDER, EMPTY_PLACEHOLDER, [type], EMPTY_PLACEHOLDER, hasNativeDep ? [data, ~0] : [data], [0], EMPTY_PLACEHOLDER, [], [], []]; + } + function hasNativeDep(data) { + var instances = data[File.Instances]; + var rootInfo = instances[instances.length - 1]; + if (typeof rootInfo !== 'number') { + return false; + } else { + return rootInfo < 0; + } + } + function getDependUuidList(json) { + var sharedUuids = json[File.SharedUuids]; + return json[File.DependUuidIndices].map(function (index) { + return sharedUuids[index]; + }); + } + function parseUuidDependencies(serialized) { + { + return getDependUuidList(serialized); + } + } + legacyCC.deserialize = deserialize; + + var dependMap = new WeakMap(); + var nativeDependMap = new WeakSet(); + var onLoadedInvokedMap = new WeakSet(); + + function deserializeAsset(json, options) { + var classFinder; + { + classFinder = MissingScript.safeFindClass; + } + var tdInfo = Details.pool.get(); + var asset; + try { + asset = deserialize(json, tdInfo, { + classFinder: classFinder, + customEnv: options + }); + } catch (e) { + error(e); + Details.pool.put(tdInfo); + throw e; + } + asset._uuid = options.__uuid__ || ''; + var uuidList = tdInfo.uuidList; + var objList = tdInfo.uuidObjList; + var propList = tdInfo.uuidPropList; + var typeList = tdInfo.uuidTypeList || []; + var depends = []; + for (var i = 0; i < uuidList.length; i++) { + var dependUuid = uuidList[i]; + depends[i] = { + uuid: decodeUuid(dependUuid), + owner: objList[i], + prop: propList[i], + type: getClassById(typeList[i]) + }; + } + dependMap.set(asset, depends); + if (asset._native) { + nativeDependMap.add(asset); + } + Details.pool.put(tdInfo); + return asset; + } + + var DependUtil = function () { + function DependUtil() { + this._depends = new Cache(); + } + var _proto = DependUtil.prototype; + _proto.init = function init() { + this._depends.clear(); + }; + _proto.getNativeDep = function getNativeDep(uuid) { + var depend = this._depends.get(uuid); + if (depend && depend.nativeDep) { + return _extends({}, depend.nativeDep); + } + return null; + }; + _proto.getDeps = function getDeps(uuid) { + if (this._depends.has(uuid)) { + return this._depends.get(uuid).deps; + } + return []; + }; + _proto.getDepsRecursively = function getDepsRecursively(uuid) { + var exclude = Object.create(null); + var depends = []; + this._descend(uuid, exclude, depends); + return depends; + }; + _proto.remove = function remove(uuid) { + this._depends.remove(uuid); + }; + _proto.parse = function parse(uuid, json) { + var out = null; + if (Array.isArray(json) || json.__type__ || json instanceof CCON) { + if (this._depends.has(uuid)) { + return this._depends.get(uuid); + } + if (Array.isArray(json) && (!hasNativeDep(json))) { + out = { + deps: this._parseDepsFromJson(json) + }; + } else { + try { + var asset = deserializeAsset(json, { + __uuid__: uuid + }); + out = this._parseDepsFromAsset(asset); + if (out.nativeDep) { + out.nativeDep.uuid = uuid; + } + parsed.add(uuid + "@import", asset); + } catch (e) { + files.remove(uuid + "@import"); + out = { + deps: [] + }; + } + } + } else { + if (this._depends.has(uuid)) { + out = this._depends.get(uuid); + if (out.parsedFromExistAsset) { + return out; + } + } + out = this._parseDepsFromAsset(json); + } + this._depends.add(uuid, out); + return out; + }; + _proto._parseDepsFromAsset = function _parseDepsFromAsset(asset) { + var out = { + deps: [], + parsedFromExistAsset: true + }; + var deps = dependMap.get(asset); + assertIsNonNullable(deps); + for (var i = 0, l = deps.length; i < l; i++) { + out.deps.push(deps[i].uuid); + } + if (nativeDependMap.has(asset)) { + out.nativeDep = asset._nativeDep; + } + return out; + }; + _proto._parseDepsFromJson = function _parseDepsFromJson(json) { + var depends = parseUuidDependencies(json); + depends.forEach(function (uuid, index) { + return depends[index] = decodeUuid(uuid); + }); + return depends; + }; + _proto._descend = function _descend(uuid, exclude, depends) { + var deps = this.getDeps(uuid); + for (var i = 0; i < deps.length; i++) { + var depend = deps[i]; + if (!exclude[depend]) { + exclude[depend] = true; + depends.push(depend); + this._descend(depend, exclude, depends); + } + } + }; + _createClass(DependUtil, null, [{ + key: "instance", + get: function get() { + if (!this._instance) { + this._instance = new DependUtil(); + } + return this._instance; + } + }]); + return DependUtil; + }(); + DependUtil._instance = void 0; + var dependUtil = DependUtil.instance; + + var _dec$29, _class$27; + var _regions = [new BufferTextureCopy()]; + function getMipLevel(width, height) { + var size = Math.max(width, height); + var level = 0; + while (size) { + size >>= 1; + level++; + } + return level; + } + function isPOT(n) { + return n && (n & n - 1) === 0; + } + function canGenerateMipmap(device, w, h) { + var needCheckPOT = device.gfxAPI === API.WEBGL; + if (needCheckPOT) { + return isPOT(w) && isPOT(h); + } + return true; + } + var SimpleTexture = (_dec$29 = ccclass$t('cc.SimpleTexture'), _dec$29(_class$27 = function (_TextureBase) { + _inheritsLoose(SimpleTexture, _TextureBase); + function SimpleTexture() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _TextureBase.call.apply(_TextureBase, [this].concat(args)) || this; + _this._gfxTexture = null; + _this._gfxTextureView = null; + _this._mipmapLevel = 1; + _this._textureWidth = 0; + _this._textureHeight = 0; + _this._baseLevel = 0; + _this._maxLevel = 1000; + return _this; + } + var _proto = SimpleTexture.prototype; + _proto.getGFXTexture = function getGFXTexture() { + return this._gfxTextureView; + }; + _proto.destroy = function destroy() { + this._tryDestroyTextureView(); + this._tryDestroyTexture(); + return _TextureBase.prototype.destroy.call(this); + }; + _proto.updateImage = function updateImage() { + this.updateMipmaps(0); + }; + _proto.updateMipmaps = function updateMipmaps(firstLevel, count) { + }; + _proto.uploadData = function uploadData(source, level, arrayIndex) { + if (level === void 0) { + level = 0; + } + if (arrayIndex === void 0) { + arrayIndex = 0; + } + if (!this._gfxTexture || this._mipmapLevel <= level) { + return; + } + var gfxDevice = this._getGFXDevice(); + if (!gfxDevice) { + return; + } + var region = _regions[0]; + region.texExtent.width = this._textureWidth >> level; + region.texExtent.height = this._textureHeight >> level; + region.texSubres.mipLevel = level; + region.texSubres.baseArrayLayer = arrayIndex; + if (ArrayBuffer.isView(source)) { + gfxDevice.copyBuffersToTexture([source], this._gfxTexture, _regions); + } else { + gfxDevice.copyTexImagesToTexture([source], this._gfxTexture, _regions); + } + }; + _proto._assignImage = function _assignImage(image, level, arrayIndex) { + var data = image.data; + if (!data) { + return; + } + this.uploadData(data, level, arrayIndex); + this._checkTextureLoaded(); + if (macro.CLEANUP_IMAGE_CACHE) { + var deps = dependUtil.getDeps(this._uuid); + var index = deps.indexOf(image._uuid); + if (index !== -1) { + fastRemoveAt$2(deps, index); + image.decRef(); + } + } + }; + _proto._checkTextureLoaded = function _checkTextureLoaded() { + this._textureReady(); + }; + _proto._textureReady = function _textureReady() { + this.loaded = true; + this.emit('load'); + }; + _proto._setMipmapLevel = function _setMipmapLevel(value) { + this._mipmapLevel = value < 1 ? 1 : value; + }; + _proto._setMipRange = function _setMipRange(baseLevel, maxLevel) { + this._baseLevel = baseLevel < 1 ? 0 : baseLevel; + this._maxLevel = maxLevel < 1 ? 0 : maxLevel; + }; + _proto.setMipRange = function setMipRange(baseLevel, maxLevel) { + assertID(baseLevel <= maxLevel, 3124); + this._setMipRange(baseLevel, maxLevel); + var device = this._getGFXDevice(); + if (!device) { + return; + } + var textureView = this._createTextureView(device); + this._tryDestroyTextureView(); + this._gfxTextureView = textureView; + }; + _proto._getGfxTextureCreateInfo = function _getGfxTextureCreateInfo(presumed) { + return null; + }; + _proto._getGfxTextureViewCreateInfo = function _getGfxTextureViewCreateInfo(presumed) { + return null; + }; + _proto._tryReset = function _tryReset() { + this._tryDestroyTextureView(); + this._tryDestroyTexture(); + if (this._mipmapLevel === 0) { + return; + } + var device = this._getGFXDevice(); + if (!device) { + return; + } + this._createTexture(device); + this._gfxTextureView = this._createTextureView(device); + }; + _proto.isUsingOfflineMipmaps = function isUsingOfflineMipmaps() { + return false; + }; + _proto._createTexture = function _createTexture(device) { + if (this._width === 0 || this._height === 0) { + return; + } + var flags = TextureFlagBit.NONE; + if (this._mipFilter !== Filter.NONE && canGenerateMipmap(device, this._width, this._height)) { + this._mipmapLevel = getMipLevel(this._width, this._height); + if (!this.isUsingOfflineMipmaps() && !this.isCompressed) { + flags = TextureFlagBit.GEN_MIPMAP; + } + } + var textureCreateInfo = this._getGfxTextureCreateInfo({ + usage: TextureUsageBit.SAMPLED | TextureUsageBit.TRANSFER_DST | TextureUsageBit.COLOR_ATTACHMENT, + format: this._getGFXFormat(), + levelCount: this._mipmapLevel, + flags: flags + }); + if (!textureCreateInfo) { + return; + } + var texture = device.createTexture(textureCreateInfo); + this._textureWidth = textureCreateInfo.width; + this._textureHeight = textureCreateInfo.height; + this._gfxTexture = texture; + }; + _proto._createTextureView = function _createTextureView(device) { + if (!this._gfxTexture) { + return null; + } + var maxLevel = this._maxLevel < this._mipmapLevel ? this._maxLevel : this._mipmapLevel - 1; + var textureViewCreateInfo = this._getGfxTextureViewCreateInfo({ + texture: this._gfxTexture, + format: this._getGFXFormat(), + baseLevel: this._baseLevel, + levelCount: maxLevel - this._baseLevel + 1 + }); + if (!textureViewCreateInfo) { + return null; + } + return device.createTexture(textureViewCreateInfo); + }; + _proto._tryDestroyTexture = function _tryDestroyTexture() { + if (this._gfxTexture) { + this._gfxTexture.destroy(); + this._gfxTexture = null; + } + }; + _proto._tryDestroyTextureView = function _tryDestroyTextureView() { + if (this._gfxTextureView) { + this._gfxTextureView.destroy(); + this._gfxTextureView = null; + } + }; + _createClass(SimpleTexture, [{ + key: "mipmapLevel", + get: function get() { + return this._mipmapLevel; + } + }]); + return SimpleTexture; + }(TextureBase)) || _class$27); + legacyCC.SimpleTexture = SimpleTexture; + + var _dec$28, _dec2$1p, _class$26, _class2$1U, _initializer$1F; + var Texture2D = exports('dX', (_dec$28 = ccclass$t('cc.Texture2D'), _dec2$1p = type$8([ImageAsset]), _dec$28(_class$26 = (_class2$1U = function (_SimpleTexture) { + _inheritsLoose(Texture2D, _SimpleTexture); + function Texture2D() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _SimpleTexture.call.apply(_SimpleTexture, [this].concat(args)) || this; + _this._mipmaps = _initializer$1F && _initializer$1F(); + _this._generatedMipmaps = []; + return _this; + } + var _proto = Texture2D.prototype; + _proto._setMipmapParams = function _setMipmapParams(value) { + var _this2 = this; + this._generatedMipmaps = value; + this._setMipmapLevel(this._generatedMipmaps.length); + if (this._generatedMipmaps.length > 0) { + var imageAsset = this._generatedMipmaps[0]; + this.reset({ + width: imageAsset.width, + height: imageAsset.height, + format: imageAsset.format, + mipmapLevel: this._generatedMipmaps.length, + baseLevel: this._baseLevel, + maxLevel: this._maxLevel + }); + this._generatedMipmaps.forEach(function (mipmap, level) { + _this2._assignImage(mipmap, level); + }); + } else { + this.reset({ + width: 0, + height: 0, + mipmapLevel: this._generatedMipmaps.length, + baseLevel: this._baseLevel, + maxLevel: this._maxLevel + }); + } + }; + _proto.initialize = function initialize() { + this.mipmaps = this._mipmaps; + }; + _proto.onLoaded = function onLoaded() { + this.initialize(); + }; + _proto.reset = function reset(info) { + this._width = info.width; + this._height = info.height; + this._setGFXFormat(info.format); + var mipLevels = info.mipmapLevel === undefined ? 1 : info.mipmapLevel; + this._setMipmapLevel(mipLevels); + var minLod = info.baseLevel === undefined ? 0 : info.baseLevel; + var maxLod = info.maxLevel === undefined ? 1000 : info.maxLevel; + this._setMipRange(minLod, maxLod); + this._tryReset(); + }; + _proto.create = function create(width, height, format, mipmapLevel, baseLevel, maxLevel) { + if (format === void 0) { + format = PixelFormat.RGBA8888; + } + if (mipmapLevel === void 0) { + mipmapLevel = 1; + } + if (baseLevel === void 0) { + baseLevel = 0; + } + if (maxLevel === void 0) { + maxLevel = 1000; + } + this.reset({ + width: width, + height: height, + format: format, + mipmapLevel: mipmapLevel, + baseLevel: baseLevel, + maxLevel: maxLevel + }); + }; + _proto.toString = function toString() { + return this._mipmaps.length !== 0 ? this._mipmaps[0].url : ''; + }; + _proto.updateMipmaps = function updateMipmaps(firstLevel, count) { + if (firstLevel === void 0) { + firstLevel = 0; + } + if (firstLevel >= this._generatedMipmaps.length) { + return; + } + var nUpdate = Math.min(count === undefined ? this._generatedMipmaps.length : count, this._generatedMipmaps.length - firstLevel); + for (var i = 0; i < nUpdate; ++i) { + var level = firstLevel + i; + this._assignImage(this._generatedMipmaps[level], level); + } + }; + _proto.getHtmlElementObj = function getHtmlElementObj() { + return this._mipmaps[0] && this._mipmaps[0].data instanceof HTMLElement ? this._mipmaps[0].data : null; + }; + _proto.destroy = function destroy() { + this._mipmaps = []; + this._generatedMipmaps = []; + return _SimpleTexture.prototype.destroy.call(this); + }; + _proto.description = function description() { + var url = this._mipmaps[0] ? this._mipmaps[0].url : ''; + return ""; + }; + _proto.releaseTexture = function releaseTexture() { + this.destroy(); + }; + _proto._serialize = function _serialize(ctxForExporting) { + return null; + }; + _proto._deserialize = function _deserialize(serializedData, handle) { + var data = serializedData; + _SimpleTexture.prototype._deserialize.call(this, data.base, handle); + this._mipmaps = new Array(data.mipmaps.length); + for (var i = 0; i < data.mipmaps.length; ++i) { + this._mipmaps[i] = new ImageAsset(); + if (!data.mipmaps[i]) { + continue; + } + var mipmapUUID = data.mipmaps[i]; + handle.result.push(this._mipmaps, "" + i, mipmapUUID, getClassId(ImageAsset)); + } + }; + _proto._getGfxTextureCreateInfo = function _getGfxTextureCreateInfo(presumed) { + var texInfo = new TextureInfo(TextureType.TEX2D); + texInfo.width = this._width; + texInfo.height = this._height; + Object.assign(texInfo, presumed); + return texInfo; + }; + _proto._getGfxTextureViewCreateInfo = function _getGfxTextureViewCreateInfo(presumed) { + var texViewInfo = new TextureViewInfo(); + texViewInfo.type = TextureType.TEX2D; + Object.assign(texViewInfo, presumed); + return texViewInfo; + }; + _proto.initDefault = function initDefault(uuid) { + _SimpleTexture.prototype.initDefault.call(this, uuid); + var imageAsset = new ImageAsset(); + imageAsset.initDefault(); + this.image = imageAsset; + }; + _proto.validate = function validate() { + return this.mipmaps && this.mipmaps.length !== 0; + }; + _createClass(Texture2D, [{ + key: "mipmaps", + get: function get() { + return this._mipmaps; + }, + set: function set(value) { + this._mipmaps = value; + var mipmaps = []; + if (value.length === 1) { + var image = value[0]; + mipmaps.push.apply(mipmaps, image.extractMipmaps()); + } else if (value.length > 1) { + for (var i = 0; i < value.length; ++i) { + var _image = value[i]; + mipmaps.push(_image.extractMipmap0()); + } + } + this._setMipmapParams(mipmaps); + } + }, { + key: "image", + get: function get() { + return this._mipmaps.length === 0 ? null : this._mipmaps[0]; + }, + set: function set(value) { + this.mipmaps = value ? [value] : []; + } + }]); + return Texture2D; + }(SimpleTexture), (_initializer$1F = applyDecoratedInitializer(_class2$1U.prototype, "_mipmaps", [_dec2$1p], function () { + return []; + })), _class2$1U)) || _class$26)); + legacyCC.Texture2D = Texture2D; + + var space$1 = 2; + var Atlas = function () { + function Atlas(width, height) { + this._texture = void 0; + this._width = void 0; + this._height = void 0; + this._x = void 0; + this._y = void 0; + this._nexty = void 0; + this._innerTextureInfos = {}; + this._innerSpriteFrames = void 0; + this._count = void 0; + var texture = new DynamicAtlasTexture(); + texture.initWithSize(width, height); + this._texture = texture; + this._width = width; + this._height = height; + this._x = space$1; + this._y = space$1; + this._nexty = space$1; + this._innerTextureInfos = {}; + this._innerSpriteFrames = []; + this._count = 0; + } + var _proto = Atlas.prototype; + _proto.insertSpriteFrame = function insertSpriteFrame(spriteFrame) { + var rect = spriteFrame.rect; + var texture = spriteFrame.texture; + var info = this._innerTextureInfos[texture.getId()]; + var sx = rect.x; + var sy = rect.y; + if (info) { + sx += info.x; + sy += info.y; + } else { + var width = texture.width; + var height = texture.height; + if (this._x + width + space$1 > this._width) { + this._x = space$1; + this._y = this._nexty; + } + if (this._y + height + space$1 > this._nexty) { + this._nexty = this._y + height + space$1; + } + if (this._nexty > this._height) { + return null; + } + if (legacyCC.internal.dynamicAtlasManager.textureBleeding) { + if (width <= 8 || height <= 8) { + this._texture.drawTextureAt(texture.image, this._x - 1, this._y - 1); + this._texture.drawTextureAt(texture.image, this._x - 1, this._y + 1); + this._texture.drawTextureAt(texture.image, this._x + 1, this._y - 1); + this._texture.drawTextureAt(texture.image, this._x + 1, this._y + 1); + } + this._texture.drawTextureAt(texture.image, this._x - 1, this._y); + this._texture.drawTextureAt(texture.image, this._x + 1, this._y); + this._texture.drawTextureAt(texture.image, this._x, this._y - 1); + this._texture.drawTextureAt(texture.image, this._x, this._y + 1); + } + this._texture.drawTextureAt(texture.image, this._x, this._y); + this._innerTextureInfos[texture.getId()] = { + x: this._x, + y: this._y, + texture: texture + }; + this._count++; + sx += this._x; + sy += this._y; + this._x += width + space$1; + } + var frame = { + x: sx, + y: sy, + texture: this._texture + }; + this._innerSpriteFrames.push(spriteFrame); + return frame; + }; + _proto.deleteInnerTexture = function deleteInnerTexture(texture) { + if (texture && this._innerTextureInfos[texture.getId()]) { + delete this._innerTextureInfos[texture.getId()]; + this._count--; + } + }; + _proto.isEmpty = function isEmpty() { + return this._count <= 0; + }; + _proto.reset = function reset() { + this._x = space$1; + this._y = space$1; + this._nexty = space$1; + var frames = this._innerSpriteFrames; + for (var i = 0, l = frames.length; i < l; i++) { + var frame = frames[i]; + if (!frame.isValid) { + continue; + } + frame._resetDynamicAtlasFrame(); + } + this._innerSpriteFrames.length = 0; + this._innerTextureInfos = {}; + }; + _proto.destroy = function destroy() { + this.reset(); + this._texture.destroy(); + }; + return Atlas; + }(); + var DynamicAtlasTexture = function (_Texture2D) { + _inheritsLoose(DynamicAtlasTexture, _Texture2D); + function DynamicAtlasTexture() { + return _Texture2D.apply(this, arguments) || this; + } + var _proto2 = DynamicAtlasTexture.prototype; + _proto2.initWithSize = function initWithSize(width, height, format) { + if (format === void 0) { + format = PixelFormat.RGBA8888; + } + this.reset({ + width: width, + height: height, + format: format + }); + }; + _proto2.drawTextureAt = function drawTextureAt(image, x, y) { + var gfxTexture = this.getGFXTexture(); + if (!image || !gfxTexture) { + return; + } + var gfxDevice = this._getGFXDevice(); + if (!gfxDevice) { + console.warn('Unable to get device'); + return; + } + var region = new BufferTextureCopy(); + region.texOffset.x = x; + region.texOffset.y = y; + region.texExtent.width = image.width; + region.texExtent.height = image.height; + gfxDevice.copyTexImagesToTexture([image.data], gfxTexture, [region]); + }; + return DynamicAtlasTexture; + }(Texture2D); + + var layerList = { + NONE: 0, + IGNORE_RAYCAST: 1 << 20, + GIZMOS: 1 << 21, + EDITOR: 1 << 22, + UI_3D: 1 << 23, + SCENE_GIZMO: 1 << 24, + UI_2D: 1 << 25, + PROFILER: 1 << 28, + DEFAULT: 1 << 30, + ALL: 0xffffffff + }; + var Layers = exports('dg', function () { + function Layers() {} + Layers.init = function init() { + var userLayers = settings.querySettings(Settings.Category.ENGINE, 'customLayers'); + if (!userLayers) return; + for (var i = 0; i < userLayers.length; i++) { + var layer = userLayers[i]; + Layers.addLayer(layer.name, layer.bit); + } + }; + Layers.makeMaskInclude = function makeMaskInclude(includes) { + var mask = 0; + for (var _iterator = _createForOfIteratorHelperLoose(includes), _step; !(_step = _iterator()).done;) { + var inc = _step.value; + mask |= inc; + } + return mask; + }; + Layers.makeMaskExclude = function makeMaskExclude(excludes) { + return ~Layers.makeMaskInclude(excludes); + }; + Layers.addLayer = function addLayer(name, bitNum) { + if (bitNum === undefined) { + console.warn('bitNum can\'t be undefined'); + return; + } + if (bitNum > 19 || bitNum < 0) { + console.warn('maximum layers reached.'); + return; + } + var val = 1 << bitNum; + assertIsTrue(!Layers.Enum[name], getError(2104, name)); + Layers.Enum[name] = val; + value(Layers.Enum, String(val), name); + Layers.BitMask[name] = val; + value(Layers.BitMask, String(val), name); + BitMask.update(Layers.BitMask); + Enum.update(Layers.Enum); + }; + Layers.deleteLayer = function deleteLayer(bitNum) { + if (bitNum > 19 || bitNum < 0) { + console.warn('do not change buildin layers.'); + return; + } + var val = 1 << bitNum; + delete Layers.Enum[Layers.Enum[val]]; + delete Layers.Enum[val]; + delete Layers.BitMask[Layers.BitMask[val]]; + delete Layers.BitMask[val]; + BitMask.update(Layers.BitMask); + Enum.update(Layers.Enum); + }; + Layers.nameToLayer = function nameToLayer(name) { + if (name === undefined) { + console.warn('name can\'t be undefined'); + return -1; + } + return log2(Layers.Enum[name]); + }; + Layers.layerToName = function layerToName(bitNum) { + if (bitNum > 31 || bitNum < 0) { + console.warn('Unable to access unknown layer.'); + return ''; + } + return Layers.Enum[1 << bitNum]; + }; + return Layers; + }()); + Layers.Enum = Enum(layerList); + Layers.BitMask = BitMask(_extends({}, layerList)); + legacyCC.Layers = Layers; + + var NodeUIProperties = function () { + var _proto = NodeUIProperties.prototype; + _proto.setOpacity = function setOpacity(v) { + this._opacity = v; + }; + function NodeUIProperties(node) { + this._uiComp = null; + this._opacity = 1; + this._localOpacity = 1; + this.colorDirty = true; + this._uiTransformComp = null; + this._node = void 0; + this._node = node; + } + _proto.applyOpacity = function applyOpacity(effectOpacity) { + this._opacity = this._localOpacity * effectOpacity; + }; + NodeUIProperties.markOpacityTree = function markOpacityTree(node, isDirty) { + }; + _createClass(NodeUIProperties, [{ + key: "uiTransformComp", + get: function get() { + if (!this._uiTransformComp) { + this._uiTransformComp = this._node.getComponent('cc.UITransform'); + } + return this._uiTransformComp; + }, + set: function set(value) { + this._uiTransformComp = value; + } + }, { + key: "uiComp", + get: function get() { + return this._uiComp; + }, + set: function set(comp) { + if (this._uiComp && comp) { + warnID(12002); + return; + } + this._uiComp = comp; + } + }, { + key: "opacity", + get: function get() { + return this._opacity; + } + }, { + key: "localOpacity", + get: function get() { + return this._localOpacity; + }, + set: function set(val) { + this._localOpacity = val; + this.colorDirty = true; + } + }]); + return NodeUIProperties; + }(); + + CCObject.Flags.Destroying; + !!legacyCC.GAME_VIEW; + + var NodeSpace; exports('dm', NodeSpace); + (function (NodeSpace) { + NodeSpace[NodeSpace["LOCAL"] = 0] = "LOCAL"; + NodeSpace[NodeSpace["WORLD"] = 1] = "WORLD"; + })(NodeSpace || (exports('dm', NodeSpace = {}))); + var TransformBit; exports('dn', TransformBit); + (function (TransformBit) { + TransformBit[TransformBit["NONE"] = 0] = "NONE"; + TransformBit[TransformBit["POSITION"] = 1] = "POSITION"; + TransformBit[TransformBit["ROTATION"] = 2] = "ROTATION"; + TransformBit[TransformBit["SCALE"] = 4] = "SCALE"; + TransformBit[TransformBit["RS"] = TransformBit.ROTATION | TransformBit.SCALE] = "RS"; + TransformBit[TransformBit["TRS"] = TransformBit.POSITION | TransformBit.ROTATION | TransformBit.SCALE] = "TRS"; + TransformBit[TransformBit["TRS_MASK"] = ~TransformBit.TRS] = "TRS_MASK"; + })(TransformBit || (exports('dn', TransformBit = {}))); + legacyCC.internal.TransformBit = TransformBit; + var MobilityMode = exports('dp', Enum({ + Static: 0, + Stationary: 1, + Movable: 2 + })); + + var NodeEventType; exports('dq', NodeEventType); + (function (NodeEventType) { + NodeEventType["TOUCH_START"] = "touch-start"; + NodeEventType["TOUCH_MOVE"] = "touch-move"; + NodeEventType["TOUCH_END"] = "touch-end"; + NodeEventType["TOUCH_CANCEL"] = "touch-cancel"; + NodeEventType["MOUSE_DOWN"] = "mouse-down"; + NodeEventType["MOUSE_MOVE"] = "mouse-move"; + NodeEventType["MOUSE_UP"] = "mouse-up"; + NodeEventType["MOUSE_WHEEL"] = "mouse-wheel"; + NodeEventType["MOUSE_ENTER"] = "mouse-enter"; + NodeEventType["MOUSE_LEAVE"] = "mouse-leave"; + NodeEventType["KEY_DOWN"] = "keydown"; + NodeEventType["KEY_UP"] = "keyup"; + NodeEventType["DEVICEMOTION"] = "devicemotion"; + NodeEventType["TRANSFORM_CHANGED"] = "transform-changed"; + NodeEventType["MOBILITY_CHANGED"] = "mobility-changed"; + NodeEventType["SCENE_CHANGED_FOR_PERSISTS"] = "scene-changed-for-persists"; + NodeEventType["SIZE_CHANGED"] = "size-changed"; + NodeEventType["ANCHOR_CHANGED"] = "anchor-changed"; + NodeEventType["COLOR_CHANGED"] = "color-changed"; + NodeEventType["CHILD_ADDED"] = "child-added"; + NodeEventType["CHILD_REMOVED"] = "child-removed"; + NodeEventType["PARENT_CHANGED"] = "parent-changed"; + NodeEventType["NODE_DESTROYED"] = "node-destroyed"; + NodeEventType["LAYER_CHANGED"] = "layer-changed"; + NodeEventType["SIBLING_ORDER_CHANGED"] = "sibling-order-changed"; + NodeEventType["ACTIVE_IN_HIERARCHY_CHANGED"] = "active-in-hierarchy-changed"; + NodeEventType["COMPONENT_ADDED"] = "component-added"; + NodeEventType["COMPONENT_REMOVED"] = "component-removed"; + NodeEventType["LIGHT_PROBE_CHANGED"] = "light-probe-changed"; + NodeEventType["LIGHT_PROBE_BAKING_CHANGED"] = "light-probe-baking-changed"; + })(NodeEventType || (exports('dq', NodeEventType = {}))); + + var _dec$27, _dec2$1o, _dec3$Z, _class$25, _class2$1T, _initializer$1E, _initializer2$1g, _initializer3$X, _initializer4$O, _initializer5$C, _initializer6$w, _initializer7$o, _initializer8$n, _initializer9$l, _initializer10$l, _initializer11$k, _class3$I; + var Destroying = CCObject.Flags.Destroying; + var DontDestroy = CCObject.Flags.DontDestroy; + var Deactivating$1 = CCObject.Flags.Deactivating; + var TRANSFORM_ON = 1 << 0; + var idGenerator = new IDGenerator('Node'); + function getConstructor(typeOrClassName) { + if (!typeOrClassName) { + errorID(3804); + return null; + } + if (typeof typeOrClassName === 'string') { + return getClassByName(typeOrClassName); + } + return typeOrClassName; + } + var v3_a = new Vec3(); + var v3_b = new Vec3(); + var q_a = new Quat(); + var q_b = new Quat(); + var qt_1 = new Quat(); + var m3_1 = new Mat3(); + new Mat3(); + var m4_1$3 = new Mat4(); + var m4_2 = new Mat4(); + var dirtyNodes = []; + var reserveContentsForAllSyncablePrefabTag = Symbol('ReserveContentsForAllSyncablePrefab'); + var globalFlagChangeVersion = 0; + var Node$1 = exports('de', (_dec$27 = ccclass$t('cc.Node'), _dec2$1o = type$8(Vec3), _dec3$Z = type$8(MobilityMode), _dec$27(_class$25 = (_class2$1T = (_class3$I = function (_CCObject) { + _inheritsLoose(Node, _CCObject); + var _proto = Node.prototype; + _proto._setActiveInHierarchy = function _setActiveInHierarchy(v) { + this._activeInHierarchy = v; + }; + Node._setScene = function _setScene(node) { + node._updateScene(); + }; + Node._findComponent = function _findComponent(node, constructor) { + var cls = constructor; + var comps = node._components; + if (cls._sealed) { + for (var i = 0; i < comps.length; ++i) { + var comp = comps[i]; + if (comp.constructor === constructor) { + return comp; + } + } + } else { + for (var _i = 0; _i < comps.length; ++_i) { + var _comp = comps[_i]; + if (_comp instanceof constructor) { + return _comp; + } + } + } + return null; + }; + Node._findComponents = function _findComponents(node, constructor, components) { + var cls = constructor; + var comps = node._components; + if (cls._sealed) { + for (var i = 0; i < comps.length; ++i) { + var comp = comps[i]; + if (comp.constructor === constructor) { + components.push(comp); + } + } + } else { + for (var _i2 = 0; _i2 < comps.length; ++_i2) { + var _comp2 = comps[_i2]; + if (_comp2 instanceof constructor) { + components.push(_comp2); + } + } + } + }; + Node._findChildComponent = function _findChildComponent(children, constructor) { + for (var i = 0; i < children.length; ++i) { + var node = children[i]; + var comp = Node._findComponent(node, constructor); + if (comp) { + return comp; + } + if (node._children.length > 0) { + comp = Node._findChildComponent(node._children, constructor); + if (comp) { + return comp; + } + } + } + return null; + }; + Node._findChildComponents = function _findChildComponents(children, constructor, components) { + for (var i = 0; i < children.length; ++i) { + var node = children[i]; + Node._findComponents(node, constructor, components); + if (node._children.length > 0) { + Node._findChildComponents(node._children, constructor, components); + } + } + }; + _proto.getWritableComponents = function getWritableComponents() { + return this._components; + }; + _proto._updateScene = function _updateScene() { + if (this._parent == null) { + error('Node %s(%s) has not attached to a scene.', this.name, this.uuid); + } else { + this._scene = this._parent._scene; + } + }; + _proto.attr = function attr(attrs) { + mixin(this, attrs); + }; + _proto.getParent = function getParent() { + return this._parent; + }; + _proto.modifyParent = function modifyParent(parent) { + this._parent = parent; + }; + _proto.setParent = function setParent(value, keepWorldTransform) { + if (keepWorldTransform === void 0) { + keepWorldTransform = false; + } + if (keepWorldTransform) { + this.updateWorldTransform(); + } + if (this._parent === value) { + return; + } + var oldParent = this._parent; + var newParent = value; + if (oldParent && oldParent._objFlags & Deactivating$1) { + errorID(3821); + } + this._parent = newParent; + this._siblingIndex = 0; + this._onSetParent(oldParent, keepWorldTransform); + if (this.emit) { + this.emit(NodeEventType.PARENT_CHANGED, oldParent); + } + if (oldParent) { + if (!(oldParent._objFlags & Destroying)) { + var removeAt = oldParent._children.indexOf(this); + oldParent._children.splice(removeAt, 1); + oldParent._updateSiblingIndex(); + if (oldParent.emit) { + oldParent.emit(NodeEventType.CHILD_REMOVED, this); + } + } + } + if (newParent) { + if (newParent._objFlags & Deactivating$1) { + errorID(3821); + } + newParent._children.push(this); + this._siblingIndex = newParent._children.length - 1; + if (newParent.emit) { + newParent.emit(NodeEventType.CHILD_ADDED, this); + } + } + this._onHierarchyChanged(oldParent); + }; + _proto.getChildByUuid = function getChildByUuid(uuid) { + if (!uuid) { + log('Invalid uuid'); + return null; + } + var locChildren = this._children; + for (var i = 0, len = locChildren.length; i < len; i++) { + if (locChildren[i]._id === uuid) { + return locChildren[i]; + } + } + return null; + }; + _proto.getChildByName = function getChildByName(name) { + if (!name) { + log('Invalid name'); + return null; + } + var locChildren = this._children; + for (var i = 0, len = locChildren.length; i < len; i++) { + if (locChildren[i]._name === name) { + return locChildren[i]; + } + } + return null; + }; + _proto.getChildByPath = function getChildByPath(path) { + var segments = path.split('/'); + var lastNode = this; + var _loop = function _loop() { + var segment = segments[i]; + if (segment.length === 0) { + return 0; + } + var next = lastNode.children.find(function (childNode) { + return childNode.name === segment; + }); + if (!next) { + return { + v: null + }; + } + lastNode = next; + }, + _ret; + for (var i = 0; i < segments.length; ++i) { + _ret = _loop(); + if (_ret === 0) continue; + if (_ret) return _ret.v; + } + return lastNode; + }; + _proto.addChild = function addChild(child) { + child.setParent(this); + }; + _proto.insertChild = function insertChild(child, siblingIndex) { + child.setParent(this); + child.setSiblingIndex(siblingIndex); + }; + _proto.getSiblingIndex = function getSiblingIndex() { + return this._siblingIndex; + }; + _proto.setSiblingIndex = function setSiblingIndex(index) { + if (!this._parent) { + return; + } + if (this._parent._objFlags & Deactivating$1) { + errorID(3821); + return; + } + var siblings = this._parent._children; + index = index !== -1 ? index : siblings.length - 1; + var oldIndex = siblings.indexOf(this); + if (index !== oldIndex) { + siblings.splice(oldIndex, 1); + if (index < siblings.length) { + siblings.splice(index, 0, this); + } else { + siblings.push(this); + } + this._parent._updateSiblingIndex(); + if (this._onSiblingIndexChanged) { + this._onSiblingIndexChanged(index); + } + this._eventProcessor.onUpdatingSiblingIndex(); + } + }; + _proto.walk = function walk(preFunc, postFunc) { + var index = 1; + var children = null; + var curr = null; + var i = 0; + var stack = Node._stacks[Node._stackId]; + if (!stack) { + stack = []; + Node._stacks.push(stack); + } + Node._stackId++; + stack.length = 0; + stack[0] = this; + var parent = null; + var afterChildren = false; + while (index) { + index--; + curr = stack[index]; + if (!curr) { + continue; + } + if (!afterChildren && preFunc) { + preFunc(curr); + } else if (afterChildren && postFunc) { + postFunc(curr); + } + stack[index] = null; + if (afterChildren) { + if (parent === this._parent) break; + afterChildren = false; + } else { + if (curr._children.length > 0) { + parent = curr; + children = curr._children; + i = 0; + stack[index] = children[i]; + index++; + } else { + stack[index] = curr; + index++; + afterChildren = true; + } + continue; + } + if (children) { + i++; + if (children[i]) { + stack[index] = children[i]; + index++; + } else if (parent) { + stack[index] = parent; + index++; + afterChildren = true; + if (parent._parent) { + children = parent._parent._children; + i = children.indexOf(parent); + parent = parent._parent; + } else { + parent = null; + children = null; + } + if (i < 0) { + break; + } + } + } + } + stack.length = 0; + Node._stackId--; + }; + _proto.removeFromParent = function removeFromParent() { + if (this._parent) { + this._parent.removeChild(this); + } + }; + _proto.removeChild = function removeChild(child) { + if (this._children.indexOf(child) > -1) { + child.parent = null; + } + }; + _proto.removeAllChildren = function removeAllChildren() { + var children = this._children; + for (var i = children.length - 1; i >= 0; i--) { + var node = children[i]; + if (node) { + node.parent = null; + } + } + this._children.length = 0; + }; + _proto.isChildOf = function isChildOf(parent) { + var child = this; + do { + if (child === parent) { + return true; + } + child = child._parent; + } while (child); + return false; + }; + _proto.getComponent = function getComponent(typeOrClassName) { + var constructor = getConstructor(typeOrClassName); + if (constructor) { + return Node._findComponent(this, constructor); + } + return null; + }; + _proto.getComponents = function getComponents(typeOrClassName) { + var constructor = getConstructor(typeOrClassName); + var components = []; + if (constructor) { + Node._findComponents(this, constructor, components); + } + return components; + }; + _proto.getComponentInChildren = function getComponentInChildren(typeOrClassName) { + var constructor = getConstructor(typeOrClassName); + if (constructor) { + return Node._findChildComponent(this._children, constructor); + } + return null; + }; + _proto.getComponentsInChildren = function getComponentsInChildren(typeOrClassName) { + var constructor = getConstructor(typeOrClassName); + var components = []; + if (constructor) { + Node._findComponents(this, constructor, components); + Node._findChildComponents(this._children, constructor, components); + } + return components; + }; + _proto.addComponent = function addComponent(typeOrClassName) { + var constructor; + if (typeof typeOrClassName === 'string') { + constructor = getClassByName(typeOrClassName); + if (!constructor) { + if (legacyCC._RF.peek()) { + errorID(3808, typeOrClassName); + } + throw TypeError(getError(3807, typeOrClassName)); + } + } else { + if (!typeOrClassName) { + throw TypeError(getError(3804)); + } + constructor = typeOrClassName; + } + if (typeof constructor !== 'function') { + throw TypeError(getError(3809)); + } + if (!isChildClassOf(constructor, legacyCC.Component)) { + throw TypeError(getError(3810)); + } + var reqComps = constructor._requireComponent; + if (reqComps) { + if (Array.isArray(reqComps)) { + for (var i = 0; i < reqComps.length; i++) { + var reqComp = reqComps[i]; + if (!this.getComponent(reqComp)) { + this.addComponent(reqComp); + } + } + } else { + var _reqComp = reqComps; + if (!this.getComponent(_reqComp)) { + this.addComponent(_reqComp); + } + } + } + var component = new constructor(); + component.node = this; + this._components.push(component); + this.emit(NodeEventType.COMPONENT_ADDED, component); + if (this._activeInHierarchy) { + legacyCC.director._nodeActivator.activateComp(component); + } + return component; + }; + _proto.removeComponent = function removeComponent(component) { + if (!component) { + errorID(3813); + return; + } + var componentInstance = null; + if (component instanceof Component) { + componentInstance = component; + } else { + componentInstance = this.getComponent(component); + } + if (componentInstance) { + componentInstance.destroy(); + } + }; + _proto.on = function on(type, callback, target, useCapture) { + if (useCapture === void 0) { + useCapture = false; + } + switch (type) { + case NodeEventType.TRANSFORM_CHANGED: + this._eventMask |= TRANSFORM_ON; + break; + } + this._eventProcessor.on(type, callback, target, useCapture); + }; + _proto.off = function off(type, callback, target, useCapture) { + if (useCapture === void 0) { + useCapture = false; + } + this._eventProcessor.off(type, callback, target, useCapture); + var hasListeners = this._eventProcessor.hasEventListener(type); + if (!hasListeners) { + switch (type) { + case NodeEventType.TRANSFORM_CHANGED: + this._eventMask &= ~TRANSFORM_ON; + break; + } + } + }; + _proto.once = function once(type, callback, target, useCapture) { + this._eventProcessor.once(type, callback, target, useCapture); + }; + _proto.emit = function emit(type, arg0, arg1, arg2, arg3, arg4) { + this._eventProcessor.emit(type, arg0, arg1, arg2, arg3, arg4); + }; + _proto.dispatchEvent = function dispatchEvent(event) { + this._eventProcessor.dispatchEvent(event); + }; + _proto.hasEventListener = function hasEventListener(type, callback, target) { + return this._eventProcessor.hasEventListener(type, callback, target); + }; + _proto.targetOff = function targetOff(target) { + this._eventProcessor.targetOff(target); + if (this._eventMask & TRANSFORM_ON && !this._eventProcessor.hasEventListener(NodeEventType.TRANSFORM_CHANGED)) { + this._eventMask &= ~TRANSFORM_ON; + } + }; + _proto.destroy = function destroy() { + if (_CCObject.prototype.destroy.call(this)) { + this.active = false; + return true; + } + return false; + }; + _proto.destroyAllChildren = function destroyAllChildren() { + var children = this._children; + for (var i = 0; i < children.length; ++i) { + children[i].destroy(); + } + }; + _proto._removeComponent = function _removeComponent(component) { + if (!component) { + errorID(3814); + return; + } + if (!(this._objFlags & Destroying)) { + var i = this._components.indexOf(component); + if (i !== -1) { + this._components.splice(i, 1); + this.emit(NodeEventType.COMPONENT_REMOVED, component); + } else if (component.node !== this) { + errorID(3815); + } + } + }; + _proto._updateSiblingIndex = function _updateSiblingIndex() { + for (var i = 0; i < this._children.length; ++i) { + this._children[i]._siblingIndex = i; + } + this.emit(NodeEventType.SIBLING_ORDER_CHANGED); + }; + _proto._instantiate = function _instantiate(cloned, isSyncedNode) { + if (!cloned) { + cloned = legacyCC.instantiate._clone(this, this); + } + cloned._prefab; + cloned._parent = null; + cloned._onBatchCreated(isSyncedNode); + return cloned; + }; + _proto._onHierarchyChangedBase = function _onHierarchyChangedBase(oldParent) { + var newParent = this._parent; + if (this._persistNode && !(newParent instanceof legacyCC.Scene)) { + legacyCC.game.removePersistRootNode(this); + } + var shouldActiveNow = this._active && !!(newParent && newParent._activeInHierarchy); + if (this._activeInHierarchy !== shouldActiveNow) { + legacyCC.director._nodeActivator.activateNode(this, shouldActiveNow); + } + }; + _proto._onPreDestroyBase = function _onPreDestroyBase() { + this._objFlags |= Destroying; + var parent = this._parent; + var destroyByParent = !!parent && (parent._objFlags & Destroying) !== 0; + if (!destroyByParent && EDITOR) { + this._registerIfAttached(false); + } + if (this._persistNode) { + legacyCC.game.removePersistRootNode(this); + } + if (!destroyByParent) { + if (parent) { + this.emit(NodeEventType.PARENT_CHANGED, this); + var childIndex = parent._children.indexOf(this); + parent._children.splice(childIndex, 1); + this._siblingIndex = 0; + parent._updateSiblingIndex(); + if (parent.emit) { + parent.emit(NodeEventType.CHILD_REMOVED, this); + } + } + } + this.emit(NodeEventType.NODE_DESTROYED, this); + this._eventProcessor.destroy(); + var children = this._children; + for (var i = 0; i < children.length; ++i) { + children[i]._destroyImmediate(); + } + var comps = this._components; + for (var _i3 = 0; _i3 < comps.length; ++_i3) { + comps[_i3]._destroyImmediate(); + } + return destroyByParent; + }; + function Node(name) { + var _this; + _this = _CCObject.call(this, name) || this; + _this._parent = _initializer$1E && _initializer$1E(); + _this._children = _initializer2$1g && _initializer2$1g(); + _this._active = _initializer3$X && _initializer3$X(); + _this._components = _initializer4$O && _initializer4$O(); + _this._prefab = _initializer5$C && _initializer5$C(); + _this._scene = null; + _this._activeInHierarchy = false; + _this._id = idGenerator.getNewId(); + _this._name = void 0; + _this._eventProcessor = new legacyCC.NodeEventProcessor(_assertThisInitialized(_this)); + _this._eventMask = 0; + _this._siblingIndex = 0; + _this._originalSceneId = ''; + _this._uiProps = new NodeUIProperties(_assertThisInitialized(_this)); + _this._static = false; + _this._lpos = _initializer6$w && _initializer6$w(); + _this._lrot = _initializer7$o && _initializer7$o(); + _this._lscale = _initializer8$n && _initializer8$n(); + _this._mobility = _initializer9$l && _initializer9$l(); + _this._layer = _initializer10$l && _initializer10$l(); + _this._euler = _initializer11$k && _initializer11$k(); + _this._transformFlags = TransformBit.NONE; + _this._eulerDirty = false; + _this._flagChangeVersion = 0; + _this._hasChangedFlags = 0; + _this._name = name !== undefined ? name : 'New Node'; + _this._pos = new Vec3(); + _this._rot = new Quat(); + _this._scale = new Vec3(1, 1, 1); + _this._mat = new Mat4(); + return _this; + } + Node.isNode = function isNode(obj) { + return obj instanceof Node && (obj.constructor === Node || !(obj instanceof legacyCC.Scene)); + }; + _proto._onPreDestroy = function _onPreDestroy() { + return this._onPreDestroyBase(); + }; + _proto[serializeTag] = function (serializationOutput, context) { + { + serializationOutput.writeThis(); + return; + } + }; + _proto._onSetParent = function _onSetParent(oldParent, keepWorldTransform) { + if (keepWorldTransform === void 0) { + keepWorldTransform = false; + } + if (this._parent) { + if ((oldParent == null || oldParent._scene !== this._parent._scene) && this._parent._scene != null) { + this.walk(Node._setScene); + } + } + if (keepWorldTransform) { + var parent = this._parent; + if (parent) { + parent.updateWorldTransform(); + if (approx(Mat4.determinant(parent._mat), 0, EPSILON$3)) { + warnID(14300); + this._transformFlags |= TransformBit.TRS; + this.updateWorldTransform(); + } else { + Mat4.multiply(m4_1$3, Mat4.invert(m4_1$3, parent._mat), this._mat); + Mat4.toRTS(m4_1$3, this._lrot, this._lpos, this._lscale); + } + } else { + Vec3.copy(this._lpos, this._pos); + Quat.copy(this._lrot, this._rot); + Vec3.copy(this._lscale, this._scale); + } + this._eulerDirty = true; + } + this.invalidateChildren(TransformBit.TRS); + }; + _proto._onHierarchyChanged = function _onHierarchyChanged(oldParent) { + this.eventProcessor.reattach(); + this._onHierarchyChangedBase(oldParent); + }; + _proto._onBatchCreated = function _onBatchCreated(dontSyncChildPrefab) { + this.hasChangedFlags = TransformBit.TRS; + this._transformFlags |= TransformBit.TRS; + var len = this._children.length; + for (var i = 0; i < len; ++i) { + this._children[i]._siblingIndex = i; + this._children[i]._onBatchCreated(dontSyncChildPrefab); + } + }; + _proto._onBeforeSerialize = function _onBeforeSerialize() { + this.eulerAngles; + }; + _proto._onPostActivated = function _onPostActivated(active) { + if (active) { + this._eventProcessor.setEnabled(true); + this.invalidateChildren(TransformBit.TRS); + if (this._uiProps && this._uiProps.uiComp) { + this._uiProps.uiComp.setNodeDirty(); + this._uiProps.uiComp.setTextureDirty(); + this._uiProps.uiComp.markForUpdateRenderData(); + } + } else { + this._eventProcessor.setEnabled(false); + } + }; + _proto.translate = function translate(trans, ns) { + var space = ns || NodeSpace.LOCAL; + if (space === NodeSpace.LOCAL) { + Vec3.transformQuat(v3_a, trans, this._lrot); + this._lpos.x += v3_a.x; + this._lpos.y += v3_a.y; + this._lpos.z += v3_a.z; + } else if (space === NodeSpace.WORLD) { + if (this._parent) { + Quat.invert(q_a, this._parent.worldRotation); + Vec3.transformQuat(v3_a, trans, q_a); + var _scale = this.worldScale; + this._lpos.x += v3_a.x / _scale.x; + this._lpos.y += v3_a.y / _scale.y; + this._lpos.z += v3_a.z / _scale.z; + } else { + this._lpos.x += trans.x; + this._lpos.y += trans.y; + this._lpos.z += trans.z; + } + } + this.invalidateChildren(TransformBit.POSITION); + if (this._eventMask & TRANSFORM_ON) { + this.emit(NodeEventType.TRANSFORM_CHANGED, TransformBit.POSITION); + } + }; + _proto.rotate = function rotate(rot, ns) { + var space = ns || NodeSpace.LOCAL; + Quat.normalize(q_a, rot); + if (space === NodeSpace.LOCAL) { + Quat.multiply(this._lrot, this._lrot, q_a); + } else if (space === NodeSpace.WORLD) { + var worldRot = this.worldRotation; + Quat.multiply(q_b, q_a, worldRot); + Quat.invert(q_a, worldRot); + Quat.multiply(q_b, q_a, q_b); + Quat.multiply(this._lrot, this._lrot, q_b); + } + this._eulerDirty = true; + this.invalidateChildren(TransformBit.ROTATION); + if (this._eventMask & TRANSFORM_ON) { + this.emit(NodeEventType.TRANSFORM_CHANGED, TransformBit.ROTATION); + } + }; + _proto.lookAt = function lookAt(pos, up) { + this.getWorldPosition(v3_a); + Vec3.subtract(v3_a, v3_a, pos); + Vec3.normalize(v3_a, v3_a); + Quat.fromViewUp(q_a, v3_a, up); + this.setWorldRotation(q_a); + }; + _proto.invalidateChildren = function invalidateChildren(dirtyBit) { + var i = 0; + var j = 0; + var l = 0; + var cur; + var children; + var hasChangedFlags = 0; + var childDirtyBit = dirtyBit | TransformBit.POSITION; + dirtyNodes[0] = this; + while (i >= 0) { + cur = dirtyNodes[i--]; + hasChangedFlags = cur.hasChangedFlags; + if (cur.isValid && (cur._transformFlags & hasChangedFlags & dirtyBit) !== dirtyBit) { + cur._transformFlags |= dirtyBit; + cur.hasChangedFlags = hasChangedFlags | dirtyBit; + children = cur._children; + l = children.length; + for (j = 0; j < l; j++) { + dirtyNodes[++i] = children[j]; + } + } + dirtyBit = childDirtyBit; + } + }; + _proto.updateWorldTransform = function updateWorldTransform() { + if (!this._transformFlags) { + return; + } + var cur = this; + var i = 0; + while (cur && cur._transformFlags) { + dirtyNodes[i++] = cur; + cur = cur._parent; + } + var child; + var dirtyBits = 0; + while (i) { + child = dirtyNodes[--i]; + dirtyBits |= child._transformFlags; + if (cur) { + if (dirtyBits & TransformBit.POSITION) { + Vec3.transformMat4(child._pos, child._lpos, cur._mat); + child._mat.m12 = child._pos.x; + child._mat.m13 = child._pos.y; + child._mat.m14 = child._pos.z; + } + if (dirtyBits & TransformBit.RS) { + Mat4.fromRTS(child._mat, child._lrot, child._lpos, child._lscale); + Mat4.multiply(child._mat, cur._mat, child._mat); + var rotTmp = dirtyBits & TransformBit.ROTATION ? child._rot : null; + Mat4.toRTS(child._mat, rotTmp, null, child._scale); + } + } else { + if (dirtyBits & TransformBit.POSITION) { + Vec3.copy(child._pos, child._lpos); + child._mat.m12 = child._pos.x; + child._mat.m13 = child._pos.y; + child._mat.m14 = child._pos.z; + } + if (dirtyBits & TransformBit.RS) { + if (dirtyBits & TransformBit.ROTATION) { + Quat.copy(child._rot, child._lrot); + } + if (dirtyBits & TransformBit.SCALE) { + Vec3.copy(child._scale, child._lscale); + } + Mat4.fromRTS(child._mat, child._rot, child._pos, child._scale); + } + } + child._transformFlags = TransformBit.NONE; + cur = child; + } + }; + _proto.setPosition = function setPosition(val, y, z) { + if (y === undefined && z === undefined) { + Vec3.copy(this._lpos, val); + } else if (z === undefined) { + Vec3.set(this._lpos, val, y, this._lpos.z); + } else { + Vec3.set(this._lpos, val, y, z); + } + this.invalidateChildren(TransformBit.POSITION); + if (this._eventMask & TRANSFORM_ON) { + this.emit(NodeEventType.TRANSFORM_CHANGED, TransformBit.POSITION); + } + }; + _proto.getPosition = function getPosition(out) { + if (out) { + return Vec3.set(out, this._lpos.x, this._lpos.y, this._lpos.z); + } + return Vec3.copy(new Vec3(), this._lpos); + }; + _proto.setRotation = function setRotation(val, y, z, w) { + if (y === undefined || z === undefined || w === undefined) { + Quat.copy(this._lrot, val); + } else { + Quat.set(this._lrot, val, y, z, w); + } + this._eulerDirty = true; + this.invalidateChildren(TransformBit.ROTATION); + if (this._eventMask & TRANSFORM_ON) { + this.emit(NodeEventType.TRANSFORM_CHANGED, TransformBit.ROTATION); + } + }; + _proto.setRotationFromEuler = function setRotationFromEuler(val, y, zOpt) { + var z = zOpt === undefined ? this._euler.z : zOpt; + if (y === undefined) { + Vec3.copy(this._euler, val); + Quat.fromEuler(this._lrot, val.x, val.y, val.z); + } else { + Vec3.set(this._euler, val, y, z); + Quat.fromEuler(this._lrot, val, y, z); + } + this._eulerDirty = false; + this.invalidateChildren(TransformBit.ROTATION); + if (this._eventMask & TRANSFORM_ON) { + this.emit(NodeEventType.TRANSFORM_CHANGED, TransformBit.ROTATION); + } + }; + _proto.getRotation = function getRotation(out) { + if (out) { + return Quat.set(out, this._lrot.x, this._lrot.y, this._lrot.z, this._lrot.w); + } + return Quat.copy(new Quat(), this._lrot); + }; + _proto.setScale = function setScale(val, y, z) { + if (y === undefined && z === undefined) { + Vec3.copy(this._lscale, val); + } else if (z === undefined) { + Vec3.set(this._lscale, val, y, this._lscale.z); + } else { + Vec3.set(this._lscale, val, y, z); + } + this.invalidateChildren(TransformBit.SCALE); + if (this._eventMask & TRANSFORM_ON) { + this.emit(NodeEventType.TRANSFORM_CHANGED, TransformBit.SCALE); + } + }; + _proto.getScale = function getScale(out) { + if (out) { + return Vec3.set(out, this._lscale.x, this._lscale.y, this._lscale.z); + } + return Vec3.copy(new Vec3(), this._lscale); + }; + _proto.inverseTransformPoint = function inverseTransformPoint(out, p) { + Vec3.copy(out, p); + var cur = this; + var i = 0; + while (cur._parent) { + dirtyNodes[i++] = cur; + cur = cur._parent; + } + while (i >= 0) { + Vec3.transformInverseRTS(out, out, cur._lrot, cur._lpos, cur._lscale); + cur = dirtyNodes[--i]; + } + return out; + }; + _proto.setWorldPosition = function setWorldPosition(val, y, z) { + if (y === undefined || z === undefined) { + Vec3.copy(this._pos, val); + } else { + Vec3.set(this._pos, val, y, z); + } + var parent = this._parent; + var local = this._lpos; + if (parent) { + parent.updateWorldTransform(); + Vec3.transformMat4(local, this._pos, Mat4.invert(m4_1$3, parent._mat)); + } else { + Vec3.copy(local, this._pos); + } + this.invalidateChildren(TransformBit.POSITION); + if (this._eventMask & TRANSFORM_ON) { + this.emit(NodeEventType.TRANSFORM_CHANGED, TransformBit.POSITION); + } + }; + _proto.getWorldPosition = function getWorldPosition(out) { + this.updateWorldTransform(); + if (out) { + return Vec3.copy(out, this._pos); + } + return Vec3.copy(new Vec3(), this._pos); + }; + _proto.setWorldRotation = function setWorldRotation(val, y, z, w) { + if (y === undefined || z === undefined || w === undefined) { + Quat.copy(this._rot, val); + } else { + Quat.set(this._rot, val, y, z, w); + } + if (this._parent) { + this._parent.updateWorldTransform(); + Quat.multiply(this._lrot, Quat.conjugate(this._lrot, this._parent._rot), this._rot); + } else { + Quat.copy(this._lrot, this._rot); + } + this._eulerDirty = true; + this.invalidateChildren(TransformBit.ROTATION); + if (this._eventMask & TRANSFORM_ON) { + this.emit(NodeEventType.TRANSFORM_CHANGED, TransformBit.ROTATION); + } + }; + _proto.setWorldRotationFromEuler = function setWorldRotationFromEuler(x, y, z) { + Quat.fromEuler(this._rot, x, y, z); + if (this._parent) { + this._parent.updateWorldTransform(); + Quat.multiply(this._lrot, Quat.conjugate(this._lrot, this._parent._rot), this._rot); + } else { + Quat.copy(this._lrot, this._rot); + } + this._eulerDirty = true; + this.invalidateChildren(TransformBit.ROTATION); + if (this._eventMask & TRANSFORM_ON) { + this.emit(NodeEventType.TRANSFORM_CHANGED, TransformBit.ROTATION); + } + }; + _proto.getWorldRotation = function getWorldRotation(out) { + this.updateWorldTransform(); + if (out) { + return Quat.copy(out, this._rot); + } + return Quat.copy(new Quat(), this._rot); + }; + _proto.setWorldScale = function setWorldScale(val, y, z) { + var parent = this._parent; + if (parent) { + this.updateWorldTransform(); + } + if (y === undefined || z === undefined) { + Vec3.copy(this._scale, val); + } else { + Vec3.set(this._scale, val, y, z); + } + if (parent) { + v3_a.x = this._scale.x / Vec3.set(v3_b, this._mat.m00, this._mat.m01, this._mat.m02).length(); + v3_a.y = this._scale.y / Vec3.set(v3_b, this._mat.m04, this._mat.m05, this._mat.m06).length(); + v3_a.z = this._scale.z / Vec3.set(v3_b, this._mat.m08, this._mat.m09, this._mat.m10).length(); + Mat4.scale(m4_1$3, this._mat, v3_a); + Mat4.multiply(m4_2, Mat4.invert(m4_2, parent._mat), m4_1$3); + Mat3.fromQuat(m3_1, Quat.conjugate(qt_1, this._lrot)); + Mat3.multiplyMat4(m3_1, m3_1, m4_2); + this._lscale.x = Vec3.set(v3_a, m3_1.m00, m3_1.m01, m3_1.m02).length(); + this._lscale.y = Vec3.set(v3_a, m3_1.m03, m3_1.m04, m3_1.m05).length(); + this._lscale.z = Vec3.set(v3_a, m3_1.m06, m3_1.m07, m3_1.m08).length(); + } else { + Vec3.copy(this._lscale, this._scale); + } + this.invalidateChildren(TransformBit.SCALE); + if (this._eventMask & TRANSFORM_ON) { + this.emit(NodeEventType.TRANSFORM_CHANGED, TransformBit.SCALE); + } + }; + _proto.getWorldScale = function getWorldScale(out) { + this.updateWorldTransform(); + if (out) { + return Vec3.copy(out, this._scale); + } + return Vec3.copy(new Vec3(), this._scale); + }; + _proto.getWorldMatrix = function getWorldMatrix(out) { + this.updateWorldTransform(); + var target = out || new Mat4(); + return Mat4.copy(target, this._mat); + }; + _proto.getWorldRS = function getWorldRS(out) { + this.updateWorldTransform(); + var target = out || new Mat4(); + Mat4.copy(target, this._mat); + target.m12 = 0; + target.m13 = 0; + target.m14 = 0; + return target; + }; + _proto.getWorldRT = function getWorldRT(out) { + this.updateWorldTransform(); + var target = out || new Mat4(); + return Mat4.fromRT(target, this._rot, this._pos); + }; + _proto.setRTS = function setRTS(rot, pos, scale) { + var dirtyBit = 0; + if (rot) { + dirtyBit |= TransformBit.ROTATION; + if (rot.w !== undefined) { + Quat.copy(this._lrot, rot); + this._eulerDirty = true; + } else { + Vec3.copy(this._euler, rot); + Quat.fromEuler(this._lrot, rot.x, rot.y, rot.z); + this._eulerDirty = false; + } + } + if (pos) { + Vec3.copy(this._lpos, pos); + dirtyBit |= TransformBit.POSITION; + } + if (scale) { + Vec3.copy(this._lscale, scale); + dirtyBit |= TransformBit.SCALE; + } + if (dirtyBit) { + this.invalidateChildren(dirtyBit); + if (this._eventMask & TRANSFORM_ON) { + this.emit(NodeEventType.TRANSFORM_CHANGED, dirtyBit); + } + } + }; + _proto.isTransformDirty = function isTransformDirty() { + return this._transformFlags !== TransformBit.NONE; + }; + _proto.pauseSystemEvents = function pauseSystemEvents(recursive) { + this._eventProcessor.setEnabled(false, recursive); + }; + _proto.resumeSystemEvents = function resumeSystemEvents(recursive) { + this._eventProcessor.setEnabled(true, recursive); + }; + Node.resetHasChangedFlags = function resetHasChangedFlags() { + globalFlagChangeVersion += 1; + }; + Node.clearNodeArray = function clearNodeArray() { + if (Node.ClearFrame < Node.ClearRound && !EDITOR) { + Node.ClearFrame++; + } else { + Node.ClearFrame = 0; + dirtyNodes.length = 0; + } + }; + _proto.getPathInHierarchy = function getPathInHierarchy() { + var result = this.name; + var curNode = this.parent; + while (curNode && !(curNode instanceof legacyCC.Scene)) { + result = curNode.name + "/" + result; + curNode = curNode.parent; + } + return result; + }; + _createClass(Node, [{ + key: "components", + get: function get() { + return this._components; + } + }, { + key: "_persistNode", + get: function get() { + return (this._objFlags & DontDestroy) > 0; + }, + set: function set(value) { + if (value) { + this._objFlags |= DontDestroy; + } else { + this._objFlags &= ~DontDestroy; + } + } + }, { + key: "name", + get: function get() { + return this._name; + }, + set: function set(value) { + this._name = value; + } + }, { + key: "uuid", + get: function get() { + return this._id; + } + }, { + key: "children", + get: function get() { + return this._children; + } + }, { + key: "active", + get: function get() { + return this._active; + }, + set: function set(isActive) { + isActive = !!isActive; + if (this._active !== isActive) { + this._active = isActive; + var parent = this._parent; + if (parent) { + var couldActiveInScene = parent._activeInHierarchy; + if (couldActiveInScene) { + legacyCC.director._nodeActivator.activateNode(this, isActive); + } + } + } + } + }, { + key: "activeInHierarchy", + get: function get() { + return this._activeInHierarchy; + } + }, { + key: "parent", + get: function get() { + return this._parent; + }, + set: function set(value) { + this.setParent(value); + } + }, { + key: "scene", + get: function get() { + return this._scene; + } + }, { + key: "eventProcessor", + get: function get() { + return this._eventProcessor; + } + }, { + key: "prefab", + get: function get() { + return this._prefab; + } + }, { + key: "id", + set: function set(v) { + this._id = v; + } + }, { + key: "siblingIndex", + get: function get() { + return this._siblingIndex; + }, + set: function set(val) { + this._siblingIndex = val; + } + }, { + key: "position", + get: function get() { + return this._lpos; + }, + set: function set(val) { + this.setPosition(val); + } + }, { + key: "worldPosition", + get: function get() { + this.updateWorldTransform(); + return this._pos; + }, + set: function set(val) { + this.setWorldPosition(val); + } + }, { + key: "rotation", + get: function get() { + return this._lrot; + }, + set: function set(val) { + this.setRotation(val); + } + }, { + key: "eulerAngles", + get: function get() { + if (this._eulerDirty) { + Quat.toEuler(this._euler, this._lrot); + this._eulerDirty = false; + } + return this._euler; + }, + set: function set(val) { + this.setRotationFromEuler(val.x, val.y, val.z); + } + }, { + key: "angle", + get: function get() { + return this._euler.z; + }, + set: function set(val) { + Vec3.set(this._euler, 0, 0, val); + Quat.fromAngleZ(this._lrot, val); + this._eulerDirty = false; + this.invalidateChildren(TransformBit.ROTATION); + if (this._eventMask & TRANSFORM_ON) { + this.emit(NodeEventType.TRANSFORM_CHANGED, TransformBit.ROTATION); + } + } + }, { + key: "worldRotation", + get: function get() { + this.updateWorldTransform(); + return this._rot; + }, + set: function set(val) { + this.setWorldRotation(val); + } + }, { + key: "scale", + get: function get() { + return this._lscale; + }, + set: function set(val) { + this.setScale(val); + } + }, { + key: "worldScale", + get: function get() { + this.updateWorldTransform(); + return this._scale; + }, + set: function set(val) { + this.setWorldScale(val); + } + }, { + key: "matrix", + set: function set(val) { + Mat4.toRTS(val, this._lrot, this._lpos, this._lscale); + this.invalidateChildren(TransformBit.TRS); + this._eulerDirty = true; + if (this._eventMask & TRANSFORM_ON) { + this.emit(NodeEventType.TRANSFORM_CHANGED, TransformBit.TRS); + } + } + }, { + key: "worldMatrix", + get: function get() { + this.updateWorldTransform(); + return this._mat; + } + }, { + key: "forward", + get: function get() { + return Vec3.transformQuat(new Vec3(), Vec3.FORWARD, this.worldRotation); + }, + set: function set(dir) { + var len = dir.length(); + Vec3.multiplyScalar(v3_a, dir, -1 / len); + Quat.fromViewUp(q_a, v3_a); + this.setWorldRotation(q_a); + } + }, { + key: "up", + get: function get() { + return Vec3.transformQuat(new Vec3(), Vec3.UP, this.worldRotation); + } + }, { + key: "right", + get: function get() { + return Vec3.transformQuat(new Vec3(), Vec3.RIGHT, this.worldRotation); + } + }, { + key: "mobility", + get: function get() { + return this._mobility; + }, + set: function set(m) { + this._mobility = m; + this.emit(NodeEventType.MOBILITY_CHANGED); + } + }, { + key: "layer", + get: function get() { + return this._layer; + }, + set: function set(l) { + this._layer = l; + if (this._uiProps && this._uiProps.uiComp) { + this._uiProps.uiComp.setNodeDirty(); + this._uiProps.uiComp.markForUpdateRenderData(); + } + this.emit(NodeEventType.LAYER_CHANGED, this._layer); + } + }, { + key: "flagChangedVersion", + get: function get() { + return this._flagChangeVersion; + } + }, { + key: "hasChangedFlags", + get: function get() { + return this._flagChangeVersion === globalFlagChangeVersion ? this._hasChangedFlags : 0; + }, + set: function set(val) { + this._flagChangeVersion = globalFlagChangeVersion; + this._hasChangedFlags = val; + } + }]); + return Node; + }(CCObject), _class3$I.idGenerator = idGenerator, _class3$I._stacks = [[]], _class3$I._stackId = 0, _class3$I.EventType = NodeEventType, _class3$I.NodeSpace = NodeSpace, _class3$I.TransformDirtyBit = TransformBit, _class3$I.TransformBit = TransformBit, _class3$I.reserveContentsForAllSyncablePrefabTag = reserveContentsForAllSyncablePrefabTag, _class3$I.ClearFrame = 0, _class3$I.ClearRound = 1000, _class3$I), (_applyDecoratedDescriptor(_class2$1T.prototype, "_persistNode", [property$1], Object.getOwnPropertyDescriptor(_class2$1T.prototype, "_persistNode"), _class2$1T.prototype), _initializer$1E = applyDecoratedInitializer(_class2$1T.prototype, "_parent", [serializable$9], function () { + return null; + }), _initializer2$1g = applyDecoratedInitializer(_class2$1T.prototype, "_children", [serializable$9], function () { + return []; + }), _initializer3$X = applyDecoratedInitializer(_class2$1T.prototype, "_active", [serializable$9], function () { + return true; + }), _initializer4$O = applyDecoratedInitializer(_class2$1T.prototype, "_components", [serializable$9], function () { + return []; + }), _initializer5$C = applyDecoratedInitializer(_class2$1T.prototype, "_prefab", [serializable$9], function () { + return null; + }), _initializer6$w = applyDecoratedInitializer(_class2$1T.prototype, "_lpos", [serializable$9], function () { + return new Vec3(); + }), _initializer7$o = applyDecoratedInitializer(_class2$1T.prototype, "_lrot", [serializable$9], function () { + return new Quat(); + }), _initializer8$n = applyDecoratedInitializer(_class2$1T.prototype, "_lscale", [serializable$9], function () { + return new Vec3(1, 1, 1); + }), _initializer9$l = applyDecoratedInitializer(_class2$1T.prototype, "_mobility", [serializable$9], function () { + return MobilityMode.Static; + }), _initializer10$l = applyDecoratedInitializer(_class2$1T.prototype, "_layer", [serializable$9], function () { + return Layers.Enum.DEFAULT; + }), _initializer11$k = applyDecoratedInitializer(_class2$1T.prototype, "_euler", [serializable$9], function () { + return new Vec3(); + }), _applyDecoratedDescriptor(_class2$1T.prototype, "eulerAngles", [_dec2$1o], Object.getOwnPropertyDescriptor(_class2$1T.prototype, "eulerAngles"), _class2$1T.prototype), _applyDecoratedDescriptor(_class2$1T.prototype, "mobility", [_dec3$Z], Object.getOwnPropertyDescriptor(_class2$1T.prototype, "mobility"), _class2$1T.prototype)), _class2$1T)) || _class$25)); + legacyCC.Node = Node$1; + + var _dec$26, _class$24, _class2$1S, _initializer$1D, _initializer2$1f, _initializer3$W, _initializer4$N, _class3$H; + var FaceIndex; + (function (FaceIndex) { + FaceIndex[FaceIndex["right"] = 0] = "right"; + FaceIndex[FaceIndex["left"] = 1] = "left"; + FaceIndex[FaceIndex["top"] = 2] = "top"; + FaceIndex[FaceIndex["bottom"] = 3] = "bottom"; + FaceIndex[FaceIndex["front"] = 4] = "front"; + FaceIndex[FaceIndex["back"] = 5] = "back"; + })(FaceIndex || (FaceIndex = {})); + var MipmapMode; + (function (MipmapMode) { + MipmapMode[MipmapMode["NONE"] = 0] = "NONE"; + MipmapMode[MipmapMode["AUTO"] = 1] = "AUTO"; + MipmapMode[MipmapMode["BAKED_CONVOLUTION_MAP"] = 2] = "BAKED_CONVOLUTION_MAP"; + })(MipmapMode || (MipmapMode = {})); + var TextureCube = exports('dY', (_dec$26 = ccclass$t('cc.TextureCube'), _dec$26(_class$24 = (_class2$1S = (_class3$H = function (_SimpleTexture) { + _inheritsLoose(TextureCube, _SimpleTexture); + function TextureCube() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _SimpleTexture.call.apply(_SimpleTexture, [this].concat(args)) || this; + _this.isRGBE = _initializer$1D && _initializer$1D(); + _this._mipmapAtlas = _initializer2$1f && _initializer2$1f(); + _this._mipmapMode = _initializer3$W && _initializer3$W(); + _this._mipmaps = _initializer4$N && _initializer4$N(); + _this._generatedMipmaps = []; + return _this; + } + var _proto = TextureCube.prototype; + _proto._setMipmapParams = function _setMipmapParams(value) { + var _this2 = this; + this._generatedMipmaps = value; + this._setMipmapLevel(this._generatedMipmaps.length); + if (this._generatedMipmaps.length > 0) { + var imageAsset = this._generatedMipmaps[0].front; + this.reset({ + width: imageAsset.width, + height: imageAsset.height, + format: imageAsset.format, + mipmapLevel: this._generatedMipmaps.length, + baseLevel: this._baseLevel, + maxLevel: this._maxLevel + }); + this._generatedMipmaps.forEach(function (mipmap, level) { + _forEachFace(mipmap, function (face, faceIndex) { + _this2._assignImage(face, level, faceIndex); + }); + }); + } else { + this.reset({ + width: 0, + height: 0, + mipmapLevel: this._generatedMipmaps.length, + baseLevel: this._baseLevel, + maxLevel: this._maxLevel + }); + } + }; + _proto.isUsingOfflineMipmaps = function isUsingOfflineMipmaps() { + return this._mipmapMode === MipmapMode.BAKED_CONVOLUTION_MAP; + }; + TextureCube.fromTexture2DArray = function fromTexture2DArray(textures, out) { + var mipmaps = []; + var nMipmaps = textures.length / 6; + for (var i = 0; i < nMipmaps; i++) { + var x = i * 6; + mipmaps.push({ + front: textures[x + FaceIndex.front].image, + back: textures[x + FaceIndex.back].image, + left: textures[x + FaceIndex.left].image, + right: textures[x + FaceIndex.right].image, + top: textures[x + FaceIndex.top].image, + bottom: textures[x + FaceIndex.bottom].image + }); + } + out = out || new TextureCube(); + out.mipmaps = mipmaps; + return out; + }; + _proto.onLoaded = function onLoaded() { + if (this._mipmapMode === MipmapMode.BAKED_CONVOLUTION_MAP) { + this.mipmapAtlas = this._mipmapAtlas; + } else { + this.mipmaps = this._mipmaps; + } + }; + _proto.reset = function reset(info) { + this._width = info.width; + this._height = info.height; + this._setGFXFormat(info.format); + var mipLevels = info.mipmapLevel === undefined ? 1 : info.mipmapLevel; + this._setMipmapLevel(mipLevels); + var minLod = info.baseLevel === undefined ? 0 : info.baseLevel; + var maxLod = info.maxLevel === undefined ? 1000 : info.maxLevel; + this._setMipRange(minLod, maxLod); + this._tryReset(); + }; + _proto.updateMipmaps = function updateMipmaps(firstLevel, count) { + var _this3 = this; + if (firstLevel === void 0) { + firstLevel = 0; + } + if (firstLevel >= this._generatedMipmaps.length) { + return; + } + var nUpdate = Math.min(count === undefined ? this._generatedMipmaps.length : count, this._generatedMipmaps.length - firstLevel); + var _loop = function _loop() { + var level = firstLevel + i; + _forEachFace(_this3._generatedMipmaps[level], function (face, faceIndex) { + _this3._assignImage(face, level, faceIndex); + }); + }; + for (var i = 0; i < nUpdate; ++i) { + _loop(); + } + }; + _proto.destroy = function destroy() { + this._mipmaps = []; + this._generatedMipmaps = []; + this._mipmapAtlas = null; + return _SimpleTexture.prototype.destroy.call(this); + }; + _proto.releaseTexture = function releaseTexture() { + this.destroy(); + }; + _proto._serialize = function _serialize(ctxForExporting) { + return null; + }; + _proto._deserialize = function _deserialize(serializedData, handle) { + var data = serializedData; + _SimpleTexture.prototype._deserialize.call(this, data.base, handle); + this.isRGBE = data.rgbe; + this._mipmapMode = data.mipmapMode; + if (this._mipmapMode === MipmapMode.BAKED_CONVOLUTION_MAP) { + var mipmapAtlas = data.mipmapAtlas; + var mipmapLayout = data.mipmapLayout; + this._mipmapAtlas = { + atlas: {}, + layout: mipmapLayout + }; + this._mipmapAtlas.atlas = { + front: new ImageAsset(), + back: new ImageAsset(), + left: new ImageAsset(), + right: new ImageAsset(), + top: new ImageAsset(), + bottom: new ImageAsset() + }; + var imageAssetClassId = getClassId(ImageAsset); + handle.result.push(this._mipmapAtlas.atlas, "front", mipmapAtlas.front, imageAssetClassId); + handle.result.push(this._mipmapAtlas.atlas, "back", mipmapAtlas.back, imageAssetClassId); + handle.result.push(this._mipmapAtlas.atlas, "left", mipmapAtlas.left, imageAssetClassId); + handle.result.push(this._mipmapAtlas.atlas, "right", mipmapAtlas.right, imageAssetClassId); + handle.result.push(this._mipmapAtlas.atlas, "top", mipmapAtlas.top, imageAssetClassId); + handle.result.push(this._mipmapAtlas.atlas, "bottom", mipmapAtlas.bottom, imageAssetClassId); + } else { + this._mipmaps = new Array(data.mipmaps.length); + for (var i = 0; i < data.mipmaps.length; ++i) { + this._mipmaps[i] = { + front: new ImageAsset(), + back: new ImageAsset(), + left: new ImageAsset(), + right: new ImageAsset(), + top: new ImageAsset(), + bottom: new ImageAsset() + }; + var mipmap = data.mipmaps[i]; + var _imageAssetClassId = getClassId(ImageAsset); + handle.result.push(this._mipmaps[i], "front", mipmap.front, _imageAssetClassId); + handle.result.push(this._mipmaps[i], "back", mipmap.back, _imageAssetClassId); + handle.result.push(this._mipmaps[i], "left", mipmap.left, _imageAssetClassId); + handle.result.push(this._mipmaps[i], "right", mipmap.right, _imageAssetClassId); + handle.result.push(this._mipmaps[i], "top", mipmap.top, _imageAssetClassId); + handle.result.push(this._mipmaps[i], "bottom", mipmap.bottom, _imageAssetClassId); + } + } + }; + _proto._getGfxTextureCreateInfo = function _getGfxTextureCreateInfo(presumed) { + var texInfo = new TextureInfo(TextureType.CUBE); + texInfo.width = this._width; + texInfo.height = this._height; + texInfo.layerCount = 6; + Object.assign(texInfo, presumed); + return texInfo; + }; + _proto._getGfxTextureViewCreateInfo = function _getGfxTextureViewCreateInfo(presumed) { + var texViewInfo = new TextureViewInfo(); + texViewInfo.type = TextureType.CUBE; + texViewInfo.baseLayer = 0; + texViewInfo.layerCount = 6; + Object.assign(texViewInfo, presumed); + return texViewInfo; + }; + _proto._uploadAtlas = function _uploadAtlas() { + var _this4 = this; + var layout = this._mipmapAtlas.layout; + var mip0Layout = layout[0]; + this.reset({ + width: mip0Layout.width, + height: mip0Layout.height, + format: this._mipmapAtlas.atlas.front.format, + mipmapLevel: layout.length + }); + _forEachFace(this._mipmapAtlas.atlas, function (face, faceIndex) { + var tex = new Texture2D(); + tex.image = face; + tex.reset({ + width: face.width, + height: face.height, + format: face.format + }); + tex.uploadData(face.data); + for (var i = 0; i < layout.length; i++) { + var layoutInfo = layout[i]; + var size = tex.getGFXTexture().size; + var buffer = new Uint8Array(size); + var region = new BufferTextureCopy(); + region.texOffset.x = layoutInfo.left; + region.texOffset.y = layoutInfo.top; + region.texExtent.width = layoutInfo.width; + region.texExtent.height = layoutInfo.height; + _this4._getGFXDevice().copyTextureToBuffers(tex.getGFXTexture(), [buffer], [region]); + var bufferAsset = new ImageAsset({ + _data: buffer, + _compressed: face.isCompressed, + width: layoutInfo.width, + height: layoutInfo.height, + format: face.format + }); + _this4._assignImage(bufferAsset, layoutInfo.level, faceIndex); + } + }); + }; + _proto.initDefault = function initDefault(uuid) { + _SimpleTexture.prototype.initDefault.call(this, uuid); + var imageAsset = new ImageAsset(); + imageAsset.initDefault(); + this.mipmaps = [{ + front: imageAsset, + back: imageAsset, + top: imageAsset, + bottom: imageAsset, + left: imageAsset, + right: imageAsset + }]; + }; + _proto.validate = function validate() { + if (this._mipmapMode === MipmapMode.BAKED_CONVOLUTION_MAP) { + if (this.mipmapAtlas === null || this.mipmapAtlas.layout.length === 0) { + return false; + } + var atlas = this.mipmapAtlas.atlas; + return !!(atlas.top && atlas.bottom && atlas.front && atlas.back && atlas.left && atlas.right); + } else { + return this._mipmaps.length !== 0 && !this._mipmaps.find(function (x) { + return !(x.top && x.bottom && x.front && x.back && x.left && x.right); + }); + } + }; + _createClass(TextureCube, [{ + key: "mipmaps", + get: function get() { + return this._mipmaps; + }, + set: function set(value) { + this._mipmaps = value; + var cubeMaps = []; + if (value.length === 1) { + var cubeMipmap = value[0]; + var front = cubeMipmap.front.extractMipmaps(); + var back = cubeMipmap.back.extractMipmaps(); + var left = cubeMipmap.left.extractMipmaps(); + var right = cubeMipmap.right.extractMipmaps(); + var top = cubeMipmap.top.extractMipmaps(); + var bottom = cubeMipmap.bottom.extractMipmaps(); + if (front.length !== back.length || front.length !== left.length || front.length !== right.length || front.length !== top.length || front.length !== bottom.length) { + console.error('The number of mipmaps of each face is different.'); + this._setMipmapParams([]); + return; + } + var level = front.length; + for (var i = 0; i < level; ++i) { + var cubeMap = { + front: front[i], + back: back[i], + left: left[i], + right: right[i], + top: top[i], + bottom: bottom[i] + }; + cubeMaps.push(cubeMap); + } + } else if (value.length > 1) { + value.forEach(function (mipmap) { + var cubeMap = { + front: mipmap.front.extractMipmap0(), + back: mipmap.back.extractMipmap0(), + left: mipmap.left.extractMipmap0(), + right: mipmap.right.extractMipmap0(), + top: mipmap.top.extractMipmap0(), + bottom: mipmap.bottom.extractMipmap0() + }; + cubeMaps.push(cubeMap); + }); + } + this._setMipmapParams(cubeMaps); + } + }, { + key: "mipmapAtlas", + get: function get() { + return this._mipmapAtlas; + }, + set: function set(value) { + var _this5 = this; + this._mipmapAtlas = value; + if (!this._mipmapAtlas) { + this.reset({ + width: 0, + height: 0, + mipmapLevel: 0 + }); + return; + } + var imageAtlasAsset = this._mipmapAtlas.atlas.front; + if (!imageAtlasAsset.data) { + return; + } + var faceAtlas = this._mipmapAtlas.atlas; + var layout = this._mipmapAtlas.layout; + var mip0Layout = layout[0]; + var ctx = Object.assign(ccwindow.document.createElement('canvas'), { + width: imageAtlasAsset.width, + height: imageAtlasAsset.height + }).getContext('2d'); + this.reset({ + width: mip0Layout.width, + height: mip0Layout.height, + format: imageAtlasAsset.format, + mipmapLevel: layout.length + }); + var _loop2 = function _loop2() { + var layoutInfo = layout[j]; + _forEachFace(faceAtlas, function (face, faceIndex) { + ctx.clearRect(0, 0, imageAtlasAsset.width, imageAtlasAsset.height); + var drawImg = face.data; + ctx.drawImage(drawImg, 0, 0); + var rawData = ctx.getImageData(layoutInfo.left, layoutInfo.top, layoutInfo.width, layoutInfo.height); + var bufferAsset = new ImageAsset({ + _data: rawData.data, + _compressed: face.isCompressed, + width: rawData.width, + height: rawData.height, + format: face.format + }); + _this5._assignImage(bufferAsset, layoutInfo.level, faceIndex); + }); + }; + for (var j = 0; j < layout.length; j++) { + _loop2(); + } + } + }, { + key: "image", + get: function get() { + return this._mipmaps.length === 0 ? null : this._mipmaps[0]; + }, + set: function set(value) { + this.mipmaps = value ? [value] : []; + } + }]); + return TextureCube; + }(SimpleTexture), _class3$H.FaceIndex = FaceIndex, _class3$H), (_initializer$1D = applyDecoratedInitializer(_class2$1S.prototype, "isRGBE", [serializable$9], function () { + return false; + }), _initializer2$1f = applyDecoratedInitializer(_class2$1S.prototype, "_mipmapAtlas", [serializable$9], function () { + return null; + }), _initializer3$W = applyDecoratedInitializer(_class2$1S.prototype, "_mipmapMode", [serializable$9], function () { + return MipmapMode.NONE; + }), _initializer4$N = applyDecoratedInitializer(_class2$1S.prototype, "_mipmaps", [serializable$9], function () { + return []; + })), _class2$1S)) || _class$24)); + legacyCC.TextureCube = TextureCube; + function _forEachFace(mipmap, callback) { + callback(mipmap.front, FaceIndex.front); + callback(mipmap.back, FaceIndex.back); + callback(mipmap.left, FaceIndex.left); + callback(mipmap.right, FaceIndex.right); + callback(mipmap.top, FaceIndex.top); + callback(mipmap.bottom, FaceIndex.bottom); + } + + var Ambient = function () { + function Ambient() { + this._groundAlbedoHDR = new Vec4(0.2, 0.2, 0.2, 1.0); + this._skyColorHDR = new Vec4(0.2, 0.5, 0.8, 1.0); + this._skyIllumHDR = 0; + this._groundAlbedoLDR = new Vec4(0.2, 0.2, 0.2, 1.0); + this._skyColorLDR = new Vec4(0.2, 0.5, 0.8, 1.0); + this._skyIllumLDR = 0; + this._mipmapCount = 1; + this._enabled = false; + } + var _proto = Ambient.prototype; + _proto.initialize = function initialize(ambientInfo) { + this._skyColorHDR = ambientInfo.skyColorHDR; + this._groundAlbedoHDR.set(ambientInfo.groundAlbedoHDR); + this._skyIllumHDR = ambientInfo.skyIllumHDR; + this._skyColorLDR = ambientInfo.skyColorLDR; + this._groundAlbedoLDR.set(ambientInfo.groundAlbedoLDR); + this._skyIllumLDR = ambientInfo.skyIllumLDR; + }; + _createClass(Ambient, [{ + key: "enabled", + get: function get() { + return this._enabled; + }, + set: function set(val) { + this._enabled = val; + } + }, { + key: "skyColor", + get: function get() { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + return this._skyColorHDR; + } else { + return this._skyColorLDR; + } + }, + set: function set(color) { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + this._skyColorHDR.set(color); + } else { + this._skyColorLDR.set(color); + } + } + }, { + key: "skyIllum", + get: function get() { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + return this._skyIllumHDR; + } else { + return this._skyIllumLDR; + } + }, + set: function set(illum) { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + this._skyIllumHDR = illum; + } else { + this._skyIllumLDR = illum; + } + } + }, { + key: "groundAlbedo", + get: function get() { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + return this._groundAlbedoHDR; + } else { + return this._groundAlbedoLDR; + } + }, + set: function set(color) { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + this._groundAlbedoHDR.set(color); + } else { + this._groundAlbedoLDR.set(color); + } + } + }]); + return Ambient; + }(); + Ambient.SUN_ILLUM = 65000.0; + Ambient.SKY_ILLUM = 20000.0; + legacyCC.Ambient = Ambient; + + var _class$23, _class2$1R, _class3$G, _class4$g, _class5$g, _class6$4, _class7$6, _class8$5, _class10$5, _class11$5, _class12$1, _class13$5, _class14$4, _class15; + var PIPELINE_FLOW_MAIN = 'MainFlow'; + var PIPELINE_FLOW_FORWARD = 'ForwardFlow'; + var PIPELINE_FLOW_SHADOW = 'ShadowFlow'; + var PIPELINE_FLOW_SMAA = 'SMAAFlow'; + var PIPELINE_FLOW_TONEMAP = 'ToneMapFlow'; + var RenderPassStage; + (function (RenderPassStage) { + RenderPassStage[RenderPassStage["DEFAULT"] = 100] = "DEFAULT"; + RenderPassStage[RenderPassStage["UI"] = 200] = "UI"; + })(RenderPassStage || (RenderPassStage = {})); + legacyCC.RenderPassStage = RenderPassStage; + var RenderPriority; + (function (RenderPriority) { + RenderPriority[RenderPriority["MIN"] = 0] = "MIN"; + RenderPriority[RenderPriority["MAX"] = 255] = "MAX"; + RenderPriority[RenderPriority["DEFAULT"] = 128] = "DEFAULT"; + })(RenderPriority || (RenderPriority = {})); + var globalDescriptorSetLayout = { + bindings: [], + layouts: {} + }; + var localDescriptorSetLayout = { + bindings: [], + layouts: {} + }; + var PipelineGlobalBindings; + (function (PipelineGlobalBindings) { + PipelineGlobalBindings[PipelineGlobalBindings["UBO_GLOBAL"] = 0] = "UBO_GLOBAL"; + PipelineGlobalBindings[PipelineGlobalBindings["UBO_CAMERA"] = 1] = "UBO_CAMERA"; + PipelineGlobalBindings[PipelineGlobalBindings["UBO_SHADOW"] = 2] = "UBO_SHADOW"; + PipelineGlobalBindings[PipelineGlobalBindings["UBO_CSM"] = 3] = "UBO_CSM"; + PipelineGlobalBindings[PipelineGlobalBindings["SAMPLER_SHADOWMAP"] = 4] = "SAMPLER_SHADOWMAP"; + PipelineGlobalBindings[PipelineGlobalBindings["SAMPLER_ENVIRONMENT"] = 5] = "SAMPLER_ENVIRONMENT"; + PipelineGlobalBindings[PipelineGlobalBindings["SAMPLER_SPOT_SHADOW_MAP"] = 6] = "SAMPLER_SPOT_SHADOW_MAP"; + PipelineGlobalBindings[PipelineGlobalBindings["SAMPLER_DIFFUSEMAP"] = 7] = "SAMPLER_DIFFUSEMAP"; + PipelineGlobalBindings[PipelineGlobalBindings["COUNT"] = 8] = "COUNT"; + })(PipelineGlobalBindings || (PipelineGlobalBindings = {})); + var GLOBAL_UBO_COUNT = PipelineGlobalBindings.SAMPLER_SHADOWMAP; + var GLOBAL_SAMPLER_COUNT = PipelineGlobalBindings.COUNT - GLOBAL_UBO_COUNT; + var ModelLocalBindings; + (function (ModelLocalBindings) { + ModelLocalBindings[ModelLocalBindings["UBO_LOCAL"] = 0] = "UBO_LOCAL"; + ModelLocalBindings[ModelLocalBindings["UBO_FORWARD_LIGHTS"] = 1] = "UBO_FORWARD_LIGHTS"; + ModelLocalBindings[ModelLocalBindings["UBO_SKINNING_ANIMATION"] = 2] = "UBO_SKINNING_ANIMATION"; + ModelLocalBindings[ModelLocalBindings["UBO_SKINNING_TEXTURE"] = 3] = "UBO_SKINNING_TEXTURE"; + ModelLocalBindings[ModelLocalBindings["UBO_MORPH"] = 4] = "UBO_MORPH"; + ModelLocalBindings[ModelLocalBindings["UBO_UI_LOCAL"] = 5] = "UBO_UI_LOCAL"; + ModelLocalBindings[ModelLocalBindings["UBO_SH"] = 6] = "UBO_SH"; + ModelLocalBindings[ModelLocalBindings["SAMPLER_JOINTS"] = 7] = "SAMPLER_JOINTS"; + ModelLocalBindings[ModelLocalBindings["SAMPLER_MORPH_POSITION"] = 8] = "SAMPLER_MORPH_POSITION"; + ModelLocalBindings[ModelLocalBindings["SAMPLER_MORPH_NORMAL"] = 9] = "SAMPLER_MORPH_NORMAL"; + ModelLocalBindings[ModelLocalBindings["SAMPLER_MORPH_TANGENT"] = 10] = "SAMPLER_MORPH_TANGENT"; + ModelLocalBindings[ModelLocalBindings["SAMPLER_LIGHTMAP"] = 11] = "SAMPLER_LIGHTMAP"; + ModelLocalBindings[ModelLocalBindings["SAMPLER_SPRITE"] = 12] = "SAMPLER_SPRITE"; + ModelLocalBindings[ModelLocalBindings["SAMPLER_REFLECTION"] = 13] = "SAMPLER_REFLECTION"; + ModelLocalBindings[ModelLocalBindings["STORAGE_REFLECTION"] = 14] = "STORAGE_REFLECTION"; + ModelLocalBindings[ModelLocalBindings["SAMPLER_REFLECTION_PROBE_CUBE"] = 15] = "SAMPLER_REFLECTION_PROBE_CUBE"; + ModelLocalBindings[ModelLocalBindings["SAMPLER_REFLECTION_PROBE_PLANAR"] = 16] = "SAMPLER_REFLECTION_PROBE_PLANAR"; + ModelLocalBindings[ModelLocalBindings["SAMPLER_REFLECTION_PROBE_DATA_MAP"] = 17] = "SAMPLER_REFLECTION_PROBE_DATA_MAP"; + ModelLocalBindings[ModelLocalBindings["SAMPLER_REFLECTION_PROBE_BLEND_CUBE"] = 18] = "SAMPLER_REFLECTION_PROBE_BLEND_CUBE"; + ModelLocalBindings[ModelLocalBindings["COUNT"] = 19] = "COUNT"; + })(ModelLocalBindings || (ModelLocalBindings = {})); + var LOCAL_UBO_COUNT = ModelLocalBindings.SAMPLER_JOINTS; + var LOCAL_SAMPLER_COUNT = ModelLocalBindings.STORAGE_REFLECTION - LOCAL_UBO_COUNT; + var LOCAL_STORAGE_IMAGE_COUNT = ModelLocalBindings.COUNT - LOCAL_UBO_COUNT - LOCAL_SAMPLER_COUNT; + var SetIndex; + (function (SetIndex) { + SetIndex[SetIndex["GLOBAL"] = 0] = "GLOBAL"; + SetIndex[SetIndex["MATERIAL"] = 1] = "MATERIAL"; + SetIndex[SetIndex["LOCAL"] = 2] = "LOCAL"; + SetIndex[SetIndex["COUNT"] = 3] = "COUNT"; + })(SetIndex || (SetIndex = {})); + var bindingMappingInfo = new BindingMappingInfo([GLOBAL_UBO_COUNT, 0, LOCAL_UBO_COUNT, 0], [GLOBAL_SAMPLER_COUNT, 0, LOCAL_SAMPLER_COUNT, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, LOCAL_STORAGE_IMAGE_COUNT, 0], [0, 0, 0, 0], [0, 2, 1, 3]); + var UBOGlobal = function UBOGlobal() {}; + _class$23 = UBOGlobal; + UBOGlobal.TIME_OFFSET = 0; + UBOGlobal.SCREEN_SIZE_OFFSET = _class$23.TIME_OFFSET + 4; + UBOGlobal.NATIVE_SIZE_OFFSET = _class$23.SCREEN_SIZE_OFFSET + 4; + UBOGlobal.PROBE_INFO_OFFSET = _class$23.NATIVE_SIZE_OFFSET + 4; + UBOGlobal.DEBUG_VIEW_MODE_OFFSET = _class$23.PROBE_INFO_OFFSET + 4; + UBOGlobal.COUNT = _class$23.DEBUG_VIEW_MODE_OFFSET + 4; + UBOGlobal.SIZE = _class$23.COUNT * 4; + UBOGlobal.NAME = 'CCGlobal'; + UBOGlobal.BINDING = PipelineGlobalBindings.UBO_GLOBAL; + UBOGlobal.DESCRIPTOR = new DescriptorSetLayoutBinding(_class$23.BINDING, DescriptorType.UNIFORM_BUFFER, 1, ShaderStageFlagBit.ALL); + UBOGlobal.LAYOUT = new UniformBlock(SetIndex.GLOBAL, _class$23.BINDING, _class$23.NAME, [new Uniform('cc_time', Type$1.FLOAT4, 1), new Uniform('cc_screenSize', Type$1.FLOAT4, 1), new Uniform('cc_nativeSize', Type$1.FLOAT4, 1), new Uniform('cc_probeInfo', Type$1.FLOAT4, 1), new Uniform('cc_debug_view_mode', Type$1.FLOAT4, 1)], 1); + globalDescriptorSetLayout.layouts[UBOGlobal.NAME] = UBOGlobal.LAYOUT; + globalDescriptorSetLayout.bindings[UBOGlobal.BINDING] = UBOGlobal.DESCRIPTOR; + var UBOCamera = function UBOCamera() {}; + _class2$1R = UBOCamera; + UBOCamera.MAT_VIEW_OFFSET = 0; + UBOCamera.MAT_VIEW_INV_OFFSET = _class2$1R.MAT_VIEW_OFFSET + 16; + UBOCamera.MAT_PROJ_OFFSET = _class2$1R.MAT_VIEW_INV_OFFSET + 16; + UBOCamera.MAT_PROJ_INV_OFFSET = _class2$1R.MAT_PROJ_OFFSET + 16; + UBOCamera.MAT_VIEW_PROJ_OFFSET = _class2$1R.MAT_PROJ_INV_OFFSET + 16; + UBOCamera.MAT_VIEW_PROJ_INV_OFFSET = _class2$1R.MAT_VIEW_PROJ_OFFSET + 16; + UBOCamera.CAMERA_POS_OFFSET = _class2$1R.MAT_VIEW_PROJ_INV_OFFSET + 16; + UBOCamera.SURFACE_TRANSFORM_OFFSET = _class2$1R.CAMERA_POS_OFFSET + 4; + UBOCamera.SCREEN_SCALE_OFFSET = _class2$1R.SURFACE_TRANSFORM_OFFSET + 4; + UBOCamera.EXPOSURE_OFFSET = _class2$1R.SCREEN_SCALE_OFFSET + 4; + UBOCamera.MAIN_LIT_DIR_OFFSET = _class2$1R.EXPOSURE_OFFSET + 4; + UBOCamera.MAIN_LIT_COLOR_OFFSET = _class2$1R.MAIN_LIT_DIR_OFFSET + 4; + UBOCamera.AMBIENT_SKY_OFFSET = _class2$1R.MAIN_LIT_COLOR_OFFSET + 4; + UBOCamera.AMBIENT_GROUND_OFFSET = _class2$1R.AMBIENT_SKY_OFFSET + 4; + UBOCamera.GLOBAL_FOG_COLOR_OFFSET = _class2$1R.AMBIENT_GROUND_OFFSET + 4; + UBOCamera.GLOBAL_FOG_BASE_OFFSET = _class2$1R.GLOBAL_FOG_COLOR_OFFSET + 4; + UBOCamera.GLOBAL_FOG_ADD_OFFSET = _class2$1R.GLOBAL_FOG_BASE_OFFSET + 4; + UBOCamera.NEAR_FAR_OFFSET = _class2$1R.GLOBAL_FOG_ADD_OFFSET + 4; + UBOCamera.VIEW_PORT_OFFSET = _class2$1R.NEAR_FAR_OFFSET + 4; + UBOCamera.COUNT = _class2$1R.VIEW_PORT_OFFSET + 4; + UBOCamera.SIZE = _class2$1R.COUNT * 4; + UBOCamera.NAME = 'CCCamera'; + UBOCamera.BINDING = PipelineGlobalBindings.UBO_CAMERA; + UBOCamera.DESCRIPTOR = new DescriptorSetLayoutBinding(_class2$1R.BINDING, DescriptorType.UNIFORM_BUFFER, 1, ShaderStageFlagBit.ALL); + UBOCamera.LAYOUT = new UniformBlock(SetIndex.GLOBAL, _class2$1R.BINDING, _class2$1R.NAME, [new Uniform('cc_matView', Type$1.MAT4, 1), new Uniform('cc_matViewInv', Type$1.MAT4, 1), new Uniform('cc_matProj', Type$1.MAT4, 1), new Uniform('cc_matProjInv', Type$1.MAT4, 1), new Uniform('cc_matViewProj', Type$1.MAT4, 1), new Uniform('cc_matViewProjInv', Type$1.MAT4, 1), new Uniform('cc_cameraPos', Type$1.FLOAT4, 1), new Uniform('cc_surfaceTransform', Type$1.FLOAT4, 1), new Uniform('cc_screenScale', Type$1.FLOAT4, 1), new Uniform('cc_exposure', Type$1.FLOAT4, 1), new Uniform('cc_mainLitDir', Type$1.FLOAT4, 1), new Uniform('cc_mainLitColor', Type$1.FLOAT4, 1), new Uniform('cc_ambientSky', Type$1.FLOAT4, 1), new Uniform('cc_ambientGround', Type$1.FLOAT4, 1), new Uniform('cc_fogColor', Type$1.FLOAT4, 1), new Uniform('cc_fogBase', Type$1.FLOAT4, 1), new Uniform('cc_fogAdd', Type$1.FLOAT4, 1), new Uniform('cc_nearFar', Type$1.FLOAT4, 1), new Uniform('cc_viewPort', Type$1.FLOAT4, 1)], 1); + globalDescriptorSetLayout.layouts[UBOCamera.NAME] = UBOCamera.LAYOUT; + globalDescriptorSetLayout.bindings[UBOCamera.BINDING] = UBOCamera.DESCRIPTOR; + var UBOShadow = function UBOShadow() {}; + _class3$G = UBOShadow; + UBOShadow.MAT_LIGHT_VIEW_OFFSET = 0; + UBOShadow.MAT_LIGHT_VIEW_PROJ_OFFSET = _class3$G.MAT_LIGHT_VIEW_OFFSET + 16; + UBOShadow.SHADOW_INV_PROJ_DEPTH_INFO_OFFSET = _class3$G.MAT_LIGHT_VIEW_PROJ_OFFSET + 16; + UBOShadow.SHADOW_PROJ_DEPTH_INFO_OFFSET = _class3$G.SHADOW_INV_PROJ_DEPTH_INFO_OFFSET + 4; + UBOShadow.SHADOW_PROJ_INFO_OFFSET = _class3$G.SHADOW_PROJ_DEPTH_INFO_OFFSET + 4; + UBOShadow.SHADOW_NEAR_FAR_LINEAR_SATURATION_INFO_OFFSET = _class3$G.SHADOW_PROJ_INFO_OFFSET + 4; + UBOShadow.SHADOW_WIDTH_HEIGHT_PCF_BIAS_INFO_OFFSET = _class3$G.SHADOW_NEAR_FAR_LINEAR_SATURATION_INFO_OFFSET + 4; + UBOShadow.SHADOW_LIGHT_PACKING_NBIAS_NULL_INFO_OFFSET = _class3$G.SHADOW_WIDTH_HEIGHT_PCF_BIAS_INFO_OFFSET + 4; + UBOShadow.SHADOW_COLOR_OFFSET = _class3$G.SHADOW_LIGHT_PACKING_NBIAS_NULL_INFO_OFFSET + 4; + UBOShadow.PLANAR_NORMAL_DISTANCE_INFO_OFFSET = _class3$G.SHADOW_COLOR_OFFSET + 4; + UBOShadow.COUNT = _class3$G.PLANAR_NORMAL_DISTANCE_INFO_OFFSET + 4; + UBOShadow.SIZE = _class3$G.COUNT * 4; + UBOShadow.NAME = 'CCShadow'; + UBOShadow.BINDING = PipelineGlobalBindings.UBO_SHADOW; + UBOShadow.DESCRIPTOR = new DescriptorSetLayoutBinding(_class3$G.BINDING, DescriptorType.UNIFORM_BUFFER, 1, ShaderStageFlagBit.ALL); + UBOShadow.LAYOUT = new UniformBlock(SetIndex.GLOBAL, _class3$G.BINDING, _class3$G.NAME, [new Uniform('cc_matLightView', Type$1.MAT4, 1), new Uniform('cc_matLightViewProj', Type$1.MAT4, 1), new Uniform('cc_shadowInvProjDepthInfo', Type$1.FLOAT4, 1), new Uniform('cc_shadowProjDepthInfo', Type$1.FLOAT4, 1), new Uniform('cc_shadowProjInfo', Type$1.FLOAT4, 1), new Uniform('cc_shadowNFLSInfo', Type$1.FLOAT4, 1), new Uniform('cc_shadowWHPBInfo', Type$1.FLOAT4, 1), new Uniform('cc_shadowLPNNInfo', Type$1.FLOAT4, 1), new Uniform('cc_shadowColor', Type$1.FLOAT4, 1), new Uniform('cc_planarNDInfo', Type$1.FLOAT4, 1)], 1); + globalDescriptorSetLayout.layouts[UBOShadow.NAME] = UBOShadow.LAYOUT; + globalDescriptorSetLayout.bindings[UBOShadow.BINDING] = UBOShadow.DESCRIPTOR; + var UBOCSM = function UBOCSM() {}; + _class4$g = UBOCSM; + UBOCSM.CSM_LEVEL_COUNT = 4; + UBOCSM.CSM_VIEW_DIR_0_OFFSET = 0; + UBOCSM.CSM_VIEW_DIR_1_OFFSET = _class4$g.CSM_VIEW_DIR_0_OFFSET + 4 * _class4$g.CSM_LEVEL_COUNT; + UBOCSM.CSM_VIEW_DIR_2_OFFSET = _class4$g.CSM_VIEW_DIR_1_OFFSET + 4 * _class4$g.CSM_LEVEL_COUNT; + UBOCSM.CSM_ATLAS_OFFSET = _class4$g.CSM_VIEW_DIR_2_OFFSET + 4 * _class4$g.CSM_LEVEL_COUNT; + UBOCSM.MAT_CSM_VIEW_PROJ_OFFSET = _class4$g.CSM_ATLAS_OFFSET + 4 * _class4$g.CSM_LEVEL_COUNT; + UBOCSM.CSM_PROJ_DEPTH_INFO_OFFSET = _class4$g.MAT_CSM_VIEW_PROJ_OFFSET + 16 * _class4$g.CSM_LEVEL_COUNT; + UBOCSM.CSM_PROJ_INFO_OFFSET = _class4$g.CSM_PROJ_DEPTH_INFO_OFFSET + 4 * _class4$g.CSM_LEVEL_COUNT; + UBOCSM.CSM_SPLITS_INFO_OFFSET = _class4$g.CSM_PROJ_INFO_OFFSET + 4 * _class4$g.CSM_LEVEL_COUNT; + UBOCSM.COUNT = _class4$g.CSM_SPLITS_INFO_OFFSET + 4; + UBOCSM.SIZE = _class4$g.COUNT * 4; + UBOCSM.NAME = 'CCCSM'; + UBOCSM.BINDING = PipelineGlobalBindings.UBO_CSM; + UBOCSM.DESCRIPTOR = new DescriptorSetLayoutBinding(_class4$g.BINDING, DescriptorType.UNIFORM_BUFFER, 1, ShaderStageFlagBit.FRAGMENT); + UBOCSM.LAYOUT = new UniformBlock(SetIndex.GLOBAL, _class4$g.BINDING, _class4$g.NAME, [new Uniform('cc_csmViewDir0', Type$1.FLOAT4, _class4$g.CSM_LEVEL_COUNT), new Uniform('cc_csmViewDir1', Type$1.FLOAT4, _class4$g.CSM_LEVEL_COUNT), new Uniform('cc_csmViewDir2', Type$1.FLOAT4, _class4$g.CSM_LEVEL_COUNT), new Uniform('cc_csmAtlas', Type$1.FLOAT4, _class4$g.CSM_LEVEL_COUNT), new Uniform('cc_matCSMViewProj', Type$1.MAT4, _class4$g.CSM_LEVEL_COUNT), new Uniform('cc_csmProjDepthInfo', Type$1.FLOAT4, _class4$g.CSM_LEVEL_COUNT), new Uniform('cc_csmProjInfo', Type$1.FLOAT4, _class4$g.CSM_LEVEL_COUNT), new Uniform('cc_csmSplitsInfo', Type$1.FLOAT4, 1)], 1); + globalDescriptorSetLayout.layouts[UBOCSM.NAME] = UBOCSM.LAYOUT; + globalDescriptorSetLayout.bindings[UBOCSM.BINDING] = UBOCSM.DESCRIPTOR; + var UNIFORM_SHADOWMAP_NAME = 'cc_shadowMap'; + var UNIFORM_SHADOWMAP_BINDING = PipelineGlobalBindings.SAMPLER_SHADOWMAP; + var UNIFORM_SHADOWMAP_DESCRIPTOR = new DescriptorSetLayoutBinding(UNIFORM_SHADOWMAP_BINDING, DescriptorType.SAMPLER_TEXTURE, 1, ShaderStageFlagBit.FRAGMENT); + var UNIFORM_SHADOWMAP_LAYOUT = new UniformSamplerTexture(SetIndex.GLOBAL, UNIFORM_SHADOWMAP_BINDING, UNIFORM_SHADOWMAP_NAME, Type$1.SAMPLER2D, 1); + globalDescriptorSetLayout.layouts[UNIFORM_SHADOWMAP_NAME] = UNIFORM_SHADOWMAP_LAYOUT; + globalDescriptorSetLayout.bindings[UNIFORM_SHADOWMAP_BINDING] = UNIFORM_SHADOWMAP_DESCRIPTOR; + var UNIFORM_ENVIRONMENT_NAME = 'cc_environment'; + var UNIFORM_ENVIRONMENT_BINDING = PipelineGlobalBindings.SAMPLER_ENVIRONMENT; + var UNIFORM_ENVIRONMENT_DESCRIPTOR = new DescriptorSetLayoutBinding(UNIFORM_ENVIRONMENT_BINDING, DescriptorType.SAMPLER_TEXTURE, 1, ShaderStageFlagBit.FRAGMENT); + var UNIFORM_ENVIRONMENT_LAYOUT = new UniformSamplerTexture(SetIndex.GLOBAL, UNIFORM_ENVIRONMENT_BINDING, UNIFORM_ENVIRONMENT_NAME, Type$1.SAMPLER_CUBE, 1); + globalDescriptorSetLayout.layouts[UNIFORM_ENVIRONMENT_NAME] = UNIFORM_ENVIRONMENT_LAYOUT; + globalDescriptorSetLayout.bindings[UNIFORM_ENVIRONMENT_BINDING] = UNIFORM_ENVIRONMENT_DESCRIPTOR; + var UNIFORM_DIFFUSEMAP_NAME = 'cc_diffuseMap'; + var UNIFORM_DIFFUSEMAP_BINDING = PipelineGlobalBindings.SAMPLER_DIFFUSEMAP; + var UNIFORM_DIFFUSEMAP_DESCRIPTOR = new DescriptorSetLayoutBinding(UNIFORM_DIFFUSEMAP_BINDING, DescriptorType.SAMPLER_TEXTURE, 1, ShaderStageFlagBit.FRAGMENT); + var UNIFORM_DIFFUSEMAP_LAYOUT = new UniformSamplerTexture(SetIndex.GLOBAL, UNIFORM_DIFFUSEMAP_BINDING, UNIFORM_DIFFUSEMAP_NAME, Type$1.SAMPLER_CUBE, 1); + globalDescriptorSetLayout.layouts[UNIFORM_DIFFUSEMAP_NAME] = UNIFORM_DIFFUSEMAP_LAYOUT; + globalDescriptorSetLayout.bindings[UNIFORM_DIFFUSEMAP_BINDING] = UNIFORM_DIFFUSEMAP_DESCRIPTOR; + var UNIFORM_SPOT_SHADOW_MAP_TEXTURE_NAME = 'cc_spotShadowMap'; + var UNIFORM_SPOT_SHADOW_MAP_TEXTURE_BINDING = PipelineGlobalBindings.SAMPLER_SPOT_SHADOW_MAP; + var UNIFORM_SPOT_SHADOW_MAP_TEXTURE_DESCRIPTOR = new DescriptorSetLayoutBinding(UNIFORM_SPOT_SHADOW_MAP_TEXTURE_BINDING, DescriptorType.SAMPLER_TEXTURE, 1, ShaderStageFlagBit.FRAGMENT); + var UNIFORM_SPOT_SHADOW_MAP_TEXTURE_LAYOUT = new UniformSamplerTexture(SetIndex.GLOBAL, UNIFORM_SPOT_SHADOW_MAP_TEXTURE_BINDING, UNIFORM_SPOT_SHADOW_MAP_TEXTURE_NAME, Type$1.SAMPLER2D, 1); + globalDescriptorSetLayout.layouts[UNIFORM_SPOT_SHADOW_MAP_TEXTURE_NAME] = UNIFORM_SPOT_SHADOW_MAP_TEXTURE_LAYOUT; + globalDescriptorSetLayout.bindings[UNIFORM_SPOT_SHADOW_MAP_TEXTURE_BINDING] = UNIFORM_SPOT_SHADOW_MAP_TEXTURE_DESCRIPTOR; + var UBOLocal = function UBOLocal() {}; + _class5$g = UBOLocal; + UBOLocal.MAT_WORLD_OFFSET = 0; + UBOLocal.MAT_WORLD_IT_OFFSET = _class5$g.MAT_WORLD_OFFSET + 16; + UBOLocal.LIGHTINGMAP_UVPARAM = _class5$g.MAT_WORLD_IT_OFFSET + 16; + UBOLocal.LOCAL_SHADOW_BIAS = _class5$g.LIGHTINGMAP_UVPARAM + 4; + UBOLocal.REFLECTION_PROBE_DATA1 = _class5$g.LOCAL_SHADOW_BIAS + 4; + UBOLocal.REFLECTION_PROBE_DATA2 = _class5$g.REFLECTION_PROBE_DATA1 + 4; + UBOLocal.REFLECTION_PROBE_BLEND_DATA1 = _class5$g.REFLECTION_PROBE_DATA2 + 4; + UBOLocal.REFLECTION_PROBE_BLEND_DATA2 = _class5$g.REFLECTION_PROBE_BLEND_DATA1 + 4; + UBOLocal.COUNT = _class5$g.REFLECTION_PROBE_BLEND_DATA2 + 4; + UBOLocal.SIZE = _class5$g.COUNT * 4; + UBOLocal.NAME = 'CCLocal'; + UBOLocal.BINDING = ModelLocalBindings.UBO_LOCAL; + UBOLocal.DESCRIPTOR = new DescriptorSetLayoutBinding(_class5$g.BINDING, DescriptorType.UNIFORM_BUFFER, 1, ShaderStageFlagBit.VERTEX | ShaderStageFlagBit.COMPUTE); + UBOLocal.LAYOUT = new UniformBlock(SetIndex.LOCAL, _class5$g.BINDING, _class5$g.NAME, [new Uniform('cc_matWorld', Type$1.MAT4, 1), new Uniform('cc_matWorldIT', Type$1.MAT4, 1), new Uniform('cc_lightingMapUVParam', Type$1.FLOAT4, 1), new Uniform('cc_localShadowBias', Type$1.FLOAT4, 1), new Uniform('cc_reflectionProbeData1', Type$1.FLOAT4, 1), new Uniform('cc_reflectionProbeData2', Type$1.FLOAT4, 1), new Uniform('cc_reflectionProbeBlendData1', Type$1.FLOAT4, 1), new Uniform('cc_reflectionProbeBlendData2', Type$1.FLOAT4, 1)], 1); + localDescriptorSetLayout.layouts[UBOLocal.NAME] = UBOLocal.LAYOUT; + localDescriptorSetLayout.bindings[UBOLocal.BINDING] = UBOLocal.DESCRIPTOR; + var UBOWorldBound = function UBOWorldBound() {}; + _class6$4 = UBOWorldBound; + UBOWorldBound.WORLD_BOUND_CENTER = 0; + UBOWorldBound.WORLD_BOUND_HALF_EXTENTS = _class6$4.WORLD_BOUND_CENTER + 4; + UBOWorldBound.COUNT = _class6$4.WORLD_BOUND_HALF_EXTENTS + 4; + UBOWorldBound.SIZE = _class6$4.COUNT * 4; + UBOWorldBound.NAME = 'CCWorldBound'; + UBOWorldBound.BINDING = ModelLocalBindings.UBO_LOCAL; + UBOWorldBound.DESCRIPTOR = new DescriptorSetLayoutBinding(_class6$4.BINDING, DescriptorType.UNIFORM_BUFFER, 1, ShaderStageFlagBit.VERTEX | ShaderStageFlagBit.COMPUTE); + UBOWorldBound.LAYOUT = new UniformBlock(SetIndex.LOCAL, _class6$4.BINDING, _class6$4.NAME, [new Uniform('cc_worldBoundCenter', Type$1.FLOAT4, 1), new Uniform('cc_worldBoundHalfExtents', Type$1.FLOAT4, 1)], 1); + localDescriptorSetLayout.layouts[UBOWorldBound.NAME] = UBOWorldBound.LAYOUT; + localDescriptorSetLayout.bindings[UBOWorldBound.BINDING] = UBOWorldBound.DESCRIPTOR; + var INST_MAT_WORLD = 'a_matWorld0'; + var INST_SH = 'a_sh_linear_const_r'; + var UBOLocalBatched = function UBOLocalBatched() {}; + _class7$6 = UBOLocalBatched; + UBOLocalBatched.BATCHING_COUNT = 10; + UBOLocalBatched.MAT_WORLDS_OFFSET = 0; + UBOLocalBatched.COUNT = 16 * _class7$6.BATCHING_COUNT; + UBOLocalBatched.SIZE = _class7$6.COUNT * 4; + UBOLocalBatched.NAME = 'CCLocalBatched'; + UBOLocalBatched.BINDING = ModelLocalBindings.UBO_LOCAL; + UBOLocalBatched.DESCRIPTOR = new DescriptorSetLayoutBinding(_class7$6.BINDING, DescriptorType.UNIFORM_BUFFER, 1, ShaderStageFlagBit.VERTEX | ShaderStageFlagBit.COMPUTE); + UBOLocalBatched.LAYOUT = new UniformBlock(SetIndex.LOCAL, _class7$6.BINDING, _class7$6.NAME, [new Uniform('cc_matWorlds', Type$1.MAT4, _class7$6.BATCHING_COUNT)], 1); + localDescriptorSetLayout.layouts[UBOLocalBatched.NAME] = UBOLocalBatched.LAYOUT; + localDescriptorSetLayout.bindings[UBOLocalBatched.BINDING] = UBOLocalBatched.DESCRIPTOR; + var UBOForwardLight = function UBOForwardLight() {}; + _class8$5 = UBOForwardLight; + UBOForwardLight.LIGHTS_PER_PASS = 1; + UBOForwardLight.LIGHT_POS_OFFSET = 0; + UBOForwardLight.LIGHT_COLOR_OFFSET = _class8$5.LIGHT_POS_OFFSET + _class8$5.LIGHTS_PER_PASS * 4; + UBOForwardLight.LIGHT_SIZE_RANGE_ANGLE_OFFSET = _class8$5.LIGHT_COLOR_OFFSET + _class8$5.LIGHTS_PER_PASS * 4; + UBOForwardLight.LIGHT_DIR_OFFSET = _class8$5.LIGHT_SIZE_RANGE_ANGLE_OFFSET + _class8$5.LIGHTS_PER_PASS * 4; + UBOForwardLight.LIGHT_BOUNDING_SIZE_VS_OFFSET = _class8$5.LIGHT_DIR_OFFSET + _class8$5.LIGHTS_PER_PASS * 4; + UBOForwardLight.COUNT = _class8$5.LIGHT_BOUNDING_SIZE_VS_OFFSET + _class8$5.LIGHTS_PER_PASS * 4; + UBOForwardLight.SIZE = _class8$5.COUNT * 4; + UBOForwardLight.NAME = 'CCForwardLight'; + UBOForwardLight.BINDING = ModelLocalBindings.UBO_FORWARD_LIGHTS; + UBOForwardLight.DESCRIPTOR = new DescriptorSetLayoutBinding(_class8$5.BINDING, DescriptorType.DYNAMIC_UNIFORM_BUFFER, 1, ShaderStageFlagBit.FRAGMENT); + UBOForwardLight.LAYOUT = new UniformBlock(SetIndex.LOCAL, _class8$5.BINDING, _class8$5.NAME, [new Uniform('cc_lightPos', Type$1.FLOAT4, _class8$5.LIGHTS_PER_PASS), new Uniform('cc_lightColor', Type$1.FLOAT4, _class8$5.LIGHTS_PER_PASS), new Uniform('cc_lightSizeRangeAngle', Type$1.FLOAT4, _class8$5.LIGHTS_PER_PASS), new Uniform('cc_lightDir', Type$1.FLOAT4, _class8$5.LIGHTS_PER_PASS), new Uniform('cc_lightBoundingSizeVS', Type$1.FLOAT4, _class8$5.LIGHTS_PER_PASS)], 1); + localDescriptorSetLayout.layouts[UBOForwardLight.NAME] = UBOForwardLight.LAYOUT; + localDescriptorSetLayout.bindings[UBOForwardLight.BINDING] = UBOForwardLight.DESCRIPTOR; + var UBODeferredLight = function UBODeferredLight() {}; + UBODeferredLight.LIGHTS_PER_PASS = 10; + var JOINT_UNIFORM_CAPACITY = 30; + var UBOSkinningTexture = function UBOSkinningTexture() {}; + _class10$5 = UBOSkinningTexture; + UBOSkinningTexture.JOINTS_TEXTURE_INFO_OFFSET = 0; + UBOSkinningTexture.COUNT = _class10$5.JOINTS_TEXTURE_INFO_OFFSET + 4; + UBOSkinningTexture.SIZE = _class10$5.COUNT * 4; + UBOSkinningTexture.NAME = 'CCSkinningTexture'; + UBOSkinningTexture.BINDING = ModelLocalBindings.UBO_SKINNING_TEXTURE; + UBOSkinningTexture.DESCRIPTOR = new DescriptorSetLayoutBinding(_class10$5.BINDING, DescriptorType.UNIFORM_BUFFER, 1, ShaderStageFlagBit.VERTEX); + UBOSkinningTexture.LAYOUT = new UniformBlock(SetIndex.LOCAL, _class10$5.BINDING, _class10$5.NAME, [new Uniform('cc_jointTextureInfo', Type$1.FLOAT4, 1)], 1); + localDescriptorSetLayout.layouts[UBOSkinningTexture.NAME] = UBOSkinningTexture.LAYOUT; + localDescriptorSetLayout.bindings[UBOSkinningTexture.BINDING] = UBOSkinningTexture.DESCRIPTOR; + var UBOSkinningAnimation = function UBOSkinningAnimation() {}; + _class11$5 = UBOSkinningAnimation; + UBOSkinningAnimation.JOINTS_ANIM_INFO_OFFSET = 0; + UBOSkinningAnimation.COUNT = _class11$5.JOINTS_ANIM_INFO_OFFSET + 4; + UBOSkinningAnimation.SIZE = _class11$5.COUNT * 4; + UBOSkinningAnimation.NAME = 'CCSkinningAnimation'; + UBOSkinningAnimation.BINDING = ModelLocalBindings.UBO_SKINNING_ANIMATION; + UBOSkinningAnimation.DESCRIPTOR = new DescriptorSetLayoutBinding(_class11$5.BINDING, DescriptorType.UNIFORM_BUFFER, 1, ShaderStageFlagBit.VERTEX); + UBOSkinningAnimation.LAYOUT = new UniformBlock(SetIndex.LOCAL, _class11$5.BINDING, _class11$5.NAME, [new Uniform('cc_jointAnimInfo', Type$1.FLOAT4, 1)], 1); + localDescriptorSetLayout.layouts[UBOSkinningAnimation.NAME] = UBOSkinningAnimation.LAYOUT; + localDescriptorSetLayout.bindings[UBOSkinningAnimation.BINDING] = UBOSkinningAnimation.DESCRIPTOR; + var INST_JOINT_ANIM_INFO = 'a_jointAnimInfo'; + var UBOSkinning = function () { + function UBOSkinning() {} + UBOSkinning.initLayout = function initLayout(capacity) { + UBOSkinning._jointUniformCapacity = capacity; + UBOSkinning._count = capacity * 12; + UBOSkinning._size = UBOSkinning._count * 4; + UBOSkinning.LAYOUT.members[0].count = capacity * 3; + }; + _createClass(UBOSkinning, null, [{ + key: "JOINT_UNIFORM_CAPACITY", + get: function get() { + return UBOSkinning._jointUniformCapacity; + } + }, { + key: "COUNT", + get: function get() { + return UBOSkinning._count; + } + }, { + key: "SIZE", + get: function get() { + return UBOSkinning._size; + } + }]); + return UBOSkinning; + }(); + _class12$1 = UBOSkinning; + UBOSkinning._jointUniformCapacity = 0; + UBOSkinning._count = 0; + UBOSkinning._size = 0; + UBOSkinning.NAME = 'CCSkinning'; + UBOSkinning.BINDING = ModelLocalBindings.UBO_SKINNING_TEXTURE; + UBOSkinning.DESCRIPTOR = new DescriptorSetLayoutBinding(_class12$1.BINDING, DescriptorType.UNIFORM_BUFFER, 1, ShaderStageFlagBit.VERTEX); + UBOSkinning.LAYOUT = new UniformBlock(SetIndex.LOCAL, _class12$1.BINDING, _class12$1.NAME, [new Uniform('cc_joints', Type$1.FLOAT4, 1)], 1); + function localDescriptorSetLayout_ResizeMaxJoints(maxCount) { + UBOSkinning.initLayout(maxCount); + localDescriptorSetLayout.layouts[UBOSkinning.NAME] = UBOSkinning.LAYOUT; + localDescriptorSetLayout.bindings[UBOSkinning.BINDING] = UBOSkinning.DESCRIPTOR; + } + var UBOMorph = function UBOMorph() {}; + _class13$5 = UBOMorph; + UBOMorph.MAX_MORPH_TARGET_COUNT = 60; + UBOMorph.OFFSET_OF_WEIGHTS = 0; + UBOMorph.OFFSET_OF_DISPLACEMENT_TEXTURE_WIDTH = 4 * _class13$5.MAX_MORPH_TARGET_COUNT; + UBOMorph.OFFSET_OF_DISPLACEMENT_TEXTURE_HEIGHT = _class13$5.OFFSET_OF_DISPLACEMENT_TEXTURE_WIDTH + 4; + UBOMorph.OFFSET_OF_VERTICES_COUNT = _class13$5.OFFSET_OF_DISPLACEMENT_TEXTURE_HEIGHT + 4; + UBOMorph.COUNT_BASE_4_BYTES = 4 * Math.ceil(_class13$5.MAX_MORPH_TARGET_COUNT / 4) + 4; + UBOMorph.SIZE = _class13$5.COUNT_BASE_4_BYTES * 4; + UBOMorph.NAME = 'CCMorph'; + UBOMorph.BINDING = ModelLocalBindings.UBO_MORPH; + UBOMorph.DESCRIPTOR = new DescriptorSetLayoutBinding(_class13$5.BINDING, DescriptorType.UNIFORM_BUFFER, 1, ShaderStageFlagBit.VERTEX); + UBOMorph.LAYOUT = new UniformBlock(SetIndex.LOCAL, _class13$5.BINDING, _class13$5.NAME, [new Uniform('cc_displacementWeights', Type$1.FLOAT4, _class13$5.MAX_MORPH_TARGET_COUNT / 4), new Uniform('cc_displacementTextureInfo', Type$1.FLOAT4, 1)], 1); + localDescriptorSetLayout.layouts[UBOMorph.NAME] = UBOMorph.LAYOUT; + localDescriptorSetLayout.bindings[UBOMorph.BINDING] = UBOMorph.DESCRIPTOR; + var UBOUILocal = function UBOUILocal() {}; + _class14$4 = UBOUILocal; + UBOUILocal.NAME = 'CCUILocal'; + UBOUILocal.BINDING = ModelLocalBindings.UBO_UI_LOCAL; + UBOUILocal.DESCRIPTOR = new DescriptorSetLayoutBinding(_class14$4.BINDING, DescriptorType.DYNAMIC_UNIFORM_BUFFER, 1, ShaderStageFlagBit.VERTEX); + UBOUILocal.LAYOUT = new UniformBlock(SetIndex.LOCAL, _class14$4.BINDING, _class14$4.NAME, [new Uniform('cc_local_data', Type$1.FLOAT4, 1)], 1); + localDescriptorSetLayout.layouts[UBOUILocal.NAME] = UBOUILocal.LAYOUT; + localDescriptorSetLayout.bindings[UBOUILocal.BINDING] = UBOUILocal.DESCRIPTOR; + var UBOSH = function UBOSH() {}; + _class15 = UBOSH; + UBOSH.SH_LINEAR_CONST_R_OFFSET = 0; + UBOSH.SH_LINEAR_CONST_G_OFFSET = _class15.SH_LINEAR_CONST_R_OFFSET + 4; + UBOSH.SH_LINEAR_CONST_B_OFFSET = _class15.SH_LINEAR_CONST_G_OFFSET + 4; + UBOSH.SH_QUADRATIC_R_OFFSET = _class15.SH_LINEAR_CONST_B_OFFSET + 4; + UBOSH.SH_QUADRATIC_G_OFFSET = _class15.SH_QUADRATIC_R_OFFSET + 4; + UBOSH.SH_QUADRATIC_B_OFFSET = _class15.SH_QUADRATIC_G_OFFSET + 4; + UBOSH.SH_QUADRATIC_A_OFFSET = _class15.SH_QUADRATIC_B_OFFSET + 4; + UBOSH.COUNT = _class15.SH_QUADRATIC_A_OFFSET + 4; + UBOSH.SIZE = _class15.COUNT * 4; + UBOSH.NAME = 'CCSH'; + UBOSH.BINDING = ModelLocalBindings.UBO_SH; + UBOSH.DESCRIPTOR = new DescriptorSetLayoutBinding(_class15.BINDING, DescriptorType.UNIFORM_BUFFER, 1, ShaderStageFlagBit.FRAGMENT); + UBOSH.LAYOUT = new UniformBlock(SetIndex.LOCAL, _class15.BINDING, _class15.NAME, [new Uniform('cc_sh_linear_const_r', Type$1.FLOAT4, 1), new Uniform('cc_sh_linear_const_g', Type$1.FLOAT4, 1), new Uniform('cc_sh_linear_const_b', Type$1.FLOAT4, 1), new Uniform('cc_sh_quadratic_r', Type$1.FLOAT4, 1), new Uniform('cc_sh_quadratic_g', Type$1.FLOAT4, 1), new Uniform('cc_sh_quadratic_b', Type$1.FLOAT4, 1), new Uniform('cc_sh_quadratic_a', Type$1.FLOAT4, 1)], 1); + localDescriptorSetLayout.layouts[UBOSH.NAME] = UBOSH.LAYOUT; + localDescriptorSetLayout.bindings[UBOSH.BINDING] = UBOSH.DESCRIPTOR; + var UNIFORM_JOINT_TEXTURE_NAME = 'cc_jointTexture'; + var UNIFORM_JOINT_TEXTURE_BINDING = ModelLocalBindings.SAMPLER_JOINTS; + var UNIFORM_JOINT_TEXTURE_DESCRIPTOR = new DescriptorSetLayoutBinding(UNIFORM_JOINT_TEXTURE_BINDING, DescriptorType.SAMPLER_TEXTURE, 1, ShaderStageFlagBit.VERTEX); + var UNIFORM_JOINT_TEXTURE_LAYOUT = new UniformSamplerTexture(SetIndex.LOCAL, UNIFORM_JOINT_TEXTURE_BINDING, UNIFORM_JOINT_TEXTURE_NAME, Type$1.SAMPLER2D, 1); + localDescriptorSetLayout.layouts[UNIFORM_JOINT_TEXTURE_NAME] = UNIFORM_JOINT_TEXTURE_LAYOUT; + localDescriptorSetLayout.bindings[UNIFORM_JOINT_TEXTURE_BINDING] = UNIFORM_JOINT_TEXTURE_DESCRIPTOR; + var UNIFORM_REALTIME_JOINT_TEXTURE_NAME = 'cc_realtimeJoint'; + var UNIFORM_REALTIME_JOINT_TEXTURE_BINDING = ModelLocalBindings.SAMPLER_JOINTS; + var UNIFORM_REALTIME_JOINT_TEXTURE_DESCRIPTOR = new DescriptorSetLayoutBinding(UNIFORM_REALTIME_JOINT_TEXTURE_BINDING, DescriptorType.SAMPLER_TEXTURE, 1, ShaderStageFlagBit.VERTEX); + var UNIFORM_REALTIME_JOINT_TEXTURE_LAYOUT = new UniformSamplerTexture(SetIndex.LOCAL, UNIFORM_REALTIME_JOINT_TEXTURE_BINDING, UNIFORM_REALTIME_JOINT_TEXTURE_NAME, Type$1.SAMPLER2D, 1); + localDescriptorSetLayout.layouts[UNIFORM_REALTIME_JOINT_TEXTURE_NAME] = UNIFORM_REALTIME_JOINT_TEXTURE_LAYOUT; + localDescriptorSetLayout.bindings[UNIFORM_REALTIME_JOINT_TEXTURE_BINDING] = UNIFORM_REALTIME_JOINT_TEXTURE_DESCRIPTOR; + var UNIFORM_POSITION_MORPH_TEXTURE_NAME = 'cc_PositionDisplacements'; + var UNIFORM_POSITION_MORPH_TEXTURE_BINDING = ModelLocalBindings.SAMPLER_MORPH_POSITION; + var UNIFORM_POSITION_MORPH_TEXTURE_DESCRIPTOR = new DescriptorSetLayoutBinding(UNIFORM_POSITION_MORPH_TEXTURE_BINDING, DescriptorType.SAMPLER_TEXTURE, 1, ShaderStageFlagBit.VERTEX); + var UNIFORM_POSITION_MORPH_TEXTURE_LAYOUT = new UniformSamplerTexture(SetIndex.LOCAL, UNIFORM_POSITION_MORPH_TEXTURE_BINDING, UNIFORM_POSITION_MORPH_TEXTURE_NAME, Type$1.SAMPLER2D, 1); + localDescriptorSetLayout.layouts[UNIFORM_POSITION_MORPH_TEXTURE_NAME] = UNIFORM_POSITION_MORPH_TEXTURE_LAYOUT; + localDescriptorSetLayout.bindings[UNIFORM_POSITION_MORPH_TEXTURE_BINDING] = UNIFORM_POSITION_MORPH_TEXTURE_DESCRIPTOR; + var UNIFORM_NORMAL_MORPH_TEXTURE_NAME = 'cc_NormalDisplacements'; + var UNIFORM_NORMAL_MORPH_TEXTURE_BINDING = ModelLocalBindings.SAMPLER_MORPH_NORMAL; + var UNIFORM_NORMAL_MORPH_TEXTURE_DESCRIPTOR = new DescriptorSetLayoutBinding(UNIFORM_NORMAL_MORPH_TEXTURE_BINDING, DescriptorType.SAMPLER_TEXTURE, 1, ShaderStageFlagBit.VERTEX); + var UNIFORM_NORMAL_MORPH_TEXTURE_LAYOUT = new UniformSamplerTexture(SetIndex.LOCAL, UNIFORM_NORMAL_MORPH_TEXTURE_BINDING, UNIFORM_NORMAL_MORPH_TEXTURE_NAME, Type$1.SAMPLER2D, 1); + localDescriptorSetLayout.layouts[UNIFORM_NORMAL_MORPH_TEXTURE_NAME] = UNIFORM_NORMAL_MORPH_TEXTURE_LAYOUT; + localDescriptorSetLayout.bindings[UNIFORM_NORMAL_MORPH_TEXTURE_BINDING] = UNIFORM_NORMAL_MORPH_TEXTURE_DESCRIPTOR; + var UNIFORM_TANGENT_MORPH_TEXTURE_NAME = 'cc_TangentDisplacements'; + var UNIFORM_TANGENT_MORPH_TEXTURE_BINDING = ModelLocalBindings.SAMPLER_MORPH_TANGENT; + var UNIFORM_TANGENT_MORPH_TEXTURE_DESCRIPTOR = new DescriptorSetLayoutBinding(UNIFORM_TANGENT_MORPH_TEXTURE_BINDING, DescriptorType.SAMPLER_TEXTURE, 1, ShaderStageFlagBit.VERTEX); + var UNIFORM_TANGENT_MORPH_TEXTURE_LAYOUT = new UniformSamplerTexture(SetIndex.LOCAL, UNIFORM_TANGENT_MORPH_TEXTURE_BINDING, UNIFORM_TANGENT_MORPH_TEXTURE_NAME, Type$1.SAMPLER2D, 1); + localDescriptorSetLayout.layouts[UNIFORM_TANGENT_MORPH_TEXTURE_NAME] = UNIFORM_TANGENT_MORPH_TEXTURE_LAYOUT; + localDescriptorSetLayout.bindings[UNIFORM_TANGENT_MORPH_TEXTURE_BINDING] = UNIFORM_TANGENT_MORPH_TEXTURE_DESCRIPTOR; + var UNIFORM_LIGHTMAP_TEXTURE_NAME = 'cc_lightingMap'; + var UNIFORM_LIGHTMAP_TEXTURE_BINDING = ModelLocalBindings.SAMPLER_LIGHTMAP; + var UNIFORM_LIGHTMAP_TEXTURE_DESCRIPTOR = new DescriptorSetLayoutBinding(UNIFORM_LIGHTMAP_TEXTURE_BINDING, DescriptorType.SAMPLER_TEXTURE, 1, ShaderStageFlagBit.FRAGMENT); + var UNIFORM_LIGHTMAP_TEXTURE_LAYOUT = new UniformSamplerTexture(SetIndex.LOCAL, UNIFORM_LIGHTMAP_TEXTURE_BINDING, UNIFORM_LIGHTMAP_TEXTURE_NAME, Type$1.SAMPLER2D, 1); + localDescriptorSetLayout.layouts[UNIFORM_LIGHTMAP_TEXTURE_NAME] = UNIFORM_LIGHTMAP_TEXTURE_LAYOUT; + localDescriptorSetLayout.bindings[UNIFORM_LIGHTMAP_TEXTURE_BINDING] = UNIFORM_LIGHTMAP_TEXTURE_DESCRIPTOR; + var UNIFORM_SPRITE_TEXTURE_NAME = 'cc_spriteTexture'; + var UNIFORM_SPRITE_TEXTURE_BINDING = ModelLocalBindings.SAMPLER_SPRITE; + var UNIFORM_SPRITE_TEXTURE_DESCRIPTOR = new DescriptorSetLayoutBinding(UNIFORM_SPRITE_TEXTURE_BINDING, DescriptorType.SAMPLER_TEXTURE, 1, ShaderStageFlagBit.FRAGMENT); + var UNIFORM_SPRITE_TEXTURE_LAYOUT = new UniformSamplerTexture(SetIndex.LOCAL, UNIFORM_SPRITE_TEXTURE_BINDING, UNIFORM_SPRITE_TEXTURE_NAME, Type$1.SAMPLER2D, 1); + localDescriptorSetLayout.layouts[UNIFORM_SPRITE_TEXTURE_NAME] = UNIFORM_SPRITE_TEXTURE_LAYOUT; + localDescriptorSetLayout.bindings[UNIFORM_SPRITE_TEXTURE_BINDING] = UNIFORM_SPRITE_TEXTURE_DESCRIPTOR; + var UNIFORM_REFLECTION_TEXTURE_NAME = 'cc_reflectionTexture'; + var UNIFORM_REFLECTION_TEXTURE_BINDING = ModelLocalBindings.SAMPLER_REFLECTION; + var UNIFORM_REFLECTION_TEXTURE_DESCRIPTOR = new DescriptorSetLayoutBinding(UNIFORM_REFLECTION_TEXTURE_BINDING, DescriptorType.SAMPLER_TEXTURE, 1, ShaderStageFlagBit.FRAGMENT); + var UNIFORM_REFLECTION_TEXTURE_LAYOUT = new UniformSamplerTexture(SetIndex.LOCAL, UNIFORM_REFLECTION_TEXTURE_BINDING, UNIFORM_REFLECTION_TEXTURE_NAME, Type$1.SAMPLER2D, 1); + localDescriptorSetLayout.layouts[UNIFORM_REFLECTION_TEXTURE_NAME] = UNIFORM_REFLECTION_TEXTURE_LAYOUT; + localDescriptorSetLayout.bindings[UNIFORM_REFLECTION_TEXTURE_BINDING] = UNIFORM_REFLECTION_TEXTURE_DESCRIPTOR; + var UNIFORM_REFLECTION_STORAGE_NAME = 'cc_reflectionStorage'; + var UNIFORM_REFLECTION_STORAGE_BINDING = ModelLocalBindings.STORAGE_REFLECTION; + var UNIFORM_REFLECTION_STORAGE_DESCRIPTOR = new DescriptorSetLayoutBinding(UNIFORM_REFLECTION_STORAGE_BINDING, DescriptorType.STORAGE_IMAGE, 1, ShaderStageFlagBit.COMPUTE); + var UNIFORM_REFLECTION_STORAGE_LAYOUT = new UniformStorageImage(SetIndex.LOCAL, UNIFORM_REFLECTION_STORAGE_BINDING, UNIFORM_REFLECTION_STORAGE_NAME, Type$1.IMAGE2D, 1); + localDescriptorSetLayout.layouts[UNIFORM_REFLECTION_STORAGE_NAME] = UNIFORM_REFLECTION_STORAGE_LAYOUT; + localDescriptorSetLayout.bindings[UNIFORM_REFLECTION_STORAGE_BINDING] = UNIFORM_REFLECTION_STORAGE_DESCRIPTOR; + var UNIFORM_REFLECTION_PROBE_CUBEMAP_NAME = 'cc_reflectionProbeCubemap'; + var UNIFORM_REFLECTION_PROBE_CUBEMAP_BINDING = ModelLocalBindings.SAMPLER_REFLECTION_PROBE_CUBE; + var UNIFORM_REFLECTION_PROBE_CUBEMAP_DESCRIPTOR = new DescriptorSetLayoutBinding(UNIFORM_REFLECTION_PROBE_CUBEMAP_BINDING, DescriptorType.SAMPLER_TEXTURE, 1, ShaderStageFlagBit.FRAGMENT); + var UNIFORM_REFLECTION_PROBE_CUBEMAP_LAYOUT = new UniformSamplerTexture(SetIndex.LOCAL, UNIFORM_REFLECTION_PROBE_CUBEMAP_BINDING, UNIFORM_REFLECTION_PROBE_CUBEMAP_NAME, Type$1.SAMPLER_CUBE, 1); + localDescriptorSetLayout.layouts[UNIFORM_REFLECTION_PROBE_CUBEMAP_NAME] = UNIFORM_REFLECTION_PROBE_CUBEMAP_LAYOUT; + localDescriptorSetLayout.bindings[UNIFORM_REFLECTION_PROBE_CUBEMAP_BINDING] = UNIFORM_REFLECTION_PROBE_CUBEMAP_DESCRIPTOR; + var UNIFORM_REFLECTION_PROBE_TEXTURE_NAME = 'cc_reflectionProbePlanarMap'; + var UNIFORM_REFLECTION_PROBE_TEXTURE_BINDING = ModelLocalBindings.SAMPLER_REFLECTION_PROBE_PLANAR; + var UNIFORM_REFLECTION_PROBE_TEXTURE_DESCRIPTOR = new DescriptorSetLayoutBinding(UNIFORM_REFLECTION_PROBE_TEXTURE_BINDING, DescriptorType.SAMPLER_TEXTURE, 1, ShaderStageFlagBit.FRAGMENT); + var UNIFORM_REFLECTION_PROBE_TEXTURE_LAYOUT = new UniformSamplerTexture(SetIndex.LOCAL, UNIFORM_REFLECTION_PROBE_TEXTURE_BINDING, UNIFORM_REFLECTION_PROBE_TEXTURE_NAME, Type$1.SAMPLER2D, 1); + localDescriptorSetLayout.layouts[UNIFORM_REFLECTION_PROBE_TEXTURE_NAME] = UNIFORM_REFLECTION_PROBE_TEXTURE_LAYOUT; + localDescriptorSetLayout.bindings[UNIFORM_REFLECTION_PROBE_TEXTURE_BINDING] = UNIFORM_REFLECTION_PROBE_TEXTURE_DESCRIPTOR; + var UNIFORM_REFLECTION_PROBE_DATA_MAP_NAME = 'cc_reflectionProbeDataMap'; + var UNIFORM_REFLECTION_PROBE_DATA_MAP_BINDING = ModelLocalBindings.SAMPLER_REFLECTION_PROBE_DATA_MAP; + var UNIFORM_REFLECTION_PROBE_DATA_MAP_DESCRIPTOR = new DescriptorSetLayoutBinding(UNIFORM_REFLECTION_PROBE_DATA_MAP_BINDING, DescriptorType.SAMPLER_TEXTURE, 1, ShaderStageFlagBit.FRAGMENT); + var UNIFORM_REFLECTION_PROBE_DATA_MAP_LAYOUT = new UniformSamplerTexture(SetIndex.LOCAL, UNIFORM_REFLECTION_PROBE_DATA_MAP_BINDING, UNIFORM_REFLECTION_PROBE_DATA_MAP_NAME, Type$1.SAMPLER2D, 1); + localDescriptorSetLayout.layouts[UNIFORM_REFLECTION_PROBE_DATA_MAP_NAME] = UNIFORM_REFLECTION_PROBE_DATA_MAP_LAYOUT; + localDescriptorSetLayout.bindings[UNIFORM_REFLECTION_PROBE_DATA_MAP_BINDING] = UNIFORM_REFLECTION_PROBE_DATA_MAP_DESCRIPTOR; + var UNIFORM_REFLECTION_PROBE_BLEND_CUBEMAP_NAME = 'cc_reflectionProbeBlendCubemap'; + var UNIFORM_REFLECTION_PROBE_BLEND_CUBEMAP_BINDING = ModelLocalBindings.SAMPLER_REFLECTION_PROBE_BLEND_CUBE; + var UNIFORM_REFLECTION_PROBE_BLEND_CUBEMAP_DESCRIPTOR = new DescriptorSetLayoutBinding(UNIFORM_REFLECTION_PROBE_BLEND_CUBEMAP_BINDING, DescriptorType.SAMPLER_TEXTURE, 1, ShaderStageFlagBit.FRAGMENT); + var UNIFORM_REFLECTION_PROBE_BLEND_CUBEMAP_LAYOUT = new UniformSamplerTexture(SetIndex.LOCAL, UNIFORM_REFLECTION_PROBE_BLEND_CUBEMAP_BINDING, UNIFORM_REFLECTION_PROBE_BLEND_CUBEMAP_NAME, Type$1.SAMPLER_CUBE, 1); + localDescriptorSetLayout.layouts[UNIFORM_REFLECTION_PROBE_BLEND_CUBEMAP_NAME] = UNIFORM_REFLECTION_PROBE_BLEND_CUBEMAP_LAYOUT; + localDescriptorSetLayout.bindings[UNIFORM_REFLECTION_PROBE_BLEND_CUBEMAP_BINDING] = UNIFORM_REFLECTION_PROBE_BLEND_CUBEMAP_DESCRIPTOR; + var CAMERA_DEFAULT_MASK = Layers.makeMaskExclude([Layers.BitMask.UI_2D, Layers.BitMask.GIZMOS, Layers.BitMask.EDITOR, Layers.BitMask.SCENE_GIZMO, Layers.BitMask.PROFILER]); + var CAMERA_EDITOR_MASK = Layers.makeMaskExclude([Layers.BitMask.UI_2D, Layers.BitMask.PROFILER]); + var MODEL_ALWAYS_MASK = Layers.Enum.ALL; + function supportsR16HalfFloatTexture(device) { + return (device.getFormatFeatures(Format.R16F) & (FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.SAMPLED_TEXTURE)) === (FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.SAMPLED_TEXTURE); + } + function supportsR32FloatTexture(device) { + return (device.getFormatFeatures(Format.R32F) & (FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.SAMPLED_TEXTURE)) === (FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.SAMPLED_TEXTURE) && !(device.gfxAPI === API.WEBGL); + } + function supportsRGBA16HalfFloatTexture(device) { + return (device.getFormatFeatures(Format.RGBA16F) & (FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.SAMPLED_TEXTURE)) === (FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.SAMPLED_TEXTURE) && !(device.gfxAPI === API.WEBGL); + } + function supportsRGBA32FloatTexture(device) { + return (device.getFormatFeatures(Format.RGBA32F) & (FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.SAMPLED_TEXTURE)) === (FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.SAMPLED_TEXTURE) && !(device.gfxAPI === API.WEBGL); + } + function isEnableEffect() { + return !!(legacyCC.rendering && legacyCC.rendering.enableEffectImport); + } + + var define = /*#__PURE__*/Object.freeze({ + __proto__: null, + PIPELINE_FLOW_MAIN: PIPELINE_FLOW_MAIN, + PIPELINE_FLOW_FORWARD: PIPELINE_FLOW_FORWARD, + PIPELINE_FLOW_SHADOW: PIPELINE_FLOW_SHADOW, + PIPELINE_FLOW_SMAA: PIPELINE_FLOW_SMAA, + PIPELINE_FLOW_TONEMAP: PIPELINE_FLOW_TONEMAP, + get RenderPassStage () { return RenderPassStage; }, + get RenderPriority () { return RenderPriority; }, + globalDescriptorSetLayout: globalDescriptorSetLayout, + localDescriptorSetLayout: localDescriptorSetLayout, + get PipelineGlobalBindings () { return PipelineGlobalBindings; }, + get ModelLocalBindings () { return ModelLocalBindings; }, + get SetIndex () { return SetIndex; }, + bindingMappingInfo: bindingMappingInfo, + UBOGlobal: UBOGlobal, + UBOCamera: UBOCamera, + UBOShadow: UBOShadow, + UBOCSM: UBOCSM, + UNIFORM_SHADOWMAP_BINDING: UNIFORM_SHADOWMAP_BINDING, + UNIFORM_ENVIRONMENT_BINDING: UNIFORM_ENVIRONMENT_BINDING, + UNIFORM_DIFFUSEMAP_BINDING: UNIFORM_DIFFUSEMAP_BINDING, + UNIFORM_SPOT_SHADOW_MAP_TEXTURE_BINDING: UNIFORM_SPOT_SHADOW_MAP_TEXTURE_BINDING, + UBOLocal: UBOLocal, + UBOWorldBound: UBOWorldBound, + INST_MAT_WORLD: INST_MAT_WORLD, + INST_SH: INST_SH, + UBOLocalBatched: UBOLocalBatched, + UBOForwardLight: UBOForwardLight, + UBODeferredLight: UBODeferredLight, + JOINT_UNIFORM_CAPACITY: JOINT_UNIFORM_CAPACITY, + UBOSkinningTexture: UBOSkinningTexture, + UBOSkinningAnimation: UBOSkinningAnimation, + INST_JOINT_ANIM_INFO: INST_JOINT_ANIM_INFO, + UBOSkinning: UBOSkinning, + localDescriptorSetLayout_ResizeMaxJoints: localDescriptorSetLayout_ResizeMaxJoints, + UBOMorph: UBOMorph, + UBOUILocal: UBOUILocal, + UBOSH: UBOSH, + UNIFORM_JOINT_TEXTURE_BINDING: UNIFORM_JOINT_TEXTURE_BINDING, + UNIFORM_REALTIME_JOINT_TEXTURE_BINDING: UNIFORM_REALTIME_JOINT_TEXTURE_BINDING, + UNIFORM_POSITION_MORPH_TEXTURE_BINDING: UNIFORM_POSITION_MORPH_TEXTURE_BINDING, + UNIFORM_NORMAL_MORPH_TEXTURE_BINDING: UNIFORM_NORMAL_MORPH_TEXTURE_BINDING, + UNIFORM_TANGENT_MORPH_TEXTURE_BINDING: UNIFORM_TANGENT_MORPH_TEXTURE_BINDING, + UNIFORM_LIGHTMAP_TEXTURE_BINDING: UNIFORM_LIGHTMAP_TEXTURE_BINDING, + UNIFORM_SPRITE_TEXTURE_BINDING: UNIFORM_SPRITE_TEXTURE_BINDING, + UNIFORM_REFLECTION_TEXTURE_BINDING: UNIFORM_REFLECTION_TEXTURE_BINDING, + UNIFORM_REFLECTION_STORAGE_BINDING: UNIFORM_REFLECTION_STORAGE_BINDING, + UNIFORM_REFLECTION_PROBE_CUBEMAP_BINDING: UNIFORM_REFLECTION_PROBE_CUBEMAP_BINDING, + UNIFORM_REFLECTION_PROBE_TEXTURE_BINDING: UNIFORM_REFLECTION_PROBE_TEXTURE_BINDING, + UNIFORM_REFLECTION_PROBE_DATA_MAP_BINDING: UNIFORM_REFLECTION_PROBE_DATA_MAP_BINDING, + UNIFORM_REFLECTION_PROBE_BLEND_CUBEMAP_BINDING: UNIFORM_REFLECTION_PROBE_BLEND_CUBEMAP_BINDING, + CAMERA_DEFAULT_MASK: CAMERA_DEFAULT_MASK, + CAMERA_EDITOR_MASK: CAMERA_EDITOR_MASK, + MODEL_ALWAYS_MASK: MODEL_ALWAYS_MASK, + supportsR16HalfFloatTexture: supportsR16HalfFloatTexture, + supportsR32FloatTexture: supportsR32FloatTexture, + supportsRGBA16HalfFloatTexture: supportsRGBA16HalfFloatTexture, + supportsRGBA32FloatTexture: supportsRGBA32FloatTexture, + isEnableEffect: isEnableEffect + }); + exports('cP', define); + + var _type2reader, _type2writer, _type2validator; + var typeMask = 0xfc000000; + var bindingMask = 0x03f00000; + var countMask = 0x000ff000; + var offsetMask = 0x00000fff; + var genHandle = function genHandle(binding, type, count, offset) { + if (offset === void 0) { + offset = 0; + } + return type << 26 & typeMask | binding << 20 & bindingMask | count << 12 & countMask | offset & offsetMask; + }; + var getTypeFromHandle = function getTypeFromHandle(handle) { + return (handle & typeMask) >>> 26; + }; + var getBindingFromHandle = function getBindingFromHandle(handle) { + return (handle & bindingMask) >>> 20; + }; + var getCountFromHandle = function getCountFromHandle(handle) { + return (handle & countMask) >>> 12; + }; + var getOffsetFromHandle = function getOffsetFromHandle(handle) { + return handle & offsetMask; + }; + var customizeType = function customizeType(handle, type) { + return handle & ~typeMask | type << 26 & typeMask; + }; + var type2reader = (_type2reader = {}, _type2reader[Type$1.UNKNOWN] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return warnID(12010, idx); + }, _type2reader[Type$1.INT] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return a[idx]; + }, _type2reader[Type$1.INT2] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return Vec2.fromArray(v, a, idx); + }, _type2reader[Type$1.INT3] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return Vec3.fromArray(v, a, idx); + }, _type2reader[Type$1.INT4] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return Vec4.fromArray(v, a, idx); + }, _type2reader[Type$1.FLOAT] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return a[idx]; + }, _type2reader[Type$1.FLOAT2] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return Vec2.fromArray(v, a, idx); + }, _type2reader[Type$1.FLOAT3] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return Vec3.fromArray(v, a, idx); + }, _type2reader[Type$1.FLOAT4] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return Vec4.fromArray(v, a, idx); + }, _type2reader[Type$1.MAT3] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return Mat3.fromArray(v, a, idx); + }, _type2reader[Type$1.MAT4] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return Mat4.fromArray(v, a, idx); + }, _type2reader); + var type2writer = (_type2writer = {}, _type2writer[Type$1.UNKNOWN] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return warnID(12010, idx); + }, _type2writer[Type$1.INT] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return a[idx] = v; + }, _type2writer[Type$1.INT2] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return Vec2.toArray(a, v, idx); + }, _type2writer[Type$1.INT3] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return Vec3.toArray(a, v, idx); + }, _type2writer[Type$1.INT4] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return Vec4.toArray(a, v, idx); + }, _type2writer[Type$1.FLOAT] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return a[idx] = v; + }, _type2writer[Type$1.FLOAT2] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return Vec2.toArray(a, v, idx); + }, _type2writer[Type$1.FLOAT3] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return Vec3.toArray(a, v, idx); + }, _type2writer[Type$1.FLOAT4] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return Vec4.toArray(a, v, idx); + }, _type2writer[Type$1.MAT3] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return Mat3.toArray(a, v, idx); + }, _type2writer[Type$1.MAT4] = function (a, v, idx) { + if (idx === void 0) { + idx = 0; + } + return Mat4.toArray(a, v, idx); + }, _type2writer); + var type2validator = (_type2validator = {}, _type2validator[Type$1.INT] = function (v) { + return typeof v === 'number'; + }, _type2validator[Type$1.FLOAT] = function (v) { + return typeof v === 'number'; + }, _type2validator[Type$1.INT2] = function (v) { + return !!(v instanceof Vec2); + }, _type2validator[Type$1.FLOAT2] = function (v) { + return !!(v instanceof Vec2); + }, _type2validator[Type$1.INT3] = function (v) { + return !!(v instanceof Vec3); + }, _type2validator[Type$1.FLOAT3] = function (v) { + return !!(v instanceof Vec3); + }, _type2validator[Type$1.INT4] = function (v) { + return !!(v instanceof Vec4); + }, _type2validator[Type$1.FLOAT4] = function (v) { + return !!(v instanceof Vec4 || v instanceof Color$1 || v instanceof Quat); + }, _type2validator[Type$1.MAT3] = function (v) { + return !!(v instanceof Mat3); + }, _type2validator[Type$1.MAT4] = function (v) { + return !!(v instanceof Mat4); + }, _type2validator); + var defaultValues = [Object.freeze([0]), Object.freeze([0, 0]), Object.freeze([0, 0, 0, 0]), Object.freeze([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])]; + function getDefaultFromType(type) { + switch (type) { + case Type$1.BOOL: + case Type$1.INT: + case Type$1.UINT: + case Type$1.FLOAT: + return defaultValues[0]; + case Type$1.BOOL2: + case Type$1.INT2: + case Type$1.UINT2: + case Type$1.FLOAT2: + return defaultValues[1]; + case Type$1.BOOL4: + case Type$1.INT4: + case Type$1.UINT4: + case Type$1.FLOAT4: + return defaultValues[2]; + case Type$1.MAT4: + return defaultValues[3]; + case Type$1.SAMPLER2D: + return 'default-texture'; + case Type$1.SAMPLER_CUBE: + return 'default-cube-texture'; + case Type$1.SAMPLER2D_ARRAY: + return 'default-array-texture'; + case Type$1.SAMPLER3D: + return 'default-3d-texture'; + } + return defaultValues[0]; + } + function getStringFromType(type) { + switch (type) { + case Type$1.SAMPLER2D: + return '-texture'; + case Type$1.SAMPLER_CUBE: + return '-cube-texture'; + case Type$1.SAMPLER2D_ARRAY: + return '-array-texture'; + case Type$1.SAMPLER3D: + return '-3d-texture'; + default: + return '-unknown'; + } + } + function overrideMacros(target, source) { + var entries = Object.entries(source); + var isDifferent = false; + for (var i = 0; i < entries.length; i++) { + if (target[entries[i][0]] !== entries[i][1]) { + target[entries[i][0]] = entries[i][1]; + isDifferent = true; + } + } + return isDifferent; + } + + function mapDefine(info, def) { + switch (info.type) { + case 'boolean': + return typeof def === 'number' ? def.toString() : def ? '1' : '0'; + case 'string': + return def !== undefined ? def : info.options[0]; + case 'number': + return def !== undefined ? def.toString() : info.range[0].toString(); + default: + console.warn("unknown define type '" + info.type + "'"); + return '-1'; + } + } + function prepareDefines(defs, tDefs) { + var macros = []; + for (var i = 0; i < tDefs.length; i++) { + var tmpl = tDefs[i]; + var name = tmpl.name; + var v = defs[name]; + var value = mapDefine(tmpl, v); + var isDefault = !v || v === '0'; + macros.push({ + name: name, + value: value, + isDefault: isDefault + }); + } + return macros; + } + function getShaderInstanceName(name, macros) { + return name + macros.reduce(function (acc, cur) { + return cur.isDefault ? acc : acc + "|" + cur.name + cur.value; + }, ''); + } + function dependencyCheck(dependencies, defines) { + for (var i = 0; i < dependencies.length; i++) { + var d = dependencies[i]; + if (d[0] === '!') { + if (defines[d.slice(1)]) { + return false; + } + } else if (!defines[d]) { + return false; + } + } + return true; + } + function getActiveAttributes(tmpl, gfxAttributes, defines) { + var out = []; + var attributes = tmpl.attributes; + for (var i = 0; i < attributes.length; i++) { + if (!dependencyCheck(attributes[i].defines, defines)) { + continue; + } + out.push(gfxAttributes[i]); + } + return out; + } + function getVariantKey(programInfo, defines) { + var tmplDefs = programInfo.defines; + if (programInfo.uber) { + var _key = ''; + for (var i = 0; i < tmplDefs.length; i++) { + var tmplDef = tmplDefs[i]; + var value = defines[tmplDef.name]; + if (!value || !tmplDef._map) { + continue; + } + var mapped = tmplDef._map(value); + var offset = tmplDef._offset; + _key += "" + offset + mapped + "|"; + } + return "" + _key + programInfo.hash; + } + var key = 0; + for (var _i = 0; _i < tmplDefs.length; _i++) { + var _tmplDef = tmplDefs[_i]; + var _value = defines[_tmplDef.name]; + if (!_value || !_tmplDef._map) { + continue; + } + var _mapped = _tmplDef._map(_value); + var _offset = _tmplDef._offset; + key |= _mapped << _offset; + } + return key.toString(16) + "|" + programInfo.hash; + } + var defaultUniformCounts = new Map(); + defaultUniformCounts.set('cc_joints', UBOSkinning.LAYOUT.members[0].count); + defaultUniformCounts.set('cc_lightPos', UBOForwardLight.LIGHTS_PER_PASS); + defaultUniformCounts.set('cc_lightColor', UBOForwardLight.LIGHTS_PER_PASS); + defaultUniformCounts.set('cc_lightSizeRangeAngle', UBOForwardLight.LIGHTS_PER_PASS); + defaultUniformCounts.set('cc_lightDir', UBOForwardLight.LIGHTS_PER_PASS); + defaultUniformCounts.set('cc_lightBoundingSizeVS', UBOForwardLight.LIGHTS_PER_PASS); + function getUniformSize(prevSize, m) { + if (m.count) { + return prevSize + GetTypeSize(m.type) * m.count; + } else { + var count = defaultUniformCounts.get(m.name); + if (count !== undefined) { + return prevSize + GetTypeSize(m.type) * count; + } + console.error("uniform '" + m.name + "' must have a count"); + } + return prevSize; + } + function getSize(blockMembers) { + return blockMembers.reduce(getUniformSize, 0); + } + function genHandles(tmpl) { + var handleMap = {}; + for (var i = 0; i < tmpl.blocks.length; i++) { + var block = tmpl.blocks[i]; + var members = block.members; + var offset = 0; + for (var j = 0; j < members.length; j++) { + var uniform = members[j]; + handleMap[uniform.name] = genHandle(block.binding, uniform.type, uniform.count, offset); + offset += (GetTypeSize(uniform.type) >> 2) * uniform.count; + } + } + for (var _i2 = 0; _i2 < tmpl.samplerTextures.length; _i2++) { + var samplerTexture = tmpl.samplerTextures[_i2]; + handleMap[samplerTexture.name] = genHandle(samplerTexture.binding, samplerTexture.type, samplerTexture.count); + } + return handleMap; + } + function getBitCount(cnt) { + return Math.ceil(Math.log2(Math.max(cnt, 2))); + } + function populateMacros(tmpl) { + var offset = 0; + var _loop = function _loop() { + var def = tmpl.defines[i]; + var cnt = 1; + if (def.type === 'number') { + var range = def.range; + cnt = getBitCount(range[1] - range[0] + 1); + def._map = function (value) { + return value - range[0]; + }; + } else if (def.type === 'string') { + cnt = getBitCount(def.options.length); + def._map = function (value) { + return Math.max(0, def.options.findIndex(function (s) { + return s === value; + })); + }; + } else if (def.type === 'boolean') { + def._map = function (value) { + return value ? 1 : 0; + }; + } + def._offset = offset; + offset += cnt; + }; + for (var i = 0; i < tmpl.defines.length; i++) { + _loop(); + } + if (offset > 31) { + tmpl.uber = true; + } + tmpl.constantMacros = ''; + for (var key in tmpl.builtins.statistics) { + tmpl.constantMacros += "#define " + key + " " + tmpl.builtins.statistics[key] + "\n"; + } + } + function getCombinationDefines(combination) { + var defines = Object.keys(combination).reduce(function (out, name) { + return out.reduce(function (acc, cur) { + var choices = combination[name]; + for (var i = 0; i < choices.length; ++i) { + var _defines = _extends({}, cur); + _defines[name] = choices[i]; + acc.push(_defines); + } + return acc; + }, []); + }, [{}]); + return defines; + } + function addEffectDefaultProperties(effect) { + for (var i = 0; i < effect.techniques.length; i++) { + var tech = effect.techniques[i]; + for (var j = 0; j < tech.passes.length; j++) { + var pass = tech.passes[j]; + if (pass.propertyIndex !== undefined && pass.properties === undefined) { + pass.properties = tech.passes[pass.propertyIndex].properties; + } + } + } + } + + var _dsLayoutInfo = new DescriptorSetLayoutInfo(); + function insertBuiltinBindings(tmpl, tmplInfo, source, type, outBindings) { + var target = tmpl.builtins[type]; + var tempBlocks = []; + var _loop = function _loop() { + var b = target.blocks[i]; + var info = source.layouts[b.name]; + var binding = info && source.bindings.find(function (bd) { + return bd.binding === info.binding; + }); + if (!info || !binding || !(binding.descriptorType & DESCRIPTOR_BUFFER_TYPE)) { + console.warn("builtin UBO '" + b.name + "' not available!"); + return 1; + } + tempBlocks.push(info); + if (outBindings && !outBindings.includes(binding)) outBindings.push(binding); + }; + for (var i = 0; i < target.blocks.length; i++) { + if (_loop()) continue; + } + Array.prototype.unshift.apply(tmplInfo.shaderInfo.blocks, tempBlocks); + var tempSamplerTextures = []; + var _loop2 = function _loop2() { + var s = target.samplerTextures[_i]; + var info = source.layouts[s.name]; + var binding = info && source.bindings.find(function (bd) { + return bd.binding === info.binding; + }); + if (!info || !binding || !(binding.descriptorType & DESCRIPTOR_SAMPLER_TYPE)) { + console.warn("builtin samplerTexture '" + s.name + "' not available!"); + return 1; + } + tempSamplerTextures.push(info); + if (outBindings && !outBindings.includes(binding)) outBindings.push(binding); + }; + for (var _i = 0; _i < target.samplerTextures.length; _i++) { + if (_loop2()) continue; + } + Array.prototype.unshift.apply(tmplInfo.shaderInfo.samplerTextures, tempSamplerTextures); + if (outBindings) outBindings.sort(function (a, b) { + return a.binding - b.binding; + }); + } + var ProgramLib = function () { + function ProgramLib() { + this._templates = {}; + this._cache = {}; + this._templateInfos = {}; + } + var _proto = ProgramLib.prototype; + _proto.register = function register(effect) { + for (var i = 0; i < effect.shaders.length; i++) { + var tmpl = this.define(effect.shaders[i]); + tmpl.effectName = effect.name; + } + for (var _i2 = 0; _i2 < effect.techniques.length; _i2++) { + var tech = effect.techniques[_i2]; + for (var j = 0; j < tech.passes.length; j++) { + var pass = tech.passes[j]; + if (pass.propertyIndex !== undefined && pass.properties === undefined) { + pass.properties = tech.passes[pass.propertyIndex].properties; + } + } + } + }; + _proto.define = function define(shader) { + var curTmpl = this._templates[shader.name]; + if (curTmpl && curTmpl.hash === shader.hash) { + return curTmpl; + } + var tmpl = _extends({}, shader); + populateMacros(tmpl); + this._templates[shader.name] = tmpl; + if (!this._templateInfos[tmpl.hash]) { + var tmplInfo = {}; + tmplInfo.samplerStartBinding = tmpl.blocks.length; + tmplInfo.shaderInfo = new ShaderInfo(); + tmplInfo.blockSizes = []; + tmplInfo.bindings = []; + for (var i = 0; i < tmpl.blocks.length; i++) { + var block = tmpl.blocks[i]; + tmplInfo.blockSizes.push(getSize(block.members)); + tmplInfo.bindings.push(new DescriptorSetLayoutBinding(block.binding, DescriptorType.UNIFORM_BUFFER, 1, block.stageFlags)); + tmplInfo.shaderInfo.blocks.push(new UniformBlock(SetIndex.MATERIAL, block.binding, block.name, block.members.map(function (m) { + return new Uniform(m.name, m.type, m.count); + }), 1)); + } + for (var _i3 = 0; _i3 < tmpl.samplerTextures.length; _i3++) { + var samplerTexture = tmpl.samplerTextures[_i3]; + tmplInfo.bindings.push(new DescriptorSetLayoutBinding(samplerTexture.binding, DescriptorType.SAMPLER_TEXTURE, samplerTexture.count, samplerTexture.stageFlags)); + tmplInfo.shaderInfo.samplerTextures.push(new UniformSamplerTexture(SetIndex.MATERIAL, samplerTexture.binding, samplerTexture.name, samplerTexture.type, samplerTexture.count)); + } + for (var _i4 = 0; _i4 < tmpl.samplers.length; _i4++) { + var sampler = tmpl.samplers[_i4]; + tmplInfo.bindings.push(new DescriptorSetLayoutBinding(sampler.binding, DescriptorType.SAMPLER, sampler.count, sampler.stageFlags)); + tmplInfo.shaderInfo.samplers.push(new UniformSampler(SetIndex.MATERIAL, sampler.binding, sampler.name, sampler.count)); + } + for (var _i5 = 0; _i5 < tmpl.textures.length; _i5++) { + var texture = tmpl.textures[_i5]; + tmplInfo.bindings.push(new DescriptorSetLayoutBinding(texture.binding, DescriptorType.TEXTURE, texture.count, texture.stageFlags)); + tmplInfo.shaderInfo.textures.push(new UniformTexture(SetIndex.MATERIAL, texture.binding, texture.name, texture.type, texture.count)); + } + for (var _i6 = 0; _i6 < tmpl.buffers.length; _i6++) { + var buffer = tmpl.buffers[_i6]; + tmplInfo.bindings.push(new DescriptorSetLayoutBinding(buffer.binding, DescriptorType.STORAGE_BUFFER, 1, buffer.stageFlags)); + tmplInfo.shaderInfo.buffers.push(new UniformStorageBuffer(SetIndex.MATERIAL, buffer.binding, buffer.name, 1, buffer.memoryAccess)); + } + for (var _i7 = 0; _i7 < tmpl.images.length; _i7++) { + var image = tmpl.images[_i7]; + tmplInfo.bindings.push(new DescriptorSetLayoutBinding(image.binding, DescriptorType.STORAGE_IMAGE, image.count, image.stageFlags)); + tmplInfo.shaderInfo.images.push(new UniformStorageImage(SetIndex.MATERIAL, image.binding, image.name, image.type, image.count, image.memoryAccess)); + } + for (var _i8 = 0; _i8 < tmpl.subpassInputs.length; _i8++) { + var subpassInput = tmpl.subpassInputs[_i8]; + tmplInfo.bindings.push(new DescriptorSetLayoutBinding(subpassInput.binding, DescriptorType.INPUT_ATTACHMENT, subpassInput.count, subpassInput.stageFlags)); + tmplInfo.shaderInfo.subpassInputs.push(new UniformInputAttachment(SetIndex.MATERIAL, subpassInput.binding, subpassInput.name, subpassInput.count)); + } + tmplInfo.gfxAttributes = []; + for (var _i9 = 0; _i9 < tmpl.attributes.length; _i9++) { + var attr = tmpl.attributes[_i9]; + tmplInfo.gfxAttributes.push(new Attribute(attr.name, attr.format, attr.isNormalized, 0, attr.isInstanced, attr.location)); + } + insertBuiltinBindings(tmpl, tmplInfo, localDescriptorSetLayout, 'locals'); + tmplInfo.shaderInfo.stages.push(new ShaderStage(ShaderStageFlagBit.VERTEX, '')); + tmplInfo.shaderInfo.stages.push(new ShaderStage(ShaderStageFlagBit.FRAGMENT, '')); + tmplInfo.handleMap = genHandles(tmpl); + tmplInfo.setLayouts = []; + this._templateInfos[tmpl.hash] = tmplInfo; + } + return tmpl; + }; + _proto.getTemplate = function getTemplate(name) { + return this._templates[name]; + }; + _proto.getTemplateInfo = function getTemplateInfo(name) { + var hash = this._templates[name].hash; + return this._templateInfos[hash]; + }; + _proto.getDescriptorSetLayout = function getDescriptorSetLayout(device, name, isLocal) { + if (isLocal === void 0) { + isLocal = false; + } + var tmpl = this._templates[name]; + var tmplInfo = this._templateInfos[tmpl.hash]; + if (!tmplInfo.setLayouts.length) { + _dsLayoutInfo.bindings = tmplInfo.bindings; + tmplInfo.setLayouts[SetIndex.MATERIAL] = device.createDescriptorSetLayout(_dsLayoutInfo); + _dsLayoutInfo.bindings = localDescriptorSetLayout.bindings; + tmplInfo.setLayouts[SetIndex.LOCAL] = device.createDescriptorSetLayout(_dsLayoutInfo); + } + return tmplInfo.setLayouts[isLocal ? SetIndex.LOCAL : SetIndex.MATERIAL]; + }; + _proto.hasProgram = function hasProgram(name) { + return this._templates[name] !== undefined; + }; + _proto.getKey = function getKey(name, defines) { + var tmpl = this._templates[name]; + return getVariantKey(tmpl, defines); + }; + _proto.destroyShaderByDefines = function destroyShaderByDefines(defines) { + var _this = this; + var names = Object.keys(defines); + if (!names.length) { + return; + } + var regexes = names.map(function (cur) { + var val = defines[cur]; + if (typeof val === 'boolean') { + val = val ? '1' : '0'; + } + return new RegExp("" + cur + val); + }); + var keys = Object.keys(this._cache).filter(function (k) { + return regexes.every(function (re) { + return re.test(_this._cache[k].name); + }); + }); + for (var i = 0; i < keys.length; i++) { + var k = keys[i]; + var prog = this._cache[k]; + debug("destroyed shader " + prog.name); + prog.destroy(); + delete this._cache[k]; + } + }; + _proto.getGFXShader = function getGFXShader(device, name, defines, pipeline, key) { + Object.assign(defines, pipeline.macros); + if (!key) key = this.getKey(name, defines); + var res = this._cache[key]; + if (res) { + return res; + } + var tmpl = this._templates[name]; + var tmplInfo = this._templateInfos[tmpl.hash]; + if (!tmplInfo.pipelineLayout) { + this.getDescriptorSetLayout(device, name); + insertBuiltinBindings(tmpl, tmplInfo, globalDescriptorSetLayout, 'globals'); + tmplInfo.setLayouts[SetIndex.GLOBAL] = pipeline.descriptorSetLayout; + tmplInfo.pipelineLayout = device.createPipelineLayout(new PipelineLayoutInfo(tmplInfo.setLayouts)); + } + var macroArray = prepareDefines(defines, tmpl.defines); + var prefix = pipeline.constantMacros + tmpl.constantMacros + macroArray.reduce(function (acc, cur) { + return acc + "#define " + cur.name + " " + cur.value + "\n"; + }, ''); + var src = tmpl.glsl3; + var deviceShaderVersion = getDeviceShaderVersion(device); + if (deviceShaderVersion) { + src = tmpl[deviceShaderVersion]; + } else { + console.error('Invalid GFX API!'); + } + tmplInfo.shaderInfo.stages[0].source = prefix + src.vert; + tmplInfo.shaderInfo.stages[1].source = prefix + src.frag; + tmplInfo.shaderInfo.attributes = getActiveAttributes(tmpl, tmplInfo.gfxAttributes, defines); + tmplInfo.shaderInfo.name = getShaderInstanceName(name, macroArray); + var shaderInfo = tmplInfo.shaderInfo; + return this._cache[key] = device.createShader(shaderInfo); + }; + return ProgramLib; + }(); + function getDeviceShaderVersion(device) { + switch (device.gfxAPI) { + case API.GLES2: + case API.WEBGL: + return 'glsl1'; + case API.GLES3: + case API.WEBGL2: + return 'glsl3'; + default: + return 'glsl4'; + } + } + var programLib = new ProgramLib(); + legacyCC.programLib = programLib; + + var _dec$25, _class$22, _class2$1Q, _initializer$1C, _initializer2$1e, _initializer3$V, _initializer4$M, _class3$F; + var legacyBuiltinEffectNames = ['planar-shadow', 'skybox', 'deferred-lighting', 'bloom', 'hbao', 'copy-pass', 'post-process', 'profiler', 'splash-screen', 'unlit', 'sprite', 'particle', 'particle-gpu', 'particle-trail', 'billboard', 'terrain', 'graphics', 'clear-stencil', 'spine', 'occlusion-query', 'geometry-renderer', 'debug-renderer', 'ssss-blur', 'float-output-process']; + var EffectAsset = exports('dZ', (_dec$25 = ccclass$t('cc.EffectAsset'), _dec$25(_class$22 = (_class2$1Q = (_class3$F = function (_Asset) { + _inheritsLoose(EffectAsset, _Asset); + function EffectAsset() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Asset.call.apply(_Asset, [this].concat(args)) || this; + _this.techniques = _initializer$1C && _initializer$1C(); + _this.shaders = _initializer2$1e && _initializer2$1e(); + _this.combinations = _initializer3$V && _initializer3$V(); + _this.hideInEditor = _initializer4$M && _initializer4$M(); + return _this; + } + EffectAsset.register = function register(asset) { + EffectAsset._effects[asset.name] = asset; + EffectAsset._layoutValid = false; + }; + EffectAsset.remove = function remove(asset) { + if (typeof asset !== 'string') { + if (EffectAsset._effects[asset.name] && EffectAsset._effects[asset.name] === asset) { + delete EffectAsset._effects[asset.name]; + } + } else { + if (EffectAsset._effects[asset]) { + delete EffectAsset._effects[asset]; + return; + } + for (var n in EffectAsset._effects) { + if (EffectAsset._effects[n]._uuid === asset) { + delete EffectAsset._effects[n]; + return; + } + } + } + }; + EffectAsset.get = function get(name) { + if (EffectAsset._effects[name]) { + return EffectAsset._effects[name]; + } + for (var n in EffectAsset._effects) { + if (EffectAsset._effects[n]._uuid === name) { + return EffectAsset._effects[n]; + } + } + if (legacyBuiltinEffectNames.includes(name)) { + warnID(16101, name); + } + return null; + }; + EffectAsset.getAll = function getAll() { + return EffectAsset._effects; + }; + EffectAsset.isLayoutValid = function isLayoutValid() { + return EffectAsset._layoutValid; + }; + EffectAsset.setLayoutValid = function setLayoutValid() { + EffectAsset._layoutValid = true; + }; + var _proto = EffectAsset.prototype; + _proto.onLoaded = function onLoaded() { + if (legacyCC.rendering && legacyCC.rendering.enableEffectImport) { + addEffectDefaultProperties(this); + legacyCC.rendering.programLib.addEffect(this); + } else { + programLib.register(this); + } + EffectAsset.register(this); + { + legacyCC.game.once(legacyCC.Game.EVENT_RENDERER_INITED, this._precompile, this); + } + }; + _proto._precompile = function _precompile() { + var _this2 = this; + if (legacyCC.rendering && legacyCC.rendering.enableEffectImport) { + legacyCC.rendering.programLib.precompileEffect(deviceManager.gfxDevice, this); + return; + } + var root = legacyCC.director.root; + var _loop = function _loop() { + var shader = _this2.shaders[i]; + var combination = _this2.combinations[i]; + if (!combination) { + return 1; + } + var defines = getCombinationDefines(combination); + defines.forEach(function (defines) { + return programLib.getGFXShader(deviceManager.gfxDevice, shader.name, defines, root.pipeline); + }); + }; + for (var i = 0; i < this.shaders.length; i++) { + if (_loop()) continue; + } + }; + _proto.destroy = function destroy() { + EffectAsset.remove(this); + return _Asset.prototype.destroy.call(this); + }; + _proto.initDefault = function initDefault(uuid) { + _Asset.prototype.initDefault.call(this, uuid); + var effect = EffectAsset.get('builtin-unlit'); + this.name = 'builtin-unlit'; + this.shaders = effect.shaders; + this.combinations = effect.combinations; + this.techniques = effect.techniques; + }; + _proto.validate = function validate() { + return this.techniques.length > 0 && this.shaders.length > 0; + }; + return EffectAsset; + }(Asset), _class3$F._effects = {}, _class3$F._layoutValid = true, _class3$F), (_initializer$1C = applyDecoratedInitializer(_class2$1Q.prototype, "techniques", [serializable$9], function () { + return []; + }), _initializer2$1e = applyDecoratedInitializer(_class2$1Q.prototype, "shaders", [serializable$9], function () { + return []; + }), _initializer3$V = applyDecoratedInitializer(_class2$1Q.prototype, "combinations", [serializable$9], function () { + return []; + }), _initializer4$M = applyDecoratedInitializer(_class2$1Q.prototype, "hideInEditor", [serializable$9, editorOnly], function () { + return false; + })), _class2$1Q)) || _class$22)); + legacyCC.EffectAsset = EffectAsset; + + var isMatchByWord = function isMatchByWord(path, test) { + if (path.length > test.length) { + var nextAscii = path.charCodeAt(test.length); + return nextAscii === 47; + } + return true; + }; + var processOptions = function processOptions(options) { + var uuids = options.uuids; + var paths = options.paths; + var types = options.types; + var bundles = options.deps; + var realEntries = options.paths = Object.create(null); + if (options.debug === false) { + for (var i = 0, l = uuids.length; i < l; i++) { + uuids[i] = decodeUuid(uuids[i]); + } + for (var id in paths) { + var entry = paths[id]; + var type = entry[1]; + entry[1] = types[type]; + } + } else { + var out = Object.create(null); + for (var _i = 0, _l = uuids.length; _i < _l; _i++) { + var uuid = uuids[_i]; + uuids[_i] = out[uuid] = decodeUuid(uuid); + } + uuids = out; + } + for (var _id in paths) { + var _entry = paths[_id]; + realEntries[uuids[_id]] = _entry; + } + var scenes = options.scenes; + for (var name in scenes) { + var _uuid = scenes[name]; + scenes[name] = uuids[_uuid]; + } + var packs = options.packs; + for (var packId in packs) { + var packedIds = packs[packId]; + for (var j = 0; j < packedIds.length; ++j) { + packedIds[j] = uuids[packedIds[j]]; + } + } + var versions = options.versions; + if (versions) { + for (var folder in versions) { + var entries = versions[folder]; + for (var _i2 = 0; _i2 < entries.length; _i2 += 2) { + var _uuid2 = entries[_i2]; + entries[_i2] = uuids[_uuid2] || _uuid2; + } + } + } + var redirect = options.redirect; + if (redirect) { + for (var _i3 = 0; _i3 < redirect.length; _i3 += 2) { + redirect[_i3] = uuids[redirect[_i3]]; + redirect[_i3 + 1] = bundles[redirect[_i3 + 1]]; + } + } + var extensionMap = options.extensionMap; + if (extensionMap) { + var _loop = function _loop(ext) { + if (!Object.prototype.hasOwnProperty.call(options.extensionMap, ext)) { + return 1; + } + options.extensionMap[ext].forEach(function (uuid, index) { + options.extensionMap[ext][index] = uuids[uuid] || uuid; + }); + }; + for (var ext in options.extensionMap) { + if (_loop(ext)) continue; + } + } + }; + var Config = function () { + function Config() { + this.name = ''; + this.base = ''; + this.importBase = ''; + this.nativeBase = ''; + this.deps = null; + this.assetInfos = new Cache(); + this.scenes = new Cache(); + this.paths = new Cache(); + } + var _proto = Config.prototype; + _proto.init = function init(options) { + var _this = this; + processOptions(options); + this.importBase = options.importBase || ''; + this.nativeBase = options.nativeBase || ''; + this.base = options.base || ''; + this.name = options.name || ''; + this.deps = options.deps || []; + this._initUuid(options.uuids); + this._initPath(options.paths); + this._initScene(options.scenes); + this._initPackage(options.packs); + this._initVersion(options.versions); + this._initRedirect(options.redirect); + var _loop2 = function _loop2(ext) { + if (!Object.prototype.hasOwnProperty.call(options.extensionMap, ext)) { + return 1; + } + options.extensionMap[ext].forEach(function (uuid) { + var assetInfo = _this.assetInfos.get(uuid); + if (assetInfo) { + assetInfo.extension = ext; + } + }); + }; + for (var ext in options.extensionMap) { + if (_loop2(ext)) continue; + } + }; + _proto.getInfoWithPath = function getInfoWithPath(path, type) { + if (!path) { + return null; + } + path = normalize(path); + var items = this.paths.get(path); + if (items) { + if (type) { + for (var i = 0, l = items.length; i < l; i++) { + var assetInfo = items[i]; + if (isChildClassOf(assetInfo.ctor, type)) { + return assetInfo; + } + } + } else { + return items[0]; + } + } + return null; + }; + _proto.getDirWithPath = function getDirWithPath(path, type, out) { + path = normalize(path); + if (path[path.length - 1] === '/') { + path = path.slice(0, -1); + } + var infos = out || []; + this.paths.forEach(function (items, p) { + if (p.startsWith(path) && isMatchByWord(p, path) || !path) { + for (var i = 0, l = items.length; i < l; i++) { + var entry = items[i]; + if (!type || isChildClassOf(entry.ctor, type)) { + infos.push(entry); + } + } + } + }); + return infos; + }; + _proto.getAssetInfo = function getAssetInfo(uuid) { + return this.assetInfos.get(uuid) || null; + }; + _proto.getSceneInfo = function getSceneInfo(name) { + if (!name.endsWith('.scene')) { + name += '.scene'; + } + if (name[0] !== '/' && !name.startsWith('db://')) { + name = "/" + name; + } + var info = this.scenes.find(function (val, key) { + return key.endsWith(name); + }); + return info; + }; + _proto.destroy = function destroy() { + this.paths.destroy(); + this.scenes.destroy(); + this.assetInfos.destroy(); + }; + _proto._initUuid = function _initUuid(uuidList) { + if (!uuidList) { + return; + } + this.assetInfos.clear(); + for (var i = 0, l = uuidList.length; i < l; i++) { + var uuid = uuidList[i]; + this.assetInfos.add(uuid, { + uuid: uuid + }); + } + }; + _proto._initPath = function _initPath(pathList) { + if (!pathList) { + return; + } + var paths = this.paths; + paths.clear(); + for (var uuid in pathList) { + var info = pathList[uuid]; + var path = info[0]; + var type = info[1]; + var isSubAsset = info.length === 3; + var assetInfo = this.assetInfos.get(uuid); + assetInfo.path = path; + assetInfo.ctor = getClassById(type); + if (paths.has(path)) { + if (isSubAsset) { + paths.get(path).push(assetInfo); + } else { + paths.get(path).unshift(assetInfo); + } + } else { + paths.add(path, [assetInfo]); + } + } + }; + _proto._initScene = function _initScene(sceneList) { + if (!sceneList) { + return; + } + var scenes = this.scenes; + scenes.clear(); + var assetInfos = this.assetInfos; + for (var sceneName in sceneList) { + var uuid = sceneList[sceneName]; + var assetInfo = assetInfos.get(uuid); + assetInfo.url = sceneName; + scenes.add(sceneName, assetInfo); + } + }; + _proto._initPackage = function _initPackage(packageList) { + if (!packageList) { + return; + } + var assetInfos = this.assetInfos; + for (var packUuid in packageList) { + var uuids = packageList[packUuid]; + var pack = { + uuid: packUuid, + packedUuids: uuids, + ext: '.json' + }; + assetInfos.add(packUuid, pack); + for (var i = 0, l = uuids.length; i < l; i++) { + var uuid = uuids[i]; + var assetInfo = assetInfos.get(uuid); + var assetPacks = assetInfo.packs; + if (assetPacks) { + if (l === 1) { + assetPacks.unshift(pack); + } else { + assetPacks.push(pack); + } + } else { + assetInfo.packs = [pack]; + } + } + } + }; + _proto._initVersion = function _initVersion(versions) { + if (!versions) { + return; + } + var assetInfos = this.assetInfos; + var entries = versions["import"]; + if (entries) { + for (var i = 0, l = entries.length; i < l; i += 2) { + var uuid = entries[i]; + var assetInfo = assetInfos.get(uuid); + assetInfo.ver = entries[i + 1]; + } + } + entries = versions["native"]; + if (entries) { + for (var _i4 = 0, _l2 = entries.length; _i4 < _l2; _i4 += 2) { + var _uuid3 = entries[_i4]; + var _assetInfo = assetInfos.get(_uuid3); + _assetInfo.nativeVer = entries[_i4 + 1]; + } + } + }; + _proto._initRedirect = function _initRedirect(redirect) { + if (!redirect) { + return; + } + var assetInfos = this.assetInfos; + for (var i = 0, l = redirect.length; i < l; i += 2) { + var uuid = redirect[i]; + var assetInfo = assetInfos.get(uuid); + assetInfo.redirect = redirect[i + 1]; + } + }; + return Config; + }(); + + function visitAsset(asset, deps) { + if (!asset._uuid) { + return; + } + deps.push(asset._uuid); + } + function visitComponent(comp, deps) { + var props = Object.getOwnPropertyNames(comp); + for (var i = 0; i < props.length; i++) { + var propName = props[i]; + if (propName === 'node' || propName === '__eventTargets') { + continue; + } + var value = comp[propName]; + if (typeof value === 'object' && value) { + if (Array.isArray(value)) { + for (var j = 0; j < value.length; j++) { + var val = value[j]; + if (val instanceof Asset) { + visitAsset(val, deps); + } + } + } else if (!value.constructor || value.constructor === Object) { + var keys = Object.getOwnPropertyNames(value); + for (var _j = 0; _j < keys.length; _j++) { + var _val = value[keys[_j]]; + if (_val instanceof Asset) { + visitAsset(_val, deps); + } + } + } else if (value instanceof Asset) { + visitAsset(value, deps); + } + } + } + } + function visitNode$1(node, deps) { + for (var i = 0; i < node._components.length; i++) { + visitComponent(node._components[i], deps); + } + for (var _i = 0; _i < node._children.length; _i++) { + visitNode$1(node._children[_i], deps); + } + } + function descendOpRef(asset, refs, exclude, op) { + exclude.push(asset._uuid); + var depends = dependUtil.getDeps(asset._uuid); + for (var i = 0, l = depends.length; i < l; i++) { + var dependAsset = assets.get(depends[i]); + if (!dependAsset) { + continue; + } + var uuid = dependAsset._uuid; + if (!(uuid in refs)) { + refs[uuid] = dependAsset.refCount + op; + } else { + refs[uuid] += op; + } + if (exclude.includes(uuid)) { + continue; + } + descendOpRef(dependAsset, refs, exclude, op); + } + } + var _temp = []; + function checkCircularReference(asset) { + var refs = Object.create(null); + refs[asset._uuid] = asset.refCount; + descendOpRef(asset, refs, _temp, -1); + _temp.length = 0; + if (refs[asset._uuid] !== 0) { + return refs[asset._uuid]; + } + for (var uuid in refs) { + if (refs[uuid] !== 0) { + descendOpRef(assets.get(uuid), refs, _temp, 1); + } + } + _temp.length = 0; + return refs[asset._uuid]; + } + var ReleaseManager = function () { + function ReleaseManager() { + this._persistNodeDeps = new Cache(); + this._toDelete = new Cache(); + this._eventListener = false; + this._dontDestroyAssets = []; + } + var _proto = ReleaseManager.prototype; + _proto.addIgnoredAsset = function addIgnoredAsset(asset) { + this._dontDestroyAssets.push(asset._uuid); + }; + _proto.init = function init() { + this._persistNodeDeps.clear(); + this._toDelete.clear(); + }; + _proto._addPersistNodeRef = function _addPersistNodeRef(node) { + var deps = []; + visitNode$1(node, deps); + for (var i = 0, l = deps.length; i < l; i++) { + var dependAsset = assets.get(deps[i]); + if (dependAsset) { + dependAsset.addRef(); + } + } + this._persistNodeDeps.add(node.uuid, deps); + }; + _proto._removePersistNodeRef = function _removePersistNodeRef(node) { + if (!this._persistNodeDeps.has(node.uuid)) { + return; + } + var deps = this._persistNodeDeps.get(node.uuid); + for (var i = 0, l = deps.length; i < l; i++) { + var dependAsset = assets.get(deps[i]); + if (dependAsset) { + dependAsset.decRef(); + } + } + this._persistNodeDeps.remove(node.uuid); + }; + _proto._autoRelease = function _autoRelease(oldScene, newScene, persistNodes) { + if (oldScene) { + var childs = dependUtil.getDeps(oldScene.uuid); + for (var i = 0, l = childs.length; i < l; i++) { + var asset = assets.get(childs[i]); + if (asset) { + asset.decRef(oldScene.autoReleaseAssets); + } + } + var dependencies = dependUtil._depends.get(oldScene.uuid); + if (dependencies && dependencies.persistDeps) { + var persistDeps = dependencies.persistDeps; + for (var _i2 = 0, _l = persistDeps.length; _i2 < _l; _i2++) { + var _asset = assets.get(persistDeps[_i2]); + if (_asset) { + _asset.decRef(oldScene.autoReleaseAssets); + } + } + } + if (oldScene.uuid !== newScene.uuid) { + dependUtil.remove(oldScene.uuid); + } + } + var sceneDeps = dependUtil._depends.get(newScene.uuid); + if (sceneDeps) { + sceneDeps.persistDeps = []; + } + for (var key in persistNodes) { + var _ref; + var node = persistNodes[key]; + var deps = this._persistNodeDeps.get(node.uuid); + for (var _iterator = _createForOfIteratorHelperLoose(deps), _step; !(_step = _iterator()).done;) { + var dep = _step.value; + var dependAsset = assets.get(dep); + if (dependAsset) { + dependAsset.addRef(); + } + } + if (!sceneDeps) { + continue; + } + (_ref = sceneDeps.persistDeps).push.apply(_ref, deps); + } + }; + _proto.tryRelease = function tryRelease(asset, force) { + if (force === void 0) { + force = false; + } + if (!(asset instanceof Asset)) { + return; + } + if (force) { + this._free(asset, force); + return; + } + this._toDelete.add(asset._uuid, asset); + if (!this._eventListener) { + this._eventListener = true; + callInNextTick(this._freeAssets.bind(this)); + } + }; + _proto._freeAssets = function _freeAssets() { + var _this = this; + this._eventListener = false; + this._toDelete.forEach(function (asset) { + _this._free(asset); + }); + this._toDelete.clear(); + }; + _proto._free = function _free(asset, force) { + if (force === void 0) { + force = false; + } + var uuid = asset._uuid; + this._toDelete.remove(uuid); + if (!isValid(asset, true) || this._dontDestroyAssets.indexOf(uuid) !== -1) { + return; + } + if (!force) { + if (asset.refCount > 0) { + if (checkCircularReference(asset) > 0) { + return; + } + } + } + assets.remove(uuid); + var depends = dependUtil.getDeps(uuid); + for (var i = 0, l = depends.length; i < l; i++) { + var dependAsset = assets.get(depends[i]); + if (dependAsset) { + dependAsset.decRef(false); + { + this._free(dependAsset, false); + } + } + } + { + asset.destroy(); + } + dependUtil.remove(uuid); + }; + return ReleaseManager; + }(); + var releaseManager = new ReleaseManager(); + + var defaultProgressCallback = null; + function setDefaultProgressCallback(onProgress) { + defaultProgressCallback = onProgress; + } + function clear(task, clearRef) { + for (var i = 0, l = task.input.length; i < l; i++) { + var _item = task.input[i]; + if (clearRef) { + if (!_item.isNative && _item.content instanceof Asset) { + _item.content.decRef(false); + } + } + _item.recycle(); + } + task.input = null; + } + function urlAppendTimestamp(url, append) { + if (append) { + if (/\?/.test(url)) { + return url + "&_t=" + Date.now(); + } + return url + "?_t=" + Date.now(); + } + return url; + } + function retry(process, times, wait, onComplete, index) { + if (index === void 0) { + index = 0; + } + process(index, function (err, result) { + index++; + if (!err || index > times) { + if (onComplete) { + onComplete(err, result); + } + } else { + setTimeout(function () { + retry(process, times, wait, onComplete, index); + }, wait); + } + }); + } + function getDepends(uuid, data, exclude, depends, config) { + try { + var info = dependUtil.parse(uuid, data); + for (var i = 0, l = info.deps.length; i < l; i++) { + var dep = info.deps[i]; + if (!(dep in exclude)) { + exclude[dep] = true; + depends.push({ + uuid: dep, + bundle: config && config.name + }); + } + } + if (info.nativeDep) { + if (config) { + info.nativeDep.bundle = config.name; + } + depends.push(_extends({}, info.nativeDep)); + } + } catch (e) { + error(e.message, e.stack); + } + } + function cache(id, asset, cacheAsset) { + if (!asset) { + return; + } + cacheAsset = cacheAsset !== undefined ? cacheAsset : legacyCC.assetManager.cacheAsset; + if (!isScene(asset) && cacheAsset && !asset.isDefault) { + assets.add(id, asset); + } + } + function setProperties(uuid, asset, assetsMap) { + var missingAsset = false; + var depends = dependMap.get(asset); + if (depends) { + var missingAssetReporter = null; + for (var i = 0, l = depends.length; i < l; i++) { + var depend = depends[i]; + var dependAsset = assetsMap[depend.uuid + "@import"]; + if (!dependAsset) { + { + error("The asset " + depend.uuid + " is missing!"); + } + legacyCC.assetManager.dispatchAssetMissing(asset, depend.owner, depend.prop, depend.uuid); + if (depend.type && depend.type !== Asset) { + var placeHolder = new depend.type(); + placeHolder.initDefault(depend.uuid); + depend.owner[depend.prop] = placeHolder; + } + missingAsset = true; + } else { + depend.owner[depend.prop] = dependAsset.addRef(); + } + } + if (missingAssetReporter) { + missingAssetReporter.reportByOwner(); + } + dependMap["delete"](asset); + } + if (nativeDependMap.has(asset)) { + if (assetsMap[uuid + "@native"]) { + asset._nativeAsset = assetsMap[uuid + "@native"]; + } else { + missingAsset = true; + console.error("the native asset of " + uuid + " is missing!"); + } + nativeDependMap["delete"](asset); + } + return missingAsset; + } + function gatherAsset(task) { + var source = task.source; + if (!task.options.__outputAsArray__ && source.length === 1) { + task.output = source[0].content; + } else { + var output = task.output = []; + for (var i = 0, l = source.length; i < l; i++) { + output.push(source[i].content); + } + } + } + function forEach(array, process, onComplete) { + var count = 0; + var errs = []; + var length = array.length; + if (length === 0 && onComplete) { + onComplete(errs); + } + var cb = function cb(err) { + if (err) { + errs.push(err); + } + count++; + if (count === length) { + if (onComplete) { + onComplete(errs); + } + } + }; + for (var i = 0; i < length; i++) { + process(array[i], cb); + } + } + function parseParameters(options, onProgress, onComplete) { + var optionsOut = options; + var onProgressOut = onProgress; + var onCompleteOut = onComplete; + if (onComplete === undefined) { + var isCallback = typeof options === 'function'; + if (onProgress) { + onCompleteOut = onProgress; + if (!isCallback) { + onProgressOut = null; + } + } else if (onProgress === undefined && isCallback) { + onCompleteOut = options; + optionsOut = null; + onProgressOut = null; + } + if (onProgress !== undefined && isCallback) { + onProgressOut = options; + optionsOut = null; + } + } + return { + options: optionsOut || Object.create(null), + onProgress: onProgressOut, + onComplete: onCompleteOut + }; + } + function parseLoadResArgs(type, onProgress, onComplete) { + var typeOut = type; + var onProgressOut = onProgress; + var onCompleteOut = onComplete; + if (onComplete === undefined) { + var isValidType = isChildClassOf(type, Asset); + if (onProgress) { + onCompleteOut = onProgress; + if (isValidType) { + onProgressOut = null; + } + } else if (onProgress === undefined && !isValidType) { + onCompleteOut = type; + onProgressOut = null; + typeOut = null; + } + if (onProgress !== undefined && !isValidType) { + onProgressOut = type; + typeOut = null; + } + } + return { + type: typeOut, + onProgress: onProgressOut || defaultProgressCallback, + onComplete: onCompleteOut + }; + } + function checkCircleReference(owner, uuid, map, checked) { + if (checked === void 0) { + checked = {}; + } + var item = map[uuid]; + if (!item || checked[uuid]) { + return false; + } + checked[uuid] = true; + var result = false; + var deps = dependUtil.getDeps(uuid); + if (deps) { + for (var i = 0, l = deps.length; i < l; i++) { + var dep = deps[i]; + if (dep === owner || checkCircleReference(owner, dep, map, checked)) { + result = true; + break; + } + } + } + return result; + } + function asyncify(cb) { + return function (p1, p2) { + if (!cb) { + return; + } + var refs = []; + if (Array.isArray(p2)) { + p2.forEach(function (x) { + return x instanceof Asset && refs.push(x.addRef()); + }); + } else if (p2 instanceof Asset) { + refs.push(p2.addRef()); + } + callInNextTick(function () { + refs.forEach(function (x) { + return x.decRef(false); + }); + cb(p1, p2); + }); + }; + } + + var Bundle = function () { + function Bundle() { + this._config = new Config(); + } + var _proto = Bundle.prototype; + _proto.getInfoWithPath = function getInfoWithPath(path, type) { + return this._config.getInfoWithPath(path, type); + }; + _proto.getDirWithPath = function getDirWithPath(path, type, out) { + return this._config.getDirWithPath(path, type, out); + }; + _proto.getAssetInfo = function getAssetInfo(uuid) { + return this._config.getAssetInfo(uuid); + }; + _proto.getSceneInfo = function getSceneInfo(name) { + return this._config.getSceneInfo(name); + }; + _proto.init = function init(options) { + this._config.init(options); + bundles.add(options.name, this); + }; + _proto.load = function load(paths, type, onProgress, onComplete) { + var _parseLoadResArgs = parseLoadResArgs(type, onProgress, onComplete), + _type = _parseLoadResArgs.type, + onProg = _parseLoadResArgs.onProgress, + onComp = _parseLoadResArgs.onComplete; + var options = { + __requestType__: RequestType.PATH, + type: _type, + bundle: this.name, + __outputAsArray__: Array.isArray(paths) + }; + legacyCC.assetManager.loadAny(paths, options, onProg, onComp); + }; + _proto.preload = function preload(paths, type, onProgress, onComplete) { + var _parseLoadResArgs2 = parseLoadResArgs(type, onProgress, onComplete), + _type = _parseLoadResArgs2.type, + onProg = _parseLoadResArgs2.onProgress, + onComp = _parseLoadResArgs2.onComplete; + legacyCC.assetManager.preloadAny(paths, { + __requestType__: RequestType.PATH, + type: _type, + bundle: this.name + }, onProg, onComp); + }; + _proto.loadDir = function loadDir(dir, type, onProgress, onComplete) { + var _parseLoadResArgs3 = parseLoadResArgs(type, onProgress, onComplete), + _type = _parseLoadResArgs3.type, + onProg = _parseLoadResArgs3.onProgress, + onComp = _parseLoadResArgs3.onComplete; + legacyCC.assetManager.loadAny(dir, { + __requestType__: RequestType.DIR, + type: _type, + bundle: this.name, + __outputAsArray__: true + }, onProg, onComp); + }; + _proto.preloadDir = function preloadDir(dir, type, onProgress, onComplete) { + var _parseLoadResArgs4 = parseLoadResArgs(type, onProgress, onComplete), + _type = _parseLoadResArgs4.type, + onProg = _parseLoadResArgs4.onProgress, + onComp = _parseLoadResArgs4.onComplete; + legacyCC.assetManager.preloadAny(dir, { + __requestType__: RequestType.DIR, + type: _type, + bundle: this.name + }, onProg, onComp); + }; + _proto.loadScene = function loadScene(sceneName, options, onProgress, onComplete) { + var _parseParameters = parseParameters(options, onProgress, onComplete), + opts = _parseParameters.options, + onProg = _parseParameters.onProgress, + onComp = _parseParameters.onComplete; + opts.preset = opts.preset || 'scene'; + opts.bundle = this.name; + legacyCC.assetManager.loadAny({ + scene: sceneName + }, opts, onProg, function (err, sceneAsset) { + if (err) { + error(err.message, err.stack); + } else if (sceneAsset.scene) { + var scene = sceneAsset.scene; + scene._id = sceneAsset._uuid; + scene.name = sceneAsset.name; + } else { + err = new Error("The asset " + sceneAsset._uuid + " is not a scene"); + } + if (onComp) { + onComp(err, sceneAsset); + } + }); + }; + _proto.preloadScene = function preloadScene(sceneName, options, onProgress, onComplete) { + var _parseParameters2 = parseParameters(options, onProgress, onComplete), + opts = _parseParameters2.options, + onProg = _parseParameters2.onProgress, + onComp = _parseParameters2.onComplete; + opts.bundle = this.name; + legacyCC.assetManager.preloadAny({ + scene: sceneName + }, opts, onProg, function (err) { + if (err) { + errorID(1210, sceneName, err.message); + } + if (onComp) { + onComp(err); + } + }); + }; + _proto.get = function get(path, type) { + var info = this.getInfoWithPath(path, type); + if (info) { + return assets.get(info.uuid) || null; + } + return null; + }; + _proto.release = function release(path, type) { + var asset = this.get(path, type); + if (asset) { + releaseManager.tryRelease(asset, true); + } + }; + _proto.releaseUnusedAssets = function releaseUnusedAssets() { + var _this = this; + assets.forEach(function (asset) { + var info = _this.getAssetInfo(asset._uuid); + if (info && !info.redirect) { + releaseManager.tryRelease(asset); + } + }); + }; + _proto.releaseAll = function releaseAll() { + var _this2 = this; + assets.forEach(function (asset) { + var info = _this2.getAssetInfo(asset._uuid); + if (info && !info.redirect) { + releaseManager.tryRelease(asset, true); + } + }); + }; + _proto._destroy = function _destroy() { + this._config.destroy(); + }; + _createClass(Bundle, [{ + key: "config", + get: function get() { + return this._config; + } + }, { + key: "name", + get: function get() { + return this._config.name; + } + }, { + key: "deps", + get: function get() { + return this._config.deps; + } + }, { + key: "base", + get: function get() { + return this._config.base; + } + }]); + return Bundle; + }(); + var resources = exports('e5', new Bundle()); + legacyCC.resources = resources; + + var CacheManager = function CacheManager() { + this.cacheDir = void 0; + this.cacheEnabled = void 0; + this.autoClear = void 0; + this.cacheInterval = void 0; + this.deleteInterval = void 0; + this.cachedFiles = void 0; + }; + + function downloadDomImage(url, options, onComplete) { + var img = new ccwindow.Image(); + if (ccwindow.location.protocol !== 'file:' || XIAOMI) { + img.crossOrigin = 'anonymous'; + } + function loadCallback() { + img.removeEventListener('load', loadCallback); + img.removeEventListener('error', errorCallback); + if (onComplete) { + onComplete(null, img); + } + } + function errorCallback() { + img.removeEventListener('load', loadCallback); + img.removeEventListener('error', errorCallback); + if (onComplete) { + onComplete(new Error(getError(4930, url))); + } + } + img.addEventListener('load', loadCallback); + img.addEventListener('error', errorCallback); + img.src = url; + return img; + } + + function downloadFile(url, options, onProgress, onComplete) { + var xhr = new XMLHttpRequest(); + var errInfo = "download failed: " + url + ", status: "; + xhr.open('GET', url, true); + if (options.xhrResponseType !== undefined) { + xhr.responseType = options.xhrResponseType; + } + if (options.xhrWithCredentials !== undefined) { + xhr.withCredentials = options.xhrWithCredentials; + } + if (options.xhrMimeType !== undefined && xhr.overrideMimeType) { + xhr.overrideMimeType(options.xhrMimeType); + } + if (options.xhrTimeout !== undefined) { + xhr.timeout = options.xhrTimeout; + } + if (options.xhrHeader) { + for (var header in options.xhrHeader) { + xhr.setRequestHeader(header, options.xhrHeader[header]); + } + } + xhr.onload = function () { + if (xhr.status === 200 || xhr.status === 0) { + if (onComplete) { + onComplete(null, xhr.response); + } + } else if (onComplete) { + onComplete(new Error("" + errInfo + xhr.status + "(no response)")); + } + }; + if (onProgress) { + xhr.onprogress = function (e) { + if (e.lengthComputable) { + onProgress(e.loaded, e.total); + } + }; + } + xhr.onerror = function () { + if (onComplete) { + onComplete(new Error("" + errInfo + xhr.status + "(error)")); + } + }; + xhr.ontimeout = function () { + if (onComplete) { + onComplete(new Error("" + errInfo + xhr.status + "(time out)")); + } + }; + xhr.onabort = function () { + if (onComplete) { + onComplete(new Error("" + errInfo + xhr.status + "(abort)")); + } + }; + xhr.send(null); + return xhr; + } + + var ccdocument$5 = ccwindow.document; + var downloaded = {}; + function downloadScript(url, options, onComplete) { + if (downloaded[url]) { + if (onComplete) { + onComplete(null); + } + return null; + } + var script = ccdocument$5.createElement('script'); + if (ccwindow.location.protocol !== 'file:') { + script.crossOrigin = 'anonymous'; + } + script.async = options.scriptAsyncLoading || false; + script.src = url; + function loadHandler() { + script.parentNode.removeChild(script); + script.removeEventListener('load', loadHandler, false); + script.removeEventListener('error', errorHandler, false); + downloaded[url] = true; + if (onComplete) { + onComplete(null); + } + } + function errorHandler() { + script.parentNode.removeChild(script); + script.removeEventListener('load', loadHandler, false); + script.removeEventListener('error', errorHandler, false); + if (onComplete) { + onComplete(new Error(getError(4928, url))); + } + } + script.addEventListener('load', loadHandler, false); + script.addEventListener('error', errorHandler, false); + ccdocument$5.body.appendChild(script); + return script; + } + + var REGEX = /^(?:\w+:\/\/|\.+\/).+/; + var downloadImage = function downloadImage(url, options, onComplete) { + var func = sys.hasFeature(sys.Feature.IMAGE_BITMAP) && legacyCC.assetManager.allowImageBitmap ? downloadBlob : downloadDomImage; + func(url, options, onComplete); + }; + var downloadBlob = function downloadBlob(url, options, onComplete) { + options.xhrResponseType = 'blob'; + downloadFile(url, options, options.onFileProgress, onComplete); + }; + var downloadJson = function downloadJson(url, options, onComplete) { + options.xhrResponseType = 'json'; + downloadFile(url, options, options.onFileProgress, onComplete); + }; + var downloadArrayBuffer = function downloadArrayBuffer(url, options, onComplete) { + options.xhrResponseType = 'arraybuffer'; + downloadFile(url, options, options.onFileProgress, onComplete); + }; + var downloadCCON = function downloadCCON(url, options, onComplete) { + downloader._downloadJson(url, options, function (err, json) { + if (err) { + onComplete(err); + return; + } + var cconPreface = parseCCONJson(json); + var chunkPromises = Promise.all(cconPreface.chunks.map(function (chunk) { + return new Promise(function (resolve, reject) { + downloader._downloadArrayBuffer("" + mainFileName(url) + chunk, {}, function (errChunk, chunkBuffer) { + if (err) { + reject(err); + } else { + resolve(new Uint8Array(chunkBuffer)); + } + }); + }); + })); + chunkPromises.then(function (chunks) { + var ccon = new CCON(cconPreface.document, chunks); + onComplete(null, ccon); + })["catch"](function (err) { + onComplete(err); + }); + }); + }; + var downloadCCONB = function downloadCCONB(url, options, onComplete) { + downloader._downloadArrayBuffer(url, options, function (err, arrayBuffer) { + if (err) { + onComplete(err); + return; + } + try { + var ccon = decodeCCONBinary(new Uint8Array(arrayBuffer)); + onComplete(null, ccon); + } catch (err) { + onComplete(err); + } + }); + }; + var downloadText = function downloadText(url, options, onComplete) { + options.xhrResponseType = 'text'; + downloadFile(url, options, options.onFileProgress, onComplete); + }; + var downloadBundle = function downloadBundle(nameOrUrl, options, onComplete) { + var bundleName = basename(nameOrUrl); + var url = nameOrUrl; + if (!REGEX.test(url)) { + if (downloader.remoteBundles.indexOf(bundleName) !== -1) { + url = downloader.remoteServerAddress + "remote/" + bundleName; + } else { + url = "assets/" + bundleName; + } + } + var version = options.version || downloader.bundleVers[bundleName]; + var count = 0; + var config = url + "/config." + (version ? version + "." : '') + "json"; + var out = null; + var error = null; + downloadJson(config, options, function (err, response) { + error = err || error; + out = response; + if (out) { + out.base = url + "/"; + } + if (++count === 2) { + onComplete(error, out); + } + }); + var jspath = url + "/index." + (version ? version + "." : '') + "js"; + downloadScript(jspath, options, function (err) { + error = err || error; + if (++count === 2) { + onComplete(error, out); + } + }); + }; + var Downloader = function () { + var _proto = Downloader.prototype; + _proto.init = function init(remoteServerAddress, bundleVers, remoteBundles) { + if (remoteServerAddress === void 0) { + remoteServerAddress = ''; + } + if (bundleVers === void 0) { + bundleVers = {}; + } + if (remoteBundles === void 0) { + remoteBundles = []; + } + this._downloading.clear(); + this._queue.length = 0; + this._remoteServerAddress = remoteServerAddress; + this.bundleVers = bundleVers; + this.remoteBundles = remoteBundles; + }; + _proto.register = function register(type, handler) { + if (typeof type === 'object') { + mixin(this._downloaders, type); + } else { + this._downloaders[type] = handler; + } + }; + _proto.download = function download(id, url, type, options, onComplete) { + var _this = this; + var file = files.get(id); + if (file) { + onComplete(null, file); + return; + } + var downloadCallbacks = this._downloading.get(id); + if (downloadCallbacks) { + downloadCallbacks.push(onComplete); + var request = this._queue.find(function (x) { + return x.id === id; + }); + if (!request) { + return; + } + var priority = options.priority || 0; + if (request.priority < priority) { + request.priority = priority; + this._queueDirty = true; + } + return; + } + var maxRetryCount = typeof options.maxRetryCount !== 'undefined' ? options.maxRetryCount : this.maxRetryCount; + var maxConcurrency = typeof options.maxConcurrency !== 'undefined' ? options.maxConcurrency : this.maxConcurrency; + var maxRequestsPerFrame = typeof options.maxRequestsPerFrame !== 'undefined' ? options.maxRequestsPerFrame : this.maxRequestsPerFrame; + var handler = this._downloaders[type] || this._downloaders["default"]; + var process = function process(index, callback) { + if (index === 0) { + _this._downloading.add(id, [onComplete]); + } + if (!_this.limited) { + handler(urlAppendTimestamp(url, _this.appendTimeStamp), options, callback); + return; + } + _this._updateTime(); + var done = function done(err, data) { + _this._totalNum--; + _this._handleQueueInNextFrame(maxConcurrency, maxRequestsPerFrame); + callback(err, data); + }; + if (_this._totalNum < maxConcurrency && _this._totalNumThisPeriod < maxRequestsPerFrame) { + handler(urlAppendTimestamp(url, _this.appendTimeStamp), options, done); + _this._totalNum++; + _this._totalNumThisPeriod++; + } else { + _this._queue.push({ + id: id, + priority: options.priority || 0, + url: url, + options: options, + done: done, + handler: handler + }); + _this._queueDirty = true; + if (_this._totalNum < maxConcurrency) { + _this._handleQueueInNextFrame(maxConcurrency, maxRequestsPerFrame); + } + } + }; + var finale = function finale(err, result) { + if (!err) { + files.add(id, result); + } + var callbacks = _this._downloading.remove(id); + for (var i = 0, l = callbacks.length; i < l; i++) { + callbacks[i](err, result); + } + }; + retry(process, maxRetryCount, this.retryInterval, finale); + }; + _proto.loadSubpackage = function loadSubpackage(name, completeCallback) { + legacyCC.assetManager.loadBundle(name, null, completeCallback); + }; + function Downloader() { + this.maxConcurrency = 15; + this.maxRequestsPerFrame = 15; + this.maxRetryCount = 3 ; + this.appendTimeStamp = !!EDITOR_NOT_IN_PREVIEW; + this.limited = !EDITOR; + this.retryInterval = 2000; + this.bundleVers = {}; + this.remoteBundles = []; + this.downloadDomImage = downloadDomImage; + this.downloadDomAudio = null; + this.downloadFile = downloadFile; + this.downloadScript = downloadScript; + this._downloadArrayBuffer = downloadArrayBuffer; + this._downloadJson = downloadJson; + this._downloaders = { + '.png': downloadImage, + '.jpg': downloadImage, + '.bmp': downloadImage, + '.jpeg': downloadImage, + '.gif': downloadImage, + '.ico': downloadImage, + '.tiff': downloadImage, + '.webp': downloadImage, + '.image': downloadImage, + '.pvr': downloadArrayBuffer, + '.pkm': downloadArrayBuffer, + '.astc': downloadArrayBuffer, + '.txt': downloadText, + '.xml': downloadText, + '.vsh': downloadText, + '.fsh': downloadText, + '.atlas': downloadText, + '.tmx': downloadText, + '.tsx': downloadText, + '.json': downloadJson, + '.ExportJson': downloadJson, + '.plist': downloadText, + '.ccon': downloadCCON, + '.cconb': downloadCCONB, + '.fnt': downloadText, + '.binary': downloadArrayBuffer, + '.bin': downloadArrayBuffer, + '.dbbin': downloadArrayBuffer, + '.skel': downloadArrayBuffer, + '.js': downloadScript, + bundle: downloadBundle, + "default": downloadText + }; + this._downloading = new Cache(); + this._queue = []; + this._queueDirty = false; + this._totalNum = 0; + this._totalNumThisPeriod = 0; + this._lastDate = -1; + this._checkNextPeriod = false; + this._remoteServerAddress = ''; + this._maxInterval = 1 / 30; + } + _proto._updateTime = function _updateTime() { + var now = performance.now(); + var deltaTime = legacyCC.game.deltaTime; + var interval = deltaTime > this._maxInterval ? this._maxInterval : deltaTime; + if (now - this._lastDate > interval * 1000) { + this._totalNumThisPeriod = 0; + this._lastDate = now; + } + }; + _proto._handleQueue = function _handleQueue(maxConcurrency, maxRequestsPerFrame) { + this._checkNextPeriod = false; + this._updateTime(); + while (this._queue.length > 0 && this._totalNum < maxConcurrency && this._totalNumThisPeriod < maxRequestsPerFrame) { + if (this._queueDirty) { + this._queue.sort(function (a, b) { + return a.priority - b.priority; + }); + this._queueDirty = false; + } + var request = this._queue.pop(); + if (!request) { + break; + } + this._totalNum++; + this._totalNumThisPeriod++; + request.handler(urlAppendTimestamp(request.url, this.appendTimeStamp), request.options, request.done); + } + this._handleQueueInNextFrame(maxConcurrency, maxRequestsPerFrame); + }; + _proto._handleQueueInNextFrame = function _handleQueueInNextFrame(maxConcurrency, maxRequestsPerFrame) { + if (!this._checkNextPeriod && this._queue.length > 0) { + callInNextTick(this._handleQueue.bind(this), maxConcurrency, maxRequestsPerFrame); + this._checkNextPeriod = true; + } + }; + _createClass(Downloader, [{ + key: "remoteServerAddress", + get: function get() { + return this._remoteServerAddress; + } + }], [{ + key: "instance", + get: function get() { + if (!Downloader._instance) { + Downloader._instance = new Downloader(); + } + return Downloader._instance; + } + }]); + return Downloader; + }(); + Downloader._instance = void 0; + var downloader = Downloader.instance; + var downloader$1 = Downloader.instance; + + var _dec$24, _class$21, _class2$1P, _initializer$1B; + var JsonAsset = exports('dV', (_dec$24 = ccclass$t('cc.JsonAsset'), _dec$24(_class$21 = (_class2$1P = function (_Asset) { + _inheritsLoose(JsonAsset, _Asset); + function JsonAsset() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Asset.call.apply(_Asset, [this].concat(args)) || this; + _this.json = _initializer$1B && _initializer$1B(); + return _this; + } + return JsonAsset; + }(Asset), (_initializer$1B = applyDecoratedInitializer(_class2$1P.prototype, "json", [serializable$9], function () { + return null; + })), _class2$1P)) || _class$21)); + legacyCC.JsonAsset = JsonAsset; + + var _dec$23, _class$20, _class2$1O, _initializer$1A; + var TextAsset = exports('dU', (_dec$23 = ccclass$t('cc.TextAsset'), _dec$23(_class$20 = (_class2$1O = function (_Asset) { + _inheritsLoose(TextAsset, _Asset); + function TextAsset() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Asset.call.apply(_Asset, [this].concat(args)) || this; + _this.text = _initializer$1A && _initializer$1A(); + return _this; + } + var _proto = TextAsset.prototype; + _proto.toString = function toString() { + return this.text; + }; + return TextAsset; + }(Asset), (_initializer$1A = applyDecoratedInitializer(_class2$1O.prototype, "text", [serializable$9], function () { + return ''; + })), _class2$1O)) || _class$20)); + legacyCC.TextAsset = TextAsset; + + var _dec$22, _class$1$, _class2$1N; + var BufferAsset = exports('dR', (_dec$22 = ccclass$t('cc.BufferAsset'), _dec$22(_class$1$ = (_class2$1N = function (_Asset) { + _inheritsLoose(BufferAsset, _Asset); + function BufferAsset() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Asset.call.apply(_Asset, [this].concat(args)) || this; + _this._buffer = null; + return _this; + } + var _proto = BufferAsset.prototype; + _proto.buffer = function buffer() { + assertIsNonNullable(this._buffer); + return this._buffer; + }; + _proto.validate = function validate() { + return !!this._buffer; + }; + _createClass(BufferAsset, [{ + key: "_nativeAsset", + get: function get() { + return this._buffer; + }, + set: function set(bin) { + if (bin instanceof ArrayBuffer) { + this._buffer = bin; + } else { + this._buffer = bin.buffer; + } + } + }]); + return BufferAsset; + }(Asset), (_applyDecoratedDescriptor(_class2$1N.prototype, "_nativeAsset", [override$1], Object.getOwnPropertyDescriptor(_class2$1N.prototype, "_nativeAsset"), _class2$1N.prototype)), _class2$1N)) || _class$1$)); + legacyCC.BufferAsset = BufferAsset; + + function createImageAsset(id, data, options, onComplete) { + var out = null; + var err = null; + try { + out = new ImageAsset(); + out._nativeUrl = id; + out._nativeAsset = data; + } catch (e) { + err = e; + } + onComplete(err, out); + } + function createJsonAsset(id, data, options, onComplete) { + var out = new JsonAsset(); + out.json = data; + onComplete(null, out); + } + function createTextAsset(id, data, options, onComplete) { + var out = new TextAsset(); + out.text = data; + onComplete(null, out); + } + function createBufferAsset(id, data, options, onComplete) { + var out = new BufferAsset(); + out._nativeUrl = id; + out._nativeAsset = data; + onComplete(null, out); + } + function createAsset(id, data, options, onComplete) { + var out = new Asset(); + out._nativeUrl = id; + out._nativeAsset = data; + onComplete(null, out); + } + function createBundle(id, data, options, onComplete) { + var bundle = bundles.get(data.name); + if (!bundle) { + bundle = data.name === BuiltinBundleName.RESOURCES ? resources : new Bundle(); + data.base = data.base || id + "/"; + bundle.init(data); + } + { + module.import("virtual:///prerequisite-imports/" + bundle.name).then(function () { + onComplete(null, bundle); + })["catch"](onComplete); + } + } + var Factory = function () { + function Factory() { + this._creating = new Cache(); + this._producers = { + '.png': createImageAsset, + '.jpg': createImageAsset, + '.bmp': createImageAsset, + '.jpeg': createImageAsset, + '.gif': createImageAsset, + '.ico': createImageAsset, + '.tiff': createImageAsset, + '.webp': createImageAsset, + '.image': createImageAsset, + '.pvr': createImageAsset, + '.pkm': createImageAsset, + '.txt': createTextAsset, + '.xml': createTextAsset, + '.vsh': createTextAsset, + '.fsh': createTextAsset, + '.atlas': createTextAsset, + '.tmx': createTextAsset, + '.tsx': createTextAsset, + '.fnt': createTextAsset, + '.json': createJsonAsset, + '.ExportJson': createJsonAsset, + '.binary': createBufferAsset, + '.bin': createBufferAsset, + '.dbbin': createBufferAsset, + '.skel': createBufferAsset, + bundle: createBundle, + "default": createAsset + }; + } + var _proto = Factory.prototype; + _proto.register = function register(type, handler) { + if (typeof type === 'object') { + mixin(this._producers, type); + } else { + this._producers[type] = handler; + } + }; + _proto.create = function create(id, data, type, options, onComplete) { + var _this = this; + var handler = this._producers[type] || this._producers["default"]; + var asset = assets.get(id); + if (!options.reloadAsset && asset) { + onComplete(null, asset); + return; + } + var creating = this._creating.get(id); + if (creating) { + creating.push(onComplete); + return; + } + this._creating.add(id, [onComplete]); + handler(id, data, options, function (err, result) { + if (!err && result instanceof Asset) { + result._uuid = id; + cache(id, result, options.cacheAsset); + } + var callbacks = _this._creating.remove(id); + for (var i = 0, l = callbacks.length; i < l; i++) { + callbacks[i](err, result); + } + }); + }; + return Factory; + }(); + var factory = new Factory(); + + var PackManager = function () { + function PackManager() { + this._loading = new Cache(); + this._unpackers = { + '.json': this.unpackJson + }; + } + var _proto = PackManager.prototype; + _proto.unpackJson = function unpackJson(pack, json, options, onComplete) { + var out = createMap(true); + var err = null; + if (Array.isArray(json)) { + json = unpackJSONs(json); + if (json.length !== pack.length) { + errorID(4915); + } + for (var i = 0; i < pack.length; i++) { + out[pack[i] + "@import"] = json[i]; + } + } else { + var textureType = getClassId(Texture2D); + var imageAssetType = getClassId(ImageAsset); + if (json.type === textureType && json.data) { + var datas = json.data; + if (datas.length !== pack.length) { + errorID(4915); + } + for (var _i = 0; _i < pack.length; _i++) { + out[pack[_i] + "@import"] = packCustomObjData(textureType, { + base: datas[_i][0], + mipmaps: datas[_i][1] + }); + } + } else if (json.type === imageAssetType && json.data) { + var _datas = json.data; + if (_datas.length !== pack.length) { + errorID(4915); + } + for (var _i2 = 0; _i2 < pack.length; _i2++) { + out[pack[_i2] + "@import"] = _datas[_i2]; + } + } else { + err = new Error('unmatched type pack!'); + onComplete(err, null); + return; + } + } + onComplete(err, out); + }; + _proto.init = function init() { + this._loading.clear(); + }; + _proto.register = function register(type, handler) { + if (typeof type === 'object') { + mixin(this._unpackers, type); + } else { + this._unpackers[type] = handler; + } + }; + _proto.unpack = function unpack(pack, data, type, options, onComplete) { + if (!data) { + onComplete(new Error('package data is wrong!')); + return; + } + var unpacker = this._unpackers[type]; + unpacker(pack, data, options, onComplete); + }; + _proto.load = function load(item, options, onComplete) { + var _this = this; + if (item.isNative || !item.info || !item.info.packs) { + downloader$1.download(item.id, item.url, item.ext, item.options, onComplete); + return; + } + if (files.has(item.id)) { + onComplete(null, files.get(item.id)); + return; + } + var packs = item.info.packs; + var loadingPack = packs.find(function (val) { + return _this._loading.has(val.uuid); + }); + if (loadingPack) { + var req = this._loading.get(loadingPack.uuid); + assertIsTrue(req); + req.push({ + onComplete: onComplete, + id: item.id + }); + return; + } + var pack = packs[0]; + this._loading.add(pack.uuid, [{ + onComplete: onComplete, + id: item.id + }]); + assertIsTrue(item.config); + var url = transform(pack.uuid, { + ext: pack.ext, + bundle: item.config.name + }); + downloader$1.download(pack.uuid, url, pack.ext, item.options, function (err, data) { + files.remove(pack.uuid); + if (err) { + error(err.message, err.stack); + } + _this.unpack(pack.packedUuids, data, pack.ext, item.options, function (err2, result) { + if (!err2) { + for (var id in result) { + files.add(id, result[id]); + } + } + var callbacks = _this._loading.remove(pack.uuid); + assertIsTrue(callbacks); + for (var i = 0, l = callbacks.length; i < l; i++) { + var cb = callbacks[i]; + if (err || err2) { + cb.onComplete(err || err2); + continue; + } + var unpackedData = result[cb.id]; + if (!unpackedData) { + cb.onComplete(new Error('can not retrieve data from package')); + } else { + cb.onComplete(null, unpackedData); + } + } + }); + }); + }; + return PackManager; + }(); + var packManager = new PackManager(); + + function fetch$1(task, done) { + var firstTask = false; + if (!task.progress) { + task.progress = { + finish: 0, + total: task.input.length, + canInvoke: true + }; + firstTask = true; + } + var options = task.options, + progress = task.progress; + var depends = []; + var total = progress.total; + var exclude = options.__exclude__ = options.__exclude__ || Object.create(null); + task.output = []; + forEach(task.input, function (item, cb) { + if (!item.isNative && assets.has(item.uuid)) { + var asset = assets.get(item.uuid); + item.content = asset.addRef(); + task.output.push(item); + if (progress.canInvoke) { + task.dispatch('progress', ++progress.finish, progress.total, item); + } + cb(); + return; + } + packManager.load(item, task.options, function (err, data) { + if (err) { + if (!task.isFinished) { + if (!legacyCC.assetManager.force || firstTask) { + error(err.message, err.stack); + progress.canInvoke = false; + done(err); + } else { + task.output.push(item); + if (progress.canInvoke) { + task.dispatch('progress', ++progress.finish, progress.total, item); + } + } + } + } else if (!task.isFinished) { + item.file = data; + task.output.push(item); + if (!item.isNative) { + exclude[item.uuid] = true; + getDepends(item.uuid, data, exclude, depends, item.config); + progress.total = total + depends.length; + } + if (progress.canInvoke) { + task.dispatch('progress', ++progress.finish, progress.total, item); + } + } + cb(); + }); + }, function () { + if (task.isFinished) { + clear(task, true); + task.dispatch('error'); + return; + } + if (depends.length > 0) { + var subTask = Task.create({ + input: depends, + progress: progress, + options: options, + onProgress: task.onProgress, + onError: Task.prototype.recycle, + onComplete: function onComplete(err) { + if (!err) { + var _task$output; + (_task$output = task.output).push.apply(_task$output, subTask.output); + subTask.recycle(); + } + if (firstTask) { + decreaseRef(task); + } + done(err); + } + }); + fetchPipeline.async(subTask); + return; + } + if (firstTask) { + decreaseRef(task); + } + done(); + }); + } + function decreaseRef(task) { + var output = task.output; + for (var i = 0, l = output.length; i < l; i++) { + if (output[i].content) { + output[i].content.decRef(false); + } + } + } + + var SAXParser = function () { + function SAXParser() { + this._parser = null; + if (globalThis.DOMParser) { + this._parser = new DOMParser(); + } + } + var _proto = SAXParser.prototype; + _proto.parse = function parse(xmlTxt) { + return this._parseXML(xmlTxt); + }; + _proto._parseXML = function _parseXML(textxml) { + if (this._parser) { + return this._parser.parseFromString(textxml, 'text/xml'); + } + throw new Error('Dom parser is not supported in this platform!'); + }; + return SAXParser; + }(); + var PlistParser = function (_SAXParser) { + _inheritsLoose(PlistParser, _SAXParser); + function PlistParser() { + return _SAXParser.apply(this, arguments) || this; + } + var _proto2 = PlistParser.prototype; + _proto2.parse = function parse(xmlTxt) { + var xmlDoc = this._parseXML(xmlTxt); + var plist = xmlDoc.documentElement; + if (plist.tagName !== 'plist') { + warnID(5100); + return {}; + } + var node = null; + for (var i = 0, len = plist.childNodes.length; i < len; i++) { + node = plist.childNodes[i]; + if (node.nodeType === 1) { + break; + } + } + return this._parseNode(node); + }; + _proto2._parseNode = function _parseNode(node) { + var data = null; + var tagName = node.tagName; + if (tagName === 'dict') { + data = this._parseDict(node); + } else if (tagName === 'array') { + data = this._parseArray(node); + } else if (tagName === 'string') { + if (node.childNodes.length === 1) { + data = node.firstChild.nodeValue; + } else { + data = ''; + for (var i = 0; i < node.childNodes.length; i++) { + data += node.childNodes[i].nodeValue; + } + } + } else if (tagName === 'false') { + data = false; + } else if (tagName === 'true') { + data = true; + } else if (tagName === 'real') { + data = parseFloat(node.firstChild.nodeValue); + } else if (tagName === 'integer') { + data = parseInt(node.firstChild.nodeValue, 10); + } + return data; + }; + _proto2._parseArray = function _parseArray(node) { + var data = []; + for (var i = 0, len = node.childNodes.length; i < len; i++) { + var child = node.childNodes[i]; + if (child.nodeType !== 1) { + continue; + } + data.push(this._parseNode(child)); + } + return data; + }; + _proto2._parseDict = function _parseDict(node) { + var data = {}; + var key = ''; + for (var i = 0, len = node.childNodes.length; i < len; i++) { + var child = node.childNodes[i]; + if (child.nodeType !== 1) { + continue; + } + if (child.tagName === 'key') { + key = child.firstChild.nodeValue; + } else { + data[key] = this._parseNode(child); + } + } + return data; + }; + return PlistParser; + }(SAXParser); + var plistParser = new PlistParser(); + + var Parser$1 = function () { + function Parser() { + this._parsing = new Cache(); + this._parsers = { + '.png': this.parseImage, + '.jpg': this.parseImage, + '.bmp': this.parseImage, + '.jpeg': this.parseImage, + '.gif': this.parseImage, + '.ico': this.parseImage, + '.tiff': this.parseImage, + '.webp': this.parseImage, + '.image': this.parseImage, + '.pvr': this.parsePVRTex, + '.pkm': this.parsePKMTex, + '.astc': this.parseASTCTex, + '.plist': this.parsePlist, + "import": this.parseImport, + '.ccon': this.parseImport, + '.cconb': this.parseImport + }; + } + var _proto = Parser.prototype; + _proto.parseImage = function parseImage(file, options, onComplete) { + if (file instanceof HTMLImageElement) { + onComplete(null, file); + return; + } + createImageBitmap(file, { + premultiplyAlpha: 'none' + }).then(function (result) { + onComplete(null, result); + }, function (err) { + onComplete(err, null); + }); + }; + _proto.parsePVRTex = function parsePVRTex(file, options, onComplete) { + var err = null; + var out = null; + try { + out = ImageAsset.parseCompressedTextures(file, 0); + } catch (e) { + err = e; + console.warn(err); + } + onComplete(err, out); + }; + _proto.parsePKMTex = function parsePKMTex(file, options, onComplete) { + var err = null; + var out = null; + try { + out = ImageAsset.parseCompressedTextures(file, 1); + } catch (e) { + err = e; + console.warn(err); + } + onComplete(err, out); + }; + _proto.parseASTCTex = function parseASTCTex(file, options, onComplete) { + var err = null; + var out = null; + try { + out = ImageAsset.parseCompressedTextures(file, 2); + } catch (e) { + err = e; + console.warn(err); + } + onComplete(err, out); + }; + _proto.parsePlist = function parsePlist(file, options, onComplete) { + var err = null; + var result = plistParser.parse(file); + if (!result) { + err = new Error('parse failed'); + } + onComplete(err, result); + }; + _proto.parseImport = function parseImport(file, options, onComplete) { + if (!file) { + onComplete(new Error("The json file of asset " + options.__uuid__ + " is empty or missing")); + return; + } + var result = null; + var err = null; + try { + result = deserializeAsset(file, options); + } catch (e) { + err = e; + } + onComplete(err, result); + }; + _proto.init = function init() { + this._parsing.clear(); + }; + _proto.register = function register(type, handler) { + if (typeof type === 'object') { + mixin(this._parsers, type); + } else { + this._parsers[type] = handler; + } + }; + _proto.parse = function parse(id, file, type, options, onComplete) { + var _this = this; + var parsedAsset = parsed.get(id); + if (parsedAsset) { + onComplete(null, parsedAsset); + return; + } + var parsing = this._parsing.get(id); + if (parsing) { + parsing.push(onComplete); + return; + } + var parseHandler = this._parsers[type]; + if (!parseHandler) { + onComplete(null, file); + return; + } + this._parsing.add(id, [onComplete]); + parseHandler(file, options, function (err, data) { + if (err) { + files.remove(id); + } else if (!isScene(data)) { + parsed.add(id, data); + } + var callbacks = _this._parsing.remove(id); + for (var i = 0, l = callbacks.length; i < l; i++) { + callbacks[i](err, data); + } + }); + }; + _createClass(Parser, null, [{ + key: "instance", + get: function get() { + if (!this._instance) { + this._instance = new Parser(); + } + return this._instance; + } + }]); + return Parser; + }(); + Parser$1._instance = void 0; + var parser = Parser$1.instance; + + function load(task, done) { + var firstTask = false; + if (!task.progress) { + task.progress = { + finish: 0, + total: task.input.length, + canInvoke: true + }; + firstTask = true; + } + var options = task.options, + progress = task.progress; + options.__exclude__ = options.__exclude__ || Object.create(null); + task.output = []; + forEach(task.input, function (item, cb) { + var subTask = Task.create({ + input: item, + onProgress: task.onProgress, + options: options, + progress: progress, + onComplete: function onComplete(err, result) { + if (err && !task.isFinished) { + if (!legacyCC.assetManager.force || firstTask) { + { + error(err.message, err.stack); + } + progress.canInvoke = false; + done(err); + } else if (progress.canInvoke) { + task.dispatch('progress', ++progress.finish, progress.total, item); + } + } + task.output.push(result); + subTask.recycle(); + cb(null); + } + }); + loadOneAssetPipeline.async(subTask); + }, function () { + options.__exclude__ = null; + if (task.isFinished) { + clear(task, true); + task.dispatch('error'); + return; + } + gatherAsset(task); + clear(task, true); + done(); + }); + } + var loadOneAssetPipeline = new Pipeline('loadOneAsset', [function fetch(task, done) { + var item = task.output = task.input; + var options = item.options, + isNative = item.isNative, + uuid = item.uuid, + file = item.file; + var reloadAsset = options.reloadAsset; + if (file || !reloadAsset && !isNative && assets.has(uuid)) { + done(); + return; + } + packManager.load(item, task.options, function (err, data) { + item.file = data; + done(err); + }); + }, function parse(task, done) { + var item = task.output = task.input; + var progress = task.progress; + var exclude = task.options.__exclude__; + var id = item.id, + file = item.file, + options = item.options; + if (item.isNative) { + parser.parse(id, file, item.ext, options, function (err, asset) { + if (err) { + done(err); + return; + } + item.content = asset; + if (progress.canInvoke) { + task.dispatch('progress', ++progress.finish, progress.total, item); + } + files.remove(id); + parsed.remove(id); + done(); + }); + } else { + var uuid = item.uuid; + if (uuid in exclude) { + var _exclude$uuid = exclude[uuid], + finish = _exclude$uuid.finish, + content = _exclude$uuid.content, + _err = _exclude$uuid.err, + callbacks = _exclude$uuid.callbacks; + if (progress.canInvoke) { + task.dispatch('progress', ++progress.finish, progress.total, item); + } + if (finish || checkCircleReference(uuid, uuid, exclude)) { + if (content) { + content.addRef(); + } + item.content = content; + done(_err); + } else { + callbacks.push({ + done: done, + item: item + }); + } + } else if (!options.reloadAsset && assets.has(uuid)) { + var asset = assets.get(uuid); + item.content = asset.addRef(); + if (progress.canInvoke) { + task.dispatch('progress', ++progress.finish, progress.total, item); + } + done(); + } else { + options.__uuid__ = uuid; + parser.parse(id, file, 'import', options, function (err, asset) { + if (err) { + done(err); + return; + } + loadDepends(task, asset, done); + }); + } + } + }]); + function loadDepends(task, asset, done) { + var item = task.input, + progress = task.progress; + var _ref = item, + uuid = _ref.uuid, + id = _ref.id, + options = _ref.options, + config = _ref.config; + var cacheAsset = options.cacheAsset; + var depends = []; + if (asset.addRef) { + asset.addRef(); + } + getDepends(uuid, asset, Object.create(null), depends, config); + if (progress.canInvoke) { + task.dispatch('progress', ++progress.finish, progress.total += depends.length, item); + } + var repeatItem = task.options.__exclude__[uuid] = { + content: asset, + finish: false, + callbacks: [{ + done: done, + item: item + }] + }; + var subTask = Task.create({ + input: depends, + options: task.options, + onProgress: task.onProgress, + onError: Task.prototype.recycle, + progress: progress, + onComplete: function onComplete(err) { + if (asset.decRef) { + asset.decRef(false); + } + repeatItem.finish = true; + repeatItem.err = err; + if (!err) { + var output = Array.isArray(subTask.output) ? subTask.output : [subTask.output]; + var map = Object.create(null); + for (var _iterator = _createForOfIteratorHelperLoose(output), _step; !(_step = _iterator()).done;) { + var dependAsset = _step.value; + if (!dependAsset) { + continue; + } + map[dependAsset instanceof Asset ? dependAsset._uuid + "@import" : uuid + "@native"] = dependAsset; + } + setProperties(uuid, asset, map); + try { + if (typeof asset.onLoaded === 'function' && !onLoadedInvokedMap.has(asset) && !nativeDependMap.has(asset)) { + asset.onLoaded(); + onLoadedInvokedMap.add(asset); + } + } catch (e) { + error("The asset " + uuid + " is invalid for some reason, detail message: " + e.message + ", stack: " + e.stack); + } + files.remove(id); + parsed.remove(id); + cache(uuid, asset, cacheAsset); + subTask.recycle(); + } + var callbacks = repeatItem.callbacks; + for (var i = 0, l = callbacks.length; i < l; i++) { + var cb = callbacks[i]; + if (asset.addRef) { + asset.addRef(); + } + cb.item.content = asset; + cb.done(err); + } + callbacks.length = 0; + } + }); + pipeline.async(subTask); + } + + function preprocess(task, done) { + var options = task.options; + var subOptions = Object.create(null); + var leftOptions = Object.create(null); + for (var op in options) { + switch (op) { + case RequestType.PATH: + case RequestType.UUID: + case RequestType.DIR: + case RequestType.SCENE: + case RequestType.URL: + break; + case '__requestType__': + case '__isNative__': + case 'ext': + case 'type': + case '__nativeName__': + case 'audioLoadMode': + case 'bundle': + subOptions[op] = options[op]; + break; + case '__exclude__': + case '__outputAsArray__': + leftOptions[op] = options[op]; + break; + default: + subOptions[op] = options[op]; + leftOptions[op] = options[op]; + break; + } + } + task.options = leftOptions; + var subTask = Task.create({ + input: task.input, + options: subOptions + }); + var err = null; + try { + task.output = task.source = transformPipeline.sync(subTask); + } catch (e) { + err = e; + for (var i = 0, l = subTask.output.length; i < l; i++) { + subTask.output[i].recycle(); + } + } + subTask.recycle(); + done(err); + } + + var RequestItem = function () { + function RequestItem() { + this.uuid = ''; + this.overrideUuid = ''; + this.url = ''; + this.ext = '.json'; + this.content = null; + this.file = null; + this.info = null; + this.config = null; + this.isNative = false; + this.options = Object.create(null); + this._id = ''; + } + RequestItem.create = function create() { + var out; + if (RequestItem._deadPool.length !== 0) { + out = RequestItem._deadPool.pop(); + } else { + out = new RequestItem(); + } + return out; + }; + var _proto = RequestItem.prototype; + _proto.recycle = function recycle() { + if (RequestItem._deadPool.length === RequestItem.MAX_DEAD_NUM) { + return; + } + this._id = ''; + this.uuid = ''; + this.overrideUuid = ''; + this.url = ''; + this.ext = '.json'; + this.content = null; + this.file = null; + this.info = null; + this.config = null; + this.isNative = false; + this.options = Object.create(null); + RequestItem._deadPool.push(this); + }; + _createClass(RequestItem, [{ + key: "id", + get: function get() { + if (!this._id) { + this._id = (this.overrideUuid || this.uuid) + "@" + (this.isNative ? 'native' : 'import'); + } + return this._id; + } + }]); + return RequestItem; + }(); + RequestItem.MAX_DEAD_NUM = 500; + RequestItem._deadPool = []; + + var infos = []; + function parse(task) { + var options = task.options; + var input = Array.isArray(task.input) ? task.input : [task.input]; + task.output = []; + var _loop = function _loop() { + var item = input[i]; + var out = RequestItem.create(); + var config = null; + var info = null; + if (typeof item === 'string') { + item = Object.create(null); + item[options.__requestType__ || RequestType.UUID] = input[i]; + } + if (typeof item === 'object') { + addon(item, options); + if (item.preset) { + addon(item, presets[item.preset]); + } + var _loop2 = function _loop2() { + var _info2; + switch (key) { + case RequestType.UUID: + { + var _info; + var uuid = out.uuid = decodeUuid(item.uuid); + if (!item.bundle) { + var bundle = bundles.find(function (bundle) { + return !!bundle.getAssetInfo(uuid); + }); + item.bundle = bundle && bundle.name; + } + if (bundles.has(item.bundle)) { + config = bundles.get(item.bundle).config; + info = config.getAssetInfo(uuid); + if (info && info.redirect) { + if (!bundles.has(info.redirect)) { + throw new Error("Please load bundle " + info.redirect + " first"); + } + config = bundles.get(info.redirect).config; + info = config.getAssetInfo(uuid); + } + out.config = config; + out.info = info; + } + out.ext = item.ext || ((_info = info) === null || _info === void 0 ? void 0 : _info.extension) || '.json'; + break; + } + case '__requestType__': + case 'ext': + case 'bundle': + case 'preset': + case 'type': + break; + case RequestType.DIR: + if (bundles.has(item.bundle)) { + bundles.get(item.bundle).config.getDirWithPath(item.dir, item.type, infos); + for (var _iterator = _createForOfIteratorHelperLoose(infos), _step; !(_step = _iterator()).done;) { + var assetInfo = _step.value; + input.push({ + uuid: assetInfo.uuid, + __isNative__: false, + ext: assetInfo.extension || '.json', + bundle: item.bundle + }); + } + infos.length = 0; + } + out.recycle(); + out = null; + break; + case RequestType.PATH: + if (bundles.has(item.bundle)) { + config = bundles.get(item.bundle).config; + info = config.getInfoWithPath(item.path, item.type); + if (info && info.redirect) { + if (!bundles.has(info.redirect)) { + throw new Error("you need to load bundle " + info.redirect + " first"); + } + config = bundles.get(info.redirect).config; + info = config.getAssetInfo(info.uuid); + } + if (!info) { + out.recycle(); + throw new Error("Bundle " + item.bundle + " doesn't contain " + item.path); + } + out.config = config; + out.uuid = info.uuid; + out.info = info; + } + out.ext = item.ext || ((_info2 = info) === null || _info2 === void 0 ? void 0 : _info2.extension) || '.json'; + break; + case RequestType.SCENE: + if (!item.bundle) { + var _bundle = bundles.find(function (bundle) { + return !!bundle.getSceneInfo(item.scene); + }); + item.bundle = _bundle && _bundle.name; + } + if (bundles.has(item.bundle)) { + config = bundles.get(item.bundle).config; + info = config.getSceneInfo(item.scene); + if (info && info.redirect) { + if (!bundles.has(info.redirect)) { + throw new Error("you need to load bundle " + info.redirect + " first"); + } + config = bundles.get(info.redirect).config; + info = config.getAssetInfo(info.uuid); + } + if (!info) { + out.recycle(); + throw new Error("Bundle " + config.name + " doesn't contain scene " + item.scene); + } + out.config = config; + out.uuid = info.uuid; + out.info = info; + } + break; + case '__isNative__': + out.isNative = item.__isNative__; + break; + case RequestType.URL: + out.url = item.url; + out.uuid = item.uuid || item.url; + out.ext = item.ext || extname(item.url); + out.isNative = item.__isNative__ !== undefined ? item.__isNative__ : true; + break; + default: + out.options[key] = item[key]; + } + if (!out) { + return 1; + } + }; + for (var key in item) { + if (_loop2()) break; + } + } + if (!out) { + return 1; + } + task.output.push(out); + if (!out.uuid && !out.url) { + throw new Error("Can not parse this input:" + JSON.stringify(item)); + } + }; + for (var i = 0; i < input.length; i++) { + if (_loop()) continue; + } + return null; + } + function replaceOverrideAsset(task) { + var input = task.output = task.input; + var _loop3 = function _loop3() { + var item = input[i]; + if (assetsOverrideMap.has(item.uuid)) { + var uuid = assetsOverrideMap.get(item.uuid); + var bundle = bundles.find(function (bundle) { + return !!bundle.getAssetInfo(uuid); + }); + if (bundle) { + var _info3; + item.overrideUuid = uuid; + var config = bundle.config; + var info = config.getAssetInfo(uuid); + if (info && info.redirect) { + if (!bundles.has(info.redirect)) { + throw new Error("Please load bundle " + info.redirect + " first"); + } + config = bundles.get(info.redirect).config; + info = config.getAssetInfo(uuid); + } + item.config = config; + item.info = info; + item.ext = item.isNative ? item.ext : ((_info3 = info) === null || _info3 === void 0 ? void 0 : _info3.extension) || '.json'; + } else { + warnID(16201, uuid, item.uuid); + } + } + }; + for (var i = 0; i < input.length; i++) { + if (_loop3()) continue; + } + } + function combine(task) { + var input = task.output = task.input; + for (var i = 0; i < input.length; i++) { + var item = input[i]; + if (item.url) { + continue; + } + var url = ''; + var base = ''; + var config = item.config; + if (item.isNative) { + base = config && config.nativeBase ? config.base + config.nativeBase : legacyCC.assetManager.generalNativeBase; + } else { + base = config && config.importBase ? config.base + config.importBase : legacyCC.assetManager.generalImportBase; + } + var uuid = item.overrideUuid || item.uuid; + var ver = ''; + if (item.info) { + if (item.isNative) { + ver = item.info.nativeVer ? "." + item.info.nativeVer : ''; + } else { + ver = item.info.ver ? "." + item.info.ver : ''; + } + } + if (item.ext === '.ttf') { + url = base + "/" + uuid.slice(0, 2) + "/" + uuid + ver + "/" + item.options.__nativeName__; + } else { + url = base + "/" + uuid.slice(0, 2) + "/" + uuid + ver + item.ext; + } + item.url = url; + } + return null; + } + + var EVENT_ASSET_MISSING = 'asset-missing'; + var AssetManager = exports('e4', function () { + function AssetManager() { + this.pipeline = pipeline.append(preprocess).append(load); + this.fetchPipeline = fetchPipeline.append(preprocess).append(fetch$1); + this.transformPipeline = transformPipeline.append(parse).append(replaceOverrideAsset).append(combine); + this.bundles = bundles; + this.assets = assets; + this.assetsOverrideMap = assetsOverrideMap; + this.generalImportBase = ''; + this.generalNativeBase = ''; + this.dependUtil = dependUtil; + this.force = PREVIEW; + this.allowImageBitmap = false; + this.utils = helper; + this.downloader = downloader$1; + this.parser = parser; + this.packManager = packManager; + this.cacheAsset = true; + this.cacheManager = null; + this.presets = presets; + this.factory = factory; + this.preprocessPipe = preprocess; + this.fetchPipe = fetch$1; + this.loadPipe = load; + this.references = references; + this._releaseManager = releaseManager; + this._files = files; + this._parsed = parsed; + this._parsePipeline = null ; + this._projectBundles = []; + this._eventTarget = new EventTarget(); + } + var _proto = AssetManager.prototype; + _proto.onAssetMissing = function onAssetMissing(func, target) { + this._eventTarget.on(EVENT_ASSET_MISSING, func, target); + }; + _proto.offAssetMissing = function offAssetMissing(func, target) { + this._eventTarget.off(EVENT_ASSET_MISSING, func, target); + }; + _proto.dispatchAssetMissing = function dispatchAssetMissing(parentAsset, owner, propName, uuid) { + this._eventTarget.emit(EVENT_ASSET_MISSING, parentAsset, owner, propName, uuid); + }; + _proto.init = function init(options) { + if (options === void 0) { + options = {}; + } + var server = options.server || settings.querySettings(Settings.Category.ASSETS, 'server') || ''; + var bundleVers = options.bundleVers || settings.querySettings(Settings.Category.ASSETS, 'bundleVers') || {}; + var remoteBundles = options.remoteBundles || settings.querySettings(Settings.Category.ASSETS, 'remoteBundles') || []; + this._files.clear(); + this._parsed.clear(); + this._releaseManager.init(); + this.assets.clear(); + this.bundles.clear(); + this.packManager.init(); + this.downloader.init(server, bundleVers, remoteBundles); + this.parser.init(); + this.dependUtil.init(); + var importBase = options.importBase || settings.querySettings(Settings.Category.ASSETS, 'importBase') || ''; + if (importBase && importBase.endsWith('/')) { + importBase = importBase.substr(0, importBase.length - 1); + } + var nativeBase = options.nativeBase || settings.querySettings(Settings.Category.ASSETS, 'nativeBase') || ''; + if (nativeBase && nativeBase.endsWith('/')) { + nativeBase = nativeBase.substr(0, nativeBase.length - 1); + } + this.generalImportBase = importBase; + this.generalNativeBase = nativeBase; + this._projectBundles = settings.querySettings(Settings.Category.ASSETS, 'projectBundles') || []; + var assetsOverride = settings.querySettings(Settings.Category.ASSETS, 'assetsOverrides') || {}; + for (var _key in assetsOverride) { + this.assetsOverrideMap.set(_key, assetsOverride[_key]); + } + }; + _proto.getBundle = function getBundle(name) { + return bundles.get(name) || null; + }; + _proto.removeBundle = function removeBundle(bundle) { + bundle._destroy(); + bundles.remove(bundle.name); + }; + _proto.loadAny = function loadAny(requests, options, onProgress, onComplete) { + var _parseParameters = parseParameters(options, onProgress, onComplete), + opts = _parseParameters.options, + onProg = _parseParameters.onProgress, + onComp = _parseParameters.onComplete; + opts.preset = opts.preset || 'default'; + requests = Array.isArray(requests) ? requests.slice() : requests; + var task = Task.create({ + input: requests, + onProgress: onProg, + onComplete: asyncify(onComp), + options: opts + }); + pipeline.async(task); + }; + _proto.preloadAny = function preloadAny(requests, options, onProgress, onComplete) { + var _parseParameters2 = parseParameters(options, onProgress, onComplete), + opts = _parseParameters2.options, + onProg = _parseParameters2.onProgress, + onComp = _parseParameters2.onComplete; + opts.preset = opts.preset || 'preload'; + requests = Array.isArray(requests) ? requests.slice() : requests; + var task = Task.create({ + input: requests, + onProgress: onProg, + onComplete: asyncify(onComp), + options: opts + }); + fetchPipeline.async(task); + }; + _proto.loadRemote = function loadRemote(url, options, onComplete) { + var _parseParameters3 = parseParameters(options, undefined, onComplete), + opts = _parseParameters3.options, + onComp = _parseParameters3.onComplete; + if (!opts.reloadAsset && this.assets.has(url)) { + asyncify(onComp)(null, this.assets.get(url)); + return; + } + opts.__isNative__ = true; + opts.preset = opts.preset || 'remote'; + this.loadAny({ + url: url + }, opts, null, function (err, data) { + if (err) { + error(err.message, err.stack); + if (onComp) { + onComp(err, data); + } + } else { + factory.create(url, data, opts.ext || extname(url), opts, function (p1, p2) { + if (onComp) { + onComp(p1, p2); + } + }); + } + }); + }; + _proto.loadBundle = function loadBundle(nameOrUrl, options, onComplete) { + var _parseParameters4 = parseParameters(options, undefined, onComplete), + opts = _parseParameters4.options, + onComp = _parseParameters4.onComplete; + var bundleName = basename(nameOrUrl); + if (this.bundles.has(bundleName)) { + asyncify(onComp)(null, this.getBundle(bundleName)); + return; + } + opts.preset = opts.preset || 'bundle'; + opts.ext = 'bundle'; + opts.__isNative__ = true; + this.loadAny({ + url: nameOrUrl + }, opts, null, function (err, data) { + if (err) { + error(err.message, err.stack); + if (onComp) { + onComp(err, data); + } + } else { + factory.create(nameOrUrl, data, 'bundle', opts, function (p1, p2) { + if (onComp) { + onComp(p1, p2); + } + }); + } + }); + }; + _proto.releaseAsset = function releaseAsset(asset) { + releaseManager.tryRelease(asset, true); + }; + _proto.releaseUnusedAssets = function releaseUnusedAssets() { + assets.forEach(function (asset) { + releaseManager.tryRelease(asset); + }); + }; + _proto.releaseAll = function releaseAll() { + assets.forEach(function (asset) { + releaseManager.tryRelease(asset, true); + }); + }; + _proto.loadWithJson = function loadWithJson(json, options, onProgress, onComplete) { + { + throw new Error('Only valid in Editor'); + } + }; + _createClass(AssetManager, [{ + key: "main", + get: function get() { + return bundles.get(BuiltinBundleName.MAIN) || null; + } + }, { + key: "resources", + get: function get() { + return bundles.get(BuiltinBundleName.RESOURCES) || null; + } + }], [{ + key: "instance", + get: function get() { + if (!this._instance) { + this._instance = new AssetManager(); + } + return this._instance; + } + }]); + return AssetManager; + }()); + AssetManager._instance = void 0; + AssetManager.Pipeline = Pipeline; + AssetManager.Task = Task; + AssetManager.Cache = Cache; + AssetManager.RequestItem = RequestItem; + AssetManager.Bundle = Bundle; + AssetManager.BuiltinBundleName = BuiltinBundleName; + AssetManager.CacheManager = CacheManager; + AssetManager.Downloader = Downloader; + AssetManager.Parser = Parser$1; + AssetManager.DependUtil = DependUtil; + var assetManager = exports('e3', legacyCC.assetManager = AssetManager.instance); + legacyCC.AssetManager = AssetManager; + + var BuiltinResMgr = exports('ea', function () { + function BuiltinResMgr() { + this._resources = {}; + this._materialsToBeCompiled = []; + } + var _proto = BuiltinResMgr.prototype; + _proto.init = function init() { + var resources = this._resources; + var len = 2; + var numChannels = 4; + var blackValueView = new Uint8Array(len * len * numChannels); + var emptyValueView = new Uint8Array(len * len * numChannels); + var greyValueView = new Uint8Array(len * len * numChannels); + var whiteValueView = new Uint8Array(len * len * numChannels); + var normalValueView = new Uint8Array(len * len * numChannels); + var offset = 0; + for (var i = 0; i < len * len; i++) { + blackValueView[offset] = 0; + blackValueView[offset + 1] = 0; + blackValueView[offset + 2] = 0; + blackValueView[offset + 3] = 255; + emptyValueView[offset] = 0; + emptyValueView[offset + 1] = 0; + emptyValueView[offset + 2] = 0; + emptyValueView[offset + 3] = 0; + greyValueView[offset] = 119; + greyValueView[offset + 1] = 119; + greyValueView[offset + 2] = 119; + greyValueView[offset + 3] = 255; + whiteValueView[offset] = 255; + whiteValueView[offset + 1] = 255; + whiteValueView[offset + 2] = 255; + whiteValueView[offset + 3] = 255; + normalValueView[offset] = 127; + normalValueView[offset + 1] = 127; + normalValueView[offset + 2] = 255; + normalValueView[offset + 3] = 255; + offset += numChannels; + } + var defaultSize = 16; + var halfDefaultSize = defaultSize / 2; + var defaultValueView = new Uint8Array(defaultSize * defaultSize * numChannels); + offset = 0; + for (var _i = 0; _i < defaultSize * defaultSize; _i++) { + defaultValueView[offset] = 221; + defaultValueView[offset + 1] = 221; + defaultValueView[offset + 2] = 221; + defaultValueView[offset + 3] = 255; + offset += numChannels; + } + offset = 0; + for (var _i2 = 0; _i2 < halfDefaultSize; _i2++) { + for (var j = 0; j < halfDefaultSize; j++) { + defaultValueView[offset] = 85; + defaultValueView[offset + 1] = 85; + defaultValueView[offset + 2] = 85; + defaultValueView[offset + 3] = 255; + offset += numChannels; + } + offset += halfDefaultSize * numChannels; + } + offset += halfDefaultSize * numChannels; + for (var _i3 = 0; _i3 < halfDefaultSize; _i3++) { + for (var _j = 0; _j < halfDefaultSize; _j++) { + defaultValueView[offset] = 85; + defaultValueView[offset + 1] = 85; + defaultValueView[offset + 2] = 85; + defaultValueView[offset + 3] = 255; + offset += numChannels; + } + offset += halfDefaultSize * numChannels; + } + var blackMemImageSource = { + width: len, + height: len, + _data: blackValueView, + _compressed: false, + format: Texture2D.PixelFormat.RGBA8888 + }; + var emptyMemImageSource = { + width: len, + height: len, + _data: emptyValueView, + _compressed: false, + format: Texture2D.PixelFormat.RGBA8888 + }; + var greyMemImageSource = { + width: len, + height: len, + _data: greyValueView, + _compressed: false, + format: Texture2D.PixelFormat.RGBA8888 + }; + var whiteMemImageSource = { + width: len, + height: len, + _data: whiteValueView, + _compressed: false, + format: Texture2D.PixelFormat.RGBA8888 + }; + var normalMemImageSource = { + width: len, + height: len, + _data: normalValueView, + _compressed: false, + format: Texture2D.PixelFormat.RGBA8888 + }; + var defaultMemImageSource = { + width: defaultSize, + height: defaultSize, + _data: defaultValueView, + _compressed: false, + format: Texture2D.PixelFormat.RGBA8888 + }; + var imgAsset = new ImageAsset(blackMemImageSource); + var blackTexture = new Texture2D(); + blackTexture._uuid = 'black-texture'; + blackTexture.image = imgAsset; + resources[blackTexture._uuid] = blackTexture; + var emptyImgAsset = new ImageAsset(emptyMemImageSource); + var emptyTexture = new Texture2D(); + emptyTexture._uuid = 'empty-texture'; + emptyTexture.image = emptyImgAsset; + resources[emptyTexture._uuid] = emptyTexture; + var blackCubeTexture = new TextureCube(); + blackCubeTexture._uuid = 'black-cube-texture'; + blackCubeTexture.setMipFilter(TextureCube.Filter.NEAREST); + blackCubeTexture.image = { + front: new ImageAsset(blackMemImageSource), + back: new ImageAsset(blackMemImageSource), + left: new ImageAsset(blackMemImageSource), + right: new ImageAsset(blackMemImageSource), + top: new ImageAsset(blackMemImageSource), + bottom: new ImageAsset(blackMemImageSource) + }; + resources[blackCubeTexture._uuid] = blackCubeTexture; + var greyImgAsset = new ImageAsset(greyMemImageSource); + var greyTexture = new Texture2D(); + greyTexture._uuid = 'grey-texture'; + greyTexture.image = greyImgAsset; + resources[greyTexture._uuid] = greyTexture; + var greyCubeTexture = new TextureCube(); + greyCubeTexture._uuid = 'grey-cube-texture'; + greyCubeTexture.setMipFilter(TextureCube.Filter.NEAREST); + greyCubeTexture.image = { + front: new ImageAsset(greyMemImageSource), + back: new ImageAsset(greyMemImageSource), + left: new ImageAsset(greyMemImageSource), + right: new ImageAsset(greyMemImageSource), + top: new ImageAsset(greyMemImageSource), + bottom: new ImageAsset(greyMemImageSource) + }; + resources[greyCubeTexture._uuid] = greyCubeTexture; + var whiteImgAsset = new ImageAsset(whiteMemImageSource); + var whiteTexture = new Texture2D(); + whiteTexture._uuid = 'white-texture'; + whiteTexture.image = whiteImgAsset; + resources[whiteTexture._uuid] = whiteTexture; + var whiteCubeTexture = new TextureCube(); + whiteCubeTexture._uuid = 'white-cube-texture'; + whiteCubeTexture.setMipFilter(TextureCube.Filter.NEAREST); + whiteCubeTexture.image = { + front: new ImageAsset(whiteMemImageSource), + back: new ImageAsset(whiteMemImageSource), + left: new ImageAsset(whiteMemImageSource), + right: new ImageAsset(whiteMemImageSource), + top: new ImageAsset(whiteMemImageSource), + bottom: new ImageAsset(whiteMemImageSource) + }; + resources[whiteCubeTexture._uuid] = whiteCubeTexture; + var normalImgAsset = new ImageAsset(normalMemImageSource); + var normalTexture = new Texture2D(); + normalTexture._uuid = 'normal-texture'; + normalTexture.image = normalImgAsset; + resources[normalTexture._uuid] = normalTexture; + var defaultImgAsset = new ImageAsset(defaultMemImageSource); + var defaultTexture = new Texture2D(); + defaultTexture._uuid = 'default-texture'; + defaultTexture.image = defaultImgAsset; + resources[defaultTexture._uuid] = defaultTexture; + var defaultCubeTexture = new TextureCube(); + defaultCubeTexture.setMipFilter(TextureCube.Filter.NEAREST); + defaultCubeTexture._uuid = 'default-cube-texture'; + defaultCubeTexture.image = { + front: new ImageAsset(defaultMemImageSource), + back: new ImageAsset(defaultMemImageSource), + left: new ImageAsset(defaultMemImageSource), + right: new ImageAsset(defaultMemImageSource), + top: new ImageAsset(defaultMemImageSource), + bottom: new ImageAsset(defaultMemImageSource) + }; + resources[defaultCubeTexture._uuid] = defaultCubeTexture; + if (legacyCC.SpriteFrame) { + var spriteFrame = new legacyCC.SpriteFrame(); + var image = imgAsset; + var texture = new Texture2D(); + texture.image = image; + spriteFrame.texture = texture; + spriteFrame._uuid = 'default-spriteframe'; + resources[spriteFrame._uuid] = spriteFrame; + } + }; + _proto.addAsset = function addAsset(key, asset) { + this._resources[key] = asset; + }; + _proto.get = function get(uuid) { + return this._resources[uuid]; + }; + _proto.loadBuiltinAssets = function loadBuiltinAssets() { + var _this = this; + var builtinAssets = settings.querySettings(Settings.Category.ENGINE, 'builtinAssets'); + if (!builtinAssets) return Promise.resolve(); + var resources = this._resources; + return new Promise(function (resolve, reject) { + assetManager.loadBundle(BuiltinBundleName.INTERNAL, function (err, bundle) { + if (err) { + reject(err); + return; + } + assetManager.loadAny(builtinAssets, function (err, assets) { + if (err) { + reject(err); + } else { + assets.forEach(function (asset) { + resources[asset.name] = asset; + { + releaseManager.addIgnoredAsset(asset); + } + if (asset instanceof legacyCC.Material) { + _this._materialsToBeCompiled.push(asset); + } + }); + resolve(); + } + }); + }); + }); + }; + _proto.compileBuiltinMaterial = function compileBuiltinMaterial() { + for (var i = 0; i < this._materialsToBeCompiled.length; ++i) { + var mat = this._materialsToBeCompiled[i]; + for (var j = 0; j < mat.passes.length; ++j) { + mat.passes[j].tryCompile(); + } + } + this._materialsToBeCompiled.length = 0; + }; + return BuiltinResMgr; + }()); + var builtinResMgr = exports('eb', legacyCC.builtinResMgr = new BuiltinResMgr()); + + var getPhaseID = exports('db', function () { + var phases = new Map(); + var phaseNum = 0; + return function (phaseName) { + if (typeof phaseName === 'number') { + return phaseName; + } + if (!phases.has(phaseName)) { + phases.set(phaseName, 1 << phaseNum); + phaseNum++; + } + return phases.get(phaseName); + }; + }()); + + var INITIAL_CAPACITY = 32; + var MAX_CAPACITY = 1024; + var InstancedBuffer = exports('d4', function () { + function InstancedBuffer(pass) { + this.instances = []; + this.pass = void 0; + this.hasPendingModels = false; + this.dynamicOffsets = []; + this._device = void 0; + this._device = pass.device; + this.pass = pass; + } + var _proto = InstancedBuffer.prototype; + _proto.destroy = function destroy() { + for (var i = 0; i < this.instances.length; ++i) { + var instance = this.instances[i]; + instance.vb.destroy(); + instance.ia.destroy(); + } + this.instances.length = 0; + }; + _proto.merge = function merge(subModel, passIdx, shaderImplant) { + if (shaderImplant === void 0) { + shaderImplant = null; + } + var attrs = subModel.instancedAttributeBlock; + var stride = attrs.buffer.length; + if (!stride) { + return; + } + var sourceIA = subModel.inputAssembler; + var lightingMap = subModel.descriptorSet.getTexture(UNIFORM_LIGHTMAP_TEXTURE_BINDING); + var reflectionProbeCubemap = subModel.descriptorSet.getTexture(UNIFORM_REFLECTION_PROBE_CUBEMAP_BINDING); + var reflectionProbePlanarMap = subModel.descriptorSet.getTexture(UNIFORM_REFLECTION_PROBE_TEXTURE_BINDING); + var reflectionProbeBlendCubemap = subModel.descriptorSet.getTexture(UNIFORM_REFLECTION_PROBE_BLEND_CUBEMAP_BINDING); + var useReflectionProbeType = subModel.useReflectionProbeType; + var shader = shaderImplant; + if (!shader) { + shader = subModel.shaders[passIdx]; + } + var descriptorSet = subModel.descriptorSet; + for (var i = 0; i < this.instances.length; ++i) { + var _instance$ia$indexBuf, _sourceIA$indexBuffer; + var instance = this.instances[i]; + if (((_instance$ia$indexBuf = instance.ia.indexBuffer) === null || _instance$ia$indexBuf === void 0 ? void 0 : _instance$ia$indexBuf.objectID) !== ((_sourceIA$indexBuffer = sourceIA.indexBuffer) === null || _sourceIA$indexBuffer === void 0 ? void 0 : _sourceIA$indexBuffer.objectID) || instance.count >= MAX_CAPACITY) { + continue; + } + if (instance.lightingMap.objectID !== lightingMap.objectID) { + continue; + } + if (instance.useReflectionProbeType !== useReflectionProbeType) { + continue; + } + if (instance.reflectionProbeCubemap.objectID !== reflectionProbeCubemap.objectID) { + continue; + } + if (instance.reflectionProbePlanarMap.objectID !== reflectionProbePlanarMap.objectID) { + continue; + } + if (instance.reflectionProbeBlendCubemap.objectID !== reflectionProbeBlendCubemap.objectID) { + continue; + } + if (instance.stride !== stride) { + continue; + } + if (instance.count >= instance.capacity) { + instance.capacity <<= 1; + var newSize = instance.stride * instance.capacity; + var oldData = instance.data; + instance.data = new Uint8Array(newSize); + instance.data.set(oldData); + instance.vb.resize(newSize); + } + instance.shader = shader; + instance.descriptorSet = descriptorSet; + instance.data.set(attrs.buffer, instance.stride * instance.count++); + this.hasPendingModels = true; + return; + } + var vb = this._device.createBuffer(new BufferInfo(BufferUsageBit.VERTEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.HOST | MemoryUsageBit.DEVICE, stride * INITIAL_CAPACITY, stride)); + var data = new Uint8Array(stride * INITIAL_CAPACITY); + var vertexBuffers = sourceIA.vertexBuffers.slice(); + var attributes = sourceIA.attributes.slice(); + var indexBuffer = sourceIA.indexBuffer; + for (var _i = 0; _i < attrs.attributes.length; _i++) { + var attr = attrs.attributes[_i]; + var newAttr = new Attribute(attr.name, attr.format, attr.isNormalized, vertexBuffers.length, true); + attributes.push(newAttr); + } + data.set(attrs.buffer); + vertexBuffers.push(vb); + var iaInfo = new InputAssemblerInfo(attributes, vertexBuffers, indexBuffer); + var ia = this._device.createInputAssembler(iaInfo); + this.instances.push({ + count: 1, + capacity: INITIAL_CAPACITY, + vb: vb, + data: data, + ia: ia, + stride: stride, + shader: shader, + descriptorSet: descriptorSet, + lightingMap: lightingMap, + reflectionProbeCubemap: reflectionProbeCubemap, + reflectionProbePlanarMap: reflectionProbePlanarMap, + useReflectionProbeType: useReflectionProbeType, + reflectionProbeBlendCubemap: reflectionProbeBlendCubemap + }); + this.hasPendingModels = true; + }; + _proto.uploadBuffers = function uploadBuffers(cmdBuff) { + for (var i = 0; i < this.instances.length; ++i) { + var instance = this.instances[i]; + if (!instance.count) { + continue; + } + instance.ia.instanceCount = instance.count; + cmdBuff.updateBuffer(instance.vb, instance.data); + } + }; + _proto.clear = function clear() { + for (var i = 0; i < this.instances.length; ++i) { + var instance = this.instances[i]; + instance.count = 0; + } + this.hasPendingModels = false; + }; + return InstancedBuffer; + }()); + + var _bufferInfo = new BufferInfo(BufferUsageBit.UNIFORM | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE); + var _bufferViewInfo = new BufferViewInfo(null); + var _dsInfo$2 = new DescriptorSetInfo(null); + var _materialSet = 1; + var BatchingSchemes; + (function (BatchingSchemes) { + BatchingSchemes[BatchingSchemes["NONE"] = 0] = "NONE"; + BatchingSchemes[BatchingSchemes["INSTANCING"] = 1] = "INSTANCING"; + })(BatchingSchemes || (BatchingSchemes = {})); + var Pass = function () { + Pass.fillPipelineInfo = function fillPipelineInfo(pass, info) { + if (info.priority !== undefined) { + pass._priority = info.priority; + } + if (info.primitive !== undefined) { + pass._primitive = info.primitive; + } + if (info.stage !== undefined) { + pass._stage = info.stage; + } + if (info.dynamicStates !== undefined) { + pass._dynamicStates = info.dynamicStates; + } + if (info.phase !== undefined) { + pass._phase = getPhaseID(info.phase); + } + var bs = pass._bs; + if (info.blendState) { + var bsInfo = info.blendState; + var targets = bsInfo.targets; + if (targets) { + targets.forEach(function (t, i) { + bs.setTarget(i, t); + }); + } + if (bsInfo.isA2C !== undefined) { + bs.isA2C = bsInfo.isA2C; + } + if (bsInfo.isIndepend !== undefined) { + bs.isIndepend = bsInfo.isIndepend; + } + if (bsInfo.blendColor !== undefined) { + bs.blendColor = bsInfo.blendColor; + } + } + pass._rs.assign(info.rasterizerState); + pass._dss.assign(info.depthStencilState); + }; + Pass.getPassHash = function getPassHash(pass) { + var shaderKey = ''; + if (legacyCC.rendering && legacyCC.rendering.enableEffectImport) { + var key = legacyCC.rendering.programLib.getKey(pass._phaseID, pass.program, pass.defines); + shaderKey = pass._phaseID.toString() + "," + key; + } else { + shaderKey = programLib.getKey(pass.program, pass.defines); + } + var res = shaderKey + "," + pass._primitive + "," + pass._dynamicStates; + res += serializeBlendState(pass._bs); + res += serializeDepthStencilState(pass._dss); + res += serializeRasterizerState(pass._rs); + return murmurhash2_32_gc(res, 666); + }; + function Pass(root) { + this._rootBuffer = null; + this._buffers = []; + this._descriptorSet = null; + this._pipelineLayout = null; + this._passIndex = 0; + this._propertyIndex = 0; + this._programName = ''; + this._dynamics = {}; + this._propertyHandleMap = {}; + this._rootBlock = null; + this._blocksInt = []; + this._blocks = []; + this._shaderInfo = null; + this._defines = {}; + this._properties = {}; + this._shader = null; + this._bs = new BlendState$1(); + this._dss = new DepthStencilState(); + this._rs = new RasterizerState(); + this._priority = RenderPriority.DEFAULT; + this._stage = RenderPassStage.DEFAULT; + this._phase = getPhaseID('default'); + this._passID = 0xFFFFFFFF; + this._subpassID = 0xFFFFFFFF; + this._phaseID = 0xFFFFFFFF; + this._primitive = PrimitiveMode.TRIANGLE_LIST; + this._batchingScheme = BatchingSchemes.NONE; + this._dynamicStates = DynamicStateFlagBit.NONE; + this._instancedBuffers = {}; + this._hash = 0; + this._root = void 0; + this._device = void 0; + this._rootBufferDirty = false; + this._root = root; + this._device = deviceManager.gfxDevice; + } + var _proto = Pass.prototype; + _proto.initialize = function initialize(info) { + this._doInit(info); + this.resetUBOs(); + this.resetTextures(); + this.tryCompile(); + }; + _proto.getHandle = function getHandle(name, offset, targetType) { + if (offset === void 0) { + offset = 0; + } + if (targetType === void 0) { + targetType = Type$1.UNKNOWN; + } + var handle = this._propertyHandleMap[name]; + if (!handle) { + return 0; + } + if (targetType) { + handle = customizeType(handle, targetType); + } else if (offset) { + handle = customizeType(handle, getTypeFromHandle(handle) - offset); + } + return handle + offset; + }; + _proto.getBinding = function getBinding(name) { + var handle = this.getHandle(name); + if (!handle) { + return -1; + } + return Pass.getBindingFromHandle(handle); + }; + _proto.setUniform = function setUniform(handle, value) { + var binding = Pass.getBindingFromHandle(handle); + var type = Pass.getTypeFromHandle(handle); + var ofs = Pass.getOffsetFromHandle(handle); + var block = this._getBlockView(type, binding); + { + var validator = type2validator[type]; + assertID(Boolean(validator && validator(value)), 12011, binding, Type$1[type]); + } + type2writer[type](block, value, ofs); + this._rootBufferDirty = true; + }; + _proto.getUniform = function getUniform(handle, out) { + var binding = Pass.getBindingFromHandle(handle); + var type = Pass.getTypeFromHandle(handle); + var ofs = Pass.getOffsetFromHandle(handle); + var block = this._getBlockView(type, binding); + return type2reader[type](block, out, ofs); + }; + _proto.setUniformArray = function setUniformArray(handle, value) { + var binding = Pass.getBindingFromHandle(handle); + var type = Pass.getTypeFromHandle(handle); + var stride = GetTypeSize(type) >> 2; + var block = this._getBlockView(type, binding); + var ofs = Pass.getOffsetFromHandle(handle); + for (var i = 0; i < value.length; i++, ofs += stride) { + if (value[i] === null) { + continue; + } + type2writer[type](block, value[i], ofs); + } + this._rootBufferDirty = true; + }; + _proto.bindTexture = function bindTexture(binding, value, index) { + this._descriptorSet.bindTexture(binding, value, index || 0); + }; + _proto.bindSampler = function bindSampler(binding, value, index) { + this._descriptorSet.bindSampler(binding, value, index || 0); + }; + _proto.setDynamicState = function setDynamicState(state, value) { + var ds = this._dynamics[state]; + if (ds && ds.value === value) { + return; + } + ds.value = value; + ds.dirty = true; + }; + _proto.overridePipelineStates = function overridePipelineStates(original, overrides) { + warnID(12102); + }; + _proto.update = function update() { + if (!this._descriptorSet) { + errorID(12006); + return; + } + if (this._rootBuffer && this._rootBufferDirty) { + this._rootBuffer.update(this._rootBlock); + this._rootBufferDirty = false; + } + this._descriptorSet.update(); + }; + _proto.getInstancedBuffer = function getInstancedBuffer(extraKey) { + if (extraKey === void 0) { + extraKey = 0; + } + return this._instancedBuffers[extraKey] || (this._instancedBuffers[extraKey] = new InstancedBuffer(this)); + }; + _proto.destroy = function destroy() { + for (var i = 0; i < this._shaderInfo.blocks.length; i++) { + var u = this._shaderInfo.blocks[i]; + this._buffers[u.binding].destroy(); + } + this._buffers = []; + if (this._rootBuffer) { + this._rootBuffer.destroy(); + this._rootBuffer = null; + } + for (var ib in this._instancedBuffers) { + this._instancedBuffers[ib].destroy(); + } + this._descriptorSet.destroy(); + this._rs.destroy(); + this._dss.destroy(); + this._bs.destroy(); + }; + _proto.resetUniform = function resetUniform(name) { + var handle = this.getHandle(name); + if (!handle) { + return; + } + var type = Pass.getTypeFromHandle(handle); + var binding = Pass.getBindingFromHandle(handle); + var ofs = Pass.getOffsetFromHandle(handle); + var count = Pass.getCountFromHandle(handle); + var block = this._getBlockView(type, binding); + var info = this._properties[name]; + var givenDefault = info && info.value; + var value = givenDefault || getDefaultFromType(type); + var size = (GetTypeSize(type) >> 2) * count; + for (var k = 0; k + value.length <= size; k += value.length) { + block.set(value, ofs + k); + } + this._rootBufferDirty = true; + }; + _proto.resetTexture = function resetTexture(name, index) { + var handle = this.getHandle(name); + if (!handle) { + return; + } + var type = Pass.getTypeFromHandle(handle); + var binding = Pass.getBindingFromHandle(handle); + var info = this._properties[name]; + var value = info && info.value; + var texName = value ? "" + value + getStringFromType(type) : getDefaultFromType(type); + var textureBase = builtinResMgr.get(texName); + var texture = textureBase && textureBase.getGFXTexture(); + var samplerInfo = info && info.samplerHash !== undefined ? Sampler.unpackFromHash(info.samplerHash) : textureBase && textureBase.getSamplerInfo(); + var sampler = this._device.getSampler(samplerInfo); + this._descriptorSet.bindSampler(binding, sampler, index || 0); + this._descriptorSet.bindTexture(binding, texture, index || 0); + }; + _proto.resetUBOs = function resetUBOs() { + for (var i = 0; i < this._shaderInfo.blocks.length; i++) { + var u = this._shaderInfo.blocks[i]; + var ofs = 0; + for (var j = 0; j < u.members.length; j++) { + var cur = u.members[j]; + var block = this._getBlockView(cur.type, u.binding); + var info = this._properties[cur.name]; + var givenDefault = info && info.value; + var value = givenDefault || getDefaultFromType(cur.type); + var size = (GetTypeSize(cur.type) >> 2) * cur.count; + for (var k = 0; k + value.length <= size; k += value.length) { + block.set(value, ofs + k); + } + ofs += size; + } + } + this._rootBufferDirty = true; + }; + _proto.resetTextures = function resetTextures() { + for (var i = 0; i < this._shaderInfo.samplerTextures.length; i++) { + var u = this._shaderInfo.samplerTextures[i]; + for (var j = 0; j < u.count; j++) { + this.resetTexture(u.name, j); + } + } + }; + _proto.tryCompile = function tryCompile() { + var pipeline = this._root.pipeline; + if (!pipeline) { + return false; + } + this._syncBatchingScheme(); + if (legacyCC.rendering && legacyCC.rendering.enableEffectImport) { + var _programLib = legacyCC.rendering.programLib; + var program = _programLib.getProgramVariant(this._device, this._phaseID, this._programName, this._defines); + if (!program) { + warnID(12103, this._programName); + return false; + } + this._shader = program.shader; + this._pipelineLayout = _programLib.getPipelineLayout(this.device, this._phaseID, this._programName); + } else { + var shader = programLib.getGFXShader(this._device, this._programName, this._defines, pipeline); + if (!shader) { + warnID(12104, this._programName); + return false; + } + this._shader = shader; + this._pipelineLayout = programLib.getTemplateInfo(this._programName).pipelineLayout; + } + this._hash = Pass.getPassHash(this); + return true; + }; + _proto.getShaderVariant = function getShaderVariant(patches) { + if (patches === void 0) { + patches = null; + } + if (!this._shader && !this.tryCompile()) { + warnID(12105); + return null; + } + if (!patches) { + return this._shader; + } + var pipeline = this._root.pipeline; + for (var _i = 0; _i < patches.length; _i++) { + var patch = patches[_i]; + this._defines[patch.name] = patch.value; + } + if (this._isBlend) { + this._defines.CC_IS_TRANSPARENCY_PASS = 1; + } + var shader = null; + if (legacyCC.rendering && legacyCC.rendering.enableEffectImport) { + var program = legacyCC.rendering.programLib.getProgramVariant(this._device, this._phaseID, this._programName, this._defines); + if (program) { + shader = program.shader; + } + } else { + shader = programLib.getGFXShader(this._device, this._programName, this._defines, pipeline); + } + for (var _i2 = 0; _i2 < patches.length; _i2++) { + var _patch = patches[_i2]; + delete this._defines[_patch.name]; + } + return shader; + }; + _proto.beginChangeStatesSilently = function beginChangeStatesSilently() {}; + _proto.endChangeStatesSilently = function endChangeStatesSilently() {}; + _proto._doInit = function _doInit(info, copyDefines) { + if (copyDefines === void 0) { + copyDefines = false; + } + this._priority = RenderPriority.DEFAULT; + this._stage = RenderPassStage.DEFAULT; + if (legacyCC.rendering && legacyCC.rendering.enableEffectImport) { + var r = legacyCC.rendering; + if (typeof info.phase === 'number') { + this._passID = info._passID; + this._subpassID = info._subpassID; + this._phaseID = info._phaseID; + } else { + this._passID = r.getPassID(info.pass); + if (this._passID !== r.INVALID_ID) { + if (info.subpass) { + this._subpassID = r.getSubpassID(this._passID, info.subpass); + this._phaseID = r.getPhaseID(this._subpassID, info.phase); + } else { + this._phaseID = r.getPhaseID(this._passID, info.phase); + } + } + } + if (this._passID === r.INVALID_ID) { + errorID(12107, info.program); + return; + } + if (this._phaseID === r.INVALID_ID) { + errorID(12108, info.program); + return; + } + } + this._phase = getPhaseID('default'); + this._primitive = PrimitiveMode.TRIANGLE_LIST; + this._passIndex = info.passIndex; + this._propertyIndex = info.propertyIndex !== undefined ? info.propertyIndex : info.passIndex; + this._programName = info.program; + this._defines = copyDefines ? _extends({}, info.defines) : info.defines; + if (legacyCC.rendering && legacyCC.rendering.enableEffectImport) { + this._shaderInfo = legacyCC.rendering.programLib.getProgramInfo(this._phaseID, this._programName); + } else { + this._shaderInfo = programLib.getTemplate(info.program); + } + this._properties = info.properties || this._properties; + var device = this._device; + Pass.fillPipelineInfo(this, info); + if (info.stateOverrides) { + Pass.fillPipelineInfo(this, info.stateOverrides); + } + if (legacyCC.rendering && legacyCC.rendering.enableEffectImport) { + _dsInfo$2.layout = legacyCC.rendering.programLib.getMaterialDescriptorSetLayout(this._device, this._phaseID, info.program); + } else { + _dsInfo$2.layout = programLib.getDescriptorSetLayout(this._device, info.program); + } + this._descriptorSet = this._device.createDescriptorSet(_dsInfo$2); + var blocks = this._shaderInfo.blocks; + var blockSizes; + var handleMap; + if (legacyCC.rendering && legacyCC.rendering.enableEffectImport) { + var _programLib2 = legacyCC.rendering.programLib; + blockSizes = _programLib2.getBlockSizes(this._phaseID, this._programName); + handleMap = _programLib2.getHandleMap(this._phaseID, this._programName); + } else { + var tmplInfo = programLib.getTemplateInfo(info.program); + blockSizes = tmplInfo.blockSizes; + handleMap = tmplInfo.handleMap; + } + if (legacyCC.rendering && legacyCC.rendering.enableEffectImport) { + var _programLib3 = legacyCC.rendering.programLib; + var shaderInfo = _programLib3.getShaderInfo(this._phaseID, this.program); + this._buildMaterialUniformBlocks(device, shaderInfo.blocks, blockSizes); + } else { + this._buildUniformBlocks(device, blocks, blockSizes); + } + var directHandleMap = this._propertyHandleMap = handleMap; + var indirectHandleMap = {}; + for (var name in this._properties) { + var prop = this._properties[name]; + if (!prop.handleInfo) { + continue; + } + indirectHandleMap[name] = this.getHandle.apply(this, prop.handleInfo); + } + Object.assign(directHandleMap, indirectHandleMap); + }; + _proto._buildUniformBlocks = function _buildUniformBlocks(device, blocks, blockSizes) { + var alignment = device.capabilities.uboOffsetAlignment; + var startOffsets = []; + var lastSize = 0; + var lastOffset = 0; + for (var i = 0; i < blocks.length; i++) { + var size = blockSizes[i]; + startOffsets.push(lastOffset); + lastOffset += Math.ceil(size / alignment) * alignment; + lastSize = size; + } + var totalSize = startOffsets[startOffsets.length - 1] + lastSize; + if (totalSize) { + _bufferInfo.size = Math.ceil(totalSize / 16) * 16; + this._rootBuffer = device.createBuffer(_bufferInfo); + this._rootBlock = new ArrayBuffer(totalSize); + } + for (var _i3 = 0, count = 0; _i3 < blocks.length; _i3++) { + var binding = blocks[_i3].binding; + var _size = blockSizes[_i3]; + _bufferViewInfo.buffer = this._rootBuffer; + _bufferViewInfo.offset = startOffsets[count++]; + _bufferViewInfo.range = Math.ceil(_size / 16) * 16; + var bufferView = this._buffers[binding] = device.createBuffer(_bufferViewInfo); + this._blocks[binding] = new Float32Array(this._rootBlock, _bufferViewInfo.offset, _size / Float32Array.BYTES_PER_ELEMENT); + this._blocksInt[binding] = new Int32Array(this._blocks[binding].buffer, this._blocks[binding].byteOffset, this._blocks[binding].length); + this._descriptorSet.bindBuffer(binding, bufferView); + } + }; + _proto._buildMaterialUniformBlocks = function _buildMaterialUniformBlocks(device, blocks, blockSizes) { + var alignment = device.capabilities.uboOffsetAlignment; + var startOffsets = []; + var lastSize = 0; + var lastOffset = 0; + for (var i = 0; i < blocks.length; i++) { + var block = blocks[i]; + if (block.set !== _materialSet) { + continue; + } + var size = blockSizes[i]; + startOffsets.push(lastOffset); + lastOffset += Math.ceil(size / alignment) * alignment; + lastSize = size; + } + if (lastSize !== 0) { + var totalSize = startOffsets[startOffsets.length - 1] + lastSize; + if (totalSize) { + _bufferInfo.size = Math.ceil(totalSize / 16) * 16; + this._rootBuffer = device.createBuffer(_bufferInfo); + this._rootBlock = new ArrayBuffer(totalSize); + } + } + for (var _i4 = 0, count = 0; _i4 < blocks.length; _i4++) { + var _block = blocks[_i4]; + if (_block.set !== _materialSet) { + continue; + } + var binding = blocks[_i4].binding; + var _size2 = blockSizes[_i4]; + _bufferViewInfo.buffer = this._rootBuffer; + _bufferViewInfo.offset = startOffsets[count++]; + _bufferViewInfo.range = Math.ceil(_size2 / 16) * 16; + var bufferView = this._buffers[binding] = device.createBuffer(_bufferViewInfo); + this._blocks[binding] = new Float32Array(this._rootBlock, _bufferViewInfo.offset, _size2 / Float32Array.BYTES_PER_ELEMENT); + this._blocksInt[binding] = new Int32Array(this._blocks[binding].buffer, this._blocks[binding].byteOffset, this._blocks[binding].length); + this._descriptorSet.bindBuffer(binding, bufferView); + } + }; + _proto._syncBatchingScheme = function _syncBatchingScheme() { + if (this._defines.USE_INSTANCING) { + if (this._device.hasFeature(Feature.INSTANCED_ARRAYS)) { + this._batchingScheme = BatchingSchemes.INSTANCING; + } else { + this._defines.USE_INSTANCING = false; + this._batchingScheme = BatchingSchemes.NONE; + } + } else { + this._batchingScheme = BatchingSchemes.NONE; + } + }; + _proto._getBlockView = function _getBlockView(type, binding) { + return type < Type$1.FLOAT ? this._blocksInt[binding] : this._blocks[binding]; + }; + _proto._initPassFromTarget = function _initPassFromTarget(target, dss, hashFactor) { + this._priority = target.priority; + this._stage = target.stage; + this._phase = target.phase; + this._phaseID = target._phaseID; + this._passID = target._passID; + this._batchingScheme = target.batchingScheme; + this._primitive = target.primitive; + this._dynamicStates = target.dynamicStates; + this._bs = target.blendState; + this._dss = dss; + this._descriptorSet = target.descriptorSet; + this._rs = target.rasterizerState; + this._passIndex = target.passIndex; + this._propertyIndex = target.propertyIndex; + this._programName = target.program; + this._defines = target.defines; + this._shaderInfo = target._shaderInfo; + this._properties = target._properties; + this._blocks = target._blocks; + this._blocksInt = target._blocksInt; + this._dynamics = target._dynamics; + this._shader = target._shader; + if (legacyCC.rendering && legacyCC.rendering.enableEffectImport) { + this._pipelineLayout = legacyCC.rendering.programLib.getPipelineLayout(this.device, this._phaseID, this._programName); + } else { + this._pipelineLayout = programLib.getTemplateInfo(this._programName).pipelineLayout; + } + this._hash = target._hash ^ hashFactor; + }; + _proto._updatePassHash = function _updatePassHash() { + this._hash = Pass.getPassHash(this); + }; + _proto.setRootBufferDirty = function setRootBufferDirty(val) { + this._rootBufferDirty = val; + }; + _proto.setPriority = function setPriority(val) { + this._priority = val; + }; + _createClass(Pass, [{ + key: "_isBlend", + get: function get() { + var bBlend = false; + for (var _iterator = _createForOfIteratorHelperLoose(this.blendState.targets), _step; !(_step = _iterator()).done;) { + var target = _step.value; + if (target.blend) { + bBlend = true; + } + } + return bBlend; + } + }, { + key: "root", + get: function get() { + return this._root; + } + }, { + key: "device", + get: function get() { + return this._device; + } + }, { + key: "shaderInfo", + get: function get() { + return this._shaderInfo; + } + }, { + key: "localSetLayout", + get: function get() { + if (legacyCC.rendering && legacyCC.rendering.enableEffectImport) { + return legacyCC.rendering.programLib.getLocalDescriptorSetLayout(this._device, this._phaseID, this._programName); + } else { + return programLib.getDescriptorSetLayout(this._device, this._programName, true); + } + } + }, { + key: "program", + get: function get() { + return this._programName; + } + }, { + key: "properties", + get: function get() { + return this._properties; + } + }, { + key: "defines", + get: function get() { + return this._defines; + } + }, { + key: "passIndex", + get: function get() { + return this._passIndex; + } + }, { + key: "propertyIndex", + get: function get() { + return this._propertyIndex; + } + }, { + key: "dynamics", + get: function get() { + return this._dynamics; + } + }, { + key: "blocks", + get: function get() { + return this._blocks; + } + }, { + key: "blocksInt", + get: function get() { + return this._blocksInt; + } + }, { + key: "rootBufferDirty", + get: function get() { + return this._rootBufferDirty; + } + }, { + key: "priority", + get: function get() { + return this._priority; + } + }, { + key: "primitive", + get: function get() { + return this._primitive; + } + }, { + key: "stage", + get: function get() { + return this._stage; + } + }, { + key: "phase", + get: function get() { + return this._phase; + } + }, { + key: "passID", + get: function get() { + return this._passID; + } + }, { + key: "phaseID", + get: function get() { + return this._phaseID; + } + }, { + key: "rasterizerState", + get: function get() { + return this._rs; + } + }, { + key: "depthStencilState", + get: function get() { + return this._dss; + } + }, { + key: "blendState", + get: function get() { + return this._bs; + } + }, { + key: "dynamicStates", + get: function get() { + return this._dynamicStates; + } + }, { + key: "batchingScheme", + get: function get() { + return this._batchingScheme; + } + }, { + key: "descriptorSet", + get: function get() { + return this._descriptorSet; + } + }, { + key: "hash", + get: function get() { + return this._hash; + } + }, { + key: "pipelineLayout", + get: function get() { + return this._pipelineLayout; + } + }]); + return Pass; + }(); + Pass.getTypeFromHandle = getTypeFromHandle; + Pass.getBindingFromHandle = getBindingFromHandle; + Pass.getCountFromHandle = getCountFromHandle; + Pass.getOffsetFromHandle = getOffsetFromHandle; + function serializeBlendState(bs) { + var res = ",bs," + bs.isA2C; + for (var _iterator2 = _createForOfIteratorHelperLoose(bs.targets), _step2; !(_step2 = _iterator2()).done;) { + var t = _step2.value; + res += ",bt," + t.blend + "," + t.blendEq + "," + t.blendAlphaEq + "," + t.blendColorMask; + res += "," + t.blendSrc + "," + t.blendDst + "," + t.blendSrcAlpha + "," + t.blendDstAlpha; + } + return res; + } + function serializeRasterizerState(rs) { + return ",rs," + rs.cullMode + "," + rs.depthBias + "," + rs.isFrontFaceCCW; + } + function serializeDepthStencilState(dss) { + var res = ",dss," + dss.depthTest + "," + dss.depthWrite + "," + dss.depthFunc; + res += "," + dss.stencilTestFront + "," + dss.stencilFuncFront + "," + dss.stencilRefFront + "," + dss.stencilReadMaskFront; + res += "," + dss.stencilFailOpFront + "," + dss.stencilZFailOpFront + "," + dss.stencilPassOpFront + "," + dss.stencilWriteMaskFront; + res += "," + dss.stencilTestBack + "," + dss.stencilFuncBack + "," + dss.stencilRefBack + "," + dss.stencilReadMaskBack; + res += "," + dss.stencilFailOpBack + "," + dss.stencilZFailOpBack + "," + dss.stencilPassOpBack + "," + dss.stencilWriteMaskBack; + return res; + } + + var PipelineStateManager = exports('d5', function () { + function PipelineStateManager() {} + PipelineStateManager.getOrCreatePipelineState = function getOrCreatePipelineState(device, pass, shader, renderPass, ia) { + var hash1 = pass.hash; + var hash2 = renderPass.hash; + var hash3 = ia.attributesHash; + var hash4 = shader.typedID; + var newHash = hash1 ^ hash2 ^ hash3 ^ hash4; + var pso = this._PSOHashMap.get(newHash); + if (!pso) { + var pipelineLayout = pass.pipelineLayout; + var inputState = new InputState(ia.attributes); + var psoInfo = new PipelineStateInfo(shader, pipelineLayout, renderPass, inputState, pass.rasterizerState, pass.depthStencilState, pass.blendState, pass.primitive, pass.dynamicStates); + pso = device.createPipelineState(psoInfo); + this._PSOHashMap.set(newHash, pso); + } + return pso; + }; + return PipelineStateManager; + }()); + PipelineStateManager._PSOHashMap = new Map(); + + var profilerViewport = new Viewport(); + var profilerScissor = new Rect(); + function SRGBToLinear(out, gamma) { + out.x = gamma.x * gamma.x; + out.y = gamma.y * gamma.y; + out.z = gamma.z * gamma.z; + } + var profilerCamera = null; + function getProfilerCamera() { + return profilerCamera; + } + function decideProfilerCamera(cameras) { + for (var i = cameras.length - 1; i >= 0; --i) { + var camera = cameras[i]; + if (camera.window.swapchain) { + profilerCamera = camera; + return; + } + } + profilerCamera = null; + } + function renderProfiler(device, renderPass, cmdBuff, profiler, camera) { + if (isEnableEffect()) { + return; + } + if (!profiler || !profiler.enabled) { + return; + } + if (camera !== profilerCamera) { + return; + } + var _profiler$subModels$ = profiler.subModels[0], + inputAssembler = _profiler$subModels$.inputAssembler, + passes = _profiler$subModels$.passes, + shaders = _profiler$subModels$.shaders, + descriptorSet = _profiler$subModels$.descriptorSet; + profilerViewport.width = profilerScissor.width = camera.window.width; + profilerViewport.height = profilerScissor.height = camera.window.height; + var pso = PipelineStateManager.getOrCreatePipelineState(device, passes[0], shaders[0], renderPass, inputAssembler); + cmdBuff.setViewport(profilerViewport); + cmdBuff.setScissor(profilerScissor); + cmdBuff.bindPipelineState(pso); + cmdBuff.bindDescriptorSet(SetIndex.MATERIAL, passes[0].descriptorSet); + cmdBuff.bindDescriptorSet(SetIndex.LOCAL, descriptorSet); + cmdBuff.bindInputAssembler(inputAssembler); + cmdBuff.draw(inputAssembler); + } + + var _dec$21, _dec2$1n, _class$1_, _class2$1M, _initializer$1z, _initializer2$1d, _initializer3$U, _initializer4$L, _initializer5$B; + var v4_1 = new Vec4(); + var Material = exports('d_', (_dec$21 = ccclass$t('cc.Material'), _dec2$1n = type$8(EffectAsset), _dec$21(_class$1_ = (_class2$1M = function (_Asset) { + _inheritsLoose(Material, _Asset); + Material.getHash = function getHash(material) { + var hash = 0; + for (var _iterator = _createForOfIteratorHelperLoose(material.passes), _step; !(_step = _iterator()).done;) { + var pass = _step.value; + hash ^= pass.hash; + } + return hash; + }; + function Material() { + var _this; + _this = _Asset.call(this) || this; + _this._effectAsset = _initializer$1z && _initializer$1z(); + _this._techIdx = _initializer2$1d && _initializer2$1d(); + _this._defines = _initializer3$U && _initializer3$U(); + _this._states = _initializer4$L && _initializer4$L(); + _this._props = _initializer5$B && _initializer5$B(); + _this._passes = []; + _this._hash = 0; + return _this; + } + var _proto = Material.prototype; + _proto.initialize = function initialize(info) { + if (this._passes.length) { + warnID(12005); + return; + } + if (!this._defines) { + this._defines = []; + } + if (!this._states) { + this._states = []; + } + if (!this._props) { + this._props = []; + } + this._fillInfo(info); + this._update(); + }; + _proto.reset = function reset(info) { + this.initialize(info); + }; + _proto.destroy = function destroy() { + this._doDestroy(); + return _Asset.prototype.destroy.call(this); + }; + _proto.recompileShaders = function recompileShaders(overrides, passIdx) { + console.warn("Shaders in material asset '" + this.name + "' cannot be modified at runtime, please instantiate the material first."); + }; + _proto.overridePipelineStates = function overridePipelineStates(overrides, passIdx) { + console.warn("Pipeline states in material asset '" + this.name + "' cannot be modified at runtime, please instantiate the material first."); + }; + _proto.onLoaded = function onLoaded() { + this._update(); + }; + _proto.resetUniforms = function resetUniforms(clearPasses) { + if (clearPasses === void 0) { + clearPasses = true; + } + this._props.length = this._passes.length; + for (var i = 0; i < this._props.length; i++) { + this._props[i] = {}; + } + if (!clearPasses) { + return; + } + for (var _iterator2 = _createForOfIteratorHelperLoose(this._passes), _step2; !(_step2 = _iterator2()).done;) { + var pass = _step2.value; + pass.resetUBOs(); + pass.resetTextures(); + } + }; + _proto.setProperty = function setProperty(name, val, passIdx) { + var success = false; + if (passIdx === undefined) { + var passes = this._passes; + var len = passes.length; + for (var i = 0; i < len; i++) { + var pass = passes[i]; + if (this._uploadProperty(pass, name, val)) { + this._props[pass.propertyIndex][name] = val; + success = true; + } + } + } else { + if (passIdx >= this._passes.length) { + console.warn("illegal pass index: " + passIdx + "."); + return; + } + var _pass = this._passes[passIdx]; + if (this._uploadProperty(_pass, name, val)) { + this._props[_pass.propertyIndex][name] = val; + success = true; + } + } + if (!success) { + console.warn("illegal property name: " + name + "."); + } + }; + _proto.getProperty = function getProperty(name, passIdx) { + if (passIdx === undefined) { + var propsArray = this._props; + var len = propsArray.length; + for (var i = 0; i < len; i++) { + var props = propsArray[i]; + if (name in props) { + return props[name]; + } + } + } else { + if (passIdx >= this._passes.length) { + console.warn("illegal pass index: " + passIdx + "."); + return null; + } + var _props = this._props[this._passes[passIdx].propertyIndex]; + if (name in _props) { + return _props[name]; + } + } + return null; + }; + _proto.copy = function copy(mat, overrides) { + this._techIdx = mat._techIdx; + this._props.length = mat._props.length; + for (var i = 0; i < mat._props.length; i++) { + this._props[i] = _extends({}, mat._props[i]); + } + this._defines.length = mat._defines.length; + for (var _i = 0; _i < mat._defines.length; _i++) { + this._defines[_i] = _extends({}, mat._defines[_i]); + } + this._states.length = mat._states.length; + for (var _i2 = 0; _i2 < mat._states.length; _i2++) { + this._states[_i2] = _extends({}, mat._states[_i2]); + } + this._effectAsset = mat._effectAsset; + if (overrides) this._fillInfo(overrides); + this._update(); + }; + _proto._fillInfo = function _fillInfo(info) { + if (info.technique !== undefined) { + this._techIdx = info.technique; + } + if (info.effectAsset) { + this._effectAsset = info.effectAsset; + } else if (info.effectName) { + this._effectAsset = EffectAsset.get(info.effectName); + } + if (info.defines) { + this._prepareInfo(info.defines, this._defines); + } + if (info.states) { + this._prepareInfo(info.states, this._states); + } + }; + _proto._prepareInfo = function _prepareInfo(patch, cur) { + var patchArray = patch; + if (!Array.isArray(patchArray)) { + var len = this._effectAsset ? this._effectAsset.techniques[this._techIdx].passes.length : 1; + patchArray = Array(len).fill(patchArray); + } + for (var i = 0; i < patchArray.length; ++i) { + Object.assign(cur[i] || (cur[i] = {}), patchArray[i]); + } + }; + _proto._createPasses = function _createPasses() { + var tech = this._effectAsset.techniques[this._techIdx || 0]; + if (!tech) { + return []; + } + var passNum = tech.passes.length; + var passes = []; + for (var k = 0; k < passNum; ++k) { + var passInfo = tech.passes[k]; + var propIdx = passInfo.passIndex = k; + var defines = passInfo.defines = this._defines[propIdx] || (this._defines[propIdx] = {}); + passInfo.stateOverrides = this._states[propIdx] || (this._states[propIdx] = {}); + if (passInfo.propertyIndex !== undefined) { + Object.assign(defines, this._defines[passInfo.propertyIndex]); + } + if (passInfo.embeddedMacros !== undefined) { + Object.assign(defines, passInfo.embeddedMacros); + } + if (passInfo["switch"] && !defines[passInfo["switch"]]) { + continue; + } + var pass = new Pass(legacyCC.director.root); + pass.initialize(passInfo); + passes.push(pass); + } + return passes; + }; + _proto._update = function _update(keepProps) { + var _this2 = this; + if (keepProps === void 0) { + keepProps = true; + } + if (this._effectAsset) { + this._passes = this._createPasses(); + var totalPasses = this._effectAsset.techniques[this._techIdx].passes.length; + this._props.length = totalPasses; + if (keepProps) { + this._passes.forEach(function (pass, i) { + var props = _this2._props[i]; + if (!props) { + props = _this2._props[i] = {}; + } + if (pass.propertyIndex !== undefined) { + Object.assign(props, _this2._props[pass.propertyIndex]); + } + for (var p in props) { + _this2._uploadProperty(pass, p, props[p]); + } + }); + } else { + for (var i = 0; i < this._props.length; i++) { + this._props[i] = {}; + } + } + } + this._hash = Material.getHash(this); + }; + _proto._uploadProperty = function _uploadProperty(pass, name, val) { + var handle = pass.getHandle(name); + if (!handle) { + return false; + } + var type = Pass.getTypeFromHandle(handle); + if (type < Type$1.SAMPLER1D) { + if (Array.isArray(val)) { + pass.setUniformArray(handle, val); + } else if (val !== null) { + var _pass$properties$name; + if ((_pass$properties$name = pass.properties[name]) !== null && _pass$properties$name !== void 0 && _pass$properties$name.linear) { + var v4 = val; + SRGBToLinear(v4_1, v4); + v4_1.w = v4.w; + val = v4_1; + } + pass.setUniform(handle, val); + } else { + pass.resetUniform(name); + } + } else if (Array.isArray(val)) { + for (var i = 0; i < val.length; i++) { + this._bindTexture(pass, handle, val[i], i); + } + } else if (val) { + this._bindTexture(pass, handle, val); + } else { + pass.resetTexture(name); + } + return true; + }; + _proto._bindTexture = function _bindTexture(pass, handle, val, index) { + var binding = Pass.getBindingFromHandle(handle); + if (val instanceof Texture) { + pass.bindTexture(binding, val, index); + } else if (val instanceof TextureBase) { + var texture = val.getGFXTexture(); + if (!texture || !texture.width || !texture.height) { + return; + } + pass.bindTexture(binding, texture, index); + pass.bindSampler(binding, val.getGFXSampler(), index); + } + }; + _proto._doDestroy = function _doDestroy() { + if (this._passes && this._passes.length) { + for (var _iterator3 = _createForOfIteratorHelperLoose(this._passes), _step3; !(_step3 = _iterator3()).done;) { + var pass = _step3.value; + pass.destroy(); + } + } + this._passes.length = 0; + }; + _proto.initDefault = function initDefault(uuid) { + _Asset.prototype.initDefault.call(this, uuid); + this.initialize({ + effectName: 'builtin-unlit', + defines: { + USE_COLOR: true + }, + technique: 0 + }); + this.setProperty('mainColor', new Color$1('#ff00ff')); + }; + _proto.validate = function validate() { + return !!this._effectAsset && !this._effectAsset.isDefault && this.passes.length > 0; + }; + _createClass(Material, [{ + key: "effectAsset", + get: function get() { + return this._effectAsset; + } + }, { + key: "effectName", + get: function get() { + return this._effectAsset ? this._effectAsset.name : ''; + } + }, { + key: "technique", + get: function get() { + return this._techIdx; + } + }, { + key: "passes", + get: function get() { + return this._passes; + } + }, { + key: "hash", + get: function get() { + return this._hash; + } + }, { + key: "parent", + get: function get() { + return null; + } + }, { + key: "owner", + get: function get() { + return null; + } + }]); + return Material; + }(Asset), (_initializer$1z = applyDecoratedInitializer(_class2$1M.prototype, "_effectAsset", [_dec2$1n], function () { + return null; + }), _initializer2$1d = applyDecoratedInitializer(_class2$1M.prototype, "_techIdx", [serializable$9], function () { + return 0; + }), _initializer3$U = applyDecoratedInitializer(_class2$1M.prototype, "_defines", [serializable$9], function () { + return []; + }), _initializer4$L = applyDecoratedInitializer(_class2$1M.prototype, "_states", [serializable$9], function () { + return []; + }), _initializer5$B = applyDecoratedInitializer(_class2$1M.prototype, "_props", [serializable$9], function () { + return []; + })), _class2$1M)) || _class$1_)); + legacyCC.Material = Material; + + var ShadowSize = Enum({ + Low_256x256: 256, + Medium_512x512: 512, + High_1024x1024: 1024, + Ultra_2048x2048: 2048 + }); + var ShadowType = Enum({ + Planar: 0, + ShadowMap: 1 + }); + var PCFType = Enum({ + HARD: 0, + SOFT: 1, + SOFT_2X: 2, + SOFT_4X: 3 + }); + var CSMLevel = Enum({ + LEVEL_1: 1, + LEVEL_2: 2, + LEVEL_3: 3, + LEVEL_4: 4 + }); + var CSMOptimizationMode = Enum({ + NONE: 1, + RemoveDuplicates: 2, + DisableRotationFix: 3 + }); + var SHADOW_TYPE_NONE = ShadowType.ShadowMap + 1; + var Shadows = function () { + function Shadows() { + this.fixedSphere = new Sphere(0.0, 0.0, 0.0, 0.01); + this.maxReceived = 4; + this._matLight = new Mat4(); + this._material = null; + this._instancingMaterial = null; + this._enabled = false; + this._type = SHADOW_TYPE_NONE; + this._distance = 0; + this._normal = new Vec3(0, 1, 0); + this._shadowColor = new Color$1(0, 0, 0, 76); + this._size = new Vec2(1024, 1024); + this._shadowMapDirty = false; + } + var _proto = Shadows.prototype; + _proto.getPlanarShader = function getPlanarShader(patches) { + if (!this._material) { + this._material = new Material(); + this._material.initialize({ + effectName: 'pipeline/planar-shadow' + }); + } + var passes = this._material.passes; + { + assert(passes.length > 0, 'passes should not be empty!'); + } + return passes.length > 0 ? passes[0].getShaderVariant(patches) : null; + }; + _proto.initialize = function initialize(shadowsInfo) { + this._enabled = shadowsInfo.enabled; + this._type = this.enabled ? shadowsInfo.type : SHADOW_TYPE_NONE; + this.normal = shadowsInfo.planeDirection; + this.distance = shadowsInfo.planeHeight; + this.shadowColor = shadowsInfo.shadowColor; + this.maxReceived = shadowsInfo.maxReceived; + if (shadowsInfo.shadowMapSize !== this._size.x) { + this.size.set(shadowsInfo.shadowMapSize, shadowsInfo.shadowMapSize); + this._shadowMapDirty = true; + } + }; + _proto.activate = function activate() { + if (this._enabled) { + if (this.type === ShadowType.Planar) { + this._updatePlanarInfo(); + } else { + var root = legacyCC.director.root; + var pipeline = root.pipeline; + pipeline.macros.CC_SHADOW_TYPE = 2; + root.onGlobalPipelineStateChanged(); + } + } else { + var _root = legacyCC.director.root; + var _pipeline = _root.pipeline; + _pipeline.macros.CC_SHADOW_TYPE = 0; + _root.onGlobalPipelineStateChanged(); + } + }; + _proto._updatePlanarInfo = function _updatePlanarInfo() { + if (!this._material) { + this._material = new Material(); + this._material.initialize({ + effectName: 'pipeline/planar-shadow' + }); + } + var root = legacyCC.director.root; + var pipeline = root.pipeline; + pipeline.macros.CC_SHADOW_TYPE = 1; + root.onGlobalPipelineStateChanged(); + }; + _proto.destroy = function destroy() { + if (this._material) { + this._material.destroy(); + } + if (this._instancingMaterial) { + this._instancingMaterial.destroy(); + } + this.fixedSphere.destroy(); + }; + _createClass(Shadows, [{ + key: "enabled", + get: function get() { + return this._enabled; + }, + set: function set(val) { + this._enabled = val; + this.activate(); + } + }, { + key: "type", + get: function get() { + return this._type; + }, + set: function set(val) { + this._type = this.enabled ? val : SHADOW_TYPE_NONE; + this.activate(); + } + }, { + key: "normal", + get: function get() { + return this._normal; + }, + set: function set(val) { + Vec3.copy(this._normal, val); + } + }, { + key: "distance", + get: function get() { + return this._distance; + }, + set: function set(val) { + this._distance = val; + } + }, { + key: "shadowColor", + get: function get() { + return this._shadowColor; + }, + set: function set(color) { + this._shadowColor = color; + } + }, { + key: "size", + get: function get() { + return this._size; + }, + set: function set(val) { + this._size.set(val); + } + }, { + key: "shadowMapDirty", + get: function get() { + return this._shadowMapDirty; + }, + set: function set(val) { + this._shadowMapDirty = val; + } + }, { + key: "matLight", + get: function get() { + return this._matLight; + } + }, { + key: "material", + get: function get() { + return this._material; + } + }, { + key: "instancingMaterial", + get: function get() { + return this._instancingMaterial; + } + }]); + return Shadows; + }(); + Shadows.MAX_FAR = 2000.0; + Shadows.COEFFICIENT_OF_EXPANSION = 2.0 * Math.sqrt(3.0); + legacyCC.Shadows = Shadows; + + var PassInstance = function (_Pass) { + _inheritsLoose(PassInstance, _Pass); + function PassInstance(parent, owner) { + var _this; + _this = _Pass.call(this, parent.root) || this; + _this._parent = void 0; + _this._owner = void 0; + _this._dontNotify = false; + _this._parent = parent; + _this._owner = owner; + _this._doInit(_this._parent, true); + for (var i = 0; i < _this._shaderInfo.blocks.length; i++) { + var u = _this._shaderInfo.blocks[i]; + var block = _this._blocks[u.binding]; + var parentBlock = _this._parent.blocks[u.binding]; + block.set(parentBlock); + } + _this._rootBufferDirty = true; + var paren = _this._parent; + for (var _i = 0; _i < _this._shaderInfo.samplerTextures.length; _i++) { + var _u = _this._shaderInfo.samplerTextures[_i]; + for (var j = 0; j < _u.count; j++) { + var sampler = paren._descriptorSet.getSampler(_u.binding, j); + var texture = paren._descriptorSet.getTexture(_u.binding, j); + _this._descriptorSet.bindSampler(_u.binding, sampler, j); + _this._descriptorSet.bindTexture(_u.binding, texture, j); + } + } + _Pass.prototype.tryCompile.call(_assertThisInitialized(_this)); + return _this; + } + var _proto = PassInstance.prototype; + _proto.overridePipelineStates = function overridePipelineStates(original, overrides) { + this._bs.reset(); + this._rs.reset(); + this._dss.reset(); + Pass.fillPipelineInfo(this, original); + Pass.fillPipelineInfo(this, overrides); + this._onStateChange(); + }; + _proto.tryCompile = function tryCompile(defineOverrides) { + if (defineOverrides) { + if (!overrideMacros(this._defines, defineOverrides)) { + return false; + } + } + var res = _Pass.prototype.tryCompile.call(this); + this._onStateChange(); + return res; + }; + _proto.beginChangeStatesSilently = function beginChangeStatesSilently() { + this._dontNotify = true; + }; + _proto.endChangeStatesSilently = function endChangeStatesSilently() { + this._dontNotify = false; + }; + _proto._syncBatchingScheme = function _syncBatchingScheme() { + this._defines.USE_INSTANCING = false; + this._batchingScheme = BatchingSchemes.NONE; + }; + _proto._onStateChange = function _onStateChange() { + this._hash = Pass.getPassHash(this); + this._owner.onPassStateChange(this._dontNotify); + }; + _createClass(PassInstance, [{ + key: "parent", + get: function get() { + return this._parent; + } + }]); + return PassInstance; + }(Pass); + + var MaterialInstance = function (_Material) { + _inheritsLoose(MaterialInstance, _Material); + function MaterialInstance(info) { + var _this; + _this = _Material.call(this) || this; + _this._passes = []; + _this._parent = void 0; + _this._owner = void 0; + _this._subModelIdx = 0; + _this._parent = info.parent; + _this._owner = info.owner || null; + _this._subModelIdx = info.subModelIdx || 0; + _this.copy(_this._parent); + return _this; + } + var _proto = MaterialInstance.prototype; + _proto.recompileShaders = function recompileShaders(overrides, passIdx) { + if (!this._passes || !this.effectAsset) { + return; + } + if (passIdx === undefined) { + for (var _iterator = _createForOfIteratorHelperLoose(this._passes), _step; !(_step = _iterator()).done;) { + var pass = _step.value; + pass.tryCompile(overrides); + } + } else { + this._passes[passIdx].tryCompile(overrides); + } + }; + _proto.overridePipelineStates = function overridePipelineStates(overrides, passIdx) { + if (!this._passes || !this.effectAsset) { + return; + } + var passInfos = this.effectAsset.techniques[this.technique].passes; + if (passIdx === undefined) { + for (var i = 0; i < this._passes.length; i++) { + var pass = this._passes[i]; + var state = this._states[i] || (this._states[i] = {}); + for (var key in overrides) { + state[key] = overrides[key]; + } + pass.overridePipelineStates(passInfos[pass.passIndex], state); + } + } else { + var _state = this._states[passIdx] || (this._states[passIdx] = {}); + for (var _key in overrides) { + _state[_key] = overrides[_key]; + } + this._passes[passIdx].overridePipelineStates(passInfos[passIdx], _state); + } + }; + _proto.destroy = function destroy() { + this._doDestroy(); + return true; + }; + _proto.onPassStateChange = function onPassStateChange(dontNotify) { + this._hash = Material.getHash(this); + if (!dontNotify && this._owner) { + this._owner._onRebuildPSO(this._subModelIdx, this); + } + }; + _proto._createPasses = function _createPasses() { + var passes = []; + var parentPasses = this._parent.passes; + if (!parentPasses) { + return passes; + } + for (var k = 0; k < parentPasses.length; ++k) { + passes.push(new PassInstance(parentPasses[k], this)); + } + return passes; + }; + _createClass(MaterialInstance, [{ + key: "parent", + get: function get() { + return this._parent; + } + }, { + key: "owner", + get: function get() { + return this._owner; + } + }]); + return MaterialInstance; + }(Material); + + var skybox_mesh = null; + var skybox_material = null; + var EnvironmentLightingType = Enum({ + HEMISPHERE_DIFFUSE: 0, + AUTOGEN_HEMISPHERE_DIFFUSE_WITH_REFLECTION: 1, + DIFFUSEMAP_WITH_REFLECTION: 2 + }); + var Skybox = function () { + function Skybox() { + this._envmapLDR = null; + this._envmapHDR = null; + this._diffuseMapLDR = null; + this._diffuseMapHDR = null; + this._globalDSManager = null; + this._model = null; + this._default = null; + this._enabled = false; + this._useIBL = false; + this._useHDR = true; + this._useDiffuseMap = false; + this._editableMaterial = null; + this._activated = false; + this._reflectionHDR = null; + this._reflectionLDR = null; + this._rotationAngle = 0; + } + var _proto = Skybox.prototype; + _proto.initialize = function initialize(skyboxInfo) { + this._activated = false; + this._enabled = skyboxInfo.enabled; + this._useIBL = skyboxInfo.useIBL; + this._useDiffuseMap = skyboxInfo.applyDiffuseMap; + this._useHDR = skyboxInfo.useHDR; + }; + _proto.setEnvMaps = function setEnvMaps(envmapHDR, envmapLDR) { + this._envmapHDR = envmapHDR; + this._envmapLDR = envmapLDR; + this._updateGlobalBinding(); + this._updatePipeline(); + }; + _proto.setDiffuseMaps = function setDiffuseMaps(diffuseMapHDR, diffuseMapLDR) { + this._diffuseMapHDR = diffuseMapHDR; + this._diffuseMapLDR = diffuseMapLDR; + this._updateGlobalBinding(); + this._updatePipeline(); + }; + _proto.setSkyboxMaterial = function setSkyboxMaterial(skyboxMat) { + if (skyboxMat) { + this._editableMaterial = new MaterialInstance({ + parent: skyboxMat + }); + this._editableMaterial.recompileShaders({ + USE_RGBE_CUBEMAP: this.isRGBE + }); + } else { + this._editableMaterial = null; + } + this._updatePipeline(); + }; + _proto.setReflectionMaps = function setReflectionMaps(reflectionHDR, reflectionLDR) { + this._reflectionHDR = reflectionHDR; + this._reflectionLDR = reflectionLDR; + this._updateGlobalBinding(); + this._updatePipeline(); + }; + _proto.setRotationAngle = function setRotationAngle(angle) { + this._rotationAngle = angle; + }; + _proto.getRotationAngle = function getRotationAngle() { + return this._rotationAngle; + }; + _proto.updateMaterialRenderInfo = function updateMaterialRenderInfo() { + this._updateGlobalBinding(); + this._updatePipeline(); + }; + _proto.activate = function activate() { + var pipeline = legacyCC.director.root.pipeline; + this._globalDSManager = pipeline.globalDSManager; + this._default = builtinResMgr.get('default-cube-texture'); + if (!this._model) { + this._model = legacyCC.director.root.createModel(legacyCC.renderer.scene.Model); + } + var isRGBE = this._default.isRGBE; + this._default.isUsingOfflineMipmaps(); + if (this.envmap) { + isRGBE = this.envmap.isRGBE; + this.envmap.isUsingOfflineMipmaps(); + } + if (!skybox_material) { + var mat = new Material(); + mat.initialize({ + effectName: 'pipeline/skybox', + defines: { + USE_RGBE_CUBEMAP: isRGBE + } + }); + skybox_material = new MaterialInstance({ + parent: mat + }); + } + if (this.enabled) { + if (!skybox_mesh) { + skybox_mesh = legacyCC.utils.createMesh(legacyCC.primitives.box({ + width: 2, + height: 2, + length: 2 + })); + } + if (this._editableMaterial) { + this._model.initSubModel(0, skybox_mesh.renderingSubMeshes[0], this._editableMaterial); + } else { + this._model.initSubModel(0, skybox_mesh.renderingSubMeshes[0], skybox_material); + } + } + if (!this.envmap) { + this.envmap = this._default; + } + if (!this.diffuseMap) { + this.diffuseMap = this._default; + } + this._updateGlobalBinding(); + this._updatePipeline(); + this._activated = true; + }; + _proto._updatePipeline = function _updatePipeline() { + var root = legacyCC.director.root; + var pipeline = root.pipeline; + var useIBLValue = this.useIBL ? this.isRGBE ? 2 : 1 : 0; + var useDiffuseMapValue = this.useIBL && this.useDiffuseMap && this.diffuseMap && this.diffuseMap !== this._default ? this.isRGBE ? 2 : 1 : 0; + var useHDRValue = this.useHDR; + var useConvMapValue = this.useConvolutionMap; + if (pipeline.macros.CC_USE_IBL !== useIBLValue || pipeline.macros.CC_USE_DIFFUSEMAP !== useDiffuseMapValue || pipeline.macros.CC_USE_HDR !== useHDRValue || pipeline.macros.CC_IBL_CONVOLUTED !== useConvMapValue) { + pipeline.macros.CC_USE_IBL = useIBLValue; + pipeline.macros.CC_USE_DIFFUSEMAP = useDiffuseMapValue; + pipeline.macros.CC_USE_HDR = useHDRValue; + pipeline.macros.CC_IBL_CONVOLUTED = useConvMapValue; + if (this._activated) { + root.onGlobalPipelineStateChanged(); + } + } + if (this.enabled) { + var envmap = this.envmap ? this.envmap : this._default; + var skyboxMat = this._editableMaterial ? this._editableMaterial : skybox_material; + if (skyboxMat) { + skyboxMat.setProperty('environmentMap', envmap); + skyboxMat.recompileShaders({ + USE_RGBE_CUBEMAP: this.isRGBE + }); + } + if (this._model) { + this._model.setSubModelMaterial(0, skyboxMat); + this._updateSubModes(); + } + } + }; + _proto._updateGlobalBinding = function _updateGlobalBinding() { + if (this._globalDSManager) { + var device = deviceManager.gfxDevice; + if (this.reflectionMap) { + var texture = this.reflectionMap.getGFXTexture(); + var sampler = device.getSampler(this.reflectionMap.getSamplerInfo()); + this._globalDSManager.bindSampler(UNIFORM_ENVIRONMENT_BINDING, sampler); + this._globalDSManager.bindTexture(UNIFORM_ENVIRONMENT_BINDING, texture); + } else { + var envmap = this.envmap ? this.envmap : this._default; + if (envmap) { + var _texture = envmap.getGFXTexture(); + var _sampler = device.getSampler(envmap.getSamplerInfo()); + this._globalDSManager.bindSampler(UNIFORM_ENVIRONMENT_BINDING, _sampler); + this._globalDSManager.bindTexture(UNIFORM_ENVIRONMENT_BINDING, _texture); + } + } + var diffuseMap = this.diffuseMap ? this.diffuseMap : this._default; + if (diffuseMap) { + var _texture2 = diffuseMap.getGFXTexture(); + var _sampler2 = device.getSampler(diffuseMap.getSamplerInfo()); + this._globalDSManager.bindSampler(UNIFORM_DIFFUSEMAP_BINDING, _sampler2); + this._globalDSManager.bindTexture(UNIFORM_DIFFUSEMAP_BINDING, _texture2); + } + this._globalDSManager.update(); + } + }; + _proto._updateSubModes = function _updateSubModes() { + if (this._model) { + var subModels = this._model.subModels; + for (var i = 0; i < subModels.length; i++) { + subModels[i].update(); + } + } + }; + _createClass(Skybox, [{ + key: "model", + get: function get() { + return this._model; + } + }, { + key: "enabled", + get: function get() { + return this._enabled; + }, + set: function set(val) { + this._enabled = val; + if (val) this.activate();else this._updatePipeline(); + } + }, { + key: "useHDR", + get: function get() { + return this._useHDR; + }, + set: function set(val) { + this._useHDR = val; + this.setEnvMaps(this._envmapHDR, this._envmapLDR); + } + }, { + key: "useIBL", + get: function get() { + return this._useIBL; + }, + set: function set(val) { + this._useIBL = val; + this._updatePipeline(); + } + }, { + key: "useDiffuseMap", + get: function get() { + return this._useDiffuseMap; + }, + set: function set(val) { + this._useDiffuseMap = val; + this._updatePipeline(); + } + }, { + key: "isRGBE", + get: function get() { + if (this.envmap) { + return this.envmap.isRGBE; + } else { + return false; + } + } + }, { + key: "useConvolutionMap", + get: function get() { + if (this.reflectionMap) { + return this.reflectionMap.isUsingOfflineMipmaps(); + } + if (this.envmap) { + return this.envmap.isUsingOfflineMipmaps(); + } + return false; + } + }, { + key: "envmap", + get: function get() { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + return this._envmapHDR; + } else { + return this._envmapLDR; + } + }, + set: function set(val) { + var root = legacyCC.director.root; + var isHDR = root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + this.setEnvMaps(val, this._envmapLDR); + } else { + this.setEnvMaps(this._envmapHDR, val); + } + } + }, { + key: "diffuseMap", + get: function get() { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + return this._diffuseMapHDR; + } else { + return this._diffuseMapLDR; + } + }, + set: function set(val) { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + this.setDiffuseMaps(val, this._diffuseMapLDR); + } else { + this.setDiffuseMaps(this._diffuseMapHDR, val); + } + } + }, { + key: "reflectionMap", + get: function get() { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + return this._reflectionHDR; + } else { + return this._reflectionLDR; + } + } + }, { + key: "editableMaterial", + get: function get() { + return this._editableMaterial; + } + }]); + return Skybox; + }(); + legacyCC.Skybox = Skybox; + + var _v4$1 = new Vec4(); + var FogType = Enum({ + LINEAR: 0, + EXP: 1, + EXP_SQUARED: 2, + LAYERED: 3 + }); + var FOG_TYPE_NONE = FogType.LAYERED + 1; + var Fog = function () { + function Fog() { + this._fogColor = new Color$1('#C8C8C8'); + this._colorArray = new Vec4(0.2, 0.2, 0.2, 1.0); + this._enabled = false; + this._accurate = false; + this._type = 0; + this._fogDensity = 0.3; + this._fogStart = 0.5; + this._fogEnd = 300; + this._fogAtten = 5; + this._fogTop = 1.5; + this._fogRange = 1.2; + this._activated = false; + } + var _proto = Fog.prototype; + _proto.initialize = function initialize(fogInfo) { + this._activated = false; + this.fogColor = fogInfo.fogColor; + this._enabled = fogInfo.enabled; + this._type = this.enabled ? fogInfo.type : FOG_TYPE_NONE; + this._accurate = fogInfo.accurate; + this.fogDensity = fogInfo.fogDensity; + this.fogStart = fogInfo.fogStart; + this.fogEnd = fogInfo.fogEnd; + this.fogAtten = fogInfo.fogAtten; + this.fogTop = fogInfo.fogTop; + this.fogRange = fogInfo.fogRange; + }; + _proto.activate = function activate() { + this._updatePipeline(); + this._activated = true; + }; + _proto._updatePipeline = function _updatePipeline() { + var root = legacyCC.director.root; + var value = this.enabled ? this.type : FOG_TYPE_NONE; + var accurateValue = this.accurate ? 1 : 0; + var pipeline = root.pipeline; + if (pipeline.macros.CC_USE_FOG === value && pipeline.macros.CC_USE_ACCURATE_FOG === accurateValue) { + return; + } + pipeline.macros.CC_USE_FOG = value; + pipeline.macros.CC_USE_ACCURATE_FOG = accurateValue; + if (this._activated) { + root.onGlobalPipelineStateChanged(); + } + }; + _createClass(Fog, [{ + key: "enabled", + get: function get() { + return this._enabled; + }, + set: function set(val) { + this._enabled = val; + if (!val) { + this._type = FOG_TYPE_NONE; + this._updatePipeline(); + } else { + this.activate(); + } + } + }, { + key: "accurate", + get: function get() { + return this._accurate; + }, + set: function set(val) { + this._accurate = val; + this._updatePipeline(); + } + }, { + key: "fogColor", + get: function get() { + return this._fogColor; + }, + set: function set(val) { + this._fogColor.set(val); + _v4$1.set(val.x, val.y, val.z, val.w); + SRGBToLinear(this._colorArray, _v4$1); + } + }, { + key: "type", + get: function get() { + return this._type; + }, + set: function set(val) { + this._type = this.enabled ? val : FOG_TYPE_NONE; + if (this.enabled) this._updatePipeline(); + } + }, { + key: "fogDensity", + get: function get() { + return this._fogDensity; + }, + set: function set(val) { + this._fogDensity = val; + } + }, { + key: "fogStart", + get: function get() { + return this._fogStart; + }, + set: function set(val) { + this._fogStart = val; + } + }, { + key: "fogEnd", + get: function get() { + return this._fogEnd; + }, + set: function set(val) { + this._fogEnd = val; + } + }, { + key: "fogAtten", + get: function get() { + return this._fogAtten; + }, + set: function set(val) { + this._fogAtten = val; + } + }, { + key: "fogTop", + get: function get() { + return this._fogTop; + }, + set: function set(val) { + this._fogTop = val; + } + }, { + key: "fogRange", + get: function get() { + return this._fogRange; + }, + set: function set(val) { + this._fogRange = val; + } + }, { + key: "colorArray", + get: function get() { + return this._colorArray; + } + }]); + return Fog; + }(); + legacyCC.Fog = Fog; + + var ToneMappingType = Enum({ + DEFAULT: 0, + LINEAR: 1 + }); + var PostSettings = function () { + function PostSettings() { + this._toneMappingType = ToneMappingType.DEFAULT; + this._activated = false; + } + var _proto = PostSettings.prototype; + _proto.initialize = function initialize(postSettingsInfo) { + this._toneMappingType = postSettingsInfo.toneMappingType; + }; + _proto.activate = function activate() { + this._updatePipeline(); + this._activated = true; + }; + _proto._updatePipeline = function _updatePipeline() { + var root = legacyCC.director.root; + var pipeline = root.pipeline; + pipeline.macros.CC_TONE_MAPPING_TYPE = this._toneMappingType; + if (this._activated) { + root.onGlobalPipelineStateChanged(); + } + }; + _createClass(PostSettings, [{ + key: "toneMappingType", + get: function get() { + return this._toneMappingType; + }, + set: function set(val) { + this._toneMappingType = val; + this._updatePipeline(); + } + }]); + return PostSettings; + }(); + + var _dec$20, _dec2$1m, _dec3$Y, _dec4$D, _dec5$z, _class$1Z, _class2$1L, _initializer$1y, _initializer2$1c, _initializer3$T, _initializer4$K, _initializer5$A, _initializer6$v, _dec6$q, _dec7$n, _dec8$f, _dec9$c, _dec10$7, _dec11$4, _dec12$4, _dec13$4, _dec14$3, _dec15$3, _dec16$2, _dec17$2, _dec18$2, _dec19$2, _dec20$2, _class4$f, _class5$f, _initializer7$n, _initializer8$m, _initializer9$k, _initializer10$k, _initializer11$j, _initializer12$i, _initializer13$f, _initializer14$d, _initializer15$a, _initializer16$a, _initializer17$8, _dec21$2, _dec22$2, _dec23$2, _dec24$2, _dec25$2, _dec26$2, _dec27$2, _dec28$2, _class7$5, _class8$4, _initializer18$6, _initializer19$5, _initializer20$5, _initializer21$5, _initializer22$4, _initializer23$3, _initializer24$3, _initializer25$3, _initializer26$3, _initializer27$2, _class9, _dec29$1, _dec30$1, _dec31$1, _dec32, _dec33, _class10$4, _class11$4, _initializer28$2, _initializer29$2, _initializer30$2, _initializer31$2, _initializer32$2, _initializer33$2, _initializer34$2, _dec34, _dec35, _class13$4, _class14$3, _initializer35$2, _initializer36$1, _initializer37$1, _initializer38$1, _dec36, _dec37, _dec38, _class16$2, _class17$2, _initializer39$1, _initializer40$1, _initializer41$1, _dec39, _dec40, _class19$2, _class20$3, _initializer42$1, _dec41, _dec42, _dec43, _dec44, _dec45, _dec46, _class22$2, _class23$2, _initializer43$1, _initializer44, _initializer45, _initializer46, _initializer47, _initializer48, _initializer49, _initializer50, _initializer51, _dec47, _dec48, _class25, _class26, _initializer52, _initializer53, _initializer54, _initializer55, _initializer56, _initializer57, _initializer58, _initializer59, _initializer60, _initializer61; + var _up = new Vec3(0, 1, 0); + var _v3$3 = new Vec3(); + var _v4 = new Vec4(); + var _col = new Color$1(); + var _qt$1 = new Quat(); + var normalizeHDRColor = function normalizeHDRColor(color) { + var intensity = 1.0 / Math.max(Math.max(Math.max(color.x, color.y), color.z), 0.0001); + if (intensity < 1.0) { + color.x *= intensity; + color.y *= intensity; + color.z *= intensity; + } + }; + var AmbientInfo = exports('dr', (_dec$20 = ccclass$t('cc.AmbientInfo'), _dec2$1m = type$8(CCFloat), _dec3$Y = formerlySerializedAs$1('_skyColor'), _dec4$D = formerlySerializedAs$1('_skyIllum'), _dec5$z = formerlySerializedAs$1('_groundAlbedo'), _dec$20(_class$1Z = (_class2$1L = function () { + function AmbientInfo() { + this._skyColorHDR = _initializer$1y && _initializer$1y(); + this._skyIllumHDR = _initializer2$1c && _initializer2$1c(); + this._groundAlbedoHDR = _initializer3$T && _initializer3$T(); + this._skyColorLDR = _initializer4$K && _initializer4$K(); + this._skyIllumLDR = _initializer5$A && _initializer5$A(); + this._groundAlbedoLDR = _initializer6$v && _initializer6$v(); + this._resource = null; + } + var _proto = AmbientInfo.prototype; + _proto.activate = function activate(resource) { + this._resource = resource; + this._resource.initialize(this); + }; + _createClass(AmbientInfo, [{ + key: "skyColorHDR", + get: function get() { + return this._skyColorHDR; + } + }, { + key: "groundAlbedoHDR", + get: function get() { + return this._groundAlbedoHDR; + } + }, { + key: "skyIllumHDR", + get: function get() { + return this._skyIllumHDR; + } + }, { + key: "skyColorLDR", + get: function get() { + return this._skyColorLDR; + } + }, { + key: "groundAlbedoLDR", + get: function get() { + return this._groundAlbedoLDR; + } + }, { + key: "skyIllumLDR", + get: function get() { + return this._skyIllumLDR; + } + }, { + key: "skyLightingColor", + get: function get() { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + _v4.set(isHDR ? this._skyColorHDR : this._skyColorLDR); + normalizeHDRColor(_v4); + return _col.set(_v4.x * 255, _v4.y * 255, _v4.z * 255, 255); + }, + set: function set(val) { + _v4.set(val.x, val.y, val.z, val.w); + if (legacyCC.director.root.pipeline.pipelineSceneData.isHDR) { + this._skyColorHDR.set(_v4); + } else { + this._skyColorLDR.set(_v4); + } + if (this._resource) { + this._resource.skyColor.set(_v4); + } + } + }, { + key: "skyColor", + set: function set(val) { + if (legacyCC.director.root.pipeline.pipelineSceneData.isHDR) { + this._skyColorHDR.set(val); + } else { + this._skyColorLDR.set(val); + } + if (this._resource) { + this._resource.skyColor.set(val); + } + } + }, { + key: "skyIllum", + get: function get() { + if (legacyCC.director.root.pipeline.pipelineSceneData.isHDR) { + return this._skyIllumHDR; + } else { + return this._skyIllumLDR; + } + }, + set: function set(val) { + if (legacyCC.director.root.pipeline.pipelineSceneData.isHDR) { + this._skyIllumHDR = val; + } else { + this._skyIllumLDR = val; + } + if (this._resource) { + this._resource.skyIllum = val; + } + } + }, { + key: "groundLightingColor", + get: function get() { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + _v4.set(isHDR ? this._groundAlbedoHDR : this._groundAlbedoLDR); + normalizeHDRColor(_v4); + return _col.set(_v4.x * 255, _v4.y * 255, _v4.z * 255, 255); + }, + set: function set(val) { + _v4.set(val.x, val.y, val.z, val.w); + if (legacyCC.director.root.pipeline.pipelineSceneData.isHDR) { + this._groundAlbedoHDR.set(_v4); + } else { + this._groundAlbedoLDR.set(_v4); + } + if (this._resource) { + this._resource.groundAlbedo.set(_v4); + } + } + }, { + key: "groundAlbedo", + set: function set(val) { + if (legacyCC.director.root.pipeline.pipelineSceneData.isHDR) { + this._groundAlbedoHDR.set(val); + } else { + this._groundAlbedoLDR.set(val); + } + if (this._resource) { + this._resource.groundAlbedo.set(val); + } + } + }]); + return AmbientInfo; + }(), (_applyDecoratedDescriptor(_class2$1L.prototype, "skyIllum", [_dec2$1m], Object.getOwnPropertyDescriptor(_class2$1L.prototype, "skyIllum"), _class2$1L.prototype), _initializer$1y = applyDecoratedInitializer(_class2$1L.prototype, "_skyColorHDR", [serializable$9, _dec3$Y], function () { + return new Vec4(0.2, 0.5, 0.8, 1.0); + }), _initializer2$1c = applyDecoratedInitializer(_class2$1L.prototype, "_skyIllumHDR", [serializable$9, _dec4$D], function () { + return Ambient.SKY_ILLUM; + }), _initializer3$T = applyDecoratedInitializer(_class2$1L.prototype, "_groundAlbedoHDR", [serializable$9, _dec5$z], function () { + return new Vec4(0.2, 0.2, 0.2, 1.0); + }), _initializer4$K = applyDecoratedInitializer(_class2$1L.prototype, "_skyColorLDR", [serializable$9], function () { + return new Vec4(0.2, 0.5, 0.8, 1.0); + }), _initializer5$A = applyDecoratedInitializer(_class2$1L.prototype, "_skyIllumLDR", [serializable$9], function () { + return Ambient.SKY_ILLUM; + }), _initializer6$v = applyDecoratedInitializer(_class2$1L.prototype, "_groundAlbedoLDR", [serializable$9], function () { + return new Vec4(0.2, 0.2, 0.2, 1.0); + })), _class2$1L)) || _class$1Z)); + legacyCC.AmbientInfo = AmbientInfo; + var SkyboxInfo = exports('ds', (_dec6$q = ccclass$t('cc.SkyboxInfo'), _dec7$n = type$8(EnvironmentLightingType), _dec8$f = type$8(TextureCube), _dec9$c = type$8(CCFloat), _dec10$7 = type$8(TextureCube), _dec11$4 = type$8(TextureCube), _dec12$4 = type$8(Material), _dec13$4 = type$8(TextureCube), _dec14$3 = formerlySerializedAs$1('_envmap'), _dec15$3 = type$8(TextureCube), _dec16$2 = type$8(TextureCube), _dec17$2 = type$8(TextureCube), _dec18$2 = type$8(Material), _dec19$2 = type$8(TextureCube), _dec20$2 = type$8(TextureCube), _dec6$q(_class4$f = (_class5$f = function () { + function SkyboxInfo() { + this._envLightingType = _initializer7$n && _initializer7$n(); + this._envmapHDR = _initializer8$m && _initializer8$m(); + this._envmapLDR = _initializer9$k && _initializer9$k(); + this._diffuseMapHDR = _initializer10$k && _initializer10$k(); + this._diffuseMapLDR = _initializer11$j && _initializer11$j(); + this._enabled = _initializer12$i && _initializer12$i(); + this._useHDR = _initializer13$f && _initializer13$f(); + this._editableMaterial = _initializer14$d && _initializer14$d(); + this._reflectionHDR = _initializer15$a && _initializer15$a(); + this._reflectionLDR = _initializer16$a && _initializer16$a(); + this._rotationAngle = _initializer17$8 && _initializer17$8(); + this._resource = null; + } + var _proto2 = SkyboxInfo.prototype; + _proto2.activate = function activate(resource) { + this.envLightingType = this._envLightingType; + this._resource = resource; + this._resource.initialize(this); + this._resource.setEnvMaps(this._envmapHDR, this._envmapLDR); + this._resource.setDiffuseMaps(this._diffuseMapHDR, this._diffuseMapLDR); + this._resource.setSkyboxMaterial(this._editableMaterial); + this._resource.setReflectionMaps(this._reflectionHDR, this._reflectionLDR); + this._resource.setRotationAngle(this._rotationAngle); + this._resource.activate(); + }; + _proto2.updateEnvMap = function updateEnvMap(val) { + if (!val) { + this.applyDiffuseMap = false; + this.useIBL = false; + this.envLightingType = EnvironmentLightingType.HEMISPHERE_DIFFUSE; + warnID(15001); + } + if (this._resource) { + this._resource.setEnvMaps(this._envmapHDR, this._envmapLDR); + this._resource.setDiffuseMaps(this._diffuseMapHDR, this._diffuseMapLDR); + this._resource.setReflectionMaps(this._reflectionHDR, this._reflectionLDR); + this._resource.useDiffuseMap = this.applyDiffuseMap; + this._resource.envmap = val; + } + }; + _proto2.setMaterialProperty = function setMaterialProperty(name, val, passIdx) { + if (!this._resource) return; + if (this._resource.enabled && this._resource.editableMaterial) { + this._resource.editableMaterial.setProperty(name, val, passIdx); + this._resource.editableMaterial.passes.forEach(function (pass) { + pass.update(); + }); + } + }; + _createClass(SkyboxInfo, [{ + key: "applyDiffuseMap", + get: function get() { + if (EnvironmentLightingType.DIFFUSEMAP_WITH_REFLECTION === this._envLightingType) { + return true; + } + return false; + }, + set: function set(val) { + if (this._resource) { + this._resource.useDiffuseMap = val; + } + } + }, { + key: "enabled", + get: function get() { + return this._enabled; + }, + set: function set(val) { + if (this._enabled === val) return; + this._enabled = val; + if (this._resource) { + this._resource.enabled = this._enabled; + } + } + }, { + key: "envLightingType", + get: function get() { + return this._envLightingType; + }, + set: function set(val) { + if (!this.envmap && EnvironmentLightingType.HEMISPHERE_DIFFUSE !== val) { + this.useIBL = false; + this.applyDiffuseMap = false; + this._envLightingType = EnvironmentLightingType.HEMISPHERE_DIFFUSE; + warnID(15001); + } else { + if (EnvironmentLightingType.HEMISPHERE_DIFFUSE === val) { + this.useIBL = false; + this.applyDiffuseMap = false; + } else if (EnvironmentLightingType.AUTOGEN_HEMISPHERE_DIFFUSE_WITH_REFLECTION === val) { + this.useIBL = true; + this.applyDiffuseMap = false; + } else if (EnvironmentLightingType.DIFFUSEMAP_WITH_REFLECTION === val) { + this.useIBL = true; + this.applyDiffuseMap = true; + } + this._envLightingType = val; + } + } + }, { + key: "useIBL", + get: function get() { + if (EnvironmentLightingType.HEMISPHERE_DIFFUSE !== this._envLightingType) { + return true; + } + return false; + }, + set: function set(val) { + if (this._resource) { + this._resource.useIBL = val; + } + } + }, { + key: "useHDR", + get: function get() { + legacyCC.director.root.pipeline.pipelineSceneData.isHDR = this._useHDR; + return this._useHDR; + }, + set: function set(val) { + legacyCC.director.root.pipeline.pipelineSceneData.isHDR = val; + this._useHDR = val; + if (this._resource) { + if (this.envLightingType === EnvironmentLightingType.DIFFUSEMAP_WITH_REFLECTION) { + if (this.diffuseMap === null) { + this.envLightingType = EnvironmentLightingType.AUTOGEN_HEMISPHERE_DIFFUSE_WITH_REFLECTION; + warnID(15000); + } else if (this.diffuseMap.isDefault) { + warnID(15002); + } + } + } + if (this._resource) { + this._resource.useHDR = this._useHDR; + this._resource.updateMaterialRenderInfo(); + } + } + }, { + key: "envmap", + get: function get() { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + return this._envmapHDR; + } else { + return this._envmapLDR; + } + }, + set: function set(val) { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + this._envmapHDR = val; + this._reflectionHDR = null; + } else { + this._envmapLDR = val; + this._reflectionLDR = null; + } + if (!val) { + if (isHDR) { + this._diffuseMapHDR = null; + } else { + this._diffuseMapLDR = null; + } + this.applyDiffuseMap = false; + this.useIBL = false; + this.envLightingType = EnvironmentLightingType.HEMISPHERE_DIFFUSE; + warnID(15001); + } + if (this._resource) { + this._resource.setEnvMaps(this._envmapHDR, this._envmapLDR); + this._resource.setDiffuseMaps(this._diffuseMapHDR, this._diffuseMapLDR); + this._resource.setReflectionMaps(this._reflectionHDR, this._reflectionLDR); + this._resource.useDiffuseMap = this.applyDiffuseMap; + this._resource.envmap = val; + } + } + }, { + key: "rotationAngle", + get: function get() { + return this._rotationAngle; + }, + set: function set(val) { + this._rotationAngle = val; + if (this._resource) { + this._resource.setRotationAngle(this._rotationAngle); + } + } + }, { + key: "diffuseMap", + get: function get() { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + return this._diffuseMapHDR; + } else { + return this._diffuseMapLDR; + } + }, + set: function set(val) { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + this._diffuseMapHDR = val; + } else { + this._diffuseMapLDR = val; + } + if (this._resource) { + this._resource.setDiffuseMaps(this._diffuseMapHDR, this._diffuseMapLDR); + } + } + }, { + key: "reflectionMap", + get: function get() { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + return this._reflectionHDR; + } else { + return this._reflectionLDR; + } + }, + set: function set(val) { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + this._reflectionHDR = val; + } else { + this._reflectionLDR = val; + } + if (this._resource) { + this._resource.setReflectionMaps(this._reflectionHDR, this._reflectionLDR); + } + } + }, { + key: "skyboxMaterial", + get: function get() { + return this._editableMaterial; + }, + set: function set(val) { + this._editableMaterial = val; + if (this._resource) { + this._resource.setSkyboxMaterial(this._editableMaterial); + } + } + }]); + return SkyboxInfo; + }(), (_applyDecoratedDescriptor(_class5$f.prototype, "envLightingType", [_dec7$n], Object.getOwnPropertyDescriptor(_class5$f.prototype, "envLightingType"), _class5$f.prototype), _applyDecoratedDescriptor(_class5$f.prototype, "envmap", [_dec8$f], Object.getOwnPropertyDescriptor(_class5$f.prototype, "envmap"), _class5$f.prototype), _applyDecoratedDescriptor(_class5$f.prototype, "rotationAngle", [_dec9$c], Object.getOwnPropertyDescriptor(_class5$f.prototype, "rotationAngle"), _class5$f.prototype), _applyDecoratedDescriptor(_class5$f.prototype, "diffuseMap", [_dec10$7], Object.getOwnPropertyDescriptor(_class5$f.prototype, "diffuseMap"), _class5$f.prototype), _applyDecoratedDescriptor(_class5$f.prototype, "reflectionMap", [_dec11$4], Object.getOwnPropertyDescriptor(_class5$f.prototype, "reflectionMap"), _class5$f.prototype), _applyDecoratedDescriptor(_class5$f.prototype, "skyboxMaterial", [_dec12$4], Object.getOwnPropertyDescriptor(_class5$f.prototype, "skyboxMaterial"), _class5$f.prototype), _initializer7$n = applyDecoratedInitializer(_class5$f.prototype, "_envLightingType", [serializable$9], function () { + return EnvironmentLightingType.HEMISPHERE_DIFFUSE; + }), _initializer8$m = applyDecoratedInitializer(_class5$f.prototype, "_envmapHDR", [serializable$9, _dec13$4, _dec14$3], function () { + return null; + }), _initializer9$k = applyDecoratedInitializer(_class5$f.prototype, "_envmapLDR", [serializable$9, _dec15$3], function () { + return null; + }), _initializer10$k = applyDecoratedInitializer(_class5$f.prototype, "_diffuseMapHDR", [serializable$9, _dec16$2], function () { + return null; + }), _initializer11$j = applyDecoratedInitializer(_class5$f.prototype, "_diffuseMapLDR", [serializable$9, _dec17$2], function () { + return null; + }), _initializer12$i = applyDecoratedInitializer(_class5$f.prototype, "_enabled", [serializable$9], function () { + return false; + }), _initializer13$f = applyDecoratedInitializer(_class5$f.prototype, "_useHDR", [serializable$9], function () { + return true; + }), _initializer14$d = applyDecoratedInitializer(_class5$f.prototype, "_editableMaterial", [serializable$9, _dec18$2], function () { + return null; + }), _initializer15$a = applyDecoratedInitializer(_class5$f.prototype, "_reflectionHDR", [serializable$9, _dec19$2], function () { + return null; + }), _initializer16$a = applyDecoratedInitializer(_class5$f.prototype, "_reflectionLDR", [serializable$9, _dec20$2], function () { + return null; + }), _initializer17$8 = applyDecoratedInitializer(_class5$f.prototype, "_rotationAngle", [serializable$9], function () { + return 0; + })), _class5$f)) || _class4$f)); + legacyCC.SkyboxInfo = SkyboxInfo; + var FogInfo = exports('dt', (_dec21$2 = ccclass$t('cc.FogInfo'), _dec22$2 = type$8(FogType), _dec23$2 = type$8(CCFloat), _dec24$2 = type$8(CCFloat), _dec25$2 = type$8(CCFloat), _dec26$2 = type$8(CCFloat), _dec27$2 = type$8(CCFloat), _dec28$2 = type$8(CCFloat), _dec21$2(_class7$5 = (_class8$4 = (_class9 = function () { + function FogInfo() { + this._type = _initializer18$6 && _initializer18$6(); + this._fogColor = _initializer19$5 && _initializer19$5(); + this._enabled = _initializer20$5 && _initializer20$5(); + this._fogDensity = _initializer21$5 && _initializer21$5(); + this._fogStart = _initializer22$4 && _initializer22$4(); + this._fogEnd = _initializer23$3 && _initializer23$3(); + this._fogAtten = _initializer24$3 && _initializer24$3(); + this._fogTop = _initializer25$3 && _initializer25$3(); + this._fogRange = _initializer26$3 && _initializer26$3(); + this._accurate = _initializer27$2 && _initializer27$2(); + this._resource = null; + } + var _proto3 = FogInfo.prototype; + _proto3.activate = function activate(resource) { + this._resource = resource; + this._resource.initialize(this); + this._resource.activate(); + }; + _createClass(FogInfo, [{ + key: "enabled", + get: function get() { + return this._enabled; + }, + set: function set(val) { + if (this._enabled === val) return; + this._enabled = val; + if (this._resource) { + this._resource.enabled = val; + if (val) { + this._resource.type = this._type; + } + } + } + }, { + key: "accurate", + get: function get() { + return this._accurate; + }, + set: function set(val) { + if (this._accurate === val) return; + this._accurate = val; + if (this._resource) { + this._resource.accurate = val; + if (val) { + this._resource.type = this._type; + } + } + } + }, { + key: "fogColor", + get: function get() { + return this._fogColor; + }, + set: function set(val) { + this._fogColor.set(val); + if (this._resource) { + this._resource.fogColor = this._fogColor; + } + } + }, { + key: "type", + get: function get() { + return this._type; + }, + set: function set(val) { + this._type = val; + if (this._resource) { + this._resource.type = val; + } + } + }, { + key: "fogDensity", + get: function get() { + return this._fogDensity; + }, + set: function set(val) { + this._fogDensity = val; + if (this._resource) { + this._resource.fogDensity = val; + } + } + }, { + key: "fogStart", + get: function get() { + return this._fogStart; + }, + set: function set(val) { + this._fogStart = val; + if (this._resource) { + this._resource.fogStart = val; + } + } + }, { + key: "fogEnd", + get: function get() { + return this._fogEnd; + }, + set: function set(val) { + this._fogEnd = val; + if (this._resource) { + this._resource.fogEnd = val; + } + } + }, { + key: "fogAtten", + get: function get() { + return this._fogAtten; + }, + set: function set(val) { + this._fogAtten = val; + if (this._resource) { + this._resource.fogAtten = val; + } + } + }, { + key: "fogTop", + get: function get() { + return this._fogTop; + }, + set: function set(val) { + this._fogTop = val; + if (this._resource) { + this._resource.fogTop = val; + } + } + }, { + key: "fogRange", + get: function get() { + return this._fogRange; + }, + set: function set(val) { + this._fogRange = val; + if (this._resource) { + this._resource.fogRange = val; + } + } + }]); + return FogInfo; + }(), _class9.FogType = FogType, _class9), (_applyDecoratedDescriptor(_class8$4.prototype, "type", [_dec22$2], Object.getOwnPropertyDescriptor(_class8$4.prototype, "type"), _class8$4.prototype), _applyDecoratedDescriptor(_class8$4.prototype, "fogDensity", [_dec23$2], Object.getOwnPropertyDescriptor(_class8$4.prototype, "fogDensity"), _class8$4.prototype), _applyDecoratedDescriptor(_class8$4.prototype, "fogStart", [_dec24$2], Object.getOwnPropertyDescriptor(_class8$4.prototype, "fogStart"), _class8$4.prototype), _applyDecoratedDescriptor(_class8$4.prototype, "fogEnd", [_dec25$2], Object.getOwnPropertyDescriptor(_class8$4.prototype, "fogEnd"), _class8$4.prototype), _applyDecoratedDescriptor(_class8$4.prototype, "fogAtten", [_dec26$2], Object.getOwnPropertyDescriptor(_class8$4.prototype, "fogAtten"), _class8$4.prototype), _applyDecoratedDescriptor(_class8$4.prototype, "fogTop", [_dec27$2], Object.getOwnPropertyDescriptor(_class8$4.prototype, "fogTop"), _class8$4.prototype), _applyDecoratedDescriptor(_class8$4.prototype, "fogRange", [_dec28$2], Object.getOwnPropertyDescriptor(_class8$4.prototype, "fogRange"), _class8$4.prototype), _initializer18$6 = applyDecoratedInitializer(_class8$4.prototype, "_type", [serializable$9], function () { + return FogType.LINEAR; + }), _initializer19$5 = applyDecoratedInitializer(_class8$4.prototype, "_fogColor", [serializable$9], function () { + return new Color$1('#C8C8C8'); + }), _initializer20$5 = applyDecoratedInitializer(_class8$4.prototype, "_enabled", [serializable$9], function () { + return false; + }), _initializer21$5 = applyDecoratedInitializer(_class8$4.prototype, "_fogDensity", [serializable$9], function () { + return 0.3; + }), _initializer22$4 = applyDecoratedInitializer(_class8$4.prototype, "_fogStart", [serializable$9], function () { + return 0.5; + }), _initializer23$3 = applyDecoratedInitializer(_class8$4.prototype, "_fogEnd", [serializable$9], function () { + return 300; + }), _initializer24$3 = applyDecoratedInitializer(_class8$4.prototype, "_fogAtten", [serializable$9], function () { + return 5; + }), _initializer25$3 = applyDecoratedInitializer(_class8$4.prototype, "_fogTop", [serializable$9], function () { + return 1.5; + }), _initializer26$3 = applyDecoratedInitializer(_class8$4.prototype, "_fogRange", [serializable$9], function () { + return 1.2; + }), _initializer27$2 = applyDecoratedInitializer(_class8$4.prototype, "_accurate", [serializable$9], function () { + return false; + })), _class8$4)) || _class7$5)); + var ShadowsInfo = exports('du', (_dec29$1 = ccclass$t('cc.ShadowsInfo'), _dec30$1 = type$8(ShadowType), _dec31$1 = type$8(CCFloat), _dec32 = type$8(CCInteger), _dec33 = type$8(ShadowSize), _dec29$1(_class10$4 = (_class11$4 = function () { + function ShadowsInfo() { + this._enabled = _initializer28$2 && _initializer28$2(); + this._type = _initializer29$2 && _initializer29$2(); + this._normal = _initializer30$2 && _initializer30$2(); + this._distance = _initializer31$2 && _initializer31$2(); + this._shadowColor = _initializer32$2 && _initializer32$2(); + this._maxReceived = _initializer33$2 && _initializer33$2(); + this._size = _initializer34$2 && _initializer34$2(); + this._resource = null; + } + var _proto4 = ShadowsInfo.prototype; + _proto4.setPlaneFromNode = function setPlaneFromNode(node) { + node.getWorldRotation(_qt$1); + this.planeDirection = Vec3.transformQuat(_v3$3, _up, _qt$1); + node.getWorldPosition(_v3$3); + this.planeHeight = Vec3.dot(this._normal, _v3$3); + }; + _proto4.activate = function activate(resource) { + this._resource = resource; + this._resource.initialize(this); + this._resource.activate(); + }; + _createClass(ShadowsInfo, [{ + key: "enabled", + get: function get() { + return this._enabled; + }, + set: function set(val) { + if (this._enabled === val) return; + this._enabled = val; + if (this._resource) { + this._resource.enabled = val; + if (val) { + this._resource.type = this._type; + } + } + } + }, { + key: "type", + get: function get() { + return this._type; + }, + set: function set(val) { + this._type = val; + if (this._resource) { + this._resource.type = val; + } + } + }, { + key: "shadowColor", + get: function get() { + return this._shadowColor; + }, + set: function set(val) { + this._shadowColor.set(val); + if (this._resource) { + this._resource.shadowColor = val; + } + } + }, { + key: "planeDirection", + get: function get() { + return this._normal; + }, + set: function set(val) { + Vec3.copy(this._normal, val); + if (this._resource) { + this._resource.normal = val; + } + } + }, { + key: "planeHeight", + get: function get() { + return this._distance; + }, + set: function set(val) { + this._distance = val; + if (this._resource) { + this._resource.distance = val; + } + } + }, { + key: "maxReceived", + get: function get() { + return this._maxReceived; + }, + set: function set(val) { + this._maxReceived = val; + if (this._resource) { + this._resource.maxReceived = val; + } + } + }, { + key: "shadowMapSize", + get: function get() { + return this._size.x; + }, + set: function set(value) { + this._size.set(value, value); + if (this._resource) { + this._resource.size.set(value, value); + this._resource.shadowMapDirty = true; + } + } + }]); + return ShadowsInfo; + }(), (_applyDecoratedDescriptor(_class11$4.prototype, "type", [_dec30$1], Object.getOwnPropertyDescriptor(_class11$4.prototype, "type"), _class11$4.prototype), _applyDecoratedDescriptor(_class11$4.prototype, "planeHeight", [_dec31$1], Object.getOwnPropertyDescriptor(_class11$4.prototype, "planeHeight"), _class11$4.prototype), _applyDecoratedDescriptor(_class11$4.prototype, "maxReceived", [_dec32], Object.getOwnPropertyDescriptor(_class11$4.prototype, "maxReceived"), _class11$4.prototype), _applyDecoratedDescriptor(_class11$4.prototype, "shadowMapSize", [_dec33], Object.getOwnPropertyDescriptor(_class11$4.prototype, "shadowMapSize"), _class11$4.prototype), _initializer28$2 = applyDecoratedInitializer(_class11$4.prototype, "_enabled", [serializable$9], function () { + return false; + }), _initializer29$2 = applyDecoratedInitializer(_class11$4.prototype, "_type", [serializable$9], function () { + return ShadowType.Planar; + }), _initializer30$2 = applyDecoratedInitializer(_class11$4.prototype, "_normal", [serializable$9], function () { + return new Vec3(0, 1, 0); + }), _initializer31$2 = applyDecoratedInitializer(_class11$4.prototype, "_distance", [serializable$9], function () { + return 0; + }), _initializer32$2 = applyDecoratedInitializer(_class11$4.prototype, "_shadowColor", [serializable$9], function () { + return new Color$1(0, 0, 0, 76); + }), _initializer33$2 = applyDecoratedInitializer(_class11$4.prototype, "_maxReceived", [serializable$9], function () { + return 4; + }), _initializer34$2 = applyDecoratedInitializer(_class11$4.prototype, "_size", [serializable$9], function () { + return new Vec2(1024, 1024); + })), _class11$4)) || _class10$4)); + legacyCC.ShadowsInfo = ShadowsInfo; + var DEFAULT_WORLD_MIN_POS = exports('dv', new Vec3(-1024.0, -1024.0, -1024.0)); + var DEFAULT_WORLD_MAX_POS = exports('dw', new Vec3(1024.0, 1024.0, 1024.0)); + var DEFAULT_OCTREE_DEPTH = exports('dx', 8); + var OctreeInfo = exports('dy', (_dec34 = ccclass$t('cc.OctreeInfo'), _dec35 = type$8(CCInteger), _dec34(_class13$4 = (_class14$3 = function () { + function OctreeInfo() { + this._enabled = _initializer35$2 && _initializer35$2(); + this._minPos = _initializer36$1 && _initializer36$1(); + this._maxPos = _initializer37$1 && _initializer37$1(); + this._depth = _initializer38$1 && _initializer38$1(); + this._resource = null; + } + var _proto5 = OctreeInfo.prototype; + _proto5.activate = function activate(resource) { + this._resource = resource; + this._resource.initialize(this); + }; + _createClass(OctreeInfo, [{ + key: "enabled", + get: function get() { + return this._enabled; + }, + set: function set(val) { + if (this._enabled === val) return; + this._enabled = val; + if (this._resource) { + this._resource.enabled = val; + } + } + }, { + key: "minPos", + get: function get() { + return this._minPos; + }, + set: function set(val) { + this._minPos = val; + if (this._resource) { + this._resource.minPos = val; + } + } + }, { + key: "maxPos", + get: function get() { + return this._maxPos; + }, + set: function set(val) { + this._maxPos = val; + if (this._resource) { + this._resource.maxPos = val; + } + } + }, { + key: "depth", + get: function get() { + return this._depth; + }, + set: function set(val) { + this._depth = val; + if (this._resource) { + this._resource.depth = val; + } + } + }]); + return OctreeInfo; + }(), (_applyDecoratedDescriptor(_class14$3.prototype, "depth", [_dec35], Object.getOwnPropertyDescriptor(_class14$3.prototype, "depth"), _class14$3.prototype), _initializer35$2 = applyDecoratedInitializer(_class14$3.prototype, "_enabled", [serializable$9], function () { + return false; + }), _initializer36$1 = applyDecoratedInitializer(_class14$3.prototype, "_minPos", [serializable$9], function () { + return new Vec3(DEFAULT_WORLD_MIN_POS); + }), _initializer37$1 = applyDecoratedInitializer(_class14$3.prototype, "_maxPos", [serializable$9], function () { + return new Vec3(DEFAULT_WORLD_MAX_POS); + }), _initializer38$1 = applyDecoratedInitializer(_class14$3.prototype, "_depth", [serializable$9], function () { + return DEFAULT_OCTREE_DEPTH; + })), _class14$3)) || _class13$4)); + legacyCC.OctreeInfo = OctreeInfo; + var SkinInfo = exports('dz', (_dec36 = ccclass$t('cc.SkinInfo'), _dec37 = type$8(CCFloat), _dec38 = type$8(CCFloat), _dec36(_class16$2 = (_class17$2 = function () { + function SkinInfo() { + this._enabled = _initializer39$1 && _initializer39$1(); + this._blurRadius = _initializer40$1 && _initializer40$1(); + this._sssIntensity = _initializer41$1 && _initializer41$1(); + this._resource = null; + } + var _proto6 = SkinInfo.prototype; + _proto6.activate = function activate(resource) { + this._resource = resource; + this._resource.initialize(this); + }; + _createClass(SkinInfo, [{ + key: "enabled", + get: function get() { + return this._enabled; + }, + set: function set(val) { + if (this._enabled === val) return; + this._enabled = val; + if (this._resource) { + this._resource.enabled = val; + } + } + }, { + key: "blurRadius", + get: function get() { + return this._blurRadius; + }, + set: function set(val) { + this._blurRadius = val; + if (this._resource) { + this._resource.blurRadius = val; + } + } + }, { + key: "sssIntensity", + get: function get() { + return this._sssIntensity; + }, + set: function set(val) { + this._sssIntensity = val; + if (this._resource) { + this._resource.sssIntensity = val; + } + } + }]); + return SkinInfo; + }(), (_applyDecoratedDescriptor(_class17$2.prototype, "blurRadius", [_dec37], Object.getOwnPropertyDescriptor(_class17$2.prototype, "blurRadius"), _class17$2.prototype), _applyDecoratedDescriptor(_class17$2.prototype, "sssIntensity", [_dec38], Object.getOwnPropertyDescriptor(_class17$2.prototype, "sssIntensity"), _class17$2.prototype), _initializer39$1 = applyDecoratedInitializer(_class17$2.prototype, "_enabled", [serializable$9], function () { + return true; + }), _initializer40$1 = applyDecoratedInitializer(_class17$2.prototype, "_blurRadius", [serializable$9], function () { + return 0.01; + }), _initializer41$1 = applyDecoratedInitializer(_class17$2.prototype, "_sssIntensity", [serializable$9], function () { + return 3.0; + })), _class17$2)) || _class16$2)); + legacyCC.SkinInfo = SkinInfo; + var PostSettingsInfo = exports('dA', (_dec39 = ccclass$t('cc.PostSettingsInfo'), _dec40 = type$8(ToneMappingType), _dec39(_class19$2 = (_class20$3 = function () { + function PostSettingsInfo() { + this._toneMappingType = _initializer42$1 && _initializer42$1(); + this._resource = null; + } + var _proto7 = PostSettingsInfo.prototype; + _proto7.activate = function activate(resource) { + this._resource = resource; + this._resource.initialize(this); + this._resource.activate(); + }; + _createClass(PostSettingsInfo, [{ + key: "toneMappingType", + get: function get() { + return this._toneMappingType; + }, + set: function set(val) { + this._toneMappingType = val; + if (this._resource) { + this._resource.toneMappingType = val; + } + } + }]); + return PostSettingsInfo; + }(), (_applyDecoratedDescriptor(_class20$3.prototype, "toneMappingType", [_dec40], Object.getOwnPropertyDescriptor(_class20$3.prototype, "toneMappingType"), _class20$3.prototype), _initializer42$1 = applyDecoratedInitializer(_class20$3.prototype, "_toneMappingType", [serializable$9], function () { + return ToneMappingType.DEFAULT; + })), _class20$3)) || _class19$2)); + legacyCC.PostSettingsInfo = PostSettingsInfo; + var LightProbeInfo = exports('dB', (_dec41 = ccclass$t('cc.LightProbeInfo'), _dec42 = type$8(CCFloat), _dec43 = type$8(CCInteger), _dec44 = type$8(CCInteger), _dec45 = type$8(CCFloat), _dec46 = type$8(CCFloat), _dec41(_class22$2 = (_class23$2 = function () { + function LightProbeInfo() { + this._giScale = _initializer43$1 && _initializer43$1(); + this._giSamples = _initializer44 && _initializer44(); + this._bounces = _initializer45 && _initializer45(); + this._reduceRinging = _initializer46 && _initializer46(); + this._showProbe = _initializer47 && _initializer47(); + this._showWireframe = _initializer48 && _initializer48(); + this._showConvex = _initializer49 && _initializer49(); + this._data = _initializer50 && _initializer50(); + this._lightProbeSphereVolume = _initializer51 && _initializer51(); + this._nodes = []; + this._scene = null; + this._resource = null; + } + var _proto8 = LightProbeInfo.prototype; + _proto8.activate = function activate(scene, resource) { + this._scene = scene; + this._resource = resource; + this._resource.initialize(this); + }; + _proto8.onProbeBakeFinished = function onProbeBakeFinished() { + this.onProbeBakingChanged(this._scene); + }; + _proto8.onProbeBakeCleared = function onProbeBakeCleared() { + this.clearSHCoefficients(); + this.onProbeBakingChanged(this._scene); + }; + _proto8.onProbeBakingChanged = function onProbeBakingChanged(node) { + if (!node) { + return; + } + node.emit(NodeEventType.LIGHT_PROBE_BAKING_CHANGED); + for (var i = 0; i < node.children.length; i++) { + var child = node.children[i]; + this.onProbeBakingChanged(child); + } + }; + _proto8.clearSHCoefficients = function clearSHCoefficients() { + if (!this._data) { + return; + } + var probes = this._data.probes; + for (var i = 0; i < probes.length; i++) { + probes[i].coefficients.length = 0; + } + this.clearAllSHUBOs(); + }; + _proto8.isUniqueNode = function isUniqueNode() { + return this._nodes.length === 1; + }; + _proto8.addNode = function addNode(node) { + if (!node) { + return false; + } + for (var i = 0; i < this._nodes.length; i++) { + if (this._nodes[i].node === node) { + return false; + } + } + this._nodes.push({ + node: node, + probes: null + }); + return true; + }; + _proto8.removeNode = function removeNode(node) { + if (!node) { + return false; + } + var index = this._nodes.findIndex(function (element) { + return element.node === node; + }); + if (index === -1) { + return false; + } + this._nodes.splice(index, 1); + return true; + }; + _proto8.syncData = function syncData(node, probes) { + for (var i = 0; i < this._nodes.length; i++) { + if (this._nodes[i].node === node) { + this._nodes[i].probes = probes; + return; + } + } + }; + _proto8.update = function update(updateTet) { + if (updateTet === void 0) { + updateTet = true; + } + if (!legacyCC.internal.LightProbesData) { + return; + } + if (!this._data) { + this._data = new legacyCC.internal.LightProbesData(); + if (this._resource) { + this._resource.data = this._data; + } + } + var points = []; + for (var i = 0; i < this._nodes.length; i++) { + var node = this._nodes[i].node; + var probes = this._nodes[i].probes; + var worldPosition = node.worldPosition; + if (!probes) { + continue; + } + for (var j = 0; j < probes.length; j++) { + var position = new Vec3(0, 0, 0); + Vec3.add(position, probes[j], worldPosition); + points.push(position); + } + } + var pointCount = points.length; + if (pointCount < 4) { + this.resetAllTetraIndices(); + this._data.reset(); + return; + } + this._data.updateProbes(points); + if (updateTet) { + this.resetAllTetraIndices(); + this._data.updateTetrahedrons(); + } + }; + _proto8.clearAllSHUBOs = function clearAllSHUBOs() { + if (!this._scene) { + return; + } + var renderScene = this._scene.renderScene; + if (!renderScene) { + return; + } + var models = renderScene.models; + for (var i = 0; i < models.length; i++) { + models[i].clearSHUBOs(); + } + }; + _proto8.resetAllTetraIndices = function resetAllTetraIndices() { + if (!this._scene) { + return; + } + var renderScene = this._scene.renderScene; + if (!renderScene) { + return; + } + var models = renderScene.models; + for (var i = 0; i < models.length; i++) { + models[i].tetrahedronIndex = -1; + } + }; + _createClass(LightProbeInfo, [{ + key: "giScale", + get: function get() { + return this._giScale; + }, + set: function set(val) { + if (this._giScale === val) return; + this._giScale = val; + if (this._resource) { + this._resource.giScale = val; + } + } + }, { + key: "giSamples", + get: function get() { + return this._giSamples; + }, + set: function set(val) { + if (this._giSamples === val) return; + this._giSamples = val; + if (this._resource) { + this._resource.giSamples = val; + } + } + }, { + key: "bounces", + get: function get() { + return this._bounces; + }, + set: function set(val) { + if (this._bounces === val) return; + this._bounces = val; + if (this._resource) { + this._resource.bounces = val; + } + } + }, { + key: "reduceRinging", + get: function get() { + return this._reduceRinging; + }, + set: function set(val) { + if (this._reduceRinging === val) return; + this._reduceRinging = val; + if (this._resource) { + this._resource.reduceRinging = val; + } + } + }, { + key: "showProbe", + get: function get() { + return this._showProbe; + }, + set: function set(val) { + if (this._showProbe === val) return; + this._showProbe = val; + if (this._resource) { + this._resource.showProbe = val; + } + } + }, { + key: "showWireframe", + get: function get() { + return this._showWireframe; + }, + set: function set(val) { + if (this._showWireframe === val) return; + this._showWireframe = val; + if (this._resource) { + this._resource.showWireframe = val; + } + } + }, { + key: "showConvex", + get: function get() { + return this._showConvex; + }, + set: function set(val) { + if (this._showConvex === val) return; + this._showConvex = val; + if (this._resource) { + this._resource.showConvex = val; + } + } + }, { + key: "data", + get: function get() { + return this._data; + }, + set: function set(val) { + if (this._data === val) return; + this._data = val; + if (this._resource) { + this._resource.data = val; + } + } + }, { + key: "lightProbeSphereVolume", + get: function get() { + return this._lightProbeSphereVolume; + }, + set: function set(val) { + if (this._lightProbeSphereVolume === val) return; + this._lightProbeSphereVolume = val; + if (this._resource) { + this._resource.lightProbeSphereVolume = val; + } + } + }]); + return LightProbeInfo; + }(), (_applyDecoratedDescriptor(_class23$2.prototype, "giScale", [_dec42], Object.getOwnPropertyDescriptor(_class23$2.prototype, "giScale"), _class23$2.prototype), _applyDecoratedDescriptor(_class23$2.prototype, "giSamples", [_dec43], Object.getOwnPropertyDescriptor(_class23$2.prototype, "giSamples"), _class23$2.prototype), _applyDecoratedDescriptor(_class23$2.prototype, "bounces", [_dec44], Object.getOwnPropertyDescriptor(_class23$2.prototype, "bounces"), _class23$2.prototype), _applyDecoratedDescriptor(_class23$2.prototype, "reduceRinging", [_dec45], Object.getOwnPropertyDescriptor(_class23$2.prototype, "reduceRinging"), _class23$2.prototype), _applyDecoratedDescriptor(_class23$2.prototype, "lightProbeSphereVolume", [_dec46], Object.getOwnPropertyDescriptor(_class23$2.prototype, "lightProbeSphereVolume"), _class23$2.prototype), _initializer43$1 = applyDecoratedInitializer(_class23$2.prototype, "_giScale", [serializable$9], function () { + return 1.0; + }), _initializer44 = applyDecoratedInitializer(_class23$2.prototype, "_giSamples", [serializable$9], function () { + return 1024; + }), _initializer45 = applyDecoratedInitializer(_class23$2.prototype, "_bounces", [serializable$9], function () { + return 2; + }), _initializer46 = applyDecoratedInitializer(_class23$2.prototype, "_reduceRinging", [serializable$9], function () { + return 0.0; + }), _initializer47 = applyDecoratedInitializer(_class23$2.prototype, "_showProbe", [serializable$9], function () { + return true; + }), _initializer48 = applyDecoratedInitializer(_class23$2.prototype, "_showWireframe", [serializable$9], function () { + return true; + }), _initializer49 = applyDecoratedInitializer(_class23$2.prototype, "_showConvex", [serializable$9], function () { + return false; + }), _initializer50 = applyDecoratedInitializer(_class23$2.prototype, "_data", [serializable$9], function () { + return null; + }), _initializer51 = applyDecoratedInitializer(_class23$2.prototype, "_lightProbeSphereVolume", [serializable$9], function () { + return 1.0; + })), _class23$2)) || _class22$2)); + var SceneGlobals = exports('dC', (_dec47 = ccclass$t('cc.SceneGlobals'), _dec48 = type$8(SkyboxInfo), _dec47(_class25 = (_class26 = function () { + function SceneGlobals() { + this.ambient = _initializer52 && _initializer52(); + this.shadows = _initializer53 && _initializer53(); + this._skybox = _initializer54 && _initializer54(); + this.fog = _initializer55 && _initializer55(); + this.octree = _initializer56 && _initializer56(); + this.skin = _initializer57 && _initializer57(); + this.lightProbeInfo = _initializer58 && _initializer58(); + this.postSettings = _initializer59 && _initializer59(); + this.bakedWithStationaryMainLight = _initializer60 && _initializer60(); + this.bakedWithHighpLightmap = _initializer61 && _initializer61(); + this.disableLightmap = false; + } + var _proto9 = SceneGlobals.prototype; + _proto9.activate = function activate(scene) { + var sceneData = legacyCC.director.root.pipeline.pipelineSceneData; + this.skybox.activate(sceneData.skybox); + this.ambient.activate(sceneData.ambient); + this.shadows.activate(sceneData.shadows); + this.fog.activate(sceneData.fog); + this.octree.activate(sceneData.octree); + this.skin.activate(sceneData.skin); + this.postSettings.activate(sceneData.postSettings); + if (this.lightProbeInfo && sceneData.lightProbes) { + this.lightProbeInfo.activate(scene, sceneData.lightProbes); + } + var root = legacyCC.director.root; + root.onGlobalPipelineStateChanged(); + }; + _createClass(SceneGlobals, [{ + key: "skybox", + get: function get() { + return this._skybox; + }, + set: function set(value) { + this._skybox = value; + } + }]); + return SceneGlobals; + }(), (_initializer52 = applyDecoratedInitializer(_class26.prototype, "ambient", [serializable$9], function () { + return new AmbientInfo(); + }), _initializer53 = applyDecoratedInitializer(_class26.prototype, "shadows", [serializable$9], function () { + return new ShadowsInfo(); + }), _initializer54 = applyDecoratedInitializer(_class26.prototype, "_skybox", [serializable$9], function () { + return new SkyboxInfo(); + }), _initializer55 = applyDecoratedInitializer(_class26.prototype, "fog", [serializable$9], function () { + return new FogInfo(); + }), _applyDecoratedDescriptor(_class26.prototype, "skybox", [_dec48], Object.getOwnPropertyDescriptor(_class26.prototype, "skybox"), _class26.prototype), _initializer56 = applyDecoratedInitializer(_class26.prototype, "octree", [serializable$9], function () { + return new OctreeInfo(); + }), _initializer57 = applyDecoratedInitializer(_class26.prototype, "skin", [serializable$9], function () { + return new SkinInfo(); + }), _initializer58 = applyDecoratedInitializer(_class26.prototype, "lightProbeInfo", [serializable$9], function () { + return new LightProbeInfo(); + }), _initializer59 = applyDecoratedInitializer(_class26.prototype, "postSettings", [serializable$9], function () { + return new PostSettingsInfo(); + }), _initializer60 = applyDecoratedInitializer(_class26.prototype, "bakedWithStationaryMainLight", [serializable$9], function () { + return false; + }), _initializer61 = applyDecoratedInitializer(_class26.prototype, "bakedWithHighpLightmap", [serializable$9], function () { + return false; + })), _class26)) || _class25)); + legacyCC.SceneGlobals = SceneGlobals; + + var _dec$1$, _dec2$1l, _class$1Y, _class2$1K, _initializer$1x, _dec3$X, _dec4$C, _dec5$y, _dec6$p, _dec7$m, _dec8$e, _class4$e, _class5$e, _initializer2$1b, _initializer3$S, _initializer4$J, _initializer5$z, _initializer6$u, _dec9$b, _class7$4, _class8$3, _initializer7$m, _dec10$6, _dec11$3, _dec12$3, _class10$3, _class11$3, _initializer8$l, _initializer9$j, _initializer10$j, _dec13$3, _dec14$2, _dec15$2, _class13$3, _class14$2, _initializer11$i, _initializer12$h, _dec16$1, _dec17$1, _dec18$1, _class16$1, _class17$1, _initializer13$e, _initializer14$c, _dec19$1, _dec20$1, _dec21$1, _dec22$1, _dec23$1, _dec24$1, _class19$1, _class20$2, _initializer15$9, _initializer16$9, _initializer17$7, _initializer18$5, _initializer19$4, _initializer20$4, _dec25$1, _dec26$1, _dec27$1, _dec28$1, _class22$1, _class23$1, _initializer21$4, _initializer22$3, _initializer23$2, _initializer24$2, _initializer25$2, _initializer26$2; + var TargetInfo = (_dec$1$ = ccclass$t('cc.TargetInfo'), _dec2$1l = type$8([CCString]), _dec$1$(_class$1Y = (_class2$1K = function TargetInfo() { + this.localID = _initializer$1x && _initializer$1x(); + }, (_initializer$1x = applyDecoratedInitializer(_class2$1K.prototype, "localID", [serializable$9, _dec2$1l], function () { + return []; + })), _class2$1K)) || _class$1Y); + var TargetOverrideInfo = (_dec3$X = ccclass$t('cc.TargetOverrideInfo'), _dec4$C = type$8(CCObject), _dec5$y = type$8(TargetInfo), _dec6$p = type$8([CCString]), _dec7$m = type$8(Node$1), _dec8$e = type$8(TargetInfo), _dec3$X(_class4$e = (_class5$e = function TargetOverrideInfo() { + this.source = _initializer2$1b && _initializer2$1b(); + this.sourceInfo = _initializer3$S && _initializer3$S(); + this.propertyPath = _initializer4$J && _initializer4$J(); + this.target = _initializer5$z && _initializer5$z(); + this.targetInfo = _initializer6$u && _initializer6$u(); + }, (_initializer2$1b = applyDecoratedInitializer(_class5$e.prototype, "source", [serializable$9, _dec4$C], function () { + return null; + }), _initializer3$S = applyDecoratedInitializer(_class5$e.prototype, "sourceInfo", [serializable$9, _dec5$y], function () { + return null; + }), _initializer4$J = applyDecoratedInitializer(_class5$e.prototype, "propertyPath", [serializable$9, _dec6$p], function () { + return []; + }), _initializer5$z = applyDecoratedInitializer(_class5$e.prototype, "target", [serializable$9, _dec7$m], function () { + return null; + }), _initializer6$u = applyDecoratedInitializer(_class5$e.prototype, "targetInfo", [serializable$9, _dec8$e], function () { + return null; + })), _class5$e)) || _class4$e); + var CompPrefabInfo = (_dec9$b = ccclass$t('cc.CompPrefabInfo'), _dec9$b(_class7$4 = (_class8$3 = function CompPrefabInfo() { + this.fileId = _initializer7$m && _initializer7$m(); + }, (_initializer7$m = applyDecoratedInitializer(_class8$3.prototype, "fileId", [serializable$9], function () { + return ''; + })), _class8$3)) || _class7$4); + var PropertyOverrideInfo = (_dec10$6 = ccclass$t('CCPropertyOverrideInfo'), _dec11$3 = type$8(TargetInfo), _dec12$3 = type$8([CCString]), _dec10$6(_class10$3 = (_class11$3 = function () { + function PropertyOverrideInfo() { + this.targetInfo = _initializer8$l && _initializer8$l(); + this.propertyPath = _initializer9$j && _initializer9$j(); + this.value = _initializer10$j && _initializer10$j(); + } + var _proto = PropertyOverrideInfo.prototype; + _proto.isTarget = function isTarget(localID, propPath) { + }; + return PropertyOverrideInfo; + }(), (_initializer8$l = applyDecoratedInitializer(_class11$3.prototype, "targetInfo", [serializable$9, _dec11$3], function () { + return null; + }), _initializer9$j = applyDecoratedInitializer(_class11$3.prototype, "propertyPath", [serializable$9, _dec12$3], function () { + return []; + }), _initializer10$j = applyDecoratedInitializer(_class11$3.prototype, "value", [serializable$9], null)), _class11$3)) || _class10$3); + var MountedChildrenInfo = (_dec13$3 = ccclass$t('cc.MountedChildrenInfo'), _dec14$2 = type$8(TargetInfo), _dec15$2 = type$8([Node$1]), _dec13$3(_class13$3 = (_class14$2 = function () { + function MountedChildrenInfo() { + this.targetInfo = _initializer11$i && _initializer11$i(); + this.nodes = _initializer12$h && _initializer12$h(); + } + var _proto2 = MountedChildrenInfo.prototype; + _proto2.isTarget = function isTarget(localID) { + }; + return MountedChildrenInfo; + }(), (_initializer11$i = applyDecoratedInitializer(_class14$2.prototype, "targetInfo", [serializable$9, _dec14$2], function () { + return null; + }), _initializer12$h = applyDecoratedInitializer(_class14$2.prototype, "nodes", [serializable$9, _dec15$2], function () { + return []; + })), _class14$2)) || _class13$3); + var MountedComponentsInfo = (_dec16$1 = ccclass$t('cc.MountedComponentsInfo'), _dec17$1 = type$8(TargetInfo), _dec18$1 = type$8([Component]), _dec16$1(_class16$1 = (_class17$1 = function () { + function MountedComponentsInfo() { + this.targetInfo = _initializer13$e && _initializer13$e(); + this.components = _initializer14$c && _initializer14$c(); + } + var _proto3 = MountedComponentsInfo.prototype; + _proto3.isTarget = function isTarget(localID) { + }; + return MountedComponentsInfo; + }(), (_initializer13$e = applyDecoratedInitializer(_class17$1.prototype, "targetInfo", [serializable$9, _dec17$1], function () { + return null; + }), _initializer14$c = applyDecoratedInitializer(_class17$1.prototype, "components", [serializable$9, _dec18$1], function () { + return []; + })), _class17$1)) || _class16$1); + var PrefabInstance = (_dec19$1 = ccclass$t('cc.PrefabInstance'), _dec20$1 = type$8(Node$1), _dec21$1 = type$8([MountedChildrenInfo]), _dec22$1 = type$8([MountedComponentsInfo]), _dec23$1 = type$8([PropertyOverrideInfo]), _dec24$1 = type$8([TargetInfo]), _dec19$1(_class19$1 = (_class20$2 = function () { + function PrefabInstance() { + this.fileId = _initializer15$9 && _initializer15$9(); + this.prefabRootNode = _initializer16$9 && _initializer16$9(); + this.mountedChildren = _initializer17$7 && _initializer17$7(); + this.mountedComponents = _initializer18$5 && _initializer18$5(); + this.propertyOverrides = _initializer19$4 && _initializer19$4(); + this.removedComponents = _initializer20$4 && _initializer20$4(); + this.targetMap = {}; + this.expanded = false; + } + var _proto4 = PrefabInstance.prototype; + _proto4.findPropertyOverride = function findPropertyOverride(localID, propPath) { + }; + _proto4.removePropertyOverride = function removePropertyOverride(localID, propPath) { + }; + return PrefabInstance; + }(), (_initializer15$9 = applyDecoratedInitializer(_class20$2.prototype, "fileId", [serializable$9], function () { + return ''; + }), _initializer16$9 = applyDecoratedInitializer(_class20$2.prototype, "prefabRootNode", [serializable$9, _dec20$1], null), _initializer17$7 = applyDecoratedInitializer(_class20$2.prototype, "mountedChildren", [serializable$9, _dec21$1], function () { + return []; + }), _initializer18$5 = applyDecoratedInitializer(_class20$2.prototype, "mountedComponents", [serializable$9, _dec22$1], function () { + return []; + }), _initializer19$4 = applyDecoratedInitializer(_class20$2.prototype, "propertyOverrides", [serializable$9, _dec23$1], function () { + return []; + }), _initializer20$4 = applyDecoratedInitializer(_class20$2.prototype, "removedComponents", [serializable$9, _dec24$1], function () { + return []; + })), _class20$2)) || _class19$1); + var PrefabInfo = (_dec25$1 = ccclass$t('cc.PrefabInfo'), _dec26$1 = type$8(Node$1), _dec27$1 = type$8(PrefabInstance), _dec28$1 = type$8([TargetOverrideInfo]), _dec25$1(_class22$1 = (_class23$1 = function PrefabInfo() { + this.root = _initializer21$4 && _initializer21$4(); + this.asset = _initializer22$3 && _initializer22$3(); + this.fileId = _initializer23$2 && _initializer23$2(); + this.instance = _initializer24$2 && _initializer24$2(); + this.targetOverrides = _initializer25$2 && _initializer25$2(); + this.nestedPrefabInstanceRoots = _initializer26$2 && _initializer26$2(); + }, (_initializer21$4 = applyDecoratedInitializer(_class23$1.prototype, "root", [serializable$9, _dec26$1], null), _initializer22$3 = applyDecoratedInitializer(_class23$1.prototype, "asset", [serializable$9], null), _initializer23$2 = applyDecoratedInitializer(_class23$1.prototype, "fileId", [serializable$9], function () { + return ''; + }), _initializer24$2 = applyDecoratedInitializer(_class23$1.prototype, "instance", [serializable$9, _dec27$1], null), _initializer25$2 = applyDecoratedInitializer(_class23$1.prototype, "targetOverrides", [serializable$9, _dec28$1], null), _initializer26$2 = applyDecoratedInitializer(_class23$1.prototype, "nestedPrefabInstanceRoots", [serializable$9], null)), _class23$1)) || _class22$1); + legacyCC._PrefabInfo = PrefabInfo; + + function createNodeWithPrefab(node) { + var prefabInfo = node === null || node === void 0 ? void 0 : node.prefab; + if (!prefabInfo) { + return; + } + var prefabInstance = prefabInfo.instance; + if (!prefabInstance) { + return; + } + if (!prefabInfo.asset) { + { + errorID(3701, node.name); + } + prefabInfo.instance = undefined; + return; + } + var _objFlags = node._objFlags; + var _parent = node.getParent(); + var _id = node.uuid; + node[editorExtrasTag]; + legacyCC.game._isCloning = true; + { + prefabInfo.asset._doInstantiate(node); + } + legacyCC.game._isCloning = false; + node._objFlags = _objFlags; + node.modifyParent(_parent); + node.id = _id; + if (node.prefab) { + node.prefab.instance = prefabInfo.instance; + } + } + function generateTargetMap(node, targetMap, isRoot) { + var _node$prefab; + if (!targetMap) { + return; + } + if (!node) { + return; + } + var curTargetMap = targetMap; + var prefabInstance = (_node$prefab = node.prefab) === null || _node$prefab === void 0 ? void 0 : _node$prefab.instance; + if (!isRoot && prefabInstance) { + targetMap[prefabInstance.fileId] = {}; + curTargetMap = targetMap[prefabInstance.fileId]; + } + var prefabInfo = node.prefab; + if (prefabInfo) { + curTargetMap[prefabInfo.fileId] = node; + } + var components = node.components; + for (var i = 0; i < components.length; i++) { + var comp = components[i]; + if (comp.__prefab) { + curTargetMap[comp.__prefab.fileId] = comp; + } + } + for (var _i = 0; _i < node.children.length; _i++) { + var childNode = node.children[_i]; + generateTargetMap(childNode, curTargetMap, false); + } + } + function getTarget(localID, targetMap) { + if (!localID) { + return null; + } + var target = null; + var targetIter = targetMap; + for (var i = 0; i < localID.length; i++) { + if (!targetIter) { + return null; + } + targetIter = targetIter[localID[i]]; + } + target = targetIter; + return target; + } + function applyMountedChildren(node, mountedChildren, targetMap) { + if (!mountedChildren) { + return; + } + for (var i = 0; i < mountedChildren.length; i++) { + var childInfo = mountedChildren[i]; + if (childInfo && childInfo.targetInfo) { + var target = getTarget(childInfo.targetInfo.localID, targetMap); + if (!target) { + continue; + } + var curTargetMap = targetMap; + var localID = childInfo.targetInfo.localID; + if (localID.length > 0) { + for (var _i2 = 0; _i2 < localID.length - 1; _i2++) { + curTargetMap = curTargetMap[localID[_i2]]; + } + } + if (childInfo.nodes) { + for (var _i3 = 0; _i3 < childInfo.nodes.length; _i3++) { + var childNode = childInfo.nodes[_i3]; + if (!childNode || target.children.includes(childNode)) { + continue; + } + target.children.push(childNode); + childNode.modifyParent(target); + generateTargetMap(childNode, curTargetMap, false); + childNode.siblingIndex = target.children.length - 1; + expandPrefabInstanceNode(childNode, true); + } + } + } + } + } + function applyMountedComponents(node, mountedComponents, targetMap) { + if (!mountedComponents) { + return; + } + for (var i = 0; i < mountedComponents.length; i++) { + var componentsInfo = mountedComponents[i]; + if (componentsInfo && componentsInfo.targetInfo) { + var target = getTarget(componentsInfo.targetInfo.localID, targetMap); + if (!target) { + continue; + } + if (componentsInfo.components) { + for (var _i4 = 0; _i4 < componentsInfo.components.length; _i4++) { + var comp = componentsInfo.components[_i4]; + if (!comp) { + continue; + } + comp.node = target; + target.getWritableComponents().push(comp); + } + } + } + } + } + function applyRemovedComponents(node, removedComponents, targetMap) { + if (!removedComponents) { + return; + } + for (var i = 0; i < removedComponents.length; i++) { + var targetInfo = removedComponents[i]; + if (targetInfo) { + var target = getTarget(targetInfo.localID, targetMap); + if (!target || !target.node) { + continue; + } + var index = target.node.components.indexOf(target); + if (index >= 0) { + target.node.getWritableComponents().splice(index, 1); + } + } + } + } + function applyPropertyOverrides(node, propertyOverrides, targetMap) { + if (propertyOverrides.length <= 0) { + return; + } + var target = null; + for (var i = 0; i < propertyOverrides.length; i++) { + var propOverride = propertyOverrides[i]; + if (propOverride && propOverride.targetInfo) { + var targetInfo = propOverride.targetInfo; + target = getTarget(targetInfo.localID, targetMap); + if (!target) { + continue; + } + var targetPropOwner = target; + var propertyPath = propOverride.propertyPath.slice(); + if (propertyPath.length > 0) { + var targetPropName = propertyPath.pop(); + if (!targetPropName) { + continue; + } + for (var _i5 = 0; _i5 < propertyPath.length; _i5++) { + var propName = propertyPath[_i5]; + targetPropOwner = targetPropOwner[propName]; + if (!targetPropOwner) { + break; + } + } + if (!targetPropOwner) { + continue; + } + if (Array.isArray(targetPropOwner)) { + if (targetPropName === 'length') { + targetPropOwner[targetPropName] = propOverride.value; + } else { + var index = Number.parseInt(targetPropName); + if (Number.isInteger(index) && index < targetPropOwner.length) { + targetPropOwner[targetPropName] = propOverride.value; + } + } + } else if (targetPropOwner[targetPropName] instanceof ValueType) { + targetPropOwner[targetPropName].set(propOverride.value); + } else { + targetPropOwner[targetPropName] = propOverride.value; + } + } + } + } + } + function applyTargetOverrides(node) { + var _node$prefab2; + var targetOverrides = (_node$prefab2 = node.prefab) === null || _node$prefab2 === void 0 ? void 0 : _node$prefab2.targetOverrides; + if (targetOverrides) { + for (var i = 0; i < targetOverrides.length; i++) { + var _targetAsNode$prefab; + var targetOverride = targetOverrides[i]; + var source = targetOverride.source; + var sourceInfo = targetOverride.sourceInfo; + if (sourceInfo) { + var _src$prefab; + var src = targetOverride.source; + var sourceInstance = src === null || src === void 0 ? void 0 : (_src$prefab = src.prefab) === null || _src$prefab === void 0 ? void 0 : _src$prefab.instance; + if (sourceInstance && sourceInstance.targetMap) { + source = getTarget(sourceInfo.localID, sourceInstance.targetMap); + } + } + if (!source) { + continue; + } + var target = null; + var targetInfo = targetOverride.targetInfo; + if (!targetInfo) { + continue; + } + var targetAsNode = targetOverride.target; + var targetInstance = targetAsNode === null || targetAsNode === void 0 ? void 0 : (_targetAsNode$prefab = targetAsNode.prefab) === null || _targetAsNode$prefab === void 0 ? void 0 : _targetAsNode$prefab.instance; + if (!targetInstance || !targetInstance.targetMap) { + continue; + } + target = getTarget(targetInfo.localID, targetInstance.targetMap); + if (!target) { + continue; + } + var propertyPath = targetOverride.propertyPath.slice(); + var targetPropOwner = source; + if (propertyPath.length > 0) { + var targetPropName = propertyPath.pop(); + if (!targetPropName) { + return; + } + for (var _i6 = 0; _i6 < propertyPath.length; _i6++) { + var propName = propertyPath[_i6]; + targetPropOwner = targetPropOwner[propName]; + if (!targetPropOwner) { + break; + } + } + if (!targetPropOwner) { + continue; + } + targetPropOwner[targetPropName] = target; + } + } + } + } + function expandPrefabInstanceNode(node, recursively) { + var _node$prefab3; + if (recursively === void 0) { + recursively = false; + } + var prefabInstance = node === null || node === void 0 ? void 0 : (_node$prefab3 = node.prefab) === null || _node$prefab3 === void 0 ? void 0 : _node$prefab3.instance; + if (prefabInstance && !prefabInstance.expanded) { + createNodeWithPrefab(node); + if (recursively) { + if (node && node.children) { + node.children.forEach(function (child) { + expandPrefabInstanceNode(child, true); + }); + } + } + var targetMap = {}; + prefabInstance.targetMap = targetMap; + generateTargetMap(node, targetMap, true); + applyMountedChildren(node, prefabInstance.mountedChildren, targetMap); + applyRemovedComponents(node, prefabInstance.removedComponents, targetMap); + applyMountedComponents(node, prefabInstance.mountedComponents, targetMap); + applyPropertyOverrides(node, prefabInstance.propertyOverrides, targetMap); + prefabInstance.expanded = true; + } else if (recursively) { + if (node && node.children) { + node.children.forEach(function (child) { + expandPrefabInstanceNode(child, true); + }); + } + } + } + function expandNestedPrefabInstanceNode(node) { + var prefabInfo = node.prefab; + if (prefabInfo && prefabInfo.nestedPrefabInstanceRoots) { + prefabInfo.nestedPrefabInstanceRoots.forEach(function (instanceNode) { + expandPrefabInstanceNode(instanceNode); + }); + } + } + function applyNodeAndComponentId(prefabInstanceNode, rootId) { + var components = prefabInstanceNode.components, + children = prefabInstanceNode.children; + for (var i = 0; i < components.length; i++) { + var _comp$__prefab$fileId, _comp$__prefab; + var comp = components[i]; + var fileID = (_comp$__prefab$fileId = (_comp$__prefab = comp.__prefab) === null || _comp$__prefab === void 0 ? void 0 : _comp$__prefab.fileId) !== null && _comp$__prefab$fileId !== void 0 ? _comp$__prefab$fileId : ''; + comp._id = "" + rootId + fileID; + } + for (var _i7 = 0; _i7 < children.length; _i7++) { + var child = children[_i7]; + var prefabInfo = child.prefab; + var fileId = prefabInfo !== null && prefabInfo !== void 0 && prefabInfo.instance ? prefabInfo.instance.fileId : prefabInfo === null || prefabInfo === void 0 ? void 0 : prefabInfo.fileId; + if (!fileId) continue; + child.id = "" + rootId + fileId; + if (!(prefabInfo !== null && prefabInfo !== void 0 && prefabInfo.instance)) { + applyNodeAndComponentId(child, rootId); + } + } + } + + var utils = /*#__PURE__*/Object.freeze({ + __proto__: null, + createNodeWithPrefab: createNodeWithPrefab, + generateTargetMap: generateTargetMap, + getTarget: getTarget, + applyMountedChildren: applyMountedChildren, + applyMountedComponents: applyMountedComponents, + applyRemovedComponents: applyRemovedComponents, + applyPropertyOverrides: applyPropertyOverrides, + applyTargetOverrides: applyTargetOverrides, + expandPrefabInstanceNode: expandPrefabInstanceNode, + expandNestedPrefabInstanceNode: expandNestedPrefabInstanceNode, + applyNodeAndComponentId: applyNodeAndComponentId, + TargetInfo: TargetInfo, + TargetOverrideInfo: TargetOverrideInfo, + CompPrefabInfo: CompPrefabInfo, + PropertyOverrideInfo: PropertyOverrideInfo, + MountedChildrenInfo: MountedChildrenInfo, + MountedComponentsInfo: MountedComponentsInfo, + PrefabInstance: PrefabInstance, + PrefabInfo: PrefabInfo + }); + + var _dec$1_, _class$1X, _class2$1J, _initializer$1w, _initializer2$1a; + var Scene = exports('df', (_dec$1_ = ccclass$t('cc.Scene'), _dec$1_(_class$1X = (_class2$1J = function (_Node) { + _inheritsLoose(Scene, _Node); + var _proto = Scene.prototype; + _proto._updateScene = function _updateScene() { + this._scene = this; + }; + function Scene(name) { + var _this; + _this = _Node.call(this, name) || this; + _this.autoReleaseAssets = _initializer$1w && _initializer$1w(); + _this._globals = _initializer2$1a && _initializer2$1a(); + _this.dependAssets = null; + _this._renderScene = null; + _this._inited = void 0; + _this._prefabSyncedInLiveReload = false; + _this._activeInHierarchy = false; + if (legacyCC.director && legacyCC.director.root) { + _this._renderScene = legacyCC.director.root.createScene({}); + } + _this._inited = legacyCC.game ? !legacyCC.game._isCloning : true; + return _this; + } + _proto.destroy = function destroy() { + var success = CCObject.prototype.destroy.call(this); + if (success) { + var children = this._children; + for (var i = 0; i < children.length; ++i) { + children[i].active = false; + } + } + if (this._renderScene) legacyCC.director.root.destroyScene(this._renderScene); + this._active = false; + this._activeInHierarchy = false; + return success; + }; + _proto.addComponent = function addComponent() { + throw new Error(getError(3822)); + }; + _proto._onHierarchyChanged = function _onHierarchyChanged() {}; + _proto._onPostActivated = function _onPostActivated(active) {}; + _proto._onBatchCreated = function _onBatchCreated(dontSyncChildPrefab) { + var len = this._children.length; + for (var i = 0; i < len; ++i) { + this._children[i]._siblingIndex = i; + this._children[i]._onBatchCreated(dontSyncChildPrefab); + } + }; + _proto.updateWorldTransform = function updateWorldTransform() {}; + _proto._instantiate = function _instantiate() {}; + _proto._load = function _load() { + if (!this._inited) { + expandNestedPrefabInstanceNode(this); + applyTargetOverrides(this); + this._onBatchCreated(EDITOR ); + this._inited = true; + } + this.walk(Node$1._setScene); + }; + _proto._activate = function _activate(active) { + if (active === void 0) { + active = true; + } + legacyCC.director._nodeActivator.activateNode(this, active); + { + this._globals.activate(this); + } + }; + _createClass(Scene, [{ + key: "renderScene", + get: function get() { + return this._renderScene; + } + }, { + key: "globals", + get: function get() { + return this._globals; + } + }]); + return Scene; + }(Node$1), (_initializer$1w = applyDecoratedInitializer(_class2$1J.prototype, "autoReleaseAssets", [serializable$9], function () { + return false; + }), _initializer2$1a = applyDecoratedInitializer(_class2$1J.prototype, "_globals", [serializable$9], function () { + return new SceneGlobals(); + })), _class2$1J)) || _class$1X)); + legacyCC.Scene = Scene; + + var _dec$1Z, _class$1W, _class2$1I, _initializer$1v; + var SceneAsset = exports('dT', (_dec$1Z = ccclass$t('cc.SceneAsset'), _dec$1Z(_class$1W = (_class2$1I = function (_Asset) { + _inheritsLoose(SceneAsset, _Asset); + function SceneAsset() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Asset.call.apply(_Asset, [this].concat(args)) || this; + _this.scene = _initializer$1v && _initializer$1v(); + return _this; + } + var _proto = SceneAsset.prototype; + _proto.initDefault = function initDefault(uuid) { + _Asset.prototype.initDefault.call(this, uuid); + this.scene = new Scene('New Scene'); + }; + _proto.validate = function validate() { + return !!this.scene; + }; + return SceneAsset; + }(Asset), (_initializer$1v = applyDecoratedInitializer(_class2$1I.prototype, "scene", [serializable$9], function () { + return null; + })), _class2$1I)) || _class$1W)); + legacyCC.SceneAsset = SceneAsset; + + deprecateModuleExportedName({ + SystemEventType: { + newName: 'Input.EventType', + since: '3.3.0', + removed: false + } + }); + + deprecateModuleExportedName({ + SystemEvent: { + newName: 'Input', + since: '3.4.0', + removed: false + }, + systemEvent: { + newName: 'input', + since: '3.4.0', + removed: false + } + }); + + var Event = exports('ee', function () { + function Event(type, bubbles) { + this.type = void 0; + this.bubbles = void 0; + this.target = null; + this.currentTarget = null; + this.eventPhase = 0; + this.propagationStopped = false; + this.propagationImmediateStopped = false; + this.type = type; + this.bubbles = !!bubbles; + } + var _proto = Event.prototype; + _proto.unuse = function unuse() { + this.type = Event.NO_TYPE; + this.target = null; + this.currentTarget = null; + this.eventPhase = Event.NONE; + this.propagationStopped = false; + this.propagationImmediateStopped = false; + }; + _proto.reuse = function reuse(type, bubbles) { + this.type = type; + this.bubbles = bubbles || false; + }; + _proto.isStopped = function isStopped() { + return this.propagationStopped || this.propagationImmediateStopped; + }; + _proto.getCurrentTarget = function getCurrentTarget() { + return this.currentTarget; + }; + _proto.getType = function getType() { + return this.type; + }; + return Event; + }()); + Event.NO_TYPE = 'no_type'; + Event.TOUCH = 'touch'; + Event.MOUSE = 'mouse'; + Event.KEYBOARD = 'keyboard'; + Event.ACCELERATION = 'acceleration'; + Event.NONE = 0; + Event.CAPTURING_PHASE = 1; + Event.AT_TARGET = 2; + Event.BUBBLING_PHASE = 3; + legacyCC.Event = Event; + + var SystemEventType; exports('ed', SystemEventType); + (function (SystemEventType) { + SystemEventType["TOUCH_START"] = "touch-start"; + SystemEventType["TOUCH_MOVE"] = "touch-move"; + SystemEventType["TOUCH_END"] = "touch-end"; + SystemEventType["TOUCH_CANCEL"] = "touch-cancel"; + SystemEventType["MOUSE_DOWN"] = "mouse-down"; + SystemEventType["MOUSE_MOVE"] = "mouse-move"; + SystemEventType["MOUSE_UP"] = "mouse-up"; + SystemEventType["MOUSE_WHEEL"] = "mouse-wheel"; + SystemEventType["MOUSE_ENTER"] = "mouse-enter"; + SystemEventType["MOUSE_LEAVE"] = "mouse-leave"; + SystemEventType["KEY_DOWN"] = "keydown"; + SystemEventType["KEY_UP"] = "keyup"; + SystemEventType["DEVICEMOTION"] = "devicemotion"; + SystemEventType["TRANSFORM_CHANGED"] = "transform-changed"; + SystemEventType["SCENE_CHANGED_FOR_PERSISTS"] = "scene-changed-for-persists"; + SystemEventType["SIZE_CHANGED"] = "size-changed"; + SystemEventType["ANCHOR_CHANGED"] = "anchor-changed"; + SystemEventType["COLOR_CHANGED"] = "color-changed"; + SystemEventType["CHILD_ADDED"] = "child-added"; + SystemEventType["CHILD_REMOVED"] = "child-removed"; + SystemEventType["PARENT_CHANGED"] = "parent-changed"; + SystemEventType["NODE_DESTROYED"] = "node-destroyed"; + SystemEventType["LAYER_CHANGED"] = "layer-changed"; + SystemEventType["SIBLING_ORDER_CHANGED"] = "sibling-order-changed"; + })(SystemEventType || (exports('ed', SystemEventType = {}))); + var InputEventType; + (function (InputEventType) { + InputEventType["TOUCH_START"] = "touch-start"; + InputEventType["TOUCH_MOVE"] = "touch-move"; + InputEventType["TOUCH_END"] = "touch-end"; + InputEventType["TOUCH_CANCEL"] = "touch-cancel"; + InputEventType["MOUSE_DOWN"] = "mouse-down"; + InputEventType["MOUSE_MOVE"] = "mouse-move"; + InputEventType["MOUSE_UP"] = "mouse-up"; + InputEventType["MOUSE_WHEEL"] = "mouse-wheel"; + InputEventType["KEY_DOWN"] = "keydown"; + InputEventType["KEY_PRESSING"] = "key-pressing"; + InputEventType["KEY_UP"] = "keyup"; + InputEventType["DEVICEMOTION"] = "devicemotion"; + InputEventType["GAMEPAD_INPUT"] = "gamepad-input"; + InputEventType["GAMEPAD_CHANGE"] = "gamepad-change"; + InputEventType["HANDLE_INPUT"] = "handle-input"; + InputEventType["HANDLE_POSE_INPUT"] = "handle-pose-input"; + InputEventType["HMD_POSE_INPUT"] = "hmd-pose-input"; + InputEventType["HANDHELD_POSE_INPUT"] = "handheld-pose-input"; + })(InputEventType || (InputEventType = {})); + legacyCC.SystemEventType = SystemEventType; + + var EventAcceleration = exports('ef', function (_Event) { + _inheritsLoose(EventAcceleration, _Event); + function EventAcceleration(acc, bubbles) { + var _this; + _this = _Event.call(this, SystemEventType.DEVICEMOTION, bubbles) || this; + _this.acc = void 0; + _this.acc = acc; + return _this; + } + return EventAcceleration; + }(Event)); + Event.EventAcceleration = EventAcceleration; + + var EventKeyboard = exports('eg', function (_Event) { + _inheritsLoose(EventKeyboard, _Event); + function EventKeyboard(keyCode, eventType, bubbles) { + var _this; + if (typeof eventType === 'boolean') { + var _isPressed = eventType; + eventType = _isPressed ? SystemEventType.KEY_DOWN : SystemEventType.KEY_UP; + } + _this = _Event.call(this, eventType, bubbles) || this; + _this.windowId = void 0; + _this.keyCode = void 0; + _this.rawEvent = void 0; + _this._isPressed = void 0; + _this._isPressed = eventType !== SystemEventType.KEY_UP; + if (typeof keyCode === 'number') { + _this.keyCode = keyCode; + } else { + _this.keyCode = keyCode.keyCode; + _this.rawEvent = keyCode; + } + _this.windowId = 0; + return _this; + } + _createClass(EventKeyboard, [{ + key: "isPressed", + get: function get() { + return this._isPressed; + } + }]); + return EventKeyboard; + }(Event)); + Event.EventKeyboard = EventKeyboard; + + var EventMouse = exports('eh', function (_Event) { + _inheritsLoose(EventMouse, _Event); + function EventMouse(eventType, bubbles, prevLoc, windowId) { + var _this; + _this = _Event.call(this, eventType, bubbles) || this; + _this.movementX = 0; + _this.movementY = 0; + _this.windowId = 0; + _this.preventSwallow = false; + _this._eventType = void 0; + _this._button = EventMouse.BUTTON_MISSING; + _this._x = 0; + _this._y = 0; + _this._prevX = 0; + _this._prevY = 0; + _this._scrollX = 0; + _this._scrollY = 0; + _this._eventType = eventType; + if (prevLoc) { + _this._prevX = prevLoc.x; + _this._prevY = prevLoc.y; + } + _this.windowId = windowId !== null && windowId !== void 0 ? windowId : _this.windowId; + return _this; + } + var _proto = EventMouse.prototype; + _proto.setScrollData = function setScrollData(scrollX, scrollY) { + this._scrollX = scrollX; + this._scrollY = scrollY; + }; + _proto.getScrollX = function getScrollX() { + return this._scrollX; + }; + _proto.getScrollY = function getScrollY() { + return this._scrollY; + }; + _proto.setLocation = function setLocation(x, y) { + this._x = x; + this._y = y; + }; + _proto.getLocation = function getLocation(out) { + if (!out) { + out = new Vec2(); + } + Vec2.set(out, this._x, this._y); + return out; + }; + _proto.getLocationInView = function getLocationInView(out) { + if (!out) { + out = new Vec2(); + } + Vec2.set(out, this._x, legacyCC.view._designResolutionSize.height - this._y); + return out; + }; + _proto.getUILocation = function getUILocation(out) { + if (!out) { + out = new Vec2(); + } + Vec2.set(out, this._x, this._y); + legacyCC.view._convertToUISpace(out); + return out; + }; + _proto.getPreviousLocation = function getPreviousLocation(out) { + if (!out) { + out = new Vec2(); + } + Vec2.set(out, this._prevX, this._prevY); + return out; + }; + _proto.getUIPreviousLocation = function getUIPreviousLocation(out) { + if (!out) { + out = new Vec2(); + } + Vec2.set(out, this._prevX, this._prevY); + legacyCC.view._convertToUISpace(out); + return out; + }; + _proto.getDelta = function getDelta(out) { + if (!out) { + out = new Vec2(); + } + Vec2.set(out, this._x - this._prevX, this._y - this._prevY); + return out; + }; + _proto.getDeltaX = function getDeltaX() { + return this._x - this._prevX; + }; + _proto.getDeltaY = function getDeltaY() { + return this._y - this._prevY; + }; + _proto.getUIDelta = function getUIDelta(out) { + if (!out) { + out = new Vec2(); + } + Vec2.set(out, (this._x - this._prevX) / legacyCC.view.getScaleX(), (this._y - this._prevY) / legacyCC.view.getScaleY()); + return out; + }; + _proto.getUIDeltaX = function getUIDeltaX() { + return (this._x - this._prevX) / legacyCC.view.getScaleX(); + }; + _proto.getUIDeltaY = function getUIDeltaY() { + return (this._y - this._prevY) / legacyCC.view.getScaleY(); + }; + _proto.setButton = function setButton(button) { + this._button = button; + }; + _proto.getButton = function getButton() { + return this._button; + }; + _proto.getLocationX = function getLocationX() { + return this._x; + }; + _proto.getLocationY = function getLocationY() { + return this._y; + }; + _proto.getUILocationX = function getUILocationX() { + var viewport = legacyCC.view.getViewportRect(); + return (this._x - viewport.x) / legacyCC.view.getScaleX(); + }; + _proto.getUILocationY = function getUILocationY() { + var viewport = legacyCC.view.getViewportRect(); + return (this._y - viewport.y) / legacyCC.view.getScaleY(); + }; + _createClass(EventMouse, [{ + key: "eventType", + get: function get() { + return this._eventType; + } + }]); + return EventMouse; + }(Event)); + EventMouse.BUTTON_MISSING = -1; + EventMouse.BUTTON_LEFT = 0; + EventMouse.BUTTON_RIGHT = 2; + EventMouse.BUTTON_MIDDLE = 1; + EventMouse.BUTTON_4 = 3; + EventMouse.BUTTON_5 = 4; + EventMouse.BUTTON_6 = 5; + EventMouse.BUTTON_7 = 6; + EventMouse.BUTTON_8 = 7; + Event.EventMouse = EventMouse; + + var _vec2$2 = new Vec2(); + var EventTouch = exports('ei', function (_Event) { + _inheritsLoose(EventTouch, _Event); + function EventTouch(changedTouches, bubbles, eventType, touches) { + var _this; + if (touches === void 0) { + touches = []; + } + _this = _Event.call(this, eventType, bubbles) || this; + _this.touch = null; + _this.simulate = false; + _this.windowId = 0; + _this.preventSwallow = false; + _this._eventCode = void 0; + _this._touches = void 0; + _this._allTouches = void 0; + _this._eventCode = eventType; + _this._touches = changedTouches || []; + _this._allTouches = touches; + return _this; + } + var _proto = EventTouch.prototype; + _proto.getEventCode = function getEventCode() { + return this._eventCode; + }; + _proto.getTouches = function getTouches() { + return this._touches; + }; + _proto.getAllTouches = function getAllTouches() { + return this._allTouches; + }; + _proto.setLocation = function setLocation(x, y) { + if (this.touch) { + this.touch.setTouchInfo(this.touch.getID(), x, y); + } + }; + _proto.getLocation = function getLocation(out) { + return this.touch ? this.touch.getLocation(out) : new Vec2(); + }; + _proto.getUILocation = function getUILocation(out) { + return this.touch ? this.touch.getUILocation(out) : new Vec2(); + }; + _proto.getLocationInView = function getLocationInView(out) { + return this.touch ? this.touch.getLocationInView(out) : new Vec2(); + }; + _proto.getPreviousLocation = function getPreviousLocation(out) { + return this.touch ? this.touch.getPreviousLocation(out) : new Vec2(); + }; + _proto.getStartLocation = function getStartLocation(out) { + return this.touch ? this.touch.getStartLocation(out) : new Vec2(); + }; + _proto.getUIStartLocation = function getUIStartLocation(out) { + return this.touch ? this.touch.getUIStartLocation(out) : new Vec2(); + }; + _proto.getID = function getID() { + return this.touch ? this.touch.getID() : null; + }; + _proto.getDelta = function getDelta(out) { + return this.touch ? this.touch.getDelta(out) : new Vec2(); + }; + _proto.getUIDelta = function getUIDelta(out) { + return this.touch ? this.touch.getUIDelta(out) : new Vec2(); + }; + _proto.getDeltaX = function getDeltaX() { + return this.touch ? this.touch.getDelta(_vec2$2).x : 0; + }; + _proto.getDeltaY = function getDeltaY() { + return this.touch ? this.touch.getDelta(_vec2$2).y : 0; + }; + _proto.getLocationX = function getLocationX() { + return this.touch ? this.touch.getLocationX() : 0; + }; + _proto.getLocationY = function getLocationY() { + return this.touch ? this.touch.getLocationY() : 0; + }; + return EventTouch; + }(Event)); + EventTouch.MAX_TOUCHES = 5; + Event.EventTouch = EventTouch; + + var EventGamepad = exports('ej', function (_Event) { + _inheritsLoose(EventGamepad, _Event); + function EventGamepad(type, gamepad) { + var _this; + _this = _Event.call(this, type, false) || this; + _this.gamepad = void 0; + _this.gamepad = gamepad; + return _this; + } + return EventGamepad; + }(Event)); + + var EventHandle = exports('ek', function (_Event) { + _inheritsLoose(EventHandle, _Event); + function EventHandle(eventType, handleInputDevice) { + var _this; + _this = _Event.call(this, eventType, false) || this; + _this.handleInputDevice = void 0; + _this.handleInputDevice = handleInputDevice; + return _this; + } + return EventHandle; + }(Event)); + + var EventHMD = exports('el', function (_Event) { + _inheritsLoose(EventHMD, _Event); + function EventHMD(eventType, hmdInputDevice) { + var _this; + _this = _Event.call(this, eventType, false) || this; + _this.hmdInputDevice = void 0; + _this.hmdInputDevice = hmdInputDevice; + return _this; + } + return EventHMD; + }(Event)); + + var EventHandheld = exports('em', function (_Event) { + _inheritsLoose(EventHandheld, _Event); + function EventHandheld(eventType, handheldInputDevice) { + var _this; + _this = _Event.call(this, eventType, false) || this; + _this.handheldInputDevice = void 0; + _this.handheldInputDevice = handheldInputDevice; + return _this; + } + return EventHandheld; + }(Event)); + + var Acceleration = exports('en', function Acceleration(x, y, z, timestamp) { + if (x === void 0) { + x = 0; + } + if (y === void 0) { + y = 0; + } + if (z === void 0) { + z = 0; + } + if (timestamp === void 0) { + timestamp = 0; + } + this.x = void 0; + this.y = void 0; + this.z = void 0; + this.timestamp = void 0; + this.x = x; + this.y = y; + this.z = z; + this.timestamp = timestamp; + }); + + var KeyCode; exports('eo', KeyCode); + (function (KeyCode) { + KeyCode[KeyCode["NONE"] = 0] = "NONE"; + KeyCode[KeyCode["MOBILE_BACK"] = 6] = "MOBILE_BACK"; + KeyCode[KeyCode["BACKSPACE"] = 8] = "BACKSPACE"; + KeyCode[KeyCode["TAB"] = 9] = "TAB"; + KeyCode[KeyCode["ENTER"] = 13] = "ENTER"; + KeyCode[KeyCode["SHIFT_LEFT"] = 16] = "SHIFT_LEFT"; + KeyCode[KeyCode["CTRL_LEFT"] = 17] = "CTRL_LEFT"; + KeyCode[KeyCode["ALT_LEFT"] = 18] = "ALT_LEFT"; + KeyCode[KeyCode["PAUSE"] = 19] = "PAUSE"; + KeyCode[KeyCode["CAPS_LOCK"] = 20] = "CAPS_LOCK"; + KeyCode[KeyCode["ESCAPE"] = 27] = "ESCAPE"; + KeyCode[KeyCode["SPACE"] = 32] = "SPACE"; + KeyCode[KeyCode["PAGE_UP"] = 33] = "PAGE_UP"; + KeyCode[KeyCode["PAGE_DOWN"] = 34] = "PAGE_DOWN"; + KeyCode[KeyCode["END"] = 35] = "END"; + KeyCode[KeyCode["HOME"] = 36] = "HOME"; + KeyCode[KeyCode["ARROW_LEFT"] = 37] = "ARROW_LEFT"; + KeyCode[KeyCode["ARROW_UP"] = 38] = "ARROW_UP"; + KeyCode[KeyCode["ARROW_RIGHT"] = 39] = "ARROW_RIGHT"; + KeyCode[KeyCode["ARROW_DOWN"] = 40] = "ARROW_DOWN"; + KeyCode[KeyCode["INSERT"] = 45] = "INSERT"; + KeyCode[KeyCode["DELETE"] = 46] = "DELETE"; + KeyCode[KeyCode["DIGIT_0"] = 48] = "DIGIT_0"; + KeyCode[KeyCode["DIGIT_1"] = 49] = "DIGIT_1"; + KeyCode[KeyCode["DIGIT_2"] = 50] = "DIGIT_2"; + KeyCode[KeyCode["DIGIT_3"] = 51] = "DIGIT_3"; + KeyCode[KeyCode["DIGIT_4"] = 52] = "DIGIT_4"; + KeyCode[KeyCode["DIGIT_5"] = 53] = "DIGIT_5"; + KeyCode[KeyCode["DIGIT_6"] = 54] = "DIGIT_6"; + KeyCode[KeyCode["DIGIT_7"] = 55] = "DIGIT_7"; + KeyCode[KeyCode["DIGIT_8"] = 56] = "DIGIT_8"; + KeyCode[KeyCode["DIGIT_9"] = 57] = "DIGIT_9"; + KeyCode[KeyCode["KEY_A"] = 65] = "KEY_A"; + KeyCode[KeyCode["KEY_B"] = 66] = "KEY_B"; + KeyCode[KeyCode["KEY_C"] = 67] = "KEY_C"; + KeyCode[KeyCode["KEY_D"] = 68] = "KEY_D"; + KeyCode[KeyCode["KEY_E"] = 69] = "KEY_E"; + KeyCode[KeyCode["KEY_F"] = 70] = "KEY_F"; + KeyCode[KeyCode["KEY_G"] = 71] = "KEY_G"; + KeyCode[KeyCode["KEY_H"] = 72] = "KEY_H"; + KeyCode[KeyCode["KEY_I"] = 73] = "KEY_I"; + KeyCode[KeyCode["KEY_J"] = 74] = "KEY_J"; + KeyCode[KeyCode["KEY_K"] = 75] = "KEY_K"; + KeyCode[KeyCode["KEY_L"] = 76] = "KEY_L"; + KeyCode[KeyCode["KEY_M"] = 77] = "KEY_M"; + KeyCode[KeyCode["KEY_N"] = 78] = "KEY_N"; + KeyCode[KeyCode["KEY_O"] = 79] = "KEY_O"; + KeyCode[KeyCode["KEY_P"] = 80] = "KEY_P"; + KeyCode[KeyCode["KEY_Q"] = 81] = "KEY_Q"; + KeyCode[KeyCode["KEY_R"] = 82] = "KEY_R"; + KeyCode[KeyCode["KEY_S"] = 83] = "KEY_S"; + KeyCode[KeyCode["KEY_T"] = 84] = "KEY_T"; + KeyCode[KeyCode["KEY_U"] = 85] = "KEY_U"; + KeyCode[KeyCode["KEY_V"] = 86] = "KEY_V"; + KeyCode[KeyCode["KEY_W"] = 87] = "KEY_W"; + KeyCode[KeyCode["KEY_X"] = 88] = "KEY_X"; + KeyCode[KeyCode["KEY_Y"] = 89] = "KEY_Y"; + KeyCode[KeyCode["KEY_Z"] = 90] = "KEY_Z"; + KeyCode[KeyCode["NUM_0"] = 96] = "NUM_0"; + KeyCode[KeyCode["NUM_1"] = 97] = "NUM_1"; + KeyCode[KeyCode["NUM_2"] = 98] = "NUM_2"; + KeyCode[KeyCode["NUM_3"] = 99] = "NUM_3"; + KeyCode[KeyCode["NUM_4"] = 100] = "NUM_4"; + KeyCode[KeyCode["NUM_5"] = 101] = "NUM_5"; + KeyCode[KeyCode["NUM_6"] = 102] = "NUM_6"; + KeyCode[KeyCode["NUM_7"] = 103] = "NUM_7"; + KeyCode[KeyCode["NUM_8"] = 104] = "NUM_8"; + KeyCode[KeyCode["NUM_9"] = 105] = "NUM_9"; + KeyCode[KeyCode["NUM_MULTIPLY"] = 106] = "NUM_MULTIPLY"; + KeyCode[KeyCode["NUM_PLUS"] = 107] = "NUM_PLUS"; + KeyCode[KeyCode["NUM_SUBTRACT"] = 109] = "NUM_SUBTRACT"; + KeyCode[KeyCode["NUM_DECIMAL"] = 110] = "NUM_DECIMAL"; + KeyCode[KeyCode["NUM_DIVIDE"] = 111] = "NUM_DIVIDE"; + KeyCode[KeyCode["F1"] = 112] = "F1"; + KeyCode[KeyCode["F2"] = 113] = "F2"; + KeyCode[KeyCode["F3"] = 114] = "F3"; + KeyCode[KeyCode["F4"] = 115] = "F4"; + KeyCode[KeyCode["F5"] = 116] = "F5"; + KeyCode[KeyCode["F6"] = 117] = "F6"; + KeyCode[KeyCode["F7"] = 118] = "F7"; + KeyCode[KeyCode["F8"] = 119] = "F8"; + KeyCode[KeyCode["F9"] = 120] = "F9"; + KeyCode[KeyCode["F10"] = 121] = "F10"; + KeyCode[KeyCode["F11"] = 122] = "F11"; + KeyCode[KeyCode["F12"] = 123] = "F12"; + KeyCode[KeyCode["NUM_LOCK"] = 144] = "NUM_LOCK"; + KeyCode[KeyCode["SCROLL_LOCK"] = 145] = "SCROLL_LOCK"; + KeyCode[KeyCode["SEMICOLON"] = 186] = "SEMICOLON"; + KeyCode[KeyCode["EQUAL"] = 187] = "EQUAL"; + KeyCode[KeyCode["COMMA"] = 188] = "COMMA"; + KeyCode[KeyCode["DASH"] = 189] = "DASH"; + KeyCode[KeyCode["PERIOD"] = 190] = "PERIOD"; + KeyCode[KeyCode["SLASH"] = 191] = "SLASH"; + KeyCode[KeyCode["BACK_QUOTE"] = 192] = "BACK_QUOTE"; + KeyCode[KeyCode["BRACKET_LEFT"] = 219] = "BRACKET_LEFT"; + KeyCode[KeyCode["BACKSLASH"] = 220] = "BACKSLASH"; + KeyCode[KeyCode["BRACKET_RIGHT"] = 221] = "BRACKET_RIGHT"; + KeyCode[KeyCode["QUOTE"] = 222] = "QUOTE"; + KeyCode[KeyCode["SHIFT_RIGHT"] = 2000] = "SHIFT_RIGHT"; + KeyCode[KeyCode["CTRL_RIGHT"] = 2001] = "CTRL_RIGHT"; + KeyCode[KeyCode["ALT_RIGHT"] = 2002] = "ALT_RIGHT"; + KeyCode[KeyCode["NUM_ENTER"] = 2003] = "NUM_ENTER"; + })(KeyCode || (exports('eo', KeyCode = {}))); + + var _vec2$1 = new Vec2(); + var Touch = exports('ep', function () { + function Touch(x, y, id) { + if (id === void 0) { + id = 0; + } + this._point = new Vec2(); + this._prevPoint = new Vec2(); + this._lastModified = 0; + this._id = 0; + this._startPoint = new Vec2(); + this._startPointCaptured = false; + this.setTouchInfo(id, x, y); + } + var _proto = Touch.prototype; + _proto.getLocation = function getLocation(out) { + if (!out) { + out = new Vec2(); + } + out.set(this._point.x, this._point.y); + return out; + }; + _proto.getLocationX = function getLocationX() { + return this._point.x; + }; + _proto.getLocationY = function getLocationY() { + return this._point.y; + }; + _proto.getUILocation = function getUILocation(out) { + if (!out) { + out = new Vec2(); + } + out.set(this._point.x, this._point.y); + legacyCC.view._convertToUISpace(out); + return out; + }; + _proto.getUILocationX = function getUILocationX() { + var viewport = legacyCC.view.getViewportRect(); + return (this._point.x - viewport.x) / legacyCC.view.getScaleX(); + }; + _proto.getUILocationY = function getUILocationY() { + var viewport = legacyCC.view.getViewportRect(); + return (this._point.y - viewport.y) / legacyCC.view.getScaleY(); + }; + _proto.getPreviousLocation = function getPreviousLocation(out) { + if (!out) { + out = new Vec2(); + } + out.set(this._prevPoint.x, this._prevPoint.y); + return out; + }; + _proto.getUIPreviousLocation = function getUIPreviousLocation(out) { + if (!out) { + out = new Vec2(); + } + out.set(this._prevPoint.x, this._prevPoint.y); + legacyCC.view._convertToUISpace(out); + return out; + }; + _proto.getStartLocation = function getStartLocation(out) { + if (!out) { + out = new Vec2(); + } + out.set(this._startPoint.x, this._startPoint.y); + return out; + }; + _proto.getUIStartLocation = function getUIStartLocation(out) { + if (!out) { + out = new Vec2(); + } + out.set(this._startPoint.x, this._startPoint.y); + legacyCC.view._convertToUISpace(out); + return out; + }; + _proto.getDelta = function getDelta(out) { + if (!out) { + out = new Vec2(); + } + out.set(this._point); + out.subtract(this._prevPoint); + return out; + }; + _proto.getUIDelta = function getUIDelta(out) { + if (!out) { + out = new Vec2(); + } + _vec2$1.set(this._point); + _vec2$1.subtract(this._prevPoint); + out.set(legacyCC.view.getScaleX(), legacyCC.view.getScaleY()); + Vec2.divide(out, _vec2$1, out); + return out; + }; + _proto.getLocationInView = function getLocationInView(out) { + if (!out) { + out = new Vec2(); + } + out.set(this._point.x, legacyCC.view._designResolutionSize.height - this._point.y); + return out; + }; + _proto.getPreviousLocationInView = function getPreviousLocationInView(out) { + if (!out) { + out = new Vec2(); + } + out.set(this._prevPoint.x, legacyCC.view._designResolutionSize.height - this._prevPoint.y); + return out; + }; + _proto.getStartLocationInView = function getStartLocationInView(out) { + if (!out) { + out = new Vec2(); + } + out.set(this._startPoint.x, legacyCC.view._designResolutionSize.height - this._startPoint.y); + return out; + }; + _proto.getID = function getID() { + return this._id; + }; + _proto.setTouchInfo = function setTouchInfo(id, x, y) { + if (id === void 0) { + id = 0; + } + this._prevPoint = this._point; + this._point = new Vec2(x || 0, y || 0); + this._id = id; + if (!this._startPointCaptured) { + this._startPoint = new Vec2(this._point); + this._startPointCaptured = true; + } + }; + _proto.setPoint = function setPoint(x, y) { + if (typeof x === 'object') { + this._point.x = x.x; + this._point.y = x.y; + } else { + this._point.x = x || 0; + this._point.y = y || 0; + } + this._lastModified = legacyCC.game.frameStartTime; + }; + _proto.setPrevPoint = function setPrevPoint(x, y) { + if (typeof x === 'object') { + this._prevPoint = new Vec2(x.x, x.y); + } else { + this._prevPoint = new Vec2(x || 0, y || 0); + } + this._lastModified = legacyCC.game.frameStartTime; + }; + _createClass(Touch, [{ + key: "lastModified", + get: function get() { + return this._lastModified; + } + }]); + return Touch; + }()); + legacyCC.Touch = Touch; + + var AccelerometerInputSource = function () { + function AccelerometerInputSource() { + this._intervalInMileSeconds = 200; + this._accelTimer = 0; + this._eventTarget = new EventTarget(); + this._deviceEventName = void 0; + this._globalEventClass = void 0; + this._didAccelerateFunc = void 0; + this._globalEventClass = window.DeviceMotionEvent || window.DeviceOrientationEvent; + if (systemInfo.browserType === BrowserType.MOBILE_QQ) { + this._globalEventClass = window.DeviceOrientationEvent; + } + this._deviceEventName = this._globalEventClass === window.DeviceMotionEvent ? 'devicemotion' : 'deviceorientation'; + this._didAccelerateFunc = this._didAccelerate.bind(this); + } + var _proto = AccelerometerInputSource.prototype; + _proto._registerEvent = function _registerEvent() { + this._accelTimer = performance.now(); + window.addEventListener(this._deviceEventName, this._didAccelerateFunc, false); + }; + _proto._unregisterEvent = function _unregisterEvent() { + this._accelTimer = 0; + window.removeEventListener(this._deviceEventName, this._didAccelerateFunc, false); + }; + _proto._didAccelerate = function _didAccelerate(event) { + var now = performance.now(); + if (now - this._accelTimer < this._intervalInMileSeconds) { + return; + } + this._accelTimer = now; + var x = 0; + var y = 0; + var z = 0; + if (this._globalEventClass === window.DeviceMotionEvent) { + var deviceMotionEvent = event; + var _eventAcceleration = deviceMotionEvent.accelerationIncludingGravity; + x = ((_eventAcceleration === null || _eventAcceleration === void 0 ? void 0 : _eventAcceleration.x) || 0) * 0.1; + y = ((_eventAcceleration === null || _eventAcceleration === void 0 ? void 0 : _eventAcceleration.y) || 0) * 0.1; + z = ((_eventAcceleration === null || _eventAcceleration === void 0 ? void 0 : _eventAcceleration.z) || 0) * 0.1; + } else { + var deviceOrientationEvent = event; + x = (deviceOrientationEvent.gamma || 0) / 90 * 0.981; + y = -((deviceOrientationEvent.beta || 0) / 90) * 0.981; + z = (deviceOrientationEvent.alpha || 0) / 90 * 0.981; + } + if (screenAdapter.isFrameRotated) { + var tmp = x; + x = -y; + y = tmp; + } + var LANDSCAPE_LEFT = -90; + var PORTRAIT_UPSIDE_DOWN = 180; + var LANDSCAPE_RIGHT = 90; + var tmpX = x; + if (window.orientation === LANDSCAPE_RIGHT) { + x = -y; + y = tmpX; + } else if (window.orientation === LANDSCAPE_LEFT) { + x = y; + y = -tmpX; + } else if (window.orientation === PORTRAIT_UPSIDE_DOWN) { + x = -x; + y = -y; + } + if (systemInfo.os === OS.ANDROID && systemInfo.browserType !== BrowserType.MOBILE_QQ) { + x = -x; + y = -y; + } + var timestamp = performance.now(); + var acceleration = new Acceleration(x, y, z, timestamp); + var eventAcceleration = new EventAcceleration(acceleration); + this._eventTarget.emit(InputEventType.DEVICEMOTION, eventAcceleration); + }; + _proto.start = function start() { + var _this = this; + if (window.DeviceMotionEvent && typeof DeviceMotionEvent.requestPermission === 'function') { + DeviceMotionEvent.requestPermission().then(function (response) { + if (response === 'granted') { + _this._registerEvent(); + } + })["catch"](function (e) {}); + } else { + this._registerEvent(); + } + }; + _proto.stop = function stop() { + this._unregisterEvent(); + }; + _proto.setInterval = function setInterval(intervalInMileSeconds) { + this._intervalInMileSeconds = intervalInMileSeconds; + }; + _proto.on = function on(eventType, callback, target) { + this._eventTarget.on(eventType, callback, target); + }; + return AccelerometerInputSource; + }(); + + var InputSource = function InputSource() {}; + var InputSourceAxis1D = function (_InputSource) { + _inheritsLoose(InputSourceAxis1D, _InputSource); + function InputSourceAxis1D() { + return _InputSource.apply(this, arguments) || this; + } + var _proto = InputSourceAxis1D.prototype; + _proto.getValue = function getValue() { + throw new Error('Method not implemented.'); + }; + return InputSourceAxis1D; + }(InputSource); + var InputSourceAxis2D = function (_InputSource2) { + _inheritsLoose(InputSourceAxis2D, _InputSource2); + function InputSourceAxis2D() { + return _InputSource2.apply(this, arguments) || this; + } + var _proto2 = InputSourceAxis2D.prototype; + _proto2.getValue = function getValue() { + throw new Error('Method not implemented.'); + }; + return InputSourceAxis2D; + }(InputSource); + var InputSourceAxis3D = function (_InputSource3) { + _inheritsLoose(InputSourceAxis3D, _InputSource3); + function InputSourceAxis3D() { + return _InputSource3.apply(this, arguments) || this; + } + var _proto3 = InputSourceAxis3D.prototype; + _proto3.getValue = function getValue() { + throw new Error('Method not implemented.'); + }; + return InputSourceAxis3D; + }(InputSource); + var InputSourceQuat = function (_InputSource4) { + _inheritsLoose(InputSourceQuat, _InputSource4); + function InputSourceQuat() { + return _InputSource4.apply(this, arguments) || this; + } + var _proto4 = InputSourceQuat.prototype; + _proto4.getValue = function getValue() { + throw new Error('Method not implemented.'); + }; + return InputSourceQuat; + }(InputSource); + var CompositeInputSourceAxis1D = function (_InputSourceAxis1D) { + _inheritsLoose(CompositeInputSourceAxis1D, _InputSourceAxis1D); + function CompositeInputSourceAxis1D(options) { + var _this; + _this = _InputSourceAxis1D.call(this) || this; + _this.positive = void 0; + _this.negative = void 0; + _this.positive = options.positive; + _this.negative = options.negative; + return _this; + } + var _proto5 = CompositeInputSourceAxis1D.prototype; + _proto5.getValue = function getValue() { + var positiveValue = this.positive.getValue(); + var negativeValue = this.negative.getValue(); + if (Math.abs(positiveValue) > Math.abs(negativeValue)) { + return positiveValue; + } + return -negativeValue; + }; + return CompositeInputSourceAxis1D; + }(InputSourceAxis1D); + var CompositeInputSourceAxis2D = function (_InputSourceAxis2D) { + _inheritsLoose(CompositeInputSourceAxis2D, _InputSourceAxis2D); + function CompositeInputSourceAxis2D(options) { + var _this2; + _this2 = _InputSourceAxis2D.call(this) || this; + _this2.up = void 0; + _this2.down = void 0; + _this2.left = void 0; + _this2.right = void 0; + _this2.xAxis = void 0; + _this2.yAxis = void 0; + _this2.up = options.up; + _this2.down = options.down; + _this2.left = options.left; + _this2.right = options.right; + _this2.xAxis = new CompositeInputSourceAxis1D({ + positive: _this2.right, + negative: _this2.left + }); + _this2.yAxis = new CompositeInputSourceAxis1D({ + positive: _this2.up, + negative: _this2.down + }); + return _this2; + } + var _proto6 = CompositeInputSourceAxis2D.prototype; + _proto6.getValue = function getValue() { + return new Vec2(this.xAxis.getValue(), this.yAxis.getValue()); + }; + return CompositeInputSourceAxis2D; + }(InputSourceAxis2D); + (function (_InputSourceAxis3D) { + _inheritsLoose(CompositeInputSourceAxis3D, _InputSourceAxis3D); + function CompositeInputSourceAxis3D(options) { + var _this3; + _this3 = _InputSourceAxis3D.call(this) || this; + _this3.up = void 0; + _this3.down = void 0; + _this3.left = void 0; + _this3.right = void 0; + _this3.forward = void 0; + _this3.backward = void 0; + _this3.xAxis = void 0; + _this3.yAxis = void 0; + _this3.zAxis = void 0; + _this3.up = options.up; + _this3.down = options.down; + _this3.left = options.left; + _this3.right = options.right; + _this3.forward = options.forward; + _this3.backward = options.backward; + _this3.xAxis = new CompositeInputSourceAxis1D({ + positive: _this3.right, + negative: _this3.left + }); + _this3.yAxis = new CompositeInputSourceAxis1D({ + positive: _this3.up, + negative: _this3.down + }); + _this3.zAxis = new CompositeInputSourceAxis1D({ + positive: _this3.forward, + negative: _this3.backward + }); + return _this3; + } + var _proto7 = CompositeInputSourceAxis3D.prototype; + _proto7.getValue = function getValue() { + return new Vec3(this.xAxis.getValue(), this.yAxis.getValue(), this.zAxis.getValue()); + }; + return CompositeInputSourceAxis3D; + })(InputSourceAxis3D); + var InputSourceButton = function (_InputSourceAxis1D2) { + _inheritsLoose(InputSourceButton, _InputSourceAxis1D2); + function InputSourceButton() { + return _InputSourceAxis1D2.apply(this, arguments) || this; + } + var _proto8 = InputSourceButton.prototype; + _proto8.getValue = function getValue() { + return _InputSourceAxis1D2.prototype.getValue.call(this); + }; + return InputSourceButton; + }(InputSourceAxis1D); + var InputSourceDpad = function (_CompositeInputSource) { + _inheritsLoose(InputSourceDpad, _CompositeInputSource); + function InputSourceDpad() { + return _CompositeInputSource.apply(this, arguments) || this; + } + return InputSourceDpad; + }(CompositeInputSourceAxis2D); + var InputSourceStick = function (_CompositeInputSource2) { + _inheritsLoose(InputSourceStick, _CompositeInputSource2); + function InputSourceStick() { + return _CompositeInputSource2.apply(this, arguments) || this; + } + return InputSourceStick; + }(CompositeInputSourceAxis2D); + var InputSourceOrientation = function (_InputSourceQuat) { + _inheritsLoose(InputSourceOrientation, _InputSourceQuat); + function InputSourceOrientation() { + return _InputSourceQuat.apply(this, arguments) || this; + } + var _proto9 = InputSourceOrientation.prototype; + _proto9.getValue = function getValue() { + return _InputSourceQuat.prototype.getValue.call(this); + }; + return InputSourceOrientation; + }(InputSourceQuat); + var InputSourcePosition = function (_InputSourceAxis3D2) { + _inheritsLoose(InputSourcePosition, _InputSourceAxis3D2); + function InputSourcePosition() { + return _InputSourceAxis3D2.apply(this, arguments) || this; + } + var _proto10 = InputSourcePosition.prototype; + _proto10.getValue = function getValue() { + return _InputSourceAxis3D2.prototype.getValue.call(this); + }; + return InputSourcePosition; + }(InputSourceAxis3D); + + var BUTTON_SOUTH = 0; + var BUTTON_EAST = 1; + var BUTTON_WEST = 2; + var BUTTON_NORTH = 3; + var BUTTON_L1 = 4; + var BUTTON_R1 = 5; + var BUTTON_L2 = 6; + var BUTTON_R2 = 7; + var BUTTON_SHARE = 8; + var BUTTON_OPTIONS = 9; + var BUTTON_L3 = 10; + var BUTTON_R3 = 11; + var BUTTON_DPAD_UP = 12; + var BUTTON_DPAD_DOWN = 13; + var BUTTON_DPAD_LEFT = 14; + var BUTTON_DPAD_RIGHT = 15; + var AXIS_LEFT_STICK_X = 0; + var AXIS_LEFT_STICK_Y = 1; + var AXIS_RIGHT_STICK_X = 2; + var AXIS_RIGHT_STICK_Y = 3; + var XR_TRIGGER = 0; + var XR_GRIP = 1; + var XR_TOUCHPAD = 2; + var XR_STICK = 3; + var XR_BUTTON_1 = 4; + var XR_BUTTON_2 = 5; + var XR_AXIS_TOUCHPAD_X = 0; + var XR_AXIS_TOUCHPAD_Y = 1; + var XR_AXIS_STICK_X = 2; + var XR_AXIS_STICK_Y = 3; + var EPSILON$2 = 0.01; + var XRLeftHandedness = 'left'; + var XRRightHandedness = 'right'; + var devicesTmp = []; + var Pose$1; + (function (Pose) { + Pose[Pose["HAND_LEFT"] = 1] = "HAND_LEFT"; + Pose[Pose["HAND_RIGHT"] = 4] = "HAND_RIGHT"; + Pose[Pose["AIM_LEFT"] = 2] = "AIM_LEFT"; + Pose[Pose["AIM_RIGHT"] = 5] = "AIM_RIGHT"; + })(Pose$1 || (Pose$1 = {})); + var GamepadInputDevice = function () { + function GamepadInputDevice(deviceId) { + var _this$_webPoseState; + this._buttonNorth = void 0; + this._buttonEast = void 0; + this._buttonWest = void 0; + this._buttonSouth = void 0; + this._buttonL1 = void 0; + this._buttonL2 = void 0; + this._buttonL3 = void 0; + this._buttonR1 = void 0; + this._buttonR2 = void 0; + this._buttonR3 = void 0; + this._buttonShare = void 0; + this._buttonOptions = void 0; + this._dpad = void 0; + this._leftStick = void 0; + this._rightStick = void 0; + this._buttonStart = void 0; + this._gripLeft = void 0; + this._gripRight = void 0; + this._handLeftPosition = void 0; + this._handLeftOrientation = void 0; + this._handRightPosition = void 0; + this._handRightOrientation = void 0; + this._aimLeftPosition = void 0; + this._aimLeftOrientation = void 0; + this._aimRightPosition = void 0; + this._aimRightOrientation = void 0; + this._deviceId = -1; + this._connected = false; + this._webPoseState = (_this$_webPoseState = {}, _this$_webPoseState[Pose$1.HAND_LEFT] = { + position: Vec3.ZERO, + orientation: Quat.IDENTITY + }, _this$_webPoseState[Pose$1.HAND_RIGHT] = { + position: Vec3.ZERO, + orientation: Quat.IDENTITY + }, _this$_webPoseState[Pose$1.AIM_LEFT] = { + position: Vec3.ZERO, + orientation: Quat.IDENTITY + }, _this$_webPoseState[Pose$1.AIM_RIGHT] = { + position: Vec3.ZERO, + orientation: Quat.IDENTITY + }, _this$_webPoseState); + this._deviceId = deviceId; + this._initInputSource(); + } + GamepadInputDevice._init = function _init() { + if (!systemInfo.hasFeature(Feature$1.EVENT_GAMEPAD)) { + return; + } + GamepadInputDevice._registerEvent(); + }; + GamepadInputDevice._on = function _on(eventType, cb, target) { + GamepadInputDevice._eventTarget.on(eventType, cb, target); + }; + GamepadInputDevice._removeInputDevice = function _removeInputDevice(id) { + var removeIndex = GamepadInputDevice.all.findIndex(function (device) { + return device.deviceId === id; + }); + if (removeIndex === -1) { + return; + } + fastRemoveAt$2(GamepadInputDevice.all, removeIndex); + }; + GamepadInputDevice._getOrCreateInputDevice = function _getOrCreateInputDevice(id, connected) { + var device = GamepadInputDevice.all.find(function (device) { + return device.deviceId === id; + }); + if (!device) { + device = new GamepadInputDevice(id); + GamepadInputDevice.all.push(device); + } + device._connected = connected; + return device; + }; + GamepadInputDevice._ensureDirectorDefined = function _ensureDirectorDefined(callback) { + GamepadInputDevice._intervalId = setInterval(function () { + if (legacyCC.director && legacyCC.Director) { + clearInterval(GamepadInputDevice._intervalId); + GamepadInputDevice._intervalId = -1; + callback(); + } + }, 50); + }; + GamepadInputDevice._updateGamepadCnt = function _updateGamepadCnt() { + var cnt = 0; + for (var i = 0, l = GamepadInputDevice._cachedWebGamepads.length; i < l; i++) { + if (GamepadInputDevice._cachedWebGamepads[i]) cnt++; + } + GamepadInputDevice._totalGamepadCnt = cnt; + }; + GamepadInputDevice._registerEvent = function _registerEvent() { + GamepadInputDevice._ensureDirectorDefined(function () { + GamepadInputDevice._cachedWebGamepads = GamepadInputDevice._getWebGamePads(); + GamepadInputDevice._updateGamepadCnt(); + legacyCC.director.on(legacyCC.Director.EVENT_BEGIN_FRAME, GamepadInputDevice._scanGamepads); + }); + window.addEventListener('gamepadconnected', function (e) { + GamepadInputDevice._cachedWebGamepads[e.gamepad.index] = e.gamepad; + GamepadInputDevice._updateGamepadCnt(); + var device = GamepadInputDevice._getOrCreateInputDevice(e.gamepad.index, true); + GamepadInputDevice._eventTarget.emit(InputEventType.GAMEPAD_CHANGE, new EventGamepad(InputEventType.GAMEPAD_CHANGE, device)); + }); + window.addEventListener('gamepaddisconnected', function (e) { + GamepadInputDevice._cachedWebGamepads[e.gamepad.index] = null; + GamepadInputDevice._updateGamepadCnt(); + var device = GamepadInputDevice._getOrCreateInputDevice(e.gamepad.index, false); + GamepadInputDevice._removeInputDevice(e.gamepad.index); + GamepadInputDevice._eventTarget.emit(InputEventType.GAMEPAD_CHANGE, new EventGamepad(InputEventType.GAMEPAD_CHANGE, device)); + }); + }; + GamepadInputDevice._scanWebGamepads = function _scanWebGamepads(devices) { + var allDisconnected = GamepadInputDevice._totalGamepadCnt === 0; + if (allDisconnected) return; + var webGamepads = GamepadInputDevice._getWebGamePads(); + if (!webGamepads) { + return; + } + for (var i = 0; i < webGamepads.length; ++i) { + var webGamepad = webGamepads[i]; + if (!webGamepad) { + continue; + } + var cachedWebGamepad = GamepadInputDevice._cachedWebGamepads[webGamepad.index]; + if (cachedWebGamepad) { + var device = void 0; + var cachedButtons = cachedWebGamepad.buttons; + for (var j = 0; j < cachedButtons.length; ++j) { + var cachedButton = cachedButtons[j]; + var button = webGamepad.buttons[j]; + if (Math.abs(cachedButton.value - button.value) > EPSILON$2) { + device = GamepadInputDevice._getOrCreateInputDevice(webGamepad.index, true); + break; + } + } + if (device) { + devices.push(device); + continue; + } + var cachedAxes = cachedWebGamepad.axes; + for (var _j = 0; _j < cachedAxes.length; ++_j) { + var cachedAxisValue = cachedAxes[_j]; + var axisValue = webGamepad.axes[_j]; + if (Math.abs(cachedAxisValue - axisValue) > EPSILON$2) { + device = GamepadInputDevice._getOrCreateInputDevice(webGamepad.index, true); + break; + } + } + if (device) { + devices.push(device); + continue; + } + } + } + GamepadInputDevice._cachedWebGamepads = webGamepads; + }; + GamepadInputDevice._scanGamepads = function _scanGamepads() { + devicesTmp.length = 0; + GamepadInputDevice._scanWebGamepads(devicesTmp); + GamepadInputDevice._scanWebXRGamepads(devicesTmp); + for (var i = 0; i < devicesTmp.length; ++i) { + var device = devicesTmp[i]; + GamepadInputDevice._eventTarget.emit(InputEventType.GAMEPAD_INPUT, new EventGamepad(InputEventType.GAMEPAD_INPUT, device)); + } + GamepadInputDevice._scanWebXRGamepadsPose(); + }; + GamepadInputDevice._scanWebXRGamepads = function _scanWebXRGamepads(devices) { + var _GamepadInputDevice$_, _GamepadInputDevice$_2; + var webxrGamepadMap = GamepadInputDevice._getWebXRGamepadMap(); + if (!webxrGamepadMap) { + GamepadInputDevice._cachedWebXRGamepadMap = null; + if (GamepadInputDevice.xr && GamepadInputDevice.xr._connected) { + GamepadInputDevice.xr._connected = false; + GamepadInputDevice._eventTarget.emit(InputEventType.GAMEPAD_CHANGE, new EventGamepad(InputEventType.GAMEPAD_CHANGE, GamepadInputDevice.xr)); + devices.push(GamepadInputDevice.xr); + } + return; + } + if (!GamepadInputDevice.xr) { + GamepadInputDevice.xr = new GamepadInputDevice(-1); + } + var left = webxrGamepadMap.get(XRLeftHandedness); + var right = webxrGamepadMap.get(XRRightHandedness); + if (!left && !right) { + if (GamepadInputDevice.xr._connected) { + GamepadInputDevice.xr._connected = false; + GamepadInputDevice._eventTarget.emit(InputEventType.GAMEPAD_CHANGE, new EventGamepad(InputEventType.GAMEPAD_CHANGE, GamepadInputDevice.xr)); + } + } else if (!GamepadInputDevice.xr._connected) { + GamepadInputDevice.xr._connected = true; + GamepadInputDevice._eventTarget.emit(InputEventType.GAMEPAD_CHANGE, new EventGamepad(InputEventType.GAMEPAD_CHANGE, GamepadInputDevice.xr)); + } + if (GamepadInputDevice.checkGamepadChanged(left, (_GamepadInputDevice$_ = GamepadInputDevice._cachedWebXRGamepadMap) === null || _GamepadInputDevice$_ === void 0 ? void 0 : _GamepadInputDevice$_.get(XRLeftHandedness))) { + devices.push(GamepadInputDevice.xr); + } else if (GamepadInputDevice.checkGamepadChanged(right, (_GamepadInputDevice$_2 = GamepadInputDevice._cachedWebXRGamepadMap) === null || _GamepadInputDevice$_2 === void 0 ? void 0 : _GamepadInputDevice$_2.get(XRRightHandedness))) { + devices.push(GamepadInputDevice.xr); + } + if (!GamepadInputDevice._cachedWebXRGamepadMap) { + GamepadInputDevice._cachedWebXRGamepadMap = new Map(); + } + GamepadInputDevice._cachedWebXRGamepadMap.set(XRLeftHandedness, GamepadInputDevice._copyCacheGamepadValue(left)); + GamepadInputDevice._cachedWebXRGamepadMap.set(XRRightHandedness, GamepadInputDevice._copyCacheGamepadValue(right)); + }; + GamepadInputDevice.checkGamepadChanged = function checkGamepadChanged(currGamepad, cachedGamepad) { + if (!currGamepad && !cachedGamepad) { + return false; + } else if (!currGamepad || !cachedGamepad) { + return true; + } + var cachedButtons = cachedGamepad.buttons; + for (var j = 0; j < cachedButtons.length; ++j) { + var cachedButton = cachedButtons[j]; + var button = currGamepad.buttons[j]; + if (button.value !== 0 || cachedButton !== 0) { + return true; + } + } + var cachedAxes = cachedGamepad.axes; + for (var _j2 = 0; _j2 < cachedAxes.length; ++_j2) { + var cachedAxisValue = cachedAxes[_j2]; + var axisValue = currGamepad.axes[_j2]; + if (axisValue !== 0 || cachedAxisValue !== 0) { + return true; + } + } + return false; + }; + GamepadInputDevice._copyCacheGamepadValue = function _copyCacheGamepadValue(gamepad) { + if (!gamepad) { + return undefined; + } + var cacheGamepad = { + buttons: new Array(gamepad.buttons.length), + axes: new Array(gamepad.axes.length) + }; + for (var j = 0; j < gamepad.buttons.length; ++j) { + cacheGamepad.buttons[j] = gamepad.buttons[j].value; + } + for (var _j3 = 0; _j3 < gamepad.axes.length; ++_j3) { + cacheGamepad.axes[_j3] = gamepad.axes[_j3]; + } + return cacheGamepad; + }; + GamepadInputDevice._scanWebXRGamepadsPose = function _scanWebXRGamepadsPose() { + var _globalThis$__globalX; + var infoList = (_globalThis$__globalX = globalThis.__globalXR) === null || _globalThis$__globalX === void 0 ? void 0 : _globalThis$__globalX.webxrHandlePoseInfos; + if (!infoList || !GamepadInputDevice.xr) { + return; + } + for (var i = 0; i < infoList.length; ++i) { + var info = infoList[i]; + GamepadInputDevice.xr._updateWebPoseState(info); + } + GamepadInputDevice._eventTarget.emit(InputEventType.HANDLE_POSE_INPUT, new EventGamepad(InputEventType.HANDLE_POSE_INPUT, GamepadInputDevice.xr)); + }; + GamepadInputDevice._getWebXRGamepadMap = function _getWebXRGamepadMap() { + var _globalThis$__globalX2; + return (_globalThis$__globalX2 = globalThis.__globalXR) === null || _globalThis$__globalX2 === void 0 ? void 0 : _globalThis$__globalX2.webxrGamepadMap; + }; + GamepadInputDevice._getWebGamePads = function _getWebGamePads() { + if (typeof navigator.getGamepads === 'function') { + return navigator.getGamepads(); + } else if (typeof navigator.webkitGetGamepads === 'function') { + return navigator.webkitGetGamepads(); + } + return []; + }; + GamepadInputDevice._getWebGamepad = function _getWebGamepad(deviceId) { + var webGamepads = GamepadInputDevice._getWebGamePads(); + for (var i = 0; i < webGamepads.length; ++i) { + var webGamepad = webGamepads[i]; + if (webGamepad && webGamepad.index === deviceId) { + return webGamepad; + } + } + return undefined; + }; + var _proto = GamepadInputDevice.prototype; + _proto._axisToButtons = function _axisToButtons(axisValue) { + var value = Math.abs(axisValue); + if (axisValue > 0) { + return { + negative: 0, + positive: value + }; + } else if (axisValue < 0) { + return { + negative: value, + positive: 0 + }; + } else { + return { + negative: 0, + positive: 0 + }; + } + }; + _proto._updateWebPoseState = function _updateWebPoseState(info) { + if (info.code !== Pose$1.HAND_LEFT && info.code !== Pose$1.AIM_LEFT && info.code !== Pose$1.HAND_RIGHT && info.code !== Pose$1.AIM_RIGHT) { + return; + } + this._webPoseState[info.code] = { + position: new Vec3(info.position.x, info.position.y, info.position.z), + orientation: new Quat(info.orientation.x, info.orientation.y, info.orientation.z, info.orientation.w) + }; + }; + _proto._initInputSource = function _initInputSource() { + var _this = this; + this._buttonNorth = new InputSourceButton(); + this._buttonNorth.getValue = function () { + if (_this.deviceId === -1) { + var _GamepadInputDevice$_3; + var webxrGamepad = (_GamepadInputDevice$_3 = GamepadInputDevice._getWebXRGamepadMap()) === null || _GamepadInputDevice$_3 === void 0 ? void 0 : _GamepadInputDevice$_3.get(XRLeftHandedness); + if (webxrGamepad && webxrGamepad.buttons.length > XR_BUTTON_2) { + return webxrGamepad.buttons[XR_BUTTON_2].value; + } + return 0; + } + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return webGamepad.buttons[BUTTON_NORTH].value; + } + return 0; + }; + this._buttonEast = new InputSourceButton(); + this._buttonEast.getValue = function () { + if (_this.deviceId === -1) { + var _GamepadInputDevice$_4; + var webxrGamepad = (_GamepadInputDevice$_4 = GamepadInputDevice._getWebXRGamepadMap()) === null || _GamepadInputDevice$_4 === void 0 ? void 0 : _GamepadInputDevice$_4.get(XRRightHandedness); + if (webxrGamepad && webxrGamepad.buttons.length > XR_BUTTON_2) { + return webxrGamepad.buttons[XR_BUTTON_2].value; + } + return 0; + } + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return webGamepad.buttons[BUTTON_EAST].value; + } + return 0; + }; + this._buttonWest = new InputSourceButton(); + this._buttonWest.getValue = function () { + if (_this.deviceId === -1) { + var _GamepadInputDevice$_5; + var webxrGamepad = (_GamepadInputDevice$_5 = GamepadInputDevice._getWebXRGamepadMap()) === null || _GamepadInputDevice$_5 === void 0 ? void 0 : _GamepadInputDevice$_5.get(XRLeftHandedness); + if (webxrGamepad && webxrGamepad.buttons.length > XR_BUTTON_1) { + return webxrGamepad.buttons[XR_BUTTON_1].value; + } + return 0; + } + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return webGamepad.buttons[BUTTON_WEST].value; + } + return 0; + }; + this._buttonSouth = new InputSourceButton(); + this._buttonSouth.getValue = function () { + if (_this.deviceId === -1) { + var _GamepadInputDevice$_6; + var webxrGamepad = (_GamepadInputDevice$_6 = GamepadInputDevice._getWebXRGamepadMap()) === null || _GamepadInputDevice$_6 === void 0 ? void 0 : _GamepadInputDevice$_6.get(XRRightHandedness); + if (webxrGamepad && webxrGamepad.buttons.length > XR_BUTTON_1) { + return webxrGamepad.buttons[XR_BUTTON_1].value; + } + return 0; + } + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return webGamepad.buttons[BUTTON_SOUTH].value; + } + return 0; + }; + this._buttonL1 = new InputSourceButton(); + this._buttonL1.getValue = function () { + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return webGamepad.buttons[BUTTON_L1].value; + } + return 0; + }; + this._buttonL2 = new InputSourceButton(); + this._buttonL2.getValue = function () { + if (_this.deviceId === -1) { + var _GamepadInputDevice$_7; + var webxrGamepad = (_GamepadInputDevice$_7 = GamepadInputDevice._getWebXRGamepadMap()) === null || _GamepadInputDevice$_7 === void 0 ? void 0 : _GamepadInputDevice$_7.get(XRLeftHandedness); + if (webxrGamepad && webxrGamepad.buttons.length > XR_TRIGGER) { + return webxrGamepad.buttons[XR_TRIGGER].value; + } + return 0; + } + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return webGamepad.buttons[BUTTON_L2].value; + } + return 0; + }; + this._buttonL3 = new InputSourceButton(); + this._buttonL3.getValue = function () { + if (_this.deviceId === -1) { + var _GamepadInputDevice$_8; + var webxrGamepad = (_GamepadInputDevice$_8 = GamepadInputDevice._getWebXRGamepadMap()) === null || _GamepadInputDevice$_8 === void 0 ? void 0 : _GamepadInputDevice$_8.get(XRLeftHandedness); + if (webxrGamepad) { + if (webxrGamepad.buttons.length > XR_STICK && webxrGamepad.buttons[XR_STICK].value !== 0) { + return webxrGamepad.buttons[XR_STICK].value; + } else if (webxrGamepad.buttons.length > XR_TOUCHPAD && webxrGamepad.buttons[XR_TOUCHPAD].value !== 0) { + return webxrGamepad.buttons[XR_TOUCHPAD].value; + } + } + return 0; + } + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return webGamepad.buttons[BUTTON_L3].value; + } + return 0; + }; + this._buttonR1 = new InputSourceButton(); + this._buttonR1.getValue = function () { + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return webGamepad.buttons[BUTTON_R1].value; + } + return 0; + }; + this._buttonR2 = new InputSourceButton(); + this._buttonR2.getValue = function () { + if (_this.deviceId === -1) { + var _GamepadInputDevice$_9; + var webxrGamepad = (_GamepadInputDevice$_9 = GamepadInputDevice._getWebXRGamepadMap()) === null || _GamepadInputDevice$_9 === void 0 ? void 0 : _GamepadInputDevice$_9.get(XRRightHandedness); + if (webxrGamepad && webxrGamepad.buttons.length > XR_TRIGGER) { + return webxrGamepad.buttons[XR_TRIGGER].value; + } + return 0; + } + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return webGamepad.buttons[BUTTON_R2].value; + } + return 0; + }; + this._buttonR3 = new InputSourceButton(); + this._buttonR3.getValue = function () { + if (_this.deviceId === -1) { + var _GamepadInputDevice$_10; + var webxrGamepad = (_GamepadInputDevice$_10 = GamepadInputDevice._getWebXRGamepadMap()) === null || _GamepadInputDevice$_10 === void 0 ? void 0 : _GamepadInputDevice$_10.get(XRRightHandedness); + if (webxrGamepad) { + if (webxrGamepad.buttons.length > XR_STICK && webxrGamepad.buttons[XR_STICK].value !== 0) { + return webxrGamepad.buttons[XR_STICK].value; + } else if (webxrGamepad.buttons.length > XR_TOUCHPAD && webxrGamepad.buttons[XR_TOUCHPAD].value !== 0) { + return webxrGamepad.buttons[XR_TOUCHPAD].value; + } + } + return 0; + } + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return webGamepad.buttons[BUTTON_R3].value; + } + return 0; + }; + this._buttonShare = new InputSourceButton(); + this._buttonShare.getValue = function () { + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return webGamepad.buttons[BUTTON_SHARE].value; + } + return 0; + }; + this._buttonOptions = new InputSourceButton(); + this._buttonOptions.getValue = function () { + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return webGamepad.buttons[BUTTON_OPTIONS].value; + } + return 0; + }; + var dpadUp = new InputSourceButton(); + dpadUp.getValue = function () { + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return webGamepad.buttons[BUTTON_DPAD_UP].value; + } + return 0; + }; + var dpadDown = new InputSourceButton(); + dpadDown.getValue = function () { + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return webGamepad.buttons[BUTTON_DPAD_DOWN].value; + } + return 0; + }; + var dpadLeft = new InputSourceButton(); + dpadLeft.getValue = function () { + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return webGamepad.buttons[BUTTON_DPAD_LEFT].value; + } + return 0; + }; + var dpadRight = new InputSourceButton(); + dpadRight.getValue = function () { + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return webGamepad.buttons[BUTTON_DPAD_RIGHT].value; + } + return 0; + }; + this._dpad = new InputSourceDpad({ + up: dpadUp, + down: dpadDown, + left: dpadLeft, + right: dpadRight + }); + var leftStickUp = new InputSourceButton(); + leftStickUp.getValue = function () { + if (_this.deviceId === -1) { + var _GamepadInputDevice$_11; + var webxrGamepad = (_GamepadInputDevice$_11 = GamepadInputDevice._getWebXRGamepadMap()) === null || _GamepadInputDevice$_11 === void 0 ? void 0 : _GamepadInputDevice$_11.get(XRLeftHandedness); + if (webxrGamepad) { + if (webxrGamepad.axes.length > XR_AXIS_STICK_Y && webxrGamepad.axes[XR_AXIS_STICK_Y] !== 0) { + return _this._axisToButtons(webxrGamepad.axes[XR_AXIS_STICK_Y]).negative; + } else if (webxrGamepad.axes.length > XR_AXIS_TOUCHPAD_Y && webxrGamepad.axes[XR_AXIS_TOUCHPAD_Y] !== 0) { + return _this._axisToButtons(webxrGamepad.axes[XR_AXIS_TOUCHPAD_Y]).negative; + } + } + return 0; + } + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return _this._axisToButtons(webGamepad.axes[AXIS_LEFT_STICK_Y]).negative; + } + return 0; + }; + var leftStickDown = new InputSourceButton(); + leftStickDown.getValue = function () { + if (_this.deviceId === -1) { + var _GamepadInputDevice$_12; + var webxrGamepad = (_GamepadInputDevice$_12 = GamepadInputDevice._getWebXRGamepadMap()) === null || _GamepadInputDevice$_12 === void 0 ? void 0 : _GamepadInputDevice$_12.get(XRLeftHandedness); + if (webxrGamepad) { + if (webxrGamepad.axes.length > XR_AXIS_STICK_Y && webxrGamepad.axes[XR_AXIS_STICK_Y] !== 0) { + return _this._axisToButtons(webxrGamepad.axes[XR_AXIS_STICK_Y]).positive; + } else if (webxrGamepad.axes.length > XR_AXIS_TOUCHPAD_Y && webxrGamepad.axes[XR_AXIS_TOUCHPAD_Y] !== 0) { + return _this._axisToButtons(webxrGamepad.axes[XR_AXIS_TOUCHPAD_Y]).positive; + } + } + return 0; + } + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return _this._axisToButtons(webGamepad.axes[AXIS_LEFT_STICK_Y]).positive; + } + return 0; + }; + var leftStickLeft = new InputSourceButton(); + leftStickLeft.getValue = function () { + if (_this.deviceId === -1) { + var _GamepadInputDevice$_13; + var webxrGamepad = (_GamepadInputDevice$_13 = GamepadInputDevice._getWebXRGamepadMap()) === null || _GamepadInputDevice$_13 === void 0 ? void 0 : _GamepadInputDevice$_13.get(XRLeftHandedness); + if (webxrGamepad) { + if (webxrGamepad.axes.length > XR_AXIS_STICK_X && webxrGamepad.axes[XR_AXIS_STICK_X] !== 0) { + return _this._axisToButtons(webxrGamepad.axes[XR_AXIS_STICK_X]).negative; + } else if (webxrGamepad.axes.length > XR_AXIS_TOUCHPAD_X && webxrGamepad.axes[XR_AXIS_TOUCHPAD_X] !== 0) { + return _this._axisToButtons(webxrGamepad.axes[XR_AXIS_TOUCHPAD_X]).negative; + } + } + return 0; + } + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return _this._axisToButtons(webGamepad.axes[AXIS_LEFT_STICK_X]).negative; + } + return 0; + }; + var leftStickRight = new InputSourceButton(); + leftStickRight.getValue = function () { + if (_this.deviceId === -1) { + var _GamepadInputDevice$_14; + var webxrGamepad = (_GamepadInputDevice$_14 = GamepadInputDevice._getWebXRGamepadMap()) === null || _GamepadInputDevice$_14 === void 0 ? void 0 : _GamepadInputDevice$_14.get(XRLeftHandedness); + if (webxrGamepad) { + if (webxrGamepad.axes.length > XR_AXIS_STICK_X && webxrGamepad.axes[XR_AXIS_STICK_X] !== 0) { + return _this._axisToButtons(webxrGamepad.axes[XR_AXIS_STICK_X]).positive; + } else if (webxrGamepad.axes.length > XR_AXIS_TOUCHPAD_X && webxrGamepad.axes[XR_AXIS_TOUCHPAD_X] !== 0) { + return _this._axisToButtons(webxrGamepad.axes[XR_AXIS_TOUCHPAD_X]).positive; + } + } + return 0; + } + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return _this._axisToButtons(webGamepad.axes[AXIS_LEFT_STICK_X]).positive; + } + return 0; + }; + this._leftStick = new InputSourceStick({ + up: leftStickUp, + down: leftStickDown, + left: leftStickLeft, + right: leftStickRight + }); + var rightStickUp = new InputSourceButton(); + rightStickUp.getValue = function () { + if (_this.deviceId === -1) { + var _GamepadInputDevice$_15; + var webxrGamepad = (_GamepadInputDevice$_15 = GamepadInputDevice._getWebXRGamepadMap()) === null || _GamepadInputDevice$_15 === void 0 ? void 0 : _GamepadInputDevice$_15.get(XRRightHandedness); + if (webxrGamepad) { + if (webxrGamepad.axes.length > XR_AXIS_STICK_Y && webxrGamepad.axes[XR_AXIS_STICK_Y] !== 0) { + return _this._axisToButtons(webxrGamepad.axes[XR_AXIS_STICK_Y]).negative; + } else if (webxrGamepad.axes.length > XR_AXIS_TOUCHPAD_Y && webxrGamepad.axes[XR_AXIS_TOUCHPAD_Y] !== 0) { + return _this._axisToButtons(webxrGamepad.axes[XR_AXIS_TOUCHPAD_Y]).negative; + } + } + return 0; + } + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return _this._axisToButtons(webGamepad.axes[AXIS_RIGHT_STICK_Y]).negative; + } + return 0; + }; + var rightStickDown = new InputSourceButton(); + rightStickDown.getValue = function () { + if (_this.deviceId === -1) { + var _GamepadInputDevice$_16; + var webxrGamepad = (_GamepadInputDevice$_16 = GamepadInputDevice._getWebXRGamepadMap()) === null || _GamepadInputDevice$_16 === void 0 ? void 0 : _GamepadInputDevice$_16.get(XRRightHandedness); + if (webxrGamepad) { + if (webxrGamepad.axes.length > XR_AXIS_STICK_Y && webxrGamepad.axes[XR_AXIS_STICK_Y] !== 0) { + return _this._axisToButtons(webxrGamepad.axes[XR_AXIS_STICK_Y]).positive; + } else if (webxrGamepad.axes.length > XR_AXIS_TOUCHPAD_Y && webxrGamepad.axes[XR_AXIS_TOUCHPAD_Y] !== 0) { + return _this._axisToButtons(webxrGamepad.axes[XR_AXIS_TOUCHPAD_Y]).positive; + } + } + return 0; + } + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return _this._axisToButtons(webGamepad.axes[AXIS_RIGHT_STICK_Y]).positive; + } + return 0; + }; + var rightStickLeft = new InputSourceButton(); + rightStickLeft.getValue = function () { + if (_this.deviceId === -1) { + var _GamepadInputDevice$_17; + var webxrGamepad = (_GamepadInputDevice$_17 = GamepadInputDevice._getWebXRGamepadMap()) === null || _GamepadInputDevice$_17 === void 0 ? void 0 : _GamepadInputDevice$_17.get(XRRightHandedness); + if (webxrGamepad) { + if (webxrGamepad.axes.length > XR_AXIS_STICK_X && webxrGamepad.axes[XR_AXIS_STICK_X] !== 0) { + return _this._axisToButtons(webxrGamepad.axes[XR_AXIS_STICK_X]).negative; + } else if (webxrGamepad.axes.length > XR_AXIS_TOUCHPAD_X && webxrGamepad.axes[XR_AXIS_TOUCHPAD_X] !== 0) { + return _this._axisToButtons(webxrGamepad.axes[XR_AXIS_TOUCHPAD_X]).negative; + } + } + return 0; + } + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return _this._axisToButtons(webGamepad.axes[AXIS_RIGHT_STICK_X]).negative; + } + return 0; + }; + var rightStickRight = new InputSourceButton(); + rightStickRight.getValue = function () { + if (_this.deviceId === -1) { + var _GamepadInputDevice$_18; + var webxrGamepad = (_GamepadInputDevice$_18 = GamepadInputDevice._getWebXRGamepadMap()) === null || _GamepadInputDevice$_18 === void 0 ? void 0 : _GamepadInputDevice$_18.get(XRRightHandedness); + if (webxrGamepad) { + if (webxrGamepad.axes.length > XR_AXIS_STICK_X && webxrGamepad.axes[XR_AXIS_STICK_X] !== 0) { + return _this._axisToButtons(webxrGamepad.axes[XR_AXIS_STICK_X]).positive; + } else if (webxrGamepad.axes.length > XR_AXIS_TOUCHPAD_X && webxrGamepad.axes[XR_AXIS_TOUCHPAD_X] !== 0) { + return _this._axisToButtons(webxrGamepad.axes[XR_AXIS_TOUCHPAD_X]).positive; + } + } + return 0; + } + var webGamepad = GamepadInputDevice._getWebGamepad(_this.deviceId); + if (webGamepad) { + return _this._axisToButtons(webGamepad.axes[AXIS_RIGHT_STICK_X]).positive; + } + return 0; + }; + this._rightStick = new InputSourceStick({ + up: rightStickUp, + down: rightStickDown, + left: rightStickLeft, + right: rightStickRight + }); + this._buttonStart = new InputSourceButton(); + this._buttonStart.getValue = function () { + return 0; + }; + this._gripLeft = new InputSourceButton(); + this._gripLeft.getValue = function () { + if (_this.deviceId === -1) { + var _GamepadInputDevice$_19; + var webxrGamepad = (_GamepadInputDevice$_19 = GamepadInputDevice._getWebXRGamepadMap()) === null || _GamepadInputDevice$_19 === void 0 ? void 0 : _GamepadInputDevice$_19.get(XRLeftHandedness); + if (webxrGamepad && webxrGamepad.buttons.length > XR_GRIP) { + return webxrGamepad.buttons[XR_GRIP].value; + } + } + return 0; + }; + this._gripRight = new InputSourceButton(); + this._gripRight.getValue = function () { + if (_this.deviceId === -1) { + var _GamepadInputDevice$_20; + var webxrGamepad = (_GamepadInputDevice$_20 = GamepadInputDevice._getWebXRGamepadMap()) === null || _GamepadInputDevice$_20 === void 0 ? void 0 : _GamepadInputDevice$_20.get(XRRightHandedness); + if (webxrGamepad && webxrGamepad.buttons.length > XR_GRIP) { + return webxrGamepad.buttons[XR_GRIP].value; + } + } + return 0; + }; + this._handLeftPosition = new InputSourcePosition(); + this._handLeftPosition.getValue = function () { + return _this._webPoseState[Pose$1.HAND_LEFT].position; + }; + this._handLeftOrientation = new InputSourceOrientation(); + this._handLeftOrientation.getValue = function () { + return _this._webPoseState[Pose$1.HAND_LEFT].orientation; + }; + this._handRightPosition = new InputSourcePosition(); + this._handRightPosition.getValue = function () { + return _this._webPoseState[Pose$1.HAND_RIGHT].position; + }; + this._handRightOrientation = new InputSourceOrientation(); + this._handRightOrientation.getValue = function () { + return _this._webPoseState[Pose$1.HAND_RIGHT].orientation; + }; + this._aimLeftPosition = new InputSourcePosition(); + this._aimLeftPosition.getValue = function () { + return _this._webPoseState[Pose$1.AIM_LEFT].position; + }; + this._aimLeftOrientation = new InputSourceOrientation(); + this._aimLeftOrientation.getValue = function () { + return _this._webPoseState[Pose$1.AIM_LEFT].orientation; + }; + this._aimRightPosition = new InputSourcePosition(); + this._aimRightPosition.getValue = function () { + return _this._webPoseState[Pose$1.AIM_RIGHT].position; + }; + this._aimRightOrientation = new InputSourceOrientation(); + this._aimRightOrientation.getValue = function () { + return _this._webPoseState[Pose$1.AIM_RIGHT].orientation; + }; + }; + _createClass(GamepadInputDevice, [{ + key: "buttonNorth", + get: function get() { + return this._buttonNorth; + } + }, { + key: "buttonEast", + get: function get() { + return this._buttonEast; + } + }, { + key: "buttonWest", + get: function get() { + return this._buttonWest; + } + }, { + key: "buttonSouth", + get: function get() { + return this._buttonSouth; + } + }, { + key: "buttonL1", + get: function get() { + return this._buttonL1; + } + }, { + key: "buttonL2", + get: function get() { + return this._buttonL2; + } + }, { + key: "buttonL3", + get: function get() { + return this._buttonL3; + } + }, { + key: "buttonR1", + get: function get() { + return this._buttonR1; + } + }, { + key: "buttonR2", + get: function get() { + return this._buttonR2; + } + }, { + key: "buttonR3", + get: function get() { + return this._buttonR3; + } + }, { + key: "buttonShare", + get: function get() { + return this._buttonShare; + } + }, { + key: "buttonOptions", + get: function get() { + return this._buttonOptions; + } + }, { + key: "dpad", + get: function get() { + return this._dpad; + } + }, { + key: "leftStick", + get: function get() { + return this._leftStick; + } + }, { + key: "rightStick", + get: function get() { + return this._rightStick; + } + }, { + key: "buttonStart", + get: function get() { + return this._buttonStart; + } + }, { + key: "gripLeft", + get: function get() { + return this._gripLeft; + } + }, { + key: "gripRight", + get: function get() { + return this._gripRight; + } + }, { + key: "handLeftPosition", + get: function get() { + return this._handLeftPosition; + } + }, { + key: "handLeftOrientation", + get: function get() { + return this._handLeftOrientation; + } + }, { + key: "handRightPosition", + get: function get() { + return this._handRightPosition; + } + }, { + key: "handRightOrientation", + get: function get() { + return this._handRightOrientation; + } + }, { + key: "aimLeftPosition", + get: function get() { + return this._aimLeftPosition; + } + }, { + key: "aimLeftOrientation", + get: function get() { + return this._aimLeftOrientation; + } + }, { + key: "aimRightPosition", + get: function get() { + return this._aimRightPosition; + } + }, { + key: "aimRightOrientation", + get: function get() { + return this._aimRightOrientation; + } + }, { + key: "deviceId", + get: function get() { + return this._deviceId; + } + }, { + key: "connected", + get: function get() { + return this._connected; + } + }]); + return GamepadInputDevice; + }(); + GamepadInputDevice.all = []; + GamepadInputDevice.xr = null; + GamepadInputDevice._eventTarget = new EventTarget(); + GamepadInputDevice._cachedWebGamepads = []; + GamepadInputDevice._cachedWebXRGamepadMap = null; + GamepadInputDevice._intervalId = -1; + GamepadInputDevice._totalGamepadCnt = 0; + + var Button$1; + (function (Button) { + Button[Button["BUTTON_EAST"] = 0] = "BUTTON_EAST"; + Button[Button["BUTTON_SOUTH"] = 1] = "BUTTON_SOUTH"; + Button[Button["BUTTON_WEST"] = 2] = "BUTTON_WEST"; + Button[Button["BUTTON_NORTH"] = 3] = "BUTTON_NORTH"; + Button[Button["BUTTON_TRIGGER_LEFT"] = 4] = "BUTTON_TRIGGER_LEFT"; + Button[Button["BUTTON_TRIGGER_RIGHT"] = 5] = "BUTTON_TRIGGER_RIGHT"; + Button[Button["TRIGGER_LEFT"] = 6] = "TRIGGER_LEFT"; + Button[Button["TRIGGER_RIGHT"] = 7] = "TRIGGER_RIGHT"; + Button[Button["GRIP_LEFT"] = 8] = "GRIP_LEFT"; + Button[Button["GRIP_RIGHT"] = 9] = "GRIP_RIGHT"; + Button[Button["BUTTON_LEFT_STICK"] = 10] = "BUTTON_LEFT_STICK"; + Button[Button["LEFT_STICK_UP"] = 11] = "LEFT_STICK_UP"; + Button[Button["LEFT_STICK_DOWN"] = 12] = "LEFT_STICK_DOWN"; + Button[Button["LEFT_STICK_LEFT"] = 13] = "LEFT_STICK_LEFT"; + Button[Button["LEFT_STICK_RIGHT"] = 14] = "LEFT_STICK_RIGHT"; + Button[Button["BUTTON_RIGHT_STICK"] = 15] = "BUTTON_RIGHT_STICK"; + Button[Button["RIGHT_STICK_UP"] = 16] = "RIGHT_STICK_UP"; + Button[Button["RIGHT_STICK_DOWN"] = 17] = "RIGHT_STICK_DOWN"; + Button[Button["RIGHT_STICK_LEFT"] = 18] = "RIGHT_STICK_LEFT"; + Button[Button["RIGHT_STICK_RIGHT"] = 19] = "RIGHT_STICK_RIGHT"; + Button[Button["ROKID_MENU"] = 20] = "ROKID_MENU"; + Button[Button["ROKID_START"] = 21] = "ROKID_START"; + })(Button$1 || (Button$1 = {})); + var KeyEventType; + (function (KeyEventType) { + KeyEventType[KeyEventType["KET_CLICK"] = 0] = "KET_CLICK"; + KeyEventType[KeyEventType["KET_STICK"] = 1] = "KET_STICK"; + KeyEventType[KeyEventType["KET_GRAB"] = 2] = "KET_GRAB"; + })(KeyEventType || (KeyEventType = {})); + var StickAxisCode; + (function (StickAxisCode) { + StickAxisCode[StickAxisCode["UNDEFINE"] = 0] = "UNDEFINE"; + StickAxisCode[StickAxisCode["X"] = 1] = "X"; + StickAxisCode[StickAxisCode["Y"] = 2] = "Y"; + StickAxisCode[StickAxisCode["LEFT_STICK_X"] = 3] = "LEFT_STICK_X"; + StickAxisCode[StickAxisCode["LEFT_STICK_Y"] = 4] = "LEFT_STICK_Y"; + StickAxisCode[StickAxisCode["RIGHT_STICK_X"] = 5] = "RIGHT_STICK_X"; + StickAxisCode[StickAxisCode["RIGHT_STICK_Y"] = 6] = "RIGHT_STICK_Y"; + StickAxisCode[StickAxisCode["LEFT_TRIGGER"] = 7] = "LEFT_TRIGGER"; + StickAxisCode[StickAxisCode["RIGHT_TIRGGER"] = 8] = "RIGHT_TIRGGER"; + StickAxisCode[StickAxisCode["LEFT_GRIP"] = 9] = "LEFT_GRIP"; + StickAxisCode[StickAxisCode["RIGHT_GRIP"] = 10] = "RIGHT_GRIP"; + })(StickAxisCode || (StickAxisCode = {})); + var _nativeButtonMap = { + 1: Button$1.BUTTON_EAST, + 2: Button$1.BUTTON_SOUTH, + 3: Button$1.BUTTON_NORTH, + 4: Button$1.BUTTON_WEST, + 9: Button$1.BUTTON_LEFT_STICK, + 10: Button$1.BUTTON_RIGHT_STICK, + 11: Button$1.ROKID_MENU, + 12: Button$1.ROKID_START, + 13: Button$1.BUTTON_TRIGGER_LEFT, + 14: Button$1.BUTTON_TRIGGER_RIGHT + }; + var HandleInputDevice = function () { + function HandleInputDevice() { + var _this$_nativeButtonSt, + _this = this; + this._eventTarget = new EventTarget(); + this._buttonNorth = void 0; + this._buttonEast = void 0; + this._buttonWest = void 0; + this._buttonSouth = void 0; + this._buttonTriggerLeft = void 0; + this._buttonTriggerRight = void 0; + this._triggerLeft = void 0; + this._triggerRight = void 0; + this._gripLeft = void 0; + this._gripRight = void 0; + this._leftStick = void 0; + this._rightStick = void 0; + this._buttonLeftStick = void 0; + this._buttonRightStick = void 0; + this._buttonOptions = void 0; + this._buttonStart = void 0; + this._handLeftPosition = void 0; + this._handLeftOrientation = void 0; + this._handRightPosition = void 0; + this._handRightOrientation = void 0; + this._aimLeftPosition = void 0; + this._aimLeftOrientation = void 0; + this._aimRightPosition = void 0; + this._aimRightOrientation = void 0; + this._nativeButtonState = (_this$_nativeButtonSt = {}, _this$_nativeButtonSt[Button$1.BUTTON_SOUTH] = 0, _this$_nativeButtonSt[Button$1.BUTTON_EAST] = 0, _this$_nativeButtonSt[Button$1.BUTTON_WEST] = 0, _this$_nativeButtonSt[Button$1.BUTTON_NORTH] = 0, _this$_nativeButtonSt[Button$1.BUTTON_TRIGGER_LEFT] = 0, _this$_nativeButtonSt[Button$1.BUTTON_TRIGGER_RIGHT] = 0, _this$_nativeButtonSt[Button$1.TRIGGER_LEFT] = 0, _this$_nativeButtonSt[Button$1.TRIGGER_RIGHT] = 0, _this$_nativeButtonSt[Button$1.GRIP_LEFT] = 0, _this$_nativeButtonSt[Button$1.GRIP_RIGHT] = 0, _this$_nativeButtonSt[Button$1.LEFT_STICK_UP] = 0, _this$_nativeButtonSt[Button$1.LEFT_STICK_DOWN] = 0, _this$_nativeButtonSt[Button$1.LEFT_STICK_LEFT] = 0, _this$_nativeButtonSt[Button$1.LEFT_STICK_RIGHT] = 0, _this$_nativeButtonSt[Button$1.RIGHT_STICK_UP] = 0, _this$_nativeButtonSt[Button$1.RIGHT_STICK_DOWN] = 0, _this$_nativeButtonSt[Button$1.RIGHT_STICK_LEFT] = 0, _this$_nativeButtonSt[Button$1.RIGHT_STICK_RIGHT] = 0, _this$_nativeButtonSt[Button$1.BUTTON_LEFT_STICK] = 0, _this$_nativeButtonSt[Button$1.BUTTON_RIGHT_STICK] = 0, _this$_nativeButtonSt[Button$1.ROKID_MENU] = 0, _this$_nativeButtonSt[Button$1.ROKID_START] = 0, _this$_nativeButtonSt); + this._initInputSource(); + window.addEventListener('xr-remote-input', function (evt) { + var remoteInputEvent = evt; + var keyEventType = remoteInputEvent.detail.keyEventType; + var stickAxisCode = remoteInputEvent.detail.stickAxisCode; + var stickAxisValue = remoteInputEvent.detail.stickAxisValue; + var stickKeyCode = remoteInputEvent.detail.stickKeyCode; + var isButtonPressed = remoteInputEvent.detail.isButtonPressed; + if (keyEventType === KeyEventType.KET_CLICK) { + var button = _nativeButtonMap[stickKeyCode]; + _this._nativeButtonState[button] = isButtonPressed ? 1 : 0; + } else if (keyEventType === KeyEventType.KET_STICK || keyEventType === KeyEventType.KET_GRAB) { + var negativeButton; + var positiveButton; + var axisValue; + switch (stickAxisCode) { + case StickAxisCode.LEFT_STICK_X: + negativeButton = Button$1.LEFT_STICK_LEFT; + positiveButton = Button$1.LEFT_STICK_RIGHT; + axisValue = _this._axisToButtons(stickAxisValue); + break; + case StickAxisCode.LEFT_STICK_Y: + negativeButton = Button$1.LEFT_STICK_DOWN; + positiveButton = Button$1.LEFT_STICK_UP; + axisValue = _this._axisToButtons(stickAxisValue); + break; + case StickAxisCode.RIGHT_STICK_X: + negativeButton = Button$1.RIGHT_STICK_LEFT; + positiveButton = Button$1.RIGHT_STICK_RIGHT; + axisValue = _this._axisToButtons(stickAxisValue); + break; + case StickAxisCode.RIGHT_STICK_Y: + negativeButton = Button$1.RIGHT_STICK_DOWN; + positiveButton = Button$1.RIGHT_STICK_UP; + axisValue = _this._axisToButtons(stickAxisValue); + break; + case StickAxisCode.LEFT_TRIGGER: + _this._nativeButtonState[Button$1.TRIGGER_LEFT] = stickAxisValue; + break; + case StickAxisCode.RIGHT_TIRGGER: + _this._nativeButtonState[Button$1.TRIGGER_RIGHT] = stickAxisValue; + break; + case StickAxisCode.LEFT_GRIP: + _this._nativeButtonState[Button$1.GRIP_LEFT] = stickAxisValue; + break; + case StickAxisCode.RIGHT_GRIP: + _this._nativeButtonState[Button$1.GRIP_RIGHT] = stickAxisValue; + break; + } + if (negativeButton && positiveButton && axisValue) { + _this._nativeButtonState[negativeButton] = axisValue.negative; + _this._nativeButtonState[positiveButton] = axisValue.positive; + } + } + _this._eventTarget.emit(InputEventType.HANDLE_INPUT, new EventHandle(InputEventType.HANDLE_INPUT, _this)); + }); + } + var _proto = HandleInputDevice.prototype; + _proto._axisToButtons = function _axisToButtons(axisValue) { + var value = Math.abs(axisValue); + if (axisValue > 0) { + return { + negative: 0, + positive: value + }; + } else if (axisValue < 0) { + return { + negative: value, + positive: 0 + }; + } else { + return { + negative: 0, + positive: 0 + }; + } + }; + _proto._on = function _on(eventType, callback, target) { + this._eventTarget.on(eventType, callback, target); + }; + _proto._initInputSource = function _initInputSource() { + var _this2 = this; + this._buttonNorth = new InputSourceButton(); + this._buttonNorth.getValue = function () { + return _this2._nativeButtonState[Button$1.BUTTON_NORTH]; + }; + this._buttonEast = new InputSourceButton(); + this._buttonEast.getValue = function () { + return _this2._nativeButtonState[Button$1.BUTTON_EAST]; + }; + this._buttonWest = new InputSourceButton(); + this._buttonWest.getValue = function () { + return _this2._nativeButtonState[Button$1.BUTTON_WEST]; + }; + this._buttonSouth = new InputSourceButton(); + this._buttonSouth.getValue = function () { + return _this2._nativeButtonState[Button$1.BUTTON_SOUTH]; + }; + this._buttonTriggerLeft = new InputSourceButton(); + this._buttonTriggerLeft.getValue = function () { + return _this2._nativeButtonState[Button$1.BUTTON_TRIGGER_LEFT]; + }; + this._buttonTriggerRight = new InputSourceButton(); + this._buttonTriggerRight.getValue = function () { + return _this2._nativeButtonState[Button$1.BUTTON_TRIGGER_RIGHT]; + }; + this._triggerLeft = new InputSourceButton(); + this._triggerLeft.getValue = function () { + return _this2._nativeButtonState[Button$1.TRIGGER_LEFT]; + }; + this._triggerRight = new InputSourceButton(); + this._triggerRight.getValue = function () { + return _this2._nativeButtonState[Button$1.TRIGGER_RIGHT]; + }; + this._gripLeft = new InputSourceButton(); + this._gripLeft.getValue = function () { + return _this2._nativeButtonState[Button$1.GRIP_LEFT]; + }; + this._gripRight = new InputSourceButton(); + this._gripRight.getValue = function () { + return _this2._nativeButtonState[Button$1.GRIP_RIGHT]; + }; + this._buttonLeftStick = new InputSourceButton(); + this._buttonLeftStick.getValue = function () { + return _this2._nativeButtonState[Button$1.BUTTON_LEFT_STICK]; + }; + var leftStickUp = new InputSourceButton(); + leftStickUp.getValue = function () { + return _this2._nativeButtonState[Button$1.LEFT_STICK_UP]; + }; + var leftStickDown = new InputSourceButton(); + leftStickDown.getValue = function () { + return _this2._nativeButtonState[Button$1.LEFT_STICK_DOWN]; + }; + var leftStickLeft = new InputSourceButton(); + leftStickLeft.getValue = function () { + return _this2._nativeButtonState[Button$1.LEFT_STICK_LEFT]; + }; + var leftStickRight = new InputSourceButton(); + leftStickRight.getValue = function () { + return _this2._nativeButtonState[Button$1.LEFT_STICK_RIGHT]; + }; + this._leftStick = new InputSourceStick({ + up: leftStickUp, + down: leftStickDown, + left: leftStickLeft, + right: leftStickRight + }); + this._buttonRightStick = new InputSourceButton(); + this._buttonRightStick.getValue = function () { + return _this2._nativeButtonState[Button$1.BUTTON_RIGHT_STICK]; + }; + var rightStickUp = new InputSourceButton(); + rightStickUp.getValue = function () { + return _this2._nativeButtonState[Button$1.RIGHT_STICK_UP]; + }; + var rightStickDown = new InputSourceButton(); + rightStickDown.getValue = function () { + return _this2._nativeButtonState[Button$1.RIGHT_STICK_DOWN]; + }; + var rightStickLeft = new InputSourceButton(); + rightStickLeft.getValue = function () { + return _this2._nativeButtonState[Button$1.RIGHT_STICK_LEFT]; + }; + var rightStickRight = new InputSourceButton(); + rightStickRight.getValue = function () { + return _this2._nativeButtonState[Button$1.RIGHT_STICK_RIGHT]; + }; + this._rightStick = new InputSourceStick({ + up: rightStickUp, + down: rightStickDown, + left: rightStickLeft, + right: rightStickRight + }); + this._buttonOptions = new InputSourceButton(); + this._buttonOptions.getValue = function () { + return _this2._nativeButtonState[Button$1.ROKID_MENU]; + }; + this._buttonStart = new InputSourceButton(); + this._buttonStart.getValue = function () { + return _this2._nativeButtonState[Button$1.ROKID_START]; + }; + this._handLeftPosition = new InputSourcePosition(); + this._handLeftPosition.getValue = function () { + return Vec3.ZERO; + }; + this._handLeftOrientation = new InputSourceOrientation(); + this._handLeftOrientation.getValue = function () { + return Quat.IDENTITY; + }; + this._handRightPosition = new InputSourcePosition(); + this._handRightPosition.getValue = function () { + return Vec3.ZERO; + }; + this._handRightOrientation = new InputSourceOrientation(); + this._handRightOrientation.getValue = function () { + return Quat.IDENTITY; + }; + this._aimLeftPosition = new InputSourcePosition(); + this._aimLeftPosition.getValue = function () { + return Vec3.ZERO; + }; + this._aimLeftOrientation = new InputSourceOrientation(); + this._aimLeftOrientation.getValue = function () { + return Quat.IDENTITY; + }; + this._aimRightPosition = new InputSourcePosition(); + this._aimRightPosition.getValue = function () { + return Vec3.ZERO; + }; + this._aimRightOrientation = new InputSourceOrientation(); + this._aimRightOrientation.getValue = function () { + return Quat.IDENTITY; + }; + }; + _createClass(HandleInputDevice, [{ + key: "buttonNorth", + get: function get() { + return this._buttonNorth; + } + }, { + key: "buttonEast", + get: function get() { + return this._buttonEast; + } + }, { + key: "buttonWest", + get: function get() { + return this._buttonWest; + } + }, { + key: "buttonSouth", + get: function get() { + return this._buttonSouth; + } + }, { + key: "buttonTriggerLeft", + get: function get() { + return this._buttonTriggerLeft; + } + }, { + key: "buttonTriggerRight", + get: function get() { + return this._buttonTriggerRight; + } + }, { + key: "triggerLeft", + get: function get() { + return this._triggerLeft; + } + }, { + key: "triggerRight", + get: function get() { + return this._triggerRight; + } + }, { + key: "gripLeft", + get: function get() { + return this._gripLeft; + } + }, { + key: "gripRight", + get: function get() { + return this._gripRight; + } + }, { + key: "leftStick", + get: function get() { + return this._leftStick; + } + }, { + key: "rightStick", + get: function get() { + return this._rightStick; + } + }, { + key: "buttonLeftStick", + get: function get() { + return this._buttonLeftStick; + } + }, { + key: "buttonRightStick", + get: function get() { + return this._buttonRightStick; + } + }, { + key: "buttonOptions", + get: function get() { + return this._buttonOptions; + } + }, { + key: "buttonStart", + get: function get() { + return this._buttonStart; + } + }, { + key: "handLeftPosition", + get: function get() { + return this._handLeftPosition; + } + }, { + key: "handLeftOrientation", + get: function get() { + return this._handLeftOrientation; + } + }, { + key: "handRightPosition", + get: function get() { + return this._handRightPosition; + } + }, { + key: "handRightOrientation", + get: function get() { + return this._handRightOrientation; + } + }, { + key: "aimLeftPosition", + get: function get() { + return this._aimLeftPosition; + } + }, { + key: "aimLeftOrientation", + get: function get() { + return this._aimLeftOrientation; + } + }, { + key: "aimRightPosition", + get: function get() { + return this._aimRightPosition; + } + }, { + key: "aimRightOrientation", + get: function get() { + return this._aimRightOrientation; + } + }]); + return HandleInputDevice; + }(); + + var Pose; + (function (Pose) { + Pose[Pose["VIEW_LEFT"] = 0] = "VIEW_LEFT"; + Pose[Pose["VIEW_RIGHT"] = 3] = "VIEW_RIGHT"; + Pose[Pose["HEAD_MIDDLE"] = 6] = "HEAD_MIDDLE"; + })(Pose || (Pose = {})); + var HMDInputDevice = function () { + function HMDInputDevice() { + var _this$_webPoseState; + this._eventTarget = new EventTarget(); + this._intervalId = -1; + this._viewLeftPosition = void 0; + this._viewLeftOrientation = void 0; + this._viewRightPosition = void 0; + this._viewRightOrientation = void 0; + this._headMiddlePosition = void 0; + this._headMiddleOrientation = void 0; + this._webPoseState = (_this$_webPoseState = {}, _this$_webPoseState[Pose.VIEW_LEFT] = { + position: Vec3.ZERO, + orientation: Quat.IDENTITY + }, _this$_webPoseState[Pose.VIEW_RIGHT] = { + position: Vec3.ZERO, + orientation: Quat.IDENTITY + }, _this$_webPoseState[Pose.HEAD_MIDDLE] = { + position: Vec3.ZERO, + orientation: Quat.IDENTITY + }, _this$_webPoseState); + this._initInputSource(); + this._registerEvent(); + } + var _proto = HMDInputDevice.prototype; + _proto._ensureDirectorDefined = function _ensureDirectorDefined() { + var _this = this; + return new Promise(function (resolve) { + _this._intervalId = setInterval(function () { + if (legacyCC.director && legacyCC.Director) { + clearInterval(_this._intervalId); + _this._intervalId = -1; + resolve(); + } + }, 50); + }); + }; + _proto._registerEvent = function _registerEvent() { + var _this2 = this; + this._ensureDirectorDefined().then(function () { + legacyCC.director.on(legacyCC.Director.EVENT_BEGIN_FRAME, _this2._scanHmd, _this2); + })["catch"](function (e) {}); + }; + _proto._scanHmd = function _scanHmd() { + var _globalThis$__globalX; + var infoList = (_globalThis$__globalX = globalThis.__globalXR) === null || _globalThis$__globalX === void 0 ? void 0 : _globalThis$__globalX.webxrHmdPoseInfos; + if (!infoList) { + return; + } + for (var i = 0; i < infoList.length; ++i) { + var info = infoList[i]; + this._updateWebPoseState(info); + } + this._eventTarget.emit(InputEventType.HMD_POSE_INPUT, new EventHMD(InputEventType.HMD_POSE_INPUT, this)); + }; + _proto._on = function _on(eventType, callback, target) { + this._eventTarget.on(eventType, callback, target); + }; + _proto._updateWebPoseState = function _updateWebPoseState(info) { + if (info.code !== Pose.VIEW_LEFT && info.code !== Pose.VIEW_RIGHT && info.code !== Pose.HEAD_MIDDLE) { + return; + } + this._webPoseState[info.code] = { + position: new Vec3(info.position.x, info.position.y, info.position.z), + orientation: new Quat(info.orientation.x, info.orientation.y, info.orientation.z, info.orientation.w) + }; + }; + _proto._initInputSource = function _initInputSource() { + var _this3 = this; + this._viewLeftPosition = new InputSourcePosition(); + this._viewLeftPosition.getValue = function () { + return _this3._webPoseState[Pose.VIEW_LEFT].position; + }; + this._viewLeftOrientation = new InputSourceOrientation(); + this._viewLeftOrientation.getValue = function () { + return _this3._webPoseState[Pose.VIEW_LEFT].orientation; + }; + this._viewRightPosition = new InputSourcePosition(); + this._viewRightPosition.getValue = function () { + return _this3._webPoseState[Pose.VIEW_RIGHT].position; + }; + this._viewRightOrientation = new InputSourceOrientation(); + this._viewRightOrientation.getValue = function () { + return _this3._webPoseState[Pose.VIEW_RIGHT].orientation; + }; + this._headMiddlePosition = new InputSourcePosition(); + this._headMiddlePosition.getValue = function () { + return _this3._webPoseState[Pose.HEAD_MIDDLE].position; + }; + this._headMiddleOrientation = new InputSourceOrientation(); + this._headMiddleOrientation.getValue = function () { + return _this3._webPoseState[Pose.HEAD_MIDDLE].orientation; + }; + }; + _createClass(HMDInputDevice, [{ + key: "viewLeftPosition", + get: function get() { + return this._viewLeftPosition; + } + }, { + key: "viewLeftOrientation", + get: function get() { + return this._viewLeftOrientation; + } + }, { + key: "viewRightPosition", + get: function get() { + return this._viewRightPosition; + } + }, { + key: "viewRightOrientation", + get: function get() { + return this._viewRightOrientation; + } + }, { + key: "headMiddlePosition", + get: function get() { + return this._headMiddlePosition; + } + }, { + key: "headMiddleOrientation", + get: function get() { + return this._headMiddleOrientation; + } + }]); + return HMDInputDevice; + }(); + + var HandheldInputDevice = function () { + function HandheldInputDevice() { + this._eventTarget = new EventTarget(); + this._handheldPosition = void 0; + this._handheldOrientation = void 0; + this._initInputSource(); + } + var _proto = HandheldInputDevice.prototype; + _proto._on = function _on(eventType, callback, target) { + this._eventTarget.on(eventType, callback, target); + }; + _proto._initInputSource = function _initInputSource() { + this._handheldPosition = new InputSourcePosition(); + this._handheldPosition.getValue = function () { + return Vec3.ZERO; + }; + this._handheldOrientation = new InputSourceOrientation(); + this._handheldOrientation.getValue = function () { + return Quat.IDENTITY; + }; + }; + _createClass(HandheldInputDevice, [{ + key: "handheldPosition", + get: function get() { + return this._handheldPosition; + } + }, { + key: "handheldOrientation", + get: function get() { + return this._handheldOrientation; + } + }]); + return HandheldInputDevice; + }(); + + var code2KeyCode = { + Backspace: KeyCode.BACKSPACE, + Tab: KeyCode.TAB, + Enter: KeyCode.ENTER, + ShiftLeft: KeyCode.SHIFT_LEFT, + ControlLeft: KeyCode.CTRL_LEFT, + AltLeft: KeyCode.ALT_LEFT, + ShiftRight: KeyCode.SHIFT_RIGHT, + ControlRight: KeyCode.CTRL_RIGHT, + AltRight: KeyCode.ALT_RIGHT, + Pause: KeyCode.PAUSE, + CapsLock: KeyCode.CAPS_LOCK, + Escape: KeyCode.ESCAPE, + Space: KeyCode.SPACE, + PageUp: KeyCode.PAGE_UP, + PageDown: KeyCode.PAGE_DOWN, + End: KeyCode.END, + Home: KeyCode.HOME, + ArrowLeft: KeyCode.ARROW_LEFT, + ArrowUp: KeyCode.ARROW_UP, + ArrowRight: KeyCode.ARROW_RIGHT, + ArrowDown: KeyCode.ARROW_DOWN, + Insert: KeyCode.INSERT, + Delete: KeyCode.DELETE, + Digit0: KeyCode.DIGIT_0, + Digit1: KeyCode.DIGIT_1, + Digit2: KeyCode.DIGIT_2, + Digit3: KeyCode.DIGIT_3, + Digit4: KeyCode.DIGIT_4, + Digit5: KeyCode.DIGIT_5, + Digit6: KeyCode.DIGIT_6, + Digit7: KeyCode.DIGIT_7, + Digit8: KeyCode.DIGIT_8, + Digit9: KeyCode.DIGIT_9, + KeyA: KeyCode.KEY_A, + KeyB: KeyCode.KEY_B, + KeyC: KeyCode.KEY_C, + KeyD: KeyCode.KEY_D, + KeyE: KeyCode.KEY_E, + KeyF: KeyCode.KEY_F, + KeyG: KeyCode.KEY_G, + KeyH: KeyCode.KEY_H, + KeyI: KeyCode.KEY_I, + KeyJ: KeyCode.KEY_J, + KeyK: KeyCode.KEY_K, + KeyL: KeyCode.KEY_L, + KeyM: KeyCode.KEY_M, + KeyN: KeyCode.KEY_N, + KeyO: KeyCode.KEY_O, + KeyP: KeyCode.KEY_P, + KeyQ: KeyCode.KEY_Q, + KeyR: KeyCode.KEY_R, + KeyS: KeyCode.KEY_S, + KeyT: KeyCode.KEY_T, + KeyU: KeyCode.KEY_U, + KeyV: KeyCode.KEY_V, + KeyW: KeyCode.KEY_W, + KeyX: KeyCode.KEY_X, + KeyY: KeyCode.KEY_Y, + KeyZ: KeyCode.KEY_Z, + Numpad0: KeyCode.NUM_0, + Numpad1: KeyCode.NUM_1, + Numpad2: KeyCode.NUM_2, + Numpad3: KeyCode.NUM_3, + Numpad4: KeyCode.NUM_4, + Numpad5: KeyCode.NUM_5, + Numpad6: KeyCode.NUM_6, + Numpad7: KeyCode.NUM_7, + Numpad8: KeyCode.NUM_8, + Numpad9: KeyCode.NUM_9, + NumpadMultiply: KeyCode.NUM_MULTIPLY, + NumpadAdd: KeyCode.NUM_PLUS, + NumpadSubtract: KeyCode.NUM_SUBTRACT, + NumpadDecimal: KeyCode.NUM_DECIMAL, + NumpadDivide: KeyCode.NUM_DIVIDE, + NumpadEnter: KeyCode.NUM_ENTER, + F1: KeyCode.F1, + F2: KeyCode.F2, + F3: KeyCode.F3, + F4: KeyCode.F4, + F5: KeyCode.F5, + F6: KeyCode.F6, + F7: KeyCode.F7, + F8: KeyCode.F8, + F9: KeyCode.F9, + F10: KeyCode.F10, + F11: KeyCode.F11, + F12: KeyCode.F12, + NumLock: KeyCode.NUM_LOCK, + ScrollLock: KeyCode.SCROLL_LOCK, + Semicolon: KeyCode.SEMICOLON, + Equal: KeyCode.EQUAL, + Comma: KeyCode.COMMA, + Minus: KeyCode.DASH, + Period: KeyCode.PERIOD, + Slash: KeyCode.SLASH, + Backquote: KeyCode.BACK_QUOTE, + BracketLeft: KeyCode.BRACKET_LEFT, + Backslash: KeyCode.BACKSLASH, + BracketRight: KeyCode.BRACKET_RIGHT, + Quote: KeyCode.QUOTE + }; + + function getKeyCode(code) { + return code2KeyCode[code] || KeyCode.NONE; + } + var KeyboardInputSource = function () { + function KeyboardInputSource() { + this._eventTarget = new EventTarget(); + this._registerEvent(); + } + var _proto = KeyboardInputSource.prototype; + _proto.dispatchKeyboardDownEvent = function dispatchKeyboardDownEvent(nativeKeyboardEvent) { + this._handleKeyboardDown(nativeKeyboardEvent); + }; + _proto.dispatchKeyboardUpEvent = function dispatchKeyboardUpEvent(nativeKeyboardEvent) { + this._handleKeyboardUp(nativeKeyboardEvent); + }; + _proto.on = function on(eventType, callback, target) { + this._eventTarget.on(eventType, callback, target); + }; + _proto._registerEvent = function _registerEvent() { + var canvas = document.getElementById('GameCanvas'); + canvas === null || canvas === void 0 ? void 0 : canvas.addEventListener('keydown', this._handleKeyboardDown.bind(this)); + canvas === null || canvas === void 0 ? void 0 : canvas.addEventListener('keyup', this._handleKeyboardUp.bind(this)); + }; + _proto._getInputEvent = function _getInputEvent(event, eventType) { + var keyCode = getKeyCode(event.code); + var eventKeyboard = new EventKeyboard(keyCode, eventType); + return eventKeyboard; + }; + _proto._handleKeyboardDown = function _handleKeyboardDown(event) { + event.stopPropagation(); + event.preventDefault(); + if (!event.repeat) { + var keyDownInputEvent = this._getInputEvent(event, InputEventType.KEY_DOWN); + this._eventTarget.emit(InputEventType.KEY_DOWN, keyDownInputEvent); + } else { + var keyPressingInputEvent = this._getInputEvent(event, InputEventType.KEY_PRESSING); + this._eventTarget.emit(InputEventType.KEY_PRESSING, keyPressingInputEvent); + } + }; + _proto._handleKeyboardUp = function _handleKeyboardUp(event) { + var inputEvent = this._getInputEvent(event, InputEventType.KEY_UP); + event.stopPropagation(); + event.preventDefault(); + this._eventTarget.emit(InputEventType.KEY_UP, inputEvent); + }; + return KeyboardInputSource; + }(); + + var MouseInputSource = function () { + function MouseInputSource() { + this._canvas = void 0; + this._eventTarget = new EventTarget(); + this._pointLocked = false; + this._isPressed = false; + this._preMousePos = new Vec2(); + this._handleMouseDown = void 0; + this._handleMouseMove = void 0; + this._handleMouseUp = void 0; + if (systemInfo.hasFeature(Feature$1.EVENT_MOUSE)) { + this._canvas = document.getElementById('GameCanvas'); + if (!this._canvas && !TEST && !EDITOR) { + console.warn('failed to access canvas'); + } + this._handleMouseDown = this._createCallback(InputEventType.MOUSE_DOWN); + this._handleMouseMove = this._createCallback(InputEventType.MOUSE_MOVE); + this._handleMouseUp = this._createCallback(InputEventType.MOUSE_UP); + { + this._registerEvent(); + } + } + } + var _proto = MouseInputSource.prototype; + _proto.dispatchMouseDownEvent = function dispatchMouseDownEvent(nativeMouseEvent) { + this._handleMouseDown(nativeMouseEvent); + }; + _proto.dispatchMouseMoveEvent = function dispatchMouseMoveEvent(nativeMouseEvent) { + this._handleMouseMove(nativeMouseEvent); + }; + _proto.dispatchMouseUpEvent = function dispatchMouseUpEvent(nativeMouseEvent) { + this._handleMouseUp(nativeMouseEvent); + }; + _proto.dispatchScrollEvent = function dispatchScrollEvent(nativeMouseEvent) { + this._handleMouseWheel(nativeMouseEvent); + }; + _proto.on = function on(eventType, callback, target) { + this._eventTarget.on(eventType, callback, target); + }; + _proto._getCanvasRect = function _getCanvasRect() { + var canvas = this._canvas; + var box = canvas === null || canvas === void 0 ? void 0 : canvas.getBoundingClientRect(); + if (box) { + return new Rect$1(box.x, box.y, box.width, box.height); + } + return new Rect$1(0, 0, 0, 0); + }; + _proto._getLocation = function _getLocation(mouseEvent) { + var canvasRect = this._getCanvasRect(); + var dpr = screenAdapter.devicePixelRatio; + var x = this._pointLocked ? this._preMousePos.x / dpr + mouseEvent.movementX : mouseEvent.clientX - canvasRect.x; + var y = this._pointLocked ? this._preMousePos.y / dpr - mouseEvent.movementY : canvasRect.y + canvasRect.height - mouseEvent.clientY; + x *= dpr; + y *= dpr; + return new Vec2(x, y); + }; + _proto._registerEvent = function _registerEvent() { + var _this = this, + _this$_canvas, + _this$_canvas2, + _this$_canvas3, + _this$_canvas4; + window.addEventListener('mousedown', function () { + _this._isPressed = true; + }); + (_this$_canvas = this._canvas) === null || _this$_canvas === void 0 ? void 0 : _this$_canvas.addEventListener('mousedown', this._handleMouseDown); + (_this$_canvas2 = this._canvas) === null || _this$_canvas2 === void 0 ? void 0 : _this$_canvas2.addEventListener('mousemove', this._handleMouseMove); + window.addEventListener('mouseup', this._handleMouseUp); + (_this$_canvas3 = this._canvas) === null || _this$_canvas3 === void 0 ? void 0 : _this$_canvas3.addEventListener('mouseup', this._handleMouseUp); + (_this$_canvas4 = this._canvas) === null || _this$_canvas4 === void 0 ? void 0 : _this$_canvas4.addEventListener('wheel', this._handleMouseWheel.bind(this)); + this._registerPointerLockEvent(); + }; + _proto._registerPointerLockEvent = function _registerPointerLockEvent() { + var _this2 = this; + var lockChangeAlert = function lockChangeAlert() { + var canvas = _this2._canvas; + if (document.pointerLockElement === canvas || document.mozPointerLockElement === canvas) { + _this2._pointLocked = true; + } else { + _this2._pointLocked = false; + } + }; + if ('onpointerlockchange' in document) { + document.addEventListener('pointerlockchange', lockChangeAlert, false); + } else if ('onmozpointerlockchange' in document) { + document.addEventListener('mozpointerlockchange', lockChangeAlert, false); + } + }; + _proto._createCallback = function _createCallback(eventType) { + var _this3 = this; + return function (mouseEvent) { + var _this3$_canvas; + var location = _this3._getLocation(mouseEvent); + var button = mouseEvent.button, + buttons = mouseEvent.buttons; + var targetButton = button; + switch (eventType) { + case InputEventType.MOUSE_DOWN: + (_this3$_canvas = _this3._canvas) === null || _this3$_canvas === void 0 ? void 0 : _this3$_canvas.focus(); + _this3._isPressed = true; + break; + case InputEventType.MOUSE_UP: + _this3._isPressed = false; + break; + case InputEventType.MOUSE_MOVE: + if (1 & buttons) { + targetButton = EventMouse.BUTTON_LEFT; + } else if (2 & buttons) { + targetButton = EventMouse.BUTTON_RIGHT; + } else if (4 & buttons) { + targetButton = EventMouse.BUTTON_MIDDLE; + } else { + targetButton = EventMouse.BUTTON_MISSING; + } + break; + } + var eventMouse = new EventMouse(eventType, false, _this3._preMousePos); + eventMouse.setLocation(location.x, location.y); + eventMouse.setButton(targetButton); + eventMouse.movementX = mouseEvent.movementX; + eventMouse.movementY = mouseEvent.movementY; + _this3._preMousePos.set(location.x, location.y); + mouseEvent.stopPropagation(); + if (mouseEvent.target === _this3._canvas) { + mouseEvent.preventDefault(); + } + _this3._eventTarget.emit(eventType, eventMouse); + }; + }; + _proto._handleMouseWheel = function _handleMouseWheel(mouseEvent) { + var eventType = InputEventType.MOUSE_WHEEL; + var location = this._getLocation(mouseEvent); + var button = mouseEvent.button; + var eventMouse = new EventMouse(eventType, false, this._preMousePos); + eventMouse.setLocation(location.x, location.y); + eventMouse.setButton(button); + eventMouse.movementX = mouseEvent.movementX; + eventMouse.movementY = mouseEvent.movementY; + var wheelSensitivityFactor = 5; + eventMouse.setScrollData(mouseEvent.deltaX * wheelSensitivityFactor, -mouseEvent.deltaY * wheelSensitivityFactor); + this._preMousePos.set(location.x, location.y); + mouseEvent.stopPropagation(); + if (mouseEvent.target === this._canvas) { + mouseEvent.preventDefault(); + } + this._eventTarget.emit(eventType, eventMouse); + }; + return MouseInputSource; + }(); + + var tempVec2$3 = new Vec2(); + var TouchManager = function () { + function TouchManager() { + this._touchMap = void 0; + this._maxTouches = 8; + this._touchMap = new Map(); + } + var _proto = TouchManager.prototype; + _proto._cloneTouch = function _cloneTouch(touch) { + var touchID = touch.getID(); + touch.getStartLocation(tempVec2$3); + var clonedTouch = new Touch(tempVec2$3.x, tempVec2$3.y, touchID); + touch.getLocation(tempVec2$3); + clonedTouch.setPoint(tempVec2$3.x, tempVec2$3.y); + touch.getPreviousLocation(tempVec2$3); + clonedTouch.setPrevPoint(tempVec2$3); + return clonedTouch; + }; + _proto._createTouch = function _createTouch(touchID, x, y) { + if (this._touchMap.has(touchID)) { + console.log('Cannot create the same touch object.'); + return undefined; + } + var checkResult = this._checkTouchMapSizeMoreThanMax(touchID); + if (checkResult) { + console.log('The touches is more than MAX_TOUCHES.'); + return undefined; + } + var touch = new Touch(x, y, touchID); + this._touchMap.set(touchID, touch); + this._updateTouch(touch, x, y); + return this._cloneTouch(touch); + }; + _proto.releaseTouch = function releaseTouch(touchID) { + if (!this._touchMap.has(touchID)) { + return; + } + this._touchMap["delete"](touchID); + }; + _proto.getTouch = function getTouch(touchID, x, y) { + var touch = this._touchMap.get(touchID); + if (!touch) { + touch = this._createTouch(touchID, x, y); + } else { + this._updateTouch(touch, x, y); + } + return touch ? this._cloneTouch(touch) : undefined; + }; + _proto.getAllTouches = function getAllTouches() { + var _this = this; + var touches = []; + this._touchMap.forEach(function (touch) { + if (touch) { + var clonedTouch = _this._cloneTouch(touch); + touches.push(clonedTouch); + } + }); + return touches; + }; + _proto._updateTouch = function _updateTouch(touch, x, y) { + touch.getLocation(tempVec2$3); + touch.setPrevPoint(tempVec2$3); + touch.setPoint(x, y); + }; + _proto._checkTouchMapSizeMoreThanMax = function _checkTouchMapSizeMoreThanMax(touchID) { + var _this2 = this; + if (this._touchMap.has(touchID)) { + return false; + } + var maxSize = macro.ENABLE_MULTI_TOUCH ? this._maxTouches : 1; + if (this._touchMap.size < maxSize) { + return false; + } + var now = performance.now(); + this._touchMap.forEach(function (touch) { + if (now - touch.lastModified > macro.TOUCH_TIMEOUT) { + console.log("The touches is more than MAX_TOUCHES, release touch id " + touch.getID() + "."); + _this2.releaseTouch(touch.getID()); + } + }); + return maxSize >= this._touchMap.size; + }; + return TouchManager; + }(); + var touchManager = new TouchManager(); + + var TouchInputSource = function () { + function TouchInputSource() { + this._canvas = void 0; + this._eventTarget = new EventTarget(); + if (systemInfo.hasFeature(Feature$1.INPUT_TOUCH)) { + this._canvas = document.getElementById('GameCanvas'); + if (!this._canvas && !TEST && !EDITOR) { + console.warn('failed to access canvas'); + } + { + this._registerEvent(); + } + } + } + var _proto = TouchInputSource.prototype; + _proto._registerEvent = function _registerEvent() { + var _this$_canvas, _this$_canvas2, _this$_canvas3, _this$_canvas4; + (_this$_canvas = this._canvas) === null || _this$_canvas === void 0 ? void 0 : _this$_canvas.addEventListener('touchstart', this._createCallback(InputEventType.TOUCH_START)); + (_this$_canvas2 = this._canvas) === null || _this$_canvas2 === void 0 ? void 0 : _this$_canvas2.addEventListener('touchmove', this._createCallback(InputEventType.TOUCH_MOVE)); + (_this$_canvas3 = this._canvas) === null || _this$_canvas3 === void 0 ? void 0 : _this$_canvas3.addEventListener('touchend', this._createCallback(InputEventType.TOUCH_END)); + (_this$_canvas4 = this._canvas) === null || _this$_canvas4 === void 0 ? void 0 : _this$_canvas4.addEventListener('touchcancel', this._createCallback(InputEventType.TOUCH_CANCEL)); + }; + _proto._createCallback = function _createCallback(eventType) { + var _this = this; + return function (event) { + var canvasRect = _this._getCanvasRect(); + var handleTouches = []; + var length = event.changedTouches.length; + for (var i = 0; i < length; ++i) { + var changedTouch = event.changedTouches[i]; + var touchID = changedTouch.identifier; + if (touchID === null) { + continue; + } + var location = _this._getLocation(changedTouch, canvasRect); + var touch = touchManager.getTouch(touchID, location.x, location.y); + if (!touch) { + continue; + } + if (eventType === InputEventType.TOUCH_END || eventType === InputEventType.TOUCH_CANCEL) { + touchManager.releaseTouch(touchID); + } + handleTouches.push(touch); + } + event.stopPropagation(); + if (event.target === _this._canvas) { + event.preventDefault(); + } + if (eventType === InputEventType.TOUCH_START) { + var _this$_canvas5; + (_this$_canvas5 = _this._canvas) === null || _this$_canvas5 === void 0 ? void 0 : _this$_canvas5.focus(); + } + if (handleTouches.length > 0) { + var eventTouch = new EventTouch(handleTouches, false, eventType, macro.ENABLE_MULTI_TOUCH ? touchManager.getAllTouches() : handleTouches); + _this._eventTarget.emit(eventType, eventTouch); + } + }; + }; + _proto._getCanvasRect = function _getCanvasRect() { + var canvas = this._canvas; + var box = canvas === null || canvas === void 0 ? void 0 : canvas.getBoundingClientRect(); + if (box) { + return new Rect$1(box.x, box.y, box.width, box.height); + } + return new Rect$1(0, 0, 0, 0); + }; + _proto._getLocation = function _getLocation(touch, canvasRect) { + if (globalThis.__globalXR && globalThis.__globalXR.ar && globalThis.__globalXR.ar.isWebXR()) { + return new Vec2(touch.clientX, touch.clientY); + } + var x = touch.clientX - canvasRect.x; + var y = canvasRect.y + canvasRect.height - touch.clientY; + if (screenAdapter.isFrameRotated) { + var tmp = x; + x = canvasRect.height - y; + y = tmp; + } + var dpr = screenAdapter.devicePixelRatio; + x *= dpr; + y *= dpr; + return new Vec2(x, y); + }; + _proto.on = function on(eventType, callback, target) { + this._eventTarget.on(eventType, callback, target); + }; + return TouchInputSource; + }(); + + var _pointerEventTypeMap; + var EventDispatcherPriority; + (function (EventDispatcherPriority) { + EventDispatcherPriority[EventDispatcherPriority["GLOBAL"] = 0] = "GLOBAL"; + EventDispatcherPriority[EventDispatcherPriority["UI"] = 1] = "UI"; + })(EventDispatcherPriority || (EventDispatcherPriority = {})); + var InputEventDispatcher = function () { + function InputEventDispatcher(inputEventTarget) { + this.priority = EventDispatcherPriority.GLOBAL; + this._inputEventTarget = void 0; + this._inputEventTarget = inputEventTarget; + } + var _proto = InputEventDispatcher.prototype; + _proto.dispatchEvent = function dispatchEvent(event) { + this._inputEventTarget.emit(event.type, event); + return true; + }; + return InputEventDispatcher; + }(); + var pointerEventTypeMap = (_pointerEventTypeMap = {}, _pointerEventTypeMap[InputEventType.MOUSE_DOWN] = InputEventType.TOUCH_START, _pointerEventTypeMap[InputEventType.MOUSE_MOVE] = InputEventType.TOUCH_MOVE, _pointerEventTypeMap[InputEventType.MOUSE_UP] = InputEventType.TOUCH_END, _pointerEventTypeMap); + var Input = exports('er', function () { + function Input() { + this._dispatchImmediately = !NATIVE; + this._eventTarget = new EventTarget(); + this._touchInput = new TouchInputSource(); + this._mouseInput = new MouseInputSource(); + this._keyboardInput = new KeyboardInputSource(); + this._accelerometerInput = new AccelerometerInputSource(); + this._handleInput = new HandleInputDevice(); + this._hmdInput = new HMDInputDevice(); + this._handheldInput = new HandheldInputDevice(); + this._eventTouchList = []; + this._eventMouseList = []; + this._eventKeyboardList = []; + this._eventAccelerationList = []; + this._eventGamepadList = []; + this._eventHandleList = []; + this._eventHMDList = []; + this._eventHandheldList = []; + this._needSimulateTouchMoveEvent = false; + this._inputEventDispatcher = void 0; + this._eventDispatcherList = []; + this._registerEvent(); + this._inputEventDispatcher = new InputEventDispatcher(this._eventTarget); + this._registerEventDispatcher(this._inputEventDispatcher); + GamepadInputDevice._init(); + } + var _proto2 = Input.prototype; + _proto2._dispatchMouseDownEvent = function _dispatchMouseDownEvent(nativeMouseEvent) { + var _this$_mouseInput$dis, _this$_mouseInput; + (_this$_mouseInput$dis = (_this$_mouseInput = this._mouseInput).dispatchMouseDownEvent) === null || _this$_mouseInput$dis === void 0 ? void 0 : _this$_mouseInput$dis.call(_this$_mouseInput, nativeMouseEvent); + }; + _proto2._dispatchMouseMoveEvent = function _dispatchMouseMoveEvent(nativeMouseEvent) { + var _this$_mouseInput$dis2, _this$_mouseInput2; + (_this$_mouseInput$dis2 = (_this$_mouseInput2 = this._mouseInput).dispatchMouseMoveEvent) === null || _this$_mouseInput$dis2 === void 0 ? void 0 : _this$_mouseInput$dis2.call(_this$_mouseInput2, nativeMouseEvent); + }; + _proto2._dispatchMouseUpEvent = function _dispatchMouseUpEvent(nativeMouseEvent) { + var _this$_mouseInput$dis3, _this$_mouseInput3; + (_this$_mouseInput$dis3 = (_this$_mouseInput3 = this._mouseInput).dispatchMouseUpEvent) === null || _this$_mouseInput$dis3 === void 0 ? void 0 : _this$_mouseInput$dis3.call(_this$_mouseInput3, nativeMouseEvent); + }; + _proto2._dispatchMouseScrollEvent = function _dispatchMouseScrollEvent(nativeMouseEvent) { + var _this$_mouseInput$dis4, _this$_mouseInput4; + (_this$_mouseInput$dis4 = (_this$_mouseInput4 = this._mouseInput).dispatchScrollEvent) === null || _this$_mouseInput$dis4 === void 0 ? void 0 : _this$_mouseInput$dis4.call(_this$_mouseInput4, nativeMouseEvent); + }; + _proto2._dispatchKeyboardDownEvent = function _dispatchKeyboardDownEvent(nativeKeyboardEvent) { + var _this$_keyboardInput$, _this$_keyboardInput; + (_this$_keyboardInput$ = (_this$_keyboardInput = this._keyboardInput).dispatchKeyboardDownEvent) === null || _this$_keyboardInput$ === void 0 ? void 0 : _this$_keyboardInput$.call(_this$_keyboardInput, nativeKeyboardEvent); + }; + _proto2._dispatchKeyboardUpEvent = function _dispatchKeyboardUpEvent(nativeKeyboardEvent) { + var _this$_keyboardInput$2, _this$_keyboardInput2; + (_this$_keyboardInput$2 = (_this$_keyboardInput2 = this._keyboardInput).dispatchKeyboardUpEvent) === null || _this$_keyboardInput$2 === void 0 ? void 0 : _this$_keyboardInput$2.call(_this$_keyboardInput2, nativeKeyboardEvent); + }; + _proto2.on = function on(eventType, callback, target) { + this._eventTarget.on(eventType, callback, target); + return callback; + }; + _proto2.once = function once(eventType, callback, target) { + this._eventTarget.once(eventType, callback, target); + return callback; + }; + _proto2.off = function off(eventType, callback, target) { + this._eventTarget.off(eventType, callback, target); + }; + _proto2.setAccelerometerEnabled = function setAccelerometerEnabled(isEnable) { + if (isEnable) { + this._accelerometerInput.start(); + } else { + this._accelerometerInput.stop(); + } + }; + _proto2.setAccelerometerInterval = function setAccelerometerInterval(intervalInMileSeconds) { + this._accelerometerInput.setInterval(intervalInMileSeconds); + }; + _proto2._simulateEventTouch = function _simulateEventTouch(eventMouse) { + var eventType = pointerEventTypeMap[eventMouse.type]; + var touchID = 0; + var touch = touchManager.getTouch(touchID, eventMouse.getLocationX(), eventMouse.getLocationY()); + if (!touch) { + return; + } + var changedTouches = [touch]; + var eventTouch = new EventTouch(changedTouches, false, eventType, eventType === InputEventType.TOUCH_END ? [] : changedTouches); + eventTouch.windowId = eventMouse.windowId; + if (eventType === InputEventType.TOUCH_END) { + touchManager.releaseTouch(touchID); + } + this._dispatchOrPushEventTouch(eventTouch, this._eventTouchList); + }; + _proto2._registerEventDispatcher = function _registerEventDispatcher(eventDispatcher) { + this._eventDispatcherList.push(eventDispatcher); + this._eventDispatcherList.sort(function (a, b) { + return b.priority - a.priority; + }); + }; + _proto2._emitEvent = function _emitEvent(event) { + var length = this._eventDispatcherList.length; + for (var i = 0; i < length; ++i) { + var dispatcher = this._eventDispatcherList[i]; + try { + if (!dispatcher.dispatchEvent(event)) { + break; + } + } catch (e) { + console.error("Error occurs in an event listener: " + event.type); + console.error(e); + } + } + }; + _proto2._registerEvent = function _registerEvent() { + var _this = this; + if (sys.hasFeature(sys.Feature.INPUT_TOUCH)) { + var eventTouchList = this._eventTouchList; + this._touchInput.on(InputEventType.TOUCH_START, function (event) { + _this._dispatchOrPushEventTouch(event, eventTouchList); + }); + this._touchInput.on(InputEventType.TOUCH_MOVE, function (event) { + _this._dispatchOrPushEventTouch(event, eventTouchList); + }); + this._touchInput.on(InputEventType.TOUCH_END, function (event) { + _this._dispatchOrPushEventTouch(event, eventTouchList); + }); + this._touchInput.on(InputEventType.TOUCH_CANCEL, function (event) { + _this._dispatchOrPushEventTouch(event, eventTouchList); + }); + } + if (sys.hasFeature(sys.Feature.EVENT_MOUSE)) { + var eventMouseList = this._eventMouseList; + this._mouseInput.on(InputEventType.MOUSE_DOWN, function (event) { + _this._needSimulateTouchMoveEvent = true; + _this._simulateEventTouch(event); + _this._dispatchOrPushEvent(event, eventMouseList); + }); + this._mouseInput.on(InputEventType.MOUSE_MOVE, function (event) { + if (_this._needSimulateTouchMoveEvent) { + _this._simulateEventTouch(event); + } + _this._dispatchOrPushEvent(event, eventMouseList); + }); + this._mouseInput.on(InputEventType.MOUSE_UP, function (event) { + _this._needSimulateTouchMoveEvent = false; + _this._simulateEventTouch(event); + _this._dispatchOrPushEvent(event, eventMouseList); + }); + this._mouseInput.on(InputEventType.MOUSE_WHEEL, function (event) { + _this._dispatchOrPushEvent(event, eventMouseList); + }); + } + if (sys.hasFeature(sys.Feature.EVENT_KEYBOARD)) { + var eventKeyboardList = this._eventKeyboardList; + this._keyboardInput.on(InputEventType.KEY_DOWN, function (event) { + _this._dispatchOrPushEvent(event, eventKeyboardList); + }); + this._keyboardInput.on(InputEventType.KEY_PRESSING, function (event) { + _this._dispatchOrPushEvent(event, eventKeyboardList); + }); + this._keyboardInput.on(InputEventType.KEY_UP, function (event) { + _this._dispatchOrPushEvent(event, eventKeyboardList); + }); + } + if (sys.hasFeature(sys.Feature.EVENT_ACCELEROMETER)) { + var eventAccelerationList = this._eventAccelerationList; + this._accelerometerInput.on(InputEventType.DEVICEMOTION, function (event) { + _this._dispatchOrPushEvent(event, eventAccelerationList); + }); + } + if (sys.hasFeature(sys.Feature.EVENT_GAMEPAD)) { + var eventGamepadList = this._eventGamepadList; + GamepadInputDevice._on(InputEventType.GAMEPAD_CHANGE, function (event) { + _this._dispatchOrPushEvent(event, eventGamepadList); + }); + GamepadInputDevice._on(InputEventType.GAMEPAD_INPUT, function (event) { + _this._dispatchOrPushEvent(event, eventGamepadList); + }); + GamepadInputDevice._on(InputEventType.HANDLE_POSE_INPUT, function (event) { + _this._dispatchOrPushEvent(event, eventGamepadList); + }); + } + if (sys.hasFeature(sys.Feature.EVENT_HANDLE)) { + var eventHandleList = this._eventHandleList; + this._handleInput._on(InputEventType.HANDLE_INPUT, function (event) { + _this._dispatchOrPushEvent(event, eventHandleList); + }); + this._handleInput._on(InputEventType.HANDLE_POSE_INPUT, function (event) { + _this._dispatchOrPushEvent(event, eventHandleList); + }); + } + if (sys.hasFeature(sys.Feature.EVENT_HMD)) { + var eventHMDList = this._eventHMDList; + this._hmdInput._on(InputEventType.HMD_POSE_INPUT, function (event) { + _this._dispatchOrPushEvent(event, eventHMDList); + }); + } + if (sys.hasFeature(sys.Feature.EVENT_HANDHELD)) { + var eventHandheldList = this._eventHandheldList; + this._handheldInput._on(InputEventType.HANDHELD_POSE_INPUT, function (event) { + _this._dispatchOrPushEvent(event, eventHandheldList); + }); + } + }; + _proto2._clearEvents = function _clearEvents() { + this._eventMouseList.length = 0; + this._eventTouchList.length = 0; + this._eventKeyboardList.length = 0; + this._eventAccelerationList.length = 0; + this._eventGamepadList.length = 0; + this._eventHandleList.length = 0; + this._eventHMDList.length = 0; + }; + _proto2._dispatchOrPushEvent = function _dispatchOrPushEvent(event, eventList) { + if (this._dispatchImmediately) { + this._emitEvent(event); + } else { + eventList.push(event); + } + }; + _proto2._dispatchOrPushEventTouch = function _dispatchOrPushEventTouch(eventTouch, touchEventList) { + if (this._dispatchImmediately) { + var touches = eventTouch.getTouches(); + var touchesLength = touches.length; + for (var i = 0; i < touchesLength; ++i) { + eventTouch.touch = touches[i]; + eventTouch.propagationStopped = eventTouch.propagationImmediateStopped = false; + this._emitEvent(eventTouch); + } + } else { + touchEventList.push(eventTouch); + } + }; + _proto2._frameDispatchEvents = function _frameDispatchEvents() { + var eventHMDList = this._eventHMDList; + for (var i = 0, length = eventHMDList.length; i < length; ++i) { + var eventHMD = eventHMDList[i]; + this._emitEvent(eventHMD); + } + var eventHandheldList = this._eventHandheldList; + for (var _i = 0, _length = eventHandheldList.length; _i < _length; ++_i) { + var eventHandheld = eventHandheldList[_i]; + this._emitEvent(eventHandheld); + } + var eventMouseList = this._eventMouseList; + for (var _i2 = 0, _length2 = eventMouseList.length; _i2 < _length2; ++_i2) { + var eventMouse = eventMouseList[_i2]; + this._emitEvent(eventMouse); + } + var eventTouchList = this._eventTouchList; + for (var _i3 = 0, _length3 = eventTouchList.length; _i3 < _length3; ++_i3) { + var eventTouch = eventTouchList[_i3]; + var touches = eventTouch.getTouches(); + var touchesLength = touches.length; + for (var j = 0; j < touchesLength; ++j) { + eventTouch.touch = touches[j]; + eventTouch.propagationStopped = eventTouch.propagationImmediateStopped = false; + this._emitEvent(eventTouch); + } + } + var eventKeyboardList = this._eventKeyboardList; + for (var _i4 = 0, _length4 = eventKeyboardList.length; _i4 < _length4; ++_i4) { + var eventKeyboard = eventKeyboardList[_i4]; + this._emitEvent(eventKeyboard); + } + var eventAccelerationList = this._eventAccelerationList; + for (var _i5 = 0, _length5 = eventAccelerationList.length; _i5 < _length5; ++_i5) { + var eventAcceleration = eventAccelerationList[_i5]; + this._emitEvent(eventAcceleration); + } + var eventGamepadList = this._eventGamepadList; + for (var _i6 = 0, _length6 = eventGamepadList.length; _i6 < _length6; ++_i6) { + var eventGamepad = eventGamepadList[_i6]; + this._emitEvent(eventGamepad); + } + var eventHandleList = this._eventHandleList; + for (var _i7 = 0, _length7 = eventHandleList.length; _i7 < _length7; ++_i7) { + var eventHandle = eventHandleList[_i7]; + this._emitEvent(eventHandle); + } + this._clearEvents(); + }; + return Input; + }()); + Input.EventType = InputEventType; + var input = exports('eq', new Input()); + + var SystemEvent = exports('et', function (_EventTarget) { + _inheritsLoose(SystemEvent, _EventTarget); + function SystemEvent() { + var _this; + _this = _EventTarget.call(this) || this; + input.on(InputEventType.MOUSE_DOWN, function (e) { + _this.emit(SystemEventType.MOUSE_DOWN, e); + }); + input.on(InputEventType.MOUSE_MOVE, function (e) { + _this.emit(SystemEventType.MOUSE_MOVE, e); + }); + input.on(InputEventType.MOUSE_UP, function (e) { + _this.emit(SystemEventType.MOUSE_UP, e); + }); + input.on(InputEventType.MOUSE_WHEEL, function (e) { + _this.emit(SystemEventType.MOUSE_WHEEL, e); + }); + input.on(InputEventType.TOUCH_START, function (e) { + _this.emit(SystemEventType.TOUCH_START, e.touch, e); + }); + input.on(InputEventType.TOUCH_MOVE, function (e) { + _this.emit(SystemEventType.TOUCH_MOVE, e.touch, e); + }); + input.on(InputEventType.TOUCH_END, function (e) { + _this.emit(SystemEventType.TOUCH_END, e.touch, e); + }); + input.on(InputEventType.TOUCH_CANCEL, function (e) { + _this.emit(SystemEventType.TOUCH_CANCEL, e.touch, e); + }); + input.on(InputEventType.KEY_DOWN, function (e) { + _this.emit(SystemEventType.KEY_DOWN, e); + }); + input.on(InputEventType.KEY_PRESSING, function (e) { + _this.emit(SystemEventType.KEY_DOWN, e); + }); + input.on(InputEventType.KEY_UP, function (e) { + _this.emit(SystemEventType.KEY_UP, e); + }); + input.on(InputEventType.DEVICEMOTION, function (e) { + _this.emit(SystemEventType.DEVICEMOTION, e); + }); + return _this; + } + var _proto = SystemEvent.prototype; + _proto.setAccelerometerEnabled = function setAccelerometerEnabled(isEnabled) { + input.setAccelerometerEnabled(isEnabled); + }; + _proto.setAccelerometerInterval = function setAccelerometerInterval(interval) { + input.setAccelerometerInterval(interval); + }; + _proto.on = function on(type, callback, target, once) { + _EventTarget.prototype.on.call(this, type, callback, target, once); + return callback; + }; + _proto.off = function off(type, callback, target) { + _EventTarget.prototype.off.call(this, type, callback, target); + }; + return SystemEvent; + }(EventTarget)); + SystemEvent.EventType = SystemEventType; + legacyCC.SystemEvent = SystemEvent; + var systemEvent = exports('es', new SystemEvent()); + legacyCC.systemEvent = systemEvent; + + replaceProperty(SystemEventType, 'Node.EventType', [{ + name: 'POSITION_PART', + newName: 'TRANSFORM_CHANGED' + }, { + name: 'ROTATION_PART', + newName: 'TRANSFORM_CHANGED' + }, { + name: 'SCALE_PART', + newName: 'TRANSFORM_CHANGED' + }]); + replaceProperty(Event, 'Event', [{ + name: 'ACCELERATION', + newName: 'DEVICEMOTION', + target: SystemEvent.EventType, + targetName: 'SystemEvent.EventType' + }]); + markAsWarning(Event, 'Event', [{ + name: 'TOUCH', + suggest: 'please use SystemEvent.EventType.TOUCH_START, SystemEvent.EventType.TOUCH_MOVE, SystemEvent.EventType.TOUCH_END and SystemEvent.EventType.TOUCH_CANCEL instead' + }, { + name: 'MOUSE', + suggest: 'please use SystemEvent.EventType.MOUSE_DOWN, SystemEvent.EventType.MOUSE_MOVE, SystemEvent.EventType.MOUSE_UP, SystemEvent.EventType.MOUSE_WHEEL, Node.EventType.MOUSE_ENTER and Node.EventType.MOUSE_LEAVE instead' + }, { + name: 'KEYBOARD', + suggest: 'please use SystemEvent.EventType.KEY_DOWN and SystemEvent.EventType.KEY_UP instead' + }]); + replaceProperty(EventMouse, 'EventMouse', ['DOWN', 'UP', 'MOVE'].map(function (item) { + return { + name: item, + newName: "MOUSE_" + item, + target: SystemEvent.EventType, + targetName: 'SystemEvent.EventType' + }; + })); + replaceProperty(EventMouse, 'EventMouse', [{ + name: 'SCROLL', + newName: 'MOUSE_WHEEL', + target: SystemEvent.EventType, + targetName: 'SystemEvent.EventType' + }]); + markAsWarning(EventMouse.prototype, 'EventMouse.prototype', [{ + name: 'eventType', + suggest: 'please use EventMouse.prototype.type instead' + }]); + replaceProperty(EventTouch, 'EventTouch', [{ + name: 'BEGAN', + newName: 'TOUCH_START', + target: SystemEvent.EventType, + targetName: 'SystemEvent.EventType' + }]); + replaceProperty(EventTouch, 'EventTouch', [{ + name: 'MOVED', + newName: 'TOUCH_MOVE', + target: SystemEvent.EventType, + targetName: 'SystemEvent.EventType' + }]); + replaceProperty(EventTouch, 'EventTouch', [{ + name: 'ENDED', + newName: 'TOUCH_END', + target: SystemEvent.EventType, + targetName: 'SystemEvent.EventType' + }]); + replaceProperty(EventTouch, 'EventTouch', [{ + name: 'CANCELLED', + newName: 'TOUCH_CANCEL', + target: SystemEvent.EventType, + targetName: 'SystemEvent.EventType' + }]); + markAsWarning(EventTouch.prototype, 'EventTouch.prototype', [{ + name: 'getEventCode', + suggest: 'please use EventTouch.prototype.type instead' + }]); + replaceProperty(EventTouch.prototype, 'EventTouch.prototype', [{ + name: 'getUILocationInView', + newName: 'getLocationInView', + target: EventTouch, + targetName: 'EventTouch' + }]); + markAsWarning(macro.KEY, 'macro.KEY', ['back', 'menu', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '*', '+', '-', '/', ';', '=', ',', '.', '[', ']', 'dpadLeft', 'dpadRight', 'dpadUp', 'dpadDown', 'dpadCenter'].map(function (item) { + return { + name: item + }; + })); + markAsWarning(macro.KEY, 'macro.KEY', [{ + name: 'shift', + suggest: 'please use KeyCode.SHIFT_LEFT instead' + }]); + markAsWarning(macro.KEY, 'macro.KEY', [{ + name: 'ctrl', + suggest: 'please use KeyCode.CTRL_LEFT instead' + }]); + markAsWarning(macro.KEY, 'macro.KEY', [{ + name: 'alt', + suggest: 'please use KeyCode.ALT_LEFT instead' + }]); + markAsWarning(macro, 'macro', [{ + name: 'KEY', + suggest: 'please use KeyCode instead' + }]); + + var CameraFOVAxis; + (function (CameraFOVAxis) { + CameraFOVAxis[CameraFOVAxis["VERTICAL"] = 0] = "VERTICAL"; + CameraFOVAxis[CameraFOVAxis["HORIZONTAL"] = 1] = "HORIZONTAL"; + })(CameraFOVAxis || (CameraFOVAxis = {})); + var CameraProjection; + (function (CameraProjection) { + CameraProjection[CameraProjection["ORTHO"] = 0] = "ORTHO"; + CameraProjection[CameraProjection["PERSPECTIVE"] = 1] = "PERSPECTIVE"; + })(CameraProjection || (CameraProjection = {})); + var CameraAperture; + (function (CameraAperture) { + CameraAperture[CameraAperture["F1_8"] = 0] = "F1_8"; + CameraAperture[CameraAperture["F2_0"] = 1] = "F2_0"; + CameraAperture[CameraAperture["F2_2"] = 2] = "F2_2"; + CameraAperture[CameraAperture["F2_5"] = 3] = "F2_5"; + CameraAperture[CameraAperture["F2_8"] = 4] = "F2_8"; + CameraAperture[CameraAperture["F3_2"] = 5] = "F3_2"; + CameraAperture[CameraAperture["F3_5"] = 6] = "F3_5"; + CameraAperture[CameraAperture["F4_0"] = 7] = "F4_0"; + CameraAperture[CameraAperture["F4_5"] = 8] = "F4_5"; + CameraAperture[CameraAperture["F5_0"] = 9] = "F5_0"; + CameraAperture[CameraAperture["F5_6"] = 10] = "F5_6"; + CameraAperture[CameraAperture["F6_3"] = 11] = "F6_3"; + CameraAperture[CameraAperture["F7_1"] = 12] = "F7_1"; + CameraAperture[CameraAperture["F8_0"] = 13] = "F8_0"; + CameraAperture[CameraAperture["F9_0"] = 14] = "F9_0"; + CameraAperture[CameraAperture["F10_0"] = 15] = "F10_0"; + CameraAperture[CameraAperture["F11_0"] = 16] = "F11_0"; + CameraAperture[CameraAperture["F13_0"] = 17] = "F13_0"; + CameraAperture[CameraAperture["F14_0"] = 18] = "F14_0"; + CameraAperture[CameraAperture["F16_0"] = 19] = "F16_0"; + CameraAperture[CameraAperture["F18_0"] = 20] = "F18_0"; + CameraAperture[CameraAperture["F20_0"] = 21] = "F20_0"; + CameraAperture[CameraAperture["F22_0"] = 22] = "F22_0"; + })(CameraAperture || (CameraAperture = {})); + var CameraISO; + (function (CameraISO) { + CameraISO[CameraISO["ISO100"] = 0] = "ISO100"; + CameraISO[CameraISO["ISO200"] = 1] = "ISO200"; + CameraISO[CameraISO["ISO400"] = 2] = "ISO400"; + CameraISO[CameraISO["ISO800"] = 3] = "ISO800"; + })(CameraISO || (CameraISO = {})); + var CameraShutter; + (function (CameraShutter) { + CameraShutter[CameraShutter["D1"] = 0] = "D1"; + CameraShutter[CameraShutter["D2"] = 1] = "D2"; + CameraShutter[CameraShutter["D4"] = 2] = "D4"; + CameraShutter[CameraShutter["D8"] = 3] = "D8"; + CameraShutter[CameraShutter["D15"] = 4] = "D15"; + CameraShutter[CameraShutter["D30"] = 5] = "D30"; + CameraShutter[CameraShutter["D60"] = 6] = "D60"; + CameraShutter[CameraShutter["D125"] = 7] = "D125"; + CameraShutter[CameraShutter["D250"] = 8] = "D250"; + CameraShutter[CameraShutter["D500"] = 9] = "D500"; + CameraShutter[CameraShutter["D1000"] = 10] = "D1000"; + CameraShutter[CameraShutter["D2000"] = 11] = "D2000"; + CameraShutter[CameraShutter["D4000"] = 12] = "D4000"; + })(CameraShutter || (CameraShutter = {})); + var CameraType; + (function (CameraType) { + CameraType[CameraType["DEFAULT"] = -1] = "DEFAULT"; + CameraType[CameraType["LEFT_EYE"] = 0] = "LEFT_EYE"; + CameraType[CameraType["RIGHT_EYE"] = 1] = "RIGHT_EYE"; + CameraType[CameraType["MAIN"] = 2] = "MAIN"; + })(CameraType || (CameraType = {})); + var TrackingType; + (function (TrackingType) { + TrackingType[TrackingType["NO_TRACKING"] = 0] = "NO_TRACKING"; + TrackingType[TrackingType["POSITION_AND_ROTATION"] = 1] = "POSITION_AND_ROTATION"; + TrackingType[TrackingType["POSITION"] = 2] = "POSITION"; + TrackingType[TrackingType["ROTATION"] = 3] = "ROTATION"; + })(TrackingType || (TrackingType = {})); + var CameraUsage; + (function (CameraUsage) { + CameraUsage[CameraUsage["EDITOR"] = 0] = "EDITOR"; + CameraUsage[CameraUsage["GAME_VIEW"] = 1] = "GAME_VIEW"; + CameraUsage[CameraUsage["SCENE_VIEW"] = 2] = "SCENE_VIEW"; + CameraUsage[CameraUsage["PREVIEW"] = 3] = "PREVIEW"; + CameraUsage[CameraUsage["GAME"] = 100] = "GAME"; + })(CameraUsage || (CameraUsage = {})); + var FSTOPS = [1.8, 2.0, 2.2, 2.5, 2.8, 3.2, 3.5, 4.0, 4.5, 5.0, 5.6, 6.3, 7.1, 8.0, 9.0, 10.0, 11.0, 13.0, 14.0, 16.0, 18.0, 20.0, 22.0]; + var SHUTTERS = [1.0, 1.0 / 2.0, 1.0 / 4.0, 1.0 / 8.0, 1.0 / 15.0, 1.0 / 30.0, 1.0 / 60.0, 1.0 / 125.0, 1.0 / 250.0, 1.0 / 500.0, 1.0 / 1000.0, 1.0 / 2000.0, 1.0 / 4000.0]; + var ISOS = [100.0, 200.0, 400.0, 800.0]; + var v_a = new Vec3(); + var v_b = new Vec3(); + var _tempMat1 = new Mat4(); + var SKYBOX_FLAG = ClearFlagBit.STENCIL << 1; + var correctionMatrices = []; + var Camera$1 = function () { + function Camera(device) { + this.isWindowSize = true; + this.screenScale = void 0; + this.postProcess = null; + this.usePostProcess = false; + this.pipeline = ''; + this._device = void 0; + this._scene = null; + this._node = null; + this._name = null; + this._enabled = false; + this._proj = -1; + this._aspect = void 0; + this._orthoHeight = 10.0; + this._fovAxis = CameraFOVAxis.VERTICAL; + this._fov = toRadian(45); + this._nearClip = 1.0; + this._farClip = 1000.0; + this._clearColor = new Color(0.2, 0.2, 0.2, 1); + this._viewport = new Rect$1(0, 0, 1, 1); + this._orientedViewport = new Rect$1(0, 0, 1, 1); + this._curTransform = SurfaceTransform.IDENTITY; + this._isProjDirty = true; + this._matView = new Mat4(); + this._matProj = new Mat4(); + this._matProjInv = new Mat4(); + this._matViewProj = new Mat4(); + this._matViewProjInv = new Mat4(); + this._frustum = new Frustum(); + this._forward = new Vec3(); + this._position = new Vec3(); + this._priority = 0; + this._aperture = CameraAperture.F16_0; + this._apertureValue = void 0; + this._shutter = CameraShutter.D125; + this._shutterValue = 0.0; + this._iso = CameraISO.ISO100; + this._isoValue = 0.0; + this._window = null; + this._width = 1; + this._height = 1; + this._clearFlag = ClearFlagBit.NONE; + this._clearDepth = 1.0; + this._visibility = CAMERA_DEFAULT_MASK; + this._exposure = 0; + this._clearStencil = 0; + this._geometryRenderer = null; + this._windowId = 0; + this._cameraType = CameraType.DEFAULT; + this._trackingType = TrackingType.NO_TRACKING; + this._usage = CameraUsage.GAME; + this._device = device; + this._apertureValue = FSTOPS[this._aperture]; + this._shutterValue = SHUTTERS[this._shutter]; + this._isoValue = ISOS[this._iso]; + this._aspect = this.screenScale = 1; + this._frustum.accurate = true; + if (!correctionMatrices.length) { + var ySign = device.capabilities.clipSpaceSignY; + correctionMatrices[SurfaceTransform.IDENTITY] = new Mat4(1, 0, 0, 0, 0, ySign); + correctionMatrices[SurfaceTransform.ROTATE_90] = new Mat4(0, 1, 0, 0, -ySign, 0); + correctionMatrices[SurfaceTransform.ROTATE_180] = new Mat4(-1, 0, 0, 0, 0, -ySign); + correctionMatrices[SurfaceTransform.ROTATE_270] = new Mat4(0, -1, 0, 0, ySign, 0); + } + } + var _proto = Camera.prototype; + _proto._updateAspect = function _updateAspect(oriented) { + if (oriented === void 0) { + oriented = true; + } + this._aspect = this.window.width * this._viewport.width / (this.window.height * this._viewport.height); + if (oriented) { + var swapchain = this.window.swapchain; + var orientation = swapchain && swapchain.surfaceTransform || SurfaceTransform.IDENTITY; + if (orientation % 2) this._aspect = 1 / this._aspect; + } + this._isProjDirty = true; + }; + _proto.initialize = function initialize(info) { + if (info.usage !== undefined) { + this._usage = info.usage; + } else { + this.setDefaultUsage(); + } + if (info.trackingType !== undefined) { + this._trackingType = info.trackingType; + } + if (info.cameraType !== undefined) { + this._cameraType = info.cameraType; + } + this.node = info.node; + this._width = 1; + this._height = 1; + this.clearFlag = ClearFlagBit.NONE; + this.clearDepth = 1.0; + this.visibility = CAMERA_DEFAULT_MASK; + this._name = info.name; + this._proj = info.projection; + this._priority = info.priority || 0; + this._aspect = this.screenScale = 1; + this.updateExposure(); + this.changeTargetWindow(info.window); + }; + _proto.destroy = function destroy() { + var _this$_geometryRender; + this._node = null; + this.detachFromScene(); + if (this._window) { + this._window.detachCamera(this); + this.window = null; + } + this._name = null; + (_this$_geometryRender = this._geometryRenderer) === null || _this$_geometryRender === void 0 ? void 0 : _this$_geometryRender.destroy(); + }; + _proto.attachToScene = function attachToScene(scene) { + this._enabled = true; + this._scene = scene; + }; + _proto.detachFromScene = function detachFromScene() { + this._enabled = false; + this._scene = null; + }; + _proto.resize = function resize(width, height) { + if (!this._window) return; + this._width = width; + this._height = height; + this._aspect = width * this._viewport.width / (height * this._viewport.height); + this._isProjDirty = true; + }; + _proto.setFixedSize = function setFixedSize(width, height) { + this._width = width; + this._height = height; + this._updateAspect(); + this.isWindowSize = false; + }; + _proto.syncCameraEditor = function syncCameraEditor(camera) { + }; + _proto.update = function update(forceUpdate) { + var _this$window; + if (forceUpdate === void 0) { + forceUpdate = false; + } + if (!this._node) return; + var viewProjDirty = false; + var xr = globalThis.__globalXR; + if (xr && xr.isWebXR && xr.webXRWindowMap && xr.updateViewport) { + var x = xr.webXRMatProjs ? 1 / xr.webXRMatProjs.length : 1; + var wndXREye = xr.webXRWindowMap.get(this._window); + this.setViewportInOrientedSpace(new Rect$1(x * wndXREye, 0, x, 1)); + } + if (this._node.hasChangedFlags || forceUpdate) { + Mat4.invert(this._matView, this._node.worldMatrix); + this._forward.x = -this._matView.m02; + this._forward.y = -this._matView.m06; + this._forward.z = -this._matView.m10; + Mat4.multiply(this._matView, new Mat4().scale(this._node.worldScale), this._matView); + this._node.getWorldPosition(this._position); + viewProjDirty = true; + } + var swapchain = (_this$window = this.window) === null || _this$window === void 0 ? void 0 : _this$window.swapchain; + var orientation = swapchain && swapchain.surfaceTransform || SurfaceTransform.IDENTITY; + if (this._isProjDirty || this._curTransform !== orientation) { + this._curTransform = orientation; + var projectionSignY = this._device.capabilities.clipSpaceSignY; + if (this._proj === CameraProjection.PERSPECTIVE) { + if (xr && xr.isWebXR && xr.webXRWindowMap && xr.webXRMatProjs) { + var _wndXREye = xr.webXRWindowMap.get(this._window); + this._matProj.set(xr.webXRMatProjs[_wndXREye]); + } else { + Mat4.perspective(this._matProj, this._fov, this._aspect, this._nearClip, this._farClip, this._fovAxis === CameraFOVAxis.VERTICAL, this._device.capabilities.clipSpaceMinZ, projectionSignY, orientation); + } + } else { + var _x = this._orthoHeight * this._aspect; + var y = this._orthoHeight; + Mat4.ortho(this._matProj, -_x, _x, -y, y, this._nearClip, this._farClip, this._device.capabilities.clipSpaceMinZ, projectionSignY, orientation); + } + Mat4.invert(this._matProjInv, this._matProj); + viewProjDirty = true; + this._isProjDirty = false; + } + if (viewProjDirty) { + Mat4.multiply(this._matViewProj, this._matProj, this._matView); + Mat4.invert(this._matViewProjInv, this._matViewProj); + this._frustum.update(this._matViewProj, this._matViewProjInv); + } + }; + _proto.setViewportInOrientedSpace = function setViewportInOrientedSpace(val) { + var _this$window2; + var x = val.x, + width = val.width, + height = val.height; + var y = this._device.capabilities.screenSpaceSignY < 0 ? 1 - val.y - height : val.y; + var swapchain = (_this$window2 = this.window) === null || _this$window2 === void 0 ? void 0 : _this$window2.swapchain; + var orientation = swapchain && swapchain.surfaceTransform || SurfaceTransform.IDENTITY; + switch (orientation) { + case SurfaceTransform.ROTATE_90: + this._viewport.x = 1 - y - height; + this._viewport.y = x; + this._viewport.width = height; + this._viewport.height = width; + break; + case SurfaceTransform.ROTATE_180: + this._viewport.x = 1 - x - width; + this._viewport.y = 1 - y - height; + this._viewport.width = width; + this._viewport.height = height; + break; + case SurfaceTransform.ROTATE_270: + this._viewport.x = y; + this._viewport.y = 1 - x - width; + this._viewport.width = height; + this._viewport.height = width; + break; + case SurfaceTransform.IDENTITY: + this._viewport.x = x; + this._viewport.y = y; + this._viewport.width = width; + this._viewport.height = height; + break; + } + this._orientedViewport.x = x; + this._orientedViewport.y = y; + this._orientedViewport.width = width; + this._orientedViewport.height = height; + this.resize(this.width, this.height); + }; + _proto.initGeometryRenderer = function initGeometryRenderer() { + if (!this._geometryRenderer) { + var _this$_geometryRender2; + this._geometryRenderer = legacyCC.internal.GeometryRenderer ? new legacyCC.internal.GeometryRenderer() : null; + (_this$_geometryRender2 = this._geometryRenderer) === null || _this$_geometryRender2 === void 0 ? void 0 : _this$_geometryRender2.activate(this._device); + } + }; + _proto.changeTargetWindow = function changeTargetWindow(window) { + if (window === void 0) { + window = null; + } + if (this._window) { + this._window.detachCamera(this); + } + var win = window || legacyCC.director.root.mainWindow; + if (win) { + win.attachCamera(this); + this.window = win; + var swapchain = win.swapchain; + var orientation = swapchain && swapchain.surfaceTransform || SurfaceTransform.IDENTITY; + if (orientation % 2) this.resize(win.height, win.width);else this.resize(win.width, win.height); + } + }; + _proto.detachCamera = function detachCamera() { + if (this._window) { + this._window.detachCamera(this); + } + }; + _proto.screenPointToRay = function screenPointToRay(out, x, y) { + if (!this._node) return null; + var width = this.width; + var height = this.height; + var cx = this._orientedViewport.x * width; + var cy = this._orientedViewport.y * height; + var cw = this._orientedViewport.width * width; + var ch = this._orientedViewport.height * height; + var isProj = this._proj === CameraProjection.PERSPECTIVE; + var ySign = this._device.capabilities.clipSpaceSignY; + var preTransform = preTransforms[this._curTransform]; + Vec3.set(v_a, (x - cx) / cw * 2 - 1, (y - cy) / ch * 2 - 1, isProj ? 1 : -1); + var ox = v_a.x, + oy = v_a.y; + v_a.x = ox * preTransform[0] + oy * preTransform[2] * ySign; + v_a.y = ox * preTransform[1] + oy * preTransform[3] * ySign; + Vec3.transformMat4(isProj ? v_a : out.o, v_a, this._matViewProjInv); + if (isProj) { + this._node.getWorldPosition(v_b); + Ray.fromPoints(out, v_b, v_a); + } else { + Vec3.transformQuat(out.d, Vec3.FORWARD, this._node.worldRotation); + } + return out; + }; + _proto.screenToWorld = function screenToWorld(out, screenPos) { + var width = this.width; + var height = this.height; + var cx = this._orientedViewport.x * width; + var cy = this._orientedViewport.y * height; + var cw = this._orientedViewport.width * width; + var ch = this._orientedViewport.height * height; + var ySign = this._device.capabilities.clipSpaceSignY; + var preTransform = preTransforms[this._curTransform]; + if (this._proj === CameraProjection.PERSPECTIVE) { + Vec3.set(out, (screenPos.x - cx) / cw * 2 - 1, (screenPos.y - cy) / ch * 2 - 1, 1.0); + var x = out.x, + y = out.y; + out.x = x * preTransform[0] + y * preTransform[2] * ySign; + out.y = x * preTransform[1] + y * preTransform[3] * ySign; + Vec3.transformMat4(out, out, this._matViewProjInv); + if (this._node) { + this._node.getWorldPosition(v_a); + } + Vec3.lerp(out, v_a, out, lerp(this._nearClip / this._farClip, 1, screenPos.z)); + } else { + Vec3.set(out, (screenPos.x - cx) / cw * 2 - 1, (screenPos.y - cy) / ch * 2 - 1, screenPos.z * 2 - 1); + var _x2 = out.x, + _y = out.y; + out.x = _x2 * preTransform[0] + _y * preTransform[2] * ySign; + out.y = _x2 * preTransform[1] + _y * preTransform[3] * ySign; + Vec3.transformMat4(out, out, this._matViewProjInv); + } + return out; + }; + _proto.worldToScreen = function worldToScreen(out, worldPos) { + var ySign = this._device.capabilities.clipSpaceSignY; + var preTransform = preTransforms[this._curTransform]; + Vec3.transformMat4(out, worldPos, this._matViewProj); + var x = out.x, + y = out.y; + out.x = x * preTransform[0] + y * preTransform[2] * ySign; + out.y = x * preTransform[1] + y * preTransform[3] * ySign; + var width = this.width; + var height = this.height; + var cx = this._orientedViewport.x * width; + var cy = this._orientedViewport.y * height; + var cw = this._orientedViewport.width * width; + var ch = this._orientedViewport.height * height; + out.x = cx + (out.x + 1) * 0.5 * cw; + out.y = cy + (out.y + 1) * 0.5 * ch; + out.z = out.z * 0.5 + 0.5; + return out; + }; + _proto.worldMatrixToScreen = function worldMatrixToScreen(out, worldMatrix, width, height) { + Mat4.multiply(out, this._matViewProj, worldMatrix); + Mat4.multiply(out, correctionMatrices[this._curTransform], out); + var halfWidth = width / 2; + var halfHeight = height / 2; + Mat4.identity(_tempMat1); + Mat4.transform(_tempMat1, _tempMat1, Vec3.set(v_a, halfWidth, halfHeight, 0)); + Mat4.scale(_tempMat1, _tempMat1, Vec3.set(v_a, halfWidth, halfHeight, 1)); + Mat4.multiply(out, _tempMat1, out); + return out; + }; + _proto.calculateObliqueMat = function calculateObliqueMat(viewSpacePlane) { + var clipFar = new Vec4(Math.sign(viewSpacePlane.x), Math.sign(viewSpacePlane.y), 1.0, 1.0); + var viewFar = clipFar.transformMat4(this._matProjInv); + var m4 = new Vec4(this._matProj.m03, this._matProj.m07, this._matProj.m11, this._matProj.m15); + var scale = 2.0 / Vec4.dot(viewSpacePlane, viewFar); + var newViewSpaceNearPlane = viewSpacePlane.multiplyScalar(scale); + var m3 = newViewSpaceNearPlane.subtract(m4); + this._matProj.m02 = m3.x; + this._matProj.m06 = m3.y; + this._matProj.m10 = m3.z; + this._matProj.m14 = m3.w; + }; + _proto.getClipSpaceMinz = function getClipSpaceMinz() { + return this._device.capabilities.clipSpaceMinZ; + }; + _proto.setExposure = function setExposure(ev100) { + this._exposure = 0.833333 / Math.pow(2.0, ev100); + }; + _proto.updateExposure = function updateExposure() { + var ev100 = Math.log2(this._apertureValue * this._apertureValue / this._shutterValue * 100.0 / this._isoValue); + this.setExposure(ev100); + }; + _proto.setDefaultUsage = function setDefaultUsage() { + { + this._usage = CameraUsage.GAME; + } + }; + _createClass(Camera, [{ + key: "name", + get: function get() { + return this._name; + } + }, { + key: "scene", + get: function get() { + return this._scene; + } + }, { + key: "node", + get: function get() { + return this._node; + }, + set: function set(val) { + this._node = val; + } + }, { + key: "systemWindowId", + get: function get() { + return this._windowId; + } + }, { + key: "window", + get: function get() { + return this._window; + }, + set: function set(val) { + this._window = val; + } + }, { + key: "enabled", + get: function get() { + return this._enabled; + }, + set: function set(val) { + this._enabled = val; + } + }, { + key: "visibility", + get: function get() { + return this._visibility; + }, + set: function set(vis) { + this._visibility = vis; + } + }, { + key: "priority", + get: function get() { + return this._priority; + }, + set: function set(val) { + this._priority = val; + } + }, { + key: "width", + get: function get() { + return this._width; + } + }, { + key: "height", + get: function get() { + return this._height; + } + }, { + key: "position", + get: function get() { + return this._position; + }, + set: function set(val) { + this._position = val; + } + }, { + key: "forward", + get: function get() { + return this._forward; + }, + set: function set(val) { + this._forward = val; + } + }, { + key: "aperture", + get: function get() { + return this._aperture; + }, + set: function set(val) { + this._aperture = val; + this._apertureValue = FSTOPS[this._aperture]; + this.updateExposure(); + } + }, { + key: "apertureValue", + get: function get() { + return this._apertureValue; + } + }, { + key: "shutter", + get: function get() { + return this._shutter; + }, + set: function set(val) { + this._shutter = val; + this._shutterValue = SHUTTERS[this._shutter]; + this.updateExposure(); + } + }, { + key: "shutterValue", + get: function get() { + return this._shutterValue; + } + }, { + key: "iso", + get: function get() { + return this._iso; + }, + set: function set(val) { + this._iso = val; + this._isoValue = ISOS[this._iso]; + this.updateExposure(); + } + }, { + key: "isoValue", + get: function get() { + return this._isoValue; + } + }, { + key: "exposure", + get: function get() { + return this._exposure; + } + }, { + key: "clearFlag", + get: function get() { + return this._clearFlag; + }, + set: function set(flag) { + this._clearFlag = flag; + } + }, { + key: "clearColor", + get: function get() { + return this._clearColor; + }, + set: function set(val) { + this._clearColor.x = val.x; + this._clearColor.y = val.y; + this._clearColor.z = val.z; + this._clearColor.w = val.w; + } + }, { + key: "clearDepth", + get: function get() { + return this._clearDepth; + }, + set: function set(depth) { + this._clearDepth = depth; + } + }, { + key: "clearStencil", + get: function get() { + return this._clearStencil; + }, + set: function set(stencil) { + this._clearStencil = stencil; + } + }, { + key: "projectionType", + get: function get() { + return this._proj; + }, + set: function set(val) { + this._proj = val; + this._isProjDirty = true; + } + }, { + key: "aspect", + get: function get() { + return this._aspect; + } + }, { + key: "orthoHeight", + get: function get() { + return this._orthoHeight; + }, + set: function set(val) { + this._orthoHeight = val; + this._isProjDirty = true; + } + }, { + key: "fovAxis", + get: function get() { + return this._fovAxis; + }, + set: function set(axis) { + this._fovAxis = axis; + this._isProjDirty = true; + } + }, { + key: "fov", + get: function get() { + return this._fov; + }, + set: function set(fov) { + this._fov = fov; + this._isProjDirty = true; + } + }, { + key: "nearClip", + get: function get() { + return this._nearClip; + }, + set: function set(nearClip) { + this._nearClip = nearClip; + this._isProjDirty = true; + } + }, { + key: "farClip", + get: function get() { + return this._farClip; + }, + set: function set(farClip) { + this._farClip = farClip; + this._isProjDirty = true; + } + }, { + key: "viewport", + get: function get() { + return this._viewport; + }, + set: function set(val) { + warnID(8302); + this.setViewportInOrientedSpace(val); + } + }, { + key: "frustum", + get: function get() { + return this._frustum; + }, + set: function set(val) { + this._frustum = val; + } + }, { + key: "matView", + get: function get() { + return this._matView; + } + }, { + key: "matProj", + get: function get() { + return this._matProj; + } + }, { + key: "matProjInv", + get: function get() { + return this._matProjInv; + } + }, { + key: "matViewProj", + get: function get() { + return this._matViewProj; + } + }, { + key: "matViewProjInv", + get: function get() { + return this._matViewProjInv; + } + }, { + key: "surfaceTransform", + get: function get() { + return this._curTransform; + } + }, { + key: "geometryRenderer", + get: function get() { + return this._geometryRenderer; + } + }, { + key: "cameraType", + get: function get() { + return this._cameraType; + }, + set: function set(type) { + this._cameraType = type; + } + }, { + key: "trackingType", + get: function get() { + return this._trackingType; + }, + set: function set(type) { + this._trackingType = type; + } + }, { + key: "cameraUsage", + get: function get() { + return this._usage; + }, + set: function set(usage) { + this._usage = usage; + } + }], [{ + key: "standardExposureValue", + get: function get() { + return 1.0 / 38400.0; + } + }, { + key: "standardLightMeterScale", + get: function get() { + return 10000.0; + } + }]); + return Camera; + }(); + + var _tempVec3$4 = new Vec3(); + var _sphere = Sphere.create(0, 0, 0, 1); + var _rangedDirLightBoundingBox$3 = new AABB(0.0, 0.0, 0.0, 0.5, 0.5, 0.5); + var _tmpBoundingBox$3 = new AABB(); + var roPool = new Pool(function () { + return { + model: null, + depth: 0 + }; + }, 128); + function getRenderObject(model, camera) { + var depth = 0; + if (model.node) { + Vec3.subtract(_tempVec3$4, model.node.worldPosition, camera.position); + depth = Vec3.dot(_tempVec3$4, camera.forward); + } + var ro = roPool.alloc(); + ro.model = model; + ro.depth = depth; + return ro; + } + function validPunctualLightsCulling$1(pipeline, camera) { + var sceneData = pipeline.pipelineSceneData; + var validPunctualLights = sceneData.validPunctualLights; + validPunctualLights.length = 0; + var _ref = camera.scene, + spotLights = _ref.spotLights; + for (var i = 0; i < spotLights.length; i++) { + var light = spotLights[i]; + if (light.baked && !camera.node.scene.globals.disableLightmap) { + continue; + } + Sphere.set(_sphere, light.position.x, light.position.y, light.position.z, light.range); + if (intersect.sphereFrustum(_sphere, camera.frustum)) { + validPunctualLights.push(light); + } + } + var _ref2 = camera.scene, + sphereLights = _ref2.sphereLights; + for (var _i = 0; _i < sphereLights.length; _i++) { + var _light = sphereLights[_i]; + if (_light.baked && !camera.node.scene.globals.disableLightmap) { + continue; + } + Sphere.set(_sphere, _light.position.x, _light.position.y, _light.position.z, _light.range); + if (intersect.sphereFrustum(_sphere, camera.frustum)) { + validPunctualLights.push(_light); + } + } + var _ref3 = camera.scene, + pointLights = _ref3.pointLights; + for (var _i2 = 0; _i2 < pointLights.length; _i2++) { + var _light2 = pointLights[_i2]; + if (_light2.baked) { + continue; + } + Sphere.set(_sphere, _light2.position.x, _light2.position.y, _light2.position.z, _light2.range); + if (intersect.sphereFrustum(_sphere, camera.frustum)) { + validPunctualLights.push(_light2); + } + } + var _ref4 = camera.scene, + rangedDirLights = _ref4.rangedDirLights; + for (var _i3 = 0; _i3 < rangedDirLights.length; _i3++) { + var _light3 = rangedDirLights[_i3]; + AABB.transform(_tmpBoundingBox$3, _rangedDirLightBoundingBox$3, _light3.node.getWorldMatrix()); + if (intersect.aabbFrustum(_tmpBoundingBox$3, camera.frustum)) { + validPunctualLights.push(_light3); + } + } + sceneData.validPunctualLights = validPunctualLights; + } + function shadowCulling(camera, sceneData, layer) { + var scene = camera.scene; + var mainLight = scene.mainLight; + var csmLayers = sceneData.csmLayers; + var csmLayerObjects = csmLayers.layerObjects; + var dirLightFrustum = layer.validFrustum; + var dirShadowObjects = layer.shadowObjects; + dirShadowObjects.length = 0; + var visibility = camera.visibility; + for (var i = csmLayerObjects.length - 1; i >= 0; i--) { + var obj = csmLayerObjects.array[i]; + if (!obj) { + csmLayerObjects.fastRemove(i); + continue; + } + var model = obj.model; + if (!model || !model.enabled || !model.node) { + csmLayerObjects.fastRemove(i); + continue; + } + if ((visibility & model.node.layer) !== model.node.layer && !(visibility & model.visFlags)) { + csmLayerObjects.fastRemove(i); + continue; + } + if (!model.worldBounds || !model.castShadow) { + csmLayerObjects.fastRemove(i); + continue; + } + var accurate = intersect.aabbFrustum(model.worldBounds, dirLightFrustum); + if (!accurate) { + continue; + } + dirShadowObjects.push(obj); + if (layer.level < mainLight.csmLevel) { + if (mainLight.csmOptimizationMode === CSMOptimizationMode.RemoveDuplicates && intersect.aabbFrustumCompletelyInside(model.worldBounds, dirLightFrustum)) { + csmLayerObjects.fastRemove(i); + } + } + } + } + function sceneCulling(pipeline, camera) { + var scene = camera.scene; + var mainLight = scene.mainLight; + var sceneData = pipeline.pipelineSceneData; + var shadows = sceneData.shadows; + var skybox = sceneData.skybox; + var csmLayers = sceneData.csmLayers; + var renderObjects = sceneData.renderObjects; + roPool.freeArray(renderObjects); + renderObjects.length = 0; + var castShadowObjects = csmLayers.castShadowObjects; + castShadowObjects.length = 0; + var csmLayerObjects = csmLayers.layerObjects; + csmLayerObjects.clear(); + if (shadows.enabled) { + pipeline.pipelineUBO.updateShadowUBORange(UBOShadow.SHADOW_COLOR_OFFSET, shadows.shadowColor); + if (shadows.type === ShadowType.ShadowMap) { + if (mainLight && mainLight.node) { + csmLayers.update(sceneData, camera); + } + } + } + if (camera.clearFlag & SKYBOX_FLAG) { + if (skybox.enabled && skybox.model) { + renderObjects.push(getRenderObject(skybox.model, camera)); + } else if (camera.cameraUsage !== CameraUsage.EDITOR && camera.cameraUsage !== CameraUsage.SCENE_VIEW) { + legacyCC.warnID(15100, camera.name); + } + } + var models = scene.models; + var visibility = camera.visibility; + function enqueueRenderObject(model) { + if (model.enabled) { + if (scene.isCulledByLod(camera, model)) { + return; + } + if (model.castShadow) { + castShadowObjects.push(getRenderObject(model, camera)); + csmLayerObjects.push(getRenderObject(model, camera)); + } + if (model.node && (visibility & model.node.layer) === model.node.layer || visibility & model.visFlags) { + if (model.worldBounds && !intersect.aabbFrustum(model.worldBounds, camera.frustum)) { + return; + } + renderObjects.push(getRenderObject(model, camera)); + } + } + } + for (var i = 0; i < models.length; i++) { + enqueueRenderObject(models[i]); + } + } + + var _dec$1Y, _class$1V; + var _colorAttachment = new ColorAttachment(); + _colorAttachment.format = Format.RGBA8; + var _depthStencilAttachment = new DepthStencilAttachment(); + _depthStencilAttachment.format = Format.DEPTH_STENCIL; + var passInfo = new RenderPassInfo([_colorAttachment], _depthStencilAttachment); + var _windowInfo = { + width: 1, + height: 1, + renderPassInfo: passInfo + }; + var RenderTexture = exports('d$', (_dec$1Y = ccclass$t('cc.RenderTexture'), _dec$1Y(_class$1V = function (_TextureBase) { + _inheritsLoose(RenderTexture, _TextureBase); + function RenderTexture() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _TextureBase.call.apply(_TextureBase, [this].concat(args)) || this; + _this._window = null; + return _this; + } + var _proto = RenderTexture.prototype; + _proto.initialize = function initialize(info) { + this._name = info.name || ''; + this._width = info.width; + this._height = info.height; + this._initWindow(info); + }; + _proto.reset = function reset(info) { + this.initialize(info); + }; + _proto.destroy = function destroy() { + if (this._window) { + var root = legacyCC.director.root; + root === null || root === void 0 ? void 0 : root.destroyWindow(this._window); + this._window = null; + } + return _TextureBase.prototype.destroy.call(this); + }; + _proto.resize = function resize(width, height) { + this._width = Math.floor(clamp$1(width, 1, 2048)); + this._height = Math.floor(clamp$1(height, 1, 2048)); + if (this._window) { + this._window.resize(this._width, this._height); + } + this.emit('resize', this._window); + }; + _proto._serialize = function _serialize(ctxForExporting) { + return {}; + }; + _proto._deserialize = function _deserialize(serializedData, handle) { + var data = serializedData; + this._width = data.w; + this._height = data.h; + this._name = data.n; + _TextureBase.prototype._deserialize.call(this, data.base, handle); + }; + _proto.getGFXTexture = function getGFXTexture() { + return this._window && this._window.framebuffer.colorTextures[0]; + }; + _proto.onLoaded = function onLoaded() { + this._initWindow(); + }; + _proto._initWindow = function _initWindow(info) { + var root = legacyCC.director.root; + _windowInfo.title = this._name; + _windowInfo.width = this._width; + _windowInfo.height = this._height; + _windowInfo.renderPassInfo = info && info.passInfo ? info.passInfo : passInfo; + _windowInfo.externalResLow = info && info.externalResLow ? info.externalResLow : 0; + _windowInfo.externalResHigh = info && info.externalResHigh ? info.externalResHigh : 0; + _windowInfo.externalFlag = info && info.externalFlag ? info.externalFlag : TextureFlagBit.NONE; + _colorAttachment.barrier = deviceManager.gfxDevice.getGeneralBarrier(new GeneralBarrierInfo(AccessFlagBit.FRAGMENT_SHADER_READ_TEXTURE, AccessFlagBit.FRAGMENT_SHADER_READ_TEXTURE)); + if (this._window) { + this._window.destroy(); + this._window.initialize(deviceManager.gfxDevice, _windowInfo); + } else { + this._window = root.createWindow(_windowInfo); + } + }; + _proto.initDefault = function initDefault(uuid) { + _TextureBase.prototype.initDefault.call(this, uuid); + this._width = this._height = 1; + this._initWindow(); + }; + _proto.validate = function validate() { + return this.width >= 1 && this.width <= 2048 && this.height >= 1 && this.height <= 2048; + }; + _proto.readPixels = function readPixels(x, y, width, height, buffer) { + if (x === void 0) { + x = 0; + } + if (y === void 0) { + y = 0; + } + width = width || this.width; + height = height || this.height; + var gfxTexture = this.getGFXTexture(); + if (!gfxTexture) { + errorID(7606); + return null; + } + var needSize = 4 * width * height; + if (buffer === undefined) { + buffer = new Uint8Array(needSize); + } else if (buffer.length < needSize) { + errorID(7607, needSize); + return null; + } + var gfxDevice = this._getGFXDevice(); + var bufferViews = []; + var regions = []; + var region0 = new BufferTextureCopy(); + region0.texOffset.x = x; + region0.texOffset.y = y; + region0.texExtent.width = width; + region0.texExtent.height = height; + regions.push(region0); + bufferViews.push(buffer); + gfxDevice === null || gfxDevice === void 0 ? void 0 : gfxDevice.copyTextureToBuffers(gfxTexture, bufferViews, regions); + return buffer; + }; + _createClass(RenderTexture, [{ + key: "window", + get: function get() { + return this._window; + } + }]); + return RenderTexture; + }(TextureBase)) || _class$1V)); + legacyCC.RenderTexture = RenderTexture; + + var ProbeClearFlag; + (function (ProbeClearFlag) { + ProbeClearFlag[ProbeClearFlag["SKYBOX"] = SKYBOX_FLAG | ClearFlagBit.DEPTH_STENCIL] = "SKYBOX"; + ProbeClearFlag[ProbeClearFlag["SOLID_COLOR"] = ClearFlagBit.ALL] = "SOLID_COLOR"; + })(ProbeClearFlag || (ProbeClearFlag = {})); + var ProbeType; + (function (ProbeType) { + ProbeType[ProbeType["CUBE"] = 0] = "CUBE"; + ProbeType[ProbeType["PLANAR"] = 1] = "PLANAR"; + })(ProbeType || (ProbeType = {})); + var cameraDir = [new Vec3(0, -90, 0), new Vec3(0, 90, 0), new Vec3(90, 0, 0), new Vec3(-90, 0, 0), new Vec3(0, 0, 0), new Vec3(0, 180, 0)]; + var ReflectionProbe = function () { + function ReflectionProbe(id) { + this.bakedCubeTextures = []; + this.realtimePlanarTexture = null; + this._resolution = 256; + this._clearFlag = ProbeClearFlag.SKYBOX; + this._backgroundColor = new Color$1(0, 0, 0, 255); + this._visibility = CAMERA_DEFAULT_MASK; + this._probeType = ProbeType.CUBE; + this._cubemap = null; + this._size = new Vec3(1, 1, 1); + this._camera = null; + this._probeId = 0; + this._needRefresh = false; + this._needRender = false; + this._node = null; + this._cameraNode = null; + this._boundingBox = null; + this._cameraWorldPos = new Vec3(); + this._cameraWorldRotation = new Quat(); + this._forward = new Vec3(); + this._up = new Vec3(); + this._previewSphere = null; + this._previewPlane = null; + this._probeId = id; + } + var _proto = ReflectionProbe.prototype; + _proto.initialize = function initialize(node, cameraNode) { + this._node = node; + this._cameraNode = cameraNode; + var pos = this.node.getWorldPosition(); + this._boundingBox = AABB.create(pos.x, pos.y, pos.z, this._size.x, this._size.y, this._size.z); + this._createCamera(cameraNode); + }; + _proto.initBakedTextures = function initBakedTextures() { + if (this.bakedCubeTextures.length === 0) { + for (var i = 0; i < 6; i++) { + var renderTexture = this._createTargetTexture(this._resolution, this._resolution); + this.bakedCubeTextures.push(renderTexture); + } + } + }; + _proto.captureCubemap = function captureCubemap() { + this.initBakedTextures(); + this._resetCameraParams(); + this._needRender = true; + }; + _proto.renderPlanarReflection = function renderPlanarReflection(sourceCamera) { + if (!sourceCamera) return; + if (!this.realtimePlanarTexture) { + var canvasSize = legacyCC.view.getDesignResolutionSize(); + this.realtimePlanarTexture = this._createTargetTexture(canvasSize.width, canvasSize.height); + legacyCC.internal.reflectionProbeManager.updatePlanarMap(this, this.realtimePlanarTexture.getGFXTexture()); + } + this._syncCameraParams(sourceCamera); + this._transformReflectionCamera(sourceCamera); + this._needRender = true; + }; + _proto.switchProbeType = function switchProbeType(type, sourceCamera) { + if (type === ProbeType.CUBE) { + this._needRender = false; + } else if (sourceCamera !== null) { + this.renderPlanarReflection(sourceCamera); + } + }; + _proto.getProbeId = function getProbeId() { + return this._probeId; + }; + _proto.updateProbeId = function updateProbeId(id) { + this._probeId = id; + }; + _proto.renderArea = function renderArea() { + if (this._probeType === ProbeType.PLANAR) { + return new Vec2(this.realtimePlanarTexture.width, this.realtimePlanarTexture.height); + } else { + return new Vec2(this.resolution, this.resolution); + } + }; + _proto.isFinishedRendering = function isFinishedRendering() { + return true; + }; + _proto.validate = function validate() { + return this.cubemap !== null; + }; + _proto.destroy = function destroy() { + if (this._camera) { + this._camera.destroy(); + this._camera = null; + } + for (var i = 0; i < this.bakedCubeTextures.length; i++) { + this.bakedCubeTextures[i].destroy(); + } + this.bakedCubeTextures = []; + if (this.realtimePlanarTexture) { + this.realtimePlanarTexture.destroy(); + this.realtimePlanarTexture = null; + } + }; + _proto.enable = function enable() {}; + _proto.disable = function disable() {}; + _proto.updateCameraDir = function updateCameraDir(faceIdx) { + this.cameraNode.setRotationFromEuler(cameraDir[faceIdx]); + this.camera.update(true); + }; + _proto.updateBoundingBox = function updateBoundingBox() { + if (this.node) { + var pos = this.node.getWorldPosition(); + AABB.set(this._boundingBox, pos.x, pos.y, pos.z, this._size.x, this._size.y, this._size.z); + } + }; + _proto.hasFrameBuffer = function hasFrameBuffer(framebuffer) { + if (this.probeType === ProbeType.PLANAR) { + var _this$realtimePlanarT; + if (!this.realtimePlanarTexture) return false; + if (((_this$realtimePlanarT = this.realtimePlanarTexture.window) === null || _this$realtimePlanarT === void 0 ? void 0 : _this$realtimePlanarT.framebuffer) === framebuffer) { + return true; + } + } else { + if (this.bakedCubeTextures.length === 0) return false; + for (var i = 0; i < this.bakedCubeTextures.length; i++) { + var _rt$window; + var rt = this.bakedCubeTextures[i]; + if (((_rt$window = rt.window) === null || _rt$window === void 0 ? void 0 : _rt$window.framebuffer) === framebuffer) { + return true; + } + } + } + return false; + }; + _proto.isRGBE = function isRGBE() { + return true; + }; + _proto._syncCameraParams = function _syncCameraParams(camera) { + this.camera.projectionType = camera.projectionType; + this.camera.orthoHeight = camera.orthoHeight; + this.camera.nearClip = camera.nearClip; + this.camera.farClip = camera.farClip; + this.camera.fov = camera.fov; + this.camera.clearFlag = camera.clearFlag; + this.camera.clearColor = camera.clearColor; + this.camera.priority = camera.priority - 1; + this.camera.resize(camera.width, camera.height); + }; + _proto._createCamera = function _createCamera(cameraNode) { + var root = legacyCC.director.root; + if (!this._camera) { + this._camera = root.createCamera(); + if (!this._camera) return null; + this._camera.initialize({ + name: cameraNode.name, + node: cameraNode, + projection: CameraProjection.PERSPECTIVE, + window: root && root.tempWindow, + priority: 0, + cameraType: CameraType.DEFAULT, + trackingType: TrackingType.NO_TRACKING + }); + } + this._camera.setViewportInOrientedSpace(new Rect$1(0, 0, 1, 1)); + this._camera.fovAxis = CameraFOVAxis.VERTICAL; + this._camera.fov = toRadian(90); + this._camera.orthoHeight = 10; + this._camera.nearClip = 1; + this._camera.farClip = 1000; + this._camera.clearColor = this._backgroundColor; + this._camera.clearDepth = 1.0; + this._camera.clearStencil = 0.0; + this._camera.clearFlag = this._clearFlag; + this._camera.visibility = this._visibility; + this._camera.aperture = CameraAperture.F16_0; + this._camera.shutter = CameraShutter.D125; + this._camera.iso = CameraISO.ISO100; + return this._camera; + }; + _proto._resetCameraParams = function _resetCameraParams() { + this.camera.projectionType = CameraProjection.PERSPECTIVE; + this.camera.orthoHeight = 10; + this.camera.nearClip = 1; + this.camera.farClip = 1000; + this.camera.fov = toRadian(90); + this.camera.priority = 0; + this.camera.resize(this.resolution, this.resolution); + this.camera.visibility = this._visibility; + this.camera.clearFlag = this._clearFlag; + this.camera.clearColor = this._backgroundColor; + this.cameraNode.worldPosition = this.node.worldPosition; + this.cameraNode.worldRotation = this.node.worldRotation; + this.camera.update(true); + }; + _proto._createTargetTexture = function _createTargetTexture(width, height) { + var rt = new RenderTexture(); + rt.reset({ + width: width, + height: height + }); + return rt; + }; + _proto._transformReflectionCamera = function _transformReflectionCamera(sourceCamera) { + var offset = Vec3.dot(this.node.worldPosition, this.node.up); + this._reflect(this._cameraWorldPos, sourceCamera.node.worldPosition, this.node.up, offset); + this.cameraNode.worldPosition = this._cameraWorldPos; + Vec3.transformQuat(this._forward, Vec3.FORWARD, sourceCamera.node.worldRotation); + this._reflect(this._forward, this._forward, this.node.up, 0); + this._forward.normalize(); + this._forward.negative(); + Vec3.transformQuat(this._up, Vec3.UP, sourceCamera.node.worldRotation); + this._reflect(this._up, this._up, this.node.up, 0); + this._up.normalize(); + Quat.fromViewUp(this._cameraWorldRotation, this._forward, this._up); + this.cameraNode.worldRotation = this._cameraWorldRotation; + this.camera.update(true); + var viewSpaceProbe = new Vec4(this.node.up.x, this.node.up.y, this.node.up.z, -Vec3.dot(this.node.up, this.node.worldPosition)); + viewSpaceProbe.transformMat4(this.camera.matView.clone().invert().transpose()); + this.camera.calculateObliqueMat(viewSpaceProbe); + }; + _proto._reflect = function _reflect(out, point, normal, offset) { + var n = Vec3.clone(normal); + n.normalize(); + var dist = Vec3.dot(n, point) - offset; + n.multiplyScalar(2.0 * dist); + Vec3.subtract(out, point, n); + return out; + }; + _createClass(ReflectionProbe, [{ + key: "probeType", + get: function get() { + return this._probeType; + }, + set: function set(value) { + this._probeType = value; + } + }, { + key: "resolution", + get: function get() { + return this._resolution; + }, + set: function set(value) { + if (value !== this._resolution) { + this.bakedCubeTextures.forEach(function (rt, idx) { + rt.resize(value, value); + }); + } + this._resolution = value; + } + }, { + key: "clearFlag", + get: function get() { + return this._clearFlag; + }, + set: function set(value) { + this._clearFlag = value; + this.camera.clearFlag = this._clearFlag; + } + }, { + key: "backgroundColor", + get: function get() { + return this._backgroundColor; + }, + set: function set(val) { + this._backgroundColor = val; + this.camera.clearColor = this._backgroundColor; + } + }, { + key: "visibility", + get: function get() { + return this._visibility; + }, + set: function set(val) { + this._visibility = val; + this._camera.visibility = this._visibility; + } + }, { + key: "size", + get: function get() { + return this._size; + }, + set: function set(value) { + this._size.set(value); + var pos = this.node.getWorldPosition(); + AABB.set(this._boundingBox, pos.x, pos.y, pos.z, this._size.x, this._size.y, this._size.z); + } + }, { + key: "cubemap", + get: function get() { + return this._cubemap; + }, + set: function set(val) { + this._cubemap = val; + } + }, { + key: "node", + get: function get() { + return this._node; + } + }, { + key: "camera", + get: function get() { + return this._camera; + } + }, { + key: "needRefresh", + get: function get() { + return this._needRefresh; + }, + set: function set(value) { + this._needRefresh = value; + } + }, { + key: "needRender", + get: function get() { + return this._needRender; + }, + set: function set(value) { + this._needRender = value; + } + }, { + key: "boundingBox", + get: function get() { + return this._boundingBox; + } + }, { + key: "cameraNode", + get: function get() { + return this._cameraNode; + }, + set: function set(node) { + this._cameraNode = node; + } + }, { + key: "previewSphere", + get: function get() { + return this._previewSphere; + }, + set: function set(val) { + this._previewSphere = val; + } + }, { + key: "previewPlane", + get: function get() { + return this._previewPlane; + }, + set: function set(val) { + this._previewPlane = val; + } + }]); + return ReflectionProbe; + }(); + + function ColorTemperatureToRGB(rgb, kelvin) { + if (kelvin < 1000.0) { + kelvin = 1000.0; + } else if (kelvin > 15000.0) { + kelvin = 15000.0; + } + var kSqr = kelvin * kelvin; + var u = (0.860117757 + 1.54118254e-4 * kelvin + 1.28641212e-7 * kSqr) / (1.0 + 8.42420235e-4 * kelvin + 7.08145163e-7 * kSqr); + var v = (0.317398726 + 4.22806245e-5 * kelvin + 4.20481691e-8 * kSqr) / (1.0 - 2.89741816e-5 * kelvin + 1.61456053e-7 * kSqr); + var d = 2.0 * u - 8.0 * v + 4.0; + var x = 3.0 * u / d; + var y = 2.0 * v / d; + var z = 1.0 - x - y; + var X = 1.0 / y * x; + var Z = 1.0 / y * z; + rgb.x = 3.2404542 * X + -1.5371385 + -0.4985314 * Z; + rgb.y = -0.9692660 * X + 1.8760108 + 0.0415560 * Z; + rgb.z = 0.0556434 * X + -0.2040259 + 1.0572252 * Z; + } + var LightType; + (function (LightType) { + LightType[LightType["DIRECTIONAL"] = 0] = "DIRECTIONAL"; + LightType[LightType["SPHERE"] = 1] = "SPHERE"; + LightType[LightType["SPOT"] = 2] = "SPOT"; + LightType[LightType["POINT"] = 3] = "POINT"; + LightType[LightType["RANGED_DIRECTIONAL"] = 4] = "RANGED_DIRECTIONAL"; + LightType[LightType["UNKNOWN"] = 5] = "UNKNOWN"; + })(LightType || (LightType = {})); + var nt2lm = function nt2lm(size) { + return 4 * Math.PI * Math.PI * size * size; + }; + var Light = function () { + function Light() { + this._baked = false; + this._color = new Vec3(1, 1, 1); + this._colorTemp = 6550.0; + this._colorTempRGB = new Vec3(1, 1, 1); + this._finalColor = new Vec3(1, 1, 1); + this._scene = null; + this._node = null; + this._name = null; + this._useColorTemperature = false; + this._type = LightType.UNKNOWN; + this._visibility = CAMERA_DEFAULT_MASK; + } + var _proto = Light.prototype; + _proto.initialize = function initialize() { + this.color = new Vec3(1, 1, 1); + this.colorTemperature = 6550.0; + }; + _proto.attachToScene = function attachToScene(scene) { + this._scene = scene; + }; + _proto.detachFromScene = function detachFromScene() { + this._scene = null; + }; + _proto.destroy = function destroy() { + this._name = null; + this._node = null; + }; + _proto.update = function update() {}; + _createClass(Light, [{ + key: "baked", + get: function get() { + return this._baked; + }, + set: function set(val) { + this._baked = val; + } + }, { + key: "color", + get: function get() { + return this._color; + }, + set: function set(color) { + this._color.set(color); + if (this._useColorTemperature) { + Vec3.multiply(this._finalColor, this._color, this._colorTempRGB); + } + } + }, { + key: "useColorTemperature", + get: function get() { + return this._useColorTemperature; + }, + set: function set(enable) { + this._useColorTemperature = enable; + if (enable) { + Vec3.multiply(this._finalColor, this._color, this._colorTempRGB); + } + } + }, { + key: "colorTemperature", + get: function get() { + return this._colorTemp; + }, + set: function set(val) { + this._colorTemp = val; + ColorTemperatureToRGB(this._colorTempRGB, this._colorTemp); + if (this._useColorTemperature) { + Vec3.multiply(this._finalColor, this._color, this._colorTempRGB); + } + } + }, { + key: "colorTemperatureRGB", + get: function get() { + return this._colorTempRGB; + } + }, { + key: "finalColor", + get: function get() { + return this._finalColor; + } + }, { + key: "visibility", + get: function get() { + return this._visibility; + }, + set: function set(vis) { + this._visibility = vis; + } + }, { + key: "node", + get: function get() { + return this._node; + }, + set: function set(n) { + this._node = n; + if (this._node) { + this._node.hasChangedFlags |= TransformBit.ROTATION; + } + } + }, { + key: "type", + get: function get() { + return this._type; + } + }, { + key: "name", + get: function get() { + return this._name; + }, + set: function set(n) { + this._name = n; + } + }, { + key: "scene", + get: function get() { + return this._scene; + } + }]); + return Light; + }(); + + var UpdateFrequency; + (function (UpdateFrequency) { + UpdateFrequency[UpdateFrequency["PER_INSTANCE"] = 0] = "PER_INSTANCE"; + UpdateFrequency[UpdateFrequency["PER_BATCH"] = 1] = "PER_BATCH"; + UpdateFrequency[UpdateFrequency["PER_PHASE"] = 2] = "PER_PHASE"; + UpdateFrequency[UpdateFrequency["PER_PASS"] = 3] = "PER_PASS"; + UpdateFrequency[UpdateFrequency["COUNT"] = 4] = "COUNT"; + })(UpdateFrequency || (UpdateFrequency = {})); + var ParameterType; + (function (ParameterType) { + ParameterType[ParameterType["CONSTANTS"] = 0] = "CONSTANTS"; + ParameterType[ParameterType["CBV"] = 1] = "CBV"; + ParameterType[ParameterType["UAV"] = 2] = "UAV"; + ParameterType[ParameterType["SRV"] = 3] = "SRV"; + ParameterType[ParameterType["TABLE"] = 4] = "TABLE"; + ParameterType[ParameterType["SSV"] = 5] = "SSV"; + })(ParameterType || (ParameterType = {})); + var ResourceResidency; + (function (ResourceResidency) { + ResourceResidency[ResourceResidency["MANAGED"] = 0] = "MANAGED"; + ResourceResidency[ResourceResidency["MEMORYLESS"] = 1] = "MEMORYLESS"; + ResourceResidency[ResourceResidency["PERSISTENT"] = 2] = "PERSISTENT"; + ResourceResidency[ResourceResidency["EXTERNAL"] = 3] = "EXTERNAL"; + ResourceResidency[ResourceResidency["BACKBUFFER"] = 4] = "BACKBUFFER"; + })(ResourceResidency || (ResourceResidency = {})); + var QueueHint; + (function (QueueHint) { + QueueHint[QueueHint["NONE"] = 0] = "NONE"; + QueueHint[QueueHint["OPAQUE"] = 1] = "OPAQUE"; + QueueHint[QueueHint["MASK"] = 2] = "MASK"; + QueueHint[QueueHint["BLEND"] = 3] = "BLEND"; + QueueHint[QueueHint["RENDER_OPAQUE"] = 1] = "RENDER_OPAQUE"; + QueueHint[QueueHint["RENDER_CUTOUT"] = 2] = "RENDER_CUTOUT"; + QueueHint[QueueHint["RENDER_TRANSPARENT"] = 3] = "RENDER_TRANSPARENT"; + })(QueueHint || (QueueHint = {})); + var ResourceDimension; + (function (ResourceDimension) { + ResourceDimension[ResourceDimension["BUFFER"] = 0] = "BUFFER"; + ResourceDimension[ResourceDimension["TEXTURE1D"] = 1] = "TEXTURE1D"; + ResourceDimension[ResourceDimension["TEXTURE2D"] = 2] = "TEXTURE2D"; + ResourceDimension[ResourceDimension["TEXTURE3D"] = 3] = "TEXTURE3D"; + })(ResourceDimension || (ResourceDimension = {})); + var ResourceFlags; + (function (ResourceFlags) { + ResourceFlags[ResourceFlags["NONE"] = 0] = "NONE"; + ResourceFlags[ResourceFlags["UNIFORM"] = 1] = "UNIFORM"; + ResourceFlags[ResourceFlags["INDIRECT"] = 2] = "INDIRECT"; + ResourceFlags[ResourceFlags["STORAGE"] = 4] = "STORAGE"; + ResourceFlags[ResourceFlags["SAMPLED"] = 8] = "SAMPLED"; + ResourceFlags[ResourceFlags["COLOR_ATTACHMENT"] = 16] = "COLOR_ATTACHMENT"; + ResourceFlags[ResourceFlags["DEPTH_STENCIL_ATTACHMENT"] = 32] = "DEPTH_STENCIL_ATTACHMENT"; + ResourceFlags[ResourceFlags["INPUT_ATTACHMENT"] = 64] = "INPUT_ATTACHMENT"; + ResourceFlags[ResourceFlags["SHADING_RATE"] = 128] = "SHADING_RATE"; + ResourceFlags[ResourceFlags["TRANSFER_SRC"] = 256] = "TRANSFER_SRC"; + ResourceFlags[ResourceFlags["TRANSFER_DST"] = 512] = "TRANSFER_DST"; + })(ResourceFlags || (ResourceFlags = {})); + var TaskType; + (function (TaskType) { + TaskType[TaskType["SYNC"] = 0] = "SYNC"; + TaskType[TaskType["ASYNC"] = 1] = "ASYNC"; + })(TaskType || (TaskType = {})); + var SceneFlags; + (function (SceneFlags) { + SceneFlags[SceneFlags["NONE"] = 0] = "NONE"; + SceneFlags[SceneFlags["OPAQUE"] = 1] = "OPAQUE"; + SceneFlags[SceneFlags["MASK"] = 2] = "MASK"; + SceneFlags[SceneFlags["BLEND"] = 4] = "BLEND"; + SceneFlags[SceneFlags["OPAQUE_OBJECT"] = 1] = "OPAQUE_OBJECT"; + SceneFlags[SceneFlags["CUTOUT_OBJECT"] = 2] = "CUTOUT_OBJECT"; + SceneFlags[SceneFlags["TRANSPARENT_OBJECT"] = 4] = "TRANSPARENT_OBJECT"; + SceneFlags[SceneFlags["SHADOW_CASTER"] = 8] = "SHADOW_CASTER"; + SceneFlags[SceneFlags["UI"] = 16] = "UI"; + SceneFlags[SceneFlags["DEFAULT_LIGHTING"] = 32] = "DEFAULT_LIGHTING"; + SceneFlags[SceneFlags["VOLUMETRIC_LIGHTING"] = 64] = "VOLUMETRIC_LIGHTING"; + SceneFlags[SceneFlags["CLUSTERED_LIGHTING"] = 128] = "CLUSTERED_LIGHTING"; + SceneFlags[SceneFlags["PLANAR_SHADOW"] = 256] = "PLANAR_SHADOW"; + SceneFlags[SceneFlags["GEOMETRY"] = 512] = "GEOMETRY"; + SceneFlags[SceneFlags["PROFILER"] = 1024] = "PROFILER"; + SceneFlags[SceneFlags["DRAW_INSTANCING"] = 2048] = "DRAW_INSTANCING"; + SceneFlags[SceneFlags["DRAW_NON_INSTANCING"] = 4096] = "DRAW_NON_INSTANCING"; + SceneFlags[SceneFlags["REFLECTION_PROBE"] = 8192] = "REFLECTION_PROBE"; + SceneFlags[SceneFlags["GPU_DRIVEN"] = 16384] = "GPU_DRIVEN"; + SceneFlags[SceneFlags["ALL"] = 4294967295] = "ALL"; + })(SceneFlags || (SceneFlags = {})); + var LightingMode; + (function (LightingMode) { + LightingMode[LightingMode["NONE"] = 0] = "NONE"; + LightingMode[LightingMode["DEFAULT"] = 1] = "DEFAULT"; + LightingMode[LightingMode["CLUSTERED"] = 2] = "CLUSTERED"; + })(LightingMode || (LightingMode = {})); + var AttachmentType; + (function (AttachmentType) { + AttachmentType[AttachmentType["RENDER_TARGET"] = 0] = "RENDER_TARGET"; + AttachmentType[AttachmentType["DEPTH_STENCIL"] = 1] = "DEPTH_STENCIL"; + AttachmentType[AttachmentType["SHADING_RATE"] = 2] = "SHADING_RATE"; + })(AttachmentType || (AttachmentType = {})); + var AccessType; + (function (AccessType) { + AccessType[AccessType["READ"] = 0] = "READ"; + AccessType[AccessType["READ_WRITE"] = 1] = "READ_WRITE"; + AccessType[AccessType["WRITE"] = 2] = "WRITE"; + })(AccessType || (AccessType = {})); + var ClearValueType; + (function (ClearValueType) { + ClearValueType[ClearValueType["NONE"] = 0] = "NONE"; + ClearValueType[ClearValueType["FLOAT_TYPE"] = 1] = "FLOAT_TYPE"; + ClearValueType[ClearValueType["INT_TYPE"] = 2] = "INT_TYPE"; + })(ClearValueType || (ClearValueType = {})); + var LightInfo = function LightInfo(light, level, culledByLight) { + if (light === void 0) { + light = null; + } + if (level === void 0) { + level = 0; + } + if (culledByLight === void 0) { + culledByLight = false; + } + this.light = void 0; + this.level = void 0; + this.culledByLight = void 0; + this.light = light; + this.level = level; + this.culledByLight = culledByLight; + }; + var DescriptorTypeOrder; + (function (DescriptorTypeOrder) { + DescriptorTypeOrder[DescriptorTypeOrder["UNIFORM_BUFFER"] = 0] = "UNIFORM_BUFFER"; + DescriptorTypeOrder[DescriptorTypeOrder["DYNAMIC_UNIFORM_BUFFER"] = 1] = "DYNAMIC_UNIFORM_BUFFER"; + DescriptorTypeOrder[DescriptorTypeOrder["SAMPLER_TEXTURE"] = 2] = "SAMPLER_TEXTURE"; + DescriptorTypeOrder[DescriptorTypeOrder["SAMPLER"] = 3] = "SAMPLER"; + DescriptorTypeOrder[DescriptorTypeOrder["TEXTURE"] = 4] = "TEXTURE"; + DescriptorTypeOrder[DescriptorTypeOrder["STORAGE_BUFFER"] = 5] = "STORAGE_BUFFER"; + DescriptorTypeOrder[DescriptorTypeOrder["DYNAMIC_STORAGE_BUFFER"] = 6] = "DYNAMIC_STORAGE_BUFFER"; + DescriptorTypeOrder[DescriptorTypeOrder["STORAGE_IMAGE"] = 7] = "STORAGE_IMAGE"; + DescriptorTypeOrder[DescriptorTypeOrder["INPUT_ATTACHMENT"] = 8] = "INPUT_ATTACHMENT"; + })(DescriptorTypeOrder || (DescriptorTypeOrder = {})); + var ResolveFlags; + (function (ResolveFlags) { + ResolveFlags[ResolveFlags["NONE"] = 0] = "NONE"; + ResolveFlags[ResolveFlags["COLOR"] = 1] = "COLOR"; + ResolveFlags[ResolveFlags["DEPTH"] = 2] = "DEPTH"; + ResolveFlags[ResolveFlags["STENCIL"] = 4] = "STENCIL"; + })(ResolveFlags || (ResolveFlags = {})); + var UploadPair = function UploadPair(source, target, mipLevels, numSlices, targetMostDetailedMip, targetFirstSlice, targetPlaneSlice) { + if (source === void 0) { + source = new Uint8Array(0); + } + if (target === void 0) { + target = ''; + } + if (mipLevels === void 0) { + mipLevels = 0xFFFFFFFF; + } + if (numSlices === void 0) { + numSlices = 0xFFFFFFFF; + } + if (targetMostDetailedMip === void 0) { + targetMostDetailedMip = 0; + } + if (targetFirstSlice === void 0) { + targetFirstSlice = 0; + } + if (targetPlaneSlice === void 0) { + targetPlaneSlice = 0; + } + this.source = void 0; + this.target = void 0; + this.mipLevels = void 0; + this.numSlices = void 0; + this.targetMostDetailedMip = void 0; + this.targetFirstSlice = void 0; + this.targetPlaneSlice = void 0; + this.source = source; + this.target = target; + this.mipLevels = mipLevels; + this.numSlices = numSlices; + this.targetMostDetailedMip = targetMostDetailedMip; + this.targetFirstSlice = targetFirstSlice; + this.targetPlaneSlice = targetPlaneSlice; + }; + + removeProperty(TextureBase.prototype, 'TextureBase.prototype', [{ + name: 'hasPremultipliedAlpha' + }, { + name: 'setPremultiplyAlpha' + }, { + name: 'setFlipY' + }]); + replaceProperty(RenderTexture.prototype, 'RenderTexture.prototype', [{ + name: 'getGFXWindow', + customFunction: function customFunction() { + return this.window; + } + }]); + + var _typeMap2; + var _typeMap = (_typeMap2 = {}, _typeMap2[FormatType.UNORM] = 'Uint', _typeMap2[FormatType.SNORM] = 'Int', _typeMap2[FormatType.UINT] = 'Uint', _typeMap2[FormatType.INT] = 'Int', _typeMap2[FormatType.UFLOAT] = 'Float', _typeMap2[FormatType.FLOAT] = 'Float', _typeMap2["default"] = 'Uint', _typeMap2); + function _getDataViewType(info) { + var type = _typeMap[info.type] || _typeMap["default"]; + var bytes = info.size / info.count * 8; + return "" + type + bytes; + } + function writeBuffer(target, data, format, offset, stride) { + if (format === void 0) { + format = Format.R32F; + } + if (offset === void 0) { + offset = 0; + } + if (stride === void 0) { + stride = 0; + } + var info = FormatInfos[format]; + if (!stride) { + stride = info.size; + } + var writer = "set" + _getDataViewType(info); + var componentBytesLength = info.size / info.count; + var nSeg = Math.floor(data.length / info.count); + var isLittleEndian = sys.isLittleEndian; + for (var iSeg = 0; iSeg < nSeg; ++iSeg) { + var x = offset + stride * iSeg; + for (var iComponent = 0; iComponent < info.count; ++iComponent) { + var y = x + componentBytesLength * iComponent; + target[writer](y, data[info.count * iSeg + iComponent], isLittleEndian); + } + } + } + function mapBuffer(target, callback, format, offset, length, stride, out) { + if (format === void 0) { + format = Format.R32F; + } + if (offset === void 0) { + offset = 0; + } + if (length === void 0) { + length = target.byteLength - offset; + } + if (stride === void 0) { + stride = 0; + } + if (!out) { + out = new DataView(target.buffer.slice(target.byteOffset, target.byteOffset + target.byteLength)); + } + var info = FormatInfos[format]; + if (!stride) { + stride = info.size; + } + var writer = "set" + _getDataViewType(info); + var reader = "get" + _getDataViewType(info); + var componentBytesLength = info.size / info.count; + var nSeg = Math.floor(length / stride); + var isLittleEndian = sys.isLittleEndian; + for (var iSeg = 0; iSeg < nSeg; ++iSeg) { + var x = offset + stride * iSeg; + for (var iComponent = 0; iComponent < info.count; ++iComponent) { + var y = x + componentBytesLength * iComponent; + var _cur = target[reader](y, isLittleEndian); + out[writer](y, callback(_cur, iComponent, target), isLittleEndian); + } + } + return out; + } + + var RenderingSubMesh = exports('dS', function () { + function RenderingSubMesh(vertexBuffers, attributes, primitiveMode, indexBuffer, indirectBuffer, isOwnerOfIndexBuffer) { + if (indexBuffer === void 0) { + indexBuffer = null; + } + if (indirectBuffer === void 0) { + indirectBuffer = null; + } + if (isOwnerOfIndexBuffer === void 0) { + isOwnerOfIndexBuffer = true; + } + this.mesh = void 0; + this.subMeshIdx = void 0; + this._flatBuffers = []; + this._jointMappedBuffers = void 0; + this._jointMappedBufferIndices = void 0; + this._vertexIdChannel = void 0; + this._geometricInfo = void 0; + this._vertexBuffers = void 0; + this._attributes = void 0; + this._indexBuffer = null; + this._indirectBuffer = null; + this._primitiveMode = void 0; + this._iaInfo = void 0; + this._isOwnerOfIndexBuffer = true; + this._drawInfo = null; + this._attributes = attributes; + this._vertexBuffers = vertexBuffers; + this._indexBuffer = indexBuffer; + this._indirectBuffer = indirectBuffer; + this._primitiveMode = primitiveMode; + this._iaInfo = new InputAssemblerInfo(attributes, vertexBuffers, indexBuffer, indirectBuffer); + this._isOwnerOfIndexBuffer = isOwnerOfIndexBuffer; + } + var _proto = RenderingSubMesh.prototype; + _proto.invalidateGeometricInfo = function invalidateGeometricInfo() { + this._geometricInfo = undefined; + }; + _proto.genFlatBuffers = function genFlatBuffers() { + if (this._flatBuffers.length || !this.mesh || this.subMeshIdx === undefined) { + return; + } + var mesh = this.mesh; + var idxCount = 0; + var prim = mesh.struct.primitives[this.subMeshIdx]; + if (prim.indexView) { + idxCount = prim.indexView.count; + } + for (var i = 0; i < prim.vertexBundelIndices.length; i++) { + var bundleIdx = prim.vertexBundelIndices[i]; + var vertexBundle = mesh.struct.vertexBundles[bundleIdx]; + var vbCount = prim.indexView ? prim.indexView.count : vertexBundle.view.count; + var vbStride = vertexBundle.view.stride; + var vbSize = vbStride * vbCount; + var view = new Uint8Array(mesh.data.buffer, vertexBundle.view.offset, vertexBundle.view.length); + var sharedView = new Uint8Array(prim.indexView ? vbSize : vertexBundle.view.length); + if (!prim.indexView) { + sharedView.set(mesh.data.subarray(vertexBundle.view.offset, vertexBundle.view.offset + vertexBundle.view.length)); + this._flatBuffers.push({ + stride: vbStride, + count: vbCount, + buffer: sharedView + }); + continue; + } + var ibView = mesh.readIndices(this.subMeshIdx); + for (var n = 0; n < idxCount; ++n) { + var idx = ibView[n]; + var offset = n * vbStride; + var srcOffset = idx * vbStride; + for (var m = 0; m < vbStride; ++m) { + sharedView[offset + m] = view[srcOffset + m]; + } + } + this._flatBuffers.push({ + stride: vbStride, + count: vbCount, + buffer: sharedView + }); + } + }; + _proto.destroy = function destroy() { + for (var i = 0; i < this.vertexBuffers.length; i++) { + this.vertexBuffers[i].destroy(); + } + this.vertexBuffers.length = 0; + if (this._indexBuffer) { + if (this._isOwnerOfIndexBuffer) { + this._indexBuffer.destroy(); + } + this._indexBuffer = null; + } + if (this._jointMappedBuffers && this._jointMappedBufferIndices) { + for (var _i = 0; _i < this._jointMappedBufferIndices.length; _i++) { + this._jointMappedBuffers[this._jointMappedBufferIndices[_i]].destroy(); + } + this._jointMappedBuffers = undefined; + this._jointMappedBufferIndices = undefined; + } + if (this._indirectBuffer) { + this._indirectBuffer.destroy(); + this._indirectBuffer = null; + } + }; + _proto.enableVertexIdChannel = function enableVertexIdChannel(device) { + if (this._vertexIdChannel) { + return; + } + var streamIndex = this.vertexBuffers.length; + var attributeIndex = this.attributes.length; + var vertexIdBuffer = this._allocVertexIdBuffer(device); + this._vertexBuffers.push(vertexIdBuffer); + this._attributes.push(new Attribute('a_vertexId', Format.R32F, false, streamIndex)); + this._iaInfo.attributes = this._attributes; + this._iaInfo.vertexBuffers = this._vertexBuffers; + this._vertexIdChannel = { + stream: streamIndex, + index: attributeIndex + }; + }; + _proto._allocVertexIdBuffer = function _allocVertexIdBuffer(device) { + var vertexCount = this.vertexBuffers.length === 0 || this.vertexBuffers[0].stride === 0 ? 0 : this.vertexBuffers[0].size / this.vertexBuffers[0].stride; + var vertexIds = new Float32Array(vertexCount); + for (var iVertex = 0; iVertex < vertexCount; ++iVertex) { + vertexIds[iVertex] = iVertex + 0.5; + } + var vertexIdBuffer = device.createBuffer(new BufferInfo(BufferUsageBit.VERTEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, vertexIds.byteLength, vertexIds.BYTES_PER_ELEMENT)); + vertexIdBuffer.update(vertexIds); + return vertexIdBuffer; + }; + _createClass(RenderingSubMesh, [{ + key: "attributes", + get: function get() { + return this._attributes; + } + }, { + key: "vertexBuffers", + get: function get() { + return this._vertexBuffers; + } + }, { + key: "indexBuffer", + get: function get() { + return this._indexBuffer; + } + }, { + key: "indirectBuffer", + get: function get() { + return this._indirectBuffer; + } + }, { + key: "primitiveMode", + get: function get() { + return this._primitiveMode; + } + }, { + key: "geometricInfo", + get: function get() { + if (this._geometricInfo) { + return this._geometricInfo; + } + if (this.mesh === undefined) { + return RenderingSubMesh.EMPTY_GEOMETRIC_INFO; + } + if (this.subMeshIdx === undefined) { + return RenderingSubMesh.EMPTY_GEOMETRIC_INFO; + } + var mesh = this.mesh; + var index = this.subMeshIdx; + var pAttri = this.attributes.find(function (element) { + return element.name === AttributeName.ATTR_POSITION; + }); + if (!pAttri) { + return RenderingSubMesh.EMPTY_GEOMETRIC_INFO; + } + var positions; + switch (pAttri.format) { + case Format.RG32F: + case Format.RGB32F: + { + positions = mesh.readAttribute(index, AttributeName.ATTR_POSITION); + if (!positions) { + return RenderingSubMesh.EMPTY_GEOMETRIC_INFO; + } + break; + } + case Format.RGBA32F: + { + var data = mesh.readAttribute(index, AttributeName.ATTR_POSITION); + if (!data) { + return RenderingSubMesh.EMPTY_GEOMETRIC_INFO; + } + var count = data.length / 4; + positions = new Float32Array(count * 3); + for (var i = 0; i < count; ++i) { + var dstPtr = i * 3; + var srcPtr = i * 4; + positions[dstPtr] = data[srcPtr]; + positions[dstPtr + 1] = data[srcPtr + 1]; + positions[dstPtr + 2] = data[srcPtr + 2]; + } + break; + } + case Format.RG16F: + case Format.RGB16F: + { + var _data = mesh.readAttribute(index, AttributeName.ATTR_POSITION); + if (!_data) { + return RenderingSubMesh.EMPTY_GEOMETRIC_INFO; + } + positions = new Float32Array(_data.length); + for (var _i2 = 0; _i2 < _data.length; ++_i2) { + positions[_i2] = halfToFloat(_data[_i2]); + } + break; + } + case Format.RGBA16F: + { + var _data2 = mesh.readAttribute(index, AttributeName.ATTR_POSITION); + if (!_data2) { + return RenderingSubMesh.EMPTY_GEOMETRIC_INFO; + } + var _count = _data2.length / 4; + positions = new Float32Array(_count * 3); + for (var _i3 = 0; _i3 < _count; ++_i3) { + var _dstPtr = _i3 * 3; + var _srcPtr = _i3 * 4; + positions[_dstPtr] = halfToFloat(_data2[_srcPtr]); + positions[_dstPtr + 1] = halfToFloat(_data2[_srcPtr + 1]); + positions[_dstPtr + 2] = halfToFloat(_data2[_srcPtr + 2]); + } + break; + } + default: + return RenderingSubMesh.EMPTY_GEOMETRIC_INFO; + } + var indices = mesh.readIndices(index) || undefined; + var max = new Vec3(); + var min = new Vec3(); + var conut = FormatInfos[pAttri.format].count; + if (conut === 2) { + max.set(positions[0], positions[1], 0); + min.set(positions[0], positions[1], 0); + } else { + max.set(positions[0], positions[1], positions[2]); + min.set(positions[0], positions[1], positions[2]); + } + for (var _i4 = 0; _i4 < positions.length; _i4 += conut) { + if (conut === 2) { + max.x = positions[_i4] > max.x ? positions[_i4] : max.x; + max.y = positions[_i4 + 1] > max.y ? positions[_i4 + 1] : max.y; + min.x = positions[_i4] < min.x ? positions[_i4] : min.x; + min.y = positions[_i4 + 1] < min.y ? positions[_i4 + 1] : min.y; + } else { + max.x = positions[_i4] > max.x ? positions[_i4] : max.x; + max.y = positions[_i4 + 1] > max.y ? positions[_i4 + 1] : max.y; + max.z = positions[_i4 + 2] > max.z ? positions[_i4 + 2] : max.z; + min.x = positions[_i4] < min.x ? positions[_i4] : min.x; + min.y = positions[_i4 + 1] < min.y ? positions[_i4 + 1] : min.y; + min.z = positions[_i4 + 2] < min.z ? positions[_i4 + 2] : min.z; + } + } + this._geometricInfo = { + positions: positions, + indices: indices, + boundingBox: { + max: max, + min: min + } + }; + return this._geometricInfo; + } + }, { + key: "drawInfo", + get: function get() { + return this._drawInfo; + }, + set: function set(info) { + this._drawInfo = info; + } + }, { + key: "flatBuffers", + get: function get() { + return this._flatBuffers; + } + }, { + key: "jointMappedBuffers", + get: function get() { + var _this = this; + if (this._jointMappedBuffers) { + return this._jointMappedBuffers; + } + var buffers = this._jointMappedBuffers = []; + var indices = this._jointMappedBufferIndices = []; + if (!this.mesh || this.subMeshIdx === undefined) { + return this._jointMappedBuffers = this.vertexBuffers; + } + var struct = this.mesh.struct; + var prim = struct.primitives[this.subMeshIdx]; + if (!struct.jointMaps || prim.jointMapIndex === undefined || !struct.jointMaps[prim.jointMapIndex]) { + return this._jointMappedBuffers = this.vertexBuffers; + } + var jointFormat; + var jointOffset; + var _ref = legacyCC.director.root, + device = _ref.device; + var _loop = function _loop() { + var bundle = struct.vertexBundles[prim.vertexBundelIndices[i]]; + jointOffset = 0; + jointFormat = Format.UNKNOWN; + for (var j = 0; j < bundle.attributes.length; j++) { + var attr = bundle.attributes[j]; + if (attr.name === AttributeName.ATTR_JOINTS) { + jointFormat = attr.format; + break; + } + jointOffset += FormatInfos[attr.format].size; + } + if (jointFormat) { + var data = new Uint8Array(_this.mesh.data.buffer, bundle.view.offset, bundle.view.length); + var dataView = new DataView(data.slice().buffer); + var idxMap = struct.jointMaps[prim.jointMapIndex]; + mapBuffer(dataView, function (cur) { + return idxMap.indexOf(cur); + }, jointFormat, jointOffset, bundle.view.length, bundle.view.stride, dataView); + var buffer = device.createBuffer(new BufferInfo(BufferUsageBit.VERTEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, bundle.view.length, bundle.view.stride)); + buffer.update(dataView.buffer); + buffers.push(buffer); + indices.push(i); + } else { + buffers.push(_this.vertexBuffers[prim.vertexBundelIndices[i]]); + } + }; + for (var i = 0; i < prim.vertexBundelIndices.length; i++) { + _loop(); + } + if (this._vertexIdChannel) { + buffers.push(this._allocVertexIdBuffer(device)); + } + return buffers; + } + }, { + key: "iaInfo", + get: function get() { + return this._iaInfo; + } + }]); + return RenderingSubMesh; + }()); + RenderingSubMesh.EMPTY_GEOMETRIC_INFO = { + positions: new Float32Array(), + indices: new Uint8Array(), + boundingBox: { + min: Vec3.ZERO, + max: Vec3.ZERO + } + }; + + var RenderingDebugViewType = { + NONE: 0, + SINGLE: 1, + COMPOSITE_AND_MISC: 2 + }; + var DebugViewSingleType = { + NONE: 0, + VERTEX_COLOR: 1, + VERTEX_NORMAL: 2, + VERTEX_TANGENT: 3, + WORLD_POS: 4, + VERTEX_MIRROR: 5, + FACE_SIDE: 6, + UV0: 7, + UV1: 8, + UV_LIGHTMAP: 9, + PROJ_DEPTH: 10, + LINEAR_DEPTH: 11, + FRAGMENT_NORMAL: 12, + FRAGMENT_TANGENT: 13, + FRAGMENT_BINORMAL: 14, + BASE_COLOR: 15, + DIFFUSE_COLOR: 16, + SPECULAR_COLOR: 17, + TRANSPARENCY: 18, + METALLIC: 19, + ROUGHNESS: 20, + SPECULAR_INTENSITY: 21, + IOR: 22, + DIRECT_DIFFUSE: 23, + DIRECT_SPECULAR: 24, + DIRECT_ALL: 25, + ENV_DIFFUSE: 26, + ENV_SPECULAR: 27, + ENV_ALL: 28, + EMISSIVE: 29, + LIGHT_MAP: 30, + SHADOW: 31, + AO: 32, + FRESNEL: 33, + DIRECT_TRANSMIT_DIFFUSE: 34, + DIRECT_TRANSMIT_SPECULAR: 35, + ENV_TRANSMIT_DIFFUSE: 36, + ENV_TRANSMIT_SPECULAR: 37, + TRANSMIT_ALL: 38, + DIRECT_TRT: 39, + ENV_TRT: 40, + TRT_ALL: 41, + FOG: 42 + }; + var DebugViewCompositeType = { + DIRECT_DIFFUSE: 0, + DIRECT_SPECULAR: 1, + ENV_DIFFUSE: 2, + ENV_SPECULAR: 3, + EMISSIVE: 4, + LIGHT_MAP: 5, + SHADOW: 6, + AO: 7, + NORMAL_MAP: 8, + FOG: 9, + TONE_MAPPING: 10, + GAMMA_CORRECTION: 11, + FRESNEL: 12, + TRANSMIT_DIFFUSE: 13, + TRANSMIT_SPECULAR: 14, + TRT: 15, + TT: 16, + MAX_BIT_COUNT: 17 + }; + var DebugView = exports('d8', function () { + function DebugView() { + this._singleMode = DebugViewSingleType.NONE; + this._compositeModeValue = 0; + this._lightingWithAlbedo = true; + this._csmLayerColoration = false; + this._activate(); + } + var _proto = DebugView.prototype; + _proto.isCompositeModeEnabled = function isCompositeModeEnabled(val) { + var mode = this._compositeModeValue & 1 << val; + return mode !== 0; + }; + _proto.enableCompositeMode = function enableCompositeMode(val, enable) { + this._enableCompositeMode(val, enable); + this._updatePipeline(); + }; + _proto.enableAllCompositeMode = function enableAllCompositeMode(enable) { + this._enableAllCompositeMode(enable); + this._updatePipeline(); + }; + _proto.isEnabled = function isEnabled() { + return this._getType() !== RenderingDebugViewType.NONE; + }; + _proto.reset = function reset() { + this._activate(); + this._updatePipeline(); + }; + _proto._activate = function _activate() { + this._singleMode = DebugViewSingleType.NONE; + this._enableAllCompositeMode(true); + this._lightingWithAlbedo = true; + this._csmLayerColoration = false; + }; + _proto._updatePipeline = function _updatePipeline() { + var root = legacyCC.director.root; + var pipeline = root.pipeline; + var useDebugView = this._getType(); + if (pipeline.macros.CC_USE_DEBUG_VIEW !== useDebugView) { + pipeline.macros.CC_USE_DEBUG_VIEW = useDebugView; + root.onGlobalPipelineStateChanged(); + } + }; + _proto._enableCompositeMode = function _enableCompositeMode(val, enable) { + if (enable) { + this._compositeModeValue |= 1 << val; + } else { + this._compositeModeValue &= ~(1 << val); + } + }; + _proto._enableAllCompositeMode = function _enableAllCompositeMode(enable) { + for (var i = 0; i < DebugViewCompositeType.MAX_BIT_COUNT; i++) { + if (enable) { + this._compositeModeValue |= 1 << i; + } else { + this._compositeModeValue &= ~(1 << i); + } + } + }; + _proto._getType = function _getType() { + if (this._singleMode !== DebugViewSingleType.NONE) { + return RenderingDebugViewType.SINGLE; + } else if (this._lightingWithAlbedo !== true || this._csmLayerColoration !== false) { + return RenderingDebugViewType.COMPOSITE_AND_MISC; + } else { + for (var i = 0; i < DebugViewCompositeType.MAX_BIT_COUNT; i++) { + if (!this.isCompositeModeEnabled(i)) { + return RenderingDebugViewType.COMPOSITE_AND_MISC; + } + } + } + return RenderingDebugViewType.NONE; + }; + _createClass(DebugView, [{ + key: "singleMode", + get: function get() { + return this._singleMode; + }, + set: function set(val) { + this._singleMode = val; + this._updatePipeline(); + } + }, { + key: "lightingWithAlbedo", + get: function get() { + return this._lightingWithAlbedo; + }, + set: function set(val) { + this._lightingWithAlbedo = val; + this._updatePipeline(); + } + }, { + key: "csmLayerColoration", + get: function get() { + return this._csmLayerColoration; + }, + set: function set(val) { + this._csmLayerColoration = val; + this._updatePipeline(); + } + }, { + key: "debugViewType", + get: function get() { + return this._getType(); + } + }]); + return DebugView; + }()); + + var _rangedDirLightBoundingBox$2 = new AABB(0.0, 0.0, 0.0, 0.5, 0.5, 0.5); + var _tmpBoundingBox$2 = new AABB(); + var AntiAliasing$1; + (function (AntiAliasing) { + AntiAliasing[AntiAliasing["NONE"] = 0] = "NONE"; + AntiAliasing[AntiAliasing["FXAA"] = 1] = "FXAA"; + AntiAliasing[AntiAliasing["FXAAHQ"] = 2] = "FXAAHQ"; + })(AntiAliasing$1 || (AntiAliasing$1 = {})); + function getRTFormatBeforeToneMapping(ppl) { + var useFloatOutput = ppl.getMacroBool('CC_USE_FLOAT_OUTPUT'); + return ppl.pipelineSceneData.isHDR && useFloatOutput && supportsRGBA16HalfFloatTexture(ppl.device) ? Format.RGBA16F : Format.RGBA8; + } + function validPunctualLightsCulling(pipeline, camera) { + var sceneData = pipeline.pipelineSceneData; + var validPunctualLights = sceneData.validPunctualLights; + validPunctualLights.length = 0; + var _sphere = Sphere.create(0, 0, 0, 1); + var _ref = camera.scene, + spotLights = _ref.spotLights; + for (var i = 0; i < spotLights.length; i++) { + var light = spotLights[i]; + if (light.baked && !camera.node.scene.globals.disableLightmap) { + continue; + } + Sphere.set(_sphere, light.position.x, light.position.y, light.position.z, light.range); + if (intersect.sphereFrustum(_sphere, camera.frustum)) { + validPunctualLights.push(light); + } + } + var _ref2 = camera.scene, + sphereLights = _ref2.sphereLights; + for (var _i = 0; _i < sphereLights.length; _i++) { + var _light = sphereLights[_i]; + if (_light.baked && !camera.node.scene.globals.disableLightmap) { + continue; + } + Sphere.set(_sphere, _light.position.x, _light.position.y, _light.position.z, _light.range); + if (intersect.sphereFrustum(_sphere, camera.frustum)) { + validPunctualLights.push(_light); + } + } + var _ref3 = camera.scene, + pointLights = _ref3.pointLights; + for (var _i2 = 0; _i2 < pointLights.length; _i2++) { + var _light2 = pointLights[_i2]; + if (_light2.baked) { + continue; + } + Sphere.set(_sphere, _light2.position.x, _light2.position.y, _light2.position.z, _light2.range); + if (intersect.sphereFrustum(_sphere, camera.frustum)) { + validPunctualLights.push(_light2); + } + } + var _ref4 = camera.scene, + rangedDirLights = _ref4.rangedDirLights; + for (var _i3 = 0; _i3 < rangedDirLights.length; _i3++) { + var _light3 = rangedDirLights[_i3]; + AABB.transform(_tmpBoundingBox$2, _rangedDirLightBoundingBox$2, _light3.node.getWorldMatrix()); + if (intersect.aabbFrustum(_tmpBoundingBox$2, camera.frustum)) { + validPunctualLights.push(_light3); + } + } + sceneData.validPunctualLights = validPunctualLights; + } + var _cameras = []; + function getCameraUniqueID(camera) { + if (!_cameras.includes(camera)) { + _cameras.push(camera); + } + return _cameras.indexOf(camera); + } + function getLoadOpOfClearFlag(clearFlag, attachment) { + var loadOp = LoadOp.CLEAR; + if (!(clearFlag & ClearFlagBit.COLOR) && attachment === AttachmentType.RENDER_TARGET) { + if (clearFlag & SKYBOX_FLAG) { + loadOp = LoadOp.CLEAR; + } else { + loadOp = LoadOp.LOAD; + } + } + if ((clearFlag & ClearFlagBit.DEPTH_STENCIL) !== ClearFlagBit.DEPTH_STENCIL && attachment === AttachmentType.DEPTH_STENCIL) { + if (!(clearFlag & ClearFlagBit.DEPTH)) loadOp = LoadOp.LOAD; + if (!(clearFlag & ClearFlagBit.STENCIL)) loadOp = LoadOp.LOAD; + } + return loadOp; + } + function getRenderArea(camera, width, height, light, level, out) { + if (light === void 0) { + light = null; + } + if (level === void 0) { + level = 0; + } + if (out === void 0) { + out = undefined; + } + out = out || new Rect(); + var vp = camera ? camera.viewport : new Rect(0, 0, 1, 1); + var w = width; + var h = height; + out.x = vp.x * w; + out.y = vp.y * h; + out.width = vp.width * w; + out.height = vp.height * h; + if (light) { + switch (light.type) { + case LightType.DIRECTIONAL: + { + var mainLight = light; + if (mainLight.shadowFixedArea || mainLight.csmLevel === CSMLevel.LEVEL_1) { + out.x = 0; + out.y = 0; + out.width = w; + out.height = h; + } else { + var screenSpaceSignY = legacyCC.director.root.device.capabilities.screenSpaceSignY; + out.x = level % 2 * 0.5 * w; + if (screenSpaceSignY > 0) { + out.y = (1 - Math.floor(level / 2)) * 0.5 * h; + } else { + out.y = Math.floor(level / 2) * 0.5 * h; + } + out.width = 0.5 * w; + out.height = 0.5 * h; + } + break; + } + case LightType.SPOT: + { + out.x = 0; + out.y = 0; + out.width = w; + out.height = h; + break; + } + } + } + return out; + } + var PostInfo = function () { + var _proto3 = PostInfo.prototype; + _proto3._init = function _init() { + this.postMaterial = new Material(); + this.postMaterial.name = 'builtin-post-process-material'; + this.postMaterial.initialize({ + effectName: 'pipeline/post-process', + defines: { + ANTIALIAS_TYPE: this.antiAliasing + } + }); + for (var i = 0; i < this.postMaterial.passes.length; ++i) { + this.postMaterial.passes[i].tryCompile(); + } + }; + function PostInfo(antiAliasing) { + if (antiAliasing === void 0) { + antiAliasing = AntiAliasing$1.NONE; + } + this.antiAliasing = AntiAliasing$1.NONE; + this.antiAliasing = antiAliasing; + this._init(); + } + return PostInfo; + }(); + var ShadowInfo = function () { + function ShadowInfo() { + this.shadowEnabled = false; + this.mainLightShadowNames = new Array(); + this.spotLightShadowNames = new Array(); + this.validLights = []; + } + var _proto4 = ShadowInfo.prototype; + _proto4.reset = function reset() { + this.shadowEnabled = false; + this.mainLightShadowNames.length = 0; + this.spotLightShadowNames.length = 0; + this.validLights.length = 0; + }; + return ShadowInfo; + }(); + new ShadowInfo(); + var GBufferInfo = function GBufferInfo() { + this.color = void 0; + this.normal = void 0; + this.emissive = void 0; + this.ds = void 0; + }; + var LightingInfo = function () { + var _proto5 = LightingInfo.prototype; + _proto5._init = function _init() { + this.deferredLightingMaterial = new Material(); + this.deferredLightingMaterial.name = 'builtin-deferred-material'; + this.deferredLightingMaterial.initialize({ + effectName: 'pipeline/deferred-lighting', + defines: { + CC_ENABLE_CLUSTERED_LIGHT_CULLING: this.enableCluster, + CC_RECEIVE_SHADOW: 1 + } + }); + for (var i = 0; i < this.deferredLightingMaterial.passes.length; ++i) { + this.deferredLightingMaterial.passes[i].tryCompile(); + } + }; + function LightingInfo(clusterEn) { + this.enableCluster = void 0; + this.enableCluster = clusterEn ? 1 : 0; + this._init(); + } + return LightingInfo; + }(); + function getDescBinding(descId, descData) { + var layoutData = descData; + for (var _iterator5 = _createForOfIteratorHelperLoose(layoutData.descriptorSetLayoutData.descriptorBlocks), _step5; !(_step5 = _iterator5()).done;) { + var block = _step5.value; + for (var i = 0; i !== block.descriptors.length; ++i) { + if (descId === block.descriptors[i].descriptorID) { + return block.offset + i; + } + } + } + return -1; + } + function getDescBindingFromName(bindingName) { + var pipeline = legacyCC.director.root.pipeline; + var layoutGraph = pipeline.layoutGraph; + var vertIds = layoutGraph.vertices(); + var descId = layoutGraph.attributeIndex.get(bindingName); + var currDesData; + for (var _iterator6 = _createForOfIteratorHelperLoose(vertIds), _step6; !(_step6 = _iterator6()).done;) { + var i = _step6.value; + var layout = layoutGraph.getLayout(i); + for (var _iterator7 = _createForOfIteratorHelperLoose(layout.descriptorSets), _step7; !(_step7 = _iterator7()).done;) { + var _step7$value = _step7.value; + _step7$value[0]; + var descData = _step7$value[1]; + var layoutData = descData.descriptorSetLayoutData; + var blocks = layoutData.descriptorBlocks; + for (var _iterator8 = _createForOfIteratorHelperLoose(blocks), _step8; !(_step8 = _iterator8()).done;) { + var b = _step8.value; + for (var _iterator9 = _createForOfIteratorHelperLoose(b.descriptors), _step9; !(_step9 = _iterator9()).done;) { + var ds = _step9.value; + if (ds.descriptorID === descId) { + currDesData = descData; + return getDescBinding(descId, currDesData); + } + } + } + } + } + return -1; + } + var layouts = new Map(); + function getDescriptorSetDataFromLayout(layoutName) { + var descLayout = layouts.get(layoutName); + if (descLayout) { + return descLayout; + } + var webPip = legacyCC.director.root.pipeline; + var stageId = webPip.layoutGraph.locateChild(webPip.layoutGraph.nullVertex(), layoutName); + assert(stageId !== 0xFFFFFFFF); + var layout = webPip.layoutGraph.getLayout(stageId); + var layoutData = layout.descriptorSets.get(UpdateFrequency.PER_PASS); + layouts.set(layoutName, layoutData); + return layoutData; + } + var _varianceArray = [0.0484, 0.187, 0.567, 1.99, 7.41]; + var _strengthParameterArray = [0.100, 0.118, 0.113, 0.358, 0.078]; + var _vec3Temp = new Vec3(); + var _vec3Temp2 = new Vec3(); + var _vec4Temp = new Vec4(); + var _vec4Temp2 = new Vec4(); + var COPY_INPUT_DS_PASS_INDEX = 0; + var SSSS_BLUR_X_PASS_INDEX = 1; + var SSSS_BLUR_Y_PASS_INDEX = 2; + var EXPONENT = 2.0; + var I_SAMPLES_COUNT = 25; + (function () { + var _proto6 = SSSSBlurData.prototype; + _proto6._gaussian = function _gaussian(out, variance, r) { + var xx = r / (0.001 + this._v3SSSSFallOff.x); + out.x = Math.exp(-(xx * xx) / (2.0 * variance)) / (2.0 * 3.14 * variance); + var yy = r / (0.001 + this._v3SSSSFallOff.y); + out.y = Math.exp(-(yy * yy) / (2.0 * variance)) / (2.0 * 3.14 * variance); + var zz = r / (0.001 + this._v3SSSSFallOff.z); + out.z = Math.exp(-(zz * zz) / (2.0 * variance)) / (2.0 * 3.14 * variance); + }; + _proto6._profile = function _profile(out, val) { + for (var i = 0; i < 5; i++) { + this._gaussian(_vec3Temp2, _varianceArray[i], val); + _vec3Temp2.multiplyScalar(_strengthParameterArray[i]); + out.add(_vec3Temp2); + } + }; + _proto6._updateSampleCount = function _updateSampleCount() { + var strength = this._v3SSSSStrength; + var nSamples = I_SAMPLES_COUNT; + var range = 3.0 ; + var step = 2.0 * range / (nSamples - 1); + for (var i = 0; i < nSamples; i++) { + var o = -range + i * step; + var sign = o < 0.0 ? -1.0 : 1.0; + this._kernel[i].w = range * sign * Math.abs(Math.pow(o, EXPONENT)) / Math.pow(range, EXPONENT); + } + for (var _i5 = 0; _i5 < nSamples; _i5++) { + var w0 = _i5 > 0 ? Math.abs(this._kernel[_i5].w - this._kernel[_i5 - 1].w) : 0.0; + var w1 = _i5 < nSamples - 1 ? Math.abs(this._kernel[_i5].w - this._kernel[_i5 + 1].w) : 0.0; + var area = (w0 + w1) / 2.0; + _vec3Temp.set(0); + this._profile(_vec3Temp, this._kernel[_i5].w); + _vec3Temp.multiplyScalar(area); + this._kernel[_i5].x = _vec3Temp.x; + this._kernel[_i5].y = _vec3Temp.y; + this._kernel[_i5].z = _vec3Temp.z; + } + var remainder = nSamples % 2; + _vec4Temp.set(this._kernel[(nSamples - remainder) / 2]); + for (var _i6 = (nSamples - remainder) / 2; _i6 > 0; _i6--) { + _vec4Temp2.set(this._kernel[_i6 - 1]); + this._kernel[_i6].set(_vec4Temp2); + } + this._kernel[0].set(_vec4Temp); + _vec3Temp.set(0.0); + for (var _i7 = 0; _i7 < nSamples; _i7++) { + _vec3Temp.add3f(this._kernel[_i7].x, this._kernel[_i7].y, this._kernel[_i7].z); + } + for (var _i8 = 0; _i8 < nSamples; _i8++) { + this._kernel[_i8].x /= _vec3Temp.x; + this._kernel[_i8].y /= _vec3Temp.y; + this._kernel[_i8].z /= _vec3Temp.z; + } + this._kernel[0].x = (1.0 - strength.x) * 1.0 + strength.x * this._kernel[0].x; + this._kernel[0].y = (1.0 - strength.y) * 1.0 + strength.y * this._kernel[0].y; + this._kernel[0].z = (1.0 - strength.z) * 1.0 + strength.z * this._kernel[0].z; + for (var _i9 = 1; _i9 < nSamples; _i9++) { + this._kernel[_i9].x *= strength.x; + this._kernel[_i9].y *= strength.y; + this._kernel[_i9].z *= strength.z; + } + }; + _proto6._updateBlurPass = function _updateBlurPass() { + if (!this.ssssBlurMaterial) return; + var copyInputDSPass = this.ssssBlurMaterial.passes[COPY_INPUT_DS_PASS_INDEX]; + copyInputDSPass.beginChangeStatesSilently(); + copyInputDSPass.tryCompile(); + copyInputDSPass.endChangeStatesSilently(); + var ssssBlurXPass = this.ssssBlurMaterial.passes[SSSS_BLUR_X_PASS_INDEX]; + ssssBlurXPass.beginChangeStatesSilently(); + ssssBlurXPass.tryCompile(); + ssssBlurXPass.endChangeStatesSilently(); + var ssssBlurYPass = this.ssssBlurMaterial.passes[SSSS_BLUR_Y_PASS_INDEX]; + ssssBlurYPass.beginChangeStatesSilently(); + ssssBlurYPass.tryCompile(); + ssssBlurYPass.endChangeStatesSilently(); + }; + _proto6._init = function _init() { + if (this.ssssBlurMaterial) return; + this.ssssBlurMaterial = new Material(); + this.ssssBlurMaterial._uuid = 'builtin-ssssBlur-material'; + this.ssssBlurMaterial.initialize({ + effectName: 'pipeline/ssss-blur' + }); + for (var i = 0; i < this.ssssBlurMaterial.passes.length; ++i) { + this.ssssBlurMaterial.passes[i].tryCompile(); + } + this._updateBlurPass(); + for (var _i10 = 0; _i10 < I_SAMPLES_COUNT; _i10++) { + this._kernel[_i10] = new Vec4(); + } + this._updateSampleCount(); + }; + function SSSSBlurData() { + this.ssssFov = 45.0 / 57.3; + this.ssssWidth = 0.01; + this.boundingBox = 0.4; + this.ssssScale = 3.0; + this._v3SSSSStrength = new Vec3(0.48, 0.41, 0.28); + this._v3SSSSFallOff = new Vec3(1.0, 0.37, 0.3); + this._kernel = []; + this._init(); + } + _createClass(SSSSBlurData, [{ + key: "ssssStrength", + get: function get() { + return this._v3SSSSStrength; + }, + set: function set(val) { + this._v3SSSSStrength = val; + this._updateSampleCount(); + } + }, { + key: "ssssFallOff", + get: function get() { + return this._v3SSSSFallOff; + }, + set: function set(val) { + this._v3SSSSFallOff = val; + this._updateSampleCount(); + } + }, { + key: "kernel", + get: function get() { + return this._kernel; + } + }]); + return SSSSBlurData; + })(); + (function () { + var _proto8 = HBAOParams.prototype; + _proto8._init = function _init() { + if (this.hbaoMaterial) return; + this.hbaoMaterial = new Material(); + this.hbaoMaterial.name = 'builtin-hbao-material'; + this.hbaoMaterial.initialize({ + effectName: 'pipeline/post-process/hbao' + }); + for (var i = 0; i < this.hbaoMaterial.passes.length; ++i) { + this.hbaoMaterial.passes[i].tryCompile(); + } + var width = 4; + var height = 4; + var pixelFormat = Texture2D.PixelFormat.RGBA8888; + var arrayBuffer = new Uint8Array(width * height * 4); + for (var _i11 = 0; _i11 < this._randomDirAndJitter.length; _i11++) { + arrayBuffer[_i11] = this._randomDirAndJitter[_i11]; + } + var image = new ImageAsset({ + width: width, + height: height, + _data: arrayBuffer, + _compressed: false, + format: pixelFormat + }); + this.randomTexture = new Texture2D(); + this.randomTexture.setFilters(Texture2D.Filter.NEAREST, Texture2D.Filter.NEAREST); + this.randomTexture.setMipFilter(Texture2D.Filter.NONE); + this.randomTexture.setWrapMode(Texture2D.WrapMode.REPEAT, Texture2D.WrapMode.REPEAT, Texture2D.WrapMode.REPEAT); + this.randomTexture.image = image; + this.hbaoMaterial.setProperty('RandomTex', this.randomTexture, 0); + }; + _proto8.update = function update() { + var HALF_KERNEL_RADIUS = 4; + var INV_LN2 = 1.44269504; + var SQRT_LN2 = 0.8325546; + var gR = this._radiusScale * this._sceneScale; + var gR2 = gR * gR; + var gNegInvR2 = -1.0 / gR2; + var gMaxRadiusPixels = 0.1 * Math.min(this._depthTexFullResolution.x, this._depthTexFullResolution.y); + this._radiusParam.set(gR, gR2, gNegInvR2, gMaxRadiusPixels); + var vec2 = new Vec2(this._depthTexResolution.y / this._depthTexResolution.x, 1.0); + var gFocalLen = new Vec2(vec2.x / Math.tan(this._cameraFov * 0.5), vec2.y / Math.tan(this._cameraFov * 0.5)); + var gTanAngleBias = Math.tan(toRadian(this._angleBiasDegree)); + var gStrength = this._aoStrength; + this._miscParam.set(gFocalLen.x, gFocalLen.y, gTanAngleBias, gStrength); + var gUVToViewA = new Vec2(2.0 / gFocalLen.x, -2.0 / gFocalLen.y); + var gUVToViewB = new Vec2(-1.0 / gFocalLen.x, 1.0 / gFocalLen.y); + this._uvDepthToEyePosParams.set(gUVToViewA.x, gUVToViewA.y, gUVToViewB.x, gUVToViewB.y); + var BlurSigma = (HALF_KERNEL_RADIUS + 1.0) * 0.5; + var gBlurFallOff = INV_LN2 / (2.0 * BlurSigma * BlurSigma); + var gBlurDepthThreshold = 2.0 * SQRT_LN2 * (this._sceneScale / this._blurSharpness); + this._blurParam.set(gBlurFallOff, gBlurDepthThreshold, this._blurSharpness / 8.0, this._aoSaturation); + }; + function HBAOParams() { + this._uvDepthToEyePosParams = new Vec4(); + this._radiusParam = new Vec4(); + this._miscParam = new Vec4(); + this._blurParam = new Vec4(); + this._depthTexFullResolution = new Vec2(1024); + this._depthTexResolution = new Vec2(1024); + this._sceneScale = 1.0; + this._cameraFov = toRadian(45.0); + this._radiusScale = 1.0; + this._angleBiasDegree = 10.0; + this._aoStrength = 1.0; + this._blurSharpness = 8; + this._aoSaturation = 1.0; + this._randomDirAndJitter = [238, 91, 87, 255, 251, 44, 119, 255, 247, 64, 250, 255, 232, 5, 225, 255, 253, 177, 140, 255, 250, 51, 84, 255, 243, 76, 97, 255, 252, 36, 232, 255, 235, 100, 24, 255, 252, 36, 158, 255, 254, 20, 142, 255, 245, 135, 124, 255, 251, 43, 121, 255, 253, 31, 145, 255, 235, 98, 160, 255, 240, 146, 198, 255]; + this._init(); + this.update(); + } + _createClass(HBAOParams, [{ + key: "uvDepthToEyePosParams", + get: function get() { + return this._uvDepthToEyePosParams; + } + }, { + key: "radiusParam", + get: function get() { + return this._radiusParam; + } + }, { + key: "miscParam", + get: function get() { + return this._miscParam; + } + }, { + key: "blurParam", + get: function get() { + return this._blurParam; + } + }, { + key: "depthTexFullResolution", + set: function set(val) { + this._depthTexFullResolution.set(val); + } + }, { + key: "depthTexResolution", + set: function set(val) { + this._depthTexResolution.set(val); + } + }, { + key: "sceneScale", + set: function set(val) { + this._sceneScale = val; + } + }, { + key: "cameraFov", + set: function set(val) { + this._cameraFov = val; + } + }, { + key: "radiusScale", + set: function set(val) { + this._radiusScale = val; + } + }, { + key: "angleBiasDegree", + set: function set(val) { + this._angleBiasDegree = val; + } + }, { + key: "aoStrength", + set: function set(val) { + this._aoStrength = val; + } + }, { + key: "blurSharpness", + set: function set(val) { + this._blurSharpness = val; + } + }, { + key: "aoSaturation", + set: function set(val) { + this._aoSaturation = val; + } + }]); + return HBAOParams; + })(); + new Vec2(); + var MAX_LIGHTS_PER_CLUSTER = 100; + var CLUSTERS_X = 16; + var CLUSTERS_Y = 8; + var CLUSTERS_Z = 24; + var CLUSTER_COUNT = CLUSTERS_X * CLUSTERS_Y * CLUSTERS_Z; + var ClusterLightData = function () { + var _proto9 = ClusterLightData.prototype; + _proto9._initMaterial = function _initMaterial(id, effect) { + var mat = new Material(); + mat.name = id; + mat.initialize({ + effectName: effect + }); + for (var i = 0; i < mat.passes.length; ++i) { + mat.passes[i].tryCompile(); + } + return mat; + }; + _proto9._init = function _init() { + this.clusterBuildCS = this._initMaterial('builtin-cluster-build-cs-material', 'pipeline/cluster-build'); + this.clusterLightCullingCS = this._initMaterial('builtin-cluster-culling-cs-material', 'pipeline/cluster-culling'); + this.dispatchX = CLUSTERS_X / this.clusters_x_threads; + this.dispatchY = CLUSTERS_Y / this.clusters_y_threads; + this.dispatchZ = CLUSTERS_Z / this.clusters_z_threads; + }; + function ClusterLightData() { + this.clusters_x_threads = 16; + this.clusters_y_threads = 8; + this.clusters_z_threads = 1; + this.dispatchX = 1; + this.dispatchY = 1; + this.dispatchZ = 1; + this._init(); + } + return ClusterLightData; + }(); + var _clusterLightData = null; + function buildLightClusterBuildPass(camera, clusterData, ppl) { + var cameraID = getCameraUniqueID(camera); + var clusterBufferName = "clusterBuffer" + cameraID; + var clusterBufferSize = CLUSTER_COUNT * 2 * 4 * 4; + if (!ppl.containsResource(clusterBufferName)) { + ppl.addStorageBuffer(clusterBufferName, Format.UNKNOWN, clusterBufferSize, ResourceResidency.MANAGED); + } + ppl.updateStorageBuffer(clusterBufferName, clusterBufferSize); + var clusterPass = ppl.addComputePass('cluster-build-cs'); + clusterPass.addStorageBuffer(clusterBufferName, AccessType.WRITE, 'b_clustersBuffer'); + clusterPass.addQueue().addDispatch(clusterData.dispatchX, clusterData.dispatchY, clusterData.dispatchZ, clusterData.clusterBuildCS, 0); + var width = camera.width * ppl.pipelineSceneData.shadingScale; + var height = camera.height * ppl.pipelineSceneData.shadingScale; + clusterPass.setVec4('cc_nearFar', new Vec4(camera.nearClip, camera.farClip, camera.getClipSpaceMinz(), 0)); + clusterPass.setVec4('cc_viewPort', new Vec4(0, 0, width, height)); + clusterPass.setVec4('cc_workGroup', new Vec4(CLUSTERS_X, CLUSTERS_Y, CLUSTERS_Z, 0)); + clusterPass.setMat4('cc_matView', camera.matView); + clusterPass.setMat4('cc_matProjInv', camera.matProjInv); + } + function buildLightClusterCullingPass(camera, clusterData, ppl) { + var cameraID = getCameraUniqueID(camera); + var clusterBufferName = "clusterBuffer" + cameraID; + var clusterLightBufferName = "clusterLightBuffer" + cameraID; + var clusterGlobalIndexBufferName = "globalIndexBuffer" + cameraID; + var clusterLightIndicesBufferName = "clusterLightIndicesBuffer" + cameraID; + var clusterLightGridBufferName = "clusterLightGridBuffer" + cameraID; + var lightIndexBufferSize = MAX_LIGHTS_PER_CLUSTER * CLUSTER_COUNT * 4; + var lightGridBufferSize = CLUSTER_COUNT * 4 * 4; + if (!ppl.containsResource(clusterLightIndicesBufferName)) { + ppl.addStorageBuffer(clusterLightIndicesBufferName, Format.UNKNOWN, lightIndexBufferSize, ResourceResidency.MANAGED); + } + if (!ppl.containsResource(clusterLightGridBufferName)) { + ppl.addStorageBuffer(clusterLightGridBufferName, Format.UNKNOWN, lightGridBufferSize, ResourceResidency.MANAGED); + } + var clusterPass = ppl.addComputePass('cluster-culling-cs'); + clusterPass.addStorageBuffer(clusterLightBufferName, AccessType.READ, 'b_ccLightsBuffer'); + clusterPass.addStorageBuffer(clusterBufferName, AccessType.READ, 'b_clustersBuffer'); + clusterPass.addStorageBuffer(clusterLightIndicesBufferName, AccessType.WRITE, 'b_clusterLightIndicesBuffer'); + clusterPass.addStorageBuffer(clusterLightGridBufferName, AccessType.WRITE, 'b_clusterLightGridBuffer'); + clusterPass.addStorageBuffer(clusterGlobalIndexBufferName, AccessType.WRITE, 'b_globalIndexBuffer'); + clusterPass.addQueue().addDispatch(clusterData.dispatchX, clusterData.dispatchY, clusterData.dispatchZ, clusterData.clusterLightCullingCS, 0); + var width = camera.width * ppl.pipelineSceneData.shadingScale; + var height = camera.height * ppl.pipelineSceneData.shadingScale; + clusterPass.setVec4('cc_nearFar', new Vec4(camera.nearClip, camera.farClip, camera.getClipSpaceMinz(), 0)); + clusterPass.setVec4('cc_viewPort', new Vec4(width, height, width, height)); + clusterPass.setVec4('cc_workGroup', new Vec4(CLUSTERS_X, CLUSTERS_Y, CLUSTERS_Z, 0)); + clusterPass.setMat4('cc_matView', camera.matView); + clusterPass.setMat4('cc_matProjInv', camera.matProjInv); + } + function buildLightBuffer(size, floatPerLight, camera, pipeline) { + var buffer = new ArrayBuffer(size); + var view = new Float32Array(buffer); + var data = pipeline.pipelineSceneData; + var lightMeterScale = 10000.0; + var exposure = camera.exposure; + var index = 0; + for (var _iterator17 = _createForOfIteratorHelperLoose(data.validPunctualLights), _step17; !(_step17 = _iterator17()).done;) { + var light = _step17.value; + var offset = index * floatPerLight; + var positionOffset = offset + 0; + var colorOffset = offset + 4; + var sizeRangeAngleOffset = offset + 8; + var directionOffset = offset + 12; + var boundSizeOffset = offset + 16; + var luminanceHDR = 0; + var luminanceLDR = 0; + var position = void 0; + if (light.type === LightType.POINT) { + var point = light; + position = point.position; + luminanceLDR = point.luminanceLDR; + luminanceHDR = point.luminanceHDR; + view[sizeRangeAngleOffset] = 0; + view[sizeRangeAngleOffset + 1] = point.range; + view[sizeRangeAngleOffset + 2] = 0; + view[sizeRangeAngleOffset + 3] = 0; + } else if (light.type === LightType.SPHERE) { + var sphere = light; + position = sphere.position; + luminanceLDR = sphere.luminanceLDR; + luminanceHDR = sphere.luminanceHDR; + view[sizeRangeAngleOffset] = sphere.size; + view[sizeRangeAngleOffset + 1] = sphere.range; + view[sizeRangeAngleOffset + 2] = 0; + view[sizeRangeAngleOffset + 3] = 0; + } else if (light.type === LightType.SPOT) { + var spot = light; + position = spot.position; + luminanceLDR = spot.luminanceLDR; + luminanceHDR = spot.luminanceHDR; + view[sizeRangeAngleOffset] = spot.size; + view[sizeRangeAngleOffset + 1] = spot.range; + view[sizeRangeAngleOffset + 2] = spot.spotAngle; + view[sizeRangeAngleOffset + 3] = 0; + var dir = spot.direction; + view[directionOffset] = dir.x; + view[directionOffset + 1] = dir.y; + view[directionOffset + 2] = dir.z; + view[directionOffset + 3] = 0; + } else if (light.type === LightType.RANGED_DIRECTIONAL) { + var directional = light; + position = directional.position; + luminanceLDR = directional.illuminanceLDR; + luminanceHDR = directional.illuminanceHDR; + var right = directional.right; + view[sizeRangeAngleOffset] = right.x; + view[sizeRangeAngleOffset + 1] = right.y; + view[sizeRangeAngleOffset + 2] = right.z; + view[sizeRangeAngleOffset + 3] = 0; + var _dir = directional.direction; + view[directionOffset] = _dir.x; + view[directionOffset + 1] = _dir.y; + view[directionOffset + 2] = _dir.z; + view[directionOffset + 3] = 0; + var scale = directional.scale; + view[boundSizeOffset] = scale.x * 0.5; + view[boundSizeOffset + 1] = scale.y * 0.5; + view[boundSizeOffset + 2] = scale.z * 0.5; + view[boundSizeOffset + 3] = 0; + } + view[positionOffset] = position.x; + view[positionOffset + 1] = position.y; + view[positionOffset + 2] = position.z; + view[positionOffset + 3] = light.type; + var color = light.color; + if (light.useColorTemperature) { + var tempRGB = light.colorTemperatureRGB; + view[colorOffset] = color.x * tempRGB.x; + view[colorOffset + 1] = color.y * tempRGB.y; + view[colorOffset + 2] = color.z * tempRGB.z; + } else { + view[colorOffset] = color.x; + view[colorOffset + 1] = color.y; + view[colorOffset + 2] = color.z; + } + view[colorOffset + 3] = data.isHDR ? luminanceHDR * exposure * lightMeterScale : luminanceLDR; + index++; + } + view[3 * 4 + 3] = data.validPunctualLights.length; + return buffer; + } + function buildClusterLightData(camera, pipeline) { + validPunctualLightsCulling(pipeline, camera); + var data = pipeline.pipelineSceneData; + var validLightCountForBuffer = nextPow2(Math.max(data.validPunctualLights.length, 1)); + var lightBufferFloatNum = 20; + var clusterLightBufferSize = validLightCountForBuffer * 4 * lightBufferFloatNum; + var cameraID = getCameraUniqueID(camera); + var clusterLightBufferName = "clusterLightBuffer" + cameraID; + var clusterGlobalIndexBufferName = "globalIndexBuffer" + cameraID; + var ppl = pipeline; + if (!ppl.containsResource(clusterGlobalIndexBufferName)) { + ppl.addStorageBuffer(clusterGlobalIndexBufferName, Format.UNKNOWN, 4, ResourceResidency.PERSISTENT); + } + if (!ppl.containsResource(clusterLightBufferName)) { + ppl.addStorageBuffer(clusterLightBufferName, Format.UNKNOWN, clusterLightBufferSize, ResourceResidency.PERSISTENT); + } + ppl.updateStorageBuffer(clusterLightBufferName, clusterLightBufferSize); + var buffer = buildLightBuffer(clusterLightBufferSize, lightBufferFloatNum, camera, pipeline); + var globalIndexBuffer = new ArrayBuffer(4); + var globalIndexBufferView = new Uint32Array(globalIndexBuffer); + globalIndexBufferView[0] = 0; + var uploadPair1 = new UploadPair(new Uint8Array(buffer), clusterLightBufferName); + var uploadPair2 = new UploadPair(new Uint8Array(globalIndexBuffer), clusterGlobalIndexBufferName); + ppl.addUploadPass([uploadPair1, uploadPair2]); + } + function buildClusterPasses(camera, pipeline) { + buildClusterLightData(camera, pipeline); + var ppl = pipeline; + if (!_clusterLightData) _clusterLightData = new ClusterLightData(); + buildLightClusterBuildPass(camera, _clusterLightData, ppl); + buildLightClusterCullingPass(camera, _clusterLightData, ppl); + } + + var _samplerLinearInfo = new SamplerInfo(Filter$1.LINEAR, Filter$1.LINEAR, Filter$1.NONE, Address.CLAMP, Address.CLAMP, Address.CLAMP); + var _samplerPointInfo = new SamplerInfo(Filter$1.POINT, Filter$1.POINT, Filter$1.NONE, Address.CLAMP, Address.CLAMP, Address.CLAMP); + var GlobalDSManager = function () { + function GlobalDSManager(device) { + this._device = void 0; + this._descriptorSetMap = new Map(); + this._globalDescriptorSet = void 0; + this._descriptorSetLayout = void 0; + this._linearSampler = void 0; + this._pointSampler = void 0; + this._device = device; + this._linearSampler = this._device.getSampler(_samplerLinearInfo); + this._pointSampler = this._device.getSampler(_samplerPointInfo); + var layoutInfo = new DescriptorSetLayoutInfo(globalDescriptorSetLayout.bindings); + this._descriptorSetLayout = this._device.createDescriptorSetLayout(layoutInfo); + this._globalDescriptorSet = this._device.createDescriptorSet(new DescriptorSetInfo(this._descriptorSetLayout)); + } + var _proto = GlobalDSManager.prototype; + _proto.regenLayout = function regenLayout() { + var layoutInfo = new DescriptorSetLayoutInfo(globalDescriptorSetLayout.bindings); + this._descriptorSetLayout = this._device.createDescriptorSetLayout(layoutInfo); + this._globalDescriptorSet = this._device.createDescriptorSet(new DescriptorSetInfo(this._descriptorSetLayout)); + }; + _proto.bindBuffer = function bindBuffer(binding, buffer) { + this._globalDescriptorSet.bindBuffer(binding, buffer); + var it = this._descriptorSetMap.values(); + var res = it.next(); + while (!res.done) { + var descriptorSet = res.value; + descriptorSet.bindBuffer(binding, buffer); + res = it.next(); + } + }; + _proto.bindSampler = function bindSampler(binding, sampler) { + this._globalDescriptorSet.bindSampler(binding, sampler); + var it = this._descriptorSetMap.values(); + var res = it.next(); + while (!res.done) { + var descriptorSet = res.value; + descriptorSet.bindSampler(binding, sampler); + res = it.next(); + } + }; + _proto.bindTexture = function bindTexture(binding, texture) { + this._globalDescriptorSet.bindTexture(binding, texture); + var it = this._descriptorSetMap.values(); + var res = it.next(); + while (!res.done) { + var descriptorSet = res.value; + descriptorSet.bindTexture(binding, texture); + res = it.next(); + } + }; + _proto.update = function update() { + this._globalDescriptorSet.update(); + var it = this._descriptorSetMap.values(); + var res = it.next(); + while (!res.done) { + var descriptorSet = res.value; + descriptorSet.update(); + res = it.next(); + } + }; + _proto.getOrCreateDescriptorSet = function getOrCreateDescriptorSet(light) { + var device = this._device; + if (!this._descriptorSetMap.has(light)) { + var globalDescriptorSet = isEnableEffect() ? getDescriptorSetDataFromLayout('default').descriptorSet : this._globalDescriptorSet; + var descriptorSet = device.createDescriptorSet(new DescriptorSetInfo(isEnableEffect() ? getDescriptorSetDataFromLayout('default').descriptorSetLayout : this._descriptorSetLayout)); + this._descriptorSetMap.set(light, descriptorSet); + for (var i = PipelineGlobalBindings.UBO_GLOBAL; i < PipelineGlobalBindings.COUNT; i++) { + descriptorSet.bindBuffer(i, globalDescriptorSet.getBuffer(i)); + descriptorSet.bindSampler(i, globalDescriptorSet.getSampler(i)); + descriptorSet.bindTexture(i, globalDescriptorSet.getTexture(i)); + } + var shadowUBO = device.createBuffer(new BufferInfo(BufferUsageBit.UNIFORM | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.HOST | MemoryUsageBit.DEVICE, UBOShadow.SIZE, UBOShadow.SIZE)); + var binding = isEnableEffect() ? getDescBindingFromName('CCShadow') : UBOShadow.BINDING; + descriptorSet.bindBuffer(binding, shadowUBO); + descriptorSet.update(); + } + return this._descriptorSetMap.get(light); + }; + _proto.destroy = function destroy() { + this._descriptorSetLayout.destroy(); + }; + _createClass(GlobalDSManager, [{ + key: "descriptorSetMap", + get: function get() { + return this._descriptorSetMap; + } + }, { + key: "linearSampler", + get: function get() { + return this._linearSampler; + } + }, { + key: "pointSampler", + get: function get() { + return this._pointSampler; + } + }, { + key: "descriptorSetLayout", + get: function get() { + return this._descriptorSetLayout; + } + }, { + key: "globalDescriptorSet", + get: function get() { + return this._globalDescriptorSet; + }, + set: function set(val) { + this._globalDescriptorSet = val; + } + }]); + return GlobalDSManager; + }(); + + var _matShadowView$2 = new Mat4(); + var _matShadowProj$1 = new Mat4(); + var _matShadowViewProj$2 = new Mat4(); + var _vec4ShadowInfo = new Vec4(); + var _lightDir = new Vec4(0.0, 0.0, 1.0, 0.0); + var _tempVec3$3 = new Vec3(); + var PipelineUBO = function () { + function PipelineUBO() { + this._globalUBO = new Float32Array(UBOGlobal.COUNT); + this._cameraUBO = new Float32Array(UBOCamera.COUNT); + this._shadowUBO = new Float32Array(UBOShadow.COUNT); + this._csmUBO = new Float32Array(UBOCSM.COUNT); + } + PipelineUBO.updateGlobalUBOView = function updateGlobalUBOView(window, bufferView) { + var director = legacyCC.director; + var root = director.root; + var fv = bufferView; + var shadingWidth = Math.floor(window.width); + var shadingHeight = Math.floor(window.height); + fv[UBOGlobal.TIME_OFFSET] = root.cumulativeTime; + fv[UBOGlobal.TIME_OFFSET + 1] = root.frameTime; + fv[UBOGlobal.TIME_OFFSET + 2] = director.getTotalFrames(); + fv[UBOGlobal.TIME_OFFSET + 3] = root.cumulativeTime - Math.floor(root.frameTime); + fv[UBOGlobal.SCREEN_SIZE_OFFSET] = shadingWidth; + fv[UBOGlobal.SCREEN_SIZE_OFFSET + 1] = shadingHeight; + fv[UBOGlobal.SCREEN_SIZE_OFFSET + 2] = 1.0 / shadingWidth; + fv[UBOGlobal.SCREEN_SIZE_OFFSET + 3] = 1.0 / shadingHeight; + fv[UBOGlobal.NATIVE_SIZE_OFFSET] = shadingWidth; + fv[UBOGlobal.NATIVE_SIZE_OFFSET + 1] = shadingHeight; + fv[UBOGlobal.NATIVE_SIZE_OFFSET + 2] = 1.0 / fv[UBOGlobal.NATIVE_SIZE_OFFSET]; + fv[UBOGlobal.NATIVE_SIZE_OFFSET + 3] = 1.0 / fv[UBOGlobal.NATIVE_SIZE_OFFSET + 1]; + if (legacyCC.internal.reflectionProbeManager) { + fv[UBOGlobal.PROBE_INFO_OFFSET] = legacyCC.internal.reflectionProbeManager.getMaxProbeId() + 1; + } + var debugView = root.debugView; + for (var i = 0; i <= 3; i++) { + fv[UBOGlobal.DEBUG_VIEW_MODE_OFFSET + i] = 0.0; + } + if (debugView.isEnabled()) { + fv[UBOGlobal.DEBUG_VIEW_MODE_OFFSET] = debugView.singleMode; + for (var _i = DebugViewCompositeType.DIRECT_DIFFUSE; _i < DebugViewCompositeType.MAX_BIT_COUNT; _i++) { + var offset = _i >> 3; + var bit = _i % 8; + fv[UBOGlobal.DEBUG_VIEW_MODE_OFFSET + 1 + offset] += (debugView.isCompositeModeEnabled(_i) ? 1.0 : 0.0) * Math.pow(10.0, bit); + } + fv[UBOGlobal.DEBUG_VIEW_MODE_OFFSET + 3] += (debugView.lightingWithAlbedo ? 1.0 : 0.0) * Math.pow(10.0, 6.0); + fv[UBOGlobal.DEBUG_VIEW_MODE_OFFSET + 3] += (debugView.csmLayerColoration ? 1.0 : 0.0) * Math.pow(10.0, 7.0); + } + }; + PipelineUBO.updateCameraUBOView = function updateCameraUBOView(pipeline, bufferView, camera) { + var _skybox$envmap; + var scene = camera.scene ? camera.scene : legacyCC.director.getScene().renderScene; + var mainLight = scene.mainLight; + var sceneData = pipeline.pipelineSceneData; + var ambient = sceneData.ambient; + var skybox = sceneData.skybox; + var fog = sceneData.fog; + var shadowInfo = sceneData.shadows; + var cv = bufferView; + var exposure = camera.exposure; + var isHDR = sceneData.isHDR; + cv[UBOCamera.SCREEN_SCALE_OFFSET] = sceneData.shadingScale; + cv[UBOCamera.SCREEN_SCALE_OFFSET + 1] = sceneData.shadingScale; + cv[UBOCamera.SCREEN_SCALE_OFFSET + 2] = 1.0 / cv[UBOCamera.SCREEN_SCALE_OFFSET]; + cv[UBOCamera.SCREEN_SCALE_OFFSET + 3] = 1.0 / cv[UBOCamera.SCREEN_SCALE_OFFSET + 1]; + cv[UBOCamera.EXPOSURE_OFFSET] = exposure; + cv[UBOCamera.EXPOSURE_OFFSET + 1] = 1.0 / exposure; + cv[UBOCamera.EXPOSURE_OFFSET + 2] = isHDR ? 1.0 : 0.0; + cv[UBOCamera.EXPOSURE_OFFSET + 3] = 1.0 / Camera$1.standardExposureValue; + if (mainLight) { + var shadowEnable = mainLight.shadowEnabled && shadowInfo.type === ShadowType.ShadowMap ? 1.0 : 0.0; + var mainLightDir = mainLight.direction; + _lightDir.set(mainLightDir.x, mainLightDir.y, mainLightDir.z, shadowEnable); + Vec4.toArray(cv, _lightDir, UBOCamera.MAIN_LIT_DIR_OFFSET); + Vec3.toArray(cv, mainLight.color, UBOCamera.MAIN_LIT_COLOR_OFFSET); + if (mainLight.useColorTemperature) { + var _colorTempRGB = mainLight.colorTemperatureRGB; + cv[UBOCamera.MAIN_LIT_COLOR_OFFSET] *= _colorTempRGB.x; + cv[UBOCamera.MAIN_LIT_COLOR_OFFSET + 1] *= _colorTempRGB.y; + cv[UBOCamera.MAIN_LIT_COLOR_OFFSET + 2] *= _colorTempRGB.z; + } + if (isHDR) { + cv[UBOCamera.MAIN_LIT_COLOR_OFFSET + 3] = mainLight.illuminance * exposure; + } else { + cv[UBOCamera.MAIN_LIT_COLOR_OFFSET + 3] = mainLight.illuminance; + } + } else { + _lightDir.set(0, 0, 1, 0); + Vec4.toArray(cv, _lightDir, UBOCamera.MAIN_LIT_DIR_OFFSET); + Vec4.toArray(cv, Vec4.ZERO, UBOCamera.MAIN_LIT_COLOR_OFFSET); + } + var skyColor = ambient.skyColor; + if (isHDR) { + skyColor.w = ambient.skyIllum * exposure; + } else { + skyColor.w = ambient.skyIllum; + } + cv[UBOCamera.AMBIENT_SKY_OFFSET + 0] = skyColor.x; + cv[UBOCamera.AMBIENT_SKY_OFFSET + 1] = skyColor.y; + cv[UBOCamera.AMBIENT_SKY_OFFSET + 2] = skyColor.z; + cv[UBOCamera.AMBIENT_SKY_OFFSET + 3] = skyColor.w; + cv[UBOCamera.AMBIENT_GROUND_OFFSET + 0] = ambient.groundAlbedo.x; + cv[UBOCamera.AMBIENT_GROUND_OFFSET + 1] = ambient.groundAlbedo.y; + cv[UBOCamera.AMBIENT_GROUND_OFFSET + 2] = ambient.groundAlbedo.z; + cv[UBOCamera.AMBIENT_GROUND_OFFSET + 3] = skybox.envmap ? (_skybox$envmap = skybox.envmap) === null || _skybox$envmap === void 0 ? void 0 : _skybox$envmap.mipmapLevel : 1.0; + Mat4.toArray(cv, camera.matView, UBOCamera.MAT_VIEW_OFFSET); + Mat4.toArray(cv, camera.node.worldMatrix, UBOCamera.MAT_VIEW_INV_OFFSET); + Vec3.toArray(cv, camera.position, UBOCamera.CAMERA_POS_OFFSET); + Mat4.toArray(cv, camera.matProj, UBOCamera.MAT_PROJ_OFFSET); + Mat4.toArray(cv, camera.matProjInv, UBOCamera.MAT_PROJ_INV_OFFSET); + Mat4.toArray(cv, camera.matViewProj, UBOCamera.MAT_VIEW_PROJ_OFFSET); + Mat4.toArray(cv, camera.matViewProjInv, UBOCamera.MAT_VIEW_PROJ_INV_OFFSET); + cv[UBOCamera.CAMERA_POS_OFFSET + 3] = this.getCombineSignY(); + cv[UBOCamera.SURFACE_TRANSFORM_OFFSET] = camera.surfaceTransform; + cv[UBOCamera.SURFACE_TRANSFORM_OFFSET + 1] = camera.cameraUsage; + cv[UBOCamera.SURFACE_TRANSFORM_OFFSET + 2] = Math.cos(toRadian(sceneData.skybox.getRotationAngle())); + cv[UBOCamera.SURFACE_TRANSFORM_OFFSET + 3] = Math.sin(toRadian(sceneData.skybox.getRotationAngle())); + var colorTempRGB = fog.colorArray; + cv[UBOCamera.GLOBAL_FOG_COLOR_OFFSET] = colorTempRGB.x; + cv[UBOCamera.GLOBAL_FOG_COLOR_OFFSET + 1] = colorTempRGB.y; + cv[UBOCamera.GLOBAL_FOG_COLOR_OFFSET + 2] = colorTempRGB.z; + cv[UBOCamera.GLOBAL_FOG_COLOR_OFFSET + 3] = colorTempRGB.z; + cv[UBOCamera.GLOBAL_FOG_BASE_OFFSET] = fog.fogStart; + cv[UBOCamera.GLOBAL_FOG_BASE_OFFSET + 1] = fog.fogEnd; + cv[UBOCamera.GLOBAL_FOG_BASE_OFFSET + 2] = fog.fogDensity; + cv[UBOCamera.GLOBAL_FOG_ADD_OFFSET] = fog.fogTop; + cv[UBOCamera.GLOBAL_FOG_ADD_OFFSET + 1] = fog.fogRange; + cv[UBOCamera.GLOBAL_FOG_ADD_OFFSET + 2] = fog.fogAtten; + cv[UBOCamera.NEAR_FAR_OFFSET] = camera.nearClip; + cv[UBOCamera.NEAR_FAR_OFFSET + 1] = camera.farClip; + cv[UBOCamera.NEAR_FAR_OFFSET + 2] = camera.getClipSpaceMinz(); + cv[UBOCamera.VIEW_PORT_OFFSET] = sceneData.shadingScale * camera.window.width * camera.viewport.x; + cv[UBOCamera.VIEW_PORT_OFFSET + 1] = sceneData.shadingScale * camera.window.height * camera.viewport.y; + cv[UBOCamera.VIEW_PORT_OFFSET + 2] = sceneData.shadingScale * camera.window.width * camera.viewport.z; + cv[UBOCamera.VIEW_PORT_OFFSET + 3] = sceneData.shadingScale * camera.window.height * camera.viewport.w; + }; + PipelineUBO.getPCFRadius = function getPCFRadius(shadowInfo, mainLight) { + var shadowMapSize = shadowInfo.size.x; + switch (mainLight.shadowPcf) { + case PCFType.HARD: + return 0.0; + case PCFType.SOFT: + return 1.0 / (shadowMapSize * 0.5); + case PCFType.SOFT_2X: + return 2.0 / (shadowMapSize * 0.5); + case PCFType.SOFT_4X: + return 3.0 / (shadowMapSize * 0.5); + } + return 0.0; + }; + PipelineUBO.updatePlanarNormalAndDistance = function updatePlanarNormalAndDistance(shadowInfo, shadowUBO) { + Vec3.normalize(_tempVec3$3, shadowInfo.normal); + shadowUBO[UBOShadow.PLANAR_NORMAL_DISTANCE_INFO_OFFSET + 0] = _tempVec3$3.x; + shadowUBO[UBOShadow.PLANAR_NORMAL_DISTANCE_INFO_OFFSET + 1] = _tempVec3$3.y; + shadowUBO[UBOShadow.PLANAR_NORMAL_DISTANCE_INFO_OFFSET + 2] = _tempVec3$3.z; + shadowUBO[UBOShadow.PLANAR_NORMAL_DISTANCE_INFO_OFFSET + 3] = -shadowInfo.distance; + }; + PipelineUBO.updateShadowUBOView = function updateShadowUBOView(pipeline, shadowBufferView, csmBufferView, camera) { + var device = pipeline.device; + var mainLight = camera.scene.mainLight; + var sceneData = pipeline.pipelineSceneData; + var shadowInfo = sceneData.shadows; + var csmLayers = sceneData.csmLayers; + var sv = shadowBufferView; + var cv = csmBufferView; + var csmSupported = sceneData.csmSupported; + var packing = supportsR32FloatTexture(device) ? 0.0 : 1.0; + if (mainLight && shadowInfo.enabled) { + if (shadowInfo.type === ShadowType.ShadowMap) { + if (mainLight.shadowEnabled) { + if (mainLight.shadowFixedArea || mainLight.csmLevel === CSMLevel.LEVEL_1 || !csmSupported) { + var matShadowView = csmLayers.specialLayer.matShadowView; + var matShadowProj = csmLayers.specialLayer.matShadowProj; + var matShadowViewProj = csmLayers.specialLayer.matShadowViewProj; + var near = 0.1; + var far = 0; + var levelCount = 0; + if (mainLight.shadowFixedArea) { + near = mainLight.shadowNear; + far = mainLight.shadowFar; + levelCount = 0; + } else { + far = csmLayers.specialLayer.shadowCameraFar; + levelCount = 1; + } + Mat4.toArray(sv, matShadowView, UBOShadow.MAT_LIGHT_VIEW_OFFSET); + sv[UBOShadow.SHADOW_PROJ_DEPTH_INFO_OFFSET + 0] = matShadowProj.m10; + sv[UBOShadow.SHADOW_PROJ_DEPTH_INFO_OFFSET + 1] = matShadowProj.m14; + sv[UBOShadow.SHADOW_PROJ_DEPTH_INFO_OFFSET + 2] = matShadowProj.m11; + sv[UBOShadow.SHADOW_PROJ_DEPTH_INFO_OFFSET + 3] = matShadowProj.m15; + sv[UBOShadow.SHADOW_PROJ_INFO_OFFSET + 0] = matShadowProj.m00; + sv[UBOShadow.SHADOW_PROJ_INFO_OFFSET + 1] = matShadowProj.m05; + sv[UBOShadow.SHADOW_PROJ_INFO_OFFSET + 2] = 1.0 / matShadowProj.m00; + sv[UBOShadow.SHADOW_PROJ_INFO_OFFSET + 3] = 1.0 / matShadowProj.m05; + Mat4.toArray(sv, matShadowViewProj, UBOShadow.MAT_LIGHT_VIEW_PROJ_OFFSET); + _vec4ShadowInfo.set(near, far, 0, 1.0 - mainLight.shadowSaturation); + Vec4.toArray(sv, _vec4ShadowInfo, UBOShadow.SHADOW_NEAR_FAR_LINEAR_SATURATION_INFO_OFFSET); + _vec4ShadowInfo.set(LightType.DIRECTIONAL, packing, mainLight.shadowNormalBias, levelCount); + Vec4.toArray(sv, _vec4ShadowInfo, UBOShadow.SHADOW_LIGHT_PACKING_NBIAS_NULL_INFO_OFFSET); + } else { + var layerThreshold = this.getPCFRadius(shadowInfo, mainLight); + for (var i = 0; i < mainLight.csmLevel; i++) { + var layer = csmLayers.layers[i]; + var _matShadowView2 = layer.matShadowView; + _vec4ShadowInfo.set(_matShadowView2.m00, _matShadowView2.m04, _matShadowView2.m08, layerThreshold); + Vec4.toArray(cv, _vec4ShadowInfo, UBOCSM.CSM_VIEW_DIR_0_OFFSET + 4 * i); + _vec4ShadowInfo.set(_matShadowView2.m01, _matShadowView2.m05, _matShadowView2.m09, layer.splitCameraNear); + Vec4.toArray(cv, _vec4ShadowInfo, UBOCSM.CSM_VIEW_DIR_1_OFFSET + 4 * i); + _vec4ShadowInfo.set(_matShadowView2.m02, _matShadowView2.m06, _matShadowView2.m10, layer.splitCameraFar); + Vec4.toArray(cv, _vec4ShadowInfo, UBOCSM.CSM_VIEW_DIR_2_OFFSET + 4 * i); + var csmAtlas = layer.csmAtlas; + Vec4.toArray(cv, csmAtlas, UBOCSM.CSM_ATLAS_OFFSET + 4 * i); + var _matShadowViewProj2 = layer.matShadowViewProj; + Mat4.toArray(cv, _matShadowViewProj2, UBOCSM.MAT_CSM_VIEW_PROJ_OFFSET + 16 * i); + var _matShadowProj2 = layer.matShadowProj; + cv[UBOCSM.CSM_PROJ_DEPTH_INFO_OFFSET + 0 + 4 * i] = _matShadowProj2.m10; + cv[UBOCSM.CSM_PROJ_DEPTH_INFO_OFFSET + 1 + 4 * i] = _matShadowProj2.m14; + cv[UBOCSM.CSM_PROJ_DEPTH_INFO_OFFSET + 2 + 4 * i] = _matShadowProj2.m11; + cv[UBOCSM.CSM_PROJ_DEPTH_INFO_OFFSET + 3 + 4 * i] = _matShadowProj2.m15; + cv[UBOCSM.CSM_PROJ_INFO_OFFSET + 0 + 4 * i] = _matShadowProj2.m00; + cv[UBOCSM.CSM_PROJ_INFO_OFFSET + 1 + 4 * i] = _matShadowProj2.m05; + cv[UBOCSM.CSM_PROJ_INFO_OFFSET + 2 + 4 * i] = 1.0 / _matShadowProj2.m00; + cv[UBOCSM.CSM_PROJ_INFO_OFFSET + 3 + 4 * i] = 1.0 / _matShadowProj2.m05; + } + _vec4ShadowInfo.set(mainLight.csmTransitionRange, 0, 0, 0); + Vec4.toArray(cv, _vec4ShadowInfo, UBOCSM.CSM_SPLITS_INFO_OFFSET); + _vec4ShadowInfo.set(0.1, mainLight.shadowDistance, 0, 1.0 - mainLight.shadowSaturation); + Vec4.toArray(sv, _vec4ShadowInfo, UBOShadow.SHADOW_NEAR_FAR_LINEAR_SATURATION_INFO_OFFSET); + _vec4ShadowInfo.set(LightType.DIRECTIONAL, packing, mainLight.shadowNormalBias, mainLight.csmLevel); + Vec4.toArray(sv, _vec4ShadowInfo, UBOShadow.SHADOW_LIGHT_PACKING_NBIAS_NULL_INFO_OFFSET); + } + _vec4ShadowInfo.set(shadowInfo.size.x, shadowInfo.size.y, mainLight.shadowPcf, mainLight.shadowBias); + Vec4.toArray(sv, _vec4ShadowInfo, UBOShadow.SHADOW_WIDTH_HEIGHT_PCF_BIAS_INFO_OFFSET); + } + } else { + PipelineUBO.updatePlanarNormalAndDistance(shadowInfo, sv); + } + Color$1.toArray(sv, shadowInfo.shadowColor, UBOShadow.SHADOW_COLOR_OFFSET); + } + }; + PipelineUBO.updateShadowUBOLightView = function updateShadowUBOLightView(pipeline, shadowBufferView, light, level) { + var device = pipeline.device; + var sceneData = pipeline.pipelineSceneData; + var shadowInfo = sceneData.shadows; + var csmLayers = sceneData.csmLayers; + var sv = shadowBufferView; + var packing = supportsR32FloatTexture(device) ? 0.0 : 1.0; + var cap = pipeline.device.capabilities; + var csmSupported = sceneData.csmSupported; + switch (light.type) { + case LightType.DIRECTIONAL: + { + var mainLight = light; + if (shadowInfo.enabled && mainLight && mainLight.shadowEnabled) { + if (shadowInfo.type === ShadowType.ShadowMap) { + var near = 0.1; + var far = 0; + var matShadowView; + var matShadowProj; + var matShadowViewProj; + var levelCount = 0; + if (mainLight.shadowFixedArea || mainLight.csmLevel === CSMLevel.LEVEL_1 || !csmSupported) { + matShadowView = csmLayers.specialLayer.matShadowView; + matShadowProj = csmLayers.specialLayer.matShadowProj; + matShadowViewProj = csmLayers.specialLayer.matShadowViewProj; + if (mainLight.shadowFixedArea) { + near = mainLight.shadowNear; + far = mainLight.shadowFar; + levelCount = 0; + } else { + near = 0.1; + far = csmLayers.specialLayer.shadowCameraFar; + levelCount = 1; + } + _vec4ShadowInfo.set(LightType.DIRECTIONAL, packing, mainLight.shadowNormalBias, 0); + Vec4.toArray(sv, _vec4ShadowInfo, UBOShadow.SHADOW_LIGHT_PACKING_NBIAS_NULL_INFO_OFFSET); + } else { + var layer = csmLayers.layers[level]; + matShadowView = layer.matShadowView; + matShadowProj = layer.matShadowProj; + matShadowViewProj = layer.matShadowViewProj; + near = layer.splitCameraNear; + far = layer.splitCameraFar; + levelCount = mainLight.csmLevel; + } + Mat4.toArray(sv, matShadowView, UBOShadow.MAT_LIGHT_VIEW_OFFSET); + sv[UBOShadow.SHADOW_PROJ_DEPTH_INFO_OFFSET + 0] = matShadowProj.m10; + sv[UBOShadow.SHADOW_PROJ_DEPTH_INFO_OFFSET + 1] = matShadowProj.m14; + sv[UBOShadow.SHADOW_PROJ_DEPTH_INFO_OFFSET + 2] = matShadowProj.m11; + sv[UBOShadow.SHADOW_PROJ_DEPTH_INFO_OFFSET + 3] = matShadowProj.m15; + sv[UBOShadow.SHADOW_PROJ_INFO_OFFSET + 0] = matShadowProj.m00; + sv[UBOShadow.SHADOW_PROJ_INFO_OFFSET + 1] = matShadowProj.m05; + sv[UBOShadow.SHADOW_PROJ_INFO_OFFSET + 2] = 1.0 / matShadowProj.m00; + sv[UBOShadow.SHADOW_PROJ_INFO_OFFSET + 3] = 1.0 / matShadowProj.m05; + Mat4.toArray(sv, matShadowViewProj, UBOShadow.MAT_LIGHT_VIEW_PROJ_OFFSET); + _vec4ShadowInfo.set(near, far, 0, 1.0 - mainLight.shadowSaturation); + Vec4.toArray(sv, _vec4ShadowInfo, UBOShadow.SHADOW_NEAR_FAR_LINEAR_SATURATION_INFO_OFFSET); + _vec4ShadowInfo.set(LightType.DIRECTIONAL, packing, mainLight.shadowNormalBias, levelCount); + Vec4.toArray(sv, _vec4ShadowInfo, UBOShadow.SHADOW_LIGHT_PACKING_NBIAS_NULL_INFO_OFFSET); + _vec4ShadowInfo.set(shadowInfo.size.x, shadowInfo.size.y, mainLight.shadowPcf, mainLight.shadowBias); + Vec4.toArray(sv, _vec4ShadowInfo, UBOShadow.SHADOW_WIDTH_HEIGHT_PCF_BIAS_INFO_OFFSET); + } + } + break; + } + case LightType.SPOT: + { + var spotLight = light; + if (shadowInfo.enabled && spotLight && spotLight.shadowEnabled) { + Mat4.invert(_matShadowView$2, light.node.getWorldMatrix()); + Mat4.toArray(sv, _matShadowView$2, UBOShadow.MAT_LIGHT_VIEW_OFFSET); + Mat4.perspective(_matShadowProj$1, spotLight.angle, 1.0, 0.001, spotLight.range, true, cap.clipSpaceMinZ, cap.clipSpaceSignY, 0); + Mat4.multiply(_matShadowViewProj$2, _matShadowProj$1, _matShadowView$2); + Mat4.toArray(sv, _matShadowViewProj$2, UBOShadow.MAT_LIGHT_VIEW_PROJ_OFFSET); + _vec4ShadowInfo.set(0.01, light.range, 0.0, 0.0); + Vec4.toArray(sv, _vec4ShadowInfo, UBOShadow.SHADOW_NEAR_FAR_LINEAR_SATURATION_INFO_OFFSET); + _vec4ShadowInfo.set(shadowInfo.size.x, shadowInfo.size.y, spotLight.shadowPcf, spotLight.shadowBias); + Vec4.toArray(sv, _vec4ShadowInfo, UBOShadow.SHADOW_WIDTH_HEIGHT_PCF_BIAS_INFO_OFFSET); + _vec4ShadowInfo.set(LightType.SPOT, packing, spotLight.shadowNormalBias, 0.0); + Vec4.toArray(sv, _vec4ShadowInfo, UBOShadow.SHADOW_LIGHT_PACKING_NBIAS_NULL_INFO_OFFSET); + } + break; + } + } + Color$1.toArray(sv, shadowInfo.shadowColor, UBOShadow.SHADOW_COLOR_OFFSET); + }; + PipelineUBO.getCombineSignY = function getCombineSignY() { + return PipelineUBO._combineSignY; + }; + var _proto = PipelineUBO.prototype; + _proto._initCombineSignY = function _initCombineSignY() { + var device = this._device; + PipelineUBO._combineSignY = device.capabilities.screenSpaceSignY * 0.5 + 0.5 << 1 | device.capabilities.clipSpaceSignY * 0.5 + 0.5; + }; + _proto.activate = function activate(device, pipeline) { + this._device = device; + this._pipeline = pipeline; + var ds = this._pipeline.descriptorSet; + if (isEnableEffect()) { + return; + } + this._initCombineSignY(); + var globalUBO = device.createBuffer(new BufferInfo(BufferUsageBit.UNIFORM | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.HOST | MemoryUsageBit.DEVICE, UBOGlobal.SIZE, UBOGlobal.SIZE)); + ds.bindBuffer(UBOGlobal.BINDING, globalUBO); + var cameraUBO = device.createBuffer(new BufferInfo(BufferUsageBit.UNIFORM | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.HOST | MemoryUsageBit.DEVICE, UBOCamera.SIZE, UBOCamera.SIZE)); + ds.bindBuffer(UBOCamera.BINDING, cameraUBO); + var shadowUBO = device.createBuffer(new BufferInfo(BufferUsageBit.UNIFORM | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.HOST | MemoryUsageBit.DEVICE, UBOShadow.SIZE, UBOShadow.SIZE)); + var binding = isEnableEffect() ? getDescBindingFromName('CCShadow') : UBOShadow.BINDING; + ds.bindBuffer(binding, shadowUBO); + var csmUBO = device.createBuffer(new BufferInfo(BufferUsageBit.UNIFORM | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.HOST | MemoryUsageBit.DEVICE, UBOCSM.SIZE, UBOCSM.SIZE)); + var csmBinding = isEnableEffect() ? getDescBindingFromName('CCCSM') : UBOCSM.BINDING; + ds.bindBuffer(csmBinding, csmUBO); + }; + _proto.updateGlobalUBO = function updateGlobalUBO(window) { + var globalDSManager = this._pipeline.globalDSManager; + var ds = this._pipeline.descriptorSet; + var cmdBuffer = this._pipeline.commandBuffers; + ds.update(); + PipelineUBO.updateGlobalUBOView(window, this._globalUBO); + cmdBuffer[0].updateBuffer(ds.getBuffer(UBOGlobal.BINDING), this._globalUBO); + globalDSManager.bindBuffer(UBOGlobal.BINDING, ds.getBuffer(UBOGlobal.BINDING)); + globalDSManager.update(); + }; + _proto.updateCameraUBO = function updateCameraUBO(camera) { + var globalDSManager = this._pipeline.globalDSManager; + var ds = this._pipeline.descriptorSet; + var cmdBuffer = this._pipeline.commandBuffers; + PipelineUBO.updateCameraUBOView(this._pipeline, this._cameraUBO, camera); + cmdBuffer[0].updateBuffer(ds.getBuffer(UBOCamera.BINDING), this._cameraUBO); + globalDSManager.bindBuffer(UBOCamera.BINDING, ds.getBuffer(UBOCamera.BINDING)); + globalDSManager.update(); + }; + _proto.updateShadowUBO = function updateShadowUBO(camera) { + var sceneData = this._pipeline.pipelineSceneData; + var shadowInfo = sceneData.shadows; + if (!shadowInfo.enabled) return; + var ds = this._pipeline.descriptorSet; + var cmdBuffer = this._pipeline.commandBuffers; + var shadowFrameBufferMap = sceneData.shadowFrameBufferMap; + var mainLight = camera.scene.mainLight; + if (mainLight && shadowFrameBufferMap.has(mainLight)) { + ds.bindTexture(UNIFORM_SHADOWMAP_BINDING, shadowFrameBufferMap.get(mainLight).colorTextures[0]); + } + PipelineUBO.updateShadowUBOView(this._pipeline, this._shadowUBO, this._csmUBO, camera); + ds.update(); + var binding = isEnableEffect() ? getDescBindingFromName('CCShadow') : UBOShadow.BINDING; + cmdBuffer[0].updateBuffer(ds.getBuffer(binding), this._shadowUBO); + var csmBinding = isEnableEffect() ? getDescBindingFromName('CCCSM') : UBOCSM.BINDING; + cmdBuffer[0].updateBuffer(ds.getBuffer(csmBinding), this._csmUBO); + }; + _proto.updateShadowUBOLight = function updateShadowUBOLight(globalDS, light, level) { + if (level === void 0) { + level = 0; + } + PipelineUBO.updateShadowUBOLightView(this._pipeline, this._shadowUBO, light, level); + globalDS.bindTexture(UNIFORM_SHADOWMAP_BINDING, builtinResMgr.get('default-texture').getGFXTexture()); + globalDS.bindTexture(UNIFORM_SPOT_SHADOW_MAP_TEXTURE_BINDING, builtinResMgr.get('default-texture').getGFXTexture()); + globalDS.update(); + var binding = isEnableEffect() ? getDescBindingFromName('CCShadow') : UBOShadow.BINDING; + this._pipeline.commandBuffers[0].updateBuffer(globalDS.getBuffer(binding), this._shadowUBO); + }; + _proto.updateShadowUBORange = function updateShadowUBORange(offset, data) { + if (data instanceof Mat4) { + Mat4.toArray(this._shadowUBO, data, offset); + } else if (data instanceof Color$1) { + Color$1.toArray(this._shadowUBO, data, offset); + } + }; + _proto.destroy = function destroy() {}; + return PipelineUBO; + }(); + PipelineUBO._combineSignY = 0; + + var _dec$1X, _class$1U, _class2$1H, _initializer$1u, _initializer2$19, _initializer3$R; + var RenderStage = exports('cS', (_dec$1X = ccclass$t('RenderStage'), _dec$1X(_class$1U = (_class2$1H = function () { + function RenderStage() { + this._name = _initializer$1u && _initializer$1u(); + this._priority = _initializer2$19 && _initializer2$19(); + this._enabled = true; + this._tag = _initializer3$R && _initializer3$R(); + this._pipeline = void 0; + this._flow = void 0; + } + var _proto = RenderStage.prototype; + _proto.initialize = function initialize(info) { + this._name = info.name; + this._priority = info.priority; + if (info.tag) { + this._tag = info.tag; + } + return true; + }; + _proto.activate = function activate(pipeline, flow) { + this._pipeline = pipeline; + this._flow = flow; + }; + _createClass(RenderStage, [{ + key: "name", + get: function get() { + return this._name; + } + }, { + key: "priority", + get: function get() { + return this._priority; + } + }, { + key: "tag", + get: function get() { + return this._tag; + } + }, { + key: "enabled", + get: function get() { + return this._enabled; + }, + set: function set(val) { + this._enabled = val; + } + }]); + return RenderStage; + }(), (_initializer$1u = applyDecoratedInitializer(_class2$1H.prototype, "_name", [serializable$9], function () { + return ''; + }), _initializer2$19 = applyDecoratedInitializer(_class2$1H.prototype, "_priority", [serializable$9], function () { + return 0; + }), _initializer3$R = applyDecoratedInitializer(_class2$1H.prototype, "_tag", [serializable$9], function () { + return 0; + })), _class2$1H)) || _class$1U)); + legacyCC.RenderStage = RenderStage; + + var _dec$1W, _dec2$1k, _class$1T, _class2$1G, _initializer$1t, _initializer2$18, _initializer3$Q, _initializer4$I; + var RenderFlow = exports('cR', (_dec$1W = ccclass$t('RenderFlow'), _dec2$1k = type$8([RenderStage]), _dec$1W(_class$1T = (_class2$1G = function () { + function RenderFlow() { + this._name = _initializer$1t && _initializer$1t(); + this._priority = _initializer2$18 && _initializer2$18(); + this._tag = _initializer3$Q && _initializer3$Q(); + this._stages = _initializer4$I && _initializer4$I(); + this._pipeline = void 0; + } + var _proto = RenderFlow.prototype; + _proto.initialize = function initialize(info) { + this._name = info.name; + this._priority = info.priority; + this._stages = info.stages; + if (info.tag) { + this._tag = info.tag; + } + return true; + }; + _proto.activate = function activate(pipeline) { + this._pipeline = pipeline; + this._stages.sort(function (a, b) { + return a.priority - b.priority; + }); + for (var i = 0, len = this._stages.length; i < len; i++) { + this._stages[i].activate(pipeline, this); + } + }; + _proto.render = function render(camera) { + for (var i = 0, len = this._stages.length; i < len; i++) { + if (this._stages[i].enabled) this._stages[i].render(camera); + } + }; + _proto.destroy = function destroy() { + for (var i = 0, len = this._stages.length; i < len; i++) { + this._stages[i].destroy(); + } + this._stages.length = 0; + }; + _createClass(RenderFlow, [{ + key: "name", + get: function get() { + return this._name; + } + }, { + key: "priority", + get: function get() { + return this._priority; + } + }, { + key: "tag", + get: function get() { + return this._tag; + } + }, { + key: "stages", + get: function get() { + return this._stages; + } + }, { + key: "pipeline", + get: function get() { + return this._pipeline; + } + }]); + return RenderFlow; + }(), (_initializer$1t = applyDecoratedInitializer(_class2$1G.prototype, "_name", [serializable$9], function () { + return ''; + }), _initializer2$18 = applyDecoratedInitializer(_class2$1G.prototype, "_priority", [serializable$9], function () { + return 0; + }), _initializer3$Q = applyDecoratedInitializer(_class2$1G.prototype, "_tag", [serializable$9], function () { + return 0; + }), _initializer4$I = applyDecoratedInitializer(_class2$1G.prototype, "_stages", [_dec2$1k, serializable$9], function () { + return []; + })), _class2$1G)) || _class$1T)); + legacyCC.RenderFlow = RenderFlow; + + var PipelineEventType; exports('d7', PipelineEventType); + (function (PipelineEventType) { + PipelineEventType["RENDER_FRAME_BEGIN"] = "render-frame-begin"; + PipelineEventType["RENDER_FRAME_END"] = "render-frame-end"; + PipelineEventType["RENDER_CAMERA_BEGIN"] = "render-camera-begin"; + PipelineEventType["RENDER_CAMERA_END"] = "render-camera-end"; + PipelineEventType["ATTACHMENT_SCALE_CAHNGED"] = "attachment-scale-changed"; + })(PipelineEventType || (exports('d7', PipelineEventType = {}))); + var PipelineEventProcessor = exports('d6', function (_EventTarget) { + _inheritsLoose(PipelineEventProcessor, _EventTarget); + function PipelineEventProcessor() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _EventTarget.call.apply(_EventTarget, [this].concat(args)) || this; + _this.eventTargetOn = _EventTarget.prototype.on; + _this.eventTargetOnce = _EventTarget.prototype.once; + return _this; + } + var _proto = PipelineEventProcessor.prototype; + _proto.on = function on(type, callback, target, once) { + return this.eventTargetOn(type, callback, target, once); + }; + _proto.once = function once(type, callback, target) { + return this.eventTargetOnce(type, callback, target); + }; + return PipelineEventProcessor; + }(EventTarget)); + + var _dec$1V, _dec2$1j, _class4$d, _class5$d, _initializer$1s, _initializer2$17; + var MAX_BLOOM_FILTER_PASS_NUM = 6; + var tmpRect = new Rect(); + var tmpViewport = new Viewport(); + var BloomRenderData = function BloomRenderData() { + this.renderPass = null; + this.sampler = null; + this.prefiterTex = null; + this.downsampleTexs = []; + this.upsampleTexs = []; + this.combineTex = null; + this.prefilterFramebuffer = null; + this.downsampleFramebuffers = []; + this.upsampleFramebuffers = []; + this.combineFramebuffer = null; + }; + var PipelineRenderData = function PipelineRenderData() { + this.outputFrameBuffer = null; + this.outputRenderTargets = []; + this.outputDepth = null; + this.sampler = null; + this.bloom = null; + }; + var PipelineInputAssemblerData = function PipelineInputAssemblerData() { + this.quadIB = null; + this.quadVB = null; + this.quadIA = null; + }; + function hashFrameBuffer(fbo) { + var hash = 666; + for (var _iterator = _createForOfIteratorHelperLoose(fbo.colorTextures), _step; !(_step = _iterator()).done;) { + var color = _step.value; + var _info = color === null || color === void 0 ? void 0 : color.info; + var _hashStr = _info.type + "_" + _info.usage + "_" + _info.format + "_" + _info.width + "_" + _info.height + "_" + _info.flags + "_\n " + _info.layerCount + "_" + _info.levelCount + "_" + _info.samples + "_" + _info.depth + "_" + _info.externalRes; + hash = murmurhash2_32_gc(_hashStr, hash); + } + if (fbo.depthStencilTexture) { + var info = fbo.depthStencilTexture.info; + var hashStr = info.type + "_" + info.usage + "_" + info.format + "_" + info.width + "_" + info.height + "_" + info.flags + "_\n " + info.layerCount + "_" + info.levelCount + "_" + info.samples + "_" + info.depth + "_" + info.externalRes; + hash = murmurhash2_32_gc(hashStr, hash); + } + return hash; + } + var RenderPipeline = exports('cQ', (_dec$1V = ccclass$t('cc.RenderPipeline'), _dec2$1j = type$8([RenderFlow]), _dec$1V(_class4$d = (_class5$d = function (_Asset) { + _inheritsLoose(RenderPipeline, _Asset); + function RenderPipeline() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Asset.call.apply(_Asset, [this].concat(args)) || this; + _this._tag = _initializer$1s && _initializer$1s(); + _this._flows = _initializer2$17 && _initializer2$17(); + _this._quadIB = null; + _this._quadVBOnscreen = null; + _this._quadVBOffscreen = null; + _this._quadIAOnscreen = null; + _this._quadIAOffscreen = null; + _this._eventProcessor = new PipelineEventProcessor(); + _this._device = void 0; + _this._globalDSManager = void 0; + _this._descriptorSet = void 0; + _this._commandBuffers = []; + _this._pipelineUBO = new PipelineUBO(); + _this._macros = {}; + _this._constantMacros = ''; + _this._profiler = null; + _this._geometryRenderer = null; + _this._pipelineRenderData = null; + _this._renderPasses = new Map(); + _this._width = 0; + _this._height = 0; + _this._lastUsedRenderArea = new Rect(); + _this._clusterEnabled = false; + _this._bloomEnabled = false; + return _this; + } + var _proto = RenderPipeline.prototype; + _proto.getPipelineRenderData = function getPipelineRenderData() { + return this._pipelineRenderData; + }; + _proto.initialize = function initialize(info) { + this._flows = info.flows; + if (info.tag) { + this._tag = info.tag; + } + return true; + }; + _proto.createRenderPass = function createRenderPass(clearFlags, colorFmt, depthFmt) { + var device = this._device; + var colorAttachment = new ColorAttachment(); + var depthStencilAttachment = new DepthStencilAttachment(); + colorAttachment.format = colorFmt; + depthStencilAttachment.format = depthFmt; + depthStencilAttachment.stencilStoreOp = StoreOp.DISCARD; + depthStencilAttachment.depthStoreOp = StoreOp.DISCARD; + if (!(clearFlags & ClearFlagBit.COLOR)) { + if (clearFlags & SKYBOX_FLAG) { + colorAttachment.loadOp = LoadOp.CLEAR; + } else { + colorAttachment.loadOp = LoadOp.LOAD; + colorAttachment.barrier = device.getGeneralBarrier(new GeneralBarrierInfo(AccessFlagBit.COLOR_ATTACHMENT_WRITE, AccessFlagBit.COLOR_ATTACHMENT_WRITE)); + } + } + if ((clearFlags & ClearFlagBit.DEPTH_STENCIL) !== ClearFlagBit.DEPTH_STENCIL) { + if (!(clearFlags & ClearFlagBit.DEPTH)) depthStencilAttachment.depthLoadOp = LoadOp.LOAD; + if (!(clearFlags & ClearFlagBit.STENCIL)) depthStencilAttachment.stencilLoadOp = LoadOp.LOAD; + } + depthStencilAttachment.barrier = device.getGeneralBarrier(new GeneralBarrierInfo(AccessFlagBit.DEPTH_STENCIL_ATTACHMENT_WRITE, AccessFlagBit.DEPTH_STENCIL_ATTACHMENT_WRITE)); + var renderPassInfo = new RenderPassInfo([colorAttachment], depthStencilAttachment); + return device.createRenderPass(renderPassInfo); + }; + _proto.getRenderPass = function getRenderPass(clearFlags, fbo) { + var fbHash = hashFrameBuffer(fbo); + var hash = murmurhash2_32_gc(fbHash + "_" + clearFlags, 666); + var renderPass = this._renderPasses.get(hash); + if (renderPass) { + return renderPass; + } + renderPass = this.createRenderPass(clearFlags, fbo.colorTextures[0].format, fbo.depthStencilTexture.format); + this._renderPasses.set(hash, renderPass); + return renderPass; + }; + _proto.newFramebufferByRatio = function newFramebufferByRatio(dyingFramebuffer) { + var sceneData = this.pipelineSceneData; + var width = this._width * sceneData.shadingScale; + var height = this._height * sceneData.shadingScale; + var colorTexArr = dyingFramebuffer.colorTextures; + for (var i = 0; i < colorTexArr.length; i++) { + colorTexArr[i].resize(width, height); + } + if (dyingFramebuffer.depthStencilTexture) { + dyingFramebuffer.depthStencilTexture.resize(width, height); + } + var newFramebuffer = this._device.createFramebuffer(new FramebufferInfo(dyingFramebuffer.renderPass, colorTexArr, dyingFramebuffer.depthStencilTexture)); + dyingFramebuffer.destroy(); + return newFramebuffer; + }; + _proto.generateRenderArea = function generateRenderArea(camera, out) { + var vp = camera.viewport; + var w = camera.window.width; + var h = camera.window.height; + out.x = vp.x * w; + out.y = vp.y * h; + out.width = vp.width * w; + out.height = vp.height * h; + }; + _proto.generateViewport = function generateViewport(camera, out) { + this.generateRenderArea(camera, tmpRect); + if (!out) out = tmpViewport; + var shadingScale = this.pipelineSceneData.shadingScale; + out.left = tmpRect.x * shadingScale; + out.top = tmpRect.y * shadingScale; + out.width = tmpRect.width * shadingScale; + out.height = tmpRect.height * shadingScale; + return out; + }; + _proto.generateScissor = function generateScissor(camera, out) { + if (!out) out = tmpRect; + this.generateRenderArea(camera, out); + var shadingScale = this.pipelineSceneData.shadingScale; + out.x *= shadingScale; + out.y *= shadingScale; + out.width *= shadingScale; + out.height *= shadingScale; + return out; + }; + _proto.getMacroString = function getMacroString(name) { + var str = this._macros[name]; + if (str === undefined) { + return ''; + } + return str; + }; + _proto.getMacroInt = function getMacroInt(name) { + var value = this._macros[name]; + if (value === undefined) { + return 0; + } + return value; + }; + _proto.getMacroBool = function getMacroBool(name) { + var value = this._macros[name]; + if (value === undefined) { + return false; + } + return value; + }; + _proto.setMacroString = function setMacroString(name, value) { + this._macros[name] = value; + }; + _proto.setMacroInt = function setMacroInt(name, value) { + this._macros[name] = value; + }; + _proto.setMacroBool = function setMacroBool(name, value) { + this._macros[name] = value; + }; + _proto.activate = function activate(swapchain) { + this._device = deviceManager.gfxDevice; + this._generateConstantMacros(); + this._globalDSManager = new GlobalDSManager(this._device); + this._descriptorSet = this._globalDSManager.globalDescriptorSet; + this._pipelineUBO.activate(this._device, this); + this._macros.CC_USE_HDR = this._pipelineSceneData.isHDR; + this._macros.CC_USE_DEBUG_VIEW = 0; + this._generateConstantMacros(); + this._pipelineSceneData.activate(this._device); + for (var i = 0; i < this._flows.length; i++) { + this._flows[i].activate(this); + } + return true; + }; + _proto._ensureEnoughSize = function _ensureEnoughSize(cameras) {}; + _proto.render = function render(cameras) { + if (cameras.length === 0) { + return; + } + this.updateGeometryRenderer(cameras); + this._commandBuffers[0].begin(); + this.emit(PipelineEventType.RENDER_FRAME_BEGIN, cameras); + this._ensureEnoughSize(cameras); + decideProfilerCamera(cameras); + for (var i = 0; i < cameras.length; i++) { + var camera = cameras[i]; + if (camera.scene) { + this.emit(PipelineEventType.RENDER_CAMERA_BEGIN, camera); + validPunctualLightsCulling$1(this, camera); + sceneCulling(this, camera); + this._pipelineUBO.updateGlobalUBO(camera.window); + this._pipelineUBO.updateCameraUBO(camera); + for (var j = 0; j < this._flows.length; j++) { + this._flows[j].render(camera); + } + this.emit(PipelineEventType.RENDER_CAMERA_END, camera); + } + } + this.emit(PipelineEventType.RENDER_FRAME_END, cameras); + this._commandBuffers[0].end(); + this._device.queue.submit(this._commandBuffers); + }; + _proto._destroyQuadInputAssembler = function _destroyQuadInputAssembler() { + if (this._quadIB) { + this._quadIB.destroy(); + this._quadIB = null; + } + if (this._quadVBOnscreen) { + this._quadVBOnscreen.destroy(); + this._quadVBOnscreen = null; + } + if (this._quadVBOffscreen) { + this._quadVBOffscreen.destroy(); + this._quadVBOffscreen = null; + } + if (this._quadIAOnscreen) { + this._quadIAOnscreen.destroy(); + this._quadIAOnscreen = null; + } + if (this._quadIAOffscreen) { + this._quadIAOffscreen.destroy(); + this._quadIAOffscreen = null; + } + }; + _proto._destroyBloomData = function _destroyBloomData() { + var _bloom$renderPass; + var bloom = this._pipelineRenderData.bloom; + if (bloom === null) return; + if (bloom.prefiterTex) bloom.prefiterTex.destroy(); + if (bloom.prefilterFramebuffer) bloom.prefilterFramebuffer.destroy(); + for (var i = 0; i < bloom.downsampleTexs.length; ++i) { + bloom.downsampleTexs[i].destroy(); + bloom.downsampleFramebuffers[i].destroy(); + } + bloom.downsampleTexs.length = 0; + bloom.downsampleFramebuffers.length = 0; + for (var _i = 0; _i < bloom.upsampleTexs.length; ++_i) { + bloom.upsampleTexs[_i].destroy(); + bloom.upsampleFramebuffers[_i].destroy(); + } + bloom.upsampleTexs.length = 0; + bloom.upsampleFramebuffers.length = 0; + if (bloom.combineTex) bloom.combineTex.destroy(); + if (bloom.combineFramebuffer) bloom.combineFramebuffer.destroy(); + (_bloom$renderPass = bloom.renderPass) === null || _bloom$renderPass === void 0 ? void 0 : _bloom$renderPass.destroy(); + this._pipelineRenderData.bloom = null; + }; + _proto._genQuadVertexData = function _genQuadVertexData(surfaceTransform, renderArea) { + var vbData = new Float32Array(4 * 4); + var minX = renderArea.x / this._width; + var maxX = (renderArea.x + renderArea.width) / this._width; + var minY = renderArea.y / this._height; + var maxY = (renderArea.y + renderArea.height) / this._height; + if (this.device.capabilities.screenSpaceSignY > 0) { + var temp = maxY; + maxY = minY; + minY = temp; + } + var n = 0; + switch (surfaceTransform) { + case SurfaceTransform.IDENTITY: + n = 0; + vbData[n++] = -1.0; + vbData[n++] = -1.0; + vbData[n++] = minX; + vbData[n++] = maxY; + vbData[n++] = 1.0; + vbData[n++] = -1.0; + vbData[n++] = maxX; + vbData[n++] = maxY; + vbData[n++] = -1.0; + vbData[n++] = 1.0; + vbData[n++] = minX; + vbData[n++] = minY; + vbData[n++] = 1.0; + vbData[n++] = 1.0; + vbData[n++] = maxX; + vbData[n++] = minY; + break; + case SurfaceTransform.ROTATE_90: + n = 0; + vbData[n++] = -1.0; + vbData[n++] = -1.0; + vbData[n++] = maxX; + vbData[n++] = maxY; + vbData[n++] = 1.0; + vbData[n++] = -1.0; + vbData[n++] = maxX; + vbData[n++] = minY; + vbData[n++] = -1.0; + vbData[n++] = 1.0; + vbData[n++] = minX; + vbData[n++] = maxY; + vbData[n++] = 1.0; + vbData[n++] = 1.0; + vbData[n++] = minX; + vbData[n++] = minY; + break; + case SurfaceTransform.ROTATE_180: + n = 0; + vbData[n++] = -1.0; + vbData[n++] = -1.0; + vbData[n++] = minX; + vbData[n++] = minY; + vbData[n++] = 1.0; + vbData[n++] = -1.0; + vbData[n++] = maxX; + vbData[n++] = minY; + vbData[n++] = -1.0; + vbData[n++] = 1.0; + vbData[n++] = minX; + vbData[n++] = maxY; + vbData[n++] = 1.0; + vbData[n++] = 1.0; + vbData[n++] = maxX; + vbData[n++] = maxY; + break; + case SurfaceTransform.ROTATE_270: + n = 0; + vbData[n++] = -1.0; + vbData[n++] = -1.0; + vbData[n++] = minX; + vbData[n++] = minY; + vbData[n++] = 1.0; + vbData[n++] = -1.0; + vbData[n++] = minX; + vbData[n++] = maxY; + vbData[n++] = -1.0; + vbData[n++] = 1.0; + vbData[n++] = maxX; + vbData[n++] = minY; + vbData[n++] = 1.0; + vbData[n++] = 1.0; + vbData[n++] = maxX; + vbData[n++] = maxY; + break; + } + return vbData; + }; + _proto._createQuadInputAssembler = function _createQuadInputAssembler() { + var inputAssemblerData = new PipelineInputAssemblerData(); + var vbStride = Float32Array.BYTES_PER_ELEMENT * 4; + var vbSize = vbStride * 4; + var quadVB = this._device.createBuffer(new BufferInfo(BufferUsageBit.VERTEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE | MemoryUsageBit.HOST, vbSize, vbStride)); + if (!quadVB) { + return inputAssemblerData; + } + var ibStride = Uint8Array.BYTES_PER_ELEMENT; + var ibSize = ibStride * 6; + var quadIB = this._device.createBuffer(new BufferInfo(BufferUsageBit.INDEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, ibSize, ibStride)); + if (!quadIB) { + return inputAssemblerData; + } + var indices = new Uint8Array(6); + indices[0] = 0; + indices[1] = 1; + indices[2] = 2; + indices[3] = 1; + indices[4] = 3; + indices[5] = 2; + quadIB.update(indices); + var attributes = new Array(2); + attributes[0] = new Attribute('a_position', Format.RG32F); + attributes[1] = new Attribute('a_texCoord', Format.RG32F); + var quadIA = this._device.createInputAssembler(new InputAssemblerInfo(attributes, [quadVB], quadIB)); + inputAssemblerData.quadIB = quadIB; + inputAssemblerData.quadVB = quadVB; + inputAssemblerData.quadIA = quadIA; + return inputAssemblerData; + }; + _proto.updateQuadVertexData = function updateQuadVertexData(renderArea, window) { + var cachedArea = this._lastUsedRenderArea; + if (cachedArea.x === renderArea.x && cachedArea.y === renderArea.y && cachedArea.width === renderArea.width && cachedArea.height === renderArea.height) { + return; + } + var offData = this._genQuadVertexData(SurfaceTransform.IDENTITY, renderArea); + this._quadVBOffscreen.update(offData); + var onData = this._genQuadVertexData(window.swapchain && window.swapchain.surfaceTransform || SurfaceTransform.IDENTITY, renderArea); + this._quadVBOnscreen.update(onData); + cachedArea.copy(renderArea); + }; + _proto.destroy = function destroy() { + var _this$_globalDSManage, _this$_pipelineSceneD; + for (var i = 0; i < this._flows.length; i++) { + this._flows[i].destroy(); + } + this._flows.length = 0; + if (this._descriptorSet) { + this._descriptorSet.destroy(); + } + (_this$_globalDSManage = this._globalDSManager) === null || _this$_globalDSManage === void 0 ? void 0 : _this$_globalDSManage.destroy(); + for (var _i2 = 0; _i2 < this._commandBuffers.length; _i2++) { + this._commandBuffers[_i2].destroy(); + } + this._commandBuffers.length = 0; + this._pipelineUBO.destroy(); + (_this$_pipelineSceneD = this._pipelineSceneData) === null || _this$_pipelineSceneD === void 0 ? void 0 : _this$_pipelineSceneD.destroy(); + return _Asset.prototype.destroy.call(this); + }; + _proto.onGlobalPipelineStateChanged = function onGlobalPipelineStateChanged() {}; + _proto._generateConstantMacros = function _generateConstantMacros() { + var str = ''; + str += "#define CC_DEVICE_SUPPORT_FLOAT_TEXTURE " + (this.device.getFormatFeatures(Format.RGBA32F) & (FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.SAMPLED_TEXTURE) ? 1 : 0) + "\n"; + str += "#define CC_ENABLE_CLUSTERED_LIGHT_CULLING " + (this._clusterEnabled ? 1 : 0) + "\n"; + str += "#define CC_DEVICE_MAX_VERTEX_UNIFORM_VECTORS " + this.device.capabilities.maxVertexUniformVectors + "\n"; + str += "#define CC_DEVICE_MAX_FRAGMENT_UNIFORM_VECTORS " + this.device.capabilities.maxFragmentUniformVectors + "\n"; + str += "#define CC_DEVICE_CAN_BENEFIT_FROM_INPUT_ATTACHMENT " + (this.device.hasFeature(Feature.INPUT_ATTACHMENT_BENEFIT) ? 1 : 0) + "\n"; + str += "#define CC_PLATFORM_ANDROID_AND_WEBGL " + (systemInfo.os === OS.ANDROID && systemInfo.isBrowser ? 1 : 0) + "\n"; + str += "#define CC_ENABLE_WEBGL_HIGHP_STRUCT_VALUES " + (macro.ENABLE_WEBGL_HIGHP_STRUCT_VALUES ? 1 : 0) + "\n"; + var jointUniformCapacity = UBOSkinning.JOINT_UNIFORM_CAPACITY; + str += "#define CC_JOINT_UNIFORM_CAPACITY " + jointUniformCapacity + "\n"; + this._constantMacros = str; + }; + _proto.updateGeometryRenderer = function updateGeometryRenderer(cameras) { + if (this._geometryRenderer) { + return; + } + for (var i = 0; i < cameras.length; i++) { + var camera = cameras[i]; + if (camera && camera.window && camera.window.swapchain) { + camera.initGeometryRenderer(); + this._geometryRenderer = camera.geometryRenderer; + return; + } + } + }; + _proto.generateBloomRenderData = function generateBloomRenderData() { + if (this._pipelineRenderData.bloom != null) return; + var bloom = this._pipelineRenderData.bloom = new BloomRenderData(); + var device = this.device; + var colorAttachment = new ColorAttachment(); + colorAttachment.format = Format.RGBA8; + colorAttachment.loadOp = LoadOp.CLEAR; + colorAttachment.storeOp = StoreOp.STORE; + colorAttachment.barrier = device.getGeneralBarrier(new GeneralBarrierInfo(AccessFlagBit.NONE, AccessFlagBit.COLOR_ATTACHMENT_WRITE)); + bloom.renderPass = device.createRenderPass(new RenderPassInfo([colorAttachment])); + var curWidth = this._width; + var curHeight = this._height; + bloom.prefiterTex = device.createTexture(new TextureInfo(TextureType.TEX2D, TextureUsageBit.COLOR_ATTACHMENT | TextureUsageBit.SAMPLED, Format.RGBA8, curWidth >> 1, curHeight >> 1)); + bloom.prefilterFramebuffer = device.createFramebuffer(new FramebufferInfo(bloom.renderPass, [bloom.prefiterTex])); + curWidth >>= 1; + curHeight >>= 1; + for (var i = 0; i < MAX_BLOOM_FILTER_PASS_NUM; ++i) { + bloom.downsampleTexs.push(device.createTexture(new TextureInfo(TextureType.TEX2D, TextureUsageBit.COLOR_ATTACHMENT | TextureUsageBit.SAMPLED, Format.RGBA8, curWidth >> 1, curHeight >> 1))); + bloom.downsampleFramebuffers[i] = device.createFramebuffer(new FramebufferInfo(bloom.renderPass, [bloom.downsampleTexs[i]])); + bloom.upsampleTexs.push(device.createTexture(new TextureInfo(TextureType.TEX2D, TextureUsageBit.COLOR_ATTACHMENT | TextureUsageBit.SAMPLED, Format.RGBA8, curWidth, curHeight))); + bloom.upsampleFramebuffers[i] = device.createFramebuffer(new FramebufferInfo(bloom.renderPass, [bloom.upsampleTexs[i]])); + curWidth >>= 1; + curHeight >>= 1; + } + bloom.combineTex = device.createTexture(new TextureInfo(TextureType.TEX2D, TextureUsageBit.COLOR_ATTACHMENT | TextureUsageBit.SAMPLED, Format.RGBA8, this._width, this._height)); + bloom.combineFramebuffer = device.createFramebuffer(new FramebufferInfo(bloom.renderPass, [bloom.combineTex])); + bloom.sampler = this.globalDSManager.linearSampler; + }; + _proto.on = function on(type, callback, target, once) { + return this._eventProcessor.on(type, callback, target, once); + }; + _proto.once = function once(type, callback, target) { + return this._eventProcessor.once(type, callback, target); + }; + _proto.off = function off(type, callback, target) { + this._eventProcessor.off(type, callback, target); + }; + _proto.emit = function emit(type, arg0, arg1, arg2, arg3, arg4) { + this._eventProcessor.emit(type, arg0, arg1, arg2, arg3, arg4); + }; + _proto.targetOff = function targetOff(typeOrTarget) { + this._eventProcessor.targetOff(typeOrTarget); + }; + _proto.removeAll = function removeAll(typeOrTarget) { + this._eventProcessor.removeAll(typeOrTarget); + }; + _proto.hasEventListener = function hasEventListener(type, callback, target) { + return this._eventProcessor.hasEventListener(type, callback, target); + }; + _createClass(RenderPipeline, [{ + key: "tag", + get: function get() { + return this._tag; + } + }, { + key: "flows", + get: function get() { + return this._flows; + } + }, { + key: "quadIAOnscreen", + get: function get() { + return this._quadIAOnscreen; + } + }, { + key: "quadIAOffscreen", + get: function get() { + return this._quadIAOffscreen; + } + }, { + key: "constantMacros", + get: function get() { + return this._constantMacros; + } + }, { + key: "macros", + get: function get() { + return this._macros; + } + }, { + key: "device", + get: function get() { + return this._device; + } + }, { + key: "globalDSManager", + get: function get() { + return this._globalDSManager; + } + }, { + key: "descriptorSetLayout", + get: function get() { + return this._globalDSManager.descriptorSetLayout; + } + }, { + key: "descriptorSet", + get: function get() { + return this._descriptorSet; + } + }, { + key: "commandBuffers", + get: function get() { + return this._commandBuffers; + } + }, { + key: "pipelineUBO", + get: function get() { + return this._pipelineUBO; + } + }, { + key: "pipelineSceneData", + get: function get() { + return this._pipelineSceneData; + } + }, { + key: "profiler", + get: function get() { + return this._profiler; + }, + set: function set(value) { + this._profiler = value; + } + }, { + key: "geometryRenderer", + get: function get() { + return this._geometryRenderer; + } + }, { + key: "clusterEnabled", + get: function get() { + return this._clusterEnabled; + }, + set: function set(value) { + this._clusterEnabled = value; + } + }, { + key: "bloomEnabled", + get: function get() { + return this._bloomEnabled; + }, + set: function set(value) { + this._bloomEnabled = value; + } + }, { + key: "shadingScale", + get: function get() { + return this._pipelineSceneData.shadingScale; + }, + set: function set(val) { + if (this._pipelineSceneData.shadingScale !== val) { + this._pipelineSceneData.shadingScale = val; + this.emit(PipelineEventType.ATTACHMENT_SCALE_CAHNGED, val); + } + } + }]); + return RenderPipeline; + }(Asset), (_initializer$1s = applyDecoratedInitializer(_class5$d.prototype, "_tag", [serializable$9], function () { + return 0; + }), _initializer2$17 = applyDecoratedInitializer(_class5$d.prototype, "_flows", [_dec2$1j, serializable$9], function () { + return []; + })), _class5$d)) || _class4$d)); + legacyCC.RenderPipeline = RenderPipeline; + + var CommonStagePriority; + (function (CommonStagePriority) { + CommonStagePriority[CommonStagePriority["BLOOM"] = 18] = "BLOOM"; + CommonStagePriority[CommonStagePriority["POST_PROCESS"] = 19] = "POST_PROCESS"; + CommonStagePriority[CommonStagePriority["UI"] = 20] = "UI"; + })(CommonStagePriority || (CommonStagePriority = {})); + var ForwardStagePriority; + (function (ForwardStagePriority) { + ForwardStagePriority[ForwardStagePriority["AR"] = 5] = "AR"; + ForwardStagePriority[ForwardStagePriority["FORWARD"] = 10] = "FORWARD"; + })(ForwardStagePriority || (ForwardStagePriority = {})); + var ForwardFlowPriority; + (function (ForwardFlowPriority) { + ForwardFlowPriority[ForwardFlowPriority["SHADOW"] = 0] = "SHADOW"; + ForwardFlowPriority[ForwardFlowPriority["FORWARD"] = 1] = "FORWARD"; + ForwardFlowPriority[ForwardFlowPriority["UI"] = 10] = "UI"; + })(ForwardFlowPriority || (ForwardFlowPriority = {})); + var DeferredStagePriority; + (function (DeferredStagePriority) { + DeferredStagePriority[DeferredStagePriority["GBUFFER"] = 10] = "GBUFFER"; + DeferredStagePriority[DeferredStagePriority["LIGHTING"] = 15] = "LIGHTING"; + DeferredStagePriority[DeferredStagePriority["TRANSPARENT"] = 18] = "TRANSPARENT"; + })(DeferredStagePriority || (DeferredStagePriority = {})); + var DeferredFlowPriority; + (function (DeferredFlowPriority) { + DeferredFlowPriority[DeferredFlowPriority["SHADOW"] = 0] = "SHADOW"; + DeferredFlowPriority[DeferredFlowPriority["MAIN"] = 1] = "MAIN"; + DeferredFlowPriority[DeferredFlowPriority["UI"] = 10] = "UI"; + })(DeferredFlowPriority || (DeferredFlowPriority = {})); + + var _dec$1U, _dec2$1i, _dec3$W, _dec4$B, _class$1S, _class2$1F, _initializer$1r, _initializer2$16, _initializer3$P, _initializer4$H, _initializer5$y, _initializer6$t, _dec5$x, _dec6$o, _class4$c, _class5$c, _initializer7$l, _initializer8$k, _dec7$l, _dec8$d, _class7$3, _class8$2, _initializer9$i, _initializer10$i, _dec9$a, _dec10$5, _dec11$2, _class10$2, _class11$2, _initializer11$h, _initializer12$g, _initializer13$d, _initializer14$b, _initializer15$8, _dec12$2, _dec13$2, _dec14$1, _dec15$1, _dec16, _dec17, _class13$2, _class14$1, _initializer16$8, _initializer17$6, _initializer18$4, _initializer19$3, _initializer20$3, _initializer21$3, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _class16, _class17, _initializer22$2, _initializer23$1, _initializer24$1, _initializer25$1, _initializer26$1, _initializer27$1, _initializer28$1, _initializer29$1, _dec26, _dec27, _dec28, _class19, _class20$1, _initializer30$1, _initializer31$1, _initializer32$1, _dec29, _dec30, _dec31, _class22, _class23, _initializer33$1, _initializer34$1, _initializer35$1; + ccenum(TextureType); + ccenum(TextureUsageBit); + ccenum(StoreOp); + ccenum(LoadOp); + ccenum(AccessFlagBit); + ccenum(Format); + var RenderFlowTag; + (function (RenderFlowTag) { + RenderFlowTag[RenderFlowTag["SCENE"] = 0] = "SCENE"; + RenderFlowTag[RenderFlowTag["POSTPROCESS"] = 1] = "POSTPROCESS"; + RenderFlowTag[RenderFlowTag["UI"] = 2] = "UI"; + })(RenderFlowTag || (RenderFlowTag = {})); + ccenum(RenderFlowTag); + (_dec$1U = ccclass$t('RenderTextureDesc'), _dec2$1i = type$8(TextureType), _dec3$W = type$8(TextureUsageBit), _dec4$B = type$8(Format), _dec$1U(_class$1S = (_class2$1F = function RenderTextureDesc() { + this.name = _initializer$1r && _initializer$1r(); + this.type = _initializer2$16 && _initializer2$16(); + this.usage = _initializer3$P && _initializer3$P(); + this.format = _initializer4$H && _initializer4$H(); + this.width = _initializer5$y && _initializer5$y(); + this.height = _initializer6$t && _initializer6$t(); + }, (_initializer$1r = applyDecoratedInitializer(_class2$1F.prototype, "name", [serializable$9], function () { + return ''; + }), _initializer2$16 = applyDecoratedInitializer(_class2$1F.prototype, "type", [_dec2$1i], function () { + return TextureType.TEX2D; + }), _initializer3$P = applyDecoratedInitializer(_class2$1F.prototype, "usage", [_dec3$W], function () { + return TextureUsageBit.COLOR_ATTACHMENT; + }), _initializer4$H = applyDecoratedInitializer(_class2$1F.prototype, "format", [_dec4$B], function () { + return Format.UNKNOWN; + }), _initializer5$y = applyDecoratedInitializer(_class2$1F.prototype, "width", [serializable$9], function () { + return -1; + }), _initializer6$t = applyDecoratedInitializer(_class2$1F.prototype, "height", [serializable$9], function () { + return -1; + })), _class2$1F)) || _class$1S); + var RenderTextureConfig = (_dec5$x = ccclass$t('RenderTextureConfig'), _dec6$o = type$8(RenderTexture), _dec5$x(_class4$c = (_class5$c = function RenderTextureConfig() { + this.name = _initializer7$l && _initializer7$l(); + this.texture = _initializer8$k && _initializer8$k(); + }, (_initializer7$l = applyDecoratedInitializer(_class5$c.prototype, "name", [serializable$9], function () { + return ''; + }), _initializer8$k = applyDecoratedInitializer(_class5$c.prototype, "texture", [_dec6$o], function () { + return null; + })), _class5$c)) || _class4$c); + (_dec7$l = ccclass$t('MaterialConfig'), _dec8$d = type$8(Material), _dec7$l(_class7$3 = (_class8$2 = function MaterialConfig() { + this.name = _initializer9$i && _initializer9$i(); + this.material = _initializer10$i && _initializer10$i(); + }, (_initializer9$i = applyDecoratedInitializer(_class8$2.prototype, "name", [serializable$9], function () { + return ''; + }), _initializer10$i = applyDecoratedInitializer(_class8$2.prototype, "material", [_dec8$d], function () { + return null; + })), _class8$2)) || _class7$3); + (_dec9$a = ccclass$t('FrameBufferDesc'), _dec10$5 = type$8([CCString]), _dec11$2 = type$8(RenderTexture), _dec9$a(_class10$2 = (_class11$2 = function FrameBufferDesc() { + this.name = _initializer11$h && _initializer11$h(); + this.renderPass = _initializer12$g && _initializer12$g(); + this.colorTextures = _initializer13$d && _initializer13$d(); + this.depthStencilTexture = _initializer14$b && _initializer14$b(); + this.texture = _initializer15$8 && _initializer15$8(); + }, (_initializer11$h = applyDecoratedInitializer(_class11$2.prototype, "name", [serializable$9], function () { + return ''; + }), _initializer12$g = applyDecoratedInitializer(_class11$2.prototype, "renderPass", [serializable$9], function () { + return 0; + }), _initializer13$d = applyDecoratedInitializer(_class11$2.prototype, "colorTextures", [_dec10$5], function () { + return []; + }), _initializer14$b = applyDecoratedInitializer(_class11$2.prototype, "depthStencilTexture", [serializable$9], function () { + return ''; + }), _initializer15$8 = applyDecoratedInitializer(_class11$2.prototype, "texture", [_dec11$2], function () { + return null; + })), _class11$2)) || _class10$2); + var ColorDesc = (_dec12$2 = ccclass$t('ColorDesc'), _dec13$2 = type$8(Format), _dec14$1 = type$8(LoadOp), _dec15$1 = type$8(StoreOp), _dec16 = type$8(AccessFlagBit), _dec17 = type$8(AccessFlagBit), _dec12$2(_class13$2 = (_class14$1 = function ColorDesc() { + this.format = _initializer16$8 && _initializer16$8(); + this.loadOp = _initializer17$6 && _initializer17$6(); + this.storeOp = _initializer18$4 && _initializer18$4(); + this.sampleCount = _initializer19$3 && _initializer19$3(); + this.beginAccesses = _initializer20$3 && _initializer20$3(); + this.endAccesses = _initializer21$3 && _initializer21$3(); + }, (_initializer16$8 = applyDecoratedInitializer(_class14$1.prototype, "format", [_dec13$2], function () { + return Format.UNKNOWN; + }), _initializer17$6 = applyDecoratedInitializer(_class14$1.prototype, "loadOp", [_dec14$1], function () { + return LoadOp.CLEAR; + }), _initializer18$4 = applyDecoratedInitializer(_class14$1.prototype, "storeOp", [_dec15$1], function () { + return StoreOp.STORE; + }), _initializer19$3 = applyDecoratedInitializer(_class14$1.prototype, "sampleCount", [serializable$9], function () { + return 1; + }), _initializer20$3 = applyDecoratedInitializer(_class14$1.prototype, "beginAccesses", [_dec16], function () { + return AccessFlagBit.NONE; + }), _initializer21$3 = applyDecoratedInitializer(_class14$1.prototype, "endAccesses", [_dec17], function () { + return AccessFlagBit.COLOR_ATTACHMENT_WRITE; + })), _class14$1)) || _class13$2); + var DepthStencilDesc = (_dec18 = ccclass$t('DepthStencilDesc'), _dec19 = type$8(Format), _dec20 = type$8(LoadOp), _dec21 = type$8(StoreOp), _dec22 = type$8(LoadOp), _dec23 = type$8(StoreOp), _dec24 = type$8(AccessFlagBit), _dec25 = type$8(AccessFlagBit), _dec18(_class16 = (_class17 = function DepthStencilDesc() { + this.format = _initializer22$2 && _initializer22$2(); + this.depthLoadOp = _initializer23$1 && _initializer23$1(); + this.depthStoreOp = _initializer24$1 && _initializer24$1(); + this.stencilLoadOp = _initializer25$1 && _initializer25$1(); + this.stencilStoreOp = _initializer26$1 && _initializer26$1(); + this.sampleCount = _initializer27$1 && _initializer27$1(); + this.beginAccesses = _initializer28$1 && _initializer28$1(); + this.endAccesses = _initializer29$1 && _initializer29$1(); + }, (_initializer22$2 = applyDecoratedInitializer(_class17.prototype, "format", [_dec19], function () { + return Format.UNKNOWN; + }), _initializer23$1 = applyDecoratedInitializer(_class17.prototype, "depthLoadOp", [_dec20], function () { + return LoadOp.CLEAR; + }), _initializer24$1 = applyDecoratedInitializer(_class17.prototype, "depthStoreOp", [_dec21], function () { + return StoreOp.STORE; + }), _initializer25$1 = applyDecoratedInitializer(_class17.prototype, "stencilLoadOp", [_dec22], function () { + return LoadOp.CLEAR; + }), _initializer26$1 = applyDecoratedInitializer(_class17.prototype, "stencilStoreOp", [_dec23], function () { + return StoreOp.STORE; + }), _initializer27$1 = applyDecoratedInitializer(_class17.prototype, "sampleCount", [serializable$9], function () { + return 1; + }), _initializer28$1 = applyDecoratedInitializer(_class17.prototype, "beginAccesses", [_dec24], function () { + return AccessFlagBit.NONE; + }), _initializer29$1 = applyDecoratedInitializer(_class17.prototype, "endAccesses", [_dec25], function () { + return AccessFlagBit.DEPTH_STENCIL_ATTACHMENT_WRITE; + })), _class17)) || _class16); + (_dec26 = ccclass$t('RenderPassDesc'), _dec27 = type$8([ColorDesc]), _dec28 = type$8(DepthStencilDesc), _dec26(_class19 = (_class20$1 = function RenderPassDesc() { + this.index = _initializer30$1 && _initializer30$1(); + this.colorAttachments = _initializer31$1 && _initializer31$1(); + this.depthStencilAttachment = _initializer32$1 && _initializer32$1(); + }, (_initializer30$1 = applyDecoratedInitializer(_class20$1.prototype, "index", [serializable$9], function () { + return -1; + }), _initializer31$1 = applyDecoratedInitializer(_class20$1.prototype, "colorAttachments", [_dec27], function () { + return []; + }), _initializer32$1 = applyDecoratedInitializer(_class20$1.prototype, "depthStencilAttachment", [_dec28], function () { + return new DepthStencilDesc(); + })), _class20$1)) || _class19); + var RenderQueueSortMode; + (function (RenderQueueSortMode) { + RenderQueueSortMode[RenderQueueSortMode["FRONT_TO_BACK"] = 0] = "FRONT_TO_BACK"; + RenderQueueSortMode[RenderQueueSortMode["BACK_TO_FRONT"] = 1] = "BACK_TO_FRONT"; + })(RenderQueueSortMode || (RenderQueueSortMode = {})); + ccenum(RenderQueueSortMode); + var RenderQueueDesc = (_dec29 = ccclass$t('RenderQueueDesc'), _dec30 = type$8(RenderQueueSortMode), _dec31 = type$8([CCString]), _dec29(_class22 = (_class23 = function RenderQueueDesc() { + this.isTransparent = _initializer33$1 && _initializer33$1(); + this.sortMode = _initializer34$1 && _initializer34$1(); + this.stages = _initializer35$1 && _initializer35$1(); + }, (_initializer33$1 = applyDecoratedInitializer(_class23.prototype, "isTransparent", [serializable$9], function () { + return false; + }), _initializer34$1 = applyDecoratedInitializer(_class23.prototype, "sortMode", [_dec30], function () { + return RenderQueueSortMode.FRONT_TO_BACK; + }), _initializer35$1 = applyDecoratedInitializer(_class23.prototype, "stages", [_dec31], function () { + return []; + })), _class23)) || _class22); + + function opaqueCompareFn(a, b) { + return a.hash - b.hash || a.depth - b.depth || a.shaderId - b.shaderId; + } + function transparentCompareFn(a, b) { + return a.priority - b.priority || a.hash - b.hash || b.depth - a.depth || a.shaderId - b.shaderId; + } + var RenderQueue$1 = function () { + function RenderQueue(desc) { + this.queue = void 0; + this._passDesc = void 0; + this._passPool = void 0; + this._passDesc = desc; + this._passPool = new RecyclePool(function () { + return { + priority: 0, + hash: 0, + depth: 0, + shaderId: 0, + subModel: null, + passIdx: 0 + }; + }, 64); + this.queue = new CachedArray(64, this._passDesc.sortFunc); + } + var _proto = RenderQueue.prototype; + _proto.clear = function clear() { + this.queue.clear(); + this._passPool.reset(); + }; + _proto.insertRenderPass = function insertRenderPass(renderObj, subModelIdx, passIdx) { + var subModel = renderObj.model.subModels[subModelIdx]; + var pass = subModel.passes[passIdx]; + var shader = subModel.shaders[passIdx]; + var isTransparent = pass.blendState.targets[0].blend; + if (isTransparent !== this._passDesc.isTransparent || !(pass.phase & this._passDesc.phases)) { + return false; + } + var hash = 0 << 30 | pass.priority << 16 | subModel.priority << 8 | passIdx; + var rp = this._passPool.add(); + rp.priority = renderObj.model.priority; + rp.hash = hash; + rp.depth = renderObj.depth || 0; + rp.shaderId = shader.typedID; + rp.subModel = subModel; + rp.passIdx = passIdx; + this.queue.push(rp); + return true; + }; + _proto.sort = function sort() { + this.queue.sort(); + }; + _proto.recordCommandBuffer = function recordCommandBuffer(device, renderPass, cmdBuff) { + for (var i = 0; i < this.queue.length; ++i) { + var _this$queue$array$i = this.queue.array[i], + subModel = _this$queue$array$i.subModel, + passIdx = _this$queue$array$i.passIdx; + var inputAssembler = subModel.inputAssembler; + var pass = subModel.passes[passIdx]; + var shader = subModel.shaders[passIdx]; + var pso = PipelineStateManager.getOrCreatePipelineState(device, pass, shader, renderPass, inputAssembler); + cmdBuff.bindPipelineState(pso); + cmdBuff.bindDescriptorSet(SetIndex.MATERIAL, pass.descriptorSet); + cmdBuff.bindDescriptorSet(SetIndex.LOCAL, subModel.descriptorSet); + cmdBuff.bindInputAssembler(inputAssembler); + cmdBuff.draw(inputAssembler); + } + }; + return RenderQueue; + }(); + function convertRenderQueue(desc) { + var phase = 0; + for (var j = 0; j < desc.stages.length; j++) { + phase |= getPhaseID(desc.stages[j]); + } + var sortFunc = opaqueCompareFn; + switch (desc.sortMode) { + case RenderQueueSortMode.BACK_TO_FRONT: + sortFunc = transparentCompareFn; + break; + case RenderQueueSortMode.FRONT_TO_BACK: + sortFunc = opaqueCompareFn; + break; + } + return new RenderQueue$1({ + isTransparent: desc.isTransparent, + phases: phase, + sortFunc: sortFunc + }); + } + function renderQueueClearFunc(rq) { + rq.clear(); + } + function renderQueueSortFunc(rq) { + rq.sort(); + } + + var RenderInstancedQueue = function () { + function RenderInstancedQueue() { + this.queue = new Set(); + this._renderQueue = []; + } + var _proto = RenderInstancedQueue.prototype; + _proto.clear = function clear() { + var it = this.queue.values(); + var res = it.next(); + while (!res.done) { + res.value.clear(); + res = it.next(); + } + this._renderQueue.length = 0; + this.queue.clear(); + }; + _proto.sort = function sort() { + var it = this.queue.values(); + var res = it.next(); + while (!res.done) { + if (!res.value.pass.blendState.targets[0].blend) { + this._renderQueue.push(res.value); + } + res = it.next(); + } + it = this.queue.values(); + res = it.next(); + while (!res.done) { + if (res.value.pass.blendState.targets[0].blend) { + this._renderQueue.push(res.value); + } + res = it.next(); + } + }; + _proto.uploadBuffers = function uploadBuffers(cmdBuff) { + var it = this.queue.values(); + var res = it.next(); + while (!res.done) { + if (res.value.hasPendingModels) res.value.uploadBuffers(cmdBuff); + res = it.next(); + } + }; + _proto.recordCommandBuffer = function recordCommandBuffer(device, renderPass, cmdBuff, descriptorSet, dynamicOffsets) { + if (descriptorSet === void 0) { + descriptorSet = null; + } + var it = this._renderQueue.length === 0 ? this.queue.values() : this._renderQueue[Symbol.iterator](); + var res = it.next(); + while (!res.done) { + var _res$value = res.value, + instances = _res$value.instances, + pass = _res$value.pass, + hasPendingModels = _res$value.hasPendingModels; + if (hasPendingModels) { + cmdBuff.bindDescriptorSet(SetIndex.MATERIAL, pass.descriptorSet); + var lastPSO = null; + for (var b = 0; b < instances.length; ++b) { + var instance = instances[b]; + if (!instance.count) { + continue; + } + var shader = instance.shader; + var pso = PipelineStateManager.getOrCreatePipelineState(device, pass, shader, renderPass, instance.ia); + if (lastPSO !== pso) { + cmdBuff.bindPipelineState(pso); + lastPSO = pso; + } + if (descriptorSet) cmdBuff.bindDescriptorSet(SetIndex.GLOBAL, descriptorSet); + if (dynamicOffsets) { + cmdBuff.bindDescriptorSet(SetIndex.LOCAL, instance.descriptorSet, dynamicOffsets); + } else { + cmdBuff.bindDescriptorSet(SetIndex.LOCAL, instance.descriptorSet, res.value.dynamicOffsets); + } + cmdBuff.bindInputAssembler(instance.ia); + cmdBuff.draw(instance.ia); + } + } + res = it.next(); + } + }; + return RenderInstancedQueue; + }(); + + var _dec$1T, _dec2$1h, _class$1R, _class2$1E, _initializer$1q, _class3$E; + var colors$6 = [new Color(0, 0, 0, 0), new Color(0, 0, 0, 0), new Color(0, 0, 0, 0)]; + var GbufferStage = exports('c_', (_dec$1T = ccclass$t('GbufferStage'), _dec2$1h = type$8([RenderQueueDesc]), _dec$1T(_class$1R = (_class2$1E = (_class3$E = function (_RenderStage) { + _inheritsLoose(GbufferStage, _RenderStage); + function GbufferStage() { + var _this; + _this = _RenderStage.call(this) || this; + _this.renderQueues = _initializer$1q && _initializer$1q(); + _this._renderQueues = []; + _this._renderArea = new Rect(); + _this._instancedQueue = void 0; + _this._phaseID = getPhaseID('default'); + _this._instancedQueue = new RenderInstancedQueue(); + return _this; + } + var _proto = GbufferStage.prototype; + _proto.initialize = function initialize(info) { + _RenderStage.prototype.initialize.call(this, info); + if (info.renderQueues) { + this.renderQueues = info.renderQueues; + } + return true; + }; + _proto.activate = function activate(pipeline, flow) { + _RenderStage.prototype.activate.call(this, pipeline, flow); + for (var i = 0; i < this.renderQueues.length; i++) { + this._renderQueues[i] = convertRenderQueue(this.renderQueues[i]); + } + }; + _proto.destroy = function destroy() {}; + _proto.render = function render(camera) { + this._instancedQueue.clear(); + var pipeline = this._pipeline; + var device = pipeline.device; + this._renderQueues.forEach(renderQueueClearFunc); + pipeline.generateRenderArea(camera, this._renderArea); + pipeline.updateQuadVertexData(this._renderArea, camera.window); + var renderObjects = pipeline.pipelineSceneData.renderObjects; + var m = 0; + var p = 0; + var k = 0; + for (var i = 0; i < renderObjects.length; ++i) { + var ro = renderObjects[i]; + var subModels = ro.model.subModels; + for (m = 0; m < subModels.length; ++m) { + var subModel = subModels[m]; + var passes = subModel.passes; + for (p = 0; p < passes.length; ++p) { + var pass = passes[p]; + if (pass.phase !== this._phaseID) continue; + var batchingScheme = pass.batchingScheme; + if (batchingScheme === BatchingSchemes.INSTANCING) { + var instancedBuffer = pass.getInstancedBuffer(); + instancedBuffer.merge(subModel, p); + this._instancedQueue.queue.add(instancedBuffer); + } else { + for (k = 0; k < this._renderQueues.length; k++) { + this._renderQueues[k].insertRenderPass(ro, m, p); + } + } + } + } + } + this._renderQueues.forEach(renderQueueSortFunc); + var cmdBuff = pipeline.commandBuffers[0]; + this._instancedQueue.uploadBuffers(cmdBuff); + if (camera.clearFlag & ClearFlagBit.COLOR) { + if (pipeline.pipelineSceneData.isHDR) { + SRGBToLinear(colors$6[0], camera.clearColor); + } else { + colors$6[0].x = camera.clearColor.x; + colors$6[0].y = camera.clearColor.y; + colors$6[0].z = camera.clearColor.z; + } + } + colors$6[0].w = camera.clearColor.w; + var deferredData = pipeline.getPipelineRenderData(); + var framebuffer = deferredData.gbufferFrameBuffer; + var renderPass = framebuffer.renderPass; + cmdBuff.beginRenderPass(renderPass, framebuffer, this._renderArea, colors$6, camera.clearDepth, camera.clearStencil); + cmdBuff.setScissor(pipeline.generateScissor(camera)); + cmdBuff.setViewport(pipeline.generateViewport(camera)); + cmdBuff.bindDescriptorSet(SetIndex.GLOBAL, pipeline.descriptorSet); + for (var _i = 0; _i < this.renderQueues.length; _i++) { + this._renderQueues[_i].recordCommandBuffer(device, renderPass, cmdBuff); + } + this._instancedQueue.recordCommandBuffer(device, renderPass, cmdBuff); + cmdBuff.endRenderPass(); + }; + return GbufferStage; + }(RenderStage), _class3$E.initInfo = { + name: 'GbufferStage', + priority: DeferredStagePriority.GBUFFER, + tag: 0, + renderQueues: [{ + isTransparent: false, + sortMode: RenderQueueSortMode.FRONT_TO_BACK, + stages: ['default'] + }, { + isTransparent: true, + sortMode: RenderQueueSortMode.BACK_TO_FRONT, + stages: ['default'] + }] + }, _class3$E), (_initializer$1q = applyDecoratedInitializer(_class2$1E.prototype, "renderQueues", [_dec2$1h, serializable$9], function () { + return []; + })), _class2$1E)) || _class$1R)); + + var _ab = new AABB(); + var _phaseID$4 = getPhaseID('planar-shadow'); + function getPlanarShadowPassIndex(subModel) { + var passes = subModel.passes; + var r = legacyCC.rendering; + if (isEnableEffect()) _phaseID$4 = r.getPhaseID(r.getPassID('default'), 'planar-shadow'); + for (var k = 0; k < passes.length; k++) { + if ((!r || !r.enableEffectImport) && passes[k].phase === _phaseID$4 || isEnableEffect() && passes[k].phaseID === _phaseID$4) { + return k; + } + } + return -1; + } + var PlanarShadowQueue = function () { + function PlanarShadowQueue(pipeline) { + this._subModelArray = []; + this._shaderArray = []; + this._passArray = []; + this._castModels = []; + this._instancedQueue = new RenderInstancedQueue(); + this._pipeline = void 0; + this._pipeline = pipeline; + } + var _proto = PlanarShadowQueue.prototype; + _proto.clear = function clear() { + this._subModelArray.length = 0; + this._shaderArray.length = 0; + this._passArray.length = 0; + this._instancedQueue.clear(); + this._castModels.length = 0; + }; + _proto.gatherShadowPasses = function gatherShadowPasses(camera, cmdBuff) { + this.clear(); + var pipelineSceneData = this._pipeline.pipelineSceneData; + var shadows = pipelineSceneData.shadows; + if (!shadows.enabled || shadows.type !== ShadowType.Planar || shadows.normal.length() < 0.000001) { + return; + } + var scene = camera.scene; + var frustum = camera.frustum; + var shadowVisible = (camera.visibility & Layers.BitMask.DEFAULT) !== 0; + if (!scene.mainLight || !shadowVisible) { + return; + } + var models = scene.models; + var visibility = camera.visibility; + for (var i = 0; i < models.length; i++) { + var model = models[i]; + if (scene.isCulledByLod(camera, model)) { + continue; + } + if (model.enabled && model.node && model.castShadow && model.node && (visibility & model.node.layer) === model.node.layer) { + this._castModels.push(model); + } + } + for (var _i = 0; _i < this._castModels.length; _i++) { + var _model = this._castModels[_i]; + if (_model.worldBounds) { + AABB.transform(_ab, _model.worldBounds, shadows.matLight); + if (!intersect.aabbFrustum(_ab, frustum)) { + continue; + } + } + var subModels = _model.subModels; + for (var j = 0; j < subModels.length; j++) { + var subModel = subModels[j]; + var shadowPassIdx = getPlanarShadowPassIndex(subModel); + if (shadowPassIdx < 0) { + this._subModelArray.push(subModel); + var planarShader = shadows.getPlanarShader(subModel.patches); + if (!planarShader) { + continue; + } + this._shaderArray.push(planarShader); + this._passArray.push(shadows.material.passes[0]); + continue; + } + var pass = subModel.passes[shadowPassIdx]; + var batchingScheme = pass.batchingScheme; + if (batchingScheme === BatchingSchemes.INSTANCING) { + var buffer = pass.getInstancedBuffer(); + buffer.merge(subModel, shadowPassIdx); + this._instancedQueue.queue.add(buffer); + } else { + var shader = subModel.shaders[shadowPassIdx]; + this._subModelArray.push(subModel); + if (shader) this._shaderArray.push(shader); + this._passArray.push(pass); + } + } + } + this._instancedQueue.uploadBuffers(cmdBuff); + }; + _proto.recordCommandBuffer = function recordCommandBuffer(device, renderPass, cmdBuff) { + var shadows = this._pipeline.pipelineSceneData.shadows; + if (!shadows.enabled || shadows.type !== ShadowType.Planar) { + return; + } + this._instancedQueue.recordCommandBuffer(device, renderPass, cmdBuff); + for (var i = 0; i < this._subModelArray.length; ++i) { + var subModel = this._subModelArray[i]; + var shader = this._shaderArray[i]; + var pass = this._passArray[i]; + var ia = subModel.inputAssembler; + var pso = PipelineStateManager.getOrCreatePipelineState(device, pass, shader, renderPass, ia); + var descriptorSet = pass.descriptorSet; + cmdBuff.bindPipelineState(pso); + cmdBuff.bindDescriptorSet(SetIndex.MATERIAL, descriptorSet); + cmdBuff.bindDescriptorSet(SetIndex.LOCAL, subModel.descriptorSet); + cmdBuff.bindInputAssembler(ia); + cmdBuff.draw(ia); + } + }; + return PlanarShadowQueue; + }(); + + var UIPhase = function () { + function UIPhase() { + this._phaseID = getPhaseID('default'); + var r = legacyCC.rendering; + if (isEnableEffect()) this._phaseID = r.getPhaseID(r.getPassID('default'), 'default'); + } + var _proto = UIPhase.prototype; + _proto.activate = function activate(pipeline) { + this._pipeline = pipeline; + }; + _proto.render = function render(camera, renderPass) { + var pipeline = this._pipeline; + var device = pipeline.device; + var cmdBuff = pipeline.commandBuffers[0]; + var scene = camera.scene; + var batches = scene.batches; + for (var i = 0; i < batches.length; i++) { + var batch = batches[i]; + var visible = false; + if (camera.visibility & batch.visFlags) { + visible = true; + } + if (!visible) continue; + var count = batch.shaders.length; + for (var j = 0; j < count; j++) { + var pass = batch.passes[j]; + if (pass.phase !== this._phaseID) continue; + var shader = batch.shaders[j]; + var inputAssembler = batch.inputAssembler; + var pso = PipelineStateManager.getOrCreatePipelineState(device, pass, shader, renderPass, inputAssembler); + cmdBuff.bindPipelineState(pso); + cmdBuff.bindDescriptorSet(SetIndex.MATERIAL, pass.descriptorSet); + var ds = batch.descriptorSet; + cmdBuff.bindDescriptorSet(SetIndex.LOCAL, ds); + cmdBuff.bindInputAssembler(inputAssembler); + cmdBuff.draw(inputAssembler); + } + } + }; + return UIPhase; + }(); + + var _dec$1S, _dec2$1g, _dec3$V, _class$1Q, _class2$1D, _initializer$1p, _initializer2$15, _class3$D; + var _v3$2 = new Vec3(); + var _rangedDirLightBoundingBox$1 = new AABB(0.0, 0.0, 0.0, 0.5, 0.5, 0.5); + var _tmpBoundingBox$1 = new AABB(); + var colors$5 = [new Color(0, 0, 0, 1)]; + var LightingStage = exports('c$', (_dec$1S = ccclass$t('LightingStage'), _dec2$1g = type$8(Material), _dec3$V = type$8([RenderQueueDesc]), _dec$1S(_class$1Q = (_class2$1D = (_class3$D = function (_RenderStage) { + _inheritsLoose(LightingStage, _RenderStage); + function LightingStage() { + var _this; + _this = _RenderStage.call(this) || this; + _this._deferredLitsBufs = null; + _this._maxDeferredLights = UBODeferredLight.LIGHTS_PER_PASS; + _this._lightBufferData = void 0; + _this._lightMeterScale = 10000.0; + _this._descriptorSet = null; + _this._descriptorSetLayout = void 0; + _this._renderArea = new Rect(); + _this._uiPhase = void 0; + _this._deferredMaterial = _initializer$1p && _initializer$1p(); + _this.renderQueues = _initializer2$15 && _initializer2$15(); + _this._phaseID = getPhaseID('default'); + _this._renderQueues = []; + _this._uiPhase = new UIPhase(); + return _this; + } + var _proto = LightingStage.prototype; + _proto.initialize = function initialize(info) { + _RenderStage.prototype.initialize.call(this, info); + return true; + }; + _proto.gatherLights = function gatherLights(camera) { + var pipeline = this._pipeline; + var cmdBuff = pipeline.commandBuffers[0]; + var sphereLights = camera.scene.sphereLights; + var spotLights = camera.scene.spotLights; + var pointLights = camera.scene.pointLights; + var rangedDirLights = camera.scene.rangedDirLights; + var _sphere = Sphere.create(0, 0, 0, 1); + var _vec4Array = new Float32Array(4); + var exposure = camera.exposure; + var idx = 0; + var elementLen = Vec4.length; + var fieldLen = elementLen * this._maxDeferredLights; + for (var i = 0; i < sphereLights.length && idx < this._maxDeferredLights; i++, ++idx) { + var light = sphereLights[i]; + Sphere.set(_sphere, light.position.x, light.position.y, light.position.z, light.range); + if (intersect.sphereFrustum(_sphere, camera.frustum)) { + Vec3.toArray(_vec4Array, light.position); + _vec4Array[3] = LightType.SPHERE; + this._lightBufferData.set(_vec4Array, idx * elementLen); + Vec3.toArray(_vec4Array, light.color); + if (light.useColorTemperature) { + var finalColor = light.finalColor; + _vec4Array[0] = finalColor.x; + _vec4Array[1] = finalColor.y; + _vec4Array[2] = finalColor.z; + } + if (pipeline.pipelineSceneData.isHDR) { + _vec4Array[3] = light.luminance * exposure * this._lightMeterScale; + } else { + _vec4Array[3] = light.luminance; + } + this._lightBufferData.set(_vec4Array, idx * elementLen + fieldLen * 1); + _vec4Array[0] = light.size; + _vec4Array[1] = light.range; + _vec4Array[2] = 0.0; + this._lightBufferData.set(_vec4Array, idx * elementLen + fieldLen * 2); + } + } + for (var _i = 0; _i < spotLights.length && idx < this._maxDeferredLights; _i++, ++idx) { + var _light = spotLights[_i]; + Sphere.set(_sphere, _light.position.x, _light.position.y, _light.position.z, _light.range); + if (intersect.sphereFrustum(_sphere, camera.frustum)) { + Vec3.toArray(_vec4Array, _light.position); + _vec4Array[3] = LightType.SPOT; + this._lightBufferData.set(_vec4Array, idx * elementLen + fieldLen * 0); + Vec3.toArray(_vec4Array, _light.color); + if (_light.useColorTemperature) { + var _finalColor = _light.finalColor; + _vec4Array[0] = _finalColor.x; + _vec4Array[1] = _finalColor.y; + _vec4Array[2] = _finalColor.z; + } + if (pipeline.pipelineSceneData.isHDR) { + _vec4Array[3] = _light.luminance * exposure * this._lightMeterScale; + } else { + _vec4Array[3] = _light.luminance; + } + this._lightBufferData.set(_vec4Array, idx * elementLen + fieldLen * 1); + _vec4Array[0] = _light.size; + _vec4Array[1] = _light.range; + _vec4Array[2] = _light.spotAngle; + this._lightBufferData.set(_vec4Array, idx * elementLen + fieldLen * 2); + Vec3.toArray(_vec4Array, _light.direction); + this._lightBufferData.set(_vec4Array, idx * elementLen + fieldLen * 3); + } + } + for (var _i2 = 0; _i2 < pointLights.length && idx < this._maxDeferredLights; _i2++, ++idx) { + var _light2 = pointLights[_i2]; + Sphere.set(_sphere, _light2.position.x, _light2.position.y, _light2.position.z, _light2.range); + if (intersect.sphereFrustum(_sphere, camera.frustum)) { + Vec3.toArray(_vec4Array, _light2.position); + _vec4Array[3] = LightType.POINT; + this._lightBufferData.set(_vec4Array, idx * elementLen); + Vec3.toArray(_vec4Array, _light2.color); + if (_light2.useColorTemperature) { + var _finalColor2 = _light2.finalColor; + _vec4Array[0] = _finalColor2.x; + _vec4Array[1] = _finalColor2.y; + _vec4Array[2] = _finalColor2.z; + } + if (pipeline.pipelineSceneData.isHDR) { + _vec4Array[3] = _light2.luminance * exposure * this._lightMeterScale; + } else { + _vec4Array[3] = _light2.luminance; + } + this._lightBufferData.set(_vec4Array, idx * elementLen + fieldLen * 1); + _vec4Array[0] = 0.0; + _vec4Array[1] = _light2.range; + _vec4Array[2] = 0.0; + this._lightBufferData.set(_vec4Array, idx * elementLen + fieldLen * 2); + } + } + for (var _i3 = 0; _i3 < rangedDirLights.length && idx < this._maxDeferredLights; _i3++, ++idx) { + var _light3 = rangedDirLights[_i3]; + AABB.transform(_tmpBoundingBox$1, _rangedDirLightBoundingBox$1, _light3.node.getWorldMatrix()); + if (intersect.aabbFrustum(_tmpBoundingBox$1, camera.frustum)) { + Vec3.toArray(_vec4Array, _light3.position); + _vec4Array[3] = LightType.RANGED_DIRECTIONAL; + this._lightBufferData.set(_vec4Array, idx * elementLen); + Vec3.toArray(_vec4Array, _light3.color); + if (_light3.useColorTemperature) { + var _finalColor3 = _light3.finalColor; + _vec4Array[0] = _finalColor3.x; + _vec4Array[1] = _finalColor3.y; + _vec4Array[2] = _finalColor3.z; + } + if (pipeline.pipelineSceneData.isHDR) { + _vec4Array[3] = _light3.illuminance * exposure; + } else { + _vec4Array[3] = _light3.illuminance; + } + this._lightBufferData.set(_vec4Array, idx * elementLen + fieldLen * 1); + Vec3.toArray(_vec4Array, _light3.right); + _vec4Array[3] = 0; + this._lightBufferData.set(_vec4Array, idx * elementLen + fieldLen * 2); + Vec3.toArray(_vec4Array, _light3.direction); + _vec4Array[3] = 0; + this._lightBufferData.set(_vec4Array, idx * elementLen + fieldLen * 3); + var scale = _light3.scale; + _v3$2.set(scale.x * 0.5, scale.y * 0.5, scale.z * 0.5); + Vec3.toArray(_vec4Array, _v3$2); + _vec4Array[3] = 0; + this._lightBufferData.set(_vec4Array, idx * elementLen + fieldLen * 4); + } + } + var offset = fieldLen * 3 + 3; + this._lightBufferData.set([idx], offset); + cmdBuff.updateBuffer(this._deferredLitsBufs, this._lightBufferData); + }; + _proto._createStageDescriptor = function _createStageDescriptor(pass) { + var device = this._pipeline.device; + var totalSize = Float32Array.BYTES_PER_ELEMENT * 4 * 4 * this._maxDeferredLights; + totalSize = Math.ceil(totalSize / device.capabilities.uboOffsetAlignment) * device.capabilities.uboOffsetAlignment; + this._deferredLitsBufs = device.createBuffer(new BufferInfo(BufferUsageBit.UNIFORM | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.HOST | MemoryUsageBit.DEVICE, totalSize, device.capabilities.uboOffsetAlignment)); + var deferredLitsBufView = device.createBuffer(new BufferViewInfo(this._deferredLitsBufs, 0, totalSize)); + this._lightBufferData = new Float32Array(totalSize / Float32Array.BYTES_PER_ELEMENT); + this._descriptorSet = device.createDescriptorSet(new DescriptorSetInfo(pass.localSetLayout)); + this._descriptorSet.bindBuffer(UBOForwardLight.BINDING, deferredLitsBufView); + var _localUBO = device.createBuffer(new BufferInfo(BufferUsageBit.UNIFORM | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, UBOLocal.SIZE, UBOLocal.SIZE)); + this._descriptorSet.bindBuffer(UBOLocal.BINDING, _localUBO); + }; + _proto.activate = function activate(pipeline, flow) { + _RenderStage.prototype.activate.call(this, pipeline, flow); + this._uiPhase.activate(pipeline); + for (var i = 0; i < this.renderQueues.length; i++) { + this._renderQueues[i] = convertRenderQueue(this.renderQueues[i]); + } + this._planarQueue = new PlanarShadowQueue(this._pipeline); + if (this._deferredMaterial) { + pipeline.pipelineSceneData.deferredLightingMaterial = this._deferredMaterial; + } + }; + _proto.destroy = function destroy() { + var _this$_deferredLitsBu; + (_this$_deferredLitsBu = this._deferredLitsBufs) === null || _this$_deferredLitsBu === void 0 ? void 0 : _this$_deferredLitsBu.destroy(); + this._deferredLitsBufs = null; + this._descriptorSet = null; + }; + _proto.render = function render(camera) { + var _camera$geometryRende; + var pipeline = this._pipeline; + var device = pipeline.device; + var cmdBuff = pipeline.commandBuffers[0]; + var sceneData = pipeline.pipelineSceneData; + var renderObjects = sceneData.renderObjects; + this._planarQueue.gatherShadowPasses(camera, cmdBuff); + pipeline.generateRenderArea(camera, this._renderArea); + var deferredData = pipeline.getPipelineRenderData(); + var lightingMat = sceneData.deferredLightingMaterial; + var pass = lightingMat.passes[0]; + var shader = pass.getShaderVariant(); + for (var i = 0; i < 3; ++i) { + pass.descriptorSet.bindTexture(i, deferredData.gbufferRenderTargets[i]); + pass.descriptorSet.bindSampler(i, deferredData.sampler); + } + pass.descriptorSet.bindTexture(3, deferredData.outputDepth); + pass.descriptorSet.bindSampler(3, deferredData.sampler); + pass.descriptorSet.update(); + if (!this._descriptorSet) { + this._createStageDescriptor(pass); + } + this.gatherLights(camera); + if (camera.clearFlag & ClearFlagBit.COLOR) { + colors$5[0].x = camera.clearColor.x; + colors$5[0].y = camera.clearColor.y; + colors$5[0].z = camera.clearColor.z; + } + colors$5[0].w = 0; + var framebuffer = deferredData.outputFrameBuffer; + var renderPass = framebuffer.renderPass; + pipeline.pipelineUBO.updateShadowUBO(camera); + cmdBuff.beginRenderPass(renderPass, framebuffer, this._renderArea, colors$5, camera.clearDepth, camera.clearStencil); + cmdBuff.setScissor(pipeline.generateScissor(camera)); + cmdBuff.setViewport(pipeline.generateViewport(camera)); + cmdBuff.bindDescriptorSet(SetIndex.GLOBAL, pipeline.descriptorSet); + var inputAssembler = pipeline.quadIAOffscreen; + var pso = null; + if (pass != null && shader != null && inputAssembler != null) { + pso = PipelineStateManager.getOrCreatePipelineState(device, pass, shader, renderPass, inputAssembler); + } + if (pso != null) { + this._descriptorSet.update(); + cmdBuff.bindPipelineState(pso); + cmdBuff.bindDescriptorSet(SetIndex.MATERIAL, pass.descriptorSet); + cmdBuff.bindDescriptorSet(SetIndex.LOCAL, this._descriptorSet); + cmdBuff.bindInputAssembler(inputAssembler); + cmdBuff.draw(inputAssembler); + } + this._renderQueues.forEach(renderQueueClearFunc); + var m = 0; + var p = 0; + var k = 0; + for (var _i4 = 0; _i4 < renderObjects.length; ++_i4) { + var ro = renderObjects[_i4]; + var subModels = ro.model.subModels; + for (m = 0; m < subModels.length; ++m) { + var subModel = subModels[m]; + var passes = subModel.passes; + for (p = 0; p < passes.length; ++p) { + var _pass = passes[p]; + if (_pass.phase !== this._phaseID) continue; + for (k = 0; k < this._renderQueues.length; k++) { + this._renderQueues[k].insertRenderPass(ro, m, p); + } + } + } + } + if (renderObjects.length > 0) { + this._renderQueues.forEach(renderQueueSortFunc); + for (var _i5 = 0; _i5 < this._renderQueues.length; _i5++) { + this._renderQueues[_i5].recordCommandBuffer(device, renderPass, cmdBuff); + } + this._planarQueue.recordCommandBuffer(device, renderPass, cmdBuff); + } + (_camera$geometryRende = camera.geometryRenderer) === null || _camera$geometryRende === void 0 ? void 0 : _camera$geometryRende.render(renderPass, cmdBuff, pipeline.pipelineSceneData); + this._uiPhase.render(camera, renderPass); + cmdBuff.endRenderPass(); + }; + return LightingStage; + }(RenderStage), _class3$D.initInfo = { + name: 'LightingStage', + priority: DeferredStagePriority.LIGHTING, + tag: 0 + }, _class3$D), (_initializer$1p = applyDecoratedInitializer(_class2$1D.prototype, "_deferredMaterial", [_dec2$1g, serializable$9], function () { + return null; + }), _initializer2$15 = applyDecoratedInitializer(_class2$1D.prototype, "renderQueues", [_dec3$V, serializable$9], function () { + return []; + })), _class2$1D)) || _class$1Q)); + + var _dec$1R, _dec2$1f, _dec3$U, _class$1P, _class2$1C, _initializer$1o, _initializer2$14, _class3$C; + var colors$4 = [new Color(0, 0, 0, 1)]; + var PostProcessStage = exports('d1', (_dec$1R = ccclass$t('PostProcessStage'), _dec2$1f = type$8(Material), _dec3$U = type$8([RenderQueueDesc]), _dec$1R(_class$1P = (_class2$1C = (_class3$C = function (_RenderStage) { + _inheritsLoose(PostProcessStage, _RenderStage); + function PostProcessStage() { + var _this; + _this = _RenderStage.call(this) || this; + _this._postProcessMaterial = _initializer$1o && _initializer$1o(); + _this.renderQueues = _initializer2$14 && _initializer2$14(); + _this._renderArea = new Rect(); + _this._stageDesc = void 0; + _this._localUBO = void 0; + _this._uiPhase = new UIPhase(); + return _this; + } + var _proto = PostProcessStage.prototype; + _proto.initialize = function initialize(info) { + _RenderStage.prototype.initialize.call(this, info); + return true; + }; + _proto.activate = function activate(pipeline, flow) { + _RenderStage.prototype.activate.call(this, pipeline, flow); + if (this._postProcessMaterial) { + pipeline.pipelineSceneData.postprocessMaterial = this._postProcessMaterial; + } + this._uiPhase.activate(pipeline); + }; + _proto.destroy = function destroy() {}; + _proto.render = function render(camera) { + var pipeline = this._pipeline; + var device = pipeline.device; + var sceneData = pipeline.pipelineSceneData; + var cmdBuff = pipeline.commandBuffers[0]; + pipeline.pipelineUBO.updateCameraUBO(camera); + var vp = camera.viewport; + this._renderArea.x = vp.x * camera.window.width; + this._renderArea.y = vp.y * camera.window.height; + this._renderArea.width = vp.width * camera.window.width; + this._renderArea.height = vp.height * camera.window.height; + var renderData = pipeline.getPipelineRenderData(); + var framebuffer = camera.window.framebuffer; + var renderPass = pipeline.getRenderPass(camera.clearFlag, framebuffer); + if (camera.clearFlag & ClearFlagBit.COLOR) { + colors$4[0].x = camera.clearColor.x; + colors$4[0].y = camera.clearColor.y; + colors$4[0].z = camera.clearColor.z; + } + colors$4[0].w = camera.clearColor.w; + cmdBuff.beginRenderPass(renderPass, framebuffer, this._renderArea, colors$4, camera.clearDepth, camera.clearStencil); + cmdBuff.bindDescriptorSet(SetIndex.GLOBAL, pipeline.descriptorSet); + var builtinPostProcess = sceneData.postprocessMaterial; + var pass = builtinPostProcess.passes[0]; + var shader = pass.getShaderVariant(); + if (pipeline.bloomEnabled) { + pass.descriptorSet.bindTexture(0, renderData.bloom.combineTex); + } else { + pass.descriptorSet.bindTexture(0, renderData.outputRenderTargets[0]); + } + pass.descriptorSet.bindSampler(0, renderData.sampler); + pass.descriptorSet.update(); + var inputAssembler = camera.window.swapchain ? pipeline.quadIAOnscreen : pipeline.quadIAOffscreen; + var pso = null; + if (pass != null && shader != null && inputAssembler != null) { + pso = PipelineStateManager.getOrCreatePipelineState(device, pass, shader, renderPass, inputAssembler); + } + var renderObjects = pipeline.pipelineSceneData.renderObjects; + if (pso != null && renderObjects.length > 0) { + if (!this._stageDesc) { + this._stageDesc = device.createDescriptorSet(new DescriptorSetInfo(pass.localSetLayout)); + this._localUBO = device.createBuffer(new BufferInfo(BufferUsageBit.UNIFORM | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, UBOLocal.SIZE, UBOLocal.SIZE)); + this._stageDesc.bindBuffer(UBOLocal.BINDING, this._localUBO); + } + this._stageDesc.update(); + cmdBuff.bindPipelineState(pso); + cmdBuff.bindDescriptorSet(SetIndex.MATERIAL, pass.descriptorSet); + cmdBuff.bindDescriptorSet(SetIndex.LOCAL, this._stageDesc); + cmdBuff.bindInputAssembler(inputAssembler); + cmdBuff.draw(inputAssembler); + } + this._uiPhase.render(camera, renderPass); + renderProfiler(device, renderPass, cmdBuff, pipeline.profiler, camera); + cmdBuff.endRenderPass(); + }; + return PostProcessStage; + }(RenderStage), _class3$C.initInfo = { + name: 'PostProcessStage', + priority: CommonStagePriority.POST_PROCESS, + tag: 0 + }, _class3$C), (_initializer$1o = applyDecoratedInitializer(_class2$1C.prototype, "_postProcessMaterial", [_dec2$1f, serializable$9], function () { + return null; + }), _initializer2$14 = applyDecoratedInitializer(_class2$1C.prototype, "renderQueues", [_dec3$U, serializable$9], function () { + return []; + })), _class2$1C)) || _class$1P)); + + var Octree = function () { + function Octree() { + this._enabled = false; + this._minPos = new Vec3(0, 0, 0); + this._maxPos = new Vec3(0, 0, 0); + this._depth = 0; + } + var _proto = Octree.prototype; + _proto.initialize = function initialize(octreeInfo) { + this._enabled = octreeInfo.enabled; + this._minPos = octreeInfo.minPos; + this._maxPos = octreeInfo.maxPos; + this._depth = octreeInfo.depth; + }; + _createClass(Octree, [{ + key: "enabled", + get: function get() { + return this._enabled; + }, + set: function set(val) { + this._enabled = val; + } + }, { + key: "minPos", + get: function get() { + return this._minPos; + }, + set: function set(val) { + this._minPos = val; + } + }, { + key: "maxPos", + get: function get() { + return this._maxPos; + }, + set: function set(val) { + this._maxPos = val; + } + }, { + key: "depth", + get: function get() { + return this._depth; + }, + set: function set(val) { + this._depth = val; + } + }]); + return Octree; + }(); + + var _mat4Trans = new Mat4(); + var _matShadowTrans = new Mat4(); + var _matShadowView$1 = new Mat4(); + var _matShadowProj = new Mat4(); + var _matShadowViewProj$1 = new Mat4(); + var _matShadowViewProjArbitaryPos = new Mat4(); + var _matShadowViewProjArbitaryPosInv = new Mat4(); + var _focus = new Vec3(0, 0, 0); + var _projPos = new Vec3(); + var _texelSize = new Vec2(); + var _projSnap = new Vec3(); + var _snap = new Vec3(); + var _maxVec3 = new Vec3(10000000, 10000000, 10000000); + var _minVec3 = new Vec3(-10000000, -10000000, -10000000); + var _shadowPos = new Vec3(); + var _maxLayerPosz = 0.0; + var _maxLayerFarPlane = 0.0; + var ShadowLayerVolume = function () { + function ShadowLayerVolume(level) { + this._shadowObjects = []; + this._shadowCameraFar = 0; + this._level = void 0; + this._matShadowView = new Mat4(); + this._matShadowProj = new Mat4(); + this._matShadowViewProj = new Mat4(); + this._validFrustum = new Frustum(); + this._splitFrustum = new Frustum(); + this._lightViewFrustum = new Frustum(); + this._castLightViewBoundingBox = new AABB(); + this._level = level; + this._validFrustum.accurate = true; + this._splitFrustum.accurate = true; + this._lightViewFrustum.accurate = true; + } + var _proto = ShadowLayerVolume.prototype; + _proto.copyToValidFrustum = function copyToValidFrustum(validFrustum) { + Frustum.copy(this._validFrustum, validFrustum); + }; + _proto.calculateValidFrustumOrtho = function calculateValidFrustumOrtho(width, height, near, far, transform) { + Frustum.createOrtho(this._validFrustum, width, height, near, far, transform); + }; + _proto.calculateSplitFrustum = function calculateSplitFrustum(camera, m, start, end) { + this._splitFrustum.split(start, end, camera.aspect, camera.fov, m); + }; + _proto.destroy = function destroy() { + this._shadowObjects.length = 0; + }; + _proto.createMatrix = function createMatrix(dirLight, shadowMapWidth, onlyForCulling) { + var device = legacyCC.director.root.device; + var invisibleOcclusionRange = dirLight.shadowInvisibleOcclusionRange; + Frustum.copy(this._lightViewFrustum, this._splitFrustum); + Mat4.fromRT(_matShadowTrans, dirLight.node.rotation, _focus); + Mat4.invert(_matShadowView$1, _matShadowTrans); + var shadowViewArbitaryPos = _matShadowView$1.clone(); + this._lightViewFrustum.transform(_matShadowView$1); + AABB.fromPoints(this._castLightViewBoundingBox, _maxVec3, _minVec3); + this._castLightViewBoundingBox.mergeFrustum(this._lightViewFrustum); + var orthoSizeWidth; + var orthoSizeHeight; + if (dirLight.csmOptimizationMode === CSMOptimizationMode.DisableRotationFix) { + orthoSizeWidth = this._castLightViewBoundingBox.halfExtents.x * 2.0; + orthoSizeHeight = this._castLightViewBoundingBox.halfExtents.y * 2.0; + } else { + orthoSizeWidth = orthoSizeHeight = Vec3.distance(this._lightViewFrustum.vertices[0], this._lightViewFrustum.vertices[6]); + } + var csmLevel = legacyCC.director.root.pipeline.pipelineSceneData.csmSupported ? dirLight.csmLevel : 1; + if (csmLevel > 1 && dirLight.csmOptimizationMode === CSMOptimizationMode.RemoveDuplicates) { + if (this._level >= csmLevel - 1) { + _maxLayerFarPlane = this._castLightViewBoundingBox.halfExtents.z; + _maxLayerPosz = this._castLightViewBoundingBox.center.z; + } else { + var alignFarPlaneDist = Math.abs(this._castLightViewBoundingBox.center.z - _maxLayerPosz) + _maxLayerFarPlane; + this._castLightViewBoundingBox.halfExtents.z = Math.max(this._castLightViewBoundingBox.center.z, alignFarPlaneDist); + } + } + var r = this._castLightViewBoundingBox.halfExtents.z; + this._shadowCameraFar = r * 2 + invisibleOcclusionRange; + var center = this._castLightViewBoundingBox.center; + _shadowPos.set(center.x, center.y, center.z + r + invisibleOcclusionRange); + Vec3.transformMat4(_shadowPos, _shadowPos, _matShadowTrans); + Mat4.fromRT(_matShadowTrans, dirLight.node.rotation, _shadowPos); + Mat4.invert(_matShadowView$1, _matShadowTrans); + if (!onlyForCulling) { + var halfOrthoSizeWidth = orthoSizeWidth * 0.5; + var halfOrthoSizeHeight = orthoSizeHeight * 0.5; + Mat4.ortho(_matShadowProj, -halfOrthoSizeWidth, halfOrthoSizeWidth, -halfOrthoSizeHeight, halfOrthoSizeHeight, 0.1, this._shadowCameraFar, device.capabilities.clipSpaceMinZ, device.capabilities.clipSpaceSignY); + Mat4.multiply(_matShadowViewProjArbitaryPos, _matShadowProj, shadowViewArbitaryPos); + Vec3.transformMat4(_projPos, _shadowPos, _matShadowViewProjArbitaryPos); + var invActualSize = 2.0 / shadowMapWidth; + _texelSize.set(invActualSize, invActualSize); + var modX = _projPos.x % _texelSize.x; + var modY = _projPos.y % _texelSize.y; + _projSnap.set(_projPos.x - modX, _projPos.y - modY, _projPos.z); + Mat4.invert(_matShadowViewProjArbitaryPosInv, _matShadowViewProjArbitaryPos); + Vec3.transformMat4(_snap, _projSnap, _matShadowViewProjArbitaryPosInv); + Mat4.fromRT(_matShadowTrans, dirLight.node.rotation, _snap); + Mat4.invert(_matShadowView$1, _matShadowTrans); + Mat4.multiply(_matShadowViewProj$1, _matShadowProj, _matShadowView$1); + Mat4.copy(this._matShadowView, _matShadowView$1); + Mat4.copy(this._matShadowProj, _matShadowProj); + Mat4.copy(this._matShadowViewProj, _matShadowViewProj$1); + } + Frustum.createOrtho(this._validFrustum, orthoSizeWidth, orthoSizeHeight, 0.1, this._shadowCameraFar, _matShadowTrans); + }; + _createClass(ShadowLayerVolume, [{ + key: "level", + get: function get() { + return this._level; + } + }, { + key: "shadowObjects", + get: function get() { + return this._shadowObjects; + } + }, { + key: "shadowCameraFar", + get: function get() { + return this._shadowCameraFar; + }, + set: function set(val) { + this._shadowCameraFar = val; + } + }, { + key: "matShadowView", + get: function get() { + return this._matShadowView; + }, + set: function set(val) { + this._matShadowView = val; + } + }, { + key: "matShadowProj", + get: function get() { + return this._matShadowProj; + }, + set: function set(val) { + this._matShadowProj = val; + } + }, { + key: "matShadowViewProj", + get: function get() { + return this._matShadowViewProj; + }, + set: function set(val) { + this._matShadowViewProj = val; + } + }, { + key: "validFrustum", + get: function get() { + return this._validFrustum; + } + }, { + key: "splitFrustum", + get: function get() { + return this._splitFrustum; + } + }, { + key: "lightViewFrustum", + get: function get() { + return this._lightViewFrustum; + } + }, { + key: "castLightViewBoundingBox", + get: function get() { + return this._castLightViewBoundingBox; + } + }]); + return ShadowLayerVolume; + }(); + var CSMShadowLayer = function (_ShadowLayerVolume) { + _inheritsLoose(CSMShadowLayer, _ShadowLayerVolume); + function CSMShadowLayer(level) { + var _this; + _this = _ShadowLayerVolume.call(this, level) || this; + _this._splitCameraNear = 0; + _this._splitCameraFar = 0; + _this._csmAtlas = new Vec4(); + _this._calculateAtlas(level); + return _this; + } + var _proto2 = CSMShadowLayer.prototype; + _proto2.destroy = function destroy() { + _ShadowLayerVolume.prototype.destroy.call(this); + }; + _proto2._calculateAtlas = function _calculateAtlas(level) { + var clipSpaceSignY = legacyCC.director.root.device.capabilities.clipSpaceSignY; + var x = level % 2 - 0.5; + var y = (0.5 - Math.floor(level / 2)) * clipSpaceSignY; + this._csmAtlas.set(0.5, 0.5, x, y); + }; + _createClass(CSMShadowLayer, [{ + key: "splitCameraNear", + get: function get() { + return this._splitCameraNear; + }, + set: function set(val) { + this._splitCameraNear = val; + } + }, { + key: "splitCameraFar", + get: function get() { + return this._splitCameraFar; + }, + set: function set(val) { + this._splitCameraFar = val; + } + }, { + key: "csmAtlas", + get: function get() { + return this._csmAtlas; + }, + set: function set(val) { + this._csmAtlas = val; + } + }]); + return CSMShadowLayer; + }(ShadowLayerVolume); + var CSMLayers = function () { + function CSMLayers() { + this._castShadowObjects = []; + this._layerObjects = new CachedArray(64); + this._layers = []; + this._levelCount = 0; + this._specialLayer = new ShadowLayerVolume(1); + this._shadowDistance = 0; + for (var i = 0; i < CSMLevel.LEVEL_4; i++) { + this._layers[i] = new CSMShadowLayer(i); + } + } + var _proto3 = CSMLayers.prototype; + _proto3.update = function update(sceneData, camera) { + var scene = camera.scene; + var dirLight = scene.mainLight; + if (dirLight === null) { + return; + } + var shadowInfo = sceneData.shadows; + var levelCount = legacyCC.director.root.pipeline.pipelineSceneData.csmSupported ? dirLight.csmLevel : 1; + var shadowDistance = dirLight.shadowDistance; + if (!shadowInfo.enabled || !dirLight.shadowEnabled) { + return; + } + if (dirLight.shadowFixedArea) { + this._updateFixedArea(dirLight); + } else { + if (dirLight.csmNeedUpdate || this._levelCount !== levelCount || this._shadowDistance !== shadowDistance) { + this._splitFrustumLevels(dirLight); + this._levelCount = levelCount; + this._shadowDistance = shadowDistance; + } + this._calculateCSM(camera, dirLight, shadowInfo); + } + }; + _proto3.destroy = function destroy() { + this._castShadowObjects.length = 0; + for (var i = 0; i < this._layers.length; i++) { + this._layers[i].destroy(); + } + this._layers.length = 0; + }; + _proto3._updateFixedArea = function _updateFixedArea(dirLight) { + var device = legacyCC.director.root.device; + var x = dirLight.shadowOrthoSize; + var y = dirLight.shadowOrthoSize; + var near = dirLight.shadowNear; + var far = dirLight.shadowFar; + Mat4.fromRT(_matShadowTrans, dirLight.node.getWorldRotation(), dirLight.node.getWorldPosition()); + Mat4.invert(_matShadowView$1, _matShadowTrans); + Mat4.ortho(_matShadowProj, -x, x, -y, y, near, far, device.capabilities.clipSpaceMinZ, device.capabilities.clipSpaceSignY); + Mat4.multiply(_matShadowViewProj$1, _matShadowProj, _matShadowView$1); + this._specialLayer.matShadowView = _matShadowView$1; + this._specialLayer.matShadowProj = _matShadowProj; + this._specialLayer.matShadowViewProj = _matShadowViewProj$1; + this._specialLayer.calculateValidFrustumOrtho(x * 2.0, y * 2.0, near, far, _matShadowTrans); + }; + _proto3._splitFrustumLevels = function _splitFrustumLevels(dirLight) { + var nd = 0.1; + var fd = dirLight.shadowDistance; + var ratio = fd / nd; + var level = legacyCC.director.root.pipeline.pipelineSceneData.csmSupported ? dirLight.csmLevel : 1; + var lambda = dirLight.csmLayerLambda; + this._layers[0].splitCameraNear = nd; + for (var i = 1; i < level; i++) { + var si = i / level; + var preNear = lambda * (nd * Math.pow(ratio, si)) + (1 - lambda) * (nd + (fd - nd) * si); + var nextFar = preNear * 1.005; + this._layers[i].splitCameraNear = preNear; + this._layers[i - 1].splitCameraFar = nextFar; + } + this._layers[level - 1].splitCameraFar = fd; + dirLight.csmNeedUpdate = false; + }; + _proto3._calculateCSM = function _calculateCSM(camera, dirLight, shadowInfo) { + var level = legacyCC.director.root.pipeline.pipelineSceneData.csmSupported ? dirLight.csmLevel : 1; + var shadowMapWidth = level > 1 ? shadowInfo.size.x * 0.5 : shadowInfo.size.x; + if (shadowMapWidth < 0.0) { + return; + } + this._getCameraWorldMatrix(_mat4Trans, camera); + for (var i = level - 1; i >= 0; i--) { + var csmLayer = this._layers[i]; + var near = csmLayer.splitCameraNear; + var far = csmLayer.splitCameraFar; + csmLayer.calculateSplitFrustum(camera, _mat4Trans, near, far); + csmLayer.createMatrix(dirLight, shadowMapWidth, false); + } + if (level === CSMLevel.LEVEL_1) { + this._specialLayer.shadowCameraFar = this._layers[0].shadowCameraFar; + Mat4.copy(this._specialLayer.matShadowView, this._layers[0].matShadowView); + Mat4.copy(this._specialLayer.matShadowProj, this._layers[0].matShadowProj); + Mat4.copy(this._specialLayer.matShadowViewProj, this._layers[0].matShadowViewProj); + this._specialLayer.copyToValidFrustum(this._layers[0].validFrustum); + } else { + this._specialLayer.calculateSplitFrustum(camera, _mat4Trans, 0.1, dirLight.shadowDistance); + this._specialLayer.createMatrix(dirLight, shadowMapWidth, true); + } + }; + _proto3._getCameraWorldMatrix = function _getCameraWorldMatrix(out, camera) { + if (!camera.node) { + return; + } + var cameraNode = camera.node; + var position = cameraNode.getWorldPosition(); + var rotation = cameraNode.getWorldRotation(); + Mat4.fromRT(out, rotation, position); + }; + _createClass(CSMLayers, [{ + key: "castShadowObjects", + get: function get() { + return this._castShadowObjects; + } + }, { + key: "layerObjects", + get: function get() { + return this._layerObjects; + } + }, { + key: "layers", + get: function get() { + return this._layers; + } + }, { + key: "specialLayer", + get: function get() { + return this._specialLayer; + } + }]); + return CSMLayers; + }(); + + var Skin = function () { + function Skin() { + this._enabled = true; + this._blurRadius = 0.01; + this._sssIntensity = 3.0; + } + var _proto = Skin.prototype; + _proto.initialize = function initialize(skinInfo) { + this._enabled = skinInfo.enabled; + this._blurRadius = skinInfo.blurRadius; + this._sssIntensity = skinInfo.sssIntensity; + }; + _createClass(Skin, [{ + key: "enabled", + get: function get() { + return this._enabled; + }, + set: function set(val) { + this._enabled = val; + } + }, { + key: "blurRadius", + get: function get() { + return this._blurRadius; + }, + set: function set(val) { + this._blurRadius = val; + } + }, { + key: "sssIntensity", + get: function get() { + return this._sssIntensity; + }, + set: function set(val) { + this._sssIntensity = val; + } + }]); + return Skin; + }(); + + var GEOMETRY_RENDERER_TECHNIQUE_COUNT = 6; + var PipelineSceneData = exports('cT', function () { + function PipelineSceneData() { + this.fog = new Fog(); + this.ambient = new Ambient(); + this.skybox = new Skybox(); + this.shadows = new Shadows(); + this.csmLayers = new CSMLayers(); + this.octree = new Octree(); + this.skin = new Skin(); + this.postSettings = new PostSettings(); + this.lightProbes = legacyCC.internal.LightProbes ? new legacyCC.internal.LightProbes() : null; + this.validPunctualLights = []; + this.renderObjects = []; + this.shadowFrameBufferMap = new Map(); + this._geometryRendererMaterials = []; + this._geometryRendererPasses = []; + this._geometryRendererShaders = []; + this._occlusionQueryVertexBuffer = null; + this._occlusionQueryIndicesBuffer = null; + this._occlusionQueryInputAssembler = null; + this._occlusionQueryMaterial = null; + this._occlusionQueryShader = null; + this._isHDR = true; + this._shadingScale = 1.0; + this._csmSupported = true; + this._standardSkinMeshRenderer = null; + this._standardSkinModel = null; + this._skinMaterialModel = null; + this._shadingScale = 1.0; + } + var _proto = PipelineSceneData.prototype; + _proto.activate = function activate(device) { + this._device = device; + this.initGeometryRendererMaterials(); + this.initOcclusionQuery(); + return true; + }; + _proto.initGeometryRendererMaterials = function initGeometryRendererMaterials() { + var offset = 0; + for (var tech = 0; tech < GEOMETRY_RENDERER_TECHNIQUE_COUNT; tech++) { + this._geometryRendererMaterials[tech] = new Material(); + this._geometryRendererMaterials[tech]._uuid = "geometry-renderer-material-" + tech; + this._geometryRendererMaterials[tech].initialize({ + effectName: 'internal/builtin-geometry-renderer', + technique: tech + }); + for (var pass = 0; pass < this._geometryRendererMaterials[tech].passes.length; ++pass) { + this._geometryRendererPasses[offset] = this._geometryRendererMaterials[tech].passes[pass]; + this._geometryRendererShaders[offset] = this._geometryRendererMaterials[tech].passes[pass].getShaderVariant(); + offset++; + } + } + }; + _proto.initOcclusionQuery = function initOcclusionQuery() { + if (!this._occlusionQueryInputAssembler) { + this._occlusionQueryInputAssembler = this._createOcclusionQueryIA(); + } + if (!this._occlusionQueryMaterial) { + var mat = new Material(); + mat._uuid = 'default-occlusion-query-material'; + mat.initialize({ + effectName: 'internal/builtin-occlusion-query' + }); + this._occlusionQueryMaterial = mat; + if (mat.passes.length > 0) { + this._occlusionQueryShader = mat.passes[0].getShaderVariant(); + } + } + }; + _proto.getOcclusionQueryPass = function getOcclusionQueryPass() { + if (this._occlusionQueryMaterial && this._occlusionQueryMaterial.passes.length > 0) { + return this._occlusionQueryMaterial.passes[0]; + } + return null; + }; + _proto.updatePipelineSceneData = function updatePipelineSceneData() {}; + _proto.destroy = function destroy() { + var _this$_occlusionQuery, _this$_occlusionQuery2, _this$_occlusionQuery3; + this.shadows.destroy(); + this.csmLayers.destroy(); + this.validPunctualLights.length = 0; + (_this$_occlusionQuery = this._occlusionQueryInputAssembler) === null || _this$_occlusionQuery === void 0 ? void 0 : _this$_occlusionQuery.destroy(); + this._occlusionQueryInputAssembler = null; + (_this$_occlusionQuery2 = this._occlusionQueryVertexBuffer) === null || _this$_occlusionQuery2 === void 0 ? void 0 : _this$_occlusionQuery2.destroy(); + this._occlusionQueryVertexBuffer = null; + (_this$_occlusionQuery3 = this._occlusionQueryIndicesBuffer) === null || _this$_occlusionQuery3 === void 0 ? void 0 : _this$_occlusionQuery3.destroy(); + this._occlusionQueryIndicesBuffer = null; + this._standardSkinMeshRenderer = null; + this._standardSkinModel = null; + this._skinMaterialModel = null; + }; + _proto._createOcclusionQueryIA = function _createOcclusionQueryIA() { + var device = this._device; + var vertices = new Float32Array([-1, -1, -1, 1, -1, -1, -1, 1, -1, 1, 1, -1, -1, -1, 1, 1, -1, 1, -1, 1, 1, 1, 1, 1]); + var vbStride = Float32Array.BYTES_PER_ELEMENT * 3; + var vbSize = vbStride * 8; + this._occlusionQueryVertexBuffer = device.createBuffer(new BufferInfo(BufferUsageBit.VERTEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, vbSize, vbStride)); + this._occlusionQueryVertexBuffer.update(vertices); + var indices = new Uint16Array([0, 2, 1, 1, 2, 3, 4, 5, 6, 5, 7, 6, 1, 3, 7, 1, 7, 5, 0, 4, 6, 0, 6, 2, 0, 1, 5, 0, 5, 4, 2, 6, 7, 2, 7, 3]); + var ibStride = Uint16Array.BYTES_PER_ELEMENT; + var ibSize = ibStride * 36; + this._occlusionQueryIndicesBuffer = device.createBuffer(new BufferInfo(BufferUsageBit.INDEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, ibSize, ibStride)); + this._occlusionQueryIndicesBuffer.update(indices); + var attributes = [new Attribute('a_position', Format.RGB32F)]; + var info = new InputAssemblerInfo(attributes, [this._occlusionQueryVertexBuffer], this._occlusionQueryIndicesBuffer); + var inputAssembler = device.createInputAssembler(info); + return inputAssembler; + }; + _createClass(PipelineSceneData, [{ + key: "isHDR", + get: function get() { + return this._isHDR; + }, + set: function set(val) { + this._isHDR = val; + } + }, { + key: "shadingScale", + get: function get() { + return this._shadingScale; + }, + set: function set(val) { + this._shadingScale = val; + } + }, { + key: "csmSupported", + get: function get() { + return this._csmSupported; + }, + set: function set(val) { + this._csmSupported = val; + } + }, { + key: "standardSkinModel", + get: function get() { + return this._standardSkinModel; + }, + set: function set(val) { + this._standardSkinModel = val; + } + }, { + key: "standardSkinMeshRenderer", + get: function get() { + return this._standardSkinMeshRenderer; + }, + set: function set(val) { + if (this._standardSkinMeshRenderer && this._standardSkinMeshRenderer !== val) { + this._standardSkinMeshRenderer.clearGlobalStandardSkinObjectFlag(); + } + this._standardSkinMeshRenderer = val; + this.standardSkinModel = val ? val.model : null; + } + }, { + key: "skinMaterialModel", + get: function get() { + return this._skinMaterialModel; + }, + set: function set(val) { + this._skinMaterialModel = val; + } + }, { + key: "geometryRendererPasses", + get: function get() { + return this._geometryRendererPasses; + } + }, { + key: "geometryRendererShaders", + get: function get() { + return this._geometryRendererShaders; + } + }]); + return PipelineSceneData; + }()); + + var AntiAliasing; + (function (AntiAliasing) { + AntiAliasing[AntiAliasing["NONE"] = 0] = "NONE"; + AntiAliasing[AntiAliasing["FXAA"] = 1] = "FXAA"; + })(AntiAliasing || (AntiAliasing = {})); + var BLOOM_PREFILTERPASS_INDEX = 0; + var BLOOM_DOWNSAMPLEPASS_INDEX = 1; + var BLOOM_UPSAMPLEPASS_INDEX = BLOOM_DOWNSAMPLEPASS_INDEX + MAX_BLOOM_FILTER_PASS_NUM; + var BLOOM_COMBINEPASS_INDEX = BLOOM_UPSAMPLEPASS_INDEX + MAX_BLOOM_FILTER_PASS_NUM; + var DeferredPipelineSceneData = function (_PipelineSceneData) { + _inheritsLoose(DeferredPipelineSceneData, _PipelineSceneData); + function DeferredPipelineSceneData() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _PipelineSceneData.call.apply(_PipelineSceneData, [this].concat(args)) || this; + _this._antiAliasing = AntiAliasing.NONE; + return _this; + } + var _proto = DeferredPipelineSceneData.prototype; + _proto.updatePipelineSceneData = function updatePipelineSceneData() { + this.updatePipelinePassInfo(); + }; + _proto.updateBloomPass = function updateBloomPass() { + if (!this._bloomMaterial) return; + var prefilterPass = this._bloomMaterial.passes[BLOOM_PREFILTERPASS_INDEX]; + prefilterPass.beginChangeStatesSilently(); + prefilterPass.tryCompile(); + prefilterPass.endChangeStatesSilently(); + for (var i = 0; i < MAX_BLOOM_FILTER_PASS_NUM; ++i) { + var downsamplePass = this._bloomMaterial.passes[BLOOM_DOWNSAMPLEPASS_INDEX + i]; + downsamplePass.beginChangeStatesSilently(); + downsamplePass.tryCompile(); + downsamplePass.endChangeStatesSilently(); + var upsamplePass = this._bloomMaterial.passes[BLOOM_UPSAMPLEPASS_INDEX + i]; + upsamplePass.beginChangeStatesSilently(); + upsamplePass.tryCompile(); + upsamplePass.endChangeStatesSilently(); + } + var combinePass = this._bloomMaterial.passes[BLOOM_COMBINEPASS_INDEX]; + combinePass.beginChangeStatesSilently(); + combinePass.tryCompile(); + combinePass.endChangeStatesSilently(); + }; + _proto.updatePostProcessPass = function updatePostProcessPass() { + if (!this.postprocessMaterial) return; + var passPost = this.postprocessMaterial.passes[0]; + passPost.beginChangeStatesSilently(); + passPost.tryCompile(); + passPost.endChangeStatesSilently(); + }; + _proto.initPipelinePassInfo = function initPipelinePassInfo() { + var deferredMat = new Material(); + deferredMat._uuid = 'builtin-deferred-material'; + deferredMat.initialize({ + effectName: 'pipeline/deferred-lighting' + }); + for (var i = 0; i < deferredMat.passes.length; ++i) { + deferredMat.passes[i].tryCompile(); + } + this._deferredLightingMaterial = deferredMat; + var bloomMat = new Material(); + bloomMat._uuid = 'builtin-bloom-material'; + bloomMat.initialize({ + effectName: 'pipeline/bloom' + }); + for (var _i = 0; _i < bloomMat.passes.length; ++_i) { + bloomMat.passes[_i].tryCompile(); + } + this._bloomMaterial = bloomMat; + var postMat = new Material(); + postMat._uuid = 'builtin-post-process-material'; + postMat.initialize({ + effectName: 'pipeline/post-process', + defines: { + ANTIALIAS_TYPE: this._antiAliasing + } + }); + for (var _i2 = 0; _i2 < postMat.passes.length; ++_i2) { + postMat.passes[_i2].tryCompile(); + } + this._postprocessMaterial = postMat; + this.updatePipelinePassInfo(); + }; + _proto.updatePipelinePassInfo = function updatePipelinePassInfo() { + this.updateBloomPass(); + this.updatePostProcessPass(); + this.updateDeferredPassInfo(); + }; + _proto.activate = function activate(device) { + _PipelineSceneData.prototype.activate.call(this, device); + this.initPipelinePassInfo(); + return true; + }; + _proto.updateDeferredPassInfo = function updateDeferredPassInfo() { + this.updateDeferredLightPass(); + }; + _proto.updateDeferredLightPass = function updateDeferredLightPass() { + if (!this._deferredLightingMaterial) return; + legacyCC.director.root.pipeline.macros.CC_RECEIVE_SHADOW = 1; + var passLit = this._deferredLightingMaterial.passes[0]; + passLit.beginChangeStatesSilently(); + passLit.tryCompile(); + passLit.endChangeStatesSilently(); + }; + _createClass(DeferredPipelineSceneData, [{ + key: "antiAliasing", + get: function get() { + return this._antiAliasing; + }, + set: function set(value) { + this._antiAliasing = value; + if (this._postprocessMaterial) { + var defines = this._postprocessMaterial.passes[0].defines; + Object.assign(defines, { + ANTIALIAS_TYPE: value + }); + var renderMat = new Material(); + renderMat.initialize({ + effectAsset: this._postprocessMaterial.effectAsset, + defines: defines + }); + for (var i = 0; i < renderMat.passes.length; ++i) { + renderMat.passes[i].tryCompile(); + } + this._postprocessMaterial = renderMat; + } + } + }, { + key: "bloomMaterial", + get: function get() { + return this._bloomMaterial; + }, + set: function set(mat) { + if (this._bloomMaterial === mat || !mat) return; + this._bloomMaterial = mat; + this.updatePipelinePassInfo(); + } + }, { + key: "postprocessMaterial", + get: function get() { + return this._postprocessMaterial; + }, + set: function set(mat) { + if (this._postprocessMaterial === mat || !mat) return; + this._postprocessMaterial = mat; + this.updatePipelinePassInfo(); + } + }, { + key: "deferredLightingMaterial", + get: function get() { + return this._deferredLightingMaterial; + }, + set: function set(mat) { + if (this._deferredLightingMaterial === mat || !mat) return; + this._deferredLightingMaterial = mat; + this.updatePipelinePassInfo(); + } + }]); + return DeferredPipelineSceneData; + }(PipelineSceneData); + + var _class$1O, _dec$1Q, _dec2$1e, _class2$1B, _class3$B, _initializer$1n, _class4$b; + var colors$3 = [new Color(0, 0, 0, 1)]; + var UBOBloom = function UBOBloom() {}; + _class$1O = UBOBloom; + UBOBloom.TEXTURE_SIZE_OFFSET = 0; + UBOBloom.COUNT = _class$1O.TEXTURE_SIZE_OFFSET + 4; + UBOBloom.SIZE = _class$1O.COUNT * 4; + var BloomStage = exports('d0', (_dec$1Q = ccclass$t('BloomStage'), _dec2$1e = type$8(Material), _dec$1Q(_class2$1B = (_class3$B = (_class4$b = function (_RenderStage) { + _inheritsLoose(BloomStage, _RenderStage); + function BloomStage() { + var _this; + _this = _RenderStage.call(this) || this; + _this.threshold = 1.0; + _this.intensity = 0.8; + _this.iterations = 2; + _this._bloomMaterial = _initializer$1n && _initializer$1n(); + _this._renderArea = new Rect(); + _this._bloomUBO = []; + return _this; + } + var _proto = BloomStage.prototype; + _proto.initialize = function initialize(info) { + _RenderStage.prototype.initialize.call(this, info); + return true; + }; + _proto.activate = function activate(pipeline, flow) { + _RenderStage.prototype.activate.call(this, pipeline, flow); + if (this._bloomMaterial) { + pipeline.pipelineSceneData.bloomMaterial = this._bloomMaterial; + } + }; + _proto.destroy = function destroy() {}; + _proto.render = function render(camera) { + var _camera$window; + var pipeline = this._pipeline; + pipeline.generateBloomRenderData(); + if (!((_camera$window = camera.window) !== null && _camera$window !== void 0 && _camera$window.swapchain) && !pipeline.macros.CC_PIPELINE_TYPE) { + return; + } + if (!pipeline.bloomEnabled || pipeline.pipelineSceneData.renderObjects.length === 0) return; + if (this._bloomUBO.length === 0) { + var passNumber = MAX_BLOOM_FILTER_PASS_NUM * 2 + 2; + for (var i = 0; i < passNumber; ++i) { + this._bloomUBO[i] = pipeline.device.createBuffer(new BufferInfo(BufferUsageBit.UNIFORM | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.HOST | MemoryUsageBit.DEVICE, UBOBloom.SIZE, UBOBloom.SIZE)); + } + } + if (camera.clearFlag & ClearFlagBit.COLOR) { + colors$3[0].x = camera.clearColor.x; + colors$3[0].y = camera.clearColor.y; + colors$3[0].z = camera.clearColor.z; + } + colors$3[0].w = camera.clearColor.w; + this._prefilterPass(camera, pipeline); + this._downsamplePass(camera, pipeline); + this._upsamplePass(camera, pipeline); + this._combinePass(camera, pipeline); + }; + _proto._prefilterPass = function _prefilterPass(camera, pipeline) { + pipeline.generateRenderArea(camera, this._renderArea); + this._renderArea.width >>= 1; + this._renderArea.height >>= 1; + var cmdBuff = pipeline.commandBuffers[0]; + var sceneData = pipeline.pipelineSceneData; + var builtinBloomProcess = sceneData.bloomMaterial; + var pass = builtinBloomProcess.passes[BLOOM_PREFILTERPASS_INDEX]; + var renderData = pipeline.getPipelineRenderData(); + var bloomData = renderData.bloom; + var textureSize = new Float32Array(UBOBloom.COUNT); + textureSize[UBOBloom.TEXTURE_SIZE_OFFSET + 2] = this.threshold; + cmdBuff.updateBuffer(this._bloomUBO[0], textureSize); + cmdBuff.beginRenderPass(bloomData.renderPass, bloomData.prefilterFramebuffer, this._renderArea, colors$3, 0, 0); + cmdBuff.bindDescriptorSet(SetIndex.GLOBAL, pipeline.descriptorSet); + pass.descriptorSet.bindBuffer(0, this._bloomUBO[0]); + pass.descriptorSet.bindTexture(1, renderData.outputRenderTargets[0]); + pass.descriptorSet.bindSampler(1, bloomData.sampler); + pass.descriptorSet.update(); + cmdBuff.bindDescriptorSet(SetIndex.MATERIAL, pass.descriptorSet); + var inputAssembler = camera.window.swapchain ? pipeline.quadIAOffscreen : pipeline.quadIAOnscreen; + var pso = null; + var shader = pass.getShaderVariant(); + if (pass != null && shader != null && inputAssembler != null) { + pso = PipelineStateManager.getOrCreatePipelineState(pipeline.device, pass, shader, bloomData.renderPass, inputAssembler); + } + if (pso != null) { + cmdBuff.bindPipelineState(pso); + cmdBuff.bindInputAssembler(inputAssembler); + cmdBuff.draw(inputAssembler); + } + cmdBuff.endRenderPass(); + }; + _proto._downsamplePass = function _downsamplePass(camera, pipeline) { + pipeline.generateRenderArea(camera, this._renderArea); + this._renderArea.width >>= 1; + this._renderArea.height >>= 1; + var cmdBuff = pipeline.commandBuffers[0]; + var sceneData = pipeline.pipelineSceneData; + var builtinBloomProcess = sceneData.bloomMaterial; + var bloomData = pipeline.getPipelineRenderData().bloom; + var textureSize = new Float32Array(UBOBloom.COUNT); + for (var i = 0; i < this.iterations; ++i) { + textureSize[UBOBloom.TEXTURE_SIZE_OFFSET + 0] = this._renderArea.width; + textureSize[UBOBloom.TEXTURE_SIZE_OFFSET + 1] = this._renderArea.height; + cmdBuff.updateBuffer(this._bloomUBO[i + 1], textureSize); + this._renderArea.width >>= 1; + this._renderArea.height >>= 1; + cmdBuff.beginRenderPass(bloomData.renderPass, bloomData.downsampleFramebuffers[i], this._renderArea, colors$3, 0, 0); + var pass = builtinBloomProcess.passes[BLOOM_DOWNSAMPLEPASS_INDEX + i]; + var shader = pass.getShaderVariant(); + pass.descriptorSet.bindBuffer(0, this._bloomUBO[i + 1]); + if (i === 0) { + pass.descriptorSet.bindTexture(1, bloomData.prefiterTex); + } else { + pass.descriptorSet.bindTexture(1, bloomData.downsampleTexs[i - 1]); + } + pass.descriptorSet.bindSampler(1, bloomData.sampler); + pass.descriptorSet.update(); + cmdBuff.bindDescriptorSet(SetIndex.MATERIAL, pass.descriptorSet); + var inputAssembler = camera.window.swapchain ? pipeline.quadIAOffscreen : pipeline.quadIAOnscreen; + var pso = null; + if (pass != null && shader != null && inputAssembler != null) { + pso = PipelineStateManager.getOrCreatePipelineState(pipeline.device, pass, shader, bloomData.renderPass, inputAssembler); + } + if (pso != null) { + cmdBuff.bindPipelineState(pso); + cmdBuff.bindInputAssembler(inputAssembler); + cmdBuff.draw(inputAssembler); + } + cmdBuff.endRenderPass(); + } + }; + _proto._upsamplePass = function _upsamplePass(camera, pipeline) { + var bloomData = pipeline.getPipelineRenderData().bloom; + pipeline.generateRenderArea(camera, this._renderArea); + this._renderArea.width >>= this.iterations + 1; + this._renderArea.height >>= this.iterations + 1; + var cmdBuff = pipeline.commandBuffers[0]; + var sceneData = pipeline.pipelineSceneData; + var builtinBloomProcess = sceneData.bloomMaterial; + var textureSize = new Float32Array(UBOBloom.COUNT); + for (var i = 0; i < this.iterations; ++i) { + var index = i + MAX_BLOOM_FILTER_PASS_NUM + 1; + textureSize[UBOBloom.TEXTURE_SIZE_OFFSET + 0] = this._renderArea.width; + textureSize[UBOBloom.TEXTURE_SIZE_OFFSET + 1] = this._renderArea.height; + cmdBuff.updateBuffer(this._bloomUBO[index], textureSize); + this._renderArea.width <<= 1; + this._renderArea.height <<= 1; + cmdBuff.beginRenderPass(bloomData.renderPass, bloomData.upsampleFramebuffers[this.iterations - 1 - i], this._renderArea, colors$3, 0, 0); + var pass = builtinBloomProcess.passes[BLOOM_UPSAMPLEPASS_INDEX + i]; + var shader = pass.getShaderVariant(); + pass.descriptorSet.bindBuffer(0, this._bloomUBO[index]); + if (i === 0) { + pass.descriptorSet.bindTexture(1, bloomData.downsampleTexs[this.iterations - 1]); + } else { + pass.descriptorSet.bindTexture(1, bloomData.upsampleTexs[this.iterations - i]); + } + pass.descriptorSet.bindSampler(1, bloomData.sampler); + pass.descriptorSet.update(); + cmdBuff.bindDescriptorSet(SetIndex.MATERIAL, pass.descriptorSet); + var inputAssembler = camera.window.swapchain ? pipeline.quadIAOffscreen : pipeline.quadIAOnscreen; + var pso = null; + if (pass != null && shader != null && inputAssembler != null) { + pso = PipelineStateManager.getOrCreatePipelineState(pipeline.device, pass, shader, bloomData.renderPass, inputAssembler); + } + if (pso != null) { + cmdBuff.bindPipelineState(pso); + cmdBuff.bindInputAssembler(inputAssembler); + cmdBuff.draw(inputAssembler); + } + cmdBuff.endRenderPass(); + } + }; + _proto._combinePass = function _combinePass(camera, pipeline) { + pipeline.generateRenderArea(camera, this._renderArea); + var cmdBuff = pipeline.commandBuffers[0]; + var sceneData = pipeline.pipelineSceneData; + var builtinBloomProcess = sceneData.bloomMaterial; + var deferredData = pipeline.getPipelineRenderData(); + var bloomData = deferredData.bloom; + var uboIndex = MAX_BLOOM_FILTER_PASS_NUM * 2 + 1; + var textureSize = new Float32Array(UBOBloom.COUNT); + textureSize[UBOBloom.TEXTURE_SIZE_OFFSET + 3] = this.intensity; + cmdBuff.updateBuffer(this._bloomUBO[uboIndex], textureSize); + cmdBuff.beginRenderPass(bloomData.renderPass, bloomData.combineFramebuffer, this._renderArea, colors$3, 0, 0); + cmdBuff.bindDescriptorSet(SetIndex.GLOBAL, pipeline.descriptorSet); + var pass = builtinBloomProcess.passes[BLOOM_COMBINEPASS_INDEX]; + pass.descriptorSet.bindBuffer(0, this._bloomUBO[uboIndex]); + pass.descriptorSet.bindTexture(1, deferredData.outputRenderTargets[0]); + pass.descriptorSet.bindTexture(2, bloomData.upsampleTexs[0]); + pass.descriptorSet.bindSampler(1, bloomData.sampler); + pass.descriptorSet.bindSampler(2, bloomData.sampler); + pass.descriptorSet.update(); + cmdBuff.bindDescriptorSet(SetIndex.MATERIAL, pass.descriptorSet); + var inputAssembler = camera.window.swapchain ? pipeline.quadIAOffscreen : pipeline.quadIAOnscreen; + var pso = null; + var shader = pass.getShaderVariant(); + if (pass != null && shader != null && inputAssembler != null) { + pso = PipelineStateManager.getOrCreatePipelineState(pipeline.device, pass, shader, bloomData.renderPass, inputAssembler); + } + if (pso != null) { + cmdBuff.bindPipelineState(pso); + cmdBuff.bindInputAssembler(inputAssembler); + cmdBuff.draw(inputAssembler); + } + cmdBuff.endRenderPass(); + }; + return BloomStage; + }(RenderStage), _class4$b.initInfo = { + name: 'BloomStage', + priority: CommonStagePriority.BLOOM, + tag: 0 + }, _class4$b), (_initializer$1n = applyDecoratedInitializer(_class3$B.prototype, "_bloomMaterial", [_dec2$1e, serializable$9], function () { + return null; + })), _class3$B)) || _class2$1B)); + + var _dec$1P, _class$1N, _class2$1A; + var MainFlow = exports('cZ', (_dec$1P = ccclass$t('MainFlow'), _dec$1P(_class$1N = (_class2$1A = function (_RenderFlow) { + _inheritsLoose(MainFlow, _RenderFlow); + function MainFlow() { + return _RenderFlow.apply(this, arguments) || this; + } + var _proto = MainFlow.prototype; + _proto.initialize = function initialize(info) { + _RenderFlow.prototype.initialize.call(this, info); + if (this._stages.length === 0) { + var gbufferStage = new GbufferStage(); + gbufferStage.initialize(GbufferStage.initInfo); + this._stages.push(gbufferStage); + var lightingStage = new LightingStage(); + lightingStage.initialize(LightingStage.initInfo); + this._stages.push(lightingStage); + var bloomStage = new BloomStage(); + bloomStage.initialize(BloomStage.initInfo); + this._stages.push(bloomStage); + var postProcessStage = new PostProcessStage(); + postProcessStage.initialize(PostProcessStage.initInfo); + this._stages.push(postProcessStage); + } + return true; + }; + _proto.activate = function activate(pipeline) { + _RenderFlow.prototype.activate.call(this, pipeline); + }; + _proto.render = function render(camera) { + _RenderFlow.prototype.render.call(this, camera); + }; + _proto.destroy = function destroy() { + _RenderFlow.prototype.destroy.call(this); + }; + return MainFlow; + }(RenderFlow), _class2$1A.initInfo = { + name: PIPELINE_FLOW_MAIN, + priority: DeferredFlowPriority.MAIN, + stages: [] + }, _class2$1A)) || _class$1N)); + + var _phaseID$3 = getPhaseID('shadow-caster'); + function getShadowPassIndex(subModel) { + var passes = subModel.passes; + var r = legacyCC.rendering; + if (isEnableEffect()) _phaseID$3 = r.getPhaseID(r.getPassID('default'), 'shadow-caster'); + for (var k = 0; k < passes.length; k++) { + if ((!r || !r.enableEffectImport) && passes[k].phase === _phaseID$3 || isEnableEffect() && passes[k].phaseID === _phaseID$3) { + return k; + } + } + return -1; + } + var RenderShadowMapBatchedQueue = function () { + function RenderShadowMapBatchedQueue(pipeline) { + this._pipeline = void 0; + this._subModelsArray = []; + this._passArray = []; + this._shaderArray = []; + this._instancedQueue = void 0; + this._pipeline = pipeline; + this._instancedQueue = new RenderInstancedQueue(); + } + var _proto = RenderShadowMapBatchedQueue.prototype; + _proto.gatherLightPasses = function gatherLightPasses(camera, light, cmdBuff, level) { + if (level === void 0) { + level = 0; + } + this.clear(); + var sceneData = this._pipeline.pipelineSceneData; + var shadowInfo = sceneData.shadows; + if (light && shadowInfo.enabled && shadowInfo.type === ShadowType.ShadowMap) { + switch (light.type) { + case LightType.DIRECTIONAL: + var dirLight = light; + if (dirLight.shadowEnabled) { + var csmLayers = sceneData.csmLayers; + var layer; + if (dirLight.shadowFixedArea) { + layer = csmLayers.specialLayer; + } else { + layer = csmLayers.layers[level]; + } + shadowCulling(camera, sceneData, layer); + var dirShadowObjects = layer.shadowObjects; + for (var i = 0; i < dirShadowObjects.length; i++) { + var ro = dirShadowObjects[i]; + var model = ro.model; + this.add(model, level); + } + } + break; + case LightType.SPOT: + var spotLight = light; + if (spotLight.shadowEnabled) { + var visibility = spotLight.visibility; + var castShadowObjects = sceneData.csmLayers.castShadowObjects; + for (var _i = 0; _i < castShadowObjects.length; _i++) { + var _ro = castShadowObjects[_i]; + var _model = _ro.model; + if (_model.worldBounds) { + if ((visibility & _model.node.layer) !== _model.node.layer || !intersect.aabbFrustum(_model.worldBounds, spotLight.frustum)) { + continue; + } + } + this.add(_model, level); + } + } + break; + } + this._instancedQueue.uploadBuffers(cmdBuff); + } + }; + _proto.clear = function clear() { + this._subModelsArray.length = 0; + this._shaderArray.length = 0; + this._passArray.length = 0; + this._instancedQueue.clear(); + }; + _proto.add = function add(model, level) { + var subModels = model.subModels; + for (var j = 0; j < subModels.length; j++) { + var subModel = subModels[j]; + var shadowPassIdx = getShadowPassIndex(subModel); + if (shadowPassIdx < 0) { + continue; + } + var pass = subModel.passes[shadowPassIdx]; + var batchingScheme = pass.batchingScheme; + if (batchingScheme === BatchingSchemes.INSTANCING) { + var buffer = pass.getInstancedBuffer(level); + buffer.merge(subModel, shadowPassIdx); + this._instancedQueue.queue.add(buffer); + } else { + var shader = subModel.shaders[shadowPassIdx]; + this._subModelsArray.push(subModel); + if (shader) this._shaderArray.push(shader); + this._passArray.push(pass); + } + } + }; + _proto.recordCommandBuffer = function recordCommandBuffer(device, renderPass, cmdBuff) { + this._instancedQueue.recordCommandBuffer(device, renderPass, cmdBuff); + for (var i = 0; i < this._subModelsArray.length; ++i) { + var subModel = this._subModelsArray[i]; + var shader = this._shaderArray[i]; + var pass = this._passArray[i]; + var ia = subModel.inputAssembler; + var pso = PipelineStateManager.getOrCreatePipelineState(device, pass, shader, renderPass, ia); + var descriptorSet = pass.descriptorSet; + cmdBuff.bindPipelineState(pso); + cmdBuff.bindDescriptorSet(SetIndex.MATERIAL, descriptorSet); + cmdBuff.bindDescriptorSet(SetIndex.LOCAL, subModel.descriptorSet); + cmdBuff.bindInputAssembler(ia); + cmdBuff.draw(ia); + } + }; + return RenderShadowMapBatchedQueue; + }(); + + var _dec$1O, _class$1M, _class2$1z; + var colors$2 = [new Color(1, 1, 1, 1)]; + var ShadowStage = exports('d3', (_dec$1O = ccclass$t('ShadowStage'), _dec$1O(_class$1M = (_class2$1z = function (_RenderStage) { + _inheritsLoose(ShadowStage, _RenderStage); + function ShadowStage() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _RenderStage.call.apply(_RenderStage, [this].concat(args)) || this; + _this._additiveShadowQueue = void 0; + _this._shadowFrameBuffer = null; + _this._renderArea = new Rect(); + _this._light = null; + _this._globalDS = null; + _this._level = 0; + _this._isShadowMapCleared = false; + return _this; + } + var _proto = ShadowStage.prototype; + _proto.setUsage = function setUsage(globalDS, light, shadowFrameBuffer, level) { + if (level === void 0) { + level = 0; + } + this._globalDS = globalDS; + this._light = light; + this._shadowFrameBuffer = shadowFrameBuffer; + this._level = level; + }; + _proto.destroy = function destroy() { + var _this$_additiveShadow; + this._shadowFrameBuffer = null; + this._globalDS = null; + this._light = null; + (_this$_additiveShadow = this._additiveShadowQueue) === null || _this$_additiveShadow === void 0 ? void 0 : _this$_additiveShadow.clear(); + }; + _proto.clearFramebuffer = function clearFramebuffer(camera) { + if (!this._light || !this._shadowFrameBuffer || this._isShadowMapCleared) { + return; + } + colors$2[0].w = camera.clearColor.w; + var pipeline = this._pipeline; + var pipelineSceneData = pipeline.pipelineSceneData; + var shadingScale = pipelineSceneData.shadingScale; + var shadowInfo = pipelineSceneData.shadows; + var vp = camera.viewport; + var shadowMapSize = shadowInfo.size; + this._renderArea.x = vp.x * shadowMapSize.x; + this._renderArea.y = vp.y * shadowMapSize.y; + this._renderArea.width = vp.width * shadowMapSize.x * shadingScale; + this._renderArea.height = vp.height * shadowMapSize.y * shadingScale; + var cmdBuff = pipeline.commandBuffers[0]; + var renderPass = this._shadowFrameBuffer.renderPass; + cmdBuff.beginRenderPass(renderPass, this._shadowFrameBuffer, this._renderArea, colors$2, camera.clearDepth, camera.clearStencil); + cmdBuff.endRenderPass(); + this._isShadowMapCleared = true; + }; + _proto.render = function render(camera) { + var pipeline = this._pipeline; + var pipelineSceneData = pipeline.pipelineSceneData; + var shadowInfo = pipelineSceneData.shadows; + var descriptorSet = this._globalDS; + var cmdBuff = pipeline.commandBuffers[0]; + var level = this._level; + var device = pipeline.device; + if (!this._light || !this._shadowFrameBuffer) { + return; + } + this._pipeline.pipelineUBO.updateShadowUBOLight(descriptorSet, this._light, level); + this._additiveShadowQueue.gatherLightPasses(camera, this._light, cmdBuff, level); + var shadowMapSize = shadowInfo.size; + switch (this._light.type) { + case LightType.DIRECTIONAL: + { + var mainLight = this._light; + if (mainLight.shadowFixedArea || mainLight.csmLevel === CSMLevel.LEVEL_1 || !pipelineSceneData.csmSupported) { + this._renderArea.x = 0; + this._renderArea.y = 0; + this._renderArea.width = shadowMapSize.x; + this._renderArea.height = shadowMapSize.y; + } else { + var screenSpaceSignY = device.capabilities.screenSpaceSignY; + this._renderArea.x = level % 2 * 0.5 * shadowMapSize.x; + if (screenSpaceSignY > 0.0) { + this._renderArea.y = (1 - Math.floor(level / 2)) * 0.5 * shadowMapSize.y; + } else { + this._renderArea.y = Math.floor(level / 2) * 0.5 * shadowMapSize.y; + } + this._renderArea.width = 0.5 * shadowMapSize.x; + this._renderArea.height = 0.5 * shadowMapSize.y; + } + break; + } + case LightType.SPOT: + { + this._renderArea.x = 0; + this._renderArea.y = 0; + this._renderArea.width = shadowMapSize.x; + this._renderArea.height = shadowMapSize.y; + break; + } + } + var renderPass = this._shadowFrameBuffer.renderPass; + cmdBuff.beginRenderPass(renderPass, this._shadowFrameBuffer, this._renderArea, colors$2, camera.clearDepth, camera.clearStencil); + cmdBuff.bindDescriptorSet(SetIndex.GLOBAL, descriptorSet); + this._additiveShadowQueue.recordCommandBuffer(device, renderPass, cmdBuff); + cmdBuff.endRenderPass(); + this._isShadowMapCleared = false; + }; + _proto.activate = function activate(pipeline, flow) { + _RenderStage.prototype.activate.call(this, pipeline, flow); + this._additiveShadowQueue = new RenderShadowMapBatchedQueue(pipeline); + this._isShadowMapCleared = false; + }; + return ShadowStage; + }(RenderStage), _class2$1z.initInfo = { + name: 'ShadowStage', + priority: ForwardStagePriority.FORWARD, + tag: 0 + }, _class2$1z)) || _class$1M)); + + var _dec$1N, _class$1L, _class2$1y; + var _validLights = []; + var ShadowFlow = exports('d2', (_dec$1N = ccclass$t('ShadowFlow'), _dec$1N(_class$1L = (_class2$1y = function (_RenderFlow) { + _inheritsLoose(ShadowFlow, _RenderFlow); + function ShadowFlow() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _RenderFlow.call.apply(_RenderFlow, [this].concat(args)) || this; + _this._shadowRenderPass = null; + return _this; + } + var _proto = ShadowFlow.prototype; + _proto.initialize = function initialize(info) { + _RenderFlow.prototype.initialize.call(this, info); + if (this._stages.length === 0) { + var shadowMapStage = new ShadowStage(); + shadowMapStage.initialize(ShadowStage.initInfo); + this._stages.push(shadowMapStage); + } + return true; + }; + _proto.activate = function activate(pipeline) { + _RenderFlow.prototype.activate.call(this, pipeline); + var isRGBE = supportsR32FloatTexture(pipeline.device) ? 0 : 1; + pipeline.macros.CC_SHADOWMAP_FORMAT = isRGBE; + var isLinear = pipeline.device.gfxAPI === API.WEBGL ? 1 : 0; + pipeline.macros.CC_SHADOWMAP_USE_LINEAR_DEPTH = isLinear; + pipeline.pipelineSceneData.csmSupported = pipeline.device.capabilities.maxFragmentUniformVectors >= (UBOGlobal.COUNT + UBOCamera.COUNT + UBOShadow.COUNT + UBOCSM.COUNT) / 4; + pipeline.macros.CC_SUPPORT_CASCADED_SHADOW_MAP = pipeline.pipelineSceneData.csmSupported; + pipeline.macros.CC_SHADOW_TYPE = 0; + pipeline.macros.CC_DIR_SHADOW_PCF_TYPE = PCFType.HARD; + pipeline.macros.CC_DIR_LIGHT_SHADOW_TYPE = 0; + pipeline.macros.CC_CASCADED_LAYERS_TRANSITION = 0; + pipeline.onGlobalPipelineStateChanged(); + }; + _proto.render = function render(camera) { + var pipeline = this._pipeline; + var shadowInfo = pipeline.pipelineSceneData.shadows; + var csmLayers = pipeline.pipelineSceneData.csmLayers; + var shadowFrameBufferMap = pipeline.pipelineSceneData.shadowFrameBufferMap; + var castShadowObjects = csmLayers.castShadowObjects; + var validPunctualLights = this._pipeline.pipelineSceneData.validPunctualLights; + if (!shadowInfo.enabled || shadowInfo.type !== ShadowType.ShadowMap) { + return; + } + var n = 0; + var m = 0; + for (; n < shadowInfo.maxReceived && m < validPunctualLights.length;) { + var light = validPunctualLights[m]; + if (light.type === LightType.SPOT) { + var spotLight = light; + if (spotLight.shadowEnabled) { + _validLights.push(light); + n++; + } + } + m++; + } + if (castShadowObjects.length === 0) { + this.clearShadowMap(_validLights, camera); + return; + } + if (shadowInfo.shadowMapDirty) { + this.resizeShadowMap(); + } + var _ref = camera.scene, + mainLight = _ref.mainLight; + if (mainLight && mainLight.shadowEnabled) { + var globalDS = pipeline.descriptorSet; + if (!shadowFrameBufferMap.has(mainLight)) { + this._initShadowFrameBuffer(pipeline, mainLight, camera.window.swapchain); + } + var shadowFrameBuffer = shadowFrameBufferMap.get(mainLight); + if (mainLight.shadowFixedArea) { + this._renderStage(camera, mainLight, shadowFrameBuffer, globalDS); + } else { + var csmLevel = pipeline.pipelineSceneData.csmSupported ? mainLight.csmLevel : 1; + for (var i = 0; i < csmLevel; i++) { + this._renderStage(camera, mainLight, shadowFrameBuffer, globalDS, i); + } + } + } + for (var l = 0; l < _validLights.length; l++) { + var _light = _validLights[l]; + var ds = pipeline.globalDSManager.getOrCreateDescriptorSet(_light); + if (!shadowFrameBufferMap.has(_light)) { + this._initShadowFrameBuffer(pipeline, _light, camera.window.swapchain); + } + var _shadowFrameBuffer = shadowFrameBufferMap.get(_light); + this._renderStage(camera, _light, _shadowFrameBuffer, ds); + } + _validLights.length = 0; + }; + _proto.destroy = function destroy() { + _RenderFlow.prototype.destroy.call(this); + if (this._pipeline) { + var shadowFrameBufferMap = this._pipeline.pipelineSceneData.shadowFrameBufferMap; + var shadowFrameBuffers = Array.from(shadowFrameBufferMap.values()); + for (var i = 0; i < shadowFrameBuffers.length; i++) { + var frameBuffer = shadowFrameBuffers[i]; + if (!frameBuffer) { + continue; + } + var renderTargets = frameBuffer.colorTextures; + for (var j = 0; j < renderTargets.length; j++) { + var renderTarget = renderTargets[j]; + if (renderTarget) { + renderTarget.destroy(); + } + } + renderTargets.length = 0; + var depth = frameBuffer.depthStencilTexture; + if (depth) { + depth.destroy(); + } + frameBuffer.destroy(); + } + shadowFrameBufferMap.clear(); + } + if (this._shadowRenderPass) { + this._shadowRenderPass.destroy(); + } + }; + _proto._initShadowFrameBuffer = function _initShadowFrameBuffer(pipeline, light, swapchain) { + var device = pipeline.device; + var shadows = pipeline.pipelineSceneData.shadows; + var shadowMapSize = shadows.size; + var shadowFrameBufferMap = pipeline.pipelineSceneData.shadowFrameBufferMap; + var format = supportsR32FloatTexture(device) ? Format.R32F : Format.RGBA8; + if (!this._shadowRenderPass) { + var colorAttachment = new ColorAttachment(); + colorAttachment.format = format; + colorAttachment.loadOp = LoadOp.CLEAR; + colorAttachment.storeOp = StoreOp.STORE; + colorAttachment.sampleCount = 1; + var depthStencilAttachment = new DepthStencilAttachment(); + depthStencilAttachment.format = Format.DEPTH_STENCIL; + depthStencilAttachment.depthLoadOp = LoadOp.CLEAR; + depthStencilAttachment.depthStoreOp = StoreOp.DISCARD; + depthStencilAttachment.stencilLoadOp = LoadOp.CLEAR; + depthStencilAttachment.stencilStoreOp = StoreOp.DISCARD; + depthStencilAttachment.sampleCount = 1; + var renderPassInfo = new RenderPassInfo([colorAttachment], depthStencilAttachment); + this._shadowRenderPass = device.createRenderPass(renderPassInfo); + } + var shadowRenderTargets = []; + shadowRenderTargets.push(device.createTexture(new TextureInfo(TextureType.TEX2D, TextureUsageBit.COLOR_ATTACHMENT | TextureUsageBit.SAMPLED, format, shadowMapSize.x, shadowMapSize.y))); + var depth = device.createTexture(new TextureInfo(TextureType.TEX2D, TextureUsageBit.DEPTH_STENCIL_ATTACHMENT, Format.DEPTH_STENCIL, shadowMapSize.x, shadowMapSize.y)); + var shadowFrameBuffer = device.createFramebuffer(new FramebufferInfo(this._shadowRenderPass, shadowRenderTargets, depth)); + shadowFrameBufferMap.set(light, shadowFrameBuffer); + }; + _proto._renderStage = function _renderStage(camera, light, shadowFrameBuffer, globalDS, level) { + if (level === void 0) { + level = 0; + } + for (var i = 0; i < this._stages.length; i++) { + var shadowStage = this._stages[i]; + shadowStage.setUsage(globalDS, light, shadowFrameBuffer, level); + shadowStage.render(camera); + } + }; + _proto.clearShadowMap = function clearShadowMap(validLights, camera) { + var pipeline = this._pipeline; + var scene = pipeline.pipelineSceneData; + var _ref2 = camera.scene, + mainLight = _ref2.mainLight; + if (mainLight) { + var globalDS = this._pipeline.descriptorSet; + if (!scene.shadowFrameBufferMap.has(mainLight)) { + this._initShadowFrameBuffer(this._pipeline, mainLight, camera.window.swapchain); + } + var shadowFrameBuffer = scene.shadowFrameBufferMap.get(mainLight); + for (var i = 0; i < this._stages.length; i++) { + var shadowStage = this._stages[i]; + shadowStage.setUsage(globalDS, mainLight, shadowFrameBuffer); + shadowStage.clearFramebuffer(camera); + } + } + for (var l = 0; l < validLights.length; l++) { + var light = validLights[l]; + var ds = pipeline.globalDSManager.getOrCreateDescriptorSet(light); + if (!scene.shadowFrameBufferMap.has(light)) { + this._initShadowFrameBuffer(this._pipeline, light, camera.window.swapchain); + } + var _shadowFrameBuffer2 = scene.shadowFrameBufferMap.get(light); + for (var _i = 0; _i < this._stages.length; _i++) { + var _shadowStage = this._stages[_i]; + _shadowStage.setUsage(ds, light, _shadowFrameBuffer2); + _shadowStage.clearFramebuffer(camera); + } + } + }; + _proto.resizeShadowMap = function resizeShadowMap() { + var shadows = this._pipeline.pipelineSceneData.shadows; + var shadowMapSize = shadows.size; + var pipeline = this._pipeline; + var device = pipeline.device; + var shadowFrameBufferMap = pipeline.pipelineSceneData.shadowFrameBufferMap; + var format = supportsR32FloatTexture(device) ? Format.R32F : Format.RGBA8; + for (var _iterator = _createForOfIteratorHelperLoose(shadowFrameBufferMap.keys()), _step; !(_step = _iterator()).done;) { + var key = _step.value; + var frameBuffer = shadowFrameBufferMap.get(key); + if (!frameBuffer) { + continue; + } + var renderTargets = []; + renderTargets.push(pipeline.device.createTexture(new TextureInfo(TextureType.TEX2D, TextureUsageBit.COLOR_ATTACHMENT | TextureUsageBit.SAMPLED, format, shadowMapSize.x, shadowMapSize.y))); + var depth = frameBuffer.depthStencilTexture; + if (depth) { + depth.resize(shadowMapSize.x, shadowMapSize.y); + } + var shadowRenderPass = frameBuffer.renderPass; + frameBuffer.destroy(); + var newFrameBuffer = device.createFramebuffer(new FramebufferInfo(shadowRenderPass, renderTargets, depth)); + shadowFrameBufferMap.set(key, newFrameBuffer); + } + shadows.shadowMapDirty = false; + }; + return ShadowFlow; + }(RenderFlow), _class2$1y.initInfo = { + name: PIPELINE_FLOW_SHADOW, + priority: ForwardFlowPriority.SHADOW, + tag: RenderFlowTag.SCENE, + stages: [] + }, _class2$1y)) || _class$1L)); + + var _dec$1M, _dec2$1d, _class2$1x, _class3$A, _initializer$1m; + var PIPELINE_TYPE$1 = 1; + var DeferredRenderData = function (_PipelineRenderData) { + _inheritsLoose(DeferredRenderData, _PipelineRenderData); + function DeferredRenderData() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _PipelineRenderData.call.apply(_PipelineRenderData, [this].concat(args)) || this; + _this.gbufferFrameBuffer = null; + _this.gbufferRenderTargets = []; + return _this; + } + return DeferredRenderData; + }(PipelineRenderData); + var DeferredPipeline = exports('cY', (_dec$1M = ccclass$t('DeferredPipeline'), _dec2$1d = type$8([RenderTextureConfig]), _dec$1M(_class2$1x = (_class3$A = function (_RenderPipeline) { + _inheritsLoose(DeferredPipeline, _RenderPipeline); + function DeferredPipeline() { + var _this2; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + _this2 = _RenderPipeline.call.apply(_RenderPipeline, [this].concat(args)) || this; + _this2._gbufferRenderPass = null; + _this2._lightingRenderPass = null; + _this2.renderTextures = _initializer$1m && _initializer$1m(); + return _this2; + } + var _proto = DeferredPipeline.prototype; + _proto.initialize = function initialize(info) { + _RenderPipeline.prototype.initialize.call(this, info); + if (this._flows.length === 0) { + var shadowFlow = new ShadowFlow(); + shadowFlow.initialize(ShadowFlow.initInfo); + this._flows.push(shadowFlow); + var mainFlow = new MainFlow(); + mainFlow.initialize(MainFlow.initInfo); + this._flows.push(mainFlow); + } + return true; + }; + _proto.activate = function activate(swapchain) { + this._macros = { + CC_PIPELINE_TYPE: PIPELINE_TYPE$1 + }; + this._pipelineSceneData = new DeferredPipelineSceneData(); + if (!_RenderPipeline.prototype.activate.call(this, swapchain)) { + return false; + } + if (!this._activeRenderer(swapchain)) { + errorID(2402); + return false; + } + return true; + }; + _proto.destroy = function destroy() { + this._destroyUBOs(); + this._destroyQuadInputAssembler(); + this._destroyDeferredData(); + var rpIter = this._renderPasses.values(); + var rpRes = rpIter.next(); + while (!rpRes.done) { + rpRes.value.destroy(); + rpRes = rpIter.next(); + } + this._commandBuffers.length = 0; + return _RenderPipeline.prototype.destroy.call(this); + }; + _proto.onGlobalPipelineStateChanged = function onGlobalPipelineStateChanged() { + this.pipelineSceneData.updatePipelineSceneData(); + }; + _proto.getPipelineRenderData = function getPipelineRenderData() { + if (!this._pipelineRenderData) { + this._generateDeferredRenderData(); + } + return this._pipelineRenderData; + }; + _proto._activeRenderer = function _activeRenderer(swapchain) { + var device = this.device; + this._commandBuffers.push(device.commandBuffer); + var sampler = this.globalDSManager.pointSampler; + this._descriptorSet.bindSampler(UNIFORM_SHADOWMAP_BINDING, sampler); + this._descriptorSet.bindTexture(UNIFORM_SHADOWMAP_BINDING, builtinResMgr.get('default-texture').getGFXTexture()); + this._descriptorSet.bindSampler(UNIFORM_SPOT_SHADOW_MAP_TEXTURE_BINDING, sampler); + this._descriptorSet.bindTexture(UNIFORM_SPOT_SHADOW_MAP_TEXTURE_BINDING, builtinResMgr.get('default-texture').getGFXTexture()); + this._descriptorSet.update(); + var inputAssemblerDataOffscreen = new PipelineInputAssemblerData(); + inputAssemblerDataOffscreen = this._createQuadInputAssembler(); + if (!inputAssemblerDataOffscreen.quadIB || !inputAssemblerDataOffscreen.quadVB || !inputAssemblerDataOffscreen.quadIA) { + return false; + } + this._quadIB = inputAssemblerDataOffscreen.quadIB; + this._quadVBOffscreen = inputAssemblerDataOffscreen.quadVB; + this._quadIAOffscreen = inputAssemblerDataOffscreen.quadIA; + var inputAssemblerDataOnscreen = this._createQuadInputAssembler(); + if (!inputAssemblerDataOnscreen.quadIB || !inputAssemblerDataOnscreen.quadVB || !inputAssemblerDataOnscreen.quadIA) { + return false; + } + this._quadVBOnscreen = inputAssemblerDataOnscreen.quadVB; + this._quadIAOnscreen = inputAssemblerDataOnscreen.quadIA; + if (!this._gbufferRenderPass) { + var colorAttachment0 = new ColorAttachment(); + colorAttachment0.format = Format.RGBA16F; + colorAttachment0.loadOp = LoadOp.CLEAR; + colorAttachment0.storeOp = StoreOp.STORE; + var colorAttachment1 = new ColorAttachment(); + colorAttachment1.format = Format.RGBA16F; + colorAttachment1.loadOp = LoadOp.CLEAR; + colorAttachment1.storeOp = StoreOp.STORE; + var colorAttachment2 = new ColorAttachment(); + colorAttachment2.format = Format.RGBA16F; + colorAttachment2.loadOp = LoadOp.CLEAR; + colorAttachment2.storeOp = StoreOp.STORE; + var depthStencilAttachment = new DepthStencilAttachment(); + depthStencilAttachment.format = Format.DEPTH_STENCIL; + depthStencilAttachment.depthLoadOp = LoadOp.CLEAR; + depthStencilAttachment.depthStoreOp = StoreOp.STORE; + depthStencilAttachment.stencilLoadOp = LoadOp.CLEAR; + depthStencilAttachment.stencilStoreOp = StoreOp.STORE; + var renderPassInfo = new RenderPassInfo([colorAttachment0, colorAttachment1, colorAttachment2], depthStencilAttachment); + this._gbufferRenderPass = device.createRenderPass(renderPassInfo); + } + if (!this._lightingRenderPass) { + var colorAttachment = new ColorAttachment(); + colorAttachment.format = Format.RGBA8; + colorAttachment.loadOp = LoadOp.CLEAR; + colorAttachment.storeOp = StoreOp.STORE; + colorAttachment.barrier = device.getGeneralBarrier(new GeneralBarrierInfo(AccessFlagBit.NONE, AccessFlagBit.COLOR_ATTACHMENT_WRITE)); + var _depthStencilAttachment = new DepthStencilAttachment(); + _depthStencilAttachment.format = Format.DEPTH_STENCIL; + _depthStencilAttachment.depthLoadOp = LoadOp.LOAD; + _depthStencilAttachment.depthStoreOp = StoreOp.DISCARD; + _depthStencilAttachment.stencilLoadOp = LoadOp.LOAD; + _depthStencilAttachment.stencilStoreOp = StoreOp.DISCARD; + colorAttachment.barrier = device.getGeneralBarrier(new GeneralBarrierInfo(AccessFlagBit.DEPTH_STENCIL_ATTACHMENT_WRITE, AccessFlagBit.DEPTH_STENCIL_ATTACHMENT_WRITE)); + var _renderPassInfo = new RenderPassInfo([colorAttachment], _depthStencilAttachment); + this._lightingRenderPass = device.createRenderPass(_renderPassInfo); + } + this._width = swapchain.width; + this._height = swapchain.height; + this._generateDeferredRenderData(); + return true; + }; + _proto._destroyUBOs = function _destroyUBOs() { + if (this._descriptorSet) { + this._descriptorSet.getBuffer(UBOGlobal.BINDING).destroy(); + this._descriptorSet.getBuffer(UBOShadow.BINDING).destroy(); + this._descriptorSet.getBuffer(UBOCamera.BINDING).destroy(); + this._descriptorSet.getTexture(UNIFORM_SHADOWMAP_BINDING).destroy(); + this._descriptorSet.getTexture(UNIFORM_SPOT_SHADOW_MAP_TEXTURE_BINDING).destroy(); + } + }; + _proto._destroyDeferredData = function _destroyDeferredData() { + var deferredData = this._pipelineRenderData; + if (deferredData) { + if (deferredData.gbufferFrameBuffer) deferredData.gbufferFrameBuffer.destroy(); + if (deferredData.outputFrameBuffer) deferredData.outputFrameBuffer.destroy(); + if (deferredData.outputDepth) deferredData.outputDepth.destroy(); + for (var i = 0; i < deferredData.gbufferRenderTargets.length; i++) { + deferredData.gbufferRenderTargets[i].destroy(); + } + deferredData.gbufferRenderTargets.length = 0; + for (var _i = 0; _i < deferredData.outputRenderTargets.length; _i++) { + deferredData.outputRenderTargets[_i].destroy(); + } + deferredData.outputRenderTargets.length = 0; + this._destroyBloomData(); + } + this._pipelineRenderData = null; + }; + _proto._ensureEnoughSize = function _ensureEnoughSize(cameras) { + var newWidth = this._width; + var newHeight = this._height; + for (var i = 0; i < cameras.length; ++i) { + var window = cameras[i].window; + newWidth = Math.max(window.width, newWidth); + newHeight = Math.max(window.height, newHeight); + } + if (newWidth !== this._width || newHeight !== this._height) { + this._width = newWidth; + this._height = newHeight; + this._destroyDeferredData(); + this._generateDeferredRenderData(); + } + }; + _proto._generateDeferredRenderData = function _generateDeferredRenderData() { + var _this3 = this; + var device = this.device; + var data = this._pipelineRenderData = new DeferredRenderData(); + var sceneData = this.pipelineSceneData; + for (var i = 0; i < 3; ++i) { + data.gbufferRenderTargets.push(device.createTexture(new TextureInfo(TextureType.TEX2D, TextureUsageBit.COLOR_ATTACHMENT | TextureUsageBit.SAMPLED, Format.RGBA16F, this._width * sceneData.shadingScale, this._height * sceneData.shadingScale))); + } + data.outputDepth = device.createTexture(new TextureInfo(TextureType.TEX2D, TextureUsageBit.DEPTH_STENCIL_ATTACHMENT | TextureUsageBit.SAMPLED, Format.DEPTH_STENCIL, this._width * sceneData.shadingScale, this._height * sceneData.shadingScale)); + data.gbufferFrameBuffer = device.createFramebuffer(new FramebufferInfo(this._gbufferRenderPass, data.gbufferRenderTargets, data.outputDepth)); + data.outputRenderTargets.push(device.createTexture(new TextureInfo(TextureType.TEX2D, TextureUsageBit.COLOR_ATTACHMENT | TextureUsageBit.SAMPLED, Format.RGBA16F, this._width * sceneData.shadingScale, this._height * sceneData.shadingScale))); + data.outputFrameBuffer = device.createFramebuffer(new FramebufferInfo(this._lightingRenderPass, data.outputRenderTargets, null)); + data.sampler = this.globalDSManager.pointSampler; + this.on(PipelineEventType.ATTACHMENT_SCALE_CAHNGED, function (val) { + data.sampler = val < 1 ? _this3.globalDSManager.pointSampler : _this3.globalDSManager.linearSampler; + data.gbufferFrameBuffer = _this3.newFramebufferByRatio(data.gbufferFrameBuffer); + data.gbufferFrameBuffer = _this3.newFramebufferByRatio(data.outputFrameBuffer); + }); + }; + return DeferredPipeline; + }(RenderPipeline), (_initializer$1m = applyDecoratedInitializer(_class3$A.prototype, "renderTextures", [_dec2$1d, serializable$9], function () { + return []; + })), _class3$A)) || _class2$1x)); + + var _lightPassPool = new Pool(function () { + return { + subModel: null, + passIdx: -1, + dynamicOffsets: [], + lights: [] + }; + }, 16); + var _v3$1 = new Vec3(); + var _vec4Array = new Float32Array(4); + var _dynamicOffsets = []; + var _lightIndices = []; + var _matShadowView = new Mat4(); + var _matShadowViewProj = new Mat4(); + var _rangedDirLightBoundingBox = new AABB(0.0, 0.0, 0.0, 0.5, 0.5, 0.5); + var _tmpBoundingBox = new AABB(); + function cullSphereLight(light, model) { + return !!(model.worldBounds && !intersect.aabbWithAABB(model.worldBounds, light.aabb)); + } + function cullSpotLight(light, model) { + return !!(model.worldBounds && (!intersect.aabbWithAABB(model.worldBounds, light.aabb) || !intersect.aabbFrustum(model.worldBounds, light.frustum))); + } + function cullPointLight(light, model) { + return !!(model.worldBounds && !intersect.aabbWithAABB(model.worldBounds, light.aabb)); + } + function cullRangedDirLight(light, model) { + AABB.transform(_tmpBoundingBox, _rangedDirLightBoundingBox, light.node.getWorldMatrix()); + return !!(model.worldBounds && !intersect.aabbWithAABB(model.worldBounds, _tmpBoundingBox)); + } + var phaseName = 'forward-add'; + var _phaseID$2 = getPhaseID(phaseName); + var _lightPassIndices = []; + function getLightPassIndices(subModels, lightPassIndices, passLayout) { + if (passLayout === void 0) { + passLayout = 'default'; + } + var r = legacyCC.rendering; + if (isEnableEffect()) { + _phaseID$2 = r.getPhaseID(r.getPassID(passLayout), phaseName); + } + lightPassIndices.length = 0; + var hasValidLightPass = false; + for (var j = 0; j < subModels.length; j++) { + var passes = subModels[j].passes; + var lightPassIndex = -1; + for (var k = 0; k < passes.length; k++) { + if ((!r || !r.enableEffectImport) && passes[k].phase === _phaseID$2 || isEnableEffect() && passes[k].phaseID === _phaseID$2) { + lightPassIndex = k; + hasValidLightPass = true; + break; + } + } + lightPassIndices.push(lightPassIndex); + } + return hasValidLightPass; + } + var RenderAdditiveLightQueue = function () { + function RenderAdditiveLightQueue(pipeline) { + this._pipeline = void 0; + this._device = void 0; + this._lightPasses = []; + this._instancedLightPassPool = _lightPassPool.alloc(); + this._shadowUBO = new Float32Array(UBOShadow.COUNT); + this._lightBufferCount = 16; + this._lightBufferStride = void 0; + this._lightBufferElementCount = void 0; + this._lightBuffer = void 0; + this._firstLightBufferView = void 0; + this._lightBufferData = void 0; + this._instancedQueues = []; + this._lightMeterScale = 10000.0; + this._pipeline = pipeline; + this._device = pipeline.device; + var alignment = this._device.capabilities.uboOffsetAlignment; + this._lightBufferStride = Math.ceil(UBOForwardLight.SIZE / alignment) * alignment; + this._lightBufferElementCount = this._lightBufferStride / Float32Array.BYTES_PER_ELEMENT; + this._lightBuffer = this._device.createBuffer(new BufferInfo(BufferUsageBit.UNIFORM | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.HOST | MemoryUsageBit.DEVICE, this._lightBufferStride * this._lightBufferCount, this._lightBufferStride)); + this._firstLightBufferView = this._device.createBuffer(new BufferViewInfo(this._lightBuffer, 0, UBOForwardLight.SIZE)); + this._lightBufferData = new Float32Array(this._lightBufferElementCount * this._lightBufferCount); + } + var _proto = RenderAdditiveLightQueue.prototype; + _proto.clear = function clear() { + this._instancedQueues.forEach(function (instancedQueue) { + instancedQueue.clear(); + }); + this._instancedQueues.length = 0; + for (var i = 0; i < this._lightPasses.length; i++) { + var lp = this._lightPasses[i]; + lp.dynamicOffsets.length = 0; + lp.lights.length = 0; + } + _lightPassPool.freeArray(this._lightPasses); + this._lightPasses.length = 0; + this._instancedLightPassPool.dynamicOffsets.length = 0; + this._instancedLightPassPool.lights.length = 0; + }; + _proto.destroy = function destroy() { + var descriptorSetMap = this._pipeline.globalDSManager.descriptorSetMap; + var keys = descriptorSetMap.keys; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var descriptorSet = descriptorSetMap.get(key); + if (descriptorSet) { + var binding = isEnableEffect() ? getDescBindingFromName('CCShadow') : UBOShadow.BINDING; + descriptorSet.getBuffer(binding).destroy(); + descriptorSet.getTexture(UNIFORM_SHADOWMAP_BINDING).destroy(); + descriptorSet.getTexture(UNIFORM_SPOT_SHADOW_MAP_TEXTURE_BINDING).destroy(); + descriptorSet.destroy(); + } + descriptorSetMap["delete"](key); + } + }; + _proto._bindForwardAddLight = function _bindForwardAddLight(validPunctualLights, passLayout) { + if (passLayout === void 0) { + passLayout = 'default'; + } + var renderObjects = this._pipeline.pipelineSceneData.renderObjects; + for (var i = 0; i < renderObjects.length; i++) { + var ro = renderObjects[i]; + var model = ro.model; + var subModels = model.subModels; + if (!getLightPassIndices(subModels, _lightPassIndices, passLayout)) { + continue; + } + _lightIndices.length = 0; + this._lightCulling(model, validPunctualLights); + if (!_lightIndices.length && validPunctualLights.length > 0) { + continue; + } + for (var j = 0; j < subModels.length; j++) { + var lightPassIdx = _lightPassIndices[j]; + if (lightPassIdx < 0) { + continue; + } + var subModel = subModels[j]; + var pass = subModel.passes[lightPassIdx]; + var isTransparent = subModel.passes[0].blendState.targets[0].blend; + if (isTransparent) { + continue; + } + isEnableEffect() ? getDescBindingFromName('CCForwardLight') : UBOForwardLight.BINDING; + subModel.descriptorSet.bindBuffer(UBOForwardLight.BINDING, this._firstLightBufferView); + subModel.descriptorSet.update(); + this._addRenderQueue(pass, subModel, model, lightPassIdx); + } + } + }; + _proto.gatherLightPasses = function gatherLightPasses(camera, cmdBuff, passLayout) { + if (passLayout === void 0) { + passLayout = 'default'; + } + this.clear(); + var validPunctualLights = this._pipeline.pipelineSceneData.validPunctualLights; + if (!validPunctualLights.length) { + this._bindForwardAddLight(validPunctualLights, passLayout); + return; + } + this._updateUBOs(camera, cmdBuff); + this._updateLightDescriptorSet(camera, cmdBuff); + this._bindForwardAddLight(validPunctualLights, passLayout); + for (var l = 0; l < validPunctualLights.length; l++) { + var light = validPunctualLights[l]; + this._instancedLightPassPool.lights.push(light); + this._instancedLightPassPool.dynamicOffsets.push(this._lightBufferStride * l); + } + this._instancedQueues.forEach(function (instancedQueue) { + instancedQueue.uploadBuffers(cmdBuff); + }); + }; + _proto.recordCommandBuffer = function recordCommandBuffer(device, renderPass, cmdBuff) { + var globalDSManager = this._pipeline.globalDSManager; + for (var j = 0; j < this._instancedQueues.length; ++j) { + var light = this._instancedLightPassPool.lights[j]; + _dynamicOffsets[0] = this._instancedLightPassPool.dynamicOffsets[j]; + var descriptorSet = globalDSManager.getOrCreateDescriptorSet(light); + this._instancedQueues[j].recordCommandBuffer(device, renderPass, cmdBuff, descriptorSet, _dynamicOffsets); + } + for (var i = 0; i < this._lightPasses.length; i++) { + var _this$_lightPasses$i = this._lightPasses[i], + subModel = _this$_lightPasses$i.subModel, + passIdx = _this$_lightPasses$i.passIdx, + dynamicOffsets = _this$_lightPasses$i.dynamicOffsets, + lights = _this$_lightPasses$i.lights; + var pass = subModel.passes[passIdx]; + var shader = subModel.shaders[passIdx]; + var ia = subModel.inputAssembler; + var pso = PipelineStateManager.getOrCreatePipelineState(device, pass, shader, renderPass, ia); + var matDS = pass.descriptorSet; + var localDS = subModel.descriptorSet; + cmdBuff.bindPipelineState(pso); + cmdBuff.bindDescriptorSet(SetIndex.MATERIAL, matDS); + cmdBuff.bindInputAssembler(ia); + for (var _j = 0; _j < dynamicOffsets.length; ++_j) { + var _light = lights[_j]; + var _descriptorSet = globalDSManager.getOrCreateDescriptorSet(_light); + _dynamicOffsets[0] = dynamicOffsets[_j]; + cmdBuff.bindDescriptorSet(SetIndex.GLOBAL, _descriptorSet); + cmdBuff.bindDescriptorSet(SetIndex.LOCAL, localDS, _dynamicOffsets); + cmdBuff.draw(ia); + } + } + }; + _proto._lightCulling = function _lightCulling(model, validPunctualLights) { + var isCulled = false; + for (var l = 0; l < validPunctualLights.length; l++) { + var light = validPunctualLights[l]; + switch (light.type) { + case LightType.SPHERE: + isCulled = cullSphereLight(light, model); + break; + case LightType.SPOT: + isCulled = cullSpotLight(light, model); + break; + case LightType.POINT: + isCulled = cullPointLight(light, model); + break; + case LightType.RANGED_DIRECTIONAL: + isCulled = cullRangedDirLight(light, model); + break; + } + if (!isCulled) { + _lightIndices.push(l); + } + } + }; + _proto._addRenderQueue = function _addRenderQueue(pass, subModel, model, lightPassIdx) { + var validPunctualLights = this._pipeline.pipelineSceneData.validPunctualLights; + var batchingScheme = pass.batchingScheme; + var lp = null; + if (batchingScheme === BatchingSchemes.NONE) { + lp = _lightPassPool.alloc(); + lp.subModel = subModel; + lp.passIdx = lightPassIdx; + } + for (var l = 0; l < _lightIndices.length; l++) { + var lightIdx = _lightIndices[l]; + var light = validPunctualLights[lightIdx]; + var visibility = light.visibility; + if ((visibility & model.node.layer) === model.node.layer) { + switch (batchingScheme) { + case BatchingSchemes.INSTANCING: + { + var buffer = pass.getInstancedBuffer(l); + buffer.merge(subModel, lightPassIdx); + buffer.dynamicOffsets[0] = this._lightBufferStride; + if (!this._instancedQueues[l]) { + this._instancedQueues[l] = new RenderInstancedQueue(); + } + this._instancedQueues[l].queue.add(buffer); + } + break; + default: + lp.lights.push(light); + lp.dynamicOffsets.push(this._lightBufferStride * lightIdx); + } + } + } + if (batchingScheme === BatchingSchemes.NONE) { + this._lightPasses.push(lp); + } + }; + _proto._updateLightDescriptorSet = function _updateLightDescriptorSet(camera, cmdBuff) { + var device = this._pipeline.device; + var sceneData = this._pipeline.pipelineSceneData; + var shadowInfo = sceneData.shadows; + var shadowFrameBufferMap = sceneData.shadowFrameBufferMap; + var mainLight = camera.scene.mainLight; + var packing = supportsR32FloatTexture(device) ? 0.0 : 1.0; + var globalDSManager = this._pipeline.globalDSManager; + var validPunctualLights = sceneData.validPunctualLights; + var cap = this._pipeline.device.capabilities; + for (var i = 0; i < validPunctualLights.length; i++) { + var light = validPunctualLights[i]; + var descriptorSet = globalDSManager.getOrCreateDescriptorSet(light); + if (!descriptorSet) { + continue; + } + var matShadowProj = void 0; + var matShadowInvProj = void 0; + switch (light.type) { + case LightType.SPHERE: + { + if (mainLight) { + PipelineUBO.updatePlanarNormalAndDistance(shadowInfo, this._shadowUBO); + } + this._shadowUBO[UBOShadow.SHADOW_WIDTH_HEIGHT_PCF_BIAS_INFO_OFFSET + 0] = shadowInfo.size.x; + this._shadowUBO[UBOShadow.SHADOW_WIDTH_HEIGHT_PCF_BIAS_INFO_OFFSET + 1] = shadowInfo.size.y; + this._shadowUBO[UBOShadow.SHADOW_WIDTH_HEIGHT_PCF_BIAS_INFO_OFFSET + 2] = 1.0; + this._shadowUBO[UBOShadow.SHADOW_WIDTH_HEIGHT_PCF_BIAS_INFO_OFFSET + 3] = 0.0; + this._shadowUBO[UBOShadow.SHADOW_LIGHT_PACKING_NBIAS_NULL_INFO_OFFSET + 0] = LightType.SPHERE; + this._shadowUBO[UBOShadow.SHADOW_LIGHT_PACKING_NBIAS_NULL_INFO_OFFSET + 1] = packing; + this._shadowUBO[UBOShadow.SHADOW_LIGHT_PACKING_NBIAS_NULL_INFO_OFFSET + 2] = 0.0; + this._shadowUBO[UBOShadow.SHADOW_LIGHT_PACKING_NBIAS_NULL_INFO_OFFSET + 3] = 0.0; + Color$1.toArray(this._shadowUBO, shadowInfo.shadowColor, UBOShadow.SHADOW_COLOR_OFFSET); + break; + } + case LightType.SPOT: + { + var spotLight = light; + if (mainLight) { + PipelineUBO.updatePlanarNormalAndDistance(shadowInfo, this._shadowUBO); + } + Mat4.invert(_matShadowView, light.node.getWorldMatrix()); + Mat4.perspective(_matShadowViewProj, light.angle, 1.0, 0.001, light.range, true, cap.clipSpaceMinZ, cap.clipSpaceSignY, 0); + matShadowProj = _matShadowViewProj.clone(); + matShadowInvProj = _matShadowViewProj.clone().invert(); + Mat4.multiply(_matShadowViewProj, _matShadowViewProj, _matShadowView); + Mat4.toArray(this._shadowUBO, _matShadowView, UBOShadow.MAT_LIGHT_VIEW_OFFSET); + Mat4.toArray(this._shadowUBO, _matShadowViewProj, UBOShadow.MAT_LIGHT_VIEW_PROJ_OFFSET); + this._shadowUBO[UBOShadow.SHADOW_NEAR_FAR_LINEAR_SATURATION_INFO_OFFSET + 0] = 0.01; + this._shadowUBO[UBOShadow.SHADOW_NEAR_FAR_LINEAR_SATURATION_INFO_OFFSET + 1] = light.range; + this._shadowUBO[UBOShadow.SHADOW_NEAR_FAR_LINEAR_SATURATION_INFO_OFFSET + 2] = 0.0; + this._shadowUBO[UBOShadow.SHADOW_NEAR_FAR_LINEAR_SATURATION_INFO_OFFSET + 3] = 0.0; + this._shadowUBO[UBOShadow.SHADOW_WIDTH_HEIGHT_PCF_BIAS_INFO_OFFSET + 0] = shadowInfo.size.x; + this._shadowUBO[UBOShadow.SHADOW_WIDTH_HEIGHT_PCF_BIAS_INFO_OFFSET + 1] = shadowInfo.size.y; + this._shadowUBO[UBOShadow.SHADOW_WIDTH_HEIGHT_PCF_BIAS_INFO_OFFSET + 2] = spotLight.shadowPcf; + this._shadowUBO[UBOShadow.SHADOW_WIDTH_HEIGHT_PCF_BIAS_INFO_OFFSET + 3] = spotLight.shadowBias; + this._shadowUBO[UBOShadow.SHADOW_LIGHT_PACKING_NBIAS_NULL_INFO_OFFSET + 0] = LightType.SPOT; + this._shadowUBO[UBOShadow.SHADOW_LIGHT_PACKING_NBIAS_NULL_INFO_OFFSET + 1] = packing; + this._shadowUBO[UBOShadow.SHADOW_LIGHT_PACKING_NBIAS_NULL_INFO_OFFSET + 2] = spotLight.shadowNormalBias; + this._shadowUBO[UBOShadow.SHADOW_LIGHT_PACKING_NBIAS_NULL_INFO_OFFSET + 3] = 0.0; + this._shadowUBO[UBOShadow.SHADOW_PROJ_DEPTH_INFO_OFFSET + 0] = matShadowProj.m10; + this._shadowUBO[UBOShadow.SHADOW_PROJ_DEPTH_INFO_OFFSET + 1] = matShadowProj.m14; + this._shadowUBO[UBOShadow.SHADOW_PROJ_DEPTH_INFO_OFFSET + 2] = matShadowProj.m11; + this._shadowUBO[UBOShadow.SHADOW_PROJ_DEPTH_INFO_OFFSET + 3] = matShadowProj.m15; + this._shadowUBO[UBOShadow.SHADOW_INV_PROJ_DEPTH_INFO_OFFSET + 0] = matShadowInvProj.m10; + this._shadowUBO[UBOShadow.SHADOW_INV_PROJ_DEPTH_INFO_OFFSET + 1] = matShadowInvProj.m14; + this._shadowUBO[UBOShadow.SHADOW_INV_PROJ_DEPTH_INFO_OFFSET + 2] = matShadowInvProj.m11; + this._shadowUBO[UBOShadow.SHADOW_INV_PROJ_DEPTH_INFO_OFFSET + 3] = matShadowInvProj.m15; + this._shadowUBO[UBOShadow.SHADOW_PROJ_INFO_OFFSET + 0] = matShadowProj.m00; + this._shadowUBO[UBOShadow.SHADOW_PROJ_INFO_OFFSET + 1] = matShadowProj.m05; + this._shadowUBO[UBOShadow.SHADOW_PROJ_INFO_OFFSET + 2] = 1.0 / matShadowProj.m00; + this._shadowUBO[UBOShadow.SHADOW_PROJ_INFO_OFFSET + 3] = 1.0 / matShadowProj.m05; + Color$1.toArray(this._shadowUBO, shadowInfo.shadowColor, UBOShadow.SHADOW_COLOR_OFFSET); + if (shadowFrameBufferMap.has(light)) { + var _shadowFrameBufferMap; + var texture = (_shadowFrameBufferMap = shadowFrameBufferMap.get(light)) === null || _shadowFrameBufferMap === void 0 ? void 0 : _shadowFrameBufferMap.colorTextures[0]; + if (texture) { + descriptorSet.bindTexture(UNIFORM_SPOT_SHADOW_MAP_TEXTURE_BINDING, texture); + } + } + break; + } + case LightType.POINT: + { + if (mainLight) { + PipelineUBO.updatePlanarNormalAndDistance(shadowInfo, this._shadowUBO); + } + this._shadowUBO[UBOShadow.SHADOW_WIDTH_HEIGHT_PCF_BIAS_INFO_OFFSET + 0] = shadowInfo.size.x; + this._shadowUBO[UBOShadow.SHADOW_WIDTH_HEIGHT_PCF_BIAS_INFO_OFFSET + 1] = shadowInfo.size.y; + this._shadowUBO[UBOShadow.SHADOW_WIDTH_HEIGHT_PCF_BIAS_INFO_OFFSET + 2] = 1.0; + this._shadowUBO[UBOShadow.SHADOW_WIDTH_HEIGHT_PCF_BIAS_INFO_OFFSET + 3] = 0.0; + this._shadowUBO[UBOShadow.SHADOW_LIGHT_PACKING_NBIAS_NULL_INFO_OFFSET + 0] = LightType.POINT; + this._shadowUBO[UBOShadow.SHADOW_LIGHT_PACKING_NBIAS_NULL_INFO_OFFSET + 1] = packing; + this._shadowUBO[UBOShadow.SHADOW_LIGHT_PACKING_NBIAS_NULL_INFO_OFFSET + 2] = 0.0; + this._shadowUBO[UBOShadow.SHADOW_LIGHT_PACKING_NBIAS_NULL_INFO_OFFSET + 3] = 0.0; + Color$1.toArray(this._shadowUBO, shadowInfo.shadowColor, UBOShadow.SHADOW_COLOR_OFFSET); + break; + } + } + descriptorSet.update(); + var binding = isEnableEffect() ? getDescBindingFromName('CCShadow') : UBOShadow.BINDING; + cmdBuff.updateBuffer(descriptorSet.getBuffer(binding), this._shadowUBO); + } + }; + _proto._updateUBOs = function _updateUBOs(camera, cmdBuff) { + var exposure = camera.exposure; + var sceneData = this._pipeline.pipelineSceneData; + var isHDR = sceneData.isHDR; + var shadowInfo = sceneData.shadows; + var validPunctualLights = sceneData.validPunctualLights; + if (validPunctualLights.length > this._lightBufferCount) { + this._firstLightBufferView.destroy(); + this._lightBufferCount = nextPow2(validPunctualLights.length); + this._lightBuffer.resize(this._lightBufferStride * this._lightBufferCount); + this._lightBufferData = new Float32Array(this._lightBufferElementCount * this._lightBufferCount); + this._firstLightBufferView.initialize(new BufferViewInfo(this._lightBuffer, 0, UBOForwardLight.SIZE)); + } + for (var l = 0, offset = 0; l < validPunctualLights.length; l++, offset += this._lightBufferElementCount) { + var light = validPunctualLights[l]; + switch (light.type) { + case LightType.SPHERE: + Vec3.toArray(_vec4Array, light.position); + _vec4Array[3] = LightType.SPHERE; + this._lightBufferData.set(_vec4Array, offset + UBOForwardLight.LIGHT_POS_OFFSET); + _vec4Array[0] = light.size; + _vec4Array[1] = light.range; + _vec4Array[2] = 0.0; + _vec4Array[3] = 0.0; + this._lightBufferData.set(_vec4Array, offset + UBOForwardLight.LIGHT_SIZE_RANGE_ANGLE_OFFSET); + Vec3.toArray(_vec4Array, light.color); + if (light.useColorTemperature) { + var finalColor = light.finalColor; + _vec4Array[0] = finalColor.x; + _vec4Array[1] = finalColor.y; + _vec4Array[2] = finalColor.z; + } + if (isHDR) { + _vec4Array[3] = light.luminance * exposure * this._lightMeterScale; + } else { + _vec4Array[3] = light.luminance; + } + this._lightBufferData.set(_vec4Array, offset + UBOForwardLight.LIGHT_COLOR_OFFSET); + break; + case LightType.SPOT: + Vec3.toArray(_vec4Array, light.position); + _vec4Array[3] = LightType.SPOT; + this._lightBufferData.set(_vec4Array, offset + UBOForwardLight.LIGHT_POS_OFFSET); + _vec4Array[0] = light.size; + _vec4Array[1] = light.range; + _vec4Array[2] = light.spotAngle; + _vec4Array[3] = shadowInfo.enabled && light.shadowEnabled && shadowInfo.type === ShadowType.ShadowMap ? 1 : 0; + this._lightBufferData.set(_vec4Array, offset + UBOForwardLight.LIGHT_SIZE_RANGE_ANGLE_OFFSET); + Vec3.toArray(_vec4Array, light.direction); + this._lightBufferData.set(_vec4Array, offset + UBOForwardLight.LIGHT_DIR_OFFSET); + Vec3.toArray(_vec4Array, light.color); + if (light.useColorTemperature) { + var _finalColor = light.finalColor; + _vec4Array[0] = _finalColor.x; + _vec4Array[1] = _finalColor.y; + _vec4Array[2] = _finalColor.z; + } + if (isHDR) { + _vec4Array[3] = light.luminance * exposure * this._lightMeterScale; + } else { + _vec4Array[3] = light.luminance; + } + this._lightBufferData.set(_vec4Array, offset + UBOForwardLight.LIGHT_COLOR_OFFSET); + break; + case LightType.POINT: + Vec3.toArray(_vec4Array, light.position); + _vec4Array[3] = LightType.POINT; + this._lightBufferData.set(_vec4Array, offset + UBOForwardLight.LIGHT_POS_OFFSET); + _vec4Array[0] = 0.0; + _vec4Array[1] = light.range; + _vec4Array[2] = 0.0; + _vec4Array[3] = 0.0; + this._lightBufferData.set(_vec4Array, offset + UBOForwardLight.LIGHT_SIZE_RANGE_ANGLE_OFFSET); + Vec3.toArray(_vec4Array, light.color); + if (light.useColorTemperature) { + var _finalColor2 = light.finalColor; + _vec4Array[0] = _finalColor2.x; + _vec4Array[1] = _finalColor2.y; + _vec4Array[2] = _finalColor2.z; + } + if (isHDR) { + _vec4Array[3] = light.luminance * exposure * this._lightMeterScale; + } else { + _vec4Array[3] = light.luminance; + } + this._lightBufferData.set(_vec4Array, offset + UBOForwardLight.LIGHT_COLOR_OFFSET); + break; + case LightType.RANGED_DIRECTIONAL: + Vec3.toArray(_vec4Array, light.position); + _vec4Array[3] = LightType.RANGED_DIRECTIONAL; + this._lightBufferData.set(_vec4Array, offset + UBOForwardLight.LIGHT_POS_OFFSET); + Vec3.toArray(_vec4Array, light.right); + _vec4Array[3] = 0; + this._lightBufferData.set(_vec4Array, offset + UBOForwardLight.LIGHT_SIZE_RANGE_ANGLE_OFFSET); + Vec3.toArray(_vec4Array, light.direction); + _vec4Array[3] = 0; + this._lightBufferData.set(_vec4Array, offset + UBOForwardLight.LIGHT_DIR_OFFSET); + var scale = light.scale; + _v3$1.set(scale.x * 0.5, scale.y * 0.5, scale.z * 0.5); + Vec3.toArray(_vec4Array, _v3$1); + _vec4Array[3] = 0; + this._lightBufferData.set(_vec4Array, offset + UBOForwardLight.LIGHT_BOUNDING_SIZE_VS_OFFSET); + Vec3.toArray(_vec4Array, light.color); + if (light.useColorTemperature) { + var _finalColor3 = light.finalColor; + _vec4Array[0] = _finalColor3.x; + _vec4Array[1] = _finalColor3.y; + _vec4Array[2] = _finalColor3.z; + } + if (isHDR) { + _vec4Array[3] = light.illuminance * exposure; + } else { + _vec4Array[3] = light.illuminance; + } + this._lightBufferData.set(_vec4Array, offset + UBOForwardLight.LIGHT_COLOR_OFFSET); + break; + } + } + cmdBuff.updateBuffer(this._lightBuffer, this._lightBufferData); + }; + return RenderAdditiveLightQueue; + }(); + + var _dec$1L, _dec2$1c, _class$1K, _class2$1w, _initializer$1l, _class3$z; + var colors$1 = [new Color(0, 0, 0, 1)]; + var ForwardStage = exports('cX', (_dec$1L = ccclass$t('ForwardStage'), _dec2$1c = type$8([RenderQueueDesc]), _dec$1L(_class$1K = (_class2$1w = (_class3$z = function (_RenderStage) { + _inheritsLoose(ForwardStage, _RenderStage); + function ForwardStage() { + var _this; + _this = _RenderStage.call(this) || this; + _this.renderQueues = _initializer$1l && _initializer$1l(); + _this._renderQueues = []; + _this._renderArea = new Rect(); + _this._instancedQueue = void 0; + _this._phaseID = getPhaseID('default'); + _this._clearFlag = 0xffffffff; + _this.additiveInstanceQueues = []; + _this._instancedQueue = new RenderInstancedQueue(); + _this._uiPhase = new UIPhase(); + return _this; + } + var _proto = ForwardStage.prototype; + _proto.addRenderInstancedQueue = function addRenderInstancedQueue(queue) { + if (this.additiveInstanceQueues.includes(queue)) { + return; + } + this.additiveInstanceQueues.push(queue); + }; + _proto.removeRenderInstancedQueue = function removeRenderInstancedQueue(queue) { + var index = this.additiveInstanceQueues.indexOf(queue); + if (index > -1) { + this.additiveInstanceQueues.splice(index, 1); + } + }; + _proto.initialize = function initialize(info) { + _RenderStage.prototype.initialize.call(this, info); + if (info.renderQueues) { + this.renderQueues = info.renderQueues; + } + return true; + }; + _proto.activate = function activate(pipeline, flow) { + _RenderStage.prototype.activate.call(this, pipeline, flow); + for (var i = 0; i < this.renderQueues.length; i++) { + this._renderQueues[i] = convertRenderQueue(this.renderQueues[i]); + } + this._additiveLightQueue = new RenderAdditiveLightQueue(this._pipeline); + this._planarQueue = new PlanarShadowQueue(this._pipeline); + this._uiPhase.activate(pipeline); + }; + _proto.destroy = function destroy() {}; + _proto.render = function render(camera) { + var _camera$geometryRende; + this._instancedQueue.clear(); + var pipeline = this._pipeline; + var device = pipeline.device; + this._renderQueues.forEach(renderQueueClearFunc); + var renderObjects = pipeline.pipelineSceneData.renderObjects; + var m = 0; + var p = 0; + var k = 0; + for (var i = 0; i < renderObjects.length; ++i) { + var ro = renderObjects[i]; + var subModels = ro.model.subModels; + for (m = 0; m < subModels.length; ++m) { + var subModel = subModels[m]; + var passes = subModel.passes; + for (p = 0; p < passes.length; ++p) { + var pass = passes[p]; + if (pass.phase !== this._phaseID) continue; + var batchingScheme = pass.batchingScheme; + if (batchingScheme === BatchingSchemes.INSTANCING) { + var instancedBuffer = pass.getInstancedBuffer(); + instancedBuffer.merge(subModel, p); + this._instancedQueue.queue.add(instancedBuffer); + } else { + for (k = 0; k < this._renderQueues.length; k++) { + this._renderQueues[k].insertRenderPass(ro, m, p); + } + } + } + } + } + this._instancedQueue.sort(); + this._renderQueues.forEach(renderQueueSortFunc); + var cmdBuff = pipeline.commandBuffers[0]; + pipeline.pipelineUBO.updateShadowUBO(camera); + for (var _i = 0; _i < this.additiveInstanceQueues.length; _i++) { + this.additiveInstanceQueues[_i].uploadBuffers(cmdBuff); + } + this._instancedQueue.uploadBuffers(cmdBuff); + this._additiveLightQueue.gatherLightPasses(camera, cmdBuff); + this._planarQueue.gatherShadowPasses(camera, cmdBuff); + if (camera.clearFlag & ClearFlagBit.COLOR) { + colors$1[0].x = camera.clearColor.x; + colors$1[0].y = camera.clearColor.y; + colors$1[0].z = camera.clearColor.z; + colors$1[0].w = camera.clearColor.w; + } + pipeline.generateRenderArea(camera, this._renderArea); + var framebuffer = camera.window.framebuffer; + var renderPass = pipeline.getRenderPass(camera.clearFlag & this._clearFlag, framebuffer); + cmdBuff.beginRenderPass(renderPass, framebuffer, this._renderArea, colors$1, camera.clearDepth, camera.clearStencil); + cmdBuff.bindDescriptorSet(SetIndex.GLOBAL, pipeline.descriptorSet); + this._renderQueues[0].recordCommandBuffer(device, renderPass, cmdBuff); + for (var _i2 = 0; _i2 < this.additiveInstanceQueues.length; _i2++) { + this.additiveInstanceQueues[_i2].recordCommandBuffer(device, renderPass, cmdBuff); + } + this._instancedQueue.recordCommandBuffer(device, renderPass, cmdBuff); + this._additiveLightQueue.recordCommandBuffer(device, renderPass, cmdBuff); + cmdBuff.bindDescriptorSet(SetIndex.GLOBAL, pipeline.descriptorSet); + this._planarQueue.recordCommandBuffer(device, renderPass, cmdBuff); + this._renderQueues[1].recordCommandBuffer(device, renderPass, cmdBuff); + (_camera$geometryRende = camera.geometryRenderer) === null || _camera$geometryRende === void 0 ? void 0 : _camera$geometryRende.render(renderPass, cmdBuff, pipeline.pipelineSceneData); + this._uiPhase.render(camera, renderPass); + renderProfiler(device, renderPass, cmdBuff, pipeline.profiler, camera); + cmdBuff.endRenderPass(); + }; + return ForwardStage; + }(RenderStage), _class3$z.initInfo = { + name: 'ForwardStage', + priority: ForwardStagePriority.FORWARD, + tag: 0, + renderQueues: [{ + isTransparent: false, + sortMode: RenderQueueSortMode.FRONT_TO_BACK, + stages: ['default'] + }, { + isTransparent: true, + sortMode: RenderQueueSortMode.BACK_TO_FRONT, + stages: ['default', 'planarShadow'] + }] + }, _class3$z), (_initializer$1l = applyDecoratedInitializer(_class2$1w.prototype, "renderQueues", [_dec2$1c, serializable$9], function () { + return []; + })), _class2$1w)) || _class$1K)); + + var _dec$1K, _class$1J, _class2$1v; + var ForwardFlow = exports('cW', (_dec$1K = ccclass$t('ForwardFlow'), _dec$1K(_class$1J = (_class2$1v = function (_RenderFlow) { + _inheritsLoose(ForwardFlow, _RenderFlow); + function ForwardFlow() { + return _RenderFlow.apply(this, arguments) || this; + } + var _proto = ForwardFlow.prototype; + _proto.initialize = function initialize(info) { + _RenderFlow.prototype.initialize.call(this, info); + if (this._stages.length === 0) { + var forwardStage = new ForwardStage(); + forwardStage.initialize(ForwardStage.initInfo); + this._stages.push(forwardStage); + } + return true; + }; + _proto.activate = function activate(pipeline) { + _RenderFlow.prototype.activate.call(this, pipeline); + }; + _proto.render = function render(camera) { + _RenderFlow.prototype.render.call(this, camera); + }; + _proto.destroy = function destroy() { + _RenderFlow.prototype.destroy.call(this); + }; + return ForwardFlow; + }(RenderFlow), _class2$1v.initInfo = { + name: PIPELINE_FLOW_FORWARD, + priority: ForwardFlowPriority.FORWARD, + stages: [] + }, _class2$1v)) || _class$1J)); + + var CC_USE_RGBE_OUTPUT = 'CC_USE_RGBE_OUTPUT'; + var _phaseID$1 = getPhaseID('default'); + var _phaseReflectMapID = getPhaseID('reflect-map'); + function getPassIndex(subModel) { + var passes = subModel.passes; + var r = legacyCC.rendering; + if (isEnableEffect()) _phaseID$1 = r.getPhaseID(r.getPassID('default'), 'default'); + for (var k = 0; k < passes.length; k++) { + if ((!r || !r.enableEffectImport) && passes[k].phase === _phaseID$1 || isEnableEffect() && passes[k].phaseID === _phaseID$1) { + return k; + } + } + return -1; + } + function getReflectMapPassIndex(subModel) { + var passes = subModel.passes; + var r = legacyCC.rendering; + if (isEnableEffect()) _phaseReflectMapID = r.getPhaseID(r.getPassID('default'), 'reflect-map'); + for (var k = 0; k < passes.length; k++) { + if ((!r || !r.enableEffectImport) && passes[k].phase === _phaseReflectMapID || isEnableEffect() && passes[k].phaseID === _phaseReflectMapID) { + return k; + } + } + return -1; + } + var RenderReflectionProbeQueue = function () { + function RenderReflectionProbeQueue(pipeline) { + this._pipeline = void 0; + this._subModelsArray = []; + this._passArray = []; + this._shaderArray = []; + this._rgbeSubModelsArray = []; + this._instancedQueue = void 0; + this._patches = []; + this._pipeline = pipeline; + this._instancedQueue = new RenderInstancedQueue(); + } + var _proto = RenderReflectionProbeQueue.prototype; + _proto.gatherRenderObjects = function gatherRenderObjects(probe, camera, cmdBuff) { + this.clear(); + var scene = camera.scene; + var sceneData = this._pipeline.pipelineSceneData; + var skybox = sceneData.skybox; + if (skybox.enabled && skybox.model && probe.camera.clearFlag & SKYBOX_FLAG) { + this.add(skybox.model); + } + var models = scene.models; + var visibility = probe.visibility; + for (var i = 0; i < models.length; i++) { + var model = models[i]; + if (!model.node || scene.isCulledByLod(camera, model)) { + continue; + } + if ((visibility & model.node.layer) !== model.node.layer && !(visibility & model.visFlags)) { + continue; + } + if (model.enabled && model.worldBounds && model.bakeToReflectionProbe) { + if (probe.probeType === ProbeType.CUBE) { + if (intersect.aabbWithAABB(model.worldBounds, probe.boundingBox)) { + this.add(model); + } + } else if (intersect.aabbFrustum(model.worldBounds, probe.camera.frustum)) { + this.add(model); + } + } + } + this._instancedQueue.uploadBuffers(cmdBuff); + }; + _proto.clear = function clear() { + this._subModelsArray.length = 0; + this._shaderArray.length = 0; + this._passArray.length = 0; + this._instancedQueue.clear(); + this._rgbeSubModelsArray.length = 0; + }; + _proto.add = function add(model) { + var subModels = model.subModels; + for (var j = 0; j < subModels.length; j++) { + var subModel = subModels[j]; + var isTransparent = subModel.passes[0].blendState.targets[0].blend; + if (isTransparent) { + continue; + } + var passIdx = getReflectMapPassIndex(subModel); + var bUseReflectPass = true; + if (passIdx < 0) { + passIdx = getPassIndex(subModel); + bUseReflectPass = false; + } + if (passIdx < 0) { + continue; + } + var pass = subModel.passes[passIdx]; + var batchingScheme = pass.batchingScheme; + if (!bUseReflectPass) { + this._patches = []; + this._patches = this._patches.concat(subModel.patches); + var useRGBEPatchs = [{ + name: CC_USE_RGBE_OUTPUT, + value: true + }]; + this._patches = this._patches.concat(useRGBEPatchs); + subModel.onMacroPatchesStateChanged(this._patches); + this._rgbeSubModelsArray.push(subModel); + } + if (batchingScheme === BatchingSchemes.INSTANCING) { + var buffer = pass.getInstancedBuffer(); + buffer.merge(subModel, passIdx); + this._instancedQueue.queue.add(buffer); + } else { + var shader = subModel.shaders[passIdx]; + this._subModelsArray.push(subModel); + if (shader) this._shaderArray.push(shader); + this._passArray.push(pass); + } + } + }; + _proto.recordCommandBuffer = function recordCommandBuffer(device, renderPass, cmdBuff) { + this._instancedQueue.recordCommandBuffer(device, renderPass, cmdBuff); + for (var i = 0; i < this._subModelsArray.length; ++i) { + var subModel = this._subModelsArray[i]; + var shader = this._shaderArray[i]; + var pass = this._passArray[i]; + var ia = subModel.inputAssembler; + var pso = PipelineStateManager.getOrCreatePipelineState(device, pass, shader, renderPass, ia); + var descriptorSet = pass.descriptorSet; + cmdBuff.bindPipelineState(pso); + cmdBuff.bindDescriptorSet(SetIndex.MATERIAL, descriptorSet); + cmdBuff.bindDescriptorSet(SetIndex.LOCAL, subModel.descriptorSet); + cmdBuff.bindInputAssembler(ia); + cmdBuff.draw(ia); + } + this.resetRGBEMacro(); + this._instancedQueue.clear(); + }; + _proto.resetRGBEMacro = function resetRGBEMacro() { + for (var i = 0; i < this._rgbeSubModelsArray.length; i++) { + this._patches = []; + var subModel = this._rgbeSubModelsArray[i]; + this._patches = this._patches.concat(subModel.patches); + if (!this._patches) continue; + for (var j = 0; j < this._patches.length; j++) { + var patch = this._patches[j]; + if (patch.name === CC_USE_RGBE_OUTPUT) { + this._patches.splice(j, 1); + break; + } + } + subModel.onMacroPatchesStateChanged(this._patches); + } + }; + return RenderReflectionProbeQueue; + }(); + + var _dec$1J, _class$1I, _class2$1u; + var colors = [new Color(1, 1, 1, 1)]; + var ReflectionProbeStage = exports('da', (_dec$1J = ccclass$t('ReflectionProbeStage'), _dec$1J(_class$1I = (_class2$1u = function (_RenderStage) { + _inheritsLoose(ReflectionProbeStage, _RenderStage); + function ReflectionProbeStage() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _RenderStage.call.apply(_RenderStage, [this].concat(args)) || this; + _this._frameBuffer = null; + _this._renderArea = new Rect(); + _this._probe = null; + _this._probeRenderQueue = void 0; + _this._rgbeColor = new Vec3(); + return _this; + } + var _proto = ReflectionProbeStage.prototype; + _proto.setUsageInfo = function setUsageInfo(probe, frameBuffer) { + this._probe = probe; + this._frameBuffer = frameBuffer; + }; + _proto.destroy = function destroy() { + var _this$_probeRenderQue; + this._frameBuffer = null; + (_this$_probeRenderQue = this._probeRenderQueue) === null || _this$_probeRenderQue === void 0 ? void 0 : _this$_probeRenderQue.clear(); + }; + _proto.clearFramebuffer = function clearFramebuffer(camera) { + if (!this._frameBuffer) { + return; + } + colors[0].w = camera.clearColor.w; + var pipeline = this._pipeline; + var pipelineSceneData = pipeline.pipelineSceneData; + var shadingScale = pipelineSceneData.shadingScale; + var vp = camera.viewport; + var size = this._probe.resolution; + this._renderArea.x = vp.x * size; + this._renderArea.y = vp.y * size; + this._renderArea.width = vp.width * size * shadingScale; + this._renderArea.height = vp.height * size * shadingScale; + var cmdBuff = pipeline.commandBuffers[0]; + var renderPass = this._frameBuffer.renderPass; + cmdBuff.beginRenderPass(renderPass, this._frameBuffer, this._renderArea, colors, camera.clearDepth, camera.clearStencil); + cmdBuff.endRenderPass(); + }; + _proto.render = function render(camera) { + var pipeline = this._pipeline; + var cmdBuff = pipeline.commandBuffers[0]; + this._probeRenderQueue.gatherRenderObjects(this._probe, camera, cmdBuff); + pipeline.pipelineUBO.updateCameraUBO(this._probe.camera); + this._renderArea.x = 0; + this._renderArea.y = 0; + this._renderArea.width = this._probe.renderArea().x; + this._renderArea.height = this._probe.renderArea().y; + var renderPass = this._frameBuffer.renderPass; + if (this._probe.camera.clearFlag & ClearFlagBit.COLOR) { + this._rgbeColor.x = this._probe.camera.clearColor.x; + this._rgbeColor.y = this._probe.camera.clearColor.y; + this._rgbeColor.z = this._probe.camera.clearColor.z; + var rgbe = packRGBE(this._rgbeColor); + colors[0].x = rgbe.x; + colors[0].y = rgbe.y; + colors[0].z = rgbe.z; + colors[0].w = rgbe.w; + } + var device = pipeline.device; + cmdBuff.beginRenderPass(renderPass, this._frameBuffer, this._renderArea, colors, this._probe.camera.clearDepth, this._probe.camera.clearStencil); + cmdBuff.bindDescriptorSet(SetIndex.GLOBAL, pipeline.descriptorSet); + this._probeRenderQueue.recordCommandBuffer(device, renderPass, cmdBuff); + cmdBuff.endRenderPass(); + pipeline.pipelineUBO.updateCameraUBO(camera); + }; + _proto.activate = function activate(pipeline, flow) { + _RenderStage.prototype.activate.call(this, pipeline, flow); + this._probeRenderQueue = new RenderReflectionProbeQueue(pipeline); + }; + return ReflectionProbeStage; + }(RenderStage), _class2$1u.initInfo = { + name: 'ReflectionProbeStage', + priority: ForwardStagePriority.FORWARD, + tag: 0 + }, _class2$1u)) || _class$1I)); + + var _dec$1I, _class$1H, _class2$1t; + var ReflectionProbeFlow = exports('d9', (_dec$1I = ccclass$t('ReflectionProbeFlow'), _dec$1I(_class$1H = (_class2$1t = function (_RenderFlow) { + _inheritsLoose(ReflectionProbeFlow, _RenderFlow); + function ReflectionProbeFlow() { + return _RenderFlow.apply(this, arguments) || this; + } + var _proto = ReflectionProbeFlow.prototype; + _proto.initialize = function initialize(info) { + _RenderFlow.prototype.initialize.call(this, info); + if (this._stages.length === 0) { + var probeStage = new ReflectionProbeStage(); + probeStage.initialize(ReflectionProbeStage.initInfo); + this._stages.push(probeStage); + } + return true; + }; + _proto.activate = function activate(pipeline) { + _RenderFlow.prototype.activate.call(this, pipeline); + }; + _proto.render = function render(camera) { + if (!legacyCC.internal.reflectionProbeManager) { + return; + } + var probes = legacyCC.internal.reflectionProbeManager.getProbes(); + for (var i = 0; i < probes.length; i++) { + if (probes[i].needRender) { + if (probes[i].probeType === ProbeType.PLANAR) { + this._renderStage(camera, probes[i]); + } + } + } + }; + _proto.destroy = function destroy() { + _RenderFlow.prototype.destroy.call(this); + }; + _proto._renderStage = function _renderStage(camera, probe) { + for (var i = 0; i < this._stages.length; i++) { + var probeStage = this._stages[i]; + if (probe.probeType === ProbeType.PLANAR) { + legacyCC.internal.reflectionProbeManager.updatePlanarMap(probe, null); + probeStage.setUsageInfo(probe, probe.realtimePlanarTexture.window.framebuffer); + probeStage.render(camera); + legacyCC.internal.reflectionProbeManager.updatePlanarMap(probe, probe.realtimePlanarTexture.getGFXTexture()); + } else { + for (var faceIdx = 0; faceIdx < 6; faceIdx++) { + var renderTexture = probe.bakedCubeTextures[faceIdx]; + if (!renderTexture) return; + probe.updateCameraDir(faceIdx); + probeStage.setUsageInfo(probe, renderTexture.window.framebuffer); + probeStage.render(camera); + } + probe.needRender = false; + } + } + }; + return ReflectionProbeFlow; + }(RenderFlow), _class2$1t.initInfo = { + name: 'PIPELINE_FLOW_RELECTION_PROBE', + priority: 0, + tag: RenderFlowTag.SCENE, + stages: [] + }, _class2$1t)) || _class$1H)); + + var _dec$1H, _dec2$1b, _class$1G, _class2$1s, _initializer$1k; + var PIPELINE_TYPE = 0; + function createDefaultPipeline() { + var rppl = new ForwardPipeline(); + rppl.initialize({ + flows: [] + }); + return rppl; + } + var ForwardPipeline = exports('cU', (_dec$1H = ccclass$t('ForwardPipeline'), _dec2$1b = type$8([RenderTextureConfig]), _dec$1H(_class$1G = (_class2$1s = function (_RenderPipeline) { + _inheritsLoose(ForwardPipeline, _RenderPipeline); + function ForwardPipeline() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _RenderPipeline.call.apply(_RenderPipeline, [this].concat(args)) || this; + _this.renderTextures = _initializer$1k && _initializer$1k(); + _this._postRenderPass = null; + return _this; + } + var _proto = ForwardPipeline.prototype; + _proto.initialize = function initialize(info) { + _RenderPipeline.prototype.initialize.call(this, info); + if (this._flows.length === 0) { + var shadowFlow = new ShadowFlow(); + shadowFlow.initialize(ShadowFlow.initInfo); + this._flows.push(shadowFlow); + var reflectionFlow = new ReflectionProbeFlow(); + reflectionFlow.initialize(ReflectionProbeFlow.initInfo); + this._flows.push(reflectionFlow); + var forwardFlow = new ForwardFlow(); + forwardFlow.initialize(ForwardFlow.initInfo); + this._flows.push(forwardFlow); + } + return true; + }; + _proto.activate = function activate(swapchain) { + this._macros = { + CC_PIPELINE_TYPE: PIPELINE_TYPE + }; + this._pipelineSceneData = new PipelineSceneData(); + if (!_RenderPipeline.prototype.activate.call(this, swapchain)) { + return false; + } + if (!this._activeRenderer(swapchain)) { + errorID(2402); + return false; + } + return true; + }; + _proto._ensureEnoughSize = function _ensureEnoughSize(cameras) { + var newWidth = this._width; + var newHeight = this._height; + for (var i = 0; i < cameras.length; ++i) { + var window = cameras[i].window; + newWidth = Math.max(window.width, newWidth); + newHeight = Math.max(window.height, newHeight); + } + if (newWidth !== this._width || newHeight !== this._height) { + this._width = newWidth; + this._height = newHeight; + } + }; + _proto.destroy = function destroy() { + this._destroyUBOs(); + this._destroyQuadInputAssembler(); + var rpIter = this._renderPasses.values(); + var rpRes = rpIter.next(); + while (!rpRes.done) { + rpRes.value.destroy(); + rpRes = rpIter.next(); + } + this._commandBuffers.length = 0; + return _RenderPipeline.prototype.destroy.call(this); + }; + _proto._activeRenderer = function _activeRenderer(swapchain) { + var device = this.device; + this._commandBuffers.push(device.commandBuffer); + var shadowMapSampler = this.globalDSManager.pointSampler; + this._descriptorSet.bindSampler(UNIFORM_SHADOWMAP_BINDING, shadowMapSampler); + this._descriptorSet.bindTexture(UNIFORM_SHADOWMAP_BINDING, builtinResMgr.get('default-texture').getGFXTexture()); + this._descriptorSet.bindSampler(UNIFORM_SPOT_SHADOW_MAP_TEXTURE_BINDING, shadowMapSampler); + this._descriptorSet.bindTexture(UNIFORM_SPOT_SHADOW_MAP_TEXTURE_BINDING, builtinResMgr.get('default-texture').getGFXTexture()); + this._descriptorSet.update(); + return true; + }; + _proto._destroyUBOs = function _destroyUBOs() { + if (this._descriptorSet) { + this._descriptorSet.getBuffer(UBOGlobal.BINDING).destroy(); + this._descriptorSet.getBuffer(UBOShadow.BINDING).destroy(); + this._descriptorSet.getBuffer(UBOCamera.BINDING).destroy(); + this._descriptorSet.getTexture(UNIFORM_SHADOWMAP_BINDING).destroy(); + this._descriptorSet.getTexture(UNIFORM_SPOT_SHADOW_MAP_TEXTURE_BINDING).destroy(); + } + }; + _createClass(ForwardPipeline, [{ + key: "postRenderPass", + get: function get() { + return this._postRenderPass; + } + }]); + return ForwardPipeline; + }(RenderPipeline), (_initializer$1k = applyDecoratedInitializer(_class2$1s.prototype, "renderTextures", [_dec2$1b, serializable$9], function () { + return []; + })), _class2$1s)) || _class$1G)); + + var _dsInfo$1 = new DescriptorSetInfo(null); + var MAX_PASS_COUNT = 8; + var SubModel = function () { + function SubModel() { + this._device = null; + this._passes = null; + this._shaders = null; + this._subMesh = null; + this._patches = null; + this._globalPatches = null; + this._priority = RenderPriority.DEFAULT; + this._inputAssembler = null; + this._descriptorSet = null; + this._worldBoundDescriptorSet = null; + this._reflectionTex = null; + this._reflectionSampler = null; + this._instancedAttributeBlock = { + buffer: null, + views: [], + attributes: [] + }; + this._instancedWorldMatrixIndex = -1; + this._instancedSHIndex = -1; + this._useReflectionProbeType = 0; + } + var _proto = SubModel.prototype; + _proto.initialize = function initialize(subMesh, passes, patches) { + if (patches === void 0) { + patches = null; + } + var root = legacyCC.director.root; + this._device = deviceManager.gfxDevice; + _dsInfo$1.layout = passes[0].localSetLayout; + this._inputAssembler = this._device.createInputAssembler(subMesh.iaInfo); + this._descriptorSet = this._device.createDescriptorSet(_dsInfo$1); + var pipeline = legacyCC.director.root.pipeline; + var occlusionPass = pipeline.pipelineSceneData.getOcclusionQueryPass(); + if (occlusionPass) { + var occlusionDSInfo = new DescriptorSetInfo(null); + occlusionDSInfo.layout = occlusionPass.localSetLayout; + this._worldBoundDescriptorSet = this._device.createDescriptorSet(occlusionDSInfo); + } + this._subMesh = subMesh; + this._patches = patches ? patches.sort() : null; + this._passes = passes; + this._flushPassInfo(); + this.priority = RenderPriority.DEFAULT; + var r = legacyCC.rendering; + if ((!r || !r.enableEffectImport) && passes[0].phase === getPhaseID('reflection') || isEnableEffect() && passes[0].phaseID === r.getPhaseID(r.getPassID('default'), 'reflection')) { + var texWidth = root.mainWindow.width; + var texHeight = root.mainWindow.height; + var minSize = 512; + if (texHeight < texWidth) { + texWidth = minSize * texWidth / texHeight; + texHeight = minSize; + } else { + texWidth = minSize; + texHeight = minSize * texHeight / texWidth; + } + this._reflectionTex = this._device.createTexture(new TextureInfo(TextureType.TEX2D, TextureUsageBit.STORAGE | TextureUsageBit.TRANSFER_SRC | TextureUsageBit.SAMPLED, Format.RGBA8, texWidth, texHeight)); + this.descriptorSet.bindTexture(UNIFORM_REFLECTION_TEXTURE_BINDING, this._reflectionTex); + this._reflectionSampler = this._device.getSampler(new SamplerInfo(Filter$1.LINEAR, Filter$1.LINEAR, Filter$1.NONE, Address.CLAMP, Address.CLAMP, Address.CLAMP)); + this.descriptorSet.bindSampler(UNIFORM_REFLECTION_TEXTURE_BINDING, this._reflectionSampler); + this.descriptorSet.bindTexture(UNIFORM_REFLECTION_STORAGE_BINDING, this._reflectionTex); + } + }; + _proto.destroy = function destroy() { + var _this$_worldBoundDesc; + this._descriptorSet.destroy(); + this._descriptorSet = null; + this._inputAssembler.destroy(); + this._inputAssembler = null; + (_this$_worldBoundDesc = this._worldBoundDescriptorSet) === null || _this$_worldBoundDesc === void 0 ? void 0 : _this$_worldBoundDesc.destroy(); + this._worldBoundDescriptorSet = null; + this.priority = RenderPriority.DEFAULT; + this._patches = null; + this._globalPatches = null; + this._subMesh = null; + this._passes = null; + this._shaders = null; + if (this._reflectionTex) this._reflectionTex.destroy(); + this._reflectionTex = null; + this._reflectionSampler = null; + }; + _proto.update = function update() { + var _this$_worldBoundDesc2; + for (var i = 0; i < this._passes.length; ++i) { + var pass = this._passes[i]; + pass.update(); + } + this._descriptorSet.update(); + (_this$_worldBoundDesc2 = this._worldBoundDescriptorSet) === null || _this$_worldBoundDesc2 === void 0 ? void 0 : _this$_worldBoundDesc2.update(); + }; + _proto.onPipelineStateChanged = function onPipelineStateChanged() { + var root = legacyCC.director.root; + var pipeline = root.pipeline; + var pipelinePatches = Object.entries(pipeline.macros); + if (!this._globalPatches && pipelinePatches.length === 0) { + return; + } else if (pipelinePatches.length) { + if (this._globalPatches && pipelinePatches.length === this._globalPatches.length) { + var globalPatches = Object.entries(this._globalPatches); + var patchesStateUnchanged = JSON.stringify(pipelinePatches.sort()) === JSON.stringify(globalPatches.sort()); + if (patchesStateUnchanged) return; + } + } + this._globalPatches = pipeline.macros; + var passes = this._passes; + if (!passes) { + return; + } + for (var i = 0; i < passes.length; i++) { + var pass = passes[i]; + pass.beginChangeStatesSilently(); + pass.tryCompile(); + pass.endChangeStatesSilently(); + } + this._flushPassInfo(); + }; + _proto.onMacroPatchesStateChanged = function onMacroPatchesStateChanged(patches) { + if (!patches && !this._patches) { + return; + } else if (patches) { + patches = patches.sort(); + if (this._patches && patches.length === this._patches.length) { + var patchesStateUnchanged = JSON.stringify(patches) === JSON.stringify(this._patches); + if (patchesStateUnchanged) return; + } + } + this._patches = patches; + var passes = this._passes; + if (!passes) { + return; + } + for (var i = 0; i < passes.length; i++) { + var pass = passes[i]; + pass.beginChangeStatesSilently(); + pass.tryCompile(); + pass.endChangeStatesSilently(); + } + this._flushPassInfo(); + }; + _proto.onGeometryChanged = function onGeometryChanged() { + if (!this._subMesh) { + return; + } + var drawInfo = this._subMesh.drawInfo; + if (this._inputAssembler && drawInfo) { + var dirtyDrawInfo = this._inputAssembler.drawInfo; + Object.keys(drawInfo).forEach(function (key) { + dirtyDrawInfo[key] = drawInfo[key]; + }); + this._inputAssembler.drawInfo = dirtyDrawInfo; + } + }; + _proto.getInstancedAttributeIndex = function getInstancedAttributeIndex(name) { + var attributes = this.instancedAttributeBlock.attributes; + for (var i = 0; i < attributes.length; i++) { + if (attributes[i].name === name) { + return i; + } + } + return -1; + }; + _proto.updateInstancedWorldMatrix = function updateInstancedWorldMatrix(mat, idx) { + var attrs = this.instancedAttributeBlock.views; + var v1 = attrs[idx]; + var v2 = attrs[idx + 1]; + var v3 = attrs[idx + 2]; + v1[0] = mat.m00; + v1[1] = mat.m01; + v1[2] = mat.m02; + v1[3] = mat.m12; + v2[0] = mat.m04; + v2[1] = mat.m05; + v2[2] = mat.m06; + v2[3] = mat.m13; + v3[0] = mat.m08; + v3[1] = mat.m09; + v3[2] = mat.m10; + v3[3] = mat.m14; + }; + _proto.updateInstancedSH = function updateInstancedSH(data, idx) { + var attrs = this.instancedAttributeBlock.views; + var count = (UBOSH.SH_QUADRATIC_R_OFFSET - UBOSH.SH_LINEAR_CONST_R_OFFSET) / 4; + var offset = 0; + for (var i = idx; i < idx + count; i++) { + for (var k = 0; k < 4; k++) { + attrs[i][k] = data[offset++]; + } + } + }; + _proto.UpdateInstancedAttributes = function UpdateInstancedAttributes(attributes) { + this.instancedWorldMatrixIndex = -1; + this.instancedSHIndex = -1; + var pass = this.passes[0]; + if (!pass.device.hasFeature(Feature.INSTANCED_ARRAYS)) { + return; + } + var size = 0; + for (var j = 0; j < attributes.length; j++) { + var attribute = attributes[j]; + if (!attribute.isInstanced) { + continue; + } + size += FormatInfos[attribute.format].size; + } + var attrs = this.instancedAttributeBlock; + attrs.buffer = new Uint8Array(size); + attrs.views.length = attrs.attributes.length = 0; + var offset = 0; + for (var _j = 0; _j < attributes.length; _j++) { + var _attribute = attributes[_j]; + if (!_attribute.isInstanced) { + continue; + } + var attr = new Attribute(); + attr.format = _attribute.format; + attr.name = _attribute.name; + attr.isNormalized = _attribute.isNormalized; + attr.location = _attribute.location; + attrs.attributes.push(attr); + var info = FormatInfos[_attribute.format]; + var typeViewArray = new (getTypedArrayConstructor(info))(attrs.buffer.buffer, offset, info.count); + attrs.views.push(typeViewArray); + offset += info.size; + } + if (pass.batchingScheme === BatchingSchemes.INSTANCING) { + pass.getInstancedBuffer().destroy(); + } + this.instancedWorldMatrixIndex = this.getInstancedAttributeIndex(INST_MAT_WORLD); + this.instancedSHIndex = this.getInstancedAttributeIndex(INST_SH); + }; + _proto._flushPassInfo = function _flushPassInfo() { + var passes = this._passes; + if (!passes) { + return; + } + if (!this._shaders) { + this._shaders = []; + } + this._shaders.length = passes.length; + for (var i = 0, len = passes.length; i < len; i++) { + this._shaders[i] = passes[i].getShaderVariant(this.patches); + } + }; + _createClass(SubModel, [{ + key: "passes", + get: function get() { + return this._passes; + }, + set: function set(passes) { + var passLengh = passes.length; + if (passLengh > MAX_PASS_COUNT) { + errorID(12004, MAX_PASS_COUNT); + return; + } + this._passes = passes; + this._flushPassInfo(); + if (this._descriptorSet) { + this._descriptorSet.destroy(); + _dsInfo$1.layout = passes[0].localSetLayout; + this._descriptorSet = this._device.createDescriptorSet(_dsInfo$1); + } + } + }, { + key: "shaders", + get: function get() { + return this._shaders; + } + }, { + key: "subMesh", + get: function get() { + return this._subMesh; + }, + set: function set(subMesh) { + this._inputAssembler.destroy(); + this._inputAssembler = this._device.createInputAssembler(subMesh.iaInfo); + this._subMesh = subMesh; + } + }, { + key: "priority", + get: function get() { + return this._priority; + }, + set: function set(val) { + this._priority = val; + } + }, { + key: "inputAssembler", + get: function get() { + return this._inputAssembler; + } + }, { + key: "descriptorSet", + get: function get() { + return this._descriptorSet; + } + }, { + key: "worldBoundDescriptorSet", + get: function get() { + return this._worldBoundDescriptorSet; + } + }, { + key: "patches", + get: function get() { + return this._patches; + } + }, { + key: "instancedAttributeBlock", + get: function get() { + return this._instancedAttributeBlock; + } + }, { + key: "instancedWorldMatrixIndex", + get: function get() { + return this._instancedWorldMatrixIndex; + }, + set: function set(val) { + this._instancedWorldMatrixIndex = val; + } + }, { + key: "instancedSHIndex", + get: function get() { + return this._instancedSHIndex; + }, + set: function set(val) { + this._instancedSHIndex = val; + } + }, { + key: "useReflectionProbeType", + get: function get() { + return this._useReflectionProbeType; + }, + set: function set(val) { + this._useReflectionProbeType = val; + } + }]); + return SubModel; + }(); + + var ReflectionProbeType; + (function (ReflectionProbeType) { + ReflectionProbeType[ReflectionProbeType["NONE"] = 0] = "NONE"; + ReflectionProbeType[ReflectionProbeType["BAKED_CUBEMAP"] = 1] = "BAKED_CUBEMAP"; + ReflectionProbeType[ReflectionProbeType["PLANAR_REFLECTION"] = 2] = "PLANAR_REFLECTION"; + ReflectionProbeType[ReflectionProbeType["BLEND_PROBES"] = 3] = "BLEND_PROBES"; + ReflectionProbeType[ReflectionProbeType["BLEND_PROBES_AND_SKYBOX"] = 4] = "BLEND_PROBES_AND_SKYBOX"; + })(ReflectionProbeType || (ReflectionProbeType = {})); + + var m4_1$2 = new Mat4(); + var shadowMapPatches = [{ + name: 'CC_RECEIVE_SHADOW', + value: true + }]; + var staticLightMapPatches = [{ + name: 'CC_USE_LIGHTMAP', + value: 1 + }]; + var stationaryLightMapPatches = [{ + name: 'CC_USE_LIGHTMAP', + value: 2 + }]; + var highpLightMapPatches = [{ + name: 'CC_LIGHT_MAP_VERSION', + value: 2 + }]; + var lightProbePatches = [{ + name: 'CC_USE_LIGHT_PROBE', + value: true + }]; + var CC_USE_REFLECTION_PROBE = 'CC_USE_REFLECTION_PROBE'; + var CC_DISABLE_DIRECTIONAL_LIGHT = 'CC_DISABLE_DIRECTIONAL_LIGHT'; + var ModelType; + (function (ModelType) { + ModelType[ModelType["DEFAULT"] = 0] = "DEFAULT"; + ModelType[ModelType["SKINNING"] = 1] = "SKINNING"; + ModelType[ModelType["BAKED_SKINNING"] = 2] = "BAKED_SKINNING"; + ModelType[ModelType["BATCH_2D"] = 3] = "BATCH_2D"; + ModelType[ModelType["PARTICLE_BATCH"] = 4] = "PARTICLE_BATCH"; + ModelType[ModelType["LINE"] = 5] = "LINE"; + })(ModelType || (ModelType = {})); + var lightmapSamplerHash = new SamplerInfo(Filter$1.LINEAR, Filter$1.LINEAR, Filter$1.NONE, Address.CLAMP, Address.CLAMP, Address.CLAMP); + var lightmapSamplerWithMipHash = new SamplerInfo(Filter$1.LINEAR, Filter$1.LINEAR, Filter$1.LINEAR, Address.CLAMP, Address.CLAMP, Address.CLAMP); + var Model = function () { + function Model() { + this.type = ModelType.DEFAULT; + this.scene = null; + this.isDynamicBatching = false; + this._worldBounds = null; + this._modelBounds = null; + this._subModels = []; + this._node = null; + this._transform = null; + this._device = void 0; + this._inited = false; + this._descriptorSetCount = 1; + this._updateStamp = -1; + this._localDataUpdated = true; + this._localData = new Float32Array(UBOLocal.COUNT); + this._localBuffer = null; + this._localSHData = null; + this._localSHBuffer = null; + this._lightmap = null; + this._lightmapUVParam = new Vec4(); + this._tetrahedronIndex = -1; + this._lastWorldBoundCenter = new Vec3(Infinity, Infinity, Infinity); + this._useLightProbe = false; + this._worldBoundBuffer = null; + this._receiveShadow = false; + this._castShadow = false; + this._receiveDirLight = true; + this._shadowBias = 0; + this._shadowNormalBias = 0; + this._reflectionProbeId = -1; + this._reflectionProbeBlendId = -1; + this._reflectionProbeBlendWeight = 0; + this._enabled = true; + this._visFlags = Layers.Enum.NONE; + this._priority = 0; + this._bakeToReflectionProbe = true; + this._reflectionProbeType = ReflectionProbeType.NONE; + this._device = deviceManager.gfxDevice; + } + var _proto = Model.prototype; + _proto.initialize = function initialize() { + if (this._inited) { + return; + } + this._receiveShadow = true; + this.castShadow = false; + this.enabled = true; + this.visFlags = Layers.Enum.NONE; + this._inited = true; + this._bakeToReflectionProbe = true; + this._reflectionProbeType = ReflectionProbeType.NONE; + }; + _proto.destroy = function destroy() { + var subModels = this._subModels; + for (var i = 0; i < subModels.length; i++) { + this._subModels[i].destroy(); + } + if (this._localBuffer) { + this._localBuffer.destroy(); + this._localBuffer = null; + } + if (this._localSHBuffer) { + this._localSHBuffer.destroy(); + this._localSHBuffer = null; + } + if (this._worldBoundBuffer) { + this._worldBoundBuffer.destroy(); + this._worldBoundBuffer = null; + } + this._worldBounds = null; + this._modelBounds = null; + this._subModels.length = 0; + this._inited = false; + this._localDataUpdated = true; + this._transform = null; + this._node = null; + this.isDynamicBatching = false; + }; + _proto.attachToScene = function attachToScene(scene) { + this.scene = scene; + this._localDataUpdated = true; + }; + _proto.detachFromScene = function detachFromScene() { + this.scene = null; + }; + _proto.updateTransform = function updateTransform(stamp) { + var node = this.transform; + if (node.hasChangedFlags || node.isTransformDirty()) { + node.updateWorldTransform(); + this._localDataUpdated = true; + var worldBounds = this._worldBounds; + if (this._modelBounds && worldBounds) { + this._modelBounds.transform(node._mat, node._pos, node._rot, node._scale, worldBounds); + } + } + }; + _proto.updateWorldBound = function updateWorldBound() { + var node = this.transform; + if (node !== null) { + node.updateWorldTransform(); + this._localDataUpdated = true; + var worldBounds = this._worldBounds; + if (this._modelBounds && worldBounds) { + this._modelBounds.transform(node._mat, node._pos, node._rot, node._scale, worldBounds); + } + } + }; + _proto.updateUBOs = function updateUBOs(stamp) { + var subModels = this._subModels; + for (var i = 0; i < subModels.length; i++) { + subModels[i].update(); + } + this._updateStamp = stamp; + this.updateSHUBOs(); + var forceUpdateUBO = this.node.scene.globals.shadows.enabled && this.node.scene.globals.shadows.type === ShadowType.Planar; + if (!this._localDataUpdated) { + return; + } + this._localDataUpdated = false; + var worldMatrix = this.transform._mat; + var hasNonInstancingPass = false; + for (var _i = 0; _i < subModels.length; _i++) { + var subModel = subModels[_i]; + var idx = subModel.instancedWorldMatrixIndex; + if (idx >= 0) { + subModel.updateInstancedWorldMatrix(worldMatrix, idx); + } else { + hasNonInstancingPass = true; + } + } + if ((hasNonInstancingPass || forceUpdateUBO) && this._localBuffer) { + Mat4.toArray(this._localData, worldMatrix, UBOLocal.MAT_WORLD_OFFSET); + Mat4.invert(m4_1$2, worldMatrix); + Mat4.transpose(m4_1$2, m4_1$2); + Mat4.toArray(this._localData, m4_1$2, UBOLocal.MAT_WORLD_IT_OFFSET); + this._localBuffer.update(this._localData); + } + }; + _proto.invalidateLocalData = function invalidateLocalData() { + this._localDataUpdated = true; + }; + _proto.showTetrahedron = function showTetrahedron() { + return this.isLightProbeAvailable(); + }; + _proto.isLightProbeAvailable = function isLightProbeAvailable() { + if (!this._useLightProbe) { + return false; + } + var lightProbes = legacyCC.director.root.pipeline.pipelineSceneData.lightProbes; + if (!lightProbes || lightProbes.empty()) { + return false; + } + if (!this._worldBounds) { + return false; + } + return true; + }; + _proto.updateSHBuffer = function updateSHBuffer() { + if (!this._localSHData) { + return; + } + var subModels = this._subModels; + var hasNonInstancingPass = false; + for (var i = 0; i < subModels.length; i++) { + var subModel = subModels[i]; + var idx = subModel.instancedSHIndex; + if (idx >= 0) { + subModel.updateInstancedSH(this._localSHData, idx); + } else { + hasNonInstancingPass = true; + } + } + if (hasNonInstancingPass && this._localSHBuffer) { + this._localSHBuffer.update(this._localSHData); + } + }; + _proto.clearSHUBOs = function clearSHUBOs() { + if (!this._localSHData) { + return; + } + for (var i = 0; i < UBOSH.COUNT; i++) { + this._localSHData[i] = 0.0; + } + this.updateSHBuffer(); + }; + _proto.updateSHUBOs = function updateSHUBOs() { + if (!this.isLightProbeAvailable()) { + return; + } + var center = this._worldBounds.center; + if (center.equals(this._lastWorldBoundCenter, EPSILON$3)) { + return; + } + var coefficients = []; + var weights = new Vec4(0.0, 0.0, 0.0, 0.0); + var lightProbes = legacyCC.director.root.pipeline.pipelineSceneData.lightProbes; + this._lastWorldBoundCenter.set(center); + this._tetrahedronIndex = lightProbes.data.getInterpolationWeights(center, this._tetrahedronIndex, weights); + var result = lightProbes.data.getInterpolationSHCoefficients(this._tetrahedronIndex, weights, coefficients); + if (!result) { + return; + } + if (!this._localSHData) { + return; + } + legacyCC.internal.SH.reduceRinging(coefficients, lightProbes.reduceRinging); + legacyCC.internal.SH.updateUBOData(this._localSHData, UBOSH.SH_LINEAR_CONST_R_OFFSET, coefficients); + this.updateSHBuffer(); + }; + _proto.createBoundingShape = function createBoundingShape(minPos, maxPos) { + if (!minPos || !maxPos) { + return; + } + if (!this._modelBounds) { + this._modelBounds = AABB.create(); + } + if (!this._worldBounds) { + this._worldBounds = AABB.create(); + } + AABB.fromPoints(this._modelBounds, minPos, maxPos); + AABB.copy(this._worldBounds, this._modelBounds); + }; + _proto._createSubModel = function _createSubModel() { + return new SubModel(); + }; + _proto.initSubModel = function initSubModel(idx, subMeshData, mat) { + this.initialize(); + if (this._subModels[idx] == null) { + this._subModels[idx] = this._createSubModel(); + } else { + this._subModels[idx].destroy(); + } + this._subModels[idx].initialize(subMeshData, mat.passes, this.getMacroPatches(idx)); + this._updateAttributesAndBinding(idx); + }; + _proto.setSubModelMesh = function setSubModelMesh(idx, subMesh) { + if (!this._subModels[idx]) { + return; + } + this._subModels[idx].subMesh = subMesh; + }; + _proto.setSubModelMaterial = function setSubModelMaterial(idx, mat) { + if (!this._subModels[idx]) { + return; + } + this._subModels[idx].passes = mat.passes; + this._updateAttributesAndBinding(idx); + }; + _proto.onGlobalPipelineStateChanged = function onGlobalPipelineStateChanged() { + var subModels = this._subModels; + for (var i = 0; i < subModels.length; i++) { + subModels[i].onPipelineStateChanged(); + } + }; + _proto.onMacroPatchesStateChanged = function onMacroPatchesStateChanged() { + var subModels = this._subModels; + for (var i = 0; i < subModels.length; i++) { + subModels[i].onMacroPatchesStateChanged(this.getMacroPatches(i)); + } + }; + _proto.onGeometryChanged = function onGeometryChanged() { + var subModels = this._subModels; + for (var i = 0; i < subModels.length; i++) { + subModels[i].onGeometryChanged(); + } + }; + _proto.initLightingmap = function initLightingmap(texture, uvParam) { + this._lightmap = texture; + this._lightmapUVParam = uvParam; + }; + _proto.updateLightingmap = function updateLightingmap(texture, uvParam) { + Vec4.toArray(this._localData, uvParam, UBOLocal.LIGHTINGMAP_UVPARAM); + this._localDataUpdated = true; + this._lightmap = texture; + this._lightmapUVParam = uvParam; + this.onMacroPatchesStateChanged(); + if (!texture) { + texture = builtinResMgr.get('empty-texture'); + } + var gfxTexture = texture.getGFXTexture(); + if (gfxTexture) { + var sampler = this._device.getSampler(texture.mipmaps.length > 1 ? lightmapSamplerWithMipHash : lightmapSamplerHash); + var subModels = this._subModels; + for (var i = 0; i < subModels.length; i++) { + var descriptorSet = subModels[i].descriptorSet; + descriptorSet.bindTexture(UNIFORM_LIGHTMAP_TEXTURE_BINDING, gfxTexture); + descriptorSet.bindSampler(UNIFORM_LIGHTMAP_TEXTURE_BINDING, sampler); + descriptorSet.update(); + } + } + }; + _proto.updateReflectionProbeCubemap = function updateReflectionProbeCubemap(texture) { + this._localDataUpdated = true; + this.onMacroPatchesStateChanged(); + if (!texture) { + texture = builtinResMgr.get('default-cube-texture'); + } + var gfxTexture = texture.getGFXTexture(); + if (gfxTexture) { + var reflectionSampler = this._device.getSampler(texture.getSamplerInfo()); + var subModels = this._subModels; + for (var i = 0; i < subModels.length; i++) { + var descriptorSet = subModels[i].descriptorSet; + if (descriptorSet) { + descriptorSet.bindSampler(UNIFORM_REFLECTION_PROBE_CUBEMAP_BINDING, reflectionSampler); + descriptorSet.bindTexture(UNIFORM_REFLECTION_PROBE_CUBEMAP_BINDING, gfxTexture); + descriptorSet.update(); + } + } + } + }; + _proto.updateReflectionProbeBlendCubemap = function updateReflectionProbeBlendCubemap(texture) { + this._localDataUpdated = true; + this.onMacroPatchesStateChanged(); + if (!texture) { + texture = builtinResMgr.get('default-cube-texture'); + } + var gfxTexture = texture.getGFXTexture(); + if (gfxTexture) { + var reflectionSampler = this._device.getSampler(texture.getSamplerInfo()); + var subModels = this._subModels; + for (var i = 0; i < subModels.length; i++) { + var descriptorSet = subModels[i].descriptorSet; + if (descriptorSet) { + descriptorSet.bindSampler(UNIFORM_REFLECTION_PROBE_BLEND_CUBEMAP_BINDING, reflectionSampler); + descriptorSet.bindTexture(UNIFORM_REFLECTION_PROBE_BLEND_CUBEMAP_BINDING, gfxTexture); + descriptorSet.update(); + } + } + } + }; + _proto.updateReflectionProbePlanarMap = function updateReflectionProbePlanarMap(texture) { + this._localDataUpdated = true; + this.onMacroPatchesStateChanged(); + var sampler = this._device.getSampler(new SamplerInfo(Filter$1.LINEAR, Filter$1.LINEAR, Filter$1.NONE, Address.CLAMP, Address.CLAMP, Address.CLAMP)); + if (!texture) { + texture = builtinResMgr.get('empty-texture').getGFXTexture(); + } + if (texture) { + var subModels = this._subModels; + for (var i = 0; i < subModels.length; i++) { + var descriptorSet = subModels[i].descriptorSet; + if (descriptorSet) { + descriptorSet.bindTexture(UNIFORM_REFLECTION_PROBE_TEXTURE_BINDING, texture); + descriptorSet.bindSampler(UNIFORM_REFLECTION_PROBE_TEXTURE_BINDING, sampler); + descriptorSet.update(); + } + } + } + }; + _proto.updateReflectionProbeDataMap = function updateReflectionProbeDataMap(texture) { + this._localDataUpdated = true; + this.onMacroPatchesStateChanged(); + if (!texture) { + texture = builtinResMgr.get('empty-texture'); + } + var gfxTexture = texture.getGFXTexture(); + if (gfxTexture) { + var subModels = this._subModels; + for (var i = 0; i < subModels.length; i++) { + var descriptorSet = subModels[i].descriptorSet; + if (descriptorSet) { + descriptorSet.bindTexture(UNIFORM_REFLECTION_PROBE_DATA_MAP_BINDING, gfxTexture); + descriptorSet.bindSampler(UNIFORM_REFLECTION_PROBE_DATA_MAP_BINDING, texture.getGFXSampler()); + descriptorSet.update(); + } + } + } + }; + _proto.updateLocalShadowBias = function updateLocalShadowBias() { + var sv = this._localData; + sv[UBOLocal.LOCAL_SHADOW_BIAS + 0] = this._shadowBias; + sv[UBOLocal.LOCAL_SHADOW_BIAS + 1] = this._shadowNormalBias; + this._localDataUpdated = true; + }; + _proto.updateReflectionProbeId = function updateReflectionProbeId() { + var sv = this._localData; + sv[UBOLocal.LOCAL_SHADOW_BIAS + 2] = this._reflectionProbeId; + sv[UBOLocal.LOCAL_SHADOW_BIAS + 3] = this._reflectionProbeBlendId; + var probe = null; + var blendProbe = null; + if (legacyCC.internal.reflectionProbeManager) { + probe = legacyCC.internal.reflectionProbeManager.getProbeById(this._reflectionProbeId); + blendProbe = legacyCC.internal.reflectionProbeManager.getProbeById(this._reflectionProbeBlendId); + } + if (probe) { + if (probe.probeType === ProbeType.PLANAR) { + sv[UBOLocal.REFLECTION_PROBE_DATA1] = probe.node.up.x; + sv[UBOLocal.REFLECTION_PROBE_DATA1 + 1] = probe.node.up.y; + sv[UBOLocal.REFLECTION_PROBE_DATA1 + 2] = probe.node.up.z; + sv[UBOLocal.REFLECTION_PROBE_DATA1 + 3] = 1.0; + sv[UBOLocal.REFLECTION_PROBE_DATA2] = 1.0; + sv[UBOLocal.REFLECTION_PROBE_DATA2 + 1] = 0.0; + sv[UBOLocal.REFLECTION_PROBE_DATA2 + 2] = 0.0; + sv[UBOLocal.REFLECTION_PROBE_DATA2 + 3] = 1.0; + } else { + sv[UBOLocal.REFLECTION_PROBE_DATA1] = probe.node.worldPosition.x; + sv[UBOLocal.REFLECTION_PROBE_DATA1 + 1] = probe.node.worldPosition.y; + sv[UBOLocal.REFLECTION_PROBE_DATA1 + 2] = probe.node.worldPosition.z; + sv[UBOLocal.REFLECTION_PROBE_DATA1 + 3] = 0.0; + sv[UBOLocal.REFLECTION_PROBE_DATA2] = probe.size.x; + sv[UBOLocal.REFLECTION_PROBE_DATA2 + 1] = probe.size.y; + sv[UBOLocal.REFLECTION_PROBE_DATA2 + 2] = probe.size.z; + var mipAndUseRGBE = probe.isRGBE() ? 1000 : 0; + sv[UBOLocal.REFLECTION_PROBE_DATA2 + 3] = probe.cubemap ? probe.cubemap.mipmapLevel + mipAndUseRGBE : 1.0 + mipAndUseRGBE; + } + if (this._reflectionProbeType === ReflectionProbeType.BLEND_PROBES || this._reflectionProbeType === ReflectionProbeType.BLEND_PROBES_AND_SKYBOX) { + if (blendProbe) { + sv[UBOLocal.REFLECTION_PROBE_BLEND_DATA1] = blendProbe.node.worldPosition.x; + sv[UBOLocal.REFLECTION_PROBE_BLEND_DATA1 + 1] = blendProbe.node.worldPosition.y; + sv[UBOLocal.REFLECTION_PROBE_BLEND_DATA1 + 2] = blendProbe.node.worldPosition.z; + sv[UBOLocal.REFLECTION_PROBE_BLEND_DATA1 + 3] = this.reflectionProbeBlendWeight; + sv[UBOLocal.REFLECTION_PROBE_BLEND_DATA2] = blendProbe.size.x; + sv[UBOLocal.REFLECTION_PROBE_BLEND_DATA2 + 1] = blendProbe.size.y; + sv[UBOLocal.REFLECTION_PROBE_BLEND_DATA2 + 2] = blendProbe.size.z; + var _mipAndUseRGBE = blendProbe.isRGBE() ? 1000 : 0; + sv[UBOLocal.REFLECTION_PROBE_BLEND_DATA2 + 3] = blendProbe.cubemap ? blendProbe.cubemap.mipmapLevel + _mipAndUseRGBE : 1.0 + _mipAndUseRGBE; + } else if (this._reflectionProbeType === ReflectionProbeType.BLEND_PROBES_AND_SKYBOX) { + sv[UBOLocal.REFLECTION_PROBE_BLEND_DATA1 + 3] = this.reflectionProbeBlendWeight; + } + } + } + this._localDataUpdated = true; + }; + _proto.getMacroPatches = function getMacroPatches(subModelIndex) { + var patches = this.receiveShadow ? shadowMapPatches : null; + if (this._lightmap != null) { + if (this.node && this.node.scene && !this.node.scene.globals.disableLightmap) { + var mainLightIsStationary = this.node.scene.globals.bakedWithStationaryMainLight; + var lightmapPathes = mainLightIsStationary ? stationaryLightMapPatches : staticLightMapPatches; + patches = patches ? patches.concat(lightmapPathes) : lightmapPathes; + if (this.node.scene.globals.bakedWithHighpLightmap) { + patches = patches.concat(highpLightMapPatches); + } + } + } + if (this._useLightProbe) { + patches = patches ? patches.concat(lightProbePatches) : lightProbePatches; + } + var reflectionProbePatches = [{ + name: CC_USE_REFLECTION_PROBE, + value: this._reflectionProbeType + }]; + patches = patches ? patches.concat(reflectionProbePatches) : reflectionProbePatches; + var receiveDirLightPatches = [{ + name: CC_DISABLE_DIRECTIONAL_LIGHT, + value: !this._receiveDirLight + }]; + patches = patches ? patches.concat(receiveDirLightPatches) : receiveDirLightPatches; + return patches; + }; + _proto._updateAttributesAndBinding = function _updateAttributesAndBinding(subModelIndex) { + var subModel = this._subModels[subModelIndex]; + if (!subModel) { + return; + } + this._initLocalDescriptors(subModelIndex); + this._updateLocalDescriptors(subModelIndex, subModel.descriptorSet); + this._initLocalSHDescriptors(subModelIndex); + this._updateLocalSHDescriptors(subModelIndex, subModel.descriptorSet); + this._initWorldBoundDescriptors(subModelIndex); + if (subModel.worldBoundDescriptorSet) { + this._updateWorldBoundDescriptors(subModelIndex, subModel.worldBoundDescriptorSet); + } + var attributes = []; + var attributeSet = new Set(); + for (var _iterator = _createForOfIteratorHelperLoose(subModel.passes), _step; !(_step = _iterator()).done;) { + var pass = _step.value; + var shader = pass.getShaderVariant(subModel.patches); + for (var _iterator2 = _createForOfIteratorHelperLoose(shader.attributes), _step2; !(_step2 = _iterator2()).done;) { + var attr = _step2.value; + if (!attributeSet.has(attr.name)) { + attributes.push(attr); + attributeSet.add(attr.name); + } + } + } + this._updateInstancedAttributes(attributes, subModel); + }; + _proto._updateInstancedAttributes = function _updateInstancedAttributes(attributes, subModel) { + subModel.UpdateInstancedAttributes(attributes); + this._localDataUpdated = true; + }; + _proto._initLocalDescriptors = function _initLocalDescriptors(subModelIndex) { + if (!this._localBuffer) { + this._localBuffer = this._device.createBuffer(new BufferInfo(BufferUsageBit.UNIFORM | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, UBOLocal.SIZE, UBOLocal.SIZE)); + } + }; + _proto._initLocalSHDescriptors = function _initLocalSHDescriptors(subModelIndex) { + if (!this._useLightProbe) { + return; + } + if (!this._localSHData) { + this._localSHData = new Float32Array(UBOSH.COUNT); + } + if (!this._localSHBuffer) { + this._localSHBuffer = this._device.createBuffer(new BufferInfo(BufferUsageBit.UNIFORM | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, UBOSH.SIZE, UBOSH.SIZE)); + } + }; + _proto._initWorldBoundDescriptors = function _initWorldBoundDescriptors(subModelIndex) { + if (!this._worldBoundBuffer) { + this._worldBoundBuffer = this._device.createBuffer(new BufferInfo(BufferUsageBit.UNIFORM | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, UBOWorldBound.SIZE, UBOWorldBound.SIZE)); + } + }; + _proto._updateLocalDescriptors = function _updateLocalDescriptors(subModelIndex, descriptorSet) { + if (this._localBuffer) descriptorSet.bindBuffer(UBOLocal.BINDING, this._localBuffer); + }; + _proto._updateLocalSHDescriptors = function _updateLocalSHDescriptors(subModelIndex, descriptorSet) { + if (this._localSHBuffer) descriptorSet.bindBuffer(UBOSH.BINDING, this._localSHBuffer); + }; + _proto._updateWorldBoundDescriptors = function _updateWorldBoundDescriptors(subModelIndex, descriptorSet) { + if (this._worldBoundBuffer) descriptorSet.bindBuffer(UBOWorldBound.BINDING, this._worldBoundBuffer); + }; + _createClass(Model, [{ + key: "subModels", + get: function get() { + return this._subModels; + } + }, { + key: "inited", + get: function get() { + return this._inited; + } + }, { + key: "worldBounds", + get: function get() { + return this._worldBounds; + } + }, { + key: "modelBounds", + get: function get() { + return this._modelBounds; + } + }, { + key: "localBuffer", + get: function get() { + return this._localBuffer; + } + }, { + key: "localSHBuffer", + get: function get() { + return this._localSHBuffer; + } + }, { + key: "worldBoundBuffer", + get: function get() { + return this._worldBoundBuffer; + } + }, { + key: "updateStamp", + get: function get() { + return this._updateStamp; + } + }, { + key: "useLightProbe", + get: function get() { + return this._useLightProbe; + }, + set: function set(val) { + this._useLightProbe = val; + this.onMacroPatchesStateChanged(); + } + }, { + key: "tetrahedronIndex", + get: function get() { + return this._tetrahedronIndex; + }, + set: function set(index) { + this._tetrahedronIndex = index; + } + }, { + key: "shadowBias", + get: function get() { + return this._shadowBias; + }, + set: function set(val) { + this._shadowBias = val; + } + }, { + key: "shadowNormalBias", + get: function get() { + return this._shadowNormalBias; + }, + set: function set(val) { + this._shadowNormalBias = val; + } + }, { + key: "receiveShadow", + get: function get() { + return this._receiveShadow; + }, + set: function set(val) { + this._receiveShadow = val; + this.onMacroPatchesStateChanged(); + } + }, { + key: "castShadow", + get: function get() { + return this._castShadow; + }, + set: function set(val) { + this._castShadow = val; + } + }, { + key: "receiveDirLight", + get: function get() { + return this._receiveDirLight; + }, + set: function set(val) { + this._receiveDirLight = val; + this.onMacroPatchesStateChanged(); + } + }, { + key: "node", + get: function get() { + return this._node; + }, + set: function set(n) { + this._node = n; + } + }, { + key: "transform", + get: function get() { + return this._transform; + }, + set: function set(n) { + this._transform = n; + } + }, { + key: "visFlags", + get: function get() { + return this._visFlags; + }, + set: function set(val) { + this._visFlags = val; + } + }, { + key: "enabled", + get: function get() { + return this._enabled; + }, + set: function set(val) { + this._enabled = val; + } + }, { + key: "priority", + get: function get() { + return this._priority; + }, + set: function set(val) { + this._priority = val; + } + }, { + key: "bakeToReflectionProbe", + get: function get() { + return this._bakeToReflectionProbe; + }, + set: function set(val) { + this._bakeToReflectionProbe = val; + } + }, { + key: "reflectionProbeType", + get: function get() { + return this._reflectionProbeType; + }, + set: function set(val) { + this._reflectionProbeType = val; + var subModels = this._subModels; + for (var i = 0; i < subModels.length; i++) { + subModels[i].useReflectionProbeType = val; + } + this.onMacroPatchesStateChanged(); + } + }, { + key: "reflectionProbeId", + get: function get() { + return this._reflectionProbeId; + }, + set: function set(val) { + this._reflectionProbeId = val; + } + }, { + key: "reflectionProbeBlendId", + get: function get() { + return this._reflectionProbeBlendId; + }, + set: function set(val) { + this._reflectionProbeBlendId = val; + } + }, { + key: "reflectionProbeBlendWeight", + get: function get() { + return this._reflectionProbeBlendWeight; + }, + set: function set(val) { + this._reflectionProbeBlendWeight = val; + } + }]); + return Model; + }(); + + var _forward$2 = new Vec3(0, 0, -1); + var _v3 = new Vec3(); + var DirectionalLight = function (_Light) { + _inheritsLoose(DirectionalLight, _Light); + function DirectionalLight() { + var _this; + _this = _Light.call(this) || this; + _this._dir = new Vec3(1.0, -1.0, -1.0); + _this._illuminanceHDR = Ambient.SUN_ILLUM; + _this._illuminanceLDR = 1.0; + _this._shadowEnabled = false; + _this._shadowPcf = PCFType.HARD; + _this._shadowBias = 0.00001; + _this._shadowNormalBias = 0.0; + _this._shadowSaturation = 1.0; + _this._shadowDistance = 50; + _this._shadowInvisibleOcclusionRange = 200; + _this._csmLevel = CSMLevel.LEVEL_4; + _this._csmNeedUpdate = false; + _this._csmLayerLambda = 0.75; + _this._csmOptimizationMode = CSMOptimizationMode.DisableRotationFix; + _this._csmLayersTransition = false; + _this._csmTransitionRange = 0.05; + _this._shadowFixedArea = false; + _this._shadowNear = 0.1; + _this._shadowFar = 10.0; + _this._shadowOrthoSize = 5; + _this._type = LightType.DIRECTIONAL; + return _this; + } + var _proto = DirectionalLight.prototype; + _proto.initialize = function initialize() { + _Light.prototype.initialize.call(this); + this.illuminance = Ambient.SUN_ILLUM; + this.direction = new Vec3(1.0, -1.0, -1.0); + }; + _proto.update = function update() { + if (this._node && this._node.hasChangedFlags) { + this.direction = Vec3.transformQuat(_v3, _forward$2, this._node.worldRotation); + } + }; + _proto.activate = function activate() { + var root = legacyCC.director.root; + var pipeline = root.pipeline; + if (this._shadowEnabled) { + if (this._shadowFixedArea || !pipeline.pipelineSceneData.csmSupported) { + pipeline.macros.CC_DIR_LIGHT_SHADOW_TYPE = 1; + } else if (this.csmLevel > 1 && pipeline.pipelineSceneData.csmSupported) { + pipeline.macros.CC_DIR_LIGHT_SHADOW_TYPE = 2; + pipeline.macros.CC_CASCADED_LAYERS_TRANSITION = this._csmLayersTransition; + } else { + pipeline.macros.CC_DIR_LIGHT_SHADOW_TYPE = 1; + } + pipeline.macros.CC_DIR_SHADOW_PCF_TYPE = this._shadowPcf; + } else { + pipeline.macros.CC_DIR_LIGHT_SHADOW_TYPE = 0; + } + root.onGlobalPipelineStateChanged(); + }; + _createClass(DirectionalLight, [{ + key: "direction", + get: function get() { + return this._dir; + }, + set: function set(dir) { + Vec3.normalize(this._dir, dir); + } + }, { + key: "illuminance", + get: function get() { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + return this._illuminanceHDR; + } else { + return this._illuminanceLDR; + } + }, + set: function set(value) { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + this.illuminanceHDR = value; + } else { + this.illuminanceLDR = value; + } + } + }, { + key: "illuminanceHDR", + get: function get() { + return this._illuminanceHDR; + }, + set: function set(value) { + this._illuminanceHDR = value; + } + }, { + key: "illuminanceLDR", + get: function get() { + return this._illuminanceLDR; + }, + set: function set(value) { + this._illuminanceLDR = value; + } + }, { + key: "shadowEnabled", + get: function get() { + return this._shadowEnabled; + }, + set: function set(val) { + this._shadowEnabled = val; + this.activate(); + } + }, { + key: "shadowPcf", + get: function get() { + return this._shadowPcf; + }, + set: function set(val) { + this._shadowPcf = val; + this.activate(); + } + }, { + key: "shadowBias", + get: function get() { + return this._shadowBias; + }, + set: function set(val) { + this._shadowBias = val; + } + }, { + key: "shadowNormalBias", + get: function get() { + return this._shadowNormalBias; + }, + set: function set(val) { + this._shadowNormalBias = val; + } + }, { + key: "shadowSaturation", + get: function get() { + return this._shadowSaturation; + }, + set: function set(val) { + this._shadowSaturation = val; + } + }, { + key: "shadowDistance", + get: function get() { + return this._shadowDistance; + }, + set: function set(val) { + this._shadowDistance = Math.min(val, Shadows.MAX_FAR); + } + }, { + key: "shadowInvisibleOcclusionRange", + get: function get() { + return this._shadowInvisibleOcclusionRange; + }, + set: function set(val) { + this._shadowInvisibleOcclusionRange = Math.min(val, Shadows.MAX_FAR); + } + }, { + key: "csmLevel", + get: function get() { + return this._csmLevel; + }, + set: function set(val) { + this._csmLevel = val; + this.activate(); + } + }, { + key: "csmNeedUpdate", + get: function get() { + return this._csmNeedUpdate; + }, + set: function set(val) { + this._csmNeedUpdate = val; + } + }, { + key: "csmLayerLambda", + get: function get() { + return this._csmLayerLambda; + }, + set: function set(val) { + this._csmLayerLambda = val; + } + }, { + key: "csmOptimizationMode", + get: function get() { + return this._csmOptimizationMode; + }, + set: function set(val) { + this._csmOptimizationMode = val; + } + }, { + key: "shadowFixedArea", + get: function get() { + return this._shadowFixedArea; + }, + set: function set(val) { + this._shadowFixedArea = val; + this.activate(); + } + }, { + key: "shadowNear", + get: function get() { + return this._shadowNear; + }, + set: function set(val) { + this._shadowNear = val; + } + }, { + key: "shadowFar", + get: function get() { + return this._shadowFar; + }, + set: function set(val) { + this._shadowFar = Math.min(val, Shadows.MAX_FAR); + } + }, { + key: "shadowOrthoSize", + get: function get() { + return this._shadowOrthoSize; + }, + set: function set(val) { + this._shadowOrthoSize = val; + } + }, { + key: "csmLayersTransition", + get: function get() { + return this._csmLayersTransition; + }, + set: function set(val) { + this._csmLayersTransition = val; + this.activate(); + } + }, { + key: "csmTransitionRange", + get: function get() { + return this._csmTransitionRange; + }, + set: function set(val) { + this._csmTransitionRange = val; + } + }]); + return DirectionalLight; + }(Light); + + var SphereLight = function (_Light) { + _inheritsLoose(SphereLight, _Light); + function SphereLight() { + var _this; + _this = _Light.call(this) || this; + _this._needUpdate = false; + _this._size = 0.15; + _this._range = 1.0; + _this._luminanceHDR = 0; + _this._luminanceLDR = 0; + _this._pos = void 0; + _this._aabb = void 0; + _this._aabb = AABB.create(); + _this._pos = new Vec3(); + _this._type = LightType.SPHERE; + return _this; + } + var _proto = SphereLight.prototype; + _proto.initialize = function initialize() { + _Light.prototype.initialize.call(this); + var size = 0.15; + this.size = size; + this.range = 1.0; + this.luminanceHDR = 1700 / nt2lm(size); + this.luminanceLDR = 1.0; + }; + _proto.update = function update() { + if (this._node && (this._node.hasChangedFlags || this._needUpdate)) { + this._node.getWorldPosition(this._pos); + var range = this._range; + AABB.set(this._aabb, this._pos.x, this._pos.y, this._pos.z, range, range, range); + this._needUpdate = false; + } + }; + _createClass(SphereLight, [{ + key: "position", + get: function get() { + return this._pos; + } + }, { + key: "size", + get: function get() { + return this._size; + }, + set: function set(size) { + this._size = size; + } + }, { + key: "range", + get: function get() { + return this._range; + }, + set: function set(range) { + this._range = range; + this._needUpdate = true; + } + }, { + key: "luminance", + get: function get() { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + return this._luminanceHDR; + } else { + return this._luminanceLDR; + } + }, + set: function set(value) { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + this.luminanceHDR = value; + } else { + this.luminanceLDR = value; + } + } + }, { + key: "luminanceHDR", + get: function get() { + return this._luminanceHDR; + }, + set: function set(value) { + this._luminanceHDR = value; + } + }, { + key: "luminanceLDR", + set: function set(value) { + this._luminanceLDR = value; + } + }, { + key: "aabb", + get: function get() { + return this._aabb; + } + }]); + return SphereLight; + }(Light); + + var _forward$1 = new Vec3(0, 0, -1); + var _qt = new Quat(); + var _matView = new Mat4(); + var _matProj = new Mat4(); + var _matViewProj = new Mat4(); + var _matViewProjInv = new Mat4(); + var SpotLight = function (_Light) { + _inheritsLoose(SpotLight, _Light); + function SpotLight() { + var _this; + _this = _Light.call(this) || this; + _this._dir = new Vec3(1.0, -1.0, -1.0); + _this._range = 5.0; + _this._spotAngle = Math.cos(Math.PI / 6); + _this._pos = void 0; + _this._aabb = void 0; + _this._frustum = void 0; + _this._angle = 0; + _this._needUpdate = false; + _this._size = 0.15; + _this._luminanceHDR = 0; + _this._luminanceLDR = 0; + _this._shadowEnabled = false; + _this._shadowPcf = PCFType.HARD; + _this._shadowBias = 0.00001; + _this._shadowNormalBias = 0.0; + _this._aabb = AABB.create(); + _this._frustum = Frustum.create(); + _this._pos = new Vec3(); + _this._type = LightType.SPOT; + return _this; + } + var _proto = SpotLight.prototype; + _proto.initialize = function initialize() { + _Light.prototype.initialize.call(this); + var size = 0.15; + this.size = size; + this.luminanceHDR = 1700 / nt2lm(size); + this.luminanceLDR = 1.0; + this.range = Math.cos(Math.PI / 6); + this._dir.set(new Vec3(1.0, -1.0, -1.0)); + }; + _proto.update = function update() { + if (this._node && (this._node.hasChangedFlags || this._needUpdate)) { + this._node.getWorldPosition(this._pos); + Vec3.transformQuat(this._dir, _forward$1, this._node.getWorldRotation(_qt)); + Vec3.normalize(this._dir, this._dir); + AABB.set(this._aabb, this._pos.x, this._pos.y, this._pos.z, this._range, this._range, this._range); + this._node.getWorldRT(_matView); + Mat4.invert(_matView, _matView); + Mat4.perspective(_matProj, this._angle, 1.0, 0.001, this._range); + Mat4.multiply(_matViewProj, _matProj, _matView); + this._frustum.update(_matViewProj, _matViewProjInv); + this._needUpdate = false; + } + }; + _createClass(SpotLight, [{ + key: "position", + get: function get() { + return this._pos; + } + }, { + key: "size", + get: function get() { + return this._size; + }, + set: function set(size) { + this._size = size; + } + }, { + key: "range", + get: function get() { + return this._range; + }, + set: function set(range) { + this._range = range; + this._needUpdate = true; + } + }, { + key: "luminance", + get: function get() { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + return this._luminanceHDR; + } else { + return this._luminanceLDR; + } + }, + set: function set(value) { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + this.luminanceHDR = value; + } else { + this.luminanceLDR = value; + } + } + }, { + key: "luminanceHDR", + get: function get() { + return this._luminanceHDR; + }, + set: function set(value) { + this._luminanceHDR = value; + } + }, { + key: "luminanceLDR", + get: function get() { + return this._luminanceLDR; + }, + set: function set(value) { + this._luminanceLDR = value; + } + }, { + key: "direction", + get: function get() { + return this._dir; + } + }, { + key: "spotAngle", + get: function get() { + return this._spotAngle; + }, + set: function set(val) { + this._angle = val; + this._spotAngle = Math.cos(val * 0.5); + this._needUpdate = true; + } + }, { + key: "angle", + get: function get() { + return this._angle; + } + }, { + key: "aabb", + get: function get() { + return this._aabb; + } + }, { + key: "frustum", + get: function get() { + return this._frustum; + } + }, { + key: "shadowEnabled", + get: function get() { + return this._shadowEnabled; + }, + set: function set(val) { + this._shadowEnabled = val; + } + }, { + key: "shadowPcf", + get: function get() { + return this._shadowPcf; + }, + set: function set(val) { + this._shadowPcf = val; + } + }, { + key: "shadowBias", + get: function get() { + return this._shadowBias; + }, + set: function set(val) { + this._shadowBias = val; + } + }, { + key: "shadowNormalBias", + get: function get() { + return this._shadowNormalBias; + }, + set: function set(val) { + this._shadowNormalBias = val; + } + }]); + return SpotLight; + }(Light); + + var PointLight = function (_Light) { + _inheritsLoose(PointLight, _Light); + function PointLight() { + var _this; + _this = _Light.call(this) || this; + _this._needUpdate = false; + _this._range = 1.0; + _this._luminanceHDR = 0; + _this._luminanceLDR = 0; + _this._pos = void 0; + _this._aabb = void 0; + _this._aabb = AABB.create(); + _this._pos = new Vec3(); + _this._type = LightType.POINT; + return _this; + } + var _proto = PointLight.prototype; + _proto.initialize = function initialize() { + _Light.prototype.initialize.call(this); + this.range = 1.0; + this.luminanceHDR = 1700 / nt2lm(1.0); + this.luminanceLDR = 1.0; + }; + _proto.update = function update() { + if (this._node && (this._node.hasChangedFlags || this._needUpdate)) { + this._node.getWorldPosition(this._pos); + var range = this._range; + AABB.set(this._aabb, this._pos.x, this._pos.y, this._pos.z, range, range, range); + this._needUpdate = false; + } + }; + _createClass(PointLight, [{ + key: "position", + get: function get() { + return this._pos; + } + }, { + key: "range", + get: function get() { + return this._range; + }, + set: function set(range) { + this._range = range; + this._needUpdate = true; + } + }, { + key: "luminance", + get: function get() { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + return this._luminanceHDR; + } else { + return this._luminanceLDR; + } + }, + set: function set(value) { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + this.luminanceHDR = value; + } else { + this.luminanceLDR = value; + } + } + }, { + key: "luminanceHDR", + get: function get() { + return this._luminanceHDR; + }, + set: function set(value) { + this._luminanceHDR = value; + } + }, { + key: "luminanceLDR", + set: function set(value) { + this._luminanceLDR = value; + } + }, { + key: "aabb", + get: function get() { + return this._aabb; + } + }]); + return PointLight; + }(Light); + + var _forward = new Vec3(0, 0, -1); + var RangedDirectionalLight = function (_Light) { + _inheritsLoose(RangedDirectionalLight, _Light); + function RangedDirectionalLight() { + var _this; + _this = _Light.call(this) || this; + _this._dir = new Vec3(0, 0, -1); + _this._pos = new Vec3(0, 0, 0); + _this._scale = new Vec3(1, 1, 1); + _this._right = new Vec3(1, 0, 0); + _this._illuminanceHDR = Ambient.SUN_ILLUM; + _this._illuminanceLDR = 1.0; + _this._type = LightType.RANGED_DIRECTIONAL; + return _this; + } + var _proto = RangedDirectionalLight.prototype; + _proto.initialize = function initialize() { + _Light.prototype.initialize.call(this); + this.illuminance = Ambient.SUN_ILLUM; + }; + _proto.update = function update() { + if (this._node && this._node.hasChangedFlags) { + this._node.getWorldPosition(this._pos); + this._node.getWorldScale(this._scale); + Vec3.transformQuat(this._dir, _forward, this._node.worldRotation); + Vec3.transformQuat(this._right, Vec3.RIGHT, this._node.worldRotation); + } + }; + _createClass(RangedDirectionalLight, [{ + key: "direction", + get: function get() { + return this._dir; + } + }, { + key: "right", + get: function get() { + return this._right; + } + }, { + key: "position", + get: function get() { + return this._pos; + } + }, { + key: "scale", + get: function get() { + return this._scale; + } + }, { + key: "illuminance", + get: function get() { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + return this._illuminanceHDR; + } else { + return this._illuminanceLDR; + } + }, + set: function set(value) { + var isHDR = legacyCC.director.root.pipeline.pipelineSceneData.isHDR; + if (isHDR) { + this.illuminanceHDR = value; + } else { + this.illuminanceLDR = value; + } + } + }, { + key: "illuminanceHDR", + get: function get() { + return this._illuminanceHDR; + }, + set: function set(value) { + this._illuminanceHDR = value; + } + }, { + key: "illuminanceLDR", + get: function get() { + return this._illuminanceLDR; + }, + set: function set(value) { + this._illuminanceLDR = value; + } + }]); + return RangedDirectionalLight; + }(Light); + + var LODData = function () { + function LODData() { + this.screenUsagePercentage = 1.0; + this._models = []; + } + var _proto = LODData.prototype; + _proto.addModel = function addModel(model) { + this._models.splice(0, 0, model); + }; + _proto.eraseModel = function eraseModel(model) { + var removeIndex = this._models.indexOf(model); + if (removeIndex >= 0) { + this._models.splice(removeIndex, 1); + } + }; + _proto.clearModels = function clearModels() { + this._models.length = 0; + }; + _createClass(LODData, [{ + key: "models", + get: function get() { + return this._models; + } + }]); + return LODData; + }(); + var LODGroup = function () { + function LODGroup() { + this.scene = void 0; + this.node = null; + this._device = void 0; + this.enabled = true; + this._localBoundaryCenter = new Vec3(0, 0, 0); + this._objectSize = 1; + this._lodDataArray = []; + this._lockedLODLevelVec = []; + this._isLockLevelChanged = false; + this._device = deviceManager.gfxDevice; + } + var _proto2 = LODGroup.prototype; + _proto2.attachToScene = function attachToScene(scene) { + this.scene = scene; + }; + _proto2.detachFromScene = function detachFromScene() { + this.scene = null; + }; + _proto2.lockLODLevels = function lockLODLevels(lockLev) { + if (lockLev.length !== this._lockedLODLevelVec.length) { + this._isLockLevelChanged = true; + } else { + var size = lockLev.length; + var index = 0; + for (; index < size; index++) { + if (lockLev[index] !== this._lockedLODLevelVec[index]) { + this._isLockLevelChanged = true; + break; + } + } + } + this._lockedLODLevelVec = lockLev.slice(); + }; + _proto2.isLockLevelChanged = function isLockLevelChanged() { + return this._isLockLevelChanged; + }; + _proto2.resetLockChangeFlag = function resetLockChangeFlag() { + this._isLockLevelChanged = false; + }; + _proto2.getLockedLODLevels = function getLockedLODLevels() { + return this._lockedLODLevelVec; + }; + _proto2.clearLODs = function clearLODs() { + this._lodDataArray.length = 0; + }; + _proto2.insertLOD = function insertLOD(index, lod) { + this._lodDataArray.splice(index, 0, lod); + }; + _proto2.updateLOD = function updateLOD(index, lod) { + this._lodDataArray[index] = lod; + }; + _proto2.eraseLOD = function eraseLOD(index) { + this._lodDataArray.splice(index, 1); + }; + _proto2.getVisibleLODLevel = function getVisibleLODLevel(camera) { + var screenUsagePercentage = this.getScreenUsagePercentage(camera); + var lodIndex = -1; + for (var i = 0; i < this.lodCount; ++i) { + var lod = this.lodDataArray[i]; + if (screenUsagePercentage >= lod.screenUsagePercentage) { + lodIndex = i; + break; + } + } + return lodIndex; + }; + _proto2.getScreenUsagePercentage = function getScreenUsagePercentage(camera) { + if (!this.node) return 0; + var distance; + if (camera.projectionType === CameraProjection.PERSPECTIVE) { + distance = Vec3.len(this.localBoundaryCenter.transformMat4(this.node.worldMatrix).subtract(camera.node.worldPosition)); + } + return this.distanceToScreenUsagePercentage(camera, distance, this.getWorldSpaceSize()); + }; + _proto2.distanceToScreenUsagePercentage = function distanceToScreenUsagePercentage(camera, distance, size) { + if (camera.projectionType === CameraProjection.PERSPECTIVE) { + assertIsTrue(typeof distance === 'number', 'distance must be present for perspective projection'); + return size * camera.matProj.m05 / (distance * 2.0); + } else { + return size * camera.matProj.m05 * 0.5; + } + }; + _proto2.getWorldSpaceSize = function getWorldSpaceSize() { + var scale = this.node.scale; + var maxScale = Math.max(Math.abs(scale.x), Math.abs(scale.y), Math.abs(scale.z)); + return maxScale * this.objectSize; + }; + _createClass(LODGroup, [{ + key: "localBoundaryCenter", + get: function get() { + return this._localBoundaryCenter.clone(); + }, + set: function set(val) { + this._localBoundaryCenter.set(val); + } + }, { + key: "lodCount", + get: function get() { + return this._lodDataArray.length; + } + }, { + key: "objectSize", + get: function get() { + return this._objectSize; + }, + set: function set(val) { + this._objectSize = val; + } + }, { + key: "lodDataArray", + get: function get() { + return this._lodDataArray; + } + }]); + return LODGroup; + }(); + + var index$2 = /*#__PURE__*/Object.freeze({ + __proto__: null, + get CameraFOVAxis () { return CameraFOVAxis; }, + get CameraProjection () { return CameraProjection; }, + get CameraAperture () { return CameraAperture; }, + get CameraISO () { return CameraISO; }, + get CameraShutter () { return CameraShutter; }, + get CameraType () { return CameraType; }, + get TrackingType () { return TrackingType; }, + get CameraUsage () { return CameraUsage; }, + SKYBOX_FLAG: SKYBOX_FLAG, + Camera: Camera$1, + get ModelType () { return ModelType; }, + Model: Model, + SubModel: SubModel, + Ambient: Ambient, + EnvironmentLightingType: EnvironmentLightingType, + Skybox: Skybox, + ShadowSize: ShadowSize, + ShadowType: ShadowType, + PCFType: PCFType, + CSMLevel: CSMLevel, + CSMOptimizationMode: CSMOptimizationMode, + Shadows: Shadows, + FogType: FogType, + FOG_TYPE_NONE: FOG_TYPE_NONE, + Fog: Fog, + Octree: Octree, + Skin: Skin, + ColorTemperatureToRGB: ColorTemperatureToRGB, + get LightType () { return LightType; }, + nt2lm: nt2lm, + Light: Light, + DirectionalLight: DirectionalLight, + SphereLight: SphereLight, + SpotLight: SpotLight, + PointLight: PointLight, + RangedDirectionalLight: RangedDirectionalLight, + get ProbeClearFlag () { return ProbeClearFlag; }, + get ProbeType () { return ProbeType; }, + ReflectionProbe: ReflectionProbe, + LODData: LODData, + LODGroup: LODGroup, + ToneMappingType: ToneMappingType, + PostSettings: PostSettings + }); + + var RenderScene = function () { + RenderScene.registerCreateFunc = function registerCreateFunc(root) { + root._createSceneFun = function (_root) { + return new RenderScene(_root); + }; + }; + function RenderScene(root) { + this._root = void 0; + this._name = ''; + this._cameras = []; + this._models = []; + this._lodGroups = []; + this._batches = []; + this._directionalLights = []; + this._sphereLights = []; + this._spotLights = []; + this._pointLights = []; + this._rangedDirLights = []; + this._mainLight = null; + this._modelId = 0; + this._lodStateCache = null; + this._root = root; + } + var _proto = RenderScene.prototype; + _proto.initialize = function initialize(info) { + this._name = info.name; + this._lodStateCache = new LodStateCache(this); + return true; + }; + _proto.update = function update(stamp) { + var mainLight = this._mainLight; + if (mainLight) { + mainLight.update(); + } + var sphereLights = this._sphereLights; + for (var i = 0; i < sphereLights.length; i++) { + var light = sphereLights[i]; + light.update(); + } + var spotLights = this._spotLights; + for (var _i = 0; _i < spotLights.length; _i++) { + var _light = spotLights[_i]; + _light.update(); + } + var pointLights = this._pointLights; + for (var _i2 = 0; _i2 < pointLights.length; _i2++) { + var _light2 = pointLights[_i2]; + _light2.update(); + } + var rangedDirLights = this._rangedDirLights; + for (var _i3 = 0; _i3 < rangedDirLights.length; _i3++) { + var _light3 = rangedDirLights[_i3]; + _light3.update(); + } + var models = this._models; + for (var _i4 = 0; _i4 < models.length; _i4++) { + var model = models[_i4]; + if (model.enabled) { + model.updateTransform(stamp); + model.updateUBOs(stamp); + } + } + this._lodStateCache.updateLodState(); + }; + _proto.destroy = function destroy() { + this.removeCameras(); + this.removeSphereLights(); + this.removeSpotLights(); + this.removeRangedDirLights(); + this.removeModels(); + this.removeLODGroups(); + this._lodStateCache.clearCache(); + }; + _proto.isCulledByLod = function isCulledByLod(camera, model) { + return this._lodStateCache.isLodModelCulled(camera, model); + }; + _proto.addCamera = function addCamera(cam) { + cam.attachToScene(this); + this._cameras.push(cam); + this._lodStateCache.addCamera(cam); + }; + _proto.removeCamera = function removeCamera(camera) { + for (var i = 0; i < this._cameras.length; ++i) { + if (this._cameras[i] === camera) { + this._cameras.splice(i, 1); + camera.detachFromScene(); + this._lodStateCache.removeCamera(camera); + return; + } + } + }; + _proto.removeCameras = function removeCameras() { + for (var _iterator = _createForOfIteratorHelperLoose(this._cameras), _step; !(_step = _iterator()).done;) { + var camera = _step.value; + camera.detachFromScene(); + this._lodStateCache.removeCamera(camera); + } + this._cameras.splice(0); + }; + _proto.setMainLight = function setMainLight(dl) { + this._mainLight = dl; + if (this._mainLight) this._mainLight.activate(); + }; + _proto.unsetMainLight = function unsetMainLight(dl) { + if (this._mainLight === dl) { + var dlList = this._directionalLights; + if (dlList.length) { + this.setMainLight(dlList[dlList.length - 1]); + if (this._mainLight.node) { + this._mainLight.node.hasChangedFlags |= TransformBit.ROTATION; + } + return; + } + this.setMainLight(null); + } + }; + _proto.addDirectionalLight = function addDirectionalLight(dl) { + dl.attachToScene(this); + this._directionalLights.push(dl); + }; + _proto.removeDirectionalLight = function removeDirectionalLight(dl) { + for (var i = 0; i < this._directionalLights.length; ++i) { + if (this._directionalLights[i] === dl) { + dl.detachFromScene(); + this._directionalLights.splice(i, 1); + return; + } + } + }; + _proto.addSphereLight = function addSphereLight(pl) { + pl.attachToScene(this); + this._sphereLights.push(pl); + }; + _proto.removeSphereLight = function removeSphereLight(pl) { + for (var i = 0; i < this._sphereLights.length; ++i) { + if (this._sphereLights[i] === pl) { + pl.detachFromScene(); + this._sphereLights.splice(i, 1); + return; + } + } + }; + _proto.addSpotLight = function addSpotLight(sl) { + sl.attachToScene(this); + this._spotLights.push(sl); + }; + _proto.removeSpotLight = function removeSpotLight(sl) { + for (var i = 0; i < this._spotLights.length; ++i) { + if (this._spotLights[i] === sl) { + sl.detachFromScene(); + this._spotLights.splice(i, 1); + return; + } + } + }; + _proto.removeSphereLights = function removeSphereLights() { + for (var i = 0; i < this._sphereLights.length; ++i) { + this._sphereLights[i].detachFromScene(); + } + this._sphereLights.length = 0; + }; + _proto.removeSpotLights = function removeSpotLights() { + for (var i = 0; i < this._spotLights.length; ++i) { + this._spotLights[i].detachFromScene(); + } + this._spotLights.length = 0; + }; + _proto.addPointLight = function addPointLight(pl) { + pl.attachToScene(this); + this._pointLights.push(pl); + }; + _proto.removePointLight = function removePointLight(pl) { + for (var i = 0; i < this._pointLights.length; ++i) { + if (this._pointLights[i] === pl) { + pl.detachFromScene(); + this._pointLights.splice(i, 1); + return; + } + } + }; + _proto.removePointLights = function removePointLights() { + for (var i = 0; i < this._pointLights.length; ++i) { + this._pointLights[i].detachFromScene(); + } + this._pointLights.length = 0; + }; + _proto.addRangedDirLight = function addRangedDirLight(l) { + l.attachToScene(this); + this._rangedDirLights.push(l); + }; + _proto.removeRangedDirLight = function removeRangedDirLight(l) { + for (var i = 0; i < this._rangedDirLights.length; ++i) { + if (this._rangedDirLights[i] === l) { + l.detachFromScene(); + this._rangedDirLights.splice(i, 1); + return; + } + } + }; + _proto.removeRangedDirLights = function removeRangedDirLights() { + for (var i = 0; i < this._rangedDirLights.length; ++i) { + this._rangedDirLights[i].detachFromScene(); + } + this._rangedDirLights.length = 0; + }; + _proto.addModel = function addModel(m) { + m.attachToScene(this); + this._models.push(m); + }; + _proto.removeModel = function removeModel(model) { + for (var i = 0; i < this._models.length; ++i) { + if (this._models[i] === model) { + this._lodStateCache.removeModel(model); + model.detachFromScene(); + this._models.splice(i, 1); + return; + } + } + }; + _proto.removeModels = function removeModels() { + for (var _iterator2 = _createForOfIteratorHelperLoose(this._models), _step2; !(_step2 = _iterator2()).done;) { + var m = _step2.value; + this._lodStateCache.removeModel(m); + m.detachFromScene(); + m.destroy(); + } + this._models.length = 0; + }; + _proto.addBatch = function addBatch(batch) { + this._batches.push(batch); + }; + _proto.removeBatch = function removeBatch(batch) { + for (var i = 0; i < this._batches.length; ++i) { + if (this._batches[i] === batch) { + this._batches.splice(i, 1); + return; + } + } + }; + _proto.removeBatches = function removeBatches() { + this._batches.length = 0; + }; + _proto.addLODGroup = function addLODGroup(lodGroup) { + this._lodGroups.push(lodGroup); + lodGroup.attachToScene(this); + this._lodStateCache.addLodGroup(lodGroup); + }; + _proto.removeLODGroup = function removeLODGroup(lodGroup) { + var index = this._lodGroups.indexOf(lodGroup); + if (index >= 0) { + this._lodGroups.splice(index, 1); + lodGroup.detachFromScene(); + this._lodStateCache.removeLodGroup(lodGroup); + } + }; + _proto.removeLODGroups = function removeLODGroups() { + for (var _iterator3 = _createForOfIteratorHelperLoose(this._lodGroups), _step3; !(_step3 = _iterator3()).done;) { + var group = _step3.value; + this._lodStateCache.removeLodGroup(group); + } + this._lodGroups.length = 0; + }; + _proto.onGlobalPipelineStateChanged = function onGlobalPipelineStateChanged() { + for (var _iterator4 = _createForOfIteratorHelperLoose(this._models), _step4; !(_step4 = _iterator4()).done;) { + var m = _step4.value; + m.onGlobalPipelineStateChanged(); + } + }; + _proto.generateModelId = function generateModelId() { + return this._modelId++; + }; + _createClass(RenderScene, [{ + key: "root", + get: function get() { + return this._root; + } + }, { + key: "name", + get: function get() { + return this._name; + } + }, { + key: "cameras", + get: function get() { + return this._cameras; + } + }, { + key: "mainLight", + get: function get() { + return this._mainLight; + } + }, { + key: "sphereLights", + get: function get() { + return this._sphereLights; + } + }, { + key: "spotLights", + get: function get() { + return this._spotLights; + } + }, { + key: "pointLights", + get: function get() { + return this._pointLights; + } + }, { + key: "rangedDirLights", + get: function get() { + return this._rangedDirLights; + } + }, { + key: "models", + get: function get() { + return this._models; + } + }, { + key: "batches", + get: function get() { + return this._batches; + } + }, { + key: "lodGroups", + get: function get() { + return this._lodGroups; + } + }]); + return RenderScene; + }(); + var LODInfo = function LODInfo() { + this.usedLevel = -1; + this.lastUsedLevel = -1; + this.transformDirty = true; + }; + var LodStateCache = function () { + function LodStateCache(scene) { + this._renderScene = null; + this._modelsInLODGroup = new Map(); + this._lodStateInCamera = new Map(); + this._newAddedLodGroupVec = new Array(); + this._levelModels = new Map(); + this._renderScene = scene; + } + var _proto2 = LodStateCache.prototype; + _proto2.addCamera = function addCamera(camera) { + for (var _iterator5 = _createForOfIteratorHelperLoose(this._renderScene.lodGroups), _step5; !(_step5 = _iterator5()).done;) { + var lodGroup = _step5.value; + var layer = lodGroup.node.layer; + if ((camera.visibility & layer) === layer) { + if (!this._lodStateInCamera.has(camera)) { + this._lodStateInCamera.set(camera, new Map()); + } + break; + } + } + }; + _proto2.removeCamera = function removeCamera(camera) { + if (this._lodStateInCamera.has(camera)) { + this._lodStateInCamera["delete"](camera); + } + }; + _proto2.addLodGroup = function addLodGroup(lodGroup) { + this._newAddedLodGroupVec.push(lodGroup); + for (var _iterator6 = _createForOfIteratorHelperLoose(this._renderScene.cameras), _step6; !(_step6 = _iterator6()).done;) { + var camera = _step6.value; + if (this._lodStateInCamera.has(camera)) { + continue; + } + var layer = lodGroup.node.layer; + if ((camera.visibility & layer) === layer) { + this._lodStateInCamera.set(camera, new Map()); + } + } + }; + _proto2.removeLodGroup = function removeLodGroup(lodGroup) { + for (var index = 0; index < lodGroup.lodCount; index++) { + var lod = lodGroup.lodDataArray[index]; + for (var _iterator7 = _createForOfIteratorHelperLoose(lod.models), _step7; !(_step7 = _iterator7()).done;) { + var model = _step7.value; + this._modelsInLODGroup["delete"](model); + } + } + for (var _iterator8 = _createForOfIteratorHelperLoose(this._lodStateInCamera), _step8; !(_step8 = _iterator8()).done;) { + var visibleCamera = _step8.value; + visibleCamera[1]["delete"](lodGroup); + } + this._levelModels["delete"](lodGroup); + }; + _proto2.removeModel = function removeModel(model) { + if (this._modelsInLODGroup.has(model)) { + this._modelsInLODGroup["delete"](model); + } + }; + _proto2.updateLodState = function updateLodState() { + var _this = this; + for (var _iterator9 = _createForOfIteratorHelperLoose(this._newAddedLodGroupVec), _step9; !(_step9 = _iterator9()).done;) { + var addedLodGroup = _step9.value; + var levelModels = this._levelModels.get(addedLodGroup); + if (!levelModels) { + levelModels = new Map(); + this._levelModels.set(addedLodGroup, levelModels); + } + for (var index = 0; index < addedLodGroup.lodCount; index++) { + var lodModels = levelModels.get(index); + if (!lodModels) { + lodModels = new Array(); + } + var lod = addedLodGroup.lodDataArray[index]; + for (var _iterator11 = _createForOfIteratorHelperLoose(lod.models), _step11; !(_step11 = _iterator11()).done;) { + var model = _step11.value; + var modelInfo = this._modelsInLODGroup.get(model); + if (!modelInfo) { + modelInfo = new Map(); + } + this._modelsInLODGroup.set(model, modelInfo); + lodModels.push(model); + } + levelModels.set(index, lodModels); + } + } + this._newAddedLodGroupVec.length = 0; + var _loop = function _loop() { + var lodGroup = _step10.value; + if (lodGroup.enabled) { + var lodLevels = lodGroup.getLockedLODLevels(); + var count = lodLevels.length; + if (count > 0) { + if (lodGroup.node.hasChangedFlags > 0) { + for (var _iterator12 = _createForOfIteratorHelperLoose(_this._lodStateInCamera), _step12; !(_step12 = _iterator12()).done;) { + var visibleCamera = _step12.value; + var lodInfo = visibleCamera[1].get(lodGroup); + if (!lodInfo) { + lodInfo = new LODInfo(); + visibleCamera[1].set(lodGroup, lodInfo); + } + lodInfo.transformDirty = true; + } + } + if (lodGroup.isLockLevelChanged()) { + lodGroup.resetLockChangeFlag(); + var _lodModels = _this._levelModels.get(lodGroup); + if (_lodModels) { + _lodModels.forEach(function (vecArray, index) { + vecArray.forEach(function (model) { + var modelInfo = _this._modelsInLODGroup.get(model); + if (modelInfo) { + modelInfo.clear(); + } + }); + }); + for (var _iterator13 = _createForOfIteratorHelperLoose(lodLevels), _step13; !(_step13 = _iterator13()).done;) { + var visibleIndex = _step13.value; + var vecModels = _lodModels.get(visibleIndex); + if (vecModels) { + vecModels.forEach(function (model) { + var modelInfo = _this._modelsInLODGroup.get(model); + if (modelInfo && model.node && model.node.active) { + for (var _iterator14 = _createForOfIteratorHelperLoose(_this._lodStateInCamera), _step14; !(_step14 = _iterator14()).done;) { + var _visibleCamera = _step14.value; + modelInfo.set(_visibleCamera[0], true); + } + } + }); + } + } + } + } + return 0; + } + var hasUpdated = false; + for (var _iterator15 = _createForOfIteratorHelperLoose(_this._lodStateInCamera), _step15; !(_step15 = _iterator15()).done;) { + var _visibleCamera2 = _step15.value; + var _lodInfo = _visibleCamera2[1].get(lodGroup); + if (!_lodInfo) { + _lodInfo = new LODInfo(); + _visibleCamera2[1].set(lodGroup, _lodInfo); + } + var cameraChangeFlags = _visibleCamera2[0].node.hasChangedFlags; + var lodChangeFlags = lodGroup.node.hasChangedFlags; + if (cameraChangeFlags > 0 || lodChangeFlags > 0 || _lodInfo.transformDirty) { + if (_lodInfo.transformDirty) { + _lodInfo.transformDirty = false; + } + var _index = lodGroup.getVisibleLODLevel(_visibleCamera2[0]); + if (_index !== _lodInfo.usedLevel) { + _lodInfo.lastUsedLevel = _lodInfo.usedLevel; + _lodInfo.usedLevel = _index; + hasUpdated = true; + } + } + } + var _lodModels2 = _this._levelModels.get(lodGroup); + if (!_lodModels2) { + return 0; + } + if (lodGroup.isLockLevelChanged()) { + lodGroup.resetLockChangeFlag(); + _lodModels2.forEach(function (vecArray, index) { + vecArray.forEach(function (model) { + var modelInfo = _this._modelsInLODGroup.get(model); + if (modelInfo) { + modelInfo.clear(); + } + }); + }); + hasUpdated = true; + } else if (hasUpdated) { + _this._lodStateInCamera.forEach(function (lodState, camera) { + var lodInfo = lodState.get(lodGroup); + if (lodInfo && lodInfo.usedLevel !== lodInfo.lastUsedLevel) { + var _vecModels = _lodModels2.get(lodInfo.lastUsedLevel); + if (_vecModels) { + _vecModels.forEach(function (model) { + var modelInfo = _this._modelsInLODGroup.get(model); + if (modelInfo) { + modelInfo.clear(); + } + }); + } + } + }); + } + if (hasUpdated) { + _this._lodStateInCamera.forEach(function (lodState, camera) { + var lodInfo = lodState.get(lodGroup); + if (lodInfo) { + var usedLevel = lodInfo.usedLevel; + var _vecModels2 = _lodModels2.get(usedLevel); + if (_vecModels2) { + _vecModels2.forEach(function (model) { + var modelInfo = _this._modelsInLODGroup.get(model); + if (modelInfo && model.node && model.node.active) { + modelInfo.set(camera, true); + } + }); + } + } + }); + } + } + }, + _ret; + for (var _iterator10 = _createForOfIteratorHelperLoose(this._renderScene.lodGroups), _step10; !(_step10 = _iterator10()).done;) { + _ret = _loop(); + if (_ret === 0) continue; + } + }; + _proto2.isLodModelCulled = function isLodModelCulled(camera, model) { + var modelInfo = this._modelsInLODGroup.get(model); + if (!modelInfo) { + return false; + } + return !modelInfo.has(camera); + }; + _proto2.clearCache = function clearCache() { + this._levelModels.clear(); + this._modelsInLODGroup.clear(); + this._lodStateInCamera.clear(); + this._newAddedLodGroupVec.length = 0; + }; + _proto2.isLodGroupVisibleByCamera = function isLodGroupVisibleByCamera(lodGroup, camera) { + var layer = lodGroup.node.layer; + return (camera.visibility & layer) === layer; + }; + return LodStateCache; + }(); + + var _orientationMap$1; + var orientationMap$1 = (_orientationMap$1 = {}, _orientationMap$1[Orientation$1.PORTRAIT] = SurfaceTransform.IDENTITY, _orientationMap$1[Orientation$1.LANDSCAPE_RIGHT] = SurfaceTransform.ROTATE_90, _orientationMap$1[Orientation$1.PORTRAIT_UPSIDE_DOWN] = SurfaceTransform.ROTATE_180, _orientationMap$1[Orientation$1.LANDSCAPE_LEFT] = SurfaceTransform.ROTATE_270, _orientationMap$1); + var RenderWindow = function () { + RenderWindow.registerCreateFunc = function registerCreateFunc(root) { + root._createWindowFun = function (_root) { + return new RenderWindow(); + }; + }; + function RenderWindow(root) { + this._title = ''; + this._width = 1; + this._height = 1; + this._swapchain = null; + this._renderPass = null; + this._colorTextures = []; + this._depthStencilTexture = null; + this._cameras = []; + this._hasOnScreenAttachments = false; + this._hasOffScreenAttachments = false; + this._framebuffer = null; + this._device = null; + } + var _proto = RenderWindow.prototype; + _proto.initialize = function initialize(device, info) { + if (info.title !== undefined) { + this._title = info.title; + } + if (info.swapchain !== undefined) { + this._swapchain = info.swapchain; + } + this._width = info.width; + this._height = info.height; + this._device = device; + this._renderPass = device.createRenderPass(info.renderPassInfo); + if (info.swapchain) { + this._swapchain = info.swapchain; + this._colorTextures.push(info.swapchain.colorTexture); + this._depthStencilTexture = info.swapchain.depthStencilTexture; + } else { + for (var i = 0; i < info.renderPassInfo.colorAttachments.length; i++) { + var textureInfo = new TextureInfo(TextureType.TEX2D, TextureUsageBit.COLOR_ATTACHMENT | TextureUsageBit.SAMPLED | TextureUsageBit.TRANSFER_SRC, info.renderPassInfo.colorAttachments[i].format, this._width, this._height); + if (info.externalFlag && (info.externalFlag & TextureFlagBit.EXTERNAL_NORMAL || info.externalFlag & TextureFlagBit.EXTERNAL_OES)) { + textureInfo.flags |= info.externalFlag; + textureInfo.externalRes = info.externalResLow ? info.externalResLow : 0; + } + this._colorTextures.push(device.createTexture(textureInfo)); + } + if (info.renderPassInfo.depthStencilAttachment.format !== Format.UNKNOWN) { + this._depthStencilTexture = device.createTexture(new TextureInfo(TextureType.TEX2D, TextureUsageBit.DEPTH_STENCIL_ATTACHMENT | TextureUsageBit.SAMPLED, info.renderPassInfo.depthStencilAttachment.format, this._width, this._height)); + this._hasOffScreenAttachments = true; + } + } + this._framebuffer = device.createFramebuffer(new FramebufferInfo(this._renderPass, this._colorTextures, this._depthStencilTexture)); + return true; + }; + _proto.destroy = function destroy() { + this.clearCameras(); + if (this._framebuffer) { + this._framebuffer.destroy(); + this._framebuffer = null; + } + if (this._depthStencilTexture) { + this._depthStencilTexture.destroy(); + this._depthStencilTexture = null; + } + for (var i = 0; i < this._colorTextures.length; i++) { + var colorTexture = this._colorTextures[i]; + if (colorTexture) { + colorTexture.destroy(); + } + } + this._colorTextures.length = 0; + this._device = null; + }; + _proto.resize = function resize(width, height) { + if (this._swapchain) { + this._swapchain.resize(width, height, orientationMap$1[screenAdapter.orientation]); + this._width = this._swapchain.width; + this._height = this._swapchain.height; + } else { + for (var i = 0; i < this._colorTextures.length; i++) { + this._colorTextures[i].resize(width, height); + } + if (this._depthStencilTexture) { + this._depthStencilTexture.resize(width, height); + } + this._width = width; + this._height = height; + } + if (this.framebuffer) { + this.framebuffer.destroy(); + this._framebuffer = this._device.createFramebuffer(new FramebufferInfo(this._renderPass, this._colorTextures, this._depthStencilTexture)); + } + for (var _iterator = _createForOfIteratorHelperLoose(this._cameras), _step; !(_step = _iterator()).done;) { + var camera = _step.value; + camera.resize(width, height); + } + }; + _proto.extractRenderCameras = function extractRenderCameras(cameras) { + for (var j = 0; j < this._cameras.length; j++) { + var camera = this._cameras[j]; + if (camera.enabled) { + camera.update(); + cameras.push(camera); + } + } + }; + _proto.attachCamera = function attachCamera(camera) { + for (var i = 0; i < this._cameras.length; i++) { + if (this._cameras[i] === camera) { + return; + } + } + this._cameras.push(camera); + this.sortCameras(); + }; + _proto.detachCamera = function detachCamera(camera) { + for (var i = 0; i < this._cameras.length; ++i) { + if (this._cameras[i] === camera) { + this._cameras.splice(i, 1); + return; + } + } + }; + _proto.clearCameras = function clearCameras() { + this._cameras.length = 0; + }; + _proto.sortCameras = function sortCameras() { + this._cameras.sort(function (a, b) { + return a.priority - b.priority; + }); + }; + _createClass(RenderWindow, [{ + key: "width", + get: function get() { + return this._width; + } + }, { + key: "height", + get: function get() { + return this._height; + } + }, { + key: "swapchain", + get: function get() { + return this._swapchain; + } + }, { + key: "framebuffer", + get: function get() { + return this._framebuffer; + } + }, { + key: "cameras", + get: function get() { + return this._cameras; + } + }]); + return RenderWindow; + }(); + + var XREye; + (function (XREye) { + XREye[XREye["NONE"] = -1] = "NONE"; + XREye[XREye["LEFT"] = 0] = "LEFT"; + XREye[XREye["RIGHT"] = 1] = "RIGHT"; + })(XREye || (XREye = {})); + var XRConfigKey; + (function (XRConfigKey) { + XRConfigKey[XRConfigKey["SESSION_RUNNING"] = 2] = "SESSION_RUNNING"; + XRConfigKey[XRConfigKey["VIEW_COUNT"] = 6] = "VIEW_COUNT"; + XRConfigKey[XRConfigKey["SWAPCHAIN_WIDTH"] = 7] = "SWAPCHAIN_WIDTH"; + XRConfigKey[XRConfigKey["SWAPCHAIN_HEIGHT"] = 8] = "SWAPCHAIN_HEIGHT"; + XRConfigKey[XRConfigKey["DEVICE_IPD"] = 37] = "DEVICE_IPD"; + XRConfigKey[XRConfigKey["SPLIT_AR_GLASSES"] = 42] = "SPLIT_AR_GLASSES"; + })(XRConfigKey || (XRConfigKey = {})); + var XRPoseType; + (function (XRPoseType) { + XRPoseType[XRPoseType["VIEW_LEFT"] = 0] = "VIEW_LEFT"; + XRPoseType[XRPoseType["HAND_LEFT"] = 1] = "HAND_LEFT"; + XRPoseType[XRPoseType["AIM_LEFT"] = 2] = "AIM_LEFT"; + XRPoseType[XRPoseType["VIEW_RIGHT"] = 3] = "VIEW_RIGHT"; + XRPoseType[XRPoseType["HAND_RIGHT"] = 4] = "HAND_RIGHT"; + XRPoseType[XRPoseType["AIM_RIGHT"] = 5] = "AIM_RIGHT"; + XRPoseType[XRPoseType["HEAD_MIDDLE"] = 6] = "HEAD_MIDDLE"; + })(XRPoseType || (XRPoseType = {})); + + var Root = exports('ak', function () { + function Root(device) { + var _this = this; + this._createSceneFun = null; + this._createWindowFun = null; + this._device = void 0; + this._windows = []; + this._mainWindow = null; + this._curWindow = null; + this._tempWindow = null; + this._usesCustomPipeline = true; + this._pipeline = null; + this._pipelineEvent = null; + this._classicPipeline = null; + this._customPipeline = null; + this._batcher = null; + this._dataPoolMgr = void 0; + this._scenes = []; + this._modelPools = new Map(); + this._cameraPool = null; + this._lightPools = new Map(); + this._debugView = new DebugView(); + this._fpsTime = 0; + this._frameCount = 0; + this._fps = 0; + this._fixedFPS = 0; + this._useDeferredPipeline = false; + this._fixedFPSFrameTime = 0; + this._cumulativeTime = 0; + this._frameTime = 0; + this._cameraList = []; + this._device = device; + this._dataPoolMgr = legacyCC.internal.DataPoolManager && new legacyCC.internal.DataPoolManager(device); + RenderScene.registerCreateFunc(this); + RenderWindow.registerCreateFunc(this); + this._cameraPool = new Pool(function () { + return new Camera$1(_this._device); + }, 4, function (cam) { + return cam.destroy(); + }); + } + var _proto = Root.prototype; + _proto.initialize = function initialize(info) { + var _this$_dataPoolMgr; + var swapchain = deviceManager.swapchain; + var colorAttachment = new ColorAttachment(); + colorAttachment.format = swapchain.colorTexture.format; + var depthStencilAttachment = new DepthStencilAttachment(); + depthStencilAttachment.format = swapchain.depthStencilTexture.format; + depthStencilAttachment.depthStoreOp = StoreOp.DISCARD; + depthStencilAttachment.stencilStoreOp = StoreOp.DISCARD; + var renderPassInfo = new RenderPassInfo([colorAttachment], depthStencilAttachment); + this._mainWindow = this.createWindow({ + title: 'rootMainWindow', + width: swapchain.width, + height: swapchain.height, + renderPassInfo: renderPassInfo, + swapchain: swapchain + }); + this._curWindow = this._mainWindow; + var customJointTextureLayouts = settings.querySettings(Settings.Category.ANIMATION, 'customJointTextureLayouts') || []; + (_this$_dataPoolMgr = this._dataPoolMgr) === null || _this$_dataPoolMgr === void 0 ? void 0 : _this$_dataPoolMgr.jointTexturePool.registerCustomTextureLayouts(customJointTextureLayouts); + this._resizeMaxJointForDS(); + }; + _proto.destroy = function destroy() { + this.destroyScenes(); + if (this._pipeline) { + this._pipeline.destroy(); + this._pipeline = null; + this._pipelineEvent = null; + } + if (this._batcher) { + this._batcher.destroy(); + this._batcher = null; + } + this._curWindow = null; + this._mainWindow = null; + this.dataPoolManager.clear(); + if (legacyCC.rendering) { + legacyCC.rendering.destroy(); + } + }; + _proto.resize = function resize(width, height, windowId) { + for (var _iterator = _createForOfIteratorHelperLoose(this._windows), _step; !(_step = _iterator()).done;) { + var window = _step.value; + if (window.swapchain) { + window.resize(width, height); + } + } + }; + _proto.setRenderPipeline = function setRenderPipeline(rppl) { + var internal = legacyCC.internal, + director = legacyCC.director, + rendering = legacyCC.rendering; + if (rppl instanceof DeferredPipeline) { + this._useDeferredPipeline = true; + } + var isCreateDefaultPipeline = false; + if (!rppl) { + rppl = createDefaultPipeline(); + isCreateDefaultPipeline = true; + } + if (!this._useDeferredPipeline || !this.device.hasFeature(Feature.COMPUTE_SHADER)) { + rppl.clusterEnabled = false; + } + rppl.bloomEnabled = false; + if (macro.CUSTOM_PIPELINE_NAME !== '' && rendering && this.usesCustomPipeline) { + this._customPipeline = rendering.createCustomPipeline(); + isCreateDefaultPipeline = true; + this._pipeline = this._customPipeline; + this._pipelineEvent = rppl; + } else { + this._classicPipeline = rppl; + this._pipeline = this._classicPipeline; + this._pipelineEvent = this._classicPipeline; + this._usesCustomPipeline = false; + } + var renderMode = settings.querySettings(Settings.Category.RENDERING, 'renderMode'); + if (renderMode !== LegacyRenderMode.HEADLESS || this._classicPipeline) { + if (!this._pipeline.activate(this._mainWindow.swapchain)) { + if (isCreateDefaultPipeline) { + this._pipeline.destroy(); + } + this._classicPipeline = null; + this._customPipeline = null; + this._pipeline = null; + this._pipelineEvent = null; + return false; + } + } + var scene = director.getScene(); + if (scene) { + scene.globals.activate(); + } + this.onGlobalPipelineStateChanged(); + if (!this._batcher && internal.Batcher2D) { + this._batcher = new internal.Batcher2D(this); + if (!this._batcher.initialize()) { + this.destroy(); + return false; + } + } + return true; + }; + _proto.onGlobalPipelineStateChanged = function onGlobalPipelineStateChanged() { + for (var i = 0; i < this._scenes.length; i++) { + this._scenes[i].onGlobalPipelineStateChanged(); + } + if (this._pipeline.pipelineSceneData.skybox.enabled) { + this._pipeline.pipelineSceneData.skybox.model.onGlobalPipelineStateChanged(); + } + this._pipeline.onGlobalPipelineStateChanged(); + }; + _proto.activeWindow = function activeWindow(window) { + this._curWindow = window; + }; + _proto.resetCumulativeTime = function resetCumulativeTime() { + this._cumulativeTime = 0; + }; + _proto.frameMove = function frameMove(deltaTime) { + var _globalThis$__globalX; + this._frameTime = deltaTime; + ++this._frameCount; + this._cumulativeTime += deltaTime; + this._fpsTime += deltaTime; + if (this._fpsTime > 1.0) { + this._fps = this._frameCount; + this._frameCount = 0; + this._fpsTime = 0.0; + } + if ((_globalThis$__globalX = globalThis.__globalXR) !== null && _globalThis$__globalX !== void 0 && _globalThis$__globalX.isWebXR) { + this._doWebXRFrameMove(); + } else { + this._frameMoveBegin(); + this._frameMoveProcess(); + this._frameMoveEnd(); + } + }; + _proto.createWindow = function createWindow(info) { + var window = this._createWindowFun(this); + window.initialize(this.device, info); + this._windows.push(window); + return window; + }; + _proto.destroyWindow = function destroyWindow(window) { + for (var i = 0; i < this._windows.length; ++i) { + if (this._windows[i] === window) { + window.destroy(); + this._windows.splice(i, 1); + return; + } + } + }; + _proto.destroyWindows = function destroyWindows() { + for (var _iterator2 = _createForOfIteratorHelperLoose(this._windows), _step2; !(_step2 = _iterator2()).done;) { + var window = _step2.value; + window.destroy(); + } + this._windows.length = 0; + }; + _proto.createScene = function createScene(info) { + var scene = this._createSceneFun(this); + scene.initialize(info); + this._scenes.push(scene); + return scene; + }; + _proto.destroyScene = function destroyScene(scene) { + for (var i = 0; i < this._scenes.length; ++i) { + if (this._scenes[i] === scene) { + scene.destroy(); + this._scenes.splice(i, 1); + return; + } + } + }; + _proto.destroyScenes = function destroyScenes() { + for (var _iterator3 = _createForOfIteratorHelperLoose(this._scenes), _step3; !(_step3 = _iterator3()).done;) { + var scene = _step3.value; + scene.destroy(); + } + this._scenes.length = 0; + }; + _proto.createModel = function createModel(ModelCtor) { + var p = this._modelPools.get(ModelCtor); + if (!p) { + this._modelPools.set(ModelCtor, new Pool(function () { + return new ModelCtor(); + }, 10, function (obj) { + return obj.destroy(); + })); + p = this._modelPools.get(ModelCtor); + } + var model = p.alloc(); + model.initialize(); + return model; + }; + _proto.destroyModel = function destroyModel(m) { + var p = this._modelPools.get(m.constructor); + if (p) { + p.free(m); + if (m.scene) { + m.scene.removeModel(m); + } + } else { + warnID(1300, m.constructor.name); + } + m.destroy(); + }; + _proto.createCamera = function createCamera() { + return this._cameraPool.alloc(); + }; + _proto.createLight = function createLight(LightCtor) { + var l = this._lightPools.get(LightCtor); + if (!l) { + this._lightPools.set(LightCtor, new Pool(function () { + return new LightCtor(); + }, 4, function (obj) { + return obj.destroy(); + })); + l = this._lightPools.get(LightCtor); + } + var light = l.alloc(); + light.initialize(); + return light; + }; + _proto.destroyLight = function destroyLight(l) { + if (l.scene) { + switch (l.type) { + case LightType.DIRECTIONAL: + l.scene.removeDirectionalLight(l); + break; + case LightType.SPHERE: + l.scene.removeSphereLight(l); + break; + case LightType.SPOT: + l.scene.removeSpotLight(l); + break; + case LightType.POINT: + l.scene.removePointLight(l); + break; + case LightType.RANGED_DIRECTIONAL: + l.scene.removeRangedDirLight(l); + break; + } + } + l.destroy(); + }; + _proto.recycleLight = function recycleLight(l) { + var p = this._lightPools.get(l.constructor); + if (p) { + p.free(l); + if (l.scene) { + switch (l.type) { + case LightType.DIRECTIONAL: + l.scene.removeDirectionalLight(l); + break; + case LightType.SPHERE: + l.scene.removeSphereLight(l); + break; + case LightType.SPOT: + l.scene.removeSpotLight(l); + break; + case LightType.POINT: + l.scene.removePointLight(l); + break; + case LightType.RANGED_DIRECTIONAL: + l.scene.removeRangedDirLight(l); + break; + } + } + } + }; + _proto._doWebXRFrameMove = function _doWebXRFrameMove() { + var xr = globalThis.__globalXR; + if (!xr) { + return; + } + var windows = this._windows; + var cameraList = this._cameraList; + var viewCount = xr.webXRMatProjs ? xr.webXRMatProjs.length : 1; + if (!xr.webXRWindowMap) { + xr.webXRWindowMap = new Map(); + } + var allcameras = []; + var webxrHmdPoseInfos = xr.webxrHmdPoseInfos; + for (var xrEye = 0; xrEye < viewCount; xrEye++) { + for (var _iterator4 = _createForOfIteratorHelperLoose(windows), _step4; !(_step4 = _iterator4()).done;) { + var window = _step4.value; + allcameras = allcameras.concat(window.cameras); + if (window.swapchain) { + xr.webXRWindowMap.set(window, xrEye); + } + } + if (webxrHmdPoseInfos) { + var cameraPosition = [0, 0, 0]; + for (var i = 0; i < webxrHmdPoseInfos.length; i++) { + var info = webxrHmdPoseInfos[i]; + if (info.code === XRPoseType.VIEW_LEFT && xrEye === XREye.LEFT || info.code === XRPoseType.VIEW_RIGHT && xrEye === XREye.RIGHT) { + cameraPosition[0] = info.position.x; + cameraPosition[1] = info.position.y; + cameraPosition[2] = info.position.z; + break; + } + } + for (var _iterator5 = _createForOfIteratorHelperLoose(allcameras), _step5; !(_step5 = _iterator5()).done;) { + var cam = _step5.value; + if (cam.trackingType !== TrackingType.NO_TRACKING && cam.node) { + var isTrackingRotation = cam.trackingType === TrackingType.ROTATION; + if (isTrackingRotation) { + cameraPosition = [0, 0, 0]; + } + cam.node.setPosition(cameraPosition[0], cameraPosition[1], cameraPosition[2]); + } + } + } + allcameras.length = 0; + this._frameMoveBegin(); + this._frameMoveProcess(); + for (var _i = cameraList.length - 1; _i >= 0; _i--) { + var camera = cameraList[_i]; + var isMismatchedCam = xrEye === XREye.LEFT && camera.cameraType === CameraType.RIGHT_EYE || xrEye === XREye.RIGHT && camera.cameraType === CameraType.LEFT_EYE; + if (isMismatchedCam) { + cameraList.splice(_i, 1); + } + } + this._frameMoveEnd(); + } + }; + _proto._frameMoveBegin = function _frameMoveBegin() { + for (var i = 0; i < this._scenes.length; ++i) { + this._scenes[i].removeBatches(); + } + this._cameraList.length = 0; + }; + _proto._frameMoveProcess = function _frameMoveProcess() { + var director = legacyCC.director; + var windows = this._windows; + var cameraList = this._cameraList; + for (var i = 0; i < windows.length; i++) { + var window = windows[i]; + window.extractRenderCameras(cameraList); + } + if (this._pipeline && cameraList.length > 0) { + this._device.acquire([deviceManager.swapchain]); + var scenes = this._scenes; + var stamp = director.getTotalFrames(); + if (this._batcher) { + this._batcher.update(); + this._batcher.uploadBuffers(); + } + for (var _i2 = 0; _i2 < scenes.length; _i2++) { + scenes[_i2].update(stamp); + } + } + }; + _proto._frameMoveEnd = function _frameMoveEnd() { + var director = legacyCC.director, + Director = legacyCC.Director; + var cameraList = this._cameraList; + if (this._pipeline && cameraList.length > 0) { + director.emit(Director.EVENT_BEFORE_COMMIT); + cameraList.sort(function (a, b) { + return a.priority - b.priority; + }); + for (var i = 0; i < cameraList.length; ++i) { + var _cameraList$i$geometr; + (_cameraList$i$geometr = cameraList[i].geometryRenderer) === null || _cameraList$i$geometr === void 0 ? void 0 : _cameraList$i$geometr.update(); + } + director.emit(Director.EVENT_BEFORE_RENDER); + this._pipeline.render(cameraList); + director.emit(Director.EVENT_AFTER_RENDER); + this._device.present(); + } + if (this._batcher) this._batcher.reset(); + }; + _proto._resizeMaxJointForDS = function _resizeMaxJointForDS() { + var usedUBOVectorCount = Math.max((UBOGlobal.COUNT + UBOCamera.COUNT + UBOShadow.COUNT + UBOLocal.COUNT + UBOWorldBound.COUNT) / 4, 100); + var maxJoints = Math.floor((deviceManager.gfxDevice.capabilities.maxVertexUniformVectors - usedUBOVectorCount) / 3); + maxJoints = maxJoints < 256 ? maxJoints : 256; + localDescriptorSetLayout_ResizeMaxJoints(maxJoints); + }; + _createClass(Root, [{ + key: "device", + get: function get() { + return this._device; + } + }, { + key: "mainWindow", + get: function get() { + return this._mainWindow; + } + }, { + key: "curWindow", + get: function get() { + return this._curWindow; + }, + set: function set(window) { + this._curWindow = window; + } + }, { + key: "tempWindow", + get: function get() { + return this._tempWindow; + }, + set: function set(window) { + this._tempWindow = window; + } + }, { + key: "windows", + get: function get() { + return this._windows; + } + }, { + key: "usesCustomPipeline", + get: function get() { + return this._usesCustomPipeline; + } + }, { + key: "pipeline", + get: function get() { + return this._pipeline; + } + }, { + key: "customPipeline", + get: function get() { + return this._customPipeline; + } + }, { + key: "pipelineEvent", + get: function get() { + return this._pipelineEvent; + } + }, { + key: "batcher2D", + get: function get() { + return this._batcher; + } + }, { + key: "scenes", + get: function get() { + return this._scenes; + } + }, { + key: "debugView", + get: function get() { + return this._debugView; + } + }, { + key: "cumulativeTime", + get: function get() { + return this._cumulativeTime; + } + }, { + key: "frameTime", + get: function get() { + return this._frameTime; + } + }, { + key: "frameCount", + get: function get() { + return this._frameCount; + } + }, { + key: "fps", + get: function get() { + return this._fps; + } + }, { + key: "fixedFPS", + get: function get() { + return this._fixedFPS; + }, + set: function set(fps) { + if (fps > 0) { + this._fixedFPS = fps; + this._fixedFPSFrameTime = 1000.0 / fps; + } else { + this._fixedFPSFrameTime = 0; + } + } + }, { + key: "dataPoolManager", + get: function get() { + return this._dataPoolMgr; + } + }, { + key: "useDeferredPipeline", + get: function get() { + return this._useDeferredPipeline; + } + }, { + key: "cameraList", + get: function get() { + return this._cameraList; + } + }]); + return Root; + }()); + legacyCC.Root = Root; + + CCClass.Attr.setClassAttr(EventHandler, 'target', 'type', 'Object'); + CCClass.Attr.setClassAttr(EventHandler, 'target', 'ctor', Node$1); + + var _cachedArray = new Array(16); + var _currentHovered = null; + var pos = new Vec2(); + var _touchEvents = [NodeEventType.TOUCH_START, NodeEventType.TOUCH_MOVE, NodeEventType.TOUCH_END, NodeEventType.TOUCH_CANCEL]; + var _mouseEvents = [NodeEventType.MOUSE_DOWN, NodeEventType.MOUSE_ENTER, NodeEventType.MOUSE_MOVE, NodeEventType.MOUSE_LEAVE, NodeEventType.MOUSE_UP, NodeEventType.MOUSE_WHEEL]; + var DispatcherEventType; + (function (DispatcherEventType) { + DispatcherEventType[DispatcherEventType["ADD_POINTER_EVENT_PROCESSOR"] = 0] = "ADD_POINTER_EVENT_PROCESSOR"; + DispatcherEventType[DispatcherEventType["REMOVE_POINTER_EVENT_PROCESSOR"] = 1] = "REMOVE_POINTER_EVENT_PROCESSOR"; + DispatcherEventType[DispatcherEventType["MARK_LIST_DIRTY"] = 2] = "MARK_LIST_DIRTY"; + })(DispatcherEventType || (DispatcherEventType = {})); + var NodeEventProcessor = function () { + function NodeEventProcessor(node) { + this.claimedTouchIdList = []; + this.maskList = null; + this.cachedCameraPriority = 0; + this.previousMouseIn = false; + this.bubblingTarget = null; + this.capturingTarget = null; + this.shouldHandleEventMouse = false; + this.shouldHandleEventTouch = false; + this._dispatchingTouch = null; + this._isEnabled = false; + this._node = void 0; + this._node = node; + } + var _proto = NodeEventProcessor.prototype; + _proto.setEnabled = function setEnabled(value, recursive) { + if (recursive === void 0) { + recursive = false; + } + if (this._isEnabled === value) { + return; + } + this._isEnabled = value; + var node = this.node; + var children = node.children; + if (value) { + this._attachMask(); + } + NodeEventProcessor.callbacksInvoker.emit(DispatcherEventType.MARK_LIST_DIRTY); + if (recursive && children.length > 0) { + for (var i = 0; i < children.length; ++i) { + var child = children[i]; + child.eventProcessor.setEnabled(value, true); + } + } + if (this._dispatchingTouch && !this._isEnabled) { + var cancelEvent = new EventTouch([this._dispatchingTouch], true, InputEventType.TOUCH_CANCEL); + cancelEvent.touch = this._dispatchingTouch; + this.dispatchEvent(cancelEvent); + this.claimedTouchIdList.length = 0; + this._dispatchingTouch = null; + } + }; + _proto.reattach = function reattach() { + var _this = this; + var currentMaskList; + this.node.walk(function (node) { + if (!currentMaskList) { + currentMaskList = _this._searchComponentsInParent(NodeEventProcessor._maskComp); + } + node.eventProcessor.maskList = currentMaskList; + }); + }; + _proto.destroy = function destroy() { + if (_currentHovered === this._node) { + _currentHovered = null; + } + if (this.capturingTarget) this.capturingTarget.clear(); + if (this.bubblingTarget) this.bubblingTarget.clear(); + NodeEventProcessor.callbacksInvoker.emit(DispatcherEventType.REMOVE_POINTER_EVENT_PROCESSOR, this); + if (this._dispatchingTouch) { + var cancelEvent = new EventTouch([this._dispatchingTouch], true, InputEventType.TOUCH_CANCEL); + cancelEvent.touch = this._dispatchingTouch; + this.dispatchEvent(cancelEvent); + this._dispatchingTouch = null; + } + }; + _proto.on = function on(type, callback, target, useCapture) { + this._tryEmittingAddEvent(type); + useCapture = !!useCapture; + var invoker; + if (useCapture) { + var _this$capturingTarget; + invoker = (_this$capturingTarget = this.capturingTarget) !== null && _this$capturingTarget !== void 0 ? _this$capturingTarget : this.capturingTarget = this._newCallbacksInvoker(); + } else { + var _this$bubblingTarget; + invoker = (_this$bubblingTarget = this.bubblingTarget) !== null && _this$bubblingTarget !== void 0 ? _this$bubblingTarget : this.bubblingTarget = this._newCallbacksInvoker(); + } + invoker.on(type, callback, target); + return callback; + }; + _proto.once = function once(type, callback, target, useCapture) { + this._tryEmittingAddEvent(type); + useCapture = !!useCapture; + var invoker; + if (useCapture) { + var _this$capturingTarget2; + invoker = (_this$capturingTarget2 = this.capturingTarget) !== null && _this$capturingTarget2 !== void 0 ? _this$capturingTarget2 : this.capturingTarget = this._newCallbacksInvoker(); + } else { + var _this$bubblingTarget2; + invoker = (_this$bubblingTarget2 = this.bubblingTarget) !== null && _this$bubblingTarget2 !== void 0 ? _this$bubblingTarget2 : this.bubblingTarget = this._newCallbacksInvoker(); + } + invoker.on(type, callback, target, true); + return callback; + }; + _proto.off = function off(type, callback, target, useCapture) { + var _invoker; + useCapture = !!useCapture; + var invoker; + if (useCapture) { + invoker = this.capturingTarget; + } else { + invoker = this.bubblingTarget; + } + (_invoker = invoker) === null || _invoker === void 0 ? void 0 : _invoker.off(type, callback, target); + }; + _proto.targetOff = function targetOff(target) { + var _this$capturingTarget3, _this$bubblingTarget3; + (_this$capturingTarget3 = this.capturingTarget) === null || _this$capturingTarget3 === void 0 ? void 0 : _this$capturingTarget3.removeAll(target); + (_this$bubblingTarget3 = this.bubblingTarget) === null || _this$bubblingTarget3 === void 0 ? void 0 : _this$bubblingTarget3.removeAll(target); + if (this.shouldHandleEventTouch && !this._hasTouchListeners()) { + this.shouldHandleEventTouch = false; + } + if (this.shouldHandleEventMouse && !this._hasMouseListeners()) { + this.shouldHandleEventMouse = false; + } + if (!this._hasPointerListeners()) { + NodeEventProcessor.callbacksInvoker.emit(DispatcherEventType.REMOVE_POINTER_EVENT_PROCESSOR, this); + } + }; + _proto.emit = function emit(type, arg0, arg1, arg2, arg3, arg4) { + var _this$bubblingTarget4; + (_this$bubblingTarget4 = this.bubblingTarget) === null || _this$bubblingTarget4 === void 0 ? void 0 : _this$bubblingTarget4.emit(type, arg0, arg1, arg2, arg3, arg4); + }; + _proto.dispatchEvent = function dispatchEvent(event) { + var owner = this.node; + var target; + var i = 0; + event.target = owner; + _cachedArray.length = 0; + this.getCapturingTargets(event.type, _cachedArray); + event.eventPhase = 1; + for (i = _cachedArray.length - 1; i >= 0; --i) { + target = _cachedArray[i]; + if (target.eventProcessor.capturingTarget) { + event.currentTarget = target; + target.eventProcessor.capturingTarget.emit(event.type, event, _cachedArray); + if (event.propagationStopped) { + _cachedArray.length = 0; + return; + } + } + } + _cachedArray.length = 0; + event.eventPhase = 2; + event.currentTarget = owner; + if (this.capturingTarget) { + this.capturingTarget.emit(event.type, event); + } + if (!event.propagationImmediateStopped && this.bubblingTarget) { + this.bubblingTarget.emit(event.type, event); + } + if (!event.propagationStopped && event.bubbles) { + this.getBubblingTargets(event.type, _cachedArray); + event.eventPhase = 3; + for (i = 0; i < _cachedArray.length; ++i) { + target = _cachedArray[i]; + if (target.eventProcessor.bubblingTarget) { + event.currentTarget = target; + target.eventProcessor.bubblingTarget.emit(event.type, event); + if (event.propagationStopped) { + _cachedArray.length = 0; + return; + } + } + } + } + _cachedArray.length = 0; + }; + _proto.hasEventListener = function hasEventListener(type, callback, target) { + var has = false; + if (this.bubblingTarget) { + has = this.bubblingTarget.hasEventListener(type, callback, target); + } + if (!has && this.capturingTarget) { + has = this.capturingTarget.hasEventListener(type, callback, target); + } + return has; + }; + _proto.getCapturingTargets = function getCapturingTargets(type, targets) { + var parent = this._node.parent; + while (parent) { + var _parent$eventProcesso; + if ((_parent$eventProcesso = parent.eventProcessor.capturingTarget) !== null && _parent$eventProcesso !== void 0 && _parent$eventProcesso.hasEventListener(type)) { + targets.push(parent); + } + parent = parent.parent; + } + }; + _proto.getBubblingTargets = function getBubblingTargets(type, targets) { + var parent = this._node.parent; + while (parent) { + var _parent$eventProcesso2; + if ((_parent$eventProcesso2 = parent.eventProcessor.bubblingTarget) !== null && _parent$eventProcesso2 !== void 0 && _parent$eventProcesso2.hasEventListener(type)) { + targets.push(parent); + } + parent = parent.parent; + } + }; + _proto.onUpdatingSiblingIndex = function onUpdatingSiblingIndex() { + NodeEventProcessor.callbacksInvoker.emit(DispatcherEventType.MARK_LIST_DIRTY); + }; + _proto._searchComponentsInParent = function _searchComponentsInParent(ctor) { + var node = this.node; + if (ctor) { + var index = 0; + var list = []; + for (var curr = node; curr && Node$1.isNode(curr); curr = curr.parent, ++index) { + var comp = curr.getComponent(ctor); + if (comp) { + var next = { + index: index, + comp: comp + }; + if (list) { + list.push(next); + } else { + list = [next]; + } + } + } + return list.length > 0 ? list : null; + } + return null; + }; + _proto._attachMask = function _attachMask() { + this.maskList = this._searchComponentsInParent(NodeEventProcessor._maskComp); + }; + _proto._isTouchEvent = function _isTouchEvent(type) { + var index = _touchEvents.indexOf(type); + return index !== -1; + }; + _proto._isMouseEvent = function _isMouseEvent(type) { + var index = _mouseEvents.indexOf(type); + return index !== -1; + }; + _proto._hasTouchListeners = function _hasTouchListeners() { + for (var i = 0; i < _touchEvents.length; ++i) { + var eventType = _touchEvents[i]; + if (this.hasEventListener(eventType)) { + return true; + } + } + return false; + }; + _proto._hasMouseListeners = function _hasMouseListeners() { + for (var i = 0; i < _mouseEvents.length; ++i) { + var eventType = _mouseEvents[i]; + if (this.hasEventListener(eventType)) { + return true; + } + } + return false; + }; + _proto._hasPointerListeners = function _hasPointerListeners() { + var has = this._hasTouchListeners(); + if (has) { + return true; + } + return this._hasMouseListeners(); + }; + _proto._tryEmittingAddEvent = function _tryEmittingAddEvent(typeToAdd) { + var isTouchEvent = this._isTouchEvent(typeToAdd); + var isMouseEvent = this._isMouseEvent(typeToAdd); + if (isTouchEvent) { + this.shouldHandleEventTouch = true; + } else if (isMouseEvent) { + this.shouldHandleEventMouse = true; + } + if ((isTouchEvent || isMouseEvent) && !this._hasPointerListeners()) { + NodeEventProcessor.callbacksInvoker.emit(DispatcherEventType.ADD_POINTER_EVENT_PROCESSOR, this); + } + }; + _proto._newCallbacksInvoker = function _newCallbacksInvoker() { + var _this2 = this; + var callbacksInvoker = new CallbacksInvoker(); + callbacksInvoker._registerOffCallback(function () { + if (_this2.shouldHandleEventTouch && !_this2._hasTouchListeners()) { + _this2.shouldHandleEventTouch = false; + } + if (_this2.shouldHandleEventMouse && !_this2._hasMouseListeners()) { + _this2.shouldHandleEventMouse = false; + } + if (!_this2._hasPointerListeners()) { + NodeEventProcessor.callbacksInvoker.emit(DispatcherEventType.REMOVE_POINTER_EVENT_PROCESSOR, _this2); + } + }); + return callbacksInvoker; + }; + _proto._handleEventMouse = function _handleEventMouse(eventMouse) { + switch (eventMouse.type) { + case InputEventType.MOUSE_DOWN: + return this._handleMouseDown(eventMouse); + case InputEventType.MOUSE_MOVE: + return this._handleMouseMove(eventMouse); + case InputEventType.MOUSE_UP: + return this._handleMouseUp(eventMouse); + case InputEventType.MOUSE_WHEEL: + return this._handleMouseWheel(eventMouse); + default: + return false; + } + }; + _proto._handleMouseDown = function _handleMouseDown(event) { + var node = this._node; + if (!node || !node._uiProps.uiTransformComp) { + return false; + } + event.getLocation(pos); + if (node._uiProps.uiTransformComp.hitTest(pos, event.windowId)) { + event.type = NodeEventType.MOUSE_DOWN; + event.bubbles = true; + node.dispatchEvent(event); + event.propagationStopped = true; + return true; + } + return false; + }; + _proto._handleMouseMove = function _handleMouseMove(event) { + var node = this._node; + if (!node || !node._uiProps.uiTransformComp) { + return false; + } + event.getLocation(pos); + var hit = node._uiProps.uiTransformComp.hitTest(pos, event.windowId); + if (hit) { + if (!this.previousMouseIn) { + if (_currentHovered && _currentHovered !== node) { + event.type = NodeEventType.MOUSE_LEAVE; + _currentHovered.dispatchEvent(event); + _currentHovered.eventProcessor.previousMouseIn = false; + } + _currentHovered = node; + event.type = NodeEventType.MOUSE_ENTER; + node.dispatchEvent(event); + this.previousMouseIn = true; + } + event.type = NodeEventType.MOUSE_MOVE; + event.bubbles = true; + node.dispatchEvent(event); + event.propagationStopped = true; + return true; + } else if (this.previousMouseIn) { + event.type = NodeEventType.MOUSE_LEAVE; + node.dispatchEvent(event); + this.previousMouseIn = false; + _currentHovered = null; + } + return false; + }; + _proto._handleMouseUp = function _handleMouseUp(event) { + var node = this._node; + if (!node || !node._uiProps.uiTransformComp) { + return false; + } + event.getLocation(pos); + if (node._uiProps.uiTransformComp.hitTest(pos, event.windowId)) { + event.type = NodeEventType.MOUSE_UP; + event.bubbles = true; + node.dispatchEvent(event); + event.propagationStopped = true; + return true; + } + return false; + }; + _proto._handleMouseWheel = function _handleMouseWheel(event) { + var node = this._node; + if (!node || !node._uiProps.uiTransformComp) { + return false; + } + event.getLocation(pos); + if (node._uiProps.uiTransformComp.hitTest(pos, event.windowId)) { + event.type = NodeEventType.MOUSE_WHEEL; + event.bubbles = true; + node.dispatchEvent(event); + event.propagationStopped = true; + return true; + } + return false; + }; + _proto._handleEventTouch = function _handleEventTouch(eventTouch) { + switch (eventTouch.type) { + case InputEventType.TOUCH_START: + return this._handleTouchStart(eventTouch); + case InputEventType.TOUCH_MOVE: + return this._handleTouchMove(eventTouch); + case InputEventType.TOUCH_END: + return this._handleTouchEnd(eventTouch); + case InputEventType.TOUCH_CANCEL: + return this._handleTouchCancel(eventTouch); + default: + return false; + } + }; + _proto._handleTouchStart = function _handleTouchStart(event) { + var node = this.node; + if (!node || !node._uiProps.uiTransformComp) { + return false; + } + event.getLocation(pos); + if (node._uiProps.uiTransformComp.hitTest(pos, event.windowId)) { + event.type = NodeEventType.TOUCH_START; + event.bubbles = true; + this._dispatchingTouch = event.touch; + node.dispatchEvent(event); + return true; + } + return false; + }; + _proto._handleTouchMove = function _handleTouchMove(event) { + var node = this.node; + if (!node || !node._uiProps.uiTransformComp) { + return false; + } + event.type = NodeEventType.TOUCH_MOVE; + event.bubbles = true; + this._dispatchingTouch = event.touch; + node.dispatchEvent(event); + return true; + }; + _proto._handleTouchEnd = function _handleTouchEnd(event) { + var node = this.node; + if (!node || !node._uiProps.uiTransformComp) { + return; + } + event.getLocation(pos); + if (node._uiProps.uiTransformComp.hitTest(pos, event.windowId)) { + event.type = NodeEventType.TOUCH_END; + } else { + event.type = NodeEventType.TOUCH_CANCEL; + } + event.bubbles = true; + node.dispatchEvent(event); + this._dispatchingTouch = null; + }; + _proto._handleTouchCancel = function _handleTouchCancel(event) { + var node = this.node; + if (!node || !node._uiProps.uiTransformComp) { + return; + } + event.type = NodeEventType.TOUCH_CANCEL; + event.bubbles = true; + node.dispatchEvent(event); + }; + _createClass(NodeEventProcessor, [{ + key: "isEnabled", + get: function get() { + return this._isEnabled; + } + }, { + key: "node", + get: function get() { + return this._node; + } + }]); + return NodeEventProcessor; + }(); + NodeEventProcessor._maskComp = null; + NodeEventProcessor.callbacksInvoker = new CallbacksInvoker(); + legacyCC.NodeEventProcessor = NodeEventProcessor; + + var _dec$1G, _class$1F; + replaceProperty(Node$1.prototype, 'Node', [{ + name: 'childrenCount', + newName: 'children.length', + customGetter: function customGetter() { + return this.children.length; + } + }]); + replaceProperty(Node$1.prototype, 'Node', [{ + name: 'width', + targetName: 'node.getComponent(UITransform)', + customGetter: function customGetter() { + return this._uiProps.uiTransformComp.width; + }, + customSetter: function customSetter(value) { + this._uiProps.uiTransformComp.width = value; + } + }, { + name: 'height', + targetName: 'node.getComponent(UITransform)', + customGetter: function customGetter() { + return this._uiProps.uiTransformComp.height; + }, + customSetter: function customSetter(value) { + this._uiProps.uiTransformComp.height = value; + } + }, { + name: 'anchorX', + targetName: 'node.getComponent(UITransform)', + customGetter: function customGetter() { + return this._uiProps.uiTransformComp.anchorX; + }, + customSetter: function customSetter(value) { + this._uiProps.uiTransformComp.anchorX = value; + } + }, { + name: 'anchorY', + targetName: 'node.getComponent(UITransform)', + customGetter: function customGetter() { + return this._uiProps.uiTransformComp.anchorY; + }, + customSetter: function customSetter(value) { + this._uiProps.uiTransformComp.anchorY = value; + } + }, { + name: 'getAnchorPoint', + targetName: 'node.getComponent(UITransform)', + customFunction: function customFunction(out) { + if (!out) { + out = new Vec2(); + } + out.set(this._uiProps.uiTransformComp.anchorPoint); + return out; + } + }, { + name: 'setAnchorPoint', + targetName: 'node.getComponent(UITransform)', + customFunction: function customFunction(point, y) { + this._uiProps.uiTransformComp.setAnchorPoint(point, y); + } + }, { + name: 'getContentSize', + targetName: 'node.getComponent(UITransform)', + customFunction: function customFunction(out) { + if (!out) { + out = new Size$1(); + } + out.set(this._uiProps.uiTransformComp.contentSize); + return out; + } + }, { + name: 'setContentSize', + targetName: 'node.getComponent(UITransform)', + customFunction: function customFunction(size, height) { + if (typeof size === 'number') { + this._uiProps.uiTransformComp.setContentSize(size, height); + } else { + this._uiProps.uiTransformComp.setContentSize(size); + } + } + }]); + removeProperty(SceneGlobals.prototype, 'SceneGlobals.prototype', [{ + name: 'aspect' + }, { + name: 'selfShadow' + }, { + name: 'linear' + }, { + name: 'packing' + }, { + name: 'autoAdapt' + }, { + name: 'fixedArea' + }, { + name: 'pcf' + }, { + name: 'bias' + }, { + name: 'normalBias' + }, { + name: 'near' + }, { + name: 'far' + }, { + name: 'shadowDistance' + }, { + name: 'invisibleOcclusionRange' + }, { + name: 'orthoSize' + }, { + name: 'saturation' + }]); + replaceProperty(SceneGlobals.prototype, 'SceneGlobals.prototype', [{ + name: 'distance', + newName: 'planeHeight' + }, { + name: 'normal', + newName: 'planeDirection' + }, { + name: 'size', + newName: 'shadowMapSize' + }]); + removeProperty(Node$1.prototype, 'Node.prototype', [{ + name: 'addLayer' + }, { + name: 'removeLayer' + }]); + replaceProperty(NodeUIProperties.prototype, 'NodeUIProperties', [{ + name: 'opacityDirty', + newName: 'colorDirty' + }]); + removeProperty(Layers, 'Layers', [{ + name: 'All' + }, { + name: 'RaycastMask' + }, { + name: 'check' + }]); + replaceProperty(Layers, 'Layers', [{ + name: 'Default', + newName: 'DEFAULT', + target: Layers.Enum, + targetName: 'Layers.Enum' + }, { + name: 'Always', + newName: 'ALWAYS', + target: Layers.Enum, + targetName: 'Layers.Enum' + }, { + name: 'IgnoreRaycast', + newName: 'IGNORE_RAYCAST', + target: Layers.Enum, + targetName: 'Layers.Enum' + }, { + name: 'Gizmos', + newName: 'GIZMOS', + target: Layers.Enum, + targetName: 'Layers.Enum' + }, { + name: 'Editor', + newName: 'EDITOR', + target: Layers.Enum, + targetName: 'Layers.Enum' + }, { + name: 'UI', + newName: 'UI_3D', + target: Layers.Enum, + targetName: 'Layers.Enum' + }, { + name: 'UI2D', + newName: 'UI_2D', + target: Layers.Enum, + targetName: 'Layers.Enum' + }, { + name: 'SceneGizmo', + newName: 'SCENE_GIZMO', + target: Layers.Enum, + targetName: 'Layers.Enum' + }, { + name: 'makeInclusiveMask', + newName: 'makeMaskInclude', + target: Layers, + targetName: 'Layers' + }, { + name: 'makeExclusiveMask', + newName: 'makeMaskExclude', + target: Layers, + targetName: 'Layers' + }]); + removeProperty(Layers.Enum, 'Layers.Enum', [{ + name: 'ALWAYS' + }]); + removeProperty(Layers.BitMask, 'Layers.BitMask', [{ + name: 'ALWAYS' + }]); + var HideInHierarchy = CCObject.Flags.HideInHierarchy; + var DontSave = CCObject.Flags.DontSave; + var PrivateNode = exports('dD', (_dec$1G = ccclass$t('cc.PrivateNode'), _dec$1G(_class$1F = function (_Node) { + _inheritsLoose(PrivateNode, _Node); + function PrivateNode(name) { + var _this; + _this = _Node.call(this, name) || this; + warnID(12003, _this.name); + _this.hideFlags |= DontSave | HideInHierarchy; + return _this; + } + return PrivateNode; + }(Node$1)) || _class$1F)); + replaceProperty(SystemEventType, 'SystemEventType', ['MOUSE_ENTER', 'MOUSE_LEAVE', 'TRANSFORM_CHANGED', 'SCENE_CHANGED_FOR_PERSISTS', 'SIZE_CHANGED', 'ANCHOR_CHANGED', 'COLOR_CHANGED', 'CHILD_ADDED', 'CHILD_REMOVED', 'PARENT_CHANGED', 'NODE_DESTROYED', 'LAYER_CHANGED', 'SIBLING_ORDER_CHANGED'].map(function (name) { + return { + name: name, + target: Node$1.EventType, + targetName: 'Node.EventType' + }; + })); + replaceProperty(Node$1.EventType, 'Node.EventType', [{ + name: 'DEVICEMOTION', + target: SystemEvent.EventType, + targetName: 'SystemEvent.EventType' + }, { + name: 'KEY_DOWN', + target: SystemEvent.EventType, + targetName: 'SystemEvent.EventType' + }, { + name: 'KEY_UP', + target: SystemEvent.EventType, + targetName: 'SystemEvent.EventType' + }]); + legacyCC.PrivateNode = PrivateNode; + + deprecateModuleExportedName({ + BaseNode: { + newName: 'Node', + since: '3.7.0', + removed: false + } + }); + + function find(path, referenceNode) { + if (!referenceNode) { + var scene = legacyCC.director.getScene(); + if (!scene) { + return null; + } + referenceNode = scene; + } + return referenceNode.getChildByPath(path); + } + legacyCC.find = find; + + var fastRemoveAt = fastRemoveAt$2; + var IsStartCalled = CCObject.Flags.IsStartCalled; + var IsOnEnableCalled$1 = CCObject.Flags.IsOnEnableCalled; + CCObject.Flags.IsEditorOnEnableCalled; + function sortedIndex(array, comp) { + var order = comp.constructor._executionOrder; + var id = comp._id; + var l = 0; + for (var h = array.length - 1, m = h >>> 1; l <= h; m = l + h >>> 1) { + var test = array[m]; + var testOrder = test.constructor._executionOrder; + if (testOrder > order) { + h = m - 1; + } else if (testOrder < order) { + l = m + 1; + } else { + var testId = test._id; + if (testId > id) { + h = m - 1; + } else if (testId < id) { + l = m + 1; + } else { + return m; + } + } + } + return ~l; + } + function stableRemoveInactive(iterator, flagToClear) { + var array = iterator.array; + var next = iterator.i + 1; + while (next < array.length) { + var comp = array[next]; + if (comp.node._activeInHierarchy) { + ++next; + } else { + iterator.removeAt(next); + if (flagToClear) { + comp._objFlags &= ~flagToClear; + } + } + } + } + var LifeCycleInvoker = function () { + function LifeCycleInvoker(invokeFunc) { + this._zero = void 0; + this._neg = void 0; + this._pos = void 0; + this._invoke = void 0; + var Iterator = MutableForwardIterator; + this._zero = new Iterator([]); + this._neg = new Iterator([]); + this._pos = new Iterator([]); + this._invoke = invokeFunc; + } + _createClass(LifeCycleInvoker, [{ + key: "zero", + get: function get() { + return this._zero; + } + }, { + key: "neg", + get: function get() { + return this._neg; + } + }, { + key: "pos", + get: function get() { + return this._pos; + } + }]); + return LifeCycleInvoker; + }(); + LifeCycleInvoker.stableRemoveInactive = stableRemoveInactive; + function compareOrder(a, b) { + return a.constructor._executionOrder - b.constructor._executionOrder; + } + var OneOffInvoker = function (_LifeCycleInvoker) { + _inheritsLoose(OneOffInvoker, _LifeCycleInvoker); + function OneOffInvoker() { + return _LifeCycleInvoker.apply(this, arguments) || this; + } + var _proto = OneOffInvoker.prototype; + _proto.add = function add(comp) { + var order = comp.constructor._executionOrder; + (order === 0 ? this._zero : order < 0 ? this._neg : this._pos).array.push(comp); + }; + _proto.remove = function remove(comp) { + var order = comp.constructor._executionOrder; + (order === 0 ? this._zero : order < 0 ? this._neg : this._pos).fastRemove(comp); + }; + _proto.cancelInactive = function cancelInactive(flagToClear) { + stableRemoveInactive(this._zero, flagToClear); + stableRemoveInactive(this._neg, flagToClear); + stableRemoveInactive(this._pos, flagToClear); + }; + _proto.invoke = function invoke() { + var compsNeg = this._neg; + if (compsNeg.array.length > 0) { + compsNeg.array.sort(compareOrder); + this._invoke(compsNeg); + compsNeg.array.length = 0; + } + this._invoke(this._zero); + this._zero.array.length = 0; + var compsPos = this._pos; + if (compsPos.array.length > 0) { + compsPos.array.sort(compareOrder); + this._invoke(compsPos); + compsPos.array.length = 0; + } + }; + return OneOffInvoker; + }(LifeCycleInvoker); + var ReusableInvoker = function (_LifeCycleInvoker2) { + _inheritsLoose(ReusableInvoker, _LifeCycleInvoker2); + function ReusableInvoker() { + return _LifeCycleInvoker2.apply(this, arguments) || this; + } + var _proto2 = ReusableInvoker.prototype; + _proto2.add = function add(comp) { + var order = comp.constructor._executionOrder; + if (order === 0) { + this._zero.array.push(comp); + } else { + var _array = order < 0 ? this._neg.array : this._pos.array; + var i = sortedIndex(_array, comp); + if (i < 0) { + _array.splice(~i, 0, comp); + } + } + }; + _proto2.remove = function remove(comp) { + var order = comp.constructor._executionOrder; + if (order === 0) { + this._zero.fastRemove(comp); + } else { + var _iterator = order < 0 ? this._neg : this._pos; + var i = sortedIndex(_iterator.array, comp); + if (i >= 0) { + _iterator.removeAt(i); + } + } + }; + _proto2.invoke = function invoke(dt) { + if (this._neg.array.length > 0) { + this._invoke(this._neg, dt); + } + this._invoke(this._zero, dt); + if (this._pos.array.length > 0) { + this._invoke(this._pos, dt); + } + }; + return ReusableInvoker; + }(LifeCycleInvoker); + function createInvokeImplJit(code, useDt, ensureFlag) { + var body = "" + ('var a=it.array;' + 'for(it.i=0;it.i= 0) { + fastRemoveAt(this._deferredComps, index); + return; + } + if (comp.internalStart && !(comp._objFlags & IsStartCalled)) { + this.startInvoker.remove(comp); + } + if (comp.internalUpdate) { + this.updateInvoker.remove(comp); + } + if (comp.internalLateUpdate) { + this.lateUpdateInvoker.remove(comp); + } + }; + _proto3.enableComp = function enableComp(comp, invoker) { + if (!(comp._objFlags & IsOnEnableCalled$1)) { + if (comp.internalOnEnable) { + if (invoker) { + invoker.add(comp); + return; + } else { + comp.internalOnEnable(); + var deactivatedDuringOnEnable = !comp.node.activeInHierarchy; + if (deactivatedDuringOnEnable) { + return; + } + } + } + this._onEnabled(comp); + } + }; + _proto3.disableComp = function disableComp(comp) { + if (comp._objFlags & IsOnEnableCalled$1) { + if (comp.internalOnDisable) { + comp.internalOnDisable(); + } + this._onDisabled(comp); + } + }; + _proto3.startPhase = function startPhase() { + this._updating = true; + this.startInvoker.invoke(); + this._startForNewComps(); + }; + _proto3.updatePhase = function updatePhase(dt) { + this.updateInvoker.invoke(dt); + }; + _proto3.lateUpdatePhase = function lateUpdatePhase(dt) { + this.lateUpdateInvoker.invoke(dt); + this._updating = false; + this._startForNewComps(); + }; + _proto3._startForNewComps = function _startForNewComps() { + if (this._deferredComps.length > 0) { + this._deferredSchedule(); + this.startInvoker.invoke(); + } + }; + _proto3._scheduleImmediate = function _scheduleImmediate(comp) { + if (typeof comp.internalStart === 'function' && !(comp._objFlags & IsStartCalled)) { + this.startInvoker.add(comp); + } + if (typeof comp.internalUpdate === 'function') { + this.updateInvoker.add(comp); + } + if (typeof comp.internalLateUpdate === 'function') { + this.lateUpdateInvoker.add(comp); + } + }; + _proto3._deferredSchedule = function _deferredSchedule() { + var comps = this._deferredComps; + for (var i = 0, len = comps.length; i < len; i++) { + this._scheduleImmediate(comps[i]); + } + comps.length = 0; + }; + return ComponentScheduler; + }(); + + var MAX_POOL_SIZE = 4; + var IsPreloadStarted = CCObject.Flags.IsPreloadStarted; + var IsOnLoadStarted = CCObject.Flags.IsOnLoadStarted; + var IsOnLoadCalled = CCObject.Flags.IsOnLoadCalled; + var IsOnEnableCalled = CCObject.Flags.IsOnEnableCalled; + var Deactivating = CCObject.Flags.Deactivating; + var UnsortedInvoker = function (_LifeCycleInvoker) { + _inheritsLoose(UnsortedInvoker, _LifeCycleInvoker); + function UnsortedInvoker() { + return _LifeCycleInvoker.apply(this, arguments) || this; + } + var _proto = UnsortedInvoker.prototype; + _proto.add = function add(comp) { + this._zero.array.push(comp); + }; + _proto.remove = function remove(comp) { + this._zero.fastRemove(comp); + }; + _proto.cancelInactive = function cancelInactive(flagToClear) { + LifeCycleInvoker.stableRemoveInactive(this._zero, flagToClear); + }; + _proto.invoke = function invoke() { + this._invoke(this._zero); + this._zero.array.length = 0; + }; + return UnsortedInvoker; + }(LifeCycleInvoker); + var invokePreload = createInvokeImplJit('c.__preload();') ; + var invokeOnLoad = createInvokeImplJit("c.onLoad();c._objFlags|=" + IsOnLoadCalled, false, IsOnLoadCalled) ; + var activateTasksPool = new Pool$1(MAX_POOL_SIZE); + activateTasksPool.get = function getActivateTask() { + var task = this._get() || { + preload: new UnsortedInvoker(invokePreload), + onLoad: new OneOffInvoker(invokeOnLoad), + onEnable: new OneOffInvoker(invokeOnEnable) + }; + task.preload.zero.i = -1; + var invoker = task.onLoad; + invoker.zero.i = -1; + invoker.neg.i = -1; + invoker.pos.i = -1; + invoker = task.onEnable; + invoker.zero.i = -1; + invoker.neg.i = -1; + invoker.pos.i = -1; + return task; + }; + function _componentCorrupted(node, comp, index) { + errorID(3817, node.name, index); + console.log('Corrupted component value:', comp); + if (comp) { + node._removeComponent(comp); + } else { + removeAt(node.getWritableComponents(), index); + } + } + var NodeActivator = exports('dk', function () { + function NodeActivator() { + this._activatingStack = void 0; + this.reset(); + } + var _proto2 = NodeActivator.prototype; + _proto2.reset = function reset() { + this._activatingStack = []; + }; + _proto2.activateNode = function activateNode(node, active) { + if (active) { + var task = activateTasksPool.get(); + if (task) { + this._activatingStack.push(task); + this._activateNodeRecursively(node, task.preload, task.onLoad, task.onEnable); + task.preload.invoke(); + task.onLoad.invoke(); + task.onEnable.invoke(); + this._activatingStack.pop(); + activateTasksPool.put(task); + } + } else { + this._deactivateNodeRecursively(node); + var stack = this._activatingStack; + for (var _iterator = _createForOfIteratorHelperLoose(stack), _step; !(_step = _iterator()).done;) { + var lastTask = _step.value; + lastTask.preload.cancelInactive(IsPreloadStarted); + lastTask.onLoad.cancelInactive(IsOnLoadStarted); + lastTask.onEnable.cancelInactive(IsOnEnableCalled); + } + } + node.emit(NodeEventType.ACTIVE_IN_HIERARCHY_CHANGED, node); + }; + _proto2.activateComp = function activateComp(comp, preloadInvoker, onLoadInvoker, onEnableInvoker) { + if (!isValid(comp, true)) { + return; + } + if (!(comp._objFlags & IsPreloadStarted)) { + comp._objFlags |= IsPreloadStarted; + if (comp.internalPreload) { + if (preloadInvoker) { + preloadInvoker.add(comp); + } else { + comp.internalPreload(); + } + } + } + if (!(comp._objFlags & IsOnLoadStarted)) { + comp._objFlags |= IsOnLoadStarted; + if (comp.internalOnLoad) { + if (onLoadInvoker) { + onLoadInvoker.add(comp); + } else { + comp.internalOnLoad(); + comp._objFlags |= IsOnLoadCalled; + } + } else { + comp._objFlags |= IsOnLoadCalled; + } + } + if (comp._enabled) { + { + assertIsTrue(comp.node, getError(3823, comp.uuid, comp.name)); + } + var deactivatedOnLoading = !comp.node.activeInHierarchy; + if (deactivatedOnLoading) { + return; + } + legacyCC.director._compScheduler.enableComp(comp, onEnableInvoker); + } + }; + _proto2.destroyComp = function destroyComp(comp) { + legacyCC.director._compScheduler.disableComp(comp); + if (comp.internalOnDestroy && comp._objFlags & IsOnLoadCalled) { + comp.internalOnDestroy(); + } + }; + _proto2._activateNodeRecursively = function _activateNodeRecursively(node, preloadInvoker, onLoadInvoker, onEnableInvoker) { + if (node._objFlags & Deactivating) { + errorID(3816, node.name); + return; + } + node._setActiveInHierarchy(true); + var originCount = node.components.length; + for (var i = 0; i < originCount; ++i) { + var component = node.components[i]; + if (component instanceof legacyCC.Component) { + this.activateComp(component, preloadInvoker, onLoadInvoker, onEnableInvoker); + } else { + _componentCorrupted(node, component, i); + --i; + --originCount; + } + } + for (var _i = 0, len = node.children.length; _i < len; ++_i) { + var child = node.children[_i]; + if (child.active) { + this._activateNodeRecursively(child, preloadInvoker, onLoadInvoker, onEnableInvoker); + } + } + node._onPostActivated(true); + }; + _proto2._deactivateNodeRecursively = function _deactivateNodeRecursively(node) { + node._objFlags |= Deactivating; + node._setActiveInHierarchy(false); + var originCount = node.components.length; + for (var c = 0; c < originCount; ++c) { + var component = node.components[c]; + if (component._enabled) { + legacyCC.director._compScheduler.disableComp(component); + if (node.activeInHierarchy) { + node._objFlags &= ~Deactivating; + return; + } + } + } + for (var i = 0, len = node.children.length; i < len; ++i) { + var child = node.children[i]; + if (child.activeInHierarchy) { + this._deactivateNodeRecursively(child); + if (node.activeInHierarchy) { + node._objFlags &= ~Deactivating; + return; + } + } + } + node._onPostActivated(false); + node._objFlags &= ~Deactivating; + }; + return NodeActivator; + }()); + + var Destroyed$1 = CCObject.Flags.Destroyed; + var PersistentMask$1 = CCObject.Flags.PersistentMask; + var DEFAULT = CCClass.Attr.DELIMETER + "default"; + var IDENTIFIER_RE = CCClass.IDENTIFIER_RE; + var VAR = 'var '; + var LOCAL_OBJ = 'o'; + var LOCAL_TEMP_OBJ = 't'; + var LOCAL_ARRAY = 'a'; + var LINE_INDEX_OF_NEW_OBJ = 0; + var DEFAULT_MODULE_CACHE = { + 'cc.ClickEvent': false, + 'cc.PrefabInfo': false + }; + var escapeForJS = CCClass.escapeForJS; + var Declaration = function () { + function Declaration(varName, expression) { + this.varName = void 0; + this.expression = void 0; + this.varName = varName; + this.expression = expression; + } + var _proto = Declaration.prototype; + _proto.toString = function toString() { + return VAR + this.varName + "=" + this.expression + ";"; + }; + return Declaration; + }(); + function mergeDeclaration(statement, expression) { + if (expression instanceof Declaration) { + return new Declaration(expression.varName, statement + expression.expression); + } else { + return statement + expression; + } + } + function writeAssignment(codeArray, statement, expression) { + if (Array.isArray(expression)) { + expression[0] = mergeDeclaration(statement, expression[0]); + codeArray.push(expression); + } else { + codeArray.push(mergeDeclaration(statement, expression) + ";"); + } + } + var Assignments = function () { + function Assignments(targetExpression) { + this._exps = void 0; + this._targetExp = void 0; + this._exps = []; + this._targetExp = targetExpression; + } + var _proto2 = Assignments.prototype; + _proto2.append = function append(key, expression) { + this._exps.push([key, expression]); + }; + _proto2.writeCode = function writeCode(codeArray) { + var targetVar; + if (this._exps.length > 1) { + codeArray.push(LOCAL_TEMP_OBJ + "=" + this._targetExp + ";"); + targetVar = LOCAL_TEMP_OBJ; + } else if (this._exps.length === 1) { + targetVar = this._targetExp; + } else { + return; + } + for (var i = 0; i < this._exps.length; i++) { + var pair = this._exps[i]; + writeAssignment(codeArray, targetVar + getPropAccessor(pair[0]) + "=", pair[1]); + } + }; + return Assignments; + }(); + Assignments.pool = void 0; + Assignments.pool = new Pool$1(function (obj) { + obj._exps.length = 0; + obj._targetExp = null; + }, 1); + Assignments.pool.get = function (targetExpression) { + var cache = this._get() || new Assignments(); + cache._targetExp = targetExpression; + return cache; + }; + function getPropAccessor(key) { + return IDENTIFIER_RE.test(key) ? "." + key : "[" + escapeForJS(key) + "]"; + } + var Parser = function () { + function Parser(obj, parent) { + this.parent = void 0; + this.objsToClear_iN$t = void 0; + this.codeArray = void 0; + this.objs = void 0; + this.funcs = void 0; + this.funcModuleCache = void 0; + this.globalVariables = void 0; + this.globalVariableId = void 0; + this.localVariableId = void 0; + this.result = void 0; + this.parent = parent; + this.objsToClear_iN$t = []; + this.codeArray = []; + this.objs = []; + this.funcs = []; + this.funcModuleCache = createMap(); + mixin(this.funcModuleCache, DEFAULT_MODULE_CACHE); + this.globalVariables = []; + this.globalVariableId = 0; + this.localVariableId = 0; + this.codeArray.push(VAR + LOCAL_OBJ + "," + LOCAL_TEMP_OBJ + ";", 'if(R){', LOCAL_OBJ + "=R;", '}else{', LOCAL_OBJ + "=R=new " + this.getFuncModule(obj.constructor, true) + "();", '}'); + obj._iN$t = { + globalVar: 'R' + }; + this.objsToClear_iN$t.push(obj); + this.enumerateObject(this.codeArray, obj); + var globalVariablesDeclaration; + if (this.globalVariables.length > 0) { + globalVariablesDeclaration = VAR + this.globalVariables.join(',') + ";"; + } + var code = flattenCodeArray(['return (function(R){', globalVariablesDeclaration || [], this.codeArray, 'return o;', '})']); + this.result = Function('O', 'F', code)(this.objs, this.funcs); + for (var i = 0, len = this.objsToClear_iN$t.length; i < len; ++i) { + this.objsToClear_iN$t[i]._iN$t = null; + } + this.objsToClear_iN$t.length = 0; + } + var _proto3 = Parser.prototype; + _proto3.getFuncModule = function getFuncModule(func, usedInNew) { + var clsName = getClassName(func); + if (clsName) { + var cache = this.funcModuleCache[clsName]; + if (cache) { + return cache; + } else if (cache === undefined) { + var clsNameIsModule = clsName.indexOf('.') !== -1; + if (clsNameIsModule) { + try { + clsNameIsModule = func === Function("return " + clsName)(); + if (clsNameIsModule) { + this.funcModuleCache[clsName] = clsName; + return clsName; + } + } catch (e) {} + } + } + } + var index = this.funcs.indexOf(func); + if (index < 0) { + index = this.funcs.length; + this.funcs.push(func); + } + var res = "F[" + index + "]"; + if (usedInNew) { + res = "(" + res + ")"; + } + this.funcModuleCache[clsName] = res; + return res; + }; + _proto3.getObjRef = function getObjRef(obj) { + var index = this.objs.indexOf(obj); + if (index < 0) { + index = this.objs.length; + this.objs.push(obj); + } + return "O[" + index + "]"; + }; + _proto3.setValueType = function setValueType(codeArray, defaultValue, srcValue, targetExpression) { + var assignments = Assignments.pool.get(targetExpression); + var fastDefinedProps = defaultValue.constructor.__props__; + if (!fastDefinedProps) { + fastDefinedProps = Object.keys(defaultValue); + } + for (var i = 0; i < fastDefinedProps.length; i++) { + var propName = fastDefinedProps[i]; + var prop = srcValue[propName]; + if (defaultValue[propName] === prop) { + continue; + } + var expression = this.enumerateField(srcValue, propName, prop); + assignments.append(propName, expression); + } + assignments.writeCode(codeArray); + Assignments.pool.put(assignments); + }; + _proto3.enumerateCCClass = function enumerateCCClass(codeArray, obj, klass) { + var props = klass.__values__; + var attrs = CCClass.Attr.getClassAttrs(klass); + for (var p = 0; p < props.length; p++) { + var key = props[p]; + var val = obj[key]; + var defaultValue = attrs[key + DEFAULT]; + if (equalsToDefault(defaultValue, val)) { + continue; + } + if (typeof val === 'object' && val instanceof legacyCC.ValueType) { + defaultValue = CCClass.getDefault(defaultValue); + if (defaultValue && defaultValue.constructor === val.constructor) { + var targetExpression = LOCAL_OBJ + getPropAccessor(key); + this.setValueType(codeArray, defaultValue, val, targetExpression); + continue; + } + } + this.setObjProp(codeArray, obj, key, val); + } + }; + _proto3.instantiateArray = function instantiateArray(value) { + if (value.length === 0) { + return '[]'; + } + var arrayVar = LOCAL_ARRAY + ++this.localVariableId; + var declaration = new Declaration(arrayVar, "new Array(" + value.length + ")"); + var codeArray = [declaration]; + value._iN$t = { + globalVar: '', + source: codeArray + }; + this.objsToClear_iN$t.push(value); + for (var i = 0; i < value.length; ++i) { + var statement = arrayVar + "[" + i + "]="; + var expression = this.enumerateField(value, i, value[i]); + writeAssignment(codeArray, statement, expression); + } + return codeArray; + }; + _proto3.instantiateTypedArray = function instantiateTypedArray(value) { + var type = value.constructor.name; + if (value.length === 0) { + return "new " + type; + } + var arrayVar = LOCAL_ARRAY + ++this.localVariableId; + var declaration = new Declaration(arrayVar, "new " + type + "(" + value.length + ")"); + var codeArray = [declaration]; + value._iN$t = { + globalVar: '', + source: codeArray + }; + this.objsToClear_iN$t.push(value); + for (var i = 0; i < value.length; ++i) { + if (value[i] !== 0) { + var statement = arrayVar + "[" + i + "]="; + writeAssignment(codeArray, statement, value[i]); + } + } + return codeArray; + }; + _proto3.enumerateField = function enumerateField(obj, key, value) { + if (typeof value === 'object' && value) { + var _iN$t = value._iN$t; + if (_iN$t) { + var globalVar = _iN$t.globalVar; + if (!globalVar) { + globalVar = _iN$t.globalVar = "v" + ++this.globalVariableId; + this.globalVariables.push(globalVar); + var line = _iN$t.source[LINE_INDEX_OF_NEW_OBJ]; + _iN$t.source[LINE_INDEX_OF_NEW_OBJ] = mergeDeclaration(globalVar + "=", line); + } + return globalVar; + } else if (ArrayBuffer.isView(value)) { + return this.instantiateTypedArray(value); + } else if (Array.isArray(value)) { + return this.instantiateArray(value); + } else { + return this.instantiateObj(value); + } + } else if (typeof value === 'function') { + return this.getFuncModule(value); + } else if (typeof value === 'string') { + return escapeForJS(value); + } else { + if (key === '_objFlags' && isCCObject(obj)) { + value &= PersistentMask$1; + } + return value; + } + }; + _proto3.setObjProp = function setObjProp(codeArray, obj, key, value) { + var statement = LOCAL_OBJ + getPropAccessor(key) + "="; + var expression = this.enumerateField(obj, key, value); + writeAssignment(codeArray, statement, expression); + }; + _proto3.enumerateObject = function enumerateObject(codeArray, obj) { + var klass = obj.constructor; + if (isCCClassOrFastDefined(klass)) { + this.enumerateCCClass(codeArray, obj, klass); + } else { + for (var key in obj) { + if (!obj.hasOwnProperty(key) || key.charCodeAt(0) === 95 && key.charCodeAt(1) === 95 && key !== '__type__') { + continue; + } + var value = obj[key]; + if (typeof value === 'object' && value && value === obj._iN$t) { + continue; + } + this.setObjProp(codeArray, obj, key, value); + } + } + }; + _proto3.instantiateObj = function instantiateObj(obj) { + if (obj instanceof legacyCC.ValueType) { + return CCClass.getNewValueTypeCode(obj); + } + if (obj instanceof legacyCC.Asset) { + return this.getObjRef(obj); + } + if (obj._objFlags & Destroyed$1) { + return null; + } + var createCode; + var ctor = obj.constructor; + if (isCCClassOrFastDefined(ctor)) { + if (this.parent) { + if (this.parent instanceof legacyCC.Component) { + if (obj instanceof legacyCC.Node || obj instanceof legacyCC.Component) { + return this.getObjRef(obj); + } + } else if (this.parent instanceof legacyCC.Node) { + if (obj instanceof legacyCC.Node) { + if (!obj.isChildOf(this.parent)) { + return this.getObjRef(obj); + } + } else if (obj instanceof legacyCC.Component) { + var _obj$node; + if (!((_obj$node = obj.node) !== null && _obj$node !== void 0 && _obj$node.isChildOf(this.parent))) { + return this.getObjRef(obj); + } + } + } + } + createCode = new Declaration(LOCAL_OBJ, "new " + this.getFuncModule(ctor, true) + "()"); + } else if (ctor === Object) { + createCode = new Declaration(LOCAL_OBJ, '{}'); + } else if (!ctor) { + createCode = new Declaration(LOCAL_OBJ, 'Object.create(null)'); + } else { + return this.getObjRef(obj); + } + var codeArray = [createCode]; + obj._iN$t = { + globalVar: '', + source: codeArray + }; + this.objsToClear_iN$t.push(obj); + this.enumerateObject(codeArray, obj); + return ['(function(){', codeArray, 'return o;})();']; + }; + return Parser; + }(); + function equalsToDefault(def, value) { + if (typeof def === 'function') { + try { + def = def(); + } catch (e) { + return false; + } + } + if (def === value) { + return true; + } + if (def && value && typeof def === 'object' && typeof value === 'object' && def.constructor === value.constructor) { + if (def instanceof legacyCC.ValueType) { + if (def.equals(value)) { + return true; + } + } else if (Array.isArray(def)) { + return def.length === 0 && value.length === 0; + } else if (def.constructor === Object) { + return isEmptyObject(def) && isEmptyObject(value); + } + } + return false; + } + function compile(node) { + var root = node instanceof legacyCC.Node && node; + var parser = new Parser(node, root); + return parser.result; + } + + var _dec$1F, _class$1E, _class2$1r, _initializer$1j, _initializer2$13, _initializer3$O, _class3$y; + var OptimizationPolicy = Enum({ + AUTO: 0, + SINGLE_INSTANCE: 1, + MULTI_INSTANCE: 2 + }); + var Prefab = exports('dl', (_dec$1F = ccclass$t('cc.Prefab'), _dec$1F(_class$1E = (_class2$1r = (_class3$y = function (_Asset) { + _inheritsLoose(Prefab, _Asset); + function Prefab() { + var _this; + _this = _Asset.call(this) || this; + _this.data = _initializer$1j && _initializer$1j(); + _this.optimizationPolicy = _initializer2$13 && _initializer2$13(); + _this.persistent = _initializer3$O && _initializer3$O(); + _this._createFunction = void 0; + _this._instantiatedTimes = void 0; + _this._createFunction = null; + _this._instantiatedTimes = 0; + return _this; + } + var _proto = Prefab.prototype; + _proto.createNode = function createNode(cb) { + var node = legacyCC.instantiate(this); + node.name = this.name; + cb(null, node); + }; + _proto.compileCreateFunction = function compileCreateFunction() { + this._createFunction = compile(this.data); + }; + _proto._doInstantiate = function _doInstantiate(rootToRedirect) { + if (!this.data._prefab) { + warnID(3700); + } + if (!this._createFunction) { + this.compileCreateFunction(); + } + return this._createFunction(rootToRedirect); + }; + _proto._instantiate = function _instantiate() { + var node; + var useJit = false; + { + if (this.optimizationPolicy === OptimizationPolicy.SINGLE_INSTANCE) { + useJit = false; + } else if (this.optimizationPolicy === OptimizationPolicy.MULTI_INSTANCE) { + useJit = true; + } else { + useJit = this._instantiatedTimes + 1 >= Prefab.OptimizationPolicyThreshold; + } + } + if (useJit) { + node = this._doInstantiate(); + this.data._instantiate(node); + } else { + node = this.data._instantiate(); + } + ++this._instantiatedTimes; + return node; + }; + _proto.initDefault = function initDefault(uuid) { + _Asset.prototype.initDefault.call(this, uuid); + this.data = new Node$1(); + this.data.name = '(Missing Node)'; + var prefabInfo = new legacyCC._PrefabInfo(); + prefabInfo.asset = this; + prefabInfo.root = this.data; + this.data._prefab = prefabInfo; + }; + _proto.validate = function validate() { + return !!this.data; + }; + _proto.onLoaded = function onLoaded() { + var rootNode = this.data; + expandNestedPrefabInstanceNode(rootNode); + applyTargetOverrides(rootNode); + }; + return Prefab; + }(Asset), _class3$y.OptimizationPolicy = OptimizationPolicy, _class3$y.OptimizationPolicyThreshold = 3, _class3$y), (_initializer$1j = applyDecoratedInitializer(_class2$1r.prototype, "data", [serializable$9], function () { + return null; + }), _initializer2$13 = applyDecoratedInitializer(_class2$1r.prototype, "optimizationPolicy", [serializable$9], function () { + return OptimizationPolicy.AUTO; + }), _initializer3$O = applyDecoratedInitializer(_class2$1r.prototype, "persistent", [serializable$9], function () { + return false; + })), _class2$1r)) || _class$1E)); + value(Prefab, '_utils', utils); + legacyCC.Prefab = Prefab; + { + obsolete(legacyCC, 'cc._Prefab', 'Prefab'); + } + + var UIRendererManager = function () { + function UIRendererManager() { + this._allRenderers = []; + this._dirtyRenderers = []; + this._dirtyVersion = 0; + } + var _proto = UIRendererManager.prototype; + _proto.addRenderer = function addRenderer(uiRenderer) { + if (uiRenderer._internalId === -1) { + uiRenderer._internalId = this._allRenderers.length; + this._allRenderers.push(uiRenderer); + } + }; + _proto.removeRenderer = function removeRenderer(uiRenderer) { + if (uiRenderer._internalId !== -1) { + { + assert(this._allRenderers[uiRenderer._internalId] === uiRenderer); + } + var id = uiRenderer._internalId; + this._allRenderers[this._allRenderers.length - 1]._internalId = id; + fastRemoveAt$2(this._allRenderers, id); + uiRenderer._internalId = -1; + if (uiRenderer._dirtyVersion === this._dirtyVersion) { + fastRemove(this._dirtyRenderers, uiRenderer); + uiRenderer._dirtyVersion = -1; + } + } + }; + _proto.markDirtyRenderer = function markDirtyRenderer(uiRenderer) { + if (uiRenderer._dirtyVersion !== this._dirtyVersion && uiRenderer._internalId !== -1) { + this._dirtyRenderers.push(uiRenderer); + uiRenderer._dirtyVersion = this._dirtyVersion; + } + }; + _proto.updateAllDirtyRenderers = function updateAllDirtyRenderers() { + var length = this._dirtyRenderers.length; + var dirtyRenderers = this._dirtyRenderers; + for (var i = 0; i < length; i++) { + { + assert(dirtyRenderers[i]._internalId !== -1); + } + dirtyRenderers[i].updateRenderer(); + } + this._dirtyRenderers.length = 0; + this._dirtyVersion++; + }; + return UIRendererManager; + }(); + var uiRendererManager = new UIRendererManager(); + + var ImageFmts = ['.png', '.jpg', '.bmp', '.jpeg', '.gif', '.ico', '.tiff', '.webp', '.image', '.pvr', '.pkm', '.astc']; + var AudioFmts = ['.mp3', '.ogg', '.wav', '.m4a']; + function GetTrue() { + return true; + } + var md5Pipe = { + transformURL: function transformURL(url) { + var uuid = getUuidFromURL(url); + if (!uuid) { + return url; + } + var bundle = bundles.find(function (b) { + return !!b.getAssetInfo(uuid); + }); + if (!bundle) { + return url; + } + var hashValue = ''; + var info = bundle.getAssetInfo(uuid); + if (url.startsWith(bundle.base + bundle.config.nativeBase)) { + hashValue = info.nativeVer || ''; + } else { + hashValue = info.ver || ''; + } + if (!hashValue || url.indexOf(hashValue) !== -1) { + return url; + } + var hashPatchInFolder = false; + if (extname(url) === '.ttf') { + hashPatchInFolder = true; + } + if (hashPatchInFolder) { + var dirname$1 = dirname(url); + var basename$1 = basename(url); + url = dirname$1 + "." + hashValue + "/" + basename$1; + } else { + url = url.replace(/.*[/\\][0-9a-fA-F]{2}[/\\]([0-9a-fA-F-@]{8,})/, function (match, uuid) { + return match + "." + hashValue; + }); + } + return url; + } + }; + var CCLoader = exports('e6', function () { + function CCLoader() { + this._autoReleaseSetting = Object.create(null); + this._parseLoadResArgs = parseLoadResArgs; + } + var _proto = CCLoader.prototype; + _proto.load = function load(res, progressCallback, completeCallback) { + if (completeCallback === undefined) { + if (progressCallback !== undefined) { + completeCallback = progressCallback; + progressCallback = null; + } + } + var requests = Array.isArray(res) ? res : [res]; + for (var i = 0; i < requests.length; i++) { + var _item = requests[i]; + if (typeof _item === 'string') { + requests[i] = { + url: _item, + __isNative__: true + }; + } else { + if (_item.type) { + _item.ext = "." + _item.type; + _item.type = undefined; + } + if (_item.url) { + _item.__isNative__ = true; + } + } + } + var images = []; + var audios = []; + assetManager.loadAny(requests, null, function (finish, total, item) { + if (item.content) { + if (ImageFmts.includes(item.ext)) { + images.push(item.content); + } else if (AudioFmts.includes(item.ext)) { + audios.push(item.content); + } + } + if (progressCallback) { + progressCallback(finish, total, item); + } + }, function (err, _native) { + var out = null; + if (!err) { + _native = Array.isArray(_native) ? _native : [_native]; + var _loop = function _loop(_i) { + var item = _native[_i]; + if (!(item instanceof Asset)) { + var _asset = item; + var _url = requests[_i].url; + if (images.includes(_asset)) { + factory.create(_url, item, '.png', {}, function (err, image) { + _asset = _native[_i] = image; + }); + } else if (audios.includes(_asset)) { + factory.create(_url, item, '.mp3', {}, function (err, audio) { + _asset = _native[_i] = audio; + }); + } + assets.add(_url, _asset); + } + }; + for (var _i = 0; _i < _native.length; _i++) { + _loop(_i); + } + if (_native.length > 1) { + var map = Object.create(null); + _native.forEach(function (asset) { + map[asset._uuid] = asset; + }); + out = { + isCompleted: GetTrue, + _map: map + }; + } else { + out = _native[0]; + } + } + if (completeCallback) { + completeCallback(err, out); + } + }); + }; + _proto.getXMLHttpRequest = function getXMLHttpRequest() { + return new XMLHttpRequest(); + }; + _proto.getItem = function getItem(id) { + return assetManager.assets.has(id) ? { + content: assetManager.assets.get(id) + } : null; + }; + _proto.loadRes = function loadRes(url, type, progressCallback, completeCallback) { + var _this$_parseLoadResAr = this._parseLoadResArgs(type, progressCallback, completeCallback), + _type = _this$_parseLoadResAr.type, + onProgress = _this$_parseLoadResAr.onProgress, + onComplete = _this$_parseLoadResAr.onComplete; + var extname$1 = extname(url); + if (extname$1 && !resources.getInfoWithPath(url, _type)) { + url = url.slice(0, -extname$1.length); + } + resources.load(url, _type, onProgress, onComplete); + }; + _proto.loadResArray = function loadResArray(urls, type, progressCallback, completeCallback) { + var _this$_parseLoadResAr2 = this._parseLoadResArgs(type, progressCallback, completeCallback), + _type = _this$_parseLoadResAr2.type, + onProgress = _this$_parseLoadResAr2.onProgress, + onComplete = _this$_parseLoadResAr2.onComplete; + urls.forEach(function (url, i) { + var extname$1 = extname(url); + if (extname$1 && !resources.getInfoWithPath(url, _type)) { + urls[i] = url.slice(0, -extname$1.length); + } + }); + resources.load(urls, _type, onProgress, onComplete); + }; + _proto.loadResDir = function loadResDir(url, type, progressCallback, completeCallback) { + var _this$_parseLoadResAr3 = this._parseLoadResArgs(type, progressCallback, completeCallback), + _type = _this$_parseLoadResAr3.type, + onProgress = _this$_parseLoadResAr3.onProgress, + onComplete = _this$_parseLoadResAr3.onComplete; + resources.loadDir(url, _type, onProgress, function (err, out) { + var urls = []; + if (!err) { + var infos = resources.getDirWithPath(url, _type); + urls = infos.map(function (info) { + return info.path; + }); + } + if (onComplete) { + onComplete(err, out, urls); + } + }); + }; + _proto.getRes = function getRes(url, type) { + return assets.has(url) ? assets.get(url) : resources.get(url, type); + }; + _proto.getResCount = function getResCount() { + return assets.count; + }; + _proto.getDependsRecursively = function getDependsRecursively(owner) { + if (!owner) { + return []; + } + var uuid = typeof owner === 'string' ? owner : owner._uuid; + return dependUtil.getDepsRecursively(uuid).concat([uuid]); + }; + _proto.addDownloadHandlers = function addDownloadHandlers(extMap) { + var handler = Object.create(null); + var _loop2 = function _loop2() { + var func = extMap[_type2]; + handler["." + _type2] = function (url, options, onComplete) { + func({ + url: url + }, onComplete); + }; + }; + for (var _type2 in extMap) { + _loop2(); + } + downloader$1.register(handler); + }; + _proto.addLoadHandlers = function addLoadHandlers(extMap) { + var handler = Object.create(null); + var _loop3 = function _loop3() { + var func = extMap[_type3]; + handler["." + _type3] = function (file, options, onComplete) { + func({ + content: file + }, onComplete); + }; + }; + for (var _type3 in extMap) { + _loop3(); + } + parser.register(handler); + }; + _proto.release = function release(asset) { + if (Array.isArray(asset)) { + for (var i = 0; i < asset.length; i++) { + var key = asset[i]; + if (typeof key === 'string') { + key = assets.get(key); + } + assetManager.releaseAsset(key); + } + } else if (asset) { + if (typeof asset === 'string') { + asset = assets.get(asset); + } + assetManager.releaseAsset(asset); + } + }; + _proto.releaseAsset = function releaseAsset(asset) { + assetManager.releaseAsset(asset); + }; + _proto.releaseRes = function releaseRes(res, type) { + resources.release(res, type); + }; + _proto.releaseAll = function releaseAll() { + assetManager.releaseAll(); + assets.clear(); + }; + _proto.removeItem = function removeItem(id) { + return !!assets.remove(id); + }; + _proto.setAutoRelease = function setAutoRelease(asset, autoRelease) { + if (typeof asset === 'object') { + asset = asset._uuid; + } + this._autoReleaseSetting[asset] = !!autoRelease; + }; + _proto.setAutoReleaseRecursively = function setAutoReleaseRecursively(asset, autoRelease) { + if (typeof asset === 'object') { + asset = asset._uuid; + } + autoRelease = !!autoRelease; + this._autoReleaseSetting[asset] = autoRelease; + var depends = dependUtil.getDepsRecursively(asset); + for (var i = 0; i < depends.length; i++) { + this._autoReleaseSetting[depends[i]] = autoRelease; + } + }; + _proto.isAutoRelease = function isAutoRelease(asset) { + if (typeof asset === 'object') { + asset = asset._uuid; + } + return !!this._autoReleaseSetting[asset]; + }; + _createClass(CCLoader, [{ + key: "onProgress", + set: function set(val) { + setDefaultProgressCallback(val); + } + }, { + key: "_cache", + get: function get() { + if (assets instanceof Cache) { + return assets.map; + } else { + var map = {}; + assets.forEach(function (val, key) { + map[key] = val; + }); + return map; + } + } + }, { + key: "md5Pipe", + get: function get() { + return md5Pipe; + } + }, { + key: "downloader", + get: function get() { + return downloader$1; + } + }, { + key: "loader", + get: function get() { + return assetManager.parser; + } + }]); + return CCLoader; + }()); + var loader = exports('e7', new CCLoader()); + var AssetLibrary = exports('e8', { + init: function init(options) { + options.importBase = options.libraryPath; + options.nativeBase = options.rawAssetsBase ; + assetManager.init(options); + if (options.rawAssets) { + resources.init({ + base: '', + deps: [], + scenes: {}, + redirect: [], + debug: true, + packs: {}, + types: [], + versions: { + "import": [], + "native": [] + }, + name: BuiltinBundleName.RESOURCES, + importBase: options.importBase, + nativeBase: options.nativeBase, + paths: options.rawAssets.assets, + uuids: Object.keys(options.rawAssets.assets), + extensionMap: {} + }); + } + }, + loadAsset: function loadAsset(uuid, callback, options) { + assetManager.loadAny(uuid, callback); + } + }); + var url = exports('e9', {}); + replaceProperty(url, 'url', [{ + name: 'normalize', + target: assetManager.utils, + targetName: 'assetManager.utils', + newName: 'normalize' + }, { + name: 'raw', + targetName: 'Asset.prototype', + newName: 'nativeUrl', + customFunction: function customFunction(url) { + if (url.startsWith('resources/')) { + return transform({ + path: changeExtname(url.substr(10)), + bundle: BuiltinBundleName.RESOURCES, + __isNative__: true, + ext: extname(url) + }); + } + return ''; + } + }]); + removeProperty(AssetLibrary, 'AssetLibrary', [{ + name: 'getLibUrlNoExt', + suggest: 'AssetLibrary.getLibUrlNoExt was removed, if you want to transform url, please use assetManager.utils.getUrlWithUuid instead' + }, { + name: 'queryAssetInfo', + suggest: 'AssetLibrary.queryAssetInfo was removed' + }]); + removeProperty(loader, 'loader', [{ + name: 'releaseResDir', + suggest: 'loader.releaseResDir was removed, please use assetManager.releaseAsset instead' + }, { + name: 'flowInDeps', + suggest: 'loader.flowInDeps was removed' + }, { + name: 'assetLoader', + suggest: 'loader.assetLoader was removed, assetLoader and md5Pipe were merged into assetManager.transformPipeline' + }]); + replaceProperty(legacyCC, 'cc', [{ + name: 'loader', + newName: 'assetManager', + logTimes: 1, + customGetter: function customGetter() { + return loader; + } + }, { + name: 'AssetLibrary', + newName: 'assetManager', + logTimes: 1, + customGetter: function customGetter() { + return AssetLibrary; + } + }, { + name: 'Pipeline', + target: AssetManager, + targetName: 'AssetManager', + newName: 'Pipeline', + logTimes: 1 + }, { + name: 'url', + targetName: 'assetManager', + newName: 'utils', + logTimes: 1, + customGetter: function customGetter() { + return url; + } + }]); + removeProperty(legacyCC, 'cc', [{ + name: 'LoadingItems', + suggest: getError(1400, 'LoadingItems', 'AssetManager.Task') + }]); + replaceProperty(macro, 'macro', [{ + name: 'DOWNLOAD_MAX_CONCURRENT', + target: downloader$1, + targetName: 'assetManager.downloader', + newName: 'maxConcurrency' + }]); + var _autoRelease = releaseManager._autoRelease; + releaseManager._autoRelease = function (oldScene, newScene, persistNodes) { + _autoRelease.call(releaseManager, oldScene, newScene, persistNodes); + var releaseSettings = loader._autoReleaseSetting; + var keys = Object.keys(releaseSettings); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (releaseSettings[key] === true) { + var _asset2 = assets.get(key); + if (_asset2) { + releaseManager.tryRelease(_asset2); + } + } + } + }; + + var Director = exports('dJ', function (_EventTarget) { + _inheritsLoose(Director, _EventTarget); + function Director() { + var _this; + _this = _EventTarget.call(this) || this; + _this._compScheduler = void 0; + _this._nodeActivator = void 0; + _this._invalid = void 0; + _this._paused = void 0; + _this._root = void 0; + _this._loadingScene = void 0; + _this._scene = void 0; + _this._totalFrames = void 0; + _this._scheduler = void 0; + _this._systems = void 0; + _this._persistRootNodes = {}; + _this._invalid = false; + _this._paused = false; + _this._root = null; + _this._loadingScene = ''; + _this._scene = null; + _this._totalFrames = 0; + _this._scheduler = new Scheduler(); + _this._compScheduler = new ComponentScheduler(); + _this._nodeActivator = new NodeActivator(); + _this._systems = []; + return _this; + } + var _proto = Director.prototype; + _proto.calculateDeltaTime = function calculateDeltaTime(now) {}; + _proto.end = function end() { + var _this2 = this; + this.once(Director.EVENT_END_FRAME, function () { + _this2.purgeDirector(); + }); + }; + _proto.pause = function pause() { + if (this._paused) { + return; + } + this._paused = true; + }; + _proto.purgeDirector = function purgeDirector() { + this._scheduler.unscheduleAll(); + this._compScheduler.unscheduleAll(); + this._nodeActivator.reset(); + { + if (isValid(this._scene)) { + this._scene.destroy(); + } + this._scene = null; + } + this.stopAnimation(); + assetManager.releaseAll(); + }; + _proto.reset = function reset() { + var _this$getScene; + this.purgeDirector(); + for (var id in this._persistRootNodes) { + this.removePersistRootNode(this._persistRootNodes[id]); + } + (_this$getScene = this.getScene()) === null || _this$getScene === void 0 ? void 0 : _this$getScene.destroy(); + this.emit(Director.EVENT_RESET); + this.startAnimation(); + }; + _proto.runSceneImmediate = function runSceneImmediate(scene, onBeforeLoadScene, onLaunched) { + var _this3 = this; + if (scene instanceof SceneAsset) scene = scene.scene; + assertID(scene instanceof Scene, 1216); + { + console.time('InitScene'); + } + scene._load(); + { + console.timeEnd('InitScene'); + } + { + console.time('AttachPersist'); + } + var persistNodeList = Object.keys(this._persistRootNodes).map(function (x) { + return _this3._persistRootNodes[x]; + }); + for (var i = 0; i < persistNodeList.length; i++) { + var node = persistNodeList[i]; + node.emit(Node$1.EventType.SCENE_CHANGED_FOR_PERSISTS, scene.renderScene); + var existNode = scene.uuid === node._originalSceneId && scene.getChildByUuid(node.uuid); + if (existNode) { + var index = existNode.getSiblingIndex(); + node.hideFlags &= ~CCObject.Flags.DontSave; + node.hideFlags |= CCObject.Flags.DontSave & existNode.hideFlags; + existNode._destroyImmediate(); + scene.insertChild(node, index); + } else { + node.hideFlags |= CCObject.Flags.DontSave; + node.parent = scene; + } + } + { + console.timeEnd('AttachPersist'); + } + var oldScene = this._scene; + { + console.time('Destroy'); + } + if (isValid(oldScene)) { + oldScene.destroy(); + } + { + { + console.time('AutoRelease'); + } + releaseManager._autoRelease(oldScene, scene, this._persistRootNodes); + { + console.timeEnd('AutoRelease'); + } + } + this._scene = null; + CCObject._deferredDestroy(); + { + console.timeEnd('Destroy'); + } + if (onBeforeLoadScene) { + onBeforeLoadScene(); + } + this.emit(Director.EVENT_BEFORE_SCENE_LAUNCH, scene); + this._scene = scene; + { + console.time('Activate'); + } + scene._activate(); + { + console.timeEnd('Activate'); + } + if (this._root) { + this._root.resetCumulativeTime(); + } + this.startAnimation(); + if (onLaunched) { + onLaunched(null, scene); + } + this.emit(Director.EVENT_AFTER_SCENE_LAUNCH, scene); + }; + _proto.runScene = function runScene(scene, onBeforeLoadScene, onLaunched) { + var _this4 = this; + if (scene instanceof SceneAsset) scene = scene.scene; + assertID(Boolean(scene), 1205); + assertID(scene instanceof Scene, 1216); + this.once(Director.EVENT_END_FRAME, function () { + _this4.runSceneImmediate(scene, onBeforeLoadScene, onLaunched); + }); + }; + _proto.loadScene = function loadScene(sceneName, onLaunched, onUnloaded) { + var _this5 = this; + if (this._loadingScene) { + warnID(1208, sceneName, this._loadingScene); + return false; + } + var bundle = assetManager.bundles.find(function (bundle) { + return !!bundle.getSceneInfo(sceneName); + }); + if (bundle) { + this.emit(Director.EVENT_BEFORE_SCENE_LOADING, sceneName); + this._loadingScene = sceneName; + console.time("LoadScene " + sceneName); + bundle.loadScene(sceneName, function (err, scene) { + console.timeEnd("LoadScene " + sceneName); + _this5._loadingScene = ''; + if (err) { + error(err); + if (onLaunched) { + onLaunched(err); + } + } else { + _this5.runSceneImmediate(scene, onUnloaded, onLaunched); + } + }); + return true; + } else { + errorID(1209, sceneName); + return false; + } + }; + _proto.preloadScene = function preloadScene(sceneName, onProgress, onLoaded) { + var bundle = assetManager.bundles.find(function (bundle) { + return !!bundle.getSceneInfo(sceneName); + }); + if (bundle) { + bundle.preloadScene(sceneName, null, onProgress, onLoaded); + } else { + var _err = "Can not preload the scene \"" + sceneName + "\" because it is not in the build settings."; + if (onLoaded) { + onLoaded(new Error(_err)); + } + error("preloadScene: " + _err); + } + }; + _proto.resume = function resume() { + if (!this._paused) { + return; + } + this._paused = false; + }; + _proto.getScene = function getScene() { + return this._scene; + }; + _proto.getDeltaTime = function getDeltaTime() { + return legacyCC.game.deltaTime; + }; + _proto.getTotalTime = function getTotalTime() { + return legacyCC.game.totalTime; + }; + _proto.getCurrentTime = function getCurrentTime() { + return legacyCC.game.frameStartTime; + }; + _proto.getTotalFrames = function getTotalFrames() { + return this._totalFrames; + }; + _proto.isPaused = function isPaused() { + return this._paused; + }; + _proto.getScheduler = function getScheduler() { + return this._scheduler; + }; + _proto.setScheduler = function setScheduler(scheduler) { + if (this._scheduler !== scheduler) { + this.unregisterSystem(this._scheduler); + this._scheduler = scheduler; + this.registerSystem(Scheduler.ID, scheduler, 200); + } + }; + _proto.registerSystem = function registerSystem(name, sys, priority) { + sys.id = name; + sys.priority = priority; + this._systems.push(sys); + this._systems.sort(System.sortByPriority); + }; + _proto.unregisterSystem = function unregisterSystem(sys) { + fastRemove(this._systems, sys); + this._systems.sort(System.sortByPriority); + }; + _proto.getSystem = function getSystem(name) { + return this._systems.find(function (sys) { + return sys.id === name; + }); + }; + _proto.getAnimationManager = function getAnimationManager() { + return this.getSystem(legacyCC.AnimationManager.ID); + }; + _proto.startAnimation = function startAnimation() { + this._invalid = false; + }; + _proto.stopAnimation = function stopAnimation() { + this._invalid = true; + }; + _proto.mainLoop = function mainLoop(now) { + var dt; + { + dt = legacyCC.game._calculateDT(now); + } + this.tick(dt); + }; + _proto.tick = function tick(dt) { + if (!this._invalid) { + this.emit(Director.EVENT_BEGIN_FRAME); + { + input._frameDispatchEvents(); + } + if (!this._paused) { + this.emit(Director.EVENT_BEFORE_UPDATE); + this._compScheduler.startPhase(); + this._compScheduler.updatePhase(dt); + for (var i = 0; i < this._systems.length; ++i) { + this._systems[i].update(dt); + } + this._compScheduler.lateUpdatePhase(dt); + this.emit(Director.EVENT_AFTER_UPDATE); + CCObject._deferredDestroy(); + for (var _i = 0; _i < this._systems.length; ++_i) { + this._systems[_i].postUpdate(dt); + } + } + this.emit(Director.EVENT_BEFORE_DRAW); + uiRendererManager.updateAllDirtyRenderers(); + this._root.frameMove(dt); + this.emit(Director.EVENT_AFTER_DRAW); + Node$1.resetHasChangedFlags(); + Node$1.clearNodeArray(); + scalableContainerManager.update(dt); + this.emit(Director.EVENT_END_FRAME); + this._totalFrames++; + } + }; + _proto.buildRenderPipeline = function buildRenderPipeline() { + if (this._root) { + this._root.customPipeline.beginSetup(); + var builder = legacyCC.rendering.getCustomPipeline(macro.CUSTOM_PIPELINE_NAME); + builder.setup(this._root.cameraList, this._root.customPipeline); + this._root.customPipeline.endSetup(); + } + }; + _proto.setupRenderPipelineBuilder = function setupRenderPipelineBuilder() { + if (macro.CUSTOM_PIPELINE_NAME !== '' && legacyCC.rendering && this._root && this._root.usesCustomPipeline) { + this.on(Director.EVENT_BEFORE_RENDER, this.buildRenderPipeline, this); + } + }; + _proto.init = function init() { + this._totalFrames = 0; + this._paused = false; + this.registerSystem(Scheduler.ID, this._scheduler, 200); + this._root = new Root(deviceManager.gfxDevice); + var rootInfo = {}; + this._root.initialize(rootInfo); + this.setupRenderPipelineBuilder(); + for (var i = 0; i < this._systems.length; i++) { + this._systems[i].init(); + } + this.emit(Director.EVENT_INIT); + }; + _proto.addPersistRootNode = function addPersistRootNode(node) { + if (!Node$1.isNode(node) || !node.uuid) { + warnID(3800); + return; + } + var id = node.uuid; + if (!this._persistRootNodes[id]) { + var _scene = this._scene; + if (isValid(_scene)) { + if (!node.parent) { + node.parent = _scene; + node._originalSceneId = _scene.uuid; + } else if (!(node.parent instanceof Scene)) { + warnID(3801); + return; + } else if (node.parent !== _scene) { + warnID(3802); + return; + } else { + node._originalSceneId = _scene.uuid; + } + } + this._persistRootNodes[id] = node; + node._persistNode = true; + releaseManager._addPersistNodeRef(node); + } + }; + _proto.removePersistRootNode = function removePersistRootNode(node) { + var id = node.uuid || ''; + if (node === this._persistRootNodes[id]) { + delete this._persistRootNodes[id]; + node._persistNode = false; + node._originalSceneId = ''; + releaseManager._removePersistNodeRef(node); + } + }; + _proto.isPersistRootNode = function isPersistRootNode(node) { + return !!node._persistNode; + }; + _createClass(Director, [{ + key: "root", + get: function get() { + return this._root; + } + }]); + return Director; + }(EventTarget)); + Director.EVENT_INIT = 'director_init'; + Director.EVENT_RESET = 'director_reset'; + Director.EVENT_BEFORE_SCENE_LOADING = 'director_before_scene_loading'; + Director.EVENT_BEFORE_SCENE_LAUNCH = 'director_before_scene_launch'; + Director.EVENT_AFTER_SCENE_LAUNCH = 'director_after_scene_launch'; + Director.EVENT_BEFORE_UPDATE = 'director_before_update'; + Director.EVENT_AFTER_UPDATE = 'director_after_update'; + Director.EVENT_BEFORE_DRAW = 'director_before_draw'; + Director.EVENT_AFTER_DRAW = 'director_after_draw'; + Director.EVENT_BEFORE_COMMIT = 'director_before_commit'; + Director.EVENT_BEFORE_RENDER = 'director_before_render'; + Director.EVENT_AFTER_RENDER = 'director_after_render'; + Director.EVENT_BEFORE_PHYSICS = 'director_before_physics'; + Director.EVENT_AFTER_PHYSICS = 'director_after_physics'; + Director.EVENT_BEGIN_FRAME = 'director_begin_frame'; + Director.EVENT_END_FRAME = 'director_end_frame'; + Director.instance = void 0; + legacyCC.Director = Director; + var director = exports('dK', Director.instance = legacyCC.director = new Director()); + + function findCanvas() { + var frame = document.querySelector('#GameDiv'); + var container = document.querySelector('#Cocos3dGameContainer'); + var canvas = document.querySelector('#GameCanvas'); + return { + frame: frame, + container: container, + canvas: canvas + }; + } + function loadJsFile(path) { + return new Promise(function (resolve, reject) { + var err; + function windowErrorListener(evt) { + if (evt.filename === path) { + err = evt.error; + } + } + window.addEventListener('error', windowErrorListener); + var script = document.createElement('script'); + script.charset = 'utf-8'; + script.async = true; + script.crossOrigin = 'anonymous'; + script.addEventListener('error', function () { + window.removeEventListener('error', windowErrorListener); + reject(Error("Error loading " + path)); + }); + script.addEventListener('load', function () { + window.removeEventListener('error', windowErrorListener); + document.head.removeChild(script); + if (err) { + reject(err); + } else { + resolve(); + } + }); + script.src = path.replace('#', '%23'); + document.head.appendChild(script); + }); + } + + var FRAME_RESET_TIME = 2000; + var Pacer = function () { + function Pacer() { + var _this = this; + this._stHandle = 0; + this._onTick = null; + this._targetFrameRate = 60; + this._frameTime = 0; + this._startTime = 0; + this._isPlaying = false; + this._frameCount = 0; + this._callback = null; + this._rAF = void 0; + this._cAF = void 0; + this._handleRAF = function () { + var elapseTime = performance.now() - _this._startTime; + var elapseFrame = Math.floor(elapseTime / _this._frameTime); + if (elapseFrame < _this._frameCount) { + _this._rAF.call(window, _this._handleRAF); + } else { + _this._frameCount++; + if (_this._callback) { + _this._callback(); + } + } + if (performance.now() - _this._startTime > FRAME_RESET_TIME) { + _this._startTime = performance.now(); + _this._frameCount = 0; + } + }; + this._frameTime = 1000 / this._targetFrameRate; + this._rAF = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame; + this._cAF = window.cancelAnimationFrame || window.cancelRequestAnimationFrame || window.msCancelRequestAnimationFrame || window.mozCancelRequestAnimationFrame || window.oCancelRequestAnimationFrame || window.webkitCancelRequestAnimationFrame || window.msCancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.ocancelAnimationFrame; + } + var _proto = Pacer.prototype; + _proto.start = function start() { + var _globalThis$__globalX, + _this2 = this; + if (this._isPlaying) return; + var recordStartTime = this._rAF === undefined || ((_globalThis$__globalX = globalThis.__globalXR) === null || _globalThis$__globalX === void 0 ? void 0 : _globalThis$__globalX.isWebXR); + var updateCallback = function updateCallback() { + if (recordStartTime) _this2._startTime = performance.now(); + if (_this2._isPlaying) { + _this2._stHandle = _this2._stTime(updateCallback); + } + if (_this2._onTick) { + _this2._onTick(); + } + }; + this._startTime = performance.now(); + this._stHandle = this._stTime(updateCallback); + this._isPlaying = true; + this._frameCount = 0; + }; + _proto.stop = function stop() { + if (!this._isPlaying) return; + this._ctTime(this._stHandle); + this._stHandle = 0; + this._isPlaying = false; + this._frameCount = 0; + }; + _proto._stTime = function _stTime(callback) { + var _globalThis$__globalX2; + if (this._rAF === undefined || (_globalThis$__globalX2 = globalThis.__globalXR) !== null && _globalThis$__globalX2 !== void 0 && _globalThis$__globalX2.isWebXR) { + var currTime = performance.now(); + var elapseTime = Math.max(0, currTime - this._startTime); + var timeToCall = Math.max(0, this._frameTime - elapseTime); + return setTimeout(callback, timeToCall); + } + this._callback = callback; + return this._rAF.call(window, this._handleRAF); + }; + _proto._ctTime = function _ctTime(id) { + var _globalThis$__globalX3; + if (this._cAF === undefined || (_globalThis$__globalX3 = globalThis.__globalXR) !== null && _globalThis$__globalX3 !== void 0 && _globalThis$__globalX3.isWebXR) { + clearTimeout(id); + } else if (id) { + this._cAF.call(window, id); + } + }; + _createClass(Pacer, [{ + key: "targetFrameRate", + get: function get() { + return this._targetFrameRate; + }, + set: function set(val) { + if (this._targetFrameRate !== val) { + assertIsTrue(val > 0); + this._targetFrameRate = val; + this._frameTime = 1000 / this._targetFrameRate; + if (this._isPlaying) { + this.stop(); + this.start(); + } + } + } + }, { + key: "onTick", + get: function get() { + return this._onTick; + }, + set: function set(val) { + this._onTick = val; + } + }]); + return Pacer; + }(); + + markAsWarning(RenderPipeline.prototype, 'RenderPipeline.prototype', [{ + name: 'geometryRenderer', + suggest: 'please use camera.geometryRenderer instead.' + }]); + + var v2_0 = new Vec2(); + var SplashScreen = function () { + var _proto = SplashScreen.prototype; + _proto.init = function init() { + var _settings$querySettin, + _settings$querySettin2, + _settings$querySettin3, + _settings$querySettin4, + _settings$querySettin5, + _settings$querySettin6, + _this = this; + this.settings = { + displayRatio: (_settings$querySettin = settings.querySettings(Settings.Category.SPLASH_SCREEN, 'displayRatio')) !== null && _settings$querySettin !== void 0 ? _settings$querySettin : 0.4, + totalTime: (_settings$querySettin2 = settings.querySettings(Settings.Category.SPLASH_SCREEN, 'totalTime')) !== null && _settings$querySettin2 !== void 0 ? _settings$querySettin2 : 3000, + watermarkLocation: (_settings$querySettin3 = settings.querySettings(Settings.Category.SPLASH_SCREEN, 'watermarkLocation')) !== null && _settings$querySettin3 !== void 0 ? _settings$querySettin3 : 'default', + autoFit: (_settings$querySettin4 = settings.querySettings(Settings.Category.SPLASH_SCREEN, 'autoFit')) !== null && _settings$querySettin4 !== void 0 ? _settings$querySettin4 : true, + logo: (_settings$querySettin5 = settings.querySettings(Settings.Category.SPLASH_SCREEN, 'logo')) !== null && _settings$querySettin5 !== void 0 ? _settings$querySettin5 : undefined, + background: (_settings$querySettin6 = settings.querySettings(Settings.Category.SPLASH_SCREEN, 'background')) !== null && _settings$querySettin6 !== void 0 ? _settings$querySettin6 : undefined + }; + this._curTime = 0; + if (this.settings.totalTime <= 0 || this.settings.logo === undefined || this.settings.background === undefined) { + this.settings.totalTime = 0; + } else { + this.device = legacyCC.director.root.device; + this.swapchain = legacyCC.director.root.mainWindow.swapchain; + this.preInit(); + this.initLayout(); + if (this.settings.logo.type === 'default') { + this.initWaterMark(); + } + var bgPromise = Promise.resolve(); + var logoPromise = Promise.resolve(); + if (this.settings.background.type === 'custom') { + bgPromise = new Promise(function (resolve, reject) { + _this.bgImage = new ccwindow.Image(); + _this.bgImage.onload = function () { + _this.initBG(); + resolve(); + }; + _this.bgImage.onerror = function () { + reject(); + }; + _this.bgImage.src = _this.settings.background.base64; + }); + } + if (this.settings.logo.type !== 'none') { + logoPromise = new Promise(function (resolve, reject) { + _this.logoImage = new ccwindow.Image(); + _this.logoImage.onload = function () { + _this.initLogo(); + resolve(); + }; + _this.logoImage.onerror = function () { + reject(); + }; + _this.logoImage.src = _this.settings.logo.base64; + }); + } + return Promise.all([bgPromise, logoPromise]); + } + return Promise.resolve([]); + }; + _proto.preInit = function preInit() { + var _this$settings$backgr; + var clearColor = (_this$settings$backgr = this.settings.background) === null || _this$settings$backgr === void 0 ? void 0 : _this$settings$backgr.color; + this.clearColors = clearColor ? [new Color(clearColor.x, clearColor.y, clearColor.z, clearColor.w)] : [new Color(0, 0, 0, 1)]; + var device = this.device, + swapchain = this.swapchain; + this.renderArea = new Rect(0, 0, swapchain.width, swapchain.height); + this.cmdBuff = device.commandBuffer; + var verts = new Float32Array([0.5, 0.5, 1, 0, -0.5, 0.5, 0, 0, 0.5, -0.5, 1, 1, -0.5, -0.5, 0, 1]); + var vbStride = Float32Array.BYTES_PER_ELEMENT * 4; + var vbSize = vbStride * 4; + this.vertexBuffers = device.createBuffer(new BufferInfo(BufferUsageBit.VERTEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, vbSize, vbStride)); + this.vertexBuffers.update(verts); + var indices = new Uint16Array([0, 1, 2, 1, 3, 2]); + var ibStride = Uint16Array.BYTES_PER_ELEMENT; + var ibSize = ibStride * 6; + this.indicesBuffers = device.createBuffer(new BufferInfo(BufferUsageBit.INDEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, ibSize, ibStride)); + this.indicesBuffers.update(indices); + var attributes = [new Attribute('a_position', Format.RG32F), new Attribute('a_texCoord', Format.RG32F)]; + var IAInfo = new InputAssemblerInfo(attributes, [this.vertexBuffers], this.indicesBuffers); + this.quadAssmebler = device.createInputAssembler(IAInfo); + this.projection = new Mat4(); + Mat4.ortho(this.projection, -1, 1, -1, 1, -1, 1, device.capabilities.clipSpaceMinZ, device.capabilities.clipSpaceSignY, swapchain.surfaceTransform); + this.isMobile = sys.isMobile; + }; + _proto.initLayout = function initLayout() { + if (this.isMobile) { + this.bgWidth = 812; + this.bgHeight = 375; + this.logoWidthTemp = 70; + this.logoHeightTemp = 100; + this.textSize = 12; + this.textHeight = this.textSize + this.textExpandSize; + this.textXTrans = 1 / 2; + this.textYExtraTrans = 16; + } else { + this.bgWidth = 1920; + this.bgHeight = 1080; + this.logoWidthTemp = 140; + this.logoHeightTemp = 200; + this.textSize = 24; + this.textHeight = this.textSize + this.textExpandSize; + this.textXTrans = 1 / 2; + this.textYExtraTrans = 32; + } + this.logoXTrans = 1 / 2; + this.logoYTrans = 1 / 6 + 2.5 / 6; + this.initScale(); + }; + _proto.initScale = function initScale() { + var dw = this.swapchain.width; + var dh = this.swapchain.height; + var desiredWidth = this.isMobile ? 375 : 1080; + var desiredHeight = this.isMobile ? 812 : 1920; + if (dw > dh) { + var temp = desiredHeight; + desiredHeight = desiredWidth; + desiredWidth = temp; + } + if (dw / dh > 16 / 9) { + this.scaleSize = dh / desiredHeight; + } else { + this.scaleSize = dw / desiredWidth; + } + }; + _proto.update = function update(deltaTime) { + var settings = this.settings; + var device = this.device, + swapchain = this.swapchain; + Mat4.ortho(this.projection, -1, 1, -1, 1, -1, 1, device.capabilities.clipSpaceMinZ, device.capabilities.clipSpaceSignY, swapchain.surfaceTransform); + var dw = swapchain.width; + var dh = swapchain.height; + this.initScale(); + this._curTime += deltaTime * 1000; + var percent = clamp01(this._curTime / settings.totalTime); + var u_p = cubicOut(percent); + var scaleX = 1; + var scaleY = 1; + if (this.settings.background.type === 'custom') { + if (dw < dh) { + scaleX = dh * this.bgRatio; + scaleY = dh; + } else { + scaleX = dw; + scaleY = dw * this.bgRatio; + } + this.bgMat.setProperty('resolution', v2_0.set(dw, dh), 0); + this.bgMat.setProperty('scale', v2_0.set(scaleX, scaleY), 0); + this.bgMat.setProperty('translate', v2_0.set(dw * 0.5, dh * 0.5), 0); + this.bgMat.setProperty('percent', 1.0); + this.bgMat.setProperty('u_projection', this.projection); + this.bgMat.passes[0].update(); + } + var logoYTrans = dh * this.logoYTrans; + if (this.settings.logo.type !== 'none') { + scaleX = this.logoWidth * this.scaleSize * settings.displayRatio; + scaleY = this.logoHeight * this.scaleSize * settings.displayRatio; + this.logoMat.setProperty('resolution', v2_0.set(dw, dh), 0); + this.logoMat.setProperty('scale', v2_0.set(scaleX, scaleY), 0); + this.logoMat.setProperty('translate', v2_0.set(dw * this.logoXTrans, logoYTrans), 0); + this.logoMat.setProperty('percent', u_p); + this.logoMat.setProperty('u_projection', this.projection); + this.logoMat.passes[0].update(); + } + if (this.settings.logo.type === 'default' && this.watermarkMat) { + var watermarkTW = this.watermarkTexture.width; + var watermarkTH = this.watermarkTexture.height; + scaleX = watermarkTW; + scaleY = watermarkTH; + var textYTrans = logoYTrans - (this.logoHeight * 0.5 * settings.displayRatio + this.textYExtraTrans) * this.scaleSize - watermarkTH * 0.5; + this.watermarkMat.setProperty('resolution', v2_0.set(dw, dh), 0); + this.watermarkMat.setProperty('scale', v2_0.set(scaleX, scaleY), 0); + this.watermarkMat.setProperty('translate', v2_0.set(dw * this.textXTrans, textYTrans), 0); + this.watermarkMat.setProperty('percent', u_p); + this.watermarkMat.setProperty('u_projection', this.projection); + this.watermarkMat.passes[0].update(); + } + this.frame(); + }; + _proto.initBG = function initBG() { + var device = this.device; + this.bgMat = new Material(); + this.bgMat.initialize({ + effectName: 'util/splash-screen' + }); + var samplerInfo = new SamplerInfo(); + samplerInfo.addressU = Address.CLAMP; + samplerInfo.addressV = Address.CLAMP; + samplerInfo.addressW = Address.CLAMP; + this.sampler = device.getSampler(samplerInfo); + this.bgTexture = device.createTexture(new TextureInfo(TextureType.TEX2D, TextureUsageBit.SAMPLED | TextureUsageBit.TRANSFER_DST, Format.RGBA8, this.bgImage.width, this.bgImage.height)); + var pass = this.bgMat.passes[0]; + var binding = pass.getBinding('mainTexture'); + pass.bindTexture(binding, this.bgTexture); + this.shader = pass.getShaderVariant(); + var descriptorSet = pass.descriptorSet; + descriptorSet.bindSampler(binding, this.sampler); + descriptorSet.update(); + var region = new BufferTextureCopy(); + region.texExtent.width = this.bgImage.width; + region.texExtent.height = this.bgImage.height; + region.texExtent.depth = 1; + device.copyTexImagesToTexture([this.bgImage], this.bgTexture, [region]); + }; + _proto.initLogo = function initLogo() { + var device = this.device; + this.logoMat = new Material(); + this.logoMat.initialize({ + effectName: 'util/splash-screen' + }); + var samplerInfo = new SamplerInfo(); + samplerInfo.addressU = Address.CLAMP; + samplerInfo.addressV = Address.CLAMP; + samplerInfo.addressW = Address.CLAMP; + this.sampler = device.getSampler(samplerInfo); + this.logoTexture = device.createTexture(new TextureInfo(TextureType.TEX2D, TextureUsageBit.SAMPLED | TextureUsageBit.TRANSFER_DST, Format.RGBA8, this.logoImage.width, this.logoImage.height)); + var pass = this.logoMat.passes[0]; + var binding = pass.getBinding('mainTexture'); + pass.bindTexture(binding, this.logoTexture); + this.shader = pass.getShaderVariant(); + var descriptorSet = pass.descriptorSet; + descriptorSet.bindSampler(binding, this.sampler); + descriptorSet.update(); + var region = new BufferTextureCopy(); + region.texExtent.width = this.logoImage.width; + region.texExtent.height = this.logoImage.height; + region.texExtent.depth = 1; + device.copyTexImagesToTexture([this.logoImage], this.logoTexture, [region]); + var logoRatio = this.logoImage.width / this.logoImage.height; + if (logoRatio < 1) { + this.logoWidth = this.logoWidthTemp; + this.logoHeight = this.logoWidthTemp / logoRatio; + } else { + this.logoWidth = this.logoHeightTemp * logoRatio; + this.logoHeight = this.logoHeightTemp; + } + }; + _proto.initWaterMark = function initWaterMark() { + var watermarkImg = ccwindow.document.createElement('canvas'); + watermarkImg.height = this.textHeight * this.scaleSize; + watermarkImg.style.width = "" + watermarkImg.width; + watermarkImg.style.height = "" + watermarkImg.height; + var text = 'Created with Cocos'; + var ctx = watermarkImg.getContext('2d'); + ctx.font = this.textSize * this.scaleSize + "px Arial"; + ctx.textBaseline = 'top'; + ctx.textAlign = 'center'; + ctx.fillStyle = '#707070'; + var textLength = ctx.measureText(text).width + 10; + watermarkImg.width = textLength; + ctx.font = this.textSize * this.scaleSize + "px Arial"; + ctx.textBaseline = 'top'; + ctx.textAlign = 'center'; + ctx.fillStyle = '#707070'; + ctx.fillText(text, watermarkImg.width / 2, 0); + var region = new BufferTextureCopy(); + region.texExtent.width = watermarkImg.width; + region.texExtent.height = watermarkImg.height; + region.texExtent.depth = 1; + this.watermarkTexture = this.device.createTexture(new TextureInfo(TextureType.TEX2D, TextureUsageBit.SAMPLED | TextureUsageBit.TRANSFER_DST, Format.RGBA8, watermarkImg.width, watermarkImg.height)); + this.device.copyTexImagesToTexture([watermarkImg], this.watermarkTexture, [region]); + this.watermarkMat = new Material(); + this.watermarkMat.initialize({ + effectName: 'util/splash-screen' + }); + var pass = this.watermarkMat.passes[0]; + var binding = pass.getBinding('mainTexture'); + pass.bindTexture(binding, this.watermarkTexture); + pass.descriptorSet.update(); + }; + _proto.frame = function frame() { + var device = this.device, + swapchain = this.swapchain; + if (!sys.isXR || xr.entry.isRenderAllowable()) { + var renderSize = sys.isXR ? 2 : 1; + for (var xrEye = 0; xrEye < renderSize; xrEye++) { + if (sys.isXR) { + xr.entry.renderLoopStart(xrEye); + var xrFov = xr.entry.getEyeFov(xrEye); + var radioLeft = 1.0; + var radioRight = 1.0; + if (xrEye === XREye.LEFT) { + radioLeft = Math.abs(Math.tan(xrFov[0])) / Math.abs(Math.tan(xrFov[1])); + } else if (xrEye === XREye.RIGHT) { + radioRight = Math.abs(Math.tan(xrFov[1])) / Math.abs(Math.tan(xrFov[0])); + } + Mat4.ortho(this.projection, -radioLeft, radioRight, -1, 1, -1, 1, device.capabilities.clipSpaceMinZ, device.capabilities.clipSpaceSignY, swapchain.surfaceTransform); + this.projection.m00 = preTransforms[swapchain.surfaceTransform][0]; + this.projection.m05 = preTransforms[swapchain.surfaceTransform][3] * device.capabilities.clipSpaceSignY; + if (this.settings.background.type === 'custom') { + this.bgMat.setProperty('u_projection', this.projection); + this.bgMat.passes[0].update(); + } + if (this.settings.logo.type !== 'none') { + this.logoMat.setProperty('u_projection', this.projection); + this.logoMat.passes[0].update(); + } + if (this.settings.logo.type === 'default' && this.watermarkMat) { + this.watermarkMat.setProperty('u_projection', this.projection); + this.watermarkMat.passes[0].update(); + } + } + device.enableAutoBarrier(true); + device.acquire([swapchain]); + var cmdBuff = this.cmdBuff; + var framebuffer = legacyCC.director.root.mainWindow.framebuffer; + var renderArea = this.renderArea; + renderArea.width = swapchain.width; + renderArea.height = swapchain.height; + cmdBuff.begin(); + cmdBuff.beginRenderPass(framebuffer.renderPass, framebuffer, renderArea, this.clearColors, 1.0, 0); + if (this.settings.background.type === 'custom') { + var bgPass = this.bgMat.passes[0]; + var bgPso = PipelineStateManager.getOrCreatePipelineState(device, bgPass, this.shader, framebuffer.renderPass, this.quadAssmebler); + cmdBuff.bindPipelineState(bgPso); + cmdBuff.bindDescriptorSet(SetIndex.MATERIAL, bgPass.descriptorSet); + cmdBuff.bindInputAssembler(this.quadAssmebler); + cmdBuff.draw(this.quadAssmebler); + } + if (this.settings.logo.type !== 'none') { + var logoPass = this.logoMat.passes[0]; + var logoPso = PipelineStateManager.getOrCreatePipelineState(device, logoPass, this.shader, framebuffer.renderPass, this.quadAssmebler); + cmdBuff.bindPipelineState(logoPso); + cmdBuff.bindDescriptorSet(SetIndex.MATERIAL, logoPass.descriptorSet); + cmdBuff.bindInputAssembler(this.quadAssmebler); + cmdBuff.draw(this.quadAssmebler); + } + if (this.settings.logo.type === 'default' && this.watermarkMat) { + var wartermarkPass = this.watermarkMat.passes[0]; + var watermarkPso = PipelineStateManager.getOrCreatePipelineState(device, wartermarkPass, this.shader, framebuffer.renderPass, this.quadAssmebler); + cmdBuff.bindPipelineState(watermarkPso); + cmdBuff.bindDescriptorSet(SetIndex.MATERIAL, wartermarkPass.descriptorSet); + cmdBuff.bindInputAssembler(this.quadAssmebler); + cmdBuff.draw(this.quadAssmebler); + } + cmdBuff.endRenderPass(); + cmdBuff.end(); + device.flushCommands([cmdBuff]); + device.queue.submit([cmdBuff]); + device.present(); + device.enableAutoBarrier(!legacyCC.rendering); + if (sys.isXR) { + xr.entry.renderLoopEnd(xrEye); + } + } + } + }; + _proto.destroy = function destroy() { + this.device = null; + this.swapchain = null; + this.clearColors = null; + if (this.settings.background.type === 'custom') { + if (this.bgImage.destroy) this.bgImage.destroy(); + this.bgImage = null; + this.bgMat.destroy(); + this.bgMat = null; + this.bgTexture.destroy(); + this.bgTexture = null; + } + if (this.settings.logo.type !== 'none') { + if (this.logoImage.destroy) this.logoImage.destroy(); + this.logoImage = null; + this.logoMat.destroy(); + this.logoMat = null; + this.logoTexture.destroy(); + this.logoTexture = null; + } + this.renderArea = null; + this.cmdBuff = null; + this.shader = null; + this.quadAssmebler.destroy(); + this.quadAssmebler = null; + this.vertexBuffers.destroy(); + this.vertexBuffers = null; + this.indicesBuffers.destroy(); + this.indicesBuffers = null; + this.sampler = null; + if (this.settings.logo.type === 'default' && this.watermarkTexture) { + this.watermarkMat.destroy(); + this.watermarkMat = null; + this.watermarkTexture.destroy(); + this.watermarkTexture = null; + } + this.settings = null; + }; + function SplashScreen() { + this.settings = void 0; + this._curTime = 0; + this.device = void 0; + this.swapchain = void 0; + this.shader = void 0; + this.sampler = void 0; + this.cmdBuff = void 0; + this.quadAssmebler = void 0; + this.vertexBuffers = void 0; + this.indicesBuffers = void 0; + this.renderArea = void 0; + this.clearColors = void 0; + this.projection = void 0; + this.isMobile = false; + this.bgMat = void 0; + this.bgImage = void 0; + this.bgTexture = void 0; + this.logoMat = void 0; + this.logoImage = void 0; + this.logoTexture = void 0; + this.watermarkMat = void 0; + this.watermarkTexture = void 0; + this.bgWidth = 1920; + this.bgHeight = 1080; + this.bgRatio = 16 / 9; + this.logoWidthTemp = 140; + this.logoHeightTemp = 200; + this.logoWidth = 0; + this.logoHeight = 0; + this.logoXTrans = 1 / 2; + this.logoYTrans = 1 / 6 + 2.5 / 6; + this.textSize = 24; + this.textHeight = 24; + this.textXTrans = 1 / 2; + this.textYExtraTrans = 32; + this.textExpandSize = 4; + this.scaleSize = 1; + } + _createClass(SplashScreen, [{ + key: "isFinished", + get: function get() { + return this._curTime >= this.settings.totalTime; + } + }, { + key: "curTime", + get: function get() { + return this._curTime; + }, + set: function set(val) { + this._curTime = val; + } + }], [{ + key: "instance", + get: function get() { + if (!SplashScreen._ins) { + SplashScreen._ins = new SplashScreen(); + } + return SplashScreen._ins; + } + }]); + return SplashScreen; + }(); + SplashScreen._ins = void 0; + legacyCC.internal.SplashScreen = SplashScreen; + + var EffectSettings = function () { + function EffectSettings() { + this._data = null; + } + var _proto = EffectSettings.prototype; + _proto.init = function init(path) { + var _this = this; + if (path === void 0) { + path = ''; + } + if (!legacyCC.rendering || !legacyCC.rendering.enableEffectImport || !path) { + return Promise.resolve(); + } + return new Promise(function (resolve, reject) { + { + var xhr = new XMLHttpRequest(); + xhr.open('GET', path); + xhr.responseType = 'arraybuffer'; + xhr.onload = function () { + _this._data = xhr.response; + resolve(); + }; + xhr.onerror = function () { + reject(new Error('request effect settings failed!')); + }; + xhr.send(null); + } + }); + }; + _createClass(EffectSettings, [{ + key: "data", + get: function get() { + return this._data; + } + }]); + return EffectSettings; + }(); + var effectSettings = new EffectSettings(); + legacyCC.effectSettings = effectSettings; + + var Game = exports('dL', function (_EventTarget) { + _inheritsLoose(Game, _EventTarget); + function Game() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _EventTarget.call.apply(_EventTarget, [this].concat(args)) || this; + _this.frame = null; + _this.container = null; + _this.canvas = null; + _this.renderType = -1; + _this.eventTargetOn = _EventTarget.prototype.on; + _this.eventTargetOnce = _EventTarget.prototype.once; + _this.config = {}; + _this.onStart = null; + _this.frameTime = 1000 / 60; + _this._isCloning = false; + _this._inited = false; + _this._engineInited = false; + _this._rendererInitialized = false; + _this._paused = true; + _this._pausedByEngine = false; + _this._frameRate = 60; + _this._pacer = null; + _this._initTime = 0; + _this._startTime = 0; + _this._deltaTime = 0.0; + _this._useFixedDeltaTime = false; + _this._shouldLoadLaunchScene = true; + _this.onPreBaseInitDelegate = new AsyncDelegate(); + _this.onPostBaseInitDelegate = new AsyncDelegate(); + _this.onPreInfrastructureInitDelegate = new AsyncDelegate(); + _this.onPostInfrastructureInitDelegate = new AsyncDelegate(); + _this.onPreSubsystemInitDelegate = new AsyncDelegate(); + _this.onPostSubsystemInitDelegate = new AsyncDelegate(); + _this.onPreProjectInitDelegate = new AsyncDelegate(); + _this.onPostProjectInitDelegate = new AsyncDelegate(); + return _this; + } + var _proto = Game.prototype; + _proto.setFrameRate = function setFrameRate(frameRate) { + this.frameRate = frameRate; + }; + _proto.getFrameRate = function getFrameRate() { + return this.frameRate; + }; + _proto.step = function step() { + director.tick(this._calculateDT(true)); + }; + _proto.pauseByEngine = function pauseByEngine() { + if (this._paused) { + return; + } + this._pausedByEngine = true; + this.pause(); + }; + _proto.resumeByEngine = function resumeByEngine() { + if (this._pausedByEngine) { + this.resume(); + this._pausedByEngine = false; + } + }; + _proto.pause = function pause() { + var _this$_pacer; + if (this._paused) { + return; + } + this._paused = true; + (_this$_pacer = this._pacer) === null || _this$_pacer === void 0 ? void 0 : _this$_pacer.stop(); + this.emit(Game.EVENT_PAUSE); + }; + _proto.resume = function resume() { + var _this$_pacer2; + if (!this._paused) { + return; + } + input._clearEvents(); + this._paused = false; + (_this$_pacer2 = this._pacer) === null || _this$_pacer2 === void 0 ? void 0 : _this$_pacer2.start(); + this.emit(Game.EVENT_RESUME); + }; + _proto.isPaused = function isPaused() { + return this._paused; + }; + _proto.restart = function restart() { + var _this2 = this; + var endFramePromise = new Promise(function (resolve) { + director.once(Director.EVENT_END_FRAME, function () { + return resolve(); + }); + }); + return endFramePromise.then(function () { + director.reset(); + legacyCC.Object._deferredDestroy(); + _this2.pause(); + _this2.resume(); + _this2._shouldLoadLaunchScene = true; + SplashScreen.instance.curTime = 0; + _this2._safeEmit(Game.EVENT_RESTART); + }); + }; + _proto.end = function end() { + systemInfo.close(); + }; + _proto.on = function on(type, callback, target, once) { + if (this.canRegisterEvent(type)) { + callback.call(target); + } + return this.eventTargetOn(type, callback, target, once); + }; + _proto.once = function once(type, callback, target) { + if (this.canRegisterEvent(type)) { + return callback.call(target); + } + return this.eventTargetOnce(type, callback, target); + }; + _proto.canRegisterEvent = function canRegisterEvent(type) { + return this._engineInited && type === Game.EVENT_ENGINE_INITED || this._inited && type === Game.EVENT_GAME_INITED || this._rendererInitialized && type === Game.EVENT_RENDERER_INITED; + }; + _proto.init = function init(config) { + var _this3 = this; + this._compatibleWithOldParams(config); + return Promise.resolve().then(function () { + _this3.emit(Game.EVENT_PRE_BASE_INIT); + return _this3.onPreBaseInitDelegate.dispatch(); + }).then(function () { + { + console.time('Init Base'); + } + var debugMode = config.debugMode || DebugMode.NONE; + _resetDebugSetting(debugMode); + }).then(function () { + return sys.init(); + }).then(function () { + _this3._initEvents(); + }).then(function () { + return settings.init(config.settingsPath, config.overrideSettings); + }).then(function () { + { + console.timeEnd('Init Base'); + } + _this3.emit(Game.EVENT_POST_BASE_INIT); + return _this3.onPostBaseInitDelegate.dispatch(); + }).then(function () { + _this3.emit(Game.EVENT_PRE_INFRASTRUCTURE_INIT); + return _this3.onPreInfrastructureInitDelegate.dispatch(); + }).then(function () { + { + console.time('Init Infrastructure'); + } + macro.init(); + _this3._initXR(); + var adapter = findCanvas(); + if (adapter) { + _this3.canvas = adapter.canvas; + _this3.frame = adapter.frame; + _this3.container = adapter.container; + } + screen.init(); + garbageCollectionManager.init(); + deviceManager.init(_this3.canvas, bindingMappingInfo); + if (macro.CUSTOM_PIPELINE_NAME === '') { + legacyCC.rendering = undefined; + } + assetManager.init(); + builtinResMgr.init(); + Layers.init(); + _this3.initPacer(); + { + console.timeEnd('Init Infrastructure'); + } + }).then(function () { + _this3.emit(Game.EVENT_POST_INFRASTRUCTURE_INIT); + return _this3.onPostInfrastructureInitDelegate.dispatch(); + }).then(function () { + _this3.emit(Game.EVENT_PRE_SUBSYSTEM_INIT); + return _this3.onPreSubsystemInitDelegate.dispatch(); + }).then(function () { + return effectSettings.init(settings.querySettings(Settings.Category.RENDERING, 'effectSettingsPath')); + }).then(function () { + if (!legacyCC.rendering || !legacyCC.rendering.enableEffectImport) { + return; + } + var renderMode = settings.querySettings(Settings.Category.RENDERING, 'renderMode'); + if (renderMode === LegacyRenderMode.HEADLESS) { + legacyCC.rendering.init(deviceManager.gfxDevice, null); + return; + } + var data = effectSettings.data; + if (data === null) { + errorID(1102); + return; + } + legacyCC.rendering.init(deviceManager.gfxDevice, data); + }).then(function () { + var scriptPackages = settings.querySettings(Settings.Category.SCRIPTING, 'scriptPackages'); + if (scriptPackages) { + return Promise.all(scriptPackages.map(function (pack) { + return module.import(pack); + })); + } + return Promise.resolve([]); + }).then(function () { + { + console.time('Init SubSystem'); + } + director.init(); + return builtinResMgr.loadBuiltinAssets(); + }).then(function () { + { + console.timeEnd('Init SubSystem'); + } + _this3.emit(Game.EVENT_POST_SUBSYSTEM_INIT); + return _this3.onPostSubsystemInitDelegate.dispatch(); + }).then(function () { + log("Cocos Creator v" + engineVersion); + _this3.emit(Game.EVENT_ENGINE_INITED); + _this3._engineInited = true; + }).then(function () { + _this3.emit(Game.EVENT_PRE_PROJECT_INIT); + return _this3.onPreProjectInitDelegate.dispatch(); + }).then(function () { + { + console.time('Init Project'); + } + var jsList = settings.querySettings(Settings.Category.PLUGINS, 'jsList'); + var promise = Promise.resolve(); + if (jsList) { + jsList.forEach(function (jsListFile) { + promise = promise.then(function () { + return loadJsFile(('src') + "/" + jsListFile); + }); + }); + } + return promise; + }).then(function () { + return _this3._loadProjectBundles(); + }).then(function () { + return _this3._loadCCEScripts(); + }).then(function () { + return _this3._setupRenderPipeline(); + }).then(function () { + return _this3._loadPreloadAssets(); + }).then(function () { + builtinResMgr.compileBuiltinMaterial(); + return SplashScreen.instance.init(); + }).then(function () { + { + console.timeEnd('Init Project'); + } + _this3.emit(Game.EVENT_POST_PROJECT_INIT); + return _this3.onPostProjectInitDelegate.dispatch(); + }).then(function () { + _this3._inited = true; + _this3._safeEmit(Game.EVENT_GAME_INITED); + }); + }; + _proto._initXR = function _initXR() { + var _settings$querySettin; + if (typeof globalThis.__globalXR === 'undefined') { + globalThis.__globalXR = {}; + } + var globalXR = globalThis.__globalXR; + globalXR.webxrCompatible = (_settings$querySettin = settings.querySettings(Settings.Category.XR, 'webxrCompatible')) !== null && _settings$querySettin !== void 0 ? _settings$querySettin : false; + if (sys.isXR) { + var _settings$querySettin2, _settings$querySettin3; + xr.entry = xr.XrEntry.getInstance(); + var xrMSAA = (_settings$querySettin2 = settings.querySettings(Settings.Category.RENDERING, 'msaa')) !== null && _settings$querySettin2 !== void 0 ? _settings$querySettin2 : 1; + var xrRenderingScale = (_settings$querySettin3 = settings.querySettings(Settings.Category.RENDERING, 'renderingScale')) !== null && _settings$querySettin3 !== void 0 ? _settings$querySettin3 : 1.0; + xr.entry.setMultisamplesRTT(xrMSAA); + xr.entry.setRenderingScale(xrRenderingScale); + } + }; + _proto._compatibleWithOldParams = function _compatibleWithOldParams(config) { + var overrideSettings = config.overrideSettings = config.overrideSettings || {}; + if ('showFPS' in config) { + overrideSettings.profiling = overrideSettings.profiling || {}; + overrideSettings.profiling.showFPS = config.showFPS; + } + if ('frameRate' in config) { + overrideSettings.screen = overrideSettings.screen || {}; + overrideSettings.screen.frameRate = config.frameRate; + } + if ('renderMode' in config) { + overrideSettings.rendering = overrideSettings.rendering || {}; + overrideSettings.rendering.renderMode = config.renderMode; + } + if ('renderPipeline' in config) { + overrideSettings.rendering = overrideSettings.rendering || {}; + overrideSettings.rendering.renderPipeline = config.renderPipeline; + } + if ('assetOptions' in config) { + overrideSettings.assets = overrideSettings.assets || {}; + Object.assign(overrideSettings.assets, config.assetOptions); + } + if ('customJointTextureLayouts' in config) { + overrideSettings.animation = overrideSettings.animation || {}; + overrideSettings.animation.customJointTextureLayouts = config.customJointTextureLayouts; + } + if ('physics' in config) { + overrideSettings.physics = overrideSettings.physics || {}; + Object.assign(overrideSettings.physics, config.physics); + } + if ('orientation' in config) { + overrideSettings.screen = overrideSettings.screen || {}; + overrideSettings.screen.orientation = config.orientation; + } + if ('exactFitScreen' in config) { + overrideSettings.screen = overrideSettings.screen || {}; + overrideSettings.screen.exactFitScreen = config.exactFitScreen; + } + }; + _proto._loadPreloadAssets = function _loadPreloadAssets() { + var preloadAssets = settings.querySettings(Settings.Category.ASSETS, 'preloadAssets'); + if (!preloadAssets) return Promise.resolve([]); + return Promise.all(preloadAssets.map(function (uuid) { + return new Promise(function (resolve, reject) { + assetManager.loadAny(uuid, function (err) { + if (err) { + reject(err); + return; + } + resolve(); + }); + }); + })); + }; + _proto._loadCCEScripts = function _loadCCEScripts() { + return new Promise(function (resolve, reject) { + { + resolve(); + } + }); + }; + _proto._loadProjectBundles = function _loadProjectBundles() { + var preloadBundles = settings.querySettings(Settings.Category.ASSETS, 'preloadBundles'); + if (!preloadBundles) return Promise.resolve([]); + return Promise.all(preloadBundles.map(function (_ref) { + var bundle = _ref.bundle, + version = _ref.version; + return new Promise(function (resolve, reject) { + var opts = {}; + if (version) opts.version = version; + assetManager.loadBundle(bundle, opts, function (err) { + if (err) { + reject(err); + return; + } + resolve(); + }); + }); + })); + }; + _proto.run = function run(onStart) { + if (onStart) { + this.onStart = onStart; + } + if (!this._inited || EDITOR_NOT_IN_PREVIEW) { + return; + } + this.resume(); + }; + _proto._calculateDT = function _calculateDT(useFixedDeltaTime) { + this._useFixedDeltaTime = useFixedDeltaTime; + if (useFixedDeltaTime) { + this._startTime = performance.now(); + return this.frameTime / 1000; + } + var now = performance.now(); + this._deltaTime = now > this._startTime ? (now - this._startTime) / 1000 : 0; + if (this._deltaTime > Game.DEBUG_DT_THRESHOLD) { + this._deltaTime = this.frameTime / 1000; + } + this._startTime = now; + return this._deltaTime; + }; + _proto._updateCallback = function _updateCallback() { + var _this4 = this; + if (!this._inited) return; + if (!SplashScreen.instance.isFinished) { + SplashScreen.instance.update(this._calculateDT(false)); + } else if (this._shouldLoadLaunchScene) { + this._shouldLoadLaunchScene = false; + var launchScene = settings.querySettings(Settings.Category.LAUNCH, 'launchScene'); + if (launchScene) { + director.loadScene(launchScene, function () { + var _this4$onStart; + logID(1103, launchScene); + _this4._initTime = performance.now(); + director.startAnimation(); + (_this4$onStart = _this4.onStart) === null || _this4$onStart === void 0 ? void 0 : _this4$onStart.call(_this4); + }); + } else { + var _this$onStart; + this._initTime = performance.now(); + director.startAnimation(); + (_this$onStart = this.onStart) === null || _this$onStart === void 0 ? void 0 : _this$onStart.call(this); + } + } else { + director.tick(this._calculateDT(false)); + } + }; + _proto.initPacer = function initPacer() { + var _settings$querySettin4; + var frameRate = (_settings$querySettin4 = settings.querySettings(Settings.Category.SCREEN, 'frameRate')) !== null && _settings$querySettin4 !== void 0 ? _settings$querySettin4 : 60; + assert(typeof frameRate === 'number'); + this._pacer = new Pacer(); + this._pacer.onTick = this._updateCallback.bind(this); + this.frameRate = frameRate; + }; + _proto._initEvents = function _initEvents() { + systemInfo.on('show', this._onShow, this); + systemInfo.on('hide', this._onHide, this); + systemInfo.on('close', this._onClose, this); + }; + _proto._onHide = function _onHide() { + this.emit(Game.EVENT_HIDE); + this.pauseByEngine(); + }; + _proto._onShow = function _onShow() { + this.emit(Game.EVENT_SHOW); + this.resumeByEngine(); + }; + _proto._onClose = function _onClose() { + this.emit(Game.EVENT_CLOSE); + systemInfo.exit(); + }; + _proto.addPersistRootNode = function addPersistRootNode(node) { + director.addPersistRootNode(node); + }; + _proto.removePersistRootNode = function removePersistRootNode(node) { + director.removePersistRootNode(node); + }; + _proto.isPersistRootNode = function isPersistRootNode(node) { + return director.isPersistRootNode(node); + }; + _proto._setupRenderPipeline = function _setupRenderPipeline() { + var _this5 = this; + var renderPipeline = settings.querySettings(Settings.Category.RENDERING, 'renderPipeline'); + if (!renderPipeline) { + return this._setRenderPipeline(); + } + return new Promise(function (resolve, reject) { + assetManager.loadAny(renderPipeline, function (err, asset) { + return err || !(asset instanceof RenderPipeline) ? reject(err) : resolve(asset); + }); + }).then(function (asset) { + _this5._setRenderPipeline(asset); + })["catch"](function (reason) { + warn(reason); + warn("Failed load render pipeline: " + renderPipeline + ", engine failed to initialize, will fallback to default pipeline"); + _this5._setRenderPipeline(); + }); + }; + _proto._setRenderPipeline = function _setRenderPipeline(rppl) { + if (!director.root.setRenderPipeline(rppl)) { + this._setRenderPipeline(); + } + this._rendererInitialized = true; + this._safeEmit(Game.EVENT_RENDERER_INITED); + }; + _proto._safeEmit = function _safeEmit(event) { + { + this.emit(event); + } + }; + _createClass(Game, [{ + key: "inited", + get: function get() { + return this._inited; + } + }, { + key: "frameRate", + get: function get() { + return this._frameRate; + }, + set: function set(frameRate) { + if (typeof frameRate !== 'number') { + frameRate = parseInt(frameRate, 10); + if (Number.isNaN(frameRate)) { + frameRate = 60; + } + } + this._frameRate = frameRate; + this.frameTime = 1000 / frameRate; + if (this._pacer) this._pacer.targetFrameRate = this._frameRate; + } + }, { + key: "deltaTime", + get: function get() { + return this._useFixedDeltaTime ? this.frameTime / 1000 : this._deltaTime; + } + }, { + key: "totalTime", + get: function get() { + return performance.now() - this._initTime; + } + }, { + key: "frameStartTime", + get: function get() { + return this._startTime; + } + }]); + return Game; + }(EventTarget)); + Game.EVENT_HIDE = 'game_on_hide'; + Game.EVENT_SHOW = 'game_on_show'; + Game.EVENT_LOW_MEMORY = 'game_on_low_memory'; + Game.EVENT_GAME_INITED = 'game_inited'; + Game.EVENT_ENGINE_INITED = 'engine_inited'; + Game.EVENT_RENDERER_INITED = 'renderer_inited'; + Game.EVENT_PRE_BASE_INIT = 'pre_base_init'; + Game.EVENT_POST_BASE_INIT = 'post_base_init'; + Game.EVENT_PRE_INFRASTRUCTURE_INIT = 'pre_infrastructure_init'; + Game.EVENT_POST_INFRASTRUCTURE_INIT = 'post_infrastructure_init'; + Game.EVENT_PRE_SUBSYSTEM_INIT = 'pre_subsystem_init'; + Game.EVENT_POST_SUBSYSTEM_INIT = 'post_subsystem_init'; + Game.EVENT_PRE_PROJECT_INIT = 'pre_project_init'; + Game.EVENT_POST_PROJECT_INIT = 'post_project_init'; + Game.EVENT_RESTART = 'game_on_restart'; + Game.EVENT_PAUSE = 'game_on_pause'; + Game.EVENT_RESUME = 'game_on_resume'; + Game.EVENT_CLOSE = 'game_on_close'; + Game.RENDER_TYPE_CANVAS = 0; + Game.RENDER_TYPE_WEBGL = 1; + Game.RENDER_TYPE_OPENGL = 2; + Game.RENDER_TYPE_HEADLESS = 3; + Game.DEBUG_DT_THRESHOLD = 1; + legacyCC.Game = Game; + var game = exports('dM', legacyCC.game = new Game()); + + markAsWarning(Director.prototype, 'director', [{ + name: 'calculateDeltaTime' + }, { + name: 'getDeltaTime', + suggest: 'Use game.deltaTime instead' + }, { + name: 'getTotalTime', + suggest: 'Use game.totalTime instead' + }, { + name: 'getCurrentTime', + suggest: 'Use game.frameStartTime instead' + }]); + removeProperty(Director.prototype, 'director', [{ + name: 'setAnimationInterval', + suggest: 'please use game.frameRate instead' + }, { + name: 'getAnimationInterval', + suggest: 'please use game.frameRate instead' + }, { + name: 'getRunningScene', + suggest: 'please use getScene instead' + }, { + name: 'setDepthTest', + suggest: 'please use camera API instead' + }, { + name: 'setClearColor', + suggest: 'please use camera API instead' + }, { + name: 'getWinSize', + suggest: 'please use view.getVisibleSize instead' + }, { + name: 'getWinSizeInPixels' + }, { + name: 'purgeCachedData', + suggest: 'please use assetManager.releaseAll instead' + }, { + name: 'convertToGL' + }, { + name: 'convertToUI' + }]); + replaceProperty(director, 'director', [{ + name: '_getSceneUuid', + targetName: 'assetManager.main', + newName: 'getSceneInfo', + customFunction: function customFunction(sceneName) { + if (assetManager.main) { + var _assetManager$main$ge; + return (_assetManager$main$ge = assetManager.main.getSceneInfo(sceneName)) === null || _assetManager$main$ge === void 0 ? void 0 : _assetManager$main$ge.uuid; + } + return ''; + } + }]); + markAsWarning(game, 'game', [{ + name: 'collisionMatrix' + }, { + name: 'groupList' + }]); + replaceProperty(game, 'game', [{ + name: '_sceneInfos', + targetName: 'assetManager.main', + newName: 'getSceneInfo', + customGetter: function customGetter() { + var scenes = []; + if (assetManager.main) { + assetManager.main.config.scenes.forEach(function (val) { + scenes.push(val); + }); + } + return scenes; + } + }]); + + var DynamicAtlasManager = exports('$', function (_System) { + _inheritsLoose(DynamicAtlasManager, _System); + function DynamicAtlasManager() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _System.call.apply(_System, [this].concat(args)) || this; + _this._atlases = []; + _this._atlasIndex = -1; + _this._maxAtlasCount = 5; + _this._textureSize = 2048; + _this._maxFrameSize = 512; + _this._textureBleeding = true; + _this._enabled = false; + return _this; + } + var _proto = DynamicAtlasManager.prototype; + _proto.newAtlas = function newAtlas() { + var atlas = this._atlases[++this._atlasIndex]; + if (!atlas) { + atlas = new Atlas(this._textureSize, this._textureSize); + this._atlases.push(atlas); + } + return atlas; + }; + _proto.beforeSceneLoad = function beforeSceneLoad() { + this.reset(); + }; + _proto.init = function init() { + this.enabled = !macro.CLEANUP_IMAGE_CACHE; + }; + _proto.insertSpriteFrame = function insertSpriteFrame(spriteFrame) { + if (!this._enabled || this._atlasIndex === this._maxAtlasCount || !spriteFrame || spriteFrame._original) return null; + if (!spriteFrame.packable) return null; + var sampler = spriteFrame.texture.getSamplerInfo(); + if (sampler.minFilter !== Filter.LINEAR || sampler.magFilter !== Filter.LINEAR || sampler.mipFilter !== Filter.NONE) { + return null; + } + var atlas = this._atlases[this._atlasIndex]; + if (!atlas) { + atlas = this.newAtlas(); + } + var frame = atlas.insertSpriteFrame(spriteFrame); + if (!frame && this._atlasIndex !== this._maxAtlasCount) { + atlas = this.newAtlas(); + return atlas.insertSpriteFrame(spriteFrame); + } + return frame; + }; + _proto.reset = function reset() { + for (var i = 0, l = this._atlases.length; i < l; i++) { + this._atlases[i].destroy(); + } + this._atlases.length = 0; + this._atlasIndex = -1; + }; + _proto.deleteAtlasSpriteFrame = function deleteAtlasSpriteFrame(spriteFrame) { + if (!spriteFrame._original) return; + var atlas; + for (var i = this._atlases.length - 1; i >= 0; i--) { + atlas = this._atlases[i]; + fastRemove(atlas._innerSpriteFrames, spriteFrame); + } + var texture = spriteFrame._original._texture; + this.deleteAtlasTexture(texture); + }; + _proto.deleteAtlasTexture = function deleteAtlasTexture(texture) { + if (texture) { + for (var i = this._atlases.length - 1; i >= 0; i--) { + this._atlases[i].deleteInnerTexture(texture); + if (this._atlases[i].isEmpty()) { + this._atlases[i].destroy(); + this._atlases.splice(i, 1); + this._atlasIndex--; + } + } + } + }; + _proto.packToDynamicAtlas = function packToDynamicAtlas(comp, frame) { + if (!this._enabled) return; + if (frame && !frame._original && frame.packable && frame.texture && frame.texture.width > 0 && frame.texture.height > 0) { + var packedFrame = this.insertSpriteFrame(frame); + if (packedFrame) { + frame._setDynamicAtlasFrame(packedFrame); + } + } + }; + _createClass(DynamicAtlasManager, [{ + key: "enabled", + get: function get() { + return this._enabled; + }, + set: function set(value) { + if (this._enabled === value) return; + if (value) { + this.reset(); + legacyCC.director.on(legacyCC.Director.EVENT_BEFORE_SCENE_LAUNCH, this.beforeSceneLoad, this); + } else { + this.reset(); + legacyCC.director.off(legacyCC.Director.EVENT_BEFORE_SCENE_LAUNCH, this.beforeSceneLoad, this); + } + this._enabled = value; + } + }, { + key: "maxAtlasCount", + get: function get() { + return this._maxAtlasCount; + }, + set: function set(value) { + this._maxAtlasCount = value; + } + }, { + key: "atlasCount", + get: function get() { + return this._atlases.length; + } + }, { + key: "textureBleeding", + get: function get() { + return this._textureBleeding; + }, + set: function set(enable) { + this._textureBleeding = enable; + } + }, { + key: "textureSize", + get: function get() { + return this._textureSize; + }, + set: function set(value) { + this._textureSize = value; + } + }, { + key: "maxFrameSize", + get: function get() { + return this._maxFrameSize; + }, + set: function set(value) { + this._maxFrameSize = value; + } + }]); + return DynamicAtlasManager; + }(System)); + DynamicAtlasManager.instance = void 0; + var dynamicAtlasManager = exports('a0', DynamicAtlasManager.instance = new DynamicAtlasManager()); + director.registerSystem('dynamicAtlasManager', dynamicAtlasManager, 0); + legacyCC.internal.dynamicAtlasManager = dynamicAtlasManager; + + var _keyMap; + (function (_keyMap) { + _keyMap[_keyMap["positions"] = AttributeName.ATTR_POSITION] = "positions"; + _keyMap[_keyMap["normals"] = AttributeName.ATTR_NORMAL] = "normals"; + _keyMap[_keyMap["uvs"] = AttributeName.ATTR_TEX_COORD] = "uvs"; + _keyMap[_keyMap["colors"] = AttributeName.ATTR_COLOR] = "colors"; + })(_keyMap || (_keyMap = {})); + + var BufferBlob = function () { + function BufferBlob() { + this._arrayBufferOrPaddings = []; + this._length = 0; + } + var _proto = BufferBlob.prototype; + _proto.setNextAlignment = function setNextAlignment(align) { + if (align !== 0) { + var remainder = this._length % align; + if (remainder !== 0) { + var padding = align - remainder; + this._arrayBufferOrPaddings.push(padding); + this._length += padding; + } + } + }; + _proto.addBuffer = function addBuffer(arrayBuffer) { + var result = this._length; + this._arrayBufferOrPaddings.push(arrayBuffer); + this._length += arrayBuffer.byteLength; + return result; + }; + _proto.getLength = function getLength() { + return this._length; + }; + _proto.getCombined = function getCombined() { + var result = new Uint8Array(this._length); + var counter = 0; + this._arrayBufferOrPaddings.forEach(function (arrayBufferOrPadding) { + if (typeof arrayBufferOrPadding === 'number') { + counter += arrayBufferOrPadding; + } else { + result.set(new Uint8Array(arrayBufferOrPadding), counter); + counter += arrayBufferOrPadding.byteLength; + } + }); + return result.buffer; + }; + return BufferBlob; + }(); + + function createMorphRendering(mesh, gfxDevice) { + return new StdMorphRendering(mesh, gfxDevice); + } + var StdMorphRendering = function () { + function StdMorphRendering(mesh, gfxDevice) { + this._mesh = void 0; + this._subMeshRenderings = []; + this._mesh = mesh; + if (!this._mesh.struct.morph) { + return; + } + var nSubMeshes = this._mesh.struct.primitives.length; + this._subMeshRenderings = new Array(nSubMeshes).fill(null); + for (var iSubMesh = 0; iSubMesh < nSubMeshes; ++iSubMesh) { + var subMeshMorph = this._mesh.struct.morph.subMeshMorphs[iSubMesh]; + if (!subMeshMorph) { + continue; + } + if (subMeshMorph.targets.length > UBOMorph.MAX_MORPH_TARGET_COUNT) { + this._subMeshRenderings[iSubMesh] = new CpuComputing(this._mesh, iSubMesh, this._mesh.struct.morph, gfxDevice); + } else { + this._subMeshRenderings[iSubMesh] = new GpuComputing(this._mesh, iSubMesh, this._mesh.struct.morph, gfxDevice); + } + } + } + var _proto = StdMorphRendering.prototype; + _proto.createInstance = function createInstance() { + var _this = this; + var nSubMeshes = this._mesh.struct.primitives.length; + var subMeshInstances = new Array(nSubMeshes); + for (var iSubMesh = 0; iSubMesh < nSubMeshes; ++iSubMesh) { + var _this$_subMeshRenderi, _this$_subMeshRenderi2; + subMeshInstances[iSubMesh] = (_this$_subMeshRenderi = (_this$_subMeshRenderi2 = this._subMeshRenderings[iSubMesh]) === null || _this$_subMeshRenderi2 === void 0 ? void 0 : _this$_subMeshRenderi2.createInstance()) !== null && _this$_subMeshRenderi !== void 0 ? _this$_subMeshRenderi : null; + } + return { + setWeights: function setWeights(subMeshIndex, weights) { + var _subMeshInstances$sub; + (_subMeshInstances$sub = subMeshInstances[subMeshIndex]) === null || _subMeshInstances$sub === void 0 ? void 0 : _subMeshInstances$sub.setWeights(weights); + }, + requiredPatches: function requiredPatches(subMeshIndex) { + assertIsNonNullable(_this._mesh.struct.morph); + var subMeshMorph = _this._mesh.struct.morph.subMeshMorphs[subMeshIndex]; + var subMeshRenderingInstance = subMeshInstances[subMeshIndex]; + if (subMeshRenderingInstance === null) { + return null; + } + assertIsNonNullable(subMeshMorph); + var patches = [{ + name: 'CC_USE_MORPH', + value: true + }, { + name: 'CC_MORPH_TARGET_COUNT', + value: subMeshMorph.targets.length + }]; + if (subMeshMorph.attributes.includes(AttributeName.ATTR_POSITION)) { + patches.push({ + name: 'CC_MORPH_TARGET_HAS_POSITION', + value: true + }); + } + if (subMeshMorph.attributes.includes(AttributeName.ATTR_NORMAL)) { + patches.push({ + name: 'CC_MORPH_TARGET_HAS_NORMAL', + value: true + }); + } + if (subMeshMorph.attributes.includes(AttributeName.ATTR_TANGENT)) { + patches.push({ + name: 'CC_MORPH_TARGET_HAS_TANGENT', + value: true + }); + } + patches.push.apply(patches, subMeshRenderingInstance.requiredPatches()); + return patches; + }, + adaptPipelineState: function adaptPipelineState(subMeshIndex, descriptorSet) { + var _subMeshInstances$sub2; + (_subMeshInstances$sub2 = subMeshInstances[subMeshIndex]) === null || _subMeshInstances$sub2 === void 0 ? void 0 : _subMeshInstances$sub2.adaptPipelineState(descriptorSet); + }, + destroy: function destroy() { + for (var _i = 0, _subMeshInstances = subMeshInstances; _i < _subMeshInstances.length; _i++) { + var subMeshInstance = _subMeshInstances[_i]; + subMeshInstance === null || subMeshInstance === void 0 ? void 0 : subMeshInstance.destroy(); + } + } + }; + }; + return StdMorphRendering; + }(); + var GpuComputing = function () { + function GpuComputing(mesh, subMeshIndex, morph, gfxDevice) { + this._gfxDevice = void 0; + this._subMeshMorph = void 0; + this._textureInfo = void 0; + this._attributes = void 0; + this._verticesCount = void 0; + this._gfxDevice = gfxDevice; + var subMeshMorph = morph.subMeshMorphs[subMeshIndex]; + assertIsNonNullable(subMeshMorph); + this._subMeshMorph = subMeshMorph; + enableVertexId(mesh, subMeshIndex, gfxDevice); + var nVertices = mesh.struct.vertexBundles[mesh.struct.primitives[subMeshIndex].vertexBundelIndices[0]].view.count; + this._verticesCount = nVertices; + var nTargets = subMeshMorph.targets.length; + var vec4Required = nVertices * nTargets; + var vec4TextureFactory = createVec4TextureFactory(gfxDevice, vec4Required); + this._textureInfo = { + width: vec4TextureFactory.width, + height: vec4TextureFactory.height + }; + this._attributes = subMeshMorph.attributes.map(function (attributeName, attributeIndex) { + var vec4Tex = vec4TextureFactory.create(); + var valueView = vec4Tex.valueView; + subMeshMorph.targets.forEach(function (morphTarget, morphTargetIndex) { + var displacementsView = morphTarget.displacements[attributeIndex]; + var displacements = new Float32Array(mesh.data.buffer, mesh.data.byteOffset + displacementsView.offset, displacementsView.count); + var displacementsOffset = nVertices * morphTargetIndex * 4; + for (var iVertex = 0; iVertex < nVertices; ++iVertex) { + valueView[displacementsOffset + 4 * iVertex + 0] = displacements[3 * iVertex + 0]; + valueView[displacementsOffset + 4 * iVertex + 1] = displacements[3 * iVertex + 1]; + valueView[displacementsOffset + 4 * iVertex + 2] = displacements[3 * iVertex + 2]; + } + }); + vec4Tex.updatePixels(); + return { + name: attributeName, + morphTexture: vec4Tex + }; + }); + } + var _proto2 = GpuComputing.prototype; + _proto2.destroy = function destroy() { + for (var _iterator = _createForOfIteratorHelperLoose(this._attributes), _step; !(_step = _iterator()).done;) { + var attribute = _step.value; + attribute.morphTexture.destroy(); + } + }; + _proto2.createInstance = function createInstance() { + var _this2 = this; + var morphUniforms = new MorphUniforms(this._gfxDevice, this._subMeshMorph.targets.length); + morphUniforms.setMorphTextureInfo(this._textureInfo.width, this._textureInfo.height); + morphUniforms.setVerticesCount(this._verticesCount); + morphUniforms.commit(); + return { + setWeights: function setWeights(weights) { + morphUniforms.setWeights(weights); + morphUniforms.commit(); + }, + requiredPatches: function requiredPatches() { + return [{ + name: 'CC_MORPH_TARGET_USE_TEXTURE', + value: true + }]; + }, + adaptPipelineState: function adaptPipelineState(descriptorSet) { + for (var _iterator2 = _createForOfIteratorHelperLoose(_this2._attributes), _step2; !(_step2 = _iterator2()).done;) { + var attribute = _step2.value; + var binding = void 0; + switch (attribute.name) { + case AttributeName.ATTR_POSITION: + binding = UNIFORM_POSITION_MORPH_TEXTURE_BINDING; + break; + case AttributeName.ATTR_NORMAL: + binding = UNIFORM_NORMAL_MORPH_TEXTURE_BINDING; + break; + case AttributeName.ATTR_TANGENT: + binding = UNIFORM_TANGENT_MORPH_TEXTURE_BINDING; + break; + default: + warn('Unexpected attribute!'); + break; + } + if (binding !== undefined) { + descriptorSet.bindSampler(binding, attribute.morphTexture.sampler); + descriptorSet.bindTexture(binding, attribute.morphTexture.texture); + } + } + descriptorSet.bindBuffer(UBOMorph.BINDING, morphUniforms.buffer); + descriptorSet.update(); + }, + destroy: function destroy() {} + }; + }; + return GpuComputing; + }(); + var CpuComputing = function () { + function CpuComputing(mesh, subMeshIndex, morph, gfxDevice) { + this._gfxDevice = void 0; + this._attributes = []; + this._gfxDevice = gfxDevice; + var subMeshMorph = morph.subMeshMorphs[subMeshIndex]; + assertIsNonNullable(subMeshMorph); + enableVertexId(mesh, subMeshIndex, gfxDevice); + this._attributes = subMeshMorph.attributes.map(function (attributeName, attributeIndex) { + return { + name: attributeName, + targets: subMeshMorph.targets.map(function (attributeDisplacement) { + return { + displacements: new Float32Array(mesh.data.buffer, mesh.data.byteOffset + attributeDisplacement.displacements[attributeIndex].offset, attributeDisplacement.displacements[attributeIndex].count) + }; + }) + }; + }); + } + var _proto3 = CpuComputing.prototype; + _proto3.createInstance = function createInstance() { + return new CpuComputingRenderingInstance(this, this._attributes[0].targets[0].displacements.length / 3, this._gfxDevice); + }; + _createClass(CpuComputing, [{ + key: "data", + get: function get() { + return this._attributes; + } + }]); + return CpuComputing; + }(); + var CpuComputingRenderingInstance = function () { + function CpuComputingRenderingInstance(owner, nVertices, gfxDevice) { + this._attributes = void 0; + this._owner = void 0; + this._morphUniforms = void 0; + this._owner = owner; + this._morphUniforms = new MorphUniforms(gfxDevice, 0); + var vec4TextureFactory = createVec4TextureFactory(gfxDevice, nVertices); + this._morphUniforms.setMorphTextureInfo(vec4TextureFactory.width, vec4TextureFactory.height); + this._morphUniforms.commit(); + this._attributes = this._owner.data.map(function (attributeMorph, attributeIndex) { + var morphTexture = vec4TextureFactory.create(); + return { + attributeName: attributeMorph.name, + morphTexture: morphTexture + }; + }); + } + var _proto4 = CpuComputingRenderingInstance.prototype; + _proto4.setWeights = function setWeights(weights) { + for (var iAttribute = 0; iAttribute < this._attributes.length; ++iAttribute) { + var myAttribute = this._attributes[iAttribute]; + var valueView = myAttribute.morphTexture.valueView; + var attributeMorph = this._owner.data[iAttribute]; + assertIsTrue(weights.length === attributeMorph.targets.length); + for (var iTarget = 0; iTarget < attributeMorph.targets.length; ++iTarget) { + var targetDisplacements = attributeMorph.targets[iTarget].displacements; + var weight = weights[iTarget]; + var nVertices = targetDisplacements.length / 3; + if (iTarget === 0) { + for (var iVertex = 0; iVertex < nVertices; ++iVertex) { + valueView[4 * iVertex + 0] = targetDisplacements[3 * iVertex + 0] * weight; + valueView[4 * iVertex + 1] = targetDisplacements[3 * iVertex + 1] * weight; + valueView[4 * iVertex + 2] = targetDisplacements[3 * iVertex + 2] * weight; + } + } else if (weight !== 0.0) { + for (var _iVertex = 0; _iVertex < nVertices; ++_iVertex) { + valueView[4 * _iVertex + 0] += targetDisplacements[3 * _iVertex + 0] * weight; + valueView[4 * _iVertex + 1] += targetDisplacements[3 * _iVertex + 1] * weight; + valueView[4 * _iVertex + 2] += targetDisplacements[3 * _iVertex + 2] * weight; + } + } + } + myAttribute.morphTexture.updatePixels(); + } + }; + _proto4.requiredPatches = function requiredPatches() { + return [{ + name: 'CC_MORPH_TARGET_USE_TEXTURE', + value: true + }, { + name: 'CC_MORPH_PRECOMPUTED', + value: true + }]; + }; + _proto4.adaptPipelineState = function adaptPipelineState(descriptorSet) { + for (var _iterator3 = _createForOfIteratorHelperLoose(this._attributes), _step3; !(_step3 = _iterator3()).done;) { + var attribute = _step3.value; + var attributeName = attribute.attributeName; + var binding = void 0; + switch (attributeName) { + case AttributeName.ATTR_POSITION: + binding = UNIFORM_POSITION_MORPH_TEXTURE_BINDING; + break; + case AttributeName.ATTR_NORMAL: + binding = UNIFORM_NORMAL_MORPH_TEXTURE_BINDING; + break; + case AttributeName.ATTR_TANGENT: + binding = UNIFORM_TANGENT_MORPH_TEXTURE_BINDING; + break; + default: + warn('Unexpected attribute!'); + break; + } + if (binding !== undefined) { + descriptorSet.bindSampler(binding, attribute.morphTexture.sampler); + descriptorSet.bindTexture(binding, attribute.morphTexture.texture); + } + } + descriptorSet.bindBuffer(UBOMorph.BINDING, this._morphUniforms.buffer); + descriptorSet.update(); + }; + _proto4.destroy = function destroy() { + this._morphUniforms.destroy(); + for (var iAttribute = 0; iAttribute < this._attributes.length; ++iAttribute) { + var myAttribute = this._attributes[iAttribute]; + myAttribute.morphTexture.destroy(); + } + }; + return CpuComputingRenderingInstance; + }(); + var MorphUniforms = function () { + function MorphUniforms(gfxDevice, targetCount) { + this._targetCount = void 0; + this._localBuffer = void 0; + this._remoteBuffer = void 0; + this._targetCount = targetCount; + this._localBuffer = new DataView(new ArrayBuffer(UBOMorph.SIZE)); + this._remoteBuffer = gfxDevice.createBuffer(new BufferInfo(BufferUsageBit.UNIFORM | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.HOST | MemoryUsageBit.DEVICE, UBOMorph.SIZE, UBOMorph.SIZE)); + } + var _proto5 = MorphUniforms.prototype; + _proto5.destroy = function destroy() { + this._remoteBuffer.destroy(); + }; + _proto5.setWeights = function setWeights(weights) { + assertIsTrue(weights.length === this._targetCount); + for (var iWeight = 0; iWeight < weights.length; ++iWeight) { + this._localBuffer.setFloat32(UBOMorph.OFFSET_OF_WEIGHTS + 4 * iWeight, weights[iWeight], legacyCC.sys.isLittleEndian); + } + }; + _proto5.setMorphTextureInfo = function setMorphTextureInfo(width, height) { + this._localBuffer.setFloat32(UBOMorph.OFFSET_OF_DISPLACEMENT_TEXTURE_WIDTH, width, legacyCC.sys.isLittleEndian); + this._localBuffer.setFloat32(UBOMorph.OFFSET_OF_DISPLACEMENT_TEXTURE_HEIGHT, height, legacyCC.sys.isLittleEndian); + }; + _proto5.setVerticesCount = function setVerticesCount(count) { + this._localBuffer.setFloat32(UBOMorph.OFFSET_OF_VERTICES_COUNT, count, legacyCC.sys.isLittleEndian); + }; + _proto5.commit = function commit() { + this._remoteBuffer.update(this._localBuffer.buffer); + }; + _createClass(MorphUniforms, [{ + key: "buffer", + get: function get() { + return this._remoteBuffer; + } + }]); + return MorphUniforms; + }(); + function createVec4TextureFactory(gfxDevice, vec4Capacity) { + var hasFeatureFloatTexture = gfxDevice.getFormatFeatures(Format.RGBA32F) & FormatFeatureBit.SAMPLED_TEXTURE; + var pixelRequired; + var pixelFormat; + var pixelBytes; + var UpdateViewConstructor; + if (hasFeatureFloatTexture) { + pixelRequired = vec4Capacity; + pixelBytes = 16; + pixelFormat = Texture2D.PixelFormat.RGBA32F; + UpdateViewConstructor = Float32Array; + } else { + pixelRequired = 4 * vec4Capacity; + pixelBytes = 4; + pixelFormat = Texture2D.PixelFormat.RGBA8888; + UpdateViewConstructor = Uint8Array; + } + var _bestSizeToHavePixels = bestSizeToHavePixels(pixelRequired), + width = _bestSizeToHavePixels.width, + height = _bestSizeToHavePixels.height; + assertIsTrue(width * height >= pixelRequired); + return { + width: width, + height: height, + create: function create() { + var arrayBuffer = new ArrayBuffer(width * height * pixelBytes); + var valueView = new Float32Array(arrayBuffer); + var updateView = UpdateViewConstructor === Float32Array ? valueView : new UpdateViewConstructor(arrayBuffer); + var image = new ImageAsset({ + width: width, + height: height, + _data: updateView, + _compressed: false, + format: pixelFormat + }); + var textureAsset = new Texture2D(); + textureAsset.setFilters(Texture2D.Filter.NEAREST, Texture2D.Filter.NEAREST); + textureAsset.setMipFilter(Texture2D.Filter.NONE); + textureAsset.setWrapMode(Texture2D.WrapMode.CLAMP_TO_EDGE, Texture2D.WrapMode.CLAMP_TO_EDGE, Texture2D.WrapMode.CLAMP_TO_EDGE); + textureAsset.image = image; + if (!textureAsset.getGFXTexture()) { + warn('Unexpected: failed to create morph texture?'); + } + var sampler = gfxDevice.getSampler(textureAsset.getSamplerInfo()); + return { + get texture() { + return textureAsset.getGFXTexture(); + }, + get sampler() { + return sampler; + }, + get valueView() { + return valueView; + }, + destroy: function destroy() { + textureAsset.destroy(); + }, + updatePixels: function updatePixels() { + textureAsset.uploadData(updateView); + } + }; + } + }; + } + function enableVertexId(mesh, subMeshIndex, gfxDevice) { + mesh.renderingSubMeshes[subMeshIndex].enableVertexIdChannel(gfxDevice); + } + function bestSizeToHavePixels(nPixels) { + if (nPixels < 5) { + nPixels = 5; + } + var aligned = nextPow2(nPixels); + var epxSum = log2(aligned); + var h = epxSum >> 1; + var w = epxSum & 1 ? h + 1 : h; + return { + width: 1 << w, + height: 1 << h + }; + } + + function instantiateWasm(wasmUrl, importObject) { + return fetchBuffer(wasmUrl).then(function (arrayBuffer) { + return WebAssembly.instantiate(arrayBuffer, importObject); + }); + } + function fetchBuffer(binaryUrl) { + return new Promise(function (resolve, reject) { + try { + if (EDITOR) ; else if (PREVIEW) ; + binaryUrl = new URL(binaryUrl, module.meta.url).href; + fetch(binaryUrl).then(function (response) { + return response.arrayBuffer().then(resolve); + })["catch"](function (e) {}); + } catch (e) { + reject(e); + } + }); + } + function ensureWasmModuleReady() { + return Promise.resolve(); + } + + var MeshoptDecoder = {}; + + /** @license zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */ + var window$1 = {}; + (function () { + + function i(a) { + throw a; + } + var r = void 0, + v = !0, + aa = this; + function y(a, c) { + var b = a.split("."), + e = aa; + !(b[0] in e) && e.execScript && e.execScript("var " + b[0]); + for (var f; b.length && (f = b.shift());) !b.length && c !== r ? e[f] = c : e = e[f] ? e[f] : e[f] = {}; + } + var H = "undefined" !== typeof Uint8Array && "undefined" !== typeof Uint16Array && "undefined" !== typeof Uint32Array; + function ba(a) { + if ("string" === typeof a) { + var c = a.split(""), + b, + e; + b = 0; + for (e = c.length; b < e; b++) c[b] = (c[b].charCodeAt(0) & 255) >>> 0; + a = c; + } + for (var f = 1, d = 0, g = a.length, h, m = 0; 0 < g;) { + h = 1024 < g ? 1024 : g; + g -= h; + do f += a[m++], d += f; while (--h); + f %= 65521; + d %= 65521; + } + return (d << 16 | f) >>> 0; + } + function J(a, c) { + this.index = "number" === typeof c ? c : 0; + this.i = 0; + this.buffer = a instanceof (H ? Uint8Array : Array) ? a : new (H ? Uint8Array : Array)(32768); + 2 * this.buffer.length <= this.index && i(Error("invalid index")); + this.buffer.length <= this.index && this.f(); + } + J.prototype.f = function () { + var a = this.buffer, + c, + b = a.length, + e = new (H ? Uint8Array : Array)(b << 1); + if (H) e.set(a);else for (c = 0; c < b; ++c) e[c] = a[c]; + return this.buffer = e; + }; + J.prototype.d = function (a, c, b) { + var e = this.buffer, + f = this.index, + d = this.i, + g = e[f], + h; + b && 1 < c && (a = 8 < c ? (N[a & 255] << 24 | N[a >>> 8 & 255] << 16 | N[a >>> 16 & 255] << 8 | N[a >>> 24 & 255]) >> 32 - c : N[a] >> 8 - c); + if (8 > c + d) g = g << c | a, d += c;else for (h = 0; h < c; ++h) g = g << 1 | a >> c - h - 1 & 1, 8 === ++d && (d = 0, e[f++] = N[g], g = 0, f === e.length && (e = this.f())); + e[f] = g; + this.buffer = e; + this.i = d; + this.index = f; + }; + J.prototype.finish = function () { + var a = this.buffer, + c = this.index, + b; + 0 < this.i && (a[c] <<= 8 - this.i, a[c] = N[a[c]], c++); + H ? b = a.subarray(0, c) : (a.length = c, b = a); + return b; + }; + var ca = new (H ? Uint8Array : Array)(256), + ha; + for (ha = 0; 256 > ha; ++ha) { + for (var R = ha, ia = R, ja = 7, R = R >>> 1; R; R >>>= 1) ia <<= 1, ia |= R & 1, --ja; + ca[ha] = (ia << ja & 255) >>> 0; + } + var N = ca; + function la(a) { + this.buffer = new (H ? Uint16Array : Array)(2 * a); + this.length = 0; + } + la.prototype.getParent = function (a) { + return 2 * ((a - 2) / 4 | 0); + }; + la.prototype.push = function (a, c) { + var b, + e, + f = this.buffer, + d; + b = this.length; + f[this.length++] = c; + for (f[this.length++] = a; 0 < b;) if (e = this.getParent(b), f[b] > f[e]) d = f[b], f[b] = f[e], f[e] = d, d = f[b + 1], f[b + 1] = f[e + 1], f[e + 1] = d, b = e;else break; + return this.length; + }; + la.prototype.pop = function () { + var a, + c, + b = this.buffer, + e, + f, + d; + c = b[0]; + a = b[1]; + this.length -= 2; + b[0] = b[this.length]; + b[1] = b[this.length + 1]; + for (d = 0;;) { + f = 2 * d + 2; + if (f >= this.length) break; + f + 2 < this.length && b[f + 2] > b[f] && (f += 2); + if (b[f] > b[d]) e = b[d], b[d] = b[f], b[f] = e, e = b[d + 1], b[d + 1] = b[f + 1], b[f + 1] = e;else break; + d = f; + } + return { + index: a, + value: c, + length: this.length + }; + }; + function S(a) { + var c = a.length, + b = 0, + e = Number.POSITIVE_INFINITY, + f, + d, + g, + h, + m, + j, + s, + n, + l; + for (n = 0; n < c; ++n) a[n] > b && (b = a[n]), a[n] < e && (e = a[n]); + f = 1 << b; + d = new (H ? Uint32Array : Array)(f); + g = 1; + h = 0; + for (m = 2; g <= b;) { + for (n = 0; n < c; ++n) if (a[n] === g) { + j = 0; + s = h; + for (l = 0; l < g; ++l) j = j << 1 | s & 1, s >>= 1; + for (l = j; l < f; l += m) d[l] = g << 16 | n; + ++h; + } + ++g; + h <<= 1; + m <<= 1; + } + return [d, b, e]; + } + function ma(a, c) { + this.h = pa; + this.w = 0; + this.input = a; + this.b = 0; + c && (c.lazy && (this.w = c.lazy), "number" === typeof c.compressionType && (this.h = c.compressionType), c.outputBuffer && (this.a = H && c.outputBuffer instanceof Array ? new Uint8Array(c.outputBuffer) : c.outputBuffer), "number" === typeof c.outputIndex && (this.b = c.outputIndex)); + this.a || (this.a = new (H ? Uint8Array : Array)(32768)); + } + var pa = 2, + qa = { + NONE: 0, + r: 1, + j: pa, + N: 3 + }, + ra = [], + T; + for (T = 0; 288 > T; T++) switch (v) { + case 143 >= T: + ra.push([T + 48, 8]); + break; + case 255 >= T: + ra.push([T - 144 + 400, 9]); + break; + case 279 >= T: + ra.push([T - 256 + 0, 7]); + break; + case 287 >= T: + ra.push([T - 280 + 192, 8]); + break; + default: + i("invalid literal: " + T); + } + ma.prototype.n = function () { + var a, + c, + b, + e, + f = this.input; + switch (this.h) { + case 0: + b = 0; + for (e = f.length; b < e;) { + c = H ? f.subarray(b, b + 65535) : f.slice(b, b + 65535); + b += c.length; + var d = c, + g = b === e, + h = r, + m = r, + j = r, + s = r, + n = r, + l = this.a, + q = this.b; + if (H) { + for (l = new Uint8Array(this.a.buffer); l.length <= q + d.length + 5;) l = new Uint8Array(l.length << 1); + l.set(this.a); + } + h = g ? 1 : 0; + l[q++] = h | 0; + m = d.length; + j = ~m + 65536 & 65535; + l[q++] = m & 255; + l[q++] = m >>> 8 & 255; + l[q++] = j & 255; + l[q++] = j >>> 8 & 255; + if (H) l.set(d, q), q += d.length, l = l.subarray(0, q);else { + s = 0; + for (n = d.length; s < n; ++s) l[q++] = d[s]; + l.length = q; + } + this.b = q; + this.a = l; + } + break; + case 1: + var E = new J(new Uint8Array(this.a.buffer), this.b); + E.d(1, 1, v); + E.d(1, 2, v); + var t = sa(this, f), + z, + K, + A; + z = 0; + for (K = t.length; z < K; z++) if (A = t[z], J.prototype.d.apply(E, ra[A]), 256 < A) E.d(t[++z], t[++z], v), E.d(t[++z], 5), E.d(t[++z], t[++z], v);else if (256 === A) break; + this.a = E.finish(); + this.b = this.a.length; + break; + case pa: + var x = new J(new Uint8Array(this.a), this.b), + B, + k, + p, + D, + C, + da = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], + W, + Ma, + ea, + Na, + na, + va = Array(19), + Oa, + $, + oa, + F, + Pa; + B = pa; + x.d(1, 1, v); + x.d(B, 2, v); + k = sa(this, f); + W = ta(this.L, 15); + Ma = ua(W); + ea = ta(this.K, 7); + Na = ua(ea); + for (p = 286; 257 < p && 0 === W[p - 1]; p--); + for (D = 30; 1 < D && 0 === ea[D - 1]; D--); + var Qa = p, + Ra = D, + M = new (H ? Uint32Array : Array)(Qa + Ra), + u, + O, + w, + fa, + L = new (H ? Uint32Array : Array)(316), + I, + G, + P = new (H ? Uint8Array : Array)(19); + for (u = O = 0; u < Qa; u++) M[O++] = W[u]; + for (u = 0; u < Ra; u++) M[O++] = ea[u]; + if (!H) { + u = 0; + for (fa = P.length; u < fa; ++u) P[u] = 0; + } + u = I = 0; + for (fa = M.length; u < fa; u += O) { + for (O = 1; u + O < fa && M[u + O] === M[u]; ++O); + w = O; + if (0 === M[u]) { + if (3 > w) for (; 0 < w--;) L[I++] = 0, P[0]++;else for (; 0 < w;) G = 138 > w ? w : 138, G > w - 3 && G < w && (G = w - 3), 10 >= G ? (L[I++] = 17, L[I++] = G - 3, P[17]++) : (L[I++] = 18, L[I++] = G - 11, P[18]++), w -= G; + } else if (L[I++] = M[u], P[M[u]]++, w--, 3 > w) for (; 0 < w--;) L[I++] = M[u], P[M[u]]++;else for (; 0 < w;) G = 6 > w ? w : 6, G > w - 3 && G < w && (G = w - 3), L[I++] = 16, L[I++] = G - 3, P[16]++, w -= G; + } + a = H ? L.subarray(0, I) : L.slice(0, I); + na = ta(P, 7); + for (F = 0; 19 > F; F++) va[F] = na[da[F]]; + for (C = 19; 4 < C && 0 === va[C - 1]; C--); + Oa = ua(na); + x.d(p - 257, 5, v); + x.d(D - 1, 5, v); + x.d(C - 4, 4, v); + for (F = 0; F < C; F++) x.d(va[F], 3, v); + F = 0; + for (Pa = a.length; F < Pa; F++) if ($ = a[F], x.d(Oa[$], na[$], v), 16 <= $) { + F++; + switch ($) { + case 16: + oa = 2; + break; + case 17: + oa = 3; + break; + case 18: + oa = 7; + break; + default: + i("invalid code: " + $); + } + x.d(a[F], oa, v); + } + var Sa = [Ma, W], + Ta = [Na, ea], + Q, + Ua, + ga, + ya, + Va, + Wa, + Xa, + Ya; + Va = Sa[0]; + Wa = Sa[1]; + Xa = Ta[0]; + Ya = Ta[1]; + Q = 0; + for (Ua = k.length; Q < Ua; ++Q) if (ga = k[Q], x.d(Va[ga], Wa[ga], v), 256 < ga) x.d(k[++Q], k[++Q], v), ya = k[++Q], x.d(Xa[ya], Ya[ya], v), x.d(k[++Q], k[++Q], v);else if (256 === ga) break; + this.a = x.finish(); + this.b = this.a.length; + break; + default: + i("invalid compression type"); + } + return this.a; + }; + function wa(a, c) { + this.length = a; + this.G = c; + } + function xa() { + var a = za; + switch (v) { + case 3 === a: + return [257, a - 3, 0]; + case 4 === a: + return [258, a - 4, 0]; + case 5 === a: + return [259, a - 5, 0]; + case 6 === a: + return [260, a - 6, 0]; + case 7 === a: + return [261, a - 7, 0]; + case 8 === a: + return [262, a - 8, 0]; + case 9 === a: + return [263, a - 9, 0]; + case 10 === a: + return [264, a - 10, 0]; + case 12 >= a: + return [265, a - 11, 1]; + case 14 >= a: + return [266, a - 13, 1]; + case 16 >= a: + return [267, a - 15, 1]; + case 18 >= a: + return [268, a - 17, 1]; + case 22 >= a: + return [269, a - 19, 2]; + case 26 >= a: + return [270, a - 23, 2]; + case 30 >= a: + return [271, a - 27, 2]; + case 34 >= a: + return [272, a - 31, 2]; + case 42 >= a: + return [273, a - 35, 3]; + case 50 >= a: + return [274, a - 43, 3]; + case 58 >= a: + return [275, a - 51, 3]; + case 66 >= a: + return [276, a - 59, 3]; + case 82 >= a: + return [277, a - 67, 4]; + case 98 >= a: + return [278, a - 83, 4]; + case 114 >= a: + return [279, a - 99, 4]; + case 130 >= a: + return [280, a - 115, 4]; + case 162 >= a: + return [281, a - 131, 5]; + case 194 >= a: + return [282, a - 163, 5]; + case 226 >= a: + return [283, a - 195, 5]; + case 257 >= a: + return [284, a - 227, 5]; + case 258 === a: + return [285, a - 258, 0]; + default: + i("invalid length: " + a); + } + } + var Aa = [], + za, + Ba; + for (za = 3; 258 >= za; za++) Ba = xa(), Aa[za] = Ba[2] << 24 | Ba[1] << 16 | Ba[0]; + var Ca = H ? new Uint32Array(Aa) : Aa; + function sa(a, c) { + function b(a, c) { + var b = a.G, + d = [], + e = 0, + f; + f = Ca[a.length]; + d[e++] = f & 65535; + d[e++] = f >> 16 & 255; + d[e++] = f >> 24; + var g; + switch (v) { + case 1 === b: + g = [0, b - 1, 0]; + break; + case 2 === b: + g = [1, b - 2, 0]; + break; + case 3 === b: + g = [2, b - 3, 0]; + break; + case 4 === b: + g = [3, b - 4, 0]; + break; + case 6 >= b: + g = [4, b - 5, 1]; + break; + case 8 >= b: + g = [5, b - 7, 1]; + break; + case 12 >= b: + g = [6, b - 9, 2]; + break; + case 16 >= b: + g = [7, b - 13, 2]; + break; + case 24 >= b: + g = [8, b - 17, 3]; + break; + case 32 >= b: + g = [9, b - 25, 3]; + break; + case 48 >= b: + g = [10, b - 33, 4]; + break; + case 64 >= b: + g = [11, b - 49, 4]; + break; + case 96 >= b: + g = [12, b - 65, 5]; + break; + case 128 >= b: + g = [13, b - 97, 5]; + break; + case 192 >= b: + g = [14, b - 129, 6]; + break; + case 256 >= b: + g = [15, b - 193, 6]; + break; + case 384 >= b: + g = [16, b - 257, 7]; + break; + case 512 >= b: + g = [17, b - 385, 7]; + break; + case 768 >= b: + g = [18, b - 513, 8]; + break; + case 1024 >= b: + g = [19, b - 769, 8]; + break; + case 1536 >= b: + g = [20, b - 1025, 9]; + break; + case 2048 >= b: + g = [21, b - 1537, 9]; + break; + case 3072 >= b: + g = [22, b - 2049, 10]; + break; + case 4096 >= b: + g = [23, b - 3073, 10]; + break; + case 6144 >= b: + g = [24, b - 4097, 11]; + break; + case 8192 >= b: + g = [25, b - 6145, 11]; + break; + case 12288 >= b: + g = [26, b - 8193, 12]; + break; + case 16384 >= b: + g = [27, b - 12289, 12]; + break; + case 24576 >= b: + g = [28, b - 16385, 13]; + break; + case 32768 >= b: + g = [29, b - 24577, 13]; + break; + default: + i("invalid distance"); + } + f = g; + d[e++] = f[0]; + d[e++] = f[1]; + d[e++] = f[2]; + var h, j; + h = 0; + for (j = d.length; h < j; ++h) l[q++] = d[h]; + t[d[0]]++; + z[d[3]]++; + E = a.length + c - 1; + n = null; + } + var e, + f, + d, + g, + h, + m = {}, + j, + s, + n, + l = H ? new Uint16Array(2 * c.length) : [], + q = 0, + E = 0, + t = new (H ? Uint32Array : Array)(286), + z = new (H ? Uint32Array : Array)(30), + K = a.w, + A; + if (!H) { + for (d = 0; 285 >= d;) t[d++] = 0; + for (d = 0; 29 >= d;) z[d++] = 0; + } + t[256] = 1; + e = 0; + for (f = c.length; e < f; ++e) { + d = h = 0; + for (g = 3; d < g && e + d !== f; ++d) h = h << 8 | c[e + d]; + m[h] === r && (m[h] = []); + j = m[h]; + if (!(0 < E--)) { + for (; 0 < j.length && 32768 < e - j[0];) j.shift(); + if (e + 3 >= f) { + n && b(n, -1); + d = 0; + for (g = f - e; d < g; ++d) A = c[e + d], l[q++] = A, ++t[A]; + break; + } + if (0 < j.length) { + var x = r, + B = r, + k = 0, + p = r, + D = r, + C = r, + da = r, + W = c.length, + D = 0, + da = j.length; + a: for (; D < da; D++) { + x = j[da - D - 1]; + p = 3; + if (3 < k) { + for (C = k; 3 < C; C--) if (c[x + C - 1] !== c[e + C - 1]) continue a; + p = k; + } + for (; 258 > p && e + p < W && c[x + p] === c[e + p];) ++p; + p > k && (B = x, k = p); + if (258 === p) break; + } + s = new wa(k, e - B); + n ? n.length < s.length ? (A = c[e - 1], l[q++] = A, ++t[A], b(s, 0)) : b(n, -1) : s.length < K ? n = s : b(s, 0); + } else n ? b(n, -1) : (A = c[e], l[q++] = A, ++t[A]); + } + j.push(e); + } + l[q++] = 256; + t[256]++; + a.L = t; + a.K = z; + return H ? l.subarray(0, q) : l; + } + function ta(a, c) { + function b(a) { + var c = z[a][K[a]]; + c === n ? (b(a + 1), b(a + 1)) : --E[c]; + ++K[a]; + } + var e = a.length, + f = new la(572), + d = new (H ? Uint8Array : Array)(e), + g, + h, + m, + j, + s; + if (!H) for (j = 0; j < e; j++) d[j] = 0; + for (j = 0; j < e; ++j) 0 < a[j] && f.push(j, a[j]); + g = Array(f.length / 2); + h = new (H ? Uint32Array : Array)(f.length / 2); + if (1 === g.length) return d[f.pop().index] = 1, d; + j = 0; + for (s = f.length / 2; j < s; ++j) g[j] = f.pop(), h[j] = g[j].value; + var n = h.length, + l = new (H ? Uint16Array : Array)(c), + q = new (H ? Uint8Array : Array)(c), + E = new (H ? Uint8Array : Array)(n), + t = Array(c), + z = Array(c), + K = Array(c), + A = (1 << c) - n, + x = 1 << c - 1, + B, + k, + p, + D, + C; + l[c - 1] = n; + for (k = 0; k < c; ++k) A < x ? q[k] = 0 : (q[k] = 1, A -= x), A <<= 1, l[c - 2 - k] = (l[c - 1 - k] / 2 | 0) + n; + l[0] = q[0]; + t[0] = Array(l[0]); + z[0] = Array(l[0]); + for (k = 1; k < c; ++k) l[k] > 2 * l[k - 1] + q[k] && (l[k] = 2 * l[k - 1] + q[k]), t[k] = Array(l[k]), z[k] = Array(l[k]); + for (B = 0; B < n; ++B) E[B] = c; + for (p = 0; p < l[c - 1]; ++p) t[c - 1][p] = h[p], z[c - 1][p] = p; + for (B = 0; B < c; ++B) K[B] = 0; + 1 === q[c - 1] && (--E[0], ++K[c - 1]); + for (k = c - 2; 0 <= k; --k) { + D = B = 0; + C = K[k + 1]; + for (p = 0; p < l[k]; p++) D = t[k + 1][C] + t[k + 1][C + 1], D > h[B] ? (t[k][p] = D, z[k][p] = n, C += 2) : (t[k][p] = h[B], z[k][p] = B, ++B); + K[k] = 0; + 1 === q[k] && b(k); + } + m = E; + j = 0; + for (s = g.length; j < s; ++j) d[g[j].index] = m[j]; + return d; + } + function ua(a) { + var c = new (H ? Uint16Array : Array)(a.length), + b = [], + e = [], + f = 0, + d, + g, + h, + m; + d = 0; + for (g = a.length; d < g; d++) b[a[d]] = (b[a[d]] | 0) + 1; + d = 1; + for (g = 16; d <= g; d++) e[d] = f, f += b[d] | 0, f > 1 << d && i("overcommitted"), f <<= 1; + 65536 > f && i("undercommitted"); + d = 0; + for (g = a.length; d < g; d++) { + f = e[a[d]]; + e[a[d]] += 1; + h = c[d] = 0; + for (m = a[d]; h < m; h++) c[d] = c[d] << 1 | f & 1, f >>>= 1; + } + return c; + } + function Da(a, c) { + this.input = a; + this.a = new (H ? Uint8Array : Array)(32768); + this.h = U.j; + var b = {}, + e; + if ((c || !(c = {})) && "number" === typeof c.compressionType) this.h = c.compressionType; + for (e in c) b[e] = c[e]; + b.outputBuffer = this.a; + this.z = new ma(this.input, b); + } + var U = qa; + Da.prototype.n = function () { + var a, + c, + b, + e, + f, + d, + g, + h = 0; + g = this.a; + a = Ea; + switch (a) { + case Ea: + c = Math.LOG2E * Math.log(32768) - 8; + break; + default: + i(Error("invalid compression method")); + } + b = c << 4 | a; + g[h++] = b; + switch (a) { + case Ea: + switch (this.h) { + case U.NONE: + f = 0; + break; + case U.r: + f = 1; + break; + case U.j: + f = 2; + break; + default: + i(Error("unsupported compression type")); + } + break; + default: + i(Error("invalid compression method")); + } + e = f << 6 | 0; + g[h++] = e | 31 - (256 * b + e) % 31; + d = ba(this.input); + this.z.b = h; + g = this.z.n(); + h = g.length; + H && (g = new Uint8Array(g.buffer), g.length <= h + 4 && (this.a = new Uint8Array(g.length + 4), this.a.set(g), g = this.a), g = g.subarray(0, h + 4)); + g[h++] = d >> 24 & 255; + g[h++] = d >> 16 & 255; + g[h++] = d >> 8 & 255; + g[h++] = d & 255; + return g; + }; + y("Zlib.Deflate", Da); + y("Zlib.Deflate.compress", function (a, c) { + return new Da(a, c).n(); + }); + y("Zlib.Deflate.CompressionType", U); + y("Zlib.Deflate.CompressionType.NONE", U.NONE); + y("Zlib.Deflate.CompressionType.FIXED", U.r); + y("Zlib.Deflate.CompressionType.DYNAMIC", U.j); + function V(a, c) { + this.k = []; + this.l = 32768; + this.e = this.g = this.c = this.q = 0; + this.input = H ? new Uint8Array(a) : a; + this.s = !1; + this.m = Fa; + this.B = !1; + if (c || !(c = {})) c.index && (this.c = c.index), c.bufferSize && (this.l = c.bufferSize), c.bufferType && (this.m = c.bufferType), c.resize && (this.B = c.resize); + switch (this.m) { + case Ga: + this.b = 32768; + this.a = new (H ? Uint8Array : Array)(32768 + this.l + 258); + break; + case Fa: + this.b = 0; + this.a = new (H ? Uint8Array : Array)(this.l); + this.f = this.J; + this.t = this.H; + this.o = this.I; + break; + default: + i(Error("invalid inflate mode")); + } + } + var Ga = 0, + Fa = 1, + Ha = { + D: Ga, + C: Fa + }; + V.prototype.p = function () { + for (; !this.s;) { + var a = X(this, 3); + a & 1 && (this.s = v); + a >>>= 1; + switch (a) { + case 0: + var c = this.input, + b = this.c, + e = this.a, + f = this.b, + d = r, + g = r, + h = r, + m = e.length, + j = r; + this.e = this.g = 0; + d = c[b++]; + d === r && i(Error("invalid uncompressed block header: LEN (first byte)")); + g = d; + d = c[b++]; + d === r && i(Error("invalid uncompressed block header: LEN (second byte)")); + g |= d << 8; + d = c[b++]; + d === r && i(Error("invalid uncompressed block header: NLEN (first byte)")); + h = d; + d = c[b++]; + d === r && i(Error("invalid uncompressed block header: NLEN (second byte)")); + h |= d << 8; + g === ~h && i(Error("invalid uncompressed block header: length verify")); + b + g > c.length && i(Error("input buffer is broken")); + switch (this.m) { + case Ga: + for (; f + g > e.length;) { + j = m - f; + g -= j; + if (H) e.set(c.subarray(b, b + j), f), f += j, b += j;else for (; j--;) e[f++] = c[b++]; + this.b = f; + e = this.f(); + f = this.b; + } + break; + case Fa: + for (; f + g > e.length;) e = this.f({ + v: 2 + }); + break; + default: + i(Error("invalid inflate mode")); + } + if (H) e.set(c.subarray(b, b + g), f), f += g, b += g;else for (; g--;) e[f++] = c[b++]; + this.c = b; + this.b = f; + this.a = e; + break; + case 1: + this.o(Ia, Ja); + break; + case 2: + Ka(this); + break; + default: + i(Error("unknown BTYPE: " + a)); + } + } + return this.t(); + }; + var La = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], + Za = H ? new Uint16Array(La) : La, + $a = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 258, 258], + ab = H ? new Uint16Array($a) : $a, + bb = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0], + cb = H ? new Uint8Array(bb) : bb, + db = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577], + eb = H ? new Uint16Array(db) : db, + fb = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], + gb = H ? new Uint8Array(fb) : fb, + hb = new (H ? Uint8Array : Array)(288), + Y, + ib; + Y = 0; + for (ib = hb.length; Y < ib; ++Y) hb[Y] = 143 >= Y ? 8 : 255 >= Y ? 9 : 279 >= Y ? 7 : 8; + var Ia = S(hb), + jb = new (H ? Uint8Array : Array)(30), + kb, + lb; + kb = 0; + for (lb = jb.length; kb < lb; ++kb) jb[kb] = 5; + var Ja = S(jb); + function X(a, c) { + for (var b = a.g, e = a.e, f = a.input, d = a.c, g; e < c;) g = f[d++], g === r && i(Error("input buffer is broken")), b |= g << e, e += 8; + g = b & (1 << c) - 1; + a.g = b >>> c; + a.e = e - c; + a.c = d; + return g; + } + function mb(a, c) { + for (var b = a.g, e = a.e, f = a.input, d = a.c, g = c[0], h = c[1], m, j, s; e < h;) m = f[d++], m === r && i(Error("input buffer is broken")), b |= m << e, e += 8; + j = g[b & (1 << h) - 1]; + s = j >>> 16; + a.g = b >> s; + a.e = e - s; + a.c = d; + return j & 65535; + } + function Ka(a) { + function c(a, b, c) { + var d, e, f, g; + for (g = 0; g < a;) switch (d = mb(this, b), d) { + case 16: + for (f = 3 + X(this, 2); f--;) c[g++] = e; + break; + case 17: + for (f = 3 + X(this, 3); f--;) c[g++] = 0; + e = 0; + break; + case 18: + for (f = 11 + X(this, 7); f--;) c[g++] = 0; + e = 0; + break; + default: + e = c[g++] = d; + } + return c; + } + var b = X(a, 5) + 257, + e = X(a, 5) + 1, + f = X(a, 4) + 4, + d = new (H ? Uint8Array : Array)(Za.length), + g, + h, + m, + j; + for (j = 0; j < f; ++j) d[Za[j]] = X(a, 3); + g = S(d); + h = new (H ? Uint8Array : Array)(b); + m = new (H ? Uint8Array : Array)(e); + a.o(S(c.call(a, b, g, h)), S(c.call(a, e, g, m))); + } + V.prototype.o = function (a, c) { + var b = this.a, + e = this.b; + this.u = a; + for (var f = b.length - 258, d, g, h, m; 256 !== (d = mb(this, a));) if (256 > d) e >= f && (this.b = e, b = this.f(), e = this.b), b[e++] = d;else { + g = d - 257; + m = ab[g]; + 0 < cb[g] && (m += X(this, cb[g])); + d = mb(this, c); + h = eb[d]; + 0 < gb[d] && (h += X(this, gb[d])); + e >= f && (this.b = e, b = this.f(), e = this.b); + for (; m--;) b[e] = b[e++ - h]; + } + for (; 8 <= this.e;) this.e -= 8, this.c--; + this.b = e; + }; + V.prototype.I = function (a, c) { + var b = this.a, + e = this.b; + this.u = a; + for (var f = b.length, d, g, h, m; 256 !== (d = mb(this, a));) if (256 > d) e >= f && (b = this.f(), f = b.length), b[e++] = d;else { + g = d - 257; + m = ab[g]; + 0 < cb[g] && (m += X(this, cb[g])); + d = mb(this, c); + h = eb[d]; + 0 < gb[d] && (h += X(this, gb[d])); + e + m > f && (b = this.f(), f = b.length); + for (; m--;) b[e] = b[e++ - h]; + } + for (; 8 <= this.e;) this.e -= 8, this.c--; + this.b = e; + }; + V.prototype.f = function () { + var a = new (H ? Uint8Array : Array)(this.b - 32768), + c = this.b - 32768, + b, + e, + f = this.a; + if (H) a.set(f.subarray(32768, a.length));else { + b = 0; + for (e = a.length; b < e; ++b) a[b] = f[b + 32768]; + } + this.k.push(a); + this.q += a.length; + if (H) f.set(f.subarray(c, c + 32768));else for (b = 0; 32768 > b; ++b) f[b] = f[c + b]; + this.b = 32768; + return f; + }; + V.prototype.J = function (a) { + var c, + b = this.input.length / this.c + 1 | 0, + e, + f, + d, + g = this.input, + h = this.a; + a && ("number" === typeof a.v && (b = a.v), "number" === typeof a.F && (b += a.F)); + 2 > b ? (e = (g.length - this.c) / this.u[2], d = 258 * (e / 2) | 0, f = d < h.length ? h.length + d : h.length << 1) : f = h.length * b; + H ? (c = new Uint8Array(f), c.set(h)) : c = h; + return this.a = c; + }; + V.prototype.t = function () { + var a = 0, + c = this.a, + b = this.k, + e, + f = new (H ? Uint8Array : Array)(this.q + (this.b - 32768)), + d, + g, + h, + m; + if (0 === b.length) return H ? this.a.subarray(32768, this.b) : this.a.slice(32768, this.b); + d = 0; + for (g = b.length; d < g; ++d) { + e = b[d]; + h = 0; + for (m = e.length; h < m; ++h) f[a++] = e[h]; + } + d = 32768; + for (g = this.b; d < g; ++d) f[a++] = c[d]; + this.k = []; + return this.buffer = f; + }; + V.prototype.H = function () { + var a, + c = this.b; + H ? this.B ? (a = new Uint8Array(c), a.set(this.a.subarray(0, c))) : a = this.a.subarray(0, c) : (this.a.length > c && (this.a.length = c), a = this.a); + return this.buffer = a; + }; + function nb(a, c) { + var b, e; + this.input = a; + this.c = 0; + if (c || !(c = {})) c.index && (this.c = c.index), c.verify && (this.M = c.verify); + b = a[this.c++]; + e = a[this.c++]; + switch (b & 15) { + case Ea: + this.method = Ea; + break; + default: + i(Error("unsupported compression method")); + } + 0 !== ((b << 8) + e) % 31 && i(Error("invalid fcheck flag:" + ((b << 8) + e) % 31)); + e & 32 && i(Error("fdict flag is not supported")); + this.A = new V(a, { + index: this.c, + bufferSize: c.bufferSize, + bufferType: c.bufferType, + resize: c.resize + }); + } + nb.prototype.p = function () { + var a = this.input, + c, + b; + c = this.A.p(); + this.c = this.A.c; + this.M && (b = (a[this.c++] << 24 | a[this.c++] << 16 | a[this.c++] << 8 | a[this.c++]) >>> 0, b !== ba(c) && i(Error("invalid adler-32 checksum"))); + return c; + }; + y("Zlib.Inflate", nb); + y("Zlib.Inflate.BufferType", Ha); + Ha.ADAPTIVE = Ha.C; + Ha.BLOCK = Ha.D; + y("Zlib.Inflate.prototype.decompress", nb.prototype.p); + var tb = new (H ? Uint8Array : Array)(288), + Z, + ub; + Z = 0; + for (ub = tb.length; Z < ub; ++Z) tb[Z] = 143 >= Z ? 8 : 255 >= Z ? 9 : 279 >= Z ? 7 : 8; + S(tb); + var vb = new (H ? Uint8Array : Array)(30), + wb, + xb; + wb = 0; + for (xb = vb.length; wb < xb; ++wb) vb[wb] = 5; + S(vb); + var Ea = 8; + }).call(window$1); + var _p = window$1.Zlib; + _p.Deflate = _p["Deflate"]; + _p.Deflate.compress = _p.Deflate["compress"]; + _p.Inflate = _p["Inflate"]; + _p.Inflate.BufferType = _p.Inflate["BufferType"]; + _p.Inflate.prototype.decompress = _p.Inflate.prototype["decompress"]; + + var _dec$1E, _class$1D, _class2$1q, _initializer$1i, _initializer2$12, _initializer3$N; + function getIndexStrideCtor(stride) { + switch (stride) { + case 1: + return Uint8Array; + case 2: + return Uint16Array; + case 4: + return Uint32Array; + default: + return Uint8Array; + } + } + var v3_1$1 = new Vec3(); + var v3_2 = new Vec3(); + var globalEmptyMeshBuffer = new Uint8Array(); + var Mesh = (_dec$1E = ccclass$t('cc.Mesh'), _dec$1E(_class$1D = (_class2$1q = function (_Asset) { + _inheritsLoose(Mesh, _Asset); + function Mesh() { + var _this; + _this = _Asset.call(this) || this; + _this.morphRendering = null; + _this._struct = _initializer$1i && _initializer$1i(); + _this._hash = _initializer2$12 && _initializer2$12(); + _this._data = globalEmptyMeshBuffer; + _this._initialized = false; + _this._allowDataAccess = _initializer3$N && _initializer3$N(); + _this._isMeshDataUploaded = false; + _this._renderingSubMeshes = null; + _this._boneSpaceBounds = new Map(); + _this._jointBufferIndices = null; + return _this; + } + var _proto = Mesh.prototype; + _proto.onLoaded = function onLoaded() { + this.initialize(); + }; + _proto.initialize = function initialize() { + if (this._initialized) { + return; + } + this._initialized = true; + var info = { + struct: this.struct, + data: this.data + }; + if (info.struct.compressed) { + info = inflateMesh(info); + } + if (this.struct.encoded) { + info = decodeMesh(info); + } + if (this.struct.quantized && !(deviceManager.gfxDevice.getFormatFeatures(Format.RGB16F) & FormatFeatureBit.VERTEX_ATTRIBUTE)) { + info = dequantizeMesh(info); + } + this._struct = info.struct; + this._data = info.data; + if (this._struct.dynamic) { + var device = deviceManager.gfxDevice; + var vertexBuffers = []; + var subMeshes = []; + for (var i = 0; i < this._struct.vertexBundles.length; i++) { + var _vertexBundle = this._struct.vertexBundles[i]; + var vertexBuffer = device.createBuffer(new BufferInfo(BufferUsageBit.VERTEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, _vertexBundle.view.length, _vertexBundle.view.stride)); + vertexBuffers.push(vertexBuffer); + } + for (var _i = 0; _i < this._struct.primitives.length; _i++) { + var primitive = this._struct.primitives[_i]; + var indexView = primitive.indexView; + var indexBuffer = null; + if (indexView) { + indexBuffer = device.createBuffer(new BufferInfo(BufferUsageBit.INDEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, indexView.length, indexView.stride)); + } + var subVBs = []; + for (var k = 0; k < primitive.vertexBundelIndices.length; k++) { + var idx = primitive.vertexBundelIndices[k]; + subVBs.push(vertexBuffers[idx]); + } + var attributes = []; + for (var _k = 0; _k < primitive.vertexBundelIndices.length; _k++) { + var _idx = primitive.vertexBundelIndices[_k]; + var _vertexBundle2 = this._struct.vertexBundles[_idx]; + for (var _iterator = _createForOfIteratorHelperLoose(_vertexBundle2.attributes), _step; !(_step = _iterator()).done;) { + var attr = _step.value; + var attribute = new Attribute(); + attribute.copy(attr); + attributes.push(attribute); + } + } + var subMesh = new RenderingSubMesh(subVBs, attributes, primitive.primitiveMode, indexBuffer); + subMesh.drawInfo = new DrawInfo(); + subMesh.mesh = this; + subMesh.subMeshIdx = _i; + subMeshes.push(subMesh); + } + this._renderingSubMeshes = subMeshes; + } else { + var buffer = this._data.buffer; + var gfxDevice = deviceManager.gfxDevice; + var _vertexBuffers = this._createVertexBuffers(gfxDevice, buffer); + var indexBuffers = []; + var _subMeshes = []; + for (var _i2 = 0; _i2 < this._struct.primitives.length; _i2++) { + var prim = this._struct.primitives[_i2]; + if (prim.vertexBundelIndices.length === 0) { + continue; + } + var _indexBuffer = null; + var ib = void 0; + if (prim.indexView) { + var idxView = prim.indexView; + var dstStride = idxView.stride; + var dstSize = idxView.length; + if (dstStride === 4 && !gfxDevice.hasFeature(Feature.ELEMENT_INDEX_UINT)) { + var vertexCount = this._struct.vertexBundles[prim.vertexBundelIndices[0]].view.count; + if (vertexCount >= 65536) { + warnID(10001, vertexCount, 65536); + continue; + } else { + dstStride >>= 1; + dstSize >>= 1; + } + } + _indexBuffer = gfxDevice.createBuffer(new BufferInfo(BufferUsageBit.INDEX, MemoryUsageBit.DEVICE, dstSize, dstStride)); + indexBuffers.push(_indexBuffer); + ib = new (getIndexStrideCtor(idxView.stride))(buffer, idxView.offset, idxView.count); + if (idxView.stride !== dstStride) { + ib = getIndexStrideCtor(dstStride).from(ib); + } + _indexBuffer.update(ib); + } + var vbReference = prim.vertexBundelIndices.map(function (idx) { + return _vertexBuffers[idx]; + }); + var gfxAttributes = []; + if (prim.vertexBundelIndices.length > 0) { + var _idx2 = prim.vertexBundelIndices[0]; + var _vertexBundle3 = this._struct.vertexBundles[_idx2]; + var attrs = _vertexBundle3.attributes; + for (var j = 0; j < attrs.length; ++j) { + var _attr = attrs[j]; + gfxAttributes[j] = new Attribute(_attr.name, _attr.format, _attr.isNormalized, _attr.stream, _attr.isInstanced, _attr.location); + } + } + var _subMesh = new RenderingSubMesh(vbReference, gfxAttributes, prim.primitiveMode, _indexBuffer); + _subMesh.mesh = this; + _subMesh.subMeshIdx = _i2; + _subMeshes.push(_subMesh); + } + this._renderingSubMeshes = _subMeshes; + if (this._struct.morph) { + this.morphRendering = createMorphRendering(this, gfxDevice); + } + this._isMeshDataUploaded = true; + if (!this._allowDataAccess && !EDITOR) { + this.releaseData(); + } + } + }; + _proto.updateSubMesh = function updateSubMesh(primitiveIndex, dynamicGeometry) { + if (!this._struct.dynamic) { + warnID(14200); + return; + } + if (primitiveIndex >= this._struct.primitives.length) { + warnID(14201); + return; + } + var buffers = []; + if (dynamicGeometry.positions.length > 0) { + buffers.push(dynamicGeometry.positions); + } + if (dynamicGeometry.normals && dynamicGeometry.normals.length > 0) { + buffers.push(dynamicGeometry.normals); + } + if (dynamicGeometry.uvs && dynamicGeometry.uvs.length > 0) { + buffers.push(dynamicGeometry.uvs); + } + if (dynamicGeometry.tangents && dynamicGeometry.tangents.length > 0) { + buffers.push(dynamicGeometry.tangents); + } + if (dynamicGeometry.colors && dynamicGeometry.colors.length > 0) { + buffers.push(dynamicGeometry.colors); + } + if (dynamicGeometry.customAttributes) { + for (var k = 0; k < dynamicGeometry.customAttributes.length; k++) { + buffers.push(dynamicGeometry.customAttributes[k].values); + } + } + var dynamic = this._struct.dynamic; + var info = dynamic.info; + var primitive = this._struct.primitives[primitiveIndex]; + var subMesh = this._renderingSubMeshes[primitiveIndex]; + var drawInfo = subMesh.drawInfo; + for (var index = 0; index < buffers.length; index++) { + var vertices = buffers[index]; + var bundle = this._struct.vertexBundles[primitive.vertexBundelIndices[index]]; + var stride = bundle.view.stride; + var vertexCount = vertices.byteLength / stride; + var updateSize = vertices.byteLength; + var dstBuffer = new Uint8Array(this._data.buffer, bundle.view.offset, updateSize); + var srcBuffer = new Uint8Array(vertices.buffer, vertices.byteOffset, updateSize); + var vertexBuffer = subMesh.vertexBuffers[index]; + assertIsTrue(vertexCount <= info.maxSubMeshVertices, 'Too many vertices.'); + if (updateSize > 0) { + dstBuffer.set(srcBuffer); + vertexBuffer.update(srcBuffer, updateSize); + } + bundle.view.count = vertexCount; + drawInfo.vertexCount = vertexCount; + } + if (primitive.indexView) { + var indexView = primitive.indexView; + var _stride = indexView.stride; + var indexCount = _stride === 2 ? dynamicGeometry.indices16.length : dynamicGeometry.indices32.length; + var _updateSize = indexCount * _stride; + var _dstBuffer = new Uint8Array(this._data.buffer, indexView.offset, _updateSize); + var _srcBuffer = _stride === 2 ? new Uint8Array(dynamicGeometry.indices16.buffer, dynamicGeometry.indices16.byteOffset, _updateSize) : new Uint8Array(dynamicGeometry.indices32.buffer, dynamicGeometry.indices32.byteOffset, _updateSize); + var indexBuffer = subMesh.indexBuffer; + assertIsTrue(indexCount <= info.maxSubMeshIndices, 'Too many indices.'); + if (_updateSize > 0) { + _dstBuffer.set(_srcBuffer); + indexBuffer.update(_srcBuffer, _updateSize); + } + indexView.count = indexCount; + drawInfo.indexCount = indexCount; + } + if (dynamicGeometry.minPos && dynamicGeometry.maxPos) { + var minPos = new Vec3(dynamicGeometry.minPos.x, dynamicGeometry.minPos.y, dynamicGeometry.minPos.z); + var maxPos = new Vec3(dynamicGeometry.maxPos.x, dynamicGeometry.maxPos.y, dynamicGeometry.maxPos.z); + if (!dynamic.bounds[primitiveIndex]) { + dynamic.bounds[primitiveIndex] = new AABB(); + } + AABB.fromPoints(dynamic.bounds[primitiveIndex], minPos, maxPos); + var subMin = new Vec3(); + var subMax = new Vec3(); + for (var _iterator2 = _createForOfIteratorHelperLoose(dynamic.bounds), _step2; !(_step2 = _iterator2()).done;) { + var bound = _step2.value; + if (bound) { + bound.getBoundary(subMin, subMax); + Vec3.min(minPos, subMin, minPos); + Vec3.max(maxPos, subMax, maxPos); + } + } + this._struct.minPosition = new Vec3(minPos.x, minPos.y, minPos.z); + this._struct.maxPosition = new Vec3(maxPos.x, maxPos.y, maxPos.z); + } + subMesh.invalidateGeometricInfo(); + }; + _proto.destroy = function destroy() { + this.destroyRenderingMesh(); + return _Asset.prototype.destroy.call(this); + }; + _proto.destroyRenderingMesh = function destroyRenderingMesh() { + if (this._renderingSubMeshes) { + for (var i = 0; i < this._renderingSubMeshes.length; i++) { + this._renderingSubMeshes[i].destroy(); + } + this._renderingSubMeshes = null; + this._initialized = false; + this._isMeshDataUploaded = false; + } + }; + _proto.assign = function assign(struct, data) { + this.reset({ + struct: struct, + data: data + }); + }; + _proto.reset = function reset(info) { + this.destroyRenderingMesh(); + this._struct = info.struct; + this._data = info.data; + this._hash = 0; + }; + _proto.getBoneSpaceBounds = function getBoneSpaceBounds(skeleton) { + if (this._boneSpaceBounds.has(skeleton.hash)) { + return this._boneSpaceBounds.get(skeleton.hash); + } + var bounds = []; + this._boneSpaceBounds.set(skeleton.hash, bounds); + var valid = []; + var bindposes = skeleton.bindposes; + for (var i = 0; i < bindposes.length; i++) { + bounds.push(new AABB(Infinity, Infinity, Infinity, -Infinity, -Infinity, -Infinity)); + valid.push(false); + } + var primitives = this._struct.primitives; + for (var p = 0; p < primitives.length; p++) { + var joints = this.readAttribute(p, AttributeName.ATTR_JOINTS); + var weights = this.readAttribute(p, AttributeName.ATTR_WEIGHTS); + var positions = this.readAttribute(p, AttributeName.ATTR_POSITION); + if (!joints || !weights || !positions) { + continue; + } + var vertCount = Math.min(joints.length / 4, weights.length / 4, positions.length / 3); + for (var _i3 = 0; _i3 < vertCount; _i3++) { + Vec3.set(v3_1$1, positions[3 * _i3 + 0], positions[3 * _i3 + 1], positions[3 * _i3 + 2]); + for (var j = 0; j < 4; ++j) { + var idx = 4 * _i3 + j; + var joint = joints[idx]; + if (weights[idx] === 0 || joint >= bindposes.length) { + continue; + } + Vec3.transformMat4(v3_2, v3_1$1, bindposes[joint]); + valid[joint] = true; + var b = bounds[joint]; + Vec3.min(b.center, b.center, v3_2); + Vec3.max(b.halfExtents, b.halfExtents, v3_2); + } + } + } + for (var _i4 = 0; _i4 < bindposes.length; _i4++) { + var _b = bounds[_i4]; + if (!valid[_i4]) { + bounds[_i4] = null; + } else { + AABB.fromPoints(_b, _b.center, _b.halfExtents); + } + } + return bounds; + }; + _proto.merge = function merge(mesh, worldMatrix, validate) { + if (validate) { + if (!this.validateMergingMesh(mesh)) { + return false; + } + } + var vec3_temp = new Vec3(); + var rotate = worldMatrix && new Quat(); + var boundingBox = worldMatrix && new AABB(); + if (rotate) { + worldMatrix.getRotation(rotate); + } + if (!this._initialized) { + var struct = JSON.parse(JSON.stringify(mesh._struct)); + var data = mesh._data.slice(); + if (worldMatrix) { + if (struct.maxPosition && struct.minPosition) { + Vec3.add(boundingBox.center, struct.maxPosition, struct.minPosition); + Vec3.multiplyScalar(boundingBox.center, boundingBox.center, 0.5); + Vec3.subtract(boundingBox.halfExtents, struct.maxPosition, struct.minPosition); + Vec3.multiplyScalar(boundingBox.halfExtents, boundingBox.halfExtents, 0.5); + AABB.transform(boundingBox, boundingBox, worldMatrix); + Vec3.add(struct.maxPosition, boundingBox.center, boundingBox.halfExtents); + Vec3.subtract(struct.minPosition, boundingBox.center, boundingBox.halfExtents); + } + for (var i = 0; i < struct.vertexBundles.length; i++) { + var vtxBdl = struct.vertexBundles[i]; + for (var j = 0; j < vtxBdl.attributes.length; j++) { + if (vtxBdl.attributes[j].name === AttributeName.ATTR_POSITION || vtxBdl.attributes[j].name === AttributeName.ATTR_NORMAL) { + var format = vtxBdl.attributes[j].format; + var inputView = new DataView(data.buffer, vtxBdl.view.offset + getOffset(vtxBdl.attributes, j)); + var reader = getReader(inputView, format); + var writer = getWriter(inputView, format); + if (!reader || !writer) { + continue; + } + var vertexCount = vtxBdl.view.count; + var vertexStride = vtxBdl.view.stride; + var attrComponentByteLength = getComponentByteLength(format); + for (var vtxIdx = 0; vtxIdx < vertexCount; vtxIdx++) { + var xOffset = vtxIdx * vertexStride; + var yOffset = xOffset + attrComponentByteLength; + var zOffset = yOffset + attrComponentByteLength; + vec3_temp.set(reader(xOffset), reader(yOffset), reader(zOffset)); + switch (vtxBdl.attributes[j].name) { + case AttributeName.ATTR_POSITION: + vec3_temp.transformMat4(worldMatrix); + break; + case AttributeName.ATTR_NORMAL: + Vec3.transformQuat(vec3_temp, vec3_temp, rotate); + break; + } + writer(xOffset, vec3_temp.x); + writer(yOffset, vec3_temp.y); + writer(zOffset, vec3_temp.z); + } + } + } + } + } + this.reset({ + struct: struct, + data: data + }); + this.initialize(); + return true; + } + var bufferBlob = new BufferBlob(); + var vertCount = 0; + var vertStride = 0; + var srcOffset = 0; + var dstOffset = 0; + var vb; + var vbView; + var srcVBView; + var dstVBView; + var srcAttrOffset = 0; + var srcVBOffset = 0; + var dstVBOffset = 0; + var attrSize = 0; + var dstAttrView; + var hasAttr = false; + var vertexBundles = new Array(this._struct.vertexBundles.length); + for (var _i5 = 0; _i5 < this._struct.vertexBundles.length; ++_i5) { + var bundle = this._struct.vertexBundles[_i5]; + var dstBundle = mesh._struct.vertexBundles[_i5]; + srcOffset = bundle.view.offset; + dstOffset = dstBundle.view.offset; + vertStride = bundle.view.stride; + vertCount = bundle.view.count + dstBundle.view.count; + vb = new ArrayBuffer(vertCount * vertStride); + vbView = new Uint8Array(vb); + srcVBView = this._data.subarray(srcOffset, srcOffset + bundle.view.length); + srcOffset += srcVBView.length; + dstVBView = mesh._data.subarray(dstOffset, dstOffset + dstBundle.view.length); + dstOffset += dstVBView.length; + vbView.set(srcVBView); + srcAttrOffset = 0; + for (var _iterator3 = _createForOfIteratorHelperLoose(bundle.attributes), _step3; !(_step3 = _iterator3()).done;) { + var attr = _step3.value; + dstVBOffset = 0; + hasAttr = false; + for (var _iterator4 = _createForOfIteratorHelperLoose(dstBundle.attributes), _step4; !(_step4 = _iterator4()).done;) { + var dstAttr = _step4.value; + if (attr.name === dstAttr.name && attr.format === dstAttr.format) { + hasAttr = true; + break; + } + dstVBOffset += FormatInfos[dstAttr.format].size; + } + if (hasAttr) { + attrSize = FormatInfos[attr.format].size; + srcVBOffset = bundle.view.length + srcAttrOffset; + for (var v = 0; v < dstBundle.view.count; ++v) { + dstAttrView = dstVBView.subarray(dstVBOffset, dstVBOffset + attrSize); + vbView.set(dstAttrView, srcVBOffset); + if ((attr.name === AttributeName.ATTR_POSITION || attr.name === AttributeName.ATTR_NORMAL) && worldMatrix) { + var f32_temp = new Float32Array(vbView.buffer, srcVBOffset, 3); + vec3_temp.set(f32_temp[0], f32_temp[1], f32_temp[2]); + switch (attr.name) { + case AttributeName.ATTR_POSITION: + vec3_temp.transformMat4(worldMatrix); + break; + case AttributeName.ATTR_NORMAL: + Vec3.transformQuat(vec3_temp, vec3_temp, rotate); + break; + } + f32_temp[0] = vec3_temp.x; + f32_temp[1] = vec3_temp.y; + f32_temp[2] = vec3_temp.z; + } + srcVBOffset += bundle.view.stride; + dstVBOffset += dstBundle.view.stride; + } + } + srcAttrOffset += FormatInfos[attr.format].size; + } + vertexBundles[_i5] = { + attributes: bundle.attributes, + view: { + offset: bufferBlob.getLength(), + length: vb.byteLength, + count: vertCount, + stride: vertStride + } + }; + bufferBlob.addBuffer(vb); + } + var idxCount = 0; + var idxStride = 2; + var ibView; + var srcIBView; + var dstIBView; + var primitives = new Array(this._struct.primitives.length); + for (var _i6 = 0; _i6 < this._struct.primitives.length; ++_i6) { + var prim = this._struct.primitives[_i6]; + var dstPrim = mesh._struct.primitives[_i6]; + primitives[_i6] = { + primitiveMode: prim.primitiveMode, + vertexBundelIndices: prim.vertexBundelIndices + }; + var vertBatchCount = 0; + for (var _iterator5 = _createForOfIteratorHelperLoose(prim.vertexBundelIndices), _step5; !(_step5 = _iterator5()).done;) { + var bundleIdx = _step5.value; + vertBatchCount = Math.max(vertBatchCount, this._struct.vertexBundles[bundleIdx].view.count); + } + if (prim.indexView && dstPrim.indexView) { + idxCount = prim.indexView.count; + idxCount += dstPrim.indexView.count; + srcOffset = prim.indexView.offset; + dstOffset = dstPrim.indexView.offset; + if (idxCount < 256) { + idxStride = 1; + } else if (idxCount < 65536) { + idxStride = 2; + } else { + idxStride = 4; + } + var ib = new ArrayBuffer(idxCount * idxStride); + if (idxStride === 2) { + ibView = new Uint16Array(ib); + } else if (idxStride === 1) { + ibView = new Uint8Array(ib); + } else { + ibView = new Uint32Array(ib); + } + if (prim.indexView.stride === 2) { + srcIBView = new Uint16Array(this._data.buffer, srcOffset, prim.indexView.count); + } else if (prim.indexView.stride === 1) { + srcIBView = new Uint8Array(this._data.buffer, srcOffset, prim.indexView.count); + } else { + srcIBView = new Uint32Array(this._data.buffer, srcOffset, prim.indexView.count); + } + if (idxStride === prim.indexView.stride) { + ibView.set(srcIBView); + } else { + for (var n = 0; n < prim.indexView.count; ++n) { + ibView[n] = srcIBView[n]; + } + } + srcOffset += prim.indexView.length; + if (dstPrim.indexView.stride === 2) { + dstIBView = new Uint16Array(mesh._data.buffer, dstOffset, dstPrim.indexView.count); + } else if (dstPrim.indexView.stride === 1) { + dstIBView = new Uint8Array(mesh._data.buffer, dstOffset, dstPrim.indexView.count); + } else { + dstIBView = new Uint32Array(mesh._data.buffer, dstOffset, dstPrim.indexView.count); + } + for (var _n = 0; _n < dstPrim.indexView.count; ++_n) { + ibView[prim.indexView.count + _n] = vertBatchCount + dstIBView[_n]; + } + dstOffset += dstPrim.indexView.length; + primitives[_i6].indexView = { + offset: bufferBlob.getLength(), + length: ib.byteLength, + count: idxCount, + stride: idxStride + }; + bufferBlob.setNextAlignment(idxStride); + bufferBlob.addBuffer(ib); + } + } + var meshStruct = { + vertexBundles: vertexBundles, + primitives: primitives, + minPosition: this._struct.minPosition, + maxPosition: this._struct.maxPosition + }; + if (meshStruct.minPosition && mesh._struct.minPosition && meshStruct.maxPosition && mesh._struct.maxPosition) { + if (worldMatrix) { + Vec3.add(boundingBox.center, mesh._struct.maxPosition, mesh._struct.minPosition); + Vec3.multiplyScalar(boundingBox.center, boundingBox.center, 0.5); + Vec3.subtract(boundingBox.halfExtents, mesh._struct.maxPosition, mesh._struct.minPosition); + Vec3.multiplyScalar(boundingBox.halfExtents, boundingBox.halfExtents, 0.5); + AABB.transform(boundingBox, boundingBox, worldMatrix); + Vec3.add(vec3_temp, boundingBox.center, boundingBox.halfExtents); + Vec3.max(meshStruct.maxPosition, meshStruct.maxPosition, vec3_temp); + Vec3.subtract(vec3_temp, boundingBox.center, boundingBox.halfExtents); + Vec3.min(meshStruct.minPosition, meshStruct.minPosition, vec3_temp); + } else { + Vec3.min(meshStruct.minPosition, meshStruct.minPosition, mesh._struct.minPosition); + Vec3.max(meshStruct.maxPosition, meshStruct.maxPosition, mesh._struct.maxPosition); + } + } + this.reset({ + struct: meshStruct, + data: new Uint8Array(bufferBlob.getCombined()) + }); + this.initialize(); + return true; + }; + _proto.validateMergingMesh = function validateMergingMesh(mesh) { + if (this._struct.dynamic || mesh._struct.dynamic) { + return false; + } + if (this._struct.vertexBundles.length !== mesh._struct.vertexBundles.length) { + return false; + } + for (var i = 0; i < this._struct.vertexBundles.length; ++i) { + var bundle = this._struct.vertexBundles[i]; + var dstBundle = mesh._struct.vertexBundles[i]; + if (bundle.attributes.length !== dstBundle.attributes.length) { + return false; + } + for (var j = 0; j < bundle.attributes.length; ++j) { + if (bundle.attributes[j].format !== dstBundle.attributes[j].format) { + return false; + } + } + } + if (this._struct.primitives.length !== mesh._struct.primitives.length) { + return false; + } + for (var _i7 = 0; _i7 < this._struct.primitives.length; ++_i7) { + var prim = this._struct.primitives[_i7]; + var dstPrim = mesh._struct.primitives[_i7]; + if (prim.vertexBundelIndices.length !== dstPrim.vertexBundelIndices.length) { + return false; + } + for (var _j = 0; _j < prim.vertexBundelIndices.length; ++_j) { + if (prim.vertexBundelIndices[_j] !== dstPrim.vertexBundelIndices[_j]) { + return false; + } + } + if (prim.primitiveMode !== dstPrim.primitiveMode) { + return false; + } + if (prim.indexView) { + if (dstPrim.indexView === undefined) { + return false; + } + } else if (dstPrim.indexView) { + return false; + } + } + return true; + }; + _proto.readAttribute = function readAttribute(primitiveIndex, attributeName) { + var _this2 = this; + var result = null; + this._accessAttribute(primitiveIndex, attributeName, function (vertexBundle, iAttribute) { + var vertexCount = vertexBundle.view.count; + var format = vertexBundle.attributes[iAttribute].format; + var StorageConstructor = getTypedArrayConstructor(FormatInfos[format]); + if (vertexCount === 0) { + return; + } + var inputView = new DataView(_this2._data.buffer, vertexBundle.view.offset + getOffset(vertexBundle.attributes, iAttribute)); + var formatInfo = FormatInfos[format]; + var reader = getReader(inputView, format); + if (!StorageConstructor || !reader) { + return; + } + var componentCount = formatInfo.count; + var storage = new StorageConstructor(vertexCount * componentCount); + var inputStride = vertexBundle.view.stride; + for (var iVertex = 0; iVertex < vertexCount; ++iVertex) { + for (var iComponent = 0; iComponent < componentCount; ++iComponent) { + storage[componentCount * iVertex + iComponent] = reader(inputStride * iVertex + storage.BYTES_PER_ELEMENT * iComponent); + } + } + result = storage; + }); + return result; + }; + _proto.copyAttribute = function copyAttribute(primitiveIndex, attributeName, buffer, stride, offset) { + var _this3 = this; + var written = false; + this._accessAttribute(primitiveIndex, attributeName, function (vertexBundle, iAttribute) { + var vertexCount = vertexBundle.view.count; + if (vertexCount === 0) { + written = true; + return; + } + var format = vertexBundle.attributes[iAttribute].format; + var inputView = new DataView(_this3._data.buffer, vertexBundle.view.offset + getOffset(vertexBundle.attributes, iAttribute)); + var outputView = new DataView(buffer, offset); + var formatInfo = FormatInfos[format]; + var reader = getReader(inputView, format); + var writer = getWriter(outputView, format); + if (!reader || !writer) { + return; + } + var componentCount = formatInfo.count; + var inputStride = vertexBundle.view.stride; + var inputComponentByteLength = getComponentByteLength(format); + var outputStride = stride; + var outputComponentByteLength = inputComponentByteLength; + for (var iVertex = 0; iVertex < vertexCount; ++iVertex) { + for (var iComponent = 0; iComponent < componentCount; ++iComponent) { + var inputOffset = inputStride * iVertex + inputComponentByteLength * iComponent; + var outputOffset = outputStride * iVertex + outputComponentByteLength * iComponent; + writer(outputOffset, reader(inputOffset)); + } + } + written = true; + }); + return written; + }; + _proto.readIndices = function readIndices(primitiveIndex) { + if (primitiveIndex >= this._struct.primitives.length) { + return null; + } + var primitive = this._struct.primitives[primitiveIndex]; + if (!primitive.indexView) { + return null; + } + var stride = primitive.indexView.stride; + var Ctor = stride === 1 ? Uint8Array : stride === 2 ? Uint16Array : Uint32Array; + return new Ctor(this._data.buffer, primitive.indexView.offset, primitive.indexView.count); + }; + _proto.copyIndices = function copyIndices(primitiveIndex, outputArray) { + if (primitiveIndex >= this._struct.primitives.length) { + return false; + } + var primitive = this._struct.primitives[primitiveIndex]; + if (!primitive.indexView) { + return false; + } + var indexCount = primitive.indexView.count; + var indexFormat = primitive.indexView.stride === 1 ? Format.R8UI : primitive.indexView.stride === 2 ? Format.R16UI : Format.R32UI; + var reader = getReader(new DataView(this._data.buffer), indexFormat); + for (var i = 0; i < indexCount; ++i) { + outputArray[i] = reader(primitive.indexView.offset + FormatInfos[indexFormat].size * i); + } + return true; + }; + _proto.readAttributeFormat = function readAttributeFormat(primitiveIndex, attributeName) { + var result = null; + this._accessAttribute(primitiveIndex, attributeName, function (vertexBundle, iAttribute) { + var format = vertexBundle.attributes[iAttribute].format; + result = FormatInfos[format]; + }); + return result; + }; + _proto._accessAttribute = function _accessAttribute(primitiveIndex, attributeName, accessor) { + if (primitiveIndex >= this._struct.primitives.length) { + return; + } + var primitive = this._struct.primitives[primitiveIndex]; + for (var _iterator6 = _createForOfIteratorHelperLoose(primitive.vertexBundelIndices), _step6; !(_step6 = _iterator6()).done;) { + var vertexBundleIndex = _step6.value; + var _vertexBundle4 = this._struct.vertexBundles[vertexBundleIndex]; + var _iAttribute = _vertexBundle4.attributes.findIndex(function (a) { + return a.name === attributeName; + }); + if (_iAttribute < 0) { + continue; + } + accessor(_vertexBundle4, _iAttribute); + break; + } + }; + _proto._createVertexBuffers = function _createVertexBuffers(gfxDevice, data) { + return this._struct.vertexBundles.map(function (vertexBundle) { + var vertexBuffer = gfxDevice.createBuffer(new BufferInfo(BufferUsageBit.VERTEX, MemoryUsageBit.DEVICE, vertexBundle.view.length, vertexBundle.view.stride)); + var view = new Uint8Array(data, vertexBundle.view.offset, vertexBundle.view.length); + vertexBuffer.update(view); + return vertexBuffer; + }); + }; + _proto.initDefault = function initDefault(uuid) { + _Asset.prototype.initDefault.call(this, uuid); + this.reset({ + struct: { + vertexBundles: [], + primitives: [] + }, + data: globalEmptyMeshBuffer + }); + }; + _proto.releaseData = function releaseData() { + this._data = globalEmptyMeshBuffer; + }; + _createClass(Mesh, [{ + key: "_nativeAsset", + get: function get() { + return this._data.buffer; + }, + set: function set(value) { + this._data = new Uint8Array(value); + } + }, { + key: "subMeshCount", + get: function get() { + var renderingMesh = this.renderingSubMeshes; + return renderingMesh ? renderingMesh.length : 0; + } + }, { + key: "minPosition", + get: function get() { + return this.struct.minPosition; + } + }, { + key: "maxPosition", + get: function get() { + return this.struct.maxPosition; + } + }, { + key: "struct", + get: function get() { + return this._struct; + } + }, { + key: "data", + get: function get() { + return this._data; + } + }, { + key: "hash", + get: function get() { + if (!this._hash) { + this._hash = murmurhash2_32_gc(this._data, 666); + } + return this._hash; + } + }, { + key: "jointBufferIndices", + get: function get() { + if (this._jointBufferIndices) { + return this._jointBufferIndices; + } + return this._jointBufferIndices = this._struct.primitives.map(function (p) { + return p.jointMapIndex || 0; + }); + } + }, { + key: "renderingSubMeshes", + get: function get() { + this.initialize(); + return this._renderingSubMeshes; + } + }, { + key: "allowDataAccess", + get: function get() { + return this._allowDataAccess; + }, + set: function set(allowDataAccess) { + this._allowDataAccess = allowDataAccess; + if (this._isMeshDataUploaded && !this._allowDataAccess && !EDITOR) { + this.releaseData(); + } + } + }]); + return Mesh; + }(Asset), (_initializer$1i = applyDecoratedInitializer(_class2$1q.prototype, "_struct", [serializable$9], function () { + return { + vertexBundles: [], + primitives: [] + }; + }), _initializer2$12 = applyDecoratedInitializer(_class2$1q.prototype, "_hash", [serializable$9], function () { + return 0; + }), _initializer3$N = applyDecoratedInitializer(_class2$1q.prototype, "_allowDataAccess", [serializable$9], function () { + return true; + })), _class2$1q)) || _class$1D); + legacyCC.Mesh = Mesh; + function getOffset(attributes, attributeIndex) { + var result = 0; + for (var i = 0; i < attributeIndex; ++i) { + var attribute = attributes[i]; + result += FormatInfos[attribute.format].size; + } + return result; + } + var isLittleEndian = sys.isLittleEndian; + function getComponentByteLength(format) { + var info = FormatInfos[format]; + return info.size / info.count; + } + function getReader(dataView, format) { + var info = FormatInfos[format]; + var stride = info.size / info.count; + switch (info.type) { + case FormatType.UNORM: + { + switch (stride) { + case 1: + return function (offset) { + return dataView.getUint8(offset); + }; + case 2: + return function (offset) { + return dataView.getUint16(offset, isLittleEndian); + }; + case 4: + return function (offset) { + return dataView.getUint32(offset, isLittleEndian); + }; + } + break; + } + case FormatType.SNORM: + { + switch (stride) { + case 1: + return function (offset) { + return dataView.getInt8(offset); + }; + case 2: + return function (offset) { + return dataView.getInt16(offset, isLittleEndian); + }; + case 4: + return function (offset) { + return dataView.getInt32(offset, isLittleEndian); + }; + } + break; + } + case FormatType.INT: + { + switch (stride) { + case 1: + return function (offset) { + return dataView.getInt8(offset); + }; + case 2: + return function (offset) { + return dataView.getInt16(offset, isLittleEndian); + }; + case 4: + return function (offset) { + return dataView.getInt32(offset, isLittleEndian); + }; + } + break; + } + case FormatType.UINT: + { + switch (stride) { + case 1: + return function (offset) { + return dataView.getUint8(offset); + }; + case 2: + return function (offset) { + return dataView.getUint16(offset, isLittleEndian); + }; + case 4: + return function (offset) { + return dataView.getUint32(offset, isLittleEndian); + }; + } + break; + } + case FormatType.FLOAT: + { + switch (stride) { + case 2: + return function (offset) { + return dataView.getUint16(offset, isLittleEndian); + }; + case 4: + return function (offset) { + return dataView.getFloat32(offset, isLittleEndian); + }; + } + break; + } + } + return null; + } + function getWriter(dataView, format) { + var info = FormatInfos[format]; + var stride = info.size / info.count; + switch (info.type) { + case FormatType.UNORM: + { + switch (stride) { + case 1: + return function (offset, value) { + return dataView.setUint8(offset, value); + }; + case 2: + return function (offset, value) { + return dataView.setUint16(offset, value, isLittleEndian); + }; + case 4: + return function (offset, value) { + return dataView.setUint32(offset, value, isLittleEndian); + }; + } + break; + } + case FormatType.SNORM: + { + switch (stride) { + case 1: + return function (offset, value) { + return dataView.setInt8(offset, value); + }; + case 2: + return function (offset, value) { + return dataView.setInt16(offset, value, isLittleEndian); + }; + case 4: + return function (offset, value) { + return dataView.setInt32(offset, value, isLittleEndian); + }; + } + break; + } + case FormatType.INT: + { + switch (stride) { + case 1: + return function (offset, value) { + return dataView.setInt8(offset, value); + }; + case 2: + return function (offset, value) { + return dataView.setInt16(offset, value, isLittleEndian); + }; + case 4: + return function (offset, value) { + return dataView.setInt32(offset, value, isLittleEndian); + }; + } + break; + } + case FormatType.UINT: + { + switch (stride) { + case 1: + return function (offset, value) { + return dataView.setUint8(offset, value); + }; + case 2: + return function (offset, value) { + return dataView.setUint16(offset, value, isLittleEndian); + }; + case 4: + return function (offset, value) { + return dataView.setUint32(offset, value, isLittleEndian); + }; + } + break; + } + case FormatType.FLOAT: + { + switch (stride) { + case 2: + return function (offset, value) { + return dataView.setUint16(offset, value, isLittleEndian); + }; + case 4: + return function (offset, value) { + return dataView.setFloat32(offset, value, isLittleEndian); + }; + } + break; + } + } + return null; + } + function decodeMesh(mesh) { + if (!mesh.struct.encoded) { + return mesh; + } + var res_checker = function res_checker(res) { + if (res < 0) { + errorID(14204, res); + } + }; + var struct = JSON.parse(JSON.stringify(mesh.struct)); + var bufferBlob = new BufferBlob(); + bufferBlob.setNextAlignment(0); + for (var _iterator7 = _createForOfIteratorHelperLoose(struct.vertexBundles), _step7; !(_step7 = _iterator7()).done;) { + var bundle = _step7.value; + var view = bundle.view; + var bound = view.count * view.stride; + var buffer = new Uint8Array(bound); + var vertex = new Uint8Array(mesh.data.buffer, view.offset, view.length); + var res = MeshoptDecoder.decodeVertexBuffer(buffer, view.count, view.stride, vertex); + res_checker(res); + bufferBlob.setNextAlignment(view.stride); + var newView = { + offset: bufferBlob.getLength(), + length: buffer.byteLength, + count: view.count, + stride: view.stride + }; + bundle.view = newView; + bufferBlob.addBuffer(buffer); + } + for (var _iterator8 = _createForOfIteratorHelperLoose(struct.primitives), _step8; !(_step8 = _iterator8()).done;) { + var primitive = _step8.value; + if (primitive.indexView === undefined) { + continue; + } + var _view = primitive.indexView; + var _bound = _view.count * _view.stride; + var _buffer = new Uint8Array(_bound); + var index = new Uint8Array(mesh.data.buffer, _view.offset, _view.length); + var _res = MeshoptDecoder.decodeIndexBuffer(_buffer, _view.count, _view.stride, index); + res_checker(_res); + bufferBlob.setNextAlignment(_view.stride); + var _newView = { + offset: bufferBlob.getLength(), + length: _buffer.byteLength, + count: _view.count, + stride: _view.stride + }; + primitive.indexView = _newView; + bufferBlob.addBuffer(_buffer); + } + var data = new Uint8Array(bufferBlob.getCombined()); + return { + struct: struct, + data: data + }; + } + function inflateMesh(mesh) { + var inflator = new _p.Inflate(mesh.data); + var decompressed = inflator.decompress(); + mesh.data = decompressed; + mesh.struct.compressed = false; + return mesh; + } + function dequantizeMesh(mesh) { + var struct = JSON.parse(JSON.stringify(mesh.struct)); + var bufferBlob = new BufferBlob(); + bufferBlob.setNextAlignment(0); + function transformVertex(reader, writer, count, components, componentSize, readerStride, writerStride) { + for (var i = 0; i < count; i++) { + for (var j = 0; j < components; j++) { + var inputOffset = readerStride * i + componentSize * j; + var outputOffset = writerStride * i + componentSize * j; + writer(outputOffset, reader(inputOffset)); + } + } + } + function dequantizeHalf(reader, writer, count, components, readerStride, writerStride) { + for (var i = 0; i < count; i++) { + for (var j = 0; j < components; j++) { + var inputOffset = readerStride * i + 2 * j; + var outputOffset = writerStride * i + 4 * j; + var _value = halfToFloat(reader(inputOffset)); + writer(outputOffset, _value); + } + } + } + for (var i = 0; i < struct.vertexBundles.length; ++i) { + var bundle = struct.vertexBundles[i]; + var view = bundle.view; + var attributes = bundle.attributes; + var oldAttributes = mesh.struct.vertexBundles[i].attributes; + var strides = []; + var dequantizes = []; + var readers = []; + for (var j = 0; j < attributes.length; ++j) { + var attr = attributes[j]; + var inputView = new DataView(mesh.data.buffer, view.offset + getOffset(oldAttributes, j)); + var reader = getReader(inputView, attr.format); + var dequantize = true; + switch (attr.format) { + case Format.R16F: + attr.format = Format.R32F; + break; + case Format.RG16F: + attr.format = Format.RG32F; + break; + case Format.RGB16F: + attr.format = Format.RGB32F; + break; + case Format.RGBA16F: + attr.format = Format.RGBA32F; + break; + default: + dequantize = false; + break; + } + strides.push(FormatInfos[attr.format].size); + dequantizes.push(dequantize); + readers.push(reader); + } + var netStride = strides.reduce(function (acc, cur) { + return acc + cur; + }, 0); + var newBuffer = new Uint8Array(netStride * view.count); + for (var _j2 = 0; _j2 < attributes.length; ++_j2) { + var attribute = attributes[_j2]; + var _reader = readers[_j2]; + var outputView = new DataView(newBuffer.buffer, getOffset(attributes, _j2)); + var writer = getWriter(outputView, attribute.format); + var _dequantize = dequantizes[_j2]; + var formatInfo = FormatInfos[attribute.format]; + if (_dequantize) { + dequantizeHalf(_reader, writer, view.count, formatInfo.count, view.stride, netStride); + } else { + transformVertex(_reader, writer, view.count, formatInfo.count, formatInfo.size / formatInfo.count, view.stride, netStride); + } + } + bufferBlob.setNextAlignment(netStride); + var newView = { + offset: bufferBlob.getLength(), + length: newBuffer.byteLength, + count: view.count, + stride: netStride + }; + bundle.view = newView; + bufferBlob.addBuffer(newBuffer); + } + for (var _iterator9 = _createForOfIteratorHelperLoose(struct.primitives), _step9; !(_step9 = _iterator9()).done;) { + var primitive = _step9.value; + if (primitive.indexView === undefined) { + continue; + } + var _view2 = primitive.indexView; + var buffer = new Uint8Array(mesh.data.buffer, _view2.offset, _view2.length); + bufferBlob.setNextAlignment(_view2.stride); + var _newView2 = { + offset: bufferBlob.getLength(), + length: buffer.byteLength, + count: _view2.count, + stride: _view2.stride + }; + primitive.indexView = _newView2; + bufferBlob.addBuffer(buffer); + } + var data = new Uint8Array(bufferBlob.getCombined()); + struct.quantized = false; + return { + struct: struct, + data: data + }; + } + + var _defAttrs = [new Attribute(AttributeName.ATTR_POSITION, Format.RGB32F), new Attribute(AttributeName.ATTR_NORMAL, Format.RGB32F), new Attribute(AttributeName.ATTR_TEX_COORD, Format.RG32F), new Attribute(AttributeName.ATTR_TANGENT, Format.RGBA32F), new Attribute(AttributeName.ATTR_COLOR, Format.RGBA32F)]; + var v3_1 = new Vec3(); + function _createMesh(geometry, out, options) { + options = options || {}; + var attributes = []; + var stride = 0; + var channels = []; + var vertCount = 0; + var attr; + var positions = geometry.positions.slice(); + if (positions.length > 0) { + attr = null; + if (geometry.attributes) { + for (var _iterator = _createForOfIteratorHelperLoose(geometry.attributes), _step; !(_step = _iterator()).done;) { + var att = _step.value; + if (att.name === AttributeName.ATTR_POSITION) { + attr = att; + break; + } + } + } + if (!attr) { + attr = _defAttrs[0]; + } + attributes.push(attr); + var info = FormatInfos[attr.format]; + vertCount = Math.max(vertCount, Math.floor(positions.length / info.count)); + channels.push({ + offset: stride, + data: positions, + attribute: attr + }); + stride += info.size; + } + if (geometry.normals && geometry.normals.length > 0) { + attr = null; + if (geometry.attributes) { + for (var _iterator2 = _createForOfIteratorHelperLoose(geometry.attributes), _step2; !(_step2 = _iterator2()).done;) { + var _att = _step2.value; + if (_att.name === AttributeName.ATTR_NORMAL) { + attr = _att; + break; + } + } + } + if (!attr) { + attr = _defAttrs[1]; + } + var _info = FormatInfos[attr.format]; + attributes.push(attr); + vertCount = Math.max(vertCount, Math.floor(geometry.normals.length / _info.count)); + channels.push({ + offset: stride, + data: geometry.normals, + attribute: attr + }); + stride += _info.size; + } + if (geometry.uvs && geometry.uvs.length > 0) { + attr = null; + if (geometry.attributes) { + for (var _iterator3 = _createForOfIteratorHelperLoose(geometry.attributes), _step3; !(_step3 = _iterator3()).done;) { + var _att2 = _step3.value; + if (_att2.name === AttributeName.ATTR_TEX_COORD) { + attr = _att2; + break; + } + } + } + if (!attr) { + attr = _defAttrs[2]; + } + var _info2 = FormatInfos[attr.format]; + attributes.push(attr); + vertCount = Math.max(vertCount, Math.floor(geometry.uvs.length / _info2.count)); + channels.push({ + offset: stride, + data: geometry.uvs, + attribute: attr + }); + stride += _info2.size; + } + if (geometry.tangents && geometry.tangents.length > 0) { + attr = null; + if (geometry.attributes) { + for (var _iterator4 = _createForOfIteratorHelperLoose(geometry.attributes), _step4; !(_step4 = _iterator4()).done;) { + var _att3 = _step4.value; + if (_att3.name === AttributeName.ATTR_TANGENT) { + attr = _att3; + break; + } + } + } + if (!attr) { + attr = _defAttrs[3]; + } + var _info3 = FormatInfos[attr.format]; + attributes.push(attr); + vertCount = Math.max(vertCount, Math.floor(geometry.tangents.length / _info3.count)); + channels.push({ + offset: stride, + data: geometry.tangents, + attribute: attr + }); + stride += _info3.size; + } + if (geometry.colors && geometry.colors.length > 0) { + attr = null; + if (geometry.attributes) { + for (var _iterator5 = _createForOfIteratorHelperLoose(geometry.attributes), _step5; !(_step5 = _iterator5()).done;) { + var _att4 = _step5.value; + if (_att4.name === AttributeName.ATTR_COLOR) { + attr = _att4; + break; + } + } + } + if (!attr) { + attr = _defAttrs[4]; + } + var _info4 = FormatInfos[attr.format]; + attributes.push(attr); + vertCount = Math.max(vertCount, Math.floor(geometry.colors.length / _info4.count)); + channels.push({ + offset: stride, + data: geometry.colors, + attribute: attr + }); + stride += _info4.size; + } + if (geometry.customAttributes) { + for (var k = 0; k < geometry.customAttributes.length; k++) { + var ca = geometry.customAttributes[k]; + var _info5 = FormatInfos[ca.attr.format]; + attributes.push(ca.attr); + vertCount = Math.max(vertCount, Math.floor(ca.values.length / _info5.count)); + channels.push({ + offset: stride, + data: ca.values, + attribute: ca.attr + }); + stride += _info5.size; + } + } + var bufferBlob = new BufferBlob(); + var vertexBuffer = new ArrayBuffer(vertCount * stride); + var vertexBufferView = new DataView(vertexBuffer); + for (var _i = 0, _channels = channels; _i < _channels.length; _i++) { + var channel = _channels[_i]; + writeBuffer(vertexBufferView, channel.data, channel.attribute.format, channel.offset, stride); + } + bufferBlob.setNextAlignment(0); + var vertexBundle = { + attributes: attributes, + view: { + offset: bufferBlob.getLength(), + length: vertexBuffer.byteLength, + count: vertCount, + stride: stride + } + }; + bufferBlob.addBuffer(vertexBuffer); + var indexBuffer = null; + var idxCount = 0; + var idxStride = 2; + if (geometry.indices) { + var indices = geometry.indices; + idxCount = indices.length; + indexBuffer = new ArrayBuffer(idxStride * idxCount); + var indexBufferView = new DataView(indexBuffer); + writeBuffer(indexBufferView, indices, Format.R16UI); + } + var primitive = { + primitiveMode: geometry.primitiveMode || PrimitiveMode.TRIANGLE_LIST, + vertexBundelIndices: [0] + }; + if (indexBuffer) { + bufferBlob.setNextAlignment(idxStride); + primitive.indexView = { + offset: bufferBlob.getLength(), + length: indexBuffer.byteLength, + count: idxCount, + stride: idxStride + }; + bufferBlob.addBuffer(indexBuffer); + } + var minPosition = geometry.minPos; + if (!minPosition && options.calculateBounds) { + minPosition = Vec3.set(new Vec3(), Infinity, Infinity, Infinity); + for (var iVertex = 0; iVertex < vertCount; ++iVertex) { + Vec3.set(v3_1, positions[iVertex * 3 + 0], positions[iVertex * 3 + 1], positions[iVertex * 3 + 2]); + Vec3.min(minPosition, minPosition, v3_1); + } + } + var maxPosition = geometry.maxPos; + if (!maxPosition && options.calculateBounds) { + maxPosition = Vec3.set(new Vec3(), -Infinity, -Infinity, -Infinity); + for (var _iVertex = 0; _iVertex < vertCount; ++_iVertex) { + Vec3.set(v3_1, positions[_iVertex * 3 + 0], positions[_iVertex * 3 + 1], positions[_iVertex * 3 + 2]); + Vec3.max(maxPosition, maxPosition, v3_1); + } + } + var meshStruct = { + vertexBundles: [vertexBundle], + primitives: [primitive] + }; + if (minPosition) { + meshStruct.minPosition = new Vec3(minPosition.x, minPosition.y, minPosition.z); + } + if (maxPosition) { + meshStruct.maxPosition = new Vec3(maxPosition.x, maxPosition.y, maxPosition.z); + } + if (!out) { + out = new Mesh(); + } + out.reset({ + struct: meshStruct, + data: new Uint8Array(bufferBlob.getCombined()) + }); + return out; + } + + var _dec$1D, _class$1C, _class2$1p; + var INSET_LEFT = 0; + var INSET_TOP = 1; + var INSET_RIGHT = 2; + var INSET_BOTTOM = 3; + var temp_vec3 = new Vec3(); + var temp_matrix = new Mat4(); + var MeshType; + (function (MeshType) { + MeshType[MeshType["RECT"] = 0] = "RECT"; + MeshType[MeshType["POLYGON"] = 1] = "POLYGON"; + })(MeshType || (MeshType = {})); + var temp_uvs = [{ + u: 0, + v: 0 + }, { + u: 0, + v: 0 + }, { + u: 0, + v: 0 + }, { + u: 0, + v: 0 + }]; + var SpriteFrame = exports('b', (_dec$1D = ccclass$t('cc.SpriteFrame'), _dec$1D(_class$1C = (_class2$1p = function (_Asset) { + _inheritsLoose(SpriteFrame, _Asset); + SpriteFrame.createWithImage = function createWithImage(imageSourceOrImageAsset) { + var img = imageSourceOrImageAsset instanceof ImageAsset ? imageSourceOrImageAsset : new ImageAsset(imageSourceOrImageAsset); + var tex = new Texture2D(); + tex.image = img; + var spf = new SpriteFrame(); + spf.texture = tex; + return spf; + }; + function SpriteFrame() { + var _this; + _this = _Asset.call(this) || this; + _this.vertices = null; + _this.uv = []; + _this.unbiasUV = []; + _this.uvSliced = []; + _this._rect = new Rect$1(); + _this._trimmedBorder = new Vec4(); + _this._offset = new Vec2(); + _this._originalSize = new Size$1(); + _this._rotated = false; + _this._capInsets = [0, 0, 0, 0]; + _this._atlasUuid = ''; + _this._texture = void 0; + _this._isFlipUVY = false; + _this._isFlipUVX = false; + _this._original = null; + _this._packable = true; + _this._pixelsToUnit = 100; + _this._pivot = new Vec2(0.5, 0.5); + _this._meshType = MeshType.RECT; + _this._extrude = 0; + _this._customOutLine = []; + _this._minPos = new Vec3(); + _this._maxPos = new Vec3(); + return _this; + } + var _proto = SpriteFrame.prototype; + _proto.textureLoaded = function textureLoaded() { + return !!this.texture; + }; + _proto.isRotated = function isRotated() { + return this._rotated; + }; + _proto.setRotated = function setRotated(rotated) { + this.rotated = rotated; + }; + _proto.getRect = function getRect(out) { + if (out) { + out.set(this._rect); + return out; + } + return this._rect.clone(); + }; + _proto.setRect = function setRect(rect) { + this.rect = rect; + }; + _proto.getOriginalSize = function getOriginalSize(out) { + if (out) { + out.set(this._originalSize); + return out; + } + return this._originalSize.clone(); + }; + _proto.setOriginalSize = function setOriginalSize(size) { + this.originalSize = size; + }; + _proto.getOffset = function getOffset(out) { + if (out) { + out.set(this._offset); + return out; + } + return this._offset.clone(); + }; + _proto.setOffset = function setOffset(offset) { + this.offset = offset; + }; + _proto.getGFXTexture = function getGFXTexture() { + return this._texture.getGFXTexture(); + }; + _proto.getGFXSampler = function getGFXSampler() { + return this._texture.getGFXSampler(); + }; + _proto.getHash = function getHash() { + return this._texture.getHash(); + }; + _proto.getSamplerInfo = function getSamplerInfo() { + return this._texture.getSamplerInfo(); + }; + _proto.reset = function reset(info, clearData) { + if (clearData === void 0) { + clearData = false; + } + var calUV = false; + if (clearData) { + this._originalSize.set(0, 0); + this._rect.set(0, 0, 0, 0); + this._offset.set(0, 0); + this._capInsets = [0, 0, 0, 0]; + this._rotated = false; + calUV = true; + } + if (info) { + if (info.texture) { + this._rect.x = this._rect.y = 0; + this._rect.width = info.texture.width; + this._rect.height = info.texture.height; + this._refreshTexture(info.texture); + this.checkRect(this._texture); + } + if (info.originalSize) { + this._originalSize.set(info.originalSize); + } + if (info.rect) { + this._rect.set(info.rect); + } + if (info.offset) { + this._offset.set(info.offset); + } + if (info.borderTop !== undefined) { + this._capInsets[INSET_TOP] = info.borderTop; + } + if (info.borderBottom !== undefined) { + this._capInsets[INSET_BOTTOM] = info.borderBottom; + } + if (info.borderLeft !== undefined) { + this._capInsets[INSET_LEFT] = info.borderLeft; + } + if (info.borderRight !== undefined) { + this._capInsets[INSET_RIGHT] = info.borderRight; + } + if (info.isRotate !== undefined) { + this._rotated = !!info.isRotate; + } + if (info.isFlipUv !== undefined) { + this._isFlipUVY = !!info.isFlipUv; + } + calUV = true; + } + if (calUV && this.texture) { + this._calculateUV(); + } + this._calcTrimmedBorder(); + }; + _proto.checkRect = function checkRect(texture) { + var rect = this._rect; + var maxX = rect.x; + var maxY = rect.y; + if (this._rotated) { + maxX += rect.height; + maxY += rect.width; + } else { + maxX += rect.width; + maxY += rect.height; + } + if (maxX > texture.width) { + errorID(3300, this.name + "/" + texture.name, maxX, texture.width); + return false; + } + if (maxY > texture.height) { + errorID(3301, this.name + "/" + texture.name, maxY, texture.height); + return false; + } + return true; + }; + _proto._calcTrimmedBorder = function _calcTrimmedBorder() { + var ow = this._originalSize.width; + var oh = this._originalSize.height; + var rw = this._rect.width; + var rh = this._rect.height; + var halfTrimmedWidth = (ow - rw) * 0.5; + var halfTrimmedHeight = (oh - rh) * 0.5; + this._trimmedBorder.x = this._offset.x + halfTrimmedWidth; + this._trimmedBorder.y = this._offset.x - halfTrimmedWidth; + this._trimmedBorder.z = this._offset.y + halfTrimmedHeight; + this._trimmedBorder.w = this._offset.y - halfTrimmedHeight; + }; + _proto.ensureMeshData = function ensureMeshData() { + if (this._mesh) return; + this._initVertices(); + this._createMesh(); + }; + _proto.destroy = function destroy() { + if (this._packable && dynamicAtlasManager) { + dynamicAtlasManager.deleteAtlasSpriteFrame(this); + } + return _Asset.prototype.destroy.call(this); + }; + _proto._calculateSlicedUV = function _calculateSlicedUV() { + var rect = this._rect; + var tex = this.texture; + var atlasWidth = tex.width; + var atlasHeight = tex.height; + var leftWidth = this._capInsets[INSET_LEFT]; + var rightWidth = this._capInsets[INSET_RIGHT]; + var centerWidth = rect.width - leftWidth - rightWidth; + var topHeight = this._capInsets[INSET_TOP]; + var bottomHeight = this._capInsets[INSET_BOTTOM]; + var centerHeight = rect.height - topHeight - bottomHeight; + var uvSliced = this.uvSliced; + uvSliced.length = 0; + if (this._rotated) { + temp_uvs[0].u = rect.x / atlasWidth; + temp_uvs[1].u = (rect.x + bottomHeight) / atlasWidth; + temp_uvs[2].u = (rect.x + bottomHeight + centerHeight) / atlasWidth; + temp_uvs[3].u = (rect.x + rect.height) / atlasWidth; + temp_uvs[3].v = rect.y / atlasHeight; + temp_uvs[2].v = (rect.y + leftWidth) / atlasHeight; + temp_uvs[1].v = (rect.y + leftWidth + centerWidth) / atlasHeight; + temp_uvs[0].v = (rect.y + rect.width) / atlasHeight; + for (var row = 0; row < 4; ++row) { + var rowD = temp_uvs[row]; + for (var col = 0; col < 4; ++col) { + var colD = temp_uvs[3 - col]; + uvSliced.push({ + u: rowD.u, + v: colD.v + }); + } + } + } else { + temp_uvs[0].u = rect.x / atlasWidth; + temp_uvs[1].u = (rect.x + leftWidth) / atlasWidth; + temp_uvs[2].u = (rect.x + leftWidth + centerWidth) / atlasWidth; + temp_uvs[3].u = (rect.x + rect.width) / atlasWidth; + temp_uvs[3].v = rect.y / atlasHeight; + temp_uvs[2].v = (rect.y + topHeight) / atlasHeight; + temp_uvs[1].v = (rect.y + topHeight + centerHeight) / atlasHeight; + temp_uvs[0].v = (rect.y + rect.height) / atlasHeight; + for (var _row = 0; _row < 4; ++_row) { + var _rowD = temp_uvs[_row]; + for (var _col = 0; _col < 4; ++_col) { + var _colD = temp_uvs[_col]; + uvSliced.push({ + u: _colD.u, + v: _rowD.v + }); + } + } + } + this.emit(SpriteFrame.EVENT_UV_UPDATED, this); + }; + _proto._calculateUV = function _calculateUV() { + var rect = this._rect; + var uv = this.uv; + var unbiasUV = this.unbiasUV; + var tex = this.texture; + var texw = tex.width; + var texh = tex.height; + if (this._rotated) { + var l = texw === 0 ? 0 : rect.x / texw; + var r = texw === 0 ? 1 : (rect.x + rect.height) / texw; + var t = texh === 0 ? 0 : rect.y / texh; + var b = texh === 0 ? 1 : (rect.y + rect.width) / texh; + if (this._isFlipUVX && this._isFlipUVY) { + uv[0] = r; + uv[1] = b; + uv[2] = r; + uv[3] = t; + uv[4] = l; + uv[5] = b; + uv[6] = l; + uv[7] = t; + } else if (this._isFlipUVX) { + uv[0] = r; + uv[1] = t; + uv[2] = r; + uv[3] = b; + uv[4] = l; + uv[5] = t; + uv[6] = l; + uv[7] = b; + } else if (this._isFlipUVY) { + uv[0] = l; + uv[1] = b; + uv[2] = l; + uv[3] = t; + uv[4] = r; + uv[5] = b; + uv[6] = r; + uv[7] = t; + } else { + uv[0] = l; + uv[1] = t; + uv[2] = l; + uv[3] = b; + uv[4] = r; + uv[5] = t; + uv[6] = r; + uv[7] = b; + } + var ul = texw === 0 ? 0 : rect.x / texw; + var ur = texw === 0 ? 1 : (rect.x + rect.height) / texw; + var ut = texh === 0 ? 0 : rect.y / texh; + var ub = texh === 0 ? 1 : (rect.y + rect.width) / texh; + if (this._isFlipUVX && this._isFlipUVY) { + unbiasUV[0] = ur; + unbiasUV[1] = ub; + unbiasUV[2] = ur; + unbiasUV[3] = ut; + unbiasUV[4] = ul; + unbiasUV[5] = ub; + unbiasUV[6] = ul; + unbiasUV[7] = ut; + } else if (this._isFlipUVX) { + unbiasUV[0] = ur; + unbiasUV[1] = ut; + unbiasUV[2] = ur; + unbiasUV[3] = ub; + unbiasUV[4] = ul; + unbiasUV[5] = ut; + unbiasUV[6] = ul; + unbiasUV[7] = ub; + } else if (this._isFlipUVY) { + unbiasUV[0] = ul; + unbiasUV[1] = ub; + unbiasUV[2] = ul; + unbiasUV[3] = ut; + unbiasUV[4] = ur; + unbiasUV[5] = ub; + unbiasUV[6] = ur; + unbiasUV[7] = ut; + } else { + unbiasUV[0] = ul; + unbiasUV[1] = ut; + unbiasUV[2] = ul; + unbiasUV[3] = ub; + unbiasUV[4] = ur; + unbiasUV[5] = ut; + unbiasUV[6] = ur; + unbiasUV[7] = ub; + } + } else { + var _l = texw === 0 ? 0 : rect.x / texw; + var _r = texw === 0 ? 1 : (rect.x + rect.width) / texw; + var _b = texh === 0 ? 1 : (rect.y + rect.height) / texh; + var _t = texh === 0 ? 0 : rect.y / texh; + if (this._isFlipUVX && this._isFlipUVY) { + uv[0] = _r; + uv[1] = _t; + uv[2] = _l; + uv[3] = _t; + uv[4] = _r; + uv[5] = _b; + uv[6] = _l; + uv[7] = _b; + } else if (this._isFlipUVX) { + uv[0] = _r; + uv[1] = _b; + uv[2] = _l; + uv[3] = _b; + uv[4] = _r; + uv[5] = _t; + uv[6] = _l; + uv[7] = _t; + } else if (this._isFlipUVY) { + uv[0] = _l; + uv[1] = _t; + uv[2] = _r; + uv[3] = _t; + uv[4] = _l; + uv[5] = _b; + uv[6] = _r; + uv[7] = _b; + } else { + uv[0] = _l; + uv[1] = _b; + uv[2] = _r; + uv[3] = _b; + uv[4] = _l; + uv[5] = _t; + uv[6] = _r; + uv[7] = _t; + } + var _ul = texw === 0 ? 0 : rect.x / texw; + var _ur = texw === 0 ? 1 : (rect.x + rect.width) / texw; + var _ub = texh === 0 ? 1 : (rect.y + rect.height) / texh; + var _ut = texh === 0 ? 0 : rect.y / texh; + if (this._isFlipUVX && this._isFlipUVY) { + unbiasUV[0] = _ur; + unbiasUV[1] = _ut; + unbiasUV[2] = _ul; + unbiasUV[3] = _ut; + unbiasUV[4] = _ur; + unbiasUV[5] = _ub; + unbiasUV[6] = _ul; + unbiasUV[7] = _ub; + } else if (this._isFlipUVX) { + unbiasUV[0] = _ur; + unbiasUV[1] = _ub; + unbiasUV[2] = _ul; + unbiasUV[3] = _ub; + unbiasUV[4] = _ur; + unbiasUV[5] = _ut; + unbiasUV[6] = _ul; + unbiasUV[7] = _ut; + } else if (this._isFlipUVY) { + unbiasUV[0] = _ul; + unbiasUV[1] = _ut; + unbiasUV[2] = _ur; + unbiasUV[3] = _ut; + unbiasUV[4] = _ul; + unbiasUV[5] = _ub; + unbiasUV[6] = _ur; + unbiasUV[7] = _ub; + } else { + unbiasUV[0] = _ul; + unbiasUV[1] = _ub; + unbiasUV[2] = _ur; + unbiasUV[3] = _ub; + unbiasUV[4] = _ul; + unbiasUV[5] = _ut; + unbiasUV[6] = _ur; + unbiasUV[7] = _ut; + } + } + this._calculateSlicedUV(); + }; + _proto._setDynamicAtlasFrame = function _setDynamicAtlasFrame(frame) { + if (!frame) return; + this._original = { + _texture: this._texture, + _x: this._rect.x, + _y: this._rect.y + }; + this._texture = frame.texture; + this._rect.x = frame.x; + this._rect.y = frame.y; + this._calculateUV(); + }; + _proto._resetDynamicAtlasFrame = function _resetDynamicAtlasFrame() { + if (!this._original) return; + this._rect.x = this._original._x; + this._rect.y = this._original._y; + this._texture = this._original._texture; + this._original = null; + this._calculateUV(); + }; + _proto._checkPackable = function _checkPackable() { + var dynamicAtlas = dynamicAtlasManager; + if (!dynamicAtlas) return; + var texture = this._texture; + if (!(texture instanceof Texture2D) || texture.isCompressed) { + this._packable = false; + return; + } + var w = this.width; + var h = this.height; + if (!texture.image || w > dynamicAtlas.maxFrameSize || h > dynamicAtlas.maxFrameSize) { + this._packable = false; + return; + } + var CanvasElement = ccwindow.HTMLCanvasElement; + if (texture.image && texture.image instanceof CanvasElement) { + this._packable = true; + } + }; + _proto._serialize = function _serialize(ctxForExporting) { + return null; + }; + _proto._deserialize = function _deserialize(serializeData, handle) { + var data = serializeData; + var rect = data.rect; + if (rect) { + this._rect = new Rect$1(rect.x, rect.y, rect.width, rect.height); + } + var offset = data.offset; + if (data.offset) { + this._offset = new Vec2(offset.x, offset.y); + } + var originalSize = data.originalSize; + if (data.originalSize) { + this._originalSize = new Size$1(originalSize.width, originalSize.height); + } + this._rotated = !!data.rotated; + this._name = data.name; + this._packable = !!data.packable; + this._pixelsToUnit = data.pixelsToUnit; + var pivot = data.pivot; + if (pivot) { + this._pivot = new Vec2(pivot.x, pivot.y); + } + this._meshType = data.meshType; + var capInsets = data.capInsets; + if (capInsets) { + this._capInsets[INSET_LEFT] = capInsets[INSET_LEFT]; + this._capInsets[INSET_TOP] = capInsets[INSET_TOP]; + this._capInsets[INSET_RIGHT] = capInsets[INSET_RIGHT]; + this._capInsets[INSET_BOTTOM] = capInsets[INSET_BOTTOM]; + } + var vertices = data.vertices; + if (vertices) { + if (!this.vertices) { + this.vertices = { + rawPosition: [], + positions: [], + indexes: vertices.indexes, + uv: vertices.uv, + nuv: vertices.nuv, + minPos: new Vec3(vertices.minPos.x, vertices.minPos.y, vertices.minPos.z), + maxPos: new Vec3(vertices.maxPos.x, vertices.maxPos.y, vertices.maxPos.z) + }; + } + this.vertices.rawPosition.length = 0; + var rawPosition = vertices.rawPosition; + for (var i = 0; i < rawPosition.length; i += 3) { + this.vertices.rawPosition.push(new Vec3(rawPosition[i], rawPosition[i + 1], rawPosition[i + 2])); + } + this._updateMeshVertices(); + } + }; + _proto.clone = function clone() { + var _sp$uv, _sp$unbiasUV, _sp$uvSliced, _sp$_capInsets; + var sp = new SpriteFrame(); + var v = this.vertices; + sp.vertices = v ? { + rawPosition: v.rawPosition.slice(0), + positions: v.positions.slice(0), + indexes: v.indexes.slice(0), + uv: v.uv.slice(0), + nuv: v.nuv.slice(0), + minPos: v.minPos.clone(), + maxPos: v.minPos.clone() + } : null; + (_sp$uv = sp.uv).splice.apply(_sp$uv, [0, sp.uv.length].concat(this.uv)); + (_sp$unbiasUV = sp.unbiasUV).splice.apply(_sp$unbiasUV, [0, sp.unbiasUV.length].concat(this.unbiasUV)); + (_sp$uvSliced = sp.uvSliced).splice.apply(_sp$uvSliced, [0, sp.uvSliced.length].concat(this.uvSliced)); + sp._rect.set(this._rect); + sp._offset.set(this._offset); + sp._originalSize.set(this._originalSize); + sp._rotated = this._rotated; + (_sp$_capInsets = sp._capInsets).splice.apply(_sp$_capInsets, [0, sp._capInsets.length].concat(this._capInsets)); + sp._atlasUuid = this._atlasUuid; + sp._texture = this._texture; + sp._isFlipUVX = this._isFlipUVX; + sp._isFlipUVY = this._isFlipUVY; + sp._pixelsToUnit = this._pixelsToUnit; + sp._pivot.set(this._pivot); + sp._meshType = this._meshType; + return sp; + }; + _proto._refreshTexture = function _refreshTexture(texture) { + this._texture = texture; + var tex = this._texture; + var config = {}; + var isReset = false; + if (this._rect.width === 0 || this._rect.height === 0 || !this.checkRect(tex)) { + config.rect = new Rect$1(0, 0, tex.width, tex.height); + isReset = true; + } + if (this._originalSize.width === 0 || this._originalSize.height === 0 || isReset) { + config.originalSize = new Size$1(tex.width, tex.height); + isReset = true; + } + if (isReset) { + this.reset(config); + } + this._checkPackable(); + if (this._mesh) { + this._updateMesh(); + } + }; + _proto.onLoaded = function onLoaded() { + this._calcTrimmedBorder(); + }; + _proto.initDefault = function initDefault(uuid) { + _Asset.prototype.initDefault.call(this, uuid); + var texture = new Texture2D(); + texture.initDefault(); + this._refreshTexture(texture); + this._calculateUV(); + }; + _proto.validate = function validate() { + return this._texture && this._rect && this._rect.width !== 0 && this._rect.height !== 0; + }; + _proto._initVertices = function _initVertices() { + if (!this.vertices) { + this.vertices = { + rawPosition: [], + positions: [], + indexes: [], + uv: [], + nuv: [], + minPos: new Vec3(), + maxPos: new Vec3() + }; + } else { + this.vertices.rawPosition.length = 0; + this.vertices.positions.length = 0; + this.vertices.indexes.length = 0; + this.vertices.uv.length = 0; + this.vertices.nuv.length = 0; + this.vertices.minPos.set(0, 0, 0); + this.vertices.maxPos.set(0, 0, 0); + } + if (this._meshType === MeshType.POLYGON) ; else { + var tex = this.texture; + var texw = tex.width; + var texh = tex.height; + var rect = this.rect; + var width = rect.width; + var height = rect.height; + var rectX = rect.x; + var rectY = texh - rect.y - height; + var halfWidth = width / 2; + var halfHeight = height / 2; + var l = texw === 0 ? 0 : rectX / texw; + var r = texw === 0 ? 1 : (rectX + width) / texw; + var t = texh === 0 ? 1 : (rectY + height) / texh; + var b = texh === 0 ? 0 : rect.y / texh; + temp_vec3.set(-halfWidth, -halfHeight, 0); + this.vertices.rawPosition.push(temp_vec3.clone()); + this.vertices.uv.push(rectX); + this.vertices.uv.push(rectY + height); + this.vertices.nuv.push(l); + this.vertices.nuv.push(b); + this.vertices.minPos.set(temp_vec3); + temp_vec3.set(halfWidth, -halfHeight, 0); + this.vertices.rawPosition.push(temp_vec3.clone()); + this.vertices.uv.push(rectX + width); + this.vertices.uv.push(rectY + height); + this.vertices.nuv.push(r); + this.vertices.nuv.push(b); + temp_vec3.set(-halfWidth, halfHeight, 0); + this.vertices.rawPosition.push(temp_vec3.clone()); + this.vertices.uv.push(rectX); + this.vertices.uv.push(rectY); + this.vertices.nuv.push(l); + this.vertices.nuv.push(t); + temp_vec3.set(halfWidth, halfHeight, 0); + this.vertices.rawPosition.push(temp_vec3.clone()); + this.vertices.uv.push(rectX + width); + this.vertices.uv.push(rectY); + this.vertices.nuv.push(r); + this.vertices.nuv.push(t); + this.vertices.maxPos.set(temp_vec3); + this.vertices.indexes.push(0); + this.vertices.indexes.push(1); + this.vertices.indexes.push(2); + this.vertices.indexes.push(2); + this.vertices.indexes.push(1); + this.vertices.indexes.push(3); + } + this._updateMeshVertices(); + }; + _proto._updateMeshVertices = function _updateMeshVertices() { + temp_matrix.identity(); + var units = 1 / this._pixelsToUnit; + var PosX = -(this._pivot.x - 0.5) * this.rect.width * units; + var PosY = -(this._pivot.y - 0.5) * this.rect.height * units; + var temp_vec3 = new Vec3(PosX, PosY, 0); + temp_matrix.transform(temp_vec3); + temp_vec3.set(units, units, 1); + temp_matrix.scale(temp_vec3); + var vertices = this.vertices; + for (var i = 0; i < vertices.rawPosition.length; i++) { + var pos = vertices.rawPosition[i]; + Vec3.transformMat4(temp_vec3, pos, temp_matrix); + Vec3.toArray(vertices.positions, temp_vec3, 3 * i); + } + Vec3.transformMat4(this._minPos, vertices.minPos, temp_matrix); + Vec3.transformMat4(this._maxPos, vertices.maxPos, temp_matrix); + }; + _proto._createMesh = function _createMesh$1() { + this._mesh = _createMesh({ + primitiveMode: PrimitiveMode.TRIANGLE_LIST, + positions: this.vertices.positions, + uvs: this.vertices.nuv, + indices: this.vertices.indexes, + minPos: this._minPos, + maxPos: this._maxPos, + attributes: [new Attribute(AttributeName.ATTR_POSITION, Format.RGB32F), new Attribute(AttributeName.ATTR_TEX_COORD, Format.RG32F)] + }); + }; + _proto._updateMesh = function _updateMesh() { + if (this._mesh) { + this._mesh.destroy(); + } + this._initVertices(); + this._createMesh(); + }; + _createClass(SpriteFrame, [{ + key: "insetTop", + get: function get() { + return this._capInsets[INSET_TOP]; + }, + set: function set(value) { + if (this._capInsets[INSET_TOP] === value) { + return; + } + this._capInsets[INSET_TOP] = value; + if (this._texture) { + this._calculateSlicedUV(); + } + } + }, { + key: "insetBottom", + get: function get() { + return this._capInsets[INSET_BOTTOM]; + }, + set: function set(value) { + if (this._capInsets[INSET_BOTTOM] === value) { + return; + } + this._capInsets[INSET_BOTTOM] = value; + if (this._texture) { + this._calculateSlicedUV(); + } + } + }, { + key: "insetLeft", + get: function get() { + return this._capInsets[INSET_LEFT]; + }, + set: function set(value) { + if (this._capInsets[INSET_LEFT] === value) { + return; + } + this._capInsets[INSET_LEFT] = value; + if (this._texture) { + this._calculateSlicedUV(); + } + } + }, { + key: "insetRight", + get: function get() { + return this._capInsets[INSET_RIGHT]; + }, + set: function set(value) { + if (this._capInsets[INSET_RIGHT] === value) { + return; + } + this._capInsets[INSET_RIGHT] = value; + if (this._texture) { + this._calculateSlicedUV(); + } + } + }, { + key: "rect", + get: function get() { + return this._rect; + }, + set: function set(value) { + if (this._rect.equals(value)) { + return; + } + this._rect.set(value); + if (this._texture) { + this._calculateUV(); + } + this._calcTrimmedBorder(); + } + }, { + key: "originalSize", + get: function get() { + return this._originalSize; + }, + set: function set(value) { + if (this._originalSize.equals(value)) { + return; + } + this._originalSize.set(value); + if (this._texture) { + this._calculateUV(); + } + this._calcTrimmedBorder(); + } + }, { + key: "offset", + get: function get() { + return this._offset; + }, + set: function set(value) { + this._offset.set(value); + this._calcTrimmedBorder(); + } + }, { + key: "rotated", + get: function get() { + return this._rotated; + }, + set: function set(rotated) { + if (this._rotated === rotated) { + return; + } + this._rotated = rotated; + if (this._texture) { + this._calculateUV(); + } + } + }, { + key: "texture", + get: function get() { + return this._texture; + }, + set: function set(value) { + if (!value) { + warnID(3122, this.name); + return; + } + if (value === this._texture) { + return; + } + this.reset({ + texture: value + }, true); + } + }, { + key: "atlasUuid", + get: function get() { + return this._atlasUuid; + }, + set: function set(value) { + this._atlasUuid = value; + } + }, { + key: "width", + get: function get() { + return this._texture.width; + } + }, { + key: "height", + get: function get() { + return this._texture.height; + } + }, { + key: "_textureSource", + set: function set(value) { + if (globalThis.Build) { + this._texture = value; + return; + } + if (value) { + this._refreshTexture(value); + this._calculateUV(); + } + } + }, { + key: "flipUVX", + get: function get() { + return this._isFlipUVX; + }, + set: function set(value) { + this._isFlipUVX = value; + this._calculateUV(); + } + }, { + key: "flipUVY", + get: function get() { + return this._isFlipUVY; + }, + set: function set(value) { + this._isFlipUVY = value; + this._calculateUV(); + } + }, { + key: "packable", + get: function get() { + return this._packable; + }, + set: function set(value) { + this._packable = value; + } + }, { + key: "original", + get: function get() { + return this._original; + } + }, { + key: "pixelsToUnit", + get: function get() { + return this._pixelsToUnit; + } + }, { + key: "pivot", + get: function get() { + return this._pivot; + } + }, { + key: "mesh", + get: function get() { + return this._mesh; + } + }, { + key: "trimmedBorder", + get: function get() { + return this._trimmedBorder; + } + }]); + return SpriteFrame; + }(Asset), _class2$1p.EVENT_UV_UPDATED = 'uv_updated', _class2$1p.MeshType = MeshType, _class2$1p)) || _class$1C)); + legacyCC.SpriteFrame = SpriteFrame; + + var _dec$1C, _class$1B, _class2$1o, _initializer$1h; + var SpriteAtlas = exports('a', (_dec$1C = ccclass$t('cc.SpriteAtlas'), _dec$1C(_class$1B = (_class2$1o = function (_Asset) { + _inheritsLoose(SpriteAtlas, _Asset); + function SpriteAtlas() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Asset.call.apply(_Asset, [this].concat(args)) || this; + _this.spriteFrames = _initializer$1h && _initializer$1h(); + return _this; + } + var _proto = SpriteAtlas.prototype; + _proto.getTexture = function getTexture() { + var keys = Object.keys(this.spriteFrames); + if (keys.length > 0) { + var spriteFrame = this.spriteFrames[keys[0]]; + return spriteFrame && spriteFrame.texture; + } else { + return null; + } + }; + _proto.getSpriteFrame = function getSpriteFrame(key) { + var sf = this.spriteFrames[key]; + if (!sf) { + return null; + } + if (!sf.name) { + sf.name = key; + } + return sf; + }; + _proto.getSpriteFrames = function getSpriteFrames() { + var frames = []; + var spriteFrames = this.spriteFrames; + for (var _i = 0, _Object$keys = Object.keys(spriteFrames); _i < _Object$keys.length; _i++) { + var _key2 = _Object$keys[_i]; + frames.push(spriteFrames[_key2]); + } + return frames; + }; + _proto._serialize = function _serialize(ctxForExporting) { + }; + _proto._deserialize = function _deserialize(serializeData, handle) { + var data = serializeData; + this._name = data.name; + var frames = data.spriteFrames; + this.spriteFrames = createMap(); + for (var i = 0; i < frames.length; i += 2) { + handle.result.push(this.spriteFrames, frames[i], frames[i + 1], getClassId(SpriteFrame)); + } + }; + return SpriteAtlas; + }(Asset), (_initializer$1h = applyDecoratedInitializer(_class2$1o.prototype, "spriteFrames", [serializable$9], function () { + return createMap(); + })), _class2$1o)) || _class$1B)); + legacyCC.SpriteAtlas = SpriteAtlas; + + var _dec$1B, _class$1A; + var Font = exports('F', (_dec$1B = ccclass$t('cc.Font'), _dec$1B(_class$1A = function (_Asset) { + _inheritsLoose(Font, _Asset); + function Font() { + return _Asset.apply(this, arguments) || this; + } + return Font; + }(Asset)) || _class$1A)); + legacyCC.Font = Font; + + var _dec$1A, _class$1z, _class2$1n, _initializer$1g; + var TTFFont = exports('T', (_dec$1A = ccclass$t('cc.TTFFont'), _dec$1A(_class$1z = (_class2$1n = function (_Font) { + _inheritsLoose(TTFFont, _Font); + function TTFFont() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Font.call.apply(_Font, [this].concat(args)) || this; + _this._fontFamily = _initializer$1g && _initializer$1g(); + return _this; + } + var _proto = TTFFont.prototype; + _proto.initDefault = function initDefault(uuid) { + this._fontFamily = 'Arial'; + _Font.prototype.initDefault.call(this, uuid); + }; + _createClass(TTFFont, [{ + key: "_nativeAsset", + get: function get() { + return this._fontFamily; + }, + set: function set(value) { + this._fontFamily = value || 'Arial'; + } + }, { + key: "_nativeDep", + get: function get() { + return { + uuid: this._uuid, + __nativeName__: this._native, + ext: extname(this._native), + __isNative__: true + }; + } + }]); + return TTFFont; + }(Font), (_initializer$1g = applyDecoratedInitializer(_class2$1n.prototype, "_fontFamily", [serializable$9], function () { + return null; + }), _applyDecoratedDescriptor(_class2$1n.prototype, "_nativeAsset", [override$1, string], Object.getOwnPropertyDescriptor(_class2$1n.prototype, "_nativeAsset"), _class2$1n.prototype), _applyDecoratedDescriptor(_class2$1n.prototype, "_nativeDep", [override$1], Object.getOwnPropertyDescriptor(_class2$1n.prototype, "_nativeDep"), _class2$1n.prototype)), _class2$1n)) || _class$1z)); + legacyCC.TTFFont = TTFFont; + + var _dec$1z, _dec2$1a, _class2$1m, _class3$x, _initializer$1f, _initializer2$11, _initializer3$M, _initializer4$G; + var FontLetterDefinition$1 = function FontLetterDefinition() { + this.u = 0; + this.v = 0; + this.w = 0; + this.h = 0; + this.offsetX = 0; + this.offsetY = 0; + this.textureID = 0; + this.valid = false; + this.xAdvance = 0; + }; + var FontAtlas = function () { + function FontAtlas(texture) { + this.letterDefinitions = {}; + this.texture = texture; + } + var _proto = FontAtlas.prototype; + _proto.addLetterDefinitions = function addLetterDefinitions(letter, letterDefinition) { + this.letterDefinitions[letter] = letterDefinition; + }; + _proto.cloneLetterDefinition = function cloneLetterDefinition() { + var copyLetterDefinitions = {}; + for (var _i = 0, _Object$keys = Object.keys(this.letterDefinitions); _i < _Object$keys.length; _i++) { + var _key = _Object$keys[_i]; + var value = new FontLetterDefinition$1(); + mixin(value, this.letterDefinitions[_key]); + copyLetterDefinitions[_key] = value; + } + return copyLetterDefinitions; + }; + _proto.getTexture = function getTexture() { + return this.texture; + }; + _proto.getLetter = function getLetter(key) { + return this.letterDefinitions[key]; + }; + _proto.getLetterDefinitionForChar = function getLetterDefinitionForChar(_char, labelInfo) { + var key = _char.charCodeAt(0); + var hasKey = this.letterDefinitions.hasOwnProperty(key); + var letter; + if (hasKey) { + letter = this.letterDefinitions[key]; + } else { + letter = null; + } + return letter; + }; + _proto.clear = function clear() { + this.letterDefinitions = {}; + }; + return FontAtlas; + }(); + var BitmapFont = exports('B', (_dec$1z = ccclass$t('cc.BitmapFont'), _dec2$1a = type$8(SpriteFrame), _dec$1z(_class2$1m = (_class3$x = function (_Font) { + _inheritsLoose(BitmapFont, _Font); + function BitmapFont() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) { + args[_key2] = arguments[_key2]; + } + _this = _Font.call.apply(_Font, [this].concat(args)) || this; + _this.fntDataStr = _initializer$1f && _initializer$1f(); + _this.spriteFrame = _initializer2$11 && _initializer2$11(); + _this.fontSize = _initializer3$M && _initializer3$M(); + _this.fntConfig = _initializer4$G && _initializer4$G(); + return _this; + } + var _proto2 = BitmapFont.prototype; + _proto2.onLoaded = function onLoaded() { + var spriteFrame = this.spriteFrame; + if (!this.fontDefDictionary && spriteFrame) { + this.fontDefDictionary = new FontAtlas(spriteFrame.texture); + } + var fntConfig = this.fntConfig; + if (!fntConfig) { + warn('The fnt config is not exists!'); + return; + } + var fontDict = fntConfig.fontDefDictionary; + for (var fontDef in fontDict) { + var letter = new FontLetterDefinition$1(); + var rect = fontDict[fontDef].rect; + letter.offsetX = fontDict[fontDef].xOffset; + letter.offsetY = fontDict[fontDef].yOffset; + letter.w = rect.width; + letter.h = rect.height; + letter.u = rect.x; + letter.v = rect.y; + letter.textureID = 0; + letter.valid = true; + letter.xAdvance = fontDict[fontDef].xAdvance; + this.fontDefDictionary.addLetterDefinitions(fontDef, letter); + } + }; + return BitmapFont; + }(Font), (_initializer$1f = applyDecoratedInitializer(_class3$x.prototype, "fntDataStr", [serializable$9], function () { + return ''; + }), _initializer2$11 = applyDecoratedInitializer(_class3$x.prototype, "spriteFrame", [_dec2$1a], function () { + return null; + }), _initializer3$M = applyDecoratedInitializer(_class3$x.prototype, "fontSize", [serializable$9], function () { + return -1; + }), _initializer4$G = applyDecoratedInitializer(_class3$x.prototype, "fntConfig", [serializable$9], function () { + return null; + })), _class3$x)) || _class2$1m)); + legacyCC.BitmapFont = BitmapFont; + + var _dec$1y, _class$1y; + var LabelAtlas = exports('L', (_dec$1y = ccclass$t('cc.LabelAtlas'), _dec$1y(_class$1y = function (_BitmapFont) { + _inheritsLoose(LabelAtlas, _BitmapFont); + function LabelAtlas() { + return _BitmapFont.apply(this, arguments) || this; + } + return LabelAtlas; + }(BitmapFont)) || _class$1y)); + legacyCC.LabelAtlas = LabelAtlas; + + var BASELINE_RATIO = exports('z', 0.26); + var _BASELINE_OFFSET$1 = 0; + var MIDDLE_RATIO = exports('A', (BASELINE_RATIO + 1) / 2 - BASELINE_RATIO); + function getBaselineOffset() { + return _BASELINE_OFFSET$1; + } + var MAX_CACHE_SIZE = 100; + var pool$2 = new Pool$1(2); + pool$2.get = function () { + return this._get() || { + key: '', + value: 0, + prev: null, + next: null + }; + }; + var LRUCache = exports('E', function () { + function LRUCache(size) { + this.count = 0; + this.limit = 0; + this.datas = {}; + this.limit = size; + } + var _proto = LRUCache.prototype; + _proto.moveToHead = function moveToHead(node) { + node.next = this.head; + node.prev = null; + if (this.head) this.head.prev = node; + this.head = node; + if (!this.tail) this.tail = node; + this.count++; + this.datas[node.key] = node; + }; + _proto.put = function put(key, value) { + var node = pool$2.get(); + node.key = key; + node.value = value; + if (this.count >= this.limit) { + var discard = this.tail; + delete this.datas[discard.key]; + this.count--; + this.tail = discard.prev; + this.tail.next = null; + discard.prev = null; + discard.next = null; + pool$2.put(discard); + } + this.moveToHead(node); + }; + _proto.remove = function remove(node) { + if (node.prev) { + node.prev.next = node.next; + } else { + this.head = node.next; + } + if (node.next) { + node.next.prev = node.prev; + } else { + this.tail = node.prev; + } + delete this.datas[node.key]; + this.count--; + }; + _proto.get = function get(key) { + var node = this.datas[key]; + if (node) { + this.remove(node); + this.moveToHead(node); + return node.value; + } + return null; + }; + _proto.clear = function clear() { + this.count = 0; + this.datas = {}; + this.head = null; + this.tail = null; + }; + _proto.has = function has(key) { + return !!this.datas[key]; + }; + _proto["delete"] = function _delete(key) { + var node = this.datas[key]; + this.remove(node); + }; + return LRUCache; + }()); + var measureCache = new LRUCache(MAX_CACHE_SIZE); + var WORD_REG = /([a-zA-Z0-9ÄÖÜäöüßéèçàùêâîôûа-яА-ЯЁё]+|\S)/; + var SYMBOL_REG = /^[!,.:;'}\]%\?>、‘“》?。,!]/; + var LAST_WORD_REG = /([a-zA-Z0-9ÄÖÜäöüßéèçàùêâîôûаíìÍÌïÁÀáàÉÈÒÓòóŐőÙÚŰúűñÑæÆœŒÃÂãÔõěščřžýáíéóúůťďňĚŠČŘŽÁÍÉÓÚŤżźśóńłęćąŻŹŚÓŃŁĘĆĄ-яА-ЯЁёáàảạãăắằẳẵặâấầẩẫậéèẻẽẹêếềểễệiíìỉĩịóòỏõọôốồổỗộơớờởỡợúùủũụưứừửữựýỳỷỹỵđÁÀẢẠÃĂẮẰẲẴẶÂẤẦẨẪẬÉÈẺẼẸÊẾỀỂỄỆIÍÌỈĨỊÓÒỎÕỌÔỐỒỔỖỘƠỚỜỞỠỢÚÙỦŨỤƯỨỪỬỮỰÝỲỶỸỴĐ]+|\S)$/; + var LAST_ENGLISH_REG = /[a-zA-Z0-9ÄÖÜäöüßéèçàùêâîôûаíìÍÌïÁÀáàÉÈÒÓòóŐőÙÚŰúűñÑæÆœŒÃÂãÔõěščřžýáíéóúůťďňĚŠČŘŽÁÍÉÓÚŤżźśóńłęćąŻŹŚÓŃŁĘĆĄ-яА-ЯЁёáàảạãăắằẳẵặâấầẩẫậéèẻẽẹêếềểễệiíìỉĩịóòỏõọôốồổỗộơớờởỡợúùủũụưứừửữựýỳỷỹỵđÁÀẢẠÃĂẮẰẲẴẶÂẤẦẨẪẬÉÈẺẼẸÊẾỀỂỄỆIÍÌỈĨỊÓÒỎÕỌÔỐỒỔỖỘƠỚỜỞỠỢÚÙỦŨỤƯỨỪỬỮỰÝỲỶỸỴĐ]+$/; + var FIRST_ENGLISH_REG = /^[a-zA-Z0-9ÄÖÜäöüßéèçàùêâîôûаíìÍÌïÁÀáàÉÈÒÓòóŐőÙÚŰúűñÑæÆœŒÃÂãÔõěščřžýáíéóúůťďňĚŠČŘŽÁÍÉÓÚŤżźśóńłęćąŻŹŚÓŃŁĘĆĄ-яА-ЯЁёáàảạãăắằẳẵặâấầẩẫậéèẻẽẹêếềểễệiíìỉĩịóòỏõọôốồổỗộơớờởỡợúùủũụưứừửữựýỳỷỹỵđÁÀẢẠÃĂẮẰẲẴẶÂẤẦẨẪẬÉÈẺẼẸÊẾỀỂỄỆIÍÌỈĨỊÓÒỎÕỌÔỐỒỔỖỘƠỚỜỞỠỢÚÙỦŨỤƯỨỪỬỮỰÝỲỶỸỴĐ]/; + function isUnicodeCJK(ch) { + var __CHINESE_REG = /^[\u4E00-\u9FFF\u3400-\u4DFF]+$/; + var __JAPANESE_REG = /[\u3000-\u303F]|[\u3040-\u309F]|[\u30A0-\u30FF]|[\uFF00-\uFFEF]|[\u4E00-\u9FAF]|[\u2605-\u2606]|[\u2190-\u2195]|\u203B/g; + var __KOREAN_REG = /^[\u1100-\u11FF]|[\u3130-\u318F]|[\uA960-\uA97F]|[\uAC00-\uD7AF]|[\uD7B0-\uD7FF]+$/; + return __CHINESE_REG.test(ch) || __JAPANESE_REG.test(ch) || __KOREAN_REG.test(ch); + } + function isUnicodeSpace(ch) { + var chCode = ch.charCodeAt(0); + return chCode >= 9 && chCode <= 13 || chCode === 32 || chCode === 133 || chCode === 160 || chCode === 5760 || chCode >= 8192 && chCode <= 8202 || chCode === 8232 || chCode === 8233 || chCode === 8239 || chCode === 8287 || chCode === 12288; + } + function safeMeasureText(ctx, string, desc) { + var font = desc || ctx.font; + var key = font + "\uD83C\uDFAE" + string; + var cache = measureCache.get(key); + if (cache !== null) { + return cache; + } + var metric = ctx.measureText(string); + var width = metric && metric.width || 0; + measureCache.put(key, width); + return width; + } + function _safeSubstring(targetString, startIndex, endIndex) { + var newStartIndex = startIndex; + var newEndIndex = endIndex; + var startChar = targetString[startIndex]; + if (startChar >= "\uDC00" && startChar <= "\uDFFF") { + newStartIndex--; + } + if (endIndex !== undefined) { + if (endIndex - 1 !== startIndex) { + var endChar = targetString[endIndex - 1]; + if (endChar >= "\uD800" && endChar <= "\uDBFF") { + newEndIndex--; + } + } else if (startChar >= "\uD800" && startChar <= "\uDBFF") { + newEndIndex++; + } + } + return targetString.substring(newStartIndex, newEndIndex); + } + function isEnglishWordPartAtFirst(stringToken) { + return FIRST_ENGLISH_REG.test(stringToken); + } + function isEnglishWordPartAtLast(stringToken) { + return LAST_ENGLISH_REG.test(stringToken); + } + function getEnglishWordPartAtFirst(stringToken) { + var result = FIRST_ENGLISH_REG.exec(stringToken); + return result; + } + function getEnglishWordPartAtLast(stringToken) { + var result = LAST_ENGLISH_REG.exec(stringToken); + return result; + } + function fragmentText(stringToken, allWidth, maxWidth, measureText) { + var wrappedWords = []; + if (stringToken.length === 0 || maxWidth < 0) { + wrappedWords.push(''); + return wrappedWords; + } + var text = stringToken; + while (allWidth > maxWidth && text.length > 1) { + var fuzzyLen = text.length * (maxWidth / allWidth) | 0; + var tmpText = _safeSubstring(text, fuzzyLen); + var width = allWidth - measureText(tmpText); + var sLine = tmpText; + var pushNum = 0; + var checkWhile = 0; + var checkCount = 100; + while (width > maxWidth && checkWhile++ < checkCount) { + fuzzyLen *= maxWidth / width; + fuzzyLen |= 0; + tmpText = _safeSubstring(text, fuzzyLen); + width = allWidth - measureText(tmpText); + } + checkWhile = 0; + while (tmpText && width <= maxWidth && checkWhile++ < checkCount) { + var exec = WORD_REG.exec(tmpText); + pushNum = exec ? exec[0].length : 1; + sLine = tmpText; + fuzzyLen += pushNum; + tmpText = _safeSubstring(text, fuzzyLen); + width = allWidth - measureText(tmpText); + } + fuzzyLen -= pushNum; + if (fuzzyLen === 0) { + fuzzyLen = 1; + sLine = _safeSubstring(text, 1); + } else if (fuzzyLen === 1 && text[0] >= "\uD800" && text[0] <= "\uDBFF") { + fuzzyLen = 2; + sLine = _safeSubstring(text, 2); + } + var sText = _safeSubstring(text, 0, fuzzyLen); + var result = void 0; + { + if (SYMBOL_REG.test(sLine || tmpText)) { + result = LAST_WORD_REG.exec(sText); + fuzzyLen -= result ? result[0].length : 0; + if (fuzzyLen === 0) { + fuzzyLen = 1; + } + sLine = _safeSubstring(text, fuzzyLen); + sText = _safeSubstring(text, 0, fuzzyLen); + } + } + if (FIRST_ENGLISH_REG.test(sLine)) { + result = LAST_ENGLISH_REG.exec(sText); + if (result && sText !== result[0]) { + fuzzyLen -= result[0].length; + sLine = _safeSubstring(text, fuzzyLen); + sText = _safeSubstring(text, 0, fuzzyLen); + } + } + if (wrappedWords.length === 0) { + wrappedWords.push(sText); + } else { + sText = sText.trim(); + if (sText.length > 0) { + wrappedWords.push(sText); + } + } + text = sLine || tmpText; + allWidth = measureText(text); + } + if (wrappedWords.length === 0) { + wrappedWords.push(text); + } else { + text = text.trim(); + if (text.length > 0) { + wrappedWords.push(text); + } + } + return wrappedWords; + } + + var _canvasPool; + var CanvasPool = function () { + function CanvasPool() { + this.pool = []; + } + CanvasPool.getInstance = function getInstance() { + if (!_canvasPool) { + _canvasPool = new CanvasPool(); + } + return _canvasPool; + }; + var _proto = CanvasPool.prototype; + _proto.get = function get() { + var data = this.pool.pop(); + if (!data) { + var canvas = ccwindow.document.createElement('canvas'); + var context = canvas.getContext('2d'); + data = { + canvas: canvas, + context: context + }; + } + return data; + }; + _proto.put = function put(canvas) { + if (this.pool.length >= macro.MAX_LABEL_CANVAS_POOL_SIZE) { + return; + } + this.pool.push(canvas); + }; + return CanvasPool; + }(); + var WHITE$1 = Color$1.WHITE.clone(); + var space = 0; + var bleed = 2; + var FontLetterDefinition = function FontLetterDefinition() { + this.u = 0; + this.v = 0; + this.w = 0; + this.h = 0; + this.texture = null; + this.offsetX = 0; + this.offsetY = 0; + this.valid = false; + this.xAdvance = 0; + }; + var _backgroundStyle = "rgba(255, 255, 255, " + (1 / 255).toFixed(3) + ")"; + var BASELINE_OFFSET = getBaselineOffset(); + var LetterTexture = function () { + function LetterTexture(_char, labelInfo) { + this.image = null; + this.labelInfo = void 0; + this["char"] = void 0; + this.data = null; + this.canvas = null; + this.context = null; + this.width = 0; + this.height = 0; + this.offsetY = 0; + this.hash = void 0; + this["char"] = _char; + this.labelInfo = labelInfo; + this.hash = "" + _char.charCodeAt(0) + labelInfo.hash; + } + var _proto2 = LetterTexture.prototype; + _proto2.updateRenderData = function updateRenderData() { + this._updateProperties(); + this._updateTexture(); + }; + _proto2.destroy = function destroy() { + this.image = null; + CanvasPool.getInstance().put(this.data); + }; + _proto2._updateProperties = function _updateProperties() { + this.data = CanvasPool.getInstance().get(); + this.canvas = this.data.canvas; + this.context = this.data.context; + if (this.context) { + var fontScale = this.labelInfo.fontScale; + this.context.font = this.labelInfo.fontDesc; + var width = safeMeasureText(this.context, this["char"], this.labelInfo.fontDesc); + var blank = this.labelInfo.margin * 2 + bleed; + this.width = parseFloat(width.toFixed(2)) * fontScale + blank; + this.height = (1 + BASELINE_RATIO) * this.labelInfo.fontSize * fontScale + blank; + this.offsetY = -(this.labelInfo.fontSize * BASELINE_RATIO) * fontScale / 2; + } + if (this.canvas.width !== this.width) { + this.canvas.width = this.width; + } + if (this.canvas.height !== this.height) { + this.canvas.height = this.height; + } + if (!this.image) { + this.image = new ImageAsset(); + } + this.image.reset(this.canvas); + }; + _proto2._updateTexture = function _updateTexture() { + if (!this.context || !this.canvas) { + return; + } + var context = this.context; + var labelInfo = this.labelInfo; + var width = this.canvas.width; + var height = this.canvas.height; + var fontScale = labelInfo.fontScale; + context.textAlign = 'center'; + context.textBaseline = 'alphabetic'; + context.clearRect(0, 0, width, height); + context.fillStyle = _backgroundStyle; + context.fillRect(0, 0, width, height); + context.font = labelInfo.fontDesc.replace(/(\d+)(\.\d+)?(px|em|rem|pt)/g, function (w, m, n, u) { + return (+m * fontScale + (+n || 0) * fontScale).toString() + u; + }); + var fontSize = labelInfo.fontSize * fontScale; + var startX = width / 2; + var startY = height / 2 + fontSize * MIDDLE_RATIO + fontSize * BASELINE_OFFSET; + var color = labelInfo.color; + context.lineJoin = 'round'; + context.fillStyle = "rgba(" + color.r + ", " + color.g + ", " + color.b + ", " + 1 + ")"; + if (labelInfo.isOutlined) { + var strokeColor = labelInfo.out || WHITE$1; + context.strokeStyle = "rgba(" + strokeColor.r + ", " + strokeColor.g + ", " + strokeColor.b + ", " + strokeColor.a / 255 + ")"; + context.lineWidth = labelInfo.margin * 2 * fontScale; + context.strokeText(this["char"], startX, startY); + } + context.fillText(this["char"], startX, startY); + }; + return LetterTexture; + }(); + var LetterRenderTexture = function (_Texture2D) { + _inheritsLoose(LetterRenderTexture, _Texture2D); + function LetterRenderTexture() { + return _Texture2D.apply(this, arguments) || this; + } + var _proto3 = LetterRenderTexture.prototype; + _proto3.initWithSize = function initWithSize(width, height, format) { + if (format === void 0) { + format = PixelFormat.RGBA8888; + } + this.reset({ + width: width, + height: height, + format: format + }); + }; + _proto3.drawTextureAt = function drawTextureAt(image, x, y) { + var gfxTexture = this.getGFXTexture(); + if (!image || !gfxTexture) { + return; + } + var gfxDevice = this._getGFXDevice(); + if (!gfxDevice) { + console.warn('Unable to get device'); + return; + } + var region = new BufferTextureCopy(); + region.texOffset.x = x; + region.texOffset.y = y; + region.texExtent.width = image.width; + region.texExtent.height = image.height; + gfxDevice.copyTexImagesToTexture([image.data], gfxTexture, [region]); + }; + return LetterRenderTexture; + }(Texture2D); + var LetterAtlas = function () { + function LetterAtlas(width, height) { + this._x = space; + this._y = space; + this._nextY = space; + this._width = 0; + this._height = 0; + this._halfBleed = 0; + this._dirty = false; + var texture = new LetterRenderTexture(); + texture.initWithSize(width, height); + this.fontDefDictionary = new FontAtlas(texture); + this._halfBleed = bleed / 2; + this._width = width; + this._height = height; + director.on(Director.EVENT_BEFORE_SCENE_LAUNCH, this.beforeSceneLoad, this); + } + var _proto4 = LetterAtlas.prototype; + _proto4.insertLetterTexture = function insertLetterTexture(letterTexture) { + var texture = letterTexture.image; + var device = director.root.device; + if (!texture || !this.fontDefDictionary || !device) { + return null; + } + var width = texture.width; + var height = texture.height; + if (this._x + width + space > this._width) { + this._x = space; + this._y = this._nextY; + } + if (this._y + height > this._nextY) { + this._nextY = this._y + height + space; + } + if (this._nextY > this._height) { + warnID(12100); + return null; + } + this.fontDefDictionary.texture.drawTextureAt(texture, this._x, this._y); + this._dirty = true; + var letterDefinition = new FontLetterDefinition(); + letterDefinition.u = this._x + this._halfBleed; + letterDefinition.v = this._y + this._halfBleed; + letterDefinition.texture = this.fontDefDictionary.texture; + letterDefinition.valid = true; + letterDefinition.w = letterTexture.width - bleed; + letterDefinition.h = letterTexture.height - bleed; + letterDefinition.xAdvance = letterDefinition.w; + letterDefinition.offsetY = letterTexture.offsetY; + this._x += width + space; + this.fontDefDictionary.addLetterDefinitions(letterTexture.hash, letterDefinition); + return letterDefinition; + }; + _proto4.update = function update() { + if (!this._dirty) { + return; + } + this._dirty = false; + }; + _proto4.reset = function reset() { + this._x = space; + this._y = space; + this._nextY = space; + this.fontDefDictionary.clear(); + }; + _proto4.destroy = function destroy() { + this.reset(); + if (this.fontDefDictionary) { + this.fontDefDictionary.texture.destroy(); + this.fontDefDictionary.texture = null; + } + }; + _proto4.getTexture = function getTexture() { + return this.fontDefDictionary.getTexture(); + }; + _proto4.beforeSceneLoad = function beforeSceneLoad() { + this.clearAllCache(); + }; + _proto4.clearAllCache = function clearAllCache() { + this.destroy(); + var texture = new LetterRenderTexture(); + texture.initWithSize(this._width, this._height); + this.fontDefDictionary.texture = texture; + }; + _proto4.getLetter = function getLetter(key) { + return this.fontDefDictionary.letterDefinitions[key]; + }; + _proto4.getLetterDefinitionForChar = function getLetterDefinitionForChar(_char2, labelInfo) { + var hash = _char2.charCodeAt(0) + labelInfo.hash; + var letter = this.fontDefDictionary.letterDefinitions[hash]; + if (!letter) { + var temp = new LetterTexture(_char2, labelInfo); + temp.updateRenderData(); + letter = this.insertLetterTexture(temp); + temp.destroy(); + } + return letter; + }; + _createClass(LetterAtlas, [{ + key: "width", + get: function get() { + return this._width; + } + }, { + key: "height", + get: function get() { + return this._height; + } + }]); + return LetterAtlas; + }(); + var shareLabelInfo = { + fontAtlas: null, + fontSize: 0, + lineHeight: 0, + hAlign: 0, + vAlign: 0, + hash: '', + fontFamily: '', + fontDesc: 'Arial', + color: Color$1.WHITE.clone(), + isOutlined: false, + out: Color$1.WHITE.clone(), + margin: 0, + fontScale: 1 + }; + function computeHash(labelInfo) { + var hashData = ''; + var color = labelInfo.color.toHEX(); + var out = ''; + if (labelInfo.isOutlined && labelInfo.margin > 0) { + out = out + labelInfo.margin + labelInfo.out.toHEX(); + } + return hashData + labelInfo.fontSize + labelInfo.fontFamily + color + out; + } + + var vfmt = [new Attribute(AttributeName.ATTR_POSITION, Format.RGB32F)]; + var vfmtPosColor = [new Attribute(AttributeName.ATTR_POSITION, Format.RGB32F), new Attribute(AttributeName.ATTR_COLOR, Format.RGBA32F)]; + var vfmtPosUvColor = [new Attribute(AttributeName.ATTR_POSITION, Format.RGB32F), new Attribute(AttributeName.ATTR_TEX_COORD, Format.RG32F), new Attribute(AttributeName.ATTR_COLOR, Format.RGBA32F)]; + var vfmtPosUvColor4B = [new Attribute(AttributeName.ATTR_POSITION, Format.RGB32F), new Attribute(AttributeName.ATTR_TEX_COORD, Format.RG32F), new Attribute(AttributeName.ATTR_COLOR, Format.RGBA8, true)]; + var vfmtPosUvTwoColor = [new Attribute(AttributeName.ATTR_POSITION, Format.RGB32F), new Attribute(AttributeName.ATTR_TEX_COORD, Format.RG32F), new Attribute(AttributeName.ATTR_COLOR, Format.RGBA32F), new Attribute(AttributeName.ATTR_COLOR2, Format.RGBA32F)]; + var vfmtPosUvTwoColor4B = [new Attribute(AttributeName.ATTR_POSITION, Format.RGB32F), new Attribute(AttributeName.ATTR_TEX_COORD, Format.RG32F), new Attribute(AttributeName.ATTR_COLOR, Format.RGBA8, true), new Attribute(AttributeName.ATTR_COLOR2, Format.RGBA8, true)]; + function getComponentPerVertex(attrs) { + var count = 0; + for (var i = 0; i < attrs.length; i++) { + var attr = attrs[i]; + var info = FormatInfos[attr.format]; + count += info.count; + } + return count; + } + function getAttributeStride(attrs) { + var count = 0; + for (var i = 0; i < attrs.length; i++) { + var attr = attrs[i]; + var info = FormatInfos[attr.format]; + count += info.size; + } + return count; + } + legacyCC.internal.vfmtPosUvColor = vfmtPosUvColor; + legacyCC.internal.vfmtPosUvTwoColor = vfmtPosUvTwoColor; + legacyCC.internal.vfmtPosUvColor4B = vfmtPosUvColor4B; + legacyCC.internal.vfmtPosUvTwoColor4B = vfmtPosUvTwoColor4B; + + var vertexFormat = /*#__PURE__*/Object.freeze({ + __proto__: null, + vfmt: vfmt, + vfmtPosColor: vfmtPosColor, + vfmtPosUvColor: vfmtPosUvColor, + vfmtPosUvColor4B: vfmtPosUvColor4B, + vfmtPosUvTwoColor: vfmtPosUvTwoColor, + vfmtPosUvTwoColor4B: vfmtPosUvTwoColor4B, + getComponentPerVertex: getComponentPerVertex, + getAttributeStride: getAttributeStride + }); + exports('v', vertexFormat); + + var MeshBufferSharedBufferView; + (function (MeshBufferSharedBufferView) { + MeshBufferSharedBufferView[MeshBufferSharedBufferView["byteOffset"] = 0] = "byteOffset"; + MeshBufferSharedBufferView[MeshBufferSharedBufferView["vertexOffset"] = 1] = "vertexOffset"; + MeshBufferSharedBufferView[MeshBufferSharedBufferView["indexOffset"] = 2] = "indexOffset"; + MeshBufferSharedBufferView[MeshBufferSharedBufferView["dirty"] = 3] = "dirty"; + MeshBufferSharedBufferView[MeshBufferSharedBufferView["count"] = 4] = "count"; + })(MeshBufferSharedBufferView || (MeshBufferSharedBufferView = {})); + var IA_POOL_USED_SCALE = 1 / 2; + var MeshBuffer = exports('M', function () { + var _proto = MeshBuffer.prototype; + _proto.initSharedBuffer = function initSharedBuffer() { + }; + _proto.syncSharedBufferToNative = function syncSharedBufferToNative() { + }; + function MeshBuffer() { + this._byteOffset = 0; + this._vertexOffset = 0; + this._indexOffset = 0; + this._dirty = false; + this._floatsPerVertex = 0; + this._vData = null; + this._iData = null; + this._vertexFormatBytes = 0; + this._initVDataCount = 0; + this._initIDataCount = 0; + this._attributes = null; + this._iaPool = []; + this._iaInfo = null; + this._nextFreeIAHandle = 0; + this.initSharedBuffer(); + this.syncSharedBufferToNative(); + } + _proto.initialize = function initialize(device, attrs, vFloatCount, iCount) { + this._initVDataCount = vFloatCount; + this._initIDataCount = iCount; + this._attributes = attrs; + this.floatsPerVertex = getAttributeStride(attrs) >> 2; + assertIsTrue(this._initVDataCount / this._floatsPerVertex < 65536, getError(9005)); + if (!this.vData || !this.iData) { + this.vData = new Float32Array(this._initVDataCount); + this.iData = new Uint16Array(this._initIDataCount); + } + this._iaPool.push(this.createNewIA(device)); + }; + _proto.reset = function reset() { + this._nextFreeIAHandle = 0; + this.dirty = false; + }; + _proto.destroy = function destroy() { + this.reset(); + this._attributes = null; + this._iaInfo = null; + this.vData = null; + this.iData = null; + for (var i = 0; i < this._iaPool.length; ++i) { + var iaRef = this._iaPool[i]; + if (iaRef.vertexBuffers[0]) { + iaRef.vertexBuffers[0].destroy(); + } + if (iaRef.indexBuffer) { + iaRef.indexBuffer.destroy(); + } + iaRef.ia.destroy(); + } + this._iaPool.length = 0; + }; + _proto.setDirty = function setDirty() { + this.dirty = true; + }; + _proto.request = function request(vertexCount, indexCount) { + warnID(9002); + return false; + }; + _proto.requireFreeIA = function requireFreeIA(device) { + if (this._iaPool.length <= this._nextFreeIAHandle) { + this._iaPool.push(this.createNewIA(device)); + } + var ia = this._iaPool[this._nextFreeIAHandle++].ia; + return ia; + }; + _proto.recycleIA = function recycleIA(ia) { + var pool = this._iaPool; + for (var i = 0; i < this._nextFreeIAHandle; ++i) { + if (ia === pool[i].ia) { + var iaRef = pool[i]; + pool[i] = pool[--this._nextFreeIAHandle]; + pool[this._nextFreeIAHandle] = iaRef; + return; + } + } + }; + _proto.checkCapacity = function checkCapacity(vertexCount, indexCount) { + var maxVertex = (this.vertexOffset + vertexCount) * this._floatsPerVertex; + var maxIndex = this.indexOffset + indexCount; + if (maxVertex > this._initVDataCount || maxIndex > this._initIDataCount) { + return false; + } + return true; + }; + _proto.uploadBuffers = function uploadBuffers() { + if (this.byteOffset === 0 || !this._dirty) { + return; + } + var iOS14 = sys.__isWebIOS14OrIPadOS14Env; + var submitCount = iOS14 ? this._nextFreeIAHandle : 1; + if (iOS14 && submitCount / this._iaPool.length < IA_POOL_USED_SCALE) { + var count = submitCount / IA_POOL_USED_SCALE; + var length = this._iaPool.length; + for (var i = length - 1; i >= count; i--) { + var iaRef = this._iaPool[i]; + if (iaRef.vertexBuffers[0]) { + iaRef.vertexBuffers[0].destroy(); + } + if (iaRef.indexBuffer) { + iaRef.indexBuffer.destroy(); + } + iaRef.ia.destroy(); + } + this._iaPool.length = count; + } + var byteCount = this.byteOffset; + var indexCount = this.indexOffset; + for (var _i = 0; _i < submitCount; ++_i) { + var _iaRef = this._iaPool[_i]; + var verticesData = new Float32Array(this.vData.buffer, 0, byteCount >> 2); + var indicesData = new Uint16Array(this.iData.buffer, 0, indexCount); + var vertexBuffer = _iaRef.vertexBuffers[0]; + if (byteCount > vertexBuffer.size) { + vertexBuffer.resize(byteCount); + } + vertexBuffer.update(verticesData); + if (indexCount * 2 > _iaRef.indexBuffer.size) { + _iaRef.indexBuffer.resize(indexCount * 2); + } + _iaRef.indexBuffer.update(indicesData); + } + this.dirty = false; + }; + _proto.createNewIA = function createNewIA(device) { + var ia; + var vertexBuffers; + var indexBuffer; + if (sys.__isWebIOS14OrIPadOS14Env || !this._iaPool[0]) { + var vbStride = this._vertexFormatBytes = this._floatsPerVertex * Float32Array.BYTES_PER_ELEMENT; + var ibStride = Uint16Array.BYTES_PER_ELEMENT; + var vertexBuffer = device.createBuffer(new BufferInfo(BufferUsageBit.VERTEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.HOST | MemoryUsageBit.DEVICE, vbStride, vbStride)); + indexBuffer = device.createBuffer(new BufferInfo(BufferUsageBit.INDEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.HOST | MemoryUsageBit.DEVICE, ibStride, ibStride)); + vertexBuffers = [vertexBuffer]; + this._iaInfo = new InputAssemblerInfo(this._attributes, vertexBuffers, indexBuffer); + ia = device.createInputAssembler(this._iaInfo); + } else { + ia = device.createInputAssembler(this._iaInfo); + vertexBuffers = this._iaInfo.vertexBuffers; + indexBuffer = this._iaInfo.indexBuffer; + } + return { + ia: ia, + vertexBuffers: vertexBuffers, + indexBuffer: indexBuffer + }; + }; + _createClass(MeshBuffer, [{ + key: "attributes", + get: function get() { + return this._attributes; + } + }, { + key: "vertexFormatBytes", + get: function get() { + return this._vertexFormatBytes; + } + }, { + key: "byteOffset", + get: function get() { + return this._byteOffset; + }, + set: function set(val) { + this._byteOffset = val; + } + }, { + key: "vertexOffset", + get: function get() { + return this._vertexOffset; + }, + set: function set(val) { + this._vertexOffset = val; + } + }, { + key: "indexOffset", + get: function get() { + return this._indexOffset; + }, + set: function set(val) { + this._indexOffset = val; + } + }, { + key: "dirty", + get: function get() { + return this._dirty; + }, + set: function set(val) { + this._dirty = val; + } + }, { + key: "floatsPerVertex", + get: function get() { + return this._floatsPerVertex; + }, + set: function set(val) { + this._floatsPerVertex = val; + } + }, { + key: "vData", + get: function get() { + return this._vData; + }, + set: function set(val) { + this._vData = val; + } + }, { + key: "iData", + get: function get() { + return this._iData; + }, + set: function set(val) { + this._iData = val; + } + }, { + key: "nativeObj", + get: function get() { + return this._nativeObj; + } + }, { + key: "sharedBuffer", + get: function get() { + return this._sharedBuffer; + } + }]); + return MeshBuffer; + }()); + + var BufferAccessor = function () { + function BufferAccessor(device, attributes) { + this._device = null; + this._attributes = null; + this._vertexFormatBytes = void 0; + this._floatsPerVertex = void 0; + this._buffers = []; + this._device = device; + this._attributes = attributes; + this._floatsPerVertex = getAttributeStride(attributes) >> 2; + this._vertexFormatBytes = this._floatsPerVertex * Float32Array.BYTES_PER_ELEMENT; + } + var _proto = BufferAccessor.prototype; + _proto.initialize = function initialize() {}; + _proto.reset = function reset() {}; + _proto.request = function request(vertexCount, indexCount) { + }; + _proto.appendBuffers = function appendBuffers(vertices, indices) {}; + _proto.uploadBuffers = function uploadBuffers() {}; + _proto.destroy = function destroy() { + this._attributes.length = 0; + }; + _createClass(BufferAccessor, [{ + key: "attributes", + get: function get() { + return this._attributes; + } + }, { + key: "vertexFormatBytes", + get: function get() { + return this._vertexFormatBytes; + } + }, { + key: "floatsPerVertex", + get: function get() { + return this._floatsPerVertex; + } + }]); + return BufferAccessor; + }(); + + var _entryPool = new Pool(function () { + return { + offset: 0, + length: 0 + }; + }, 32); + var StaticVBChunk = function () { + function StaticVBChunk(vertexAccessor, bufferId, meshBuffer, vertexOffset, vb, indexCount) { + this._ib = void 0; + this.vertexAccessor = vertexAccessor; + this.bufferId = bufferId; + this.meshBuffer = meshBuffer; + this.vertexOffset = vertexOffset; + this.vb = vb; + this.indexCount = indexCount; + this._ib = new Uint16Array(indexCount); + assertIsTrue(meshBuffer === vertexAccessor.getMeshBuffer(bufferId)); + } + var _proto = StaticVBChunk.prototype; + _proto.setIndexBuffer = function setIndexBuffer(indices) { + }; + _createClass(StaticVBChunk, [{ + key: "ib", + get: function get() { + return this._ib; + } + }]); + return StaticVBChunk; + }(); + var StaticVBAccessor = function (_BufferAccessor) { + _inheritsLoose(StaticVBAccessor, _BufferAccessor); + function StaticVBAccessor(device, attributes, vCount, iCount) { + var _this; + _this = _BufferAccessor.call(this, device, attributes) || this; + _this._freeLists = []; + _this._vCount = 0; + _this._iCount = 0; + _this._id = 0; + _this._vCount = vCount || Math.floor(macro.BATCHER2D_MEM_INCREMENT * 1024 / _this._vertexFormatBytes); + _this._iCount = iCount || _this._vCount * StaticVBAccessor.IB_SCALE; + _this._id = StaticVBAccessor.generateID(); + _this._allocateBuffer(); + return _this; + } + var _proto2 = StaticVBAccessor.prototype; + _proto2.destroy = function destroy() { + for (var i = 0; i < this._buffers.length; ++i) { + this._buffers[i].destroy(); + var freeList = this._freeLists[i]; + for (var j = 0; j < freeList.length; ++j) { + _entryPool.free(freeList[j]); + } + } + this._buffers.length = 0; + this._freeLists.length = 0; + _BufferAccessor.prototype.destroy.call(this); + }; + _proto2.reset = function reset() { + for (var i = 0; i < this._buffers.length; ++i) { + var buffer = this._buffers[i]; + buffer.indexOffset = 0; + buffer.reset(); + } + }; + _proto2.getVertexBuffer = function getVertexBuffer(bid) { + return this._buffers[bid].vData; + }; + _proto2.getIndexBuffer = function getIndexBuffer(bid) { + return this._buffers[bid].iData; + }; + _proto2.getMeshBuffer = function getMeshBuffer(bid) { + return this._buffers[bid]; + }; + _proto2.uploadBuffers = function uploadBuffers() { + for (var i = 0; i < this._buffers.length; ++i) { + var firstEntry = this._freeLists[i][0]; + var buffer = this._buffers[i]; + if (!firstEntry || firstEntry.length < buffer.vData.byteLength) { + buffer.uploadBuffers(); + } + } + }; + _proto2.appendIndices = function appendIndices(bufferId, indices) { + var buf = this._buffers[bufferId]; + var iCount = indices.length; + if (iCount) { + var needLength = buf.indexOffset + indices.length; + if (buf.iData.length < needLength) { + var expansionLength = Math.floor(1.25 * needLength); + var newIData = new Uint16Array(expansionLength); + newIData.set(buf.iData); + buf.iData = newIData; + } + buf.iData.set(indices, buf.indexOffset); + buf.indexOffset += indices.length; + } + }; + _proto2.allocateChunk = function allocateChunk(vertexCount, indexCount) { + var byteLength = vertexCount * this.vertexFormatBytes; + var buf = null; + var freeList; + var bid = 0; + var eid = -1; + var entry = null; + for (var i = 0; i < this._buffers.length; ++i) { + buf = this._buffers[i]; + freeList = this._freeLists[i]; + for (var e = 0; e < freeList.length; ++e) { + if (freeList[e].length >= byteLength) { + entry = freeList[e]; + bid = i; + eid = e; + break; + } + } + if (entry) break; + } + if (!entry) { + bid = this._allocateBuffer(); + buf = this._buffers[bid]; + if (buf && buf.checkCapacity(vertexCount, indexCount)) { + eid = 0; + entry = this._freeLists[bid][eid]; + } + } + if (entry) { + var _vertexOffset = entry.offset / this.vertexFormatBytes; + assertIsTrue(Number.isInteger(_vertexOffset)); + var _vb = new Float32Array(buf.vData.buffer, entry.offset, byteLength >> 2).fill(0); + this._allocateChunkFromEntry(bid, eid, entry, byteLength); + return new StaticVBChunk(this, bid, buf, _vertexOffset, _vb, indexCount); + } else { + errorID(9004, byteLength); + return null; + } + }; + _proto2.recycleChunk = function recycleChunk(chunk) { + var freeList = this._freeLists[chunk.bufferId]; + var buf = this._buffers[chunk.bufferId]; + var offset = chunk.vertexOffset * this.vertexFormatBytes; + var bytes = chunk.vb.byteLength; + if (bytes === 0) return; + var recycled = false; + var i = 0; + var prevEntry = null; + var nextEntry = freeList[i]; + while (nextEntry && nextEntry.offset < offset) { + prevEntry = nextEntry; + nextEntry = freeList[++i]; + } + if (prevEntry) { + var distance = offset - (prevEntry.offset + prevEntry.length); + assertIsTrue(distance >= 0); + if (distance === 0) { + prevEntry.length += bytes; + offset = prevEntry.offset; + bytes = prevEntry.length; + if (nextEntry && nextEntry.offset - (offset + bytes) === 0) { + prevEntry.length += nextEntry.length; + freeList.splice(i, 1); + _entryPool.free(nextEntry); + nextEntry = null; + } + recycled = true; + } + } + if (!recycled && nextEntry) { + var _distance = nextEntry.offset - (offset + bytes); + assertIsTrue(_distance >= 0); + if (_distance === 0) { + nextEntry.offset = offset; + nextEntry.length += bytes; + } else { + var newEntry = _entryPool.alloc(); + newEntry.offset = offset; + newEntry.length = bytes; + freeList.splice(i, 0, newEntry); + } + recycled = true; + } + if (recycled) { + if (offset + bytes === buf.byteOffset) { + buf.byteOffset = offset; + } + } else { + var _newEntry = _entryPool.alloc(); + _newEntry.offset = offset; + _newEntry.length = bytes; + freeList.push(_newEntry); + } + }; + _proto2._allocateChunkFromEntry = function _allocateChunkFromEntry(bid, eid, entry, bytes) { + var remaining = entry.length - bytes; + var offset = entry.offset + bytes; + var buf = this._buffers[bid]; + if (buf.byteOffset < offset) { + buf.byteOffset = offset; + } + assertID(remaining >= 0, 9004, bid, entry.offset, entry.length); + if (remaining === 0) { + this._freeLists[bid].splice(eid, 1); + _entryPool.free(entry); + } else { + entry.offset += bytes; + entry.length = remaining; + } + }; + _proto2._allocateBuffer = function _allocateBuffer() { + assertID(this._buffers.length === this._freeLists.length, 9003); + var buffer = new MeshBuffer(); + var vFloatCount = this._vCount * this._floatsPerVertex; + buffer.initialize(this._device, this._attributes, vFloatCount, this._iCount); + this._buffers.push(buffer); + var entry = _entryPool.alloc(); + entry.offset = 0; + entry.length = buffer.vData.byteLength; + var freeList = [entry]; + this._freeLists.push(freeList); + var batcher = director.root.batcher2D; + batcher.syncMeshBuffersToNative(this.id, this._buffers); + return this._buffers.length - 1; + }; + StaticVBAccessor.generateID = function generateID() { + return StaticVBAccessor.ID_COUNT++; + }; + _createClass(StaticVBAccessor, [{ + key: "id", + get: function get() { + return this._id; + } + }]); + return StaticVBAccessor; + }(BufferAccessor); + StaticVBAccessor.IB_SCALE = 4; + StaticVBAccessor.ID_COUNT = 0; + + var AttrUInt8ArrayView; + (function (AttrUInt8ArrayView) { + AttrUInt8ArrayView[AttrUInt8ArrayView["DrawInfoType"] = 0] = "DrawInfoType"; + AttrUInt8ArrayView[AttrUInt8ArrayView["VertDirty"] = 1] = "VertDirty"; + AttrUInt8ArrayView[AttrUInt8ArrayView["IsMeshBuffer"] = 2] = "IsMeshBuffer"; + AttrUInt8ArrayView[AttrUInt8ArrayView["Stride"] = 3] = "Stride"; + AttrUInt8ArrayView[AttrUInt8ArrayView["Count"] = 4] = "Count"; + })(AttrUInt8ArrayView || (AttrUInt8ArrayView = {})); + var AttrUInt16ArrayView; + (function (AttrUInt16ArrayView) { + AttrUInt16ArrayView[AttrUInt16ArrayView["BufferID"] = 0] = "BufferID"; + AttrUInt16ArrayView[AttrUInt16ArrayView["AccessorID"] = 1] = "AccessorID"; + AttrUInt16ArrayView[AttrUInt16ArrayView["Count"] = 2] = "Count"; + })(AttrUInt16ArrayView || (AttrUInt16ArrayView = {})); + var AttrUInt32ArrayView; + (function (AttrUInt32ArrayView) { + AttrUInt32ArrayView[AttrUInt32ArrayView["VertexOffset"] = 0] = "VertexOffset"; + AttrUInt32ArrayView[AttrUInt32ArrayView["IndexOffset"] = 1] = "IndexOffset"; + AttrUInt32ArrayView[AttrUInt32ArrayView["VBCount"] = 2] = "VBCount"; + AttrUInt32ArrayView[AttrUInt32ArrayView["IBCount"] = 3] = "IBCount"; + AttrUInt32ArrayView[AttrUInt32ArrayView["DataHash"] = 4] = "DataHash"; + AttrUInt32ArrayView[AttrUInt32ArrayView["Count"] = 5] = "Count"; + })(AttrUInt32ArrayView || (AttrUInt32ArrayView = {})); + var RenderDrawInfoType; + (function (RenderDrawInfoType) { + RenderDrawInfoType[RenderDrawInfoType["COMP"] = 0] = "COMP"; + RenderDrawInfoType[RenderDrawInfoType["MODEL"] = 1] = "MODEL"; + RenderDrawInfoType[RenderDrawInfoType["MIDDLEWARE"] = 2] = "MIDDLEWARE"; + RenderDrawInfoType[RenderDrawInfoType["SUB_NODE"] = 3] = "SUB_NODE"; + })(RenderDrawInfoType || (RenderDrawInfoType = {})); + var RenderDrawInfo = function () { + function RenderDrawInfo(nativeDrawInfo) { + this._accId = -1; + this._bufferId = -1; + this._vertexOffset = 0; + this._indexOffset = 0; + this._vb = null; + this._ib = null; + this._vData = null; + this._iData = null; + this._vertDirty = false; + this._vbCount = 0; + this._ibCount = 0; + this._dataHash = 0; + this._isMeshBuffer = false; + this._material = null; + this._texture = null; + this._sampler = null; + this._stride = 0; + this._useLocal = false; + this._model = null; + this._drawInfoType = RenderDrawInfoType.COMP; + this._subNode = null; + this._uint8SharedBuffer = void 0; + this._uint16SharedBuffer = void 0; + this._uint32SharedBuffer = void 0; + this.init(nativeDrawInfo); + var attrSharedBuffer = this._nativeObj.getAttrSharedBufferForJS(); + var offset = 0; + this._uint8SharedBuffer = new Uint8Array(attrSharedBuffer, offset, AttrUInt8ArrayView.Count); + offset += AttrUInt8ArrayView.Count * Uint8Array.BYTES_PER_ELEMENT; + this._uint16SharedBuffer = new Uint16Array(attrSharedBuffer, offset, AttrUInt16ArrayView.Count); + offset += AttrUInt16ArrayView.Count * Uint16Array.BYTES_PER_ELEMENT; + this._uint32SharedBuffer = new Uint32Array(attrSharedBuffer, offset, AttrUInt32ArrayView.Count); + } + var _proto = RenderDrawInfo.prototype; + _proto.init = function init(nativeDrawInfo) { + }; + _proto.clear = function clear() { + this._bufferId = 0; + this._vertexOffset = 0; + this._indexOffset = 0; + this._vertDirty = false; + }; + _proto.setAccId = function setAccId(accId) { + this._accId = accId; + }; + _proto.setBufferId = function setBufferId(bufferId) { + this._bufferId = bufferId; + }; + _proto.setAccAndBuffer = function setAccAndBuffer(accId, bufferId) { + this._bufferId = bufferId; + this._accId = accId; + }; + _proto.setVertexOffset = function setVertexOffset(vertexOffset) { + this._vertexOffset = vertexOffset; + }; + _proto.setIndexOffset = function setIndexOffset(indexOffset) { + this._indexOffset = indexOffset; + }; + _proto.setVB = function setVB(vbBuffer) { + }; + _proto.setIB = function setIB(ibBuffer) { + }; + _proto.setVData = function setVData(vDataBuffer) { + }; + _proto.setIData = function setIData(iDataBuffer) { + }; + _proto.setVBCount = function setVBCount(vbCount) { + this._vbCount = vbCount; + }; + _proto.setIBCount = function setIBCount(ibCount) { + }; + _proto.setVertDirty = function setVertDirty(val) { + this._vertDirty = val; + }; + _proto.setDataHash = function setDataHash(dataHash) { + this._dataHash = dataHash; + }; + _proto.setIsMeshBuffer = function setIsMeshBuffer(isMeshBuffer) { + this._isMeshBuffer = isMeshBuffer; + }; + _proto.setMaterial = function setMaterial(material) { + this._material = material; + }; + _proto.setTexture = function setTexture(texture) { + this._texture = texture; + }; + _proto.setSampler = function setSampler(sampler) { + this._sampler = sampler; + }; + _proto.setModel = function setModel(model) { + }; + _proto.setDrawInfoType = function setDrawInfoType(drawInfoType) { + this._drawInfoType = drawInfoType; + }; + _proto.setSubNode = function setSubNode(node) { + this._subNode = node; + }; + _proto.setStride = function setStride(stride) { + this._stride = stride; + }; + _proto.initRender2dBuffer = function initRender2dBuffer() { + }; + _proto.fillRender2dBuffer = function fillRender2dBuffer(vertexDataArr) { + }; + _createClass(RenderDrawInfo, [{ + key: "nativeObj", + get: function get() { + return this._nativeObj; + } + }, { + key: "render2dBuffer", + get: function get() { + return this._render2dBuffer; + } + }]); + return RenderDrawInfo; + }(); + + var Stage; + (function (Stage) { + Stage[Stage["DISABLED"] = 0] = "DISABLED"; + Stage[Stage["CLEAR"] = 1] = "CLEAR"; + Stage[Stage["ENTER_LEVEL"] = 2] = "ENTER_LEVEL"; + Stage[Stage["ENABLED"] = 3] = "ENABLED"; + Stage[Stage["EXIT_LEVEL"] = 4] = "EXIT_LEVEL"; + Stage[Stage["CLEAR_INVERTED"] = 5] = "CLEAR_INVERTED"; + Stage[Stage["ENTER_LEVEL_INVERTED"] = 6] = "ENTER_LEVEL_INVERTED"; + })(Stage || (Stage = {})); + var StencilSharedBufferView; + (function (StencilSharedBufferView) { + StencilSharedBufferView[StencilSharedBufferView["stencilTest"] = 0] = "stencilTest"; + StencilSharedBufferView[StencilSharedBufferView["func"] = 1] = "func"; + StencilSharedBufferView[StencilSharedBufferView["stencilMask"] = 2] = "stencilMask"; + StencilSharedBufferView[StencilSharedBufferView["writeMask"] = 3] = "writeMask"; + StencilSharedBufferView[StencilSharedBufferView["failOp"] = 4] = "failOp"; + StencilSharedBufferView[StencilSharedBufferView["zFailOp"] = 5] = "zFailOp"; + StencilSharedBufferView[StencilSharedBufferView["passOp"] = 6] = "passOp"; + StencilSharedBufferView[StencilSharedBufferView["ref"] = 7] = "ref"; + StencilSharedBufferView[StencilSharedBufferView["count"] = 8] = "count"; + })(StencilSharedBufferView || (StencilSharedBufferView = {})); + var StencilManager = exports('S', function () { + function StencilManager() { + this._maskStack = []; + this._stencilPattern = { + stencilTest: true, + func: ComparisonFunc.ALWAYS, + stencilMask: 0xffff, + writeMask: 0xffff, + failOp: StencilOp.KEEP, + zFailOp: StencilOp.KEEP, + passOp: StencilOp.KEEP, + ref: 1 + }; + this._stage = Stage.DISABLED; + this.stencilStateMap = new Map(); + this.stencilStateMapWithDepth = new Map(); + } + var _proto = StencilManager.prototype; + _proto.pushMask = function pushMask(mask) { + this._maskStack.push(mask); + }; + _proto.clear = function clear(comp) { + var isInverted = comp.stencilStage !== Stage.ENTER_LEVEL; + return isInverted ? Stage.CLEAR_INVERTED : Stage.CLEAR; + }; + _proto.enableMask = function enableMask() { + this.stage = Stage.ENABLED; + }; + _proto.exitMask = function exitMask() { + if (this._maskStack.length === 0) { + return; + } + this._maskStack.pop(); + if (this._maskStack.length === 0) { + this.stage = Stage.DISABLED; + } else { + this.stage = Stage.ENABLED; + } + }; + _proto.getWriteMask = function getWriteMask() { + return 1 << this._maskStack.length - 1; + }; + _proto.getExitWriteMask = function getExitWriteMask() { + return 1 << this._maskStack.length; + }; + _proto.getStencilRef = function getStencilRef() { + var result = 0; + for (var i = 0; i < this._maskStack.length; ++i) { + result += 0x00000001 << i; + } + return result; + }; + _proto.getMaskStackSize = function getMaskStackSize() { + return this._maskStack.length; + }; + _proto.reset = function reset() { + this._maskStack.length = 0; + this.stage = Stage.DISABLED; + }; + _proto.destroy = function destroy() { + this.stencilStateMap.forEach(function (value, key) { + value.destroy(); + }); + this.stencilStateMap.clear(); + }; + _proto.getStencilStage = function getStencilStage(stage, mat) { + var key = 0; + var depthTest = false; + var depthWrite = false; + var depthFunc = ComparisonFunc.LESS; + var cacheMap = this.stencilStateMap; + if (mat && mat.passes[0]) { + var pass = mat.passes[0]; + var dss = pass.depthStencilState; + var depthTestValue = 0; + var depthWriteValue = 0; + if (dss.depthTest) depthTestValue = 1; + if (dss.depthWrite) depthWriteValue = 1; + key = depthTestValue | depthWriteValue << 1 | dss.depthFunc << 2 | stage << 6 | this._maskStack.length << 9; + depthTest = dss.depthTest; + depthWrite = dss.depthWrite; + depthFunc = dss.depthFunc; + cacheMap = this.stencilStateMapWithDepth; + } else { + key = stage << 16 | this._maskStack.length; + } + if (cacheMap && cacheMap.has(key)) { + return cacheMap.get(key); + } + this.setStateFromStage(stage); + var depthStencilState = new DepthStencilState(depthTest, depthWrite, depthFunc, this._stencilPattern.stencilTest, this._stencilPattern.func, this._stencilPattern.stencilMask, this._stencilPattern.writeMask, this._stencilPattern.failOp, this._stencilPattern.zFailOp, this._stencilPattern.passOp, this._stencilPattern.ref, this._stencilPattern.stencilTest, this._stencilPattern.func, this._stencilPattern.stencilMask, this._stencilPattern.writeMask, this._stencilPattern.failOp, this._stencilPattern.zFailOp, this._stencilPattern.passOp, this._stencilPattern.ref); + cacheMap.set(key, depthStencilState); + return depthStencilState; + }; + _proto.getStencilHash = function getStencilHash(stage) { + return stage << 8 | this._maskStack.length; + }; + _proto.setStateFromStage = function setStateFromStage(stage) { + var pattern = this._stencilPattern; + if (stage === Stage.DISABLED) { + pattern.stencilTest = false; + pattern.func = ComparisonFunc.ALWAYS; + pattern.failOp = StencilOp.KEEP; + pattern.stencilMask = pattern.writeMask = 0xffff; + pattern.ref = 1; + } else { + pattern.stencilTest = true; + if (stage === Stage.ENABLED) { + pattern.func = ComparisonFunc.EQUAL; + pattern.failOp = StencilOp.KEEP; + pattern.stencilMask = pattern.ref = this.getStencilRef(); + pattern.writeMask = this.getWriteMask(); + } else if (stage === Stage.CLEAR) { + pattern.func = ComparisonFunc.NEVER; + pattern.failOp = StencilOp.ZERO; + pattern.writeMask = pattern.stencilMask = pattern.ref = this.getWriteMask(); + } else if (stage === Stage.CLEAR_INVERTED) { + pattern.func = ComparisonFunc.NEVER; + pattern.failOp = StencilOp.REPLACE; + pattern.writeMask = pattern.stencilMask = pattern.ref = this.getWriteMask(); + } else if (stage === Stage.ENTER_LEVEL) { + pattern.func = ComparisonFunc.NEVER; + pattern.failOp = StencilOp.REPLACE; + pattern.writeMask = pattern.stencilMask = pattern.ref = this.getWriteMask(); + } else if (stage === Stage.ENTER_LEVEL_INVERTED) { + pattern.func = ComparisonFunc.NEVER; + pattern.failOp = StencilOp.ZERO; + pattern.writeMask = pattern.stencilMask = pattern.ref = this.getWriteMask(); + } + } + }; + _createClass(StencilManager, [{ + key: "stage", + get: function get() { + return this._stage; + }, + set: function set(val) { + this._stage = val; + } + }, { + key: "pattern", + get: function get() { + return this._stencilPattern; + } + }]); + return StencilManager; + }()); + StencilManager.sharedManager = null; + StencilManager.sharedManager = new StencilManager(); + + var RenderEntityType; + (function (RenderEntityType) { + RenderEntityType[RenderEntityType["STATIC"] = 0] = "STATIC"; + RenderEntityType[RenderEntityType["DYNAMIC"] = 1] = "DYNAMIC"; + RenderEntityType[RenderEntityType["CROSSED"] = 2] = "CROSSED"; + })(RenderEntityType || (RenderEntityType = {})); + var RenderEntityFloatSharedBufferView; + (function (RenderEntityFloatSharedBufferView) { + RenderEntityFloatSharedBufferView[RenderEntityFloatSharedBufferView["localOpacity"] = 0] = "localOpacity"; + RenderEntityFloatSharedBufferView[RenderEntityFloatSharedBufferView["count"] = 1] = "count"; + })(RenderEntityFloatSharedBufferView || (RenderEntityFloatSharedBufferView = {})); + var RenderEntityUInt8SharedBufferView; + (function (RenderEntityUInt8SharedBufferView) { + RenderEntityUInt8SharedBufferView[RenderEntityUInt8SharedBufferView["colorR"] = 0] = "colorR"; + RenderEntityUInt8SharedBufferView[RenderEntityUInt8SharedBufferView["colorG"] = 1] = "colorG"; + RenderEntityUInt8SharedBufferView[RenderEntityUInt8SharedBufferView["colorB"] = 2] = "colorB"; + RenderEntityUInt8SharedBufferView[RenderEntityUInt8SharedBufferView["colorA"] = 3] = "colorA"; + RenderEntityUInt8SharedBufferView[RenderEntityUInt8SharedBufferView["maskMode"] = 4] = "maskMode"; + RenderEntityUInt8SharedBufferView[RenderEntityUInt8SharedBufferView["count"] = 5] = "count"; + })(RenderEntityUInt8SharedBufferView || (RenderEntityUInt8SharedBufferView = {})); + var RenderEntityBoolSharedBufferView; + (function (RenderEntityBoolSharedBufferView) { + RenderEntityBoolSharedBufferView[RenderEntityBoolSharedBufferView["colorDirty"] = 0] = "colorDirty"; + RenderEntityBoolSharedBufferView[RenderEntityBoolSharedBufferView["enabled"] = 1] = "enabled"; + RenderEntityBoolSharedBufferView[RenderEntityBoolSharedBufferView["useLocal"] = 2] = "useLocal"; + RenderEntityBoolSharedBufferView[RenderEntityBoolSharedBufferView["count"] = 3] = "count"; + })(RenderEntityBoolSharedBufferView || (RenderEntityBoolSharedBufferView = {})); + var MaskMode; + (function (MaskMode) { + MaskMode[MaskMode["NONE"] = 0] = "NONE"; + MaskMode[MaskMode["MASK"] = 1] = "MASK"; + MaskMode[MaskMode["MASK_INVERTED"] = 2] = "MASK_INVERTED"; + MaskMode[MaskMode["MASK_NODE"] = 3] = "MASK_NODE"; + MaskMode[MaskMode["MASK_NODE_INVERTED"] = 4] = "MASK_NODE_INVERTED"; + })(MaskMode || (MaskMode = {})); + var RenderEntity = function () { + function RenderEntity(entityType) { + this._renderEntityType = RenderEntityType.STATIC; + this._dynamicDrawInfoArr = []; + this._node = null; + this._renderTransform = null; + this._stencilStage = Stage.DISABLED; + this._useLocal = false; + this._maskMode = MaskMode.NONE; + this._color = Color$1.WHITE; + this._localOpacity = 255; + this._colorDirty = true; + this._enabled = false; + } + var _proto = RenderEntity.prototype; + _proto.addDynamicRenderDrawInfo = function addDynamicRenderDrawInfo(renderDrawInfo) { + }; + _proto.removeDynamicRenderDrawInfo = function removeDynamicRenderDrawInfo() { + }; + _proto.clearDynamicRenderDrawInfos = function clearDynamicRenderDrawInfos() { + }; + _proto.clearStaticRenderDrawInfos = function clearStaticRenderDrawInfos() { + }; + _proto.setDynamicRenderDrawInfo = function setDynamicRenderDrawInfo(renderDrawInfo, index) { + }; + _proto.setMaskMode = function setMaskMode(mode) { + this._maskMode = mode; + }; + _proto.getStaticRenderDrawInfo = function getStaticRenderDrawInfo() { + return null; + }; + _proto.setNode = function setNode(node) { + this._node = node; + }; + _proto.setRenderTransform = function setRenderTransform(renderTransform) { + this._renderTransform = renderTransform; + }; + _proto.setStencilStage = function setStencilStage(stage) { + this._stencilStage = stage; + }; + _proto.setUseLocal = function setUseLocal(useLocal) { + this._useLocal = useLocal; + }; + _proto.initSharedBuffer = function initSharedBuffer() { + }; + _createClass(RenderEntity, [{ + key: "nativeObj", + get: function get() { + return this._nativeObj; + } + }, { + key: "renderDrawInfoArr", + get: function get() { + return this._dynamicDrawInfoArr; + } + }, { + key: "renderEntityType", + get: function get() { + return this._renderEntityType; + } + }, { + key: "color", + get: function get() { + return this._color; + }, + set: function set(val) { + this._color = val; + } + }, { + key: "localOpacity", + get: function get() { + return this._localOpacity; + }, + set: function set(val) { + this._localOpacity = val; + } + }, { + key: "colorDirty", + get: function get() { + return this._colorDirty; + }, + set: function set(val) { + this._colorDirty = val; + } + }, { + key: "enabled", + get: function get() { + return this._enabled; + }, + set: function set(val) { + this._enabled = val; + } + }]); + return RenderEntity; + }(); + + var DEFAULT_STRIDE = getAttributeStride(vfmtPosUvColor) >> 2; + var BaseRenderData = exports('r', function () { + function BaseRenderData(vertexFormat) { + if (vertexFormat === void 0) { + vertexFormat = vfmtPosUvColor; + } + this.chunk = null; + this._renderDrawInfo = null; + this._material = null; + this._dataHash = 0; + this._isMeshBuffer = false; + this._vc = 0; + this._ic = 0; + this._floatStride = 0; + this._vertexFormat = vfmtPosUvColor; + this._drawInfoType = RenderDrawInfoType.COMP; + this._multiOwner = false; + this._batcher = null; + this._floatStride = vertexFormat === vfmtPosUvColor ? DEFAULT_STRIDE : getAttributeStride(vertexFormat) >> 2; + this._vertexFormat = vertexFormat; + } + var _proto = BaseRenderData.prototype; + _proto.isValid = function isValid() { + return this._ic > 0 && this.chunk.vertexAccessor; + }; + _proto.initRenderDrawInfo = function initRenderDrawInfo(comp, drawInfoType) { + if (drawInfoType === void 0) { + drawInfoType = RenderDrawInfoType.COMP; + } + }; + _proto.removeRenderDrawInfo = function removeRenderDrawInfo(comp) { + }; + _proto.setRenderDrawInfoAttributes = function setRenderDrawInfoAttributes() { + }; + _createClass(BaseRenderData, [{ + key: "vertexCount", + get: function get() { + return this._vc; + } + }, { + key: "indexCount", + get: function get() { + return this._ic; + } + }, { + key: "stride", + get: function get() { + return this._floatStride << 2; + } + }, { + key: "floatStride", + get: function get() { + return this._floatStride; + } + }, { + key: "vertexFormat", + get: function get() { + return this._vertexFormat; + } + }, { + key: "drawInfoType", + get: function get() { + return this._drawInfoType; + }, + set: function set(type) { + this._drawInfoType = type; + if (this._renderDrawInfo) { + this._renderDrawInfo.setDrawInfoType(type); + } + } + }, { + key: "renderDrawInfo", + get: function get() { + return this._renderDrawInfo; + } + }, { + key: "material", + get: function get() { + return this._material; + }, + set: function set(val) { + this._material = val; + if (this._renderDrawInfo) { + this._renderDrawInfo.setMaterial(val); + } + } + }, { + key: "dataHash", + get: function get() { + return this._dataHash; + }, + set: function set(val) { + this._dataHash = val; + if (this._renderDrawInfo) { + this._renderDrawInfo.setDataHash(val); + } + } + }, { + key: "multiOwner", + get: function get() { + return this._multiOwner; + }, + set: function set(val) { + this._multiOwner = val; + } + }, { + key: "batcher", + get: function get() { + if (!this._batcher) { + this._batcher = director.root.batcher2D; + } + return this._batcher; + } + }]); + return BaseRenderData; + }()); + var RenderData = exports('t', function (_BaseRenderData) { + _inheritsLoose(RenderData, _BaseRenderData); + RenderData.add = function add(vertexFormat, accessor) { + if (vertexFormat === void 0) { + vertexFormat = vfmtPosUvColor; + } + var rd = new RenderData(vertexFormat, accessor); + if (!accessor) { + var batcher = director.root.batcher2D; + accessor = batcher.switchBufferAccessor(rd._vertexFormat); + } + rd._accessor = accessor; + return rd; + }; + RenderData.remove = function remove(data) { + data.clear(); + data._accessor = null; + }; + function RenderData(vertexFormat, accessor) { + var _this; + if (vertexFormat === void 0) { + vertexFormat = vfmtPosUvColor; + } + _this = _BaseRenderData.call(this, vertexFormat) || this; + _this._vertDirty = true; + _this._textureHash = 0; + _this.indices = null; + _this.layer = 0; + _this.nodeDirty = true; + _this.passDirty = true; + _this.textureDirty = true; + _this.hashDirty = true; + _this._data = []; + _this._frame = null; + _this._accessor = null; + _this.vertexRow = 1; + _this.vertexCol = 1; + if (!accessor) { + accessor = _this.batcher.switchBufferAccessor(_this._vertexFormat); + } + _this._accessor = accessor; + return _this; + } + var _proto2 = RenderData.prototype; + _proto2.resize = function resize(vertexCount, indexCount) { + if (vertexCount === this._vc && indexCount === this._ic && this.chunk) return; + this._vc = vertexCount; + this._ic = indexCount; + if (this.chunk) { + this._accessor.recycleChunk(this.chunk); + this.chunk = null; + } + this.chunk = this._accessor.allocateChunk(vertexCount, indexCount); + this.updateHash(); + }; + _proto2.setRenderDrawInfoAttributes = function setRenderDrawInfoAttributes() { + }; + _proto2.fillDrawInfoAttributes = function fillDrawInfoAttributes(drawInfo) { + }; + _proto2.syncRender2dBuffer = function syncRender2dBuffer() { + }; + _proto2.resizeAndCopy = function resizeAndCopy(vertexCount, indexCount) { + if (vertexCount === this._vc && indexCount === this._ic && this.chunk) return; + this._vc = vertexCount; + this._ic = indexCount; + var oldChunk = this.chunk; + this.chunk = this._accessor.allocateChunk(vertexCount, indexCount); + if (oldChunk) { + this.chunk.vb.set(oldChunk.vb); + this._accessor.recycleChunk(oldChunk); + } + this.updateHash(); + }; + _proto2.getMeshBuffer = function getMeshBuffer() { + if (this.chunk && this._accessor) { + return this._accessor.getMeshBuffer(this.chunk.bufferId); + } else { + return null; + } + }; + _proto2.updateNode = function updateNode(comp) { + this.layer = comp.node.layer; + this.nodeDirty = false; + this.hashDirty = true; + }; + _proto2.updatePass = function updatePass(comp) { + this.material = comp.getRenderMaterial(0); + this.passDirty = false; + this.hashDirty = true; + }; + _proto2.updateTexture = function updateTexture(frame) { + this.frame = frame; + this.textureHash = frame.getHash(); + this.textureDirty = false; + this.hashDirty = true; + }; + _proto2.updateHash = function updateHash() { + var bid = this.chunk ? this.chunk.bufferId : -1; + var hashString = "" + bid + this.layer + " " + this.textureHash; + this.dataHash = murmurhash2_32_gc(hashString, 666); + this.hashDirty = false; + }; + _proto2.updateRenderData = function updateRenderData(comp, frame) { + if (this.passDirty) { + this.material = comp.getRenderMaterial(0); + this.passDirty = false; + this.hashDirty = true; + if (this._renderDrawInfo) { + this._renderDrawInfo.setMaterial(this.material); + } + } + if (this.nodeDirty) { + var renderScene = comp.node.scene ? comp._getRenderScene() : null; + this.layer = comp.node.layer; + if (renderScene !== null) { + this.nodeDirty = false; + } + this.hashDirty = true; + } + if (this.textureDirty) { + this.frame = frame; + this.textureHash = frame.getHash(); + this.textureDirty = false; + this.hashDirty = true; + if (this._renderDrawInfo) { + this._renderDrawInfo.setTexture(this.frame ? this.frame.getGFXTexture() : null); + this._renderDrawInfo.setSampler(this.frame ? this.frame.getGFXSampler() : null); + } + } + if (this.hashDirty) { + this.updateHash(); + if (this._renderDrawInfo) { + this._renderDrawInfo.setDataHash(this.dataHash); + } + } + }; + _proto2.clear = function clear() { + this.resize(0, 0); + this._data.length = 0; + this.indices = null; + this.vertDirty = true; + this.material = null; + this.nodeDirty = true; + this.passDirty = true; + this.textureDirty = true; + this.hashDirty = true; + this.layer = 0; + this.frame = null; + this.textureHash = 0; + this.dataHash = 0; + }; + RenderData.createStaticVBAccessor = function createStaticVBAccessor(attributes, vCount, iCount) { + var device = director.root.device; + var accessor = new StaticVBAccessor(device, attributes, vCount, iCount); + return accessor; + }; + _createClass(RenderData, [{ + key: "dataLength", + get: function get() { + return this._data.length; + }, + set: function set(length) { + var data = this._data; + if (data.length !== length) { + for (var i = data.length; i < length; i++) { + data.push({ + x: 0, + y: 0, + z: 0, + u: 0, + v: 0, + color: Color$1.WHITE.clone() + }); + } + data.length = length; + } + this.syncRender2dBuffer(); + } + }, { + key: "data", + get: function get() { + return this._data; + } + }, { + key: "vertDirty", + get: function get() { + return this._vertDirty; + }, + set: function set(val) { + this._vertDirty = val; + if (this._renderDrawInfo && val) { + this._renderDrawInfo.setVertDirty(val); + } + } + }, { + key: "textureHash", + get: function get() { + return this._textureHash; + }, + set: function set(val) { + this._textureHash = val; + } + }, { + key: "frame", + get: function get() { + return this._frame; + }, + set: function set(val) { + this._frame = val; + if (this._renderDrawInfo) { + if (this._frame) { + this._renderDrawInfo.setTexture(this._frame.getGFXTexture()); + this._renderDrawInfo.setSampler(this._frame.getGFXSampler()); + } else { + this._renderDrawInfo.setTexture(null); + this._renderDrawInfo.setSampler(null); + } + } + } + }, { + key: "accessor", + get: function get() { + return this._accessor; + } + }]); + return RenderData; + }(BaseRenderData)); + var MeshRenderData = exports('u', function (_BaseRenderData2) { + _inheritsLoose(MeshRenderData, _BaseRenderData2); + MeshRenderData.add = function add(vertexFormat) { + if (vertexFormat === void 0) { + vertexFormat = vfmtPosUvColor; + } + var rd = new MeshRenderData(); + rd._floatStride = vertexFormat === vfmtPosUvColor ? DEFAULT_STRIDE : getAttributeStride(vertexFormat) >> 2; + rd._vertexFormat = vertexFormat; + return rd; + }; + MeshRenderData.remove = function remove(data) { + data.clear(); + }; + function MeshRenderData(vertexFormat) { + var _this2; + if (vertexFormat === void 0) { + vertexFormat = vfmtPosUvColor; + } + _this2 = _BaseRenderData2.call(this, vertexFormat) || this; + _this2._isMeshBuffer = true; + _this2.vData = void 0; + _this2.iData = void 0; + _this2.vertexStart = 0; + _this2.vertexRange = 0; + _this2.indexStart = 0; + _this2.indexRange = 0; + _this2.lastFilledIndex = 0; + _this2.lastFilledVertex = 0; + _this2.frame = void 0; + _this2._byteLength = 0; + _this2._vertexBuffers = []; + _this2._indexBuffer = null; + _this2._iaPool = null; + _this2._iaInfo = null; + _this2.vData = new Float32Array(256 * _this2.stride); + _this2.iData = new Uint16Array(256 * 6); + return _this2; + } + var _proto3 = MeshRenderData.prototype; + _proto3.request = function request(vertexCount, indexCount) { + var byteOffset = this._byteLength + vertexCount * this.stride; + var succeed = this.reserve(vertexCount, indexCount); + if (!succeed) return false; + this._vc += vertexCount; + this._ic += indexCount; + this._byteLength = byteOffset; + this.vertexRange = this._vc; + this.indexRange = this._ic; + return true; + }; + _proto3.reserve = function reserve(vertexCount, indexCount) { + var newVBytes = this._byteLength + vertexCount * this.stride; + var newICount = this.indexCount + indexCount; + if (vertexCount + this.vertexCount > 65535) { + return false; + } + var byteLength = this.vData.byteLength; + var indicesLength = this.iData.length; + var vCount = this.vData.length; + var iCount = this.iData.length; + if (newVBytes > byteLength || newICount > indicesLength) { + while (byteLength < newVBytes || indicesLength < newICount) { + vCount *= 2; + iCount *= 2; + byteLength = vCount * 4; + indicesLength = iCount; + } + this._reallocBuffer(vCount, iCount); + } + return true; + }; + _proto3.resize = function resize(vertexCount, indexCount) { + var byteLength = vertexCount * this.stride; + assertIsTrue(vertexCount >= 0 && indexCount >= 0 && byteLength <= this.vData.byteLength && indexCount <= this.iData.length); + this._vc = vertexCount; + this._ic = indexCount; + this._byteLength = byteLength; + this.updateRange(0, vertexCount, 0, indexCount); + }; + _proto3.updateRange = function updateRange(vertOffset, vertexCount, indexOffset, indexCount) { + assertIsTrue(vertexCount >= 0 && indexCount >= 0 && vertexCount <= this._vc && indexCount <= this._ic); + this.vertexStart = vertOffset; + this.indexStart = indexOffset; + this.vertexRange = vertexCount; + this.indexRange = indexCount; + }; + _proto3.requestIA = function requestIA(device) { + this._initIAInfo(device); + var ia = this._iaPool.add(); + ia.firstIndex = this.indexStart; + ia.indexCount = this.indexRange; + return ia; + }; + _proto3.uploadBuffers = function uploadBuffers() { + if (this._byteLength === 0 || !this._vertexBuffers[0] || !this._indexBuffer) { + return; + } + var indexCount = this._ic; + var verticesData = new Float32Array(this.vData.buffer, 0, this._byteLength >> 2); + var indicesData = new Uint16Array(this.iData.buffer, 0, indexCount); + var vertexBuffer = this._vertexBuffers[0]; + if (this._byteLength > vertexBuffer.size) { + vertexBuffer.resize(this._byteLength); + } + vertexBuffer.update(verticesData); + var indexBytes = indexCount << 1; + if (indexBytes > this._indexBuffer.size) { + this._indexBuffer.resize(indexBytes); + } + this._indexBuffer.update(indicesData); + }; + _proto3.freeIAPool = function freeIAPool() { + if (this._iaPool) { + this._iaPool.reset(); + } + }; + _proto3.reset = function reset() { + this._vc = 0; + this._ic = 0; + this._byteLength = 0; + this.vertexStart = 0; + this.vertexRange = 0; + this.indexStart = 0; + this.indexRange = 0; + this.lastFilledIndex = 0; + this.lastFilledVertex = 0; + this.material = null; + this.freeIAPool(); + }; + _proto3.clear = function clear() { + this.reset(); + if (this._iaPool) { + this._iaPool.destroy(); + } + if (this._vertexBuffers[0]) { + this._vertexBuffers[0].destroy(); + this._vertexBuffers = []; + } + this._iaInfo = null; + this.vData = new Float32Array(256 * this.stride); + this.iData = new Uint16Array(256 * 6); + }; + _proto3._initIAInfo = function _initIAInfo(device) { + var _this3 = this; + if (!this._iaInfo) { + var vbStride = this.stride; + var vbs = this._vertexBuffers; + if (!vbs.length) { + vbs.push(device.createBuffer(new BufferInfo(BufferUsageBit.VERTEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, vbStride, vbStride))); + } + var ibStride = Uint16Array.BYTES_PER_ELEMENT; + if (!this._indexBuffer) { + this._indexBuffer = device.createBuffer(new BufferInfo(BufferUsageBit.INDEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, ibStride, ibStride)); + } + this._iaInfo = new InputAssemblerInfo(this._vertexFormat, vbs, this._indexBuffer); + this._iaPool = new RecyclePool(function () { + return device.createInputAssembler(_this3._iaInfo); + }, 1, function (ia) { + ia.destroy(); + }); + } + }; + _proto3._reallocBuffer = function _reallocBuffer(vCount, iCount) { + var oldVData = this.vData; + this.vData = new Float32Array(vCount); + if (oldVData) { + this.vData.set(oldVData, 0); + } + var oldIData = this.iData; + this.iData = new Uint16Array(iCount); + if (oldIData) { + this.iData.set(oldIData, 0); + } + }; + _proto3.setRenderDrawInfoAttributes = function setRenderDrawInfoAttributes() { + }; + _proto3.particleInitRenderDrawInfo = function particleInitRenderDrawInfo(entity) { + }; + _createClass(MeshRenderData, [{ + key: "formatByte", + get: function get() { + return this.stride; + }, + set: function set(value) {} + }, { + key: "floatStride", + get: function get() { + return this._floatStride; + } + }, { + key: "vDataOffset", + get: function get() { + return this._byteLength >>> 2; + } + }]); + return MeshRenderData; + }(BaseRenderData)); + + var _dec$1x, _dec2$19, _class$1x, _class2$1l, _initializer$1e, _initializer2$10, _class3$w; + var _vec2a = new Vec2(); + var _vec2b = new Vec2(); + var _vec3a = new Vec3(); + var _mat4_temp$5 = new Mat4(); + var _matrix$1 = new Mat4(); + var _worldMatrix$1 = new Mat4(); + var _zeroMatrix = new Mat4(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + var _rect = new Rect$1(); + var UITransform = exports('d', (_dec$1x = ccclass$t('cc.UITransform'), _dec2$19 = executionOrder$1(110), _dec$1x(_class$1x = _dec2$19(_class$1x = disallowMultiple$1(_class$1x = (_class2$1l = (_class3$w = function (_Component) { + _inheritsLoose(UITransform, _Component); + function UITransform() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this._priority = 0; + _this._contentSize = _initializer$1e && _initializer$1e(); + _this._anchorPoint = _initializer2$10 && _initializer2$10(); + return _this; + } + var _proto = UITransform.prototype; + _proto.__preload = function __preload() { + this.node._uiProps.uiTransformComp = this; + }; + _proto.onLoad = function onLoad() { + if (this.node.parent) { + UITransform.insertChangeMap(this.node.parent); + } + }; + _proto.onEnable = function onEnable() { + this.node.on(NodeEventType.PARENT_CHANGED, this._parentChanged, this); + this._markRenderDataDirty(); + }; + _proto.onDisable = function onDisable() { + this.node.off(NodeEventType.PARENT_CHANGED, this._parentChanged, this); + }; + _proto.onDestroy = function onDestroy() { + this.node._uiProps.uiTransformComp = null; + }; + _proto.setContentSize = function setContentSize(size, height) { + var locContentSize = this._contentSize; + var locWidth; + var locHeight; + if (height === undefined) { + size = size; + if (approx(size.width, locContentSize.width, EPSILON$3) && approx(size.height, locContentSize.height, EPSILON$3)) { + return; + } + locWidth = size.width; + locHeight = size.height; + } else { + size = size; + if (approx(size, locContentSize.width, EPSILON$3) && approx(height, locContentSize.height, EPSILON$3)) { + return; + } + locWidth = size; + locHeight = height; + } + { + locContentSize.width = locWidth; + locContentSize.height = locHeight; + this.node.emit(NodeEventType.SIZE_CHANGED); + } + this._markRenderDataDirty(); + }; + _proto.setAnchorPoint = function setAnchorPoint(point, y) { + var locAnchorPoint = this._anchorPoint; + if (y === undefined) { + point = point; + if (point.x === locAnchorPoint.x && point.y === locAnchorPoint.y) { + return; + } + locAnchorPoint.x = point.x; + locAnchorPoint.y = point.y; + } else { + if (point === locAnchorPoint.x && y === locAnchorPoint.y) { + return; + } + locAnchorPoint.x = point; + locAnchorPoint.y = y; + } + this.node.emit(NodeEventType.ANCHOR_CHANGED, this._anchorPoint); + this._markRenderDataDirty(); + }; + _proto.isHit = function isHit(uiPoint) { + var w = this._contentSize.width; + var h = this._contentSize.height; + var v2WorldPt = _vec2a; + var testPt = _vec2b; + var cameras = this._getRenderScene().cameras; + for (var i = 0; i < cameras.length; i++) { + var camera = cameras[i]; + if (!(camera.visibility & this.node.layer)) continue; + camera.node.getWorldRT(_mat4_temp$5); + var m12 = _mat4_temp$5.m12; + var m13 = _mat4_temp$5.m13; + var center = visibleRect.center; + _mat4_temp$5.m12 = center.x - (_mat4_temp$5.m00 * m12 + _mat4_temp$5.m04 * m13); + _mat4_temp$5.m13 = center.y - (_mat4_temp$5.m01 * m12 + _mat4_temp$5.m05 * m13); + Mat4.invert(_mat4_temp$5, _mat4_temp$5); + Vec2.transformMat4(v2WorldPt, uiPoint, _mat4_temp$5); + this.node.getWorldMatrix(_worldMatrix$1); + Mat4.invert(_mat4_temp$5, _worldMatrix$1); + if (Mat4.strictEquals(_mat4_temp$5, _zeroMatrix)) { + continue; + } + Vec2.transformMat4(testPt, v2WorldPt, _mat4_temp$5); + testPt.x += this._anchorPoint.x * w; + testPt.y += this._anchorPoint.y * h; + var hit = false; + if (testPt.x >= 0 && testPt.y >= 0 && testPt.x <= w && testPt.y <= h) { + hit = this._maskTest(v2WorldPt); + } + if (hit) { + return true; + } + } + return false; + }; + _proto.hitTest = function hitTest(screenPoint, windowId) { + if (windowId === void 0) { + windowId = 0; + } + var w = this._contentSize.width; + var h = this._contentSize.height; + var v3WorldPt = _vec3a; + var v2WorldPt = _vec2a; + var testPt = _vec2b; + var cameras = this._getRenderScene().cameras; + for (var i = 0; i < cameras.length; i++) { + var camera = cameras[i]; + if (!(camera.visibility & this.node.layer) || camera.window && !camera.window.swapchain) { + continue; + } + if (camera.systemWindowId !== windowId) { + continue; + } + Vec3.set(v3WorldPt, screenPoint.x, screenPoint.y, 0); + camera.screenToWorld(v3WorldPt, v3WorldPt); + Vec2.set(v2WorldPt, v3WorldPt.x, v3WorldPt.y); + this.node.getWorldMatrix(_worldMatrix$1); + Mat4.invert(_mat4_temp$5, _worldMatrix$1); + if (Mat4.strictEquals(_mat4_temp$5, _zeroMatrix)) { + continue; + } + Vec2.transformMat4(testPt, v2WorldPt, _mat4_temp$5); + testPt.x += this._anchorPoint.x * w; + testPt.y += this._anchorPoint.y * h; + var hit = false; + if (testPt.x >= 0 && testPt.y >= 0 && testPt.x <= w && testPt.y <= h) { + hit = this._maskTest(v2WorldPt); + } + if (hit) { + return true; + } + } + return false; + }; + _proto._maskTest = function _maskTest(pointInWorldSpace) { + var _this$node, _this$node$eventProce; + var maskList = (_this$node = this.node) === null || _this$node === void 0 ? void 0 : (_this$node$eventProce = _this$node.eventProcessor) === null || _this$node$eventProce === void 0 ? void 0 : _this$node$eventProce.maskList; + if (maskList) { + var parent = this.node; + var length = maskList.length; + for (var i = 0, j = 0; parent && j < length; ++i, parent = parent.parent) { + var temp = maskList[j]; + if (i === temp.index) { + if (parent === temp.comp.node) { + var comp = temp.comp; + if (comp && comp._enabled && !comp.isHit(pointInWorldSpace)) { + return false; + } + j++; + } else { + maskList.length = j; + break; + } + } else if (i > temp.index) { + maskList.length = j; + break; + } + } + } + return true; + }; + _proto.convertToNodeSpaceAR = function convertToNodeSpaceAR(worldPoint, out) { + this.node.getWorldMatrix(_worldMatrix$1); + Mat4.invert(_mat4_temp$5, _worldMatrix$1); + if (!out) { + out = new Vec3(); + } + return Vec3.transformMat4(out, worldPoint, _mat4_temp$5); + }; + _proto.convertToWorldSpaceAR = function convertToWorldSpaceAR(nodePoint, out) { + this.node.getWorldMatrix(_worldMatrix$1); + if (!out) { + out = new Vec3(); + } + return Vec3.transformMat4(out, nodePoint, _worldMatrix$1); + }; + _proto.getBoundingBox = function getBoundingBox() { + var rect = new Rect$1(); + this._selfBoundingBox(rect); + Mat4.fromSRT(_matrix$1, this.node.rotation, this.node.position, this.node.scale); + rect.transformMat4(_matrix$1); + return rect; + }; + _proto.getBoundingBoxToWorld = function getBoundingBoxToWorld() { + var rect = new Rect$1(); + var locChildren = this.node.children; + for (var i = 0; i < locChildren.length; ++i) { + var child = locChildren[i]; + if (child && child.active) { + var uiTransform = child.getComponent(UITransform); + if (uiTransform && uiTransform.contentSize.width && uiTransform.contentSize.height) { + uiTransform._selfBoundingBox(_rect); + _rect.transformMat4(child.worldMatrix); + if (rect.width === 0) { + rect.set(_rect); + } else { + Rect$1.union(rect, rect, _rect); + } + } + } + } + if (this._contentSize.width && this._contentSize.height) { + this._selfBoundingBox(_rect); + _rect.transformMat4(this.node.worldMatrix); + if (rect.width === 0) { + rect.set(_rect); + } else { + Rect$1.union(rect, rect, _rect); + } + } + return rect; + }; + _proto.getBoundingBoxTo = function getBoundingBoxTo(targetMat) { + var rect = new Rect$1(); + var locChildren = this.node.children; + Mat4.invert(_mat4_temp$5, targetMat); + for (var i = 0; i < locChildren.length; ++i) { + var child = locChildren[i]; + if (child && child.active) { + var uiTransform = child.getComponent(UITransform); + if (uiTransform && uiTransform.contentSize.width && uiTransform.contentSize.height) { + uiTransform._selfBoundingBox(_rect); + Mat4.multiply(_matrix$1, child.worldMatrix, _mat4_temp$5); + _rect.transformMat4(_matrix$1); + if (rect.width === 0) { + rect.set(_rect); + } else { + Rect$1.union(rect, rect, _rect); + } + } + } + } + if (this._contentSize.width && this._contentSize.height) { + this._selfBoundingBox(_rect); + Mat4.multiply(_matrix$1, this.node.worldMatrix, _mat4_temp$5); + _rect.transformMat4(_matrix$1); + if (rect.width === 0) { + rect.set(_rect); + } else { + Rect$1.union(rect, rect, _rect); + } + } + return rect; + }; + _proto.getComputeAABB = function getComputeAABB(out) { + var width = this._contentSize.width; + var height = this._contentSize.height; + _rect.set(-this._anchorPoint.x * width, -this._anchorPoint.y * height, width, height); + _rect.transformMat4(this.node.worldMatrix); + var px = _rect.x + _rect.width * 0.5; + var py = _rect.y + _rect.height * 0.5; + var pz = this.node.worldPosition.z; + var w = _rect.width / 2; + var h = _rect.height / 2; + var l = 0.001; + if (out != null) { + AABB.set(out, px, py, pz, w, h, l); + return out; + } else { + return new AABB(px, py, pz, w, h, l); + } + }; + _proto._selfBoundingBox = function _selfBoundingBox(out) { + var width = this._contentSize.width; + var height = this._contentSize.height; + out.set(-this._anchorPoint.x * width, -this._anchorPoint.y * height, width, height); + return out; + }; + _proto._parentChanged = function _parentChanged(node) { + if (this.node.getComponent('cc.RenderRoot2D')) { + return; + } + if (this.node.parent) { + UITransform.insertChangeMap(this.node.parent); + } + }; + _proto._markRenderDataDirty = function _markRenderDataDirty() { + var uiComp = this.node._uiProps.uiComp; + if (uiComp) { + uiComp.markForUpdateRenderData(); + } + }; + UITransform.insertChangeMap = function insertChangeMap(node) { + var key = node.uuid; + if (!UITransform.priorityChangeNodeMap.has(key)) { + UITransform.priorityChangeNodeMap.set(key, node); + } + }; + UITransform._sortChildrenSibling = function _sortChildrenSibling(node) { + var siblings = node.children; + if (siblings) { + siblings.sort(function (a, b) { + var aComp = a._uiProps.uiTransformComp; + var bComp = b._uiProps.uiTransformComp; + var ca = aComp ? aComp._priority : 0; + var cb = bComp ? bComp._priority : 0; + var diff = ca - cb; + if (diff === 0) return a.getSiblingIndex() - b.getSiblingIndex(); + return diff; + }); + } + }; + UITransform._sortSiblings = function _sortSiblings() { + UITransform.priorityChangeNodeMap.forEach(function (node, ID) { + UITransform._sortChildrenSibling(node); + node._updateSiblingIndex(); + node.emit('childrenSiblingOrderChanged'); + }); + UITransform.priorityChangeNodeMap.clear(); + }; + UITransform._cleanChangeMap = function _cleanChangeMap() { + UITransform.priorityChangeNodeMap.clear(); + }; + _createClass(UITransform, [{ + key: "contentSize", + get: function get() { + return this._contentSize; + }, + set: function set(value) { + if (this._contentSize.equals(value)) { + return; + } + { + this._contentSize.set(value); + this.node.emit(NodeEventType.SIZE_CHANGED); + } + this._markRenderDataDirty(); + } + }, { + key: "width", + get: function get() { + return this._contentSize.width; + }, + set: function set(value) { + if (this._contentSize.width === value) { + return; + } + { + this._contentSize.width = value; + this.node.emit(NodeEventType.SIZE_CHANGED); + } + this._markRenderDataDirty(); + } + }, { + key: "height", + get: function get() { + return this._contentSize.height; + }, + set: function set(value) { + if (this.contentSize.height === value) { + return; + } + { + this._contentSize.height = value; + this.node.emit(NodeEventType.SIZE_CHANGED); + } + this._markRenderDataDirty(); + } + }, { + key: "anchorPoint", + get: function get() { + return this._anchorPoint; + }, + set: function set(value) { + if (this._anchorPoint.equals(value)) { + return; + } + this._anchorPoint.set(value); + this.node.emit(NodeEventType.ANCHOR_CHANGED, this._anchorPoint); + this._markRenderDataDirty(); + } + }, { + key: "anchorX", + get: function get() { + return this._anchorPoint.x; + }, + set: function set(value) { + if (this._anchorPoint.x === value) { + return; + } + this._anchorPoint.x = value; + this.node.emit(NodeEventType.ANCHOR_CHANGED, this._anchorPoint); + this._markRenderDataDirty(); + } + }, { + key: "anchorY", + get: function get() { + return this._anchorPoint.y; + }, + set: function set(value) { + if (this._anchorPoint.y === value) { + return; + } + this._anchorPoint.y = value; + this.node.emit(NodeEventType.ANCHOR_CHANGED, this._anchorPoint); + this._markRenderDataDirty(); + } + }, { + key: "priority", + get: function get() { + return this._priority; + }, + set: function set(value) { + if (this._priority === value) { + return; + } + if (this.node.getComponent('cc.RenderRoot2D')) { + warnID(6706); + return; + } + this._priority = value; + if (this.node.parent) { + UITransform.insertChangeMap(this.node.parent); + } + } + }, { + key: "visibility", + get: function get() { + var camera = director.root.batcher2D.getFirstRenderCamera(this.node); + return camera ? camera.visibility : 0; + } + }, { + key: "cameraPriority", + get: function get() { + var camera = director.root.batcher2D.getFirstRenderCamera(this.node); + return camera ? camera.priority : 0; + } + }]); + return UITransform; + }(Component), _class3$w.EventType = NodeEventType, _class3$w.priorityChangeNodeMap = new Map(), _class3$w), (_initializer$1e = applyDecoratedInitializer(_class2$1l.prototype, "_contentSize", [serializable$9], function () { + return new Size$1(100, 100); + }), _initializer2$10 = applyDecoratedInitializer(_class2$1l.prototype, "_anchorPoint", [serializable$9], function () { + return new Vec2(0.5, 0.5); + })), _class2$1l)) || _class$1x) || _class$1x) || _class$1x)); + director.on(Director.EVENT_AFTER_UPDATE, UITransform._sortSiblings); + director.on(Director.EVENT_BEFORE_SCENE_LAUNCH, UITransform._cleanChangeMap); + + var _dec$1w, _dec2$18, _dec3$T, _class$1w, _class2$1k, _initializer$1d; + var _matInsInfo = { + parent: null, + owner: null, + subModelIdx: 0 + }; + var ccclass$r = ccclass$t, + disallowMultiple = disallowMultiple$1, + type$7 = type$8; + var Renderer = exports('dG', (_dec$1w = ccclass$r('cc.Renderer'), _dec2$18 = type$7(Material), _dec3$T = type$7([Material]), _dec$1w(_class$1w = disallowMultiple(_class$1w = (_class2$1k = function (_Component) { + _inheritsLoose(Renderer, _Component); + function Renderer() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this._materials = _initializer$1d && _initializer$1d(); + _this._materialInstances = []; + return _this; + } + var _proto = Renderer.prototype; + _proto.getMaterial = function getMaterial(idx) { + return this.getSharedMaterial(idx); + }; + _proto.setMaterial = function setMaterial(material, index) { + this.setSharedMaterial(material, index); + }; + _proto.getSharedMaterial = function getSharedMaterial(idx) { + if (idx < 0 || idx >= this._materials.length) { + return null; + } + return this._materials[idx]; + }; + _proto.setSharedMaterial = function setSharedMaterial(material, index) { + if (material && material instanceof MaterialInstance) { + errorID(12012); + } + this._materials[index] = material; + var inst = this._materialInstances[index]; + if (inst) { + inst.destroy(); + this._materialInstances[index] = null; + } + this._onMaterialModified(index, this._materials[index]); + }; + _proto.getMaterialInstance = function getMaterialInstance(idx) { + var mat = this._materials[idx]; + if (!mat) { + return null; + } + if (!this._materialInstances[idx]) { + _matInsInfo.parent = this._materials[idx]; + _matInsInfo.owner = this; + _matInsInfo.subModelIdx = idx; + var instantiated = new MaterialInstance(_matInsInfo); + _matInsInfo.parent = null; + _matInsInfo.owner = null; + _matInsInfo.subModelIdx = 0; + this.setMaterialInstance(instantiated, idx); + } + return this._materialInstances[idx]; + }; + _proto.setMaterialInstance = function setMaterialInstance(matInst, index) { + if (typeof matInst === 'number') { + warnID(12007); + var temp = matInst; + matInst = index; + index = temp; + } + var curInst = this._materialInstances[index]; + if (matInst && matInst.parent) { + if (matInst !== curInst) { + this._materialInstances[index] = matInst; + this._onMaterialModified(index, matInst); + } + return; + } + if (matInst !== this._materials[index] || curInst) { + this.setSharedMaterial(matInst, index); + } + }; + _proto.getRenderMaterial = function getRenderMaterial(index) { + return this._materialInstances[index] || this._materials[index]; + }; + _proto._onMaterialModified = function _onMaterialModified(index, material) {}; + _proto._onRebuildPSO = function _onRebuildPSO(index, material) {}; + _proto._clearMaterials = function _clearMaterials() {}; + _createClass(Renderer, [{ + key: "sharedMaterial", + get: function get() { + return this.getSharedMaterial(0); + } + }, { + key: "sharedMaterials", + get: function get() { + return this._materials; + }, + set: function set(val) { + for (var i = 0; i < val.length; i++) { + if (val[i] !== this._materials[i]) { + this.setSharedMaterial(val[i], i); + } + } + if (val.length < this._materials.length) { + for (var _i = val.length; _i < this._materials.length; _i++) { + this.setSharedMaterial(null, _i); + } + this._materials.splice(val.length); + } + } + }, { + key: "material", + get: function get() { + return this.getMaterialInstance(0); + }, + set: function set(val) { + if (this._materials.length === 1 && !this._materialInstances[0] && this._materials[0] === val) { + return; + } + this.setMaterialInstance(val, 0); + } + }, { + key: "materials", + get: function get() { + for (var i = 0; i < this._materials.length; i++) { + this._materialInstances[i] = this.getMaterialInstance(i); + } + return this._materialInstances; + }, + set: function set(val) { + var newLength = val.length; + var oldLength = this._materials.length; + for (var i = newLength; i < oldLength; i++) { + this.setMaterialInstance(null, i); + } + this._materials.length = newLength; + this._materialInstances.length = newLength; + for (var _i2 = 0; _i2 < newLength; _i2++) { + if (this._materialInstances[_i2] != val[_i2]) { + this.setMaterialInstance(val[_i2], _i2); + } + } + } + }]); + return Renderer; + }(Component), (_applyDecoratedDescriptor(_class2$1k.prototype, "sharedMaterials", [_dec2$18], Object.getOwnPropertyDescriptor(_class2$1k.prototype, "sharedMaterials"), _class2$1k.prototype), _initializer$1d = applyDecoratedInitializer(_class2$1k.prototype, "_materials", [_dec3$T], function () { + return []; + })), _class2$1k)) || _class$1w) || _class$1w)); + + var _dec$1v, _dec2$17, _dec3$S, _dec4$A, _class$1v, _class2$1j, _initializer$1c, _initializer2$$, _initializer3$L, _initializer4$F, _initializer5$x, _class3$v; + ccenum(BlendFactor); + ccenum(BlendOp); + ccenum(ColorMask); + var InstanceMaterialType; exports('I', InstanceMaterialType); + (function (InstanceMaterialType) { + InstanceMaterialType[InstanceMaterialType["ADD_COLOR"] = 0] = "ADD_COLOR"; + InstanceMaterialType[InstanceMaterialType["ADD_COLOR_AND_TEXTURE"] = 1] = "ADD_COLOR_AND_TEXTURE"; + InstanceMaterialType[InstanceMaterialType["GRAYSCALE"] = 2] = "GRAYSCALE"; + InstanceMaterialType[InstanceMaterialType["USE_ALPHA_SEPARATED"] = 3] = "USE_ALPHA_SEPARATED"; + InstanceMaterialType[InstanceMaterialType["USE_ALPHA_SEPARATED_AND_GRAY"] = 4] = "USE_ALPHA_SEPARATED_AND_GRAY"; + })(InstanceMaterialType || (exports('I', InstanceMaterialType = {}))); + var UIRenderer = exports('c', (_dec$1v = ccclass$t('cc.UIRenderer'), _dec2$17 = requireComponent(UITransform), _dec3$S = type$8(Material), _dec4$A = type$8(Material), _dec$1v(_class$1v = _dec2$17(_class$1v = (_class2$1j = (_class3$v = function (_Renderer) { + _inheritsLoose(UIRenderer, _Renderer); + function UIRenderer() { + var _this; + _this = _Renderer.call(this) || this; + _this._renderData = null; + _this._materials = _initializer$1c && _initializer$1c(); + _this._customMaterial = _initializer2$$ && _initializer2$$(); + _this._srcBlendFactor = _initializer3$L && _initializer3$L(); + _this._dstBlendFactor = _initializer4$F && _initializer4$F(); + _this._color = _initializer5$x && _initializer5$x(); + _this._stencilStage = Stage.DISABLED; + _this._assembler = null; + _this._postAssembler = null; + _this._renderDataFlag = true; + _this._renderFlag = true; + _this._renderEntity = void 0; + _this._instanceMaterialType = -1; + _this._srcBlendFactorCache = BlendFactor.SRC_ALPHA; + _this._dstBlendFactorCache = BlendFactor.ONE_MINUS_SRC_ALPHA; + _this._dirtyVersion = -1; + _this._internalId = -1; + _this._flagChangedVersion = -1; + _this._useVertexOpacity = false; + _this._lastParent = null; + _this._renderEntity = _this.createRenderEntity(); + return _this; + } + var _proto = UIRenderer.prototype; + _proto.setRenderData = function setRenderData(renderData) { + this._renderData = renderData; + }; + _proto.onLoad = function onLoad() { + this._renderEntity.setNode(this.node); + }; + _proto.__preload = function __preload() { + this.node._uiProps.uiComp = this; + if (this._flushAssembler) { + this._flushAssembler(); + } + }; + _proto.onEnable = function onEnable() { + this.node.on(NodeEventType.ANCHOR_CHANGED, this._nodeStateChange, this); + this.node.on(NodeEventType.SIZE_CHANGED, this._nodeStateChange, this); + this.node.on(NodeEventType.PARENT_CHANGED, this._colorDirty, this); + this.updateMaterial(); + this._colorDirty(); + uiRendererManager.addRenderer(this); + this.markForUpdateRenderData(); + }; + _proto.onRestore = function onRestore() { + this.updateMaterial(); + this.markForUpdateRenderData(); + }; + _proto.onDisable = function onDisable() { + this.node.off(NodeEventType.ANCHOR_CHANGED, this._nodeStateChange, this); + this.node.off(NodeEventType.SIZE_CHANGED, this._nodeStateChange, this); + this.node.off(NodeEventType.PARENT_CHANGED, this._colorDirty, this); + uiRendererManager.removeRenderer(this); + this._renderFlag = false; + this._renderEntity.enabled = false; + }; + _proto.onDestroy = function onDestroy() { + this._renderEntity.setNode(null); + if (this.node._uiProps.uiComp === this) { + this.node._uiProps.uiComp = null; + } + this.destroyRenderData(); + if (this._materialInstances) { + for (var i = 0; i < this._materialInstances.length; i++) { + var instance = this._materialInstances[i]; + if (instance) { + instance.destroy(); + } + } + } + }; + _proto.markForUpdateRenderData = function markForUpdateRenderData(enable) { + if (enable === void 0) { + enable = true; + } + if (enable) { + var renderData = this._renderData; + if (renderData) { + renderData.vertDirty = true; + } + uiRendererManager.markDirtyRenderer(this); + } + }; + _proto.requestRenderData = function requestRenderData(drawInfoType) { + if (drawInfoType === void 0) { + drawInfoType = RenderDrawInfoType.COMP; + } + var data = RenderData.add(); + data.initRenderDrawInfo(this, drawInfoType); + this._renderData = data; + return data; + }; + _proto.destroyRenderData = function destroyRenderData() { + if (!this._renderData) { + return; + } + this._renderData.removeRenderDrawInfo(this); + RenderData.remove(this._renderData); + this._renderData = null; + }; + _proto.updateRenderer = function updateRenderer() { + if (this._assembler) { + this._assembler.updateRenderData(this); + } + this._renderFlag = this._canRender(); + this._renderEntity.enabled = this._renderFlag; + }; + _proto.fillBuffers = function fillBuffers(render) { + if (this._renderFlag) { + this._render(render); + } + }; + _proto.postUpdateAssembler = function postUpdateAssembler(render) { + if (this._postAssembler && this._renderFlag) { + this._postRender(render); + } + }; + _proto._render = function _render(render) {}; + _proto._postRender = function _postRender(render) {}; + _proto._canRender = function _canRender() { + { + assert(this.isValid, 'this component should not be invalid!'); + } + return this.getSharedMaterial(0) !== null && this._enabled && this._color.a > 0; + }; + _proto._postCanRender = function _postCanRender() {}; + _proto.updateMaterial = function updateMaterial() { + if (this._customMaterial) { + if (this.getSharedMaterial(0) !== this._customMaterial) { + this.setSharedMaterial(this._customMaterial, 0); + } + return; + } + var mat = this._updateBuiltinMaterial(); + this.setSharedMaterial(mat, 0); + if (this.stencilStage === Stage.ENTER_LEVEL || this.stencilStage === Stage.ENTER_LEVEL_INVERTED) { + this.getMaterialInstance(0).recompileShaders({ + USE_ALPHA_TEST: true + }); + } + this._updateBlendFunc(); + }; + _proto._updateColor = function _updateColor() { + this.node._uiProps.colorDirty = true; + this.setEntityColorDirty(true); + this.setEntityColor(this._color); + this.setEntityOpacity(this.node._uiProps.localOpacity); + if (this._assembler) { + this._assembler.updateColor(this); + var renderFlag = this._renderFlag; + this._renderFlag = this._canRender(); + this.setEntityEnabled(this._renderFlag); + if (renderFlag !== this._renderFlag) { + var renderData = this.renderData; + if (renderData) { + renderData.vertDirty = true; + } + } + } + }; + UIRenderer.setEntityColorDirtyRecursively = function setEntityColorDirtyRecursively(node, dirty) { + var render = node._uiProps.uiComp; + if (render && render.color) { + render._renderEntity.colorDirty = dirty; + } + for (var i = 0; i < node.children.length; i++) { + UIRenderer.setEntityColorDirtyRecursively(node.children[i], dirty); + } + }; + _proto.setEntityColorDirty = function setEntityColorDirty(dirty) { + }; + _proto.setEntityColor = function setEntityColor(color) { + }; + _proto.setEntityOpacity = function setEntityOpacity(opacity) { + }; + _proto.setEntityEnabled = function setEntityEnabled(enabled) { + }; + _proto._updateBlendFunc = function _updateBlendFunc() { + var target = this.getRenderMaterial(0).passes[0].blendState.targets[0]; + this._dstBlendFactorCache = target.blendDst; + this._srcBlendFactorCache = target.blendSrc; + if (this._dstBlendFactorCache !== this._dstBlendFactor || this._srcBlendFactorCache !== this._srcBlendFactor) { + target = this.getMaterialInstance(0).passes[0].blendState.targets[0]; + target.blend = true; + target.blendDstAlpha = BlendFactor.ONE_MINUS_SRC_ALPHA; + target.blendDst = this._dstBlendFactor; + target.blendSrc = this._srcBlendFactor; + var targetPass = this.getMaterialInstance(0).passes[0]; + targetPass.blendState.setTarget(0, target); + targetPass._updatePassHash(); + this._dstBlendFactorCache = this._dstBlendFactor; + this._srcBlendFactorCache = this._srcBlendFactor; + } + }; + _proto._nodeStateChange = function _nodeStateChange(transformType) { + if (this._renderData) { + this.markForUpdateRenderData(); + } + for (var i = 0; i < this.node.children.length; ++i) { + var child = this.node.children[i]; + var renderComp = child.getComponent(UIRenderer); + if (renderComp) { + renderComp.markForUpdateRenderData(); + } + } + }; + _proto._colorDirty = function _colorDirty() { + this.node._uiProps.colorDirty = true; + this.setEntityColorDirty(true); + }; + _proto._onMaterialModified = function _onMaterialModified(idx, material) { + if (this._renderData) { + this.markForUpdateRenderData(); + this._renderData.passDirty = true; + } + _Renderer.prototype._onMaterialModified.call(this, idx, material); + }; + _proto._updateBuiltinMaterial = function _updateBuiltinMaterial() { + var mat; + switch (this._instanceMaterialType) { + case InstanceMaterialType.ADD_COLOR: + mat = builtinResMgr.get("ui-base-material"); + break; + case InstanceMaterialType.GRAYSCALE: + mat = builtinResMgr.get("ui-sprite-gray-material"); + break; + case InstanceMaterialType.USE_ALPHA_SEPARATED: + mat = builtinResMgr.get("ui-sprite-alpha-sep-material"); + break; + case InstanceMaterialType.USE_ALPHA_SEPARATED_AND_GRAY: + mat = builtinResMgr.get("ui-sprite-gray-alpha-sep-material"); + break; + default: + mat = builtinResMgr.get("ui-sprite-material"); + break; + } + return mat; + }; + _proto.setNodeDirty = function setNodeDirty() { + if (this._renderData) { + this._renderData.nodeDirty = true; + } + }; + _proto.setTextureDirty = function setTextureDirty() { + if (this._renderData) { + this._renderData.textureDirty = true; + } + }; + _proto.createRenderEntity = function createRenderEntity() { + return new RenderEntity(RenderEntityType.STATIC); + }; + _createClass(UIRenderer, [{ + key: "sharedMaterials", + get: function get() { + return this._materials; + }, + set: function set(val) { + for (var i = 0; i < val.length; i++) { + if (val[i] !== this._materials[i]) { + this.setSharedMaterial(val[i], i); + } + } + if (val.length < this._materials.length) { + for (var _i = val.length; _i < this._materials.length; _i++) { + this.setSharedMaterial(null, _i); + } + this._materials.splice(val.length); + } + } + }, { + key: "customMaterial", + get: function get() { + return this._customMaterial; + }, + set: function set(val) { + this._customMaterial = val; + this.updateMaterial(); + } + }, { + key: "color", + get: function get() { + return this._color; + }, + set: function set(value) { + if (this._color.equals(value)) { + return; + } + this._color.set(value); + this._updateColor(); + } + }, { + key: "renderData", + get: function get() { + return this._renderData; + } + }, { + key: "useVertexOpacity", + get: function get() { + return this._useVertexOpacity; + } + }, { + key: "stencilStage", + get: function get() { + return this._stencilStage; + }, + set: function set(val) { + this._stencilStage = val; + this._renderEntity.setStencilStage(val); + } + }, { + key: "srcBlendFactor", + get: function get() { + return this._srcBlendFactor; + }, + set: function set(srcBlendFactor) { + this._srcBlendFactor = srcBlendFactor; + } + }, { + key: "batcher", + get: function get() { + return director.root.batcher2D; + } + }, { + key: "renderEntity", + get: function get() { + { + assert(Boolean(this._renderEntity), 'this._renderEntity should not be invalid'); + } + return this._renderEntity; + } + }]); + return UIRenderer; + }(Renderer), _class3$v.BlendState = BlendFactor, _class3$v.Assembler = null, _class3$v.PostAssembler = null, _class3$v), (_applyDecoratedDescriptor(_class2$1j.prototype, "sharedMaterials", [override$1], Object.getOwnPropertyDescriptor(_class2$1j.prototype, "sharedMaterials"), _class2$1j.prototype), _applyDecoratedDescriptor(_class2$1j.prototype, "customMaterial", [_dec3$S], Object.getOwnPropertyDescriptor(_class2$1j.prototype, "customMaterial"), _class2$1j.prototype), _initializer$1c = applyDecoratedInitializer(_class2$1j.prototype, "_materials", [override$1], function () { + return []; + }), _initializer2$$ = applyDecoratedInitializer(_class2$1j.prototype, "_customMaterial", [_dec4$A], function () { + return null; + }), _initializer3$L = applyDecoratedInitializer(_class2$1j.prototype, "_srcBlendFactor", [serializable$9], function () { + return BlendFactor.SRC_ALPHA; + }), _initializer4$F = applyDecoratedInitializer(_class2$1j.prototype, "_dstBlendFactor", [serializable$9], function () { + return BlendFactor.ONE_MINUS_SRC_ALPHA; + }), _initializer5$x = applyDecoratedInitializer(_class2$1j.prototype, "_color", [serializable$9], function () { + return Color$1.WHITE.clone(); + })), _class2$1j)) || _class$1v) || _class$1v)); + legacyCC.internal.UIRenderer = UIRenderer; + + var TextStyle = function () { + function TextStyle() { + this.isBold = false; + this.isItalic = false; + this.isUnderline = false; + this.underlineHeight = 1; + this.isOutlined = false; + this.outlineColor = Color$1.WHITE.clone(); + this.outlineWidth = 1; + this.hasShadow = false; + this.shadowColor = Color$1.BLACK.clone(); + this.shadowBlur = 2; + this.shadowOffsetX = 0; + this.shadowOffsetY = 0; + this.color = Color$1.WHITE.clone(); + this.fontSize = 40; + this.actualFontSize = 0; + this.isSystemFontUsed = false; + this.originFontSize = 0; + this.bmfontScale = 1.0; + this.fontFamily = 'Arial'; + this.fontDesc = ''; + this.fntConfig = null; + this.spriteFrame = null; + this.fontScale = 1; + } + var _proto = TextStyle.prototype; + _proto.reset = function reset() { + this.isBold = false; + this.isItalic = false; + this.isUnderline = false; + this.underlineHeight = 1; + this.isOutlined = false; + this.outlineColor.set(); + this.outlineWidth = 1; + this.hasShadow = false; + this.shadowColor.set(); + this.shadowBlur = 2; + this.shadowOffsetX = 0; + this.shadowOffsetY = 0; + }; + return TextStyle; + }(); + + var TextLayout = function () { + function TextLayout() { + this.horizontalAlign = 0; + this.verticalAlign = 0; + this.wrapping = true; + this.overFlow = 0; + this.lineHeight = 10; + this.maxLineWidth = 0; + this.spacingX = 0; + this.textWidthTemp = 0; + this.textHeightTemp = 0; + this.textDimensions = new Size$1(); + this.horizontalKerning = []; + this.numberOfLines = 1; + this.linesOffsetX = []; + this.letterOffsetY = 0; + this.tailoredTopY = 0; + this.tailoredBottomY = 0; + this.textDesiredHeight = 0; + this.linesWidth = []; + } + var _proto = TextLayout.prototype; + _proto.reset = function reset() { + this.horizontalAlign = 0; + this.verticalAlign = 0; + this.wrapping = true; + this.overFlow = 0; + this.lineHeight = 10; + this.maxLineWidth = 0; + this.spacingX = 0; + this.textWidthTemp = 0; + this.textHeightTemp = 0; + this.textDimensions.set(); + this.horizontalKerning.length = 0; + this.numberOfLines = 1; + this.linesOffsetX.length = 0; + this.letterOffsetY = 0; + this.tailoredTopY = 0; + this.tailoredBottomY = 0; + this.textDesiredHeight = 0; + this.linesWidth.length = 0; + }; + return TextLayout; + }(); + + var TextOutputLayoutData = function () { + function TextOutputLayoutData() { + this.parsedString = []; + this.nodeContentSize = Size$1.ZERO.clone(); + this.canvasSize = new Size$1(); + this.canvasPadding = new Rect$1(); + this.contentSizeExtend = Size$1.ZERO.clone(); + this.startPosition = Vec2.ZERO.clone(); + } + var _proto = TextOutputLayoutData.prototype; + _proto.reset = function reset() { + this.parsedString.length = 0; + this.nodeContentSize.set(0, 0); + this.canvasSize.set(); + this.canvasPadding.set(); + this.contentSizeExtend.set(); + this.startPosition.set(); + }; + return TextOutputLayoutData; + }(); + var TextOutputRenderData = function () { + function TextOutputRenderData() { + this.quadCount = 0; + this.vertexBuffer = []; + this.texture = null; + this.uiTransAnchorX = 0.5; + this.uiTransAnchorY = 0.5; + } + var _proto2 = TextOutputRenderData.prototype; + _proto2.reset = function reset() { + this.quadCount = 0; + this.vertexBuffer.length = 0; + this.texture = null; + this.uiTransAnchorX = 0.5; + this.uiTransAnchorY = 0.5; + }; + return TextOutputRenderData; + }(); + + var _dec$1u, _dec2$16, _dec3$R, _dec4$z, _dec5$w, _dec6$n, _dec7$k, _class$1u, _class2$1i, _initializer$1b, _initializer2$_, _initializer3$K, _initializer4$E, _initializer5$w, _initializer6$s, _initializer7$k, _initializer8$j, _initializer9$h, _initializer10$h, _initializer11$g, _initializer12$f, _initializer13$c, _initializer14$a, _initializer15$7, _initializer16$7, _initializer17$5, _class3$u; + Color$1.WHITE.clone(); + var HorizontalTextAlignment; exports('H', HorizontalTextAlignment); + (function (HorizontalTextAlignment) { + HorizontalTextAlignment[HorizontalTextAlignment["LEFT"] = 0] = "LEFT"; + HorizontalTextAlignment[HorizontalTextAlignment["CENTER"] = 1] = "CENTER"; + HorizontalTextAlignment[HorizontalTextAlignment["RIGHT"] = 2] = "RIGHT"; + })(HorizontalTextAlignment || (exports('H', HorizontalTextAlignment = {}))); + ccenum(HorizontalTextAlignment); + var VerticalTextAlignment; exports('V', VerticalTextAlignment); + (function (VerticalTextAlignment) { + VerticalTextAlignment[VerticalTextAlignment["TOP"] = 0] = "TOP"; + VerticalTextAlignment[VerticalTextAlignment["CENTER"] = 1] = "CENTER"; + VerticalTextAlignment[VerticalTextAlignment["BOTTOM"] = 2] = "BOTTOM"; + })(VerticalTextAlignment || (exports('V', VerticalTextAlignment = {}))); + ccenum(VerticalTextAlignment); + var Overflow$1; exports('O', Overflow$1); + (function (Overflow) { + Overflow[Overflow["NONE"] = 0] = "NONE"; + Overflow[Overflow["CLAMP"] = 1] = "CLAMP"; + Overflow[Overflow["SHRINK"] = 2] = "SHRINK"; + Overflow[Overflow["RESIZE_HEIGHT"] = 3] = "RESIZE_HEIGHT"; + })(Overflow$1 || (exports('O', Overflow$1 = {}))); + ccenum(Overflow$1); + var CacheMode; exports('p', CacheMode); + (function (CacheMode) { + CacheMode[CacheMode["NONE"] = 0] = "NONE"; + CacheMode[CacheMode["BITMAP"] = 1] = "BITMAP"; + CacheMode[CacheMode["CHAR"] = 2] = "CHAR"; + })(CacheMode || (exports('p', CacheMode = {}))); + ccenum(CacheMode); + var Label = exports('q', (_dec$1u = ccclass$t('cc.Label'), _dec2$16 = executionOrder$1(110), _dec3$R = type$8(HorizontalTextAlignment), _dec4$z = type$8(VerticalTextAlignment), _dec5$w = type$8(Overflow$1), _dec6$n = type$8(Font), _dec7$k = type$8(CacheMode), _dec$1u(_class$1u = _dec2$16(_class$1u = (_class2$1i = (_class3$u = function (_UIRenderer) { + _inheritsLoose(Label, _UIRenderer); + function Label() { + var _this; + _this = _UIRenderer.call(this) || this; + _this._string = _initializer$1b && _initializer$1b(); + _this._horizontalAlign = _initializer2$_ && _initializer2$_(); + _this._verticalAlign = _initializer3$K && _initializer3$K(); + _this._actualFontSize = _initializer4$E && _initializer4$E(); + _this._fontSize = _initializer5$w && _initializer5$w(); + _this._fontFamily = _initializer6$s && _initializer6$s(); + _this._lineHeight = _initializer7$k && _initializer7$k(); + _this._overflow = _initializer8$j && _initializer8$j(); + _this._enableWrapText = _initializer9$h && _initializer9$h(); + _this._font = _initializer10$h && _initializer10$h(); + _this._isSystemFontUsed = _initializer11$g && _initializer11$g(); + _this._spacingX = _initializer12$f && _initializer12$f(); + _this._isItalic = _initializer13$c && _initializer13$c(); + _this._isBold = _initializer14$a && _initializer14$a(); + _this._isUnderline = _initializer15$7 && _initializer15$7(); + _this._underlineHeight = _initializer16$7 && _initializer16$7(); + _this._cacheMode = _initializer17$5 && _initializer17$5(); + _this._N$file = null; + _this._texture = null; + _this._ttfSpriteFrame = null; + _this._userDefinedFont = null; + _this._assemblerData = null; + _this._fontAtlas = null; + _this._letterTexture = null; + _this._contentWidth = 0; + _this._textStyle = null; + _this._textLayout = null; + _this._textRenderData = null; + _this._textLayoutData = null; + _this._ttfSpriteFrame = null; + _this._textStyle = new TextStyle(); + _this._textLayout = new TextLayout(); + _this._textLayoutData = new TextOutputLayoutData(); + _this._textRenderData = new TextOutputRenderData(); + return _this; + } + var _proto = Label.prototype; + _proto.onEnable = function onEnable() { + _UIRenderer.prototype.onEnable.call(this); + if (!this._font && !this._isSystemFontUsed) { + this.useSystemFont = true; + } + if (this._isSystemFontUsed && !this._fontFamily) { + this.fontFamily = 'Arial'; + } + this._applyFontTexture(); + }; + _proto.onDestroy = function onDestroy() { + if (this._assembler && this._assembler.resetAssemblerData) { + this._assembler.resetAssemblerData(this._assemblerData); + } + this._assemblerData = null; + if (this._ttfSpriteFrame) { + this._ttfSpriteFrame._resetDynamicAtlasFrame(); + var tex = this._ttfSpriteFrame.texture; + this._ttfSpriteFrame.destroy(); + if (tex) { + var tex2d = tex; + if (tex2d.image) { + tex2d.image.destroy(); + } + tex.destroy(); + } + this._ttfSpriteFrame = null; + } + this._letterTexture = null; + _UIRenderer.prototype.onDestroy.call(this); + }; + _proto.updateRenderData = function updateRenderData(force) { + if (force === void 0) { + force = false; + } + if (force) { + this._flushAssembler(); + if (this.renderData) this.renderData.vertDirty = true; + this._applyFontTexture(); + } + if (this._assembler) { + this._assembler.updateRenderData(this); + } + }; + _proto._render = function _render(render) { + render.commitComp(this, this.renderData, this._texture, this._assembler, null); + }; + _proto._updateColor = function _updateColor() { + _UIRenderer.prototype._updateColor.call(this); + this.markForUpdateRenderData(); + }; + _proto.setEntityColor = function setEntityColor(color) { + }; + _proto._canRender = function _canRender() { + if (!_UIRenderer.prototype._canRender.call(this) || !this._string) { + return false; + } + var font = this._font; + if (font && font instanceof BitmapFont) { + var spriteFrame = font.spriteFrame; + if (!spriteFrame || !spriteFrame.texture) { + return false; + } + } + return true; + }; + _proto._flushAssembler = function _flushAssembler() { + var assembler = Label.Assembler.getAssembler(this); + if (this._assembler !== assembler) { + this.destroyRenderData(); + this._assembler = assembler; + this.textStyle.reset(); + this.textLayout.reset(); + this.textLayoutData.reset(); + this.textRenderData.reset(); + } + if (!this.renderData) { + if (this._assembler && this._assembler.createData) { + this._renderData = this._assembler.createData(this); + this.renderData.material = this.material; + this._updateColor(); + } + } + }; + _proto._applyFontTexture = function _applyFontTexture() { + this.markForUpdateRenderData(); + var font = this._font; + if (font instanceof BitmapFont) { + var spriteFrame = font.spriteFrame; + if (spriteFrame && spriteFrame.texture) { + this._texture = spriteFrame; + if (this.renderData) { + this.renderData.textureDirty = true; + } + this.changeMaterialForDefine(); + if (this._assembler) { + this._assembler.updateRenderData(this); + } + } + } else { + if (this.cacheMode === CacheMode.CHAR) { + this._letterTexture = this._assembler.getAssemblerData(); + this._texture = this._letterTexture; + } else if (!this._ttfSpriteFrame) { + this._ttfSpriteFrame = new SpriteFrame(); + this._assemblerData = this._assembler.getAssemblerData(); + var image = new ImageAsset(this._assemblerData.canvas); + var texture = new Texture2D(); + texture.image = image; + this._ttfSpriteFrame.texture = texture; + } + if (this.cacheMode !== CacheMode.CHAR) { + this._texture = this._ttfSpriteFrame; + } + this.changeMaterialForDefine(); + } + }; + _proto.changeMaterialForDefine = function changeMaterialForDefine() { + if (!this._texture) { + return; + } + var value = false; + if (this.cacheMode !== CacheMode.CHAR) { + var spriteFrame = this._texture; + var texture = spriteFrame.texture; + if (texture instanceof TextureBase) { + var format = texture.getPixelFormat(); + value = format === PixelFormat.RGBA_ETC1 || format === PixelFormat.RGB_A_PVRTC_4BPPV1 || format === PixelFormat.RGB_A_PVRTC_2BPPV1; + } + } + if (value) { + this._instanceMaterialType = InstanceMaterialType.USE_ALPHA_SEPARATED; + } else { + this._instanceMaterialType = InstanceMaterialType.ADD_COLOR_AND_TEXTURE; + } + this.updateMaterial(); + }; + _proto._updateBlendFunc = function _updateBlendFunc() { + _UIRenderer.prototype._updateBlendFunc.call(this); + }; + _createClass(Label, [{ + key: "string", + get: function get() { + return this._string; + }, + set: function set(value) { + if (value === null || value === undefined) { + value = ''; + } else { + value = value.toString(); + } + if (this._string === value) { + return; + } + this._string = value; + this.markForUpdateRenderData(); + } + }, { + key: "horizontalAlign", + get: function get() { + return this._horizontalAlign; + }, + set: function set(value) { + if (this._horizontalAlign === value) { + return; + } + this._horizontalAlign = value; + this.markForUpdateRenderData(); + } + }, { + key: "verticalAlign", + get: function get() { + return this._verticalAlign; + }, + set: function set(value) { + if (this._verticalAlign === value) { + return; + } + this._verticalAlign = value; + this.markForUpdateRenderData(); + } + }, { + key: "actualFontSize", + get: function get() { + return this._actualFontSize; + }, + set: function set(value) { + this._actualFontSize = value; + } + }, { + key: "fontSize", + get: function get() { + return this._fontSize; + }, + set: function set(value) { + if (this._fontSize === value) { + return; + } + this._fontSize = value; + this.markForUpdateRenderData(); + } + }, { + key: "lineHeight", + get: function get() { + return this._lineHeight; + }, + set: function set(value) { + if (this._lineHeight === value) { + return; + } + this._lineHeight = value; + this.markForUpdateRenderData(); + } + }, { + key: "spacingX", + get: function get() { + return this._spacingX; + }, + set: function set(value) { + if (this._spacingX === value) { + return; + } + this._spacingX = value; + this.markForUpdateRenderData(); + } + }, { + key: "overflow", + get: function get() { + return this._overflow; + }, + set: function set(value) { + if (this._overflow === value) { + return; + } + this._overflow = value; + this.markForUpdateRenderData(); + } + }, { + key: "enableWrapText", + get: function get() { + return this._enableWrapText; + }, + set: function set(value) { + if (this._enableWrapText === value) { + return; + } + this._enableWrapText = value; + this.markForUpdateRenderData(); + } + }, { + key: "useSystemFont", + get: function get() { + return this._isSystemFontUsed; + }, + set: function set(value) { + if (this._isSystemFontUsed === value) { + return; + } + this.destroyRenderData(); + this._isSystemFontUsed = !!value; + if (value) { + this.font = null; + } + this._flushAssembler(); + this.markForUpdateRenderData(); + } + }, { + key: "fontFamily", + get: function get() { + return this._fontFamily; + }, + set: function set(value) { + if (this._fontFamily === value) { + return; + } + this._fontFamily = value; + this.markForUpdateRenderData(); + } + }, { + key: "font", + get: function get() { + return this._font; + }, + set: function set(value) { + if (this._font === value) { + return; + } + this._isSystemFontUsed = !value; + this._font = value; + this.destroyRenderData(); + this._fontAtlas = null; + this.updateRenderData(true); + } + }, { + key: "cacheMode", + get: function get() { + return this._cacheMode; + }, + set: function set(value) { + if (this._cacheMode === value) { + return; + } + if (this._cacheMode === CacheMode.BITMAP && !(this._font instanceof BitmapFont) && this._ttfSpriteFrame) { + this._ttfSpriteFrame._resetDynamicAtlasFrame(); + } + if (this._cacheMode === CacheMode.CHAR) { + this._ttfSpriteFrame = null; + } + this._cacheMode = value; + this.updateRenderData(true); + } + }, { + key: "isBold", + get: function get() { + return this._isBold; + }, + set: function set(value) { + if (this._isBold === value) { + return; + } + this._isBold = value; + this.markForUpdateRenderData(); + } + }, { + key: "isItalic", + get: function get() { + return this._isItalic; + }, + set: function set(value) { + if (this._isItalic === value) { + return; + } + this._isItalic = value; + this.markForUpdateRenderData(); + } + }, { + key: "isUnderline", + get: function get() { + return this._isUnderline; + }, + set: function set(value) { + if (this._isUnderline === value) { + return; + } + this._isUnderline = value; + this.markForUpdateRenderData(); + } + }, { + key: "underlineHeight", + get: function get() { + return this._underlineHeight; + }, + set: function set(value) { + if (this._underlineHeight === value) return; + this._underlineHeight = value; + this.markForUpdateRenderData(); + } + }, { + key: "spriteFrame", + get: function get() { + return this._texture; + } + }, { + key: "ttfSpriteFrame", + get: function get() { + return this._ttfSpriteFrame; + } + }, { + key: "assemblerData", + get: function get() { + return this._assemblerData; + } + }, { + key: "fontAtlas", + get: function get() { + return this._fontAtlas; + }, + set: function set(value) { + this._fontAtlas = value; + } + }, { + key: "_bmFontOriginalSize", + get: function get() { + if (this._font instanceof BitmapFont) { + return this._font.fontSize; + } else { + return -1; + } + } + }, { + key: "textStyle", + get: function get() { + return this._textStyle; + } + }, { + key: "textLayout", + get: function get() { + return this._textLayout; + } + }, { + key: "textRenderData", + get: function get() { + return this._textRenderData; + } + }, { + key: "textLayoutData", + get: function get() { + return this._textLayoutData; + } + }, { + key: "contentWidth", + get: function get() { + return this._contentWidth; + }, + set: function set(val) { + this._contentWidth = val; + } + }]); + return Label; + }(UIRenderer), _class3$u.HorizontalAlign = HorizontalTextAlignment, _class3$u.VerticalAlign = VerticalTextAlignment, _class3$u.Overflow = Overflow$1, _class3$u.CacheMode = CacheMode, _class3$u._canvasPool = CanvasPool.getInstance(), _class3$u), (_applyDecoratedDescriptor(_class2$1i.prototype, "horizontalAlign", [_dec3$R], Object.getOwnPropertyDescriptor(_class2$1i.prototype, "horizontalAlign"), _class2$1i.prototype), _applyDecoratedDescriptor(_class2$1i.prototype, "verticalAlign", [_dec4$z], Object.getOwnPropertyDescriptor(_class2$1i.prototype, "verticalAlign"), _class2$1i.prototype), _applyDecoratedDescriptor(_class2$1i.prototype, "overflow", [_dec5$w], Object.getOwnPropertyDescriptor(_class2$1i.prototype, "overflow"), _class2$1i.prototype), _applyDecoratedDescriptor(_class2$1i.prototype, "font", [_dec6$n], Object.getOwnPropertyDescriptor(_class2$1i.prototype, "font"), _class2$1i.prototype), _applyDecoratedDescriptor(_class2$1i.prototype, "cacheMode", [_dec7$k], Object.getOwnPropertyDescriptor(_class2$1i.prototype, "cacheMode"), _class2$1i.prototype), _initializer$1b = applyDecoratedInitializer(_class2$1i.prototype, "_string", [serializable$9], function () { + return 'label'; + }), _initializer2$_ = applyDecoratedInitializer(_class2$1i.prototype, "_horizontalAlign", [serializable$9], function () { + return HorizontalTextAlignment.CENTER; + }), _initializer3$K = applyDecoratedInitializer(_class2$1i.prototype, "_verticalAlign", [serializable$9], function () { + return VerticalTextAlignment.CENTER; + }), _initializer4$E = applyDecoratedInitializer(_class2$1i.prototype, "_actualFontSize", [serializable$9], function () { + return 0; + }), _initializer5$w = applyDecoratedInitializer(_class2$1i.prototype, "_fontSize", [serializable$9], function () { + return 40; + }), _initializer6$s = applyDecoratedInitializer(_class2$1i.prototype, "_fontFamily", [serializable$9], function () { + return 'Arial'; + }), _initializer7$k = applyDecoratedInitializer(_class2$1i.prototype, "_lineHeight", [serializable$9], function () { + return 40; + }), _initializer8$j = applyDecoratedInitializer(_class2$1i.prototype, "_overflow", [serializable$9], function () { + return Overflow$1.NONE; + }), _initializer9$h = applyDecoratedInitializer(_class2$1i.prototype, "_enableWrapText", [serializable$9], function () { + return true; + }), _initializer10$h = applyDecoratedInitializer(_class2$1i.prototype, "_font", [serializable$9], function () { + return null; + }), _initializer11$g = applyDecoratedInitializer(_class2$1i.prototype, "_isSystemFontUsed", [serializable$9], function () { + return true; + }), _initializer12$f = applyDecoratedInitializer(_class2$1i.prototype, "_spacingX", [serializable$9], function () { + return 0; + }), _initializer13$c = applyDecoratedInitializer(_class2$1i.prototype, "_isItalic", [serializable$9], function () { + return false; + }), _initializer14$a = applyDecoratedInitializer(_class2$1i.prototype, "_isBold", [serializable$9], function () { + return false; + }), _initializer15$7 = applyDecoratedInitializer(_class2$1i.prototype, "_isUnderline", [serializable$9], function () { + return false; + }), _initializer16$7 = applyDecoratedInitializer(_class2$1i.prototype, "_underlineHeight", [serializable$9], function () { + return 2; + }), _initializer17$5 = applyDecoratedInitializer(_class2$1i.prototype, "_cacheMode", [serializable$9], function () { + return CacheMode.NONE; + })), _class2$1i)) || _class$1u) || _class$1u)); + legacyCC.Label = Label; + + var _stageOffset = 0; + var _name2stageID = {}; + var config = { + addStage: function addStage(name) { + if (_name2stageID[name] !== undefined) { + return; + } + var stageID = 1 << _stageOffset; + _name2stageID[name] = stageID; + _stageOffset += 1; + }, + stageID: function stageID(name) { + var id = _name2stageID[name]; + if (id === undefined) { + return -1; + } + return id; + }, + stageIDs: function stageIDs(nameList) { + var key = 0; + for (var _iterator = _createForOfIteratorHelperLoose(nameList), _step; !(_step = _iterator()).done;) { + var name = _step.value; + var id = _name2stageID[name]; + if (id !== undefined) { + key |= id; + } + } + return key; + } + }; + + function createIA(device, data) { + if (!data.positions) { + console.error('The data must have positions field'); + return null; + } + var verts = []; + var vcount = data.positions.length / 3; + for (var i = 0; i < vcount; ++i) { + verts.push(data.positions[3 * i], data.positions[3 * i + 1], data.positions[3 * i + 2]); + if (data.normals) { + verts.push(data.normals[3 * i], data.normals[3 * i + 1], data.normals[3 * i + 2]); + } + if (data.uvs) { + verts.push(data.uvs[2 * i], data.uvs[2 * i + 1]); + } + if (data.colors) { + verts.push(data.colors[3 * i], data.colors[3 * i + 1], data.colors[3 * i + 2]); + } + } + var vfmt = []; + vfmt.push(new Attribute(AttributeName.ATTR_POSITION, Format.RGB32F)); + if (data.normals) { + vfmt.push(new Attribute(AttributeName.ATTR_NORMAL, Format.RGB32F)); + } + if (data.uvs) { + vfmt.push(new Attribute(AttributeName.ATTR_TEX_COORD, Format.RG32F)); + } + if (data.colors) { + vfmt.push(new Attribute(AttributeName.ATTR_COLOR, Format.RGB32F)); + } + var vb = device.createBuffer(new BufferInfo(BufferUsageBit.VERTEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, verts.length * 4, verts.length * 4 / vcount)); + vb.update(new Float32Array(verts)); + var ib = null; + if (data.indices) { + ib = device.createBuffer(new BufferInfo(BufferUsageBit.INDEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, data.indices.length * 2, 2)); + ib.update(new Uint16Array(data.indices)); + } + return device.createInputAssembler(new InputAssemblerInfo(vfmt, [vb], ib)); + } + + var RenderQueue; + (function (RenderQueue) { + RenderQueue[RenderQueue["OPAQUE"] = 0] = "OPAQUE"; + RenderQueue[RenderQueue["TRANSPARENT"] = 1] = "TRANSPARENT"; + RenderQueue[RenderQueue["OVERLAY"] = 2] = "OVERLAY"; + })(RenderQueue || (RenderQueue = {})); + var PassStage; + (function (PassStage) { + PassStage[PassStage["DEFAULT"] = 1] = "DEFAULT"; + PassStage[PassStage["FORWARD"] = 2] = "FORWARD"; + PassStage[PassStage["SHADOWCAST"] = 4] = "SHADOWCAST"; + })(PassStage || (PassStage = {})); + + function nearestPOT(num) { + --num; + num |= num >> 16; + num |= num >> 8; + num |= num >> 4; + num |= num >> 2; + num |= num >> 1; + ++num; + return num; + } + function roundUp(n, alignment) { + return Math.ceil(n / alignment) * alignment; + } + var TextureBufferPool = function () { + function TextureBufferPool(device) { + this._device = void 0; + this._format = Format.UNKNOWN; + this._formatSize = 0; + this._chunks = []; + this._chunkCount = 0; + this._handles = []; + this._region0 = new BufferTextureCopy(); + this._region1 = new BufferTextureCopy(); + this._region2 = new BufferTextureCopy(); + this._roundUpFn = null; + this._bufferViewCtor = Uint8Array; + this._channels = 4; + this._alignment = 1; + this._device = device; + } + var _proto = TextureBufferPool.prototype; + _proto.initialize = function initialize(info) { + var formatInfo = FormatInfos[info.format]; + this._format = info.format; + this._formatSize = formatInfo.size; + this._channels = formatInfo.count; + this._bufferViewCtor = getTypedArrayConstructor(formatInfo); + this._roundUpFn = info.roundUpFn || null; + this._alignment = info.alignment || 1; + if (info.inOrderFree) { + this.alloc = this._McDonaldAlloc; + } + }; + _proto.destroy = function destroy() { + for (var i = 0; i < this._chunkCount; ++i) { + var chunk = this._chunks[i]; + chunk.texture.destroy(); + } + this._chunks.length = 0; + this._handles.length = 0; + }; + _proto.alloc = function alloc(size, chunkIdx) { + size = roundUp(size, this._alignment); + var index = -1; + var start = -1; + if (chunkIdx !== undefined) { + index = chunkIdx; + start = this._findAvailableSpace(size, index); + } + if (start < 0) { + for (var i = 0; i < this._chunkCount; ++i) { + index = i; + start = this._findAvailableSpace(size, index); + if (start >= 0) { + break; + } + } + } + if (start >= 0) { + var chunk = this._chunks[index]; + chunk.start += size; + var handle = { + chunkIdx: index, + start: start, + end: start + size, + texture: chunk.texture + }; + this._handles.push(handle); + return handle; + } + var targetSize = Math.sqrt(size / this._formatSize); + var texLength = this._roundUpFn && this._roundUpFn(targetSize, this._formatSize) || Math.max(1024, nearestPOT(targetSize)); + var newChunk = this._chunks[this.createChunk(texLength)]; + newChunk.start += size; + var texHandle = { + chunkIdx: this._chunkCount - 1, + start: 0, + end: size, + texture: newChunk.texture + }; + this._handles.push(texHandle); + return texHandle; + }; + _proto.free = function free(handle) { + for (var i = 0; i < this._handles.length; ++i) { + if (this._handles[i] === handle) { + this._chunks[handle.chunkIdx].end = handle.end; + this._handles.splice(i, 1); + return; + } + } + }; + _proto.createChunk = function createChunk(length) { + var texSize = length * length * this._formatSize; + debug("TextureBufferPool: Allocate chunk " + this._chunkCount + ", size: " + texSize + ", format: " + this._format); + var texture = this._device.createTexture(new TextureInfo(TextureType.TEX2D, TextureUsageBit.SAMPLED | TextureUsageBit.TRANSFER_DST, this._format, length, length)); + var chunk = { + texture: texture, + size: texSize, + start: 0, + end: texSize + }; + this._chunks[this._chunkCount] = chunk; + return this._chunkCount++; + }; + _proto.update = function update(handle, buffer) { + var buffers = []; + var regions = []; + var start = handle.start / this._formatSize; + var remainSize = buffer.byteLength / this._formatSize; + var offsetX = start % handle.texture.width; + var offsetY = Math.floor(start / handle.texture.width); + var copySize = Math.min(handle.texture.width - offsetX, remainSize); + var begin = 0; + if (offsetX > 0) { + this._region0.texOffset.x = offsetX; + this._region0.texOffset.y = offsetY; + this._region0.texExtent.width = copySize; + this._region0.texExtent.height = 1; + buffers.push(new this._bufferViewCtor(buffer, begin * this._formatSize, copySize * this._channels)); + regions.push(this._region0); + offsetX = 0; + offsetY += 1; + remainSize -= copySize; + begin += copySize; + } + if (remainSize > 0) { + this._region1.texOffset.x = offsetX; + this._region1.texOffset.y = offsetY; + if (remainSize > handle.texture.width) { + this._region1.texExtent.width = handle.texture.width; + this._region1.texExtent.height = Math.floor(remainSize / handle.texture.width); + copySize = this._region1.texExtent.width * this._region1.texExtent.height; + } else { + copySize = remainSize; + this._region1.texExtent.width = copySize; + this._region1.texExtent.height = 1; + } + buffers.push(new this._bufferViewCtor(buffer, begin * this._formatSize, copySize * this._channels)); + regions.push(this._region1); + offsetX = 0; + offsetY += this._region1.texExtent.height; + remainSize -= copySize; + begin += copySize; + } + if (remainSize > 0) { + this._region2.texOffset.x = offsetX; + this._region2.texOffset.y = offsetY; + this._region2.texExtent.width = remainSize; + this._region2.texExtent.height = 1; + buffers.push(new this._bufferViewCtor(buffer, begin * this._formatSize, remainSize * this._channels)); + regions.push(this._region2); + } + this._device.copyBuffersToTexture(buffers, handle.texture, regions); + }; + _proto._findAvailableSpace = function _findAvailableSpace(size, chunkIdx) { + var chunk = this._chunks[chunkIdx]; + var isFound = false; + var start = chunk.start; + if (start + size <= chunk.size) { + isFound = true; + } else { + start = 0; + var handles = this._handles.filter(function (h) { + return h.chunkIdx === chunkIdx; + }).sort(function (a, b) { + return a.start - b.start; + }); + for (var i = 0; i < handles.length; i++) { + var handle = handles[i]; + if (start + size <= handle.start) { + isFound = true; + break; + } + start = handle.end; + } + if (!isFound && start + size <= chunk.size) { + isFound = true; + } + } + return isFound ? start : -1; + }; + _proto._McDonaldAlloc = function _McDonaldAlloc(size) { + size = roundUp(size, this._alignment); + for (var i = 0; i < this._chunkCount; ++i) { + var chunk = this._chunks[i]; + var isFound = false; + var start = chunk.start; + if (start + size <= chunk.end) { + isFound = true; + } else if (start > chunk.end) { + if (start + size <= chunk.size) { + isFound = true; + } else if (size <= chunk.end) { + chunk.start = start = 0; + isFound = true; + } + } else if (start === chunk.end) { + chunk.start = start = 0; + chunk.end = chunk.size; + if (size <= chunk.end) { + isFound = true; + } + } + if (isFound) { + chunk.start += size; + var handle = { + chunkIdx: i, + start: start, + end: start + size, + texture: chunk.texture + }; + this._handles.push(handle); + return handle; + } + } + var targetSize = Math.sqrt(size / this._formatSize); + var texLength = this._roundUpFn && this._roundUpFn(targetSize, this._formatSize) || Math.max(1024, nearestPOT(targetSize)); + var newChunk = this._chunks[this.createChunk(texLength)]; + newChunk.start += size; + var texHandle = { + chunkIdx: this._chunkCount, + start: 0, + end: size, + texture: newChunk.texture + }; + this._handles.push(texHandle); + return texHandle; + }; + return TextureBufferPool; + }(); + + var NativeBufferPool = function () { + function NativeBufferPool(dataType, entryBits, stride) { + this._arrayBuffers = []; + this._chunkSize = void 0; + this._chunkSize = stride * (1 << entryBits); + } + var _proto = NativeBufferPool.prototype; + _proto.allocateNewChunk = function allocateNewChunk() { + return new ArrayBuffer(this._chunkSize); + }; + return NativeBufferPool; + }(); + + var _Render2dViewDataType, _Render2dViewDataMemb, _NodeViewDataType, _NodeViewDataMembers, _PassViewDataType, _PassViewDataMembers, _AABBViewDataType, _AABBViewDataMembers; + var contains = function contains(a, t) { + for (var i = 0; i < a.length; ++i) { + if (a[i] === t) return true; + } + return false; + }; + var BufferDataType; + (function (BufferDataType) { + BufferDataType[BufferDataType["UINT32"] = 0] = "UINT32"; + BufferDataType[BufferDataType["FLOAT32"] = 1] = "FLOAT32"; + BufferDataType[BufferDataType["NEVER"] = 2] = "NEVER"; + })(BufferDataType || (BufferDataType = {})); + var BufferPool = function () { + function BufferPool(poolType, dataType, dataMembers, enumType, entryBits) { + if (entryBits === void 0) { + entryBits = 8; + } + this._dataType = void 0; + this._dataMembers = void 0; + this._elementCount = void 0; + this._entryBits = void 0; + this._stride = void 0; + this._entriesPerChunk = void 0; + this._entryMask = void 0; + this._chunkMask = void 0; + this._poolFlag = void 0; + this._arrayBuffers = []; + this._freeLists = []; + this._uint32BufferViews = []; + this._float32BufferViews = []; + this._hasUint32 = false; + this._hasFloat32 = false; + this._nativePool = void 0; + this._elementCount = enumType.COUNT; + this._entryBits = entryBits; + this._dataType = dataType; + this._dataMembers = dataMembers; + var bytesPerElement = 4; + this._stride = bytesPerElement * this._elementCount; + this._entriesPerChunk = 1 << entryBits; + this._entryMask = this._entriesPerChunk - 1; + this._poolFlag = 1 << 30; + this._chunkMask = ~(this._entryMask | this._poolFlag); + this._nativePool = new NativeBufferPool(poolType, entryBits, this._stride); + var type = BufferDataType.NEVER; + var hasFloat32 = false; + var hasUint32 = false; + for (var e in dataType) { + hasFloat32 = this._hasFloat32; + hasUint32 = this._hasUint32; + if (hasUint32 && hasFloat32) { + break; + } + type = dataType[e]; + if (!hasFloat32 && type === BufferDataType.FLOAT32) { + this._hasFloat32 = true; + } else if (!hasUint32 && type === BufferDataType.UINT32) { + this._hasUint32 = true; + } + } + } + var _proto = BufferPool.prototype; + _proto.alloc = function alloc() { + var i = 0; + for (; i < this._freeLists.length; i++) { + var list = this._freeLists[i]; + if (list.length) { + var j = list[list.length - 1]; + list.length--; + return (i << this._entryBits) + j + this._poolFlag; + } + } + var buffer = this._nativePool.allocateNewChunk(); + var float32BufferViews = []; + var uint32BufferViews = []; + var freeList = []; + var hasFloat32 = this._hasFloat32; + var hasUint32 = this._hasUint32; + for (var _j = 0; _j < this._entriesPerChunk; _j++) { + if (hasFloat32) { + float32BufferViews.push(new Float32Array(buffer, this._stride * _j, this._elementCount)); + } + if (hasUint32) { + uint32BufferViews.push(new Uint32Array(buffer, this._stride * _j, this._elementCount)); + } + if (_j) { + freeList.push(_j); + } + } + if (hasUint32) { + this._uint32BufferViews.push(uint32BufferViews); + } + if (hasFloat32) { + this._float32BufferViews.push(float32BufferViews); + } + this._freeLists.push(freeList); + this._arrayBuffers.push(buffer); + var handle = (i << this._entryBits) + this._poolFlag; + return handle; + }; + _proto.getBuffer = function getBuffer(handle) { + var chunk = (this._chunkMask & handle) >> this._entryBits; + var entry = this._entryMask & handle; + var bufferViews = this._hasFloat32 ? this._float32BufferViews : this._uint32BufferViews; + if ((!handle || chunk < 0 || chunk >= bufferViews.length || entry < 0 || entry >= this._entriesPerChunk || contains(this._freeLists[chunk], entry))) { + console.warn('invalid buffer pool handle'); + return []; + } + return bufferViews[chunk][entry]; + }; + _proto.getTypedArray = function getTypedArray(handle, element) { + var chunk = (this._chunkMask & handle) >> this._entryBits; + var entry = this._entryMask & handle; + var bufferViews = this._dataType[element] === BufferDataType.UINT32 ? this._uint32BufferViews : this._float32BufferViews; + if ((!handle || chunk < 0 || chunk >= bufferViews.length || entry < 0 || entry >= this._entriesPerChunk || contains(this._freeLists[chunk], entry))) { + console.warn('invalid buffer pool handle'); + return []; + } + var index = element; + var view = bufferViews[chunk][entry]; + var count = this._dataMembers[element]; + return view.subarray(index, index + count); + }; + _proto.free = function free(handle) { + var chunk = (this._chunkMask & handle) >> this._entryBits; + var entry = this._entryMask & handle; + if ((!handle || chunk < 0 || chunk >= this._freeLists.length || entry < 0 || entry >= this._entriesPerChunk || contains(this._freeLists[chunk], entry))) { + console.warn('invalid buffer pool handle'); + return; + } + var bufferViews = this._hasUint32 ? this._uint32BufferViews : this._float32BufferViews; + bufferViews[chunk][entry].fill(0); + this._freeLists[chunk].push(entry); + }; + return BufferPool; + }(); + var PoolType; + (function (PoolType) { + PoolType[PoolType["NODE"] = 0] = "NODE"; + PoolType[PoolType["PASS"] = 1] = "PASS"; + PoolType[PoolType["AABB"] = 2] = "AABB"; + PoolType[PoolType["RENDER2D"] = 3] = "RENDER2D"; + })(PoolType || (PoolType = {})); + var NULL_HANDLE = 0; + var Render2dView; + (function (Render2dView) { + Render2dView[Render2dView["POSITION"] = 0] = "POSITION"; + Render2dView[Render2dView["UV"] = 3] = "UV"; + Render2dView[Render2dView["COLOR"] = 5] = "COLOR"; + Render2dView[Render2dView["COUNT"] = 9] = "COUNT"; + })(Render2dView || (Render2dView = {})); + var Render2dViewDataType = (_Render2dViewDataType = {}, _Render2dViewDataType[Render2dView.POSITION] = BufferDataType.FLOAT32, _Render2dViewDataType[Render2dView.UV] = BufferDataType.FLOAT32, _Render2dViewDataType[Render2dView.COLOR] = BufferDataType.UINT32, _Render2dViewDataType[Render2dView.COUNT] = BufferDataType.NEVER, _Render2dViewDataType); + var Render2dViewDataMembers = (_Render2dViewDataMemb = {}, _Render2dViewDataMemb[Render2dView.POSITION] = Render2dView.UV - Render2dView.POSITION, _Render2dViewDataMemb[Render2dView.UV] = Render2dView.COLOR - Render2dView.UV, _Render2dViewDataMemb[Render2dView.COLOR] = Render2dView.COUNT - Render2dView.COLOR, _Render2dViewDataMemb[Render2dView.COUNT] = 1, _Render2dViewDataMemb); + var Render2dPool = new BufferPool(PoolType.RENDER2D, Render2dViewDataType, Render2dViewDataMembers, Render2dView); + var NodeView; + (function (NodeView) { + NodeView[NodeView["DIRTY_FLAG"] = 0] = "DIRTY_FLAG"; + NodeView[NodeView["LAYER"] = 1] = "LAYER"; + NodeView[NodeView["WORLD_SCALE"] = 2] = "WORLD_SCALE"; + NodeView[NodeView["WORLD_POSITION"] = 5] = "WORLD_POSITION"; + NodeView[NodeView["WORLD_ROTATION"] = 8] = "WORLD_ROTATION"; + NodeView[NodeView["WORLD_MATRIX"] = 12] = "WORLD_MATRIX"; + NodeView[NodeView["LOCAL_SCALE"] = 28] = "LOCAL_SCALE"; + NodeView[NodeView["LOCAL_POSITION"] = 31] = "LOCAL_POSITION"; + NodeView[NodeView["LOCAL_ROTATION"] = 34] = "LOCAL_ROTATION"; + NodeView[NodeView["COUNT"] = 38] = "COUNT"; + })(NodeView || (NodeView = {})); + var NodeViewDataType = (_NodeViewDataType = {}, _NodeViewDataType[NodeView.DIRTY_FLAG] = BufferDataType.UINT32, _NodeViewDataType[NodeView.LAYER] = BufferDataType.UINT32, _NodeViewDataType[NodeView.WORLD_SCALE] = BufferDataType.FLOAT32, _NodeViewDataType[NodeView.WORLD_POSITION] = BufferDataType.FLOAT32, _NodeViewDataType[NodeView.WORLD_ROTATION] = BufferDataType.FLOAT32, _NodeViewDataType[NodeView.WORLD_MATRIX] = BufferDataType.FLOAT32, _NodeViewDataType[NodeView.LOCAL_SCALE] = BufferDataType.FLOAT32, _NodeViewDataType[NodeView.LOCAL_POSITION] = BufferDataType.FLOAT32, _NodeViewDataType[NodeView.LOCAL_ROTATION] = BufferDataType.FLOAT32, _NodeViewDataType[NodeView.COUNT] = BufferDataType.NEVER, _NodeViewDataType); + var NodeViewDataMembers = (_NodeViewDataMembers = {}, _NodeViewDataMembers[NodeView.DIRTY_FLAG] = NodeView.LAYER - NodeView.DIRTY_FLAG, _NodeViewDataMembers[NodeView.LAYER] = NodeView.WORLD_SCALE - NodeView.LAYER, _NodeViewDataMembers[NodeView.WORLD_SCALE] = NodeView.WORLD_POSITION - NodeView.WORLD_SCALE, _NodeViewDataMembers[NodeView.WORLD_POSITION] = NodeView.WORLD_ROTATION - NodeView.WORLD_POSITION, _NodeViewDataMembers[NodeView.WORLD_ROTATION] = NodeView.WORLD_MATRIX - NodeView.WORLD_ROTATION, _NodeViewDataMembers[NodeView.WORLD_MATRIX] = NodeView.LOCAL_SCALE - NodeView.WORLD_MATRIX, _NodeViewDataMembers[NodeView.LOCAL_SCALE] = NodeView.LOCAL_POSITION - NodeView.LOCAL_SCALE, _NodeViewDataMembers[NodeView.LOCAL_POSITION] = NodeView.LOCAL_ROTATION - NodeView.LOCAL_POSITION, _NodeViewDataMembers[NodeView.LOCAL_ROTATION] = NodeView.COUNT - NodeView.LOCAL_ROTATION, _NodeViewDataMembers[NodeView.COUNT] = 1, _NodeViewDataMembers); + var NodePool$1 = new BufferPool(PoolType.NODE, NodeViewDataType, NodeViewDataMembers, NodeView); + var PassView; + (function (PassView) { + PassView[PassView["PRIORITY"] = 0] = "PRIORITY"; + PassView[PassView["STAGE"] = 1] = "STAGE"; + PassView[PassView["PHASE"] = 2] = "PHASE"; + PassView[PassView["PRIMITIVE"] = 3] = "PRIMITIVE"; + PassView[PassView["BATCHING_SCHEME"] = 4] = "BATCHING_SCHEME"; + PassView[PassView["DYNAMIC_STATE"] = 5] = "DYNAMIC_STATE"; + PassView[PassView["HASH"] = 6] = "HASH"; + PassView[PassView["COUNT"] = 7] = "COUNT"; + })(PassView || (PassView = {})); + var PassViewDataType = (_PassViewDataType = {}, _PassViewDataType[PassView.PRIORITY] = BufferDataType.UINT32, _PassViewDataType[PassView.STAGE] = BufferDataType.UINT32, _PassViewDataType[PassView.PHASE] = BufferDataType.UINT32, _PassViewDataType[PassView.PRIMITIVE] = BufferDataType.UINT32, _PassViewDataType[PassView.BATCHING_SCHEME] = BufferDataType.UINT32, _PassViewDataType[PassView.DYNAMIC_STATE] = BufferDataType.UINT32, _PassViewDataType[PassView.HASH] = BufferDataType.UINT32, _PassViewDataType[PassView.COUNT] = BufferDataType.NEVER, _PassViewDataType); + var PassViewDataMembers = (_PassViewDataMembers = {}, _PassViewDataMembers[PassView.PRIORITY] = PassView.STAGE - PassView.PRIORITY, _PassViewDataMembers[PassView.STAGE] = PassView.PHASE - PassView.STAGE, _PassViewDataMembers[PassView.PHASE] = PassView.PRIMITIVE - PassView.PHASE, _PassViewDataMembers[PassView.PRIMITIVE] = PassView.BATCHING_SCHEME - PassView.PRIMITIVE, _PassViewDataMembers[PassView.BATCHING_SCHEME] = PassView.DYNAMIC_STATE - PassView.BATCHING_SCHEME, _PassViewDataMembers[PassView.DYNAMIC_STATE] = PassView.HASH - PassView.DYNAMIC_STATE, _PassViewDataMembers[PassView.HASH] = PassView.COUNT - PassView.HASH, _PassViewDataMembers[PassView.COUNT] = 1, _PassViewDataMembers); + var PassPool = new BufferPool(PoolType.PASS, PassViewDataType, PassViewDataMembers, PassView); + var AABBView; + (function (AABBView) { + AABBView[AABBView["CENTER"] = 0] = "CENTER"; + AABBView[AABBView["HALFEXTENTS"] = 3] = "HALFEXTENTS"; + AABBView[AABBView["COUNT"] = 6] = "COUNT"; + })(AABBView || (AABBView = {})); + var AABBViewDataType = (_AABBViewDataType = {}, _AABBViewDataType[AABBView.CENTER] = BufferDataType.FLOAT32, _AABBViewDataType[AABBView.HALFEXTENTS] = BufferDataType.FLOAT32, _AABBViewDataType[AABBView.COUNT] = BufferDataType.NEVER, _AABBViewDataType); + var AABBViewDataMembers = (_AABBViewDataMembers = {}, _AABBViewDataMembers[AABBView.CENTER] = AABBView.HALFEXTENTS - AABBView.CENTER, _AABBViewDataMembers[AABBView.HALFEXTENTS] = AABBView.COUNT - AABBView.HALFEXTENTS, _AABBViewDataMembers[AABBView.COUNT] = 1, _AABBViewDataMembers); + var AABBPool = new BufferPool(PoolType.AABB, AABBViewDataType, AABBViewDataMembers, AABBView); + + removeProperty(RenderScene.prototype, 'RenderScene.prototype', [{ + name: 'raycastUI2DNode' + }, { + name: 'raycastUINode' + }]); + removeProperty(RenderScene.prototype, 'RenderScene.prototype', [{ + name: 'raycastAll', + suggest: 'using intersect.rayModel in geometry' + }, { + name: 'raycastAllModels', + suggest: 'using intersect.rayModel in geometry' + }, { + name: 'raycastSingleModel', + suggest: 'using intersect.rayModel in geometry' + }, { + name: 'raycastAllCanvas', + suggest: 'using intersect.rayAABB in geometry' + }, { + name: 'rayResultCanvas' + }, { + name: 'rayResultModels' + }, { + name: 'rayResultAll' + }, { + name: 'rayResultSingleModel' + }]); + removeProperty(Model.prototype, 'Model.prototype', [{ + name: 'isInstancingEnabled' + }, { + name: 'instancedAttributes' + }]); + var CameraVisFlags = {}; + removeProperty(CameraVisFlags, 'CameraVisFlags', [{ + name: 'GENERAL' + }]); + replaceProperty(CameraVisFlags, 'CameraVisFlags', [{ + name: 'PROFILER', + newName: 'PROFILER', + target: Layers.BitMask, + targetName: 'PROFILER' + }, { + name: 'GIZMOS', + newName: 'GIZMOS', + target: Layers.BitMask, + targetName: 'GIZMOS' + }, { + name: 'EDITOR', + newName: 'EDITOR', + target: Layers.BitMask, + targetName: 'EDITOR' + }, { + name: 'UI', + newName: 'UI', + target: Layers.BitMask, + targetName: 'UI_3D' + }, { + name: 'UI2D', + newName: 'UI2D', + target: Layers.BitMask, + targetName: 'UI_2D' + }]); + legacyCC.CameraVisFlags = CameraVisFlags; + var VisibilityFlags = {}; + removeProperty(VisibilityFlags, 'VisibilityFlags', [{ + name: 'GENERAL' + }]); + replaceProperty(VisibilityFlags, 'VisibilityFlags', [{ + name: 'ALWALS', + newName: 'ALWALS', + target: Layers.Enum, + targetName: 'ALWALS' + }, { + name: 'PROFILER', + newName: 'PROFILER', + target: Layers.Enum, + targetName: 'PROFILER' + }, { + name: 'GIZMOS', + newName: 'GIZMOS', + target: Layers.Enum, + targetName: 'GIZMOS' + }, { + name: 'EDITOR', + newName: 'EDITOR', + target: Layers.Enum, + targetName: 'EDITOR' + }, { + name: 'UI', + newName: 'UI', + target: Layers.Enum, + targetName: 'UI_3D' + }, { + name: 'UI2D', + newName: 'UI2D', + target: Layers.Enum, + targetName: 'UI_2D' + }]); + legacyCC.VisibilityFlags = VisibilityFlags; + replaceProperty(Pass.prototype, 'Pass.prototype', [{ + name: 'getBindingTypeFromHandle', + newName: 'getDescriptorTypeFromHandle' + }]); + removeProperty(Camera$1.prototype, 'Camera.prototype', [{ + name: 'getSplitFrustum' + }, { + name: 'setMatView' + }, { + name: 'setMatViewInv' + }, { + name: 'setMatProjInv' + }, { + name: 'setMatViewProjInv' + }, { + name: 'setMatProj' + }, { + name: 'setMatViewProj' + }, { + name: 'getMatViewInv' + }]); + removeProperty(Shadows.prototype, 'Shadows.prototype', [{ + name: 'aspect' + }, { + name: 'selfShadow' + }, { + name: 'linear' + }, { + name: 'packing' + }, { + name: 'autoAdapt' + }, { + name: 'fixedArea' + }, { + name: 'pcf' + }, { + name: 'bias' + }, { + name: 'normalBias' + }, { + name: 'near' + }, { + name: 'far' + }, { + name: 'shadowDistance' + }, { + name: 'invisibleOcclusionRange' + }, { + name: 'orthoSize' + }, { + name: 'saturation' + }]); + removeProperty(SpotLight.prototype, 'SpotLight.prototype', [{ + name: 'aspect' + }]); + replaceProperty(SubModel.prototype, 'SubModel.prototype', [{ + name: 'subMeshData', + newName: 'subMesh' + }]); + removeProperty(SubModel.prototype, 'SubModel.prototype', [{ + name: 'getSubModel', + suggest: 'Use `subModels[i]` instead' + }, { + name: 'subModelNum', + suggest: 'Use `subModels.length` instead' + }]); + + var addStage = config.addStage; + + var renderer = /*#__PURE__*/Object.freeze({ + __proto__: null, + addStage: addStage, + scene: index$2, + createIA: createIA, + programLib: programLib, + getDeviceShaderVersion: getDeviceShaderVersion, + get RenderQueue () { return RenderQueue; }, + get PassStage () { return PassStage; }, + genHandle: genHandle, + getTypeFromHandle: getTypeFromHandle, + getBindingFromHandle: getBindingFromHandle, + getCountFromHandle: getCountFromHandle, + getOffsetFromHandle: getOffsetFromHandle, + customizeType: customizeType, + type2reader: type2reader, + type2writer: type2writer, + type2validator: type2validator, + getDefaultFromType: getDefaultFromType, + getStringFromType: getStringFromType, + overrideMacros: overrideMacros, + get BatchingSchemes () { return BatchingSchemes; }, + Pass: Pass, + nearestPOT: nearestPOT, + TextureBufferPool: TextureBufferPool, + MaterialInstance: MaterialInstance, + PassInstance: PassInstance, + get PoolType () { return PoolType; }, + NULL_HANDLE: NULL_HANDLE, + get Render2dView () { return Render2dView; }, + Render2dPool: Render2dPool, + get NodeView () { return NodeView; }, + NodePool: NodePool$1, + get PassView () { return PassView; }, + PassPool: PassPool, + get AABBView () { return AABBView; }, + AABBPool: AABBPool, + RenderScene: RenderScene, + CameraVisFlags: CameraVisFlags, + VisibilityFlags: VisibilityFlags + }); + exports('aj', renderer); + + var LineCap; + (function (LineCap) { + LineCap[LineCap["BUTT"] = 0] = "BUTT"; + LineCap[LineCap["ROUND"] = 1] = "ROUND"; + LineCap[LineCap["SQUARE"] = 2] = "SQUARE"; + })(LineCap || (LineCap = {})); + ccenum(LineCap); + var LineJoin; + (function (LineJoin) { + LineJoin[LineJoin["BEVEL"] = 0] = "BEVEL"; + LineJoin[LineJoin["ROUND"] = 1] = "ROUND"; + LineJoin[LineJoin["MITER"] = 2] = "MITER"; + })(LineJoin || (LineJoin = {})); + ccenum(LineJoin); + var PointFlags; + (function (PointFlags) { + PointFlags[PointFlags["PT_CORNER"] = 1] = "PT_CORNER"; + PointFlags[PointFlags["PT_LEFT"] = 2] = "PT_LEFT"; + PointFlags[PointFlags["PT_BEVEL"] = 4] = "PT_BEVEL"; + PointFlags[PointFlags["PT_INNERBEVEL"] = 8] = "PT_INNERBEVEL"; + })(PointFlags || (PointFlags = {})); + ccenum(PointFlags); + + var PI$1 = Math.PI; + var min$1 = Math.min; + var max$1 = Math.max; + var cos$1 = Math.cos; + var sin$1 = Math.sin; + var abs = Math.abs; + var sign = Math.sign; + var KAPPA90 = 0.5522847493; + function arc(ctx, cx, cy, r, startAngle, endAngle, counterclockwise) { + counterclockwise = counterclockwise || false; + var a = 0; + var da = 0; + var hda = 0; + var kappa = 0; + var dx = 0; + var dy = 0; + var x = 0; + var y = 0; + var tanx = 0; + var tany = 0; + var px = 0; + var py = 0; + var ptanx = 0; + var ptany = 0; + var i = 0; + var ndivs = 0; + da = endAngle - startAngle; + if (counterclockwise) { + if (abs(da) >= PI$1 * 2) { + da = PI$1 * 2; + } else { + while (da < 0) { + da += PI$1 * 2; + } + } + } else if (abs(da) >= PI$1 * 2) { + da = -PI$1 * 2; + } else { + while (da > 0) { + da -= PI$1 * 2; + } + } + ndivs = max$1(1, min$1(abs(da) / (PI$1 * 0.5) + 0.5, 5)) | 0; + hda = da / ndivs / 2.0; + kappa = abs(4.0 / 3.0 * (1 - cos$1(hda)) / sin$1(hda)); + if (!counterclockwise) { + kappa = -kappa; + } + for (i = 0; i <= ndivs; i++) { + a = startAngle + da * (i / ndivs); + dx = cos$1(a); + dy = sin$1(a); + x = cx + dx * r; + y = cy + dy * r; + tanx = -dy * r * kappa; + tany = dx * r * kappa; + if (i === 0) { + ctx.moveTo(x, y); + } else { + ctx.bezierCurveTo(px + ptanx, py + ptany, x - tanx, y - tany, x, y); + } + px = x; + py = y; + ptanx = tanx; + ptany = tany; + } + } + function ellipse(ctx, cx, cy, rx, ry) { + ctx.moveTo(cx - rx, cy); + ctx.bezierCurveTo(cx - rx, cy + ry * KAPPA90, cx - rx * KAPPA90, cy + ry, cx, cy + ry); + ctx.bezierCurveTo(cx + rx * KAPPA90, cy + ry, cx + rx, cy + ry * KAPPA90, cx + rx, cy); + ctx.bezierCurveTo(cx + rx, cy - ry * KAPPA90, cx + rx * KAPPA90, cy - ry, cx, cy - ry); + ctx.bezierCurveTo(cx - rx * KAPPA90, cy - ry, cx - rx, cy - ry * KAPPA90, cx - rx, cy); + ctx.close(); + } + function roundRect(ctx, x, y, w, h, r) { + if (r < 0.1) { + ctx.rect(x, y, w, h); + } else { + var rx = min$1(r, abs(w) * 0.5) * sign(w); + var ry = min$1(r, abs(h) * 0.5) * sign(h); + ctx.moveTo(x, y + ry); + ctx.lineTo(x, y + h - ry); + ctx.bezierCurveTo(x, y + h - ry * (1 - KAPPA90), x + rx * (1 - KAPPA90), y + h, x + rx, y + h); + ctx.lineTo(x + w - rx, y + h); + ctx.bezierCurveTo(x + w - rx * (1 - KAPPA90), y + h, x + w, y + h - ry * (1 - KAPPA90), x + w, y + h - ry); + ctx.lineTo(x + w, y + ry); + ctx.bezierCurveTo(x + w, y + ry * (1 - KAPPA90), x + w - rx * (1 - KAPPA90), y, x + w - rx, y); + ctx.lineTo(x + rx, y); + ctx.bezierCurveTo(x + rx * (1 - KAPPA90), y, x, y + ry * (1 - KAPPA90), x, y + ry); + ctx.close(); + } + } + function tesselateBezier(ctx, x1, y1, x2, y2, x3, y3, x4, y4, level, type) { + var x12 = 0; + var y12 = 0; + var x23 = 0; + var y23 = 0; + var x34 = 0; + var y34 = 0; + var x123 = 0; + var y123 = 0; + var x234 = 0; + var y234 = 0; + var x1234 = 0; + var y1234 = 0; + var dx = 0; + var dy = 0; + var d2 = 0; + var d3 = 0; + if (level > 10) { + return; + } + x12 = (x1 + x2) * 0.5; + y12 = (y1 + y2) * 0.5; + x23 = (x2 + x3) * 0.5; + y23 = (y2 + y3) * 0.5; + x34 = (x3 + x4) * 0.5; + y34 = (y3 + y4) * 0.5; + x123 = (x12 + x23) * 0.5; + y123 = (y12 + y23) * 0.5; + dx = x4 - x1; + dy = y4 - y1; + d2 = abs((x2 - x4) * dy - (y2 - y4) * dx); + d3 = abs((x3 - x4) * dy - (y3 - y4) * dx); + if ((d2 + d3) * (d2 + d3) < ctx.tessTol * (dx * dx + dy * dy)) { + ctx.addPoint(x4, y4, type === 0 ? type | PointFlags.PT_BEVEL : type); + return; + } + x234 = (x23 + x34) * 0.5; + y234 = (y23 + y34) * 0.5; + x1234 = (x123 + x234) * 0.5; + y1234 = (y123 + y234) * 0.5; + tesselateBezier(ctx, x1, y1, x12, y12, x123, y123, x1234, y1234, level + 1, 0); + tesselateBezier(ctx, x1234, y1234, x234, y234, x34, y34, x4, y4, level + 1, type); + } + + var Point$2 = function (_Vec) { + _inheritsLoose(Point, _Vec); + function Point() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Vec.call.apply(_Vec, [this].concat(args)) || this; + _this.dx = 0; + _this.dy = 0; + _this.dmx = 0; + _this.dmy = 0; + _this.flags = 0; + _this.len = 0; + return _this; + } + var _proto = Point.prototype; + _proto.reset = function reset() { + this.dx = 0; + this.dy = 0; + this.dmx = 0; + this.dmy = 0; + this.flags = 0; + this.len = 0; + }; + return Point; + }(Vec2); + var Path = function () { + function Path() { + this.closed = false; + this.bevel = 0; + this.complex = true; + this.points = []; + } + var _proto2 = Path.prototype; + _proto2.reset = function reset() { + this.closed = false; + this.bevel = 0; + this.complex = true; + this.points.length = 0; + }; + return Path; + }(); + var Impl = function () { + function Impl(comp) { + this.dataOffset = 0; + this.updatePathOffset = false; + this.pathLength = 0; + this.pathOffset = 0; + this.paths = []; + this.tessTol = 0.25; + this.distTol = 0.01; + this.fillColor = Color$1.WHITE.clone(); + this.lineCap = LineCap.BUTT; + this.strokeColor = Color$1.BLACK.clone(); + this.lineJoin = LineJoin.MITER; + this.lineWidth = 0; + this.pointsOffset = 0; + this._commandX = 0; + this._commandY = 0; + this._points = []; + this._renderDataList = []; + this._curPath = null; + this._comp = void 0; + this._comp = comp; + } + var _proto3 = Impl.prototype; + _proto3.moveTo = function moveTo(x, y) { + if (this.updatePathOffset) { + this.pathOffset = this.pathLength; + this.updatePathOffset = false; + } + this._addPath(); + this.addPoint(x, y, PointFlags.PT_CORNER); + this._commandX = x; + this._commandY = y; + }; + _proto3.lineTo = function lineTo(x, y) { + this.addPoint(x, y, PointFlags.PT_CORNER); + this._commandX = x; + this._commandY = y; + }; + _proto3.bezierCurveTo = function bezierCurveTo(c1x, c1y, c2x, c2y, x, y) { + var path = this._curPath; + var last = path.points[path.points.length - 1]; + if (!last) { + return; + } + if (last.x === c1x && last.y === c1y && c2x === x && c2y === y) { + this.lineTo(x, y); + return; + } + tesselateBezier(this, last.x, last.y, c1x, c1y, c2x, c2y, x, y, 0, PointFlags.PT_CORNER); + this._commandX = x; + this._commandY = y; + }; + _proto3.quadraticCurveTo = function quadraticCurveTo(cx, cy, x, y) { + var x0 = this._commandX; + var y0 = this._commandY; + this.bezierCurveTo(x0 + 2.0 / 3.0 * (cx - x0), y0 + 2.0 / 3.0 * (cy - y0), x + 2.0 / 3.0 * (cx - x), y + 2.0 / 3.0 * (cy - y), x, y); + }; + _proto3.arc = function arc$1(cx, cy, r, startAngle, endAngle, counterclockwise) { + arc(this, cx, cy, r, startAngle, endAngle, counterclockwise); + }; + _proto3.ellipse = function ellipse$1(cx, cy, rx, ry) { + ellipse(this, cx, cy, rx, ry); + this._curPath.complex = false; + }; + _proto3.circle = function circle(cx, cy, r) { + ellipse(this, cx, cy, r, r); + this._curPath.complex = false; + }; + _proto3.rect = function rect(x, y, w, h) { + this.moveTo(x, y); + this.lineTo(x + w, y); + this.lineTo(x + w, y + h); + this.lineTo(x, y + h); + this.close(); + this._curPath.complex = false; + }; + _proto3.roundRect = function roundRect$1(x, y, w, h, r) { + roundRect(this, x, y, w, h, r); + this._curPath.complex = false; + }; + _proto3.clear = function clear() { + this.pathLength = 0; + this.pathOffset = 0; + this.pointsOffset = 0; + this.dataOffset = 0; + this._curPath = null; + this.paths.length = 0; + this._points.length = 0; + var dataList = this._renderDataList; + for (var i = 0, l = dataList.length; i < l; i++) { + var data = dataList[i]; + if (!data) { + continue; + } + MeshRenderData.remove(data); + data.removeRenderDrawInfo(this._comp); + } + this._renderDataList.length = 0; + }; + _proto3.close = function close() { + this._curPath.closed = true; + }; + _proto3.requestRenderData = function requestRenderData() { + var renderData = MeshRenderData.add(); + this._renderDataList.push(renderData); + return renderData; + }; + _proto3.getRenderDataList = function getRenderDataList() { + if (this._renderDataList.length === 0) { + this.requestRenderData(); + } + return this._renderDataList; + }; + _proto3.addPoint = function addPoint(x, y, flags) { + var path = this._curPath; + if (!path) { + return; + } + var points = this._points; + var pathPoints = path.points; + var offset = this.pointsOffset++; + var pt = points[offset]; + if (!pt) { + pt = new Point$2(x, y); + points.push(pt); + } else { + pt.x = x; + pt.y = y; + } + pt.flags = flags; + pathPoints.push(pt); + }; + _proto3._addPath = function _addPath() { + var offset = this.pathLength; + var path = this.paths[offset]; + if (!path) { + path = new Path(); + this.paths.push(path); + } else { + path.reset(); + } + this.pathLength++; + this._curPath = path; + return path; + }; + return Impl; + }(); + + var _dec$1t, _dec2$15, _dec3$Q, _dec4$y, _class$1t, _class2$1h, _initializer$1a, _initializer2$Z, _initializer3$J, _initializer4$D, _initializer5$v, _initializer6$r, _class3$t; + var attributes = vfmtPosColor.concat([new Attribute('a_dist', Format.R32F)]); + var componentPerVertex = getComponentPerVertex(attributes); + var stride = getAttributeStride(attributes); + var Graphics = exports('G', (_dec$1t = ccclass$t('cc.Graphics'), _dec2$15 = executionOrder$1(110), _dec3$Q = type$8(LineJoin), _dec4$y = type$8(LineCap), _dec$1t(_class$1t = _dec2$15(_class$1t = (_class2$1h = (_class3$t = function (_UIRenderer) { + _inheritsLoose(Graphics, _UIRenderer); + function Graphics() { + var _this; + _this = _UIRenderer.call(this) || this; + _this.impl = null; + _this.model = null; + _this._lineWidth = _initializer$1a && _initializer$1a(); + _this._strokeColor = _initializer2$Z && _initializer2$Z(); + _this._lineJoin = _initializer3$J && _initializer3$J(); + _this._lineCap = _initializer4$D && _initializer4$D(); + _this._fillColor = _initializer5$v && _initializer5$v(); + _this._miterLimit = _initializer6$r && _initializer6$r(); + _this._isDrawing = false; + _this._isNeedUploadData = true; + _this._graphicsUseSubMeshes = []; + _this._instanceMaterialType = InstanceMaterialType.ADD_COLOR; + _this.impl = new Impl(_assertThisInitialized(_this)); + return _this; + } + var _proto = Graphics.prototype; + _proto.onRestore = function onRestore() { + if (!this.impl) { + this._flushAssembler(); + } + }; + _proto.onLoad = function onLoad() { + _UIRenderer.prototype.onLoad.call(this); + { + this.model = director.root.createModel(Model); + this.model.node = this.model.transform = this.node; + } + this._flushAssembler(); + }; + _proto.onEnable = function onEnable() { + _UIRenderer.prototype.onEnable.call(this); + this._updateMtlForGraphics(); + }; + _proto.onDestroy = function onDestroy() { + this._sceneGetter = null; + { + if (this.model) { + director.root.destroyModel(this.model); + this.model = null; + } + var subMeshLength = this._graphicsUseSubMeshes.length; + if (subMeshLength > 0) { + for (var i = 0; i < subMeshLength; ++i) { + this._graphicsUseSubMeshes[i].destroy(); + } + this._graphicsUseSubMeshes.length = 0; + } + } + if (this.impl) { + this._isDrawing = false; + this.impl.clear(); + this.impl = null; + } + _UIRenderer.prototype.onDestroy.call(this); + }; + _proto.moveTo = function moveTo(x, y) { + if (!this.impl) { + return; + } + this.impl.moveTo(x, y); + }; + _proto.lineTo = function lineTo(x, y) { + if (!this.impl) { + return; + } + this.impl.lineTo(x, y); + }; + _proto.bezierCurveTo = function bezierCurveTo(c1x, c1y, c2x, c2y, x, y) { + if (!this.impl) { + return; + } + this.impl.bezierCurveTo(c1x, c1y, c2x, c2y, x, y); + }; + _proto.quadraticCurveTo = function quadraticCurveTo(cx, cy, x, y) { + if (!this.impl) { + return; + } + this.impl.quadraticCurveTo(cx, cy, x, y); + }; + _proto.arc = function arc(cx, cy, r, startAngle, endAngle, counterclockwise) { + if (!this.impl) { + return; + } + this.impl.arc(cx, cy, r, startAngle, endAngle, counterclockwise); + }; + _proto.ellipse = function ellipse(cx, cy, rx, ry) { + if (!this.impl) { + return; + } + this.impl.ellipse(cx, cy, rx, ry); + }; + _proto.circle = function circle(cx, cy, r) { + if (!this.impl) { + return; + } + this.impl.circle(cx, cy, r); + }; + _proto.rect = function rect(x, y, w, h) { + if (!this.impl) { + return; + } + this.impl.rect(x, y, w, h); + }; + _proto.roundRect = function roundRect(x, y, w, h, r) { + if (!this.impl) { + return; + } + this.impl.roundRect(x, y, w, h, r); + }; + _proto.fillRect = function fillRect(x, y, w, h) { + this.rect(x, y, w, h); + this.fill(); + }; + _proto.clear = function clear() { + if (!this.impl) { + return; + } + this.impl.clear(); + this._isDrawing = false; + if (this.model) { + for (var i = 0; i < this.model.subModels.length; i++) { + var subModel = this.model.subModels[i]; + subModel.inputAssembler.indexCount = 0; + } + } + this.markForUpdateRenderData(); + }; + _proto.close = function close() { + if (!this.impl) { + return; + } + this.impl.close(); + }; + _proto.stroke = function stroke() { + if (!this._assembler) { + this._flushAssembler(); + } + this._isDrawing = true; + this._isNeedUploadData = true; + this._assembler.stroke(this); + }; + _proto.fill = function fill() { + if (!this._assembler) { + this._flushAssembler(); + } + this._isDrawing = true; + this._isNeedUploadData = true; + this._assembler.fill(this); + }; + _proto._updateMtlForGraphics = function _updateMtlForGraphics() { + var mat; + if (this._customMaterial) { + mat = this.getMaterialInstance(0); + } else { + mat = builtinResMgr.get('ui-graphics-material'); + this.setSharedMaterial(mat, 0); + mat = this.getMaterialInstance(0); + mat.recompileShaders({ + USE_LOCAL: true + }); + } + }; + _proto.activeSubModel = function activeSubModel(idx) { + if (!this.model) { + warnID(4500, this.node.name); + return; + } + if (this.model.subModels.length <= idx) { + var gfxDevice = deviceManager.gfxDevice; + var vertexBuffer = gfxDevice.createBuffer(new BufferInfo(BufferUsageBit.VERTEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, 65535 * stride, stride)); + var indexBuffer = gfxDevice.createBuffer(new BufferInfo(BufferUsageBit.INDEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, 65535 * Uint16Array.BYTES_PER_ELEMENT * 2, Uint16Array.BYTES_PER_ELEMENT)); + var renderMesh = new RenderingSubMesh([vertexBuffer], attributes, PrimitiveMode.TRIANGLE_LIST, indexBuffer); + renderMesh.subMeshIdx = 0; + this.model.initSubModel(idx, renderMesh, this.getMaterialInstance(0)); + this._graphicsUseSubMeshes.push(renderMesh); + } + }; + _proto._uploadData = function _uploadData() { + var impl = this.impl; + if (!impl) { + return; + } + var renderDataList = impl && impl.getRenderDataList(); + if (renderDataList.length <= 0 || !this.model) { + return; + } + var subModelList = this.model.subModels; + for (var i = 0; i < renderDataList.length; i++) { + var renderData = renderDataList[i]; + var ia = subModelList[i].inputAssembler; + if (renderData.lastFilledVertex === renderData.vertexStart) { + continue; + } + var vb = new Float32Array(renderData.vData.buffer, 0, renderData.vertexStart * componentPerVertex); + ia.vertexBuffers[0].update(vb); + ia.vertexCount = renderData.vertexStart; + var ib = new Uint16Array(renderData.iData.buffer, 0, renderData.indexStart); + ia.indexBuffer.update(ib); + ia.indexCount = renderData.indexStart; + renderData.lastFilledVertex = renderData.vertexStart; + renderData.lastFilledIndex = renderData.indexStart; + } + this._isNeedUploadData = false; + }; + _proto._render = function _render(render) { + if (this._isNeedUploadData) { + if (this.impl) { + var renderDataList = this.impl.getRenderDataList(); + var len = this.model.subModels.length; + if (renderDataList.length > len) { + for (var i = len; i < renderDataList.length; i++) { + this.activeSubModel(i); + } + } + } + this._uploadData(); + } + render.commitModel(this, this.model, this.getMaterialInstance(0)); + }; + _proto._flushAssembler = function _flushAssembler() { + var assembler = Graphics.Assembler.getAssembler(this); + if (this._assembler !== assembler) { + this._assembler = assembler; + } + }; + _proto._canRender = function _canRender() { + if (!_UIRenderer.prototype._canRender.call(this)) { + return false; + } + { + return !!this.model && this._isDrawing; + } + }; + _proto.updateRenderer = function updateRenderer() { + _UIRenderer.prototype.updateRenderer.call(this); + }; + _proto.createRenderEntity = function createRenderEntity() { + return new RenderEntity(RenderEntityType.DYNAMIC); + }; + _createClass(Graphics, [{ + key: "lineWidth", + get: function get() { + return this._lineWidth; + }, + set: function set(value) { + this._lineWidth = value; + if (!this.impl) { + return; + } + this.impl.lineWidth = value; + } + }, { + key: "lineJoin", + get: function get() { + return this._lineJoin; + }, + set: function set(value) { + this._lineJoin = value; + if (!this.impl) { + return; + } + this.impl.lineJoin = value; + } + }, { + key: "lineCap", + get: function get() { + return this._lineCap; + }, + set: function set(value) { + this._lineCap = value; + if (!this.impl) { + return; + } + this.impl.lineCap = value; + } + }, { + key: "strokeColor", + get: function get() { + return this._strokeColor; + }, + set: function set(value) { + if (!this.impl) { + return; + } + this._strokeColor.set(value); + this.impl.strokeColor = this._strokeColor; + } + }, { + key: "fillColor", + get: function get() { + return this._fillColor; + }, + set: function set(value) { + if (!this.impl) { + return; + } + this._fillColor.set(value); + this.impl.fillColor = this._fillColor; + } + }, { + key: "miterLimit", + get: function get() { + return this._miterLimit; + }, + set: function set(value) { + this._miterLimit = value; + } + }, { + key: "color", + get: function get() { + return this._color; + }, + set: function set(value) { + if (this._color === value) { + return; + } + this._color.set(value); + } + }, { + key: "graphicsNativeProxy", + get: function get() { + return this._graphicsNativeProxy; + } + }]); + return Graphics; + }(UIRenderer), _class3$t.LineJoin = LineJoin, _class3$t.LineCap = LineCap, _class3$t), (_applyDecoratedDescriptor(_class2$1h.prototype, "lineJoin", [_dec3$Q], Object.getOwnPropertyDescriptor(_class2$1h.prototype, "lineJoin"), _class2$1h.prototype), _applyDecoratedDescriptor(_class2$1h.prototype, "lineCap", [_dec4$y], Object.getOwnPropertyDescriptor(_class2$1h.prototype, "lineCap"), _class2$1h.prototype), _applyDecoratedDescriptor(_class2$1h.prototype, "color", [override$1], Object.getOwnPropertyDescriptor(_class2$1h.prototype, "color"), _class2$1h.prototype), _initializer$1a = applyDecoratedInitializer(_class2$1h.prototype, "_lineWidth", [serializable$9], function () { + return 1; + }), _initializer2$Z = applyDecoratedInitializer(_class2$1h.prototype, "_strokeColor", [serializable$9], function () { + return Color$1.BLACK.clone(); + }), _initializer3$J = applyDecoratedInitializer(_class2$1h.prototype, "_lineJoin", [serializable$9], function () { + return LineJoin.MITER; + }), _initializer4$D = applyDecoratedInitializer(_class2$1h.prototype, "_lineCap", [serializable$9], function () { + return LineCap.BUTT; + }), _initializer5$v = applyDecoratedInitializer(_class2$1h.prototype, "_fillColor", [serializable$9], function () { + return Color$1.WHITE.clone(); + }), _initializer6$r = applyDecoratedInitializer(_class2$1h.prototype, "_miterLimit", [serializable$9], function () { + return 10; + })), _class2$1h)) || _class$1t) || _class$1t)); + legacyCC.Graphics = Graphics; + + var _dec$1s, _dec2$14, _dec3$P, _dec4$x, _dec5$v, _dec6$m, _dec7$j, _class$1s, _class2$1g, _initializer$19, _initializer2$Y, _initializer3$I, _initializer4$C, _initializer5$u, _initializer6$q, _initializer7$j, _initializer8$i, _initializer9$g, _initializer10$g, _class3$s; + var SpriteType$1; + (function (SpriteType) { + SpriteType[SpriteType["SIMPLE"] = 0] = "SIMPLE"; + SpriteType[SpriteType["SLICED"] = 1] = "SLICED"; + SpriteType[SpriteType["TILED"] = 2] = "TILED"; + SpriteType[SpriteType["FILLED"] = 3] = "FILLED"; + })(SpriteType$1 || (SpriteType$1 = {})); + ccenum(SpriteType$1); + var FillType$2; + (function (FillType) { + FillType[FillType["HORIZONTAL"] = 0] = "HORIZONTAL"; + FillType[FillType["VERTICAL"] = 1] = "VERTICAL"; + FillType[FillType["RADIAL"] = 2] = "RADIAL"; + })(FillType$2 || (FillType$2 = {})); + ccenum(FillType$2); + var SizeMode$1; + (function (SizeMode) { + SizeMode[SizeMode["CUSTOM"] = 0] = "CUSTOM"; + SizeMode[SizeMode["TRIMMED"] = 1] = "TRIMMED"; + SizeMode[SizeMode["RAW"] = 2] = "RAW"; + })(SizeMode$1 || (SizeMode$1 = {})); + ccenum(SizeMode$1); + var EventType$9; + (function (EventType) { + EventType["SPRITE_FRAME_CHANGED"] = "spriteframe-changed"; + })(EventType$9 || (EventType$9 = {})); + var Sprite = exports('i', (_dec$1s = ccclass$t('cc.Sprite'), _dec2$14 = executionOrder$1(110), _dec3$P = type$8(SpriteAtlas), _dec4$x = type$8(SpriteFrame), _dec5$v = type$8(SpriteType$1), _dec6$m = type$8(FillType$2), _dec7$j = type$8(SizeMode$1), _dec$1s(_class$1s = _dec2$14(_class$1s = (_class2$1g = (_class3$s = function (_UIRenderer) { + _inheritsLoose(Sprite, _UIRenderer); + function Sprite() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _UIRenderer.call.apply(_UIRenderer, [this].concat(args)) || this; + _this._spriteFrame = _initializer$19 && _initializer$19(); + _this._type = _initializer2$Y && _initializer2$Y(); + _this._fillType = _initializer3$I && _initializer3$I(); + _this._sizeMode = _initializer4$C && _initializer4$C(); + _this._fillCenter = _initializer5$u && _initializer5$u(); + _this._fillStart = _initializer6$q && _initializer6$q(); + _this._fillRange = _initializer7$j && _initializer7$j(); + _this._isTrimmedMode = _initializer8$i && _initializer8$i(); + _this._useGrayscale = _initializer9$g && _initializer9$g(); + _this._atlas = _initializer10$g && _initializer10$g(); + return _this; + } + var _proto = Sprite.prototype; + _proto.__preload = function __preload() { + this.changeMaterialForDefine(); + _UIRenderer.prototype.__preload.call(this); + }; + _proto.onEnable = function onEnable() { + _UIRenderer.prototype.onEnable.call(this); + this._activateMaterial(); + var spriteFrame = this._spriteFrame; + if (spriteFrame) { + this._updateUVs(); + if (this._type === SpriteType$1.SLICED) { + spriteFrame.on(SpriteFrame.EVENT_UV_UPDATED, this._updateUVs, this); + } + } + }; + _proto.onDisable = function onDisable() { + _UIRenderer.prototype.onDisable.call(this); + if (this._spriteFrame && this._type === SpriteType$1.SLICED) { + this._spriteFrame.off(SpriteFrame.EVENT_UV_UPDATED, this._updateUVs, this); + } + }; + _proto.onDestroy = function onDestroy() { + _UIRenderer.prototype.onDestroy.call(this); + }; + _proto.changeSpriteFrameFromAtlas = function changeSpriteFrameFromAtlas(name) { + if (!this._atlas) { + console.warn('SpriteAtlas is null.'); + return; + } + var sprite = this._atlas.getSpriteFrame(name); + this.spriteFrame = sprite; + }; + _proto.changeMaterialForDefine = function changeMaterialForDefine() { + var texture; + var lastInstanceMaterialType = this._instanceMaterialType; + if (this._spriteFrame) { + texture = this._spriteFrame.texture; + } + var value = false; + if (texture instanceof TextureBase) { + var format = texture.getPixelFormat(); + value = format === PixelFormat.RGBA_ETC1 || format === PixelFormat.RGB_A_PVRTC_4BPPV1 || format === PixelFormat.RGB_A_PVRTC_2BPPV1; + } + if (value && this.grayscale) { + this._instanceMaterialType = InstanceMaterialType.USE_ALPHA_SEPARATED_AND_GRAY; + } else if (value) { + this._instanceMaterialType = InstanceMaterialType.USE_ALPHA_SEPARATED; + } else if (this.grayscale) { + this._instanceMaterialType = InstanceMaterialType.GRAYSCALE; + } else { + this._instanceMaterialType = InstanceMaterialType.ADD_COLOR_AND_TEXTURE; + } + if (lastInstanceMaterialType !== this._instanceMaterialType) { + this.updateMaterial(); + } + }; + _proto._updateBuiltinMaterial = function _updateBuiltinMaterial() { + var mat = _UIRenderer.prototype._updateBuiltinMaterial.call(this); + if (this.spriteFrame && this.spriteFrame.texture instanceof RenderTexture) { + var defines = _extends({ + SAMPLE_FROM_RT: true + }, mat.passes[0].defines); + var renderMat = new Material(); + renderMat.initialize({ + effectAsset: mat.effectAsset, + defines: defines + }); + mat = renderMat; + } + return mat; + }; + _proto._render = function _render(render) { + render.commitComp(this, this.renderData, this._spriteFrame, this._assembler, null); + }; + _proto._canRender = function _canRender() { + if (!_UIRenderer.prototype._canRender.call(this)) { + return false; + } + var spriteFrame = this._spriteFrame; + if (!spriteFrame || !spriteFrame.texture) { + return false; + } + return true; + }; + _proto._flushAssembler = function _flushAssembler() { + var assembler = Sprite.Assembler.getAssembler(this); + if (this._assembler !== assembler) { + this.destroyRenderData(); + this._assembler = assembler; + } + if (!this._renderData) { + if (this._assembler && this._assembler.createData) { + this._renderData = this._assembler.createData(this); + this._renderData.material = this.getRenderMaterial(0); + this.markForUpdateRenderData(); + if (this.spriteFrame) { + this._assembler.updateUVs(this); + } + this._updateColor(); + } + } + if (this._spriteFrame) { + if (this._type === SpriteType$1.SLICED) { + this._spriteFrame.on(SpriteFrame.EVENT_UV_UPDATED, this._updateUVs, this); + } else { + this._spriteFrame.off(SpriteFrame.EVENT_UV_UPDATED, this._updateUVs, this); + } + } + }; + _proto._applySpriteSize = function _applySpriteSize() { + if (this._spriteFrame) { + { + if (SizeMode$1.RAW === this._sizeMode) { + var size = this._spriteFrame.originalSize; + this.node._uiProps.uiTransformComp.setContentSize(size); + } else if (SizeMode$1.TRIMMED === this._sizeMode) { + var rect = this._spriteFrame.rect; + this.node._uiProps.uiTransformComp.setContentSize(rect.width, rect.height); + } + } + } + }; + _proto._resized = function _resized() { + { + return; + } + }; + _proto._activateMaterial = function _activateMaterial() { + var spriteFrame = this._spriteFrame; + var material = this.getRenderMaterial(0); + if (spriteFrame) { + if (material) { + this.markForUpdateRenderData(); + } + } + if (this.renderData) { + this.renderData.material = material; + } + }; + _proto._updateUVs = function _updateUVs() { + if (this._assembler) { + this._assembler.updateUVs(this); + } + }; + _proto._applySpriteFrame = function _applySpriteFrame(oldFrame) { + var spriteFrame = this._spriteFrame; + if (oldFrame && this._type === SpriteType$1.SLICED) { + oldFrame.off(SpriteFrame.EVENT_UV_UPDATED, this._updateUVs, this); + } + var textureChanged = false; + if (spriteFrame) { + if (!oldFrame || oldFrame.texture !== spriteFrame.texture) { + textureChanged = true; + } + if (textureChanged) { + if (this.renderData) this.renderData.textureDirty = true; + this.changeMaterialForDefine(); + } + this._applySpriteSize(); + if (this._type === SpriteType$1.SLICED) { + spriteFrame.on(SpriteFrame.EVENT_UV_UPDATED, this._updateUVs, this); + } + } + }; + _createClass(Sprite, [{ + key: "spriteAtlas", + get: function get() { + return this._atlas; + }, + set: function set(value) { + if (this._atlas === value) { + return; + } + this._atlas = value; + } + }, { + key: "spriteFrame", + get: function get() { + return this._spriteFrame; + }, + set: function set(value) { + if (this._spriteFrame === value) { + return; + } + var lastSprite = this._spriteFrame; + this._spriteFrame = value; + this.markForUpdateRenderData(); + this._applySpriteFrame(lastSprite); + } + }, { + key: "type", + get: function get() { + return this._type; + }, + set: function set(value) { + if (this._type !== value) { + this._type = value; + this._flushAssembler(); + } + } + }, { + key: "fillType", + get: function get() { + return this._fillType; + }, + set: function set(value) { + if (this._fillType !== value) { + if (value === FillType$2.RADIAL || this._fillType === FillType$2.RADIAL) { + this.destroyRenderData(); + } else if (this.renderData) { + this.markForUpdateRenderData(true); + } + } + this._fillType = value; + this._flushAssembler(); + } + }, { + key: "fillCenter", + get: function get() { + return this._fillCenter; + }, + set: function set(value) { + this._fillCenter.x = value.x; + this._fillCenter.y = value.y; + if (this._type === SpriteType$1.FILLED && this.renderData) { + this.markForUpdateRenderData(); + } + } + }, { + key: "fillStart", + get: function get() { + return this._fillStart; + }, + set: function set(value) { + this._fillStart = clamp$1(value, 0, 1); + if (this._type === SpriteType$1.FILLED && this.renderData) { + this.markForUpdateRenderData(); + this._updateUVs(); + } + } + }, { + key: "fillRange", + get: function get() { + return this._fillRange; + }, + set: function set(value) { + this._fillRange = clamp$1(value, -1, 1); + if (this._type === SpriteType$1.FILLED && this.renderData) { + this.markForUpdateRenderData(); + this._updateUVs(); + } + } + }, { + key: "trim", + get: function get() { + return this._isTrimmedMode; + }, + set: function set(value) { + if (this._isTrimmedMode === value) { + return; + } + this._isTrimmedMode = value; + if (this._type === SpriteType$1.SIMPLE && this.renderData) { + this.markForUpdateRenderData(true); + } + } + }, { + key: "grayscale", + get: function get() { + return this._useGrayscale; + }, + set: function set(value) { + if (this._useGrayscale === value) { + return; + } + this._useGrayscale = value; + this.changeMaterialForDefine(); + this.updateMaterial(); + } + }, { + key: "sizeMode", + get: function get() { + return this._sizeMode; + }, + set: function set(value) { + if (this._sizeMode === value) { + return; + } + this._sizeMode = value; + if (value !== SizeMode$1.CUSTOM) { + this._applySpriteSize(); + } + } + }]); + return Sprite; + }(UIRenderer), _class3$s.FillType = FillType$2, _class3$s.Type = SpriteType$1, _class3$s.SizeMode = SizeMode$1, _class3$s.EventType = EventType$9, _class3$s), (_applyDecoratedDescriptor(_class2$1g.prototype, "spriteAtlas", [_dec3$P], Object.getOwnPropertyDescriptor(_class2$1g.prototype, "spriteAtlas"), _class2$1g.prototype), _applyDecoratedDescriptor(_class2$1g.prototype, "spriteFrame", [_dec4$x], Object.getOwnPropertyDescriptor(_class2$1g.prototype, "spriteFrame"), _class2$1g.prototype), _applyDecoratedDescriptor(_class2$1g.prototype, "type", [_dec5$v], Object.getOwnPropertyDescriptor(_class2$1g.prototype, "type"), _class2$1g.prototype), _applyDecoratedDescriptor(_class2$1g.prototype, "fillType", [_dec6$m], Object.getOwnPropertyDescriptor(_class2$1g.prototype, "fillType"), _class2$1g.prototype), _applyDecoratedDescriptor(_class2$1g.prototype, "sizeMode", [_dec7$j], Object.getOwnPropertyDescriptor(_class2$1g.prototype, "sizeMode"), _class2$1g.prototype), _initializer$19 = applyDecoratedInitializer(_class2$1g.prototype, "_spriteFrame", [serializable$9], function () { + return null; + }), _initializer2$Y = applyDecoratedInitializer(_class2$1g.prototype, "_type", [serializable$9], function () { + return SpriteType$1.SIMPLE; + }), _initializer3$I = applyDecoratedInitializer(_class2$1g.prototype, "_fillType", [serializable$9], function () { + return FillType$2.HORIZONTAL; + }), _initializer4$C = applyDecoratedInitializer(_class2$1g.prototype, "_sizeMode", [serializable$9], function () { + return SizeMode$1.TRIMMED; + }), _initializer5$u = applyDecoratedInitializer(_class2$1g.prototype, "_fillCenter", [serializable$9], function () { + return new Vec2(0, 0); + }), _initializer6$q = applyDecoratedInitializer(_class2$1g.prototype, "_fillStart", [serializable$9], function () { + return 0; + }), _initializer7$j = applyDecoratedInitializer(_class2$1g.prototype, "_fillRange", [serializable$9], function () { + return 0; + }), _initializer8$i = applyDecoratedInitializer(_class2$1g.prototype, "_isTrimmedMode", [serializable$9], function () { + return true; + }), _initializer9$g = applyDecoratedInitializer(_class2$1g.prototype, "_useGrayscale", [serializable$9], function () { + return false; + }), _initializer10$g = applyDecoratedInitializer(_class2$1g.prototype, "_atlas", [serializable$9], function () { + return null; + })), _class2$1g)) || _class$1s) || _class$1s)); + legacyCC.Sprite = Sprite; + + var _dec$1r, _dec2$13, _dec3$O, _class$1r, _class2$1f, _initializer$18, _initializer2$X, _initializer3$H, _initializer4$B, _class3$r; + var _worldMatrix = new Mat4(); + var _vec2_temp$1 = new Vec2(); + var _mat4_temp$4 = new Mat4(); + var _circlePoints = []; + function _calculateCircle(center, radius, segments) { + _circlePoints.length = 0; + var anglePerStep = Math.PI * 2 / segments; + for (var step = 0; step < segments; ++step) { + _circlePoints.push(new Vec3(radius.x * Math.cos(anglePerStep * step) + center.x, radius.y * Math.sin(anglePerStep * step) + center.y, 0)); + } + return _circlePoints; + } + var MaskType; + (function (MaskType) { + MaskType[MaskType["GRAPHICS_RECT"] = 0] = "GRAPHICS_RECT"; + MaskType[MaskType["GRAPHICS_ELLIPSE"] = 1] = "GRAPHICS_ELLIPSE"; + MaskType[MaskType["GRAPHICS_STENCIL"] = 2] = "GRAPHICS_STENCIL"; + MaskType[MaskType["SPRITE_STENCIL"] = 3] = "SPRITE_STENCIL"; + })(MaskType || (MaskType = {})); + ccenum(MaskType); + var SEGMENTS_MIN = 3; + var SEGMENTS_MAX = 10000; + var Mask = exports('f', (_dec$1r = ccclass$t('cc.Mask'), _dec2$13 = executionOrder$1(110), _dec3$O = type$8(MaskType), _dec$1r(_class$1r = _dec2$13(_class$1r = (_class2$1f = (_class3$r = function (_Component) { + _inheritsLoose(Mask, _Component); + function Mask() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this._type = _initializer$18 && _initializer$18(); + _this._inverted = _initializer2$X && _initializer2$X(); + _this._segments = _initializer3$H && _initializer3$H(); + _this._alphaThreshold = _initializer4$B && _initializer4$B(); + _this._sprite = null; + _this._graphics = null; + _this._stencilStage = Stage.DISABLED; + return _this; + } + var _proto = Mask.prototype; + _proto.onLoad = function onLoad() { + this._changeRenderType(); + }; + _proto.onEnable = function onEnable() { + this._changeRenderType(); + this._updateGraphics(); + this._enableRender(); + this.node.on(NodeEventType.ANCHOR_CHANGED, this._nodeStateChange, this); + this.node.on(NodeEventType.SIZE_CHANGED, this._nodeStateChange, this); + }; + _proto.onRestore = function onRestore() { + this._changeRenderType(); + this._updateGraphics(); + }; + _proto.onDisable = function onDisable() { + this._disableRender(); + this.node.off(NodeEventType.ANCHOR_CHANGED, this._nodeStateChange, this); + this.node.off(NodeEventType.SIZE_CHANGED, this._nodeStateChange, this); + }; + _proto.onDestroy = function onDestroy() { + this._removeMaskNode(); + }; + _proto.isHit = function isHit(worldPt) { + var uiTrans = this.node._uiProps.uiTransformComp; + var size = uiTrans.contentSize; + var w = size.width; + var h = size.height; + var testPt = _vec2_temp$1; + this.node.getWorldMatrix(_worldMatrix); + Mat4.invert(_mat4_temp$4, _worldMatrix); + Vec2.transformMat4(testPt, worldPt, _mat4_temp$4); + var ap = uiTrans.anchorPoint; + testPt.x += ap.x * w; + testPt.y += ap.y * h; + var result = false; + if (this.type === MaskType.GRAPHICS_RECT || this.type === MaskType.GRAPHICS_STENCIL || this.type === MaskType.SPRITE_STENCIL) { + result = testPt.x >= 0 && testPt.y >= 0 && testPt.x <= w && testPt.y <= h; + } else if (this.type === MaskType.GRAPHICS_ELLIPSE) { + var rx = w / 2; + var ry = h / 2; + var px = testPt.x - 0.5 * w; + var py = testPt.y - 0.5 * h; + result = px * px / (rx * rx) + py * py / (ry * ry) < 1; + } + if (this._inverted) { + result = !result; + } + return result; + }; + _proto._nodeStateChange = function _nodeStateChange(type) { + this._updateGraphics(); + }; + _proto._changeRenderType = function _changeRenderType() { + var isGraphics = this._type !== MaskType.SPRITE_STENCIL; + if (isGraphics) { + this._createGraphics(); + } else { + this._createSprite(); + } + }; + _proto._createSprite = function _createSprite() { + if (!this._sprite) { + var sprite = this._sprite = this.node.getComponent(Sprite); + if (!sprite) { + var node = this.node; + sprite = this._sprite = node.addComponent(Sprite); + } + } + this._sprite.stencilStage = this.inverted ? Stage.ENTER_LEVEL_INVERTED : Stage.ENTER_LEVEL; + this._sprite.updateMaterial(); + }; + _proto._createGraphics = function _createGraphics() { + if (!this._graphics) { + var graphics = this._graphics = this.node.getComponent(Graphics); + if (!graphics) { + var node = this.node; + graphics = this._graphics = node.addComponent(Graphics); + } + graphics.lineWidth = 1; + var color = Color$1.WHITE.clone(); + color.a = 0; + graphics.fillColor = color; + } + this._graphics.stencilStage = this.inverted ? Stage.ENTER_LEVEL_INVERTED : Stage.ENTER_LEVEL; + }; + _proto._updateGraphics = function _updateGraphics() { + if (!this._graphics || this._type !== MaskType.GRAPHICS_RECT && this._type !== MaskType.GRAPHICS_ELLIPSE) { + return; + } + var uiTrans = this.node._uiProps.uiTransformComp; + var graphics = this._graphics; + graphics.clear(); + var size = uiTrans.contentSize; + var width = size.width; + var height = size.height; + var ap = uiTrans.anchorPoint; + var x = -width * ap.x; + var y = -height * ap.y; + if (this._type === MaskType.GRAPHICS_RECT) { + graphics.rect(x, y, width, height); + } else if (this._type === MaskType.GRAPHICS_ELLIPSE) { + var center = new Vec3(x + width / 2, y + height / 2, 0); + var radius = new Vec3(width / 2, height / 2, 0); + var points = _calculateCircle(center, radius, this._segments); + for (var i = 0; i < points.length; ++i) { + var point = points[i]; + if (i === 0) { + graphics.moveTo(point.x, point.y); + } else { + graphics.lineTo(point.x, point.y); + } + } + graphics.close(); + } + graphics.fill(); + }; + _proto._enableRender = function _enableRender() { + if (this.subComp) { + this.subComp.enabled = true; + } + }; + _proto._disableRender = function _disableRender() { + if (this.subComp) { + this.subComp.stencilStage = Stage.DISABLED; + this.subComp.updateMaterial(); + if (this.node.activeInHierarchy) { + this.subComp.enabled = false; + } + } + }; + _proto._removeMaskNode = function _removeMaskNode() { + if (this._sprite) { + this._sprite = null; + } + if (this._graphics) { + this._graphics = null; + } + }; + _proto.markForUpdateRenderData = function markForUpdateRenderData(enable) { + if (enable === void 0) { + enable = true; + } + warnID(9007); + if (this.subComp) { + this.subComp.markForUpdateRenderData(enable); + } + }; + _proto.requestRenderData = function requestRenderData(any) { + warnID(9007); + }; + _proto.destroyRenderData = function destroyRenderData() { + warnID(9007); + }; + _proto.updateRenderer = function updateRenderer() { + warnID(9007); + if (this.subComp) { + this.subComp.updateRenderer(); + } + }; + _proto.fillBuffers = function fillBuffers(render) { + warnID(9007); + }; + _proto.postUpdateAssembler = function postUpdateAssembler(render) { + warnID(9007); + }; + _proto.setNodeDirty = function setNodeDirty() { + warnID(9007); + if (this.subComp) { + this.subComp.setNodeDirty(); + } + }; + _proto.setTextureDirty = function setTextureDirty() { + warnID(9007); + if (this.subComp) { + this.subComp.setTextureDirty(); + } + }; + _proto.getMaterial = function getMaterial(idx) { + warnID(9007); + if (this.subComp) { + return this.subComp.getSharedMaterial(idx); + } + return null; + }; + _proto.setMaterial = function setMaterial(material, index) { + warnID(9007); + if (this.subComp) { + this.subComp.setMaterial(material, index); + } + }; + _proto.getMaterialInstance = function getMaterialInstance(idx) { + warnID(9007); + if (this.subComp) { + return this.subComp.getMaterialInstance(idx); + } + return null; + }; + _proto.setMaterialInstance = function setMaterialInstance(matInst, index) { + warnID(9007); + if (this.subComp) { + this.subComp.setMaterialInstance(matInst, index); + } + }; + _proto.getRenderMaterial = function getRenderMaterial(index) { + warnID(9007); + if (this.subComp) { + return this.subComp.getRenderMaterial(index); + } + return null; + }; + _createClass(Mask, [{ + key: "type", + get: function get() { + return this._type; + }, + set: function set(value) { + if (this._type === value) { + return; + } + this._type = value; + if (this._type !== MaskType.SPRITE_STENCIL) { + if (this._sprite) { + this.node.removeComponent(Sprite); + this._sprite._destroyImmediate(); + this._sprite = null; + } + this._changeRenderType(); + this._updateGraphics(); + } else { + if (this._graphics) { + this._graphics.clear(); + this.node.removeComponent(Graphics); + this._graphics._destroyImmediate(); + this._graphics = null; + } + this._changeRenderType(); + } + } + }, { + key: "inverted", + get: function get() { + return this._inverted; + }, + set: function set(value) { + this._inverted = value; + this.subComp.stencilStage = this.inverted ? Stage.ENTER_LEVEL_INVERTED : Stage.ENTER_LEVEL; + } + }, { + key: "segments", + get: function get() { + return this._segments; + }, + set: function set(value) { + if (this._segments === value) { + return; + } + this._segments = clamp$1(value, SEGMENTS_MIN, SEGMENTS_MAX); + this._updateGraphics(); + } + }, { + key: "spriteFrame", + get: function get() { + if (this._sprite) { + return this._sprite.spriteFrame; + } + return null; + }, + set: function set(value) { + if (this._sprite) { + this._sprite.spriteFrame = value; + } else { + error('please change type to sprite_stencil first'); + } + } + }, { + key: "alphaThreshold", + get: function get() { + return this._alphaThreshold; + }, + set: function set(value) { + if (this._alphaThreshold === value) { + return; + } + this._alphaThreshold = value; + if (this.type === MaskType.SPRITE_STENCIL && this._sprite) { + var mat = this._sprite.getMaterialInstance(0); + mat.setProperty('alphaThreshold', this._alphaThreshold); + } + } + }, { + key: "subComp", + get: function get() { + return this._graphics || this._sprite; + } + }, { + key: "customMaterial", + get: function get() { + warnID(9007); + if (this.subComp) { + return this.subComp.customMaterial; + } + return null; + }, + set: function set(val) { + warnID(9007); + if (this.subComp) { + this.subComp.customMaterial = val; + } + } + }, { + key: "color", + get: function get() { + warnID(9007); + if (this.subComp) { + return this.subComp.color; + } + return null; + }, + set: function set(value) { + warnID(9007); + if (this.subComp && value) { + this.subComp.color = value; + } + } + }, { + key: "sharedMaterial", + get: function get() { + warnID(9007); + if (this.subComp) { + return this.subComp.sharedMaterial; + } + return null; + } + }, { + key: "sharedMaterials", + get: function get() { + warnID(9007); + if (this.subComp) { + return this.subComp.sharedMaterials; + } + return null; + }, + set: function set(val) { + warnID(9007); + if (this.subComp && val) { + this.subComp.sharedMaterials = val; + } + } + }, { + key: "material", + get: function get() { + warnID(9007); + if (this.subComp) { + return this.subComp.material; + } + return null; + }, + set: function set(val) { + warnID(9007); + if (this.subComp) { + this.subComp.material = val; + } + } + }, { + key: "materials", + get: function get() { + warnID(9007); + if (this.subComp) { + return this.subComp.materials; + } + return [null]; + }, + set: function set(val) { + warnID(9007); + if (this.subComp) { + this.subComp.materials = val; + } + } + }]); + return Mask; + }(Component), _class3$r.Type = MaskType, _class3$r), (_applyDecoratedDescriptor(_class2$1f.prototype, "type", [_dec3$O], Object.getOwnPropertyDescriptor(_class2$1f.prototype, "type"), _class2$1f.prototype), _initializer$18 = applyDecoratedInitializer(_class2$1f.prototype, "_type", [serializable$9], function () { + return MaskType.GRAPHICS_RECT; + }), _initializer2$X = applyDecoratedInitializer(_class2$1f.prototype, "_inverted", [serializable$9], function () { + return false; + }), _initializer3$H = applyDecoratedInitializer(_class2$1f.prototype, "_segments", [serializable$9], function () { + return 64; + }), _initializer4$B = applyDecoratedInitializer(_class2$1f.prototype, "_alphaThreshold", [serializable$9], function () { + return 0.1; + })), _class2$1f)) || _class$1r) || _class$1r)); + NodeEventProcessor._maskComp = Mask; + legacyCC.Mask = Mask; + + var eventRegx = /^(click)(\s)*=|(param)(\s)*=/; + var imageAttrReg = /(\s)*src(\s)*=|(\s)*height(\s)*=|(\s)*width(\s)*=|(\s)*align(\s)*=|(\s)*offset(\s)*=|(\s)*click(\s)*=|(\s)*param(\s)*=/; + var HtmlTextParser = exports('y', function () { + function HtmlTextParser() { + this._specialSymbolArray = []; + this._stack = []; + this._resultObjectArray = []; + this._specialSymbolArray.push([/</g, '<']); + this._specialSymbolArray.push([/>/g, '>']); + this._specialSymbolArray.push([/&/g, '&']); + this._specialSymbolArray.push([/"/g, '"']); + this._specialSymbolArray.push([/'/g, '\'']); + } + var _proto = HtmlTextParser.prototype; + _proto.parse = function parse(htmlString) { + this._resultObjectArray.length = 0; + this._stack.length = 0; + var startIndex = 0; + var length = htmlString.length; + while (startIndex < length) { + var tagEndIndex = htmlString.indexOf('>', startIndex); + var tagBeginIndex = -1; + if (tagEndIndex >= 0) { + tagBeginIndex = htmlString.lastIndexOf('<', tagEndIndex); + var noTagBegin = tagBeginIndex < startIndex - 1; + if (noTagBegin) { + tagBeginIndex = htmlString.indexOf('<', tagEndIndex + 1); + tagEndIndex = htmlString.indexOf('>', tagBeginIndex + 1); + } + } + if (tagBeginIndex < 0) { + this._stack.pop(); + this._processResult(htmlString.substring(startIndex)); + startIndex = length; + } else { + var newStr = htmlString.substring(startIndex, tagBeginIndex); + var tagStr = htmlString.substring(tagBeginIndex + 1, tagEndIndex); + if (tagStr === '') newStr = htmlString.substring(startIndex, tagEndIndex + 1); + this._processResult(newStr); + if (tagEndIndex === -1) { + tagEndIndex = tagBeginIndex; + } else if (htmlString.charAt(tagBeginIndex + 1) === '/') { + this._stack.pop(); + } else { + this._addToStack(tagStr); + } + startIndex = tagEndIndex + 1; + } + } + return this._resultObjectArray; + }; + _proto._attributeToObject = function _attributeToObject(attribute) { + attribute = attribute.trim(); + var obj = {}; + var header = /^(color|size)(\s)*=/.exec(attribute); + var tagName = ''; + var nextSpace = 0; + var eventHanlderString = ''; + if (header) { + tagName = header[0]; + attribute = attribute.substring(tagName.length).trim(); + if (attribute === '') { + return obj; + } + nextSpace = attribute.indexOf(' '); + switch (tagName[0]) { + case 'c': + if (nextSpace > -1) { + obj.color = attribute.substring(0, nextSpace).trim(); + } else { + obj.color = attribute; + } + break; + case 's': + obj.size = parseInt(attribute); + break; + } + if (nextSpace > -1) { + eventHanlderString = attribute.substring(nextSpace + 1).trim(); + obj.event = this._processEventHandler(eventHanlderString); + } + return obj; + } + header = /^(br(\s)*\/)/.exec(attribute); + if (header && header[0].length > 0) { + tagName = header[0].trim(); + if (tagName.startsWith('br') && tagName[tagName.length - 1] === '/') { + obj.isNewLine = true; + this._resultObjectArray.push({ + text: '', + style: { + isNewLine: true + } + }); + return obj; + } + } + header = /^(img(\s)*src(\s)*=[^>]+\/)/.exec(attribute); + var remainingArgument = ''; + var rightQuot = -1; + if (header && header[0].length > 0) { + tagName = header[0].trim(); + if (tagName.startsWith('img') && tagName[tagName.length - 1] === '/') { + header = imageAttrReg.exec(attribute); + var tagValue; + var isValidImageTag = false; + while (header) { + attribute = attribute.substring(attribute.indexOf(header[0])); + tagName = attribute.substr(0, header[0].length); + var originTagNameLength = tagName.length; + tagName = tagName.replace(/[^a-zA-Z]/g, '').trim(); + tagName = tagName.toLowerCase(); + remainingArgument = attribute.substring(originTagNameLength).trim(); + if (tagName === 'src') { + rightQuot = this.getRightQuotationIndex(remainingArgument); + } else { + rightQuot = -1; + } + nextSpace = remainingArgument.indexOf(' ', rightQuot + 1 >= remainingArgument.length ? -1 : rightQuot + 1); + tagValue = nextSpace > -1 ? remainingArgument.substr(0, nextSpace) : remainingArgument; + attribute = remainingArgument.substring(nextSpace).trim(); + if (tagValue.endsWith('/')) { + tagValue = tagValue.slice(0, -1); + } + if (tagName === 'src') { + switch (tagValue.charCodeAt(0)) { + case 34: + case 39: + isValidImageTag = true; + tagValue = tagValue.slice(1, -1); + break; + } + obj.isImage = true; + obj.src = tagValue; + } else if (tagName === 'height') { + obj.imageHeight = parseInt(tagValue); + } else if (tagName === 'width') { + obj.imageWidth = parseInt(tagValue); + } else if (tagName === 'align') { + switch (tagValue.charCodeAt(0)) { + case 34: + case 39: + tagValue = tagValue.slice(1, -1); + break; + } + obj.imageAlign = tagValue.toLowerCase(); + } else if (tagName === 'offset') { + obj.imageOffset = tagValue; + } else if (tagName === 'click') { + obj.event = this._processEventHandler(tagName + "=" + tagValue); + } + if (obj.event && tagName === 'param') { + obj.event[tagName] = tagValue.replace(/^"|"$/g, ''); + } + header = imageAttrReg.exec(attribute); + } + if (isValidImageTag && obj.isImage) { + this._resultObjectArray.push({ + text: '', + style: obj + }); + } + return {}; + } + } + header = /^(outline(\s)*[^>]*)/.exec(attribute); + if (header) { + attribute = header[0].substring('outline'.length).trim(); + var defaultOutlineObject = { + color: '#ffffff', + width: 1 + }; + if (attribute) { + var outlineAttrReg = /(\s)*color(\s)*=|(\s)*width(\s)*=|(\s)*click(\s)*=|(\s)*param(\s)*=/; + header = outlineAttrReg.exec(attribute); + var _tagValue; + while (header) { + attribute = attribute.substring(attribute.indexOf(header[0])); + tagName = attribute.substr(0, header[0].length); + remainingArgument = attribute.substring(tagName.length).trim(); + nextSpace = remainingArgument.indexOf(' '); + if (nextSpace > -1) { + _tagValue = remainingArgument.substr(0, nextSpace); + } else { + _tagValue = remainingArgument; + } + tagName = tagName.replace(/[^a-zA-Z]/g, '').trim(); + tagName = tagName.toLowerCase(); + attribute = remainingArgument.substring(nextSpace).trim(); + if (tagName === 'click') { + obj.event = this._processEventHandler(tagName + "=" + _tagValue); + } else if (tagName === 'color') { + defaultOutlineObject.color = _tagValue; + } else if (tagName === 'width') { + defaultOutlineObject.width = parseInt(_tagValue); + } + if (obj.event && tagName === 'param') { + obj.event[tagName] = _tagValue.replace(/^"|"$/g, ''); + } + header = outlineAttrReg.exec(attribute); + } + } + obj.outline = defaultOutlineObject; + } + header = /^(on|u|b|i)(\s)*/.exec(attribute); + if (header && header[0].length > 0) { + tagName = header[0]; + attribute = attribute.substring(tagName.length).trim(); + switch (tagName[0]) { + case 'u': + obj.underline = true; + break; + case 'i': + obj.italic = true; + break; + case 'b': + obj.bold = true; + break; + } + if (attribute === '') { + return obj; + } + obj.event = this._processEventHandler(attribute); + } + return obj; + }; + _proto.getRightQuotationIndex = function getRightQuotationIndex(remainingArgument) { + var leftQuot = -1; + var rightQuot = -1; + var leftSingleQuot = remainingArgument.indexOf('\''); + var leftDoubleQuot = remainingArgument.indexOf('"'); + var useSingleQuot = leftSingleQuot > -1 && (leftSingleQuot < leftDoubleQuot || leftDoubleQuot === -1); + var useDoubleQuot = leftDoubleQuot > -1 && (leftDoubleQuot < leftSingleQuot || leftSingleQuot === -1); + if (useSingleQuot) { + leftQuot = leftSingleQuot; + rightQuot = remainingArgument.indexOf('\'', leftQuot + 1 >= remainingArgument.length ? -1 : leftQuot + 1); + } else if (useDoubleQuot) { + leftQuot = leftDoubleQuot; + rightQuot = remainingArgument.indexOf('"', leftQuot + 1 >= remainingArgument.length ? -1 : leftQuot + 1); + } + return rightQuot; + }; + _proto._processEventHandler = function _processEventHandler(eventString) { + var obj = {}; + var index = 0; + var isValidTag = false; + var eventNames = eventRegx.exec(eventString); + while (eventNames) { + var eventName = eventNames[0]; + var eventValue = ''; + isValidTag = false; + eventString = eventString.substring(eventName.length).trim(); + if (eventString.charAt(0) === '"') { + index = eventString.indexOf('"', 1); + if (index > -1) { + eventValue = eventString.substring(1, index).trim(); + isValidTag = true; + } + index++; + } else if (eventString.charAt(0) === '\'') { + index = eventString.indexOf('\'', 1); + if (index > -1) { + eventValue = eventString.substring(1, index).trim(); + isValidTag = true; + } + index++; + } else { + var match = /(\S)+/.exec(eventString); + if (match) { + eventValue = match[0]; + } else { + eventValue = ''; + } + index = eventValue.length; + } + if (isValidTag) { + eventName = eventName.substring(0, eventName.length - 1).trim(); + obj[eventName] = eventValue; + } + eventString = eventString.substring(index).trim(); + eventNames = eventRegx.exec(eventString); + } + return obj; + }; + _proto._addToStack = function _addToStack(attribute) { + var obj = this._attributeToObject(attribute); + if (this._stack.length === 0) { + this._stack.push(obj); + } else { + if (obj.isNewLine || obj.isImage) { + return; + } + var previousTagObj = this._stack[this._stack.length - 1]; + for (var key in previousTagObj) { + if (!obj[key]) { + obj[key] = previousTagObj[key]; + } + } + this._stack.push(obj); + } + }; + _proto._processResult = function _processResult(value) { + if (value.length === 0) { + return; + } + value = this._escapeSpecialSymbol(value); + if (this._stack.length > 0) { + this._resultObjectArray.push({ + text: value, + style: this._stack[this._stack.length - 1] + }); + } else { + this._resultObjectArray.push({ + text: value + }); + } + }; + _proto._escapeSpecialSymbol = function _escapeSpecialSymbol(str) { + for (var _iterator = _createForOfIteratorHelperLoose(this._specialSymbolArray), _step; !(_step = _iterator()).done;) { + var symbolArr = _step.value; + var key = symbolArr[0]; + var value = symbolArr[1]; + str = str.replace(key, value); + } + return str; + }; + return HtmlTextParser; + }()); + + var _dec$1q, _dec2$12, _dec3$N, _class$1q, _class2$1e, _initializer$17, _initializer2$W; + var LabelOutline = exports('k', (_dec$1q = ccclass$t('cc.LabelOutline'), _dec2$12 = executionOrder$1(110), _dec3$N = requireComponent(Label), _dec$1q(_class$1q = _dec2$12(_class$1q = _dec3$N(_class$1q = (_class2$1e = function (_Component) { + _inheritsLoose(LabelOutline, _Component); + function LabelOutline() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this._color = _initializer$17 && _initializer$17(); + _this._width = _initializer2$W && _initializer2$W(); + return _this; + } + var _proto = LabelOutline.prototype; + _proto.onEnable = function onEnable() { + this._updateRenderData(); + }; + _proto.onDisable = function onDisable() { + this._updateRenderData(); + }; + _proto._updateRenderData = function _updateRenderData() { + var label = this.node.getComponent(Label); + if (label) { + label.updateRenderData(true); + } + }; + _createClass(LabelOutline, [{ + key: "color", + get: function get() { + return this._color; + }, + set: function set(value) { + if (this._color === value) { + return; + } + this._color.set(value); + this._updateRenderData(); + } + }, { + key: "width", + get: function get() { + return this._width; + }, + set: function set(value) { + if (this._width === value) { + return; + } + this._width = value; + this._updateRenderData(); + } + }]); + return LabelOutline; + }(Component), (_initializer$17 = applyDecoratedInitializer(_class2$1e.prototype, "_color", [serializable$9], function () { + return new Color$1(0, 0, 0, 255); + }), _initializer2$W = applyDecoratedInitializer(_class2$1e.prototype, "_width", [serializable$9], function () { + return 2; + })), _class2$1e)) || _class$1q) || _class$1q) || _class$1q)); + legacyCC.LabelOutline = LabelOutline; + + deprecateModuleExportedName({ + RenderComponent: { + newName: 'UIRenderer', + since: '1.2.0', + removed: true + }, + UITransformComponent: { + newName: 'UITransform', + since: '1.2.0', + removed: false + }, + CanvasComponent: { + newName: 'Canvas', + since: '1.2.0', + removed: false + } + }); + + deprecateModuleExportedName({ + UIRenderable: { + newName: 'UIRenderer', + since: '3.0.0', + removed: true + } + }); + + deprecateModuleExportedName({ + Renderable2D: { + newName: 'UIRenderer', + since: '3.6.0', + removed: false + } + }); + + var _dec$1p, _class$1p, _class2$1d, _initializer$16, _initializer2$V, _initializer3$G, _class3$q; + var PostProcess = (_dec$1p = ccclass$t('cc.PostProcess'), _dec$1p(_class$1p = disallowMultiple$1(_class$1p = (_class2$1d = (_class3$q = function (_Component) { + _inheritsLoose(PostProcess, _Component); + function PostProcess() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this.global = _initializer$16 && _initializer$16(); + _this._shadingScale = _initializer2$V && _initializer2$V(); + _this.enableShadingScaleInEditor = _initializer3$G && _initializer3$G(); + _this.settings = new Map(); + return _this; + } + var _proto = PostProcess.prototype; + _proto.addSetting = function addSetting(setting) { + this.settings.set(setting.constructor, setting); + }; + _proto.removeSetting = function removeSetting(setting) { + this.settings["delete"](setting.constructor); + }; + _proto.getSetting = function getSetting(ctor) { + return this.settings.get(ctor); + }; + _proto.onEnable = function onEnable() { + PostProcess.all.push(this); + }; + _proto.onDisable = function onDisable() { + var idx = PostProcess.all.indexOf(this); + if (idx !== -1) { + PostProcess.all.splice(idx, 1); + } + }; + _createClass(PostProcess, [{ + key: "shadingScale", + get: function get() { + return this._shadingScale; + }, + set: function set(v) { + this._shadingScale = v; + } + }]); + return PostProcess; + }(Component), _class3$q.all = [], _class3$q), (_initializer$16 = applyDecoratedInitializer(_class2$1d.prototype, "global", [property$1, serializable$9], function () { + return true; + }), _initializer2$V = applyDecoratedInitializer(_class2$1d.prototype, "_shadingScale", [serializable$9], function () { + return 1; + }), _applyDecoratedDescriptor(_class2$1d.prototype, "shadingScale", [property$1], Object.getOwnPropertyDescriptor(_class2$1d.prototype, "shadingScale"), _class2$1d.prototype), _initializer3$G = applyDecoratedInitializer(_class2$1d.prototype, "enableShadingScaleInEditor", [property$1, serializable$9], function () { + return false; + })), _class2$1d)) || _class$1p) || _class$1p); + + var _dec$1o, _dec2$11, _dec3$M, _dec4$w, _dec5$u, _dec6$l, _dec7$i, _dec8$c, _dec9$9, _dec10$4, _class$1o, _class2$1c, _initializer$15, _initializer2$U, _initializer3$F, _initializer4$A, _initializer5$t, _initializer6$p, _initializer7$i, _initializer8$h, _initializer9$f, _initializer10$f, _initializer11$f, _initializer12$e, _initializer13$b, _initializer14$9, _initializer15$6, _initializer16$6, _initializer17$4, _initializer18$3, _initializer19$2, _initializer20$2, _initializer21$2, _initializer22$1, _class3$p; + var _temp_vec3_1 = new Vec3(); + var ProjectionType = Enum(CameraProjection); + var FOVAxis = Enum(CameraFOVAxis); + var Aperture = Enum(CameraAperture); + var Shutter = Enum(CameraShutter); + var ISO = Enum(CameraISO); + var ClearFlag = Enum({ + SKYBOX: SKYBOX_FLAG | ClearFlagBit.DEPTH_STENCIL, + SOLID_COLOR: ClearFlagBit.ALL, + DEPTH_ONLY: ClearFlagBit.DEPTH_STENCIL, + DONT_CLEAR: ClearFlagBit.NONE + }); + var Camera = exports('dE', (_dec$1o = ccclass$t('cc.Camera'), _dec2$11 = type$8(Layers.BitMask), _dec3$M = type$8(ClearFlag), _dec4$w = type$8(ProjectionType), _dec5$u = type$8(FOVAxis), _dec6$l = type$8(Aperture), _dec7$i = type$8(Shutter), _dec8$c = type$8(ISO), _dec9$9 = type$8(RenderTexture), _dec10$4 = type$8(PostProcess), _dec$1o(_class$1o = (_class2$1c = (_class3$p = function (_Component) { + _inheritsLoose(Camera, _Component); + function Camera() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this._projection = _initializer$15 && _initializer$15(); + _this._priority = _initializer2$U && _initializer2$U(); + _this._fov = _initializer3$F && _initializer3$F(); + _this._fovAxis = _initializer4$A && _initializer4$A(); + _this._orthoHeight = _initializer5$t && _initializer5$t(); + _this._near = _initializer6$p && _initializer6$p(); + _this._far = _initializer7$i && _initializer7$i(); + _this._color = _initializer8$h && _initializer8$h(); + _this._depth = _initializer9$f && _initializer9$f(); + _this._stencil = _initializer10$f && _initializer10$f(); + _this._clearFlags = _initializer11$f && _initializer11$f(); + _this._rect = _initializer12$e && _initializer12$e(); + _this._aperture = _initializer13$b && _initializer13$b(); + _this._shutter = _initializer14$9 && _initializer14$9(); + _this._iso = _initializer15$6 && _initializer15$6(); + _this._screenScale = _initializer16$6 && _initializer16$6(); + _this._visibility = _initializer17$4 && _initializer17$4(); + _this._targetTexture = _initializer18$3 && _initializer18$3(); + _this._postProcess = _initializer19$2 && _initializer19$2(); + _this._usePostProcess = _initializer20$2 && _initializer20$2(); + _this._camera = null; + _this._inEditorMode = false; + _this._flows = undefined; + _this._cameraType = _initializer21$2 && _initializer21$2(); + _this._trackingType = _initializer22$1 && _initializer22$1(); + return _this; + } + var _proto = Camera.prototype; + _proto.onLoad = function onLoad() { + this._createCamera(); + }; + _proto.onEnable = function onEnable() { + this.node.hasChangedFlags |= TransformBit.POSITION; + if (this._camera) { + this._attachToScene(); + } + }; + _proto.onDisable = function onDisable() { + if (this._camera) { + this._detachFromScene(); + } + }; + _proto.onDestroy = function onDestroy() { + if (this._camera) { + this._camera.destroy(); + this._camera = null; + } + if (this._targetTexture) { + this._targetTexture.off('resize'); + } + }; + _proto.screenPointToRay = function screenPointToRay(x, y, out) { + if (!out) { + out = Ray.create(); + } + if (this._camera) { + this._camera.screenPointToRay(out, x, y); + } + return out; + }; + _proto.worldToScreen = function worldToScreen(worldPos, out) { + if (!out) { + out = new Vec3(); + } + if (this._camera) { + this._camera.worldToScreen(out, worldPos); + } + return out; + }; + _proto.screenToWorld = function screenToWorld(screenPos, out) { + if (!out) { + out = this.node.getWorldPosition(); + } + if (this._camera) { + this._camera.screenToWorld(out, screenPos); + } + return out; + }; + _proto.convertToUINode = function convertToUINode(wpos, uiNode, out) { + if (!out) { + out = new Vec3(); + } + if (!this._camera) { + return out; + } + this.worldToScreen(wpos, _temp_vec3_1); + var cmp = uiNode.getComponent('cc.UITransform'); + var designSize = legacyCC.view.getVisibleSize(); + var xoffset = _temp_vec3_1.x - this._camera.width * 0.5; + var yoffset = _temp_vec3_1.y - this._camera.height * 0.5; + _temp_vec3_1.x = xoffset / legacyCC.view.getScaleX() + designSize.width * 0.5; + _temp_vec3_1.y = yoffset / legacyCC.view.getScaleY() + designSize.height * 0.5; + if (cmp) { + cmp.convertToNodeSpaceAR(_temp_vec3_1, out); + } + return out; + }; + _proto._createCamera = function _createCamera() { + if (!this._camera) { + this._camera = legacyCC.director.root.createCamera(); + this._camera.initialize({ + name: this.node.name, + node: this.node, + projection: this._projection, + window: this._inEditorMode ? legacyCC.director.root && legacyCC.director.root.mainWindow : legacyCC.director.root && legacyCC.director.root.tempWindow, + priority: this._priority, + cameraType: this.cameraType, + trackingType: this.trackingType + }); + this._camera.setViewportInOrientedSpace(this._rect); + this._camera.fovAxis = this._fovAxis; + this._camera.fov = toRadian(this._fov); + this._camera.orthoHeight = this._orthoHeight; + this._camera.nearClip = this._near; + this._camera.farClip = this._far; + this._camera.clearColor = this._color; + this._camera.clearDepth = this._depth; + this._camera.clearStencil = this._stencil; + this._camera.clearFlag = this._clearFlags; + this._camera.visibility = this._visibility; + this._camera.aperture = this._aperture; + this._camera.shutter = this._shutter; + this._camera.iso = this._iso; + this._camera.postProcess = this._postProcess; + this._camera.usePostProcess = this._usePostProcess; + } + this._updateTargetTexture(); + }; + _proto._attachToScene = function _attachToScene() { + if (!this.node.scene || !this._camera) { + return; + } + if (this._camera && this._camera.scene) { + this._camera.scene.removeCamera(this._camera); + } + var rs = this._getRenderScene(); + rs.addCamera(this._camera); + }; + _proto._detachFromScene = function _detachFromScene() { + if (this._camera && this._camera.scene) { + this._camera.scene.removeCamera(this._camera); + } + }; + _proto._checkTargetTextureEvent = function _checkTargetTextureEvent(old) { + var _this2 = this; + if (old) { + old.off('resize'); + } + if (this._targetTexture) { + this._targetTexture.on('resize', function (window) { + if (_this2._camera) { + _this2._camera.setFixedSize(window.width, window.height); + } + }, this); + } + }; + _proto._updateTargetTexture = function _updateTargetTexture() { + if (!this._camera) { + return; + } + if (this._targetTexture) { + var window = this._targetTexture.window; + this._camera.changeTargetWindow(window); + this._camera.setFixedSize(window.width, window.height); + } + }; + _createClass(Camera, [{ + key: "camera", + get: function get() { + return this._camera; + } + }, { + key: "priority", + get: function get() { + return this._priority; + }, + set: function set(val) { + this._priority = val; + if (this._camera) { + this._camera.priority = val; + } + } + }, { + key: "visibility", + get: function get() { + return this._visibility; + }, + set: function set(val) { + this._visibility = val; + if (this._camera) { + this._camera.visibility = val; + } + } + }, { + key: "clearFlags", + get: function get() { + return this._clearFlags; + }, + set: function set(val) { + this._clearFlags = val; + if (this._camera) { + this._camera.clearFlag = val; + } + } + }, { + key: "clearColor", + get: function get() { + return this._color; + }, + set: function set(val) { + this._color.set(val); + if (this._camera) { + this._camera.clearColor = this._color; + } + } + }, { + key: "clearDepth", + get: function get() { + return this._depth; + }, + set: function set(val) { + this._depth = val; + if (this._camera) { + this._camera.clearDepth = val; + } + } + }, { + key: "clearStencil", + get: function get() { + return this._stencil; + }, + set: function set(val) { + this._stencil = val; + if (this._camera) { + this._camera.clearStencil = val; + } + } + }, { + key: "projection", + get: function get() { + return this._projection; + }, + set: function set(val) { + this._projection = val; + if (this._camera) { + this._camera.projectionType = val; + } + } + }, { + key: "fovAxis", + get: function get() { + return this._fovAxis; + }, + set: function set(val) { + if (val === this._fovAxis) { + return; + } + this._fovAxis = val; + if (this._camera) { + this._camera.fovAxis = val; + if (val === CameraFOVAxis.VERTICAL) { + this.fov = this._fov * this._camera.aspect; + } else { + this.fov = this._fov / this._camera.aspect; + } + } + } + }, { + key: "fov", + get: function get() { + return this._fov; + }, + set: function set(val) { + this._fov = val; + if (this._camera) { + this._camera.fov = toRadian(val); + } + } + }, { + key: "orthoHeight", + get: function get() { + return this._orthoHeight; + }, + set: function set(val) { + this._orthoHeight = val; + if (this._camera) { + this._camera.orthoHeight = val; + } + } + }, { + key: "near", + get: function get() { + return this._near; + }, + set: function set(val) { + this._near = val; + if (this._camera) { + this._camera.nearClip = val; + } + } + }, { + key: "far", + get: function get() { + return this._far; + }, + set: function set(val) { + this._far = val; + if (this._camera) { + this._camera.farClip = val; + } + } + }, { + key: "aperture", + get: function get() { + return this._aperture; + }, + set: function set(val) { + this._aperture = val; + if (this._camera) { + this._camera.aperture = val; + } + } + }, { + key: "shutter", + get: function get() { + return this._shutter; + }, + set: function set(val) { + this._shutter = val; + if (this._camera) { + this._camera.shutter = val; + } + } + }, { + key: "iso", + get: function get() { + return this._iso; + }, + set: function set(val) { + this._iso = val; + if (this._camera) { + this._camera.iso = val; + } + } + }, { + key: "rect", + get: function get() { + return this._rect; + }, + set: function set(val) { + this._rect = val; + if (this._camera) { + this._camera.setViewportInOrientedSpace(val); + } + } + }, { + key: "targetTexture", + get: function get() { + return this._targetTexture; + }, + set: function set(value) { + if (this._targetTexture === value) { + return; + } + var old = this._targetTexture; + this._targetTexture = value; + this._checkTargetTextureEvent(old); + this._updateTargetTexture(); + if (!value && this._camera) { + this._camera.changeTargetWindow(null); + this._camera.isWindowSize = true; + } + this.node.emit(Camera.TARGET_TEXTURE_CHANGE, this); + } + }, { + key: "usePostProcess", + get: function get() { + return this._usePostProcess; + }, + set: function set(v) { + this._usePostProcess = v; + if (this._camera) { + this._camera.usePostProcess = v; + } + } + }, { + key: "postProcess", + get: function get() { + return this._postProcess; + }, + set: function set(v) { + this._postProcess = v; + if (this._camera) { + this._camera.postProcess = v; + } + } + }, { + key: "screenScale", + get: function get() { + return this._screenScale; + }, + set: function set(val) { + this._screenScale = val; + if (this._camera) { + this._camera.screenScale = val; + } + } + }, { + key: "inEditorMode", + get: function get() { + return this._inEditorMode; + }, + set: function set(value) { + this._inEditorMode = value; + if (this._camera) { + this._camera.changeTargetWindow(value ? legacyCC.director.root && legacyCC.director.root.mainWindow : legacyCC.director.root && legacyCC.director.root.tempWindow); + } + } + }, { + key: "cameraType", + get: function get() { + return this._cameraType; + }, + set: function set(val) { + if (this._cameraType === val) { + return; + } + this._cameraType = val; + if (this.camera) { + this.camera.cameraType = val; + } + } + }, { + key: "trackingType", + get: function get() { + return this._trackingType; + }, + set: function set(val) { + if (this._trackingType === val) { + return; + } + this._trackingType = val; + if (this.camera) { + this.camera.trackingType = val; + } + } + }]); + return Camera; + }(Component), _class3$p.ProjectionType = ProjectionType, _class3$p.FOVAxis = FOVAxis, _class3$p.ClearFlag = ClearFlag, _class3$p.Aperture = Aperture, _class3$p.Shutter = Shutter, _class3$p.ISO = ISO, _class3$p.TARGET_TEXTURE_CHANGE = 'tex-change', _class3$p), (_initializer$15 = applyDecoratedInitializer(_class2$1c.prototype, "_projection", [serializable$9], function () { + return ProjectionType.PERSPECTIVE; + }), _initializer2$U = applyDecoratedInitializer(_class2$1c.prototype, "_priority", [serializable$9], function () { + return 0; + }), _initializer3$F = applyDecoratedInitializer(_class2$1c.prototype, "_fov", [serializable$9], function () { + return 45; + }), _initializer4$A = applyDecoratedInitializer(_class2$1c.prototype, "_fovAxis", [serializable$9], function () { + return FOVAxis.VERTICAL; + }), _initializer5$t = applyDecoratedInitializer(_class2$1c.prototype, "_orthoHeight", [serializable$9], function () { + return 10; + }), _initializer6$p = applyDecoratedInitializer(_class2$1c.prototype, "_near", [serializable$9], function () { + return 1; + }), _initializer7$i = applyDecoratedInitializer(_class2$1c.prototype, "_far", [serializable$9], function () { + return 1000; + }), _initializer8$h = applyDecoratedInitializer(_class2$1c.prototype, "_color", [serializable$9], function () { + return new Color$1('#333333'); + }), _initializer9$f = applyDecoratedInitializer(_class2$1c.prototype, "_depth", [serializable$9], function () { + return 1; + }), _initializer10$f = applyDecoratedInitializer(_class2$1c.prototype, "_stencil", [serializable$9], function () { + return 0; + }), _initializer11$f = applyDecoratedInitializer(_class2$1c.prototype, "_clearFlags", [serializable$9], function () { + return ClearFlag.SOLID_COLOR; + }), _initializer12$e = applyDecoratedInitializer(_class2$1c.prototype, "_rect", [serializable$9], function () { + return new Rect$1(0, 0, 1, 1); + }), _initializer13$b = applyDecoratedInitializer(_class2$1c.prototype, "_aperture", [serializable$9], function () { + return Aperture.F16_0; + }), _initializer14$9 = applyDecoratedInitializer(_class2$1c.prototype, "_shutter", [serializable$9], function () { + return Shutter.D125; + }), _initializer15$6 = applyDecoratedInitializer(_class2$1c.prototype, "_iso", [serializable$9], function () { + return ISO.ISO100; + }), _initializer16$6 = applyDecoratedInitializer(_class2$1c.prototype, "_screenScale", [serializable$9], function () { + return 1; + }), _initializer17$4 = applyDecoratedInitializer(_class2$1c.prototype, "_visibility", [serializable$9], function () { + return CAMERA_DEFAULT_MASK; + }), _initializer18$3 = applyDecoratedInitializer(_class2$1c.prototype, "_targetTexture", [serializable$9], function () { + return null; + }), _initializer19$2 = applyDecoratedInitializer(_class2$1c.prototype, "_postProcess", [serializable$9], function () { + return null; + }), _initializer20$2 = applyDecoratedInitializer(_class2$1c.prototype, "_usePostProcess", [serializable$9], function () { + return false; + }), _initializer21$2 = applyDecoratedInitializer(_class2$1c.prototype, "_cameraType", [serializable$9], function () { + return CameraType.DEFAULT; + }), _initializer22$1 = applyDecoratedInitializer(_class2$1c.prototype, "_trackingType", [serializable$9], function () { + return TrackingType.NO_TRACKING; + }), _applyDecoratedDescriptor(_class2$1c.prototype, "visibility", [_dec2$11], Object.getOwnPropertyDescriptor(_class2$1c.prototype, "visibility"), _class2$1c.prototype), _applyDecoratedDescriptor(_class2$1c.prototype, "clearFlags", [_dec3$M], Object.getOwnPropertyDescriptor(_class2$1c.prototype, "clearFlags"), _class2$1c.prototype), _applyDecoratedDescriptor(_class2$1c.prototype, "projection", [_dec4$w], Object.getOwnPropertyDescriptor(_class2$1c.prototype, "projection"), _class2$1c.prototype), _applyDecoratedDescriptor(_class2$1c.prototype, "fovAxis", [_dec5$u], Object.getOwnPropertyDescriptor(_class2$1c.prototype, "fovAxis"), _class2$1c.prototype), _applyDecoratedDescriptor(_class2$1c.prototype, "aperture", [_dec6$l], Object.getOwnPropertyDescriptor(_class2$1c.prototype, "aperture"), _class2$1c.prototype), _applyDecoratedDescriptor(_class2$1c.prototype, "shutter", [_dec7$i], Object.getOwnPropertyDescriptor(_class2$1c.prototype, "shutter"), _class2$1c.prototype), _applyDecoratedDescriptor(_class2$1c.prototype, "iso", [_dec8$c], Object.getOwnPropertyDescriptor(_class2$1c.prototype, "iso"), _class2$1c.prototype), _applyDecoratedDescriptor(_class2$1c.prototype, "targetTexture", [_dec9$9], Object.getOwnPropertyDescriptor(_class2$1c.prototype, "targetTexture"), _class2$1c.prototype), _applyDecoratedDescriptor(_class2$1c.prototype, "usePostProcess", [property$1], Object.getOwnPropertyDescriptor(_class2$1c.prototype, "usePostProcess"), _class2$1c.prototype), _applyDecoratedDescriptor(_class2$1c.prototype, "postProcess", [_dec10$4], Object.getOwnPropertyDescriptor(_class2$1c.prototype, "postProcess"), _class2$1c.prototype)), _class2$1c)) || _class$1o)); + legacyCC.Camera = Camera; + + var _orientationMap; + var localWinSize = new Size$1(); + var orientationMap = (_orientationMap = {}, _orientationMap[macro.ORIENTATION_AUTO] = Orientation$1.AUTO, _orientationMap[macro.ORIENTATION_LANDSCAPE] = Orientation$1.LANDSCAPE, _orientationMap[macro.ORIENTATION_PORTRAIT] = Orientation$1.PORTRAIT, _orientationMap); + var View = exports('fz', function (_Eventify) { + _inheritsLoose(View, _Eventify); + function View() { + var _this; + _this = _Eventify.call(this) || this; + _this._designResolutionSize = void 0; + _this._scaleX = void 0; + _this._scaleY = void 0; + _this._viewportRect = void 0; + _this._visibleRect = void 0; + _this._autoFullScreen = void 0; + _this._retinaEnabled = void 0; + _this._resizeCallback = void 0; + _this._resolutionPolicy = void 0; + _this._rpExactFit = void 0; + _this._rpShowAll = void 0; + _this._rpNoBorder = void 0; + _this._rpFixedHeight = void 0; + _this._rpFixedWidth = void 0; + var _strategyer = ContainerStrategy; + var _strategy = ContentStrategy; + _this._designResolutionSize = new Size$1(0, 0); + _this._scaleX = 1; + _this._scaleY = 1; + _this._viewportRect = new Rect$1(0, 0, 0, 0); + _this._visibleRect = new Rect$1(0, 0, 0, 0); + _this._autoFullScreen = false; + _this._retinaEnabled = false; + _this._resizeCallback = null; + _this._rpExactFit = new ResolutionPolicy(_strategyer.EQUAL_TO_FRAME, _strategy.EXACT_FIT); + _this._rpShowAll = new ResolutionPolicy(_strategyer.EQUAL_TO_FRAME, _strategy.SHOW_ALL); + _this._rpNoBorder = new ResolutionPolicy(_strategyer.EQUAL_TO_FRAME, _strategy.NO_BORDER); + _this._rpFixedHeight = new ResolutionPolicy(_strategyer.EQUAL_TO_FRAME, _strategy.FIXED_HEIGHT); + _this._rpFixedWidth = new ResolutionPolicy(_strategyer.EQUAL_TO_FRAME, _strategy.FIXED_WIDTH); + _this._resolutionPolicy = _this._rpShowAll; + return _this; + } + var _proto = View.prototype; + _proto.init = function init() { + var windowSize = screen.windowSize; + var w = windowSize.width; + var h = windowSize.height; + this._designResolutionSize.width = w; + this._designResolutionSize.height = h; + this._viewportRect.width = w; + this._viewportRect.height = h; + this._visibleRect.width = w; + this._visibleRect.height = h; + localWinSize.width = this._visibleRect.width; + localWinSize.height = this._visibleRect.height; + if (visibleRect) { + visibleRect.init(this._visibleRect); + } + { + this.resizeWithBrowserSize(true); + var designResolution = settings.querySettings(Settings.Category.SCREEN, 'designResolution'); + if (designResolution) { + this.setDesignResolutionSize(Number(designResolution.width), Number(designResolution.height), designResolution.policy || ResolutionPolicy.FIXED_HEIGHT); + } + } + screen.on('window-resize', this._updateAdaptResult, this); + screen.on('orientation-change', this._updateAdaptResult, this); + screen.on('fullscreen-change', this._updateAdaptResult, this); + }; + _proto.resizeWithBrowserSize = function resizeWithBrowserSize(enabled) { + screenAdapter.handleResizeEvent = enabled; + }; + _proto.setResizeCallback = function setResizeCallback(callback) { + if (typeof callback === 'function' || callback == null) { + this._resizeCallback = callback; + } + }; + _proto.setOrientation = function setOrientation(orientation) { + screenAdapter.orientation = orientationMap[orientation]; + }; + _proto.adjustViewportMeta = function adjustViewportMeta(enabled) {}; + _proto.enableRetina = function enableRetina(enabled) { + this._retinaEnabled = !!enabled; + }; + _proto.isRetinaEnabled = function isRetinaEnabled() { + return this._retinaEnabled; + }; + _proto.enableAutoFullScreen = function enableAutoFullScreen(enabled) { + if (enabled === this._autoFullScreen) { + return; + } + this._autoFullScreen = enabled; + if (enabled) { + screen.requestFullScreen()["catch"](function (e) {}); + } + }; + _proto.isAutoFullScreenEnabled = function isAutoFullScreenEnabled() { + return this._autoFullScreen; + }; + _proto.setCanvasSize = function setCanvasSize(width, height) { + screenAdapter.resolutionScale = 1; + var dpr = screenAdapter.devicePixelRatio; + var windowSize = new Size$1(width * dpr, height * dpr); + screen.windowSize = windowSize; + }; + _proto.getCanvasSize = function getCanvasSize() { + return screen.windowSize; + }; + _proto.getFrameSize = function getFrameSize() { + var dpr = screenAdapter.devicePixelRatio; + var sizeInCssPixels = screen.windowSize; + sizeInCssPixels.width /= dpr; + sizeInCssPixels.height /= dpr; + return sizeInCssPixels; + }; + _proto.setFrameSize = function setFrameSize(width, height) { + var dpr = screenAdapter.devicePixelRatio; + screen.windowSize = new Size$1(width * dpr, height * dpr); + }; + _proto.getVisibleSize = function getVisibleSize() { + return new Size$1(this._visibleRect.width, this._visibleRect.height); + }; + _proto.getVisibleSizeInPixel = function getVisibleSizeInPixel() { + return new Size$1(this._visibleRect.width * this._scaleX, this._visibleRect.height * this._scaleY); + }; + _proto.getVisibleOrigin = function getVisibleOrigin() { + return new Vec2(this._visibleRect.x, this._visibleRect.y); + }; + _proto.getVisibleOriginInPixel = function getVisibleOriginInPixel() { + return new Vec2(this._visibleRect.x * this._scaleX, this._visibleRect.y * this._scaleY); + }; + _proto.getResolutionPolicy = function getResolutionPolicy() { + return this._resolutionPolicy; + }; + _proto._updateResolutionPolicy = function _updateResolutionPolicy(resolutionPolicy) { + if (resolutionPolicy instanceof ResolutionPolicy) { + this._resolutionPolicy = resolutionPolicy; + } else { + var _locPolicy = ResolutionPolicy; + if (resolutionPolicy === _locPolicy.EXACT_FIT) { + this._resolutionPolicy = this._rpExactFit; + } + if (resolutionPolicy === _locPolicy.SHOW_ALL) { + this._resolutionPolicy = this._rpShowAll; + } + if (resolutionPolicy === _locPolicy.NO_BORDER) { + this._resolutionPolicy = this._rpNoBorder; + } + if (resolutionPolicy === _locPolicy.FIXED_HEIGHT) { + this._resolutionPolicy = this._rpFixedHeight; + } + if (resolutionPolicy === _locPolicy.FIXED_WIDTH) { + this._resolutionPolicy = this._rpFixedWidth; + } + } + }; + _proto.setResolutionPolicy = function setResolutionPolicy(resolutionPolicy) { + this._updateResolutionPolicy(resolutionPolicy); + var designedResolution = view.getDesignResolutionSize(); + view.setDesignResolutionSize(designedResolution.width, designedResolution.height, resolutionPolicy); + }; + _proto.setDesignResolutionSize = function setDesignResolutionSize(width, height, resolutionPolicy) { + if (!(width > 0 && height > 0)) { + errorID(2200); + return; + } + this._updateResolutionPolicy(resolutionPolicy); + var policy = this._resolutionPolicy; + if (policy) { + policy.preApply(this); + } + this._designResolutionSize.width = width; + this._designResolutionSize.height = height; + var result = policy.apply(this, this._designResolutionSize); + if (result.scale && result.scale.length === 2) { + this._scaleX = result.scale[0]; + this._scaleY = result.scale[1]; + } + if (result.viewport) { + var vp = this._viewportRect; + var vb = this._visibleRect; + var rv = result.viewport; + vp.x = rv.x; + vp.y = rv.y; + vp.width = rv.width; + vp.height = rv.height; + vb.x = 0; + vb.y = 0; + vb.width = rv.width / this._scaleX; + vb.height = rv.height / this._scaleY; + } + policy.postApply(this); + localWinSize.width = this._visibleRect.width; + localWinSize.height = this._visibleRect.height; + if (visibleRect) { + visibleRect.init(this._visibleRect); + } + this.emit('design-resolution-changed'); + }; + _proto.getDesignResolutionSize = function getDesignResolutionSize() { + return new Size$1(this._designResolutionSize.width, this._designResolutionSize.height); + }; + _proto.setRealPixelResolution = function setRealPixelResolution(width, height, resolutionPolicy) { + { + document.documentElement.style.width = width + "px"; + document.body.style.width = width + "px"; + document.body.style.left = '0px'; + document.body.style.top = '0px'; + } + this.setDesignResolutionSize(width, height, resolutionPolicy); + }; + _proto.getViewportRect = function getViewportRect() { + return this._viewportRect; + }; + _proto.getScaleX = function getScaleX() { + return this._scaleX; + }; + _proto.getScaleY = function getScaleY() { + return this._scaleY; + }; + _proto.getDevicePixelRatio = function getDevicePixelRatio() { + return screenAdapter.devicePixelRatio; + }; + _proto.convertToLocationInView = function convertToLocationInView(tx, ty, relatedPos, out) { + if (out === void 0) { + out = new Vec2(); + } + var x = screenAdapter.devicePixelRatio * (tx - relatedPos.left); + var y = screenAdapter.devicePixelRatio * (relatedPos.top + relatedPos.height - ty); + if (screenAdapter.isFrameRotated) { + out.x = screen.windowSize.width - y; + out.y = x; + } else { + out.x = x; + out.y = y; + } + return out; + }; + _proto._convertToUISpace = function _convertToUISpace(point) { + var viewport = this._viewportRect; + point.x = (point.x - viewport.x) / this._scaleX; + point.y = (point.y - viewport.y) / this._scaleY; + }; + _proto._updateAdaptResult = function _updateAdaptResult(width, height, windowId) { + var _this$_resizeCallback; + legacyCC.director.root.resize(width, height, windowId === undefined || windowId === 0 ? 1 : windowId); + var w = this._designResolutionSize.width; + var h = this._designResolutionSize.height; + if (width > 0) { + this.setDesignResolutionSize(w, h, this._resolutionPolicy); + } + this.emit('canvas-resize'); + (_this$_resizeCallback = this._resizeCallback) === null || _this$_resizeCallback === void 0 ? void 0 : _this$_resizeCallback.call(this); + }; + return View; + }(Eventify(System))); + View.instance = void 0; + var ContainerStrategy = function () { + function ContainerStrategy() { + this.name = 'ContainerStrategy'; + } + var _proto2 = ContainerStrategy.prototype; + _proto2.preApply = function preApply(_view) {}; + _proto2.apply = function apply(_view, designedResolution) {}; + _proto2.postApply = function postApply(_view) {}; + _proto2._setupCanvas = function _setupCanvas() { + var locCanvas = legacyCC.game.canvas; + if (locCanvas) { + var windowSize = screen.windowSize; + if (locCanvas.width !== windowSize.width) { + locCanvas.width = windowSize.width; + } + if (locCanvas.height !== windowSize.height) { + locCanvas.height = windowSize.height; + } + } + }; + return ContainerStrategy; + }(); + ContainerStrategy.EQUAL_TO_FRAME = void 0; + ContainerStrategy.PROPORTION_TO_FRAME = void 0; + var ContentStrategy = function () { + function ContentStrategy() { + this.name = 'ContentStrategy'; + this._result = void 0; + this._result = { + scale: [1, 1], + viewport: null + }; + } + var _proto3 = ContentStrategy.prototype; + _proto3.preApply = function preApply(_view) {}; + _proto3.apply = function apply(_view, designedResolution) { + return { + scale: [1, 1] + }; + }; + _proto3.postApply = function postApply(_view) {}; + _proto3._buildResult = function _buildResult(containerW, containerH, contentW, contentH, scaleX, scaleY) { + if (Math.abs(containerW - contentW) < 2) { + contentW = containerW; + } + if (Math.abs(containerH - contentH) < 2) { + contentH = containerH; + } + var viewport = new Rect$1(Math.round((containerW - contentW) / 2), Math.round((containerH - contentH) / 2), contentW, contentH); + this._result.scale = [scaleX, scaleY]; + this._result.viewport = viewport; + return this._result; + }; + return ContentStrategy; + }(); + ContentStrategy.EXACT_FIT = void 0; + ContentStrategy.SHOW_ALL = void 0; + ContentStrategy.NO_BORDER = void 0; + ContentStrategy.FIXED_HEIGHT = void 0; + ContentStrategy.FIXED_WIDTH = void 0; + (function () { + var EqualToFrame = function (_ContainerStrategy) { + _inheritsLoose(EqualToFrame, _ContainerStrategy); + function EqualToFrame() { + var _this2; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this2 = _ContainerStrategy.call.apply(_ContainerStrategy, [this].concat(args)) || this; + _this2.name = 'EqualToFrame'; + return _this2; + } + var _proto4 = EqualToFrame.prototype; + _proto4.apply = function apply(_view, designedResolution) { + screenAdapter.isProportionalToFrame = false; + this._setupCanvas(); + }; + return EqualToFrame; + }(ContainerStrategy); + var ProportionalToFrame = function (_ContainerStrategy2) { + _inheritsLoose(ProportionalToFrame, _ContainerStrategy2); + function ProportionalToFrame() { + var _this3; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + _this3 = _ContainerStrategy2.call.apply(_ContainerStrategy2, [this].concat(args)) || this; + _this3.name = 'ProportionalToFrame'; + return _this3; + } + var _proto5 = ProportionalToFrame.prototype; + _proto5.apply = function apply(_view, designedResolution) { + screenAdapter.isProportionalToFrame = true; + this._setupCanvas(); + }; + return ProportionalToFrame; + }(ContainerStrategy); + ContainerStrategy.EQUAL_TO_FRAME = new EqualToFrame(); + ContainerStrategy.PROPORTION_TO_FRAME = new ProportionalToFrame(); + var ExactFit = function (_ContentStrategy) { + _inheritsLoose(ExactFit, _ContentStrategy); + function ExactFit() { + var _this4; + for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; + } + _this4 = _ContentStrategy.call.apply(_ContentStrategy, [this].concat(args)) || this; + _this4.name = 'ExactFit'; + return _this4; + } + var _proto6 = ExactFit.prototype; + _proto6.apply = function apply(_view, designedResolution) { + var windowSize = screen.windowSize; + var containerW = windowSize.width; + var containerH = windowSize.height; + var scaleX = containerW / designedResolution.width; + var scaleY = containerH / designedResolution.height; + return this._buildResult(containerW, containerH, containerW, containerH, scaleX, scaleY); + }; + return ExactFit; + }(ContentStrategy); + var ShowAll = function (_ContentStrategy2) { + _inheritsLoose(ShowAll, _ContentStrategy2); + function ShowAll() { + var _this5; + for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + args[_key4] = arguments[_key4]; + } + _this5 = _ContentStrategy2.call.apply(_ContentStrategy2, [this].concat(args)) || this; + _this5.name = 'ShowAll'; + return _this5; + } + var _proto7 = ShowAll.prototype; + _proto7.apply = function apply(_view, designedResolution) { + var windowSize = screen.windowSize; + var containerW = windowSize.width; + var containerH = windowSize.height; + var designW = designedResolution.width; + var designH = designedResolution.height; + var scaleX = containerW / designW; + var scaleY = containerH / designH; + var scale = 0; + var contentW; + var contentH; + if (scaleX < scaleY) { + scale = scaleX; + contentW = containerW; + contentH = designH * scale; + } else { + scale = scaleY; + contentW = designW * scale; + contentH = containerH; + } + return this._buildResult(containerW, containerH, contentW, contentH, scale, scale); + }; + return ShowAll; + }(ContentStrategy); + var NoBorder = function (_ContentStrategy3) { + _inheritsLoose(NoBorder, _ContentStrategy3); + function NoBorder() { + var _this6; + for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { + args[_key5] = arguments[_key5]; + } + _this6 = _ContentStrategy3.call.apply(_ContentStrategy3, [this].concat(args)) || this; + _this6.name = 'NoBorder'; + return _this6; + } + var _proto8 = NoBorder.prototype; + _proto8.apply = function apply(_view, designedResolution) { + var windowSize = screen.windowSize; + var containerW = windowSize.width; + var containerH = windowSize.height; + var designW = designedResolution.width; + var designH = designedResolution.height; + var scaleX = containerW / designW; + var scaleY = containerH / designH; + var scale; + var contentW; + var contentH; + if (scaleX < scaleY) { + scale = scaleY; + contentW = designW * scale; + contentH = containerH; + } else { + scale = scaleX; + contentW = containerW; + contentH = designH * scale; + } + return this._buildResult(containerW, containerH, contentW, contentH, scale, scale); + }; + return NoBorder; + }(ContentStrategy); + var FixedHeight = function (_ContentStrategy4) { + _inheritsLoose(FixedHeight, _ContentStrategy4); + function FixedHeight() { + var _this7; + for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { + args[_key6] = arguments[_key6]; + } + _this7 = _ContentStrategy4.call.apply(_ContentStrategy4, [this].concat(args)) || this; + _this7.name = 'FixedHeight'; + return _this7; + } + var _proto9 = FixedHeight.prototype; + _proto9.apply = function apply(_view, designedResolution) { + var windowSize = screen.windowSize; + var containerW = windowSize.width; + var containerH = windowSize.height; + var designH = designedResolution.height; + var scale = containerH / designH; + var contentW = containerW; + var contentH = containerH; + return this._buildResult(containerW, containerH, contentW, contentH, scale, scale); + }; + return FixedHeight; + }(ContentStrategy); + var FixedWidth = function (_ContentStrategy5) { + _inheritsLoose(FixedWidth, _ContentStrategy5); + function FixedWidth() { + var _this8; + for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { + args[_key7] = arguments[_key7]; + } + _this8 = _ContentStrategy5.call.apply(_ContentStrategy5, [this].concat(args)) || this; + _this8.name = 'FixedWidth'; + return _this8; + } + var _proto10 = FixedWidth.prototype; + _proto10.apply = function apply(_view, designedResolution) { + var windowSize = screen.windowSize; + var containerW = windowSize.width; + var containerH = windowSize.height; + var designW = designedResolution.width; + var scale = containerW / designW; + var contentW = containerW; + var contentH = containerH; + return this._buildResult(containerW, containerH, contentW, contentH, scale, scale); + }; + return FixedWidth; + }(ContentStrategy); + ContentStrategy.EXACT_FIT = new ExactFit(); + ContentStrategy.SHOW_ALL = new ShowAll(); + ContentStrategy.NO_BORDER = new NoBorder(); + ContentStrategy.FIXED_HEIGHT = new FixedHeight(); + ContentStrategy.FIXED_WIDTH = new FixedWidth(); + })(); + var ResolutionPolicy = exports('fA', function () { + function ResolutionPolicy(containerStg, contentStg) { + this.name = 'ResolutionPolicy'; + this._containerStrategy = void 0; + this._contentStrategy = void 0; + this._containerStrategy = null; + this._contentStrategy = null; + this.setContainerStrategy(containerStg); + this.setContentStrategy(contentStg); + } + var _proto11 = ResolutionPolicy.prototype; + _proto11.preApply = function preApply(_view) { + this._contentStrategy.preApply(_view); + }; + _proto11.apply = function apply(_view, designedResolution) { + this._containerStrategy.apply(_view, designedResolution); + return this._contentStrategy.apply(_view, designedResolution); + }; + _proto11.postApply = function postApply(_view) { + this._contentStrategy.postApply(_view); + }; + _proto11.setContainerStrategy = function setContainerStrategy(containerStg) { + if (containerStg instanceof ContainerStrategy) { + this._containerStrategy = containerStg; + } + }; + _proto11.setContentStrategy = function setContentStrategy(contentStg) { + if (contentStg instanceof ContentStrategy) { + this._contentStrategy = contentStg; + } + }; + _createClass(ResolutionPolicy, [{ + key: "canvasSize", + get: function get() { + return screen.windowSize; + } + }]); + return ResolutionPolicy; + }()); + ResolutionPolicy.EXACT_FIT = 0; + ResolutionPolicy.NO_BORDER = 1; + ResolutionPolicy.SHOW_ALL = 2; + ResolutionPolicy.FIXED_HEIGHT = 3; + ResolutionPolicy.FIXED_WIDTH = 4; + ResolutionPolicy.UNKNOWN = 5; + ResolutionPolicy.ContainerStrategy = ContainerStrategy; + ResolutionPolicy.ContentStrategy = ContentStrategy; + legacyCC.ResolutionPolicy = ResolutionPolicy; + var view = exports('fB', View.instance = legacyCC.view = new View()); + director.registerSystem('view', view, 0); + legacyCC.winSize = localWinSize; + + var _dec$1n, _dec2$10, _dec3$L, _class$1n; + var RenderRoot2D = exports('R', (_dec$1n = ccclass$t('cc.RenderRoot2D'), _dec2$10 = executionOrder$1(100), _dec3$L = requireComponent(UITransform), _dec$1n(_class$1n = _dec2$10(_class$1n = _dec3$L(_class$1n = disallowMultiple$1(_class$1n = function (_Component) { + _inheritsLoose(RenderRoot2D, _Component); + function RenderRoot2D() { + return _Component.apply(this, arguments) || this; + } + var _proto = RenderRoot2D.prototype; + _proto.onEnable = function onEnable() { + legacyCC.director.root.batcher2D.addScreen(this); + }; + _proto.onDisable = function onDisable() { + legacyCC.director.root.batcher2D.removeScreen(this); + }; + _proto.onDestroy = function onDestroy() { + legacyCC.director.root.batcher2D.removeScreen(this); + }; + return RenderRoot2D; + }(Component)) || _class$1n) || _class$1n) || _class$1n) || _class$1n)); + + var _dec$1m, _dec2$$, _dec3$K, _dec4$v, _class$1m, _class2$1b, _initializer$14, _initializer2$T; + var _worldPos = new Vec3(); + var RenderMode = Enum({ + OVERLAY: 0, + INTERSPERSE: 1 + }); + var Canvas = exports('C', (_dec$1m = ccclass$t('cc.Canvas'), _dec2$$ = executionOrder$1(100), _dec3$K = type$8(Camera), _dec4$v = type$8(Camera), _dec$1m(_class$1m = _dec2$$(_class$1m = disallowMultiple$1(_class$1m = (_class2$1b = function (_RenderRoot2D) { + _inheritsLoose(Canvas, _RenderRoot2D); + function Canvas() { + var _this; + _this = _RenderRoot2D.call(this) || this; + _this._cameraComponent = _initializer$14 && _initializer$14(); + _this._alignCanvasWithScreen = _initializer2$T && _initializer2$T(); + _this._thisOnCameraResized = void 0; + _this.fitDesignResolution_EDITOR = void 0; + _this._pos = new Vec3(); + _this._renderMode = RenderMode.OVERLAY; + _this._thisOnCameraResized = _this._onResizeCamera.bind(_assertThisInitialized(_this)); + return _this; + } + var _proto = Canvas.prototype; + _proto.__preload = function __preload() { + var widget = this.getComponent('cc.Widget'); + if (widget) { + widget.updateAlignment(); + } + { + if (this._cameraComponent) { + this._cameraComponent._createCamera(); + this._cameraComponent.node.on(Camera.TARGET_TEXTURE_CHANGE, this._thisOnCameraResized); + } + } + this._onResizeCamera(); + { + this.node.on(NodeEventType.TRANSFORM_CHANGED, this._thisOnCameraResized); + } + }; + _proto.onEnable = function onEnable() { + _RenderRoot2D.prototype.onEnable.call(this); + if (this._cameraComponent) { + this._cameraComponent.node.on(Camera.TARGET_TEXTURE_CHANGE, this._thisOnCameraResized); + } + }; + _proto.onDisable = function onDisable() { + _RenderRoot2D.prototype.onDisable.call(this); + if (this._cameraComponent) { + this._cameraComponent.node.off(Camera.TARGET_TEXTURE_CHANGE, this._thisOnCameraResized); + } + }; + _proto.onDestroy = function onDestroy() { + _RenderRoot2D.prototype.onDestroy.call(this); + this.node.off(NodeEventType.TRANSFORM_CHANGED, this._thisOnCameraResized); + }; + _proto._onResizeCamera = function _onResizeCamera() { + if (this._cameraComponent && this._alignCanvasWithScreen) { + if (this._cameraComponent.targetTexture) { + this._cameraComponent.orthoHeight = visibleRect.height / 2; + } else { + var size = screen.windowSize; + this._cameraComponent.orthoHeight = size.height / view.getScaleY() / 2; + } + this.node.getWorldPosition(_worldPos); + this._cameraComponent.node.setWorldPosition(_worldPos.x, _worldPos.y, 1000); + } + }; + _proto._getViewPriority = function _getViewPriority() { + if (this._cameraComponent) { + var _this$cameraComponent; + var priority = (_this$cameraComponent = this.cameraComponent) === null || _this$cameraComponent === void 0 ? void 0 : _this$cameraComponent.priority; + priority = this._renderMode === RenderMode.OVERLAY ? priority | 1 << 30 : priority & ~(1 << 30); + return priority; + } + return 0; + }; + _createClass(Canvas, [{ + key: "renderMode", + get: function get() { + return this._renderMode; + }, + set: function set(val) { + this._renderMode = val; + if (this._cameraComponent) { + this._cameraComponent.priority = this._getViewPriority(); + } + } + }, { + key: "cameraComponent", + get: function get() { + return this._cameraComponent; + }, + set: function set(value) { + if (this._cameraComponent === value) { + return; + } + this._cameraComponent = value; + this._onResizeCamera(); + } + }, { + key: "alignCanvasWithScreen", + get: function get() { + return this._alignCanvasWithScreen; + }, + set: function set(value) { + this._alignCanvasWithScreen = value; + this._onResizeCamera(); + } + }]); + return Canvas; + }(RenderRoot2D), (_applyDecoratedDescriptor(_class2$1b.prototype, "cameraComponent", [_dec3$K], Object.getOwnPropertyDescriptor(_class2$1b.prototype, "cameraComponent"), _class2$1b.prototype), _initializer$14 = applyDecoratedInitializer(_class2$1b.prototype, "_cameraComponent", [_dec4$v], function () { + return null; + }), _initializer2$T = applyDecoratedInitializer(_class2$1b.prototype, "_alignCanvasWithScreen", [serializable$9], function () { + return true; + })), _class2$1b)) || _class$1m) || _class$1m) || _class$1m)); + legacyCC.Canvas = Canvas; + + var _dec$1l, _dec2$_, _dec3$J, _class$1l; + var UIComponent = exports('U', (_dec$1l = ccclass$t('cc.UIComponent'), _dec2$_ = requireComponent(UITransform), _dec3$J = executionOrder$1(110), _dec$1l(_class$1l = _dec2$_(_class$1l = _dec3$J(_class$1l = disallowMultiple$1(_class$1l = function (_Component) { + _inheritsLoose(UIComponent, _Component); + function UIComponent() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this._lastParent = null; + _this.stencilStage = Stage.DISABLED; + return _this; + } + var _proto = UIComponent.prototype; + _proto.__preload = function __preload() { + this.node._uiProps.uiComp = this; + }; + _proto.onEnable = function onEnable() {}; + _proto.onDisable = function onDisable() {}; + _proto.onDestroy = function onDestroy() { + if (this.node._uiProps.uiComp === this) { + this.node._uiProps.uiComp = null; + } + }; + _proto.postUpdateAssembler = function postUpdateAssembler(render) {}; + _proto.markForUpdateRenderData = function markForUpdateRenderData(enable) { + }; + _proto.setNodeDirty = function setNodeDirty() {}; + _proto.setTextureDirty = function setTextureDirty() {}; + return UIComponent; + }(Component)) || _class$1l) || _class$1l) || _class$1l) || _class$1l)); + + removeProperty(UIComponent.prototype, 'UIComponent', [{ + name: '_visibility' + }, { + name: 'setVisibility' + }]); + replaceProperty(Canvas.prototype, 'Canvas.prototype', [{ + name: 'camera', + newName: 'cameraComponent.camera', + customGetter: function customGetter() { + var _this$_cameraComponen; + return (_this$_cameraComponen = this._cameraComponent) === null || _this$_cameraComponen === void 0 ? void 0 : _this$_cameraComponen.camera; + } + }, { + name: 'clearFlag', + newName: 'cameraComponent.clearFlags', + customGetter: function customGetter() { + return this._cameraComponent ? this._cameraComponent.clearFlags : 0; + }, + customSetter: function customSetter(val) { + if (this._cameraComponent) this._cameraComponent.clearFlags = val; + } + }, { + name: 'color', + newName: 'cameraComponent.clearColor', + customGetter: function customGetter() { + return this._cameraComponent ? this._cameraComponent.clearColor : Color$1.BLACK; + }, + customSetter: function customSetter(val) { + if (this._cameraComponent) this._cameraComponent.clearColor = val; + } + }, { + name: 'priority', + newName: 'cameraComponent.priority', + customGetter: function customGetter() { + return this._cameraComponent ? this._cameraComponent.priority : 0; + }, + customSetter: function customSetter(val) { + if (this._cameraComponent) this._cameraComponent.priority = val; + } + }, { + name: 'targetTexture', + newName: 'cameraComponent.targetTexture', + customGetter: function customGetter() { + return this._cameraComponent ? this._cameraComponent.targetTexture : null; + }, + customSetter: function customSetter(value) { + if (this._cameraComponent) this._cameraComponent.targetTexture = value; + } + }, { + name: 'visibility', + newName: 'cameraComponent.visibility', + customGetter: function customGetter() { + return this._cameraComponent ? this._cameraComponent.visibility : 0; + } + }]); + markAsWarning(UITransform.prototype, 'UITransform.prototype', [{ + name: 'priority', + suggest: "Please use setSiblingIndex to change index of the current node in its parent's children array." + }]); + legacyCC.UITransformComponent = UITransform; + setClassAlias(UITransform, 'cc.UITransformComponent'); + setClassAlias(UIRenderer, 'cc.RenderComponent'); + legacyCC.CanvasComponent = Canvas; + setClassAlias(Canvas, 'cc.CanvasComponent'); + legacyCC.internal.Renderable2D = UIRenderer; + setClassAlias(UIRenderer, 'cc.Renderable2D'); + + function rayAABB2(ray, min, max) { + var o = ray.o; + var d = ray.d; + var ix = 1 / d.x; + var iy = 1 / d.y; + var iz = 1 / d.z; + var t1 = (min.x - o.x) * ix; + var t2 = (max.x - o.x) * ix; + var t3 = (min.y - o.y) * iy; + var t4 = (max.y - o.y) * iy; + var t5 = (min.z - o.z) * iz; + var t6 = (max.z - o.z) * iz; + var tmin = Math.max(Math.max(Math.min(t1, t2), Math.min(t3, t4)), Math.min(t5, t6)); + var tmax = Math.min(Math.min(Math.max(t1, t2), Math.max(t3, t4)), Math.max(t5, t6)); + if (tmax < 0 || tmin > tmax) { + return 0; + } + return tmin > 0 ? tmin : tmax; + } + var raySubMesh = function () { + var tri = Triangle.create(); + var deOpt = { + distance: Infinity, + doubleSided: false, + mode: ERaycastMode.ANY + }; + var minDis = 0; + var fillResult = function fillResult(m, d, i0, i1, i2, r) { + if (m === ERaycastMode.CLOSEST) { + if (minDis > d || minDis === 0) { + minDis = d; + if (r) { + if (r.length === 0) { + r.push({ + distance: d, + vertexIndex0: i0 / 3, + vertexIndex1: i1 / 3, + vertexIndex2: i2 / 3 + }); + } else { + r[0].distance = d; + r[0].vertexIndex0 = i0 / 3; + r[0].vertexIndex1 = i1 / 3; + r[0].vertexIndex2 = i2 / 3; + } + } + } + } else { + minDis = d; + if (r) r.push({ + distance: d, + vertexIndex0: i0 / 3, + vertexIndex1: i1 / 3, + vertexIndex2: i2 / 3 + }); + } + }; + var narrowphase = function narrowphase(vb, ib, pm, ray, opt) { + if (pm === PrimitiveMode.TRIANGLE_LIST) { + var cnt = ib.length; + for (var j = 0; j < cnt; j += 3) { + var i0 = ib[j] * 3; + var i1 = ib[j + 1] * 3; + var i2 = ib[j + 2] * 3; + Vec3.set(tri.a, vb[i0], vb[i0 + 1], vb[i0 + 2]); + Vec3.set(tri.b, vb[i1], vb[i1 + 1], vb[i1 + 2]); + Vec3.set(tri.c, vb[i2], vb[i2 + 1], vb[i2 + 2]); + var dist = intersect.rayTriangle(ray, tri, opt.doubleSided); + if (dist === 0 || dist > opt.distance) continue; + fillResult(opt.mode, dist, i0, i1, i2, opt.result); + if (opt.mode === ERaycastMode.ANY) return dist; + } + } else if (pm === PrimitiveMode.TRIANGLE_STRIP) { + var _cnt = ib.length - 2; + var rev = 0; + for (var _j = 0; _j < _cnt; _j += 1) { + var _i = ib[_j - rev] * 3; + var _i2 = ib[_j + rev + 1] * 3; + var _i3 = ib[_j + 2] * 3; + Vec3.set(tri.a, vb[_i], vb[_i + 1], vb[_i + 2]); + Vec3.set(tri.b, vb[_i2], vb[_i2 + 1], vb[_i2 + 2]); + Vec3.set(tri.c, vb[_i3], vb[_i3 + 1], vb[_i3 + 2]); + rev = ~rev; + var _dist = intersect.rayTriangle(ray, tri, opt.doubleSided); + if (_dist === 0 || _dist > opt.distance) continue; + fillResult(opt.mode, _dist, _i, _i2, _i3, opt.result); + if (opt.mode === ERaycastMode.ANY) return _dist; + } + } else if (pm === PrimitiveMode.TRIANGLE_FAN) { + var _cnt2 = ib.length - 1; + var _i4 = ib[0] * 3; + Vec3.set(tri.a, vb[_i4], vb[_i4 + 1], vb[_i4 + 2]); + for (var _j2 = 1; _j2 < _cnt2; _j2 += 1) { + var _i5 = ib[_j2] * 3; + var _i6 = ib[_j2 + 1] * 3; + Vec3.set(tri.b, vb[_i5], vb[_i5 + 1], vb[_i5 + 2]); + Vec3.set(tri.c, vb[_i6], vb[_i6 + 1], vb[_i6 + 2]); + var _dist2 = intersect.rayTriangle(ray, tri, opt.doubleSided); + if (_dist2 === 0 || _dist2 > opt.distance) continue; + fillResult(opt.mode, _dist2, _i4, _i5, _i6, opt.result); + if (opt.mode === ERaycastMode.ANY) return _dist2; + } + } + return minDis; + }; + return function (ray, submesh, options) { + minDis = 0; + if (submesh.geometricInfo.positions.length === 0) return minDis; + var opt = options === undefined ? deOpt : options; + var min = submesh.geometricInfo.boundingBox.min; + var max = submesh.geometricInfo.boundingBox.max; + if (rayAABB2(ray, min, max)) { + var pm = submesh.primitiveMode; + var _submesh$geometricInf = submesh.geometricInfo, + vb = _submesh$geometricInf.positions, + ib = _submesh$geometricInf.indices; + narrowphase(vb, ib, pm, ray, opt); + } + return minDis; + }; + }(); + var rayMesh = function () { + var minDis = 0; + var deOpt = { + distance: Infinity, + doubleSided: false, + mode: ERaycastMode.ANY + }; + return function (ray, mesh, options) { + minDis = 0; + var opt = options === undefined ? deOpt : options; + var length = mesh.renderingSubMeshes.length; + var min = mesh.struct.minPosition; + var max = mesh.struct.maxPosition; + if (min && max && !rayAABB2(ray, min, max)) return minDis; + for (var i = 0; i < length; i++) { + var sm = mesh.renderingSubMeshes[i]; + var dis = raySubMesh(ray, sm, opt); + if (dis) { + if (opt.mode === ERaycastMode.CLOSEST) { + if (minDis === 0 || minDis > dis) { + minDis = dis; + if (opt.subIndices) opt.subIndices[0] = i; + } + } else { + minDis = dis; + if (opt.subIndices) opt.subIndices.push(i); + if (opt.mode === ERaycastMode.ANY) { + return dis; + } + } + } + } + if (minDis && opt.mode === ERaycastMode.CLOSEST) { + if (opt.result) { + opt.result[0].distance = minDis; + opt.result.length = 1; + } + if (opt.subIndices) opt.subIndices.length = 1; + } + return minDis; + }; + }(); + var rayModel = function () { + var minDis = 0; + var deOpt = { + distance: Infinity, + doubleSided: false, + mode: ERaycastMode.ANY + }; + var modelRay = new Ray(); + var m4 = new Mat4(); + return function (r, model, options) { + minDis = 0; + var opt = options === undefined ? deOpt : options; + var wb = model.worldBounds; + if (wb && !intersect.rayAABB(r, wb)) return minDis; + Ray.copy(modelRay, r); + if (model.node) { + Mat4.invert(m4, model.node.getWorldMatrix(m4)); + Vec3.transformMat4(modelRay.o, r.o, m4); + Vec3.transformMat4Normal(modelRay.d, r.d, m4); + } + var subModels = model.subModels; + for (var i = 0; i < subModels.length; i++) { + var subMesh = subModels[i].subMesh; + var dis = raySubMesh(modelRay, subMesh, opt); + if (dis) { + if (opt.mode === ERaycastMode.CLOSEST) { + if (minDis === 0 || minDis > dis) { + minDis = dis; + if (opt.subIndices) opt.subIndices[0] = i; + } + } else { + minDis = dis; + if (opt.subIndices) opt.subIndices.push(i); + if (opt.mode === ERaycastMode.ANY) { + return dis; + } + } + } + } + if (minDis && opt.mode === ERaycastMode.CLOSEST) { + if (opt.result) { + opt.result[0].distance = minDis; + opt.result.length = 1; + } + if (opt.subIndices) opt.subIndices.length = 1; + } + return minDis; + }; + }(); + intersect.rayModel = rayModel; + intersect.raySubMesh = raySubMesh; + intersect.rayMesh = rayMesh; + + var _dec$1k, _class$1k, _class2$1a, _initializer$13; + getPhaseID('specular-pass'); + var ModelRenderer = exports('dF', (_dec$1k = ccclass$t('cc.ModelRenderer'), _dec$1k(_class$1k = (_class2$1a = function (_Renderer) { + _inheritsLoose(ModelRenderer, _Renderer); + function ModelRenderer() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Renderer.call.apply(_Renderer, [this].concat(args)) || this; + _this._visFlags = _initializer$13 && _initializer$13(); + _this._models = []; + _this._priority = 0; + return _this; + } + var _proto = ModelRenderer.prototype; + _proto._collectModels = function _collectModels() { + return this._models; + }; + _proto.onEnable = function onEnable() { + this._updatePriority(); + }; + _proto._attachToScene = function _attachToScene() {}; + _proto._detachFromScene = function _detachFromScene() {}; + _proto._onVisibilityChange = function _onVisibilityChange(val) {}; + _proto._updatePriority = function _updatePriority() { + if (this._models.length > 0) { + for (var i = 0; i < this._models.length; i++) { + this._models[i].priority = this._priority; + } + } + }; + _createClass(ModelRenderer, [{ + key: "visibility", + get: function get() { + return this._visFlags; + }, + set: function set(val) { + this._visFlags = val; + this._onVisibilityChange(val); + } + }, { + key: "priority", + get: function get() { + return this._priority; + }, + set: function set(val) { + if (val === this._priority) return; + this._priority = val; + this._updatePriority(); + } + }]); + return ModelRenderer; + }(Renderer), (_initializer$13 = applyDecoratedInitializer(_class2$1a.prototype, "_visFlags", [serializable$9], function () { + return Layers.Enum.NONE; + })), _class2$1a)) || _class$1k)); + + var _dec$1j, _dec2$Z, _class$1j, _class2$19, _initializer$12; + var ccclass$q = ccclass$t, + serializable$7 = serializable$9, + type$6 = type$8; + var PrefabLink = exports('dI', (_dec$1j = ccclass$q('cc.PrefabLink'), _dec2$Z = type$6(Prefab), _dec$1j(_class$1j = (_class2$19 = function (_Component) { + _inheritsLoose(PrefabLink, _Component); + function PrefabLink() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this.prefab = _initializer$12 && _initializer$12(); + return _this; + } + return PrefabLink; + }(Component), (_initializer$12 = applyDecoratedInitializer(_class2$19.prototype, "prefab", [_dec2$Z, serializable$7], function () { + return null; + })), _class2$19)) || _class$1j)); + + replaceProperty(Camera, 'Camera', [{ + name: 'CameraClearFlag', + newName: 'ClearFlag' + }]); + replaceProperty(Camera.prototype, 'Camera.prototype', [{ + name: 'color', + newName: 'clearColor' + }, { + name: 'depth', + newName: 'clearDepth' + }, { + name: 'stencil', + newName: 'clearStencil' + }]); + markAsWarning(Renderer.prototype, 'Renderer.prototype', [{ + name: 'getMaterial', + suggest: 'please use renderer.getSharedMaterial instead.' + }]); + legacyCC.CameraComponent = Camera; + setClassAlias(Camera, 'cc.CameraComponent'); + legacyCC.RenderableComponent = ModelRenderer; + setClassAlias(ModelRenderer, 'cc.RenderableComponent'); + + var _dec$1i, _dec2$Y, _dec3$I, _class$1i, _class2$18, _initializer$11, _initializer2$S, _initializer3$E, _initializer4$z, _initializer5$s, _initializer6$o; + var SpriteMode; + (function (SpriteMode) { + SpriteMode[SpriteMode["SIMPLE"] = 0] = "SIMPLE"; + SpriteMode[SpriteMode["SLICED"] = 1] = "SLICED"; + SpriteMode[SpriteMode["TILED"] = 2] = "TILED"; + })(SpriteMode || (SpriteMode = {})); + var SpriteRenderer = exports('e', (_dec$1i = ccclass$t('cc.SpriteRenderer'), _dec2$Y = executionOrder$1(100), _dec3$I = type$8(SpriteFrame), _dec$1i(_class$1i = _dec2$Y(_class$1i = (_class2$18 = function (_ModelRenderer) { + _inheritsLoose(SpriteRenderer, _ModelRenderer); + function SpriteRenderer() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _ModelRenderer.call.apply(_ModelRenderer, [this].concat(args)) || this; + _this._spriteFrame = _initializer$11 && _initializer$11(); + _this._mode = _initializer2$S && _initializer2$S(); + _this._color = _initializer3$E && _initializer3$E(); + _this._flipX = _initializer4$z && _initializer4$z(); + _this._flipY = _initializer5$s && _initializer5$s(); + _this._size = _initializer6$o && _initializer6$o(); + _this._model = null; + return _this; + } + var _proto = SpriteRenderer.prototype; + _proto.onLoad = function onLoad() { + if (this._spriteFrame) { + if (!this._spriteFrame.mesh) { + this._spriteFrame.ensureMeshData(); + } + this._spriteFrame.mesh.initialize(); + } + this._updateModels(); + }; + _proto.onRestore = function onRestore() { + this._updateModels(); + if (this.enabledInHierarchy) { + this._attachToScene(); + } + }; + _proto.onEnable = function onEnable() { + _ModelRenderer.prototype.onEnable.call(this); + if (!this._model) { + this._updateModels(); + } + this._attachToScene(); + }; + _proto.onDisable = function onDisable() { + if (this._model) { + this._detachFromScene(); + } + }; + _proto.onDestroy = function onDestroy() { + if (this._model) { + legacyCC.director.root.destroyModel(this._model); + this._model = null; + this._models.length = 0; + } + }; + _proto._updateModels = function _updateModels() { + if (!this._spriteFrame) { + return; + } + var model = this._model; + if (model) { + model.destroy(); + model.initialize(); + model.node = model.transform = this.node; + } else { + this._createModel(); + } + if (this._model) { + var mesh = this._spriteFrame.mesh; + this._model.createBoundingShape(mesh.struct.minPosition, mesh.struct.maxPosition); + this._updateModelParams(); + this._onUpdateLocalDescriptorSet(); + } + }; + _proto._createModel = function _createModel() { + var model = this._model = legacyCC.director.root.createModel(Model); + model.visFlags = this.visibility; + model.node = model.transform = this.node; + this._models.length = 0; + this._models.push(this._model); + }; + _proto._updateModelParams = function _updateModelParams() { + if (!this._spriteFrame || !this._model) { + return; + } + this._spriteFrame.ensureMeshData(); + var mesh = this._spriteFrame.mesh; + this.node.hasChangedFlags |= TransformBit.POSITION; + this._model.transform.hasChangedFlags |= TransformBit.POSITION; + var meshCount = mesh ? mesh.renderingSubMeshes.length : 0; + var renderingMesh = mesh.renderingSubMeshes; + if (renderingMesh) { + for (var i = 0; i < meshCount; ++i) { + var material = this.getRenderMaterial(i); + if (material && !material.isValid) { + material = null; + } + var subMeshData = renderingMesh[i]; + if (subMeshData) { + this._model.initSubModel(i, subMeshData, material || this._getBuiltinMaterial()); + } + } + } + this._model.enabled = true; + }; + _proto._getBuiltinMaterial = function _getBuiltinMaterial() { + return builtinResMgr.get('missing-material'); + }; + _proto._onMaterialModified = function _onMaterialModified(idx, material) { + _ModelRenderer.prototype._onMaterialModified.call(this, idx, material); + if (!this._spriteFrame || !this._model || !this._model.inited) { + return; + } + this._onRebuildPSO(idx, material || this._getBuiltinMaterial()); + }; + _proto._onRebuildPSO = function _onRebuildPSO(idx, material) { + if (!this._model || !this._model.inited) { + return; + } + this._model.setSubModelMaterial(idx, material); + this._onUpdateLocalDescriptorSet(); + }; + _proto._onUpdateLocalDescriptorSet = function _onUpdateLocalDescriptorSet() { + if (!this._spriteFrame || !this._model || !this._model.inited) { + return; + } + var texture = this._spriteFrame.getGFXTexture(); + var sampler = this._spriteFrame.getGFXSampler(); + var subModels = this._model.subModels; + var binding = ModelLocalBindings.SAMPLER_SPRITE; + for (var i = 0; i < subModels.length; i++) { + var descriptorSet = subModels[i].descriptorSet; + descriptorSet.bindTexture(binding, texture); + descriptorSet.bindSampler(binding, sampler); + descriptorSet.update(); + } + }; + _proto._attachToScene = function _attachToScene() { + if (!this.node.scene || !this._model) { + return; + } + var renderScene = this._getRenderScene(); + if (this._model.scene !== null) { + this._detachFromScene(); + } + renderScene.addModel(this._model); + }; + _proto._detachFromScene = function _detachFromScene() { + if (this._model && this._model.scene) { + this._model.scene.removeModel(this._model); + } + }; + _createClass(SpriteRenderer, [{ + key: "spriteFrame", + get: function get() { + return this._spriteFrame; + }, + set: function set(value) { + if (this._spriteFrame === value) { + return; + } + this._spriteFrame; + this._spriteFrame = value; + if (this._spriteFrame) { + this._spriteFrame.ensureMeshData(); + var mesh = this._spriteFrame.mesh; + mesh.initialize(); + } + this._updateModels(); + if (this.enabledInHierarchy) { + this._attachToScene(); + } + } + }, { + key: "model", + get: function get() { + return this._model; + } + }]); + return SpriteRenderer; + }(ModelRenderer), (_applyDecoratedDescriptor(_class2$18.prototype, "spriteFrame", [_dec3$I], Object.getOwnPropertyDescriptor(_class2$18.prototype, "spriteFrame"), _class2$18.prototype), _initializer$11 = applyDecoratedInitializer(_class2$18.prototype, "_spriteFrame", [serializable$9], function () { + return null; + }), _initializer2$S = applyDecoratedInitializer(_class2$18.prototype, "_mode", [serializable$9], function () { + return SpriteMode.SIMPLE; + }), _initializer3$E = applyDecoratedInitializer(_class2$18.prototype, "_color", [serializable$9], function () { + return Color$1.WHITE.clone(); + }), _initializer4$z = applyDecoratedInitializer(_class2$18.prototype, "_flipX", [serializable$9], function () { + return false; + }), _initializer5$s = applyDecoratedInitializer(_class2$18.prototype, "_flipY", [serializable$9], function () { + return false; + }), _initializer6$o = applyDecoratedInitializer(_class2$18.prototype, "_size", [serializable$9], function () { + return new Vec2(); + })), _class2$18)) || _class$1i) || _class$1i)); + + var _dec$1h, _dec2$X, _dec3$H, _dec4$u, _dec5$t, _dec6$k, _dec7$h, _dec8$b, _class$1h, _class2$17, _initializer$10, _initializer2$R, _initializer3$D, _initializer4$y, _initializer5$r, _initializer6$n, _initializer7$h, _initializer8$g, _initializer9$e, _initializer10$e, _initializer11$e, _initializer12$d, _initializer13$a, _initializer14$8, _class3$o; + var _htmlTextParser = new HtmlTextParser(); + var RichTextChildName = 'RICHTEXT_CHILD'; + var RichTextChildImageName = 'RICHTEXT_Image_CHILD'; + var _tempSize = new Vec2(); + var _tempSizeLeft = new Vec2(); + var labelPool = new Pool$1(function (seg) { + if (!legacyCC.isValid(seg.node)) { + return false; + } else { + var outline = seg.node.getComponent(LabelOutline); + if (outline) { + outline.width = 0; + } + } + return true; + }, 20); + var imagePool = new Pool$1(function (seg) { + return legacyCC.isValid(seg.node); + }, 10); + function createSegment(type) { + return { + node: new Node$1(type), + comp: null, + lineCount: 0, + styleIndex: 0, + imageOffset: '', + clickParam: '', + clickHandler: '', + type: type + }; + } + function getSegmentByPool(type, content) { + var seg; + if (type === RichTextChildName) { + seg = labelPool._get(); + } else if (type === RichTextChildImageName) { + seg = imagePool._get(); + } + seg = seg || createSegment(type); + var node = seg.node; + if (!node) { + node = new Node$1(type); + } + node.hideFlags |= CCObject.Flags.DontSave | CCObject.Flags.HideInHierarchy; + node.active = true; + if (type === RichTextChildImageName) { + seg.comp = node.getComponent(Sprite) || node.addComponent(Sprite); + seg.comp.spriteFrame = content; + seg.comp.type = Sprite.Type.SLICED; + seg.comp.sizeMode = Sprite.SizeMode.CUSTOM; + } else { + seg.comp = node.getComponent(Label) || node.addComponent(Label); + seg.comp.string = content; + seg.comp.horizontalAlign = HorizontalTextAlignment.LEFT; + seg.comp.verticalAlign = VerticalTextAlignment.TOP; + seg.comp.underlineHeight = 2; + } + node.setPosition(0, 0, 0); + var trans = node._uiProps.uiTransformComp; + trans.setAnchorPoint(0.5, 0.5); + seg.node = node; + seg.lineCount = 0; + seg.styleIndex = 0; + seg.imageOffset = ''; + seg.clickParam = ''; + seg.clickHandler = ''; + return seg; + } + var RichText = exports('h', (_dec$1h = ccclass$t('cc.RichText'), _dec2$X = executionOrder$1(110), _dec3$H = type$8(HorizontalTextAlignment), _dec4$u = type$8(VerticalTextAlignment), _dec5$t = type$8(Color$1), _dec6$k = type$8(Font), _dec7$h = type$8(CacheMode), _dec8$b = type$8(SpriteAtlas), _dec$1h(_class$1h = _dec2$X(_class$1h = (_class2$17 = (_class3$o = function (_Component) { + _inheritsLoose(RichText, _Component); + function RichText() { + var _this; + _this = _Component.call(this) || this; + _this._lineHeight = _initializer$10 && _initializer$10(); + _this._string = _initializer2$R && _initializer2$R(); + _this._horizontalAlign = _initializer3$D && _initializer3$D(); + _this._verticalAlign = _initializer4$y && _initializer4$y(); + _this._fontSize = _initializer5$r && _initializer5$r(); + _this._fontColor = _initializer6$n && _initializer6$n(); + _this._maxWidth = _initializer7$h && _initializer7$h(); + _this._fontFamily = _initializer8$g && _initializer8$g(); + _this._font = _initializer9$e && _initializer9$e(); + _this._isSystemFontUsed = _initializer10$e && _initializer10$e(); + _this._userDefinedFont = _initializer11$e && _initializer11$e(); + _this._cacheMode = _initializer12$d && _initializer12$d(); + _this._imageAtlas = _initializer13$a && _initializer13$a(); + _this._handleTouchEvent = _initializer14$8 && _initializer14$8(); + _this._textArray = []; + _this._segments = []; + _this._labelSegmentsCache = []; + _this._linesWidth = []; + _this._lineCount = 1; + _this._labelWidth = 0; + _this._labelHeight = 0; + _this._layoutDirty = true; + _this._lineOffsetX = 0; + _this._updateRichTextStatus = void 0; + _this._labelChildrenNum = 0; + _this._updateRichTextStatus = _this._updateRichText; + return _this; + } + var _proto = RichText.prototype; + _proto.onLoad = function onLoad() { + this.node.on(NodeEventType.LAYER_CHANGED, this._applyLayer, this); + this.node.on(NodeEventType.ANCHOR_CHANGED, this._updateRichTextPosition, this); + }; + _proto.onEnable = function onEnable() { + if (this.handleTouchEvent) { + this._addEventListeners(); + } + this._updateRichText(); + this._activateChildren(true); + }; + _proto.onDisable = function onDisable() { + if (this.handleTouchEvent) { + this._removeEventListeners(); + } + this._activateChildren(false); + }; + _proto.onRestore = function onRestore() { + { + return; + } + }; + _proto.onDestroy = function onDestroy() { + for (var _iterator = _createForOfIteratorHelperLoose(this._segments), _step; !(_step = _iterator()).done;) { + var seg = _step.value; + seg.node.removeFromParent(); + if (seg.type === RichTextChildName) { + labelPool.put(seg); + } else if (seg.type === RichTextChildImageName) { + imagePool.put(seg); + } + } + this.node.off(NodeEventType.ANCHOR_CHANGED, this._updateRichTextPosition, this); + this.node.off(NodeEventType.LAYER_CHANGED, this._applyLayer, this); + }; + _proto._addEventListeners = function _addEventListeners() { + this.node.on(NodeEventType.TOUCH_END, this._onTouchEnded, this); + }; + _proto._removeEventListeners = function _removeEventListeners() { + this.node.off(NodeEventType.TOUCH_END, this._onTouchEnded, this); + }; + _proto._updateLabelSegmentTextAttributes = function _updateLabelSegmentTextAttributes() { + var _this2 = this; + this._segments.forEach(function (item) { + _this2._applyTextAttribute(item); + }); + }; + _proto._createFontLabel = function _createFontLabel(str) { + return getSegmentByPool(RichTextChildName, str); + }; + _proto._createImage = function _createImage(spriteFrame) { + return getSegmentByPool(RichTextChildImageName, spriteFrame); + }; + _proto._onTTFLoaded = function _onTTFLoaded() { + if (this._font instanceof TTFFont) { + this._layoutDirty = true; + this._updateRichText(); + } else { + this._layoutDirty = true; + this._updateRichText(); + } + }; + _proto.splitLongStringApproximatelyIn2048 = function splitLongStringApproximatelyIn2048(text, styleIndex) { + var approxSize = text.length * this.fontSize; + var partStringArr = []; + if (approxSize <= 2048 * 0.8) { + partStringArr.push(text); + return partStringArr; + } + this._calculateSize(_tempSize, styleIndex, text); + if (_tempSize.x < 2048) { + partStringArr.push(text); + } else { + var multilineTexts = text.split('\n'); + for (var i = 0; i < multilineTexts.length; i++) { + this._calculateSize(_tempSize, styleIndex, multilineTexts[i]); + if (_tempSize.x < 2048) { + partStringArr.push(multilineTexts[i]); + } else { + var thisPartSplitResultArr = this.splitLongStringOver2048(multilineTexts[i], styleIndex); + partStringArr.push.apply(partStringArr, thisPartSplitResultArr); + } + } + } + return partStringArr; + }; + _proto.splitLongStringOver2048 = function splitLongStringOver2048(text, styleIndex) { + var partStringArr = []; + var longStr = text; + var curStart = 0; + var curEnd = longStr.length / 2; + var curString = longStr.substring(curStart, curEnd); + var leftString = longStr.substring(curEnd); + var curStringSize = this._calculateSize(_tempSize, styleIndex, curString); + var leftStringSize = this._calculateSize(_tempSizeLeft, styleIndex, leftString); + var maxWidth = this._maxWidth; + if (this._maxWidth === 0) { + maxWidth = 2047.9; + } + var lineCountForOnePart = 1; + var sizeForOnePart = lineCountForOnePart * maxWidth; + while (curStringSize.x > sizeForOnePart) { + curEnd /= 2; + if (curEnd < 1) { + curEnd *= 2; + break; + } + curString = curString.substring(curStart, curEnd); + leftString = longStr.substring(curEnd); + this._calculateSize(curStringSize, styleIndex, curString); + } + var leftTryTimes = 1000; + var curWordStep = 1; + while (leftTryTimes && curStart < text.length) { + while (leftTryTimes && curStringSize.x < sizeForOnePart) { + var nextPartExec = getEnglishWordPartAtFirst(leftString); + if (nextPartExec && nextPartExec.length > 0) { + curWordStep = nextPartExec[0].length; + } + curEnd += curWordStep; + curString = longStr.substring(curStart, curEnd); + leftString = longStr.substring(curEnd); + this._calculateSize(curStringSize, styleIndex, curString); + leftTryTimes--; + } + while (leftTryTimes && curString.length >= 2 && curStringSize.x > sizeForOnePart) { + curEnd -= curWordStep; + curString = longStr.substring(curStart, curEnd); + this._calculateSize(curStringSize, styleIndex, curString); + curWordStep = 1; + leftTryTimes--; + } + if (curString.length >= 2) { + var lastWordExec = getEnglishWordPartAtLast(curString); + if (lastWordExec && lastWordExec.length > 0 && curString !== lastWordExec[0]) { + curEnd -= lastWordExec[0].length; + curString = longStr.substring(curStart, curEnd); + } + } + partStringArr.push(curString); + var partStep = curString.length; + curStart = curEnd; + curEnd += partStep; + curString = longStr.substring(curStart, curEnd); + leftString = longStr.substring(curEnd); + this._calculateSize(leftStringSize, styleIndex, leftString); + this._calculateSize(curStringSize, styleIndex, curString); + leftTryTimes--; + if (leftStringSize.x < 2048 && curStringSize.x < sizeForOnePart) { + partStringArr.push(curString); + curStart = text.length; + curEnd = text.length; + curString = leftString; + if (leftString !== '') { + partStringArr.push(curString); + } + break; + } + } + return partStringArr; + }; + _proto._measureText = function _measureText(styleIndex, string) { + var _this3 = this; + var func = function func(s) { + var width = _this3._calculateSize(_tempSize, styleIndex, s).x; + return width; + }; + if (string) { + return func(string); + } else { + return func; + } + }; + _proto._calculateSize = function _calculateSize(out, styleIndex, s) { + var label; + if (this._labelSegmentsCache.length === 0) { + label = this._createFontLabel(s); + this._labelSegmentsCache.push(label); + } else { + label = this._labelSegmentsCache[0]; + label.node.getComponent(Label).string = s; + } + label.styleIndex = styleIndex; + this._applyTextAttribute(label); + var size = label.node._uiProps.uiTransformComp.contentSize; + Vec2.set(out, size.x, size.y); + return out; + }; + _proto._onTouchEnded = function _onTouchEnded(event) { + var _this4 = this; + var components = this.node.getComponents(Component); + var _loop = function _loop() { + var seg = _step2.value; + var clickHandler = seg.clickHandler; + var clickParam = seg.clickParam; + if (clickHandler && _this4._containsTouchLocation(seg, event.touch.getUILocation())) { + components.forEach(function (component) { + var func = component[clickHandler]; + if (component.enabledInHierarchy && func) { + func.call(component, event, clickParam); + } + }); + event.propagationStopped = true; + } + }; + for (var _iterator2 = _createForOfIteratorHelperLoose(this._segments), _step2; !(_step2 = _iterator2()).done;) { + _loop(); + } + }; + _proto._containsTouchLocation = function _containsTouchLocation(label, point) { + var comp = label.node.getComponent(UITransform); + if (!comp) { + return false; + } + var myRect = comp.getBoundingBoxToWorld(); + return myRect.contains(point); + }; + _proto._resetState = function _resetState() { + var children = this.node.children; + for (var i = children.length - 1; i >= 0; i--) { + var child = children[i]; + if (child.name === RichTextChildName || child.name === RichTextChildImageName) { + { + assert(child.parent === this.node); + } + child.parent = null; + var segment = createSegment(child.name); + segment.node = child; + if (child.name === RichTextChildName) { + segment.comp = child.getComponent(Label); + labelPool.put(segment); + } else { + segment.comp = child.getComponent(Sprite); + imagePool.put(segment); + } + this._labelChildrenNum--; + } + } + this._segments.length = 0; + this._labelSegmentsCache.length = 0; + this._linesWidth.length = 0; + this._lineOffsetX = 0; + this._lineCount = 1; + this._labelWidth = 0; + this._labelHeight = 0; + this._layoutDirty = true; + }; + _proto._activateChildren = function _activateChildren(active) { + for (var i = this.node.children.length - 1; i >= 0; i--) { + var child = this.node.children[i]; + if (child.name === RichTextChildName || child.name === RichTextChildImageName) { + child.active = active; + } + } + }; + _proto._addLabelSegment = function _addLabelSegment(stringToken, styleIndex) { + var labelSegment; + if (this._labelSegmentsCache.length === 0) { + labelSegment = this._createFontLabel(stringToken); + } else { + labelSegment = this._labelSegmentsCache.pop(); + var label = labelSegment.node.getComponent(Label); + if (label) { + label.string = stringToken; + } + } + var labelComp = labelSegment.comp; + if (labelComp.verticalAlign !== this._verticalAlign) { + labelComp.verticalAlign = this._verticalAlign; + } + labelSegment.styleIndex = styleIndex; + labelSegment.lineCount = this._lineCount; + labelSegment.node._uiProps.uiTransformComp.setAnchorPoint(0, 0); + labelSegment.node.layer = this.node.layer; + this.node.insertChild(labelSegment.node, this._labelChildrenNum++); + this._applyTextAttribute(labelSegment); + this._segments.push(labelSegment); + return labelSegment; + }; + _proto._updateRichTextWithMaxWidth = function _updateRichTextWithMaxWidth(labelString, labelWidth, styleIndex) { + var fragmentWidth = labelWidth; + var labelSegment; + if (this._lineOffsetX > 0 && fragmentWidth + this._lineOffsetX > this._maxWidth) { + var checkStartIndex = 0; + while (this._lineOffsetX <= this._maxWidth) { + var checkEndIndex = this._getFirstWordLen(labelString, checkStartIndex, labelString.length); + var checkString = labelString.substr(checkStartIndex, checkEndIndex); + var checkStringWidth = this._measureText(styleIndex, checkString); + if (this._lineOffsetX + checkStringWidth <= this._maxWidth) { + this._lineOffsetX += checkStringWidth; + checkStartIndex += checkEndIndex; + } else { + if (checkStartIndex > 0) { + var remainingString = labelString.substr(0, checkStartIndex); + this._addLabelSegment(remainingString, styleIndex); + labelString = labelString.substr(checkStartIndex, labelString.length); + fragmentWidth = this._measureText(styleIndex, labelString); + } + this._updateLineInfo(); + break; + } + } + } + if (fragmentWidth > this._maxWidth) { + var fragments = fragmentText(labelString, fragmentWidth, this._maxWidth, this._measureText(styleIndex)); + for (var k = 0; k < fragments.length; ++k) { + var splitString = fragments[k]; + labelSegment = this._addLabelSegment(splitString, styleIndex); + var labelSize = labelSegment.node._uiProps.uiTransformComp.contentSize; + this._lineOffsetX += labelSize.width; + if (fragments.length > 1 && k < fragments.length - 1) { + this._updateLineInfo(); + } + } + } else { + this._lineOffsetX += fragmentWidth; + this._addLabelSegment(labelString, styleIndex); + } + }; + _proto._isLastComponentCR = function _isLastComponentCR(stringToken) { + return stringToken.length - 1 === stringToken.lastIndexOf('\n'); + }; + _proto._updateLineInfo = function _updateLineInfo() { + this._linesWidth.push(this._lineOffsetX); + this._lineOffsetX = 0; + this._lineCount++; + }; + _proto._needsUpdateTextLayout = function _needsUpdateTextLayout(newTextArray) { + if (this._layoutDirty || !this._textArray || !newTextArray) { + return true; + } + if (this._textArray.length !== newTextArray.length) { + return true; + } + for (var i = 0; i < this._textArray.length; i++) { + var oldItem = this._textArray[i]; + var newItem = newTextArray[i]; + if (oldItem.text !== newItem.text) { + return true; + } else { + var oldStyle = oldItem.style; + var newStyle = newItem.style; + if (oldStyle) { + if (newStyle) { + if (!!newStyle.outline !== !!oldStyle.outline) { + return true; + } + if (oldStyle.size !== newStyle.size || oldStyle.italic !== newStyle.italic || oldStyle.isImage !== newStyle.isImage) { + return true; + } + if (oldStyle.src !== newStyle.src || oldStyle.imageAlign !== newStyle.imageAlign || oldStyle.imageHeight !== newStyle.imageHeight || oldStyle.imageWidth !== newStyle.imageWidth || oldStyle.imageOffset !== newStyle.imageOffset) { + return true; + } + } else if (oldStyle.size || oldStyle.italic || oldStyle.isImage || oldStyle.outline) { + return true; + } + } else if (newStyle) { + if (newStyle.size || newStyle.italic || newStyle.isImage || newStyle.outline) { + return true; + } + } + } + } + return false; + }; + _proto._addRichTextImageElement = function _addRichTextImageElement(richTextElement) { + if (!richTextElement.style) { + return; + } + var style = richTextElement.style; + var spriteFrameName = style.src; + var spriteFrame = this._imageAtlas && spriteFrameName && this._imageAtlas.getSpriteFrame(spriteFrameName); + if (!spriteFrame) { + warnID(4400); + } else { + var segment = this._createImage(spriteFrame); + segment.comp; + switch (style.imageAlign) { + case 'top': + segment.node._uiProps.uiTransformComp.setAnchorPoint(0, 1); + break; + case 'center': + segment.node._uiProps.uiTransformComp.setAnchorPoint(0, 0.5); + break; + default: + segment.node._uiProps.uiTransformComp.setAnchorPoint(0, 0); + break; + } + if (style.imageOffset) { + segment.imageOffset = style.imageOffset; + } + segment.node.layer = this.node.layer; + this.node.insertChild(segment.node, this._labelChildrenNum++); + this._segments.push(segment); + var spriteRect = spriteFrame.rect.clone(); + var scaleFactor = 1; + var spriteWidth = spriteRect.width; + var spriteHeight = spriteRect.height; + var expectWidth = style.imageWidth || 0; + var expectHeight = style.imageHeight || 0; + if (expectHeight > 0) { + scaleFactor = expectHeight / spriteHeight; + spriteWidth *= scaleFactor; + spriteHeight *= scaleFactor; + } else { + scaleFactor = this._lineHeight / spriteHeight; + spriteWidth *= scaleFactor; + spriteHeight *= scaleFactor; + } + if (expectWidth > 0) { + spriteWidth = expectWidth; + } + if (this._maxWidth > 0) { + if (this._lineOffsetX + spriteWidth > this._maxWidth) { + this._updateLineInfo(); + } + this._lineOffsetX += spriteWidth; + } else { + this._lineOffsetX += spriteWidth; + if (this._lineOffsetX > this._labelWidth) { + this._labelWidth = this._lineOffsetX; + } + } + segment.node._uiProps.uiTransformComp.setContentSize(spriteWidth, spriteHeight); + segment.lineCount = this._lineCount; + segment.clickHandler = ''; + segment.clickParam = ''; + var event = style.event; + if (event) { + segment.clickHandler = event.click; + segment.clickParam = event.param; + } + } + }; + _proto._updateTextDefaultColor = function _updateTextDefaultColor() { + for (var i = 0; i < this._segments.length; ++i) { + var _this$_textArray$segm, _this$_textArray$segm2; + var segment = this._segments[i]; + var label = segment.node.getComponent(Label); + if (!label) { + continue; + } + if ((_this$_textArray$segm = this._textArray[segment.styleIndex]) !== null && _this$_textArray$segm !== void 0 && (_this$_textArray$segm2 = _this$_textArray$segm.style) !== null && _this$_textArray$segm2 !== void 0 && _this$_textArray$segm2.color) { + continue; + } + label.color = this._fontColor; + } + }; + _proto._updateRichText = function _updateRichText() { + if (!this.enabledInHierarchy) { + return; + } + var newTextArray = _htmlTextParser.parse(this._string); + if (!this._needsUpdateTextLayout(newTextArray)) { + this._textArray = newTextArray.slice(); + this._updateLabelSegmentTextAttributes(); + return; + } + this._textArray = newTextArray.slice(); + this._resetState(); + var lastEmptyLine = false; + var label; + for (var i = 0; i < this._textArray.length; ++i) { + var richTextElement = this._textArray[i]; + var text = richTextElement.text; + if (text === undefined) { + continue; + } + if (text === '') { + if (richTextElement.style && richTextElement.style.isNewLine) { + this._updateLineInfo(); + continue; + } + if (richTextElement.style && richTextElement.style.isImage && this._imageAtlas) { + this._addRichTextImageElement(richTextElement); + continue; + } + } + var splitArr = this.splitLongStringApproximatelyIn2048(text, i); + text = splitArr.join('\n'); + var multilineTexts = text.split('\n'); + for (var j = 0; j < multilineTexts.length; ++j) { + var labelString = multilineTexts[j]; + if (labelString === '') { + if (this._isLastComponentCR(text) && j === multilineTexts.length - 1) { + continue; + } + this._updateLineInfo(); + lastEmptyLine = true; + continue; + } + lastEmptyLine = false; + if (this._maxWidth > 0) { + var labelWidth = this._measureText(i, labelString); + this._updateRichTextWithMaxWidth(labelString, labelWidth, i); + if (multilineTexts.length > 1 && j < multilineTexts.length - 1) { + this._updateLineInfo(); + } + } else { + label = this._addLabelSegment(labelString, i); + this._lineOffsetX += label.node._uiProps.uiTransformComp.width; + if (this._lineOffsetX > this._labelWidth) { + this._labelWidth = this._lineOffsetX; + } + if (multilineTexts.length > 1 && j < multilineTexts.length - 1) { + this._updateLineInfo(); + } + } + } + } + if (!lastEmptyLine) { + this._linesWidth.push(this._lineOffsetX); + } + if (this._maxWidth > 0) { + this._labelWidth = this._maxWidth; + } + this._labelHeight = (this._lineCount + BASELINE_RATIO) * this._lineHeight; + this.node._uiProps.uiTransformComp.setContentSize(this._labelWidth, this._labelHeight); + this._updateRichTextPosition(); + this._layoutDirty = false; + }; + _proto._getFirstWordLen = function _getFirstWordLen(text, startIndex, textLen) { + var character = text.charAt(startIndex); + if (isUnicodeCJK(character) || isUnicodeSpace(character)) { + return 1; + } + var len = 1; + for (var index = startIndex + 1; index < textLen; ++index) { + character = text.charAt(index); + if (isUnicodeSpace(character) || isUnicodeCJK(character)) { + break; + } + len++; + } + return len; + }; + _proto._updateRichTextPosition = function _updateRichTextPosition() { + var nextTokenX = 0; + var nextLineIndex = 1; + var totalLineCount = this._lineCount; + var trans = this.node._uiProps.uiTransformComp; + var anchorX = trans.anchorX; + var anchorY = trans.anchorY; + for (var i = 0; i < this._segments.length; ++i) { + var segment = this._segments[i]; + var lineCount = segment.lineCount; + if (lineCount > nextLineIndex) { + nextTokenX = 0; + nextLineIndex = lineCount; + } + var lineOffsetX = this._labelWidth * (this._horizontalAlign * 0.5 - anchorX); + switch (this._horizontalAlign) { + case HorizontalTextAlignment.LEFT: + break; + case HorizontalTextAlignment.CENTER: + lineOffsetX -= this._linesWidth[lineCount - 1] / 2; + break; + case HorizontalTextAlignment.RIGHT: + lineOffsetX -= this._linesWidth[lineCount - 1]; + break; + } + var pos = segment.node.position; + segment.node.setPosition(nextTokenX + lineOffsetX, this._lineHeight * (totalLineCount - lineCount) - this._labelHeight * anchorY, pos.z); + if (lineCount === nextLineIndex) { + nextTokenX += segment.node._uiProps.uiTransformComp.width; + } + var sprite = segment.node.getComponent(Sprite); + if (sprite) { + var position = segment.node.position.clone(); + var lineHeightSet = this._lineHeight; + var lineHeightReal = this._lineHeight * (1 + BASELINE_RATIO); + switch (segment.node._uiProps.uiTransformComp.anchorY) { + case 1: + position.y += lineHeightSet + (lineHeightReal - lineHeightSet) / 2; + break; + case 0.5: + position.y += lineHeightReal / 2; + break; + default: + position.y += (lineHeightReal - lineHeightSet) / 2; + break; + } + if (segment.imageOffset) { + var offsets = segment.imageOffset.split(','); + if (offsets.length === 1 && offsets[0]) { + var offsetY = parseFloat(offsets[0]); + if (Number.isInteger(offsetY)) position.y += offsetY; + } else if (offsets.length === 2) { + var offsetX = parseFloat(offsets[0]); + var _offsetY = parseFloat(offsets[1]); + if (Number.isInteger(offsetX)) position.x += offsetX; + if (Number.isInteger(_offsetY)) position.y += _offsetY; + } + } + segment.node.position = position; + } + var outline = segment.node.getComponent(LabelOutline); + if (outline) { + var _position = segment.node.position.clone(); + _position.y -= outline.width; + segment.node.position = _position; + } + } + }; + _proto._convertLiteralColorValue = function _convertLiteralColorValue(color) { + var colorValue = color.toUpperCase(); + if (Color$1[colorValue]) { + var colorUse = Color$1[colorValue]; + return colorUse; + } else { + var out = new Color$1(); + return out.fromHEX(color); + } + }; + _proto._applyTextAttribute = function _applyTextAttribute(labelSeg) { + var label = labelSeg.node.getComponent(Label); + if (!label) { + return; + } + this._resetLabelState(label); + var index = labelSeg.styleIndex; + var textStyle; + if (this._textArray[index]) { + textStyle = this._textArray[index].style; + } + if (textStyle) { + if (textStyle.color) { + label.color = this._convertLiteralColorValue(textStyle.color); + } else { + label.color = this._fontColor; + } + label.isBold = !!textStyle.bold; + label.isItalic = !!textStyle.italic; + label.isUnderline = !!textStyle.underline; + if (textStyle.outline) { + var labelOutline = labelSeg.node.getComponent(LabelOutline); + if (!labelOutline) { + labelOutline = labelSeg.node.addComponent(LabelOutline); + } + labelOutline.color = this._convertLiteralColorValue(textStyle.outline.color); + labelOutline.width = textStyle.outline.width; + } + label.fontSize = textStyle.size || this._fontSize; + labelSeg.clickHandler = ''; + labelSeg.clickParam = ''; + var event = textStyle.event; + if (event) { + labelSeg.clickHandler = event.click || ''; + labelSeg.clickParam = event.param || ''; + } + } + label.cacheMode = this._cacheMode; + var isAsset = this._font instanceof Font; + if (isAsset && !this._isSystemFontUsed) { + label.font = this._font; + } else { + label.fontFamily = this._fontFamily; + } + label.useSystemFont = this._isSystemFontUsed; + label.lineHeight = this._lineHeight; + label.updateRenderData(true); + }; + _proto._applyLayer = function _applyLayer() { + for (var _iterator3 = _createForOfIteratorHelperLoose(this._segments), _step3; !(_step3 = _iterator3()).done;) { + var seg = _step3.value; + seg.node.layer = this.node.layer; + } + }; + _proto._resetLabelState = function _resetLabelState(label) { + label.fontSize = this._fontSize; + label.color = this._fontColor; + label.isBold = false; + label.isItalic = false; + label.isUnderline = false; + }; + _createClass(RichText, [{ + key: "string", + get: function get() { + return this._string; + }, + set: function set(value) { + if (this._string === value) { + return; + } + this._string = value; + this._updateRichTextStatus(); + } + }, { + key: "horizontalAlign", + get: function get() { + return this._horizontalAlign; + }, + set: function set(value) { + if (this.horizontalAlign === value) { + return; + } + this._horizontalAlign = value; + this._layoutDirty = true; + this._updateRichTextStatus(); + } + }, { + key: "verticalAlign", + get: function get() { + return this._verticalAlign; + }, + set: function set(value) { + if (this._verticalAlign === value) { + return; + } + this._verticalAlign = value; + this._layoutDirty = true; + this._updateRichTextStatus(); + } + }, { + key: "fontSize", + get: function get() { + return this._fontSize; + }, + set: function set(value) { + if (this._fontSize === value) { + return; + } + this._fontSize = value; + this._layoutDirty = true; + this._updateRichTextStatus(); + } + }, { + key: "fontColor", + get: function get() { + return this._fontColor; + }, + set: function set(value) { + if (this._fontColor === value) { + return; + } + this._fontColor = value; + this._updateTextDefaultColor(); + } + }, { + key: "fontFamily", + get: function get() { + return this._fontFamily; + }, + set: function set(value) { + if (this._fontFamily === value) return; + this._fontFamily = value; + this._layoutDirty = true; + this._updateRichTextStatus(); + } + }, { + key: "font", + get: function get() { + return this._font; + }, + set: function set(value) { + if (this._font === value) { + return; + } + this._font = value; + this._layoutDirty = true; + if (this._font) { + this.useSystemFont = false; + this._onTTFLoaded(); + } else { + this.useSystemFont = true; + } + this._updateRichTextStatus(); + } + }, { + key: "useSystemFont", + get: function get() { + return this._isSystemFontUsed; + }, + set: function set(value) { + if (this._isSystemFontUsed === value) { + return; + } + this._isSystemFontUsed = value; + this._layoutDirty = true; + this._updateRichTextStatus(); + } + }, { + key: "cacheMode", + get: function get() { + return this._cacheMode; + }, + set: function set(value) { + if (this._cacheMode === value) { + return; + } + this._cacheMode = value; + this._updateRichTextStatus(); + } + }, { + key: "maxWidth", + get: function get() { + return this._maxWidth; + }, + set: function set(value) { + if (this._maxWidth === value) { + return; + } + this._maxWidth = value; + this._layoutDirty = true; + this._updateRichTextStatus(); + } + }, { + key: "lineHeight", + get: function get() { + return this._lineHeight; + }, + set: function set(value) { + if (this._lineHeight === value) { + return; + } + this._lineHeight = value; + this._layoutDirty = true; + this._updateRichTextStatus(); + } + }, { + key: "imageAtlas", + get: function get() { + return this._imageAtlas; + }, + set: function set(value) { + if (this._imageAtlas === value) { + return; + } + this._imageAtlas = value; + this._layoutDirty = true; + this._updateRichTextStatus(); + } + }, { + key: "handleTouchEvent", + get: function get() { + return this._handleTouchEvent; + }, + set: function set(value) { + if (this._handleTouchEvent === value) { + return; + } + this._handleTouchEvent = value; + if (this.enabledInHierarchy) { + if (this.handleTouchEvent) { + this._addEventListeners(); + } else { + this._removeEventListeners(); + } + } + } + }]); + return RichText; + }(Component), _class3$o.HorizontalAlign = HorizontalTextAlignment, _class3$o.VerticalAlign = VerticalTextAlignment, _class3$o), (_applyDecoratedDescriptor(_class2$17.prototype, "horizontalAlign", [_dec3$H], Object.getOwnPropertyDescriptor(_class2$17.prototype, "horizontalAlign"), _class2$17.prototype), _applyDecoratedDescriptor(_class2$17.prototype, "verticalAlign", [_dec4$u], Object.getOwnPropertyDescriptor(_class2$17.prototype, "verticalAlign"), _class2$17.prototype), _applyDecoratedDescriptor(_class2$17.prototype, "fontColor", [_dec5$t], Object.getOwnPropertyDescriptor(_class2$17.prototype, "fontColor"), _class2$17.prototype), _applyDecoratedDescriptor(_class2$17.prototype, "font", [_dec6$k], Object.getOwnPropertyDescriptor(_class2$17.prototype, "font"), _class2$17.prototype), _applyDecoratedDescriptor(_class2$17.prototype, "cacheMode", [_dec7$h], Object.getOwnPropertyDescriptor(_class2$17.prototype, "cacheMode"), _class2$17.prototype), _applyDecoratedDescriptor(_class2$17.prototype, "imageAtlas", [_dec8$b], Object.getOwnPropertyDescriptor(_class2$17.prototype, "imageAtlas"), _class2$17.prototype), _initializer$10 = applyDecoratedInitializer(_class2$17.prototype, "_lineHeight", [serializable$9], function () { + return 40; + }), _initializer2$R = applyDecoratedInitializer(_class2$17.prototype, "_string", [serializable$9], function () { + return 'RichText'; + }), _initializer3$D = applyDecoratedInitializer(_class2$17.prototype, "_horizontalAlign", [serializable$9], function () { + return HorizontalTextAlignment.LEFT; + }), _initializer4$y = applyDecoratedInitializer(_class2$17.prototype, "_verticalAlign", [serializable$9], function () { + return VerticalTextAlignment.TOP; + }), _initializer5$r = applyDecoratedInitializer(_class2$17.prototype, "_fontSize", [serializable$9], function () { + return 40; + }), _initializer6$n = applyDecoratedInitializer(_class2$17.prototype, "_fontColor", [serializable$9], function () { + return Color$1.WHITE.clone(); + }), _initializer7$h = applyDecoratedInitializer(_class2$17.prototype, "_maxWidth", [serializable$9], function () { + return 0; + }), _initializer8$g = applyDecoratedInitializer(_class2$17.prototype, "_fontFamily", [serializable$9], function () { + return 'Arial'; + }), _initializer9$e = applyDecoratedInitializer(_class2$17.prototype, "_font", [serializable$9], function () { + return null; + }), _initializer10$e = applyDecoratedInitializer(_class2$17.prototype, "_isSystemFontUsed", [serializable$9], function () { + return true; + }), _initializer11$e = applyDecoratedInitializer(_class2$17.prototype, "_userDefinedFont", [serializable$9], function () { + return null; + }), _initializer12$d = applyDecoratedInitializer(_class2$17.prototype, "_cacheMode", [serializable$9], function () { + return CacheMode.NONE; + }), _initializer13$a = applyDecoratedInitializer(_class2$17.prototype, "_imageAtlas", [serializable$9], function () { + return null; + }), _initializer14$8 = applyDecoratedInitializer(_class2$17.prototype, "_handleTouchEvent", [serializable$9], function () { + return true; + })), _class2$17)) || _class$1h) || _class$1h)); + legacyCC.RichText = RichText; + + var _dec$1g, _dec2$W, _class$1g; + var UIMeshRenderer = exports('j', (_dec$1g = ccclass$t('cc.UIMeshRenderer'), _dec2$W = executionOrder$1(110), _dec$1g(_class$1g = _dec2$W(_class$1g = function (_Component) { + _inheritsLoose(UIMeshRenderer, _Component); + function UIMeshRenderer() { + var _this; + _this = _Component.call(this) || this; + _this._modelComponent = null; + _this._dirtyVersion = -1; + _this._internalId = -1; + _this.stencilStage = Stage.DISABLED; + _this._renderData = null; + _this._renderEntity = new RenderEntity(RenderEntityType.DYNAMIC); + return _this; + } + var _proto = UIMeshRenderer.prototype; + _proto.__preload = function __preload() { + this.node._uiProps.uiComp = this; + }; + _proto.onEnable = function onEnable() { + uiRendererManager.addRenderer(this); + this.markForUpdateRenderData(); + }; + _proto.onDisable = function onDisable() { + uiRendererManager.removeRenderer(this); + this.renderEntity.enabled = this._canRender(); + }; + _proto.onLoad = function onLoad() { + if (!this.node._uiProps.uiTransformComp) { + this.node.addComponent('cc.UITransform'); + } + this._modelComponent = this.getComponent('cc.ModelRenderer'); + if (!this._modelComponent) { + warn("node '" + (this.node && this.node.name) + "' doesn't have any renderable component"); + return; + } + this.renderEntity.setNode(this.node); + }; + _proto.onDestroy = function onDestroy() { + this.renderEntity.setNode(null); + if (this.node._uiProps.uiComp === this) { + this.node._uiProps.uiComp = null; + } + this._modelComponent = this.getComponent('cc.ModelRenderer'); + if (!this._modelComponent) { + return; + } + this._modelComponent._sceneGetter = null; + }; + _proto._render = function _render(render) { + if (this._modelComponent) { + var models = this._modelComponent._collectModels(); + this._modelComponent._detachFromScene(); + for (var i = 0; i < models.length; i++) { + if (models[i].enabled) { + render.commitModel(this, models[i], this._modelComponent.material); + } + } + return true; + } + return false; + }; + _proto.fillBuffers = function fillBuffers(render) { + if (this.enabled) { + this._render(render); + } + }; + _proto.updateRenderer = function updateRenderer() { + }; + _proto._uploadRenderData = function _uploadRenderData(index) { + }; + _proto.postUpdateAssembler = function postUpdateAssembler(render) {}; + _proto.update = function update() { + this._fitUIRenderQueue(); + }; + _proto._fitUIRenderQueue = function _fitUIRenderQueue() { + if (!this._modelComponent) { + return; + } + var matNum = this._modelComponent.sharedMaterials.length; + for (var i = 0; i < matNum; i++) { + var material = this._modelComponent.getMaterialInstance(i); + if (material == null) { + continue; + } + var passes = material.passes; + var passNum = passes.length; + for (var j = 0; j < passNum; j++) { + var pass = passes[j]; + pass.setPriority(RenderPriority.MAX - 11); + material.recompileShaders({ + CC_FORCE_FORWARD_SHADING: true + }, j); + } + } + }; + _proto.markForUpdateRenderData = function markForUpdateRenderData(enable) { + uiRendererManager.markDirtyRenderer(this); + }; + _proto.setNodeDirty = function setNodeDirty() {}; + _proto.setTextureDirty = function setTextureDirty() {}; + _proto._canRender = function _canRender() { + return this.enabled && this._modelComponent !== null; + }; + _createClass(UIMeshRenderer, [{ + key: "modelComponent", + get: function get() { + return this._modelComponent; + } + }, { + key: "renderEntity", + get: function get() { + { + assert(Boolean(this._renderEntity), 'this._renderEntity should not be invalid'); + } + return this._renderEntity; + } + }, { + key: "renderData", + get: function get() { + return this._renderData; + } + }]); + return UIMeshRenderer; + }(Component)) || _class$1g) || _class$1g)); + legacyCC.UIMeshRenderer = UIMeshRenderer; + + var UI_VIS_FLAG = Layers.Enum.NONE | Layers.Enum.UI_3D; + var DrawBatch2D = function () { + function DrawBatch2D() { + this.model = null; + this.texture = null; + this.sampler = null; + this.useLocalData = null; + this.isStatic = false; + this.textureHash = 0; + this.samplerHash = 0; + this._passes = []; + this._shaders = []; + this._visFlags = UI_VIS_FLAG; + this._inputAssembler = null; + this._descriptorSet = null; + } + var _proto = DrawBatch2D.prototype; + _proto.destroy = function destroy(ui) { + this._passes = []; + }; + _proto.clear = function clear() { + this._inputAssembler = null; + this._descriptorSet = null; + this.texture = null; + this.sampler = null; + this.textureHash = 0; + this.samplerHash = 0; + this.model = null; + this.isStatic = false; + this.useLocalData = null; + this.visFlags = UI_VIS_FLAG; + }; + _proto.fillPasses = function fillPasses(mat, dss, dssHash, patches) { + if (mat) { + var passes = mat.passes; + if (!passes) { + return; + } + this._shaders.length = passes.length; + for (var i = 0; i < passes.length; i++) { + if (!this._passes[i]) { + this._passes[i] = new Pass(legacyCC.director.root); + } + var mtlPass = passes[i]; + var passInUse = this._passes[i]; + mtlPass.update(); + if (!dss) { + dss = mtlPass.depthStencilState; + dssHash = 0; + } + passInUse._initPassFromTarget(mtlPass, dss, dssHash); + this._shaders[i] = passInUse.getShaderVariant(patches); + } + } + }; + _createClass(DrawBatch2D, [{ + key: "inputAssembler", + get: function get() { + return this._inputAssembler; + }, + set: function set(ia) { + this._inputAssembler = ia; + } + }, { + key: "descriptorSet", + get: function get() { + return this._descriptorSet; + }, + set: function set(ds) { + this._descriptorSet = ds; + } + }, { + key: "visFlags", + get: function get() { + return this._visFlags; + }, + set: function set(vis) { + this._visFlags = vis; + } + }, { + key: "passes", + get: function get() { + return this._passes; + } + }, { + key: "shaders", + get: function get() { + return this._shaders; + } + }]); + return DrawBatch2D; + }(); + + var _dec$1f, _dec2$V, _class$1f, _class2$16; + var UIStaticBatch = exports('m', (_dec$1f = ccclass$t('cc.UIStaticBatch'), _dec2$V = executionOrder$1(110), _dec$1f(_class$1f = _dec2$V(_class$1f = (_class2$16 = function (_UIRenderer) { + _inheritsLoose(UIStaticBatch, _UIRenderer); + function UIStaticBatch() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _UIRenderer.call.apply(_UIRenderer, [this].concat(args)) || this; + _this._init = false; + _this._bufferAccessor = null; + _this._dirty = true; + _this._uiDrawBatchList = []; + return _this; + } + var _proto = UIStaticBatch.prototype; + _proto.postUpdateAssembler = function postUpdateAssembler(render) {}; + _proto.markAsDirty = function markAsDirty() {}; + _proto._requireDrawBatch = function _requireDrawBatch() { + var batch = new DrawBatch2D(); + batch.isStatic = true; + this._uiDrawBatchList.push(batch); + return batch; + }; + _proto._clearData = function _clearData() { + if (this._bufferAccessor) { + this._bufferAccessor.reset(); + var ui = this._getBatcher(); + for (var i = 0; i < this._uiDrawBatchList.length; i++) { + var element = this._uiDrawBatchList[i]; + element.destroy(ui); + } + } + this._uiDrawBatchList.length = 0; + this._init = false; + }; + _proto._getBatcher = function _getBatcher() { + if (director.root && director.root.batcher2D) { + return director.root.batcher2D; + } + warnID(9301); + return null; + }; + _createClass(UIStaticBatch, [{ + key: "color", + get: function get() { + return this._color; + }, + set: function set(value) { + if (this._color === value) { + return; + } + this._color.set(value); + } + }, { + key: "drawBatchList", + get: function get() { + return this._uiDrawBatchList; + } + }]); + return UIStaticBatch; + }(UIRenderer), (_applyDecoratedDescriptor(_class2$16.prototype, "color", [override$1], Object.getOwnPropertyDescriptor(_class2$16.prototype, "color"), _class2$16.prototype)), _class2$16)) || _class$1f) || _class$1f)); + + var _dec$1e, _dec2$U, _dec3$G, _class$1e, _class2$15, _initializer$$, _initializer2$Q, _initializer3$C; + var LabelShadow = exports('n', (_dec$1e = ccclass$t('cc.LabelShadow'), _dec2$U = executionOrder$1(110), _dec3$G = requireComponent(Label), _dec$1e(_class$1e = _dec2$U(_class$1e = _dec3$G(_class$1e = (_class2$15 = function (_Component) { + _inheritsLoose(LabelShadow, _Component); + function LabelShadow() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this._color = _initializer$$ && _initializer$$(); + _this._offset = _initializer2$Q && _initializer2$Q(); + _this._blur = _initializer3$C && _initializer3$C(); + return _this; + } + var _proto = LabelShadow.prototype; + _proto.onEnable = function onEnable() { + this._updateRenderData(); + }; + _proto.onDisable = function onDisable() { + this._updateRenderData(); + }; + _proto._updateRenderData = function _updateRenderData() { + var label = this.node.getComponent(Label); + if (label) { + label.updateRenderData(true); + } + }; + _createClass(LabelShadow, [{ + key: "color", + get: function get() { + return this._color; + }, + set: function set(value) { + if (this._color === value) { + return; + } + this._color.set(value); + this._updateRenderData(); + } + }, { + key: "offset", + get: function get() { + return this._offset; + }, + set: function set(value) { + this._offset = value; + this._updateRenderData(); + } + }, { + key: "blur", + get: function get() { + return this._blur; + }, + set: function set(value) { + this._blur = value; + this._updateRenderData(); + } + }]); + return LabelShadow; + }(Component), (_initializer$$ = applyDecoratedInitializer(_class2$15.prototype, "_color", [serializable$9], function () { + return new Color$1(0, 0, 0, 255); + }), _initializer2$Q = applyDecoratedInitializer(_class2$15.prototype, "_offset", [serializable$9], function () { + return new Vec2(2, 2); + }), _initializer3$C = applyDecoratedInitializer(_class2$15.prototype, "_blur", [serializable$9], function () { + return 2; + })), _class2$15)) || _class$1e) || _class$1e) || _class$1e)); + + var _dec$1d, _dec2$T, _class$1d, _class2$14, _initializer$_; + var UIOpacity = exports('o', (_dec$1d = ccclass$t('cc.UIOpacity'), _dec2$T = executionOrder$1(110), _dec$1d(_class$1d = _dec2$T(_class$1d = disallowMultiple$1(_class$1d = (_class2$14 = function (_Component) { + _inheritsLoose(UIOpacity, _Component); + function UIOpacity() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this._opacity = _initializer$_ && _initializer$_(); + return _this; + } + var _proto = UIOpacity.prototype; + _proto.setEntityLocalOpacityDirtyRecursively = function setEntityLocalOpacityDirtyRecursively(dirty) { + }; + UIOpacity.setEntityLocalOpacityDirtyRecursively = function setEntityLocalOpacityDirtyRecursively(node, dirty, interruptParentOpacity) { + if (!node.isValid) { + return; + } + var render = node._uiProps.uiComp; + var uiOp = node.getComponent(UIOpacity); + var interruptOpacity = interruptParentOpacity; + if (render && render.color) { + render.renderEntity.colorDirty = dirty; + if (uiOp) { + render.renderEntity.localOpacity = interruptOpacity * uiOp.opacity / 255; + } else { + render.renderEntity.localOpacity = interruptOpacity; + } + interruptOpacity = 1; + } else if (uiOp) { + interruptOpacity = interruptOpacity * uiOp.opacity / 255; + } + for (var i = 0; i < node.children.length; i++) { + UIOpacity.setEntityLocalOpacityDirtyRecursively(node.children[i], dirty || interruptOpacity < 1, interruptOpacity); + } + }; + _proto.onEnable = function onEnable() { + this.node._uiProps.localOpacity = this._opacity / 255; + this.setEntityLocalOpacityDirtyRecursively(true); + }; + _proto.onDisable = function onDisable() { + this.node._uiProps.localOpacity = 1; + this.setEntityLocalOpacityDirtyRecursively(true); + }; + _createClass(UIOpacity, [{ + key: "opacity", + get: function get() { + return this._opacity; + }, + set: function set(value) { + if (this._opacity === value) { + return; + } + value = clampf(value, 0, 255); + this._opacity = value; + this.node._uiProps.localOpacity = value / 255; + this.setEntityLocalOpacityDirtyRecursively(true); + } + }]); + return UIOpacity; + }(Component), (_initializer$_ = applyDecoratedInitializer(_class2$14.prototype, "_opacity", [serializable$9], function () { + return 255; + })), _class2$14)) || _class$1d) || _class$1d) || _class$1d)); + + legacyCC.MaskComponent = Mask; + setClassAlias(Mask, 'cc.MaskComponent'); + legacyCC.LabelComponent = Label; + setClassAlias(Label, 'cc.LabelComponent'); + legacyCC.LabelOutlineComponent = LabelOutline; + setClassAlias(LabelOutline, 'cc.LabelOutlineComponent'); + legacyCC.RichTextComponent = RichText; + setClassAlias(RichText, 'cc.RichTextComponent'); + legacyCC.SpriteComponent = Sprite; + setClassAlias(Sprite, 'cc.SpriteComponent'); + legacyCC.UIModelComponent = UIMeshRenderer; + setClassAlias(UIMeshRenderer, 'cc.UIModelComponent'); + legacyCC.GraphicsComponent = Graphics; + setClassAlias(Graphics, 'cc.GraphicsComponent'); + setClassAlias(UIStaticBatch, 'cc.UIStaticBatchComponent'); + setClassAlias(UIOpacity, 'cc.UIOpacityComponent'); + replaceProperty(Mask.prototype, 'Mask', [{ + name: 'graphics', + newName: 'subComp', + target: Mask.prototype, + targetName: 'Mask' + }]); + replaceProperty(MaskType, 'MaskType', [{ + name: 'RECT', + newName: 'GRAPHICS_RECT', + target: MaskType, + targetName: 'MaskType' + }, { + name: 'ELLIPSE', + newName: 'GRAPHICS_ELLIPSE', + target: MaskType, + targetName: 'MaskType' + }, { + name: 'IMAGE_STENCIL', + newName: 'SPRITE_STENCIL', + target: MaskType, + targetName: 'MaskType' + }]); + + var Aim = function Aim(i, x, y) { + this.i = void 0; + this.x = void 0; + this.y = void 0; + this.prev = null; + this.next = null; + this.z = null; + this.prevZ = null; + this.nextZ = null; + this.steiner = false; + this.i = i; + this.x = x; + this.y = y; + }; + function linkedList(datas, start, end, dim, clockwise) { + var i = 0; + var last = null; + if (clockwise === signedArea(datas, start, end, dim) > 0) { + for (i = start; i < end; i += dim) { + last = insertNode(i, datas[i], datas[i + 1], last); + } + } else { + for (i = end - dim; i >= start; i -= dim) { + last = insertNode(i, datas[i], datas[i + 1], last); + } + } + if (last && equals$1(last, last.next)) { + removeNode(last); + last = last.next; + } + return last; + } + function filterPoints(start, end) { + if (end === void 0) { + end = null; + } + if (!start) { + return start; + } + if (!end) { + end = start; + } + var p = start; + var again = false; + do { + again = false; + if (!p.steiner && (equals$1(p, p.next) || area$1(p.prev, p, p.next) === 0)) { + removeNode(p); + p = end = p.prev; + if (p === p.next) { + return null; + } + again = true; + } else { + p = p.next; + } + } while (again || p !== end); + return end; + } + function earcutLinked(ear, triangles, dim, minX, minY, size, pass) { + if (pass === void 0) { + pass = 0; + } + if (!ear) { + return; + } + if (!pass && size) { + indexCurve(ear, minX, minY, size); + } + var stop = ear; + var prev = null; + var next = null; + while (ear.prev !== ear.next) { + prev = ear.prev; + next = ear.next; + if (size ? isEarHashed(ear, minX, minY, size) : isEar(ear)) { + triangles.push(prev.i / dim); + triangles.push(ear.i / dim); + triangles.push(next.i / dim); + removeNode(ear); + ear = next.next; + stop = next.next; + continue; + } + ear = next; + if (ear === stop) { + if (!pass) { + earcutLinked(filterPoints(ear), triangles, dim, minX, minY, size, 1); + } else if (pass === 1) { + ear = cureLocalIntersections(ear, triangles, dim); + earcutLinked(ear, triangles, dim, minX, minY, size, 2); + } else if (pass === 2) { + splitEarcut(ear, triangles, dim, minX, minY, size); + } + break; + } + } + } + function isEar(ear) { + var a = ear.prev; + var b = ear; + var c = ear.next; + if (area$1(a, b, c) >= 0) { + return false; + } + var p = ear.next.next; + while (p !== ear.prev) { + if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area$1(p.prev, p, p.next) >= 0) { + return false; + } + p = p.next; + } + return true; + } + function isEarHashed(ear, minX, minY, size) { + var a = ear.prev; + var b = ear; + var c = ear.next; + if (area$1(a, b, c) >= 0) { + return false; + } + var minTX = a.x < b.x ? a.x < c.x ? a.x : c.x : b.x < c.x ? b.x : c.x; + var minTY = a.y < b.y ? a.y < c.y ? a.y : c.y : b.y < c.y ? b.y : c.y; + var maxTX = a.x > b.x ? a.x > c.x ? a.x : c.x : b.x > c.x ? b.x : c.x; + var maxTY = a.y > b.y ? a.y > c.y ? a.y : c.y : b.y > c.y ? b.y : c.y; + var minZ = zOrder(minTX, minTY, minX, minY, size); + var maxZ = zOrder(maxTX, maxTY, minX, minY, size); + var p = ear.nextZ; + while (p && p.z <= maxZ) { + if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area$1(p.prev, p, p.next) >= 0) { + return false; + } + p = p.nextZ; + } + p = ear.prevZ; + while (p && p.z >= minZ) { + if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area$1(p.prev, p, p.next) >= 0) { + return false; + } + p = p.prevZ; + } + return true; + } + function cureLocalIntersections(start, triangles, dim) { + var p = start; + do { + var a = p.prev; + var b = p.next.next; + if (!equals$1(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) { + triangles.push(a.i / dim); + triangles.push(p.i / dim); + triangles.push(b.i / dim); + removeNode(p); + removeNode(p.next); + p = start = b; + } + p = p.next; + } while (p !== start); + return p; + } + function splitEarcut(start, triangles, dim, minX, minY, size) { + var a = start; + do { + var b = a.next.next; + while (b !== a.prev) { + if (a.i !== b.i && isValidDiagonal(a, b)) { + var c = splitPolygon(a, b); + a = filterPoints(a, a.next); + c = filterPoints(c, c.next); + earcutLinked(a, triangles, dim, minX, minY, size); + earcutLinked(c, triangles, dim, minX, minY, size); + return; + } + b = b.next; + } + a = a.next; + } while (a !== start); + } + function eliminateHoles(datas, holeIndices, outerNode, dim) { + var queue = []; + var i = 0; + var len = 0; + var start = 0; + var end = 0; + var list = null; + for (i = 0, len = holeIndices.length; i < len; i++) { + start = holeIndices[i] * dim; + end = i < len - 1 ? holeIndices[i + 1] * dim : datas.length; + list = linkedList(datas, start, end, dim, false); + if (!list) { + continue; + } + if (list === list.next) { + list.steiner = true; + } + queue.push(getLeftmost(list)); + } + queue.sort(compareX); + if (!outerNode) { + return outerNode; + } + for (i = 0; i < queue.length; i++) { + eliminateHole(queue[i], outerNode); + outerNode = filterPoints(outerNode, outerNode.next); + } + return outerNode; + } + function compareX(a, b) { + return a.x - b.x; + } + function eliminateHole(hole, outerNode) { + outerNode = findHoleBridge(hole, outerNode); + if (outerNode) { + var b = splitPolygon(outerNode, hole); + filterPoints(b, b.next); + } + } + function findHoleBridge(hole, outerNode) { + var p = outerNode; + var hx = hole.x; + var hy = hole.y; + var qx = -Infinity; + var m = null; + do { + if (hy <= p.y && hy >= p.next.y) { + var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y); + if (x <= hx && x > qx) { + qx = x; + if (x === hx) { + if (hy === p.y) { + return p; + } + if (hy === p.next.y) { + return p.next; + } + } + m = p.x < p.next.x ? p : p.next; + } + } + p = p.next; + } while (p !== outerNode); + if (!m) { + return null; + } + if (hx === qx) { + return m.prev; + } + var stop = m; + var mx = m.x; + var my = m.y; + var tanMin = Infinity; + var tan; + p = m.next; + while (p !== stop) { + if (hx >= p.x && p.x >= mx && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) { + tan = Math.abs(hy - p.y) / (hx - p.x); + if ((tan < tanMin || tan === tanMin && p.x > m.x) && locallyInside(p, hole)) { + m = p; + tanMin = tan; + } + } + p = p.next; + } + return m; + } + function indexCurve(start, minX, minY, size) { + var p = start; + do { + if (p.z === null) { + p.z = zOrder(p.x, p.y, minX, minY, size); + } + p.prevZ = p.prev; + p.nextZ = p.next; + p = p.next; + } while (p !== start); + p.prevZ.nextZ = null; + p.prevZ = null; + sortLinked(p); + } + function sortLinked(list) { + var i = 0; + var p = null; + var q = null; + var e = null; + var tail = null; + var numMerges = 0; + var pSize = 0; + var qSize = 0; + var inSize = 1; + do { + p = list; + list = null; + tail = null; + numMerges = 0; + while (p) { + numMerges++; + q = p; + pSize = 0; + for (i = 0; i < inSize; i++) { + pSize++; + q = q.nextZ; + if (!q) { + break; + } + } + qSize = inSize; + while (pSize > 0 || qSize > 0 && q) { + if (pSize === 0) { + e = q; + q = q.nextZ; + qSize--; + } else if (qSize === 0 || !q) { + e = p; + p = p.nextZ; + pSize--; + } else if (p.z <= q.z) { + e = p; + p = p.nextZ; + pSize--; + } else { + e = q; + q = q.nextZ; + qSize--; + } + if (tail) { + tail.nextZ = e; + } else { + list = e; + } + e.prevZ = tail; + tail = e; + } + p = q; + } + tail.nextZ = null; + inSize *= 2; + } while (numMerges > 1); + return list; + } + function zOrder(x, y, minX, minY, size) { + x = 32767 * (x - minX) / size; + y = 32767 * (y - minY) / size; + x = (x | x << 8) & 0x00FF00FF; + x = (x | x << 4) & 0x0F0F0F0F; + x = (x | x << 2) & 0x33333333; + x = (x | x << 1) & 0x55555555; + y = (y | y << 8) & 0x00FF00FF; + y = (y | y << 4) & 0x0F0F0F0F; + y = (y | y << 2) & 0x33333333; + y = (y | y << 1) & 0x55555555; + return x | y << 1; + } + function getLeftmost(start) { + var p = start; + var leftmost = start; + do { + if (p.x < leftmost.x) { + leftmost = p; + } + p = p.next; + } while (p !== start); + return leftmost; + } + function pointInTriangle(ax, ay, bx, by, cx, cy, px, py) { + return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 && (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 && (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0; + } + function isValidDiagonal(a, b) { + return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b); + } + function area$1(p, q, r) { + return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y); + } + function equals$1(p1, p2) { + return p1.x === p2.x && p1.y === p2.y; + } + function intersects(p1, q1, p2, q2) { + if (equals$1(p1, q1) && equals$1(p2, q2) || equals$1(p1, q2) && equals$1(p2, q1)) { + return true; + } + return area$1(p1, q1, p2) > 0 !== area$1(p1, q1, q2) > 0 && area$1(p2, q2, p1) > 0 !== area$1(p2, q2, q1) > 0; + } + function intersectsPolygon(a, b) { + var p = a; + do { + if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects(p, p.next, a, b)) { + return true; + } + p = p.next; + } while (p !== a); + return false; + } + function locallyInside(a, b) { + return area$1(a.prev, a, a.next) < 0 ? area$1(a, b, a.next) >= 0 && area$1(a, a.prev, b) >= 0 : area$1(a, b, a.prev) < 0 || area$1(a, a.next, b) < 0; + } + function middleInside(a, b) { + var p = a; + var inside = false; + var px = (a.x + b.x) / 2; + var py = (a.y + b.y) / 2; + do { + if (p.y > py !== p.next.y > py && px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x) { + inside = !inside; + } + p = p.next; + } while (p !== a); + return inside; + } + function splitPolygon(a, b) { + var a2 = new Aim(a.i, a.x, a.y); + var b2 = new Aim(b.i, b.x, b.y); + var an = a.next; + var bp = b.prev; + a.next = b; + b.prev = a; + a2.next = an; + an.prev = a2; + b2.next = a2; + a2.prev = b2; + bp.next = b2; + b2.prev = bp; + return b2; + } + function insertNode(i, x, y, last) { + var p = new Aim(i, x, y); + if (!last) { + p.prev = p; + p.next = p; + } else { + p.next = last.next; + p.prev = last; + last.next.prev = p; + last.next = p; + } + return p; + } + function removeNode(p) { + p.next.prev = p.prev; + p.prev.next = p.next; + if (p.prevZ) { + p.prevZ.nextZ = p.nextZ; + } + if (p.nextZ) { + p.nextZ.prevZ = p.prevZ; + } + } + function signedArea(datas, start, end, dim) { + var sum = 0; + for (var i = start, j = end - dim; i < end; i += dim) { + sum += (datas[j] - datas[i]) * (datas[i + 1] + datas[j + 1]); + j = i; + } + return sum; + } + function earcut(datas, holeIndices, dim) { + dim = dim || 3; + var hasHoles = holeIndices ? holeIndices.length : 0; + var outerLen = hasHoles ? holeIndices[0] * dim : datas.length; + var outerNode = linkedList(datas, 0, outerLen, dim, true); + var triangles = []; + if (!outerNode) { + return triangles; + } + var minX = 0; + var minY = 0; + var maxX = 0; + var maxY = 0; + var x = 0; + var y = 0; + var size = 0; + if (hasHoles) { + outerNode = eliminateHoles(datas, holeIndices, outerNode, dim); + } + if (datas.length > 80 * dim) { + minX = maxX = datas[0]; + minY = maxY = datas[1]; + for (var i = dim; i < outerLen; i += dim) { + x = datas[i]; + y = datas[i + 1]; + if (x < minX) { + minX = x; + } + if (y < minY) { + minY = y; + } + if (x > maxX) { + maxX = x; + } + if (y > maxY) { + maxY = y; + } + } + size = Math.max(maxX - minX, maxY - minY); + } + earcutLinked(outerNode, triangles, dim, minX, minY, size); + return triangles; + } + + var MAX_VERTEX = 65535; + var MAX_INDICES = MAX_VERTEX * 2; + var PI = Math.PI; + var min = Math.min; + var max = Math.max; + var ceil = Math.ceil; + var acos = Math.acos; + var cos = Math.cos; + var sin = Math.sin; + var atan2 = Math.atan2; + var attrBytes = 8; + var _renderData$1 = null; + var _impl = null; + var _curColor = new Color$1(); + var vec3_temps$1 = []; + for (var i$3 = 0; i$3 < 4; i$3++) { + vec3_temps$1.push(new Vec3()); + } + function curveDivs(r, arc, tol) { + var da = acos(r / (r + tol)) * 2.0; + return max(2, ceil(arc / da)); + } + function clamp(v, minNum, maxNum) { + if (v < minNum) { + return minNum; + } else if (v > maxNum) { + return maxNum; + } + return v; + } + var graphicsAssembler = { + useModel: true, + updateRenderData: function updateRenderData(graphics) { + }, + fillBuffers: function fillBuffers(graphics, renderer) {}, + renderIA: function renderIA(graphics, renderer) {}, + getRenderData: function getRenderData(graphics, vertexCount) { + if (!_impl) { + return null; + } + var renderDataList = _impl.getRenderDataList(); + var renderData = renderDataList[_impl.dataOffset]; + if (!renderData) { + return null; + } + var meshBuffer = renderData; + var maxVertexCount = meshBuffer ? meshBuffer.vertexStart + vertexCount : 0; + if (maxVertexCount > MAX_VERTEX || maxVertexCount * 3 > MAX_INDICES) { + ++_impl.dataOffset; + if (_impl.dataOffset < renderDataList.length) { + renderData = renderDataList[_impl.dataOffset]; + } else { + renderData = _impl.requestRenderData(); + renderDataList[_impl.dataOffset] = renderData; + } + meshBuffer = renderData; + } + if (meshBuffer && meshBuffer.vertexCount < maxVertexCount) { + meshBuffer.request(vertexCount, vertexCount * 3); + } + return renderData; + }, + stroke: function stroke(graphics) { + Color$1.copy(_curColor, graphics.strokeColor); + if (!graphics.impl) { + return; + } + this._flattenPaths(graphics.impl); + this._expandStroke(graphics); + graphics.impl.updatePathOffset = true; + this.end(graphics); + }, + fill: function fill(graphics) { + Color$1.copy(_curColor, graphics.fillColor); + this._expandFill(graphics); + if (graphics.impl) { + graphics.impl.updatePathOffset = true; + } + this.end(graphics); + }, + end: function end(graphics) { + graphics.markForUpdateRenderData(); + }, + _expandStroke: function _expandStroke(graphics) { + var w = graphics.lineWidth * 0.5; + var lineCap = graphics.lineCap; + var lineJoin = graphics.lineJoin; + var miterLimit = graphics.miterLimit; + _impl = graphics.impl; + if (!_impl) { + return; + } + var nCap = curveDivs(w, PI, _impl.tessTol); + this._calculateJoins(_impl, w, lineJoin, miterLimit); + var paths = _impl.paths; + var vertexCount = 0; + for (var _i = _impl.pathOffset, l = _impl.pathLength; _i < l; _i++) { + var path = paths[_i]; + var pointsLength = path.points.length; + if (lineJoin === LineJoin.ROUND) { + vertexCount += (pointsLength + path.bevel * (nCap + 2) + 1) * 2; + } else { + vertexCount += (pointsLength + path.bevel * 5 + 1) * 2; + } + if (!path.closed) { + if (lineCap === LineCap.ROUND) { + vertexCount += (nCap * 2 + 2) * 2; + } else { + vertexCount += (3 + 3) * 2; + } + } + } + var meshBuffer = _renderData$1 = this.getRenderData(graphics, vertexCount); + if (!meshBuffer) { + return; + } + var vData = meshBuffer.vData; + var iData = meshBuffer.iData; + for (var _i2 = _impl.pathOffset, _l = _impl.pathLength; _i2 < _l; _i2++) { + var _path = paths[_i2]; + var pts = _path.points; + var _pointsLength = pts.length; + var offset = meshBuffer.vertexStart; + var p0 = void 0; + var p1 = void 0; + var start = 0; + var end = 0; + var loop = _path.closed; + if (loop) { + p0 = pts[_pointsLength - 1]; + p1 = pts[0]; + start = 0; + end = _pointsLength; + } else { + p0 = pts[0]; + p1 = pts[1]; + start = 1; + end = _pointsLength - 1; + } + p1 = p1 || p0; + if (!loop) { + var dPos = new Point$2(p1.x, p1.y); + dPos.subtract(p0); + dPos.normalize(); + var dx = dPos.x; + var dy = dPos.y; + if (lineCap === LineCap.BUTT) { + this._buttCapStart(p0, dx, dy, w, 0); + } else if (lineCap === LineCap.SQUARE) { + this._buttCapStart(p0, dx, dy, w, w); + } else if (lineCap === LineCap.ROUND) { + this._roundCapStart(p0, dx, dy, w, nCap); + } + } + for (var j = start; j < end; ++j) { + if (lineJoin === LineJoin.ROUND) { + this._roundJoin(p0, p1, w, w, nCap); + } else if ((p1.flags & (PointFlags.PT_BEVEL | PointFlags.PT_INNERBEVEL)) !== 0) { + this._bevelJoin(p0, p1, w, w); + } else { + this._vSet(p1.x + p1.dmx * w, p1.y + p1.dmy * w, 1); + this._vSet(p1.x - p1.dmx * w, p1.y - p1.dmy * w, -1); + } + p0 = p1; + p1 = pts[j + 1]; + } + if (loop) { + var vDataOffset = offset * attrBytes; + this._vSet(vData[vDataOffset], vData[vDataOffset + 1], 1); + this._vSet(vData[vDataOffset + attrBytes], vData[vDataOffset + attrBytes + 1], -1); + } else { + var _dPos = new Point$2(p1.x, p1.y); + _dPos.subtract(p0); + _dPos.normalize(); + var _dx = _dPos.x; + var _dy = _dPos.y; + if (lineCap === LineCap.BUTT) { + this._buttCapEnd(p1, _dx, _dy, w, 0); + } else if (lineCap === LineCap.SQUARE) { + this._buttCapEnd(p1, _dx, _dy, w, w); + } else if (lineCap === LineCap.ROUND) { + this._roundCapEnd(p1, _dx, _dy, w, nCap); + } + } + var indicesOffset = meshBuffer.indexStart; + for (var begin = offset + 2, over = meshBuffer.vertexStart; begin < over; begin++) { + iData[indicesOffset++] = begin - 2; + iData[indicesOffset++] = begin - 1; + iData[indicesOffset++] = begin; + } + meshBuffer.indexStart = indicesOffset; + } + _renderData$1 = null; + _impl = null; + }, + _expandFill: function _expandFill(graphics) { + _impl = graphics.impl; + if (!_impl) { + return; + } + var paths = _impl.paths; + var vertexCount = 0; + for (var _i3 = _impl.pathOffset, l = _impl.pathLength; _i3 < l; _i3++) { + var path = paths[_i3]; + var pointsLength = path.points.length; + vertexCount += pointsLength; + } + var renderData = _renderData$1 = this.getRenderData(graphics, vertexCount); + if (!renderData) { + return; + } + var meshBuffer = renderData; + var vData = meshBuffer.vData; + var iData = meshBuffer.iData; + for (var _i4 = _impl.pathOffset, _l2 = _impl.pathLength; _i4 < _l2; _i4++) { + var _path2 = paths[_i4]; + var pts = _path2.points; + var _pointsLength2 = pts.length; + if (_pointsLength2 === 0) { + continue; + } + var vertexOffset = renderData.vertexStart; + for (var j = 0; j < _pointsLength2; ++j) { + this._vSet(pts[j].x, pts[j].y); + } + var indicesOffset = renderData.indexStart; + if (_path2.complex) { + var earcutData = []; + for (var _j = vertexOffset, end = renderData.vertexStart; _j < end; _j++) { + var vDataOffset = _j * attrBytes; + earcutData.push(vData[vDataOffset++]); + earcutData.push(vData[vDataOffset++]); + earcutData.push(vData[vDataOffset++]); + } + var newIndices = earcut(earcutData, null, 3); + if (!newIndices || newIndices.length === 0) { + continue; + } + for (var _j2 = 0, nIndices = newIndices.length; _j2 < nIndices; _j2++) { + iData[indicesOffset++] = newIndices[_j2] + vertexOffset; + } + } else { + var first = vertexOffset; + for (var start = vertexOffset + 2, _end = meshBuffer.vertexStart; start < _end; start++) { + iData[indicesOffset++] = first; + iData[indicesOffset++] = start - 1; + iData[indicesOffset++] = start; + } + } + meshBuffer.indexStart = indicesOffset; + } + _renderData$1 = null; + _impl = null; + }, + _calculateJoins: function _calculateJoins(impl, w, lineJoin, miterLimit) { + var iw = 0.0; + if (w > 0.0) { + iw = 1 / w; + } + var paths = impl.paths; + for (var _i5 = impl.pathOffset, l = impl.pathLength; _i5 < l; _i5++) { + var path = paths[_i5]; + var pts = path.points; + var ptsLength = pts.length; + var p0 = pts[ptsLength - 1]; + var p1 = pts[0]; + path.bevel = 0; + for (var j = 0; j < ptsLength; j++) { + var dmr2 = 0; + var cross = 0; + var limit = 0; + var dlx0 = p0.dy; + var dly0 = -p0.dx; + var dlx1 = p1.dy; + var dly1 = -p1.dx; + p1.dmx = (dlx0 + dlx1) * 0.5; + p1.dmy = (dly0 + dly1) * 0.5; + dmr2 = p1.dmx * p1.dmx + p1.dmy * p1.dmy; + if (dmr2 > 0.000001) { + var scale = 1 / dmr2; + if (scale > 600) { + scale = 600; + } + p1.dmx *= scale; + p1.dmy *= scale; + } + cross = p1.dx * p0.dy - p0.dx * p1.dy; + if (cross > 0) { + p1.flags |= PointFlags.PT_LEFT; + } + limit = max(11, min(p0.len, p1.len) * iw); + if (dmr2 * limit * limit < 1) { + p1.flags |= PointFlags.PT_INNERBEVEL; + } + if (p1.flags & PointFlags.PT_CORNER) { + if (dmr2 * miterLimit * miterLimit < 1 || lineJoin === LineJoin.BEVEL || lineJoin === LineJoin.ROUND) { + p1.flags |= PointFlags.PT_BEVEL; + } + } + if ((p1.flags & (PointFlags.PT_BEVEL | PointFlags.PT_INNERBEVEL)) !== 0) { + path.bevel++; + } + p0 = p1; + p1 = pts[j + 1]; + } + } + }, + _flattenPaths: function _flattenPaths(impl) { + var paths = impl.paths; + for (var _i6 = impl.pathOffset, l = impl.pathLength; _i6 < l; _i6++) { + var path = paths[_i6]; + var pts = path.points; + var p0 = pts[pts.length - 1]; + var p1 = pts[0]; + if (pts.length > 2 && p0.equals(p1)) { + path.closed = true; + pts.pop(); + p0 = pts[pts.length - 1]; + } + for (var j = 0, size = pts.length; j < size; j++) { + var dPos = new Point$2(p1.x, p1.y); + dPos.subtract(p0); + p0.len = dPos.length(); + if (dPos.x || dPos.y) { + dPos.normalize(); + } + p0.dx = dPos.x; + p0.dy = dPos.y; + p0 = p1; + p1 = pts[j + 1]; + } + } + }, + _chooseBevel: function _chooseBevel(bevel, p0, p1, w) { + var x = p1.x; + var y = p1.y; + var x0 = 0; + var y0 = 0; + var x1 = 0; + var y1 = 0; + if (bevel !== 0) { + x0 = x + p0.dy * w; + y0 = y - p0.dx * w; + x1 = x + p1.dy * w; + y1 = y - p1.dx * w; + } else { + x0 = x1 = x + p1.dmx * w; + y0 = y1 = y + p1.dmy * w; + } + return [x0, y0, x1, y1]; + }, + _buttCapStart: function _buttCapStart(p, dx, dy, w, d) { + var px = p.x - dx * d; + var py = p.y - dy * d; + var dlx = dy; + var dly = -dx; + this._vSet(px + dlx * w, py + dly * w, 1); + this._vSet(px - dlx * w, py - dly * w, -1); + }, + _buttCapEnd: function _buttCapEnd(p, dx, dy, w, d) { + var px = p.x + dx * d; + var py = p.y + dy * d; + var dlx = dy; + var dly = -dx; + this._vSet(px + dlx * w, py + dly * w, 1); + this._vSet(px - dlx * w, py - dly * w, -1); + }, + _roundCapStart: function _roundCapStart(p, dx, dy, w, nCap) { + var px = p.x; + var py = p.y; + var dlx = dy; + var dly = -dx; + for (var _i7 = 0; _i7 < nCap; _i7++) { + var a = _i7 / (nCap - 1) * PI; + var ax = cos(a) * w; + var ay = sin(a) * w; + this._vSet(px - dlx * ax - dx * ay, py - dly * ax - dy * ay, 1); + this._vSet(px, py, 0); + } + this._vSet(px + dlx * w, py + dly * w, 1); + this._vSet(px - dlx * w, py - dly * w, -1); + }, + _roundCapEnd: function _roundCapEnd(p, dx, dy, w, nCap) { + var px = p.x; + var py = p.y; + var dlx = dy; + var dly = -dx; + this._vSet(px + dlx * w, py + dly * w, 1); + this._vSet(px - dlx * w, py - dly * w, -1); + for (var _i8 = 0; _i8 < nCap; _i8++) { + var a = _i8 / (nCap - 1) * PI; + var ax = cos(a) * w; + var ay = sin(a) * w; + this._vSet(px, py, 0); + this._vSet(px - dlx * ax + dx * ay, py - dly * ax + dy * ay, 1); + } + }, + _roundJoin: function _roundJoin(p0, p1, lw, rw, nCap) { + var dlx0 = p0.dy; + var dly0 = -p0.dx; + var dlx1 = p1.dy; + var dly1 = -p1.dx; + var p1x = p1.x; + var p1y = p1.y; + if ((p1.flags & PointFlags.PT_LEFT) !== 0) { + var out = this._chooseBevel(p1.flags & PointFlags.PT_INNERBEVEL, p0, p1, lw); + var lx0 = out[0]; + var ly0 = out[1]; + var lx1 = out[2]; + var ly1 = out[3]; + var a0 = atan2(-dly0, -dlx0); + var a1 = atan2(-dly1, -dlx1); + if (a1 > a0) { + a1 -= PI * 2; + } + this._vSet(lx0, ly0, 1); + this._vSet(p1x - dlx0 * rw, p1.y - dly0 * rw, -1); + var n = clamp(ceil((a0 - a1) / PI) * nCap, 2, nCap); + for (var _i9 = 0; _i9 < n; _i9++) { + var u = _i9 / (n - 1); + var a = a0 + u * (a1 - a0); + var rx = p1x + cos(a) * rw; + var ry = p1y + sin(a) * rw; + this._vSet(p1x, p1y, 0); + this._vSet(rx, ry, -1); + } + this._vSet(lx1, ly1, 1); + this._vSet(p1x - dlx1 * rw, p1y - dly1 * rw, -1); + } else { + var _out = this._chooseBevel(p1.flags & PointFlags.PT_INNERBEVEL, p0, p1, -rw); + var rx0 = _out[0]; + var ry0 = _out[1]; + var rx1 = _out[2]; + var ry1 = _out[3]; + var _a = atan2(dly0, dlx0); + var _a2 = atan2(dly1, dlx1); + if (_a2 < _a) { + _a2 += PI * 2; + } + this._vSet(p1x + dlx0 * rw, p1y + dly0 * rw, 1); + this._vSet(rx0, ry0, -1); + var _n = clamp(ceil((_a2 - _a) / PI) * nCap, 2, nCap); + for (var _i10 = 0; _i10 < _n; _i10++) { + var _u = _i10 / (_n - 1); + var _a3 = _a + _u * (_a2 - _a); + var lx = p1x + cos(_a3) * lw; + var ly = p1y + sin(_a3) * lw; + this._vSet(lx, ly, 1); + this._vSet(p1x, p1y, 0); + } + this._vSet(p1x + dlx1 * rw, p1y + dly1 * rw, 1); + this._vSet(rx1, ry1, -1); + } + }, + _bevelJoin: function _bevelJoin(p0, p1, lw, rw) { + var rx0 = 0; + var ry0 = 0; + var rx1 = 0; + var ry1 = 0; + var lx0 = 0; + var ly0 = 0; + var lx1 = 0; + var ly1 = 0; + var dlx0 = p0.dy; + var dly0 = -p0.dx; + var dlx1 = p1.dy; + var dly1 = -p1.dx; + if (p1.flags & PointFlags.PT_LEFT) { + var out = this._chooseBevel(p1.flags & PointFlags.PT_INNERBEVEL, p0, p1, lw); + lx0 = out[0]; + ly0 = out[1]; + lx1 = out[2]; + ly1 = out[3]; + this._vSet(lx0, ly0, 1); + this._vSet(p1.x - dlx0 * rw, p1.y - dly0 * rw, -1); + this._vSet(lx1, ly1, 1); + this._vSet(p1.x - dlx1 * rw, p1.y - dly1 * rw, -1); + } else { + var _out2 = this._chooseBevel(p1.flags & PointFlags.PT_INNERBEVEL, p0, p1, -rw); + rx0 = _out2[0]; + ry0 = _out2[1]; + rx1 = _out2[2]; + ry1 = _out2[3]; + this._vSet(p1.x + dlx0 * lw, p1.y + dly0 * lw, 1); + this._vSet(rx0, ry0, -1); + this._vSet(p1.x + dlx1 * lw, p1.y + dly1 * lw, 1); + this._vSet(rx1, ry1, -1); + } + }, + _vSet: function _vSet(x, y, distance) { + if (distance === void 0) { + distance = 0; + } + if (!_renderData$1) { + return; + } + var meshBuffer = _renderData$1; + var dataOffset = meshBuffer.vertexStart * attrBytes; + var vData = meshBuffer.vData; + vData[dataOffset++] = x; + vData[dataOffset++] = y; + vData[dataOffset++] = 0; + Color$1.toArray(vData, _curColor, dataOffset); + dataOffset += 4; + vData[dataOffset++] = distance; + meshBuffer.vertexStart++; + } + }; + + var graphicsAssemblerManager = exports('g', { + getAssembler: function getAssembler(sprite) { + return graphicsAssembler; + } + }); + Graphics.Assembler = graphicsAssemblerManager; + + var Alignment = ['left', 'center', 'right']; + var MAX_SIZE = 2048; + var _BASELINE_OFFSET = getBaselineOffset(); + var _invisibleAlpha = (1 / 255).toFixed(3); + var MAX_CALCULATION_NUM = 3; + var LetterInfo = function LetterInfo() { + this["char"] = ''; + this.valid = true; + this.x = 0; + this.y = 0; + this.line = 0; + this.hash = ''; + }; + var TextProcessing = function () { + function TextProcessing() { + this._context = null; + this._canvas = null; + this._canvasData = null; + this._lettersInfo = []; + this._tmpRect = new Rect$1(); + this._maxFontSize = 100; + this._fontScale = 1; + this._canvasData = CanvasPool.getInstance().get(); + this._canvas = this._canvasData.canvas; + this._context = this._canvasData.context; + } + var _proto = TextProcessing.prototype; + _proto.destroy = function destroy() { + CanvasPool.getInstance().put(this._canvasData); + this._lettersInfo.length = 0; + }; + _proto.processingString = function processingString(isBmFont, style, layout, outputLayoutData, inputString, out) { + if (!isBmFont) { + var loopTime = 0; + this._fontScale = this._getStyleFontScale(style.fontSize, style.fontScale); + this._updatePaddingRect(style, outputLayoutData); + this._calculateLabelFont(style, layout, outputLayoutData, inputString); + while ((outputLayoutData.canvasSize.width > MAX_SIZE || outputLayoutData.canvasSize.height > MAX_SIZE) && loopTime <= MAX_CALCULATION_NUM) { + loopTime++; + if (loopTime > MAX_CALCULATION_NUM) { + this._fontScale = 1; + } else { + var maxValue = Math.max(outputLayoutData.canvasSize.width, outputLayoutData.canvasSize.height); + var canvasScaleToMaxSizeRatio = MAX_SIZE / maxValue; + this._fontScale *= canvasScaleToMaxSizeRatio; + this._fontScale = Math.max(1, this._fontScale); + } + this._updatePaddingRect(style, outputLayoutData); + this._calculateLabelFont(style, layout, outputLayoutData, inputString); + } + } else { + if (!style.fntConfig) { + this._fontScale = this._getStyleFontScale(style.originFontSize, style.fontScale); + } else { + this._fontScale = 1; + } + shareLabelInfo.fontScale = this._fontScale; + this._setupBMFontOverflowMetrics(layout, outputLayoutData); + this._updateFontScale(style); + this._computeHorizontalKerningForText(style, layout, inputString); + this._alignText(style, layout, outputLayoutData, inputString); + } + if (out) { + out = outputLayoutData.parsedString; + } + }; + _proto.generateRenderInfo = function generateRenderInfo(isBmFont, style, layout, outputLayoutData, outputRenderData, inputString, callback) { + if (!isBmFont) { + this._updateLabelDimensions(style, layout, outputLayoutData); + this._updateTexture(style, layout, outputLayoutData, outputRenderData); + this.generateVertexData(isBmFont, style, layout, outputLayoutData, outputRenderData, inputString, callback); + } else { + this._computeAlignmentOffset(style, layout, outputLayoutData); + this.generateVertexData(isBmFont, style, layout, outputLayoutData, outputRenderData, inputString, callback); + } + }; + _proto.setCanvasUsed = function setCanvasUsed(canvas, content) { + this._canvas = canvas; + this._context = content; + }; + _proto._getStyleFontScale = function _getStyleFontScale(fontSize, fontScale) { + var scale = fontScale; + if (scale * fontSize > this._maxFontSize && fontSize < this._maxFontSize) { + scale = this._maxFontSize / fontSize; + } + if (scale < 1) { + scale = 1; + } + return scale; + }; + _proto._calculateLabelFont = function _calculateLabelFont(style, layout, outputLayoutData, inputString) { + if (!this._context) { + return; + } + style.actualFontSize = style.fontSize * this._fontScale; + var paragraphedStrings = inputString.split('\n'); + var _splitStrings = outputLayoutData.parsedString = paragraphedStrings; + var _fontDesc = this._getFontDesc(style.actualFontSize, style.fontFamily, style.isBold, style.isItalic); + this._context.font = style.fontDesc = _fontDesc; + switch (layout.overFlow) { + case Overflow$1.NONE: + { + var canvasSizeX = 0; + var canvasSizeY = 0; + for (var i = 0; i < paragraphedStrings.length; ++i) { + var paraLength = safeMeasureText(this._context, paragraphedStrings[i], _fontDesc); + canvasSizeX = canvasSizeX > paraLength ? canvasSizeX : paraLength; + } + canvasSizeY = (_splitStrings.length + BASELINE_RATIO) * this._getLineHeight(layout.lineHeight, style.actualFontSize, style.fontSize); + var rawWidth = canvasSizeX; + var rawHeight = canvasSizeY; + outputLayoutData.canvasSize.width = rawWidth + outputLayoutData.canvasPadding.width * this._fontScale; + outputLayoutData.canvasSize.height = rawHeight + outputLayoutData.canvasPadding.height * this._fontScale; + outputLayoutData.nodeContentSize.width = (rawWidth + outputLayoutData.contentSizeExtend.width * this._fontScale) / this._fontScale; + outputLayoutData.nodeContentSize.height = (rawHeight + outputLayoutData.contentSizeExtend.height * this._fontScale) / this._fontScale; + break; + } + case Overflow$1.SHRINK: + { + this._calculateShrinkFont(paragraphedStrings, style, layout, outputLayoutData); + this._calculateWrapText(paragraphedStrings, style, layout, outputLayoutData); + outputLayoutData.canvasSize.width = outputLayoutData.nodeContentSize.width * this._fontScale; + outputLayoutData.canvasSize.height = outputLayoutData.nodeContentSize.height * this._fontScale; + break; + } + case Overflow$1.CLAMP: + { + this._calculateWrapText(paragraphedStrings, style, layout, outputLayoutData); + outputLayoutData.canvasSize.width = outputLayoutData.nodeContentSize.width * this._fontScale; + outputLayoutData.canvasSize.height = outputLayoutData.nodeContentSize.height * this._fontScale; + break; + } + case Overflow$1.RESIZE_HEIGHT: + { + this._calculateWrapText(paragraphedStrings, style, layout, outputLayoutData); + var _rawHeight = (outputLayoutData.parsedString.length + BASELINE_RATIO) * this._getLineHeight(layout.lineHeight, style.actualFontSize, style.fontSize); + outputLayoutData.canvasSize.width = outputLayoutData.nodeContentSize.width * this._fontScale; + outputLayoutData.canvasSize.height = _rawHeight + outputLayoutData.canvasPadding.height * this._fontScale; + outputLayoutData.nodeContentSize.height = (_rawHeight + outputLayoutData.contentSizeExtend.height * this._fontScale) / this._fontScale; + break; + } + } + }; + _proto._getFontDesc = function _getFontDesc(fontSize, fontFamily, isBold, isItalic) { + var fontDesc = fontSize.toString() + "px "; + fontDesc += fontFamily; + if (isBold) { + fontDesc = "bold " + fontDesc; + } + if (isItalic) { + fontDesc = "italic " + fontDesc; + } + return fontDesc; + }; + _proto._getLineHeight = function _getLineHeight(lineHeight, fontSize, drawFontsize) { + var nodeSpacingY = lineHeight; + if (nodeSpacingY === 0) { + nodeSpacingY = fontSize; + } else { + nodeSpacingY = nodeSpacingY * fontSize / drawFontsize; + } + return nodeSpacingY; + }; + _proto._calculateShrinkFont = function _calculateShrinkFont(paragraphedStrings, style, layout, outputLayoutData) { + if (!this._context) return; + var _fontDesc = this._getFontDesc(style.actualFontSize, style.fontFamily, style.isBold, style.isItalic); + this._context.font = _fontDesc; + var paragraphLength = this._calculateParagraphLength(paragraphedStrings, this._context, _fontDesc); + var i = 0; + var totalHeight = 0; + var maxLength = 0; + var _fontSize = style.actualFontSize; + if (layout.wrapping) { + var canvasWidthNoMargin = outputLayoutData.nodeContentSize.width * this._fontScale; + var canvasHeightNoMargin = outputLayoutData.nodeContentSize.height * this._fontScale; + if (canvasWidthNoMargin < 0 || canvasHeightNoMargin < 0) { + return; + } + totalHeight = canvasHeightNoMargin + 1; + var actualFontSize = style.actualFontSize + 1; + var textFragment = []; + var left = 0; + var right = actualFontSize | 0; + var mid = 0; + while (left < right) { + mid = left + right + 1 >> 1; + if (mid <= 0) { + logID(4003); + break; + } + _fontSize = mid; + _fontDesc = this._getFontDesc(_fontSize, style.fontFamily, style.isBold, style.isItalic); + this._context.font = _fontDesc; + var lineHeight = this._getLineHeight(layout.lineHeight, _fontSize, style.fontSize); + totalHeight = 0; + for (i = 0; i < paragraphedStrings.length; ++i) { + var allWidth = safeMeasureText(this._context, paragraphedStrings[i], _fontDesc); + textFragment = fragmentText(paragraphedStrings[i], allWidth, canvasWidthNoMargin, this._measureText(this._context, _fontDesc)); + totalHeight += textFragment.length * lineHeight; + } + if (totalHeight > canvasHeightNoMargin) { + right = mid - 1; + } else { + left = mid; + } + } + if (left === 0) { + logID(4003); + } else { + _fontSize = left; + _fontDesc = this._getFontDesc(_fontSize, style.fontFamily, style.isBold, style.isItalic); + this._context.font = _fontDesc; + } + } else { + totalHeight = paragraphedStrings.length * this._getLineHeight(layout.lineHeight, _fontSize, style.fontSize); + for (i = 0; i < paragraphedStrings.length; ++i) { + if (maxLength < paragraphLength[i]) { + maxLength = paragraphLength[i]; + } + } + var scaleX = (outputLayoutData.canvasSize.width - outputLayoutData.canvasPadding.width) * this._fontScale / maxLength; + var scaleY = outputLayoutData.canvasSize.height * this._fontScale / totalHeight; + _fontSize = style.actualFontSize * Math.min(1, scaleX, scaleY) | 0; + _fontDesc = this._getFontDesc(_fontSize, style.fontFamily, style.isBold, style.isItalic); + this._context.font = _fontDesc; + } + style.actualFontSize = _fontSize; + style.fontDesc = _fontDesc; + }; + _proto._calculateWrapText = function _calculateWrapText(paragraphedStrings, style, layout, outputLayoutData) { + if (!layout.wrapping || !this._context) return; + var _splitStrings = []; + var canvasWidthNoMargin = outputLayoutData.nodeContentSize.width * this._fontScale; + var _fontDesc = this._getFontDesc(style.actualFontSize, style.fontFamily, style.isBold, style.isItalic); + this._context.font = _fontDesc; + for (var i = 0; i < paragraphedStrings.length; ++i) { + var allWidth = safeMeasureText(this._context, paragraphedStrings[i], _fontDesc); + var textFragment = fragmentText(paragraphedStrings[i], allWidth, canvasWidthNoMargin, this._measureText(this._context, _fontDesc)); + _splitStrings = _splitStrings.concat(textFragment); + } + outputLayoutData.parsedString = _splitStrings; + style.fontDesc = _fontDesc; + }; + _proto._measureText = function _measureText(ctx, fontDesc) { + return function (str) { + return safeMeasureText(ctx, str, fontDesc); + }; + }; + _proto._calculateParagraphLength = function _calculateParagraphLength(paragraphedStrings, ctx, fontDesc) { + var paragraphLength = []; + for (var _iterator = _createForOfIteratorHelperLoose(paragraphedStrings), _step; !(_step = _iterator()).done;) { + var para = _step.value; + var width = safeMeasureText(ctx, para, fontDesc); + paragraphLength.push(width); + } + return paragraphLength; + }; + _proto._updatePaddingRect = function _updatePaddingRect(style, outputLayoutData) { + var top = 0; + var bottom = 0; + var left = 0; + var right = 0; + var outlineWidth = 0; + outputLayoutData.contentSizeExtend.width = outputLayoutData.contentSizeExtend.height = 0; + if (style.isOutlined) { + outlineWidth = style.outlineWidth; + top = bottom = left = right = outlineWidth; + outputLayoutData.contentSizeExtend.width = outputLayoutData.contentSizeExtend.height = outlineWidth * 2; + } + if (style.hasShadow) { + var shadowWidth = style.shadowBlur + outlineWidth; + var offsetX = style.shadowOffsetX; + var offsetY = style.shadowOffsetY; + left = Math.max(left, -offsetX + shadowWidth); + right = Math.max(right, offsetX + shadowWidth); + top = Math.max(top, offsetY + shadowWidth); + bottom = Math.max(bottom, -offsetY + shadowWidth); + } + if (style.isItalic) { + var offset = style.fontSize * Math.tan(12 * 0.0174532925); + right += offset; + outputLayoutData.contentSizeExtend.width += offset; + } + outputLayoutData.canvasPadding.x = left; + outputLayoutData.canvasPadding.y = top; + outputLayoutData.canvasPadding.width = left + right; + outputLayoutData.canvasPadding.height = top + bottom; + }; + _proto._updateLabelDimensions = function _updateLabelDimensions(style, layout, outputLayoutData) { + outputLayoutData.canvasSize.width = Math.min(outputLayoutData.canvasSize.width, MAX_SIZE); + outputLayoutData.canvasSize.height = Math.min(outputLayoutData.canvasSize.height, MAX_SIZE); + this._canvas.width = outputLayoutData.canvasSize.width; + this._canvas.height = outputLayoutData.canvasSize.height; + this._context.font = style.fontDesc; + this._context.textAlign = Alignment[layout.horizontalAlign]; + this._context.textBaseline = 'alphabetic'; + }; + _proto._calculateFillTextStartPosition = function _calculateFillTextStartPosition(style, layout, outputLayoutData) { + var labelX = 0; + if (layout.horizontalAlign === HorizontalTextAlignment.RIGHT) { + labelX = outputLayoutData.canvasSize.width - outputLayoutData.canvasPadding.width; + } else if (layout.horizontalAlign === HorizontalTextAlignment.CENTER) { + labelX = (outputLayoutData.canvasSize.width - outputLayoutData.canvasPadding.width) / 2; + } + var lineHeight = this._getLineHeight(layout.lineHeight, style.actualFontSize, style.fontSize); + var drawStartY = lineHeight * (outputLayoutData.parsedString.length - 1); + var firstLinelabelY = style.actualFontSize * (1 - BASELINE_RATIO / 2); + if (layout.verticalAlign !== VerticalTextAlignment.TOP) { + var blank = drawStartY + outputLayoutData.canvasPadding.height + style.actualFontSize - outputLayoutData.canvasSize.height; + if (layout.verticalAlign === VerticalTextAlignment.BOTTOM) { + blank += BASELINE_RATIO / 2 * style.actualFontSize; + firstLinelabelY -= blank; + } else { + firstLinelabelY -= blank / 2; + } + } + firstLinelabelY += _BASELINE_OFFSET * style.actualFontSize; + outputLayoutData.startPosition.set(labelX + outputLayoutData.canvasPadding.x, firstLinelabelY + outputLayoutData.canvasPadding.y); + }; + _proto._updateTexture = function _updateTexture(style, layout, outputLayoutData, outputRenderData) { + if (!this._context || !this._canvas) { + return; + } + this._context.clearRect(0, 0, this._canvas.width, this._canvas.height); + this._context.font = style.fontDesc; + this._calculateFillTextStartPosition(style, layout, outputLayoutData); + var lineHeight = this._getLineHeight(layout.lineHeight, style.actualFontSize, style.fontSize); + this._context.lineJoin = 'round'; + if (style.isOutlined) { + this._context.fillStyle = "rgba(" + style.outlineColor.r + ", " + style.outlineColor.g + ", " + style.outlineColor.b + ", " + _invisibleAlpha + ")"; + this._context.fillRect(0, 0, this._canvas.width, this._canvas.height); + } else { + this._context.fillStyle = "rgba(" + style.color.r + ", " + style.color.g + ", " + style.color.b + ", " + _invisibleAlpha + ")"; + this._context.fillRect(0, 0, this._canvas.width, this._canvas.height); + } + this._context.fillStyle = "rgb(" + style.color.r + ", " + style.color.g + ", " + style.color.b + ")"; + var tempPos = new Vec2(outputLayoutData.startPosition.x, outputLayoutData.startPosition.y); + var drawTextPosX = tempPos.x; + var drawTextPosY = 0; + this._drawTextEffect(tempPos, lineHeight, style, layout, outputLayoutData); + for (var i = 0; i < outputLayoutData.parsedString.length; ++i) { + drawTextPosY = tempPos.y + i * lineHeight; + if (style.isOutlined) { + this._context.strokeText(outputLayoutData.parsedString[i], drawTextPosX, drawTextPosY); + } + this._context.fillText(outputLayoutData.parsedString[i], drawTextPosX, drawTextPosY); + } + if (style.hasShadow) { + this._context.shadowColor = 'transparent'; + } + this._uploadTexture(outputRenderData); + }; + _proto._uploadTexture = function _uploadTexture(outputRenderData) { + if (outputRenderData.texture && this._canvas) { + var tex; + if (outputRenderData.texture instanceof SpriteFrame) { + tex = outputRenderData.texture.texture; + } else { + tex = outputRenderData.texture; + } + var uploadAgain = this._canvas.width !== 0 && this._canvas.height !== 0; + if (uploadAgain) { + tex.reset({ + width: this._canvas.width, + height: this._canvas.height, + mipmapLevel: 1 + }); + tex.uploadData(this._canvas); + tex.setWrapMode(WrapMode$1.CLAMP_TO_EDGE, WrapMode$1.CLAMP_TO_EDGE); + if (outputRenderData.texture instanceof SpriteFrame) { + outputRenderData.texture.rect = new Rect$1(0, 0, this._canvas.width, this._canvas.height); + outputRenderData.texture._calculateUV(); + } + if (legacyCC.director.root && legacyCC.director.root.batcher2D) { + { + legacyCC.director.root.batcher2D._releaseDescriptorSetCache(tex.getHash()); + } + } + } + } + }; + _proto._drawTextEffect = function _drawTextEffect(startPosition, lineHeight, style, layout, outputLayoutData) { + if (!style.hasShadow && !style.isOutlined && !style.isUnderline) return; + var isMultiple = outputLayoutData.parsedString.length > 1 && style.hasShadow; + var measureText = this._measureText(this._context, style.fontDesc); + var drawTextPosX = 0; + var drawTextPosY = 0; + if (style.hasShadow) { + this._setupShadow(style); + } + if (style.isOutlined) { + this._setupOutline(style); + } + for (var i = 0; i < outputLayoutData.parsedString.length; ++i) { + drawTextPosX = startPosition.x; + drawTextPosY = startPosition.y + i * lineHeight; + if (isMultiple) { + if (style.isOutlined) { + this._context.strokeText(outputLayoutData.parsedString[i], drawTextPosX, drawTextPosY); + } + this._context.fillText(outputLayoutData.parsedString[i], drawTextPosX, drawTextPosY); + } + if (style.isUnderline) { + var _drawUnderlineWidth = measureText(outputLayoutData.parsedString[i]); + var _drawUnderlinePos = new Vec2(); + if (layout.horizontalAlign === HorizontalTextAlignment.RIGHT) { + _drawUnderlinePos.x = startPosition.x - _drawUnderlineWidth; + } else if (layout.horizontalAlign === HorizontalTextAlignment.CENTER) { + _drawUnderlinePos.x = startPosition.x - _drawUnderlineWidth / 2; + } else { + _drawUnderlinePos.x = startPosition.x; + } + _drawUnderlinePos.y = drawTextPosY + style.actualFontSize / 8; + this._context.fillRect(_drawUnderlinePos.x, _drawUnderlinePos.y, _drawUnderlineWidth, style.underlineHeight * this._fontScale); + } + } + if (isMultiple) { + this._context.shadowColor = 'transparent'; + } + }; + _proto._setupOutline = function _setupOutline(style) { + this._context.strokeStyle = "rgba(" + style.outlineColor.r + ", " + style.outlineColor.g + ", " + style.outlineColor.b + ", " + style.outlineColor.a / 255 + ")"; + this._context.lineWidth = style.outlineWidth * 2 * this._fontScale; + }; + _proto._setupShadow = function _setupShadow(style) { + var fontScale = this._fontScale; + this._context.shadowColor = "rgba(" + style.shadowColor.r + ", " + style.shadowColor.g + ", " + style.shadowColor.b + ", " + style.shadowColor.a / 255 + ")"; + this._context.shadowBlur = style.shadowBlur * fontScale; + this._context.shadowOffsetX = style.shadowOffsetX * fontScale; + this._context.shadowOffsetY = -style.shadowOffsetY * fontScale; + }; + _proto.generateVertexData = function generateVertexData(isBmFont, style, layout, outputLayoutData, outputRenderData, inputString, callback) { + if (!isBmFont) { + this.updateQuatCount(outputRenderData); + callback(style, outputLayoutData, outputRenderData); + } else { + this._updateQuads(style, layout, outputLayoutData, outputRenderData, inputString, callback); + } + }; + _proto.updateQuatCount = function updateQuatCount(outputRenderData) { + var data = outputRenderData.vertexBuffer; + var count = outputRenderData.quadCount; + if (data.length !== count) { + for (var i = data.length; i < count; i++) { + data.push({ + x: 0, + y: 0, + z: 0, + u: 0, + v: 0, + color: Color$1.WHITE.clone() + }); + } + data.length = count; + } + }; + _proto._setupBMFontOverflowMetrics = function _setupBMFontOverflowMetrics(layout, outputLayoutData) { + var newWidth = outputLayoutData.nodeContentSize.width; + var newHeight = outputLayoutData.nodeContentSize.height; + if (layout.overFlow === Overflow$1.RESIZE_HEIGHT) { + newHeight = 0; + } + if (layout.overFlow === Overflow$1.NONE) { + newWidth = 0; + newHeight = 0; + } + layout.textWidthTemp = newWidth; + layout.textHeightTemp = newHeight; + layout.textDimensions.width = newWidth; + layout.textDimensions.height = newHeight; + layout.maxLineWidth = newWidth; + }; + _proto._updateFontScale = function _updateFontScale(style) { + style.bmfontScale = style.actualFontSize / (style.originFontSize * this._fontScale); + }; + _proto._computeHorizontalKerningForText = function _computeHorizontalKerningForText(style, layout, inputString) { + var string = inputString; + var stringLen = string.length; + if (!style.fntConfig) return; + var kerningDict = style.fntConfig.kerningDict; + var horizontalKerning = layout.horizontalKerning; + if (!kerningDict || kerningDict.length === 0) { + return; + } + var prev = -1; + for (var i = 0; i < stringLen; ++i) { + var key = string.charCodeAt(i); + var kerningAmount = kerningDict[prev << 16 | key & 0xffff] || 0; + if (i < stringLen - 1) { + horizontalKerning[i] = kerningAmount; + } else { + horizontalKerning[i] = 0; + } + prev = key; + } + }; + _proto._alignText = function _alignText(style, layout, outputLayoutData, inputString) { + this._multilineTextWrap(style, layout, outputLayoutData, inputString, this._getFirstWordLen); + if (layout.overFlow === Overflow$1.SHRINK) { + if (style.fontSize > 0 && this._isVerticalClamp(style, layout, outputLayoutData, inputString, this)) { + this._shrinkLabelToContentSize(style, layout, outputLayoutData, inputString, this._isVerticalClamp); + } + if (style.fontSize > 0 && this._isHorizontalNeedShrink(layout, outputLayoutData)) { + this._shrinkLabelToContentSize(style, layout, outputLayoutData, inputString, this._isHorizontalClamp); + } + } + this._parsedString(outputLayoutData, inputString); + }; + _proto._parsedString = function _parsedString(outputLayoutData, inputString) { + var _splitStrings = []; + var textFragment = ''; + for (var i = 0, line = 0, l = inputString.length; i < l; ++i) { + var letterInfo = this._lettersInfo[i]; + if (!letterInfo.valid) { + continue; + } + if (line === letterInfo.line) { + textFragment += letterInfo["char"]; + } else { + _splitStrings = _splitStrings.concat(textFragment); + line = letterInfo.line; + textFragment = ''; + } + } + _splitStrings = _splitStrings.concat(textFragment); + outputLayoutData.parsedString = _splitStrings; + }; + _proto._multilineTextWrap = function _multilineTextWrap(style, layout, outputLayoutData, inputString, nextTokenFunc) { + layout.linesWidth.length = 0; + var _string = inputString; + var textLen = _string.length; + var lineIndex = 0; + var nextTokenX = 0; + var nextTokenY = 0; + var longestLine = 0; + var letterRight = 0; + var highestY = 0; + var lowestY = 0; + var letterDef = null; + var _lineSpacing = 0; + for (var index = 0; index < textLen;) { + var character = _string.charAt(index); + if (character === '\n') { + layout.linesWidth.push(letterRight); + letterRight = 0; + lineIndex++; + nextTokenX = 0; + nextTokenY -= layout.lineHeight * this._getFontScale(style, layout) + _lineSpacing; + this._recordPlaceholderInfo(index, character); + index++; + continue; + } + var tokenLen = nextTokenFunc(style, layout, _string, index, textLen); + var tokenHighestY = highestY; + var tokenLowestY = lowestY; + var tokenRight = letterRight; + var nextLetterX = nextTokenX; + var newLine = false; + var letterPosition = new Vec2(); + for (var tmp = 0; tmp < tokenLen; ++tmp) { + var letterIndex = index + tmp; + character = _string.charAt(letterIndex); + if (character === '\r') { + this._recordPlaceholderInfo(letterIndex, character); + continue; + } + letterDef = shareLabelInfo.fontAtlas.getLetterDefinitionForChar(character, shareLabelInfo); + if (!letterDef) { + this._recordPlaceholderInfo(letterIndex, character); + log("Can't find letter definition in texture atlas " + style.fntConfig.atlasName + " for letter:" + character); + continue; + } + var letterX = nextLetterX + letterDef.offsetX * style.bmfontScale - shareLabelInfo.margin; + if (layout.wrapping && layout.maxLineWidth > 0 && nextTokenX > 0 && letterX + letterDef.w * style.bmfontScale > layout.maxLineWidth && !isUnicodeSpace(character)) { + layout.linesWidth.push(letterRight); + letterRight = 0; + lineIndex++; + nextTokenX = 0; + nextTokenY -= layout.lineHeight * this._getFontScale(style, layout) + _lineSpacing; + newLine = true; + break; + } else { + letterPosition.x = letterX; + } + letterPosition.y = nextTokenY - letterDef.offsetY * style.bmfontScale; + this._recordLetterInfo(letterPosition, character, letterIndex, lineIndex); + if (letterIndex + 1 < layout.horizontalKerning.length && letterIndex < textLen - 1) { + nextLetterX += layout.horizontalKerning[letterIndex + 1] * style.bmfontScale; + } + nextLetterX += letterDef.xAdvance * style.bmfontScale + layout.spacingX; + tokenRight = letterPosition.x + letterDef.w * style.bmfontScale; + if (tokenHighestY < letterPosition.y) { + tokenHighestY = letterPosition.y; + } + if (tokenLowestY > letterPosition.y - letterDef.h * style.bmfontScale) { + tokenLowestY = letterPosition.y - letterDef.h * style.bmfontScale; + } + } + if (newLine) { + continue; + } + nextTokenX = nextLetterX; + letterRight = tokenRight; + if (highestY < tokenHighestY) { + highestY = tokenHighestY; + } + if (lowestY > tokenLowestY) { + lowestY = tokenLowestY; + } + if (longestLine < letterRight) { + longestLine = letterRight; + } + index += tokenLen; + } + layout.linesWidth.push(letterRight); + layout.numberOfLines = lineIndex + 1; + layout.textDesiredHeight = layout.numberOfLines * layout.lineHeight * this._getFontScale(style, layout); + if (layout.numberOfLines > 1) { + layout.textDesiredHeight += (layout.numberOfLines - 1) * _lineSpacing; + } + outputLayoutData.nodeContentSize.width = layout.textWidthTemp; + outputLayoutData.nodeContentSize.height = layout.textHeightTemp; + if (layout.textWidthTemp <= 0) { + outputLayoutData.nodeContentSize.width = parseFloat(longestLine.toFixed(2)) + shareLabelInfo.margin * 2; + } + if (layout.textHeightTemp <= 0) { + outputLayoutData.nodeContentSize.height = parseFloat(layout.textDesiredHeight.toFixed(2)) + shareLabelInfo.margin * 2; + } + layout.tailoredTopY = outputLayoutData.nodeContentSize.height; + layout.tailoredBottomY = 0; + if (highestY > 0) { + layout.tailoredTopY = outputLayoutData.nodeContentSize.height + highestY; + } + if (lowestY < -layout.textDesiredHeight) { + layout.tailoredBottomY = layout.textDesiredHeight + lowestY; + } + return true; + }; + _proto._recordPlaceholderInfo = function _recordPlaceholderInfo(letterIndex, _char) { + if (letterIndex >= this._lettersInfo.length) { + var tmpInfo = new LetterInfo(); + this._lettersInfo.push(tmpInfo); + } + this._lettersInfo[letterIndex]["char"] = _char; + this._lettersInfo[letterIndex].hash = "" + _char.charCodeAt(0) + shareLabelInfo.hash; + this._lettersInfo[letterIndex].valid = false; + }; + _proto._recordLetterInfo = function _recordLetterInfo(letterPosition, character, letterIndex, lineIndex) { + if (letterIndex >= this._lettersInfo.length) { + var tmpInfo = new LetterInfo(); + this._lettersInfo.push(tmpInfo); + } + var _char2 = character.charCodeAt(0); + var key = "" + _char2 + shareLabelInfo.hash; + this._lettersInfo[letterIndex].line = lineIndex; + this._lettersInfo[letterIndex]["char"] = character; + this._lettersInfo[letterIndex].hash = key; + this._lettersInfo[letterIndex].valid = shareLabelInfo.fontAtlas.getLetter(key).valid; + this._lettersInfo[letterIndex].x = letterPosition.x; + this._lettersInfo[letterIndex].y = letterPosition.y; + }; + _proto._getFirstWordLen = function _getFirstWordLen(style, layout, text, startIndex, textLen) { + var character = text.charAt(startIndex); + if (isUnicodeCJK(character) || character === '\n' || isUnicodeSpace(character)) { + return 1; + } + var len = 1; + var letterDef = shareLabelInfo.fontAtlas.getLetterDefinitionForChar(character, shareLabelInfo); + if (!letterDef) { + return len; + } + var nextLetterX = letterDef.xAdvance * style.bmfontScale + layout.spacingX; + var letterX = 0; + for (var index = startIndex + 1; index < textLen; ++index) { + character = text.charAt(index); + letterDef = shareLabelInfo.fontAtlas.getLetterDefinitionForChar(character, shareLabelInfo); + if (!letterDef) { + break; + } + letterX = nextLetterX + letterDef.offsetX * style.bmfontScale; + if (letterX + letterDef.w * style.bmfontScale > layout.maxLineWidth && !isUnicodeSpace(character) && layout.maxLineWidth > 0) { + return len; + } + nextLetterX += letterDef.xAdvance * style.bmfontScale + layout.spacingX; + if (character === '\n' || isUnicodeSpace(character) || isUnicodeCJK(character)) { + break; + } + len++; + } + return len; + }; + _proto._computeAlignmentOffset = function _computeAlignmentOffset(style, layout, outputLayoutData) { + layout.linesOffsetX.length = 0; + layout.letterOffsetY = 0; + switch (layout.horizontalAlign) { + case HorizontalTextAlignment.LEFT: + for (var i = 0; i < layout.numberOfLines; ++i) { + layout.linesOffsetX.push(0); + } + break; + case HorizontalTextAlignment.CENTER: + for (var _i = 0, l = layout.linesWidth.length; _i < l; _i++) { + layout.linesOffsetX.push((outputLayoutData.nodeContentSize.width - layout.linesWidth[_i]) / 2); + } + break; + case HorizontalTextAlignment.RIGHT: + for (var _i2 = 0, _l = layout.linesWidth.length; _i2 < _l; _i2++) { + layout.linesOffsetX.push(outputLayoutData.nodeContentSize.width - layout.linesWidth[_i2]); + } + break; + } + layout.letterOffsetY = outputLayoutData.nodeContentSize.height; + if (layout.verticalAlign !== VerticalTextAlignment.TOP) { + var blank = outputLayoutData.nodeContentSize.height - layout.textDesiredHeight + layout.lineHeight * this._getFontScale(style, layout) - style.originFontSize * this._fontScale * style.bmfontScale; + if (layout.verticalAlign === VerticalTextAlignment.BOTTOM) { + layout.letterOffsetY -= blank; + } else { + layout.letterOffsetY -= blank / 2; + } + } + }; + _proto._getFontScale = function _getFontScale(style, layout) { + return layout.overFlow === Overflow$1.SHRINK ? style.bmfontScale : 1; + }; + _proto._isVerticalClamp = function _isVerticalClamp(style, layout, outputLayoutData, inputString, process) { + if (layout.textDesiredHeight > outputLayoutData.nodeContentSize.height) { + return true; + } else { + return false; + } + }; + _proto._isHorizontalClamp = function _isHorizontalClamp(style, layout, outputLayoutData, inputString, process) { + var letterClamp = false; + var _string = inputString; + for (var ctr = 0, l = _string.length; ctr < l; ++ctr) { + var letterInfo = process._lettersInfo[ctr]; + if (letterInfo.valid) { + var letterDef = shareLabelInfo.fontAtlas.getLetterDefinitionForChar(letterInfo["char"], shareLabelInfo); + if (!letterDef) { + continue; + } + var px = letterInfo.x + letterDef.w * style.bmfontScale; + var lineIndex = letterInfo.line; + if (layout.textWidthTemp > 0) { + if (!layout.wrapping) { + if (px > outputLayoutData.nodeContentSize.width) { + letterClamp = true; + break; + } + } else { + var wordWidth = layout.linesWidth[lineIndex]; + if (wordWidth > outputLayoutData.nodeContentSize.width && (px > outputLayoutData.nodeContentSize.width || px < 0)) { + letterClamp = true; + break; + } + } + } + } + } + return letterClamp; + }; + _proto._isHorizontalNeedShrink = function _isHorizontalNeedShrink(layout, outputLayoutData) { + var wordWidth = 0; + for (var ctr = 0, l = layout.linesWidth.length; ctr < l; ++ctr) { + wordWidth = layout.linesWidth[ctr]; + if (wordWidth > outputLayoutData.nodeContentSize.width) return true; + } + return false; + }; + _proto._shrinkLabelToContentSize = function _shrinkLabelToContentSize(style, layout, outputLayoutData, inputString, lambda) { + var fontSize = style.actualFontSize; + var left = 0; + var right = fontSize | 0; + var mid = 0; + while (left < right) { + mid = left + right + 1 >> 1; + var newFontSize = mid; + if (newFontSize <= 0) { + break; + } + style.bmfontScale = newFontSize / (style.originFontSize * this._fontScale); + this._multilineTextWrap(style, layout, outputLayoutData, inputString, this._getFirstWordLen); + this._computeAlignmentOffset(style, layout, outputLayoutData); + if (lambda(style, layout, outputLayoutData, inputString, this)) { + right = mid - 1; + } else { + left = mid; + } + } + if (left >= 0) { + this._scaleFontSizeDown(style, layout, outputLayoutData, inputString, left); + } + }; + _proto._scaleFontSizeDown = function _scaleFontSizeDown(style, layout, outputLayoutData, inputString, fontSize) { + var shouldUpdateContent = true; + if (!fontSize) { + fontSize = 0.1; + shouldUpdateContent = false; + } + style.actualFontSize = fontSize; + if (shouldUpdateContent) { + this._updateFontScale(style); + this._multilineTextWrap(style, layout, outputLayoutData, inputString, this._getFirstWordLen); + } + }; + _proto._updateQuads = function _updateQuads(style, layout, outputLayoutData, outputRenderData, inputString, callback) { + var texture = style.spriteFrame ? style.spriteFrame.texture : shareLabelInfo.fontAtlas.getTexture(); + var appX = outputRenderData.uiTransAnchorX * outputLayoutData.nodeContentSize.width; + var appY = outputRenderData.uiTransAnchorY * outputLayoutData.nodeContentSize.height; + var ret = true; + for (var ctr = 0, l = inputString.length; ctr < l; ++ctr) { + var letterInfo = this._lettersInfo[ctr]; + if (!letterInfo.valid) { + continue; + } + var letterDef = shareLabelInfo.fontAtlas.getLetter(letterInfo.hash); + if (!letterDef) { + warn('Can\'t find letter in this bitmap-font'); + continue; + } + this._tmpRect.height = letterDef.h; + this._tmpRect.width = letterDef.w; + this._tmpRect.x = letterDef.u; + this._tmpRect.y = letterDef.v; + var py = letterInfo.y + layout.letterOffsetY; + if (layout.textHeightTemp > 0) { + if (py > layout.tailoredTopY) { + var clipTop = py - layout.tailoredTopY; + this._tmpRect.y += clipTop; + this._tmpRect.height -= clipTop; + py -= clipTop; + } + if (py - this._tmpRect.height * style.bmfontScale < layout.tailoredBottomY && layout.overFlow === Overflow$1.CLAMP) { + this._tmpRect.height = py < layout.tailoredBottomY ? 0 : (py - layout.tailoredBottomY) / style.bmfontScale; + } + } + var lineIndex = letterInfo.line; + var px = letterInfo.x + letterDef.w / 2 * style.bmfontScale + layout.linesOffsetX[lineIndex]; + if (layout.textWidthTemp > 0) { + if (this._isHorizontalClamped(layout, outputLayoutData, px, lineIndex)) { + if (layout.overFlow === Overflow$1.CLAMP) { + this._tmpRect.width = 0; + } + } + } + if (this._tmpRect.height > 0 && this._tmpRect.width > 0) { + var isRotated = this._determineRect(style); + var letterPositionX = letterInfo.x + layout.linesOffsetX[letterInfo.line]; + var offset = outputRenderData.quadCount; + outputRenderData.quadCount += 4; + this.updateQuatCount(outputRenderData); + callback(style, outputLayoutData, outputRenderData, offset, texture, this._tmpRect, isRotated, letterPositionX - appX, py - appY); + } + } + return ret; + }; + _proto._isHorizontalClamped = function _isHorizontalClamped(layout, outputLayoutData, px, lineIndex) { + var wordWidth = layout.linesWidth[lineIndex]; + var letterOverClamp = px > outputLayoutData.nodeContentSize.width || px < 0; + if (!layout.wrapping) { + return letterOverClamp; + } else { + return wordWidth > outputLayoutData.nodeContentSize.width && letterOverClamp; + } + }; + _proto._determineRect = function _determineRect(style) { + var _spriteFrame = style.spriteFrame; + if (!_spriteFrame) return false; + var isRotated = _spriteFrame.isRotated(); + var originalSize = _spriteFrame.getOriginalSize(); + var rect = _spriteFrame.getRect(); + var offset = _spriteFrame.getOffset(); + var trimmedLeft = offset.x + (originalSize.width - rect.width) / 2; + var trimmedTop = offset.y - (originalSize.height - rect.height) / 2; + if (!isRotated) { + this._tmpRect.x += rect.x - trimmedLeft; + this._tmpRect.y += rect.y + trimmedTop; + } else { + var originalX = this._tmpRect.x; + this._tmpRect.x = rect.x + rect.height - this._tmpRect.y - this._tmpRect.height - trimmedTop; + this._tmpRect.y = originalX + rect.y - trimmedLeft; + if (this._tmpRect.y < 0) { + this._tmpRect.height += trimmedTop; + } + } + return isRotated; + }; + return TextProcessing; + }(); + TextProcessing.instance = void 0; + TextProcessing.instance = new TextProcessing(); + + var _defaultLetterAtlas = new LetterAtlas(64, 64); + var _defaultFontAtlas = new FontAtlas(null); + var _comp$1 = null; + var _uiTrans = null; + var _fntConfig = null; + var _spriteFrame = null; + var QUAD_INDICES$6; + var bmfontUtils = { + updateProcessingData: function updateProcessingData(style, layout, outputLayoutData, outputRenderData, comp, trans) { + style.fontSize = comp.fontSize; + style.actualFontSize = comp.fontSize; + style.originFontSize = _fntConfig ? _fntConfig.fontSize : comp.fontSize; + layout.horizontalAlign = comp.horizontalAlign; + layout.verticalAlign = comp.verticalAlign; + layout.spacingX = comp.spacingX; + var overflow = comp.overflow; + layout.overFlow = overflow; + layout.lineHeight = comp.lineHeight; + outputLayoutData.nodeContentSize.width = trans.width; + outputLayoutData.nodeContentSize.height = trans.height; + if (overflow === Overflow$1.NONE) { + layout.wrapping = false; + outputLayoutData.nodeContentSize.width += shareLabelInfo.margin * 2; + outputLayoutData.nodeContentSize.height += shareLabelInfo.margin * 2; + } else if (overflow === Overflow$1.RESIZE_HEIGHT) { + layout.wrapping = true; + outputLayoutData.nodeContentSize.height += shareLabelInfo.margin * 2; + } else { + layout.wrapping = comp.enableWrapText; + } + outputRenderData.uiTransAnchorX = trans.anchorX; + outputRenderData.uiTransAnchorY = trans.anchorY; + shareLabelInfo.lineHeight = comp.lineHeight; + shareLabelInfo.fontSize = comp.fontSize; + style.spriteFrame = _spriteFrame; + style.fntConfig = _fntConfig; + style.fontFamily = shareLabelInfo.fontFamily; + style.color.set(comp.color); + }, + updateRenderData: function updateRenderData(comp) { + if (!comp.renderData) { + return; + } + if (_comp$1 === comp) { + return; + } + if (comp.renderData.vertDirty) { + _comp$1 = comp; + _uiTrans = _comp$1.node._uiProps.uiTransformComp; + var renderData = comp.renderData; + var processing = TextProcessing.instance; + var style = comp.textStyle; + var layout = comp.textLayout; + var outputLayoutData = comp.textLayoutData; + var outputRenderData = comp.textRenderData; + style.fontScale = view.getScaleX(); + this._updateFontFamily(comp); + this.updateProcessingData(style, layout, outputLayoutData, outputRenderData, comp, _uiTrans); + this._updateLabelInfo(comp); + style.fontDesc = shareLabelInfo.fontDesc; + processing.processingString(true, style, layout, outputLayoutData, comp.string); + this.resetRenderData(comp); + outputRenderData.quadCount = 0; + processing.generateRenderInfo(true, style, layout, outputLayoutData, outputRenderData, comp.string, this.generateVertexData); + renderData.dataLength = outputRenderData.quadCount; + renderData.resize(renderData.dataLength, renderData.dataLength / 2 * 3); + var datalist = renderData.data; + for (var i = 0, l = outputRenderData.quadCount; i < l; i++) { + datalist[i] = outputRenderData.vertexBuffer[i]; + } + var indexCount = renderData.indexCount; + this.createQuadIndices(indexCount); + renderData.chunk.setIndexBuffer(QUAD_INDICES$6); + _comp$1.actualFontSize = style.actualFontSize; + _uiTrans.setContentSize(outputLayoutData.nodeContentSize); + this.updateUVs(comp); + this.updateColor(comp); + renderData.vertDirty = false; + _comp$1 = null; + this._resetProperties(); + } + if (comp.spriteFrame) { + var _renderData = comp.renderData; + _renderData.updateRenderData(comp, comp.spriteFrame); + } + }, + updateUVs: function updateUVs(label) { + var renderData = label.renderData; + var vData = renderData.chunk.vb; + var vertexCount = renderData.vertexCount; + var dataList = renderData.data; + var vertexOffset = 3; + for (var i = 0; i < vertexCount; i++) { + var vert = dataList[i]; + vData[vertexOffset] = vert.u; + vData[vertexOffset + 1] = vert.v; + vertexOffset += 9; + } + }, + updateColor: function updateColor(label) { + }, + resetRenderData: function resetRenderData(comp) { + var renderData = comp.renderData; + renderData.dataLength = 0; + renderData.resize(0, 0); + }, + generateVertexData: function generateVertexData(style, outputLayoutData, outputRenderData, offset, spriteFrame, rect, rotated, x, y) { + var dataOffset = offset; + var scale = style.bmfontScale; + var dataList = outputRenderData.vertexBuffer; + var texW = spriteFrame.width; + var texH = spriteFrame.height; + var rectWidth = rect.width; + var rectHeight = rect.height; + var l = 0; + var b = 0; + var t = 0; + var r = 0; + if (!rotated) { + l = rect.x / texW; + r = (rect.x + rectWidth) / texW; + b = (rect.y + rectHeight) / texH; + t = rect.y / texH; + dataList[dataOffset].u = l; + dataList[dataOffset].v = b; + dataList[dataOffset + 1].u = r; + dataList[dataOffset + 1].v = b; + dataList[dataOffset + 2].u = l; + dataList[dataOffset + 2].v = t; + dataList[dataOffset + 3].u = r; + dataList[dataOffset + 3].v = t; + } else { + l = rect.x / texW; + r = (rect.x + rectHeight) / texW; + b = (rect.y + rectWidth) / texH; + t = rect.y / texH; + dataList[dataOffset].u = l; + dataList[dataOffset].v = t; + dataList[dataOffset + 1].u = l; + dataList[dataOffset + 1].v = b; + dataList[dataOffset + 2].u = r; + dataList[dataOffset + 2].v = t; + dataList[dataOffset + 3].u = r; + dataList[dataOffset + 3].v = b; + } + dataList[dataOffset].x = x; + dataList[dataOffset].y = y - rectHeight * scale; + dataList[dataOffset + 1].x = x + rectWidth * scale; + dataList[dataOffset + 1].y = y - rectHeight * scale; + dataList[dataOffset + 2].x = x; + dataList[dataOffset + 2].y = y; + dataList[dataOffset + 3].x = x + rectWidth * scale; + dataList[dataOffset + 3].y = y; + }, + _updateFontFamily: function _updateFontFamily(comp) { + var fontAsset = comp.font; + _spriteFrame = fontAsset.spriteFrame; + _fntConfig = fontAsset.fntConfig; + shareLabelInfo.fontAtlas = fontAsset.fontDefDictionary; + if (!shareLabelInfo.fontAtlas) { + if (comp.cacheMode === CacheMode.CHAR) { + shareLabelInfo.fontAtlas = _defaultLetterAtlas; + } else { + shareLabelInfo.fontAtlas = _defaultFontAtlas; + } + } + dynamicAtlasManager.packToDynamicAtlas(comp, _spriteFrame); + }, + _updateLabelInfo: function _updateLabelInfo(comp) { + shareLabelInfo.hash = ''; + shareLabelInfo.margin = 0; + }, + _resetProperties: function _resetProperties() { + _fntConfig = null; + _spriteFrame = null; + shareLabelInfo.hash = ''; + shareLabelInfo.margin = 0; + }, + createQuadIndices: function createQuadIndices(indexCount) { + if (indexCount % 6 !== 0) { + console.error('illegal index count!'); + return; + } + var quadCount = indexCount / 6; + QUAD_INDICES$6 = null; + QUAD_INDICES$6 = new Uint16Array(indexCount); + var offset = 0; + for (var i = 0; i < quadCount; i++) { + QUAD_INDICES$6[offset++] = 0 + i * 4; + QUAD_INDICES$6[offset++] = 1 + i * 4; + QUAD_INDICES$6[offset++] = 2 + i * 4; + QUAD_INDICES$6[offset++] = 1 + i * 4; + QUAD_INDICES$6[offset++] = 3 + i * 4; + QUAD_INDICES$6[offset++] = 2 + i * 4; + } + } + }; + + var tempColor$1 = new Color$1(255, 255, 255, 255); + var bmfont = { + createData: function createData(comp) { + var renderData = comp.requestRenderData(); + renderData.resize(0, 0); + return renderData; + }, + fillBuffers: function fillBuffers(comp, renderer) { + var node = comp.node; + tempColor$1.set(comp.color); + tempColor$1.a = node._uiProps.opacity * 255; + fillMeshVertices3D(node, renderer, comp.renderData, tempColor$1); + }, + appendQuad: function appendQuad(comp, spriteFrame, rect, rotated, x, y, scale) { + var renderData = comp.renderData; + if (!renderData) { + return; + } + var dataOffset = renderData.dataLength; + renderData.dataLength += 4; + renderData.resize(renderData.dataLength, renderData.dataLength / 2 * 3); + var dataList = renderData.data; + var texW = spriteFrame.width; + var texH = spriteFrame.height; + var rectWidth = rect.width; + var rectHeight = rect.height; + var l = 0; + var b = 0; + var t = 0; + var r = 0; + if (!rotated) { + l = rect.x / texW; + r = (rect.x + rectWidth) / texW; + b = (rect.y + rectHeight) / texH; + t = rect.y / texH; + dataList[dataOffset].u = l; + dataList[dataOffset].v = b; + dataList[dataOffset + 1].u = r; + dataList[dataOffset + 1].v = b; + dataList[dataOffset + 2].u = l; + dataList[dataOffset + 2].v = t; + dataList[dataOffset + 3].u = r; + dataList[dataOffset + 3].v = t; + } else { + l = rect.x / texW; + r = (rect.x + rectHeight) / texW; + b = (rect.y + rectWidth) / texH; + t = rect.y / texH; + dataList[dataOffset].u = l; + dataList[dataOffset].v = t; + dataList[dataOffset + 1].u = l; + dataList[dataOffset + 1].v = b; + dataList[dataOffset + 2].u = r; + dataList[dataOffset + 2].v = t; + dataList[dataOffset + 3].u = r; + dataList[dataOffset + 3].v = b; + } + dataList[dataOffset].x = x; + dataList[dataOffset].y = y - rectHeight * scale; + dataList[dataOffset + 1].x = x + rectWidth * scale; + dataList[dataOffset + 1].y = y - rectHeight * scale; + dataList[dataOffset + 2].x = x; + dataList[dataOffset + 2].y = y; + dataList[dataOffset + 3].x = x + rectWidth * scale; + dataList[dataOffset + 3].y = y; + } + }; + addon(bmfont, bmfontUtils); + + var _atlasWidth = 1024; + var _atlasHeight = 1024; + var _shareAtlas = null; + var letterFont = mixin(bmfontUtils, { + getAssemblerData: function getAssemblerData() { + if (!_shareAtlas) { + _shareAtlas = new LetterAtlas(_atlasWidth, _atlasHeight); + } + return _shareAtlas.getTexture(); + }, + _updateFontFamily: function _updateFontFamily(comp) { + shareLabelInfo.fontAtlas = _shareAtlas; + shareLabelInfo.fontFamily = this._getFontFamily(comp); + var outline = comp.getComponent(LabelOutline); + if (outline && outline.enabled) { + shareLabelInfo.isOutlined = true; + shareLabelInfo.margin = outline.width; + shareLabelInfo.out = outline.color.clone(); + shareLabelInfo.out.a = outline.color.a * comp.color.a / 255.0; + } else { + shareLabelInfo.isOutlined = false; + shareLabelInfo.margin = 0; + } + }, + _getFontFamily: function _getFontFamily(comp) { + var fontFamily = 'Arial'; + if (!comp.useSystemFont) { + if (comp.font) { + fontFamily = comp.font._nativeAsset || 'Arial'; + } + } else { + fontFamily = comp.fontFamily || 'Arial'; + } + return fontFamily; + }, + _updateLabelInfo: function _updateLabelInfo(comp) { + shareLabelInfo.fontDesc = this._getFontDesc(); + shareLabelInfo.color = comp.color; + shareLabelInfo.hash = computeHash(shareLabelInfo); + }, + _getFontDesc: function _getFontDesc() { + var fontDesc = shareLabelInfo.fontSize.toString() + "px "; + fontDesc += shareLabelInfo.fontFamily; + return fontDesc; + } + }); + + var tempColor = new Color$1(255, 255, 255, 255); + var letter = { + createData: function createData(comp) { + var renderData = comp.requestRenderData(); + renderData.resize(0, 0); + return renderData; + }, + fillBuffers: function fillBuffers(comp, renderer) { + if (!comp.renderData) { + return; + } + var node = comp.node; + tempColor.a = node._uiProps.opacity * 255; + fillMeshVertices3D(node, renderer, comp.renderData, tempColor); + }, + updateColor: function updateColor(label) { + } + }; + addon(letter, letterFont); + + var Overflow = Label.Overflow; + var ttfUtils = { + updateProcessingData: function updateProcessingData(style, layout, outputLayoutData, outputRenderData, comp, trans) { + style.isSystemFontUsed = comp.useSystemFont; + style.fontSize = comp.fontSize; + outputLayoutData.nodeContentSize.width = outputLayoutData.canvasSize.width = trans.width; + outputLayoutData.nodeContentSize.height = outputLayoutData.canvasSize.height = trans.height; + layout.lineHeight = comp.lineHeight; + layout.overFlow = comp.overflow; + if (comp.overflow === Overflow.NONE) { + layout.wrapping = false; + } else if (comp.overflow === Overflow.RESIZE_HEIGHT) { + layout.wrapping = true; + } else { + layout.wrapping = comp.enableWrapText; + } + style.isBold = comp.isBold; + style.isItalic = comp.isItalic; + style.isUnderline = comp.isUnderline; + style.underlineHeight = comp.underlineHeight; + var outlineComp = LabelOutline && comp.getComponent(LabelOutline); + outlineComp = outlineComp && outlineComp.enabled && outlineComp.width > 0 ? outlineComp : null; + if (outlineComp) { + style.isOutlined = true; + style.outlineColor.set(outlineComp.color); + style.outlineWidth = outlineComp.width; + } else { + style.isOutlined = false; + } + var shadowComp = LabelShadow && comp.getComponent(LabelShadow); + shadowComp = shadowComp && shadowComp.enabled ? shadowComp : null; + if (shadowComp) { + style.hasShadow = true; + style.shadowColor.set(shadowComp.color); + style.shadowBlur = shadowComp.blur; + style.shadowOffsetX = shadowComp.offset.x; + style.shadowOffsetY = shadowComp.offset.y; + } else { + style.hasShadow = false; + } + style.color.set(comp.color); + outputRenderData.texture = comp.spriteFrame; + outputRenderData.uiTransAnchorX = trans.anchorX; + outputRenderData.uiTransAnchorY = trans.anchorY; + layout.horizontalAlign = comp.horizontalAlign; + layout.verticalAlign = comp.verticalAlign; + }, + getAssemblerData: function getAssemblerData() { + var sharedLabelData = Label._canvasPool.get(); + sharedLabelData.canvas.width = sharedLabelData.canvas.height = 1; + return sharedLabelData; + }, + resetAssemblerData: function resetAssemblerData(assemblerData) { + if (assemblerData) { + Label._canvasPool.put(assemblerData); + } + }, + updateRenderData: function updateRenderData(comp) { + if (!comp.renderData) { + return; + } + if (comp.renderData.vertDirty) { + var trans = comp.node._uiProps.uiTransformComp; + var processing = TextProcessing.instance; + var style = comp.textStyle; + var layout = comp.textLayout; + var outputLayoutData = comp.textLayoutData; + var outputRenderData = comp.textRenderData; + style.fontScale = view.getScaleX(); + this.updateProcessingData(style, layout, outputLayoutData, outputRenderData, comp, trans); + processing.setCanvasUsed(comp.assemblerData.canvas, comp.assemblerData.context); + style.fontFamily = this._updateFontFamily(comp); + this._resetDynamicAtlas(comp); + processing.processingString(false, style, layout, outputLayoutData, comp.string); + processing.generateRenderInfo(false, style, layout, outputLayoutData, outputRenderData, comp.string, this.generateVertexData); + var renderData = comp.renderData; + renderData.textureDirty = true; + this._calDynamicAtlas(comp, outputLayoutData); + comp.actualFontSize = style.actualFontSize; + trans.setContentSize(outputLayoutData.nodeContentSize); + var datalist = renderData.data; + datalist[0] = outputRenderData.vertexBuffer[0]; + datalist[1] = outputRenderData.vertexBuffer[1]; + datalist[2] = outputRenderData.vertexBuffer[2]; + datalist[3] = outputRenderData.vertexBuffer[3]; + this.updateUVs(comp); + comp.renderData.vertDirty = false; + comp.contentWidth = outputLayoutData.nodeContentSize.width; + } + if (comp.spriteFrame) { + var _renderData = comp.renderData; + _renderData.updateRenderData(comp, comp.spriteFrame); + } + }, + generateVertexData: function generateVertexData(style, outputLayoutData, outputRenderData) { + var data = outputRenderData.vertexBuffer; + var width = outputLayoutData.nodeContentSize.width; + var height = outputLayoutData.nodeContentSize.height; + var appX = outputRenderData.uiTransAnchorX * width; + var appY = outputRenderData.uiTransAnchorY * height; + data[0].x = -appX; + data[0].y = -appY; + data[1].x = width - appX; + data[1].y = -appY; + data[2].x = -appX; + data[2].y = height - appY; + data[3].x = width - appX; + data[3].y = height - appY; + }, + updateVertexData: function updateVertexData(comp) {}, + updateUVs: function updateUVs(comp) {}, + _updateFontFamily: function _updateFontFamily(comp) { + var _fontFamily = ''; + if (!comp.useSystemFont) { + if (comp.font) { + _fontFamily = comp.font._nativeAsset || 'Arial'; + } else { + _fontFamily = 'Arial'; + } + } else { + _fontFamily = comp.fontFamily || 'Arial'; + } + return _fontFamily; + }, + _calDynamicAtlas: function _calDynamicAtlas(comp, outputLayoutData) { + if (comp.cacheMode !== Label.CacheMode.BITMAP || outputLayoutData.canvasSize.width <= 0 || outputLayoutData.canvasSize.height <= 0) return; + var frame = comp.ttfSpriteFrame; + dynamicAtlasManager.packToDynamicAtlas(comp, frame); + }, + _resetDynamicAtlas: function _resetDynamicAtlas(comp) { + if (comp.cacheMode !== Label.CacheMode.BITMAP) return; + var frame = comp.ttfSpriteFrame; + dynamicAtlasManager.deleteAtlasSpriteFrame(frame); + frame._resetDynamicAtlasFrame(); + } + }; + + var WHITE = Color$1.WHITE.clone(); + var QUAD_INDICES$5 = Uint16Array.from([0, 1, 2, 1, 3, 2]); + var ttf = { + createData: function createData(comp) { + var renderData = comp.requestRenderData(); + renderData.dataLength = 4; + renderData.resize(4, 6); + comp.textRenderData.quadCount = 4; + var vData = renderData.chunk.vb; + vData[3] = vData[21] = vData[22] = vData[31] = 0; + vData[4] = vData[12] = vData[13] = vData[30] = 1; + var offset = 5; + for (var i = 0; i < 4; i++) { + Color$1.toArray(vData, WHITE, offset); + offset += 9; + } + renderData.chunk.setIndexBuffer(QUAD_INDICES$5); + return renderData; + }, + fillBuffers: function fillBuffers(comp, renderer) { + var renderData = comp.renderData; + var chunk = renderData.chunk; + var dataList = renderData.data; + var node = comp.node; + var vData = chunk.vb; + var m = node.worldMatrix; + var stride = renderData.floatStride; + var offset = 0; + var length = dataList.length; + for (var i = 0; i < length; i++) { + var curData = dataList[i]; + var x = curData.x; + var y = curData.y; + var rhw = m.m03 * x + m.m07 * y + m.m15; + rhw = rhw ? 1 / rhw : 1; + offset = i * stride; + vData[offset + 0] = (m.m00 * x + m.m04 * y + m.m12) * rhw; + vData[offset + 1] = (m.m01 * x + m.m05 * y + m.m13) * rhw; + vData[offset + 2] = (m.m02 * x + m.m06 * y + m.m14) * rhw; + } + var vid = chunk.vertexOffset; + var meshBuffer = chunk.meshBuffer; + var ib = chunk.meshBuffer.iData; + var indexOffset = meshBuffer.indexOffset; + ib[indexOffset++] = vid; + ib[indexOffset++] = vid + 1; + ib[indexOffset++] = vid + 2; + ib[indexOffset++] = vid + 2; + ib[indexOffset++] = vid + 1; + ib[indexOffset++] = vid + 3; + meshBuffer.indexOffset += 6; + }, + updateVertexData: function updateVertexData(comp) { + var renderData = comp.renderData; + if (!renderData) { + return; + } + var uiTrans = comp.node._uiProps.uiTransformComp; + var width = uiTrans.width; + var height = uiTrans.height; + var appX = uiTrans.anchorX * width; + var appY = uiTrans.anchorY * height; + var data = renderData.data; + data[0].x = -appX; + data[0].y = -appY; + data[1].x = width - appX; + data[1].y = -appY; + data[2].x = -appX; + data[2].y = height - appY; + data[3].x = width - appX; + data[3].y = height - appY; + }, + updateUVs: function updateUVs(comp) { + var renderData = comp.renderData; + if (!renderData || !comp.ttfSpriteFrame) { + return; + } + var vData = renderData.chunk.vb; + var uv = comp.ttfSpriteFrame.uv; + vData[3] = uv[0]; + vData[4] = uv[1]; + vData[12] = uv[2]; + vData[13] = uv[3]; + vData[21] = uv[4]; + vData[22] = uv[5]; + vData[30] = uv[6]; + vData[31] = uv[7]; + }, + updateColor: function updateColor(comp) {} + }; + addon(ttf, ttfUtils); + + var labelAssembler = exports('l', { + getAssembler: function getAssembler(comp) { + var assembler = ttf; + if (comp.font instanceof BitmapFont) { + assembler = bmfont; + } else if (comp.cacheMode === Label.CacheMode.CHAR) { + assembler = letter; + } + return assembler; + } + }); + Label.Assembler = labelAssembler; + + var FillType$1 = Sprite.FillType; + var m$3 = new Mat4(); + var QUAD_INDICES$4 = Uint16Array.from([0, 1, 2, 1, 3, 2]); + var barFilled = { + updateRenderData: function updateRenderData(sprite) { + var frame = sprite.spriteFrame; + dynamicAtlasManager.packToDynamicAtlas(sprite, frame); + var renderData = sprite.renderData; + if (renderData && frame) { + var vertDirty = renderData.vertDirty; + if (!vertDirty) { + return; + } + var fillStart = sprite.fillStart; + var fillRange = sprite.fillRange; + if (fillRange < 0) { + fillStart += fillRange; + fillRange = -fillRange; + } + fillRange = fillStart + fillRange; + fillStart = fillStart > 1.0 ? 1.0 : fillStart; + fillStart = fillStart < 0.0 ? 0.0 : fillStart; + fillRange = fillRange > 1.0 ? 1.0 : fillRange; + fillRange = fillRange < 0.0 ? 0.0 : fillRange; + fillRange -= fillStart; + fillRange = fillRange < 0 ? 0 : fillRange; + var fillEnd = fillStart + fillRange; + fillEnd = fillEnd > 1 ? 1 : fillEnd; + this.updateUVs(sprite, fillStart, fillEnd); + this.updateVertexData(sprite, fillStart, fillEnd); + renderData.updateRenderData(sprite, frame); + } + }, + updateUVs: function updateUVs(sprite, fillStart, fillEnd) { + var spriteFrame = sprite.spriteFrame; + var renderData = sprite.renderData; + var vData = renderData.chunk.vb; + var atlasWidth = spriteFrame.width; + var atlasHeight = spriteFrame.height; + var textureRect = spriteFrame.rect; + var ul = 0; + var vb = 0; + var ur = 0; + var vt = 0; + var quadUV0 = 0; + var quadUV1 = 0; + var quadUV2 = 0; + var quadUV3 = 0; + var quadUV4 = 0; + var quadUV5 = 0; + var quadUV6 = 0; + var quadUV7 = 0; + if (spriteFrame.isRotated()) { + ul = textureRect.x / atlasWidth; + vb = (textureRect.y + textureRect.width) / atlasHeight; + ur = (textureRect.x + textureRect.height) / atlasWidth; + vt = textureRect.y / atlasHeight; + quadUV0 = quadUV2 = ul; + quadUV4 = quadUV6 = ur; + quadUV3 = quadUV7 = vb; + quadUV1 = quadUV5 = vt; + } else { + ul = textureRect.x / atlasWidth; + vb = (textureRect.y + textureRect.height) / atlasHeight; + ur = (textureRect.x + textureRect.width) / atlasWidth; + vt = textureRect.y / atlasHeight; + quadUV0 = quadUV4 = ul; + quadUV2 = quadUV6 = ur; + quadUV1 = quadUV3 = vb; + quadUV5 = quadUV7 = vt; + } + switch (sprite.fillType) { + case FillType$1.HORIZONTAL: + vData[3] = quadUV0 + (quadUV2 - quadUV0) * fillStart; + vData[4] = quadUV1 + (quadUV3 - quadUV1) * fillStart; + vData[12] = quadUV0 + (quadUV2 - quadUV0) * fillEnd; + vData[13] = quadUV1 + (quadUV3 - quadUV1) * fillEnd; + vData[21] = quadUV4 + (quadUV6 - quadUV4) * fillStart; + vData[22] = quadUV5 + (quadUV7 - quadUV5) * fillStart; + vData[30] = quadUV4 + (quadUV6 - quadUV4) * fillEnd; + vData[31] = quadUV5 + (quadUV7 - quadUV5) * fillEnd; + break; + case FillType$1.VERTICAL: + vData[3] = quadUV0 + (quadUV4 - quadUV0) * fillStart; + vData[4] = quadUV1 + (quadUV5 - quadUV1) * fillStart; + vData[12] = quadUV2 + (quadUV6 - quadUV2) * fillStart; + vData[13] = quadUV3 + (quadUV7 - quadUV3) * fillStart; + vData[21] = quadUV0 + (quadUV4 - quadUV0) * fillEnd; + vData[22] = quadUV1 + (quadUV5 - quadUV1) * fillEnd; + vData[30] = quadUV2 + (quadUV6 - quadUV2) * fillEnd; + vData[31] = quadUV3 + (quadUV7 - quadUV3) * fillEnd; + break; + default: + errorID(2626); + break; + } + }, + updateVertexData: function updateVertexData(sprite, fillStart, fillEnd) { + var renderData = sprite.renderData; + var dataList = renderData.data; + var uiTrans = sprite.node._uiProps.uiTransformComp; + var width = uiTrans.width; + var height = uiTrans.height; + var appX = uiTrans.anchorX * width; + var appY = uiTrans.anchorY * height; + var l = -appX; + var b = -appY; + var r = width - appX; + var t = height - appY; + var progressStart = 0; + var progressEnd = 0; + switch (sprite.fillType) { + case FillType$1.HORIZONTAL: + progressStart = l + (r - l) * fillStart; + progressEnd = l + (r - l) * fillEnd; + l = progressStart; + r = progressEnd; + break; + case FillType$1.VERTICAL: + progressStart = b + (t - b) * fillStart; + progressEnd = b + (t - b) * fillEnd; + b = progressStart; + t = progressEnd; + break; + default: + errorID(2626); + break; + } + dataList[0].x = l; + dataList[0].y = b; + dataList[1].x = r; + dataList[1].y = b; + dataList[2].x = l; + dataList[2].y = t; + dataList[3].x = r; + dataList[3].y = t; + }, + createData: function createData(sprite) { + var renderData = sprite.requestRenderData(); + renderData.dataLength = 4; + renderData.resize(4, 6); + renderData.chunk.setIndexBuffer(QUAD_INDICES$4); + var dataList = renderData.data; + for (var _iterator = _createForOfIteratorHelperLoose(dataList), _step; !(_step = _iterator()).done;) { + var data = _step.value; + data.z = 0; + } + return renderData; + }, + updateWorldVertexData: function updateWorldVertexData(sprite, chunk) { + var node = sprite.node; + node.getWorldMatrix(m$3); + var renderData = sprite.renderData; + var stride = renderData.floatStride; + var dataList = sprite.renderData.data; + var vData = chunk.vb; + var offset = 0; + for (var i = 0; i < 4; i++) { + var local = dataList[i]; + var x = local.x; + var y = local.y; + var rhw = m$3.m03 * x + m$3.m07 * y + m$3.m15; + rhw = rhw ? 1 / rhw : 1; + offset = i * stride; + vData[offset] = (m$3.m00 * x + m$3.m04 * y + m$3.m12) * rhw; + vData[offset + 1] = (m$3.m01 * x + m$3.m05 * y + m$3.m13) * rhw; + vData[offset + 2] = (m$3.m02 * x + m$3.m06 * y + m$3.m14) * rhw; + } + }, + fillBuffers: function fillBuffers(sprite, renderer) { + var renderData = sprite.renderData; + var chunk = renderData.chunk; + if (sprite._flagChangedVersion !== sprite.node.flagChangedVersion || renderData.vertDirty) { + this.updateWorldVertexData(sprite, chunk); + renderData.vertDirty = false; + sprite._flagChangedVersion = sprite.node.flagChangedVersion; + } + chunk.bufferId; + var vid = chunk.vertexOffset; + var meshBuffer = chunk.meshBuffer; + var ib = chunk.meshBuffer.iData; + var indexOffset = meshBuffer.indexOffset; + ib[indexOffset++] = vid; + ib[indexOffset++] = vid + 1; + ib[indexOffset++] = vid + 2; + ib[indexOffset++] = vid + 2; + ib[indexOffset++] = vid + 1; + ib[indexOffset++] = vid + 3; + meshBuffer.indexOffset += 6; + }, + updateColor: function updateColor(sprite) { + var renderData = sprite.renderData; + var vData = renderData.chunk.vb; + var stride = renderData.floatStride; + var colorOffset = 5; + var color = sprite.color; + var colorR = color.r / 255; + var colorG = color.g / 255; + var colorB = color.b / 255; + var colorA = sprite.node._uiProps.opacity; + for (var i = 0; i < 4; i++) { + vData[colorOffset] = colorR; + vData[colorOffset + 1] = colorG; + vData[colorOffset + 2] = colorB; + vData[colorOffset + 3] = colorA; + colorOffset += stride; + } + } + }; + + var PI_2 = Math.PI * 2; + var EPSILON$1 = 1e-6; + var m$2 = new Mat4(); + var _vertPos = [new Vec2(), new Vec2(), new Vec2(), new Vec2()]; + var _vertices$1 = new Array(4); + var _uvs = new Array(8); + var _intersectPoint_1 = [new Vec2(), new Vec2(), new Vec2(), new Vec2()]; + var _intersectPoint_2 = [new Vec2(), new Vec2(), new Vec2(), new Vec2()]; + var _center = new Vec2(); + var _triangles = [new Vec2(), new Vec2(), new Vec2(), new Vec2()]; + var QUAD_INDICES$3 = null; + function _calcIntersectedPoints(left, right, bottom, top, center, angle, intersectPoints) { + var sinAngle = Math.sin(angle); + sinAngle = Math.abs(sinAngle) > EPSILON$1 ? sinAngle : 0; + var cosAngle = Math.cos(angle); + cosAngle = Math.abs(cosAngle) > EPSILON$1 ? cosAngle : 0; + var tanAngle = 0; + var cotAngle = 0; + if (cosAngle !== 0) { + tanAngle = sinAngle / cosAngle; + if ((left - center.x) * cosAngle > 0) { + var yLeft = center.y + tanAngle * (left - center.x); + intersectPoints[0].x = left; + intersectPoints[0].y = yLeft; + } + if ((right - center.x) * cosAngle > 0) { + var yRight = center.y + tanAngle * (right - center.x); + intersectPoints[2].x = right; + intersectPoints[2].y = yRight; + } + } + if (sinAngle !== 0) { + cotAngle = cosAngle / sinAngle; + if ((top - center.y) * sinAngle > 0) { + var xTop = center.x + cotAngle * (top - center.y); + intersectPoints[3].x = xTop; + intersectPoints[3].y = top; + } + if ((bottom - center.y) * sinAngle > 0) { + var xBottom = center.x + cotAngle * (bottom - center.y); + intersectPoints[1].x = xBottom; + intersectPoints[1].y = bottom; + } + } + } + function _calculateVertices(sprite) { + var uiTrans = sprite.node._uiProps.uiTransformComp; + var width = uiTrans.width; + var height = uiTrans.height; + var appX = uiTrans.anchorX * width; + var appY = uiTrans.anchorY * height; + var l = -appX; + var b = -appY; + var r = width - appX; + var t = height - appY; + var vertices = _vertices$1; + vertices[0] = l; + vertices[1] = b; + vertices[2] = r; + vertices[3] = t; + var fillCenter = sprite.fillCenter; + var cx = _center.x = Math.min(Math.max(0, fillCenter.x), 1) * (r - l) + l; + var cy = _center.y = Math.min(Math.max(0, fillCenter.y), 1) * (t - b) + b; + _vertPos[0].x = _vertPos[3].x = l; + _vertPos[1].x = _vertPos[2].x = r; + _vertPos[0].y = _vertPos[1].y = b; + _vertPos[2].y = _vertPos[3].y = t; + for (var _i = 0, _triangles2 = _triangles; _i < _triangles2.length; _i++) { + var num = _triangles2[_i]; + Vec2.set(num, 0, 0); + } + if (cx !== vertices[0]) { + Vec2.set(_triangles[0], 3, 0); + } + if (cx !== vertices[2]) { + Vec2.set(_triangles[2], 1, 2); + } + if (cy !== vertices[1]) { + Vec2.set(_triangles[1], 0, 1); + } + if (cy !== vertices[3]) { + Vec2.set(_triangles[3], 2, 3); + } + } + function _calculateUVs(spriteFrame) { + var atlasWidth = spriteFrame.width; + var atlasHeight = spriteFrame.height; + var textureRect = spriteFrame.getRect(); + var u0 = 0; + var u1 = 0; + var v0 = 0; + var v1 = 0; + var uvs = _uvs; + if (spriteFrame.isRotated()) { + u0 = textureRect.x / atlasWidth; + u1 = (textureRect.x + textureRect.height) / atlasWidth; + v0 = textureRect.y / atlasHeight; + v1 = (textureRect.y + textureRect.width) / atlasHeight; + uvs[0] = uvs[2] = u0; + uvs[4] = uvs[6] = u1; + uvs[3] = uvs[7] = v1; + uvs[1] = uvs[5] = v0; + } else { + u0 = textureRect.x / atlasWidth; + u1 = (textureRect.x + textureRect.width) / atlasWidth; + v0 = textureRect.y / atlasHeight; + v1 = (textureRect.y + textureRect.height) / atlasHeight; + uvs[0] = uvs[4] = u0; + uvs[2] = uvs[6] = u1; + uvs[1] = uvs[3] = v1; + uvs[5] = uvs[7] = v0; + } + } + function _getVertAngle(start, end) { + var placementX = end.x - start.x; + var placementY = end.y - start.y; + if (placementX === 0 && placementY === 0) { + return 0; + } else if (placementX === 0) { + if (placementY > 0) { + return Math.PI * 0.5; + } else { + return Math.PI * 1.5; + } + } else { + var angle = Math.atan(placementY / placementX); + if (placementX < 0) { + angle += Math.PI; + } + return angle; + } + } + function _generateTriangle(dataList, offset, vert0, vert1, vert2) { + var vertices = _vertices$1; + var v0x = vertices[0]; + var v0y = vertices[1]; + var v1x = vertices[2]; + var v1y = vertices[3]; + dataList[offset].x = vert0.x; + dataList[offset].y = vert0.y; + dataList[offset + 1].x = vert1.x; + dataList[offset + 1].y = vert1.y; + dataList[offset + 2].x = vert2.x; + dataList[offset + 2].y = vert2.y; + var progressX = 0; + var progressY = 0; + progressX = (vert0.x - v0x) / (v1x - v0x); + progressY = (vert0.y - v0y) / (v1y - v0y); + _generateUV(progressX, progressY, dataList, offset); + progressX = (vert1.x - v0x) / (v1x - v0x); + progressY = (vert1.y - v0y) / (v1y - v0y); + _generateUV(progressX, progressY, dataList, offset + 1); + progressX = (vert2.x - v0x) / (v1x - v0x); + progressY = (vert2.y - v0y) / (v1y - v0y); + _generateUV(progressX, progressY, dataList, offset + 2); + } + function _generateUV(progressX, progressY, data, offset) { + var uvs = _uvs; + var px1 = uvs[0] + (uvs[2] - uvs[0]) * progressX; + var px2 = uvs[4] + (uvs[6] - uvs[4]) * progressX; + var py1 = uvs[1] + (uvs[3] - uvs[1]) * progressX; + var py2 = uvs[5] + (uvs[7] - uvs[5]) * progressX; + var uv = data[offset]; + uv.u = px1 + (px2 - px1) * progressY; + uv.v = py1 + (py2 - py1) * progressY; + } + var radialFilled = { + useModel: false, + createData: function createData(sprite) { + return sprite.requestRenderData(); + }, + updateRenderData: function updateRenderData(sprite) { + var frame = sprite.spriteFrame; + dynamicAtlasManager.packToDynamicAtlas(sprite, frame); + this.updateUVs(sprite); + var renderData = sprite.renderData; + if (renderData && frame) { + if (!renderData.vertDirty) { + return; + } + var dataList = renderData.data; + var fillStart = sprite.fillStart; + var fillRange = sprite.fillRange; + if (fillRange < 0) { + fillStart += fillRange; + fillRange = -fillRange; + } + while (fillStart >= 1.0) { + fillStart -= 1.0; + } + while (fillStart < 0.0) { + fillStart += 1.0; + } + fillStart *= PI_2; + fillRange *= PI_2; + var fillEnd = fillStart + fillRange; + _calculateVertices(sprite); + _calculateUVs(frame); + _calcIntersectedPoints(_vertices$1[0], _vertices$1[2], _vertices$1[1], _vertices$1[3], _center, fillStart, _intersectPoint_1); + _calcIntersectedPoints(_vertices$1[0], _vertices$1[2], _vertices$1[1], _vertices$1[3], _center, fillStart + fillRange, _intersectPoint_2); + var offset = 0; + for (var triangleIndex = 0; triangleIndex < 4; ++triangleIndex) { + var triangle = _triangles[triangleIndex]; + if (!triangle) { + continue; + } + if (fillRange >= PI_2) { + renderData.dataLength = offset + 3; + _generateTriangle(dataList, offset, _center, _vertPos[triangle.x], _vertPos[triangle.y]); + offset += 3; + continue; + } + var startAngle = _getVertAngle(_center, _vertPos[triangle.x]); + var endAngle = _getVertAngle(_center, _vertPos[triangle.y]); + if (endAngle < startAngle) { + endAngle += PI_2; + } + startAngle -= PI_2; + endAngle -= PI_2; + for (var testIndex = 0; testIndex < 3; ++testIndex) { + if (startAngle >= fillEnd) ; else if (startAngle >= fillStart) { + renderData.dataLength = offset + 3; + if (endAngle >= fillEnd) { + _generateTriangle(dataList, offset, _center, _vertPos[triangle.x], _intersectPoint_2[triangleIndex]); + } else { + _generateTriangle(dataList, offset, _center, _vertPos[triangle.x], _vertPos[triangle.y]); + } + offset += 3; + } else if (endAngle > fillStart) { + if (endAngle <= fillEnd) { + renderData.dataLength = offset + 3; + _generateTriangle(dataList, offset, _center, _intersectPoint_1[triangleIndex], _vertPos[triangle.y]); + offset += 3; + } else { + renderData.dataLength = offset + 3; + _generateTriangle(dataList, offset, _center, _intersectPoint_1[triangleIndex], _intersectPoint_2[triangleIndex]); + offset += 3; + } + } + startAngle += PI_2; + endAngle += PI_2; + } + } + if (offset === 0) { + renderData.dataLength = 0; + } + renderData.resize(offset, offset); + renderData.updateRenderData(sprite, frame); + } + }, + createQuadIndices: function createQuadIndices(indexCount) { + QUAD_INDICES$3 = null; + QUAD_INDICES$3 = new Uint16Array(indexCount); + var offset = 0; + for (var i = 0; i < indexCount; i++) { + QUAD_INDICES$3[offset++] = i; + } + }, + fillBuffers: function fillBuffers(comp, renderer) { + var node = comp.node; + var renderData = comp.renderData; + var chunk = renderData.chunk; + if (comp._flagChangedVersion !== node.flagChangedVersion || renderData.vertDirty) { + this.updateWorldVertexAndUVData(comp, chunk); + renderData.vertDirty = false; + comp._flagChangedVersion = node.flagChangedVersion; + } + this.updateColorLate(comp); + chunk.bufferId; + var vid = chunk.vertexOffset; + var meshBuffer = chunk.meshBuffer; + var ib = chunk.meshBuffer.iData; + var indexOffset = meshBuffer.indexOffset; + for (var i = 0; i < renderData.indexCount; i++) { + ib[indexOffset + i] = vid + i; + } + meshBuffer.indexOffset += renderData.indexCount; + meshBuffer.setDirty(); + }, + updateWorldUVData: function updateWorldUVData(sprite, chunk) { + var renderData = sprite.renderData; + var stride = renderData.floatStride; + var dataList = renderData.data; + var vData = renderData.chunk.vb; + for (var i = 0; i < dataList.length; i++) { + var offset = i * stride; + vData[offset + 3] = dataList[i].u; + vData[offset + 4] = dataList[i].v; + } + }, + updateWorldVertexAndUVData: function updateWorldVertexAndUVData(sprite, chunk) { + var node = sprite.node; + node.getWorldMatrix(m$2); + var renderData = sprite.renderData; + var stride = renderData.floatStride; + var dataList = sprite.renderData.data; + var vData = chunk.vb; + var vertexCount = renderData.vertexCount; + var vertexOffset = 0; + for (var i = 0; i < vertexCount; i++) { + var vert = dataList[i]; + var x = vert.x; + var y = vert.y; + var rhw = m$2.m03 * x + m$2.m07 * y + m$2.m15; + rhw = rhw ? 1 / rhw : 1; + vData[vertexOffset + 0] = (m$2.m00 * x + m$2.m04 * y + m$2.m12) * rhw; + vData[vertexOffset + 1] = (m$2.m01 * x + m$2.m05 * y + m$2.m13) * rhw; + vData[vertexOffset + 2] = (m$2.m02 * x + m$2.m06 * y + m$2.m14) * rhw; + vData[vertexOffset + 3] = vert.u; + vData[vertexOffset + 4] = vert.v; + vertexOffset += stride; + } + }, + updateUVs: function updateUVs(sprite) { + var renderData = sprite.renderData; + renderData.vertDirty = true; + sprite.markForUpdateRenderData(); + }, + updateColorLate: function updateColorLate(sprite) { + var renderData = sprite.renderData; + var vData = renderData.chunk.vb; + var stride = renderData.floatStride; + var vertexCount = renderData.vertexCount; + var colorOffset = 5; + var color = sprite.color; + var colorR = color.r / 255; + var colorG = color.g / 255; + var colorB = color.b / 255; + var colorA = sprite.node._uiProps.opacity; + for (var i = 0; i < vertexCount; i++) { + vData[colorOffset] = colorR; + vData[colorOffset + 1] = colorG; + vData[colorOffset + 2] = colorB; + vData[colorOffset + 3] = colorA; + colorOffset += stride; + } + }, + updateColor: function updateColor(sprite) {} + }; + + var QUAD_INDICES$2 = Uint16Array.from([0, 1, 2, 1, 3, 2]); + var simple$3 = { + createData: function createData(sprite) { + var renderData = sprite.requestRenderData(); + renderData.dataLength = 4; + renderData.resize(4, 6); + renderData.chunk.setIndexBuffer(QUAD_INDICES$2); + return renderData; + }, + updateRenderData: function updateRenderData(sprite) { + var frame = sprite.spriteFrame; + dynamicAtlasManager.packToDynamicAtlas(sprite, frame); + this.updateUVs(sprite); + var renderData = sprite.renderData; + if (renderData && frame) { + if (renderData.vertDirty) { + this.updateVertexData(sprite); + } + renderData.updateRenderData(sprite, frame); + } + }, + updateWorldVerts: function updateWorldVerts(sprite, chunk) { + var renderData = sprite.renderData; + var vData = chunk.vb; + var dataList = renderData.data; + var node = sprite.node; + var m = node.worldMatrix; + var stride = renderData.floatStride; + var offset = 0; + var length = dataList.length; + for (var i = 0; i < length; i++) { + var curData = dataList[i]; + var x = curData.x; + var y = curData.y; + var rhw = m.m03 * x + m.m07 * y + m.m15; + rhw = rhw ? 1 / rhw : 1; + offset = i * stride; + vData[offset + 0] = (m.m00 * x + m.m04 * y + m.m12) * rhw; + vData[offset + 1] = (m.m01 * x + m.m05 * y + m.m13) * rhw; + vData[offset + 2] = (m.m02 * x + m.m06 * y + m.m14) * rhw; + } + }, + fillBuffers: function fillBuffers(sprite, renderer) { + if (sprite === null) { + return; + } + var renderData = sprite.renderData; + var chunk = renderData.chunk; + if (sprite._flagChangedVersion !== sprite.node.flagChangedVersion || renderData.vertDirty) { + this.updateWorldVerts(sprite, chunk); + renderData.vertDirty = false; + sprite._flagChangedVersion = sprite.node.flagChangedVersion; + } + var vidOrigin = chunk.vertexOffset; + var meshBuffer = chunk.meshBuffer; + var ib = chunk.meshBuffer.iData; + var indexOffset = meshBuffer.indexOffset; + var vid = vidOrigin; + ib[indexOffset++] = vid; + ib[indexOffset++] = vid + 1; + ib[indexOffset++] = vid + 2; + ib[indexOffset++] = vid + 1; + ib[indexOffset++] = vid + 3; + ib[indexOffset++] = vid + 2; + meshBuffer.indexOffset += 6; + }, + updateVertexData: function updateVertexData(sprite) { + var renderData = sprite.renderData; + if (!renderData) { + return; + } + var uiTrans = sprite.node._uiProps.uiTransformComp; + var dataList = renderData.data; + var cw = uiTrans.width; + var ch = uiTrans.height; + var appX = uiTrans.anchorX * cw; + var appY = uiTrans.anchorY * ch; + var l = 0; + var b = 0; + var r = 0; + var t = 0; + if (sprite.trim) { + l = -appX; + b = -appY; + r = cw - appX; + t = ch - appY; + } else { + var frame = sprite.spriteFrame; + var originSize = frame.originalSize; + var ow = originSize.width; + var oh = originSize.height; + var scaleX = cw / ow; + var scaleY = ch / oh; + var trimmedBorder = frame.trimmedBorder; + l = trimmedBorder.x * scaleX - appX; + b = trimmedBorder.z * scaleY - appY; + r = cw + trimmedBorder.y * scaleX - appX; + t = ch + trimmedBorder.w * scaleY - appY; + } + dataList[0].x = l; + dataList[0].y = b; + dataList[1].x = r; + dataList[1].y = b; + dataList[2].x = l; + dataList[2].y = t; + dataList[3].x = r; + dataList[3].y = t; + renderData.vertDirty = true; + }, + updateUVs: function updateUVs(sprite) { + if (!sprite.spriteFrame) return; + var renderData = sprite.renderData; + var vData = renderData.chunk.vb; + var uv = sprite.spriteFrame.uv; + vData[3] = uv[0]; + vData[4] = uv[1]; + vData[12] = uv[2]; + vData[13] = uv[3]; + vData[21] = uv[4]; + vData[22] = uv[5]; + vData[30] = uv[6]; + vData[31] = uv[7]; + }, + updateColor: function updateColor(sprite) { + var renderData = sprite.renderData; + var vData = renderData.chunk.vb; + var colorOffset = 5; + var color = sprite.color; + var colorR = color.r / 255; + var colorG = color.g / 255; + var colorB = color.b / 255; + var colorA = color.a / 255; + for (var i = 0; i < 4; i++, colorOffset += renderData.floatStride) { + vData[colorOffset] = colorR; + vData[colorOffset + 1] = colorG; + vData[colorOffset + 2] = colorB; + vData[colorOffset + 3] = colorA; + } + } + }; + + var m$1 = new Mat4(); + var tempRenderData$1 = []; + for (var i$2 = 0; i$2 < 4; i$2++) { + tempRenderData$1.push({ + x: 0, + y: 0, + z: 0, + u: 0, + v: 0, + color: new Color$1() + }); + } + var sliced = { + createData: function createData(sprite) { + var renderData = sprite.requestRenderData(); + renderData.dataLength = 16; + renderData.resize(16, 54); + this.QUAD_INDICES = new Uint16Array(54); + this.createQuadIndices(4, 4); + renderData.chunk.setIndexBuffer(this.QUAD_INDICES); + return renderData; + }, + createQuadIndices: function createQuadIndices(vertexRow, vertexCol) { + var offset = 0; + for (var curRow = 0; curRow < vertexRow - 1; curRow++) { + for (var curCol = 0; curCol < vertexCol - 1; curCol++) { + var vid = curRow * vertexCol + curCol; + this.QUAD_INDICES[offset++] = vid; + this.QUAD_INDICES[offset++] = vid + 1; + this.QUAD_INDICES[offset++] = vid + vertexCol; + this.QUAD_INDICES[offset++] = vid + 1; + this.QUAD_INDICES[offset++] = vid + 1 + vertexCol; + this.QUAD_INDICES[offset++] = vid + vertexCol; + } + } + }, + updateRenderData: function updateRenderData(sprite) { + var frame = sprite.spriteFrame; + dynamicAtlasManager.packToDynamicAtlas(sprite, frame); + this.updateUVs(sprite); + var renderData = sprite.renderData; + if (renderData && frame) { + var vertDirty = renderData.vertDirty; + if (vertDirty) { + this.updateVertexData(sprite); + } + renderData.updateRenderData(sprite, frame); + } + }, + updateVertexData: function updateVertexData(sprite) { + var renderData = sprite.renderData; + var dataList = renderData.data; + var uiTrans = sprite.node._uiProps.uiTransformComp; + var width = uiTrans.width; + var height = uiTrans.height; + var appX = uiTrans.anchorX * width; + var appY = uiTrans.anchorY * height; + var frame = sprite.spriteFrame; + var leftWidth = frame.insetLeft; + var rightWidth = frame.insetRight; + var topHeight = frame.insetTop; + var bottomHeight = frame.insetBottom; + var sizableWidth = width - leftWidth - rightWidth; + var sizableHeight = height - topHeight - bottomHeight; + var xScale = width / (leftWidth + rightWidth); + var yScale = height / (topHeight + bottomHeight); + xScale = Number.isNaN(xScale) || xScale > 1 ? 1 : xScale; + yScale = Number.isNaN(yScale) || yScale > 1 ? 1 : yScale; + sizableWidth = sizableWidth < 0 ? 0 : sizableWidth; + sizableHeight = sizableHeight < 0 ? 0 : sizableHeight; + tempRenderData$1[0].x = -appX; + tempRenderData$1[0].y = -appY; + tempRenderData$1[1].x = leftWidth * xScale - appX; + tempRenderData$1[1].y = bottomHeight * yScale - appY; + tempRenderData$1[2].x = tempRenderData$1[1].x + sizableWidth; + tempRenderData$1[2].y = tempRenderData$1[1].y + sizableHeight; + tempRenderData$1[3].x = width - appX; + tempRenderData$1[3].y = height - appY; + for (var curRow = 0; curRow < 4; curRow++) { + for (var curCol = 0; curCol < 4; curCol++) { + var curIndex = curRow * 4 + curCol; + if (curIndex < renderData.dataLength && curRow < tempRenderData$1.length && curCol < tempRenderData$1.length) { + dataList[curIndex].x = tempRenderData$1[curCol].x; + dataList[curIndex].y = tempRenderData$1[curRow].y; + } + } + } + }, + fillBuffers: function fillBuffers(sprite, renderer) { + var renderData = sprite.renderData; + var chunk = renderData.chunk; + if (sprite._flagChangedVersion !== sprite.node.flagChangedVersion || renderData.vertDirty) { + this.updateWorldVertexData(sprite, chunk); + renderData.vertDirty = false; + sprite._flagChangedVersion = sprite.node.flagChangedVersion; + } + chunk.bufferId; + var vid = chunk.vertexOffset; + var meshBuffer = chunk.meshBuffer; + var ib = chunk.meshBuffer.iData; + var indexOffset = meshBuffer.indexOffset; + for (var r = 0; r < 3; ++r) { + for (var c = 0; c < 3; ++c) { + var start = vid + r * 4 + c; + ib[indexOffset++] = start; + ib[indexOffset++] = start + 1; + ib[indexOffset++] = start + 4; + ib[indexOffset++] = start + 1; + ib[indexOffset++] = start + 5; + ib[indexOffset++] = start + 4; + } + } + meshBuffer.indexOffset = indexOffset; + }, + updateWorldVertexData: function updateWorldVertexData(sprite, chunk) { + var node = sprite.node; + node.getWorldMatrix(m$1); + var renderData = sprite.renderData; + var stride = renderData.floatStride; + var dataList = renderData.data; + var vData = chunk.vb; + var offset = 0; + for (var row = 0; row < 4; ++row) { + var rowD = dataList[row * 4]; + for (var col = 0; col < 4; ++col) { + var colD = dataList[col]; + var x = colD.x; + var y = rowD.y; + var rhw = m$1.m03 * x + m$1.m07 * y + m$1.m15; + rhw = rhw ? 1 / rhw : 1; + offset = (row * 4 + col) * stride; + vData[offset + 0] = (m$1.m00 * x + m$1.m04 * y + m$1.m12) * rhw; + vData[offset + 1] = (m$1.m01 * x + m$1.m05 * y + m$1.m13) * rhw; + vData[offset + 2] = (m$1.m02 * x + m$1.m06 * y + m$1.m14) * rhw; + } + } + }, + updateUVs: function updateUVs(sprite) { + if (!sprite.spriteFrame) return; + var renderData = sprite.renderData; + var vData = renderData.chunk.vb; + var stride = renderData.floatStride; + var uv = sprite.spriteFrame.uvSliced; + var uvOffset = 3; + for (var _i = 0; _i < 16; _i++) { + vData[uvOffset] = uv[_i].u; + vData[uvOffset + 1] = uv[_i].v; + uvOffset += stride; + } + }, + updateColor: function updateColor(sprite) { + var renderData = sprite.renderData; + var vData = renderData.chunk.vb; + var stride = renderData.floatStride; + var colorOffset = 5; + var color = sprite.color; + var colorR = color.r / 255; + var colorG = color.g / 255; + var colorB = color.b / 255; + var colorA = sprite.node._uiProps.opacity; + for (var _i2 = 0; _i2 < 16; _i2++) { + vData[colorOffset] = colorR; + vData[colorOffset + 1] = colorG; + vData[colorOffset + 2] = colorB; + vData[colorOffset + 3] = colorA; + colorOffset += stride; + } + } + }; + + var m = new Mat4(); + var origin; + var leftInner; + var rightInner; + var rightOuter; + var bottomInner; + var topInner; + var topOuter; + var tempRenderDataLength = 0; + var tempRenderData = []; + var QUAD_INDICES$1 = null; + function has9SlicedOffsetVertexCount(spriteFrame) { + if (spriteFrame) { + if (spriteFrame.insetTop > 0 || spriteFrame.insetBottom > 0 || spriteFrame.insetLeft > 0 || spriteFrame.insetRight > 0) { + return 2; + } + } + return 0; + } + var tiled = { + createData: function createData(sprite) { + return sprite.requestRenderData(); + }, + updateRenderData: function updateRenderData(sprite) { + var renderData = sprite.renderData; + var frame = sprite.spriteFrame; + if (!frame || !renderData) { + return; + } + if (!renderData.vertDirty) { + return; + } + var uiTrans = sprite.node._uiProps.uiTransformComp; + var contentWidth = Math.abs(uiTrans.width); + var contentHeight = Math.abs(uiTrans.height); + var rect = frame.getRect(); + var leftWidth = frame.insetLeft; + var rightWidth = frame.insetRight; + var centerWidth = rect.width - leftWidth - rightWidth; + var topHeight = frame.insetTop; + var bottomHeight = frame.insetBottom; + var centerHeight = rect.height - topHeight - bottomHeight; + var sizableWidth = contentWidth - leftWidth - rightWidth; + var sizableHeight = contentHeight - topHeight - bottomHeight; + sizableWidth = sizableWidth > 0 ? sizableWidth : 0; + sizableHeight = sizableHeight > 0 ? sizableHeight : 0; + var hRepeat = centerWidth === 0 ? sizableWidth : sizableWidth / centerWidth; + var vRepeat = centerHeight === 0 ? sizableHeight : sizableHeight / centerHeight; + var offsetVertexCount = has9SlicedOffsetVertexCount(frame); + var row = Math.ceil(vRepeat + offsetVertexCount); + var col = Math.ceil(hRepeat + offsetVertexCount); + renderData.dataLength = row * 2 * (col * 2); + this.updateVerts(sprite, sizableWidth, sizableHeight, row, col); + if (renderData.vertexCount !== row * col * 4) { + sprite.renderEntity.colorDirty = true; + } + renderData.resize(row * col * 4, row * col * 6); + renderData.updateRenderData(sprite, frame); + }, + createQuadIndices: function createQuadIndices(indexCount) { + if (indexCount % 6 !== 0) { + error('illegal index count!'); + return; + } + var quadCount = indexCount / 6; + QUAD_INDICES$1 = null; + QUAD_INDICES$1 = new Uint16Array(indexCount); + var offset = 0; + for (var i = 0; i < quadCount; i++) { + QUAD_INDICES$1[offset++] = 0 + i * 4; + QUAD_INDICES$1[offset++] = 1 + i * 4; + QUAD_INDICES$1[offset++] = 2 + i * 4; + QUAD_INDICES$1[offset++] = 1 + i * 4; + QUAD_INDICES$1[offset++] = 3 + i * 4; + QUAD_INDICES$1[offset++] = 2 + i * 4; + } + }, + updateUVs: function updateUVs(sprite) { + var renderData = sprite.renderData; + renderData.vertDirty = true; + sprite.markForUpdateRenderData(); + }, + fillBuffers: function fillBuffers(sprite, renderer) { + var node = sprite.node; + var renderData = sprite.renderData; + var chunk = renderData.chunk; + if (sprite._flagChangedVersion !== node.flagChangedVersion || renderData.vertDirty) { + this.updateWorldVertexAndUVData(sprite, chunk); + renderData.vertDirty = false; + sprite._flagChangedVersion = node.flagChangedVersion; + } + this.updateColorLate(sprite); + chunk.bufferId; + var vid = chunk.vertexOffset; + var meshBuffer = chunk.meshBuffer; + var ib = chunk.meshBuffer.iData; + var indexOffset = meshBuffer.indexOffset; + for (var i = 0; i < renderData.indexCount; i += 6) { + ib[indexOffset++] = vid; + ib[indexOffset++] = vid + 1; + ib[indexOffset++] = vid + 2; + ib[indexOffset++] = vid + 1; + ib[indexOffset++] = vid + 3; + ib[indexOffset++] = vid + 2; + vid += 4; + meshBuffer.indexOffset += 6; + } + meshBuffer.setDirty(); + }, + updateWorldUVData: function updateWorldUVData(sprite) { + var renderData = sprite.renderData; + var stride = renderData.floatStride; + var dataList = renderData.data; + var vData = renderData.chunk.vb; + for (var i = 0; i < dataList.length; i++) { + var offset = i * stride; + vData[offset + 3] = dataList[i].u; + vData[offset + 4] = dataList[i].v; + } + }, + updateWorldVertexAndUVData: function updateWorldVertexAndUVData(sprite, chunk) { + var node = sprite.node; + node.getWorldMatrix(m); + var renderData = sprite.renderData; + var stride = renderData.floatStride; + var dataList = renderData.data; + var vData = chunk.vb; + var length = dataList.length; + for (var i = 0; i < length; i++) { + var x = dataList[i].x; + var y = dataList[i].y; + var z = dataList[i].z; + var rhw = m.m03 * x + m.m07 * y + m.m11 * z + m.m15; + rhw = rhw ? 1 / rhw : 1; + var offset = i * stride; + vData[offset] = (m.m00 * x + m.m04 * y + m.m08 * z + m.m12) * rhw; + vData[offset + 1] = (m.m01 * x + m.m05 * y + m.m09 * z + m.m13) * rhw; + vData[offset + 2] = (m.m02 * x + m.m06 * y + m.m10 * z + m.m14) * rhw; + } + this.updateWorldUVData(sprite); + }, + updateVerts: function updateVerts(sprite, sizableWidth, sizableHeight, row, col) { + var uiTrans = sprite.node._uiProps.uiTransformComp; + var renderData = sprite.renderData; + var dataList = renderData.data; + var frame = sprite.spriteFrame; + var rect = frame.rect; + var contentWidth = Math.abs(uiTrans.width); + var contentHeight = Math.abs(uiTrans.height); + var appx = uiTrans.anchorX * contentWidth; + var appy = uiTrans.anchorY * contentHeight; + var leftWidth = frame.insetLeft; + var rightWidth = frame.insetRight; + var centerWidth = rect.width - leftWidth - rightWidth; + var topHeight = frame.insetTop; + var bottomHeight = frame.insetBottom; + var centerHeight = rect.height - topHeight - bottomHeight; + var xScale = uiTrans.width / (leftWidth + rightWidth) > 1 ? 1 : uiTrans.width / (leftWidth + rightWidth); + var yScale = uiTrans.height / (topHeight + bottomHeight) > 1 ? 1 : uiTrans.height / (topHeight + bottomHeight); + var offsetWidth = 0; + var offsetHeight = 0; + if (centerWidth > 0) { + offsetWidth = Math.floor(sizableWidth * 1000) / 1000 % centerWidth === 0 ? centerWidth : sizableWidth % centerWidth; + } else { + offsetWidth = sizableWidth; + } + if (centerHeight > 0) { + offsetHeight = Math.floor(sizableHeight * 1000) / 1000 % centerHeight === 0 ? centerHeight : sizableHeight % centerHeight; + } else { + offsetHeight = sizableHeight; + } + tempRenderData.length = 0; + tempRenderDataLength = Math.max(row + 1, col + 1); + for (var i = 0; i < tempRenderDataLength; i++) { + tempRenderData.push({ + x: 0, + y: 0, + z: 0, + u: 0, + v: 0, + color: new Color$1() + }); + } + var offsetVertexCount = has9SlicedOffsetVertexCount(frame); + if (offsetVertexCount === 0) { + for (var _i = 0; _i < tempRenderDataLength; _i++) { + if (_i >= col) { + tempRenderData[_i].x = contentWidth - appx; + } else { + tempRenderData[_i].x = -appx + _i * centerWidth; + } + if (_i >= row) { + tempRenderData[_i].y = contentHeight - appy; + } else { + tempRenderData[_i].y = -appy + _i * centerHeight; + } + } + } else { + for (var _i2 = 0; _i2 < tempRenderDataLength; _i2++) { + if (_i2 === 0) { + tempRenderData[_i2].x = -appx; + } else if (_i2 === 1) { + tempRenderData[_i2].x = -appx + leftWidth * xScale; + } else if (_i2 > 1 && _i2 < col - 1) { + if (centerWidth > 0) { + tempRenderData[_i2].x = -appx + leftWidth * xScale + centerWidth * (_i2 - 1); + } else { + tempRenderData[_i2].x = leftWidth + sizableWidth - appx; + } + } else if (_i2 === col - 1) { + tempRenderData[_i2].x = -appx + leftWidth * xScale + offsetWidth + centerWidth * (_i2 - 2); + } else if (_i2 >= col) { + tempRenderData[_i2].x = Math.min(leftWidth + sizableWidth + rightWidth, contentWidth) - appx; + } + if (_i2 === 0) { + tempRenderData[_i2].y = -appy; + } else if (_i2 === 1) { + tempRenderData[_i2].y = -appy + bottomHeight * yScale; + } else if (_i2 > 1 && _i2 < row - 1) { + if (centerHeight > 0) { + tempRenderData[_i2].y = -appy + bottomHeight * yScale + centerHeight * (_i2 - 1); + } else { + tempRenderData[_i2].y = bottomHeight + sizableHeight - appy; + } + } else if (_i2 === row - 1) { + tempRenderData[_i2].y = -appy + bottomHeight * yScale + offsetHeight + centerHeight * (_i2 - 2); + } else if (_i2 >= row) { + tempRenderData[_i2].y = Math.min(bottomHeight + sizableHeight + topHeight, contentHeight) - appy; + } + } + } + var x = 0; + var x1 = 0; + var y = 0; + var y1 = 0; + for (var yIndex = 0; yIndex < row; ++yIndex) { + y = tempRenderData[yIndex].y; + y1 = tempRenderData[yIndex + 1].y; + for (var xIndex = 0; xIndex < col; ++xIndex) { + x = tempRenderData[xIndex].x; + x1 = tempRenderData[xIndex + 1].x; + var curIndex = 4 * (yIndex * col + xIndex); + dataList[curIndex].x = x; + dataList[curIndex].y = y; + dataList[curIndex + 1].x = x1; + dataList[curIndex + 1].y = y; + dataList[curIndex + 2].x = x; + dataList[curIndex + 2].y = y1; + dataList[curIndex + 3].x = x1; + dataList[curIndex + 3].y = y1; + } + } + var rotated = frame.rotated; + frame.uv; + var uvSliced = frame.uvSliced; + origin = uvSliced[0]; + leftInner = uvSliced[1]; + rightInner = uvSliced[2]; + rightOuter = uvSliced[3]; + bottomInner = uvSliced[4]; + topInner = uvSliced[8]; + topOuter = uvSliced[12]; + var coefU = 0; + var coefV = 0; + var hRepeat = centerWidth === 0 ? sizableWidth : sizableWidth / centerWidth; + var vRepeat = centerHeight === 0 ? sizableHeight : sizableHeight / centerHeight; + var tempXVerts = []; + var tempYVerts = []; + for (var yIndexUV = 0; yIndexUV < row; ++yIndexUV) { + if (sizableHeight > centerHeight) { + var curYRectCount = offsetVertexCount > 0 ? yIndexUV : yIndexUV + 1; + if (sizableHeight >= curYRectCount * centerHeight) { + coefV = 1; + } else { + coefV = vRepeat % 1; + } + } else { + coefV = vRepeat; + } + for (var xIndexUV = 0; xIndexUV < col; ++xIndexUV) { + if (sizableWidth > centerWidth) { + var curXRectCount = offsetVertexCount > 0 ? xIndexUV : xIndexUV + 1; + if (sizableWidth >= curXRectCount * centerWidth) { + coefU = 1; + } else { + coefU = hRepeat % 1; + } + } else { + coefU = hRepeat; + } + if (rotated) { + if (offsetVertexCount === 0) { + tempXVerts[0] = bottomInner.u; + tempXVerts[1] = bottomInner.u; + tempXVerts[2] = bottomInner.u + (topInner.u - bottomInner.u) * coefV; + tempYVerts[0] = leftInner.v; + tempYVerts[1] = leftInner.v + (rightInner.v - leftInner.v) * coefU; + tempYVerts[2] = leftInner.v; + } else { + if (yIndexUV === 0) { + tempXVerts[0] = origin.u; + tempXVerts[1] = origin.u; + tempXVerts[2] = bottomInner.u; + } else if (yIndexUV < row - 1) { + tempXVerts[0] = bottomInner.u; + tempXVerts[1] = bottomInner.u; + tempXVerts[2] = bottomInner.u + (topInner.u - bottomInner.u) * coefV; + } else if (yIndexUV === row - 1) { + tempXVerts[0] = topInner.u; + tempXVerts[1] = topInner.u; + tempXVerts[2] = topOuter.u; + } + if (xIndexUV === 0) { + tempYVerts[0] = origin.v; + tempYVerts[1] = leftInner.v; + tempYVerts[2] = origin.v; + } else if (xIndexUV < col - 1) { + tempYVerts[0] = leftInner.v; + tempYVerts[1] = leftInner.v + (rightInner.v - leftInner.v) * coefU; + tempYVerts[2] = leftInner.v; + } else if (xIndexUV === col - 1) { + tempYVerts[0] = rightInner.v; + tempYVerts[1] = rightOuter.v; + tempYVerts[2] = rightInner.v; + } + } + tempXVerts[3] = tempXVerts[2]; + tempYVerts[3] = tempYVerts[1]; + } else { + if (offsetVertexCount === 0) { + tempXVerts[0] = leftInner.u; + tempXVerts[1] = leftInner.u + (rightInner.u - leftInner.u) * coefU; + tempXVerts[2] = leftInner.u; + tempYVerts[0] = bottomInner.v; + tempYVerts[1] = bottomInner.v; + tempYVerts[2] = bottomInner.v + (topInner.v - bottomInner.v) * coefV; + } else { + if (xIndexUV === 0) { + tempXVerts[0] = origin.u; + tempXVerts[1] = leftInner.u; + tempXVerts[2] = origin.u; + } else if (xIndexUV < col - 1) { + tempXVerts[0] = leftInner.u; + tempXVerts[1] = leftInner.u + (rightInner.u - leftInner.u) * coefU; + tempXVerts[2] = leftInner.u; + } else if (xIndexUV === col - 1) { + tempXVerts[0] = rightInner.u; + tempXVerts[1] = rightOuter.u; + tempXVerts[2] = rightInner.u; + } + if (yIndexUV === 0) { + tempYVerts[0] = origin.v; + tempYVerts[1] = origin.v; + tempYVerts[2] = bottomInner.v; + } else if (yIndexUV < row - 1) { + tempYVerts[0] = bottomInner.v; + tempYVerts[1] = bottomInner.v; + tempYVerts[2] = bottomInner.v + (topInner.v - bottomInner.v) * coefV; + } else if (yIndexUV === row - 1) { + tempYVerts[0] = topInner.v; + tempYVerts[1] = topInner.v; + tempYVerts[2] = topOuter.v; + } + } + tempXVerts[3] = tempXVerts[1]; + tempYVerts[3] = tempYVerts[2]; + } + var _curIndex = 4 * (yIndexUV * col + xIndexUV); + dataList[_curIndex].u = tempXVerts[0]; + dataList[_curIndex].v = tempYVerts[0]; + dataList[_curIndex + 1].u = tempXVerts[1]; + dataList[_curIndex + 1].v = tempYVerts[1]; + dataList[_curIndex + 2].u = tempXVerts[2]; + dataList[_curIndex + 2].v = tempYVerts[2]; + dataList[_curIndex + 3].u = tempXVerts[3]; + dataList[_curIndex + 3].v = tempYVerts[3]; + } + } + }, + updateColorLate: function updateColorLate(sprite) { + var renderData = sprite.renderData; + var vData = renderData.chunk.vb; + var stride = renderData.floatStride; + var vertexCount = renderData.vertexCount; + var colorOffset = 5; + var color = sprite.color; + var colorR = color.r / 255; + var colorG = color.g / 255; + var colorB = color.b / 255; + var colorA = sprite.node._uiProps.opacity; + for (var i = 0; i < vertexCount; i++) { + vData[colorOffset] = colorR; + vData[colorOffset + 1] = colorG; + vData[colorOffset + 2] = colorB; + vData[colorOffset + 3] = colorA; + colorOffset += stride; + } + }, + updateColor: function updateColor(sprite) {} + }; + + var SpriteType = Sprite.Type; + var FillType = Sprite.FillType; + var spriteAssembler = exports('s', { + getAssembler: function getAssembler(spriteComp) { + var util = simple$3; + var comp = spriteComp; + switch (comp.type) { + case SpriteType.SLICED: + util = sliced; + break; + case SpriteType.TILED: + util = tiled; + break; + case SpriteType.FILLED: + if (comp.fillType === FillType.RADIAL) { + util = radialFilled; + } else { + util = barFilled; + } + break; + } + return util; + } + }); + Sprite.Assembler = spriteAssembler; + + var mouseEvents = [Input.EventType.MOUSE_DOWN, Input.EventType.MOUSE_MOVE, Input.EventType.MOUSE_UP, Input.EventType.MOUSE_WHEEL]; + var touchEvents = [Input.EventType.TOUCH_START, Input.EventType.TOUCH_MOVE, Input.EventType.TOUCH_END, Input.EventType.TOUCH_CANCEL]; + var PointerEventDispatcher = function () { + function PointerEventDispatcher() { + this.priority = EventDispatcherPriority.UI; + this._isListDirty = false; + this._inDispatchCount = 0; + this._pointerEventProcessorList = []; + this._processorListToAdd = []; + this._processorListToRemove = []; + input._registerEventDispatcher(this); + NodeEventProcessor.callbacksInvoker.on(DispatcherEventType.ADD_POINTER_EVENT_PROCESSOR, this.addPointerEventProcessor, this); + NodeEventProcessor.callbacksInvoker.on(DispatcherEventType.REMOVE_POINTER_EVENT_PROCESSOR, this.removePointerEventProcessor, this); + NodeEventProcessor.callbacksInvoker.on(DispatcherEventType.MARK_LIST_DIRTY, this._markListDirty, this); + } + var _proto = PointerEventDispatcher.prototype; + _proto.dispatchEvent = function dispatchEvent(event) { + var eventType = event.type; + if (touchEvents.includes(eventType)) { + return this.dispatchEventTouch(event); + } else if (mouseEvents.includes(eventType)) { + return this.dispatchEventMouse(event); + } + return true; + }; + _proto.addPointerEventProcessor = function addPointerEventProcessor(pointerEventProcessor) { + if (this._inDispatchCount === 0) { + if (!this._pointerEventProcessorList.includes(pointerEventProcessor)) { + this._pointerEventProcessorList.push(pointerEventProcessor); + this._isListDirty = true; + } + } else if (!this._processorListToAdd.includes(pointerEventProcessor)) { + this._processorListToAdd.push(pointerEventProcessor); + } + remove(this._processorListToRemove, pointerEventProcessor); + }; + _proto.removePointerEventProcessor = function removePointerEventProcessor(pointerEventProcessor) { + if (this._inDispatchCount === 0) { + remove(this._pointerEventProcessorList, pointerEventProcessor); + this._isListDirty = true; + } else if (!this._processorListToRemove.includes(pointerEventProcessor)) { + this._processorListToRemove.push(pointerEventProcessor); + } + remove(this._processorListToAdd, pointerEventProcessor); + }; + _proto.dispatchEventMouse = function dispatchEventMouse(eventMouse) { + this._inDispatchCount++; + this._sortPointerEventProcessorList(); + var pointerEventProcessorList = this._pointerEventProcessorList; + var length = pointerEventProcessorList.length; + var dispatchToNextEventDispatcher = true; + for (var i = 0; i < length; ++i) { + var pointerEventProcessor = pointerEventProcessorList[i]; + if (pointerEventProcessor.isEnabled && pointerEventProcessor.shouldHandleEventMouse && pointerEventProcessor._handleEventMouse(eventMouse)) { + dispatchToNextEventDispatcher = false; + if (!eventMouse.preventSwallow) { + break; + } else { + eventMouse.preventSwallow = false; + } + } + } + if (--this._inDispatchCount <= 0) { + this._updatePointerEventProcessorList(); + } + return dispatchToNextEventDispatcher; + }; + _proto.dispatchEventTouch = function dispatchEventTouch(eventTouch) { + this._inDispatchCount++; + this._sortPointerEventProcessorList(); + var pointerEventProcessorList = this._pointerEventProcessorList; + var length = pointerEventProcessorList.length; + var touch = eventTouch.touch; + var dispatchToNextEventDispatcher = true; + for (var i = 0; i < length; ++i) { + var pointerEventProcessor = pointerEventProcessorList[i]; + if (pointerEventProcessor.isEnabled && pointerEventProcessor.shouldHandleEventTouch) { + if (eventTouch.type === InputEventType.TOUCH_START) { + if (pointerEventProcessor._handleEventTouch(eventTouch)) { + pointerEventProcessor.claimedTouchIdList.push(touch.getID()); + dispatchToNextEventDispatcher = false; + if (!eventTouch.preventSwallow) { + break; + } else { + eventTouch.preventSwallow = false; + } + } + } else if (pointerEventProcessor.claimedTouchIdList.length > 0) { + var index = pointerEventProcessor.claimedTouchIdList.indexOf(touch.getID()); + if (index !== -1) { + pointerEventProcessor._handleEventTouch(eventTouch); + if (eventTouch.type === InputEventType.TOUCH_END || eventTouch.type === InputEventType.TOUCH_CANCEL) { + removeAt(pointerEventProcessor.claimedTouchIdList, index); + } + dispatchToNextEventDispatcher = false; + if (!eventTouch.preventSwallow) { + break; + } else { + eventTouch.preventSwallow = false; + } + } + } + } + } + if (--this._inDispatchCount <= 0) { + this._updatePointerEventProcessorList(); + } + return dispatchToNextEventDispatcher; + }; + _proto._updatePointerEventProcessorList = function _updatePointerEventProcessorList() { + var listToAdd = this._processorListToAdd; + var addLength = listToAdd.length; + for (var i = 0; i < addLength; ++i) { + this.addPointerEventProcessor(listToAdd[i]); + } + listToAdd.length = 0; + var listToRemove = this._processorListToRemove; + var removeLength = listToRemove.length; + for (var _i = 0; _i < removeLength; ++_i) { + this.removePointerEventProcessor(listToRemove[_i]); + } + listToRemove.length = 0; + }; + _proto._sortPointerEventProcessorList = function _sortPointerEventProcessorList() { + if (!this._isListDirty) { + return; + } + var pointerEventProcessorList = this._pointerEventProcessorList; + var length = pointerEventProcessorList.length; + for (var i = 0; i < length; ++i) { + var pointerEventProcessor = pointerEventProcessorList[i]; + var node = pointerEventProcessor.node; + if (node._uiProps) { + var trans = node._uiProps.uiTransformComp; + pointerEventProcessor.cachedCameraPriority = trans.cameraPriority; + } + } + pointerEventProcessorList.sort(this._sortByPriority); + this._isListDirty = false; + }; + _proto._sortByPriority = function _sortByPriority(p1, p2) { + var node1 = p1.node; + var node2 = p2.node; + if (!p2 || !node2 || !node2.activeInHierarchy || !node2._uiProps.uiTransformComp) { + return -1; + } else if (!p1 || !node1 || !node1.activeInHierarchy || !node1._uiProps.uiTransformComp) { + return 1; + } + if (p1.cachedCameraPriority !== p2.cachedCameraPriority) { + return p2.cachedCameraPriority - p1.cachedCameraPriority; + } + var n1 = node1; + var n2 = node2; + var ex = false; + while (((_parent = n1.parent) === null || _parent === void 0 ? void 0 : _parent.uuid) !== ((_parent2 = n2.parent) === null || _parent2 === void 0 ? void 0 : _parent2.uuid)) { + var _parent, _parent2, _n, _n$parent, _n2, _n2$parent; + n1 = ((_n = n1) === null || _n === void 0 ? void 0 : (_n$parent = _n.parent) === null || _n$parent === void 0 ? void 0 : _n$parent.parent) === null ? (ex = true) && node2 : n1 && n1.parent; + n2 = ((_n2 = n2) === null || _n2 === void 0 ? void 0 : (_n2$parent = _n2.parent) === null || _n2$parent === void 0 ? void 0 : _n2$parent.parent) === null ? (ex = true) && node1 : n2 && n2.parent; + } + if (n1.uuid === n2.uuid) { + if (n1.uuid === node2.uuid) { + return -1; + } + if (n1.uuid === node1.uuid) { + return 1; + } + } + var priority1 = n1 ? n1.getSiblingIndex() : 0; + var priority2 = n2 ? n2.getSiblingIndex() : 0; + return ex ? priority1 - priority2 : priority2 - priority1; + }; + _proto._markListDirty = function _markListDirty() { + this._isListDirty = true; + }; + return PointerEventDispatcher; + }(); + new PointerEventDispatcher(); + + var _dsInfo = new DescriptorSetInfo(null); + var m4_1$1 = new Mat4(); + var Batcher2D = exports('w', function () { + function Batcher2D(_root) { + var _this = this; + this.device = void 0; + this._screens = []; + this._staticVBBuffer = null; + this._bufferAccessors = new Map(); + this._drawBatchPool = void 0; + this._batches = void 0; + this._currBID = -1; + this._indexStart = 0; + this._emptyMaterial = new Material(); + this._currRenderData = null; + this._currMaterial = this._emptyMaterial; + this._currTexture = null; + this._currSampler = null; + this._currStaticRoot = null; + this._currComponent = null; + this._currTransform = null; + this._currTextureHash = 0; + this._currSamplerHash = 0; + this._currLayer = 0; + this._currDepthStencilStateStage = null; + this._currIsStatic = false; + this._currHash = 0; + this._currIsMiddleware = false; + this._middlewareEnableBatch = false; + this._middlewareBuffer = null; + this._middlewareIndexStart = 0; + this._middlewareIndexCount = 0; + this._pOpacity = 1; + this._opacityDirty = 0; + this._descriptorSetCache = new DescriptorSetCache(); + this._meshDataArray = []; + this._maskClearModel = null; + this._maskClearMtl = null; + this._maskModelMesh = null; + this._root = _root; + this.device = _root.device; + this._batches = new CachedArray(64); + this._drawBatchPool = new Pool(function () { + return new DrawBatch2D(); + }, 128, function (obj) { + return obj.destroy(_this); + }); + } + var _proto = Batcher2D.prototype; + _proto.initialize = function initialize() { + return true; + }; + _proto.destroy = function destroy() { + for (var i = 0; i < this._batches.length; i++) { + if (this._batches.array[i]) { + this._batches.array[i].destroy(this); + } + } + this._batches.destroy(); + for (var _iterator = _createForOfIteratorHelperLoose(this._bufferAccessors.values()), _step; !(_step = _iterator()).done;) { + var accessor = _step.value; + accessor.destroy(); + } + this._bufferAccessors.clear(); + if (this._drawBatchPool) { + this._drawBatchPool.destroy(); + } + this._descriptorSetCache.destroy(); + StencilManager.sharedManager.destroy(); + if (this._maskClearModel && this._maskModelMesh) { + legacyCC.director.root.destroyModel(this._maskClearModel); + this._maskModelMesh.destroy(); + } + if (this._maskClearMtl) { + this._maskClearMtl.destroy(); + } + }; + _proto.syncRootNodesToNative = function syncRootNodesToNative() { + }; + _proto.addScreen = function addScreen(comp) { + this._screens.push(comp); + this._screens.sort(this._screenSort); + }; + _proto.removeScreen = function removeScreen(comp) { + var idx = this._screens.indexOf(comp); + if (idx === -1) { + return; + } + this._screens.splice(idx, 1); + }; + _proto.sortScreens = function sortScreens() { + this._screens.sort(this._screenSort); + }; + _proto.getFirstRenderCamera = function getFirstRenderCamera(node) { + if (node.scene && node.scene.renderScene) { + var cameras = node.scene.renderScene.cameras; + for (var i = 0; i < cameras.length; i++) { + var camera = cameras[i]; + if (camera.visibility & node.layer) { + return camera; + } + } + } + return null; + }; + _proto.update = function update() { + var screens = this._screens; + var offset = 0; + for (var i = 0; i < screens.length; ++i) { + var screen = screens[i]; + var _scene = screen._getRenderScene(); + if (!screen.enabledInHierarchy || !_scene) { + continue; + } + this._opacityDirty = 0; + this._pOpacity = 1; + this.walk(screen.node); + this.autoMergeBatches(this._currComponent); + this.resetRenderStates(); + var batchPriority = 0; + if (this._batches.length > offset) { + for (; offset < this._batches.length; ++offset) { + var batch = this._batches.array[offset]; + if (batch.model) { + var subModels = batch.model.subModels; + for (var j = 0; j < subModels.length; j++) { + subModels[j].priority = batchPriority++; + } + } else { + batch.descriptorSet = this._descriptorSetCache.getDescriptorSet(batch); + } + _scene.addBatch(batch); + } + } + } + }; + _proto.uploadBuffers = function uploadBuffers() { + if (this._batches.length > 0) { + var length = this._meshDataArray.length; + for (var i = 0; i < length; i++) { + this._meshDataArray[i].uploadBuffers(); + } + for (var _iterator3 = _createForOfIteratorHelperLoose(this._bufferAccessors.values()), _step3; !(_step3 = _iterator3()).done;) { + var accessor = _step3.value; + accessor.uploadBuffers(); + accessor.reset(); + } + this._descriptorSetCache.update(); + } + }; + _proto.reset = function reset() { + { + for (var i = 0; i < this._batches.length; ++i) { + var batch = this._batches.array[i]; + if (batch.isStatic) { + continue; + } + batch.clear(); + this._drawBatchPool.free(batch); + } + for (var _iterator4 = _createForOfIteratorHelperLoose(this._bufferAccessors.values()), _step4; !(_step4 = _iterator4()).done;) { + var accessor = _step4.value; + accessor.reset(); + } + var length = this._meshDataArray.length; + for (var _i = 0; _i < length; _i++) { + this._meshDataArray[_i].freeIAPool(); + } + this._meshDataArray.length = 0; + this._staticVBBuffer = null; + this._currBID = -1; + this._indexStart = 0; + this._currHash = 0; + this._currLayer = 0; + this._currRenderData = null; + this._currMaterial = this._emptyMaterial; + this._currTexture = null; + this._currSampler = null; + this._currComponent = null; + this._currTransform = null; + this._batches.clear(); + StencilManager.sharedManager.reset(); + } + }; + _proto.switchBufferAccessor = function switchBufferAccessor(attributes) { + if (attributes === void 0) { + attributes = vfmtPosUvColor; + } + var strideBytes = attributes === vfmtPosUvColor ? 36 : getAttributeStride(attributes); + if (!this._staticVBBuffer || this._staticVBBuffer.vertexFormatBytes !== strideBytes) { + var accessor = this._bufferAccessors.get(strideBytes); + if (!accessor) { + accessor = new StaticVBAccessor(this.device, attributes); + this._bufferAccessors.set(strideBytes, accessor); + } + this._staticVBBuffer = accessor; + this._currBID = -1; + } + return this._staticVBBuffer; + }; + _proto.registerBufferAccessor = function registerBufferAccessor(key, accessor) { + this._bufferAccessors.set(key, accessor); + }; + _proto.updateBuffer = function updateBuffer(attributes, bid) { + var accessor = this.switchBufferAccessor(attributes); + if (this._currBID !== bid) { + this._currBID = bid; + this._indexStart = accessor.getMeshBuffer(bid).indexOffset; + } + }; + _proto.commitComp = function commitComp(comp, renderData, frame, assembler, transform) { + var dataHash = 0; + var mat; + var bufferID = -1; + if (renderData && renderData.chunk) { + if (!renderData.isValid()) return; + dataHash = renderData.dataHash; + mat = renderData.material; + bufferID = renderData.chunk.bufferId; + } + if (comp.stencilStage === Stage.ENTER_LEVEL || comp.stencilStage === Stage.ENTER_LEVEL_INVERTED) { + this._insertMaskBatch(comp); + } else { + comp.stencilStage = StencilManager.sharedManager.stage; + } + var depthStencilStateStage = comp.stencilStage; + if (this._currHash !== dataHash || dataHash === 0 || this._currMaterial !== mat || this._currDepthStencilStateStage !== depthStencilStateStage) { + this.autoMergeBatches(this._currComponent); + if (renderData && !renderData._isMeshBuffer) { + this.updateBuffer(renderData.vertexFormat, bufferID); + } + this._currRenderData = renderData; + this._currHash = renderData ? renderData.dataHash : 0; + this._currComponent = comp; + this._currTransform = transform; + this._currMaterial = comp.getRenderMaterial(0); + this._currDepthStencilStateStage = depthStencilStateStage; + this._currLayer = comp.node.layer; + if (frame) { + { + assert(frame.isValid, 'frame should not be invalid, it may have been released'); + } + this._currTexture = frame.getGFXTexture(); + this._currSampler = frame.getGFXSampler(); + this._currTextureHash = frame.getHash(); + this._currSamplerHash = this._currSampler.hash; + } else { + this._currTexture = null; + this._currSampler = null; + this._currTextureHash = 0; + this._currSamplerHash = 0; + } + } + assembler.fillBuffers(comp, this); + }; + _proto.commitIA = function commitIA(renderComp, ia, tex, mat, transform) { + if (this._currMaterial !== this._emptyMaterial) { + this.autoMergeBatches(this._currComponent); + this.resetRenderStates(); + } + var depthStencil; + var dssHash = 0; + if (renderComp) { + renderComp.stencilStage = StencilManager.sharedManager.stage; + if (renderComp.customMaterial !== null) { + depthStencil = StencilManager.sharedManager.getStencilStage(renderComp.stencilStage, mat); + } else { + depthStencil = StencilManager.sharedManager.getStencilStage(renderComp.stencilStage); + } + dssHash = StencilManager.sharedManager.getStencilHash(renderComp.stencilStage); + } + var curDrawBatch = this._currStaticRoot ? this._currStaticRoot._requireDrawBatch() : this._drawBatchPool.alloc(); + curDrawBatch.visFlags = renderComp.node.layer; + curDrawBatch.inputAssembler = ia; + curDrawBatch.useLocalData = transform || null; + if (tex) { + curDrawBatch.texture = tex.getGFXTexture(); + curDrawBatch.sampler = tex.getGFXSampler(); + curDrawBatch.textureHash = tex.getHash(); + curDrawBatch.samplerHash = curDrawBatch.sampler.hash; + } + curDrawBatch.fillPasses(mat || null, depthStencil, dssHash, null); + this._batches.push(curDrawBatch); + }; + _proto.commitMiddleware = function commitMiddleware(comp, meshBuffer, indexOffset, indexCount, tex, mat, enableBatch) { + var texture = tex.getGFXTexture(); + if (enableBatch && this._middlewareEnableBatch && this._middlewareBuffer === meshBuffer && this._currTexture === texture && this._currMaterial.hash === mat.hash && this._middlewareIndexStart + this._middlewareIndexCount === indexOffset && this._currLayer === comp.node.layer) { + this._middlewareIndexCount += indexCount; + } else { + this.autoMergeBatches(this._currComponent); + this.resetRenderStates(); + this._currComponent = comp; + this._currTexture = texture; + this._currSampler = tex.getGFXSampler(); + this._currTextureHash = tex.getHash(); + this._currLayer = comp.node.layer; + this._currSamplerHash = this._currSampler.hash; + this._currHash = 0; + this._currTransform = enableBatch ? null : comp.node; + this._middlewareEnableBatch = enableBatch; + this._middlewareBuffer = meshBuffer; + this._currMaterial = mat; + this._middlewareIndexStart = indexOffset; + this._middlewareIndexCount = indexCount; + } + this._currIsMiddleware = true; + }; + _proto.commitModel = function commitModel(comp, model, mat) { + if (this._currMaterial !== this._emptyMaterial) { + this.autoMergeBatches(this._currComponent); + this.resetRenderStates(); + } + var depthStencil; + var dssHash = 0; + if (mat) { + if (comp.stencilStage === Stage.ENTER_LEVEL || comp.stencilStage === Stage.ENTER_LEVEL_INVERTED) { + this._insertMaskBatch(comp); + } else { + comp.stencilStage = StencilManager.sharedManager.stage; + } + depthStencil = StencilManager.sharedManager.getStencilStage(comp.stencilStage, mat); + dssHash = StencilManager.sharedManager.getStencilHash(comp.stencilStage); + } + var stamp = legacyCC.director.getTotalFrames(); + if (model) { + model.updateTransform(stamp); + model.updateUBOs(stamp); + } + for (var i = 0; i < model.subModels.length; i++) { + var curDrawBatch = this._drawBatchPool.alloc(); + var subModel = model.subModels[i]; + curDrawBatch.visFlags = comp.node.layer; + curDrawBatch.model = model; + curDrawBatch.texture = null; + curDrawBatch.sampler = null; + curDrawBatch.useLocalData = null; + if (!depthStencil) { + depthStencil = null; + } + curDrawBatch.fillPasses(mat, depthStencil, dssHash, subModel.patches); + curDrawBatch.inputAssembler = subModel.inputAssembler; + curDrawBatch.model.visFlags = curDrawBatch.visFlags; + curDrawBatch.descriptorSet = subModel.descriptorSet; + this._batches.push(curDrawBatch); + } + }; + _proto.setupStaticBatch = function setupStaticBatch(staticComp, bufferAccessor) { + this.finishMergeBatches(); + this._staticVBBuffer = bufferAccessor; + this.currStaticRoot = staticComp; + }; + _proto.endStaticBatch = function endStaticBatch() { + this.finishMergeBatches(); + this.currStaticRoot = null; + this._staticVBBuffer = null; + this.switchBufferAccessor(); + }; + _proto.commitStaticBatch = function commitStaticBatch(comp) { + this._batches.concat(comp.drawBatchList); + this.finishMergeBatches(); + }; + _proto.autoMergeBatches = function autoMergeBatches(renderComp) { + if (this._currIsMiddleware) { + this.mergeBatchesForMiddleware(renderComp); + return; + } + var mat = this._currMaterial; + if (!mat) { + return; + } + var ia; + var rd = this._currRenderData; + var accessor = this._staticVBBuffer; + if (rd && rd._isMeshBuffer) { + ia = rd.requestIA(this.device); + if (this._meshDataArray.indexOf(rd) === -1) { + this._meshDataArray.push(rd); + } + } else if (accessor) { + var bid = this._currBID; + var buf = accessor.getMeshBuffer(bid); + if (!buf) { + return; + } + var indexCount = buf.indexOffset - this._indexStart; + if (indexCount <= 0) return; + assertIsTrue(this._indexStart < buf.indexOffset); + buf.setDirty(); + ia = buf.requireFreeIA(this.device); + ia.firstIndex = this._indexStart; + ia.indexCount = indexCount; + this._indexStart = buf.indexOffset; + } + this._currBID = -1; + if (!ia) { + return; + } + var depthStencil; + var dssHash = 0; + if (renderComp) { + if (renderComp.customMaterial !== null) { + depthStencil = StencilManager.sharedManager.getStencilStage(renderComp.stencilStage, mat); + } else { + depthStencil = StencilManager.sharedManager.getStencilStage(renderComp.stencilStage); + } + dssHash = StencilManager.sharedManager.getStencilHash(renderComp.stencilStage); + } + var curDrawBatch = this._currStaticRoot ? this._currStaticRoot._requireDrawBatch() : this._drawBatchPool.alloc(); + curDrawBatch.visFlags = this._currLayer; + curDrawBatch.texture = this._currTexture; + curDrawBatch.sampler = this._currSampler; + curDrawBatch.inputAssembler = ia; + curDrawBatch.useLocalData = this._currTransform; + curDrawBatch.textureHash = this._currTextureHash; + curDrawBatch.samplerHash = this._currSamplerHash; + curDrawBatch.fillPasses(mat, depthStencil, dssHash, null); + this._batches.push(curDrawBatch); + }; + _proto.mergeBatchesForMiddleware = function mergeBatchesForMiddleware(renderComp) { + var depthStencil; + var dssHash = 0; + renderComp.stencilStage = StencilManager.sharedManager.stage; + if (renderComp.customMaterial !== null) { + depthStencil = StencilManager.sharedManager.getStencilStage(renderComp.stencilStage, this._currMaterial); + } else { + depthStencil = StencilManager.sharedManager.getStencilStage(renderComp.stencilStage); + } + dssHash = StencilManager.sharedManager.getStencilHash(renderComp.stencilStage); + var curDrawBatch = this._currStaticRoot ? this._currStaticRoot._requireDrawBatch() : this._drawBatchPool.alloc(); + curDrawBatch.visFlags = renderComp.node.layer; + var ia = this._middlewareBuffer.requireFreeIA(this.device); + ia.firstIndex = this._middlewareIndexStart; + ia.indexCount = this._middlewareIndexCount; + curDrawBatch.inputAssembler = ia; + curDrawBatch.useLocalData = this._currTransform; + curDrawBatch.texture = this._currTexture; + curDrawBatch.sampler = this._currSampler; + curDrawBatch.textureHash = this._currTextureHash; + curDrawBatch.samplerHash = this._currSamplerHash; + curDrawBatch.fillPasses(this._currMaterial || null, depthStencil, dssHash, null); + this._batches.push(curDrawBatch); + this._currIsMiddleware = false; + this._middlewareBuffer = null; + }; + _proto.forceMergeBatches = function forceMergeBatches(material, frame, renderComp) { + this._currMaterial = material; + if (frame) { + this._currTexture = frame.getGFXTexture(); + this._currSampler = frame.getGFXSampler(); + this._currTextureHash = frame.getHash(); + this._currSamplerHash = this._currSampler.hash; + } else { + this._currTexture = this._currSampler = null; + this._currTextureHash = this._currSamplerHash = 0; + } + this._currLayer = renderComp.node.layer; + this.autoMergeBatches(renderComp); + }; + _proto.resetRenderStates = function resetRenderStates() { + this._currMaterial = this._emptyMaterial; + this._currRenderData = null; + this._currTexture = null; + this._currComponent = null; + this._currTransform = null; + this._currTextureHash = 0; + this._currSamplerHash = 0; + this._currLayer = 0; + }; + _proto.finishMergeBatches = function finishMergeBatches() { + this.autoMergeBatches(); + this.resetRenderStates(); + }; + _proto.flushMaterial = function flushMaterial(mat) { + this._currMaterial = mat; + }; + _proto.walk = function walk(node, level) { + if (level === void 0) { + level = 0; + } + if (!node.activeInHierarchy) { + return; + } + var children = node.children; + var uiProps = node._uiProps; + var render = uiProps.uiComp; + var parentOpacity = this._pOpacity; + var opacity = parentOpacity; + var selfOpacity = render && render.color ? render.color.a / 255 : 1; + this._pOpacity = opacity *= selfOpacity * uiProps.localOpacity; + uiProps.setOpacity(opacity); + if (!approx(opacity, 0, EPSILON$3)) { + if (uiProps.colorDirty) { + this._opacityDirty++; + } + if (render && render.enabledInHierarchy) { + render.fillBuffers(this); + } + if (this._opacityDirty && render && !render.useVertexOpacity && render.renderData && render.renderData.vertexCount > 0) { + updateOpacity(render.renderData, opacity); + var buffer = render.renderData.getMeshBuffer(); + if (buffer) { + buffer.setDirty(); + } + } + if (children.length > 0 && !node._static) { + for (var i = 0; i < children.length; ++i) { + var child = children[i]; + this.walk(child, level); + } + } + if (uiProps.colorDirty) { + this._opacityDirty--; + uiProps.colorDirty = false; + } + } + this._pOpacity = parentOpacity; + if (render && render.enabledInHierarchy) { + render.postUpdateAssembler(this); + if ((render.stencilStage === Stage.ENTER_LEVEL || render.stencilStage === Stage.ENTER_LEVEL_INVERTED) && StencilManager.sharedManager.getMaskStackSize() > 0) { + this.autoMergeBatches(this._currComponent); + this.resetRenderStates(); + StencilManager.sharedManager.exitMask(); + } + } + level += 1; + }; + _proto._screenSort = function _screenSort(a, b) { + return a.node.getSiblingIndex() - b.node.getSiblingIndex(); + }; + _proto._releaseDescriptorSetCache = function _releaseDescriptorSetCache(textureHash, sampler) { + { + this._descriptorSetCache.releaseDescriptorSetCache(textureHash); + } + }; + _proto._createClearModel = function _createClearModel() { + if (!this._maskClearModel) { + this._maskClearMtl = builtinResMgr.get('default-clear-stencil'); + this._maskClearModel = legacyCC.director.root.createModel(Model); + var stride = getAttributeStride(vfmt); + var gfxDevice = deviceManager.gfxDevice; + var vertexBuffer = gfxDevice.createBuffer(new BufferInfo(BufferUsageBit.VERTEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, 4 * stride, stride)); + var vb = new Float32Array([-1, -1, 0, 1, -1, 0, -1, 1, 0, 1, 1, 0]); + vertexBuffer.update(vb); + var indexBuffer = gfxDevice.createBuffer(new BufferInfo(BufferUsageBit.INDEX | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.DEVICE, 6 * Uint16Array.BYTES_PER_ELEMENT, Uint16Array.BYTES_PER_ELEMENT)); + var ib = new Uint16Array([0, 1, 2, 2, 1, 3]); + indexBuffer.update(ib); + this._maskModelMesh = new RenderingSubMesh([vertexBuffer], vfmt, PrimitiveMode.TRIANGLE_LIST, indexBuffer); + this._maskModelMesh.subMeshIdx = 0; + this._maskClearModel.initSubModel(0, this._maskModelMesh, this._maskClearMtl); + } + }; + _proto._insertMaskBatch = function _insertMaskBatch(comp) { + this.autoMergeBatches(this._currComponent); + this.resetRenderStates(); + this._createClearModel(); + this._maskClearModel.node = this._maskClearModel.transform = comp.node; + var _stencilManager = StencilManager.sharedManager; + _stencilManager.pushMask(1); + var stage = _stencilManager.clear(comp); + var depthStencil; + var dssHash = 0; + var mat = this._maskClearMtl; + if (mat) { + depthStencil = _stencilManager.getStencilStage(stage, mat); + dssHash = _stencilManager.getStencilHash(stage); + } + var model = this._maskClearModel; + var stamp = legacyCC.director.getTotalFrames(); + if (model) { + model.updateTransform(stamp); + model.updateUBOs(stamp); + } + for (var i = 0; i < model.subModels.length; i++) { + var curDrawBatch = this._drawBatchPool.alloc(); + var subModel = model.subModels[i]; + curDrawBatch.visFlags = comp.node.layer; + curDrawBatch.model = model; + curDrawBatch.texture = null; + curDrawBatch.sampler = null; + curDrawBatch.useLocalData = null; + if (!depthStencil) { + depthStencil = null; + } + curDrawBatch.fillPasses(mat, depthStencil, dssHash, subModel.patches); + curDrawBatch.inputAssembler = subModel.inputAssembler; + curDrawBatch.model.visFlags = curDrawBatch.visFlags; + curDrawBatch.descriptorSet = subModel.descriptorSet; + this._batches.push(curDrawBatch); + } + _stencilManager.enableMask(); + }; + _proto.syncMeshBuffersToNative = function syncMeshBuffersToNative(accId, buffers) { + }; + _createClass(Batcher2D, [{ + key: "nativeObj", + get: function get() { + return this._nativeObj; + } + }, { + key: "currBufferAccessor", + get: function get() { + if (this._staticVBBuffer) return this._staticVBBuffer; + this._staticVBBuffer = this.switchBufferAccessor(); + return this._staticVBBuffer; + } + }, { + key: "batches", + get: function get() { + return this._batches; + } + }, { + key: "currStaticRoot", + set: function set(value) { + this._currStaticRoot = value; + } + }, { + key: "currIsStatic", + set: function set(value) { + this._currIsStatic = value; + } + }]); + return Batcher2D; + }()); + var LocalDescriptorSet = function () { + function LocalDescriptorSet() { + this._descriptorSet = null; + this._transform = null; + this._textureHash = 0; + this._samplerHash = 0; + this._localBuffer = null; + this._transformUpdate = true; + var device = deviceManager.gfxDevice; + this._localData = new Float32Array(UBOLocal.COUNT); + this._localBuffer = device.createBuffer(new BufferInfo(BufferUsageBit.UNIFORM | BufferUsageBit.TRANSFER_DST, MemoryUsageBit.HOST | MemoryUsageBit.DEVICE, UBOLocal.SIZE, UBOLocal.SIZE)); + } + var _proto2 = LocalDescriptorSet.prototype; + _proto2.initialize = function initialize(batch) { + var device = deviceManager.gfxDevice; + this._transform = batch.useLocalData; + this._textureHash = batch.textureHash; + this._samplerHash = batch.samplerHash; + _dsInfo.layout = batch.passes[0].localSetLayout; + this._descriptorSet = device.createDescriptorSet(_dsInfo); + this._descriptorSet.bindBuffer(UBOLocal.BINDING, this._localBuffer); + var binding = ModelLocalBindings.SAMPLER_SPRITE; + this._descriptorSet.bindTexture(binding, batch.texture); + this._descriptorSet.bindSampler(binding, batch.sampler); + this._descriptorSet.update(); + this._transformUpdate = true; + }; + _proto2.updateTransform = function updateTransform(transform) { + if (transform === this._transform) return; + this._transform = transform; + this._transformUpdate = true; + this.uploadLocalData(); + }; + _proto2.equals = function equals(transform, textureHash, samplerHash) { + return this._transform === transform && this._textureHash === textureHash && this._samplerHash === samplerHash; + }; + _proto2.reset = function reset() { + this._transform = null; + this._textureHash = 0; + this._samplerHash = 0; + }; + _proto2.destroy = function destroy() { + if (this._localBuffer) { + this._localBuffer.destroy(); + this._localBuffer = null; + } + if (this._descriptorSet) { + this._descriptorSet.destroy(); + this._descriptorSet = null; + } + this._localData = null; + }; + _proto2.isValid = function isValid() { + return this._transform && this._transform.isValid; + }; + _proto2.uploadLocalData = function uploadLocalData() { + var node = this._transform; + if (node.hasChangedFlags || node.isTransformDirty()) { + node.updateWorldTransform(); + this._transformUpdate = true; + } + if (this._transformUpdate) { + var worldMatrix = node.worldMatrix; + Mat4.toArray(this._localData, worldMatrix, UBOLocal.MAT_WORLD_OFFSET); + Mat4.invert(m4_1$1, worldMatrix); + Mat4.transpose(m4_1$1, m4_1$1); + { + var det = Mat4.determinant(m4_1$1); + var factor = 1.0 / Math.sqrt(det); + Mat4.multiplyScalar(m4_1$1, m4_1$1, factor); + } + Mat4.toArray(this._localData, m4_1$1, UBOLocal.MAT_WORLD_IT_OFFSET); + this._localBuffer.update(this._localData); + this._transformUpdate = false; + } + }; + _createClass(LocalDescriptorSet, [{ + key: "descriptorSet", + get: function get() { + return this._descriptorSet; + } + }]); + return LocalDescriptorSet; + }(); + var DescriptorSetCache = function () { + function DescriptorSetCache() { + this._descriptorSetCache = new Map(); + this._dsCacheHashByTexture = new Map(); + this._localDescriptorSetCache = []; + this._localCachePool = void 0; + this._localCachePool = new Pool(function () { + return new LocalDescriptorSet(); + }, 16, function (obj) { + return obj.destroy(); + }); + } + var _proto3 = DescriptorSetCache.prototype; + _proto3.getDescriptorSet = function getDescriptorSet(batch) { + legacyCC.director.root; + var hash; + if (batch.useLocalData) { + var caches = this._localDescriptorSetCache; + for (var i = 0, len = caches.length; i < len; i++) { + var cache = caches[i]; + if (cache.equals(batch.useLocalData, batch.textureHash, batch.samplerHash)) { + return cache.descriptorSet; + } + } + var localDs = this._localCachePool.alloc(); + localDs.initialize(batch); + this._localDescriptorSetCache.push(localDs); + return localDs.descriptorSet; + } else { + hash = batch.textureHash ^ batch.samplerHash; + if (this._descriptorSetCache.has(hash)) { + return this._descriptorSetCache.get(hash); + } else { + _dsInfo.layout = batch.passes[0].localSetLayout; + var descriptorSet = deviceManager.gfxDevice.createDescriptorSet(_dsInfo); + var binding = ModelLocalBindings.SAMPLER_SPRITE; + descriptorSet.bindTexture(binding, batch.texture); + descriptorSet.bindSampler(binding, batch.sampler); + descriptorSet.update(); + this._descriptorSetCache.set(hash, descriptorSet); + this._dsCacheHashByTexture.set(batch.textureHash, hash); + return descriptorSet; + } + } + }; + _proto3.update = function update() { + var caches = this._localDescriptorSetCache; + var length = caches.length; + if (length === 0) { + return; + } + var uselessArray = []; + for (var i = 0; i < length; i++) { + var value = caches[i]; + if (value.isValid()) { + value.uploadLocalData(); + } else { + value.reset(); + var pos = caches.indexOf(value); + uselessArray.push(pos); + } + } + for (var _i2 = uselessArray.length - 1; _i2 >= 0; _i2--) { + var index = uselessArray[_i2]; + var localDs = caches[index]; + caches.splice(index, 1); + this._localCachePool.free(localDs); + } + }; + _proto3.reset = function reset() { + var caches = this._localDescriptorSetCache; + var length = caches.length; + for (var i = 0; i < length; i++) { + var value = caches[i]; + this._localCachePool.free(value); + } + this._localDescriptorSetCache.length = 0; + }; + _proto3.releaseDescriptorSetCache = function releaseDescriptorSetCache(textureHash) { + var key = this._dsCacheHashByTexture.get(textureHash); + if (key && this._descriptorSetCache.has(key)) { + this._descriptorSetCache.get(key).destroy(); + this._descriptorSetCache["delete"](key); + this._dsCacheHashByTexture["delete"](textureHash); + } + }; + _proto3.destroy = function destroy() { + for (var _iterator5 = _createForOfIteratorHelperLoose(this._descriptorSetCache.values()), _step5; !(_step5 = _iterator5()).done;) { + var value = _step5.value; + value.destroy(); + } + this._descriptorSetCache.clear(); + this._dsCacheHashByTexture.clear(); + this._localDescriptorSetCache.length = 0; + this._localCachePool.destroy(); + }; + return DescriptorSetCache; + }(); + legacyCC.internal.Batcher2D = Batcher2D; + + var UIDrawBatch = exports('x', function (_DrawBatch2D) { + _inheritsLoose(UIDrawBatch, _DrawBatch2D); + function UIDrawBatch() { + return _DrawBatch2D.apply(this, arguments) || this; + } + return UIDrawBatch; + }(DrawBatch2D)); + markAsWarning(MeshBuffer.prototype, 'MeshBuffer', ['byteStart', 'vertexStart', 'indicesStart', 'request'].map(function (item) { + return { + name: item, + suggest: "please use meshBuffer.accessor." + item + " instead" + }; + })); + replaceProperty(MeshBuffer.prototype, 'MeshBuffer', [{ + name: 'indicesOffset', + newName: 'indexOffset' + }]); + removeProperty(MeshBuffer.prototype, 'MeshBuffer', [{ + name: 'vertexBuffers' + }, { + name: 'indexBuffer' + }]); + replaceProperty(Batcher2D.prototype, 'Batcher2D', [{ + name: 'currBufferBatch', + newName: 'currBufferAccessor' + }, { + name: 'acquireBufferBatch', + newName: 'switchBufferAccessor' + }]); + removeProperty(MeshRenderData.prototype, 'MeshRenderData', [{ + name: 'formatByte' + }, { + name: 'byteStart' + }, { + name: 'byteCount' + }]); + replaceProperty(MeshRenderData.prototype, 'MeshRenderData', [{ + name: 'indicesStart', + newName: 'indexStart' + }]); + var QuadRenderData = exports('Q', function (_MeshRenderData) { + _inheritsLoose(QuadRenderData, _MeshRenderData); + function QuadRenderData(vertexFormat) { + var _this; + _this = _MeshRenderData.call(this, vertexFormat) || this; + warnID(9006); + return _this; + } + return QuadRenderData; + }(MeshRenderData)); + + var ccdocument$4 = ccwindow.document; + var _canvasContext = null; + var _intervalId = -1; + var _testString = "BES bswy:->@123\u4E01\u3041\u1101"; + var _fontFaces = Object.create(null); + var _loadingFonts = []; + var _timeout = 3000; + var useNativeCheck = function () { + var nativeCheck; + return function () { + if (nativeCheck === undefined) { + if ('FontFace' in ccwindow) { + var match = /Gecko.*Firefox\/(\d+)/.exec(ccwindow.navigator.userAgent); + var safari10Match = /OS X.*Version\/10\..*Safari/.exec(ccwindow.navigator.userAgent) && /Apple/.exec(ccwindow.navigator.vendor); + if (match) { + nativeCheck = parseInt(match[1], 10) > 42; + } else if (safari10Match) { + nativeCheck = false; + } else { + nativeCheck = true; + } + } else { + nativeCheck = false; + } + } + return nativeCheck; + }; + }(); + function checkFontLoaded() { + var allFontsLoaded = true; + var now = Date.now(); + for (var i = _loadingFonts.length - 1; i >= 0; i--) { + var fontLoadHandle = _loadingFonts[i]; + var fontFamily = fontLoadHandle.fontFamilyName; + if (now - fontLoadHandle.startTime > _timeout) { + warnID(4933, fontFamily); + fontLoadHandle.onComplete(null, fontFamily); + _loadingFonts.splice(i, 1); + continue; + } + var oldWidth = fontLoadHandle.refWidth; + var fontDesc = "40px " + fontFamily; + _canvasContext.font = fontDesc; + var newWidth = safeMeasureText(_canvasContext, _testString, fontDesc); + if (oldWidth !== newWidth) { + _loadingFonts.splice(i, 1); + fontLoadHandle.onComplete(null, fontFamily); + } else { + allFontsLoaded = false; + } + } + if (allFontsLoaded) { + clearInterval(_intervalId); + _intervalId = -1; + } + } + function nativeCheckFontLoaded(start, font, callback) { + var loader = new Promise(function (resolve, reject) { + var check = function check() { + var now = Date.now(); + if (now - start >= _timeout) { + reject(); + } else { + ccdocument$4.fonts.load("40px " + font).then(function (fonts) { + if (fonts.length >= 1) { + resolve(); + } else { + setTimeout(check, 100); + } + }, function () { + reject(); + }); + } + }; + check(); + }); + var timeoutId = null; + var timer = new Promise(function (resolve, reject) { + timeoutId = setTimeout(reject, _timeout); + }); + Promise.race([timer, loader]).then(function () { + if (timeoutId) { + clearTimeout(timeoutId); + timeoutId = null; + } + callback(null, font); + }, function () { + warnID(4933, font); + callback(null, font); + }); + } + function loadFont(url, options, onComplete) { + var fontFamilyName = getFontFamily(url); + if (_fontFaces[fontFamilyName]) { + onComplete(null, fontFamilyName); + return; + } + if (!_canvasContext) { + var labelCanvas = ccdocument$4.createElement('canvas'); + labelCanvas.width = 100; + labelCanvas.height = 100; + _canvasContext = labelCanvas.getContext('2d'); + } + var fontDesc = "40px " + fontFamilyName; + var fontStyle = ccdocument$4.createElement('style'); + fontStyle.type = 'text/css'; + var fontStr = ''; + if (Number.isNaN(fontFamilyName)) { + fontStr += "@font-face { font-family:" + fontFamilyName + "; src:"; + } else { + fontStr += "@font-face { font-family:\"" + fontFamilyName + "\"; src:"; + } + fontStr += "url(\"" + url + "\");"; + fontStyle.textContent = fontStr + "}"; + ccdocument$4.body.appendChild(fontStyle); + var preloadDiv = ccdocument$4.createElement('div'); + var divStyle = preloadDiv.style; + divStyle.fontFamily = fontFamilyName; + preloadDiv.innerHTML = '.'; + divStyle.position = 'absolute'; + divStyle.left = '-100px'; + divStyle.top = '-100px'; + ccdocument$4.body.appendChild(preloadDiv); + if (useNativeCheck()) { + nativeCheckFontLoaded(Date.now(), fontFamilyName, onComplete); + } else { + var refWidth = safeMeasureText(_canvasContext, _testString, fontDesc); + var fontLoadHandle = { + fontFamilyName: fontFamilyName, + refWidth: refWidth, + onComplete: onComplete, + startTime: Date.now() + }; + _loadingFonts.push(fontLoadHandle); + if (_intervalId === -1) { + _intervalId = setInterval(checkFontLoaded, 100); + } + } + _fontFaces[fontFamilyName] = fontStyle; + } + function getFontFamily(fontHandle) { + var ttfIndex = fontHandle.lastIndexOf('.ttf'); + if (ttfIndex === -1) { + return fontHandle; + } + var slashPos = fontHandle.lastIndexOf('/'); + var fontFamilyName; + if (slashPos === -1) { + fontFamilyName = fontHandle.substring(0, ttfIndex) + "_LABEL"; + } else { + fontFamilyName = fontHandle.substring(slashPos + 1, ttfIndex) + "_LABEL"; + } + if (fontFamilyName.indexOf(' ') !== -1) { + fontFamilyName = "\"" + fontFamilyName + "\""; + } + return fontFamilyName; + } + function createFont(id, data, options, onComplete) { + var out = new TTFFont(); + out._nativeUrl = id; + out._nativeAsset = data; + onComplete(null, out); + } + downloader$1.register({ + '.font': loadFont, + '.eot': loadFont, + '.ttf': loadFont, + '.woff': loadFont, + '.svg': loadFont, + '.ttc': loadFont + }); + factory.register({ + '.font': createFont, + '.eot': createFont, + '.ttf': createFont, + '.woff': createFont, + '.svg': createFont, + '.ttc': createFont + }); + + legacyCC.UI = { + MeshBuffer: MeshBuffer, + spriteAssembler: spriteAssembler, + graphicsAssembler: graphicsAssemblerManager, + labelAssembler: labelAssembler, + RenderData: RenderData, + MeshRenderData: MeshRenderData + }; + + var SortingLayer = { + "default": 0 + }; + game.on(Game.EVENT_POST_SUBSYSTEM_INIT, function () { + SortingLayers.init(); + }); + var SortingLayers = exports('a1', function () { + function SortingLayers() {} + SortingLayers.getSortingPriority = function getSortingPriority(layer, order) { + if (layer === void 0) { + layer = 0; + } + if (order === void 0) { + order = 0; + } + return (layer + (1 << 15) << 16 | order + (1 << 15)) >>> 0; + }; + SortingLayers.getLayerIndex = function getLayerIndex(layer) { + if (layer === void 0) { + layer = 0; + } + var index = 0; + if (this.indexMap.has(layer)) { + index = this.indexMap.get(layer); + } else { + errorID(2105); + } + return index; + }; + SortingLayers.getLayerIndexByName = function getLayerIndexByName(name) { + var id = this.getLayerByName(name); + return this.getLayerIndex(id); + }; + SortingLayers.getLayerName = function getLayerName(layer) { + if (layer === void 0) { + layer = 0; + } + var name = ''; + if (this.nameMap.has(layer)) { + name = this.nameMap.get(layer); + } else { + errorID(2105); + } + return name; + }; + SortingLayers.getLayerByName = function getLayerByName(name) { + var count = this.nameMap.size; + var keyIterator = this.nameMap.keys(); + var key = 0; + for (var i = 0; i < count; i++) { + key = keyIterator.next().value; + if (this.nameMap.get(key) === name) return key; + } + errorID(2106); + return 0; + }; + SortingLayers.isLayerValid = function isLayerValid(id) { + if (this.indexMap.has(id)) { + return true; + } else { + errorID(2105); + return false; + } + }; + SortingLayers.getBuiltinLayers = function getBuiltinLayers() { + return [{ + id: 0, + name: 'default', + value: 0 + }]; + }; + SortingLayers.init = function init() { + var sortingLayers = settings.querySettings(Settings.Category.ENGINE, 'sortingLayers'); + if (!sortingLayers || sortingLayers.length === 0) { + sortingLayers = this.getBuiltinLayers(); + } + SortingLayers.resetState(); + for (var i = 0; i < sortingLayers.length; i++) { + var layer = sortingLayers[i]; + SortingLayers.setLayer(layer.id, layer.name, layer.value); + SortingLayers.Enum[layer.name] = layer.id; + } + Enum.update(SortingLayers.Enum); + Enum.sortList(SortingLayers.Enum, function (a, b) { + return SortingLayers.getLayerIndex(a.value) - SortingLayers.getLayerIndex(b.value); + }); + }; + SortingLayers.setLayer = function setLayer(layer, layerName, layerIndex) { + this.nameMap.set(layer, layerName); + this.indexMap.set(layer, layerIndex); + }; + SortingLayers.resetState = function resetState() { + var oldItem = Object.keys(SortingLayers.Enum); + for (var i = 0; i < oldItem.length; i++) { + delete SortingLayers.Enum[SortingLayers.Enum[oldItem[i]]]; + delete SortingLayers.Enum[oldItem[i]]; + } + SortingLayers.indexMap.clear(); + SortingLayers.nameMap.clear(); + }; + return SortingLayers; + }()); + SortingLayers.nameMap = new Map(); + SortingLayers.indexMap = new Map(); + SortingLayers.Enum = Enum(SortingLayer); + + var _dec$1c, _dec2$S, _class$1c, _class2$13, _initializer$Z, _initializer2$P; + var MAX_INT16 = (1 << 15) - 1; + var MIN_INT16 = -1 << 15; + var Sorting = exports('a2', (_dec$1c = ccclass$t('cc.Sorting'), _dec2$S = type$8(SortingLayers.Enum), _dec$1c(_class$1c = disallowMultiple$1(_class$1c = (_class2$13 = function (_Component) { + _inheritsLoose(Sorting, _Component); + function Sorting() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this._sortingLayer = _initializer$Z && _initializer$Z(); + _this._sortingOrder = _initializer2$P && _initializer2$P(); + _this._modelRenderer = null; + return _this; + } + var _proto = Sorting.prototype; + _proto.__preload = function __preload() { + this._modelRenderer = this.getComponent('cc.ModelRenderer'); + if (!this._modelRenderer) { + warnID(16301, this.node.name); + } + this._updateSortingPriority(); + }; + _proto._updateSortingPriority = function _updateSortingPriority() { + var sortingLayerValue = SortingLayers.getLayerIndex(this._sortingLayer); + var sortingPriority = SortingLayers.getSortingPriority(sortingLayerValue, this._sortingOrder); + if (this._modelRenderer && this._modelRenderer.isValid) { + this._modelRenderer.priority = sortingPriority; + } + }; + _createClass(Sorting, [{ + key: "sortingLayer", + get: function get() { + return this._sortingLayer; + }, + set: function set(val) { + if (val === this._sortingLayer || !SortingLayers.isLayerValid(val)) return; + this._sortingLayer = val; + this._updateSortingPriority(); + } + }, { + key: "sortingOrder", + get: function get() { + return this._sortingOrder; + }, + set: function set(val) { + if (val === this._sortingOrder) return; + this._sortingOrder = clamp$1(val, MIN_INT16, MAX_INT16); + this._updateSortingPriority(); + } + }]); + return Sorting; + }(Component), (_applyDecoratedDescriptor(_class2$13.prototype, "sortingLayer", [_dec2$S], Object.getOwnPropertyDescriptor(_class2$13.prototype, "sortingLayer"), _class2$13.prototype), _initializer$Z = applyDecoratedInitializer(_class2$13.prototype, "_sortingLayer", [serializable$9], function () { + return SortingLayers.Enum["default"]; + }), _initializer2$P = applyDecoratedInitializer(_class2$13.prototype, "_sortingOrder", [serializable$9], function () { + return 0; + })), _class2$13)) || _class$1c) || _class$1c)); + + var CLASS_NAME_PREFIX_ANIM = 'cc.animation.'; + var createEvalSymbol = Symbol('CreateEval'); + + var _dec$1b, _class$1b, _class2$12, _initializer$Y, _initializer2$O, _initializer3$B, _initializer4$x; + (_dec$1b = ccclass$t(CLASS_NAME_PREFIX_ANIM + "EmbeddedPlayer"), _dec$1b(_class$1b = (_class2$12 = function (_EditorExtendable) { + _inheritsLoose(EmbeddedPlayer, _EditorExtendable); + function EmbeddedPlayer() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _EditorExtendable.call.apply(_EditorExtendable, [this].concat(args)) || this; + _this.begin = _initializer$Y && _initializer$Y(); + _this.end = _initializer2$O && _initializer2$O(); + _this.reconciledSpeed = _initializer3$B && _initializer3$B(); + _this.playable = _initializer4$x && _initializer4$x(); + return _this; + } + return EmbeddedPlayer; + }(EditorExtendable), (_initializer$Y = applyDecoratedInitializer(_class2$12.prototype, "begin", [serializable$9], function () { + return 0.0; + }), _initializer2$O = applyDecoratedInitializer(_class2$12.prototype, "end", [serializable$9], function () { + return 0.0; + }), _initializer3$B = applyDecoratedInitializer(_class2$12.prototype, "reconciledSpeed", [serializable$9], function () { + return false; + }), _initializer4$x = applyDecoratedInitializer(_class2$12.prototype, "playable", [serializable$9], function () { + return null; + })), _class2$12)) || _class$1b); + var EmbeddedPlayable = function EmbeddedPlayable() {}; + var EmbeddedPlayableState = function () { + function EmbeddedPlayableState(randomAccess) { + this._randomAccess = randomAccess; + } + var _proto = EmbeddedPlayableState.prototype; + _proto.setTime = function setTime(_time) {}; + _createClass(EmbeddedPlayableState, [{ + key: "randomAccess", + get: function get() { + return this._randomAccess; + } + }]); + return EmbeddedPlayableState; + }(); + + var Playable = function () { + function Playable() { + this._isPlaying = false; + this._isPaused = false; + this._stepOnce = false; + } + var _proto = Playable.prototype; + _proto.play = function play() { + if (this._isPlaying) { + if (this._isPaused) { + this._isPaused = false; + this.onResume(); + } else { + this.onError(getError(3912)); + } + } else { + this._isPlaying = true; + this.onPlay(); + } + }; + _proto.stop = function stop() { + if (this._isPlaying) { + this._isPlaying = false; + this.onStop(); + this._isPaused = false; + } + }; + _proto.pause = function pause() { + if (this._isPlaying && !this._isPaused) { + this._isPaused = true; + this.onPause(); + } + }; + _proto.resume = function resume() { + if (this._isPlaying && this._isPaused) { + this._isPaused = false; + this.onResume(); + } + }; + _proto.step = function step() { + this.pause(); + this._stepOnce = true; + if (!this._isPlaying) { + this.play(); + } + }; + _proto.update = function update(deltaTime) {}; + _proto.onPlay = function onPlay() {}; + _proto.onPause = function onPause() {}; + _proto.onResume = function onResume() {}; + _proto.onStop = function onStop() {}; + _proto.onError = function onError(message) {}; + _createClass(Playable, [{ + key: "isPlaying", + get: function get() { + return this._isPlaying; + } + }, { + key: "isPaused", + get: function get() { + return this._isPaused; + } + }, { + key: "isMotionless", + get: function get() { + return !this.isPlaying || this.isPaused; + } + }]); + return Playable; + }(); + + var WrapMode; + (function (WrapMode) { + WrapMode[WrapMode["Default"] = WrapModeMask.Default] = "Default"; + WrapMode[WrapMode["Normal"] = WrapModeMask.Normal] = "Normal"; + WrapMode[WrapMode["Reverse"] = WrapModeMask.Reverse] = "Reverse"; + WrapMode[WrapMode["Loop"] = WrapModeMask.Loop] = "Loop"; + WrapMode[WrapMode["LoopReverse"] = WrapModeMask.Loop | WrapModeMask.Reverse] = "LoopReverse"; + WrapMode[WrapMode["PingPong"] = WrapModeMask.PingPong] = "PingPong"; + WrapMode[WrapMode["PingPongReverse"] = WrapModeMask.PingPong | WrapModeMask.Reverse] = "PingPongReverse"; + })(WrapMode || (WrapMode = {})); + ccenum(WrapMode); + var WrappedInfo = function () { + function WrappedInfo(info) { + this.ratio = 0; + this.time = 0; + this.direction = 1; + this.stopped = true; + this.iterations = 0; + this.frameIndex = undefined; + if (info) { + this.set(info); + } + } + var _proto = WrappedInfo.prototype; + _proto.set = function set(info) { + this.ratio = info.ratio; + this.time = info.time; + this.direction = info.direction; + this.stopped = info.stopped; + this.iterations = info.iterations; + this.frameIndex = info.frameIndex; + }; + return WrappedInfo; + }(); + function isLerpable(object) { + return typeof object.lerp === 'function'; + } + + var PoseOutput = function () { + function PoseOutput(pose) { + this.weight = 0.0; + this._pose = void 0; + this._blendStateWriters = []; + this._pose = pose; + } + var _proto = PoseOutput.prototype; + _proto.destroy = function destroy() { + for (var iBlendStateWriter = 0; iBlendStateWriter < this._blendStateWriters.length; ++iBlendStateWriter) { + this._pose.destroyWriter(this._blendStateWriters[iBlendStateWriter]); + } + this._blendStateWriters.length = 0; + }; + _proto.createPoseWriter = function createPoseWriter(node, property, constants) { + var writer = this._pose.createWriter(node, property, this, constants); + this._blendStateWriters.push(writer); + return writer; + }; + return PoseOutput; + }(); + + function getGlobalAnimationManager() { + var animationManager = legacyCC.director.getAnimationManager(); + return animationManager; + } + + var EventType$8; + (function (EventType) { + EventType["PLAY"] = "play"; + EventType["STOP"] = "stop"; + EventType["PAUSE"] = "pause"; + EventType["RESUME"] = "resume"; + EventType["LASTFRAME"] = "lastframe"; + EventType["FINISHED"] = "finished"; + })(EventType$8 || (EventType$8 = {})); + ccenum(EventType$8); + var AnimationState$1 = exports('a5', function (_Playable) { + _inheritsLoose(AnimationState, _Playable); + function AnimationState(clip, name) { + var _this; + if (name === void 0) { + name = ''; + } + _this = _Playable.call(this) || this; + _this.duration = 1.0; + _this.time = 0.0; + _this.frameRate = 0; + _this._targetNode = null; + _this._curveLoaded = false; + _this._clip = void 0; + _this._speed = 1.0; + _this._useSimpleProcess = false; + _this._target = null; + _this._wrapMode = WrapMode.Normal; + _this._repeatCount = 1; + _this._delay = 0.0; + _this._delayTime = 0.0; + _this._currentFramePlayed = false; + _this._name = void 0; + _this._lastIterations = NaN; + _this._lastWrapInfo = null; + _this._wrappedInfo = new WrappedInfo(); + _this._allowLastFrame = false; + _this._blendStateWriterHost = { + weight: 0.0 + }; + _this._playbackDuration = 0.0; + _this._invDuration = 1.0; + _this._poseOutput = null; + _this._weight = 1.0; + _this._clipEval = void 0; + _this._clipEventEval = void 0; + _this._clipEmbeddedPlayerEval = void 0; + _this._doNotCreateEval = false; + _this._clip = clip; + _this._name = name || clip && clip.name; + _this._playbackRange = { + min: 0.0, + max: clip.duration + }; + _this._playbackDuration = clip.duration; + if (!clip.duration) { + debug("Clip " + clip.name + " has zero duration."); + } + return _this; + } + var _proto = AnimationState.prototype; + _proto.initialize = function initialize(root, blendStateBuffer, mask) { + if (this._curveLoaded) { + return; + } + this._curveLoaded = true; + if (this._poseOutput) { + this._poseOutput.destroy(); + this._poseOutput = null; + } + if (this._clipEval) { + this._clipEval = undefined; + } + if (this._clipEventEval) { + this._clipEventEval = undefined; + } + if (this._clipEmbeddedPlayerEval) { + this._clipEmbeddedPlayerEval.destroy(); + this._clipEmbeddedPlayerEval = undefined; + } + this._targetNode = root; + var clip = this._clip; + this.duration = clip.duration; + this._invDuration = 1.0 / this.duration; + this._speed = clip.speed; + this.wrapMode = clip.wrapMode; + this.frameRate = clip.sample; + this._playbackRange.min = 0.0; + this._playbackRange.max = clip.duration; + this._playbackDuration = clip.duration; + if ((this.wrapMode & WrapModeMask.Loop) === WrapModeMask.Loop) { + this.repeatCount = Infinity; + } else { + this.repeatCount = 1; + } + if (!this._doNotCreateEval) { + var _ref, _getGlobalAnimationMa, _this$_poseOutput; + var pose = (_ref = blendStateBuffer !== null && blendStateBuffer !== void 0 ? blendStateBuffer : (_getGlobalAnimationMa = getGlobalAnimationManager()) === null || _getGlobalAnimationMa === void 0 ? void 0 : _getGlobalAnimationMa.blendState) !== null && _ref !== void 0 ? _ref : null; + if (pose) { + this._poseOutput = new PoseOutput(pose); + } + this._clipEval = clip.createEvaluator({ + target: root, + pose: (_this$_poseOutput = this._poseOutput) !== null && _this$_poseOutput !== void 0 ? _this$_poseOutput : undefined, + mask: mask + }); + } + { + if (clip.containsAnyEvent()) { + this._clipEventEval = clip.createEventEvaluator(this._targetNode); + } + } + if (clip.containsAnyEmbeddedPlayer()) { + this._clipEmbeddedPlayerEval = clip.createEmbeddedPlayerEvaluator(this._targetNode); + this._clipEmbeddedPlayerEval.notifyHostSpeedChanged(this._speed); + } + }; + _proto.destroy = function destroy() { + if (!this.isMotionless) { + getGlobalAnimationManager().removeAnimation(this); + } + if (this._poseOutput) { + this._poseOutput.destroy(); + this._poseOutput = null; + } + this._clipEval = undefined; + }; + _proto.emit = function emit() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + getGlobalAnimationManager().pushDelayEvent(this._emit, this, args); + }; + _proto.on = function on(type, callback, target) { + if (this._target && this._target.isValid) { + return this._target.on(type, callback, target); + } else { + return null; + } + }; + _proto.once = function once(type, callback, target) { + if (this._target && this._target.isValid) { + return this._target.once(type, callback, target); + } else { + return null; + } + }; + _proto.off = function off(type, callback, target) { + if (this._target && this._target.isValid) { + this._target.off(type, callback, target); + } + }; + _proto.allowLastFrameEvent = function allowLastFrameEvent(allowed) { + this._allowLastFrame = allowed; + }; + _proto._setEventTarget = function _setEventTarget(target) { + this._target = target; + }; + _proto.setTime = function setTime(time) { + this._currentFramePlayed = false; + this.time = time || 0.0; + { + var _this$_clipEventEval; + var info = this.getWrappedInfo(time, this._wrappedInfo); + (_this$_clipEventEval = this._clipEventEval) === null || _this$_clipEventEval === void 0 ? void 0 : _this$_clipEventEval.ignore(info.ratio, info.direction); + } + }; + _proto.update = function update(delta) { + if (this._delayTime > 0.0) { + this._delayTime -= delta; + if (this._delayTime > 0.0) { + return; + } + } + if (this._currentFramePlayed) { + this.time += delta * this._speed; + } else { + this._currentFramePlayed = true; + } + this._process(); + }; + _proto.sample = function sample() { + var info = this.getWrappedInfo(this.time, this._wrappedInfo); + this._sampleCurves(info.time); + { + this._sampleEvents(info); + } + this._sampleEmbeddedPlayers(info); + return info; + }; + _proto.onPlay = function onPlay() { + var _this$_clipEmbeddedPl; + this.setTime(this._getPlaybackStart()); + this._delayTime = this._delay; + this._onReplayOrResume(); + this.emit(EventType$8.PLAY, this); + (_this$_clipEmbeddedPl = this._clipEmbeddedPlayerEval) === null || _this$_clipEmbeddedPl === void 0 ? void 0 : _this$_clipEmbeddedPl.notifyHostPlay(this.current); + }; + _proto.onStop = function onStop() { + var _this$_clipEmbeddedPl2; + if (!this.isPaused) { + this._onPauseOrStop(); + } + this.emit(EventType$8.STOP, this); + (_this$_clipEmbeddedPl2 = this._clipEmbeddedPlayerEval) === null || _this$_clipEmbeddedPl2 === void 0 ? void 0 : _this$_clipEmbeddedPl2.notifyHostStop(); + }; + _proto.onResume = function onResume() { + var _this$_clipEmbeddedPl3; + this._onReplayOrResume(); + this.emit(EventType$8.RESUME, this); + (_this$_clipEmbeddedPl3 = this._clipEmbeddedPlayerEval) === null || _this$_clipEmbeddedPl3 === void 0 ? void 0 : _this$_clipEmbeddedPl3.notifyHostPlay(this.current); + }; + _proto.onPause = function onPause() { + var _this$_clipEmbeddedPl4; + this._onPauseOrStop(); + this.emit(EventType$8.PAUSE, this); + (_this$_clipEmbeddedPl4 = this._clipEmbeddedPlayerEval) === null || _this$_clipEmbeddedPl4 === void 0 ? void 0 : _this$_clipEmbeddedPl4.notifyHostPause(this.current); + }; + _proto._sampleCurves = function _sampleCurves(time) { + var poseOutput = this._poseOutput, + clipEval = this._clipEval; + if (poseOutput) { + poseOutput.weight = this.weight; + } + if (clipEval) { + clipEval.evaluate(time); + } + }; + _proto._process = function _process() { + if (this._useSimpleProcess) { + this.simpleProcess(); + } else { + this.process(); + } + }; + _proto.process = function process() { + var info = this.sample(); + if (this._allowLastFrame) { + var lastInfo; + if (!this._lastWrapInfo) { + lastInfo = this._lastWrapInfo = new WrappedInfo(info); + } else { + lastInfo = this._lastWrapInfo; + } + if (this.repeatCount > 1 && (info.iterations | 0) > (lastInfo.iterations | 0)) { + this.emit(EventType$8.LASTFRAME, this); + } + lastInfo.set(info); + } + if (info.stopped) { + this.stop(); + this.emit(EventType$8.FINISHED, this); + } + }; + _proto.simpleProcess = function simpleProcess() { + var playbackStart = this._playbackRange.min; + var playbackDuration = this._playbackDuration; + var time = 0.0; + var ratio = 0.0; + if (playbackDuration !== 0.0) { + time = this.time % playbackDuration; + if (time < 0.0) { + time += playbackDuration; + } + var realTime = playbackStart + time; + ratio = realTime * this._invDuration; + } + this._sampleCurves(playbackStart + time); + if (this._clipEventEval || this._clipEmbeddedPlayerEval) { + var wrapInfo = this.getWrappedInfo(this.time, this._wrappedInfo); + { + this._sampleEvents(wrapInfo); + } + this._sampleEmbeddedPlayers(wrapInfo); + } + if (this._allowLastFrame) { + if (Number.isNaN(this._lastIterations)) { + this._lastIterations = ratio; + } + if (this.time > 0 && this._lastIterations > ratio || this.time < 0 && this._lastIterations < ratio) { + this.emit(EventType$8.LASTFRAME, this); + } + this._lastIterations = ratio; + } + }; + _proto._needReverse = function _needReverse(currentIterations) { + var wrapMode = this.wrapMode; + var needReverse = false; + if ((wrapMode & WrapModeMask.PingPong) === WrapModeMask.PingPong) { + var isEnd = currentIterations - (currentIterations | 0) === 0; + if (isEnd && currentIterations > 0) { + currentIterations -= 1; + } + var isOddIteration = currentIterations & 1; + if (isOddIteration) { + needReverse = !needReverse; + } + } + if ((wrapMode & WrapModeMask.Reverse) === WrapModeMask.Reverse) { + needReverse = !needReverse; + } + return needReverse; + }; + _proto.getWrappedInfo = function getWrappedInfo(time, info) { + info = info || new WrappedInfo(); + var playbackStart = this._playbackRange.min, + playbackDuration = this._playbackDuration; + var repeatCount = this.repeatCount; + if (playbackDuration === 0.0) { + info.time = 0.0; + info.ratio = 0.0; + info.direction = 1.0; + info.stopped = !!Number.isFinite(repeatCount); + info.iterations = 0.0; + return info; + } + var stopped = false; + time -= playbackStart; + var currentIterations = time > 0 ? time / playbackDuration : -(time / playbackDuration); + if (currentIterations >= repeatCount) { + currentIterations = repeatCount; + stopped = true; + var tempRatio = repeatCount - (repeatCount | 0); + if (tempRatio === 0) { + tempRatio = 1; + } + time = tempRatio * playbackDuration * (time > 0 ? 1 : -1); + } + if (time > playbackDuration) { + var tempTime = time % playbackDuration; + time = tempTime === 0 ? playbackDuration : tempTime; + } else if (time < 0) { + time %= playbackDuration; + if (time !== 0) { + time += playbackDuration; + } + } + var needReverse = false; + var shouldWrap = this._wrapMode & WrapModeMask.ShouldWrap; + if (shouldWrap) { + needReverse = this._needReverse(currentIterations); + } + var direction = needReverse ? -1 : 1; + if (this.speed < 0) { + direction *= -1; + } + if (shouldWrap && needReverse) { + time = playbackDuration - time; + } + info.time = playbackStart + time; + info.ratio = info.time / this.duration; + info.direction = direction; + info.stopped = stopped; + info.iterations = currentIterations; + return info; + }; + _proto._getPlaybackStart = function _getPlaybackStart() { + return this._playbackRange.min; + }; + _proto._sampleEvents = function _sampleEvents(wrapInfo) { + var _this$_clipEventEval2; + (_this$_clipEventEval2 = this._clipEventEval) === null || _this$_clipEventEval2 === void 0 ? void 0 : _this$_clipEventEval2.sample(wrapInfo.ratio, wrapInfo.direction, wrapInfo.iterations); + }; + _proto._sampleEmbeddedPlayers = function _sampleEmbeddedPlayers(wrapInfo) { + var _this$_clipEmbeddedPl5; + (_this$_clipEmbeddedPl5 = this._clipEmbeddedPlayerEval) === null || _this$_clipEmbeddedPl5 === void 0 ? void 0 : _this$_clipEmbeddedPl5.evaluate(wrapInfo.time, Math.trunc(wrapInfo.iterations)); + }; + _proto._emit = function _emit(type, state) { + if (this._target && this._target.isValid) { + this._target.emit(type, type, state); + } + }; + _proto._onReplayOrResume = function _onReplayOrResume() { + getGlobalAnimationManager().addAnimation(this); + }; + _proto._onPauseOrStop = function _onPauseOrStop() { + getGlobalAnimationManager().removeAnimation(this); + }; + _createClass(AnimationState, [{ + key: "clip", + get: function get() { + return this._clip; + } + }, { + key: "name", + get: function get() { + return this._name; + } + }, { + key: "length", + get: function get() { + return this.duration; + } + }, { + key: "wrapMode", + get: function get() { + return this._wrapMode; + }, + set: function set(value) { + var _this$_clipEventEval3; + this._wrapMode = value; + this.time = 0; + if (value & WrapModeMask.Loop) { + this.repeatCount = Infinity; + } else { + this.repeatCount = 1; + } + (_this$_clipEventEval3 = this._clipEventEval) === null || _this$_clipEventEval3 === void 0 ? void 0 : _this$_clipEventEval3.setWrapMode(value); + } + }, { + key: "repeatCount", + get: function get() { + return this._repeatCount; + }, + set: function set(value) { + this._repeatCount = value; + var shouldWrap = this._wrapMode & WrapModeMask.ShouldWrap; + var reverse = (this.wrapMode & WrapModeMask.Reverse) === WrapModeMask.Reverse; + if (value === Infinity && !shouldWrap && !reverse) { + this._useSimpleProcess = true; + } else { + this._useSimpleProcess = false; + } + } + }, { + key: "delay", + get: function get() { + return this._delay; + }, + set: function set(value) { + this._delayTime = this._delay = value; + } + }, { + key: "playbackRange", + get: function get() { + return this._playbackRange; + }, + set: function set(value) { + assertIsTrue(value.max >= value.min); + this._playbackRange.min = Math.max(value.min, 0); + this._playbackRange.max = Math.min(value.max, this.duration); + this._playbackDuration = this._playbackRange.max - this._playbackRange.min; + this.setTime(0.0); + } + }, { + key: "speed", + get: function get() { + return this._speed; + }, + set: function set(value) { + var _this$_clipEmbeddedPl6; + this._speed = value; + (_this$_clipEmbeddedPl6 = this._clipEmbeddedPlayerEval) === null || _this$_clipEmbeddedPl6 === void 0 ? void 0 : _this$_clipEmbeddedPl6.notifyHostSpeedChanged(value); + } + }, { + key: "current", + get: function get() { + return this.getWrappedInfo(this.time).time; + } + }, { + key: "ratio", + get: function get() { + return this.duration === 0.0 ? 0.0 : this.current / this.duration; + } + }, { + key: "weight", + get: function get() { + return this._weight; + }, + set: function set(value) { + this._weight = value; + if (this._poseOutput) { + this._poseOutput.weight = value; + } + } + }, { + key: "curveLoaded", + get: function get() { + return this._curveLoaded; + } + }]); + return AnimationState; + }(Playable)); + legacyCC.AnimationState = AnimationState$1; + + var _dec$1a, _class$1a, _class2$11, _initializer$X, _initializer2$N; + (_dec$1a = ccclass$t(CLASS_NAME_PREFIX_ANIM + "EmbeddedAnimationClipPlayable"), _dec$1a(_class$1a = (_class2$11 = function (_EmbeddedPlayable) { + _inheritsLoose(EmbeddedAnimationClipPlayable, _EmbeddedPlayable); + function EmbeddedAnimationClipPlayable() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _EmbeddedPlayable.call.apply(_EmbeddedPlayable, [this].concat(args)) || this; + _this.path = _initializer$X && _initializer$X(); + _this.clip = _initializer2$N && _initializer2$N(); + return _this; + } + var _proto = EmbeddedAnimationClipPlayable.prototype; + _proto.instantiate = function instantiate(root) { + var clip = this.clip, + path = this.path; + if (!clip) { + return null; + } + var clipRoot = root.getChildByPath(path); + if (!clipRoot) { + errorID(3938, path, root.getPathInHierarchy(), clip.name); + return null; + } + var state = new AnimationState$1(clip); + state.initialize(clipRoot); + return new EmbeddedAnimationClipPlayableState(state); + }; + return EmbeddedAnimationClipPlayable; + }(EmbeddedPlayable), (_initializer$X = applyDecoratedInitializer(_class2$11.prototype, "path", [serializable$9], function () { + return ''; + }), _initializer2$N = applyDecoratedInitializer(_class2$11.prototype, "clip", [serializable$9], function () { + return null; + })), _class2$11)) || _class$1a); + var EmbeddedAnimationClipPlayableState = function (_EmbeddedPlayableStat) { + _inheritsLoose(EmbeddedAnimationClipPlayableState, _EmbeddedPlayableStat); + function EmbeddedAnimationClipPlayableState(animationState) { + var _this2; + _this2 = _EmbeddedPlayableStat.call(this, true) || this; + _this2._animationState = void 0; + _this2._animationState = animationState; + return _this2; + } + var _proto2 = EmbeddedAnimationClipPlayableState.prototype; + _proto2.destroy = function destroy() { + this._animationState.destroy(); + }; + _proto2.play = function play() { + this._animationState.play(); + }; + _proto2.pause = function pause() { + this._animationState.pause(); + }; + _proto2.stop = function stop() { + this._animationState.stop(); + }; + _proto2.setSpeed = function setSpeed(speed) { + this._animationState.speed = speed; + }; + _proto2.setTime = function setTime(time) { + this._animationState.time = time; + }; + return EmbeddedAnimationClipPlayableState; + }(EmbeddedPlayableState); + + var _dec$19, _class$19, _class2$10, _initializer$W; + (_dec$19 = ccclass$t(CLASS_NAME_PREFIX_ANIM + "EmbeddedParticleSystemPlayable"), _dec$19(_class$19 = (_class2$10 = function (_EmbeddedPlayable) { + _inheritsLoose(EmbeddedParticleSystemPlayable, _EmbeddedPlayable); + function EmbeddedParticleSystemPlayable() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _EmbeddedPlayable.call.apply(_EmbeddedPlayable, [this].concat(args)) || this; + _this.path = _initializer$W && _initializer$W(); + return _this; + } + var _proto = EmbeddedParticleSystemPlayable.prototype; + _proto.instantiate = function instantiate(root) { + var node = root.getChildByPath(this.path); + if (!node) { + warn("Hierarchy path " + this.path + " does not exists."); + return null; + } + var ParticleSystemConstructor = getClassByName("cc.ParticleSystem"); + if (!ParticleSystemConstructor) { + warn("Particle system is required for embedded particle system player."); + return null; + } + var particleSystem = node.getComponent(ParticleSystemConstructor); + if (!particleSystem) { + warn(this.path + " does not includes a particle system component."); + return null; + } + return new EmbeddedParticleSystemPlayableState(particleSystem); + }; + return EmbeddedParticleSystemPlayable; + }(EmbeddedPlayable), (_initializer$W = applyDecoratedInitializer(_class2$10.prototype, "path", [serializable$9], function () { + return ''; + })), _class2$10)) || _class$19); + var EmbeddedParticleSystemPlayableState = function (_EmbeddedPlayableStat) { + _inheritsLoose(EmbeddedParticleSystemPlayableState, _EmbeddedPlayableStat); + function EmbeddedParticleSystemPlayableState(particleSystem) { + var _this2; + _this2 = _EmbeddedPlayableStat.call(this, false) || this; + _this2._particleSystem = void 0; + _this2._particleSystem = particleSystem; + return _this2; + } + var _proto2 = EmbeddedParticleSystemPlayableState.prototype; + _proto2.destroy = function destroy() {}; + _proto2.play = function play() { + this._particleSystem.play(); + }; + _proto2.pause = function pause() { + this._particleSystem.stopEmitting(); + }; + _proto2.stop = function stop() { + this._particleSystem.stopEmitting(); + }; + _proto2.setSpeed = function setSpeed(speed) { + this._particleSystem.simulationSpeed = speed; + }; + return EmbeddedParticleSystemPlayableState; + }(EmbeddedPlayableState); + + var _dec$18, _class$18, _class2$$, _initializer$V, _dec2$R, _class4$a, _class5$b, _initializer2$M; + function isPropertyPath(path) { + return typeof path === 'string' || typeof path === 'number'; + } + function isCustomPath(path, constructor) { + return path instanceof constructor; + } + var HierarchyPath = (_dec$18 = ccclass$t('cc.animation.HierarchyPath'), _dec$18(_class$18 = (_class2$$ = function () { + function HierarchyPath(path) { + this.path = _initializer$V && _initializer$V(); + this.path = path || ''; + } + var _proto = HierarchyPath.prototype; + _proto.get = function get(target) { + if (!(target instanceof Node$1)) { + warnID(3925); + return null; + } + var result = target.getChildByPath(this.path); + if (!result) { + warnID(3926, target.name, this.path); + return null; + } + return result; + }; + return HierarchyPath; + }(), (_initializer$V = applyDecoratedInitializer(_class2$$.prototype, "path", [serializable$9], function () { + return ''; + })), _class2$$)) || _class$18); + var ComponentPath = (_dec2$R = ccclass$t('cc.animation.ComponentPath'), _dec2$R(_class4$a = (_class5$b = function () { + function ComponentPath(component) { + this.component = _initializer2$M && _initializer2$M(); + this.component = component || ''; + } + var _proto2 = ComponentPath.prototype; + _proto2.get = function get(target) { + if (!(target instanceof Node$1)) { + warnID(3927); + return null; + } + var result = target.getComponent(this.component); + if (!result) { + warnID(3928, target.name, this.component); + return null; + } + return result; + }; + return ComponentPath; + }(), (_initializer2$M = applyDecoratedInitializer(_class5$b.prototype, "component", [serializable$9], function () { + return ''; + })), _class5$b)) || _class4$a); + + var _dec$17, _class$17, _class2$_, _initializer$U, _dec2$Q, _class4$9, _class5$a, _initializer2$L, _initializer3$A, _class6$3, _dec3$F, _class7$2, _class8$1, _initializer4$w, _dec4$t, _class10$1, _class11$1, _initializer5$q, _dec5$s, _class13$1, _class14, _initializer6$m; + var normalizedFollowTag = Symbol('NormalizedFollow'); + var parseTrsPathTag = Symbol('ConvertAsTrsPath'); + var trackBindingTag = Symbol('TrackBinding'); + var TrackPath = (_dec$17 = ccclass$t(CLASS_NAME_PREFIX_ANIM + "TrackPath"), _dec$17(_class$17 = (_class2$_ = function () { + function TrackPath() { + this._paths = _initializer$U && _initializer$U(); + } + var _proto = TrackPath.prototype; + _proto.toProperty = function toProperty(name) { + this._paths.push(name); + return this; + }; + _proto.toElement = function toElement(index) { + this._paths.push(index); + return this; + }; + _proto.toHierarchy = function toHierarchy(nodePath) { + this._paths.push(new HierarchyPath(nodePath)); + return this; + }; + _proto.toComponent = function toComponent(constructor) { + var path = new ComponentPath(typeof constructor === 'string' ? constructor : getClassName(constructor)); + this._paths.push(path); + return this; + }; + _proto.toCustomized = function toCustomized(resolver) { + this._paths.push(resolver); + return this; + }; + _proto.append = function append() { + var _this$_paths; + for (var _len = arguments.length, trackPaths = new Array(_len), _key = 0; _key < _len; _key++) { + trackPaths[_key] = arguments[_key]; + } + var paths = (_this$_paths = this._paths).concat.apply(_this$_paths, trackPaths.map(function (trackPath) { + return trackPath._paths; + })); + this._paths = paths; + return this; + }; + _proto.isPropertyAt = function isPropertyAt(index) { + return typeof this._paths[index] === 'string'; + }; + _proto.parsePropertyAt = function parsePropertyAt(index) { + return this._paths[index]; + }; + _proto.isElementAt = function isElementAt(index) { + return typeof this._paths[index] === 'number'; + }; + _proto.parseElementAt = function parseElementAt(index) { + return this._paths[index]; + }; + _proto.isHierarchyAt = function isHierarchyAt(index) { + return this._paths[index] instanceof HierarchyPath; + }; + _proto.parseHierarchyAt = function parseHierarchyAt(index) { + assertIsTrue(this.isHierarchyAt(index)); + return this._paths[index].path; + }; + _proto.isComponentAt = function isComponentAt(index) { + return this._paths[index] instanceof ComponentPath; + }; + _proto.parseComponentAt = function parseComponentAt(index) { + assertIsTrue(this.isComponentAt(index)); + return this._paths[index].component; + }; + _proto.slice = function slice(beginIndex, endIndex) { + var trackPath = new TrackPath(); + trackPath._paths = this._paths.slice(beginIndex, endIndex); + return trackPath; + }; + _proto.trace = function trace(object, beginIndex, endIndex) { + var _beginIndex, _endIndex; + (_beginIndex = beginIndex) !== null && _beginIndex !== void 0 ? _beginIndex : beginIndex = 0; + (_endIndex = endIndex) !== null && _endIndex !== void 0 ? _endIndex : endIndex = this._paths.length; + return this[normalizedFollowTag](object, beginIndex, endIndex); + }; + _proto[parseTrsPathTag] = function () { + var paths = this._paths; + var nPaths = paths.length; + var iPath = 0; + var nodePath = ''; + for (; iPath < nPaths; ++iPath) { + var path = paths[iPath]; + if (!(path instanceof HierarchyPath)) { + break; + } else if (!path.path) { + continue; + } else if (nodePath) { + nodePath += "/" + path.path; + } else { + nodePath = path.path; + } + } + if (iPath === nPaths) { + return null; + } + var prs; + if (iPath !== nPaths - 1) { + return null; + } + switch (paths[iPath]) { + case 'position': + case 'scale': + case 'rotation': + case 'eulerAngles': + prs = paths[iPath]; + break; + default: + return null; + } + return { + node: nodePath, + property: prs + }; + }; + _proto[normalizedFollowTag] = function (root, beginIndex, endIndex) { + var paths = this._paths; + var result = root; + for (var iPath = beginIndex; iPath < endIndex; ++iPath) { + var path = paths[iPath]; + if (isPropertyPath(path)) { + if (!(path in result)) { + warnID(3929, path); + return null; + } else { + result = result[path]; + } + } else { + result = path.get(result); + } + if (result === null) { + break; + } + } + return result; + }; + _createClass(TrackPath, [{ + key: "length", + get: function get() { + return this._paths.length; + } + }]); + return TrackPath; + }(), (_initializer$U = applyDecoratedInitializer(_class2$_.prototype, "_paths", [serializable$9], function () { + return []; + })), _class2$_)) || _class$17); + var TrackBinding = (_dec2$Q = ccclass$t(CLASS_NAME_PREFIX_ANIM + "TrackBinding"), _dec2$Q(_class4$9 = uniquelyReferenced(_class4$9 = (_class5$a = (_class6$3 = function () { + function TrackBinding() { + this.path = _initializer2$L && _initializer2$L(); + this.proxy = _initializer3$A && _initializer3$A(); + } + var _proto2 = TrackBinding.prototype; + _proto2.parseTrsPath = function parseTrsPath() { + if (this.proxy) { + return null; + } else { + return this.path[parseTrsPathTag](); + } + }; + _proto2.createRuntimeBinding = function createRuntimeBinding(target, poseOutput, isConstant) { + var path = this.path, + proxy = this.proxy; + var nPaths = path.length; + var iLastPath = nPaths - 1; + if (nPaths !== 0 && (path.isPropertyAt(iLastPath) || path.isElementAt(iLastPath)) && !proxy) { + var lastPropertyKey = path.isPropertyAt(iLastPath) ? path.parsePropertyAt(iLastPath) : path.parseElementAt(iLastPath); + var resultTarget = path[normalizedFollowTag](target, 0, nPaths - 1); + if (resultTarget === null) { + return null; + } + if (poseOutput && resultTarget instanceof Node$1 && isTrsPropertyName(lastPropertyKey)) { + var blendStateWriter = poseOutput.createPoseWriter(resultTarget, lastPropertyKey, isConstant); + return blendStateWriter; + } + var _setValue; + var _getValue; + { + var animationFunction = TrackBinding._animationFunctions.get(resultTarget.constructor); + if (!animationFunction) { + animationFunction = new Map(); + TrackBinding._animationFunctions.set(resultTarget.constructor, animationFunction); + } + var accessor = animationFunction.get(lastPropertyKey); + if (!accessor) { + accessor = { + setValue: Function('value', "this.target." + lastPropertyKey + " = value;"), + getValue: Function("return this.target." + lastPropertyKey + ";") + }; + animationFunction.set(lastPropertyKey, accessor); + } + _setValue = accessor.setValue; + _getValue = accessor.getValue; + } + return { + target: resultTarget, + setValue: _setValue, + getValue: _getValue + }; + } else if (!proxy) { + errorID(3921); + return null; + } else { + var _resultTarget = path[normalizedFollowTag](target, 0, nPaths); + if (_resultTarget === null) { + return null; + } + var runtimeProxy = proxy.forTarget(_resultTarget); + if (!runtimeProxy) { + return null; + } + var _binding = { + setValue: function setValue(value) { + runtimeProxy.set(value); + } + }; + var proxyGet = runtimeProxy.get; + if (proxyGet) { + _binding.getValue = function () { + return proxyGet.call(runtimeProxy); + }; + } + return _binding; + } + }; + _proto2.isMaskedOff = function isMaskedOff(mask) { + var trsPath = this.parseTrsPath(); + if (!trsPath) { + return false; + } + var joints = mask.joints[Symbol.iterator](); + for (var jointMaskInfoIter = joints.next(); !jointMaskInfoIter.done; jointMaskInfoIter = joints.next()) { + var _jointMaskInfoIter = jointMaskInfoIter, + jointMaskInfo = _jointMaskInfoIter.value; + if (jointMaskInfo.path !== trsPath.node) { + continue; + } + return !jointMaskInfo.enabled; + } + return false; + }; + return TrackBinding; + }(), _class6$3._animationFunctions = new WeakMap(), _class6$3), (_initializer2$L = applyDecoratedInitializer(_class5$a.prototype, "path", [serializable$9], function () { + return new TrackPath(); + }), _initializer3$A = applyDecoratedInitializer(_class5$a.prototype, "proxy", [serializable$9], null)), _class5$a)) || _class4$9) || _class4$9); + function isTrsPropertyName(name) { + return name === 'position' || name === 'rotation' || name === 'scale' || name === 'eulerAngles'; + } + var Track = (_dec3$F = ccclass$t(CLASS_NAME_PREFIX_ANIM + "Track"), _dec3$F(_class7$2 = (_class8$1 = function () { + function Track() { + this._binding = _initializer4$w && _initializer4$w(); + } + var _proto3 = Track.prototype; + _proto3.channels = function channels() { + return []; + }; + _proto3.range = function range() { + var range = { + min: Infinity, + max: -Infinity + }; + for (var _iterator = _createForOfIteratorHelperLoose(this.channels()), _step; !(_step = _iterator()).done;) { + var channel = _step.value; + range.min = Math.min(range.min, channel.curve.rangeMin); + range.max = Math.max(range.max, channel.curve.rangeMax); + } + return range; + }; + _createClass(Track, [{ + key: "path", + get: function get() { + return this._binding.path; + }, + set: function set(value) { + this._binding.path = value; + } + }, { + key: "proxy", + get: function get() { + return this._binding.proxy; + }, + set: function set(value) { + this._binding.proxy = value; + } + }, { + key: trackBindingTag, + get: function get() { + return this._binding; + } + }]); + return Track; + }(), (_initializer4$w = applyDecoratedInitializer(_class8$1.prototype, "_binding", [serializable$9], function () { + return new TrackBinding(); + })), _class8$1)) || _class7$2); + var Channel = (_dec4$t = ccclass$t(CLASS_NAME_PREFIX_ANIM + "Channel"), _dec4$t(_class10$1 = (_class11$1 = function () { + function Channel(curve) { + this.name = ''; + this._curve = _initializer5$q && _initializer5$q(); + this._curve = curve; + } + _createClass(Channel, [{ + key: "curve", + get: function get() { + return this._curve; + } + }]); + return Channel; + }(), (_initializer5$q = applyDecoratedInitializer(_class11$1.prototype, "_curve", [serializable$9], null)), _class11$1)) || _class10$1); + var SingleChannelTrack = (_dec5$s = ccclass$t(CLASS_NAME_PREFIX_ANIM + "SingleChannelTrack"), _dec5$s(_class13$1 = (_class14 = function (_Track) { + _inheritsLoose(SingleChannelTrack, _Track); + function SingleChannelTrack() { + var _this; + _this = _Track.call(this) || this; + _this._channel = _initializer6$m && _initializer6$m(); + _this._channel = new Channel(_this.createCurve()); + return _this; + } + var _proto4 = SingleChannelTrack.prototype; + _proto4.channels = function channels() { + return [this._channel]; + }; + _proto4.createCurve = function createCurve() { + throw new Error("Not impl"); + }; + _proto4[createEvalSymbol] = function () { + var curve = this._channel.curve; + return new SingleChannelTrackEval(curve); + }; + _createClass(SingleChannelTrack, [{ + key: "channel", + get: function get() { + return this._channel; + } + }]); + return SingleChannelTrack; + }(Track), (_initializer6$m = applyDecoratedInitializer(_class14.prototype, "_channel", [serializable$9], null)), _class14)) || _class13$1); + var SingleChannelTrackEval = function () { + function SingleChannelTrackEval(_curve) { + this._curve = _curve; + } + var _proto5 = SingleChannelTrackEval.prototype; + _proto5.evaluate = function evaluate(time) { + return this._curve.evaluate(time); + }; + _createClass(SingleChannelTrackEval, [{ + key: "requiresDefault", + get: function get() { + return false; + } + }]); + return SingleChannelTrackEval; + }(); + + var _dec$16, _class$16, _class2$Z, _initializer$T; + var ccclass$p = ccclass$t, + serializable$6 = serializable$9; + (_dec$16 = ccclass$p(CLASS_NAME_PREFIX_ANIM + "RealArrayTrack"), _dec$16(_class$16 = (_class2$Z = function (_Track) { + _inheritsLoose(RealArrayTrack, _Track); + function RealArrayTrack() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Track.call.apply(_Track, [this].concat(args)) || this; + _this._channels = _initializer$T && _initializer$T(); + return _this; + } + var _proto = RealArrayTrack.prototype; + _proto.channels = function channels() { + return this._channels; + }; + _proto[createEvalSymbol] = function () { + return new RealArrayTrackEval(this._channels.map(function (_ref) { + var curve = _ref.curve; + return curve; + })); + }; + _createClass(RealArrayTrack, [{ + key: "elementCount", + get: function get() { + return this._channels.length; + }, + set: function set(value) { + var channels = this._channels; + var nChannels = channels.length; + if (value < nChannels) { + this._channels.splice(value); + } else if (value > nChannels) { + var _this$_channels; + (_this$_channels = this._channels).push.apply(_this$_channels, Array.from({ + length: value - nChannels + }, function () { + return new Channel(new RealCurve()); + })); + } + } + }]); + return RealArrayTrack; + }(Track), (_initializer$T = applyDecoratedInitializer(_class2$Z.prototype, "_channels", [serializable$6], function () { + return []; + })), _class2$Z)) || _class$16); + var RealArrayTrackEval = function () { + function RealArrayTrackEval(_curves) { + this._curves = _curves; + this._result = new Array(_curves.length).fill(0.0); + } + var _proto2 = RealArrayTrackEval.prototype; + _proto2.evaluate = function evaluate(time) { + var result = this._result; + var nElements = result.length; + for (var iElement = 0; iElement < nElements; ++iElement) { + result[iElement] = this._curves[iElement].evaluate(time); + } + return this._result; + }; + _createClass(RealArrayTrackEval, [{ + key: "requiresDefault", + get: function get() { + return false; + } + }]); + return RealArrayTrackEval; + }(); + + var _dec$15, _class$15, _class2$Y, _initializer$S, _initializer2$K, _descriptor; + var UniformProxyFactory = (_dec$15 = ccclass$t('cc.animation.UniformProxyFactory'), _dec$15(_class$15 = (_class2$Y = function () { + function UniformProxyFactory(uniformName, passIndex) { + this.passIndex = _initializer$S && _initializer$S(); + this.uniformName = _initializer2$K && _initializer2$K(); + _initializerDefineProperty(this, "channelIndex", _descriptor, this); + this.passIndex = passIndex || 0; + this.uniformName = uniformName || ''; + } + var _proto = UniformProxyFactory.prototype; + _proto.forTarget = function forTarget(target) { + if (!(target instanceof Material)) { + warnID(3940, target); + return undefined; + } + var passIndex = this.passIndex, + uniformName = this.uniformName, + channelIndex = this.channelIndex; + if (passIndex < 0 || passIndex >= target.passes.length) { + warnID(3941, target.name, passIndex); + return undefined; + } + var pass = target.passes[passIndex]; + var handle = pass.getHandle(uniformName); + if (!handle) { + warnID(3942, target.name, passIndex, uniformName); + return undefined; + } + var type = Pass.getTypeFromHandle(handle); + if (type < Type$1.SAMPLER1D) { + var realHandle = channelIndex === undefined ? handle : pass.getHandle(uniformName, channelIndex, Type$1.FLOAT); + if (!realHandle) { + warnID(3943, target.name, passIndex, uniformName, channelIndex); + return undefined; + } + if (isUniformArray(pass, uniformName)) { + return { + set: function set(value) { + pass.setUniformArray(realHandle, value); + } + }; + } + return { + set: function set(value) { + pass.setUniform(realHandle, value); + } + }; + } else { + var binding = Pass.getBindingFromHandle(handle); + var prop = pass.properties[uniformName]; + var texName = prop && prop.value ? "" + prop.value + getStringFromType(prop.type) : getDefaultFromType(prop.type); + var dftTex = builtinResMgr.get(texName); + if (!dftTex) { + warn("Illegal texture default value: " + texName + "."); + dftTex = builtinResMgr.get('default-texture'); + } + return { + set: function set(value) { + if (!value) { + value = dftTex; + } + var texture = value.getGFXTexture(); + if (!texture || !texture.width || !texture.height) { + return; + } + pass.bindTexture(binding, texture); + if (value instanceof TextureBase) { + pass.bindSampler(binding, deviceManager.gfxDevice.getSampler(value.getSamplerInfo())); + } + } + }; + } + }; + return UniformProxyFactory; + }(), (_initializer$S = applyDecoratedInitializer(_class2$Y.prototype, "passIndex", [serializable$9], function () { + return 0; + }), _initializer2$K = applyDecoratedInitializer(_class2$Y.prototype, "uniformName", [serializable$9], function () { + return ''; + }), _descriptor = _applyDecoratedDescriptor(_class2$Y.prototype, "channelIndex", [_float], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return undefined; + } + })), _class2$Y)) || _class$15); + function isUniformArray(pass, name) { + for (var _iterator = _createForOfIteratorHelperLoose(pass.shaderInfo.blocks), _step; !(_step = _iterator()).done;) { + var block = _step.value; + for (var _iterator2 = _createForOfIteratorHelperLoose(block.members), _step2; !(_step2 = _iterator2()).done;) { + var uniform = _step2.value; + if (uniform.name === name) { + return uniform.count > 1; + } + } + } + return false; + } + + var _dec$14, _class$14, _class2$X, _initializer$R, _initializer2$J, _dec2$P, _class4$8, _class5$9, _initializer3$z, _dec3$E, _class7$1; + var MorphWeightValueProxy = (_dec$14 = ccclass$t('cc.animation.MorphWeightValueProxy'), _dec$14(_class$14 = (_class2$X = function () { + function MorphWeightValueProxy() { + this.subMeshIndex = _initializer$R && _initializer$R(); + this.shapeIndex = _initializer2$J && _initializer2$J(); + } + var _proto = MorphWeightValueProxy.prototype; + _proto.forTarget = function forTarget(target) { + var _this = this; + return { + set: function set(value) { + target.setWeight(value, _this.subMeshIndex, _this.shapeIndex); + } + }; + }; + return MorphWeightValueProxy; + }(), (_initializer$R = applyDecoratedInitializer(_class2$X.prototype, "subMeshIndex", [serializable$9], function () { + return 0; + }), _initializer2$J = applyDecoratedInitializer(_class2$X.prototype, "shapeIndex", [serializable$9], function () { + return 0; + })), _class2$X)) || _class$14); + var MorphWeightsValueProxy = (_dec2$P = ccclass$t('cc.animation.MorphWeightsValueProxy'), _dec2$P(_class4$8 = (_class5$9 = function () { + function MorphWeightsValueProxy() { + this.subMeshIndex = _initializer3$z && _initializer3$z(); + } + var _proto2 = MorphWeightsValueProxy.prototype; + _proto2.forTarget = function forTarget(target) { + var _this2 = this; + return { + set: function set(value) { + target.setWeights(value, _this2.subMeshIndex); + } + }; + }; + return MorphWeightsValueProxy; + }(), (_initializer3$z = applyDecoratedInitializer(_class5$9.prototype, "subMeshIndex", [serializable$9], function () { + return 0; + })), _class5$9)) || _class4$8); + var MorphWeightsAllValueProxy = (_dec3$E = ccclass$t('cc.animation.MorphWeightsAllValueProxy'), _dec3$E(_class7$1 = function () { + function MorphWeightsAllValueProxy() {} + var _proto3 = MorphWeightsAllValueProxy.prototype; + _proto3.forTarget = function forTarget(target) { + return { + set: function set(value) { + var _target$mesh$struct$p, _target$mesh; + var nSubMeshes = (_target$mesh$struct$p = (_target$mesh = target.mesh) === null || _target$mesh === void 0 ? void 0 : _target$mesh.struct.primitives.length) !== null && _target$mesh$struct$p !== void 0 ? _target$mesh$struct$p : 0; + for (var iSubMesh = 0; iSubMesh < nSubMeshes; ++iSubMesh) { + target.setWeights(value, iSubMesh); + } + } + }; + }; + return MorphWeightsAllValueProxy; + }()) || _class7$1); + + var _dec2$O, _class4$7, _class5$8, _initializer4$v, _initializer5$p, _initializer6$l; + function makeCubicSplineValueConstructor(name, ConstructorX, scaleFx, scaleAndAdd) { + var _dec, _class, _class2, _initializer, _initializer2, _initializer3; + var tempValue = new ConstructorX(); + var m0 = new ConstructorX(); + var m1 = new ConstructorX(); + var CubicSplineValueClass = (_dec = ccclass$t(name), _dec(_class = (_class2 = function () { + function CubicSplineValueClass(dataPoint, inTangent, outTangent) { + this.dataPoint = _initializer && _initializer(); + this.inTangent = _initializer2 && _initializer2(); + this.outTangent = _initializer3 && _initializer3(); + this.dataPoint = dataPoint || new ConstructorX(); + this.inTangent = inTangent || new ConstructorX(); + this.outTangent = outTangent || new ConstructorX(); + } + var _proto = CubicSplineValueClass.prototype; + _proto.lerp = function lerp(to, t, dt) { + var p0 = this.dataPoint; + var p1 = to.dataPoint; + m0 = scaleFx(m0, this.inTangent, dt); + m1 = scaleFx(m1, to.outTangent, dt); + var t_3 = t * t * t; + var t_2 = t * t; + var f_0 = 2 * t_3 - 3 * t_2 + 1; + var f_1 = t_3 - 2 * t_2 + t; + var f_2 = -2 * t_3 + 3 * t_2; + var f_3 = t_3 - t_2; + tempValue = scaleFx(tempValue, p0, f_0); + tempValue = scaleAndAdd(tempValue, tempValue, m0, f_1); + tempValue = scaleAndAdd(tempValue, tempValue, p1, f_2); + tempValue = scaleAndAdd(tempValue, tempValue, m1, f_3); + return tempValue; + }; + _proto.getNoLerp = function getNoLerp() { + return this.dataPoint; + }; + return CubicSplineValueClass; + }(), (_initializer = applyDecoratedInitializer(_class2.prototype, "dataPoint", [serializable$9], function () { + return new ConstructorX(); + }), _initializer2 = applyDecoratedInitializer(_class2.prototype, "inTangent", [serializable$9], function () { + return new ConstructorX(); + }), _initializer3 = applyDecoratedInitializer(_class2.prototype, "outTangent", [serializable$9], function () { + return new ConstructorX(); + })), _class2)) || _class); + if (ConstructorX === Quat) { + var _lerp = CubicSplineValueClass.prototype.lerp; + CubicSplineValueClass.prototype.lerp = function (to, t, dt) { + var result = _lerp.call(this, to, t, dt); + Quat.normalize(result, result); + return result; + }; + } + return CubicSplineValueClass; + } + var CubicSplineVec2Value = makeCubicSplineValueConstructor('cc.CubicSplineVec2Value', Vec2, Vec2.multiplyScalar, Vec2.scaleAndAdd); + var CubicSplineVec3Value = makeCubicSplineValueConstructor('cc.CubicSplineVec3Value', Vec3, Vec3.multiplyScalar, Vec3.scaleAndAdd); + var CubicSplineVec4Value = makeCubicSplineValueConstructor('cc.CubicSplineVec4Value', Vec4, Vec4.multiplyScalar, Vec4.scaleAndAdd); + var CubicSplineQuatValue = makeCubicSplineValueConstructor('cc.CubicSplineQuatValue', Quat, Quat.multiplyScalar, Quat.scaleAndAdd); + var CubicSplineNumberValue = (_dec2$O = ccclass$t('cc.CubicSplineNumberValue'), _dec2$O(_class4$7 = (_class5$8 = function () { + function CubicSplineNumberValue(dataPoint, inTangent, outTangent) { + this.dataPoint = _initializer4$v && _initializer4$v(); + this.inTangent = _initializer5$p && _initializer5$p(); + this.outTangent = _initializer6$l && _initializer6$l(); + this.dataPoint = dataPoint; + this.inTangent = inTangent; + this.outTangent = outTangent; + } + var _proto2 = CubicSplineNumberValue.prototype; + _proto2.lerp = function lerp(to, t, dt) { + var p0 = this.dataPoint; + var p1 = to.dataPoint; + var m0 = this.outTangent * dt; + var m1 = to.inTangent * dt; + var t_3 = t * t * t; + var t_2 = t * t; + var f_0 = 2 * t_3 - 3 * t_2 + 1; + var f_1 = t_3 - 2 * t_2 + t; + var f_2 = -2 * t_3 + 3 * t_2; + var f_3 = t_3 - t_2; + return p0 * f_0 + m0 * f_1 + p1 * f_2 + m1 * f_3; + }; + _proto2.getNoLerp = function getNoLerp() { + return this.dataPoint; + }; + return CubicSplineNumberValue; + }(), (_initializer4$v = applyDecoratedInitializer(_class5$8.prototype, "dataPoint", [serializable$9], function () { + return 0; + }), _initializer5$p = applyDecoratedInitializer(_class5$8.prototype, "inTangent", [serializable$9], function () { + return 0; + }), _initializer6$l = applyDecoratedInitializer(_class5$8.prototype, "outTangent", [serializable$9], function () { + return 0; + })), _class5$8)) || _class4$7); + + var _dec$13, _class$13; + var RealTrack = (_dec$13 = ccclass$t(CLASS_NAME_PREFIX_ANIM + "RealTrack"), _dec$13(_class$13 = function (_SingleChannelTrack) { + _inheritsLoose(RealTrack, _SingleChannelTrack); + function RealTrack() { + return _SingleChannelTrack.apply(this, arguments) || this; + } + var _proto = RealTrack.prototype; + _proto.createCurve = function createCurve() { + return new RealCurve(); + }; + return RealTrack; + }(SingleChannelTrack)) || _class$13); + + function maskIfEmpty(curve) { + return curve.keyFramesCount === 0 ? undefined : curve; + } + + var _dec$12, _class$12, _class2$W, _initializer$Q, _initializer2$I; + var CHANNEL_NAMES$2 = ['X', 'Y', 'Z', 'W']; + var VectorTrack = (_dec$12 = ccclass$t(CLASS_NAME_PREFIX_ANIM + "VectorTrack"), _dec$12(_class$12 = (_class2$W = function (_Track) { + _inheritsLoose(VectorTrack, _Track); + function VectorTrack() { + var _this; + _this = _Track.call(this) || this; + _this._channels = _initializer$Q && _initializer$Q(); + _this._nComponents = _initializer2$I && _initializer2$I(); + _this._channels = new Array(4); + for (var i = 0; i < _this._channels.length; ++i) { + var channel = new Channel(new RealCurve()); + channel.name = CHANNEL_NAMES$2[i]; + _this._channels[i] = channel; + } + return _this; + } + var _proto = VectorTrack.prototype; + _proto.channels = function channels() { + return this._channels; + }; + _proto[createEvalSymbol] = function () { + switch (this._nComponents) { + default: + case 2: + return new Vec2TrackEval(maskIfEmpty(this._channels[0].curve), maskIfEmpty(this._channels[1].curve)); + case 3: + return new Vec3TrackEval(maskIfEmpty(this._channels[0].curve), maskIfEmpty(this._channels[1].curve), maskIfEmpty(this._channels[2].curve)); + case 4: + return new Vec4TrackEval(maskIfEmpty(this._channels[0].curve), maskIfEmpty(this._channels[1].curve), maskIfEmpty(this._channels[2].curve), maskIfEmpty(this._channels[3].curve)); + } + }; + _createClass(VectorTrack, [{ + key: "componentsCount", + get: function get() { + return this._nComponents; + }, + set: function set(value) { + this._nComponents = value; + } + }]); + return VectorTrack; + }(Track), (_initializer$Q = applyDecoratedInitializer(_class2$W.prototype, "_channels", [serializable$9], null), _initializer2$I = applyDecoratedInitializer(_class2$W.prototype, "_nComponents", [serializable$9], function () { + return 4; + })), _class2$W)) || _class$12); + var Vec2TrackEval = function () { + function Vec2TrackEval(_x, _y) { + this._result = new Vec2(); + this._x = _x; + this._y = _y; + } + var _proto2 = Vec2TrackEval.prototype; + _proto2.evaluate = function evaluate(time, defaultValue) { + if (defaultValue) { + Vec2.copy(this._result, defaultValue); + } + if (this._x) { + this._result.x = this._x.evaluate(time); + } + if (this._y) { + this._result.y = this._y.evaluate(time); + } + return this._result; + }; + _createClass(Vec2TrackEval, [{ + key: "requiresDefault", + get: function get() { + return !this._x || !this._y; + } + }]); + return Vec2TrackEval; + }(); + var Vec3TrackEval = function () { + function Vec3TrackEval(_x, _y, _z) { + this._result = new Vec3(); + this._x = _x; + this._y = _y; + this._z = _z; + } + var _proto3 = Vec3TrackEval.prototype; + _proto3.evaluate = function evaluate(time, defaultValue) { + var _x = this._x, + _y = this._y, + _z = this._z, + _result = this._result; + if (defaultValue) { + Vec3.copy(_result, defaultValue); + } + if (_x) { + _result.x = _x.evaluate(time); + } + if (_y) { + _result.y = _y.evaluate(time); + } + if (_z) { + _result.z = _z.evaluate(time); + } + return _result; + }; + _createClass(Vec3TrackEval, [{ + key: "requiresDefault", + get: function get() { + return !this._x || !this._y || !this._z; + } + }]); + return Vec3TrackEval; + }(); + var Vec4TrackEval = function () { + function Vec4TrackEval(_x, _y, _z, _w) { + this._result = new Vec4(); + this._x = _x; + this._y = _y; + this._z = _z; + this._w = _w; + } + var _proto4 = Vec4TrackEval.prototype; + _proto4.evaluate = function evaluate(time, defaultValue) { + if (defaultValue) { + Vec4.copy(this._result, defaultValue); + } + if (this._x) { + this._result.x = this._x.evaluate(time); + } + if (this._y) { + this._result.y = this._y.evaluate(time); + } + if (this._z) { + this._result.z = this._z.evaluate(time); + } + if (this._w) { + this._result.w = this._w.evaluate(time); + } + return this._result; + }; + _createClass(Vec4TrackEval, [{ + key: "requiresDefault", + get: function get() { + return !this._x || !this._y || !this._z || !this._w; + } + }]); + return Vec4TrackEval; + }(); + + var _dec$11, _class$11; + var QuatTrack = (_dec$11 = ccclass$t(CLASS_NAME_PREFIX_ANIM + "QuatTrack"), _dec$11(_class$11 = function (_SingleChannelTrack) { + _inheritsLoose(QuatTrack, _SingleChannelTrack); + function QuatTrack() { + return _SingleChannelTrack.apply(this, arguments) || this; + } + var _proto = QuatTrack.prototype; + _proto.createCurve = function createCurve() { + return new QuatCurve(); + }; + _proto[createEvalSymbol] = function () { + return new QuatTrackEval(this.channels()[0].curve); + }; + return QuatTrack; + }(SingleChannelTrack)) || _class$11); + var QuatTrackEval = function () { + function QuatTrackEval(_curve) { + this._result = new Quat(); + this._curve = _curve; + } + var _proto2 = QuatTrackEval.prototype; + _proto2.evaluate = function evaluate(time) { + this._curve.evaluate(time, this._result); + return this._result; + }; + _createClass(QuatTrackEval, [{ + key: "requiresDefault", + get: function get() { + return false; + } + }]); + return QuatTrackEval; + }(); + + var _dec$10, _class$10, _class2$V, _initializer$P; + var CHANNEL_NAMES$1 = ['Red', 'Green', 'Blue', 'Alpha']; + var ColorTrack = (_dec$10 = ccclass$t(CLASS_NAME_PREFIX_ANIM + "ColorTrack"), _dec$10(_class$10 = (_class2$V = function (_Track) { + _inheritsLoose(ColorTrack, _Track); + function ColorTrack() { + var _this; + _this = _Track.call(this) || this; + _this._channels = _initializer$P && _initializer$P(); + _this._channels = new Array(4); + for (var i = 0; i < _this._channels.length; ++i) { + var channel = new Channel(new RealCurve()); + channel.name = CHANNEL_NAMES$1[i]; + _this._channels[i] = channel; + } + return _this; + } + var _proto = ColorTrack.prototype; + _proto.channels = function channels() { + return this._channels; + }; + _proto[createEvalSymbol] = function () { + return new ColorTrackEval(maskIfEmpty(this._channels[0].curve), maskIfEmpty(this._channels[1].curve), maskIfEmpty(this._channels[2].curve), maskIfEmpty(this._channels[3].curve)); + }; + return ColorTrack; + }(Track), (_initializer$P = applyDecoratedInitializer(_class2$V.prototype, "_channels", [serializable$9], null)), _class2$V)) || _class$10); + var ColorTrackEval = function () { + function ColorTrackEval(_x, _y, _z, _w) { + this._result = new Color$1(); + this._x = _x; + this._y = _y; + this._z = _z; + this._w = _w; + } + var _proto2 = ColorTrackEval.prototype; + _proto2.evaluate = function evaluate(time, defaultValue) { + if (defaultValue) { + Color$1.copy(this._result, defaultValue); + } + if (this._x) { + this._result.r = this._x.evaluate(time); + } + if (this._y) { + this._result.g = this._y.evaluate(time); + } + if (this._z) { + this._result.b = this._z.evaluate(time); + } + if (this._w) { + this._result.a = this._w.evaluate(time); + } + return this._result; + }; + _createClass(ColorTrackEval, [{ + key: "requiresDefault", + get: function get() { + return !this._x || !this._y || !this._z || !this._w; + } + }]); + return ColorTrackEval; + }(); + + var _dec$$, _class$$, _class2$U, _initializer$O; + var CHANNEL_NAMES = ['Width', 'Height']; + var SizeTrack = (_dec$$ = ccclass$t(CLASS_NAME_PREFIX_ANIM + "SizeTrack"), _dec$$(_class$$ = (_class2$U = function (_Track) { + _inheritsLoose(SizeTrack, _Track); + function SizeTrack() { + var _this; + _this = _Track.call(this) || this; + _this._channels = _initializer$O && _initializer$O(); + _this._channels = new Array(2); + for (var i = 0; i < _this._channels.length; ++i) { + var channel = new Channel(new RealCurve()); + channel.name = CHANNEL_NAMES[i]; + _this._channels[i] = channel; + } + return _this; + } + var _proto = SizeTrack.prototype; + _proto.channels = function channels() { + return this._channels; + }; + _proto[createEvalSymbol] = function () { + return new SizeTrackEval(maskIfEmpty(this._channels[0].curve), maskIfEmpty(this._channels[1].curve)); + }; + return SizeTrack; + }(Track), (_initializer$O = applyDecoratedInitializer(_class2$U.prototype, "_channels", [serializable$9], null)), _class2$U)) || _class$$); + var SizeTrackEval = function () { + function SizeTrackEval(_width, _height) { + this._result = new Size$1(); + this._width = _width; + this._height = _height; + } + var _proto2 = SizeTrackEval.prototype; + _proto2.evaluate = function evaluate(time, defaultValue) { + if (defaultValue) { + this._result.x = defaultValue.x; + this._result.y = defaultValue.y; + } + if (this._width) { + this._result.width = this._width.evaluate(time); + } + if (this._height) { + this._result.height = this._height.evaluate(time); + } + return this._result; + }; + _createClass(SizeTrackEval, [{ + key: "requiresDefault", + get: function get() { + return !this._width || !this._height; + } + }]); + return SizeTrackEval; + }(); + + var _dec$_, _class$_; + var ObjectTrack = (_dec$_ = ccclass$t(CLASS_NAME_PREFIX_ANIM + "ObjectTrack"), _dec$_(_class$_ = function (_SingleChannelTrack) { + _inheritsLoose(ObjectTrack, _SingleChannelTrack); + function ObjectTrack() { + return _SingleChannelTrack.apply(this, arguments) || this; + } + var _proto = ObjectTrack.prototype; + _proto.createCurve = function createCurve() { + return new ObjectCurve(); + }; + return ObjectTrack; + }(SingleChannelTrack)) || _class$_); + + var animation = /*#__PURE__*/Object.freeze({ + __proto__: null, + UniformProxyFactory: UniformProxyFactory, + MorphWeightValueProxy: MorphWeightValueProxy, + MorphWeightsValueProxy: MorphWeightsValueProxy, + MorphWeightsAllValueProxy: MorphWeightsAllValueProxy, + Track: Track, + TrackPath: TrackPath, + RealTrack: RealTrack, + VectorTrack: VectorTrack, + QuatTrack: QuatTrack, + ColorTrack: ColorTrack, + SizeTrack: SizeTrack, + ObjectTrack: ObjectTrack, + isPropertyPath: isPropertyPath, + isCustomPath: isCustomPath, + HierarchyPath: HierarchyPath, + ComponentPath: ComponentPath, + CubicSplineVec2Value: CubicSplineVec2Value, + CubicSplineVec3Value: CubicSplineVec3Value, + CubicSplineVec4Value: CubicSplineVec4Value, + CubicSplineQuatValue: CubicSplineQuatValue, + CubicSplineNumberValue: CubicSplineNumberValue + }); + exports('a3', animation); + + var RatioSampler = exports('a7', function () { + function RatioSampler(ratios) { + this.ratios = void 0; + this._findRatio = void 0; + this.ratios = ratios; + var currRatioDif; + var lastRatioDif; + var canOptimize = true; + var EPSILON = 1e-6; + for (var i = 1, l = ratios.length; i < l; i++) { + currRatioDif = ratios[i] - ratios[i - 1]; + if (i === 1) { + lastRatioDif = currRatioDif; + } else if (Math.abs(currRatioDif - lastRatioDif) > EPSILON) { + canOptimize = false; + break; + } + } + this._findRatio = canOptimize ? quickFindIndex : binarySearchEpsilon; + } + var _proto = RatioSampler.prototype; + _proto.sample = function sample(ratio) { + return this._findRatio(this.ratios, ratio); + }; + return RatioSampler; + }()); + legacyCC.RatioSampler = RatioSampler; + var AnimCurve = exports('a8', function () { + AnimCurve.Bezier = function Bezier(controlPoints) { + return controlPoints; + }; + function AnimCurve(propertyCurveData, duration) { + this.types = undefined; + this.type = null; + this._values = []; + this._lerp = undefined; + this._duration = void 0; + this._array = void 0; + this._duration = duration; + this._values = propertyCurveData.values; + var getCurveType = function getCurveType(easingMethod) { + if (typeof easingMethod === 'string') { + return easingMethod; + } else if (Array.isArray(easingMethod)) { + if (easingMethod[0] === easingMethod[1] && easingMethod[2] === easingMethod[3]) { + return AnimCurve.Linear; + } else { + return AnimCurve.Bezier(easingMethod); + } + } else { + return AnimCurve.Linear; + } + }; + if (propertyCurveData.easingMethod !== undefined) { + this.type = getCurveType(propertyCurveData.easingMethod); + } else if (Array.isArray(propertyCurveData.easingMethods)) { + this.types = propertyCurveData.easingMethods.map(getCurveType); + } else if (propertyCurveData.easingMethods !== undefined) { + this.types = new Array(this._values.length).fill(null); + for (var _i = 0, _Object$keys = Object.keys(propertyCurveData.easingMethods); _i < _Object$keys.length; _i++) { + var index = _Object$keys[_i]; + this.types[index] = getCurveType(propertyCurveData.easingMethods[index]); + } + } else { + this.type = null; + } + var firstValue = propertyCurveData.values[0]; + var interpolate = propertyCurveData.interpolate === undefined ? true : propertyCurveData.interpolate; + if (interpolate) { + this._lerp = selectLerpFx(firstValue); + } + if (propertyCurveData._arrayLength !== undefined) { + this._array = new Array(propertyCurveData._arrayLength); + } + } + var _proto2 = AnimCurve.prototype; + _proto2.hasLerp = function hasLerp() { + return !!this._lerp; + }; + _proto2.valueAt = function valueAt(index) { + if (this._array === undefined) { + var _value = this._values[index]; + if (_value && _value.getNoLerp) { + return _value.getNoLerp(); + } else { + return _value; + } + } else { + for (var i = 0; i < this._array.length; ++i) { + this._array[i] = this._values[this._array.length * index + i]; + } + return this._array; + } + }; + _proto2.valueBetween = function valueBetween(ratio, from, fromRatio, to, toRatio) { + if (this._lerp) { + var type = this.types ? this.types[from] : this.type; + var dRatio = toRatio - fromRatio; + var ratioBetweenFrames = (ratio - fromRatio) / dRatio; + if (type) { + ratioBetweenFrames = computeRatioByType(ratioBetweenFrames, type); + } + if (this._array === undefined) { + var fromVal = this._values[from]; + var toVal = this._values[to]; + var _value2 = this._lerp(fromVal, toVal, ratioBetweenFrames, dRatio * this._duration); + return _value2; + } else { + for (var i = 0; i < this._array.length; ++i) { + var _fromVal = this._values[this._array.length * from + i]; + var _toVal = this._values[this._array.length * to + i]; + this._array[i] = this._lerp(_fromVal, _toVal, ratioBetweenFrames, dRatio * this._duration); + } + return this._array; + } + } else if (this._array === undefined) { + return this.valueAt(from); + } else { + for (var _i2 = 0; _i2 < this._array.length; ++_i2) { + this._array[_i2] = this._values[this._array.length * from + _i2]; + } + return this._array; + } + }; + _proto2.empty = function empty() { + return this._values.length === 0; + }; + _proto2.constant = function constant() { + return this._values.length === 1; + }; + return AnimCurve; + }()); + AnimCurve.Linear = null; + legacyCC.AnimCurve = AnimCurve; + var EventInfo = exports('a9', function () { + function EventInfo() { + this.events = []; + } + var _proto3 = EventInfo.prototype; + _proto3.add = function add(func, params) { + this.events.push({ + func: func || '', + params: params || [] + }); + }; + return EventInfo; + }()); + function sampleAnimationCurve(curve, sampler, ratio) { + var index = sampler.sample(ratio); + if (index < 0) { + index = ~index; + if (index <= 0) { + index = 0; + } else if (index >= sampler.ratios.length) { + index = sampler.ratios.length - 1; + } else { + return curve.valueBetween(ratio, index - 1, sampler.ratios[index - 1], index, sampler.ratios[index]); + } + } + return curve.valueAt(index); + } + legacyCC.sampleAnimationCurve = sampleAnimationCurve; + function computeRatioByType(ratio, type) { + if (typeof type === 'string') { + var func = easing[type]; + if (func) { + ratio = func(ratio); + } else { + errorID(3906, type); + } + } else if (Array.isArray(type)) { + ratio = bezierByTime(type, ratio); + } + return ratio; + } + function quickFindIndex(ratios, ratio) { + var length = ratios.length - 1; + if (length === 0) { + return 0; + } + var start = ratios[0]; + if (ratio < start) { + return 0; + } + var end = ratios[length]; + if (ratio > end) { + return length; + } + ratio = (ratio - start) / (end - start); + var eachLength = 1 / length; + var index = ratio / eachLength; + var floorIndex = index | 0; + var EPSILON = 1e-6; + if (index - floorIndex < EPSILON) { + return floorIndex; + } else if (floorIndex + 1 - index < EPSILON) { + return floorIndex + 1; + } + return ~(floorIndex + 1); + } + var selectLerpFx = function () { + function makeValueTypeLerpFx(constructor) { + var tempValue = new constructor(); + return function (from, to, ratio) { + constructor.lerp(tempValue, from, to, ratio); + return tempValue; + }; + } + function callLerpable(from, to, t, dt) { + return from.lerp(to, t, dt); + } + function makeQuatSlerpFx() { + var tempValue = new Quat(); + return function (from, to, t, dt) { + return Quat.slerp(tempValue, from, to, t); + }; + } + return function (value) { + if (value === null) { + return undefined; + } + if (typeof value === 'number') { + return lerp; + } else if (typeof value === 'object' && value.constructor) { + if (value instanceof Quat) { + return makeQuatSlerpFx(); + } else if (value instanceof ValueType) { + return makeValueTypeLerpFx(value.constructor); + } else if (value.constructor === Number) { + return lerp; + } else if (isLerpable(value)) { + return callLerpable; + } + } + return undefined; + }; + }(); + + var BAKE_SKELETON_CURVE_SYMBOL = Symbol('BakeNodeCurves'); + + var SkelAnimDataHub = function () { + function SkelAnimDataHub() {} + SkelAnimDataHub.getOrExtract = function getOrExtract(clip) { + var data = SkelAnimDataHub.pool.get(clip); + if (!data || data.samples !== clip.sample) { + if (data) { + legacyCC.director.root.dataPoolManager.releaseAnimationClip(clip); + } + var frames = Math.ceil(clip.sample * clip.duration) + 1; + var step = clip.sample; + data = clip[BAKE_SKELETON_CURVE_SYMBOL](0, step, frames); + SkelAnimDataHub.pool.set(clip, data); + } + return data; + }; + SkelAnimDataHub.destroy = function destroy(clip) { + SkelAnimDataHub.pool["delete"](clip); + }; + return SkelAnimDataHub; + }(); + SkelAnimDataHub.pool = new Map(); + + var _dec$Z, _class$Z, _class2$T, _initializer$N, _dec2$N, _class4$6, _class5$7, _initializer2$H; + var UntypedTrackChannel = (_dec$Z = ccclass$t(CLASS_NAME_PREFIX_ANIM + "UntypedTrackChannel"), _dec$Z(_class$Z = (_class2$T = function (_Channel) { + _inheritsLoose(UntypedTrackChannel, _Channel); + function UntypedTrackChannel() { + var _this; + _this = _Channel.call(this, new RealCurve()) || this; + _this.property = _initializer$N && _initializer$N(); + return _this; + } + return UntypedTrackChannel; + }(Channel), (_initializer$N = applyDecoratedInitializer(_class2$T.prototype, "property", [serializable$9], function () { + return ''; + })), _class2$T)) || _class$Z); + var UntypedTrack = (_dec2$N = ccclass$t(CLASS_NAME_PREFIX_ANIM + "UntypedTrack"), _dec2$N(_class4$6 = (_class5$7 = function (_Track) { + _inheritsLoose(UntypedTrack, _Track); + function UntypedTrack() { + var _this2; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this2 = _Track.call.apply(_Track, [this].concat(args)) || this; + _this2._channels = _initializer2$H && _initializer2$H(); + return _this2; + } + var _proto = UntypedTrack.prototype; + _proto.channels = function channels() { + return this._channels; + }; + _proto[createEvalSymbol] = function () { + throw new Error("UntypedTrack should be handled specially. Please file an issue."); + }; + _proto.createLegacyEval = function createLegacyEval(hintValue) { + var _this3 = this; + var trySearchCurve = function trySearchCurve(property) { + var _this3$_channels$find; + return (_this3$_channels$find = _this3._channels.find(function (channel) { + return channel.property === property; + })) === null || _this3$_channels$find === void 0 ? void 0 : _this3$_channels$find.curve; + }; + switch (true) { + default: + throw new Error(getError(3931)); + case hintValue instanceof Vec2: + return new Vec2TrackEval(trySearchCurve('x'), trySearchCurve('y')); + case hintValue instanceof Vec3: + return new Vec3TrackEval(trySearchCurve('x'), trySearchCurve('y'), trySearchCurve('z')); + case hintValue instanceof Vec4: + return new Vec4TrackEval(trySearchCurve('x'), trySearchCurve('y'), trySearchCurve('z'), trySearchCurve('w')); + case hintValue instanceof Color$1: + return new ColorTrackEval(trySearchCurve('r'), trySearchCurve('g'), trySearchCurve('b'), trySearchCurve('a')); + case hintValue instanceof Size$1: + return new SizeTrackEval(trySearchCurve('width'), trySearchCurve('height')); + } + }; + _proto.addChannel = function addChannel(property) { + var channel = new UntypedTrackChannel(); + channel.property = property; + this._channels.push(channel); + return channel; + }; + _proto.upgrade = function upgrade(refine) { + var _this4 = this; + var trySearchChannel = function trySearchChannel(property, outChannel) { + var untypedChannel = _this4.channels().find(function (channel) { + return channel.property === property; + }); + if (untypedChannel) { + outChannel.name = untypedChannel.name; + outChannel.curve.assignSorted(Array.from(untypedChannel.curve.times()), Array.from(untypedChannel.curve.values())); + } + }; + var kind = refine(this.path, this.proxy); + switch (kind) { + default: + break; + case 'vec2': + case 'vec3': + case 'vec4': + { + var track = new VectorTrack(); + track.path = this.path; + track.proxy = this.proxy; + track.componentsCount = kind === 'vec2' ? 2 : kind === 'vec3' ? 3 : 4; + var _track$channels = track.channels(), + x = _track$channels[0], + y = _track$channels[1], + z = _track$channels[2], + w = _track$channels[3]; + switch (kind) { + case 'vec4': + trySearchChannel('w', w); + case 'vec3': + trySearchChannel('z', z); + default: + case 'vec2': + trySearchChannel('x', x); + trySearchChannel('y', y); + } + return track; + } + case 'color': + { + var _track = new ColorTrack(); + var _track$channels2 = _track.channels(), + r = _track$channels2[0], + g = _track$channels2[1], + b = _track$channels2[2], + a = _track$channels2[3]; + trySearchChannel('r', r); + trySearchChannel('g', g); + trySearchChannel('b', b); + trySearchChannel('a', a); + trySearchChannel('x', r); + trySearchChannel('y', g); + trySearchChannel('z', b); + trySearchChannel('w', a); + return _track; + } + case 'size': + break; + } + return null; + }; + return UntypedTrack; + }(Track), (_initializer2$H = applyDecoratedInitializer(_class5$7.prototype, "_channels", [serializable$9], function () { + return []; + })), _class5$7)) || _class4$6); + + var AnimationClipLegacyData = function () { + function AnimationClipLegacyData(duration) { + this._keys = []; + this._curves = []; + this._commonTargets = []; + this._ratioSamplers = []; + this._runtimeCurves = void 0; + this._data = null; + this._duration = void 0; + this._duration = duration; + } + var _proto = AnimationClipLegacyData.prototype; + _proto.getPropertyCurves = function getPropertyCurves() { + if (!this._runtimeCurves) { + this._createPropertyCurves(); + } + return this._runtimeCurves; + }; + _proto.toTracks = function toTracks() { + var newTracks = []; + var legacyKeys = this.keys, + legacyCurves = this.curves, + legacyCommonTargets = this.commonTargets; + var convertTrackPath = function convertTrackPath(track, modifiers, valueAdapter) { + var trackPath = new TrackPath(); + for (var _iterator = _createForOfIteratorHelperLoose(modifiers), _step; !(_step = _iterator()).done;) { + var modifier = _step.value; + if (typeof modifier === 'string') { + trackPath.toProperty(modifier); + } else if (typeof modifier === 'number') { + trackPath.toElement(modifier); + } else if (modifier instanceof HierarchyPath) { + trackPath.toHierarchy(modifier.path); + } else if (modifier instanceof ComponentPath) { + trackPath.toComponent(modifier.component); + } else { + trackPath.toCustomized(modifier); + } + } + track.path = trackPath; + track.proxy = valueAdapter; + }; + var untypedTracks = legacyCommonTargets.map(function (legacyCommonTarget) { + var track = new UntypedTrack(); + convertTrackPath(track, legacyCommonTarget.modifiers, legacyCommonTarget.valueAdapter); + newTracks.push(track); + return track; + }); + var _loop = function _loop() { + var _legacyCurveData$inte; + var legacyCurve = _step2.value; + var legacyCurveData = legacyCurve.data; + var legacyValues = legacyCurveData.values; + if (legacyValues.length === 0) { + return 0; + } + var legacyKeysIndex = legacyCurveData.keys; + var times = legacyKeysIndex < 0 ? [0.0] : legacyKeys[legacyCurveData.keys]; + var firstValue = legacyValues[0]; + var interpolate = (_legacyCurveData$inte = legacyCurveData.interpolate) !== null && _legacyCurveData$inte !== void 0 ? _legacyCurveData$inte : true; + assertIsTrue(typeof legacyCurveData._arrayLength !== 'number' || typeof firstValue === 'number'); + var legacyEasingMethodConverter = new LegacyEasingMethodConverter(legacyCurveData, times.length); + var installPathAndSetter = function installPathAndSetter(track) { + convertTrackPath(track, legacyCurve.modifiers, legacyCurve.valueAdapter); + }; + var legacyCommonTargetCurve; + if (typeof legacyCurve.commonTarget === 'number') { + if (!legacyValues.every(function (value) { + return typeof value === 'number'; + })) { + warnID(3932); + return 0; + } + if (legacyCurve.valueAdapter || legacyCurve.modifiers.length !== 1 || typeof legacyCurve.modifiers[0] !== 'string') { + warnID(3933); + return 0; + } + var _propertyName = legacyCurve.modifiers[0]; + var untypedTrack = untypedTracks[legacyCurve.commonTarget]; + var _untypedTrack$addChan = untypedTrack.addChannel(_propertyName), + curve = _untypedTrack$addChan.curve; + legacyCommonTargetCurve = curve; + } + var convertCurve = function convertCurve() { + if (typeof firstValue === 'number') { + if (!legacyValues.every(function (value) { + return typeof value === 'number'; + })) { + warnID(3934); + return; + } + var realCurve; + if (legacyCommonTargetCurve) { + realCurve = legacyCommonTargetCurve; + } else { + var track = new RealTrack(); + installPathAndSetter(track); + newTracks.push(track); + realCurve = track.channel.curve; + } + var interpolationMethod = interpolate ? RealInterpolationMode.LINEAR : RealInterpolationMode.CONSTANT; + realCurve.assignSorted(times, legacyValues.map(function (value) { + return { + value: value, + interpolationMode: interpolationMethod + }; + })); + legacyEasingMethodConverter.convert(realCurve); + return; + } else if (typeof firstValue === 'object') { + switch (true) { + default: + break; + case everyInstanceOf(legacyValues, Vec2): + case everyInstanceOf(legacyValues, Vec3): + case everyInstanceOf(legacyValues, Vec4): + { + var components = firstValue instanceof Vec2 ? 2 : firstValue instanceof Vec3 ? 3 : 4; + var _track = new VectorTrack(); + installPathAndSetter(_track); + _track.componentsCount = components; + var _track$channels = _track.channels(), + x = _track$channels[0].curve, + y = _track$channels[1].curve, + z = _track$channels[2].curve, + w = _track$channels[3].curve; + var interpolationMode = interpolate ? RealInterpolationMode.LINEAR : RealInterpolationMode.CONSTANT; + var valueToFrame = function valueToFrame(value) { + return { + value: value, + interpolationMode: interpolationMode + }; + }; + switch (components) { + case 4: + w.assignSorted(times, legacyValues.map(function (value) { + return valueToFrame(value.w); + })); + legacyEasingMethodConverter.convert(w); + case 3: + z.assignSorted(times, legacyValues.map(function (value) { + return valueToFrame(value.z); + })); + legacyEasingMethodConverter.convert(z); + default: + x.assignSorted(times, legacyValues.map(function (value) { + return valueToFrame(value.x); + })); + legacyEasingMethodConverter.convert(x); + y.assignSorted(times, legacyValues.map(function (value) { + return valueToFrame(value.y); + })); + legacyEasingMethodConverter.convert(y); + break; + } + newTracks.push(_track); + return; + } + case everyInstanceOf(legacyValues, Quat): + { + var _track2 = new QuatTrack(); + installPathAndSetter(_track2); + var _interpolationMode = interpolate ? QuatInterpolationMode.SLERP : QuatInterpolationMode.CONSTANT; + _track2.channel.curve.assignSorted(times, legacyValues.map(function (value) { + return { + value: Quat.clone(value), + interpolationMode: _interpolationMode + }; + })); + legacyEasingMethodConverter.convertQuatCurve(_track2.channel.curve); + newTracks.push(_track2); + return; + } + case everyInstanceOf(legacyValues, Color$1): + { + var _track3 = new ColorTrack(); + installPathAndSetter(_track3); + var _track3$channels = _track3.channels(), + r = _track3$channels[0].curve, + g = _track3$channels[1].curve, + b = _track3$channels[2].curve, + a = _track3$channels[3].curve; + var _interpolationMode2 = interpolate ? RealInterpolationMode.LINEAR : RealInterpolationMode.CONSTANT; + var _valueToFrame = function _valueToFrame(value) { + return { + value: value, + interpolationMode: _interpolationMode2 + }; + }; + r.assignSorted(times, legacyValues.map(function (value) { + return _valueToFrame(value.r); + })); + legacyEasingMethodConverter.convert(r); + g.assignSorted(times, legacyValues.map(function (value) { + return _valueToFrame(value.g); + })); + legacyEasingMethodConverter.convert(g); + b.assignSorted(times, legacyValues.map(function (value) { + return _valueToFrame(value.b); + })); + legacyEasingMethodConverter.convert(b); + a.assignSorted(times, legacyValues.map(function (value) { + return _valueToFrame(value.a); + })); + legacyEasingMethodConverter.convert(a); + newTracks.push(_track3); + return; + } + case everyInstanceOf(legacyValues, Size$1): + { + var _track4 = new SizeTrack(); + installPathAndSetter(_track4); + var _track4$channels = _track4.channels(), + width = _track4$channels[0].curve, + height = _track4$channels[1].curve; + var _interpolationMode3 = interpolate ? RealInterpolationMode.LINEAR : RealInterpolationMode.CONSTANT; + var _valueToFrame2 = function _valueToFrame2(value) { + return { + value: value, + interpolationMode: _interpolationMode3 + }; + }; + width.assignSorted(times, legacyValues.map(function (value) { + return _valueToFrame2(value.width); + })); + legacyEasingMethodConverter.convert(width); + height.assignSorted(times, legacyValues.map(function (value) { + return _valueToFrame2(value.height); + })); + legacyEasingMethodConverter.convert(height); + newTracks.push(_track4); + return; + } + case everyInstanceOf(legacyValues, CubicSplineNumberValue): + { + assertIsTrue(legacyEasingMethodConverter.nil); + var _track5 = new RealTrack(); + installPathAndSetter(_track5); + var _interpolationMode4 = interpolate ? RealInterpolationMode.CUBIC : RealInterpolationMode.CONSTANT; + _track5.channel.curve.assignSorted(times, legacyValues.map(function (value) { + return { + value: value.dataPoint, + leftTangent: value.inTangent, + rightTangent: value.outTangent, + interpolationMode: _interpolationMode4 + }; + })); + newTracks.push(_track5); + return; + } + case everyInstanceOf(legacyValues, CubicSplineVec2Value): + case everyInstanceOf(legacyValues, CubicSplineVec3Value): + case everyInstanceOf(legacyValues, CubicSplineVec4Value): + { + assertIsTrue(legacyEasingMethodConverter.nil); + var _components = firstValue instanceof CubicSplineVec2Value ? 2 : firstValue instanceof CubicSplineVec3Value ? 3 : 4; + var _track6 = new VectorTrack(); + installPathAndSetter(_track6); + _track6.componentsCount = _components; + var _track6$channels = _track6.channels(), + _x = _track6$channels[0], + _y = _track6$channels[1], + _z = _track6$channels[2], + _w = _track6$channels[3]; + var _interpolationMode5 = interpolate ? RealInterpolationMode.LINEAR : RealInterpolationMode.CONSTANT; + var _valueToFrame3 = function _valueToFrame3(value, inTangent, outTangent) { + return { + value: value, + leftTangent: inTangent, + rightTangent: outTangent, + interpolationMode: _interpolationMode5 + }; + }; + switch (_components) { + case 4: + _w.curve.assignSorted(times, legacyValues.map(function (value) { + return _valueToFrame3(value.dataPoint.w, value.inTangent.w, value.outTangent.w); + })); + case 3: + _z.curve.assignSorted(times, legacyValues.map(function (value) { + return _valueToFrame3(value.dataPoint.z, value.inTangent.z, value.outTangent.z); + })); + default: + _x.curve.assignSorted(times, legacyValues.map(function (value) { + return _valueToFrame3(value.dataPoint.y, value.inTangent.y, value.outTangent.y); + })); + _y.curve.assignSorted(times, legacyValues.map(function (value) { + return _valueToFrame3(value.dataPoint.x, value.inTangent.x, value.outTangent.x); + })); + break; + } + newTracks.push(_track6); + return; + } + case legacyValues.every(function (value) { + return value instanceof CubicSplineQuatValue; + }): + { + warnID(3935); + break; + } + } + } + var objectTrack = new ObjectTrack(); + installPathAndSetter(objectTrack); + objectTrack.channel.curve.assignSorted(times, legacyValues); + newTracks.push(objectTrack); + }; + convertCurve(); + }, + _ret; + for (var _iterator2 = _createForOfIteratorHelperLoose(legacyCurves), _step2; !(_step2 = _iterator2()).done;) { + _ret = _loop(); + if (_ret === 0) continue; + } + return newTracks; + }; + _proto._createPropertyCurves = function _createPropertyCurves() { + var _this = this; + this._ratioSamplers = this._keys.map(function (keys) { + return new RatioSampler(keys.map(function (key) { + return key / _this._duration; + })); + }); + this._runtimeCurves = this._curves.map(function (targetCurve) { + return { + curve: new AnimCurve(targetCurve.data, _this._duration), + modifiers: targetCurve.modifiers, + valueAdapter: targetCurve.valueAdapter, + sampler: _this._ratioSamplers[targetCurve.data.keys], + commonTarget: targetCurve.commonTarget + }; + }); + }; + _createClass(AnimationClipLegacyData, [{ + key: "keys", + get: function get() { + return this._keys; + }, + set: function set(value) { + this._keys = value; + } + }, { + key: "curves", + get: function get() { + return this._curves; + }, + set: function set(value) { + this._curves = value; + delete this._runtimeCurves; + } + }, { + key: "commonTargets", + get: function get() { + return this._commonTargets; + }, + set: function set(value) { + this._commonTargets = value; + } + }, { + key: "data", + get: function get() { + return this._data; + } + }]); + return AnimationClipLegacyData; + }(); + function everyInstanceOf(array, constructor) { + return array.every(function (element) { + return element instanceof constructor; + }); + } + var LegacyEasingMethodConverter = function () { + function LegacyEasingMethodConverter(legacyCurveData, keyframesCount) { + this._easingMethods = void 0; + var easingMethods = legacyCurveData.easingMethods; + if (Array.isArray(easingMethods)) { + if (easingMethods.length === 0 && keyframesCount !== 0) { + this._easingMethods = new Array(keyframesCount).fill(null); + } else { + this._easingMethods = easingMethods; + } + } else if (easingMethods === undefined) { + this._easingMethods = new Array(keyframesCount).fill(legacyCurveData.easingMethod); + } else { + this._easingMethods = Array.from({ + length: keyframesCount + }, function (_, index) { + var _easingMethods$index; + return (_easingMethods$index = easingMethods[index]) !== null && _easingMethods$index !== void 0 ? _easingMethods$index : null; + }); + } + } + var _proto2 = LegacyEasingMethodConverter.prototype; + _proto2.convert = function convert(curve) { + var easingMethods = this._easingMethods; + if (!easingMethods) { + return; + } + var nKeyframes = curve.keyFramesCount; + if (curve.keyFramesCount < 2) { + return; + } + if (Array.isArray(easingMethods)) { + assertIsTrue(nKeyframes === easingMethods.length); + } + var iLastKeyframe = nKeyframes - 1; + for (var iKeyframe = 0; iKeyframe < iLastKeyframe; ++iKeyframe) { + var easingMethod = easingMethods[iKeyframe]; + if (!easingMethod) { + continue; + } + if (Array.isArray(easingMethod)) { + timeBezierToTangents(easingMethod, curve.getKeyframeTime(iKeyframe), curve.getKeyframeValue(iKeyframe), curve.getKeyframeTime(iKeyframe + 1), curve.getKeyframeValue(iKeyframe + 1)); + } else { + applyLegacyEasingMethodName(easingMethod, curve, iKeyframe); + } + } + }; + _proto2.convertQuatCurve = function convertQuatCurve(curve) { + var easingMethods = this._easingMethods; + if (!easingMethods) { + return; + } + var nKeyframes = curve.keyFramesCount; + if (curve.keyFramesCount < 2) { + return; + } + if (Array.isArray(easingMethods)) { + assertIsTrue(nKeyframes === easingMethods.length); + } + var iLastKeyframe = nKeyframes - 1; + for (var iKeyframe = 0; iKeyframe < iLastKeyframe; ++iKeyframe) { + var easingMethod = easingMethods[iKeyframe]; + if (!easingMethod) { + continue; + } + if (Array.isArray(easingMethod)) { + curve.getKeyframeValue(iKeyframe).easingMethod = easingMethod.slice(); + } else { + applyLegacyEasingMethodNameIntoQuatCurve(easingMethod, curve, iKeyframe); + } + } + }; + _createClass(LegacyEasingMethodConverter, [{ + key: "nil", + get: function get() { + return !this._easingMethods || this._easingMethods.every(function (easingMethod) { + return easingMethod === null || easingMethod === undefined; + }); + } + }]); + return LegacyEasingMethodConverter; + }(); + function applyLegacyEasingMethodName(easingMethodName, curve, keyframeIndex) { + assertIsTrue(keyframeIndex !== curve.keyFramesCount - 1); + assertIsTrue(easingMethodName in easingMethodNameMap); + var keyframeValue = curve.getKeyframeValue(keyframeIndex); + var easingMethod = easingMethodNameMap[easingMethodName]; + if (easingMethod === EasingMethod.CONSTANT) { + keyframeValue.interpolationMode = RealInterpolationMode.CONSTANT; + } else { + keyframeValue.interpolationMode = RealInterpolationMode.LINEAR; + keyframeValue.easingMethod = easingMethod; + } + } + function applyLegacyEasingMethodNameIntoQuatCurve(easingMethodName, curve, keyframeIndex) { + assertIsTrue(keyframeIndex !== curve.keyFramesCount - 1); + assertIsTrue(easingMethodName in easingMethodNameMap); + var keyframeValue = curve.getKeyframeValue(keyframeIndex); + var easingMethod = easingMethodNameMap[easingMethodName]; + keyframeValue.easingMethod = easingMethod; + } + var easingMethodNameMap = { + constant: EasingMethod.CONSTANT, + linear: EasingMethod.LINEAR, + quadIn: EasingMethod.QUAD_IN, + quadOut: EasingMethod.QUAD_OUT, + quadInOut: EasingMethod.QUAD_IN_OUT, + quadOutIn: EasingMethod.QUAD_OUT_IN, + cubicIn: EasingMethod.CUBIC_IN, + cubicOut: EasingMethod.CUBIC_OUT, + cubicInOut: EasingMethod.CUBIC_IN_OUT, + cubicOutIn: EasingMethod.CUBIC_OUT_IN, + quartIn: EasingMethod.QUART_IN, + quartOut: EasingMethod.QUART_OUT, + quartInOut: EasingMethod.QUART_IN_OUT, + quartOutIn: EasingMethod.QUART_OUT_IN, + quintIn: EasingMethod.QUINT_IN, + quintOut: EasingMethod.QUINT_OUT, + quintInOut: EasingMethod.QUINT_IN_OUT, + quintOutIn: EasingMethod.QUINT_OUT_IN, + sineIn: EasingMethod.SINE_IN, + sineOut: EasingMethod.SINE_OUT, + sineInOut: EasingMethod.SINE_IN_OUT, + sineOutIn: EasingMethod.SINE_OUT_IN, + expoIn: EasingMethod.EXPO_IN, + expoOut: EasingMethod.EXPO_OUT, + expoInOut: EasingMethod.EXPO_IN_OUT, + expoOutIn: EasingMethod.EXPO_OUT_IN, + circIn: EasingMethod.CIRC_IN, + circOut: EasingMethod.CIRC_OUT, + circInOut: EasingMethod.CIRC_IN_OUT, + circOutIn: EasingMethod.CIRC_OUT_IN, + elasticIn: EasingMethod.ELASTIC_IN, + elasticOut: EasingMethod.ELASTIC_OUT, + elasticInOut: EasingMethod.ELASTIC_IN_OUT, + elasticOutIn: EasingMethod.ELASTIC_OUT_IN, + backIn: EasingMethod.BACK_IN, + backOut: EasingMethod.BACK_OUT, + backInOut: EasingMethod.BACK_IN_OUT, + backOutIn: EasingMethod.BACK_OUT_IN, + bounceIn: EasingMethod.BOUNCE_IN, + bounceOut: EasingMethod.BOUNCE_OUT, + bounceInOut: EasingMethod.BOUNCE_IN_OUT, + bounceOutIn: EasingMethod.BOUNCE_OUT_IN, + smooth: EasingMethod.SMOOTH, + fade: EasingMethod.FADE + }; + function timeBezierToTangents(timeBezierPoints, previousTime, previousKeyframe, nextTime, nextKeyframe) { + var p1X = timeBezierPoints[0], + p1Y = timeBezierPoints[1], + p2X = timeBezierPoints[2], + p2Y = timeBezierPoints[3]; + var previousValue = previousKeyframe.value; + var nextValue = nextKeyframe.value; + var dValue = nextValue - previousValue; + var dTime = nextTime - previousTime; + var fx = 3 * dTime; + var fy = 3 * dValue; + var t1x = p1X * fx; + var t1y = p1Y * fy; + var t2x = (1.0 - p2X) * fx; + var t2y = (1.0 - p2Y) * fy; + var ONE_THIRD = 1.0 / 3.0; + var previousTangent = t1y / t1x; + var previousTangentWeight = Math.sqrt(t1x * t1x + t1y * t1y) * ONE_THIRD; + var nextTangent = t2y / t2x; + var nextTangentWeight = Math.sqrt(t2x * t2x + t2y * t2y) * ONE_THIRD; + previousKeyframe.interpolationMode = RealInterpolationMode.CUBIC; + previousKeyframe.tangentWeightMode = ensureRightTangentWeightMode(previousKeyframe.tangentWeightMode); + previousKeyframe.rightTangent = previousTangent; + previousKeyframe.rightTangentWeight = previousTangentWeight; + nextKeyframe.tangentWeightMode = ensureLeftTangentWeightMode(nextKeyframe.tangentWeightMode); + nextKeyframe.leftTangent = nextTangent; + nextKeyframe.leftTangentWeight = nextTangentWeight; + } + function ensureLeftTangentWeightMode(tangentWeightMode) { + if (tangentWeightMode === TangentWeightMode.NONE) { + return TangentWeightMode.LEFT; + } else if (tangentWeightMode === TangentWeightMode.RIGHT) { + return TangentWeightMode.BOTH; + } else { + return tangentWeightMode; + } + } + function ensureRightTangentWeightMode(tangentWeightMode) { + if (tangentWeightMode === TangentWeightMode.NONE) { + return TangentWeightMode.RIGHT; + } else if (tangentWeightMode === TangentWeightMode.LEFT) { + return TangentWeightMode.BOTH; + } else { + return tangentWeightMode; + } + } + + var _dec$Y, _class$Y, _class2$S, _initializer$M, _dec2$M, _class4$5, _class5$6, _initializer2$G, _initializer3$y, _initializer4$u, _initializer5$o, _dec3$D, _class7, _class8, _initializer6$k, _initializer7$g, _dec4$s, _class10, _dec5$r, _class11, _dec6$j, _class12, _class13, _initializer8$f, _initializer9$d, _dec7$g, _class20, _class21, _initializer10$d, _initializer11$d, _initializer12$c, _initializer13$9; + var ccclass$o = ccclass$t, + serializable$5 = serializable$9; + function throwIfSplitMethodIsNotValid() { + throw new Error("split() only valid in Editor."); + } + (_dec$Y = ccclass$o(CLASS_NAME_PREFIX_ANIM + "ExoticAnimation"), _dec$Y(_class$Y = (_class2$S = function () { + function ExoticAnimation() { + this._nodeAnimations = _initializer$M && _initializer$M(); + } + var _proto = ExoticAnimation.prototype; + _proto.createEvaluator = function createEvaluator(binder) { + return new ExoticTrsAnimationEvaluator(this._nodeAnimations, binder); + }; + _proto.createEvaluatorForAnimationGraph = function createEvaluatorForAnimationGraph(context) { + return new ExoticTrsAGEvaluation(this._nodeAnimations, context); + }; + _proto.addNodeAnimation = function addNodeAnimation(path) { + var nodeAnimation = new ExoticNodeAnimation(path); + this._nodeAnimations.push(nodeAnimation); + return nodeAnimation; + }; + _proto.collectAnimatedJoints = function collectAnimatedJoints() { + return Array.from(new Set(this._nodeAnimations.map(function (_ref) { + var path = _ref.path; + return path; + }))); + }; + _proto.split = function split(from, to) { + { + return throwIfSplitMethodIsNotValid(); + } + }; + _proto.toHashString = function toHashString() { + return this._nodeAnimations.map(function (nodeAnimation) { + return nodeAnimation.toHashString(); + }).join('\n'); + }; + return ExoticAnimation; + }(), (_initializer$M = applyDecoratedInitializer(_class2$S.prototype, "_nodeAnimations", [serializable$5], function () { + return []; + })), _class2$S)) || _class$Y); + var ExoticNodeAnimation = (_dec2$M = ccclass$o(CLASS_NAME_PREFIX_ANIM + "ExoticNodeAnimation"), _dec2$M(_class4$5 = (_class5$6 = function () { + function ExoticNodeAnimation(path) { + this._path = _initializer2$G && _initializer2$G(); + this._position = _initializer3$y && _initializer3$y(); + this._rotation = _initializer4$u && _initializer4$u(); + this._scale = _initializer5$o && _initializer5$o(); + this._path = path; + } + var _proto2 = ExoticNodeAnimation.prototype; + _proto2.createPosition = function createPosition(times, values) { + this._position = new ExoticTrack(times, new ExoticVec3TrackValues(values)); + }; + _proto2.createRotation = function createRotation(times, values) { + this._rotation = new ExoticTrack(times, new ExoticQuatTrackValues(values)); + }; + _proto2.createScale = function createScale(times, values) { + this._scale = new ExoticTrack(times, new ExoticVec3TrackValues(values)); + }; + _proto2.createEvaluator = function createEvaluator(binder) { + return new ExoticNodeAnimationEvaluator(this._path, this._position, this._rotation, this._scale, binder); + }; + _proto2.createEvaluatorForAnimationGraph = function createEvaluatorForAnimationGraph(context) { + var transformHandle = context.bindTransform(this._path); + if (!transformHandle) { + return null; + } + return new ExoticNodeAnimationAGEvaluation(transformHandle, this._position, this._rotation, this._scale); + }; + _proto2.split = function split(from, to, splitInfoCache) { + { + return throwIfSplitMethodIsNotValid(); + } + }; + _proto2.toHashString = function toHashString() { + var _this$_position$toHas, _this$_position, _this$_scale$toHashSt, _this$_scale, _this$_rotation$toHas, _this$_rotation; + return this._path + "\n" + ((_this$_position$toHas = (_this$_position = this._position) === null || _this$_position === void 0 ? void 0 : _this$_position.toHashString()) !== null && _this$_position$toHas !== void 0 ? _this$_position$toHas : '') + ((_this$_scale$toHashSt = (_this$_scale = this._scale) === null || _this$_scale === void 0 ? void 0 : _this$_scale.toHashString()) !== null && _this$_scale$toHashSt !== void 0 ? _this$_scale$toHashSt : '') + ((_this$_rotation$toHas = (_this$_rotation = this._rotation) === null || _this$_rotation === void 0 ? void 0 : _this$_rotation.toHashString()) !== null && _this$_rotation$toHas !== void 0 ? _this$_rotation$toHas : ''); + }; + _createClass(ExoticNodeAnimation, [{ + key: "path", + get: function get() { + return this._path; + } + }]); + return ExoticNodeAnimation; + }(), (_initializer2$G = applyDecoratedInitializer(_class5$6.prototype, "_path", [serializable$5], function () { + return ''; + }), _initializer3$y = applyDecoratedInitializer(_class5$6.prototype, "_position", [serializable$5], function () { + return null; + }), _initializer4$u = applyDecoratedInitializer(_class5$6.prototype, "_rotation", [serializable$5], function () { + return null; + }), _initializer5$o = applyDecoratedInitializer(_class5$6.prototype, "_scale", [serializable$5], function () { + return null; + })), _class5$6)) || _class4$5); + function floatToHashString(value) { + return value.toPrecision(2); + } + function floatArrayToHashString(values) { + return values.map(function (v) { + return Number.parseFloat(floatToHashString(v)); + }).join(' '); + } + var ExoticVectorLikeTrackValues = (_dec3$D = ccclass$o(CLASS_NAME_PREFIX_ANIM + "ExoticVectorLikeTrackValues"), _dec3$D(_class7 = (_class8 = function () { + function ExoticVectorLikeTrackValues(values) { + this._values = _initializer6$k && _initializer6$k(); + this._isQuantized = _initializer7$g && _initializer7$g(); + this._values = values; + } + var _proto3 = ExoticVectorLikeTrackValues.prototype; + _proto3.quantize = function quantize(type) { + assertIsTrue(!this._isQuantized); + this._values = _quantize(this._values, type); + this._isQuantized = true; + }; + _proto3.toHashString = function toHashString() { + var isQuantized = this._isQuantized, + values = this._values; + return isQuantized + " " + (isQuantized ? values.toHashString() : floatArrayToHashString(values)); + }; + _createClass(ExoticVectorLikeTrackValues, [{ + key: "precision", + get: function get() { + return this._isQuantized ? this._values.originalPrecision : getFloatArrayPrecision(this._values); + } + }]); + return ExoticVectorLikeTrackValues; + }(), (_initializer6$k = applyDecoratedInitializer(_class8.prototype, "_values", [serializable$5], null), _initializer7$g = applyDecoratedInitializer(_class8.prototype, "_isQuantized", [serializable$5], function () { + return false; + })), _class8)) || _class7); + var ExoticVec3TrackValues = (_dec4$s = ccclass$o(CLASS_NAME_PREFIX_ANIM + "ExoticVec3TrackValues"), _dec4$s(_class10 = function (_ExoticVectorLikeTrac) { + _inheritsLoose(ExoticVec3TrackValues, _ExoticVectorLikeTrac); + function ExoticVec3TrackValues() { + return _ExoticVectorLikeTrac.apply(this, arguments) || this; + } + ExoticVec3TrackValues.imitate = function imitate(values, model) { + var trackValues = new ExoticVec3TrackValues(values); + if (model._isQuantized) { + trackValues.quantize(model._values.quantizationType); + } + return trackValues; + }; + var _proto4 = ExoticVec3TrackValues.prototype; + _proto4.get = function get(index, resultValue) { + var values = this._values, + isQuantized = this._isQuantized; + if (isQuantized) { + loadVec3FromQuantized(values, index, resultValue); + } else { + Vec3.fromArray(resultValue, values, index * 3); + } + }; + _proto4.lerp = function lerp(prevIndex, nextIndex, ratio, prevValue, nextValue, resultValue) { + var values = this._values, + isQuantized = this._isQuantized; + if (isQuantized) { + loadVec3FromQuantized(values, prevIndex, prevValue); + loadVec3FromQuantized(values, nextIndex, nextValue); + } else { + Vec3.fromArray(prevValue, values, prevIndex * 3); + Vec3.fromArray(nextValue, values, nextIndex * 3); + } + Vec3.lerp(resultValue, prevValue, nextValue, ratio); + }; + return ExoticVec3TrackValues; + }(ExoticVectorLikeTrackValues)) || _class10); + var ExoticQuatTrackValues = (_dec5$r = ccclass$o(CLASS_NAME_PREFIX_ANIM + "ExoticQuatTrackValues"), _dec5$r(_class11 = function (_ExoticVectorLikeTrac2) { + _inheritsLoose(ExoticQuatTrackValues, _ExoticVectorLikeTrac2); + function ExoticQuatTrackValues() { + return _ExoticVectorLikeTrac2.apply(this, arguments) || this; + } + ExoticQuatTrackValues.imitate = function imitate(values, model) { + var trackValues = new ExoticQuatTrackValues(values); + if (model._isQuantized) { + trackValues.quantize(model._values.quantizationType); + } + return trackValues; + }; + var _proto5 = ExoticQuatTrackValues.prototype; + _proto5.get = function get(index, resultValue) { + var values = this._values, + isQuantized = this._isQuantized; + if (isQuantized) { + loadQuatFromQuantized(values, index, resultValue); + } else { + Quat.fromArray(resultValue, values, index * 4); + } + }; + _proto5.lerp = function lerp(prevIndex, nextIndex, ratio, prevValue, nextValue, resultValue) { + var values = this._values, + isQuantized = this._isQuantized; + if (isQuantized) { + loadQuatFromQuantized(values, prevIndex, prevValue); + loadQuatFromQuantized(values, nextIndex, nextValue); + } else { + Quat.fromArray(prevValue, values, prevIndex * 4); + Quat.fromArray(nextValue, values, nextIndex * 4); + } + Quat.slerp(resultValue, prevValue, nextValue, ratio); + }; + return ExoticQuatTrackValues; + }(ExoticVectorLikeTrackValues)) || _class11); + var ExoticTrack = (_dec6$j = ccclass$o(CLASS_NAME_PREFIX_ANIM + "ExoticTrack"), _dec6$j(_class12 = (_class13 = function () { + function ExoticTrack(times, values) { + this.times = _initializer8$f && _initializer8$f(); + this.values = _initializer9$d && _initializer9$d(); + this.times = times; + this.values = values; + } + var _proto6 = ExoticTrack.prototype; + _proto6.toHashString = function toHashString() { + var times = this.times, + values = this.values; + return "times: " + floatArrayToHashString(times) + "; values: " + values.toHashString(); + }; + return ExoticTrack; + }(), (_initializer8$f = applyDecoratedInitializer(_class13.prototype, "times", [serializable$5], null), _initializer9$d = applyDecoratedInitializer(_class13.prototype, "values", [serializable$5], null)), _class13)) || _class12); + (function () { + function SplitInfo() { + this._reset(); + } + var _proto7 = SplitInfo.prototype; + _proto7.calculate = function calculate(times, from, to) { + this._reset(); + if (from > to) { + return; + } + var nKeyframes = times.length; + if (!nKeyframes) { + return; + } + var firstTime = times[0]; + var lastTime = times[nKeyframes - 1]; + var fromIndex = 0; + var fromRatio = 0.0; + if (from < firstTime) ; else if (from >= lastTime) { + fromIndex = nKeyframes - 1; + fromRatio = 0.0; + } else { + var _binarySearchRatio = binarySearchRatio(times, from); + fromIndex = _binarySearchRatio.index; + fromRatio = _binarySearchRatio.ratio; + } + var toIndex = 0; + var toRatio = 0.0; + if (to < firstTime) ; else if (to >= lastTime) { + toIndex = nKeyframes - 1; + toRatio = 0.0; + } else { + var _binarySearchRatio2 = binarySearchRatio(times, to); + toIndex = _binarySearchRatio2.index; + toRatio = _binarySearchRatio2.ratio; + } + assertIsTrue(toIndex >= fromIndex); + var fromJust = !fromRatio; + var toJust = !toRatio; + if (fromIndex === toIndex && fromRatio === toRatio) { + if (!fromJust) { + this.preLerpIndex = fromIndex; + this.preLerpRatio = fromRatio; + } else { + this.directKeyframesBegin = fromIndex; + this.directKeyframesEnd = fromIndex + 1; + } + return; + } + if (!fromJust) { + this.preLerpIndex = fromIndex; + this.preLerpRatio = fromRatio; + } + this.directKeyframesBegin = fromJust ? fromIndex : fromIndex + 1; + this.directKeyframesEnd = toIndex + 1; + if (!toJust) { + this.postLerpIndex = toIndex; + this.postLerpRatio = toRatio; + } + }; + _proto7._reset = function _reset() { + this.preLerpIndex = -1; + this.preLerpRatio = 0.0; + this.directKeyframesBegin = 0; + this.directKeyframesEnd = 0; + this.postLerpIndex = -1; + this.postLerpRatio = 0.0; + }; + _createClass(SplitInfo, [{ + key: "keyframesCount", + get: function get() { + var preLerpIndex = this.preLerpIndex, + directKeyframesBegin = this.directKeyframesBegin, + directKeyframesEnd = this.directKeyframesEnd, + postLerpIndex = this.postLerpIndex; + return 0 + (preLerpIndex < 0 ? 0 : 1) + (directKeyframesEnd - directKeyframesBegin) + (postLerpIndex < 0 ? 0 : 1); + } + }]); + return SplitInfo; + })(); + function binarySearchRatio(values, value) { + var nValues = values.length; + assertIsTrue(values.length !== 0); + var resultIndex = 0; + var resultRatio = 0.0; + var index0 = binarySearchEpsilon(values, value); + if (index0 >= 0) { + resultIndex = index0; + } else { + var iNext = ~index0; + assertIsTrue(iNext !== 0 && iNext !== nValues && nValues > 1); + var iPrev = iNext - 1; + resultIndex = iPrev; + var next = values[iNext]; + var prev = values[iPrev]; + resultRatio = (value - prev) / (next - prev); + } + return { + index: resultIndex, + ratio: resultRatio + }; + } + var ExoticTrsAnimationEvaluator = function () { + function ExoticTrsAnimationEvaluator(nodeAnimations, binder) { + this._nodeEvaluations = void 0; + this._nodeEvaluations = nodeAnimations.map(function (nodeAnimation) { + return nodeAnimation.createEvaluator(binder); + }); + } + var _proto8 = ExoticTrsAnimationEvaluator.prototype; + _proto8.evaluate = function evaluate(time) { + this._nodeEvaluations.forEach(function (nodeEvaluator) { + nodeEvaluator.evaluate(time); + }); + }; + return ExoticTrsAnimationEvaluator; + }(); + var ExoticNodeAnimationEvaluator = function () { + function ExoticNodeAnimationEvaluator(path, position, rotation, scale, binder) { + this._position = null; + this._rotation = null; + this._scale = null; + if (position) { + this._position = createExoticTrackEvaluationRecord(position.times, position.values, Vec3, path, 'position', binder); + } + if (rotation) { + this._rotation = createExoticTrackEvaluationRecord(rotation.times, rotation.values, Quat, path, 'rotation', binder); + } + if (scale) { + this._scale = createExoticTrackEvaluationRecord(scale.times, scale.values, Vec3, path, 'scale', binder); + } + } + var _proto9 = ExoticNodeAnimationEvaluator.prototype; + _proto9.evaluate = function evaluate(time) { + if (this._position) { + var _value = this._position.evaluator.evaluate(time); + this._position.runtimeBinding.setValue(_value); + } + if (this._rotation) { + var _value2 = this._rotation.evaluator.evaluate(time); + this._rotation.runtimeBinding.setValue(_value2); + } + if (this._scale) { + var _value3 = this._scale.evaluator.evaluate(time); + this._scale.runtimeBinding.setValue(_value3); + } + }; + return ExoticNodeAnimationEvaluator; + }(); + var ExoticTrackEvaluator = function () { + function ExoticTrackEvaluator(times, values, ValueConstructor) { + this._times = void 0; + this._inputSampleResultCache = { + just: false, + index: -1, + nextIndex: -1, + ratio: 0.0 + }; + this._values = void 0; + this._prevValue = void 0; + this._nextValue = void 0; + this._resultValue = void 0; + this._times = times; + this._values = values; + this._prevValue = new ValueConstructor(); + this._nextValue = new ValueConstructor(); + this._resultValue = new ValueConstructor(); + } + var _proto10 = ExoticTrackEvaluator.prototype; + _proto10.evaluate = function evaluate(time) { + var times = this._times, + values = this._values, + resultValue = this._resultValue; + var nFrames = times.length; + if (nFrames === 0) { + return resultValue; + } + var inputSampleResult = sampleInput(times, time, this._inputSampleResultCache); + if (inputSampleResult.just) { + values.get(inputSampleResult.index, resultValue); + } else { + values.lerp(inputSampleResult.index, inputSampleResult.nextIndex, inputSampleResult.ratio, this._prevValue, this._nextValue, resultValue); + } + return resultValue; + }; + return ExoticTrackEvaluator; + }(); + var ExoticTrsAGEvaluation = function () { + function ExoticTrsAGEvaluation(nodeAnimations, context) { + this._nodeEvaluations = void 0; + this._nodeEvaluations = nodeAnimations.map(function (nodeAnimation) { + return nodeAnimation.createEvaluatorForAnimationGraph(context); + }).filter(function (x) { + return !!x; + }); + } + var _proto11 = ExoticTrsAGEvaluation.prototype; + _proto11.destroy = function destroy() { + var nodeEvaluations = this._nodeEvaluations; + var nNodeEvaluations = nodeEvaluations.length; + for (var iNodeEvaluation = 0; iNodeEvaluation < nNodeEvaluations; ++iNodeEvaluation) { + nodeEvaluations[iNodeEvaluation].destroy(); + } + }; + _proto11.evaluate = function evaluate(time, pose) { + var nodeEvaluations = this._nodeEvaluations; + var nNodeEvaluations = nodeEvaluations.length; + for (var iNodeEvaluation = 0; iNodeEvaluation < nNodeEvaluations; ++iNodeEvaluation) { + nodeEvaluations[iNodeEvaluation].evaluate(time, pose); + } + }; + return ExoticTrsAGEvaluation; + }(); + var ExoticNodeAnimationAGEvaluation = function () { + function ExoticNodeAnimationAGEvaluation(transformHandle, position, rotation, scale) { + this._position = null; + this._rotation = null; + this._scale = null; + this._transformHandle = void 0; + this._transformHandle = transformHandle; + if (position) { + this._position = new ExoticTrackEvaluator(position.times, position.values, Vec3); + } + if (rotation) { + this._rotation = new ExoticTrackEvaluator(rotation.times, rotation.values, Quat); + } + if (scale) { + this._scale = new ExoticTrackEvaluator(scale.times, scale.values, Vec3); + } + } + var _proto12 = ExoticNodeAnimationAGEvaluation.prototype; + _proto12.destroy = function destroy() { + this._transformHandle.destroy(); + }; + _proto12.evaluate = function evaluate(time, pose) { + var transformIndex = this._transformHandle.index, + position = this._position, + rotation = this._rotation, + scale = this._scale; + var poseTransforms = pose.transforms; + if (position) { + var _value4 = position.evaluate(time); + poseTransforms.setPosition(transformIndex, _value4); + } + if (rotation) { + var rotationAbs = rotation.evaluate(time); + poseTransforms.setRotation(transformIndex, rotationAbs); + } + if (scale) { + var _value5 = scale.evaluate(time); + poseTransforms.setScale(transformIndex, _value5); + } + }; + return ExoticNodeAnimationAGEvaluation; + }(); + function sampleInput(values, time, result) { + var nFrames = values.length; + assertIsTrue(nFrames !== 0); + var firstTime = values[0]; + var lastTime = values[nFrames - 1]; + if (time < firstTime) { + result.just = true; + result.index = 0; + } else if (time > lastTime) { + result.just = true; + result.index = nFrames - 1; + } else { + var _index2 = binarySearchEpsilon(values, time); + if (_index2 >= 0) { + result.just = true; + result.index = _index2; + } else { + var _nextIndex = ~_index2; + assertIsTrue(_nextIndex !== 0 && _nextIndex !== nFrames && nFrames > 1); + var _prevIndex = _nextIndex - 1; + var prevTime = values[_prevIndex]; + var nextTime = values[_nextIndex]; + var _ratio = (time - values[_prevIndex]) / (nextTime - prevTime); + result.just = false; + result.index = _prevIndex; + result.nextIndex = _nextIndex; + result.ratio = _ratio; + } + } + return result; + } + var QUANTIZATION_TYPE_TO_ARRAY_VIEW_CONSTRUCTOR_MAP = { + uint8: Uint8Array, + uint16: Uint16Array + }; + var FloatPrecision; + (function (FloatPrecision) { + FloatPrecision[FloatPrecision["FLOAT_32"] = 0] = "FLOAT_32"; + FloatPrecision[FloatPrecision["FLOAT_64"] = 1] = "FLOAT_64"; + })(FloatPrecision || (FloatPrecision = {})); + function getFloatArrayPrecision(array) { + switch (array.BYTES_PER_ELEMENT) { + default: + assertIsTrue(false); + case 4: + return FloatPrecision.FLOAT_32; + case 8: + return FloatPrecision.FLOAT_64; + } + } + var QuantizedFloatArray = (_dec7$g = ccclass$o(CLASS_NAME_PREFIX_ANIM + "QuantizedFloatArray"), _dec7$g(_class20 = (_class21 = function () { + function QuantizedFloatArray(originalPrecision, values, extent, min) { + if (min === void 0) { + min = 0.0; + } + this.originalPrecision = _initializer10$d && _initializer10$d(); + this.min = _initializer11$d && _initializer11$d(); + this.extent = _initializer12$c && _initializer12$c(); + this.values = _initializer13$9 && _initializer13$9(); + this.originalPrecision = originalPrecision; + this.values = values; + this.extent = extent; + this.min = min; + } + var _proto13 = QuantizedFloatArray.prototype; + _proto13.toHashString = function toHashString() { + var originalPrecision = this.originalPrecision, + min = this.min, + extent = this.extent, + values = this.values; + return originalPrecision + " " + floatToHashString(min) + " " + floatToHashString(extent) + " " + values.join(' '); + }; + _createClass(QuantizedFloatArray, [{ + key: "quantizationType", + get: function get() { + switch (this.values.BYTES_PER_ELEMENT) { + default: + case 1: + return 'uint8'; + case 2: + return 'uint16'; + } + } + }]); + return QuantizedFloatArray; + }(), (_initializer10$d = applyDecoratedInitializer(_class21.prototype, "originalPrecision", [serializable$5], null), _initializer11$d = applyDecoratedInitializer(_class21.prototype, "min", [serializable$5], null), _initializer12$c = applyDecoratedInitializer(_class21.prototype, "extent", [serializable$5], null), _initializer13$9 = applyDecoratedInitializer(_class21.prototype, "values", [serializable$5], null)), _class21)) || _class20); + function _quantize(values, type) { + var TypedArrayViewConstructor = QUANTIZATION_TYPE_TO_ARRAY_VIEW_CONSTRUCTOR_MAP[type]; + var MAX = 1 << TypedArrayViewConstructor.BYTES_PER_ELEMENT; + var min = Number.POSITIVE_INFINITY; + var max = Number.NEGATIVE_INFINITY; + values.forEach(function (value) { + min = Math.min(value, min); + max = Math.max(value, max); + }); + var extent = max - min; + var normalized = TypedArrayViewConstructor.from(values, function (value) { + return (value - min) / extent * MAX; + }); + return new QuantizedFloatArray(getFloatArrayPrecision(values), normalized, extent, min); + } + function indexQuantized(quantized, index) { + var quantizedValue = quantized.values[index]; + var MAX_VALUE = 1 << quantized.values.BYTES_PER_ELEMENT; + return quantizedValue / MAX_VALUE * quantized.extent + quantized.min; + } + function createExoticTrackEvaluationRecord(times, values, ValueConstructor, path, property, binder) { + var trackBinding = new TrackBinding(); + trackBinding.path = new TrackPath().toHierarchy(path).toProperty(property); + var runtimeBinding = binder(trackBinding); + if (!runtimeBinding) { + return null; + } + var evaluator = new ExoticTrackEvaluator(times, values, ValueConstructor); + return { + runtimeBinding: runtimeBinding, + evaluator: evaluator + }; + } + function loadVec3FromQuantized(values, index, out) { + Vec3.set(out, indexQuantized(values, 3 * index + 0), indexQuantized(values, 3 * index + 1), indexQuantized(values, 3 * index + 2)); + } + function loadQuatFromQuantized(values, index, out) { + Quat.set(out, indexQuantized(values, 4 * index + 0), indexQuantized(values, 4 * index + 1), indexQuantized(values, 4 * index + 2), indexQuantized(values, 4 * index + 3)); + } + + var _dec$X, _class$X, _class2$R, _initializer$L, _initializer2$F; + var AuxiliaryCurveEntry = (_dec$X = ccclass$t(CLASS_NAME_PREFIX_ANIM + "AuxiliaryCurveEntry"), _dec$X(_class$X = (_class2$R = function AuxiliaryCurveEntry() { + this.name = _initializer$L && _initializer$L(); + this.curve = _initializer2$F && _initializer2$F(); + }, (_initializer$L = applyDecoratedInitializer(_class2$R.prototype, "name", [serializable$9], function () { + return ''; + }), _initializer2$F = applyDecoratedInitializer(_class2$R.prototype, "curve", [serializable$9], function () { + return new RealCurve(); + })), _class2$R)) || _class$X); + + function invokeComponentMethodsEngagedInAnimationEvent(node, methodName, args) { + var components = node.components; + var nComponents = components.length; + for (var iComponent = 0; iComponent < nComponents; ++iComponent) { + var component = components[iComponent]; + var fx = component[methodName]; + if (typeof fx === 'function') { + fx.apply(component, args); + } + } + } + + var _dec$W, _class$W, _class2$Q, _initializer$K, _initializer2$E, _initializer3$x, _initializer4$t, _initializer5$n, _initializer6$j, _initializer7$f, _initializer8$e, _initializer9$c, _initializer10$c, _initializer11$c, _initializer12$b, _class3$n, _dec2$L, _class4$4, _class5$5, _initializer13$8, _initializer14$7; + var searchForRootBonePathSymbol = Symbol('SearchForRootBonePath'); + var exoticAnimationTag = Symbol('ExoticAnimation'); + var embeddedPlayerCountTag = Symbol('[[EmbeddedPlayerCount]]'); + var getEmbeddedPlayersTag = Symbol('[[GetEmbeddedPlayers]]'); + var addEmbeddedPlayerTag = Symbol('[[AddEmbeddedPlayer]]'); + var removeEmbeddedPlayerTag = Symbol('[[RemoveEmbeddedPlayer]]'); + var clearEmbeddedPlayersTag = Symbol('[[ClearEmbeddedPlayers]]'); + var additiveSettingsTag = Symbol('[[Additive Settings]]'); + var AnimationClip = exports('a4', (_dec$W = ccclass$t('cc.AnimationClip'), _dec$W(_class$W = (_class2$Q = (_class3$n = function (_Asset) { + _inheritsLoose(AnimationClip, _Asset); + function AnimationClip() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Asset.call.apply(_Asset, [this].concat(args)) || this; + _this.sample = _initializer$K && _initializer$K(); + _this.speed = _initializer2$E && _initializer2$E(); + _this.wrapMode = _initializer3$x && _initializer3$x(); + _this.enableTrsBlending = _initializer4$t && _initializer4$t(); + _this._duration = _initializer5$n && _initializer5$n(); + _this._hash = _initializer6$j && _initializer6$j(); + _this.frameRate = 0; + _this._tracks = _initializer7$f && _initializer7$f(); + _this._exoticAnimation = _initializer8$e && _initializer8$e(); + _this._legacyData = undefined; + _this._legacyDataDirty = false; + _this._events = _initializer9$c && _initializer9$c(); + _this._embeddedPlayers = _initializer10$c && _initializer10$c(); + _this._additiveSettings = _initializer11$c && _initializer11$c(); + _this._auxiliaryCurveEntries = _initializer12$b && _initializer12$b(); + _this._runtimeEvents = { + ratios: [], + eventGroups: [] + }; + return _this; + } + AnimationClip.createWithSpriteFrames = function createWithSpriteFrames(spriteFrames, sample) { + var clip = new AnimationClip(); + clip.sample = sample || clip.sample; + clip.duration = spriteFrames.length / clip.sample; + var step = 1 / clip.sample; + var track = new ObjectTrack(); + track.path = new TrackPath().toComponent('cc.Sprite').toProperty('spriteFrame'); + var curve = track.channels()[0].curve; + curve.assignSorted(spriteFrames.map(function (spriteFrame, index) { + return [step * index, spriteFrame]; + })); + clip.addTrack(track); + return clip; + }; + var _proto = AnimationClip.prototype; + _proto.onLoaded = function onLoaded() { + this.frameRate = this.sample; + this.events = this._events; + }; + _proto.range = function range() { + var range = { + min: Infinity, + max: -Infinity + }; + var tracks = this._tracks; + var nTracks = tracks.length; + for (var iTrack = 0; iTrack < nTracks; ++iTrack) { + var track = tracks[iTrack]; + var trackRange = track.range(); + range.min = Math.min(range.min, trackRange.min); + range.max = Math.max(range.max, trackRange.max); + } + return range; + }; + _proto.getTrack = function getTrack(index) { + return this._tracks[index]; + }; + _proto.addTrack = function addTrack(track) { + var index = this._tracks.length; + this._tracks.push(track); + return index; + }; + _proto.removeTrack = function removeTrack(index) { + this._tracks.splice(index, 1); + }; + _proto.clearTracks = function clearTracks() { + this._tracks.length = 0; + }; + _proto.containsAnyEvent = function containsAnyEvent() { + return this._events.length !== 0; + }; + _proto.createEventEvaluator = function createEventEvaluator(targetNode) { + return new EventEvaluator(targetNode, this._runtimeEvents.ratios, this._runtimeEvents.eventGroups, this.wrapMode); + }; + _proto.containsAnyEmbeddedPlayer = function containsAnyEmbeddedPlayer() { + return this._embeddedPlayers.length !== 0; + }; + _proto.createEmbeddedPlayerEvaluator = function createEmbeddedPlayerEvaluator(targetNode) { + return new EmbeddedPlayerEvaluation(this._embeddedPlayers, targetNode); + }; + _proto.createEvaluator = function createEvaluator(context) { + var _this2 = this; + var target = context.target; + var binder = function binder(binding) { + if (context.mask && binding.isMaskedOff(context.mask)) { + return undefined; + } + var trackTarget = binding.createRuntimeBinding(target, _this2.enableTrsBlending ? context.pose : undefined, false); + if (!trackTarget) { + warnID(3937, _this2.name, context.target instanceof Node$1 ? context.target.name : context.target); + } + return trackTarget !== null && trackTarget !== void 0 ? trackTarget : undefined; + }; + return this._createEvalWithBinder(target, binder, context.rootMotion); + }; + _proto.destroy = function destroy() { + var _cclegacy$director$ro; + if ((_cclegacy$director$ro = legacyCC.director.root) !== null && _cclegacy$director$ro !== void 0 && _cclegacy$director$ro.dataPoolManager) { + legacyCC.director.root.dataPoolManager.releaseAnimationClip(this); + } + SkelAnimDataHub.destroy(this); + return _Asset.prototype.destroy.call(this); + }; + _proto[BAKE_SKELETON_CURVE_SYMBOL] = function (start, samples, frames) { + var step = 1.0 / samples; + var animatedJoints = this._collectAnimatedJoints(); + var nAnimatedJoints = animatedJoints.length; + var jointsBakeInfo = {}; + for (var iAnimatedJoint = 0; iAnimatedJoint < nAnimatedJoints; ++iAnimatedJoint) { + var joint = animatedJoints[iAnimatedJoint]; + jointsBakeInfo[joint] = { + transforms: Array.from({ + length: frames + }, function () { + return new Mat4(); + }) + }; + } + var skeletonFrames = animatedJoints.reduce(function (result, joint) { + result[joint] = new BoneGlobalTransform(); + return result; + }, {}); + for (var _joint in skeletonFrames) { + var skeletonFrame = skeletonFrames[_joint]; + var parentJoint = _joint.lastIndexOf('/'); + if (parentJoint >= 0) { + var parentJointName = _joint.substring(0, parentJoint); + var parentJointFrame = skeletonFrames[parentJointName]; + if (parentJointFrame) { + skeletonFrame.parent = parentJointFrame; + } + } + } + var binder = function binder(binding) { + var trsPath = binding.parseTrsPath(); + if (!trsPath) { + return undefined; + } + var jointFrame = skeletonFrames[trsPath.node]; + if (!jointFrame) { + return undefined; + } + return createBoneTransformBinding(jointFrame, trsPath.property); + }; + var evaluator = this._createEvalWithBinder(undefined, binder, undefined); + for (var iFrame = 0; iFrame < frames; ++iFrame) { + var time = start + step * iFrame; + evaluator.evaluate(time); + for (var _iAnimatedJoint = 0; _iAnimatedJoint < nAnimatedJoints; ++_iAnimatedJoint) { + var _joint2 = animatedJoints[_iAnimatedJoint]; + Mat4.copy(jointsBakeInfo[_joint2].transforms[iFrame], skeletonFrames[_joint2].globalTransform); + } + for (var _iAnimatedJoint2 = 0; _iAnimatedJoint2 < nAnimatedJoints; ++_iAnimatedJoint2) { + var _joint3 = animatedJoints[_iAnimatedJoint2]; + skeletonFrames[_joint3].invalidate(); + } + } + return { + samples: samples, + frames: frames, + joints: jointsBakeInfo + }; + }; + _proto.upgradeUntypedTracks = function upgradeUntypedTracks(refine) { + var newTracks = []; + var removals = []; + var tracks = this._tracks; + var nTracks = tracks.length; + for (var iTrack = 0; iTrack < nTracks; ++iTrack) { + var track = tracks[iTrack]; + if (!(track instanceof UntypedTrack)) { + continue; + } + var newTrack = track.upgrade(refine); + if (newTrack) { + newTracks.push(newTrack); + removals.push(track); + } + } + var nRemovalTracks = removals.length; + for (var iRemovalTrack = 0; iRemovalTrack < nRemovalTracks; ++iRemovalTrack) { + remove(tracks, removals[iRemovalTrack]); + } + tracks.push.apply(tracks, newTracks); + }; + _proto[searchForRootBonePathSymbol] = function () { + return this._searchForRootBonePath(); + }; + _proto.getPropertyCurves = function getPropertyCurves() { + return this._getLegacyData().getPropertyCurves(); + }; + _proto.updateEventDatas = function updateEventDatas() { + this.events = this._events; + }; + _proto.hasEvents = function hasEvents() { + return this.events.length !== 0; + }; + _proto.syncLegacyData = function syncLegacyData() { + if (this._legacyData) { + this._fromLegacy(this._legacyData); + this._legacyData = undefined; + } + }; + _proto[getEmbeddedPlayersTag] = function () { + return this._embeddedPlayers; + }; + _proto[addEmbeddedPlayerTag] = function (embeddedPlayer) { + this._embeddedPlayers.push(embeddedPlayer); + }; + _proto[removeEmbeddedPlayerTag] = function (embeddedPlayer) { + var iEmbeddedPlayer = this._embeddedPlayers.indexOf(embeddedPlayer); + if (iEmbeddedPlayer >= 0) { + this._embeddedPlayers.splice(iEmbeddedPlayer, 1); + } + }; + _proto[clearEmbeddedPlayersTag] = function () { + this._embeddedPlayers.length = 0; + }; + _proto.getAuxiliaryCurveNames_experimental = function getAuxiliaryCurveNames_experimental() { + return this._auxiliaryCurveEntries.map(function (entry) { + return entry.name; + }); + }; + _proto.hasAuxiliaryCurve_experimental = function hasAuxiliaryCurve_experimental(name) { + return !!this._findAuxiliaryCurveEntry(name); + }; + _proto.addAuxiliaryCurve_experimental = function addAuxiliaryCurve_experimental(name) { + var entry = this._findAuxiliaryCurveEntry(name); + if (!entry) { + entry = new AuxiliaryCurveEntry(); + entry.name = name; + this._auxiliaryCurveEntries.push(entry); + } + return entry.curve; + }; + _proto.getAuxiliaryCurve_experimental = function getAuxiliaryCurve_experimental(name) { + var entry = this._findAuxiliaryCurveEntry(name); + assertIsTrue(entry); + return entry.curve; + }; + _proto.renameAuxiliaryCurve_experimental = function renameAuxiliaryCurve_experimental(name, newName) { + var entry = this._findAuxiliaryCurveEntry(name); + if (entry) { + entry.name = newName; + } + }; + _proto.removeAuxiliaryCurve_experimental = function removeAuxiliaryCurve_experimental(name) { + removeIf(this._auxiliaryCurveEntries, function (entry) { + return entry.name === name; + }); + }; + _proto._trySyncLegacyData = function _trySyncLegacyData() { + if (this._legacyDataDirty) { + this._legacyDataDirty = false; + this.syncLegacyData(); + } + }; + _proto._createEvalWithBinder = function _createEvalWithBinder(target, binder, rootMotionOptions) { + if (this._legacyDataDirty) { + this._legacyDataDirty = false; + this.syncLegacyData(); + } + var rootMotionTrackExcludes = []; + var rootMotionEvaluation; + if (rootMotionOptions) { + rootMotionEvaluation = this._createRootMotionEvaluation(target, rootMotionOptions, rootMotionTrackExcludes); + } + var trackEvalStatues = []; + var exoticAnimationEvaluator; + var tracks = this._tracks; + var nTracks = tracks.length; + for (var iTrack = 0; iTrack < nTracks; ++iTrack) { + var track = tracks[iTrack]; + if (rootMotionTrackExcludes.includes(track)) { + continue; + } + if (Array.from(track.channels()).every(function (_ref) { + var curve = _ref.curve; + return curve.keyFramesCount === 0; + })) { + continue; + } + var runtimeBinding = binder(track[trackBindingTag]); + if (!runtimeBinding) { + continue; + } + var trackEval = void 0; + if (!(track instanceof UntypedTrack)) { + trackEval = track[createEvalSymbol](); + } else { + if (!runtimeBinding.getValue) { + errorID(3930); + continue; + } + var hintValue = runtimeBinding.getValue(); + trackEval = track.createLegacyEval(hintValue); + } + trackEvalStatues.push(new TrackEvalStatus(runtimeBinding, trackEval)); + } + if (this._exoticAnimation) { + exoticAnimationEvaluator = this._exoticAnimation.createEvaluator(binder); + } + var evaluation = new AnimationClipEvaluation(trackEvalStatues, exoticAnimationEvaluator, rootMotionEvaluation); + return evaluation; + }; + _proto._createRootMotionEvaluation = function _createRootMotionEvaluation(target, rootMotionOptions, rootMotionTrackExcludes) { + if (!(target instanceof Node$1)) { + errorID(3920); + return undefined; + } + var rootBonePath = this._searchForRootBonePath(); + if (!rootBonePath) { + warnID(3923); + return undefined; + } + var rootBone = target.getChildByPath(rootBonePath); + if (!rootBone) { + warnID(3924); + return undefined; + } + var boneTransform = new BoneTransform(); + var rootMotionsTrackEvaluations = []; + var tracks = this._tracks; + var nTracks = tracks.length; + for (var iTrack = 0; iTrack < nTracks; ++iTrack) { + var track = tracks[iTrack]; + var trackBinding = track[trackBindingTag]; + var trsPath = trackBinding.parseTrsPath(); + if (!trsPath) { + continue; + } + var bonePath = trsPath.node; + if (bonePath !== rootBonePath) { + continue; + } + rootMotionTrackExcludes.push(track); + var property = trsPath.property; + var runtimeBinding = createBoneTransformBinding(boneTransform, property); + if (!runtimeBinding) { + continue; + } + var trackEval = track[createEvalSymbol](); + rootMotionsTrackEvaluations.push(new TrackEvalStatus(runtimeBinding, trackEval)); + } + var rootMotionEvaluation = new RootMotionEvaluation(rootBone, this._duration, boneTransform, rootMotionsTrackEvaluations); + return rootMotionEvaluation; + }; + _proto._searchForRootBonePath = function _searchForRootBonePath() { + var paths = this._tracks.map(function (track) { + var trsPath = track[trackBindingTag].parseTrsPath(); + if (trsPath) { + var nodePath = trsPath.node; + return { + path: nodePath, + rank: nodePath.split('/').length + }; + } else { + return { + path: '', + rank: 0 + }; + } + }); + paths.sort(function (a, b) { + return a.rank - b.rank; + }); + var iNonEmptyPath = paths.findIndex(function (p) { + return p.rank !== 0; + }); + if (iNonEmptyPath < 0) { + return ''; + } + var nPaths = paths.length; + var firstPath = paths[iNonEmptyPath]; + var highestPathsAreSame = true; + for (var iPath = iNonEmptyPath + 1; iPath < nPaths; ++iPath) { + var path = paths[iPath]; + if (path.rank !== firstPath.rank) { + break; + } + if (path.path !== firstPath.path) { + highestPathsAreSame = false; + break; + } + } + return highestPathsAreSame ? firstPath.path : ''; + }; + _proto._getLegacyData = function _getLegacyData() { + if (!this._legacyData) { + this._legacyData = this._toLegacy(); + } + return this._legacyData; + }; + _proto._toLegacy = function _toLegacy() { + var keys = []; + var legacyCurves = []; + var commonTargets = []; + var legacyClipData = new AnimationClipLegacyData(this._duration); + legacyClipData.keys = keys; + legacyClipData.curves = legacyCurves; + legacyClipData.commonTargets = commonTargets; + return legacyClipData; + }; + _proto._fromLegacy = function _fromLegacy(legacyData) { + var newTracks = legacyData.toTracks(); + var nNewTracks = newTracks.length; + for (var iNewTrack = 0; iNewTrack < nNewTracks; ++iNewTrack) { + this.addTrack(newTracks[iNewTrack]); + } + }; + _proto._collectAnimatedJoints = function _collectAnimatedJoints() { + var joints = new Set(); + var tracks = this._tracks; + var nTracks = tracks.length; + for (var iTrack = 0; iTrack < nTracks; ++iTrack) { + var track = tracks[iTrack]; + var trsPath = track[trackBindingTag].parseTrsPath(); + if (trsPath) { + joints.add(trsPath.node); + } + } + if (this._exoticAnimation) { + var animatedJoints = this._exoticAnimation.collectAnimatedJoints(); + var nAnimatedJoints = animatedJoints.length; + for (var iAnimatedJoint = 0; iAnimatedJoint < nAnimatedJoints; ++iAnimatedJoint) { + joints.add(animatedJoints[iAnimatedJoint]); + } + } + return Array.from(joints); + }; + _proto._findAuxiliaryCurveEntry = function _findAuxiliaryCurveEntry(name) { + return this._auxiliaryCurveEntries.find(function (entry) { + return entry.name === name; + }); + }; + _createClass(AnimationClip, [{ + key: "duration", + get: function get() { + return this._duration; + }, + set: function set(value) { + this._duration = value; + } + }, { + key: "tracksCount", + get: function get() { + return this._tracks.length; + } + }, { + key: "tracks", + get: function get() { + return this._tracks; + } + }, { + key: "hash", + get: function get() { + var _this$_exoticAnimatio, _this$_exoticAnimatio2; + if (this._hash) { + return this._hash; + } + var hashString = "Exotic:" + ((_this$_exoticAnimatio = (_this$_exoticAnimatio2 = this._exoticAnimation) === null || _this$_exoticAnimatio2 === void 0 ? void 0 : _this$_exoticAnimatio2.toHashString()) !== null && _this$_exoticAnimatio !== void 0 ? _this$_exoticAnimatio : ''); + return this._hash = murmurhash2_32_gc(hashString, 666); + } + }, { + key: "events", + get: function get() { + return this._events; + }, + set: function set(value) { + var _this3 = this; + this._events = value; + var ratios = []; + var eventGroups = []; + var events = this.events.sort(function (a, b) { + return a.frame - b.frame; + }); + var nEvents = events.length; + var _loop = function _loop() { + var eventData = events[iEvent]; + var ratio = eventData.frame / _this3._duration; + var i = ratios.findIndex(function (r) { + return r === ratio; + }); + if (i < 0) { + i = ratios.length; + ratios.push(ratio); + eventGroups.push({ + events: [] + }); + } + eventGroups[i].events.push({ + functionName: eventData.func, + parameters: eventData.params + }); + }; + for (var iEvent = 0; iEvent < nEvents; ++iEvent) { + _loop(); + } + this._runtimeEvents = { + ratios: ratios, + eventGroups: eventGroups + }; + } + }, { + key: exoticAnimationTag, + get: function get() { + return this._exoticAnimation; + } + }, { + key: exoticAnimationTag, + set: function set(value) { + this._exoticAnimation = value; + } + }, { + key: "isAdditive_experimental", + get: function get() { + return this._additiveSettings.enabled; + } + }, { + key: additiveSettingsTag, + get: function get() { + return this._additiveSettings; + } + }, { + key: "keys", + get: function get() { + return this._getLegacyData().keys; + } + }, { + key: "keys", + set: function set(value) { + this._legacyDataDirty = true; + this._getLegacyData().keys = value; + } + }, { + key: "curves", + get: function get() { + this._legacyDataDirty = true; + return this._getLegacyData().curves; + } + }, { + key: "curves", + set: function set(value) { + this._getLegacyData().curves = value; + } + }, { + key: "commonTargets", + get: function get() { + return this._getLegacyData().commonTargets; + } + }, { + key: "commonTargets", + set: function set(value) { + this._legacyDataDirty = true; + this._getLegacyData().commonTargets = value; + } + }, { + key: "data", + get: function get() { + return this._getLegacyData().data; + } + }, { + key: "eventGroups", + get: function get() { + return this._runtimeEvents.eventGroups; + } + }, { + key: embeddedPlayerCountTag, + get: function get() { + return this._embeddedPlayers.length; + } + }, { + key: "auxiliaryCurveCount_experimental", + get: function get() { + return this._auxiliaryCurveEntries.length; + } + }]); + return AnimationClip; + }(Asset), _class3$n.WrapMode = WrapMode, _class3$n), (_initializer$K = applyDecoratedInitializer(_class2$Q.prototype, "sample", [serializable$9], function () { + return 60; + }), _initializer2$E = applyDecoratedInitializer(_class2$Q.prototype, "speed", [serializable$9], function () { + return 1; + }), _initializer3$x = applyDecoratedInitializer(_class2$Q.prototype, "wrapMode", [serializable$9], function () { + return WrapMode.Normal; + }), _initializer4$t = applyDecoratedInitializer(_class2$Q.prototype, "enableTrsBlending", [serializable$9], function () { + return false; + }), _initializer5$n = applyDecoratedInitializer(_class2$Q.prototype, "_duration", [serializable$9], function () { + return 0; + }), _initializer6$j = applyDecoratedInitializer(_class2$Q.prototype, "_hash", [serializable$9], function () { + return 0; + }), _initializer7$f = applyDecoratedInitializer(_class2$Q.prototype, "_tracks", [serializable$9], function () { + return []; + }), _initializer8$e = applyDecoratedInitializer(_class2$Q.prototype, "_exoticAnimation", [serializable$9], function () { + return null; + }), _initializer9$c = applyDecoratedInitializer(_class2$Q.prototype, "_events", [serializable$9], function () { + return []; + }), _initializer10$c = applyDecoratedInitializer(_class2$Q.prototype, "_embeddedPlayers", [serializable$9], function () { + return []; + }), _initializer11$c = applyDecoratedInitializer(_class2$Q.prototype, "_additiveSettings", [serializable$9], function () { + return new AdditiveSettings(); + }), _initializer12$b = applyDecoratedInitializer(_class2$Q.prototype, "_auxiliaryCurveEntries", [serializable$9], function () { + return []; + })), _class2$Q)) || _class$W)); + var AdditiveSettings = (_dec2$L = ccclass$t('cc.AnimationClipAdditiveSettings'), _dec2$L(_class4$4 = (_class5$5 = function AdditiveSettings() { + this.enabled = _initializer13$8 && _initializer13$8(); + this.refClip = _initializer14$7 && _initializer14$7(); + }, (_initializer13$8 = applyDecoratedInitializer(_class5$5.prototype, "enabled", [serializable$9], function () { + return false; + }), _initializer14$7 = applyDecoratedInitializer(_class5$5.prototype, "refClip", [serializable$9], function () { + return null; + })), _class5$5)) || _class4$4); + legacyCC.AnimationClip = AnimationClip; + var TrackEvalStatus = function () { + function TrackEvalStatus(binding, trackEval) { + this._binding = void 0; + this._trackEval = void 0; + this._shouldEvaluateDefault = true; + this._binding = binding; + this._trackEval = trackEval; + this._shouldEvaluateDefault = !!binding.getValue && trackEval.requiresDefault; + } + var _proto2 = TrackEvalStatus.prototype; + _proto2.evaluate = function evaluate(time) { + var binding = this._binding, + trackEval = this._trackEval; + var defaultValue = this._shouldEvaluateDefault ? binding.getValue() : undefined; + var value = trackEval.evaluate(time, defaultValue); + binding.setValue(value); + }; + return TrackEvalStatus; + }(); + var EmbeddedPlayerEvaluation = function () { + function EmbeddedPlayerEvaluation(embeddedPlayers, rootNode) { + this._embeddedPlayers = embeddedPlayers; + this._embeddedPlayerEvaluationInfos = embeddedPlayers.map(function (embeddedPlayer) { + var player = embeddedPlayer.playable; + if (!player) { + return null; + } + var instantiatedPlayer = player.instantiate(rootNode); + if (!instantiatedPlayer) { + return null; + } + return { + instantiatedPlayer: instantiatedPlayer, + entered: false, + hostPauseTime: 0.0, + lastIterations: 0 + }; + }); + } + var _proto3 = EmbeddedPlayerEvaluation.prototype; + _proto3.destroy = function destroy() { + var embeddedPlayerEvaluationInfos = this._embeddedPlayerEvaluationInfos; + var nEmbeddedPlayers = embeddedPlayerEvaluationInfos.length; + for (var iEmbeddedPlayer = 0; iEmbeddedPlayer < nEmbeddedPlayers; ++iEmbeddedPlayer) { + var _embeddedPlayerEvalua; + (_embeddedPlayerEvalua = embeddedPlayerEvaluationInfos[iEmbeddedPlayer]) === null || _embeddedPlayerEvalua === void 0 ? void 0 : _embeddedPlayerEvalua.instantiatedPlayer.destroy(); + } + this._embeddedPlayerEvaluationInfos.length = 0; + }; + _proto3.evaluate = function evaluate(time, iterations) { + assertIsTrue(Number.isInteger(iterations)); + var embeddedPlayers = this._embeddedPlayers, + embeddedPlayerEvaluationInfos = this._embeddedPlayerEvaluationInfos; + var nEmbeddedPlayers = embeddedPlayers.length; + for (var iEmbeddedPlayer = 0; iEmbeddedPlayer < nEmbeddedPlayers; ++iEmbeddedPlayer) { + var embeddedPlayerEvaluationInfo = embeddedPlayerEvaluationInfos[iEmbeddedPlayer]; + if (!embeddedPlayerEvaluationInfo) { + continue; + } + var entered = embeddedPlayerEvaluationInfo.entered, + instantiatedPlayer = embeddedPlayerEvaluationInfo.instantiatedPlayer, + lastIterations = embeddedPlayerEvaluationInfo.lastIterations; + var _embeddedPlayers$iEmb = embeddedPlayers[iEmbeddedPlayer], + begin = _embeddedPlayers$iEmb.begin, + end = _embeddedPlayers$iEmb.end; + var withinEmbeddedPlayer = time >= begin && time <= end; + if (withinEmbeddedPlayer) { + if (!entered) { + instantiatedPlayer.play(); + embeddedPlayerEvaluationInfo.entered = true; + } else if (iterations !== lastIterations) { + instantiatedPlayer.stop(); + instantiatedPlayer.play(); + embeddedPlayerEvaluationInfo.entered = true; + } + } else if (entered) { + instantiatedPlayer.stop(); + embeddedPlayerEvaluationInfo.entered = false; + } + embeddedPlayerEvaluationInfo.lastIterations = iterations; + if (embeddedPlayerEvaluationInfo.entered) { + var playerTime = time - begin; + embeddedPlayerEvaluationInfo.instantiatedPlayer.setTime(playerTime); + } + } + }; + _proto3.notifyHostSpeedChanged = function notifyHostSpeedChanged(speed) { + var embeddedPlayers = this._embeddedPlayers, + embeddedPlayerEvaluationInfos = this._embeddedPlayerEvaluationInfos; + var nEmbeddedPlayers = embeddedPlayers.length; + for (var iEmbeddedPlayer = 0; iEmbeddedPlayer < nEmbeddedPlayers; ++iEmbeddedPlayer) { + var embeddedPlayerEvaluationInfo = embeddedPlayerEvaluationInfos[iEmbeddedPlayer]; + if (!embeddedPlayerEvaluationInfo) { + continue; + } + var instantiatedPlayer = embeddedPlayerEvaluationInfo.instantiatedPlayer; + var reconciledSpeed = embeddedPlayers[iEmbeddedPlayer].reconciledSpeed; + if (reconciledSpeed) { + instantiatedPlayer.setSpeed(speed); + } + } + }; + _proto3.notifyHostPlay = function notifyHostPlay(time) { + var embeddedPlayers = this._embeddedPlayers, + embeddedPlayerEvaluationInfos = this._embeddedPlayerEvaluationInfos; + var nEmbeddedPlayers = embeddedPlayers.length; + for (var iEmbeddedPlayer = 0; iEmbeddedPlayer < nEmbeddedPlayers; ++iEmbeddedPlayer) { + var embeddedPlayerEvaluationInfo = embeddedPlayerEvaluationInfos[iEmbeddedPlayer]; + if (!embeddedPlayerEvaluationInfo) { + continue; + } + var _embeddedPlayers$iEmb2 = embeddedPlayers[iEmbeddedPlayer], + begin = _embeddedPlayers$iEmb2.begin, + end = _embeddedPlayers$iEmb2.end; + var instantiatedPlayer = embeddedPlayerEvaluationInfo.instantiatedPlayer, + entered = embeddedPlayerEvaluationInfo.entered; + if (entered) { + var hostPauseTime = embeddedPlayerEvaluationInfo.hostPauseTime; + if (instantiatedPlayer.randomAccess || approx(hostPauseTime, time, 1e-5)) { + var startTime = clamp$1(time, begin, end); + instantiatedPlayer.play(); + instantiatedPlayer.setTime(startTime - begin); + } else { + instantiatedPlayer.stop(); + } + } + } + }; + _proto3.notifyHostPause = function notifyHostPause(time) { + var embeddedPlayers = this._embeddedPlayers, + embeddedPlayerEvaluationInfos = this._embeddedPlayerEvaluationInfos; + var nEmbeddedPlayers = embeddedPlayers.length; + for (var iEmbeddedPlayer = 0; iEmbeddedPlayer < nEmbeddedPlayers; ++iEmbeddedPlayer) { + var embeddedPlayerEvaluationInfo = embeddedPlayerEvaluationInfos[iEmbeddedPlayer]; + if (!embeddedPlayerEvaluationInfo) { + continue; + } + var instantiatedPlayer = embeddedPlayerEvaluationInfo.instantiatedPlayer, + entered = embeddedPlayerEvaluationInfo.entered; + if (entered) { + instantiatedPlayer.pause(); + embeddedPlayerEvaluationInfo.hostPauseTime = time; + } + } + }; + _proto3.notifyHostStop = function notifyHostStop() { + var embeddedPlayers = this._embeddedPlayers, + embeddedPlayerEvaluationInfos = this._embeddedPlayerEvaluationInfos; + var nEmbeddedPlayers = embeddedPlayers.length; + for (var iEmbeddedPlayer = 0; iEmbeddedPlayer < nEmbeddedPlayers; ++iEmbeddedPlayer) { + var embeddedPlayerEvaluationInfo = embeddedPlayerEvaluationInfos[iEmbeddedPlayer]; + if (!embeddedPlayerEvaluationInfo) { + continue; + } + var instantiatedPlayer = embeddedPlayerEvaluationInfo.instantiatedPlayer, + entered = embeddedPlayerEvaluationInfo.entered; + if (entered) { + embeddedPlayerEvaluationInfo.entered = false; + instantiatedPlayer.stop(); + } + } + }; + return EmbeddedPlayerEvaluation; + }(); + var AnimationClipEvaluation = function () { + function AnimationClipEvaluation(trackEvalStatuses, exoticAnimationEvaluator, rootMotionEvaluation) { + this._exoticAnimationEvaluator = void 0; + this._trackEvalStatues = []; + this._rootMotionEvaluation = undefined; + this._trackEvalStatues = trackEvalStatuses; + this._exoticAnimationEvaluator = exoticAnimationEvaluator; + this._rootMotionEvaluation = rootMotionEvaluation; + } + var _proto4 = AnimationClipEvaluation.prototype; + _proto4.evaluate = function evaluate(time) { + var trackEvalStatuses = this._trackEvalStatues, + exoticAnimationEvaluator = this._exoticAnimationEvaluator; + var nTrackEvalStatuses = trackEvalStatuses.length; + for (var iTrackEvalStatus = 0; iTrackEvalStatus < nTrackEvalStatuses; ++iTrackEvalStatus) { + trackEvalStatuses[iTrackEvalStatus].evaluate(time); + } + if (exoticAnimationEvaluator) { + exoticAnimationEvaluator.evaluate(time); + } + }; + _proto4.evaluateRootMotion = function evaluateRootMotion(time, motionLength) { + var rootMotionEvaluation = this._rootMotionEvaluation; + if (rootMotionEvaluation) { + rootMotionEvaluation.evaluate(time, motionLength); + } + }; + return AnimationClipEvaluation; + }(); + var BoneTransform = function () { + function BoneTransform() { + this.position = new Vec3(); + this.scale = new Vec3(1.0, 1.0, 1.0); + this.rotation = new Quat(); + this.eulerAngles = new Vec3(); + } + var _proto5 = BoneTransform.prototype; + _proto5.getTransform = function getTransform(out) { + Mat4.fromRTS(out, this.rotation, this.position, this.scale); + }; + return BoneTransform; + }(); + var BoneGlobalTransform = function (_BoneTransform) { + _inheritsLoose(BoneGlobalTransform, _BoneTransform); + function BoneGlobalTransform() { + var _this4; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + _this4 = _BoneTransform.call.apply(_BoneTransform, [this].concat(args)) || this; + _this4.parent = null; + _this4._dirty = true; + _this4._transform = new Mat4(); + return _this4; + } + var _proto6 = BoneGlobalTransform.prototype; + _proto6.invalidate = function invalidate() { + this._dirty = true; + }; + _createClass(BoneGlobalTransform, [{ + key: "globalTransform", + get: function get() { + var transform = this._transform; + if (this._dirty) { + this._dirty = false; + Mat4.fromRTS(transform, this.rotation, this.position, this.scale); + if (this.parent) { + Mat4.multiply(transform, this.parent.globalTransform, transform); + } + } + return this._transform; + } + }]); + return BoneGlobalTransform; + }(BoneTransform); + var motionTransformCache = new Mat4(); + var RootMotionEvaluation = function () { + function RootMotionEvaluation(_rootBone, _duration, _boneTransform, _trackEvalStatuses) { + this._initialTransformCache = new Mat4(); + this._clipEndTransformCache = new Mat4(); + this._startTransformCache = new Mat4(); + this._endTransformCache = new Mat4(); + this._motionTransformCache = new Mat4(); + this._translationMotionCache = new Vec3(); + this._rotationMotionCache = new Quat(); + this._scaleMotionCache = new Vec3(); + this._rootBone = _rootBone; + this._duration = _duration; + this._boneTransform = _boneTransform; + this._trackEvalStatuses = _trackEvalStatuses; + } + var _proto7 = RootMotionEvaluation.prototype; + _proto7.evaluate = function evaluate(time, motionLength) { + var motionTransform = this._calcMotionTransform(time, motionLength, this._motionTransformCache); + var translationMotion = this._translationMotionCache, + rotationMotion = this._rotationMotionCache, + scaleMotion = this._scaleMotionCache, + rootBone = this._rootBone; + Mat4.toRTS(motionTransform, rotationMotion, translationMotion, scaleMotion); + Vec3.add(translationMotion, translationMotion, rootBone.position); + rootBone.setPosition(translationMotion); + Quat.multiply(rotationMotion, rotationMotion, rootBone.rotation); + rootBone.setRotation(rotationMotion); + Vec3.multiply(scaleMotion, scaleMotion, rootBone.scale); + rootBone.setScale(scaleMotion); + }; + _proto7._calcMotionTransform = function _calcMotionTransform(time, motionLength, outTransform) { + var duration = this._duration; + var remainLength = duration - time; + assertIsTrue(remainLength >= 0); + var startTransform = this._evaluateAt(time, this._startTransformCache); + if (motionLength < remainLength) { + var endTransform = this._evaluateAt(time + motionLength, this._endTransformCache); + relativeTransform(outTransform, startTransform, endTransform); + } else { + Mat4.identity(outTransform); + var accumulateMotionTransform = function accumulateMotionTransform(from, to) { + relativeTransform(motionTransformCache, from, to); + Mat4.multiply(outTransform, outTransform, motionTransformCache); + }; + var diff = motionLength - remainLength; + var repeatCount = Math.floor(diff / duration); + var lastRemainTime = diff - repeatCount * duration; + var clipStartTransform = this._evaluateAt(0, this._initialTransformCache); + var clipEndTransform = this._evaluateAt(duration, this._clipEndTransformCache); + var _endTransform = this._evaluateAt(lastRemainTime, this._endTransformCache); + accumulateMotionTransform(startTransform, clipEndTransform); + relativeTransform(motionTransformCache, clipStartTransform, clipEndTransform); + for (var i = 0; i < repeatCount; ++i) { + Mat4.multiply(outTransform, outTransform, motionTransformCache); + } + accumulateMotionTransform(clipStartTransform, _endTransform); + } + return outTransform; + }; + _proto7._evaluateAt = function _evaluateAt(time, outTransform) { + var trackEvalStatuses = this._trackEvalStatuses; + var nTrackEvalStatuses = trackEvalStatuses.length; + for (var iTrackEvalStatus = 0; iTrackEvalStatus < nTrackEvalStatuses; ++iTrackEvalStatus) { + trackEvalStatuses[iTrackEvalStatus].evaluate(time); + } + this._boneTransform.getTransform(outTransform); + return outTransform; + }; + return RootMotionEvaluation; + }(); + function relativeTransform(out, from, to) { + Mat4.invert(out, from); + Mat4.multiply(out, to, out); + } + function createBoneTransformBinding(boneTransform, property) { + switch (property) { + default: + return undefined; + case 'position': + return { + setValue: function setValue(value) { + Vec3.copy(boneTransform.position, value); + } + }; + case 'rotation': + return { + setValue: function setValue(value) { + Quat.copy(boneTransform.rotation, value); + } + }; + case 'scale': + return { + setValue: function setValue(value) { + Vec3.copy(boneTransform.scale, value); + } + }; + case 'eulerAngles': + return { + setValue: function setValue(value) { + Vec3.copy(boneTransform.eulerAngles, value); + } + }; + } + } + var InvalidIndex = -1; + var EventEvaluator = function () { + function EventEvaluator(_targetNode, _ratios, _eventGroups, _wrapMode) { + this._lastFrameIndex = -1; + this._lastIterations = 0.0; + this._lastDirection = 0; + this._ignoreIndex = InvalidIndex; + this._sampled = false; + this._targetNode = _targetNode; + this._ratios = _ratios; + this._eventGroups = _eventGroups; + this._wrapMode = _wrapMode; + } + var _proto8 = EventEvaluator.prototype; + _proto8.setWrapMode = function setWrapMode(wrapMode) { + this._wrapMode = wrapMode; + }; + _proto8.ignore = function ignore(ratio, direction) { + this._ignoreIndex = InvalidIndex; + this._sampled = false; + var frameIndex = getEventGroupIndexAtRatio(ratio, this._ratios); + if (frameIndex < 0) { + frameIndex = ~frameIndex - 1; + if (direction < 0) { + frameIndex += 1; + } + this._ignoreIndex = frameIndex; + } + }; + _proto8.reset = function reset() { + this._lastFrameIndex = -1; + this._lastIterations = 0.0; + this._lastDirection = 0; + this._ignoreIndex = InvalidIndex; + this._sampled = false; + }; + _proto8.sample = function sample(ratio, direction, iterations) { + if (this._eventGroups.length === 0) { + return; + } + var length = this._eventGroups.length; + var eventIndex = getEventGroupIndexAtRatio(ratio, this._ratios); + if (eventIndex < 0) { + eventIndex = ~eventIndex - 1; + if (direction < 0) { + eventIndex += 1; + } + } + if (this._ignoreIndex !== eventIndex) { + this._ignoreIndex = InvalidIndex; + } + if (!this._sampled) { + this._sampled = true; + this._doFire(eventIndex, false); + this._lastFrameIndex = eventIndex; + this._lastIterations = iterations; + this._lastDirection = direction; + return; + } + var wrapMode = this._wrapMode; + var currentIterations = wrapIterations(iterations); + var lastIterations = wrapIterations(this._lastIterations); + var lastIndex = this._lastFrameIndex; + var lastDirection = this._lastDirection; + var iterationsChanged = lastIterations !== -1 && currentIterations !== lastIterations; + if (lastIndex === eventIndex && iterationsChanged && length === 1) { + this._doFire(0, false); + } else if (lastIndex !== eventIndex || iterationsChanged) { + direction = lastDirection; + do { + if (lastIndex !== eventIndex) { + if (direction === -1 && lastIndex === 0 && eventIndex > 0) { + if ((wrapMode & WrapModeMask.PingPong) === WrapModeMask.PingPong) { + direction *= -1; + } else { + lastIndex = length; + } + lastIterations++; + } else if (direction === 1 && lastIndex === length - 1 && eventIndex < length - 1) { + if ((wrapMode & WrapModeMask.PingPong) === WrapModeMask.PingPong) { + direction *= -1; + } else { + lastIndex = -1; + } + lastIterations++; + } + if (lastIndex === eventIndex) { + break; + } + if (lastIterations > currentIterations) { + break; + } + } + lastIndex += direction; + this._doFire(lastIndex, true); + } while (lastIndex !== eventIndex && lastIndex > -1 && lastIndex < length); + } + this._lastFrameIndex = eventIndex; + this._lastIterations = iterations; + this._lastDirection = direction; + }; + _proto8._doFire = function _doFire(eventIndex, delay) { + if (delay) { + getGlobalAnimationManager().pushDelayEvent(this._checkAndFire, this, [eventIndex]); + } else { + this._checkAndFire(eventIndex); + } + }; + _proto8._checkAndFire = function _checkAndFire(eventIndex) { + if (!this._targetNode || !this._targetNode.isValid) { + return; + } + var eventGroups = this._eventGroups; + if (eventIndex < 0 || eventIndex >= eventGroups.length || this._ignoreIndex === eventIndex) { + return; + } + var eventGroup = eventGroups[eventIndex]; + var nEvents = eventGroup.events.length; + for (var iEvent = 0; iEvent < nEvents; ++iEvent) { + var event = eventGroup.events[iEvent]; + invokeComponentMethodsEngagedInAnimationEvent(this._targetNode, event.functionName, event.parameters); + } + }; + return EventEvaluator; + }(); + function wrapIterations(iterations) { + if (iterations - (iterations | 0) === 0) { + iterations -= 1; + } + return iterations | 0; + } + function getEventGroupIndexAtRatio(ratio, ratios) { + var result = binarySearchEpsilon(ratios, ratio); + return result; + } + + var BlendStateBuffer = function () { + function BlendStateBuffer() { + this._nodeBlendStates = new Map(); + } + var _proto = BlendStateBuffer.prototype; + _proto.createWriter = function createWriter(node, property, host, constants) { + var propertyBlendState = this.ref(node, property); + return new BlendStateWriterInternal(node, property, propertyBlendState, host, constants); + }; + _proto.destroyWriter = function destroyWriter(writer) { + var internal = writer; + this.deRef(internal.node, internal.property); + }; + _proto.ref = function ref(node, property) { + var nodeBlendState = this._nodeBlendStates.get(node); + if (!nodeBlendState) { + nodeBlendState = this.createNodeBlendState(); + this._nodeBlendStates.set(node, nodeBlendState); + } + var propertyBlendState = nodeBlendState.refProperty(node, property); + return propertyBlendState; + }; + _proto.deRef = function deRef(node, property) { + var nodeBlendState = this._nodeBlendStates.get(node); + if (!nodeBlendState) { + return; + } + nodeBlendState.deRefProperty(property); + if (nodeBlendState.empty) { + this._nodeBlendStates["delete"](node); + } + }; + _proto.apply = function apply() { + this._nodeBlendStates.forEach(function (nodeBlendState, node) { + nodeBlendState.apply(node); + }); + }; + return BlendStateBuffer; + }(); + var BlendStateWriterInternal = function () { + function BlendStateWriterInternal(_node, _property, _propertyBlendState, _host, _constants) { + this._node = _node; + this._property = _property; + this._propertyBlendState = _propertyBlendState; + this._host = _host; + this._constants = _constants; + } + var _proto2 = BlendStateWriterInternal.prototype; + _proto2.getValue = function getValue() { + return this._node[this._property]; + }; + _proto2.setValue = function setValue(value) { + var propertyBlendState = this._propertyBlendState, + host = this._host; + var weight = host.weight; + propertyBlendState.blend(value, weight); + }; + _createClass(BlendStateWriterInternal, [{ + key: "node", + get: function get() { + return this._node; + } + }, { + key: "property", + get: function get() { + return this._property; + } + }]); + return BlendStateWriterInternal; + }(); + var TransformApplyFlag; + (function (TransformApplyFlag) { + TransformApplyFlag[TransformApplyFlag["POSITION"] = 1] = "POSITION"; + TransformApplyFlag[TransformApplyFlag["ROTATION"] = 2] = "ROTATION"; + TransformApplyFlag[TransformApplyFlag["SCALE"] = 4] = "SCALE"; + TransformApplyFlag[TransformApplyFlag["EULER_ANGLES"] = 8] = "EULER_ANGLES"; + })(TransformApplyFlag || (TransformApplyFlag = {})); + TransformApplyFlag.POSITION | TransformApplyFlag.ROTATION | TransformApplyFlag.SCALE | TransformApplyFlag.EULER_ANGLES; + var LegacyVec3PropertyBlendState = function () { + function LegacyVec3PropertyBlendState() { + this.refCount = 0; + this.accumulatedWeight = 0.0; + this.result = new Vec3(); + } + var _proto3 = LegacyVec3PropertyBlendState.prototype; + _proto3.blend = function blend(value, weight) { + this.accumulatedWeight = mixAveragedVec3(this.result, this.result, this.accumulatedWeight, value, weight); + }; + _proto3.reset = function reset() { + this.accumulatedWeight = 0.0; + Vec3.zero(this.result); + }; + return LegacyVec3PropertyBlendState; + }(); + var LegacyQuatPropertyBlendState = function () { + function LegacyQuatPropertyBlendState() { + this.refCount = 0; + this.accumulatedWeight = 0.0; + this.result = new Quat(); + } + var _proto4 = LegacyQuatPropertyBlendState.prototype; + _proto4.blend = function blend(value, weight) { + this.accumulatedWeight = mixAveragedQuat(this.result, this.result, this.accumulatedWeight, value, weight); + }; + _proto4.reset = function reset() { + this.accumulatedWeight = 0.0; + Quat.identity(this.result); + }; + return LegacyQuatPropertyBlendState; + }(); + var NodeBlendState = function () { + function NodeBlendState() { + this._transformApplyFlags = 0; + this._properties = {}; + } + var _proto5 = NodeBlendState.prototype; + _proto5.refProperty = function refProperty(node, property) { + var _properties$property, _properties$property2; + var properties = this._properties; + var propertyBlendState; + switch (property) { + default: + case 'position': + case 'scale': + case 'eulerAngles': + propertyBlendState = (_properties$property = properties[property]) !== null && _properties$property !== void 0 ? _properties$property : properties[property] = this._createVec3BlendState(node[property]); + break; + case 'rotation': + propertyBlendState = (_properties$property2 = properties[property]) !== null && _properties$property2 !== void 0 ? _properties$property2 : properties[property] = this._createQuatBlendState(node.rotation); + break; + } + ++propertyBlendState.refCount; + return propertyBlendState; + }; + _proto5.deRefProperty = function deRefProperty(property) { + var properties = this._properties; + var propertyBlendState = properties[property]; + if (!propertyBlendState) { + return; + } + --propertyBlendState.refCount; + if (propertyBlendState.refCount > 0) { + return; + } + delete properties[property]; + }; + _proto5.apply = function apply(node) { + var transformApplyFlags = this._transformApplyFlags, + _this$_properties = this._properties, + position = _this$_properties.position, + scale = _this$_properties.scale, + rotation = _this$_properties.rotation, + eulerAngles = _this$_properties.eulerAngles; + if (!transformApplyFlags) { + return; + } + var t; + var s; + var r; + if (position && transformApplyFlags & TransformApplyFlag.POSITION) { + t = position.result; + } + if (scale && transformApplyFlags & TransformApplyFlag.SCALE) { + s = scale.result; + } + if (eulerAngles && transformApplyFlags & TransformApplyFlag.EULER_ANGLES) { + r = eulerAngles.result; + } + if (rotation && transformApplyFlags & TransformApplyFlag.ROTATION) { + r = rotation.result; + } + if (r || t || s) { + node.setRTS(r, t, s); + } + this._transformApplyFlags = 0; + }; + _createClass(NodeBlendState, [{ + key: "empty", + get: function get() { + var properties = this._properties; + return !properties.position && !properties.rotation && !properties.eulerAngles && !properties.scale; + } + }]); + return NodeBlendState; + }(); + var LegacyNodeBlendState = function (_NodeBlendState) { + _inheritsLoose(LegacyNodeBlendState, _NodeBlendState); + function LegacyNodeBlendState() { + return _NodeBlendState.apply(this, arguments) || this; + } + var _proto6 = LegacyNodeBlendState.prototype; + _proto6.apply = function apply(node) { + var _this$_properties2 = this._properties, + position = _this$_properties2.position, + scale = _this$_properties2.scale, + rotation = _this$_properties2.rotation, + eulerAngles = _this$_properties2.eulerAngles; + if (position && position.accumulatedWeight) { + this._transformApplyFlags |= TransformApplyFlag.POSITION; + if (position.accumulatedWeight < 1.0) { + position.blend(node.position, 1.0 - position.accumulatedWeight); + } + } + if (scale && scale.accumulatedWeight) { + this._transformApplyFlags |= TransformApplyFlag.SCALE; + if (scale.accumulatedWeight < 1.0) { + scale.blend(node.scale, 1.0 - scale.accumulatedWeight); + } + } + if (eulerAngles && eulerAngles.accumulatedWeight) { + this._transformApplyFlags |= TransformApplyFlag.EULER_ANGLES; + if (eulerAngles.accumulatedWeight < 1.0) { + eulerAngles.blend(node.eulerAngles, 1.0 - eulerAngles.accumulatedWeight); + } + } + if (rotation && rotation.accumulatedWeight) { + this._transformApplyFlags |= TransformApplyFlag.ROTATION; + if (rotation.accumulatedWeight < 1.0) { + rotation.blend(node.rotation, 1.0 - rotation.accumulatedWeight); + } + } + _NodeBlendState.prototype.apply.call(this, node); + position === null || position === void 0 ? void 0 : position.reset(); + scale === null || scale === void 0 ? void 0 : scale.reset(); + rotation === null || rotation === void 0 ? void 0 : rotation.reset(); + eulerAngles === null || eulerAngles === void 0 ? void 0 : eulerAngles.reset(); + }; + _proto6._createVec3BlendState = function _createVec3BlendState(_currentValue) { + return new LegacyVec3PropertyBlendState(); + }; + _proto6._createQuatBlendState = function _createQuatBlendState(_currentValue) { + return new LegacyQuatPropertyBlendState(); + }; + return LegacyNodeBlendState; + }(NodeBlendState); + var LegacyBlendStateBuffer = function (_BlendStateBuffer) { + _inheritsLoose(LegacyBlendStateBuffer, _BlendStateBuffer); + function LegacyBlendStateBuffer() { + return _BlendStateBuffer.apply(this, arguments) || this; + } + var _proto7 = LegacyBlendStateBuffer.prototype; + _proto7.createNodeBlendState = function createNodeBlendState() { + return new LegacyNodeBlendState(); + }; + return LegacyBlendStateBuffer; + }(BlendStateBuffer); + function mixAveragedVec3(result, previous, accumulatedWeight, input, weight) { + var newSum = accumulatedWeight + weight; + if (weight === 1.0 && !accumulatedWeight) { + Vec3.copy(result, input); + } else if (newSum) { + var t = weight / newSum; + Vec3.lerp(result, result, input, t); + } + return newSum; + } + function mixAveragedQuat(result, previous, accumulatedWeight, input, weight) { + var newSum = accumulatedWeight + weight; + if (weight === 1.0 && !accumulatedWeight) { + Quat.copy(result, input); + } else if (newSum) { + var t = weight / newSum; + Quat.slerp(result, previous, input, t); + } + return newSum; + } + + var stack = []; + var pool$1 = new Map(); + function getWorldMatrix(transform, stamp) { + var i = 0; + var res = Mat4.IDENTITY; + while (transform) { + if (transform.stamp === stamp || transform.stamp + 1 === stamp && !transform.node.hasChangedFlags) { + res = transform.world; + transform.stamp = stamp; + break; + } + transform.stamp = stamp; + stack[i++] = transform; + transform = transform.parent; + } + while (i > 0) { + transform = stack[--i]; + stack[i] = null; + var node = transform.node; + Mat4.fromRTS(transform.local, node.rotation, node.position, node.scale); + res = Mat4.multiply(transform.world, res, transform.local); + } + return res; + } + function getTransform(node, root) { + var joint = null; + var i = 0; + while (node !== root) { + var id = node.uuid; + if (pool$1.has(id)) { + joint = pool$1.get(id); + break; + } else { + joint = { + node: node, + local: new Mat4(), + world: new Mat4(), + stamp: -1, + parent: null + }; + pool$1.set(id, joint); + } + stack[i++] = joint; + node = node.parent; + joint = null; + } + var child; + while (i > 0) { + child = stack[--i]; + stack[i] = null; + child.parent = joint; + joint = child; + } + return joint; + } + function deleteTransform(node) { + var transform = pool$1.get(node.uuid) || null; + while (transform) { + pool$1["delete"](transform.node.uuid); + transform = transform.parent; + } + } + + var _class$V, _class2$P; + var AnimationManager = exports('ac', ccclass$t(_class$V = (_class2$P = function (_System) { + _inheritsLoose(AnimationManager, _System); + function AnimationManager() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _System.call.apply(_System, [this].concat(args)) || this; + _this._anims = new MutableForwardIterator([]); + _this._crossFades = new MutableForwardIterator([]); + _this._delayEvents = []; + _this._blendStateBuffer = new LegacyBlendStateBuffer(); + _this._sockets = []; + return _this; + } + var _proto = AnimationManager.prototype; + _proto.addCrossFade = function addCrossFade(crossFade) { + var index = this._crossFades.array.indexOf(crossFade); + if (index === -1) { + this._crossFades.push(crossFade); + } + }; + _proto.removeCrossFade = function removeCrossFade(crossFade) { + var index = this._crossFades.array.indexOf(crossFade); + if (index >= 0) { + this._crossFades.fastRemoveAt(index); + } else { + errorID(3907); + } + }; + _proto.update = function update(dt) { + var _delayEvents = this._delayEvents, + crossFadesIter = this._crossFades, + _sockets = this._sockets; + { + var crossFades = crossFadesIter.array; + for (crossFadesIter.i = 0; crossFadesIter.i < crossFades.length; ++crossFadesIter.i) { + var crossFade = crossFades[crossFadesIter.i]; + crossFade.update(dt); + } + } + var iterator = this._anims; + var array = iterator.array; + for (iterator.i = 0; iterator.i < array.length; ++iterator.i) { + var anim = array[iterator.i]; + if (!anim.isMotionless) { + anim.update(dt); + } + } + this._blendStateBuffer.apply(); + var stamp = director.getTotalFrames(); + for (var i = 0, l = _sockets.length; i < l; i++) { + var _sockets$i = _sockets[i], + target = _sockets$i.target, + transform = _sockets$i.transform; + target.matrix = getWorldMatrix(transform, stamp); + } + for (var _i = 0, _l = _delayEvents.length; _i < _l; _i++) { + var event = _delayEvents[_i]; + event.fn.apply(event.thisArg, event.args); + } + _delayEvents.length = 0; + }; + _proto.destruct = function destruct() {}; + _proto.addAnimation = function addAnimation(anim) { + var index = this._anims.array.indexOf(anim); + if (index === -1) { + this._anims.push(anim); + } + }; + _proto.removeAnimation = function removeAnimation(anim) { + var index = this._anims.array.indexOf(anim); + if (index >= 0) { + this._anims.fastRemoveAt(index); + } else { + errorID(3907); + } + }; + _proto.pushDelayEvent = function pushDelayEvent(fn, thisArg, args) { + this._delayEvents.push({ + fn: fn, + thisArg: thisArg, + args: args + }); + }; + _proto.addSockets = function addSockets(root, sockets) { + var _this2 = this; + var _loop = function _loop() { + var socket = sockets[i]; + if (_this2._sockets.find(function (s) { + return s.target === socket.target; + })) { + return 1; + } + var targetNode = root.getChildByPath(socket.path); + var transform = socket.target && targetNode && getTransform(targetNode, root); + if (transform) { + _this2._sockets.push({ + target: socket.target, + transform: transform + }); + } + }; + for (var i = 0; i < sockets.length; ++i) { + if (_loop()) continue; + } + }; + _proto.removeSockets = function removeSockets(root, sockets) { + for (var i = 0; i < sockets.length; ++i) { + var socketToRemove = sockets[i]; + for (var j = 0; j < this._sockets.length; ++j) { + var socket = this._sockets[j]; + if (socket.target === socketToRemove.target) { + deleteTransform(socket.transform.node); + this._sockets[j] = this._sockets[this._sockets.length - 1]; + this._sockets.length--; + break; + } + } + } + }; + _createClass(AnimationManager, [{ + key: "blendState", + get: function get() { + return this._blendStateBuffer; + } + }]); + return AnimationManager; + }(System), _class2$P.ID = 'animation', _class2$P)) || _class$V); + director.on(Director.EVENT_INIT, function () { + var animationManager = new AnimationManager(); + director.registerSystem(AnimationManager.ID, animationManager, System.Priority.HIGH); + }); + legacyCC.AnimationManager = AnimationManager; + + var CrossFade = function (_Playable) { + _inheritsLoose(CrossFade, _Playable); + function CrossFade(scheduler) { + var _this; + _this = _Playable.call(this) || this; + _this._managedStates = []; + _this._fadings = []; + _this._scheduled = false; + _this._scheduler = scheduler !== null && scheduler !== void 0 ? scheduler : getGlobalAnimationManager(); + return _this; + } + var _proto = CrossFade.prototype; + _proto.update = function update(deltaTime) { + if (this.isMotionless) { + return; + } + var managedStates = this._managedStates; + var fadings = this._fadings; + if (managedStates.length === 1 && fadings.length === 1) { + var state = managedStates[0].state; + if (state) { + state.weight = 1.0; + } + } else { + this._calculateWeights(deltaTime); + } + if (managedStates.length === 1 && fadings.length === 1) { + this._unscheduleThis(); + } + }; + _proto.crossFade = function crossFade(state, duration) { + var _target$state; + if (this._managedStates.length === 0) { + duration = 0; + } + if (duration === 0) { + this.clear(); + } + var target = this._managedStates.find(function (weightedState) { + return weightedState.state === state; + }); + if (!target) { + target = { + state: state, + reference: 0 + }; + if (state) { + state.play(); + } + this._managedStates.push(target); + } else if ((_target$state = target.state) !== null && _target$state !== void 0 && _target$state.isMotionless) { + target.state.play(); + } + ++target.reference; + this._fadings.unshift({ + easeDuration: duration, + easeTime: 0, + target: target + }); + if (!this.isMotionless) { + this._scheduleThis(); + } + }; + _proto.clear = function clear() { + for (var iManagedState = 0; iManagedState < this._managedStates.length; ++iManagedState) { + var state = this._managedStates[iManagedState].state; + if (state) { + state.stop(); + } + } + this._managedStates.length = 0; + this._fadings.length = 0; + }; + _proto.onPlay = function onPlay() { + _Playable.prototype.onPlay.call(this); + this._scheduleThis(); + }; + _proto.onPause = function onPause() { + _Playable.prototype.onPause.call(this); + for (var iManagedState = 0; iManagedState < this._managedStates.length; ++iManagedState) { + var state = this._managedStates[iManagedState].state; + if (state) { + state.pause(); + } + } + this._unscheduleThis(); + }; + _proto.onResume = function onResume() { + _Playable.prototype.onResume.call(this); + for (var iManagedState = 0; iManagedState < this._managedStates.length; ++iManagedState) { + var state = this._managedStates[iManagedState].state; + if (state) { + state.resume(); + } + } + this._scheduleThis(); + }; + _proto.onStop = function onStop() { + _Playable.prototype.onStop.call(this); + this.clear(); + }; + _proto._calculateWeights = function _calculateWeights(deltaTime) { + var managedStates = this._managedStates; + var fadings = this._fadings; + for (var iManagedState = 0; iManagedState < managedStates.length; ++iManagedState) { + var state = managedStates[iManagedState].state; + if (state) { + state.weight = 0; + } + } + var absoluteWeight = 1.0; + var deadFadingBegin = fadings.length; + for (var iFading = 0; iFading < fadings.length; ++iFading) { + var fading = fadings[iFading]; + fading.easeTime += deltaTime; + var relativeWeight = fading.easeDuration === 0 ? 1 : clamp01(fading.easeTime / fading.easeDuration); + var weight = relativeWeight * absoluteWeight; + absoluteWeight *= 1.0 - relativeWeight; + if (fading.target.state) { + fading.target.state.weight += weight; + } + if (fading.easeTime >= fading.easeDuration) { + deadFadingBegin = iFading + 1; + fading.easeTime = fading.easeDuration; + break; + } + } + if (deadFadingBegin !== fadings.length) { + for (var iDeadFading = deadFadingBegin; iDeadFading < fadings.length; ++iDeadFading) { + var deadFading = fadings[iDeadFading]; + --deadFading.target.reference; + if (deadFading.target.reference <= 0) { + if (deadFading.target.state) { + deadFading.target.state.stop(); + } + remove(this._managedStates, deadFading.target); + } + } + fadings.splice(deadFadingBegin); + } + }; + _proto._scheduleThis = function _scheduleThis() { + if (!this._scheduled) { + this._scheduler.addCrossFade(this); + this._scheduled = true; + } + }; + _proto._unscheduleThis = function _unscheduleThis() { + if (this._scheduled) { + this._scheduler.removeCrossFade(this); + this._scheduled = false; + } + }; + return CrossFade; + }(Playable); + + var _dec$V, _dec2$K, _dec3$C, _dec4$r, _dec5$q, _class$U, _class2$O, _initializer$J, _initializer2$D, _initializer3$w, _class3$m; + var Animation$1 = exports('a6', (_dec$V = ccclass$t('cc.Animation'), _dec2$K = executionOrder$1(99), _dec3$C = type$8([AnimationClip]), _dec4$r = type$8(AnimationClip), _dec5$q = type$8([AnimationClip]), _dec$V(_class$U = _dec2$K(_class$U = (_class2$O = (_class3$m = function (_Eventify) { + _inheritsLoose(Animation, _Eventify); + function Animation() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Eventify.call.apply(_Eventify, [this].concat(args)) || this; + _this.playOnLoad = _initializer$J && _initializer$J(); + _this._crossFade = new CrossFade(); + _this._nameToState = createMap(true); + _this._clips = _initializer2$D && _initializer2$D(); + _this._defaultClip = _initializer3$w && _initializer3$w(); + _this._hasBeenPlayed = false; + return _this; + } + var _proto = Animation.prototype; + _proto.onLoad = function onLoad() { + this.clips = this._clips; + for (var stateName in this._nameToState) { + var state = this._nameToState[stateName]; + state.initialize(this.node); + } + }; + _proto.start = function start() { + if (this.playOnLoad && !this._hasBeenPlayed && this._defaultClip) { + this.crossFade(this._defaultClip.name, 0); + } + }; + _proto.onEnable = function onEnable() { + this._crossFade.resume(); + }; + _proto.onDisable = function onDisable() { + this._crossFade.pause(); + }; + _proto.onDestroy = function onDestroy() { + this._crossFade.stop(); + for (var name in this._nameToState) { + var state = this._nameToState[name]; + state.destroy(); + } + this._nameToState = createMap(true); + }; + _proto.play = function play(name) { + this._hasBeenPlayed = true; + if (!name) { + if (!this._defaultClip) { + return; + } + name = this._defaultClip.name; + } + this.crossFade(name, 0); + }; + _proto.crossFade = function crossFade(name, duration) { + if (duration === void 0) { + duration = 0.3; + } + this._hasBeenPlayed = true; + var state = this._nameToState[name]; + if (state) { + this.doPlayOrCrossFade(state, duration); + } + }; + _proto.pause = function pause() { + this._crossFade.pause(); + }; + _proto.resume = function resume() { + this._crossFade.resume(); + }; + _proto.stop = function stop() { + this._crossFade.stop(); + }; + _proto.getState = function getState(name) { + var state = this._nameToState[name]; + if (state && !state.curveLoaded) { + state.initialize(this.node); + } + return state || null; + }; + _proto.createState = function createState(clip, name) { + name = name || clip.name; + this.removeState(name); + return this._doCreateState(clip, name); + }; + _proto.removeState = function removeState(name) { + var state = this._nameToState[name]; + if (state) { + state.allowLastFrameEvent(false); + state.stop(); + delete this._nameToState[name]; + } + }; + _proto.addClip = function addClip(clip, name) { + if (!contains$2(this._clips, clip)) { + this._clips.push(clip); + } + return this.createState(clip, name); + }; + _proto.removeClip = function removeClip(clip, force) { + var removalState; + for (var name in this._nameToState) { + var state = this._nameToState[name]; + var stateClip = state.clip; + if (stateClip === clip) { + removalState = state; + break; + } + } + if (clip === this._defaultClip) { + if (force) { + this._defaultClip = null; + } else { + { + warnID(3902); + } + return; + } + } + if (removalState && removalState.isPlaying) { + if (force) { + removalState.stop(); + } else { + { + warnID(3903); + } + return; + } + } + this._clips = this._clips.filter(function (item) { + return item !== clip; + }); + if (removalState) { + delete this._nameToState[removalState.name]; + } + }; + _proto.on = function on(type, callback, thisArg, once) { + var ret = _Eventify.prototype.on.call(this, type, callback, thisArg, once); + if (type === EventType$8.LASTFRAME) { + this._syncAllowLastFrameEvent(); + } + return ret; + }; + _proto.once = function once(type, callback, thisArg) { + var ret = _Eventify.prototype.once.call(this, type, callback, thisArg); + if (type === EventType$8.LASTFRAME) { + this._syncAllowLastFrameEvent(); + } + return ret; + }; + _proto.off = function off(type, callback, thisArg) { + _Eventify.prototype.off.call(this, type, callback, thisArg); + if (type === EventType$8.LASTFRAME) { + this._syncDisallowLastFrameEvent(); + } + }; + _proto._createState = function _createState(clip, name) { + return new AnimationState$1(clip, name); + }; + _proto._doCreateState = function _doCreateState(clip, name) { + var state = this._createState(clip, name); + state._setEventTarget(this); + state.allowLastFrameEvent(this.hasEventListener(EventType$8.LASTFRAME)); + if (this.node) { + state.initialize(this.node); + } + this._nameToState[state.name] = state; + return state; + }; + _proto.doPlayOrCrossFade = function doPlayOrCrossFade(state, duration) { + this._crossFade.play(); + this._crossFade.crossFade(state, duration); + }; + _proto._removeStateOfAutomaticClip = function _removeStateOfAutomaticClip(clip) { + for (var name in this._nameToState) { + var state = this._nameToState[name]; + if (equalClips(clip, state.clip)) { + state.stop(); + delete this._nameToState[name]; + } + } + }; + _proto._syncAllowLastFrameEvent = function _syncAllowLastFrameEvent() { + if (this.hasEventListener(EventType$8.LASTFRAME)) { + for (var stateName in this._nameToState) { + this._nameToState[stateName].allowLastFrameEvent(true); + } + } + }; + _proto._syncDisallowLastFrameEvent = function _syncDisallowLastFrameEvent() { + if (!this.hasEventListener(EventType$8.LASTFRAME)) { + for (var stateName in this._nameToState) { + this._nameToState[stateName].allowLastFrameEvent(false); + } + } + }; + _createClass(Animation, [{ + key: "clips", + get: function get() { + return this._clips; + }, + set: function set(value) { + var _this2 = this; + if (this._crossFade) { + this._crossFade.clear(); + } + for (var _iterator = _createForOfIteratorHelperLoose(this._clips), _step; !(_step = _iterator()).done;) { + var clip = _step.value; + if (clip) { + this._removeStateOfAutomaticClip(clip); + } + } + for (var _iterator2 = _createForOfIteratorHelperLoose(value), _step2; !(_step2 = _iterator2()).done;) { + var _clip = _step2.value; + if (_clip) { + this.createState(_clip); + } + } + var newDefaultClip = value.find(function (clip) { + return equalClips(clip, _this2._defaultClip); + }); + if (newDefaultClip) { + this._defaultClip = newDefaultClip; + } else { + this._defaultClip = null; + } + this._clips = value; + } + }, { + key: "defaultClip", + get: function get() { + return this._defaultClip; + }, + set: function set(value) { + this._defaultClip = value; + if (!value) { + return; + } + var isBoundedDefaultClip = this._clips.findIndex(function (clip) { + return equalClips(clip, value); + }) >= 0; + if (!isBoundedDefaultClip) { + this._clips.push(value); + this.createState(value); + } + } + }]); + return Animation; + }(Eventify(Component)), _class3$m.EventType = EventType$8, _class3$m), (_applyDecoratedDescriptor(_class2$O.prototype, "clips", [_dec3$C], Object.getOwnPropertyDescriptor(_class2$O.prototype, "clips"), _class2$O.prototype), _applyDecoratedDescriptor(_class2$O.prototype, "defaultClip", [_dec4$r], Object.getOwnPropertyDescriptor(_class2$O.prototype, "defaultClip"), _class2$O.prototype), _initializer$J = applyDecoratedInitializer(_class2$O.prototype, "playOnLoad", [serializable$9], function () { + return false; + }), _initializer2$D = applyDecoratedInitializer(_class2$O.prototype, "_clips", [_dec5$q], function () { + return []; + }), _initializer3$w = applyDecoratedInitializer(_class2$O.prototype, "_defaultClip", [serializable$9], function () { + return null; + })), _class2$O)) || _class$U) || _class$U)); + function equalClips(clip1, clip2) { + if (clip1 === clip2) { + return true; + } + return !!clip1 && !!clip2 && clip1._uuid === clip2._uuid && clip1._uuid; + } + legacyCC.Animation = Animation$1; + legacyCC.AnimationComponent = Animation$1; + setClassAlias(Animation$1, 'cc.AnimationComponent'); + + var m4_1 = new Mat4(); + function getPathFromRoot(target, root) { + var node = target; + var path = ''; + while (node !== null && node !== root) { + path = node.name + "/" + path; + node = node.parent; + } + return path.slice(0, -1); + } + function getWorldTransformUntilRoot(target, root, outMatrix) { + Mat4.identity(outMatrix); + while (target !== root) { + Mat4.fromRTS(m4_1, target.rotation, target.position, target.scale); + Mat4.multiply(outMatrix, m4_1, outMatrix); + target = target.parent; + } + return outMatrix; + } + + var AudioEvent; + (function (AudioEvent) { + AudioEvent["PLAYED"] = "play"; + AudioEvent["PAUSED"] = "pause"; + AudioEvent["STOPPED"] = "stop"; + AudioEvent["SEEKED"] = "seeked"; + AudioEvent["ENDED"] = "ended"; + AudioEvent["INTERRUPTION_BEGIN"] = "interruptionBegin"; + AudioEvent["INTERRUPTION_END"] = "interruptionEnd"; + AudioEvent["USER_GESTURE"] = "on_gesture"; + })(AudioEvent || (AudioEvent = {})); + var AudioType; + (function (AudioType) { + AudioType[AudioType["DOM_AUDIO"] = 0] = "DOM_AUDIO"; + AudioType[AudioType["WEB_AUDIO"] = 1] = "WEB_AUDIO"; + AudioType[AudioType["MINIGAME_AUDIO"] = 2] = "MINIGAME_AUDIO"; + AudioType[AudioType["NATIVE_AUDIO"] = 3] = "NATIVE_AUDIO"; + AudioType[AudioType["UNKNOWN_AUDIO"] = 4] = "UNKNOWN_AUDIO"; + })(AudioType || (AudioType = {})); + var AudioState; + (function (AudioState) { + AudioState[AudioState["INIT"] = 0] = "INIT"; + AudioState[AudioState["PLAYING"] = 1] = "PLAYING"; + AudioState[AudioState["PAUSED"] = 2] = "PAUSED"; + AudioState[AudioState["STOPPED"] = 3] = "STOPPED"; + AudioState[AudioState["INTERRUPTED"] = 4] = "INTERRUPTED"; + })(AudioState || (AudioState = {})); + var AudioPCMDataView = exports('ah', function () { + function AudioPCMDataView() { + this._bufferView = void 0; + this._normalizeFactor = 1; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 2) { + this._bufferView = args[0]; + this._normalizeFactor = args[1]; + } else { + var _arrayBuffer = args[0]; + var _Ctor = args[1]; + var _normalizeFactor = args[2]; + this._bufferView = new _Ctor(_arrayBuffer); + this._normalizeFactor = _normalizeFactor; + } + } + var _proto = AudioPCMDataView.prototype; + _proto.getData = function getData(offset) { + return this._bufferView[offset] * this._normalizeFactor; + }; + _createClass(AudioPCMDataView, [{ + key: "length", + get: function get() { + return this._bufferView.length; + } + }]); + return AudioPCMDataView; + }()); + + function removeUnneededCalls(instance) { + var size = instance._operationQueue.length; + var tmpQueue = instance._operationQueue.slice(); + var reserveOps = []; + var seekSearched = false; + for (var i = size - 1; i >= 0; i--) { + var opInfo = tmpQueue[i]; + if (opInfo.op === 'stop') { + reserveOps.push(opInfo); + break; + } else if (opInfo.op === 'seek') { + if (!seekSearched) { + reserveOps.push(opInfo); + seekSearched = true; + } + } else if (seekSearched) { + reserveOps.push(opInfo); + break; + } else if (reserveOps.length === 0) { + reserveOps.push(opInfo); + } + } + instance._operationQueue = reserveOps.reverse(); + } + var operationId = 0; + function _tryCallingRecursively(target, opInfo) { + var _opInfo$func; + if (opInfo.invoking) { + return; + } + opInfo.invoking = true; + (_opInfo$func = opInfo.func).call.apply(_opInfo$func, [target].concat(opInfo.args)).then(function () { + opInfo.invoking = false; + target._operationQueue.shift(); + target._eventTarget.emit(opInfo.id.toString()); + removeUnneededCalls(target); + var nextOpInfo = target._operationQueue[0]; + if (nextOpInfo) { + _tryCallingRecursively(target, nextOpInfo); + } + })["catch"](function (e) {}); + } + function enqueueOperation(target, propertyKey, descriptor) { + var originalOperation = descriptor.value; + descriptor.value = function () { + var _this = this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return new Promise(function (resolve) { + var id = operationId++; + var instance = _this; + instance._operationQueue.push({ + op: propertyKey, + id: id, + func: originalOperation, + args: args, + invoking: false + }); + instance._eventTarget.once(id.toString(), resolve); + var opInfo = instance._operationQueue[0]; + _tryCallingRecursively(instance, opInfo); + }); + }; + } + + var _class2$N; + function ensurePlaying(domAudio) { + return new Promise(function (resolve) { + var promise = domAudio.play(); + if (promise === undefined) { + return resolve(); + } + promise.then(resolve)["catch"](function () { + var onGesture = function onGesture() { + domAudio.play().then(function () { + canvas === null || canvas === void 0 ? void 0 : canvas.removeEventListener('touchend', onGesture, { + capture: true + }); + canvas === null || canvas === void 0 ? void 0 : canvas.removeEventListener('mouseup', onGesture, { + capture: true + }); + })["catch"](function (e) {}); + resolve(); + }; + var canvas = document.getElementById('GameCanvas'); + canvas === null || canvas === void 0 ? void 0 : canvas.addEventListener('touchend', onGesture, { + capture: true + }); + canvas === null || canvas === void 0 ? void 0 : canvas.addEventListener('mouseup', onGesture, { + capture: true + }); + }); + return null; + }); + } + var OneShotAudioDOM = function () { + function OneShotAudioDOM(nativeAudio, volume) { + this._domAudio = void 0; + this._onPlayCb = void 0; + this._onEndCb = void 0; + this._domAudio = nativeAudio; + nativeAudio.volume = volume; + } + var _proto = OneShotAudioDOM.prototype; + _proto.play = function play() { + var _this = this; + ensurePlaying(this._domAudio).then(function () { + var _this$onPlay; + (_this$onPlay = _this.onPlay) === null || _this$onPlay === void 0 ? void 0 : _this$onPlay.call(_this); + })["catch"](function (e) {}); + }; + _proto.stop = function stop() { + this._domAudio.pause(); + }; + _createClass(OneShotAudioDOM, [{ + key: "onPlay", + get: function get() { + return this._onPlayCb; + }, + set: function set(cb) { + this._onPlayCb = cb; + } + }, { + key: "onEnd", + get: function get() { + return this._onEndCb; + }, + set: function set(cb) { + if (this._onEndCb) { + this._domAudio.removeEventListener('ended', this._onEndCb); + } + this._onEndCb = cb; + if (cb) { + this._domAudio.addEventListener('ended', cb); + } + } + }]); + return OneShotAudioDOM; + }(); + var AudioPlayerDOM = (_class2$N = function () { + function AudioPlayerDOM(nativeAudio) { + var _this2 = this; + this._domAudio = void 0; + this._state = AudioState.INIT; + this._onEnded = void 0; + this._eventTarget = new EventTarget(); + this._operationQueue = []; + this._domAudio = nativeAudio; + game.on(Game.EVENT_PAUSE, this._onInterruptedBegin, this); + game.on(Game.EVENT_RESUME, this._onInterruptedEnd, this); + this._onEnded = function () { + _this2.seek(0)["catch"](function (e) {}); + _this2._state = AudioState.INIT; + _this2._eventTarget.emit(AudioEvent.ENDED); + }; + this._domAudio.addEventListener('ended', this._onEnded); + } + var _proto2 = AudioPlayerDOM.prototype; + _proto2.destroy = function destroy() { + game.off(Game.EVENT_PAUSE, this._onInterruptedBegin, this); + game.off(Game.EVENT_RESUME, this._onInterruptedEnd, this); + this._domAudio.removeEventListener('ended', this._onEnded); + this._domAudio = null; + }; + AudioPlayerDOM.load = function load(url) { + return new Promise(function (resolve) { + AudioPlayerDOM.loadNative(url).then(function (domAudio) { + resolve(new AudioPlayerDOM(domAudio)); + })["catch"](function (e) {}); + }); + }; + AudioPlayerDOM.loadNative = function loadNative(url) { + return new Promise(function (resolve, reject) { + var domAudio = document.createElement('audio'); + var loadedEvent = 'canplaythrough'; + if (systemInfo.os === OS.IOS) { + loadedEvent = 'loadedmetadata'; + } else if (systemInfo.browserType === BrowserType.FIREFOX) { + loadedEvent = 'canplay'; + } + var timer = setTimeout(function () { + if (domAudio.readyState === 0) { + failure(); + } else { + success(); + } + }, 8000); + var clearEvent = function clearEvent() { + clearTimeout(timer); + domAudio.removeEventListener(loadedEvent, success, false); + domAudio.removeEventListener('error', failure, false); + }; + var success = function success() { + clearEvent(); + resolve(domAudio); + }; + var failure = function failure() { + clearEvent(); + var message = "load audio failure - " + url; + reject(message); + }; + domAudio.addEventListener(loadedEvent, success, false); + domAudio.addEventListener('error', failure, false); + domAudio.src = url; + }); + }; + AudioPlayerDOM.loadOneShotAudio = function loadOneShotAudio(url, volume) { + return new Promise(function (resolve, reject) { + AudioPlayerDOM.loadNative(url).then(function (domAudio) { + var oneShotAudio = new OneShotAudioDOM(domAudio, volume); + resolve(oneShotAudio); + })["catch"](reject); + }); + }; + _proto2._onInterruptedBegin = function _onInterruptedBegin() { + var _this3 = this; + if (this._state === AudioState.PLAYING) { + this.pause().then(function () { + _this3._state = AudioState.INTERRUPTED; + _this3._eventTarget.emit(AudioEvent.INTERRUPTION_BEGIN); + })["catch"](function (e) {}); + } + }; + _proto2._onInterruptedEnd = function _onInterruptedEnd() { + var _this4 = this; + if (this._state === AudioState.INTERRUPTED) { + this.play().then(function () { + _this4._eventTarget.emit(AudioEvent.INTERRUPTION_END); + })["catch"](function (e) {}); + } + }; + _proto2.getPCMData = function getPCMData(channelIndex) { + return undefined; + }; + _proto2.seek = function seek(time) { + time = clamp$1(time, 0, this.duration); + this._domAudio.currentTime = time; + return Promise.resolve(); + }; + _proto2.play = function play() { + var _this5 = this; + return new Promise(function (resolve) { + ensurePlaying(_this5._domAudio).then(function () { + _this5._state = AudioState.PLAYING; + resolve(); + })["catch"](function (e) {}); + }); + }; + _proto2.pause = function pause() { + this._domAudio.pause(); + this._state = AudioState.PAUSED; + return Promise.resolve(); + }; + _proto2.stop = function stop() { + var _this6 = this; + return new Promise(function (resolve) { + _this6._domAudio.pause(); + _this6._domAudio.currentTime = 0; + _this6._state = AudioState.STOPPED; + resolve(); + }); + }; + _proto2.onInterruptionBegin = function onInterruptionBegin(cb) { + this._eventTarget.on(AudioEvent.INTERRUPTION_BEGIN, cb); + }; + _proto2.offInterruptionBegin = function offInterruptionBegin(cb) { + this._eventTarget.off(AudioEvent.INTERRUPTION_BEGIN, cb); + }; + _proto2.onInterruptionEnd = function onInterruptionEnd(cb) { + this._eventTarget.on(AudioEvent.INTERRUPTION_END, cb); + }; + _proto2.offInterruptionEnd = function offInterruptionEnd(cb) { + this._eventTarget.off(AudioEvent.INTERRUPTION_END, cb); + }; + _proto2.onEnded = function onEnded(cb) { + this._eventTarget.on(AudioEvent.ENDED, cb); + }; + _proto2.offEnded = function offEnded(cb) { + this._eventTarget.off(AudioEvent.ENDED, cb); + }; + _createClass(AudioPlayerDOM, [{ + key: "src", + get: function get() { + return this._domAudio ? this._domAudio.src : ''; + } + }, { + key: "type", + get: function get() { + return AudioType.DOM_AUDIO; + } + }, { + key: "state", + get: function get() { + return this._state; + } + }, { + key: "loop", + get: function get() { + return this._domAudio.loop; + }, + set: function set(val) { + this._domAudio.loop = val; + } + }, { + key: "volume", + get: function get() { + return this._domAudio.volume; + }, + set: function set(val) { + val = clamp01(val); + this._domAudio.volume = val; + } + }, { + key: "duration", + get: function get() { + return this._domAudio.duration; + } + }, { + key: "currentTime", + get: function get() { + return this._domAudio.currentTime; + } + }, { + key: "sampleRate", + get: function get() { + return 0; + } + }]); + return AudioPlayerDOM; + }(), (_applyDecoratedDescriptor(_class2$N.prototype, "seek", [enqueueOperation], Object.getOwnPropertyDescriptor(_class2$N.prototype, "seek"), _class2$N.prototype), _applyDecoratedDescriptor(_class2$N.prototype, "play", [enqueueOperation], Object.getOwnPropertyDescriptor(_class2$N.prototype, "play"), _class2$N.prototype), _applyDecoratedDescriptor(_class2$N.prototype, "pause", [enqueueOperation], Object.getOwnPropertyDescriptor(_class2$N.prototype, "pause"), _class2$N.prototype), _applyDecoratedDescriptor(_class2$N.prototype, "stop", [enqueueOperation], Object.getOwnPropertyDescriptor(_class2$N.prototype, "stop"), _class2$N.prototype)), _class2$N); + + var AudioTimer = function () { + function AudioTimer(nativeAudio) { + this._nativeAudio = void 0; + this._startTime = 0; + this._startOffset = 0; + this._isPaused = true; + this._nativeAudio = nativeAudio; + } + var _proto = AudioTimer.prototype; + _proto.destroy = function destroy() { + this._nativeAudio = undefined; + }; + _proto._now = function _now() { + return performance.now() / 1000; + }; + _proto._calculateCurrentTime = function _calculateCurrentTime() { + var timePassed = this._now() - this._startTime; + var currentTime = this._startOffset + timePassed; + if (currentTime >= this.duration) { + this._startTime = this._now(); + this._startOffset = 0; + } + return currentTime % this.duration; + }; + _proto.start = function start() { + this._isPaused = false; + this._startTime = this._now(); + }; + _proto.pause = function pause() { + if (this._isPaused) { + return; + } + this._isPaused = true; + this._startOffset = this._calculateCurrentTime(); + }; + _proto.stop = function stop() { + this._isPaused = true; + this._startOffset = 0; + }; + _proto.seek = function seek(time) { + this._startTime = this._now(); + this._startOffset = clamp$1(time, 0, this.duration); + }; + _createClass(AudioTimer, [{ + key: "duration", + get: function get() { + return this._nativeAudio.duration; + } + }, { + key: "currentTime", + get: function get() { + if (this._isPaused) { + return this._startOffset; + } else { + return this._calculateCurrentTime(); + } + } + }]); + return AudioTimer; + }(); + + var AudioBufferManager = function () { + function AudioBufferManager() { + this._audioBufferDataMap = {}; + } + var _proto = AudioBufferManager.prototype; + _proto.addCache = function addCache(url, audioBuffer) { + var audioBufferData = this._audioBufferDataMap[url]; + if (audioBufferData) { + console.warn("Audio buffer " + url + " has been cached"); + return; + } + this._audioBufferDataMap[url] = { + usedCount: 1, + audioBuffer: audioBuffer + }; + }; + _proto.retainCache = function retainCache(url) { + var audioBufferData = this._audioBufferDataMap[url]; + if (!audioBufferData) { + console.warn("Audio buffer cache " + url + " has not been added."); + return; + } + audioBufferData.usedCount++; + }; + _proto.getCache = function getCache(url) { + var audioBufferData = this._audioBufferDataMap[url]; + return audioBufferData === null || audioBufferData === void 0 ? void 0 : audioBufferData.audioBuffer; + }; + _proto.tryReleasingCache = function tryReleasingCache(url) { + var audioBufferData = this._audioBufferDataMap[url]; + if (!audioBufferData) { + console.warn("Audio buffer cache " + url + " has not been added."); + return; + } + if (--audioBufferData.usedCount <= 0) { + delete this._audioBufferDataMap[url]; + } + }; + return AudioBufferManager; + }(); + var audioBufferManager = new AudioBufferManager(); + + var _class3$l; + var AudioContextClass = window.AudioContext || window.webkitAudioContext || window.mozAudioContext; + var _contextRunningEvent = 'on-context-running'; + var AudioContextAgent = function () { + function AudioContextAgent() { + var _this = this; + this._eventTarget = void 0; + this._context = void 0; + this._isRunning = false; + this._context = new (window.AudioContext || window.webkitAudioContext || window.mozAudioContext)(); + this._eventTarget = new EventTarget(); + this._context.onstatechange = function () { + if (_this._context.state === 'running') { + _this._isRunning = true; + _this._eventTarget.emit(_contextRunningEvent); + } else { + _this._isRunning = false; + } + }; + } + var _proto = AudioContextAgent.prototype; + _proto.onceRunning = function onceRunning(cb, target) { + this._eventTarget.once(_contextRunningEvent, cb, target); + }; + _proto.offRunning = function offRunning(cb, target) { + this._eventTarget.off(_contextRunningEvent, cb, target); + }; + _proto.decodeAudioData = function decodeAudioData(audioData) { + var _this2 = this; + return new Promise(function (resolve) { + var promise = _this2._context.decodeAudioData(audioData, function (audioBuffer) { + resolve(audioBuffer); + }, function (err) { + console.error('failed to load Web Audio', err); + }); + promise === null || promise === void 0 ? void 0 : promise["catch"](function (e) { + warn('decodeAudioData error', e); + }); + }); + }; + _proto.runContext = function runContext() { + var _this3 = this; + return new Promise(function (resolve) { + if (_this3.isRunning) { + resolve(); + return; + } + var context = _this3._context; + if (!context.resume) { + resolve(); + return; + } + context.resume()["catch"](function (e) { + warn('runContext error', e); + }); + if (context.state === 'running') { + resolve(); + return; + } + var canvas = document.getElementById('GameCanvas'); + var onGesture = function onGesture() { + context.resume().then(function () { + canvas === null || canvas === void 0 ? void 0 : canvas.removeEventListener('touchend', onGesture, { + capture: true + }); + canvas === null || canvas === void 0 ? void 0 : canvas.removeEventListener('mouseup', onGesture, { + capture: true + }); + resolve(); + })["catch"](function (e) { + warn('onGesture resume error', e); + }); + }; + canvas === null || canvas === void 0 ? void 0 : canvas.addEventListener('touchend', onGesture, { + capture: true + }); + canvas === null || canvas === void 0 ? void 0 : canvas.addEventListener('mouseup', onGesture, { + capture: true + }); + }); + }; + _proto.createBufferSource = function createBufferSource(audioBuffer, loop) { + var sourceBufferNode = this._context.createBufferSource(); + if (audioBuffer !== undefined) { + sourceBufferNode.buffer = audioBuffer; + } + if (loop !== undefined) { + sourceBufferNode.loop = loop; + } + return sourceBufferNode; + }; + _proto.createGain = function createGain(volume) { + if (volume === void 0) { + volume = 1; + } + var gainNode = this._context.createGain(); + this.setGainValue(gainNode, volume); + return gainNode; + }; + _proto.setGainValue = function setGainValue(gain, volume) { + if (gain.gain.setTargetAtTime) { + try { + gain.gain.setTargetAtTime(volume, this._context.currentTime, 0); + } catch (e) { + gain.gain.setTargetAtTime(volume, this._context.currentTime, 0.01); + } + } else { + gain.gain.value = volume; + } + }; + _proto.connectContext = function connectContext(audioNode) { + if (!this._context) { + return; + } + audioNode.connect(this._context.destination); + }; + _createClass(AudioContextAgent, [{ + key: "isRunning", + get: function get() { + return this._isRunning; + } + }, { + key: "currentTime", + get: function get() { + return this._context.currentTime; + } + }]); + return AudioContextAgent; + }(); + AudioContextAgent.support = !!AudioContextClass; + var audioContextAgent; + if (AudioContextAgent.support) { + audioContextAgent = new AudioContextAgent(); + } + var OneShotAudioWeb = function () { + function OneShotAudioWeb(audioBuffer, volume, url) { + this._duration = void 0; + this._bufferSourceNode = void 0; + this._onPlayCb = void 0; + this._currentTimer = 0; + this._url = void 0; + this._onEndCb = void 0; + this._duration = audioBuffer.duration; + this._url = url; + this._bufferSourceNode = audioContextAgent.createBufferSource(audioBuffer, false); + var gainNode = audioContextAgent.createGain(volume); + this._bufferSourceNode.connect(gainNode); + audioContextAgent.connectContext(gainNode); + } + var _proto2 = OneShotAudioWeb.prototype; + _proto2.play = function play() { + var _this4 = this; + this._bufferSourceNode.start(); + audioContextAgent.runContext().then(function () { + var _this4$onPlay; + (_this4$onPlay = _this4.onPlay) === null || _this4$onPlay === void 0 ? void 0 : _this4$onPlay.call(_this4); + _this4._currentTimer = window.setTimeout(function () { + var _this4$onEnd; + audioBufferManager.tryReleasingCache(_this4._url); + (_this4$onEnd = _this4.onEnd) === null || _this4$onEnd === void 0 ? void 0 : _this4$onEnd.call(_this4); + }, _this4._duration * 1000); + })["catch"](function (e) { + warn('play error', e); + }); + }; + _proto2.stop = function stop() { + clearTimeout(this._currentTimer); + audioBufferManager.tryReleasingCache(this._url); + this._bufferSourceNode.stop(); + this._bufferSourceNode.disconnect(); + this._bufferSourceNode.buffer = null; + }; + _createClass(OneShotAudioWeb, [{ + key: "onPlay", + get: function get() { + return this._onPlayCb; + }, + set: function set(cb) { + this._onPlayCb = cb; + } + }, { + key: "onEnd", + get: function get() { + return this._onEndCb; + }, + set: function set(cb) { + this._onEndCb = cb; + } + }]); + return OneShotAudioWeb; + }(); + var AudioPlayerWeb = (_class3$l = function () { + function AudioPlayerWeb(audioBuffer, url) { + this._src = void 0; + this._audioBuffer = void 0; + this._sourceNode = void 0; + this._gainNode = void 0; + this._currentTimer = 0; + this._volume = 1; + this._loop = false; + this._state = AudioState.INIT; + this._audioTimer = void 0; + this._runningCallback = void 0; + this._eventTarget = new EventTarget(); + this._operationQueue = []; + this._audioBuffer = audioBuffer; + this._audioTimer = new AudioTimer(audioBuffer); + this._gainNode = audioContextAgent.createGain(); + audioContextAgent.connectContext(this._gainNode); + this._src = url; + game.on(Game.EVENT_PAUSE, this._onInterruptedBegin, this); + game.on(Game.EVENT_RESUME, this._onInterruptedEnd, this); + } + var _proto3 = AudioPlayerWeb.prototype; + _proto3.destroy = function destroy() { + this._audioTimer.destroy(); + if (this._audioBuffer) { + this._audioBuffer = null; + } + audioBufferManager.tryReleasingCache(this._src); + game.off(Game.EVENT_PAUSE, this._onInterruptedBegin, this); + game.off(Game.EVENT_RESUME, this._onInterruptedEnd, this); + this.offRunning(); + }; + AudioPlayerWeb.load = function load(url) { + return new Promise(function (resolve) { + AudioPlayerWeb.loadNative(url).then(function (audioBuffer) { + resolve(new AudioPlayerWeb(audioBuffer, url)); + })["catch"](function (e) { + warn('load error', url, e); + }); + }); + }; + AudioPlayerWeb.loadNative = function loadNative(url) { + return new Promise(function (resolve, reject) { + var cachedAudioBuffer = audioBufferManager.getCache(url); + if (cachedAudioBuffer) { + audioBufferManager.retainCache(url); + resolve(cachedAudioBuffer); + return; + } + var xhr = new XMLHttpRequest(); + var errInfo = "load audio failed: " + url + ", status: "; + xhr.open('GET', url, true); + xhr.responseType = 'arraybuffer'; + xhr.onload = function () { + if (xhr.status === 200 || xhr.status === 0) { + audioContextAgent.decodeAudioData(xhr.response).then(function (decodedAudioBuffer) { + audioBufferManager.addCache(url, decodedAudioBuffer); + resolve(decodedAudioBuffer); + })["catch"](function (e) { + warn('loadNative error', url, e); + }); + } else { + reject(new Error("" + errInfo + xhr.status + "(no response)")); + } + }; + xhr.onerror = function () { + reject(new Error("" + errInfo + xhr.status + "(error)")); + }; + xhr.ontimeout = function () { + reject(new Error("" + errInfo + xhr.status + "(time out)")); + }; + xhr.onabort = function () { + reject(new Error("" + errInfo + xhr.status + "(abort)")); + }; + xhr.send(null); + }); + }; + AudioPlayerWeb.loadOneShotAudio = function loadOneShotAudio(url, volume) { + return new Promise(function (resolve, reject) { + AudioPlayerWeb.loadNative(url).then(function (audioBuffer) { + var oneShotAudio = new OneShotAudioWeb(audioBuffer, volume, url); + resolve(oneShotAudio); + })["catch"](reject); + }); + }; + _proto3.getPCMData = function getPCMData(channelIndex) { + return new AudioPCMDataView(this._audioBuffer.getChannelData(channelIndex), 1); + }; + _proto3._onInterruptedBegin = function _onInterruptedBegin() { + var _this5 = this; + if (this._state === AudioState.PLAYING) { + this.pause().then(function () { + _this5._state = AudioState.INTERRUPTED; + _this5._eventTarget.emit(AudioEvent.INTERRUPTION_BEGIN); + })["catch"](function (e) { + warn('_onInterruptedBegin error', e); + }); + } + }; + _proto3._onInterruptedEnd = function _onInterruptedEnd() { + var _this6 = this; + if (this._state === AudioState.INTERRUPTED) { + this.play().then(function () { + _this6._eventTarget.emit(AudioEvent.INTERRUPTION_END); + })["catch"](function (e) { + warn('_onInterruptedEnd error', e); + }); + } + }; + _proto3.offRunning = function offRunning() { + if (this._runningCallback) { + audioContextAgent.offRunning(this._runningCallback); + this._runningCallback = undefined; + } + }; + _proto3.seek = function seek(time) { + var _this7 = this; + return new Promise(function (resolve) { + _this7.offRunning(); + _this7._audioTimer.seek(time); + if (_this7._state === AudioState.PLAYING) { + _this7._doPlay().then(resolve)["catch"](function (e) { + warn('seek error', e); + }); + } else { + resolve(); + } + }); + }; + _proto3.play = function play() { + this.offRunning(); + return this._doPlay(); + }; + _proto3._doPlay = function _doPlay() { + var _this8 = this; + return new Promise(function (resolve) { + if (audioContextAgent.isRunning) { + _this8._startSourceNode(); + resolve(); + } else { + _this8.offRunning(); + _this8._runningCallback = function () { + _this8._startSourceNode(); + resolve(); + }; + audioContextAgent.onceRunning(_this8._runningCallback); + audioContextAgent.runContext()["catch"](function (e) { + warn('doPlay error', e); + }); + } + }); + }; + _proto3._startSourceNode = function _startSourceNode() { + var _this9 = this; + this._stopSourceNode(); + this._sourceNode = audioContextAgent.createBufferSource(this._audioBuffer, this.loop); + this._sourceNode.connect(this._gainNode); + this._sourceNode.loop = this._loop; + this._sourceNode.start(0, this._audioTimer.currentTime); + this._state = AudioState.PLAYING; + this._audioTimer.start(); + var checkEnded = function checkEnded() { + if (_this9.loop) { + _this9._currentTimer = window.setTimeout(checkEnded, _this9._audioBuffer.duration * 1000); + } else { + _this9._audioTimer.stop(); + _this9._eventTarget.emit(AudioEvent.ENDED); + _this9._state = AudioState.INIT; + } + }; + window.clearTimeout(this._currentTimer); + this._currentTimer = window.setTimeout(checkEnded, (this._audioBuffer.duration - this._audioTimer.currentTime) * 1000); + }; + _proto3._stopSourceNode = function _stopSourceNode() { + try { + if (this._sourceNode) { + this._sourceNode.stop(); + this._sourceNode.disconnect(); + this._sourceNode.buffer = null; + this._sourceNode = undefined; + } + } catch (e) {} + }; + _proto3.pause = function pause() { + this.offRunning(); + if (this._state !== AudioState.PLAYING || !this._sourceNode) { + return Promise.resolve(); + } + this._audioTimer.pause(); + this._state = AudioState.PAUSED; + window.clearTimeout(this._currentTimer); + this._stopSourceNode(); + return Promise.resolve(); + }; + _proto3.stop = function stop() { + this.offRunning(); + if (!this._sourceNode) { + this._audioTimer.stop(); + this._state = AudioState.STOPPED; + return Promise.resolve(); + } + this._audioTimer.stop(); + this._state = AudioState.STOPPED; + window.clearTimeout(this._currentTimer); + this._stopSourceNode(); + return Promise.resolve(); + }; + _proto3.onInterruptionBegin = function onInterruptionBegin(cb) { + this._eventTarget.on(AudioEvent.INTERRUPTION_BEGIN, cb); + }; + _proto3.offInterruptionBegin = function offInterruptionBegin(cb) { + this._eventTarget.off(AudioEvent.INTERRUPTION_BEGIN, cb); + }; + _proto3.onInterruptionEnd = function onInterruptionEnd(cb) { + this._eventTarget.on(AudioEvent.INTERRUPTION_END, cb); + }; + _proto3.offInterruptionEnd = function offInterruptionEnd(cb) { + this._eventTarget.off(AudioEvent.INTERRUPTION_END, cb); + }; + _proto3.onEnded = function onEnded(cb) { + this._eventTarget.on(AudioEvent.ENDED, cb); + }; + _proto3.offEnded = function offEnded(cb) { + this._eventTarget.off(AudioEvent.ENDED, cb); + }; + _createClass(AudioPlayerWeb, [{ + key: "sampleRate", + get: function get() { + return this._audioBuffer.sampleRate; + } + }, { + key: "src", + get: function get() { + return this._src; + } + }, { + key: "type", + get: function get() { + return AudioType.WEB_AUDIO; + } + }, { + key: "state", + get: function get() { + return this._state; + } + }, { + key: "loop", + get: function get() { + return this._loop; + }, + set: function set(val) { + this._loop = val; + if (this._sourceNode) { + this._sourceNode.loop = val; + } + } + }, { + key: "volume", + get: function get() { + return this._volume; + }, + set: function set(val) { + val = clamp01(val); + this._volume = val; + audioContextAgent.setGainValue(this._gainNode, val); + } + }, { + key: "duration", + get: function get() { + return this._audioBuffer.duration; + } + }, { + key: "currentTime", + get: function get() { + return this._audioTimer.currentTime; + } + }]); + return AudioPlayerWeb; + }(), (_applyDecoratedDescriptor(_class3$l.prototype, "seek", [enqueueOperation], Object.getOwnPropertyDescriptor(_class3$l.prototype, "seek"), _class3$l.prototype), _applyDecoratedDescriptor(_class3$l.prototype, "play", [enqueueOperation], Object.getOwnPropertyDescriptor(_class3$l.prototype, "play"), _class3$l.prototype), _applyDecoratedDescriptor(_class3$l.prototype, "pause", [enqueueOperation], Object.getOwnPropertyDescriptor(_class3$l.prototype, "pause"), _class3$l.prototype), _applyDecoratedDescriptor(_class3$l.prototype, "stop", [enqueueOperation], Object.getOwnPropertyDescriptor(_class3$l.prototype, "stop"), _class3$l.prototype)), _class3$l); + + var OneShotAudio = function () { + function OneShotAudio(audio) { + this._audio = void 0; + this._audio = audio; + } + var _proto = OneShotAudio.prototype; + _proto.play = function play() { + this._audio.play(); + }; + _proto.stop = function stop() { + this._audio.stop(); + }; + _createClass(OneShotAudio, [{ + key: "onPlay", + get: function get() { + return this._audio.onPlay; + }, + set: function set(v) { + this._audio.onPlay = v; + } + }, { + key: "onEnd", + get: function get() { + return this._audio.onEnd; + }, + set: function set(v) { + this._audio.onEnd = v; + } + }]); + return OneShotAudio; + }(); + var AudioPlayer = function () { + function AudioPlayer(player) { + this._player = void 0; + this._player = player; + } + AudioPlayer.load = function load(url, opts) { + return new Promise(function (resolve) { + if ((opts === null || opts === void 0 ? void 0 : opts.audioLoadMode) === AudioType.DOM_AUDIO || !AudioContextAgent.support) { + if (!AudioContextAgent.support) { + warnID(5201); + } + AudioPlayerDOM.load(url).then(function (domPlayer) { + resolve(new AudioPlayer(domPlayer)); + })["catch"](function (e) {}); + } else { + AudioPlayerWeb.load(url).then(function (webPlayer) { + resolve(new AudioPlayer(webPlayer)); + })["catch"](function (e) {}); + } + }); + }; + var _proto2 = AudioPlayer.prototype; + _proto2.destroy = function destroy() { + this._player.destroy(); + }; + AudioPlayer.loadNative = function loadNative(url, opts) { + if ((opts === null || opts === void 0 ? void 0 : opts.audioLoadMode) === AudioType.DOM_AUDIO || !AudioContextAgent.support) { + if (!AudioContextAgent.support) { + warnID(5201); + } + return AudioPlayerDOM.loadNative(url); + } + return AudioPlayerWeb.loadNative(url); + }; + AudioPlayer.loadOneShotAudio = function loadOneShotAudio(url, volume, opts) { + return new Promise(function (resolve, reject) { + if ((opts === null || opts === void 0 ? void 0 : opts.audioLoadMode) === AudioType.DOM_AUDIO || !AudioContextAgent.support) { + if (!AudioContextAgent.support) { + warnID(5201); + } + AudioPlayerDOM.loadOneShotAudio(url, volume).then(function (oneShotAudioDOM) { + resolve(new OneShotAudio(oneShotAudioDOM)); + })["catch"](reject); + } else { + AudioPlayerWeb.loadOneShotAudio(url, volume).then(function (oneShotAudioWeb) { + resolve(new OneShotAudio(oneShotAudioWeb)); + })["catch"](reject); + } + }); + }; + _proto2.getPCMData = function getPCMData(channelIndex) { + return this._player.getPCMData(channelIndex); + }; + _proto2.seek = function seek(time) { + return this._player.seek(time); + }; + _proto2.play = function play() { + return this._player.play(); + }; + _proto2.pause = function pause() { + return this._player.pause(); + }; + _proto2.stop = function stop() { + return this._player.stop(); + }; + _proto2.onInterruptionBegin = function onInterruptionBegin(cb) { + this._player.onInterruptionBegin(cb); + }; + _proto2.offInterruptionBegin = function offInterruptionBegin(cb) { + this._player.offInterruptionBegin(cb); + }; + _proto2.onInterruptionEnd = function onInterruptionEnd(cb) { + this._player.onInterruptionEnd(cb); + }; + _proto2.offInterruptionEnd = function offInterruptionEnd(cb) { + this._player.offInterruptionEnd(cb); + }; + _proto2.onEnded = function onEnded(cb) { + this._player.onEnded(cb); + }; + _proto2.offEnded = function offEnded(cb) { + this._player.offEnded(cb); + }; + _createClass(AudioPlayer, [{ + key: "src", + get: function get() { + return this._player.src; + } + }, { + key: "type", + get: function get() { + return this._player.type; + } + }, { + key: "state", + get: function get() { + return this._player.state; + } + }, { + key: "loop", + get: function get() { + return this._player.loop; + }, + set: function set(val) { + this._player.loop = val; + } + }, { + key: "volume", + get: function get() { + return this._player.volume; + }, + set: function set(val) { + this._player.volume = val; + } + }, { + key: "duration", + get: function get() { + return this._player.duration; + } + }, { + key: "currentTime", + get: function get() { + return this._player.currentTime; + } + }, { + key: "sampleRate", + get: function get() { + return this._player.sampleRate; + } + }]); + return AudioPlayer; + }(); + AudioPlayer.maxAudioChannel = 24; + + var _dec$U, _class$T, _class2$M, _initializer$I, _class3$k; + var AudioClip = exports('ag', (_dec$U = ccclass$t('cc.AudioClip'), _dec$U(_class$T = (_class2$M = (_class3$k = function (_Asset) { + _inheritsLoose(AudioClip, _Asset); + function AudioClip() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Asset.call.apply(_Asset, [this].concat(args)) || this; + _this._duration = _initializer$I && _initializer$I(); + _this._loadMode = AudioType.UNKNOWN_AUDIO; + _this._meta = null; + _this._player = null; + return _this; + } + var _proto = AudioClip.prototype; + _proto.destroy = function destroy() { + var _this$_player; + var destroyResult = _Asset.prototype.destroy.call(this); + (_this$_player = this._player) === null || _this$_player === void 0 ? void 0 : _this$_player.destroy(); + this._player = null; + if (this._meta) { + this._meta.player = null; + } + return destroyResult; + }; + _proto.validate = function validate() { + return !!this._meta; + }; + _proto.getDuration = function getDuration() { + if (this._duration) { + return this._duration; + } + return this._meta ? this._meta.duration : 0; + }; + _proto.getCurrentTime = function getCurrentTime() { + return this._player ? this._player.currentTime : 0; + }; + _proto.getVolume = function getVolume() { + return this._player ? this._player.volume : 0; + }; + _proto.getLoop = function getLoop() { + return this._player ? this._player.loop : false; + }; + _proto.setCurrentTime = function setCurrentTime(time) { + var _this$_player2; + (_this$_player2 = this._player) === null || _this$_player2 === void 0 ? void 0 : _this$_player2.seek(time)["catch"](function (e) {}); + }; + _proto.setVolume = function setVolume(volume) { + if (this._player) { + this._player.volume = volume; + } + }; + _proto.setLoop = function setLoop(loop) { + if (this._player) { + this._player.loop = loop; + } + }; + _proto.play = function play() { + var _this$_player3; + (_this$_player3 = this._player) === null || _this$_player3 === void 0 ? void 0 : _this$_player3.play()["catch"](function (e) {}); + }; + _proto.pause = function pause() { + var _this$_player4; + (_this$_player4 = this._player) === null || _this$_player4 === void 0 ? void 0 : _this$_player4.pause()["catch"](function (e) {}); + }; + _proto.stop = function stop() { + var _this$_player5; + (_this$_player5 = this._player) === null || _this$_player5 === void 0 ? void 0 : _this$_player5.stop()["catch"](function (e) {}); + }; + _proto.playOneShot = function playOneShot(volume) { + if (volume === void 0) { + volume = 1; + } + if (this._nativeAsset) { + AudioPlayer.loadOneShotAudio(this._nativeAsset.url, volume).then(function (oneShotAudio) { + oneShotAudio.play(); + })["catch"](function (e) {}); + } + }; + _createClass(AudioClip, [{ + key: "duration", + set: function set(v) { + this._duration = v; + } + }, { + key: "_nativeAsset", + get: function get() { + return this._meta; + }, + set: function set(meta) { + this._meta = meta; + if (meta) { + this._loadMode = meta.type; + this._player = meta.player; + } else { + this._meta = null; + this._loadMode = AudioType.UNKNOWN_AUDIO; + this._duration = 0; + } + } + }, { + key: "_nativeDep", + get: function get() { + return { + uuid: this._uuid, + audioLoadMode: this.loadMode, + ext: this._native, + __isNative__: true + }; + } + }, { + key: "loadMode", + get: function get() { + return this._loadMode; + } + }, { + key: "state", + get: function get() { + return this._player ? this._player.state : AudioState.INIT; + } + }]); + return AudioClip; + }(Asset), _class3$k.AudioType = AudioType, _class3$k), (_initializer$I = applyDecoratedInitializer(_class2$M.prototype, "_duration", [serializable$9], function () { + return 0; + }), _applyDecoratedDescriptor(_class2$M.prototype, "_nativeDep", [override$1], Object.getOwnPropertyDescriptor(_class2$M.prototype, "_nativeDep"), _class2$M.prototype)), _class2$M)) || _class$T)); + legacyCC.AudioClip = AudioClip; + + function loadAudioPlayer(url, options, onComplete) { + AudioPlayer.load(url, { + audioLoadMode: options.audioLoadMode + }).then(function (player) { + var audioMeta = { + player: player, + url: url, + duration: player.duration, + type: player.type + }; + onComplete(null, audioMeta); + })["catch"](function (err) { + onComplete(err); + }); + } + function createAudioClip(id, data, options, onComplete) { + var out = new AudioClip(); + out._nativeUrl = id; + out._nativeAsset = data; + out.duration = data.duration; + onComplete(null, out); + } + downloader$1.register({ + '.mp3': loadAudioPlayer, + '.ogg': loadAudioPlayer, + '.wav': loadAudioPlayer, + '.m4a': loadAudioPlayer + }); + factory.register({ + '.mp3': createAudioClip, + '.ogg': createAudioClip, + '.wav': createAudioClip, + '.m4a': createAudioClip + }); + + var AudioManager = function () { + function AudioManager() { + this._oneShotAudioInfoList = []; + this._audioPlayerInfoList = []; + } + var _proto = AudioManager.prototype; + _proto._findIndex = function _findIndex(audioInfoList, audio) { + return audioInfoList.findIndex(function (item) { + return item.audio === audio; + }); + }; + _proto._tryAddPlaying = function _tryAddPlaying(audioInfoList, audio) { + var idx = this._findIndex(audioInfoList, audio); + if (idx > -1) { + audioInfoList[idx].playTime = performance.now(); + return false; + } + audioInfoList.push({ + audio: audio, + playTime: performance.now() + }); + return true; + }; + _proto.addPlaying = function addPlaying(audio) { + if (audio instanceof AudioPlayer) { + this._tryAddPlaying(this._audioPlayerInfoList, audio); + } else { + this._tryAddPlaying(this._oneShotAudioInfoList, audio); + } + }; + _proto._tryRemovePlaying = function _tryRemovePlaying(audioInfoList, audio) { + var idx = this._findIndex(audioInfoList, audio); + if (idx === -1) { + return false; + } + fastRemoveAt$2(audioInfoList, idx); + return true; + }; + _proto.removePlaying = function removePlaying(audio) { + if (audio instanceof AudioPlayer) { + this._tryRemovePlaying(this._audioPlayerInfoList, audio); + } else { + this._tryRemovePlaying(this._oneShotAudioInfoList, audio); + } + }; + _proto.discardOnePlayingIfNeeded = function discardOnePlayingIfNeeded() { + if (this._audioPlayerInfoList.length + this._oneShotAudioInfoList.length < AudioPlayer.maxAudioChannel) { + return; + } + var audioInfoToDiscard; + if (this._oneShotAudioInfoList.length > 0) { + this._oneShotAudioInfoList.forEach(function (audioInfo) { + if (!audioInfoToDiscard || audioInfo.playTime < audioInfoToDiscard.playTime) { + audioInfoToDiscard = audioInfo; + } + }); + } else { + this._audioPlayerInfoList.forEach(function (audioInfo) { + if (!audioInfoToDiscard || audioInfo.playTime < audioInfoToDiscard.playTime) { + audioInfoToDiscard = audioInfo; + } + }); + } + if (audioInfoToDiscard) { + audioInfoToDiscard.audio.stop(); + this.removePlaying(audioInfoToDiscard.audio); + } + }; + _proto.pause = function pause() { + this._oneShotAudioInfoList.forEach(function (info) { + info.audio.stop(); + }); + this._audioPlayerInfoList.forEach(function (info) { + info.audio.pause()["catch"](function (e) {}); + }); + }; + _proto.resume = function resume() { + this._audioPlayerInfoList.forEach(function (info) { + info.audio.play()["catch"](function (e) {}); + }); + }; + return AudioManager; + }(); + var audioManager = new AudioManager(); + + var _dec$T, _dec2$J, _dec3$B, _class$S, _class2$L, _initializer$H, _initializer2$C, _initializer3$v, _initializer4$s, _class3$j; + var _LOADED_EVENT = 'audiosource-loaded'; + var AudioSourceEventType; + (function (AudioSourceEventType) { + AudioSourceEventType["STARTED"] = "started"; + AudioSourceEventType["ENDED"] = "ended"; + })(AudioSourceEventType || (AudioSourceEventType = {})); + var AudioOperationType; + (function (AudioOperationType) { + AudioOperationType["PLAY"] = "play"; + AudioOperationType["STOP"] = "stop"; + AudioOperationType["PAUSE"] = "pause"; + AudioOperationType["SEEK"] = "seek"; + })(AudioOperationType || (AudioOperationType = {})); + var AudioSource = exports('af', (_dec$T = ccclass$t('cc.AudioSource'), _dec2$J = type$8(AudioClip), _dec3$B = type$8(AudioClip), _dec$T(_class$S = (_class2$L = (_class3$j = function (_Component) { + _inheritsLoose(AudioSource, _Component); + function AudioSource() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this._clip = _initializer$H && _initializer$H(); + _this._player = null; + _this._hasRegisterListener = false; + _this._loop = _initializer2$C && _initializer2$C(); + _this._playOnAwake = _initializer3$v && _initializer3$v(); + _this._volume = _initializer4$s && _initializer4$s(); + _this._cachedCurrentTime = -1; + _this._operationsBeforeLoading = []; + _this._isLoaded = false; + _this._lastSetClip = null; + return _this; + } + var _proto = AudioSource.prototype; + _proto._resetPlayer = function _resetPlayer() { + if (this._player) { + audioManager.removePlaying(this._player); + this._unregisterListener(); + this._player.destroy(); + this._player = null; + } + }; + _proto._syncPlayer = function _syncPlayer() { + var _this2 = this; + var clip = this._clip; + if (this._lastSetClip === clip) { + return; + } + if (!clip) { + this._lastSetClip = null; + this._resetPlayer(); + return; + } + if (!clip._nativeAsset) { + console.error('Invalid audio clip'); + return; + } + this._isLoaded = false; + this._lastSetClip = clip; + this._operationsBeforeLoading.length = 0; + AudioPlayer.load(clip._nativeAsset.url, { + audioLoadMode: clip.loadMode + }).then(function (player) { + var _this2$node; + if (_this2._lastSetClip !== clip) { + player.destroy(); + return; + } + _this2._isLoaded = true; + _this2._resetPlayer(); + _this2._player = player; + _this2._syncStates(); + (_this2$node = _this2.node) === null || _this2$node === void 0 ? void 0 : _this2$node.emit(_LOADED_EVENT); + })["catch"](function (e) {}); + }; + _proto._registerListener = function _registerListener() { + var _this3 = this; + if (!this._hasRegisterListener && this._player) { + var player = this._player; + player.onEnded(function () { + var _this3$node; + audioManager.removePlaying(player); + (_this3$node = _this3.node) === null || _this3$node === void 0 ? void 0 : _this3$node.emit(AudioSourceEventType.ENDED, _this3); + }); + player.onInterruptionBegin(function () { + audioManager.removePlaying(player); + }); + player.onInterruptionEnd(function () { + if (_this3._player === player) { + audioManager.addPlaying(player); + } + }); + this._hasRegisterListener = true; + } + }; + _proto._unregisterListener = function _unregisterListener() { + if (this._player && this._hasRegisterListener) { + this._player.offEnded(); + this._player.offInterruptionBegin(); + this._player.offInterruptionEnd(); + this._hasRegisterListener = false; + } + }; + _proto.onLoad = function onLoad() { + this._syncPlayer(); + }; + _proto.onEnable = function onEnable() { + if (this._playOnAwake && !this.playing) { + this.play(); + } + }; + _proto.onDisable = function onDisable() { + var rootNode = this._getRootNode(); + if (rootNode !== null && rootNode !== void 0 && rootNode._persistNode) { + return; + } + this.pause(); + }; + _proto.onDestroy = function onDestroy() { + this.stop(); + this.clip = null; + }; + _proto.getPCMData = function getPCMData(channelIndex) { + var _this4 = this; + return new Promise(function (resolve) { + if (channelIndex !== 0 && channelIndex !== 1) { + console.warn('Only support channel index 0 or 1 to get buffer'); + resolve(undefined); + return; + } + if (_this4._player) { + resolve(_this4._player.getPCMData(channelIndex)); + } else { + var _this4$node; + (_this4$node = _this4.node) === null || _this4$node === void 0 ? void 0 : _this4$node.once(_LOADED_EVENT, function () { + var _this4$_player; + resolve((_this4$_player = _this4._player) === null || _this4$_player === void 0 ? void 0 : _this4$_player.getPCMData(channelIndex)); + }); + } + }); + }; + _proto.getSampleRate = function getSampleRate() { + var _this5 = this; + return new Promise(function (resolve) { + if (_this5._player) { + resolve(_this5._player.sampleRate); + } else { + var _this5$node; + (_this5$node = _this5.node) === null || _this5$node === void 0 ? void 0 : _this5$node.once(_LOADED_EVENT, function () { + resolve(_this5._player.sampleRate); + }); + } + }); + }; + _proto._getRootNode = function _getRootNode() { + var _currentNode, _currentNode$parent; + var currentNode = this.node; + var currentGrandparentNode = (_currentNode = currentNode) === null || _currentNode === void 0 ? void 0 : (_currentNode$parent = _currentNode.parent) === null || _currentNode$parent === void 0 ? void 0 : _currentNode$parent.parent; + while (currentGrandparentNode) { + var _currentNode2, _currentNode3, _currentNode3$parent; + currentNode = (_currentNode2 = currentNode) === null || _currentNode2 === void 0 ? void 0 : _currentNode2.parent; + currentGrandparentNode = (_currentNode3 = currentNode) === null || _currentNode3 === void 0 ? void 0 : (_currentNode3$parent = _currentNode3.parent) === null || _currentNode3$parent === void 0 ? void 0 : _currentNode3$parent.parent; + } + return currentNode; + }; + _proto.play = function play() { + var _this6 = this; + if (!this._isLoaded && this.clip) { + this._operationsBeforeLoading.push({ + op: AudioOperationType.PLAY, + params: null + }); + return; + } + this._registerListener(); + audioManager.discardOnePlayingIfNeeded(); + if (this.state === AudioState.PLAYING) { + var _this$_player; + (_this$_player = this._player) === null || _this$_player === void 0 ? void 0 : _this$_player.stop()["catch"](function (e) {}); + } + var player = this._player; + if (player) { + player.play().then(function () { + var _this6$node; + (_this6$node = _this6.node) === null || _this6$node === void 0 ? void 0 : _this6$node.emit(AudioSourceEventType.STARTED, _this6); + })["catch"](function (e) { + audioManager.removePlaying(player); + }); + audioManager.addPlaying(player); + } + }; + _proto.pause = function pause() { + var _this$_player2; + if (!this._isLoaded && this.clip) { + this._operationsBeforeLoading.push({ + op: AudioOperationType.PAUSE, + params: null + }); + return; + } + (_this$_player2 = this._player) === null || _this$_player2 === void 0 ? void 0 : _this$_player2.pause()["catch"](function (e) {}); + }; + _proto.stop = function stop() { + if (!this._isLoaded && this.clip) { + this._operationsBeforeLoading.push({ + op: AudioOperationType.STOP, + params: null + }); + return; + } + if (this._player) { + this._player.stop()["catch"](function (e) {}); + audioManager.removePlaying(this._player); + } + }; + _proto.playOneShot = function playOneShot(clip, volumeScale) { + if (volumeScale === void 0) { + volumeScale = 1; + } + if (!clip._nativeAsset) { + console.error('Invalid audio clip'); + return; + } + var player; + AudioPlayer.loadOneShotAudio(clip._nativeAsset.url, this._volume * volumeScale, { + audioLoadMode: clip.loadMode + }).then(function (oneShotAudio) { + player = oneShotAudio; + audioManager.discardOnePlayingIfNeeded(); + oneShotAudio.onEnd = function () { + audioManager.removePlaying(oneShotAudio); + }; + oneShotAudio.play(); + audioManager.addPlaying(oneShotAudio); + })["catch"](function (e) { + if (player) { + audioManager.removePlaying(player); + } + }); + }; + _proto._syncStates = function _syncStates() { + var _this7 = this; + if (this._player) { + this._player.loop = this._loop; + this._player.volume = this._volume; + this._operationsBeforeLoading.forEach(function (opInfo) { + if (opInfo.op === AudioOperationType.SEEK) { + _this7._cachedCurrentTime = opInfo.params && opInfo.params[0]; + if (_this7._player) { + _this7._player.seek(_this7._cachedCurrentTime)["catch"](function (e) {}); + } + } else { + var _this7$opInfo$op; + (_this7$opInfo$op = _this7[opInfo.op]) === null || _this7$opInfo$op === void 0 ? void 0 : _this7$opInfo$op.call(_this7); + } + }); + this._operationsBeforeLoading.length = 0; + } + }; + _createClass(AudioSource, [{ + key: "clip", + get: function get() { + return this._clip; + }, + set: function set(val) { + if (val === this._clip) { + return; + } + this._clip = val; + this._syncPlayer(); + } + }, { + key: "loop", + get: function get() { + return this._loop; + }, + set: function set(val) { + this._loop = val; + if (this._player) { + this._player.loop = val; + } + } + }, { + key: "playOnAwake", + get: function get() { + return this._playOnAwake; + }, + set: function set(val) { + this._playOnAwake = val; + } + }, { + key: "volume", + get: function get() { + return this._volume; + }, + set: function set(val) { + if (Number.isNaN(val)) { + console.warn('illegal audio volume!'); + return; + } + val = clamp$1(val, 0, 1); + if (this._player) { + this._player.volume = val; + this._volume = this._player.volume; + } else { + this._volume = val; + } + } + }, { + key: "currentTime", + get: function get() { + return this._player ? this._player.currentTime : this._cachedCurrentTime < 0 ? 0 : this._cachedCurrentTime; + }, + set: function set(num) { + var _this$_player3; + if (Number.isNaN(num)) { + console.warn('illegal audio time!'); + return; + } + num = clamp$1(num, 0, this.duration); + if (!this._isLoaded && this.clip) { + this._operationsBeforeLoading.push({ + op: AudioOperationType.SEEK, + params: [num] + }); + return; + } + this._cachedCurrentTime = num; + (_this$_player3 = this._player) === null || _this$_player3 === void 0 ? void 0 : _this$_player3.seek(this._cachedCurrentTime)["catch"](function (e) {}); + } + }, { + key: "duration", + get: function get() { + var _this$_clip$getDurati, _this$_clip; + return (_this$_clip$getDurati = (_this$_clip = this._clip) === null || _this$_clip === void 0 ? void 0 : _this$_clip.getDuration()) !== null && _this$_clip$getDurati !== void 0 ? _this$_clip$getDurati : this._player ? this._player.duration : 0; + } + }, { + key: "state", + get: function get() { + return this._player ? this._player.state : AudioState.INIT; + } + }, { + key: "playing", + get: function get() { + return this.state === AudioSource.AudioState.PLAYING; + } + }], [{ + key: "maxAudioChannel", + get: function get() { + return AudioPlayer.maxAudioChannel; + } + }]); + return AudioSource; + }(Component), _class3$j.AudioState = AudioState, _class3$j.EventType = AudioSourceEventType, _class3$j), (_initializer$H = applyDecoratedInitializer(_class2$L.prototype, "_clip", [_dec2$J], function () { + return null; + }), _initializer2$C = applyDecoratedInitializer(_class2$L.prototype, "_loop", [serializable$9], function () { + return false; + }), _initializer3$v = applyDecoratedInitializer(_class2$L.prototype, "_playOnAwake", [serializable$9], function () { + return true; + }), _initializer4$s = applyDecoratedInitializer(_class2$L.prototype, "_volume", [serializable$9], function () { + return 1; + }), _applyDecoratedDescriptor(_class2$L.prototype, "clip", [_dec3$B], Object.getOwnPropertyDescriptor(_class2$L.prototype, "clip"), _class2$L.prototype)), _class2$L)) || _class$S)); + + replaceProperty(AudioClip, 'AudioClip', [{ + name: 'PlayingState', + newName: 'AudioState', + target: AudioSource, + targetName: 'AudioSource' + }]); + markAsWarning(AudioClip.prototype, 'AudioClip.prototype', ['state', 'play', 'pause', 'stop', 'playOneShot', 'setCurrentTime', 'setVolume', 'setLoop', 'getCurrentTime', 'getVolume', 'getLoop'].map(function (item) { + return { + name: item, + suggest: "please use AudioSource.prototype." + item + " instead" + }; + })); + + legacyCC.AudioSourceComponent = AudioSource; + setClassAlias(AudioSource, 'cc.AudioSourceComponent'); + + legacyCC.log = log; + legacyCC.warn = warn; + legacyCC.error = error; + legacyCC.assert = assert; + legacyCC._throw = _throw; + legacyCC.logID = logID; + legacyCC.warnID = warnID; + legacyCC.errorID = errorID; + legacyCC.assertID = assertID; + legacyCC.debug = debug$1; + legacyCC.path = { + join: join, + extname: extname, + mainFileName: mainFileName, + basename: basename, + dirname: dirname, + changeExtname: changeExtname, + changeBasename: changeBasename, + _normalize: _normalize, + stripSep: stripSep, + get sep() { + return getSeperator(); + } + }; + + function isUICamera(camera) { + var scene = camera.scene; + var batches = scene.batches; + for (var i = 0; batches && i < batches.length; i++) { + var batch = batches[i]; + if (camera.visibility & batch.visFlags) { + return true; + } + } + return false; + } + + var CameraInfo = function CameraInfo(camera, id, windowID, width, height) { + this.camera = void 0; + this.id = 0xFFFFFFFF; + this.windowID = 0xFFFFFFFF; + this.width = 0; + this.height = 0; + this.camera = camera; + this.id = id; + this.windowID = windowID; + this.width = width; + this.height = height; + }; + var cameraInfos = new Map(); + var windowInfos = new Map(); + function prepareRenderWindow(camera) { + var windowID = windowInfos.get(camera.window); + if (windowID === undefined) { + windowID = windowInfos.size; + windowInfos.set(camera.window, windowID); + } + return windowID; + } + function prepareResource(ppl, camera, initResourceFunc, updateResourceFunc) { + var info = cameraInfos.get(camera); + if (info !== undefined) { + camera.window.width; + camera.window.height; + prepareRenderWindow(camera); + updateResourceFunc(ppl, info); + return info; + } + var windowID = prepareRenderWindow(camera); + info = new CameraInfo(camera, cameraInfos.size, windowID, camera.window.width ? camera.window.width : 1, camera.window.height ? camera.window.height : 1); + initResourceFunc(ppl, info); + cameraInfos.set(camera, info); + return info; + } + function buildShadowRes(ppl, name, width, height) { + var fboW = width; + var fboH = height; + var shadowMapName = name; + var device = ppl.device; + if (!ppl.containsResource(shadowMapName)) { + var format = supportsR32FloatTexture(device) ? Format.R32F : Format.RGBA8; + ppl.addRenderTarget(shadowMapName, format, fboW, fboH, ResourceResidency.MANAGED); + ppl.addDepthStencil(shadowMapName + "Depth", Format.DEPTH_STENCIL, fboW, fboH, ResourceResidency.MANAGED); + } + ppl.updateRenderTarget(shadowMapName, fboW, fboH); + ppl.updateDepthStencil(shadowMapName + "Depth", fboW, fboH); + } + var shadowInfo = new ShadowInfo(); + function setupShadowRes(ppl, cameraInfo) { + var camera = cameraInfo.camera; + validPunctualLightsCulling(ppl, camera); + var pipeline = ppl; + var shadow = pipeline.pipelineSceneData.shadows; + var validPunctualLights = ppl.pipelineSceneData.validPunctualLights; + var shadows = ppl.pipelineSceneData.shadows; + shadowInfo.reset(); + if (!shadow.enabled || shadow.type !== ShadowType.ShadowMap) { + return shadowInfo; + } + shadowInfo.shadowEnabled = true; + var _validLights = shadowInfo.validLights; + var n = 0; + var m = 0; + for (; n < shadow.maxReceived && m < validPunctualLights.length;) { + var light = validPunctualLights[m]; + if (light.type === LightType.SPOT) { + var spotLight = light; + if (spotLight.shadowEnabled) { + _validLights.push(light); + n++; + } + } + m++; + } + var _ref = camera.scene, + mainLight = _ref.mainLight; + var mapWidth = shadows.size.x; + var mapHeight = shadows.size.y; + if (mainLight && mainLight.shadowEnabled) { + shadowInfo.mainLightShadowNames[0] = "MainLightShadow" + cameraInfo.id; + if (mainLight.shadowFixedArea) { + buildShadowRes(ppl, shadowInfo.mainLightShadowNames[0], mapWidth, mapHeight); + } else { + var csmLevel = pipeline.pipelineSceneData.csmSupported ? mainLight.csmLevel : 1; + shadowInfo.mainLightShadowNames[0] = "MainLightShadow" + cameraInfo.id; + for (var i = 0; i < csmLevel; i++) { + buildShadowRes(ppl, shadowInfo.mainLightShadowNames[0], mapWidth, mapHeight); + } + } + } + for (var l = 0; l < _validLights.length; l++) { + _validLights[l]; + var passName = "SpotLightShadow" + l.toString() + cameraInfo.id; + shadowInfo.spotLightShadowNames[l] = passName; + buildShadowRes(ppl, shadowInfo.spotLightShadowNames[l], mapWidth, mapHeight); + } + return shadowInfo; + } + var updateShadowRes = setupShadowRes; + var shadowPass; + function buildShadowPass(passName, ppl, camera, light, level, width, height) { + var fboW = width; + var fboH = height; + var area = getRenderArea(camera, width, height, light, level); + width = area.width; + height = area.height; + var shadowMapName = passName; + if (!level) { + shadowPass = ppl.addRenderPass(width, height, 'default'); + shadowPass.name = passName; + shadowPass.setViewport(new Viewport(0, 0, fboW, fboH)); + shadowPass.addRenderTarget(shadowMapName, LoadOp.CLEAR, StoreOp.STORE, new Color(1, 1, 1, camera.clearColor.w)); + shadowPass.addDepthStencil(shadowMapName + "Depth", LoadOp.CLEAR, StoreOp.DISCARD, camera.clearDepth, camera.clearStencil, ClearFlagBit.DEPTH_STENCIL); + } + var queue = shadowPass.addQueue(QueueHint.RENDER_OPAQUE, 'shadow-caster'); + queue.addSceneOfCamera(camera, new LightInfo(light, level), SceneFlags.SHADOW_CASTER); + queue.setViewport(new Viewport(area.x, area.y, area.width, area.height)); + } + function setupShadowPass(ppl, cameraInfo) { + if (!shadowInfo.shadowEnabled) return; + var camera = cameraInfo.camera; + var shadows = ppl.pipelineSceneData.shadows; + var mapWidth = shadows.size.x; + var mapHeight = shadows.size.y; + var _ref2 = camera.scene, + mainLight = _ref2.mainLight; + if (mainLight && mainLight.shadowEnabled) { + shadowInfo.mainLightShadowNames[0] = "MainLightShadow" + cameraInfo.id; + if (mainLight.shadowFixedArea) { + buildShadowPass(shadowInfo.mainLightShadowNames[0], ppl, camera, mainLight, 0, mapWidth, mapHeight); + } else { + var csmLevel = ppl.pipelineSceneData.csmSupported ? mainLight.csmLevel : 1; + shadowInfo.mainLightShadowNames[0] = "MainLightShadow" + cameraInfo.id; + for (var i = 0; i < csmLevel; i++) { + buildShadowPass(shadowInfo.mainLightShadowNames[0], ppl, camera, mainLight, i, mapWidth, mapHeight); + } + } + } + for (var l = 0; l < shadowInfo.validLights.length; l++) { + var light = shadowInfo.validLights[l]; + var passName = "SpotLightShadow" + l.toString() + cameraInfo.id; + shadowInfo.spotLightShadowNames[l] = passName; + buildShadowPass(passName, ppl, camera, light, 0, mapWidth, mapHeight); + } + } + function setupForwardRes(ppl, cameraInfo, isOffScreen) { + if (isOffScreen === void 0) { + isOffScreen = false; + } + var camera = cameraInfo.camera; + var area = getRenderArea(camera, camera.window.width, camera.window.height); + var width = area.width; + var height = area.height; + setupShadowRes(ppl, cameraInfo); + if (!isOffScreen) { + ppl.addRenderWindow("ForwardColor" + cameraInfo.id, Format.BGRA8, width, height, cameraInfo.camera.window); + } else { + ppl.addRenderTarget("ForwardColor" + cameraInfo.id, getRTFormatBeforeToneMapping(ppl), width, height, ResourceResidency.PERSISTENT); + } + ppl.addDepthStencil("ForwardDepthStencil" + cameraInfo.id, Format.DEPTH_STENCIL, width, height); + } + function updateForwardRes(ppl, cameraInfo, isOffScreen) { + if (isOffScreen === void 0) { + isOffScreen = false; + } + var camera = cameraInfo.camera; + var area = getRenderArea(camera, camera.window.width, camera.window.height); + var width = area.width; + var height = area.height; + updateShadowRes(ppl, cameraInfo); + if (!isOffScreen) { + ppl.updateRenderWindow("ForwardColor" + cameraInfo.id, cameraInfo.camera.window); + } else { + ppl.updateRenderTarget("ForwardColor" + cameraInfo.id, width, height); + } + ppl.updateDepthStencil("ForwardDepthStencil" + cameraInfo.id, width, height); + } + function setupDeferredForward(ppl, cameraInfo, inputColor) { + var area = getRenderArea(cameraInfo.camera, cameraInfo.camera.window.width, cameraInfo.camera.window.height); + var width = area.width; + var height = area.height; + var forwardPass = ppl.addRenderPass(width, height, 'default'); + var camera = cameraInfo.camera; + forwardPass.addRenderTarget(inputColor, LoadOp.LOAD, StoreOp.STORE); + forwardPass.addDepthStencil(gBufferInfo.ds, LoadOp.LOAD, StoreOp.DISCARD); + for (var _iterator = _createForOfIteratorHelperLoose(shadowInfo.mainLightShadowNames), _step; !(_step = _iterator()).done;) { + var dirShadowName = _step.value; + if (ppl.containsResource(dirShadowName)) { + forwardPass.addTexture(dirShadowName, 'cc_shadowMap'); + } + } + for (var _iterator2 = _createForOfIteratorHelperLoose(shadowInfo.spotLightShadowNames), _step2; !(_step2 = _iterator2()).done;) { + var spotShadowName = _step2.value; + if (ppl.containsResource(spotShadowName)) { + forwardPass.addTexture(spotShadowName, 'cc_spotShadowMap'); + } + } + forwardPass.addQueue(QueueHint.RENDER_OPAQUE, 'deferred-forward').addSceneOfCamera(camera, new LightInfo(), SceneFlags.OPAQUE_OBJECT | SceneFlags.PLANAR_SHADOW | SceneFlags.CUTOUT_OBJECT | SceneFlags.DEFAULT_LIGHTING | SceneFlags.DRAW_INSTANCING); + forwardPass.addQueue(QueueHint.RENDER_TRANSPARENT, 'deferred-forward').addSceneOfCamera(camera, new LightInfo(), SceneFlags.TRANSPARENT_OBJECT | SceneFlags.GEOMETRY); + } + function setupForwardPass(ppl, cameraInfo, isOffScreen, enabledAlpha) { + if (isOffScreen === void 0) { + isOffScreen = false; + } + if (enabledAlpha === void 0) { + enabledAlpha = true; + } + setupShadowPass(ppl, cameraInfo); + var cameraID = cameraInfo.id; + var area = getRenderArea(cameraInfo.camera, cameraInfo.camera.window.width, cameraInfo.camera.window.height); + var width = area.width; + var height = area.height; + var forwardPass = ppl.addRenderPass(width, height, 'default'); + forwardPass.name = "ForwardPass" + cameraID; + forwardPass.setViewport(new Viewport(area.x, area.y, width, height)); + for (var _iterator3 = _createForOfIteratorHelperLoose(shadowInfo.mainLightShadowNames), _step3; !(_step3 = _iterator3()).done;) { + var dirShadowName = _step3.value; + if (ppl.containsResource(dirShadowName)) { + forwardPass.addTexture(dirShadowName, 'cc_shadowMap'); + } + } + for (var _iterator4 = _createForOfIteratorHelperLoose(shadowInfo.spotLightShadowNames), _step4; !(_step4 = _iterator4()).done;) { + var spotShadowName = _step4.value; + if (ppl.containsResource(spotShadowName)) { + forwardPass.addTexture(spotShadowName, 'cc_spotShadowMap'); + } + } + var camera = cameraInfo.camera; + forwardPass.addRenderTarget("ForwardColor" + cameraInfo.id, isOffScreen ? LoadOp.CLEAR : getLoadOpOfClearFlag(camera.clearFlag, AttachmentType.RENDER_TARGET), StoreOp.STORE, new Color(camera.clearColor.x, camera.clearColor.y, camera.clearColor.z, camera.clearColor.w)); + forwardPass.addDepthStencil("ForwardDepthStencil" + cameraInfo.id, isOffScreen ? LoadOp.CLEAR : getLoadOpOfClearFlag(camera.clearFlag, AttachmentType.DEPTH_STENCIL), isOffScreen ? StoreOp.DISCARD : StoreOp.STORE, camera.clearDepth, camera.clearStencil, camera.clearFlag); + forwardPass.addQueue(QueueHint.RENDER_OPAQUE).addSceneOfCamera(camera, new LightInfo(), SceneFlags.OPAQUE_OBJECT | SceneFlags.PLANAR_SHADOW | SceneFlags.CUTOUT_OBJECT | SceneFlags.DEFAULT_LIGHTING | SceneFlags.DRAW_INSTANCING); + var sceneFlags = SceneFlags.TRANSPARENT_OBJECT | SceneFlags.GEOMETRY; + if (!isOffScreen) { + sceneFlags |= SceneFlags.UI; + forwardPass.showStatistics = true; + } + if (enabledAlpha) { + forwardPass.addQueue(QueueHint.RENDER_TRANSPARENT).addSceneOfCamera(camera, new LightInfo(), sceneFlags); + } + return { + rtName: "ForwardColor" + cameraInfo.id, + dsName: "ForwardDepthStencil" + cameraInfo.id + }; + } + var gBufferInfo = new GBufferInfo(); + function setupGBufferRes(ppl, info) { + var camera = info.camera; + var area = getRenderArea(camera, camera.window.width, camera.window.height); + var width = area.width; + var height = area.height; + var gBufferPassRTName = "gBufferPassColorCamera" + info.id; + var gBufferPassNormal = "gBufferPassNormal" + info.id; + var gBufferPassEmissive = "gBufferPassEmissive" + info.id; + var gBufferPassDSName = "gBufferPassDSCamera" + info.id; + var colFormat = Format.RGBA16F; + ppl.addRenderTarget(gBufferPassRTName, colFormat, width, height, ResourceResidency.MANAGED); + ppl.addRenderTarget(gBufferPassEmissive, colFormat, width, height, ResourceResidency.MANAGED); + ppl.addRenderTarget(gBufferPassNormal, colFormat, width, height, ResourceResidency.MANAGED); + ppl.addDepthStencil(gBufferPassDSName, Format.DEPTH_STENCIL, width, height, ResourceResidency.MANAGED); + gBufferInfo.color = gBufferPassRTName; + gBufferInfo.normal = gBufferPassNormal; + gBufferInfo.emissive = gBufferPassEmissive; + gBufferInfo.ds = gBufferPassDSName; + } + function updateGBufferRes(ppl, info) { + var camera = info.camera; + var area = getRenderArea(camera, camera.window.width, camera.window.height); + var width = area.width; + var height = area.height; + var gBufferPassRTName = "gBufferPassColorCamera" + info.id; + var gBufferPassNormal = "gBufferPassNormal" + info.id; + var gBufferPassEmissive = "gBufferPassEmissive" + info.id; + var gBufferPassDSName = "gBufferPassDSCamera" + info.id; + ppl.updateRenderTarget(gBufferPassRTName, width, height); + ppl.updateRenderTarget(gBufferPassEmissive, width, height); + ppl.updateRenderTarget(gBufferPassNormal, width, height); + ppl.updateDepthStencil(gBufferPassDSName, width, height); + } + new Color(0, 0, 0, 0); + function setupGBufferPass(ppl, info) { + var camera = info.camera; + var area = getRenderArea(camera, camera.window.width, camera.window.height); + var width = area.width; + var height = area.height; + var gBufferPassRTName = gBufferInfo.color; + var gBufferPassNormal = gBufferInfo.normal; + var gBufferPassEmissive = gBufferInfo.emissive; + var gBufferPassDSName = gBufferInfo.ds; + var gBufferPass = ppl.addRenderPass(width, height, 'gbuffer'); + gBufferPass.name = "CameraGBufferPass" + info.id; + gBufferPass.setViewport(new Viewport(area.x, area.y, width, height)); + var rtColor = new Color(0, 0, 0, 0); + if (camera.clearFlag & ClearFlagBit.COLOR) { + if (ppl.pipelineSceneData.isHDR) { + SRGBToLinear(rtColor, camera.clearColor); + } else { + rtColor.x = camera.clearColor.x; + rtColor.y = camera.clearColor.y; + rtColor.z = camera.clearColor.z; + } + } + gBufferPass.addRenderTarget(gBufferPassRTName, LoadOp.CLEAR, StoreOp.STORE, rtColor); + gBufferPass.addRenderTarget(gBufferPassEmissive, LoadOp.CLEAR, StoreOp.STORE, new Color(0, 0, 0, 0)); + gBufferPass.addRenderTarget(gBufferPassNormal, LoadOp.CLEAR, StoreOp.STORE, new Color(0, 0, 0, 0)); + gBufferPass.addDepthStencil(gBufferPassDSName, LoadOp.CLEAR, StoreOp.STORE, camera.clearDepth, camera.clearStencil, camera.clearFlag); + gBufferPass.addQueue(QueueHint.RENDER_OPAQUE, 'gbuffer').addSceneOfCamera(camera, new LightInfo(), SceneFlags.OPAQUE_OBJECT | SceneFlags.CUTOUT_OBJECT); + return gBufferPass; + } + function setupLightingRes(ppl, info) { + setupShadowRes(ppl, info); + var camera = info.camera; + var area = getRenderArea(camera, camera.window.width, camera.window.height); + var width = area.width; + var height = area.height; + var deferredLightingPassRTName = "deferredLightingPassRTName" + info.id; + ppl.addRenderTarget(deferredLightingPassRTName, Format.RGBA8, width, height, ResourceResidency.MANAGED); + } + function updateLightingRes(ppl, info) { + updateShadowRes(ppl, info); + var camera = info.camera; + var area = getRenderArea(camera, camera.window.width, camera.window.height); + var width = area.width; + var height = area.height; + var deferredLightingPassRTName = "deferredLightingPassRTName" + info.id; + ppl.updateRenderTarget(deferredLightingPassRTName, width, height); + } + var lightingInfo; + function setupLightingPass(pipeline, info, useCluster) { + setupShadowPass(pipeline, info); + if (!lightingInfo) { + lightingInfo = new LightingInfo(useCluster); + } + var ppl = pipeline; + var camera = info.camera; + var area = getRenderArea(camera, camera.window.width, camera.window.height); + var width = area.width; + var height = area.height; + var cameraID = getCameraUniqueID(camera); + var deferredLightingPassRTName = "deferredLightingPassRTName" + info.id; + var lightingPass = ppl.addRenderPass(width, height, 'deferred-lighting'); + lightingPass.name = "CameraLightingPass" + info.id; + lightingPass.setViewport(new Viewport(area.x, area.y, width, height)); + for (var _iterator5 = _createForOfIteratorHelperLoose(shadowInfo.mainLightShadowNames), _step5; !(_step5 = _iterator5()).done;) { + var dirShadowName = _step5.value; + if (ppl.containsResource(dirShadowName)) { + lightingPass.addTexture(dirShadowName, 'cc_shadowMap'); + } + } + for (var _iterator6 = _createForOfIteratorHelperLoose(shadowInfo.spotLightShadowNames), _step6; !(_step6 = _iterator6()).done;) { + var spotShadowName = _step6.value; + if (ppl.containsResource(spotShadowName)) { + lightingPass.addTexture(spotShadowName, 'cc_spotShadowMap'); + } + } + if (ppl.containsResource(gBufferInfo.color)) { + lightingPass.addTexture(gBufferInfo.color, 'albedoMap'); + lightingPass.addTexture(gBufferInfo.normal, 'normalMap'); + lightingPass.addTexture(gBufferInfo.emissive, 'emissiveMap'); + lightingPass.addTexture(gBufferInfo.ds, 'depthStencil'); + } + var clusterLightBufferName = "clusterLightBuffer" + cameraID; + var clusterLightIndicesBufferName = "clusterLightIndicesBuffer" + cameraID; + var clusterLightGridBufferName = "clusterLightGridBuffer" + cameraID; + if (ppl.containsResource(clusterLightBufferName)) { + lightingPass.addStorageBuffer(clusterLightBufferName, AccessType.READ, 'b_ccLightsBuffer'); + lightingPass.addStorageBuffer(clusterLightIndicesBufferName, AccessType.READ, 'b_clusterLightIndicesBuffer'); + lightingPass.addStorageBuffer(clusterLightGridBufferName, AccessType.READ, 'b_clusterLightGridBuffer'); + } + var lightingClearColor = new Color(0, 0, 0, 0); + if (camera.clearFlag & ClearFlagBit.COLOR) { + lightingClearColor.x = camera.clearColor.x; + lightingClearColor.y = camera.clearColor.y; + lightingClearColor.z = camera.clearColor.z; + } + lightingClearColor.w = 0; + lightingPass.addRenderTarget(deferredLightingPassRTName, LoadOp.CLEAR, StoreOp.STORE, lightingClearColor); + lightingPass.addQueue(QueueHint.RENDER_TRANSPARENT).addCameraQuad(camera, lightingInfo.deferredLightingMaterial, 0, SceneFlags.VOLUMETRIC_LIGHTING); + return { + rtName: deferredLightingPassRTName + }; + } + function setupPostprocessRes(ppl, info) { + var cameraID = info.id; + var camera = info.camera; + var area = getRenderArea(camera, camera.window.width, camera.window.height); + var width = area.width; + var height = area.height; + var postprocessPassRTName = "postprocessPassRTName" + cameraID; + var postprocessPassDS = "postprocessPassDS" + cameraID; + ppl.addRenderWindow(postprocessPassRTName, Format.BGRA8, width, height, camera.window); + ppl.addDepthStencil(postprocessPassDS, Format.DEPTH_STENCIL, width, height, ResourceResidency.MANAGED); + } + function updatePostprocessRes(ppl, info) { + var cameraID = info.id; + var camera = info.camera; + var area = getRenderArea(camera, camera.window.width, camera.window.height); + var width = area.width; + var height = area.height; + var postprocessPassRTName = "postprocessPassRTName" + cameraID; + var postprocessPassDS = "postprocessPassDS" + cameraID; + ppl.updateRenderWindow(postprocessPassRTName, camera.window); + ppl.updateDepthStencil(postprocessPassDS, width, height); + } + var postInfo; + function setupPostprocessPass(ppl, info, inputTex) { + if (!postInfo) { + postInfo = new PostInfo(); + } + var cameraID = info.id; + var camera = info.camera; + var area = getRenderArea(camera, camera.window.width, camera.window.height); + var width = area.width; + var height = area.height; + var postprocessPassRTName = "postprocessPassRTName" + cameraID; + var postprocessPassDS = "postprocessPassDS" + cameraID; + var postprocessPass = ppl.addRenderPass(width, height, 'post-process'); + postprocessPass.name = "CameraPostprocessPass" + cameraID; + postprocessPass.setViewport(new Viewport(area.x, area.y, area.width, area.height)); + if (ppl.containsResource(inputTex)) { + postprocessPass.addTexture(inputTex, 'outputResultMap'); + } + var postClearColor = new Color(0, 0, 0, camera.clearColor.w); + if (camera.clearFlag & ClearFlagBit.COLOR) { + postClearColor.x = camera.clearColor.x; + postClearColor.y = camera.clearColor.y; + postClearColor.z = camera.clearColor.z; + } + postprocessPass.addRenderTarget(postprocessPassRTName, getLoadOpOfClearFlag(camera.clearFlag, AttachmentType.RENDER_TARGET), StoreOp.STORE, postClearColor); + postprocessPass.addDepthStencil(postprocessPassDS, getLoadOpOfClearFlag(camera.clearFlag, AttachmentType.DEPTH_STENCIL), StoreOp.STORE, camera.clearDepth, camera.clearStencil, camera.clearFlag); + postprocessPass.addQueue(QueueHint.NONE).addCameraQuad(camera, postInfo.postMaterial, 0, SceneFlags.NONE); + if (getProfilerCamera() === camera) { + postprocessPass.showStatistics = true; + } + return { + rtName: postprocessPassRTName, + dsName: postprocessPassDS + }; + } + function setupUIRes(ppl, info) { + var camera = info.camera; + var area = getRenderArea(camera, camera.window.width, camera.window.height); + var width = area.width; + var height = area.height; + var dsUIAndProfilerPassRTName = "dsUIAndProfilerPassColor" + info.id; + var dsUIAndProfilerPassDSName = "dsUIAndProfilerPassDS" + info.id; + ppl.addRenderWindow(dsUIAndProfilerPassRTName, Format.BGRA8, width, height, camera.window); + ppl.addDepthStencil(dsUIAndProfilerPassDSName, Format.DEPTH_STENCIL, width, height, ResourceResidency.MANAGED); + } + function updateUIRes(ppl, info) { + var camera = info.camera; + var area = getRenderArea(camera, camera.window.width, camera.window.height); + var width = area.width; + var height = area.height; + var dsUIAndProfilerPassRTName = "dsUIAndProfilerPassColor" + info.id; + var dsUIAndProfilerPassDSName = "dsUIAndProfilerPassDS" + info.id; + ppl.updateRenderWindow(dsUIAndProfilerPassRTName, camera.window); + ppl.updateDepthStencil(dsUIAndProfilerPassDSName, width, height); + } + function setupUIPass(ppl, info) { + var camera = info.camera; + var area = getRenderArea(camera, camera.window.width, camera.window.height); + var width = area.width; + var height = area.height; + var dsUIAndProfilerPassRTName = "dsUIAndProfilerPassColor" + info.id; + var dsUIAndProfilerPassDSName = "dsUIAndProfilerPassDS" + info.id; + var uiAndProfilerPass = ppl.addRenderPass(width, height, 'default'); + uiAndProfilerPass.name = "CameraUIAndProfilerPass" + info.id; + uiAndProfilerPass.setViewport(new Viewport(area.x, area.y, width, height)); + uiAndProfilerPass.addRenderTarget(dsUIAndProfilerPassRTName, getLoadOpOfClearFlag(camera.clearFlag, AttachmentType.RENDER_TARGET), StoreOp.STORE, new Color(camera.clearColor.x, camera.clearColor.y, camera.clearColor.z, camera.clearColor.w)); + uiAndProfilerPass.addDepthStencil(dsUIAndProfilerPassDSName, getLoadOpOfClearFlag(camera.clearFlag, AttachmentType.DEPTH_STENCIL), StoreOp.STORE, camera.clearDepth, camera.clearStencil, camera.clearFlag); + var sceneFlags = SceneFlags.UI; + uiAndProfilerPass.addQueue(QueueHint.RENDER_TRANSPARENT).addSceneOfCamera(camera, new LightInfo(), sceneFlags); + if (getProfilerCamera() === camera) { + uiAndProfilerPass.showStatistics = true; + } + } + + var ForwardPipelineBuilder = exports('dc', function () { + function ForwardPipelineBuilder() {} + var _proto = ForwardPipelineBuilder.prototype; + _proto.setup = function setup(cameras, ppl) { + for (var i = 0; i < cameras.length; i++) { + var camera = cameras[i]; + if (camera.scene === null) { + continue; + } + ppl.update(camera); + var info = prepareResource(ppl, camera, this.initResource, this.updateResource); + setupForwardPass(ppl, info); + } + }; + _proto.initResource = function initResource(ppl, cameraInfo) { + setupForwardRes(ppl, cameraInfo); + }; + _proto.updateResource = function updateResource(ppl, cameraInfo) { + updateForwardRes(ppl, cameraInfo); + }; + return ForwardPipelineBuilder; + }()); + var DeferredPipelineBuilder = exports('dd', function () { + function DeferredPipelineBuilder() {} + var _proto2 = DeferredPipelineBuilder.prototype; + _proto2.setup = function setup(cameras, ppl) { + for (var i = 0; i < cameras.length; ++i) { + var camera = cameras[i]; + if (!camera.scene) { + continue; + } + ppl.update(camera); + var forceDisableCluster = false; + var useCluster = !forceDisableCluster && ppl.device.hasFeature(Feature.COMPUTE_SHADER); + var isGameView = camera.cameraUsage === CameraUsage.GAME || camera.cameraUsage === CameraUsage.GAME_VIEW; + var info = prepareResource(ppl, camera, this.initResource, this.updateResource); + if (!isGameView) { + setupForwardPass(ppl, info); + continue; + } + if (!isUICamera(camera)) { + if (useCluster) { + buildClusterPasses(camera, ppl); + } + setupGBufferPass(ppl, info); + var lightInfo = setupLightingPass(ppl, info, useCluster); + setupDeferredForward(ppl, info, lightInfo.rtName); + setupPostprocessPass(ppl, info, lightInfo.rtName); + continue; + } + setupUIPass(ppl, info); + } + }; + _proto2.initResource = function initResource(ppl, cameraInfo) { + if (!isUICamera(cameraInfo.camera)) { + setupGBufferRes(ppl, cameraInfo); + setupLightingRes(ppl, cameraInfo); + setupPostprocessRes(ppl, cameraInfo); + } else { + setupUIRes(ppl, cameraInfo); + } + }; + _proto2.updateResource = function updateResource(ppl, cameraInfo) { + if (!isUICamera(cameraInfo.camera)) { + updateGBufferRes(ppl, cameraInfo); + updateLightingRes(ppl, cameraInfo); + updatePostprocessRes(ppl, cameraInfo); + } else { + updateUIRes(ppl, cameraInfo); + } + }; + return DeferredPipelineBuilder; + }()); + + var Destroyed = CCObject.Flags.Destroyed; + var PersistentMask = CCObject.Flags.PersistentMask; + var objsToClearTmpVar = []; + function hasImplementedInstantiate(original) { + return typeof original._instantiate === 'function'; + } + function instantiate(original, internalForce) { + var clone; + if (isCCObject(original)) { + if (hasImplementedInstantiate(original)) { + legacyCC.game._isCloning = true; + clone = original._instantiate(null, true); + legacyCC.game._isCloning = false; + return clone; + } else if (original instanceof legacyCC.Asset) { + throw new TypeError(getError(6903)); + } + } + legacyCC.game._isCloning = true; + clone = doInstantiate(original); + legacyCC.game._isCloning = false; + return clone; + } + function doInstantiate(obj, parent) { + var clone; + if (obj._iN$t) { + clone = obj._iN$t; + } else if (obj.constructor) { + var Klass = obj.constructor; + clone = new Klass(); + } else { + clone = Object.create(null); + } + enumerateObject(obj, clone, parent); + for (var i = 0, len = objsToClearTmpVar.length; i < len; ++i) { + objsToClearTmpVar[i]._iN$t = null; + } + objsToClearTmpVar.length = 0; + return clone; + } + function enumerateCCClass(klass, obj, clone, parent) { + var props = klass.__values__; + for (var p = 0; p < props.length; p++) { + var key = props[p]; + var value = obj[key]; + if (typeof value === 'object' && value) { + var initValue = clone[key]; + if (initValue instanceof ValueType && initValue.constructor === value.constructor) { + initValue.set(value); + } else { + clone[key] = value._iN$t || instantiateObj(value, parent); + } + } else { + clone[key] = value; + } + } + } + function enumerateObject(obj, clone, parent) { + value(obj, '_iN$t', clone, true); + objsToClearTmpVar.push(obj); + var klass = obj.constructor; + if (isCCClassOrFastDefined(klass)) { + enumerateCCClass(klass, obj, clone, parent); + } else { + for (var key in obj) { + if (!obj.hasOwnProperty(key) || key.charCodeAt(0) === 95 && key.charCodeAt(1) === 95 && key !== '__type__' && key !== '__prefab') { + continue; + } + var value$1 = obj[key]; + if (typeof value$1 === 'object' && value$1) { + if (value$1 === clone) { + continue; + } + clone[key] = value$1._iN$t || instantiateObj(value$1, parent); + } else { + clone[key] = value$1; + } + } + } + if (isCCObject(obj)) { + clone._objFlags &= PersistentMask; + } + } + function instantiateObj(obj, parent) { + if (obj instanceof ValueType) { + return obj.clone(); + } + if (obj instanceof legacyCC.Asset) { + return obj; + } + var clone; + if (ArrayBuffer.isView(obj)) { + var len = obj.length; + clone = new obj.constructor(len); + obj._iN$t = clone; + objsToClearTmpVar.push(obj); + for (var i = 0; i < len; ++i) { + clone[i] = obj[i]; + } + return clone; + } + if (Array.isArray(obj)) { + var _len = obj.length; + clone = new Array(_len); + obj._iN$t = clone; + objsToClearTmpVar.push(obj); + for (var _i = 0; _i < _len; ++_i) { + var value = obj[_i]; + if (typeof value === 'object' && value) { + clone[_i] = value._iN$t || instantiateObj(value, parent); + } else { + clone[_i] = value; + } + } + return clone; + } else if (obj._objFlags & Destroyed) { + return null; + } + var ctor = obj.constructor; + if (isCCClassOrFastDefined(ctor)) { + if (parent) { + if (parent instanceof Component) { + if (obj instanceof Node$1 || obj instanceof Component) { + return obj; + } + } else if (parent instanceof Node$1) { + if (obj instanceof Node$1) { + if (!obj.isChildOf(parent)) { + return obj; + } + } else if (obj instanceof Component) { + if (obj.node && !obj.node.isChildOf(parent)) { + return obj; + } + } + } + } + clone = new ctor(); + } else if (ctor === Object) { + clone = {}; + } else if (!ctor) { + clone = Object.create(null); + } else { + return obj; + } + enumerateObject(obj, clone, parent); + return clone; + } + instantiate._clone = doInstantiate; + legacyCC.instantiate = instantiate; + + var NodePool = exports('ec', function () { + function NodePool(poolHandlerComp) { + this.poolHandlerComp = void 0; + this._pool = void 0; + this.poolHandlerComp = poolHandlerComp; + this._pool = []; + } + var _proto = NodePool.prototype; + _proto.size = function size() { + return this._pool.length; + }; + _proto.clear = function clear() { + var count = this._pool.length; + for (var i = 0; i < count; ++i) { + this._pool[i].destroy(); + } + this._pool.length = 0; + }; + _proto.put = function put(obj) { + if (obj && this._pool.indexOf(obj) === -1) { + obj.removeFromParent(); + var handler = this.poolHandlerComp ? obj.getComponent(this.poolHandlerComp) : null; + if (handler && handler.unuse) { + handler.unuse(); + } + this._pool.push(obj); + } + }; + _proto.get = function get() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + var last = this._pool.length - 1; + if (last < 0) { + return null; + } else { + var obj = this._pool[last]; + this._pool.length = last; + var handler = this.poolHandlerComp ? obj.getComponent(this.poolHandlerComp) : null; + if (handler && handler.reuse) { + handler.reuse(arguments); + } + return obj; + } + }; + return NodePool; + }()); + legacyCC.NodePool = NodePool; + + var _globalThis$jsb, _globalJsb$copyTextTo; + var globalJsb = (_globalThis$jsb = globalThis.jsb) !== null && _globalThis$jsb !== void 0 ? _globalThis$jsb : {}; + var _native = exports('eu', { + DownloaderHints: globalJsb.DownloaderHints, + Downloader: globalJsb.Downloader, + zipUtils: globalJsb.zipUtils, + fileUtils: globalJsb.fileUtils, + DebugRenderer: globalJsb.DebugRenderer, + copyTextToClipboard: (_globalJsb$copyTextTo = globalJsb.copyTextToClipboard) === null || _globalJsb$copyTextTo === void 0 ? void 0 : _globalJsb$copyTextTo.bind(globalJsb), + garbageCollect: globalJsb.garbageCollect, + reflection: globalJsb.reflection, + bridge: globalJsb.bridge, + jsbBridgeWrapper: globalJsb.jsbBridgeWrapper, + AssetsManager: globalJsb.AssetsManager, + EventAssetsManager: globalJsb.EventAssetsManager, + Manifest: globalJsb.Manifest, + saveImageData: globalJsb.saveImageData, + process: globalJsb.process + }); + + legacyCC.renderer = renderer; + + var __extends=undefined&&undefined.__extends||function(){var extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b;}||function(d,b){for(var p in b)if(b.hasOwnProperty(p))d[p]=b[p];};return function(d,b){extendStatics(d,b);function __(){this.constructor=d;}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __());};}();var dragonBones={};(function(dragonBones){})(dragonBones||(dragonBones={}));(function(dragonBones){var DragonBones=function(){function DragonBones(eventManager){this._clock=new dragonBones.WorldClock();this._events=[];this._objects=[];this._eventManager=null;this._eventManager=eventManager;console.info("DragonBones: "+DragonBones.VERSION+"\nWebsite: http://dragonbones.com/\nSource and Demo: https://github.com/DragonBones/");}DragonBones.prototype.advanceTime=function(passedTime){if(this._objects.length>0){for(var _i=0,_a=this._objects;_i<_a.length;_i++){var object=_a[_i];object.returnToPool();}this._objects.length=0;}this._clock.advanceTime(passedTime);if(this._events.length>0){for(var i=0;imaxCount){pool.length=maxCount;}BaseObject._maxCountMap[classType]=maxCount;}else {BaseObject._defaultMaxCount=maxCount;for(var classType in BaseObject._poolsMap){var pool=BaseObject._poolsMap[classType];if(pool.length>maxCount){pool.length=maxCount;}if(classType in BaseObject._maxCountMap){BaseObject._maxCountMap[classType]=maxCount;}}}};BaseObject.clearPool=function(objectConstructor){if(objectConstructor===void 0){objectConstructor=null;}if(objectConstructor!==null){var classType=String(objectConstructor);var pool=classType in BaseObject._poolsMap?BaseObject._poolsMap[classType]:null;if(pool!==null&&pool.length>0){pool.length=0;}}else {for(var k in BaseObject._poolsMap){var pool=BaseObject._poolsMap[k];pool.length=0;}}};BaseObject.borrowObject=function(objectConstructor){var classType=String(objectConstructor);var pool=classType in BaseObject._poolsMap?BaseObject._poolsMap[classType]:null;if(pool!==null&&pool.length>0){var object_1=pool.pop();object_1._isInPool=false;return object_1;}var object=new objectConstructor();object._onClear();return object;};BaseObject.prototype.returnToPool=function(){this._onClear();BaseObject._returnObject(this);};BaseObject._hashCode=0;BaseObject._defaultMaxCount=3000;BaseObject._maxCountMap={};BaseObject._poolsMap={};return BaseObject;}();dragonBones.BaseObject=BaseObject;})(dragonBones||(dragonBones={}));(function(dragonBones){var Matrix=function(){function Matrix(a,b,c,d,tx,ty){if(a===void 0){a=1.0;}if(b===void 0){b=0.0;}if(c===void 0){c=0.0;}if(d===void 0){d=1.0;}if(tx===void 0){tx=0.0;}if(ty===void 0){ty=0.0;}this.a=a;this.b=b;this.c=c;this.d=d;this.tx=tx;this.ty=ty;}Matrix.prototype.toString=function(){return "[object dragonBones.Matrix] a:"+this.a+" b:"+this.b+" c:"+this.c+" d:"+this.d+" tx:"+this.tx+" ty:"+this.ty;};Matrix.prototype.copyFrom=function(value){this.a=value.a;this.b=value.b;this.c=value.c;this.d=value.d;this.tx=value.tx;this.ty=value.ty;return this;};Matrix.prototype.copyFromArray=function(value,offset){if(offset===void 0){offset=0;}this.a=value[offset];this.b=value[offset+1];this.c=value[offset+2];this.d=value[offset+3];this.tx=value[offset+4];this.ty=value[offset+5];return this;};Matrix.prototype.identity=function(){this.a=this.d=1.0;this.b=this.c=0.0;this.tx=this.ty=0.0;return this;};Matrix.prototype.concat=function(value){var aA=this.a*value.a;var bA=0.0;var cA=0.0;var dA=this.d*value.d;var txA=this.tx*value.a+value.tx;var tyA=this.ty*value.d+value.ty;if(this.b!==0.0||this.c!==0.0){aA+=this.b*value.c;bA+=this.b*value.d;cA+=this.c*value.a;dA+=this.c*value.b;}if(value.b!==0.0||value.c!==0.0){bA+=this.a*value.b;cA+=this.d*value.c;txA+=this.ty*value.c;tyA+=this.tx*value.b;}this.a=aA;this.b=bA;this.c=cA;this.d=dA;this.tx=txA;this.ty=tyA;return this;};Matrix.prototype.invert=function(){var aA=this.a;var bA=this.b;var cA=this.c;var dA=this.d;var txA=this.tx;var tyA=this.ty;if(bA===0.0&&cA===0.0){this.b=this.c=0.0;if(aA===0.0||dA===0.0){this.a=this.b=this.tx=this.ty=0.0;}else {aA=this.a=1.0/aA;dA=this.d=1.0/dA;this.tx=-aA*txA;this.ty=-dA*tyA;}return this;}var determinant=aA*dA-bA*cA;if(determinant===0.0){this.a=this.d=1.0;this.b=this.c=0.0;this.tx=this.ty=0.0;return this;}determinant=1.0/determinant;var k=this.a=dA*determinant;bA=this.b=-bA*determinant;cA=this.c=-cA*determinant;dA=this.d=aA*determinant;this.tx=-(k*txA+cA*tyA);this.ty=-(bA*txA+dA*tyA);return this;};Matrix.prototype.transformPoint=function(x,y,result,delta){if(delta===void 0){delta=false;}result.x=this.a*x+this.c*y;result.y=this.b*x+this.d*y;if(!delta){result.x+=this.tx;result.y+=this.ty;}};Matrix.prototype.transformRectangle=function(rectangle,delta){if(delta===void 0){delta=false;}var a=this.a;var b=this.b;var c=this.c;var d=this.d;var tx=delta?0.0:this.tx;var ty=delta?0.0:this.ty;var x=rectangle.x;var y=rectangle.y;var xMax=x+rectangle.width;var yMax=y+rectangle.height;var x0=a*x+c*y+tx;var y0=b*x+d*y+ty;var x1=a*xMax+c*y+tx;var y1=b*xMax+d*y+ty;var x2=a*xMax+c*yMax+tx;var y2=b*xMax+d*yMax+ty;var x3=a*x+c*yMax+tx;var y3=b*x+d*yMax+ty;var tmp=0.0;if(x0>x1){tmp=x0;x0=x1;x1=tmp;}if(x2>x3){tmp=x2;x2=x3;x3=tmp;}rectangle.x=Math.floor(x0x3?x1:x3)-rectangle.x);if(y0>y1){tmp=y0;y0=y1;y1=tmp;}if(y2>y3){tmp=y2;y2=y3;y3=tmp;}rectangle.y=Math.floor(y0y3?y1:y3)-rectangle.y);};return Matrix;}();dragonBones.Matrix=Matrix;})(dragonBones||(dragonBones={}));(function(dragonBones){var Transform=function(){function Transform(x,y,skew,rotation,scaleX,scaleY){if(x===void 0){x=0.0;}if(y===void 0){y=0.0;}if(skew===void 0){skew=0.0;}if(rotation===void 0){rotation=0.0;}if(scaleX===void 0){scaleX=1.0;}if(scaleY===void 0){scaleY=1.0;}this.x=x;this.y=y;this.skew=skew;this.rotation=rotation;this.scaleX=scaleX;this.scaleY=scaleY;}Transform.normalizeRadian=function(value){value=(value+Math.PI)%(Math.PI*2.0);value+=value>0.0?-Math.PI:Math.PI;return value;};Transform.prototype.toString=function(){return "[object dragonBones.Transform] x:"+this.x+" y:"+this.y+" skewX:"+this.skew*180.0/Math.PI+" skewY:"+this.rotation*180.0/Math.PI+" scaleX:"+this.scaleX+" scaleY:"+this.scaleY;};Transform.prototype.copyFrom=function(value){this.x=value.x;this.y=value.y;this.skew=value.skew;this.rotation=value.rotation;this.scaleX=value.scaleX;this.scaleY=value.scaleY;return this;};Transform.prototype.identity=function(){this.x=this.y=0.0;this.skew=this.rotation=0.0;this.scaleX=this.scaleY=1.0;return this;};Transform.prototype.add=function(value){this.x+=value.x;this.y+=value.y;this.skew+=value.skew;this.rotation+=value.rotation;this.scaleX*=value.scaleX;this.scaleY*=value.scaleY;return this;};Transform.prototype.minus=function(value){this.x-=value.x;this.y-=value.y;this.skew-=value.skew;this.rotation-=value.rotation;this.scaleX/=value.scaleX;this.scaleY/=value.scaleY;return this;};Transform.prototype.fromMatrix=function(matrix){var backupScaleX=this.scaleX,backupScaleY=this.scaleY;var PI_Q=Transform.PI_Q;this.x=matrix.tx;this.y=matrix.ty;this.rotation=Math.atan(matrix.b/matrix.a);var skewX=Math.atan(-matrix.c/matrix.d);this.scaleX=this.rotation>-PI_Q&&this.rotation-PI_Q&&skewX=0.0&&this.scaleX<0.0){this.scaleX=-this.scaleX;this.rotation=this.rotation-Math.PI;}if(backupScaleY>=0.0&&this.scaleY<0.0){this.scaleY=-this.scaleY;skewX=skewX-Math.PI;}this.skew=skewX-this.rotation;return this;};Transform.prototype.toMatrix=function(matrix){if(this.rotation===0.0){matrix.a=1.0;matrix.b=0.0;}else {matrix.a=Math.cos(this.rotation);matrix.b=Math.sin(this.rotation);}if(this.skew===0.0){matrix.c=-matrix.b;matrix.d=matrix.a;}else {matrix.c=-Math.sin(this.skew+this.rotation);matrix.d=Math.cos(this.skew+this.rotation);}if(this.scaleX!==1.0){matrix.a*=this.scaleX;matrix.b*=this.scaleX;}if(this.scaleY!==1.0){matrix.c*=this.scaleY;matrix.d*=this.scaleY;}matrix.tx=this.x;matrix.ty=this.y;return this;};Transform.PI=Math.PI;Transform.PI_D=Math.PI*2.0;Transform.PI_H=Math.PI/2.0;Transform.PI_Q=Math.PI/4.0;Transform.RAD_DEG=180.0/Math.PI;Transform.DEG_RAD=Math.PI/180.0;return Transform;}();dragonBones.Transform=Transform;})(dragonBones||(dragonBones={}));(function(dragonBones){var ColorTransform=function(){function ColorTransform(alphaMultiplier,redMultiplier,greenMultiplier,blueMultiplier,alphaOffset,redOffset,greenOffset,blueOffset){if(alphaMultiplier===void 0){alphaMultiplier=1.0;}if(redMultiplier===void 0){redMultiplier=1.0;}if(greenMultiplier===void 0){greenMultiplier=1.0;}if(blueMultiplier===void 0){blueMultiplier=1.0;}if(alphaOffset===void 0){alphaOffset=0;}if(redOffset===void 0){redOffset=0;}if(greenOffset===void 0){greenOffset=0;}if(blueOffset===void 0){blueOffset=0;}this.alphaMultiplier=alphaMultiplier;this.redMultiplier=redMultiplier;this.greenMultiplier=greenMultiplier;this.blueMultiplier=blueMultiplier;this.alphaOffset=alphaOffset;this.redOffset=redOffset;this.greenOffset=greenOffset;this.blueOffset=blueOffset;}ColorTransform.prototype.copyFrom=function(value){this.alphaMultiplier=value.alphaMultiplier;this.redMultiplier=value.redMultiplier;this.greenMultiplier=value.greenMultiplier;this.blueMultiplier=value.blueMultiplier;this.alphaOffset=value.alphaOffset;this.redOffset=value.redOffset;this.greenOffset=value.greenOffset;this.blueOffset=value.blueOffset;};ColorTransform.prototype.identity=function(){this.alphaMultiplier=this.redMultiplier=this.greenMultiplier=this.blueMultiplier=1.0;this.alphaOffset=this.redOffset=this.greenOffset=this.blueOffset=0;};return ColorTransform;}();dragonBones.ColorTransform=ColorTransform;})(dragonBones||(dragonBones={}));(function(dragonBones){var Point=function(){function Point(x,y){if(x===void 0){x=0.0;}if(y===void 0){y=0.0;}this.x=x;this.y=y;}Point.prototype.copyFrom=function(value){this.x=value.x;this.y=value.y;};Point.prototype.clear=function(){this.x=this.y=0.0;};return Point;}();dragonBones.Point=Point;})(dragonBones||(dragonBones={}));(function(dragonBones){var Rectangle=function(){function Rectangle(x,y,width,height){if(x===void 0){x=0.0;}if(y===void 0){y=0.0;}if(width===void 0){width=0.0;}if(height===void 0){height=0.0;}this.x=x;this.y=y;this.width=width;this.height=height;}Rectangle.prototype.copyFrom=function(value){this.x=value.x;this.y=value.y;this.width=value.width;this.height=value.height;};Rectangle.prototype.clear=function(){this.x=this.y=0.0;this.width=this.height=0.0;};return Rectangle;}();dragonBones.Rectangle=Rectangle;})(dragonBones||(dragonBones={}));(function(dragonBones){var UserData=function(_super){__extends(UserData,_super);function UserData(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.ints=[];_this.floats=[];_this.strings=[];return _this;}UserData.toString=function(){return "[class dragonBones.UserData]";};UserData.prototype._onClear=function(){this.ints.length=0;this.floats.length=0;this.strings.length=0;};UserData.prototype.addInt=function(value){this.ints.push(value);};UserData.prototype.addFloat=function(value){this.floats.push(value);};UserData.prototype.addString=function(value){this.strings.push(value);};UserData.prototype.getInt=function(index){if(index===void 0){index=0;}return index>=0&&index=0&&index=0&&index=total){index=0;}if(this.sortedBones.indexOf(bone)>=0){continue;}var flag=false;for(var k in this.constraints){var constraint=this.constraints[k];if(constraint.root===bone&&this.sortedBones.indexOf(constraint.target)<0){flag=true;break;}}if(flag){continue;}if(bone.parent!==null&&this.sortedBones.indexOf(bone.parent)<0){continue;}this.sortedBones.push(bone);count++;}};ArmatureData.prototype.cacheFrames=function(frameRate){if(this.cacheFrameRate>0){return;}this.cacheFrameRate=frameRate;for(var k in this.animations){this.animations[k].cacheFrames(this.cacheFrameRate);}};ArmatureData.prototype.setCacheFrame=function(globalTransformMatrix,transform){var dataArray=this.parent.cachedFrames;var arrayOffset=dataArray.length;dataArray.length+=10;dataArray[arrayOffset]=globalTransformMatrix.a;dataArray[arrayOffset+1]=globalTransformMatrix.b;dataArray[arrayOffset+2]=globalTransformMatrix.c;dataArray[arrayOffset+3]=globalTransformMatrix.d;dataArray[arrayOffset+4]=globalTransformMatrix.tx;dataArray[arrayOffset+5]=globalTransformMatrix.ty;dataArray[arrayOffset+6]=transform.rotation;dataArray[arrayOffset+7]=transform.skew;dataArray[arrayOffset+8]=transform.scaleX;dataArray[arrayOffset+9]=transform.scaleY;return arrayOffset;};ArmatureData.prototype.getCacheFrame=function(globalTransformMatrix,transform,arrayOffset){var dataArray=this.parent.cachedFrames;globalTransformMatrix.a=dataArray[arrayOffset];globalTransformMatrix.b=dataArray[arrayOffset+1];globalTransformMatrix.c=dataArray[arrayOffset+2];globalTransformMatrix.d=dataArray[arrayOffset+3];globalTransformMatrix.tx=dataArray[arrayOffset+4];globalTransformMatrix.ty=dataArray[arrayOffset+5];transform.rotation=dataArray[arrayOffset+6];transform.skew=dataArray[arrayOffset+7];transform.scaleX=dataArray[arrayOffset+8];transform.scaleY=dataArray[arrayOffset+9];transform.x=globalTransformMatrix.tx;transform.y=globalTransformMatrix.ty;};ArmatureData.prototype.addBone=function(value){if(value.name in this.bones){console.warn("Same bone: "+value.name);return;}this.bones[value.name]=value;this.sortedBones.push(value);};ArmatureData.prototype.addSlot=function(value){if(value.name in this.slots){console.warn("Same slot: "+value.name);return;}this.slots[value.name]=value;this.sortedSlots.push(value);};ArmatureData.prototype.addConstraint=function(value){if(value.name in this.constraints){console.warn("Same constraint: "+value.name);return;}this.constraints[value.name]=value;};ArmatureData.prototype.addSkin=function(value){if(value.name in this.skins){console.warn("Same skin: "+value.name);return;}value.parent=this;this.skins[value.name]=value;if(this.defaultSkin===null){this.defaultSkin=value;}if(value.name==="default"){this.defaultSkin=value;}};ArmatureData.prototype.addAnimation=function(value){if(value.name in this.animations){console.warn("Same animation: "+value.name);return;}value.parent=this;this.animations[value.name]=value;this.animationNames.push(value.name);if(this.defaultAnimation===null){this.defaultAnimation=value;}};ArmatureData.prototype.addAction=function(value,isDefault){if(isDefault){this.defaultActions.push(value);}else {this.actions.push(value);}};ArmatureData.prototype.getBone=function(boneName){return boneName in this.bones?this.bones[boneName]:null;};ArmatureData.prototype.getSlot=function(slotName){return slotName in this.slots?this.slots[slotName]:null;};ArmatureData.prototype.getConstraint=function(constraintName){return constraintName in this.constraints?this.constraints[constraintName]:null;};ArmatureData.prototype.getSkin=function(skinName){return skinName in this.skins?this.skins[skinName]:null;};ArmatureData.prototype.getMesh=function(skinName,slotName,meshName){var skin=this.getSkin(skinName);if(skin===null){return null;}return skin.getDisplay(slotName,meshName);};ArmatureData.prototype.getAnimation=function(animationName){return animationName in this.animations?this.animations[animationName]:null;};return ArmatureData;}(dragonBones.BaseObject);dragonBones.ArmatureData=ArmatureData;var BoneData=function(_super){__extends(BoneData,_super);function BoneData(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.transform=new dragonBones.Transform();_this.userData=null;return _this;}BoneData.toString=function(){return "[class dragonBones.BoneData]";};BoneData.prototype._onClear=function(){if(this.userData!==null){this.userData.returnToPool();}this.inheritTranslation=false;this.inheritRotation=false;this.inheritScale=false;this.inheritReflection=false;this.type=0;this.length=0.0;this.name="";this.transform.identity();this.userData=null;this.parent=null;};return BoneData;}(dragonBones.BaseObject);dragonBones.BoneData=BoneData;var SurfaceData=function(_super){__extends(SurfaceData,_super);function SurfaceData(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.vertices=[];return _this;}SurfaceData.toString=function(){return "[class dragonBones.SurfaceData]";};SurfaceData.prototype._onClear=function(){_super.prototype._onClear.call(this);this.type=1;this.segmentX=0;this.segmentY=0;this.vertices.length=0;};return SurfaceData;}(BoneData);dragonBones.SurfaceData=SurfaceData;var SlotData=function(_super){__extends(SlotData,_super);function SlotData(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.color=null;_this.userData=null;return _this;}SlotData.createColor=function(){return new dragonBones.ColorTransform();};SlotData.toString=function(){return "[class dragonBones.SlotData]";};SlotData.prototype._onClear=function(){if(this.userData!==null){this.userData.returnToPool();}this.blendMode=0;this.displayIndex=0;this.zOrder=0;this.name="";this.color=null;this.userData=null;this.parent=null;};SlotData.DEFAULT_COLOR=new dragonBones.ColorTransform();return SlotData;}(dragonBones.BaseObject);dragonBones.SlotData=SlotData;})(dragonBones||(dragonBones={}));(function(dragonBones){var ConstraintData=function(_super){__extends(ConstraintData,_super);function ConstraintData(){return _super!==null&&_super.apply(this,arguments)||this;}ConstraintData.prototype._onClear=function(){this.order=0;this.name="";this.type=0;this.target=null;this.root=null;this.bone=null;};return ConstraintData;}(dragonBones.BaseObject);dragonBones.ConstraintData=ConstraintData;var IKConstraintData=function(_super){__extends(IKConstraintData,_super);function IKConstraintData(){return _super!==null&&_super.apply(this,arguments)||this;}IKConstraintData.toString=function(){return "[class dragonBones.IKConstraintData]";};IKConstraintData.prototype._onClear=function(){_super.prototype._onClear.call(this);this.scaleEnabled=false;this.bendPositive=false;this.weight=1.0;};return IKConstraintData;}(ConstraintData);dragonBones.IKConstraintData=IKConstraintData;var PathConstraintData=function(_super){__extends(PathConstraintData,_super);function PathConstraintData(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.bones=[];return _this;}PathConstraintData.toString=function(){return "[class dragonBones.PathConstraintData]";};PathConstraintData.prototype._onClear=function(){_super.prototype._onClear.call(this);this.pathSlot=null;this.pathDisplayData=null;this.bones.length=0;this.positionMode=0;this.spacingMode=1;this.rotateMode=1;this.position=0.0;this.spacing=0.0;this.rotateOffset=0.0;this.rotateMix=0.0;this.translateMix=0.0;};PathConstraintData.prototype.AddBone=function(value){this.bones.push(value);};return PathConstraintData;}(ConstraintData);dragonBones.PathConstraintData=PathConstraintData;})(dragonBones||(dragonBones={}));(function(dragonBones){var CanvasData=function(_super){__extends(CanvasData,_super);function CanvasData(){return _super!==null&&_super.apply(this,arguments)||this;}CanvasData.toString=function(){return "[class dragonBones.CanvasData]";};CanvasData.prototype._onClear=function(){this.hasBackground=false;this.color=0x000000;this.x=0;this.y=0;this.width=0;this.height=0;};return CanvasData;}(dragonBones.BaseObject);dragonBones.CanvasData=CanvasData;})(dragonBones||(dragonBones={}));(function(dragonBones){var SkinData=function(_super){__extends(SkinData,_super);function SkinData(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.displays={};return _this;}SkinData.toString=function(){return "[class dragonBones.SkinData]";};SkinData.prototype._onClear=function(){for(var k in this.displays){var slotDisplays=this.displays[k];for(var _i=0,slotDisplays_1=slotDisplays;_ixMax){code|=2;}if(yyMax){code|=8;}return code;};RectangleBoundingBoxData.rectangleIntersectsSegment=function(xA,yA,xB,yB,xMin,yMin,xMax,yMax,intersectionPointA,intersectionPointB,normalRadians){if(intersectionPointA===void 0){intersectionPointA=null;}if(intersectionPointB===void 0){intersectionPointB=null;}if(normalRadians===void 0){normalRadians=null;}var inSideA=xA>xMin&&xAyMin&&yAxMin&&xByMin&&yB=-widthH&&pX<=widthH){var heightH=this.height*0.5;if(pY>=-heightH&&pY<=heightH){return true;}}return false;};RectangleBoundingBoxData.prototype.intersectsSegment=function(xA,yA,xB,yB,intersectionPointA,intersectionPointB,normalRadians){if(intersectionPointA===void 0){intersectionPointA=null;}if(intersectionPointB===void 0){intersectionPointB=null;}if(normalRadians===void 0){normalRadians=null;}var widthH=this.width*0.5;var heightH=this.height*0.5;var intersectionCount=RectangleBoundingBoxData.rectangleIntersectsSegment(xA,yA,xB,yB,-widthH,-heightH,widthH,heightH,intersectionPointA,intersectionPointB,normalRadians);return intersectionCount;};return RectangleBoundingBoxData;}(BoundingBoxData);dragonBones.RectangleBoundingBoxData=RectangleBoundingBoxData;var EllipseBoundingBoxData=function(_super){__extends(EllipseBoundingBoxData,_super);function EllipseBoundingBoxData(){return _super!==null&&_super.apply(this,arguments)||this;}EllipseBoundingBoxData.toString=function(){return "[class dragonBones.EllipseData]";};EllipseBoundingBoxData.ellipseIntersectsSegment=function(xA,yA,xB,yB,xC,yC,widthH,heightH,intersectionPointA,intersectionPointB,normalRadians){if(intersectionPointA===void 0){intersectionPointA=null;}if(intersectionPointB===void 0){intersectionPointB=null;}if(normalRadians===void 0){normalRadians=null;}var d=widthH/heightH;var dd=d*d;yA*=d;yB*=d;var dX=xB-xA;var dY=yB-yA;var lAB=Math.sqrt(dX*dX+dY*dY);var xD=dX/lAB;var yD=dY/lAB;var a=(xC-xA)*xD+(yC-yA)*yD;var aa=a*a;var ee=xA*xA+yA*yA;var rr=widthH*widthH;var dR=rr-ee+aa;var intersectionCount=0;if(dR>=0.0){var dT=Math.sqrt(dR);var sA=a-dT;var sB=a+dT;var inSideA=sA<0.0?-1:sA<=lAB?0:1;var inSideB=sB<0.0?-1:sB<=lAB?0:1;var sideAB=inSideA*inSideB;if(sideAB<0){return -1;}else if(sideAB===0){if(inSideA===-1){intersectionCount=2;xB=xA+sB*xD;yB=(yA+sB*yD)/d;if(intersectionPointA!==null){intersectionPointA.x=xB;intersectionPointA.y=yB;}if(intersectionPointB!==null){intersectionPointB.x=xB;intersectionPointB.y=yB;}if(normalRadians!==null){normalRadians.x=Math.atan2(yB/rr*dd,xB/rr);normalRadians.y=normalRadians.x+Math.PI;}}else if(inSideB===1){intersectionCount=1;xA=xA+sA*xD;yA=(yA+sA*yD)/d;if(intersectionPointA!==null){intersectionPointA.x=xA;intersectionPointA.y=yA;}if(intersectionPointB!==null){intersectionPointB.x=xA;intersectionPointB.y=yA;}if(normalRadians!==null){normalRadians.x=Math.atan2(yA/rr*dd,xA/rr);normalRadians.y=normalRadians.x+Math.PI;}}else {intersectionCount=3;if(intersectionPointA!==null){intersectionPointA.x=xA+sA*xD;intersectionPointA.y=(yA+sA*yD)/d;if(normalRadians!==null){normalRadians.x=Math.atan2(intersectionPointA.y/rr*dd,intersectionPointA.x/rr);}}if(intersectionPointB!==null){intersectionPointB.x=xA+sB*xD;intersectionPointB.y=(yA+sB*yD)/d;if(normalRadians!==null){normalRadians.y=Math.atan2(intersectionPointB.y/rr*dd,intersectionPointB.x/rr);}}}}}return intersectionCount;};EllipseBoundingBoxData.prototype._onClear=function(){_super.prototype._onClear.call(this);this.type=1;};EllipseBoundingBoxData.prototype.containsPoint=function(pX,pY){var widthH=this.width*0.5;if(pX>=-widthH&&pX<=widthH){var heightH=this.height*0.5;if(pY>=-heightH&&pY<=heightH){pY*=widthH/heightH;return Math.sqrt(pX*pX+pY*pY)<=widthH;}}return false;};EllipseBoundingBoxData.prototype.intersectsSegment=function(xA,yA,xB,yB,intersectionPointA,intersectionPointB,normalRadians){if(intersectionPointA===void 0){intersectionPointA=null;}if(intersectionPointB===void 0){intersectionPointB=null;}if(normalRadians===void 0){normalRadians=null;}var intersectionCount=EllipseBoundingBoxData.ellipseIntersectsSegment(xA,yA,xB,yB,0.0,0.0,this.width*0.5,this.height*0.5,intersectionPointA,intersectionPointB,normalRadians);return intersectionCount;};return EllipseBoundingBoxData;}(BoundingBoxData);dragonBones.EllipseBoundingBoxData=EllipseBoundingBoxData;var PolygonBoundingBoxData=function(_super){__extends(PolygonBoundingBoxData,_super);function PolygonBoundingBoxData(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.vertices=[];return _this;}PolygonBoundingBoxData.toString=function(){return "[class dragonBones.PolygonBoundingBoxData]";};PolygonBoundingBoxData.polygonIntersectsSegment=function(xA,yA,xB,yB,vertices,intersectionPointA,intersectionPointB,normalRadians){if(intersectionPointA===void 0){intersectionPointA=null;}if(intersectionPointB===void 0){intersectionPointB=null;}if(normalRadians===void 0){normalRadians=null;}if(xA===xB){xA=xB+0.000001;}if(yA===yB){yA=yB+0.000001;}var count=vertices.length;var dXAB=xA-xB;var dYAB=yA-yB;var llAB=xA*yB-yA*xB;var intersectionCount=0;var xC=vertices[count-2];var yC=vertices[count-1];var dMin=0.0;var dMax=0.0;var xMin=0.0;var yMin=0.0;var xMax=0.0;var yMax=0.0;for(var i=0;i=xC&&x<=xD||x>=xD&&x<=xC)&&(dXAB===0.0||x>=xA&&x<=xB||x>=xB&&x<=xA)){var y=(llAB*dYCD-dYAB*llCD)/ll;if((y>=yC&&y<=yD||y>=yD&&y<=yC)&&(dYAB===0.0||y>=yA&&y<=yB||y>=yB&&y<=yA)){if(intersectionPointB!==null){var d=x-xA;if(d<0.0){d=-d;}if(intersectionCount===0){dMin=d;dMax=d;xMin=x;yMin=y;xMax=x;yMax=y;if(normalRadians!==null){normalRadians.x=Math.atan2(yD-yC,xD-xC)-Math.PI*0.5;normalRadians.y=normalRadians.x;}}else {if(ddMax){dMax=d;xMax=x;yMax=y;if(normalRadians!==null){normalRadians.y=Math.atan2(yD-yC,xD-xC)-Math.PI*0.5;}}}intersectionCount++;}else {xMin=x;yMin=y;xMax=x;yMax=y;intersectionCount++;if(normalRadians!==null){normalRadians.x=Math.atan2(yD-yC,xD-xC)-Math.PI*0.5;normalRadians.y=normalRadians.x;}break;}}}xC=xD;yC=yD;}if(intersectionCount===1){if(intersectionPointA!==null){intersectionPointA.x=xMin;intersectionPointA.y=yMin;}if(intersectionPointB!==null){intersectionPointB.x=xMin;intersectionPointB.y=yMin;}if(normalRadians!==null){normalRadians.y=normalRadians.x+Math.PI;}}else if(intersectionCount>1){intersectionCount++;if(intersectionPointA!==null){intersectionPointA.x=xMin;intersectionPointA.y=yMin;}if(intersectionPointB!==null){intersectionPointB.x=xMax;intersectionPointB.y=yMax;}}return intersectionCount;};PolygonBoundingBoxData.prototype._onClear=function(){_super.prototype._onClear.call(this);this.type=2;this.x=0.0;this.y=0.0;this.vertices.length=0;};PolygonBoundingBoxData.prototype.containsPoint=function(pX,pY){var isInSide=false;if(pX>=this.x&&pX<=this.width&&pY>=this.y&&pY<=this.height){for(var i=0,l=this.vertices.length,iP=l-2;i=pY||yA=pY){var xA=this.vertices[iP];var xB=this.vertices[i];if((pY-yB)*(xA-xB)/(yA-yB)+xB0.0){return;}this.cacheFrameRate=Math.max(Math.ceil(frameRate*this.scale),1.0);var cacheFrameCount=Math.ceil(this.cacheFrameRate*this.duration)+1;this.cachedFrames.length=cacheFrameCount;for(var i=0,l=this.cacheFrames.length;i=0;};AnimationConfig.prototype.addBoneMask=function(armature,boneName,recursive){if(recursive===void 0){recursive=true;}var currentBone=armature.getBone(boneName);if(currentBone===null){return;}if(this.boneMask.indexOf(boneName)<0){this.boneMask.push(boneName);}if(recursive){for(var _i=0,_a=armature.getBones();_i<_a.length;_i++){var bone=_a[_i];if(this.boneMask.indexOf(bone.name)<0&¤tBone.contains(bone)){this.boneMask.push(bone.name);}}}};AnimationConfig.prototype.removeBoneMask=function(armature,boneName,recursive){if(recursive===void 0){recursive=true;}var index=this.boneMask.indexOf(boneName);if(index>=0){this.boneMask.splice(index,1);}if(recursive){var currentBone=armature.getBone(boneName);if(currentBone!==null){if(this.boneMask.length>0){for(var _i=0,_a=armature.getBones();_i<_a.length;_i++){var bone=_a[_i];var index_1=this.boneMask.indexOf(bone.name);if(index_1>=0&¤tBone.contains(bone)){this.boneMask.splice(index_1,1);}}}else {for(var _b=0,_c=armature.getBones();_b<_c.length;_b++){var bone=_c[_b];if(bone===currentBone){continue;}if(!currentBone.contains(bone)){this.boneMask.push(bone.name);}}}}}};return AnimationConfig;}(dragonBones.BaseObject);dragonBones.AnimationConfig=AnimationConfig;})(dragonBones||(dragonBones={}));(function(dragonBones){var TextureAtlasData=function(_super){__extends(TextureAtlasData,_super);function TextureAtlasData(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.textures={};return _this;}TextureAtlasData.prototype._onClear=function(){for(var k in this.textures){this.textures[k].returnToPool();delete this.textures[k];}this.autoSearch=false;this.width=0;this.height=0;this.scale=1.0;this.name="";this.imagePath="";};TextureAtlasData.prototype.copyFrom=function(value){this.autoSearch=value.autoSearch;this.scale=value.scale;this.width=value.width;this.height=value.height;this.name=value.name;this.imagePath=value.imagePath;for(var k in this.textures){this.textures[k].returnToPool();delete this.textures[k];}for(var k in value.textures){var texture=this.createTexture();texture.copyFrom(value.textures[k]);this.textures[k]=texture;}};TextureAtlasData.prototype.addTexture=function(value){if(value.name in this.textures){console.warn("Same texture: "+value.name);return;}value.parent=this;this.textures[value.name]=value;};TextureAtlasData.prototype.getTexture=function(textureName){return textureName in this.textures?this.textures[textureName]:null;};return TextureAtlasData;}(dragonBones.BaseObject);dragonBones.TextureAtlasData=TextureAtlasData;var TextureData=function(_super){__extends(TextureData,_super);function TextureData(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.region=new dragonBones.Rectangle();_this.frame=null;return _this;}TextureData.createRectangle=function(){return new dragonBones.Rectangle();};TextureData.prototype._onClear=function(){this.rotated=false;this.name="";this.region.clear();this.parent=null;this.frame=null;};TextureData.prototype.copyFrom=function(value){this.rotated=value.rotated;this.name=value.name;this.region.copyFrom(value.region);this.parent=value.parent;if(this.frame===null&&value.frame!==null){this.frame=TextureData.createRectangle();}else if(this.frame!==null&&value.frame===null){this.frame=null;}if(this.frame!==null&&value.frame!==null){this.frame.copyFrom(value.frame);}};return TextureData;}(dragonBones.BaseObject);dragonBones.TextureData=TextureData;})(dragonBones||(dragonBones={}));(function(dragonBones){var DeformVertices=function(_super){__extends(DeformVertices,_super);function DeformVertices(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.vertices=[];_this.bones=[];return _this;}DeformVertices.toString=function(){return "[class dragonBones.DeformVertices]";};DeformVertices.prototype._onClear=function(){this.verticesDirty=false;this.vertices.length=0;this.bones.length=0;this.verticesData=null;};DeformVertices.prototype.init=function(verticesDataValue,armature){this.verticesData=verticesDataValue;if(this.verticesData!==null){var vertexCount=0;if(this.verticesData.weight!==null){vertexCount=this.verticesData.weight.count*2;}else {vertexCount=this.verticesData.data.intArray[this.verticesData.offset+0]*2;}this.verticesDirty=true;this.vertices.length=vertexCount;this.bones.length=0;for(var i=0,l=this.vertices.length;ib._zOrder?1:-1;};Armature.prototype._onClear=function(){if(this._clock!==null){this._clock.remove(this);}for(var _i=0,_a=this._bones;_i<_a.length;_i++){var bone=_a[_i];bone.returnToPool();}for(var _b=0,_c=this._slots;_b<_c.length;_b++){var slot=_c[_b];slot.returnToPool();}for(var _d=0,_e=this._constraints;_d<_e.length;_d++){var constraint=_e[_d];constraint.returnToPool();}for(var _f=0,_g=this._actions;_f<_g.length;_f++){var action=_g[_f];action.returnToPool();}if(this._animation!==null){this._animation.returnToPool();}if(this._proxy!==null){this._proxy.dbClear();}if(this._replaceTextureAtlasData!==null){this._replaceTextureAtlasData.returnToPool();}this.inheritAnimation=true;this.userData=null;this._lockUpdate=false;this._slotsDirty=true;this._zOrderDirty=false;this._flipX=false;this._flipY=false;this._cacheFrameIndex=-1;this._bones.length=0;this._slots.length=0;this._constraints.length=0;this._actions.length=0;this._armatureData=null;this._animation=null;this._proxy=null;this._display=null;this._replaceTextureAtlasData=null;this._replacedTexture=null;this._dragonBones=null;this._clock=null;this._parent=null;};Armature.prototype._sortZOrder=function(slotIndices,offset){var slotDatas=this._armatureData.sortedSlots;var isOriginal=slotIndices===null;if(this._zOrderDirty||!isOriginal){for(var i=0,l=slotDatas.length;i=l){continue;}var slotData=slotDatas[slotIndex];var slot=this.getSlot(slotData.name);if(slot!==null){slot._setZorder(i);}}this._slotsDirty=true;this._zOrderDirty=!isOriginal;}};Armature.prototype._addBone=function(value){if(this._bones.indexOf(value)<0){this._bones.push(value);}};Armature.prototype._addSlot=function(value){if(this._slots.indexOf(value)<0){this._slots.push(value);}};Armature.prototype._addConstraint=function(value){if(this._constraints.indexOf(value)<0){this._constraints.push(value);}};Armature.prototype._bufferAction=function(action,append){if(this._actions.indexOf(action)<0){if(append){this._actions.push(action);}else {this._actions.unshift(action);}}};Armature.prototype.dispose=function(){if(this._armatureData!==null){this._lockUpdate=true;this._dragonBones.bufferObject(this);}};Armature.prototype.init=function(armatureData,proxy,display,dragonBones){if(this._armatureData!==null){return;}this._armatureData=armatureData;this._animation=dragonBones_1.BaseObject.borrowObject(dragonBones_1.Animation);this._proxy=proxy;this._display=display;this._dragonBones=dragonBones;this._proxy.dbInit(this);this._animation.init(this);this._animation.animations=this._armatureData.animations;};Armature.prototype.advanceTime=function(passedTime){if(this._lockUpdate){return;}if(this._armatureData===null){console.warn("The armature has been disposed.");return;}else if(this._armatureData.parent===null){console.warn("The armature data has been disposed.\nPlease make sure dispose armature before call factory.clear().");return;}var prevCacheFrameIndex=this._cacheFrameIndex;this._animation.advanceTime(passedTime);if(this._slotsDirty){this._slotsDirty=false;this._slots.sort(Armature._onSortSlots);}if(this._cacheFrameIndex<0||this._cacheFrameIndex!==prevCacheFrameIndex){var i=0,l=0;for(i=0,l=this._bones.length;i0){this._lockUpdate=true;for(var _i=0,_a=this._actions;_i<_a.length;_i++){var action=_a[_i];var actionData=action.actionData;if(actionData!==null){if(actionData.type===0){if(action.slot!==null){var childArmature=action.slot.childArmature;if(childArmature!==null){childArmature.animation.fadeIn(actionData.name);}}else if(action.bone!==null){for(var _b=0,_c=this.getSlots();_b<_c.length;_b++){var slot=_c[_b];if(slot.parent===action.bone){var childArmature=slot.childArmature;if(childArmature!==null){childArmature.animation.fadeIn(actionData.name);}}}}else {this._animation.fadeIn(actionData.name);}}}action.returnToPool();}this._actions.length=0;this._lockUpdate=false;}this._proxy.dbUpdate();};Armature.prototype.invalidUpdate=function(boneName,updateSlot){if(boneName===void 0){boneName=null;}if(updateSlot===void 0){updateSlot=false;}if(boneName!==null&&boneName.length>0){var bone=this.getBone(boneName);if(bone!==null){bone.invalidUpdate();if(updateSlot){for(var _i=0,_a=this._slots;_i<_a.length;_i++){var slot=_a[_i];if(slot.parent===bone){slot.invalidUpdate();}}}}}else {for(var _b=0,_c=this._bones;_b<_c.length;_b++){var bone=_c[_b];bone.invalidUpdate();}if(updateSlot){for(var _d=0,_e=this._slots;_d<_e.length;_d++){var slot=_e[_d];slot.invalidUpdate();}}}};Armature.prototype.containsPoint=function(x,y){for(var _i=0,_a=this._slots;_i<_a.length;_i++){var slot=_a[_i];if(slot.containsPoint(x,y)){return slot;}}return null;};Armature.prototype.intersectsSegment=function(xA,yA,xB,yB,intersectionPointA,intersectionPointB,normalRadians){if(intersectionPointA===void 0){intersectionPointA=null;}if(intersectionPointB===void 0){intersectionPointB=null;}if(normalRadians===void 0){normalRadians=null;}var isV=xA===xB;var dMin=0.0;var dMax=0.0;var intXA=0.0;var intYA=0.0;var intXB=0.0;var intYB=0.0;var intAN=0.0;var intBN=0.0;var intSlotA=null;var intSlotB=null;for(var _i=0,_a=this._slots;_i<_a.length;_i++){var slot=_a[_i];var intersectionCount=slot.intersectsSegment(xA,yA,xB,yB,intersectionPointA,intersectionPointB,normalRadians);if(intersectionCount>0){if(intersectionPointA!==null||intersectionPointB!==null){if(intersectionPointA!==null){var d=isV?intersectionPointA.y-yA:intersectionPointA.x-xA;if(d<0.0){d=-d;}if(intSlotA===null||ddMax){dMax=d;intXB=intersectionPointB.x;intYB=intersectionPointB.y;intSlotB=slot;if(normalRadians!==null){intBN=normalRadians.y;}}}}else {intSlotA=slot;break;}}}if(intSlotA!==null&&intersectionPointA!==null){intersectionPointA.x=intXA;intersectionPointA.y=intYA;if(normalRadians!==null){normalRadians.x=intAN;}}if(intSlotB!==null&&intersectionPointB!==null){intersectionPointB.x=intXB;intersectionPointB.y=intYB;if(normalRadians!==null){normalRadians.y=intBN;}}return intSlotA;};Armature.prototype.getBone=function(name){for(var _i=0,_a=this._bones;_i<_a.length;_i++){var bone=_a[_i];if(bone.name===name){return bone;}}return null;};Armature.prototype.getBoneByDisplay=function(display){var slot=this.getSlotByDisplay(display);return slot!==null?slot.parent:null;};Armature.prototype.getSlot=function(name){for(var _i=0,_a=this._slots;_i<_a.length;_i++){var slot=_a[_i];if(slot.name===name){return slot;}}return null;};Armature.prototype.getSlotByDisplay=function(display){if(display!==null){for(var _i=0,_a=this._slots;_i<_a.length;_i++){var slot=_a[_i];if(slot.display===display){return slot;}}}return null;};Armature.prototype.getBones=function(){return this._bones;};Armature.prototype.getSlots=function(){return this._slots;};Object.defineProperty(Armature.prototype,"flipX",{get:function get(){return this._flipX;},set:function set(value){if(this._flipX===value){return;}this._flipX=value;this.invalidUpdate();},enumerable:true,configurable:true});Object.defineProperty(Armature.prototype,"flipY",{get:function get(){return this._flipY;},set:function set(value){if(this._flipY===value){return;}this._flipY=value;this.invalidUpdate();},enumerable:true,configurable:true});Object.defineProperty(Armature.prototype,"cacheFrameRate",{get:function get(){return this._armatureData.cacheFrameRate;},set:function set(value){if(this._armatureData.cacheFrameRate!==value){this._armatureData.cacheFrames(value);for(var _i=0,_a=this._slots;_i<_a.length;_i++){var slot=_a[_i];var childArmature=slot.childArmature;if(childArmature!==null){childArmature.cacheFrameRate=value;}}}},enumerable:true,configurable:true});Object.defineProperty(Armature.prototype,"name",{get:function get(){return this._armatureData.name;},enumerable:true,configurable:true});Object.defineProperty(Armature.prototype,"armatureData",{get:function get(){return this._armatureData;},enumerable:true,configurable:true});Object.defineProperty(Armature.prototype,"animation",{get:function get(){return this._animation;},enumerable:true,configurable:true});Object.defineProperty(Armature.prototype,"proxy",{get:function get(){return this._proxy;},enumerable:true,configurable:true});Object.defineProperty(Armature.prototype,"eventDispatcher",{get:function get(){return this._proxy;},enumerable:true,configurable:true});Object.defineProperty(Armature.prototype,"display",{get:function get(){return this._display;},enumerable:true,configurable:true});Object.defineProperty(Armature.prototype,"replacedTexture",{get:function get(){return this._replacedTexture;},set:function set(value){if(this._replacedTexture===value){return;}if(this._replaceTextureAtlasData!==null){this._replaceTextureAtlasData.returnToPool();this._replaceTextureAtlasData=null;}this._replacedTexture=value;for(var _i=0,_a=this._slots;_i<_a.length;_i++){var slot=_a[_i];slot.invalidUpdate();slot.update(-1);}},enumerable:true,configurable:true});Object.defineProperty(Armature.prototype,"clock",{get:function get(){return this._clock;},set:function set(value){if(this._clock===value){return;}if(this._clock!==null){this._clock.remove(this);}this._clock=value;if(this._clock){this._clock.add(this);}for(var _i=0,_a=this._slots;_i<_a.length;_i++){var slot=_a[_i];var childArmature=slot.childArmature;if(childArmature!==null){childArmature.clock=this._clock;}}},enumerable:true,configurable:true});Object.defineProperty(Armature.prototype,"parent",{get:function get(){return this._parent;},enumerable:true,configurable:true});Armature.prototype.replaceTexture=function(texture){this.replacedTexture=texture;};Armature.prototype.hasEventListener=function(type){return this._proxy.hasDBEventListener(type);};Armature.prototype.addEventListener=function(type,listener,target){this._proxy.addDBEventListener(type,listener,target);};Armature.prototype.removeEventListener=function(type,listener,target){this._proxy.removeDBEventListener(type,listener,target);};Armature.prototype.enableAnimationCache=function(frameRate){console.warn("Deprecated.");this.cacheFrameRate=frameRate;};Armature.prototype.getDisplay=function(){return this._display;};return Armature;}(dragonBones_1.BaseObject);dragonBones_1.Armature=Armature;})(dragonBones||(dragonBones={}));(function(dragonBones){var TransformObject=function(_super){__extends(TransformObject,_super);function TransformObject(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.globalTransformMatrix=new dragonBones.Matrix();_this.global=new dragonBones.Transform();_this.offset=new dragonBones.Transform();return _this;}TransformObject.prototype._onClear=function(){this.globalTransformMatrix.identity();this.global.identity();this.offset.identity();this.origin=null;this.userData=null;this._globalDirty=false;this._armature=null;};TransformObject.prototype.updateGlobalTransform=function(){if(this._globalDirty){this._globalDirty=false;this.global.fromMatrix(this.globalTransformMatrix);}};Object.defineProperty(TransformObject.prototype,"armature",{get:function get(){return this._armature;},enumerable:true,configurable:true});TransformObject._helpMatrix=new dragonBones.Matrix();TransformObject._helpTransform=new dragonBones.Transform();TransformObject._helpPoint=new dragonBones.Point();return TransformObject;}(dragonBones.BaseObject);dragonBones.TransformObject=TransformObject;})(dragonBones||(dragonBones={}));(function(dragonBones){var Bone=function(_super){__extends(Bone,_super);function Bone(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.animationPose=new dragonBones.Transform();_this._blendState=new dragonBones.BlendState();return _this;}Bone.toString=function(){return "[class dragonBones.Bone]";};Bone.prototype._onClear=function(){_super.prototype._onClear.call(this);this.offsetMode=1;this.animationPose.identity();this._transformDirty=false;this._childrenTransformDirty=false;this._localDirty=true;this._hasConstraint=false;this._visible=true;this._cachedFrameIndex=-1;this._blendState.clear();this._boneData=null;this._parent=null;this._cachedFrameIndices=null;};Bone.prototype._updateGlobalTransformMatrix=function(isCache){var boneData=this._boneData;var global=this.global;var globalTransformMatrix=this.globalTransformMatrix;var origin=this.origin;var offset=this.offset;var animationPose=this.animationPose;var parent=this._parent;var flipX=this._armature.flipX;var flipY=this._armature.flipY===dragonBones.DragonBones.yDown;var inherit=parent!==null;var rotation=0.0;if(this.offsetMode===1){if(origin!==null){global.x=origin.x+offset.x+animationPose.x;global.scaleX=origin.scaleX*offset.scaleX*animationPose.scaleX;global.scaleY=origin.scaleY*offset.scaleY*animationPose.scaleY;if(dragonBones.DragonBones.yDown){global.y=origin.y+offset.y+animationPose.y;global.skew=origin.skew+offset.skew+animationPose.skew;global.rotation=origin.rotation+offset.rotation+animationPose.rotation;}else {global.y=origin.y-offset.y+animationPose.y;global.skew=origin.skew-offset.skew+animationPose.skew;global.rotation=origin.rotation-offset.rotation+animationPose.rotation;}}else {global.copyFrom(offset);if(!dragonBones.DragonBones.yDown){global.y=-global.y;global.skew=-global.skew;global.rotation=-global.rotation;}global.add(animationPose);}}else if(this.offsetMode===0){if(origin!==null){global.copyFrom(origin).add(animationPose);}else {global.copyFrom(animationPose);}}else {inherit=false;global.copyFrom(offset);if(!dragonBones.DragonBones.yDown){global.y=-global.y;global.skew=-global.skew;global.rotation=-global.rotation;}}if(inherit){var parentMatrix=parent._boneData.type===0?parent.globalTransformMatrix:parent._getGlobalTransformMatrix(global.x,global.y);if(boneData.inheritScale){if(!boneData.inheritRotation){parent.updateGlobalTransform();if(flipX&&flipY){rotation=global.rotation-(parent.global.rotation+Math.PI);}else if(flipX){rotation=global.rotation+parent.global.rotation+Math.PI;}else if(flipY){rotation=global.rotation+parent.global.rotation;}else {rotation=global.rotation-parent.global.rotation;}global.rotation=rotation;}global.toMatrix(globalTransformMatrix);globalTransformMatrix.concat(parentMatrix);if(boneData.inheritTranslation){global.x=globalTransformMatrix.tx;global.y=globalTransformMatrix.ty;}else {globalTransformMatrix.tx=global.x;globalTransformMatrix.ty=global.y;}if(isCache){global.fromMatrix(globalTransformMatrix);}else {this._globalDirty=true;}}else {if(boneData.inheritTranslation){var x=global.x;var y=global.y;global.x=parentMatrix.a*x+parentMatrix.c*y+parentMatrix.tx;global.y=parentMatrix.b*x+parentMatrix.d*y+parentMatrix.ty;}else {if(flipX){global.x=-global.x;}if(flipY){global.y=-global.y;}}if(boneData.inheritRotation){parent.updateGlobalTransform();if(parent.global.scaleX<0.0){rotation=global.rotation+parent.global.rotation+Math.PI;}else {rotation=global.rotation+parent.global.rotation;}if(parentMatrix.a*parentMatrix.d-parentMatrix.b*parentMatrix.c<0.0){rotation-=global.rotation*2.0;if(flipX!==flipY||boneData.inheritReflection){global.skew+=Math.PI;}if(!dragonBones.DragonBones.yDown){global.skew=-global.skew;}}global.rotation=rotation;}else if(flipX||flipY){if(flipX&&flipY){rotation=global.rotation+Math.PI;}else {if(flipX){rotation=Math.PI-global.rotation;}else {rotation=-global.rotation;}global.skew+=Math.PI;}global.rotation=rotation;}global.toMatrix(globalTransformMatrix);}}else {if(flipX||flipY){if(flipX){global.x=-global.x;}if(flipY){global.y=-global.y;}if(flipX&&flipY){rotation=global.rotation+Math.PI;}else {if(flipX){rotation=Math.PI-global.rotation;}else {rotation=-global.rotation;}global.skew+=Math.PI;}global.rotation=rotation;}global.toMatrix(globalTransformMatrix);}};Bone.prototype.init=function(boneData,armatureValue){if(this._boneData!==null){return;}this._boneData=boneData;this._armature=armatureValue;if(this._boneData.parent!==null){this._parent=this._armature.getBone(this._boneData.parent.name);}this._armature._addBone(this);this.origin=this._boneData.transform;};Bone.prototype.update=function(cacheFrameIndex){this._blendState.dirty=false;if(cacheFrameIndex>=0&&this._cachedFrameIndices!==null){var cachedFrameIndex=this._cachedFrameIndices[cacheFrameIndex];if(cachedFrameIndex>=0&&this._cachedFrameIndex===cachedFrameIndex){this._transformDirty=false;}else if(cachedFrameIndex>=0){this._transformDirty=true;this._cachedFrameIndex=cachedFrameIndex;}else {if(this._hasConstraint){for(var _i=0,_a=this._armature._constraints;_i<_a.length;_i++){var constraint=_a[_i];if(constraint._root===this){constraint.update();}}}if(this._transformDirty||this._parent!==null&&this._parent._childrenTransformDirty){this._transformDirty=true;this._cachedFrameIndex=-1;}else if(this._cachedFrameIndex>=0){this._transformDirty=false;this._cachedFrameIndices[cacheFrameIndex]=this._cachedFrameIndex;}else {this._transformDirty=true;this._cachedFrameIndex=-1;}}}else {if(this._hasConstraint){for(var _b=0,_c=this._armature._constraints;_b<_c.length;_b++){var constraint=_c[_b];if(constraint._root===this){constraint.update();}}}if(this._transformDirty||this._parent!==null&&this._parent._childrenTransformDirty){cacheFrameIndex=-1;this._transformDirty=true;this._cachedFrameIndex=-1;}}if(this._transformDirty){this._transformDirty=false;this._childrenTransformDirty=true;if(this._cachedFrameIndex<0){var isCache=cacheFrameIndex>=0;if(this._localDirty){this._updateGlobalTransformMatrix(isCache);}if(isCache&&this._cachedFrameIndices!==null){this._cachedFrameIndex=this._cachedFrameIndices[cacheFrameIndex]=this._armature._armatureData.setCacheFrame(this.globalTransformMatrix,this.global);}}else {this._armature._armatureData.getCacheFrame(this.globalTransformMatrix,this.global,this._cachedFrameIndex);}}else if(this._childrenTransformDirty){this._childrenTransformDirty=false;}this._localDirty=true;};Bone.prototype.updateByConstraint=function(){if(this._localDirty){this._localDirty=false;if(this._transformDirty||this._parent!==null&&this._parent._childrenTransformDirty){this._updateGlobalTransformMatrix(true);}this._transformDirty=true;}};Bone.prototype.invalidUpdate=function(){this._transformDirty=true;};Bone.prototype.contains=function(value){if(value===this){return false;}var ancestor=value;while(ancestor!==this&&ancestor!==null){ancestor=ancestor.parent;}return ancestor===this;};Object.defineProperty(Bone.prototype,"boneData",{get:function get(){return this._boneData;},enumerable:true,configurable:true});Object.defineProperty(Bone.prototype,"visible",{get:function get(){return this._visible;},set:function set(value){if(this._visible===value){return;}this._visible=value;for(var _i=0,_a=this._armature.getSlots();_i<_a.length;_i++){var slot=_a[_i];if(slot.parent===this){slot._updateVisible();}}},enumerable:true,configurable:true});Object.defineProperty(Bone.prototype,"name",{get:function get(){return this._boneData.name;},enumerable:true,configurable:true});Object.defineProperty(Bone.prototype,"parent",{get:function get(){return this._parent;},enumerable:true,configurable:true});Bone.prototype.getBones=function(){console.warn("Deprecated.");var bones=new Array();for(var _i=0,_a=this._armature.getBones();_i<_a.length;_i++){var bone=_a[_i];if(bone.parent===this){bones.push(bone);}}return bones;};Bone.prototype.getSlots=function(){console.warn("Deprecated.");var slots=new Array();for(var _i=0,_a=this._armature.getSlots();_i<_a.length;_i++){var slot=_a[_i];if(slot.parent===this){slots.push(slot);}}return slots;};Object.defineProperty(Bone.prototype,"slot",{get:function get(){console.warn("Deprecated.");for(var _i=0,_a=this._armature.getSlots();_i<_a.length;_i++){var slot=_a[_i];if(slot.parent===this){return slot;}}return null;},enumerable:true,configurable:true});return Bone;}(dragonBones.TransformObject);dragonBones.Bone=Bone;})(dragonBones||(dragonBones={}));(function(dragonBones){var Surface=function(_super){__extends(Surface,_super);function Surface(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this._vertices=[];_this._deformVertices=[];_this._hullCache=[];_this._matrixCahce=[];return _this;}Surface.toString=function(){return "[class dragonBones.Surface]";};Surface.prototype._onClear=function(){_super.prototype._onClear.call(this);this._dX=0.0;this._dY=0.0;this._k=0.0;this._kX=0.0;this._kY=0.0;this._vertices.length=0;this._deformVertices.length=0;this._matrixCahce.length=0;this._hullCache.length=0;};Surface.prototype._getAffineTransform=function(x,y,lX,lY,aX,aY,bX,bY,cX,cY,transform,matrix,isDown){var dabX=bX-aX;var dabY=bY-aY;var dacX=cX-aX;var dacY=cY-aY;transform.rotation=Math.atan2(dabY,dabX);transform.skew=Math.atan2(dacY,dacX)-Math.PI*0.5-transform.rotation;if(isDown){transform.rotation+=Math.PI;}transform.scaleX=Math.sqrt(dabX*dabX+dabY*dabY)/lX;transform.scaleY=Math.sqrt(dacX*dacX+dacY*dacY)/lY;transform.toMatrix(matrix);transform.x=matrix.tx=aX-(matrix.a*x+matrix.c*y);transform.y=matrix.ty=aY-(matrix.b*x+matrix.d*y);};Surface.prototype._updateVertices=function(){var originalVertices=this._boneData.vertices;var vertices=this._vertices;var animationVertices=this._deformVertices;if(this._parent!==null){if(this._parent._boneData.type===1){for(var i=0,l=originalVertices.length;i=lA){return this.globalTransformMatrix;}isDown=y>this._kX*(x+lA)+pY;matrixIndex=((segmentX*(segmentY+1)+segmentX*2+segmentY+indexY)*2+(isDown?1:0))*7;if(this._matrixCahce[matrixIndex]>0.0){helpMatrix.copyFromArray(matrices,matrixIndex+1);}else {var vertexIndex=indexY*(segmentXD+2);var ddX=this._hullCache[4];var ddY=this._hullCache[5];var sX=this._hullCache[2]-(segmentY-indexY)*ddX;var sY=this._hullCache[3]-(segmentY-indexY)*ddY;var vertices=this._vertices;if(isDown){this._getAffineTransform(-lA,pY+dY,lB-lA,dY,vertices[vertexIndex+segmentXD+2],vertices[vertexIndex+segmentXD+3],sX+ddX,sY+ddY,vertices[vertexIndex],vertices[vertexIndex+1],Surface._helpTransform,helpMatrix,true);}else {this._getAffineTransform(-lB,pY,lB-lA,dY,sX,sY,vertices[vertexIndex],vertices[vertexIndex+1],sX+ddX,sY+ddY,Surface._helpTransform,helpMatrix,false);}matrices[matrixIndex]=1.0;matrices[matrixIndex+1]=helpMatrix.a;matrices[matrixIndex+2]=helpMatrix.b;matrices[matrixIndex+3]=helpMatrix.c;matrices[matrixIndex+4]=helpMatrix.d;matrices[matrixIndex+5]=helpMatrix.tx;matrices[matrixIndex+6]=helpMatrix.ty;}}else if(x>=lA){if(y<-lA||y>=lA){return this.globalTransformMatrix;}isDown=y>this._kX*(x-lB)+pY;matrixIndex=((segmentX*(segmentY+1)+segmentX+indexY)*2+(isDown?1:0))*7;if(this._matrixCahce[matrixIndex]>0.0){helpMatrix.copyFromArray(matrices,matrixIndex+1);}else {var vertexIndex=(indexY+1)*(segmentXD+2)-2;var ddX=this._hullCache[4];var ddY=this._hullCache[5];var sX=this._hullCache[0]+indexY*ddX;var sY=this._hullCache[1]+indexY*ddY;var vertices=this._vertices;if(isDown){this._getAffineTransform(lB,pY+dY,lB-lA,dY,sX+ddX,sY+ddY,vertices[vertexIndex+segmentXD+2],vertices[vertexIndex+segmentXD+3],sX,sY,Surface._helpTransform,helpMatrix,true);}else {this._getAffineTransform(lA,pY,lB-lA,dY,vertices[vertexIndex],vertices[vertexIndex+1],sX,sY,vertices[vertexIndex+segmentXD+2],vertices[vertexIndex+segmentXD+3],Surface._helpTransform,helpMatrix,false);}matrices[matrixIndex]=1.0;matrices[matrixIndex+1]=helpMatrix.a;matrices[matrixIndex+2]=helpMatrix.b;matrices[matrixIndex+3]=helpMatrix.c;matrices[matrixIndex+4]=helpMatrix.d;matrices[matrixIndex+5]=helpMatrix.tx;matrices[matrixIndex+6]=helpMatrix.ty;}}else if(y<-lA){if(x<-lA||x>=lA){return this.globalTransformMatrix;}isDown=y>this._kY*(x-pX-dX)-lB;matrixIndex=(segmentX*(segmentY+1)+indexX*2+(isDown?1:0))*7;if(this._matrixCahce[matrixIndex]>0.0){helpMatrix.copyFromArray(matrices,matrixIndex+1);}else {var vertexIndex=indexX*2;var ddX=this._hullCache[10];var ddY=this._hullCache[11];var sX=this._hullCache[8]+indexX*ddX;var sY=this._hullCache[9]+indexX*ddY;var vertices=this._vertices;if(isDown){this._getAffineTransform(pX+dX,-lA,dX,lB-lA,vertices[vertexIndex+2],vertices[vertexIndex+3],vertices[vertexIndex],vertices[vertexIndex+1],sX+ddX,sY+ddY,Surface._helpTransform,helpMatrix,true);}else {this._getAffineTransform(pX,-lB,dX,lB-lA,sX,sY,sX+ddX,sY+ddY,vertices[vertexIndex],vertices[vertexIndex+1],Surface._helpTransform,helpMatrix,false);}matrices[matrixIndex]=1.0;matrices[matrixIndex+1]=helpMatrix.a;matrices[matrixIndex+2]=helpMatrix.b;matrices[matrixIndex+3]=helpMatrix.c;matrices[matrixIndex+4]=helpMatrix.d;matrices[matrixIndex+5]=helpMatrix.tx;matrices[matrixIndex+6]=helpMatrix.ty;}}else if(y>=lA){if(x<-lA||x>=lA){return this.globalTransformMatrix;}isDown=y>this._kY*(x-pX-dX)+lA;matrixIndex=((segmentX*(segmentY+1)+segmentX+segmentY+indexY)*2+(isDown?1:0))*7;if(this._matrixCahce[matrixIndex]>0.0){helpMatrix.copyFromArray(matrices,matrixIndex+1);}else {var vertexIndex=segmentY*(segmentXD+2)+indexX*2;var ddX=this._hullCache[10];var ddY=this._hullCache[11];var sX=this._hullCache[6]-(segmentX-indexX)*ddX;var sY=this._hullCache[7]-(segmentX-indexX)*ddY;var vertices=this._vertices;if(isDown){this._getAffineTransform(pX+dX,lB,dX,lB-lA,sX+ddX,sY+ddY,sX,sY,vertices[vertexIndex+2],vertices[vertexIndex+3],Surface._helpTransform,helpMatrix,true);}else {this._getAffineTransform(pX,lA,dX,lB-lA,vertices[vertexIndex],vertices[vertexIndex+1],vertices[vertexIndex+2],vertices[vertexIndex+3],sX,sY,Surface._helpTransform,helpMatrix,false);}matrices[matrixIndex]=1.0;matrices[matrixIndex+1]=helpMatrix.a;matrices[matrixIndex+2]=helpMatrix.b;matrices[matrixIndex+3]=helpMatrix.c;matrices[matrixIndex+4]=helpMatrix.d;matrices[matrixIndex+5]=helpMatrix.tx;matrices[matrixIndex+6]=helpMatrix.ty;}}else {isDown=y>this._k*(x-pX-dX)+pY;matrixIndex=((segmentX*indexY+indexX)*2+(isDown?1:0))*7;if(this._matrixCahce[matrixIndex]>0.0){helpMatrix.copyFromArray(matrices,matrixIndex+1);}else {var vertexIndex=indexX*2+indexY*(segmentXD+2);var vertices=this._vertices;if(isDown){this._getAffineTransform(pX+dX,pY+dY,dX,dY,vertices[vertexIndex+segmentXD+4],vertices[vertexIndex+segmentXD+5],vertices[vertexIndex+segmentXD+2],vertices[vertexIndex+segmentXD+3],vertices[vertexIndex+2],vertices[vertexIndex+3],Surface._helpTransform,helpMatrix,true);}else {this._getAffineTransform(pX,pY,dX,dY,vertices[vertexIndex],vertices[vertexIndex+1],vertices[vertexIndex+2],vertices[vertexIndex+3],vertices[vertexIndex+segmentXD+2],vertices[vertexIndex+segmentXD+3],Surface._helpTransform,helpMatrix,false);}matrices[matrixIndex]=1.0;matrices[matrixIndex+1]=helpMatrix.a;matrices[matrixIndex+2]=helpMatrix.b;matrices[matrixIndex+3]=helpMatrix.c;matrices[matrixIndex+4]=helpMatrix.d;matrices[matrixIndex+5]=helpMatrix.tx;matrices[matrixIndex+6]=helpMatrix.ty;}}return helpMatrix;};Surface.prototype.init=function(surfaceData,armatureValue){if(this._boneData!==null){return;}_super.prototype.init.call(this,surfaceData,armatureValue);var segmentX=surfaceData.segmentX;var segmentY=surfaceData.segmentY;var vertexCount=surfaceData.vertices.length;var lB=1000.0;var lA=200.0;this._dX=lA*2.0/segmentX;this._dY=lA*2.0/segmentY;this._k=-this._dY/this._dX;this._kX=-this._dY/(lB-lA);this._kY=-(lB-lA)/this._dX;this._vertices.length=vertexCount;this._deformVertices.length=vertexCount;this._matrixCahce.length=(segmentX*segmentY+segmentX*2+segmentY*2)*2*7;this._hullCache.length=10;for(var i=0;i=0&&this._cachedFrameIndices!==null){var cachedFrameIndex=this._cachedFrameIndices[cacheFrameIndex];if(cachedFrameIndex>=0&&this._cachedFrameIndex===cachedFrameIndex){this._transformDirty=false;}else if(cachedFrameIndex>=0){this._transformDirty=true;this._cachedFrameIndex=cachedFrameIndex;}else {if(this._hasConstraint){for(var _i=0,_a=this._armature._constraints;_i<_a.length;_i++){var constraint=_a[_i];if(constraint._root===this){constraint.update();}}}if(this._transformDirty||this._parent!==null&&this._parent._childrenTransformDirty){this._transformDirty=true;this._cachedFrameIndex=-1;}else if(this._cachedFrameIndex>=0){this._transformDirty=false;this._cachedFrameIndices[cacheFrameIndex]=this._cachedFrameIndex;}else {this._transformDirty=true;this._cachedFrameIndex=-1;}}}else {if(this._hasConstraint){for(var _b=0,_c=this._armature._constraints;_b<_c.length;_b++){var constraint=_c[_b];if(constraint._root===this){constraint.update();}}}if(this._transformDirty||this._parent!==null&&this._parent._childrenTransformDirty){cacheFrameIndex=-1;this._transformDirty=true;this._cachedFrameIndex=-1;}}if(this._transformDirty){this._transformDirty=false;this._childrenTransformDirty=true;for(var i=0,l=this._matrixCahce.length;i=0;if(this._localDirty){this._updateGlobalTransformMatrix(isCache);}if(isCache&&this._cachedFrameIndices!==null){this._cachedFrameIndex=this._cachedFrameIndices[cacheFrameIndex]=this._armature._armatureData.setCacheFrame(this.globalTransformMatrix,this.global);}}else {this._armature._armatureData.getCacheFrame(this.globalTransformMatrix,this.global,this._cachedFrameIndex);}var lB=1000.0;var lA=200.0;var ddX=2*this.global.x;var ddY=2*this.global.y;var helpPoint=Surface._helpPoint;this.globalTransformMatrix.transformPoint(lB,-lA,helpPoint);this._hullCache[0]=helpPoint.x;this._hullCache[1]=helpPoint.y;this._hullCache[2]=ddX-helpPoint.x;this._hullCache[3]=ddY-helpPoint.y;this.globalTransformMatrix.transformPoint(0.0,this._dY,helpPoint,true);this._hullCache[4]=helpPoint.x;this._hullCache[5]=helpPoint.y;this.globalTransformMatrix.transformPoint(lA,lB,helpPoint);this._hullCache[6]=helpPoint.x;this._hullCache[7]=helpPoint.y;this._hullCache[8]=ddX-helpPoint.x;this._hullCache[9]=ddY-helpPoint.y;this.globalTransformMatrix.transformPoint(this._dX,0.0,helpPoint,true);this._hullCache[10]=helpPoint.x;this._hullCache[11]=helpPoint.y;}else if(this._childrenTransformDirty){this._childrenTransformDirty=false;}this._localDirty=true;};return Surface;}(dragonBones.Bone);dragonBones.Surface=Surface;})(dragonBones||(dragonBones={}));(function(dragonBones){var Slot=function(_super){__extends(Slot,_super);function Slot(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this._localMatrix=new dragonBones.Matrix();_this._colorTransform=new dragonBones.ColorTransform();_this._displayDatas=[];_this._displayList=[];_this._deformVertices=null;_this._rawDisplay=null;_this._meshDisplay=null;return _this;}Slot.prototype._onClear=function(){_super.prototype._onClear.call(this);var disposeDisplayList=[];for(var _i=0,_a=this._displayList;_i<_a.length;_i++){var eachDisplay=_a[_i];if(eachDisplay!==null&&eachDisplay!==this._rawDisplay&&eachDisplay!==this._meshDisplay&&disposeDisplayList.indexOf(eachDisplay)<0){disposeDisplayList.push(eachDisplay);}}for(var _b=0,disposeDisplayList_1=disposeDisplayList;_b=0){if(this._rawDisplayDatas!==null){rawDisplayData=this._displayIndex=0&&this._displayIndex=0&&this._rawDisplayDatas!==null){var rawDisplayData=this._displayIndex0){for(var _i=0,actions_1=actions;_i0){if(this._displayList.length!==value.length){this._displayList.length=value.length;}for(var i=0,l=value.length;i0){this._displayList.length=0;}if(this._displayIndex>=0&&this._displayIndex=0&&this._cachedFrameIndices!==null){var cachedFrameIndex=this._cachedFrameIndices[cacheFrameIndex];if(cachedFrameIndex>=0&&this._cachedFrameIndex===cachedFrameIndex){this._transformDirty=false;}else if(cachedFrameIndex>=0){this._transformDirty=true;this._cachedFrameIndex=cachedFrameIndex;}else if(this._transformDirty||this._parent._childrenTransformDirty){this._transformDirty=true;this._cachedFrameIndex=-1;}else if(this._cachedFrameIndex>=0){this._transformDirty=false;this._cachedFrameIndices[cacheFrameIndex]=this._cachedFrameIndex;}else {this._transformDirty=true;this._cachedFrameIndex=-1;}}else if(this._transformDirty||this._parent._childrenTransformDirty){cacheFrameIndex=-1;this._transformDirty=true;this._cachedFrameIndex=-1;}if(this._display===null){return;}if(this._visibleDirty){this._visibleDirty=false;this._updateVisible();}if(this._blendModeDirty){this._blendModeDirty=false;this._updateBlendMode();}if(this._colorDirty){this._colorDirty=false;this._updateColor();}if(this._deformVertices!==null&&this._deformVertices.verticesData!==null&&this._display===this._meshDisplay){var isSkinned=this._deformVertices.verticesData.weight!==null;var isSurface=this._parent._boneData.type!==0;if(this._deformVertices.verticesDirty||isSkinned&&this._deformVertices.isBonesUpdate()||isSurface&&this._parent._childrenTransformDirty){this._deformVertices.verticesDirty=false;this._updateMesh();}if(isSkinned||isSurface){return;}}if(this._transformDirty){this._transformDirty=false;if(this._cachedFrameIndex<0){var isCache=cacheFrameIndex>=0;this._updateGlobalTransformMatrix(isCache);if(isCache&&this._cachedFrameIndices!==null){this._cachedFrameIndex=this._cachedFrameIndices[cacheFrameIndex]=this._armature._armatureData.setCacheFrame(this.globalTransformMatrix,this.global);}}else {this._isFromCache=true;this._armature._armatureData.getCacheFrame(this.globalTransformMatrix,this.global,this._cachedFrameIndex);}this._updateTransform();}};Slot.prototype.updateTransformAndMatrix=function(){if(this._transformDirty){this._transformDirty=false;this._updateGlobalTransformMatrix(false);}};Slot.prototype.replaceDisplayData=function(value,displayIndex){if(displayIndex===void 0){displayIndex=-1;}if(displayIndex<0){if(this._displayIndex<0){displayIndex=0;}else {displayIndex=this._displayIndex;}}if(this._displayDatas.length<=displayIndex){this._displayDatas.length=displayIndex+1;for(var i=0,l=this._displayDatas.length;i0){if(intersectionCount===1||intersectionCount===2){if(intersectionPointA!==null){this.globalTransformMatrix.transformPoint(intersectionPointA.x,intersectionPointA.y,intersectionPointA);if(intersectionPointB!==null){intersectionPointB.x=intersectionPointA.x;intersectionPointB.y=intersectionPointA.y;}}else if(intersectionPointB!==null){this.globalTransformMatrix.transformPoint(intersectionPointB.x,intersectionPointB.y,intersectionPointB);}}else {if(intersectionPointA!==null){this.globalTransformMatrix.transformPoint(intersectionPointA.x,intersectionPointA.y,intersectionPointA);}if(intersectionPointB!==null){this.globalTransformMatrix.transformPoint(intersectionPointB.x,intersectionPointB.y,intersectionPointB);}}if(normalRadians!==null){this.globalTransformMatrix.transformPoint(Math.cos(normalRadians.x),Math.sin(normalRadians.x),Slot._helpPoint,true);normalRadians.x=Math.atan2(Slot._helpPoint.y,Slot._helpPoint.x);this.globalTransformMatrix.transformPoint(Math.cos(normalRadians.y),Math.sin(normalRadians.y),Slot._helpPoint,true);normalRadians.y=Math.atan2(Slot._helpPoint.y,Slot._helpPoint.x);}}return intersectionCount;};Slot.prototype.invalidUpdate=function(){this._displayDirty=true;this._transformDirty=true;};Object.defineProperty(Slot.prototype,"visible",{get:function get(){return this._visible;},set:function set(value){if(this._visible===value){return;}this._visible=value;this._updateVisible();},enumerable:true,configurable:true});Object.defineProperty(Slot.prototype,"displayIndex",{get:function get(){return this._displayIndex;},set:function set(value){if(this._setDisplayIndex(value)){this.update(-1);}},enumerable:true,configurable:true});Object.defineProperty(Slot.prototype,"name",{get:function get(){return this._slotData.name;},enumerable:true,configurable:true});Object.defineProperty(Slot.prototype,"displayList",{get:function get(){return this._displayList.concat();},set:function set(value){var backupDisplayList=this._displayList.concat();var disposeDisplayList=new Array();if(this._setDisplayList(value)){this.update(-1);}for(var _i=0,backupDisplayList_1=backupDisplayList;_ipathLength){continue;}var percent=0.0;for(;;curve++){var len=lenghts[curve];if(position>len){continue;}if(curve===0){percent=position/len;}else {var preLen=lenghts[curve-1];percent=(position-preLen)/(len-preLen);}break;}if(curve!==preCurve){preCurve=curve;if(isClosed&&curve===curveCount){this._computeVertices(verticesLength-4,4,0,curveVertices);this._computeVertices(0,4,4,curveVertices);}else {this._computeVertices(curve*6+2,8,0,curveVertices);}}this.addCurvePosition(percent,curveVertices[0],curveVertices[1],curveVertices[2],curveVertices[3],curveVertices[4],curveVertices[5],curveVertices[6],curveVertices[7],positions,o,tangents);}return;}if(isClosed){verticesLength+=2;curveVertices.length=vertexCount;this._computeVertices(2,verticesLength-4,0,curveVertices);this._computeVertices(0,2,verticesLength-4,curveVertices);curveVertices[verticesLength-2]=curveVertices[0];curveVertices[verticesLength-1]=curveVertices[1];}else {curveCount--;verticesLength-=4;curveVertices.length=verticesLength;this._computeVertices(2,verticesLength,0,curveVertices);}var curves=new Array(curveCount);pathLength=0;var x1=curveVertices[0],y1=curveVertices[1],cx1=0,cy1=0,cx2=0,cy2=0,x2=0,y2=0;var tmpx,tmpy,dddfx,dddfy,ddfx,ddfy,dfx,dfy;for(var i=0,w=2;ipathLength){continue;}for(;;curve++){var length_1=curves[curve];if(p>length_1)continue;if(curve===0)p/=length_1;else {var prev=curves[curve-1];p=(p-prev)/(length_1-prev);}break;}if(curve!==preCurve){preCurve=curve;var ii=curve*6;x1=curveVertices[ii];y1=curveVertices[ii+1];cx1=curveVertices[ii+2];cy1=curveVertices[ii+3];cx2=curveVertices[ii+4];cy2=curveVertices[ii+5];x2=curveVertices[ii+6];y2=curveVertices[ii+7];tmpx=(x1-cx1*2+cx2)*0.03;tmpy=(y1-cy1*2+cy2)*0.03;dddfx=((cx1-cx2)*3-x1+x2)*0.006;dddfy=((cy1-cy2)*3-y1+y2)*0.006;ddfx=tmpx*2+dddfx;ddfy=tmpy*2+dddfy;dfx=(cx1-x1)*0.3+tmpx+dddfx*0.16666667;dfy=(cy1-y1)*0.3+tmpy+dddfy*0.16666667;curveLength=Math.sqrt(dfx*dfx+dfy*dfy);segments[0]=curveLength;for(ii=1;ii<8;ii++){dfx+=ddfx;dfy+=ddfy;ddfx+=dddfx;ddfy+=dddfy;curveLength+=Math.sqrt(dfx*dfx+dfy*dfy);segments[ii]=curveLength;}dfx+=ddfx;dfy+=ddfy;curveLength+=Math.sqrt(dfx*dfx+dfy*dfy);segments[8]=curveLength;dfx+=ddfx+dddfx;dfy+=ddfy+dddfy;curveLength+=Math.sqrt(dfx*dfx+dfy*dfy);segments[9]=curveLength;segment=0;}p*=curveLength;for(;;segment++){var length_2=segments[segment];if(p>length_2)continue;if(segment===0)p/=length_2;else {var prev=segments[segment-1];p=segment+(p-prev)/(length_2-prev);}break;}this.addCurvePosition(p*0.1,x1,y1,cx1,cy1,cx2,cy2,x2,y2,positions,o,tangents);}};PathConstraint.prototype.addCurvePosition=function(t,x1,y1,cx1,cy1,cx2,cy2,x2,y2,out,offset,tangents){if(t===0){out[offset]=x1;out[offset+1]=y1;out[offset+2]=0;return;}if(t===1){out[offset]=x2;out[offset+1]=y2;out[offset+2]=0;return;}var mt=1-t;var mt2=mt*mt;var t2=t*t;var a=mt2*mt;var b=mt2*t*3;var c=mt*t2*3;var d=t*t2;var x=a*x1+b*cx1+c*cx2+d*x2;var y=a*y1+b*cy1+c*cy2+d*y2;out[offset]=x;out[offset+1]=y;if(tangents){out[offset+2]=Math.atan2(y-(a*y1+b*cy1+c*cy2),x-(a*x1+b*cx1+c*cx2));}else {out[offset+2]=0;}};PathConstraint.prototype.init=function(constraintData,armature){this._constraintData=constraintData;this._armature=armature;var data=constraintData;this.pathOffset=data.pathDisplayData.vertices.offset;this.position=data.position;this.spacing=data.spacing;this.rotateOffset=data.rotateOffset;this.rotateMix=data.rotateMix;this.translateMix=data.translateMix;this._root=this._armature.getBone(data.root.name);this._target=this._armature.getBone(data.target.name);this._pathSlot=this._armature.getSlot(data.pathSlot.name);for(var i=0,l=data.bones.length;i0?dragonBones.Transform.DEG_RAD:-dragonBones.Transform.DEG_RAD;}}var rotateMix=this.rotateMix;var translateMix=this.translateMix;for(var i=0,p=3;i0){var a=matrix.a,b=matrix.b,c=matrix.c,d=matrix.d,r=void 0,cos=void 0,sin=void 0;if(isTangentMode){r=positions[p-1];}else {r=Math.atan2(dy,dx);}r-=Math.atan2(b,a);if(tip){cos=Math.cos(r);sin=Math.sin(r);var length_3=bone._boneData.length;boneX+=(length_3*(cos*a-sin*b)-dx)*rotateMix;boneY+=(length_3*(sin*a+cos*b)-dy)*rotateMix;}else {r+=rotateOffset;}if(r>dragonBones.Transform.PI){r-=dragonBones.Transform.PI_D;}else if(r<-dragonBones.Transform.PI){r+=dragonBones.Transform.PI_D;}r*=rotateMix;cos=Math.cos(r);sin=Math.sin(r);matrix.a=cos*a-sin*b;matrix.b=sin*a+cos*b;matrix.c=cos*c-sin*d;matrix.d=sin*c+cos*d;}bone.global.fromMatrix(matrix);}this.dirty=false;};PathConstraint.prototype.invalidUpdate=function(){};return PathConstraint;}(Constraint);dragonBones.PathConstraint=PathConstraint;})(dragonBones||(dragonBones={}));(function(dragonBones){var WorldClock=function(){function WorldClock(time){if(time===void 0){time=0.0;}this.time=0.0;this.timeScale=1.0;this._systemTime=0.0;this._animatebles=[];this._clock=null;this.time=time;this._systemTime=new Date().getTime()*0.001;}WorldClock.prototype.advanceTime=function(passedTime){if(passedTime!==passedTime){passedTime=0.0;}var currentTime=Date.now()*0.001;if(passedTime<0.0){passedTime=currentTime-this._systemTime;}this._systemTime=currentTime;if(this.timeScale!==1.0){passedTime*=this.timeScale;}if(passedTime===0.0){return;}if(passedTime<0.0){this.time-=passedTime;}else {this.time+=passedTime;}var i=0,r=0,l=this._animatebles.length;for(;i0){this._animatebles[i-r]=animatable;this._animatebles[i]=null;}animatable.advanceTime(passedTime);}else {r++;}}if(r>0){l=this._animatebles.length;for(;i=0){this._animatebles[index]=null;value.clock=null;}};WorldClock.prototype.clear=function(){for(var _i=0,_a=this._animatebles;_i<_a.length;_i++){var animatable=_a[_i];if(animatable!==null){animatable.clock=null;}}};Object.defineProperty(WorldClock.prototype,"clock",{get:function get(){return this._clock;},set:function set(value){if(this._clock===value){return;}if(this._clock!==null){this._clock.remove(this);}this._clock=value;if(this._clock!==null){this._clock.add(this);}},enumerable:true,configurable:true});WorldClock.clock=new WorldClock();return WorldClock;}();dragonBones.WorldClock=WorldClock;})(dragonBones||(dragonBones={}));(function(dragonBones){var Animation=function(_super){__extends(Animation,_super);function Animation(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this._animationNames=[];_this._animationStates=[];_this._animations={};_this._animationConfig=null;return _this;}Animation.toString=function(){return "[class dragonBones.Animation]";};Animation.prototype._onClear=function(){for(var _i=0,_a=this._animationStates;_i<_a.length;_i++){var animationState=_a[_i];animationState.returnToPool();}for(var k in this._animations){delete this._animations[k];}if(this._animationConfig!==null){this._animationConfig.returnToPool();}this.timeScale=1.0;this._lockUpdate=false;this._animationDirty=false;this._inheritTimeScale=1.0;this._animationNames.length=0;this._animationStates.length=0;this._armature=null;this._animationConfig=null;this._lastAnimationState=null;};Animation.prototype._fadeOut=function(animationConfig){switch(animationConfig.fadeOutMode){case 1:for(var _i=0,_a=this._animationStates;_i<_a.length;_i++){var animationState=_a[_i];if(animationState._parent!==null){continue;}if(animationState.layer===animationConfig.layer){animationState.fadeOut(animationConfig.fadeOutTime,animationConfig.pauseFadeOut);}}break;case 2:for(var _b=0,_c=this._animationStates;_b<_c.length;_b++){var animationState=_c[_b];if(animationState._parent!==null){continue;}if(animationState.group===animationConfig.group){animationState.fadeOut(animationConfig.fadeOutTime,animationConfig.pauseFadeOut);}}break;case 3:for(var _d=0,_e=this._animationStates;_d<_e.length;_d++){var animationState=_e[_d];if(animationState._parent!==null){continue;}if(animationState.layer===animationConfig.layer&&animationState.group===animationConfig.group){animationState.fadeOut(animationConfig.fadeOutTime,animationConfig.pauseFadeOut);}}break;case 4:for(var _f=0,_g=this._animationStates;_f<_g.length;_f++){var animationState=_g[_f];if(animationState._parent!==null){continue;}animationState.fadeOut(animationConfig.fadeOutTime,animationConfig.pauseFadeOut);}break;}};Animation.prototype.init=function(armature){if(this._armature!==null){return;}this._armature=armature;this._animationConfig=dragonBones.BaseObject.borrowObject(dragonBones.AnimationConfig);};Animation.prototype.advanceTime=function(passedTime){if(passedTime<0.0){passedTime=-passedTime;}if(this._armature.inheritAnimation&&this._armature._parent!==null){this._inheritTimeScale=this._armature._parent._armature.animation._inheritTimeScale*this.timeScale;}else {this._inheritTimeScale=this.timeScale;}if(this._inheritTimeScale!==1.0){passedTime*=this._inheritTimeScale;}var animationStateCount=this._animationStates.length;if(animationStateCount===1){var animationState=this._animationStates[0];if(animationState._fadeState>0&&animationState._subFadeState>0){this._armature._dragonBones.bufferObject(animationState);this._animationStates.length=0;this._lastAnimationState=null;}else {var animationData=animationState._animationData;var cacheFrameRate=animationData.cacheFrameRate;if(this._animationDirty&&cacheFrameRate>0.0){this._animationDirty=false;for(var _i=0,_a=this._armature.getBones();_i<_a.length;_i++){var bone=_a[_i];bone._cachedFrameIndices=animationData.getBoneCachedFrameIndices(bone.name);}for(var _b=0,_c=this._armature.getSlots();_b<_c.length;_b++){var slot=_c[_b];var rawDisplayDatas=slot.rawDisplayDatas;if(rawDisplayDatas!==null&&rawDisplayDatas.length>0){var rawDsplayData=rawDisplayDatas[0];if(rawDsplayData!==null){if(rawDsplayData.parent===this._armature.armatureData.defaultSkin){slot._cachedFrameIndices=animationData.getSlotCachedFrameIndices(slot.name);continue;}}}slot._cachedFrameIndices=null;}}animationState.advanceTime(passedTime,cacheFrameRate);}}else if(animationStateCount>1){for(var i=0,r=0;i0&&animationState._subFadeState>0){r++;this._armature._dragonBones.bufferObject(animationState);this._animationDirty=true;if(this._lastAnimationState===animationState){this._lastAnimationState=null;}}else {if(r>0){this._animationStates[i-r]=animationState;}animationState.advanceTime(passedTime,0.0);}if(i===animationStateCount-1&&r>0){this._animationStates.length-=r;if(this._lastAnimationState===null&&this._animationStates.length>0){this._lastAnimationState=this._animationStates[this._animationStates.length-1];}}}this._armature._cacheFrameIndex=-1;}else {this._armature._cacheFrameIndex=-1;}};Animation.prototype.reset=function(){for(var _i=0,_a=this._animationStates;_i<_a.length;_i++){var animationState=_a[_i];animationState.returnToPool();}this._animationDirty=false;this._animationConfig.clear();this._animationStates.length=0;this._lastAnimationState=null;};Animation.prototype.stop=function(animationName){if(animationName===void 0){animationName=null;}if(animationName!==null){var animationState=this.getState(animationName);if(animationState!==null){animationState.stop();}}else {for(var _i=0,_a=this._animationStates;_i<_a.length;_i++){var animationState=_a[_i];animationState.stop();}}};Animation.prototype.playConfig=function(animationConfig){var animationName=animationConfig.animation;if(!(animationName in this._animations)){console.warn("Non-existent animation.\n","DragonBones name: "+this._armature.armatureData.parent.name,"Armature name: "+this._armature.name,"Animation name: "+animationName);return null;}var animationData=this._animations[animationName];if(animationConfig.fadeOutMode===5){for(var _i=0,_a=this._animationStates;_i<_a.length;_i++){var animationState_1=_a[_i];if(animationState_1._animationData===animationData){return animationState_1;}}}if(this._animationStates.length===0){animationConfig.fadeInTime=0.0;}else if(animationConfig.fadeInTime<0.0){animationConfig.fadeInTime=animationData.fadeInTime;}if(animationConfig.fadeOutTime<0.0){animationConfig.fadeOutTime=animationConfig.fadeInTime;}if(animationConfig.timeScale<=-100.0){animationConfig.timeScale=1.0/animationData.scale;}if(animationData.frameCount>1){if(animationConfig.position<0.0){animationConfig.position%=animationData.duration;animationConfig.position=animationData.duration-animationConfig.position;}else if(animationConfig.position===animationData.duration){animationConfig.position-=0.000001;}else if(animationConfig.position>animationData.duration){animationConfig.position%=animationData.duration;}if(animationConfig.duration>0.0&&animationConfig.position+animationConfig.duration>animationData.duration){animationConfig.duration=animationData.duration-animationConfig.position;}if(animationConfig.playTimes<0){animationConfig.playTimes=animationData.playTimes;}}else {animationConfig.playTimes=1;animationConfig.position=0.0;if(animationConfig.duration>0.0){animationConfig.duration=0.0;}}if(animationConfig.duration===0.0){animationConfig.duration=-1.0;}this._fadeOut(animationConfig);var animationState=dragonBones.BaseObject.borrowObject(dragonBones.AnimationState);animationState.init(this._armature,animationData,animationConfig);this._animationDirty=true;this._armature._cacheFrameIndex=-1;if(this._animationStates.length>0){var added=false;for(var i=0,l=this._animationStates.length;ithis._animationStates[i].layer){added=true;this._animationStates.splice(i,0,animationState);break;}else if(i!==l-1&&animationState.layer>this._animationStates[i+1].layer){added=true;this._animationStates.splice(i+1,0,animationState);break;}}if(!added){this._animationStates.push(animationState);}}else {this._animationStates.push(animationState);}for(var _b=0,_c=this._armature.getSlots();_b<_c.length;_b++){var slot=_c[_b];var childArmature=slot.childArmature;if(childArmature!==null&&childArmature.inheritAnimation&&childArmature.animation.hasAnimation(animationName)&&childArmature.animation.getState(animationName)===null){childArmature.animation.fadeIn(animationName);}}var isLocked=false;for(var k in animationData.animationTimelines){if(!this._lockUpdate){isLocked=true;this._lockUpdate=true;}var childAnimatiionState=this.fadeIn(k,animationConfig.fadeInTime,1,animationState.layer,null,0);if(childAnimatiionState!==null){childAnimatiionState.resetToPose=false;childAnimatiionState._parent=animationState;childAnimatiionState.stop();}}if(isLocked){this._lockUpdate=false;}if(!this._lockUpdate){if(animationConfig.fadeInTime<=0.0){this._armature.advanceTime(0.0);}this._lastAnimationState=animationState;}return animationState;};Animation.prototype.play=function(animationName,playTimes){if(animationName===void 0){animationName=null;}if(playTimes===void 0){playTimes=-1;}this._animationConfig.clear();this._animationConfig.resetToPose=true;this._animationConfig.playTimes=playTimes;this._animationConfig.fadeInTime=0.0;this._animationConfig.animation=animationName!==null?animationName:"";if(animationName!==null&&animationName.length>0){this.playConfig(this._animationConfig);}else if(this._lastAnimationState===null){var defaultAnimation=this._armature.armatureData.defaultAnimation;if(defaultAnimation!==null){this._animationConfig.animation=defaultAnimation.name;this.playConfig(this._animationConfig);}}else if(!this._lastAnimationState.isPlaying&&!this._lastAnimationState.isCompleted){this._lastAnimationState.play();}else {this._animationConfig.animation=this._lastAnimationState.name;this.playConfig(this._animationConfig);}return this._lastAnimationState;};Animation.prototype.fadeIn=function(animationName,fadeInTime,playTimes,layer,group,fadeOutMode){if(fadeInTime===void 0){fadeInTime=-1.0;}if(playTimes===void 0){playTimes=-1;}if(layer===void 0){layer=0;}if(group===void 0){group=null;}if(fadeOutMode===void 0){fadeOutMode=3;}this._animationConfig.clear();this._animationConfig.fadeOutMode=fadeOutMode;this._animationConfig.playTimes=playTimes;this._animationConfig.layer=layer;this._animationConfig.fadeInTime=fadeInTime;this._animationConfig.animation=animationName;this._animationConfig.group=group!==null?group:"";return this.playConfig(this._animationConfig);};Animation.prototype.gotoAndPlayByTime=function(animationName,time,playTimes){if(time===void 0){time=0.0;}if(playTimes===void 0){playTimes=-1;}this._animationConfig.clear();this._animationConfig.resetToPose=true;this._animationConfig.playTimes=playTimes;this._animationConfig.position=time;this._animationConfig.fadeInTime=0.0;this._animationConfig.animation=animationName;return this.playConfig(this._animationConfig);};Animation.prototype.gotoAndPlayByFrame=function(animationName,frame,playTimes){if(frame===void 0){frame=0;}if(playTimes===void 0){playTimes=-1;}this._animationConfig.clear();this._animationConfig.resetToPose=true;this._animationConfig.playTimes=playTimes;this._animationConfig.fadeInTime=0.0;this._animationConfig.animation=animationName;var animationData=animationName in this._animations?this._animations[animationName]:null;if(animationData!==null){this._animationConfig.position=animationData.duration*frame/animationData.frameCount;}return this.playConfig(this._animationConfig);};Animation.prototype.gotoAndPlayByProgress=function(animationName,progress,playTimes){if(progress===void 0){progress=0.0;}if(playTimes===void 0){playTimes=-1;}this._animationConfig.clear();this._animationConfig.resetToPose=true;this._animationConfig.playTimes=playTimes;this._animationConfig.fadeInTime=0.0;this._animationConfig.animation=animationName;var animationData=animationName in this._animations?this._animations[animationName]:null;if(animationData!==null){this._animationConfig.position=animationData.duration*(progress>0.0?progress:0.0);}return this.playConfig(this._animationConfig);};Animation.prototype.gotoAndStopByTime=function(animationName,time){if(time===void 0){time=0.0;}var animationState=this.gotoAndPlayByTime(animationName,time,1);if(animationState!==null){animationState.stop();}return animationState;};Animation.prototype.gotoAndStopByFrame=function(animationName,frame){if(frame===void 0){frame=0;}var animationState=this.gotoAndPlayByFrame(animationName,frame,1);if(animationState!==null){animationState.stop();}return animationState;};Animation.prototype.gotoAndStopByProgress=function(animationName,progress){if(progress===void 0){progress=0.0;}var animationState=this.gotoAndPlayByProgress(animationName,progress,1);if(animationState!==null){animationState.stop();}return animationState;};Animation.prototype.getState=function(animationName){var i=this._animationStates.length;while(i--){var animationState=this._animationStates[i];if(animationState.name===animationName){return animationState;}}return null;};Animation.prototype.hasAnimation=function(animationName){return animationName in this._animations;};Animation.prototype.getStates=function(){return this._animationStates;};Object.defineProperty(Animation.prototype,"isPlaying",{get:function get(){for(var _i=0,_a=this._animationStates;_i<_a.length;_i++){var animationState=_a[_i];if(animationState.isPlaying){return true;}}return false;},enumerable:true,configurable:true});Object.defineProperty(Animation.prototype,"isCompleted",{get:function get(){for(var _i=0,_a=this._animationStates;_i<_a.length;_i++){var animationState=_a[_i];if(!animationState.isCompleted){return false;}}return this._animationStates.length>0;},enumerable:true,configurable:true});Object.defineProperty(Animation.prototype,"lastAnimationName",{get:function get(){return this._lastAnimationState!==null?this._lastAnimationState.name:"";},enumerable:true,configurable:true});Object.defineProperty(Animation.prototype,"animationNames",{get:function get(){return this._animationNames;},enumerable:true,configurable:true});Object.defineProperty(Animation.prototype,"animations",{get:function get(){return this._animations;},set:function set(value){if(this._animations===value){return;}this._animationNames.length=0;for(var k in this._animations){delete this._animations[k];}for(var k in value){this._animationNames.push(k);this._animations[k]=value[k];}},enumerable:true,configurable:true});Object.defineProperty(Animation.prototype,"animationConfig",{get:function get(){this._animationConfig.clear();return this._animationConfig;},enumerable:true,configurable:true});Object.defineProperty(Animation.prototype,"lastAnimationState",{get:function get(){return this._lastAnimationState;},enumerable:true,configurable:true});Animation.prototype.gotoAndPlay=function(animationName,fadeInTime,duration,playTimes,layer,group,fadeOutMode,pauseFadeOut,pauseFadeIn){if(fadeInTime===void 0){fadeInTime=-1;}if(duration===void 0){duration=-1;}if(playTimes===void 0){playTimes=-1;}if(layer===void 0){layer=0;}if(group===void 0){group=null;}if(fadeOutMode===void 0){fadeOutMode=3;}console.warn("Deprecated.");this._animationConfig.clear();this._animationConfig.resetToPose=true;this._animationConfig.fadeOutMode=fadeOutMode;this._animationConfig.playTimes=playTimes;this._animationConfig.layer=layer;this._animationConfig.fadeInTime=fadeInTime;this._animationConfig.animation=animationName;this._animationConfig.group=group!==null?group:"";var animationData=this._animations[animationName];if(animationData&&duration>0.0){this._animationConfig.timeScale=animationData.duration/duration;}return this.playConfig(this._animationConfig);};Animation.prototype.gotoAndStop=function(animationName,time){if(time===void 0){time=0;}console.warn("Deprecated.");return this.gotoAndStopByTime(animationName,time);};Object.defineProperty(Animation.prototype,"animationList",{get:function get(){console.warn("Deprecated.");return this._animationNames;},enumerable:true,configurable:true});Object.defineProperty(Animation.prototype,"animationDataList",{get:function get(){console.warn("Deprecated.");var list=[];for(var i=0,l=this._animationNames.length;i0;if(this._subFadeState<0){this._subFadeState=0;var eventType=isFadeOut?dragonBones.EventObject.FADE_OUT:dragonBones.EventObject.FADE_IN;if(this._armature.eventDispatcher.hasDBEventListener(eventType)){var eventObject=dragonBones.BaseObject.borrowObject(dragonBones.EventObject);eventObject.type=eventType;eventObject.armature=this._armature;eventObject.animationState=this;this._armature._dragonBones.bufferEvent(eventObject);}}if(passedTime<0.0){passedTime=-passedTime;}this._fadeTime+=passedTime;if(this._fadeTime>=this.fadeTotalTime){this._subFadeState=1;this._fadeProgress=isFadeOut?0.0:1.0;}else if(this._fadeTime>0.0){this._fadeProgress=isFadeOut?1.0-this._fadeTime/this.fadeTotalTime:this._fadeTime/this.fadeTotalTime;}else {this._fadeProgress=isFadeOut?1.0:0.0;}if(this._subFadeState>0){if(!isFadeOut){this._playheadState|=1;this._fadeState=0;}var eventType=isFadeOut?dragonBones.EventObject.FADE_OUT_COMPLETE:dragonBones.EventObject.FADE_IN_COMPLETE;if(this._armature.eventDispatcher.hasDBEventListener(eventType)){var eventObject=dragonBones.BaseObject.borrowObject(dragonBones.EventObject);eventObject.type=eventType;eventObject.armature=this._armature;eventObject.animationState=this;this._armature._dragonBones.bufferEvent(eventObject);}}};AnimationState.prototype.init=function(armature,animationData,animationConfig){if(this._armature!==null){return;}this._armature=armature;this._animationData=animationData;this.resetToPose=animationConfig.resetToPose;this.additiveBlending=animationConfig.additiveBlending;this.displayControl=animationConfig.displayControl;this.actionEnabled=animationConfig.actionEnabled;this.layer=animationConfig.layer;this.playTimes=animationConfig.playTimes;this.timeScale=animationConfig.timeScale;this.fadeTotalTime=animationConfig.fadeInTime;this.autoFadeOutTime=animationConfig.autoFadeOutTime;this.weight=animationConfig.weight;this.name=animationConfig.name.length>0?animationConfig.name:animationConfig.animation;this.group=animationConfig.group;if(animationConfig.pauseFadeIn){this._playheadState=2;}else {this._playheadState=3;}if(animationConfig.duration<0.0){this._position=0.0;this._duration=this._animationData.duration;if(animationConfig.position!==0.0){if(this.timeScale>=0.0){this._time=animationConfig.position;}else {this._time=animationConfig.position-this._duration;}}else {this._time=0.0;}}else {this._position=animationConfig.position;this._duration=animationConfig.duration;this._time=0.0;}if(this.timeScale<0.0&&this._time===0.0){this._time=-0.000001;}if(this.fadeTotalTime<=0.0){this._fadeProgress=0.999999;}if(animationConfig.boneMask.length>0){this._boneMask.length=animationConfig.boneMask.length;for(var i=0,l=this._boneMask.length;i0.0;var isUpdateTimeline=true;var isUpdateBoneTimeline=true;var time=this._time;this._weightResult=this.weight*this._fadeProgress;if(this._parent!==null){this._weightResult*=this._parent._weightResult/this._parent._fadeProgress;}if(this._actionTimeline.playState<=0){this._actionTimeline.update(time);}if(isCacheEnabled){var internval=cacheFrameRate*2.0;this._actionTimeline.currentTime=Math.floor(this._actionTimeline.currentTime*internval)/internval;}if(this._zOrderTimeline!==null&&this._zOrderTimeline.playState<=0){this._zOrderTimeline.update(time);}if(isCacheEnabled){var cacheFrameIndex=Math.floor(this._actionTimeline.currentTime*cacheFrameRate);if(this._armature._cacheFrameIndex===cacheFrameIndex){isUpdateTimeline=false;isUpdateBoneTimeline=false;}else {this._armature._cacheFrameIndex=cacheFrameIndex;if(this._animationData.cachedFrames[cacheFrameIndex]){isUpdateBoneTimeline=false;}else {this._animationData.cachedFrames[cacheFrameIndex]=true;}}}if(isUpdateTimeline){if(isUpdateBoneTimeline){for(var i=0,l=this._boneTimelines.length;i0){this._subFadeState=0;if(this._poseTimelines.length>0){for(var _i=0,_a=this._poseTimelines;_i<_a.length;_i++){var timeline=_a[_i];if(timeline instanceof dragonBones.BoneTimelineState){this._boneTimelines.splice(this._boneTimelines.indexOf(timeline),1);}else if(timeline instanceof dragonBones.SurfaceTimelineState){this._surfaceTimelines.splice(this._surfaceTimelines.indexOf(timeline),1);}else if(timeline instanceof dragonBones.SlotTimelineState){this._slotTimelines.splice(this._slotTimelines.indexOf(timeline),1);}else if(timeline instanceof dragonBones.ConstraintTimelineState){this._constraintTimelines.splice(this._constraintTimelines.indexOf(timeline),1);}timeline.returnToPool();}this._poseTimelines.length=0;}}if(this._actionTimeline.playState>0){if(this.autoFadeOutTime>=0.0){this.fadeOut(this.autoFadeOutTime);}}}};AnimationState.prototype.play=function(){this._playheadState=3;};AnimationState.prototype.stop=function(){this._playheadState&=1;};AnimationState.prototype.fadeOut=function(fadeOutTime,pausePlayhead){if(pausePlayhead===void 0){pausePlayhead=true;}if(fadeOutTime<0.0){fadeOutTime=0.0;}if(pausePlayhead){this._playheadState&=2;}if(this._fadeState>0){if(fadeOutTime>this.fadeTotalTime-this._fadeTime){return;}}else {this._fadeState=1;this._subFadeState=-1;if(fadeOutTime<=0.0||this._fadeProgress<=0.0){this._fadeProgress=0.000001;}for(var _i=0,_a=this._boneTimelines;_i<_a.length;_i++){var timeline=_a[_i];timeline.fadeOut();}for(var _b=0,_c=this._surfaceTimelines;_b<_c.length;_b++){var timeline=_c[_b];timeline.fadeOut();}for(var _d=0,_e=this._slotTimelines;_d<_e.length;_d++){var timeline=_e[_d];timeline.fadeOut();}for(var _f=0,_g=this._constraintTimelines;_f<_g.length;_f++){var timeline=_g[_f];timeline.fadeOut();}for(var _h=0,_j=this._animationTimelines;_h<_j.length;_h++){var timeline=_j[_h];timeline.animationState.fadeOut(fadeOutTime,pausePlayhead);timeline.fadeOut();}}this.displayControl=false;this.fadeTotalTime=this._fadeProgress>0.000001?fadeOutTime/this._fadeProgress:0.0;this._fadeTime=this.fadeTotalTime*(1.0-this._fadeProgress);};AnimationState.prototype.containsBoneMask=function(boneName){return this._boneMask.length===0||this._boneMask.indexOf(boneName)>=0;};AnimationState.prototype.addBoneMask=function(boneName,recursive){if(recursive===void 0){recursive=true;}var currentBone=this._armature.getBone(boneName);if(currentBone===null){return;}if(this._boneMask.indexOf(boneName)<0){this._boneMask.push(boneName);}if(recursive){for(var _i=0,_a=this._armature.getBones();_i<_a.length;_i++){var bone=_a[_i];if(this._boneMask.indexOf(bone.name)<0&¤tBone.contains(bone)){this._boneMask.push(bone.name);}}}this._timelineDirty=1;};AnimationState.prototype.removeBoneMask=function(boneName,recursive){if(recursive===void 0){recursive=true;}var index=this._boneMask.indexOf(boneName);if(index>=0){this._boneMask.splice(index,1);}if(recursive){var currentBone=this._armature.getBone(boneName);if(currentBone!==null){var bones=this._armature.getBones();if(this._boneMask.length>0){for(var _i=0,bones_1=bones;_i=0&¤tBone.contains(bone)){this._boneMask.splice(index_2,1);}}}else {for(var _a=0,bones_2=bones;_a0;},enumerable:true,configurable:true});Object.defineProperty(AnimationState.prototype,"isFadeComplete",{get:function get(){return this._fadeState===0;},enumerable:true,configurable:true});Object.defineProperty(AnimationState.prototype,"isPlaying",{get:function get(){return (this._playheadState&2)!==0&&this._actionTimeline.playState<=0;},enumerable:true,configurable:true});Object.defineProperty(AnimationState.prototype,"isCompleted",{get:function get(){return this._actionTimeline.playState>0;},enumerable:true,configurable:true});Object.defineProperty(AnimationState.prototype,"currentPlayTimes",{get:function get(){return this._actionTimeline.currentPlayTimes;},enumerable:true,configurable:true});Object.defineProperty(AnimationState.prototype,"totalTime",{get:function get(){return this._duration;},enumerable:true,configurable:true});Object.defineProperty(AnimationState.prototype,"currentTime",{get:function get(){return this._actionTimeline.currentTime;},set:function set(value){var currentPlayTimes=this._actionTimeline.currentPlayTimes-(this._actionTimeline.playState>0?1:0);if(value<0||this._duration0&¤tPlayTimes===this.playTimes-1&&value===this._duration){value=this._duration-0.000001;}if(this._time===value){return;}this._time=value;this._actionTimeline.setCurrentTime(this._time);if(this._zOrderTimeline!==null){this._zOrderTimeline.playState=-1;}for(var _i=0,_a=this._boneTimelines;_i<_a.length;_i++){var timeline=_a[_i];timeline.playState=-1;}for(var _b=0,_c=this._slotTimelines;_b<_c.length;_b++){var timeline=_c[_b];timeline.playState=-1;}},enumerable:true,configurable:true});Object.defineProperty(AnimationState.prototype,"animationData",{get:function get(){return this._animationData;},enumerable:true,configurable:true});return AnimationState;}(dragonBones.BaseObject);dragonBones.AnimationState=AnimationState;var BonePose=function(_super){__extends(BonePose,_super);function BonePose(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.current=new dragonBones.Transform();_this.delta=new dragonBones.Transform();_this.result=new dragonBones.Transform();return _this;}BonePose.toString=function(){return "[class dragonBones.BonePose]";};BonePose.prototype._onClear=function(){this.current.identity();this.delta.identity();this.result.identity();};return BonePose;}(dragonBones.BaseObject);dragonBones.BonePose=BonePose;var BlendState=function(){function BlendState(){}BlendState.prototype.update=function(weight,p_layer){if(this.dirty){if(this.leftWeight>0.0){if(this.layer!==p_layer){if(this.layerWeight>=this.leftWeight){this.leftWeight=0.0;return 0;}else {this.layer=p_layer;this.leftWeight-=this.layerWeight;this.layerWeight=0.0;}}}else {return 0;}weight*=this.leftWeight;this.layerWeight+=weight;this.blendWeight=weight;return 2;}this.dirty=true;this.layer=p_layer;this.layerWeight=weight;this.leftWeight=1.0;this.blendWeight=weight;return 1;};BlendState.prototype.clear=function(){this.dirty=false;this.layer=0;this.leftWeight=0.0;this.layerWeight=0.0;this.blendWeight=0.0;};return BlendState;}();dragonBones.BlendState=BlendState;})(dragonBones||(dragonBones={}));(function(dragonBones){var TimelineState=function(_super){__extends(TimelineState,_super);function TimelineState(){return _super!==null&&_super.apply(this,arguments)||this;}TimelineState.prototype._onClear=function(){this.playState=-1;this.currentPlayTimes=-1;this.currentTime=-1.0;this._tweenState=0;this._frameRate=0;this._frameValueOffset=0;this._frameCount=0;this._frameOffset=0;this._frameIndex=-1;this._frameRateR=0.0;this._position=0.0;this._duration=0.0;this._timeScale=1.0;this._timeOffset=0.0;this._dragonBonesData=null;this._animationData=null;this._timelineData=null;this._armature=null;this._animationState=null;this._actionTimeline=null;this._frameArray=null;this._frameIntArray=null;this._frameFloatArray=null;this._timelineArray=null;this._frameIndices=null;};TimelineState.prototype._setCurrentTime=function(passedTime){var prevState=this.playState;var prevPlayTimes=this.currentPlayTimes;var prevTime=this.currentTime;if(this._actionTimeline!==null&&this._frameCount<=1){this.playState=this._actionTimeline.playState>=0?1:-1;this.currentPlayTimes=1;this.currentTime=this._actionTimeline.currentTime;}else if(this._actionTimeline===null||this._timeScale!==1.0||this._timeOffset!==0.0){var playTimes=this._animationState.playTimes;var totalTime=playTimes*this._duration;passedTime*=this._timeScale;if(this._timeOffset!==0.0){passedTime+=this._timeOffset*this._animationData.duration;}if(playTimes>0&&(passedTime>=totalTime||passedTime<=-totalTime)){if(this.playState<=0&&this._animationState._playheadState===3){this.playState=1;}this.currentPlayTimes=playTimes;if(passedTime<0.0){this.currentTime=0.0;}else {this.currentTime=this._duration+0.000001;}}else {if(this.playState!==0&&this._animationState._playheadState===3){this.playState=0;}if(passedTime<0.0){passedTime=-passedTime;this.currentPlayTimes=Math.floor(passedTime/this._duration);this.currentTime=this._duration-passedTime%this._duration;}else {this.currentPlayTimes=Math.floor(passedTime/this._duration);this.currentTime=passedTime%this._duration;}}this.currentTime+=this._position;}else {this.playState=this._actionTimeline.playState;this.currentPlayTimes=this._actionTimeline.currentPlayTimes;this.currentTime=this._actionTimeline.currentTime;}if(this.currentPlayTimes===prevPlayTimes&&this.currentTime===prevTime){return false;}if(prevState<0&&this.playState!==prevState||this.playState<=0&&this.currentPlayTimes!==prevPlayTimes){this._frameIndex=-1;}return true;};TimelineState.prototype.init=function(armature,animationState,timelineData){this._armature=armature;this._animationState=animationState;this._timelineData=timelineData;this._actionTimeline=this._animationState._actionTimeline;if(this===this._actionTimeline){this._actionTimeline=null;}this._animationData=this._animationState._animationData;this._frameRate=this._animationData.parent.frameRate;this._frameRateR=1.0/this._frameRate;this._position=this._animationState._position;this._duration=this._animationState._duration;this._dragonBonesData=this._animationData.parent.parent;if(this._timelineData!==null){this._frameIntArray=this._dragonBonesData.frameIntArray;this._frameFloatArray=this._dragonBonesData.frameFloatArray;this._frameArray=this._dragonBonesData.frameArray;this._timelineArray=this._dragonBonesData.timelineArray;this._frameIndices=this._dragonBonesData.frameIndices;this._frameCount=this._timelineArray[this._timelineData.offset+2];this._frameValueOffset=this._timelineArray[this._timelineData.offset+4];this._timeScale=100.0/this._timelineArray[this._timelineData.offset+0];this._timeOffset=this._timelineArray[this._timelineData.offset+1]*0.01;}};TimelineState.prototype.fadeOut=function(){};TimelineState.prototype.update=function(passedTime){if(this._setCurrentTime(passedTime)){if(this._frameCount>1){var timelineFrameIndex=Math.floor(this.currentTime*this._frameRate);var frameIndex=this._frameIndices[this._timelineData.frameIndicesOffset+timelineFrameIndex];if(this._frameIndex!==frameIndex){this._frameIndex=frameIndex;this._frameOffset=this._animationData.frameOffset+this._timelineArray[this._timelineData.offset+5+this._frameIndex];this._onArriveAtFrame();}}else if(this._frameIndex<0){this._frameIndex=0;if(this._timelineData!==null){this._frameOffset=this._animationData.frameOffset+this._timelineArray[this._timelineData.offset+5];}this._onArriveAtFrame();}if(this._tweenState!==0){this._onUpdateFrame();}}};return TimelineState;}(dragonBones.BaseObject);dragonBones.TimelineState=TimelineState;var TweenTimelineState=function(_super){__extends(TweenTimelineState,_super);function TweenTimelineState(){return _super!==null&&_super.apply(this,arguments)||this;}TweenTimelineState._getEasingValue=function(tweenType,progress,easing){var value=progress;switch(tweenType){case 3:value=Math.pow(progress,2.0);break;case 4:value=1.0-Math.pow(1.0-progress,2.0);break;case 5:value=0.5*(1.0-Math.cos(progress*Math.PI));break;}return (value-progress)*easing+progress;};TweenTimelineState._getEasingCurveValue=function(progress,samples,count,offset){if(progress<=0.0){return 0.0;}else if(progress>=1.0){return 1.0;}var segmentCount=count+1;var valueIndex=Math.floor(progress*segmentCount);var fromValue=valueIndex===0?0.0:samples[offset+valueIndex-1];var toValue=valueIndex===segmentCount-1?10000.0:samples[offset+valueIndex];return (fromValue+(toValue-fromValue)*(progress*segmentCount-valueIndex))*0.0001;};TweenTimelineState.prototype._onClear=function(){_super.prototype._onClear.call(this);this._tweenType=0;this._curveCount=0;this._framePosition=0.0;this._frameDurationR=0.0;this._tweenProgress=0.0;this._tweenEasing=0.0;};TweenTimelineState.prototype._onArriveAtFrame=function(){if(this._frameCount>1&&(this._frameIndex!==this._frameCount-1||this._animationState.playTimes===0||this._animationState.currentPlayTimes0){this._frameDurationR=1.0/frameDuration;}else {this._frameDurationR=0.0;}}}else {this._tweenState=1;}};TweenTimelineState.prototype._onUpdateFrame=function(){if(this._tweenState===2){this._tweenProgress=(this.currentTime-this._framePosition)*this._frameDurationR;if(this._tweenType===2){this._tweenProgress=TweenTimelineState._getEasingCurveValue(this._tweenProgress,this._frameArray,this._curveCount,this._frameOffset+3);}else if(this._tweenType!==1){this._tweenProgress=TweenTimelineState._getEasingValue(this._tweenType,this._tweenProgress,this._tweenEasing);}}else {this._tweenProgress=0.0;}};return TweenTimelineState;}(TimelineState);dragonBones.TweenTimelineState=TweenTimelineState;var BoneTimelineState=function(_super){__extends(BoneTimelineState,_super);function BoneTimelineState(){return _super!==null&&_super.apply(this,arguments)||this;}BoneTimelineState.prototype._onClear=function(){_super.prototype._onClear.call(this);this.bone=null;this.bonePose=null;};BoneTimelineState.prototype.blend=function(state){var blendWeight=this.bone._blendState.blendWeight;var animationPose=this.bone.animationPose;var result=this.bonePose.result;if(state===2){animationPose.x+=result.x*blendWeight;animationPose.y+=result.y*blendWeight;animationPose.rotation+=result.rotation*blendWeight;animationPose.skew+=result.skew*blendWeight;animationPose.scaleX+=(result.scaleX-1.0)*blendWeight;animationPose.scaleY+=(result.scaleY-1.0)*blendWeight;}else if(blendWeight!==1.0){animationPose.x=result.x*blendWeight;animationPose.y=result.y*blendWeight;animationPose.rotation=result.rotation*blendWeight;animationPose.skew=result.skew*blendWeight;animationPose.scaleX=(result.scaleX-1.0)*blendWeight+1.0;animationPose.scaleY=(result.scaleY-1.0)*blendWeight+1.0;}else {animationPose.x=result.x;animationPose.y=result.y;animationPose.rotation=result.rotation;animationPose.skew=result.skew;animationPose.scaleX=result.scaleX;animationPose.scaleY=result.scaleY;}if(this._animationState._fadeState!==0||this._animationState._subFadeState!==0){this.bone._transformDirty=true;}};return BoneTimelineState;}(TweenTimelineState);dragonBones.BoneTimelineState=BoneTimelineState;var SlotTimelineState=function(_super){__extends(SlotTimelineState,_super);function SlotTimelineState(){return _super!==null&&_super.apply(this,arguments)||this;}SlotTimelineState.prototype._onClear=function(){_super.prototype._onClear.call(this);this.slot=null;};return SlotTimelineState;}(TweenTimelineState);dragonBones.SlotTimelineState=SlotTimelineState;var ConstraintTimelineState=function(_super){__extends(ConstraintTimelineState,_super);function ConstraintTimelineState(){return _super!==null&&_super.apply(this,arguments)||this;}ConstraintTimelineState.prototype._onClear=function(){_super.prototype._onClear.call(this);this.constraint=null;};return ConstraintTimelineState;}(TweenTimelineState);dragonBones.ConstraintTimelineState=ConstraintTimelineState;})(dragonBones||(dragonBones={}));(function(dragonBones){var ActionTimelineState=function(_super){__extends(ActionTimelineState,_super);function ActionTimelineState(){return _super!==null&&_super.apply(this,arguments)||this;}ActionTimelineState.toString=function(){return "[class dragonBones.ActionTimelineState]";};ActionTimelineState.prototype._onCrossFrame=function(frameIndex){var eventDispatcher=this._armature.eventDispatcher;if(this._animationState.actionEnabled){var frameOffset=this._animationData.frameOffset+this._timelineArray[this._timelineData.offset+5+frameIndex];var actionCount=this._frameArray[frameOffset+1];var actions=this._animationData.parent.actions;for(var i=0;i0){if(eventDispatcher.hasDBEventListener(dragonBones.EventObject.COMPLETE)){completeEvent=dragonBones.BaseObject.borrowObject(dragonBones.EventObject);completeEvent.type=dragonBones.EventObject.COMPLETE;completeEvent.armature=this._armature;completeEvent.animationState=this._animationState;}}}if(this._frameCount>1){var timelineData=this._timelineData;var timelineFrameIndex=Math.floor(this.currentTime*this._frameRate);var frameIndex=this._frameIndices[timelineData.frameIndicesOffset+timelineFrameIndex];if(this._frameIndex!==frameIndex){var crossedFrameIndex=this._frameIndex;this._frameIndex=frameIndex;if(this._timelineArray!==null){this._frameOffset=this._animationData.frameOffset+this._timelineArray[timelineData.offset+5+this._frameIndex];if(isReverse){if(crossedFrameIndex<0){var prevFrameIndex=Math.floor(prevTime*this._frameRate);crossedFrameIndex=this._frameIndices[timelineData.frameIndicesOffset+prevFrameIndex];if(this.currentPlayTimes===prevPlayTimes){if(crossedFrameIndex===frameIndex){crossedFrameIndex=-1;}}}while(crossedFrameIndex>=0){var frameOffset=this._animationData.frameOffset+this._timelineArray[timelineData.offset+5+crossedFrameIndex];var framePosition=this._frameArray[frameOffset]/this._frameRate;if(this._position<=framePosition&&framePosition<=this._position+this._duration){this._onCrossFrame(crossedFrameIndex);}if(loopCompleteEvent!==null&&crossedFrameIndex===0){this._armature._dragonBones.bufferEvent(loopCompleteEvent);loopCompleteEvent=null;}if(crossedFrameIndex>0){crossedFrameIndex--;}else {crossedFrameIndex=this._frameCount-1;}if(crossedFrameIndex===frameIndex){break;}}}else {if(crossedFrameIndex<0){var prevFrameIndex=Math.floor(prevTime*this._frameRate);crossedFrameIndex=this._frameIndices[timelineData.frameIndicesOffset+prevFrameIndex];var frameOffset=this._animationData.frameOffset+this._timelineArray[timelineData.offset+5+crossedFrameIndex];var framePosition=this._frameArray[frameOffset]/this._frameRate;if(this.currentPlayTimes===prevPlayTimes){if(prevTime<=framePosition){if(crossedFrameIndex>0){crossedFrameIndex--;}else {crossedFrameIndex=this._frameCount-1;}}else if(crossedFrameIndex===frameIndex){crossedFrameIndex=-1;}}}while(crossedFrameIndex>=0){if(crossedFrameIndex=0){var count=this._frameArray[this._frameOffset+1];if(count>0){this._armature._sortZOrder(this._frameArray,this._frameOffset+2);}else {this._armature._sortZOrder(null,0);}}};ZOrderTimelineState.prototype._onUpdateFrame=function(){};return ZOrderTimelineState;}(dragonBones.TimelineState);dragonBones.ZOrderTimelineState=ZOrderTimelineState;var BoneAllTimelineState=function(_super){__extends(BoneAllTimelineState,_super);function BoneAllTimelineState(){return _super!==null&&_super.apply(this,arguments)||this;}BoneAllTimelineState.toString=function(){return "[class dragonBones.BoneAllTimelineState]";};BoneAllTimelineState.prototype._onArriveAtFrame=function(){_super.prototype._onArriveAtFrame.call(this);if(this._timelineData!==null){var valueOffset=this._animationData.frameFloatOffset+this._frameValueOffset+this._frameIndex*6;var scale=this._armature._armatureData.scale;var frameFloatArray=this._frameFloatArray;var current=this.bonePose.current;var delta=this.bonePose.delta;current.x=frameFloatArray[valueOffset++]*scale;current.y=frameFloatArray[valueOffset++]*scale;current.rotation=frameFloatArray[valueOffset++];current.skew=frameFloatArray[valueOffset++];current.scaleX=frameFloatArray[valueOffset++];current.scaleY=frameFloatArray[valueOffset++];if(this._tweenState===2){if(this._frameIndex===this._frameCount-1){valueOffset=this._animationData.frameFloatOffset+this._frameValueOffset;}delta.x=frameFloatArray[valueOffset++]*scale-current.x;delta.y=frameFloatArray[valueOffset++]*scale-current.y;delta.rotation=frameFloatArray[valueOffset++]-current.rotation;delta.skew=frameFloatArray[valueOffset++]-current.skew;delta.scaleX=frameFloatArray[valueOffset++]-current.scaleX;delta.scaleY=frameFloatArray[valueOffset++]-current.scaleY;}else {delta.x=0.0;delta.y=0.0;delta.rotation=0.0;delta.skew=0.0;delta.scaleX=0.0;delta.scaleY=0.0;}}else {var current=this.bonePose.current;var delta=this.bonePose.delta;current.x=0.0;current.y=0.0;current.rotation=0.0;current.skew=0.0;current.scaleX=1.0;current.scaleY=1.0;delta.x=0.0;delta.y=0.0;delta.rotation=0.0;delta.skew=0.0;delta.scaleX=0.0;delta.scaleY=0.0;}};BoneAllTimelineState.prototype._onUpdateFrame=function(){_super.prototype._onUpdateFrame.call(this);var current=this.bonePose.current;var delta=this.bonePose.delta;var result=this.bonePose.result;this.bone._transformDirty=true;if(this._tweenState!==2){this._tweenState=0;}result.x=current.x+delta.x*this._tweenProgress;result.y=current.y+delta.y*this._tweenProgress;result.rotation=current.rotation+delta.rotation*this._tweenProgress;result.skew=current.skew+delta.skew*this._tweenProgress;result.scaleX=current.scaleX+delta.scaleX*this._tweenProgress;result.scaleY=current.scaleY+delta.scaleY*this._tweenProgress;};BoneAllTimelineState.prototype.fadeOut=function(){var result=this.bonePose.result;result.rotation=dragonBones.Transform.normalizeRadian(result.rotation);result.skew=dragonBones.Transform.normalizeRadian(result.skew);};return BoneAllTimelineState;}(dragonBones.BoneTimelineState);dragonBones.BoneAllTimelineState=BoneAllTimelineState;var BoneTranslateTimelineState=function(_super){__extends(BoneTranslateTimelineState,_super);function BoneTranslateTimelineState(){return _super!==null&&_super.apply(this,arguments)||this;}BoneTranslateTimelineState.toString=function(){return "[class dragonBones.BoneTranslateTimelineState]";};BoneTranslateTimelineState.prototype._onArriveAtFrame=function(){_super.prototype._onArriveAtFrame.call(this);if(this._timelineData!==null){var valueOffset=this._animationData.frameFloatOffset+this._frameValueOffset+this._frameIndex*2;var scale=this._armature._armatureData.scale;var frameFloatArray=this._frameFloatArray;var current=this.bonePose.current;var delta=this.bonePose.delta;current.x=frameFloatArray[valueOffset++]*scale;current.y=frameFloatArray[valueOffset++]*scale;if(this._tweenState===2){if(this._frameIndex===this._frameCount-1){valueOffset=this._animationData.frameFloatOffset+this._frameValueOffset;}delta.x=frameFloatArray[valueOffset++]*scale-current.x;delta.y=frameFloatArray[valueOffset++]*scale-current.y;}else {delta.x=0.0;delta.y=0.0;}}else {var current=this.bonePose.current;var delta=this.bonePose.delta;current.x=0.0;current.y=0.0;delta.x=0.0;delta.y=0.0;}};BoneTranslateTimelineState.prototype._onUpdateFrame=function(){_super.prototype._onUpdateFrame.call(this);var current=this.bonePose.current;var delta=this.bonePose.delta;var result=this.bonePose.result;this.bone._transformDirty=true;if(this._tweenState!==2){this._tweenState=0;}result.x=current.x+delta.x*this._tweenProgress;result.y=current.y+delta.y*this._tweenProgress;};return BoneTranslateTimelineState;}(dragonBones.BoneTimelineState);dragonBones.BoneTranslateTimelineState=BoneTranslateTimelineState;var BoneRotateTimelineState=function(_super){__extends(BoneRotateTimelineState,_super);function BoneRotateTimelineState(){return _super!==null&&_super.apply(this,arguments)||this;}BoneRotateTimelineState.toString=function(){return "[class dragonBones.BoneRotateTimelineState]";};BoneRotateTimelineState.prototype._onArriveAtFrame=function(){_super.prototype._onArriveAtFrame.call(this);if(this._timelineData!==null){var valueOffset=this._animationData.frameFloatOffset+this._frameValueOffset+this._frameIndex*2;var frameFloatArray=this._frameFloatArray;var current=this.bonePose.current;var delta=this.bonePose.delta;current.rotation=frameFloatArray[valueOffset++];current.skew=frameFloatArray[valueOffset++];if(this._tweenState===2){if(this._frameIndex===this._frameCount-1){valueOffset=this._animationData.frameFloatOffset+this._frameValueOffset;delta.rotation=dragonBones.Transform.normalizeRadian(frameFloatArray[valueOffset++]-current.rotation);}else {delta.rotation=frameFloatArray[valueOffset++]-current.rotation;}delta.skew=frameFloatArray[valueOffset++]-current.skew;}else {delta.rotation=0.0;delta.skew=0.0;}}else {var current=this.bonePose.current;var delta=this.bonePose.delta;current.rotation=0.0;current.skew=0.0;delta.rotation=0.0;delta.skew=0.0;}};BoneRotateTimelineState.prototype._onUpdateFrame=function(){_super.prototype._onUpdateFrame.call(this);var current=this.bonePose.current;var delta=this.bonePose.delta;var result=this.bonePose.result;this.bone._transformDirty=true;if(this._tweenState!==2){this._tweenState=0;}result.rotation=current.rotation+delta.rotation*this._tweenProgress;result.skew=current.skew+delta.skew*this._tweenProgress;};BoneRotateTimelineState.prototype.fadeOut=function(){var result=this.bonePose.result;result.rotation=dragonBones.Transform.normalizeRadian(result.rotation);result.skew=dragonBones.Transform.normalizeRadian(result.skew);};return BoneRotateTimelineState;}(dragonBones.BoneTimelineState);dragonBones.BoneRotateTimelineState=BoneRotateTimelineState;var BoneScaleTimelineState=function(_super){__extends(BoneScaleTimelineState,_super);function BoneScaleTimelineState(){return _super!==null&&_super.apply(this,arguments)||this;}BoneScaleTimelineState.toString=function(){return "[class dragonBones.BoneScaleTimelineState]";};BoneScaleTimelineState.prototype._onArriveAtFrame=function(){_super.prototype._onArriveAtFrame.call(this);if(this._timelineData!==null){var valueOffset=this._animationData.frameFloatOffset+this._frameValueOffset+this._frameIndex*2;var frameFloatArray=this._frameFloatArray;var current=this.bonePose.current;var delta=this.bonePose.delta;current.scaleX=frameFloatArray[valueOffset++];current.scaleY=frameFloatArray[valueOffset++];if(this._tweenState===2){if(this._frameIndex===this._frameCount-1){valueOffset=this._animationData.frameFloatOffset+this._frameValueOffset;}delta.scaleX=frameFloatArray[valueOffset++]-current.scaleX;delta.scaleY=frameFloatArray[valueOffset++]-current.scaleY;}else {delta.scaleX=0.0;delta.scaleY=0.0;}}else {var current=this.bonePose.current;var delta=this.bonePose.delta;current.scaleX=1.0;current.scaleY=1.0;delta.scaleX=0.0;delta.scaleY=0.0;}};BoneScaleTimelineState.prototype._onUpdateFrame=function(){_super.prototype._onUpdateFrame.call(this);var current=this.bonePose.current;var delta=this.bonePose.delta;var result=this.bonePose.result;this.bone._transformDirty=true;if(this._tweenState!==2){this._tweenState=0;}result.scaleX=current.scaleX+delta.scaleX*this._tweenProgress;result.scaleY=current.scaleY+delta.scaleY*this._tweenProgress;};return BoneScaleTimelineState;}(dragonBones.BoneTimelineState);dragonBones.BoneScaleTimelineState=BoneScaleTimelineState;var SurfaceTimelineState=function(_super){__extends(SurfaceTimelineState,_super);function SurfaceTimelineState(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this._current=[];_this._delta=[];_this._result=[];return _this;}SurfaceTimelineState.toString=function(){return "[class dragonBones.SurfaceTimelineState]";};SurfaceTimelineState.prototype._onClear=function(){_super.prototype._onClear.call(this);this.surface=null;this._frameFloatOffset=0;this._valueCount=0;this._deformCount=0;this._valueOffset=0;this._current.length=0;this._delta.length=0;this._result.length=0;};SurfaceTimelineState.prototype._onArriveAtFrame=function(){_super.prototype._onArriveAtFrame.call(this);if(this._timelineData!==null){var valueOffset=this._animationData.frameFloatOffset+this._frameValueOffset+this._frameIndex*this._valueCount;var scale=this._armature._armatureData.scale;var frameFloatArray=this._frameFloatArray;if(this._tweenState===2){var nextValueOffset=valueOffset+this._valueCount;if(this._frameIndex===this._frameCount-1){nextValueOffset=this._animationData.frameFloatOffset+this._frameValueOffset;}for(var i=0;i=0){var displayIndex=this._timelineData!==null?this._frameArray[this._frameOffset+1]:this.slot._slotData.displayIndex;if(this.slot.displayIndex!==displayIndex){this.slot._setDisplayIndex(displayIndex,true);}}};return SlotDislayTimelineState;}(dragonBones.SlotTimelineState);dragonBones.SlotDislayTimelineState=SlotDislayTimelineState;var SlotColorTimelineState=function(_super){__extends(SlotColorTimelineState,_super);function SlotColorTimelineState(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this._current=[0,0,0,0,0,0,0,0];_this._delta=[0,0,0,0,0,0,0,0];_this._result=[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0];return _this;}SlotColorTimelineState.toString=function(){return "[class dragonBones.SlotColorTimelineState]";};SlotColorTimelineState.prototype._onClear=function(){_super.prototype._onClear.call(this);this._dirty=false;};SlotColorTimelineState.prototype._onArriveAtFrame=function(){_super.prototype._onArriveAtFrame.call(this);if(this._timelineData!==null){var intArray=this._dragonBonesData.intArray;var frameIntArray=this._frameIntArray;var valueOffset=this._animationData.frameIntOffset+this._frameValueOffset+this._frameIndex*1;var colorOffset=frameIntArray[valueOffset];if(colorOffset<0){colorOffset+=65536;}this._current[0]=intArray[colorOffset++];this._current[1]=intArray[colorOffset++];this._current[2]=intArray[colorOffset++];this._current[3]=intArray[colorOffset++];this._current[4]=intArray[colorOffset++];this._current[5]=intArray[colorOffset++];this._current[6]=intArray[colorOffset++];this._current[7]=intArray[colorOffset++];if(this._tweenState===2){if(this._frameIndex===this._frameCount-1){colorOffset=frameIntArray[this._animationData.frameIntOffset+this._frameValueOffset];}else {colorOffset=frameIntArray[valueOffset+1*1];}if(colorOffset<0){colorOffset+=65536;}this._delta[0]=intArray[colorOffset++]-this._current[0];this._delta[1]=intArray[colorOffset++]-this._current[1];this._delta[2]=intArray[colorOffset++]-this._current[2];this._delta[3]=intArray[colorOffset++]-this._current[3];this._delta[4]=intArray[colorOffset++]-this._current[4];this._delta[5]=intArray[colorOffset++]-this._current[5];this._delta[6]=intArray[colorOffset++]-this._current[6];this._delta[7]=intArray[colorOffset++]-this._current[7];}}else {var color=this.slot._slotData.color;this._current[0]=color.alphaMultiplier*100.0;this._current[1]=color.redMultiplier*100.0;this._current[2]=color.greenMultiplier*100.0;this._current[3]=color.blueMultiplier*100.0;this._current[4]=color.alphaOffset;this._current[5]=color.redOffset;this._current[6]=color.greenOffset;this._current[7]=color.blueOffset;}};SlotColorTimelineState.prototype._onUpdateFrame=function(){_super.prototype._onUpdateFrame.call(this);this._dirty=true;if(this._tweenState!==2){this._tweenState=0;}this._result[0]=(this._current[0]+this._delta[0]*this._tweenProgress)*0.01;this._result[1]=(this._current[1]+this._delta[1]*this._tweenProgress)*0.01;this._result[2]=(this._current[2]+this._delta[2]*this._tweenProgress)*0.01;this._result[3]=(this._current[3]+this._delta[3]*this._tweenProgress)*0.01;this._result[4]=this._current[4]+this._delta[4]*this._tweenProgress;this._result[5]=this._current[5]+this._delta[5]*this._tweenProgress;this._result[6]=this._current[6]+this._delta[6]*this._tweenProgress;this._result[7]=this._current[7]+this._delta[7]*this._tweenProgress;};SlotColorTimelineState.prototype.fadeOut=function(){this._tweenState=0;this._dirty=false;};SlotColorTimelineState.prototype.update=function(passedTime){_super.prototype.update.call(this,passedTime);if(this._tweenState!==0||this._dirty){var result=this.slot._colorTransform;if(this._animationState._fadeState!==0||this._animationState._subFadeState!==0){if(result.alphaMultiplier!==this._result[0]||result.redMultiplier!==this._result[1]||result.greenMultiplier!==this._result[2]||result.blueMultiplier!==this._result[3]||result.alphaOffset!==this._result[4]||result.redOffset!==this._result[5]||result.greenOffset!==this._result[6]||result.blueOffset!==this._result[7]){var fadeProgress=Math.pow(this._animationState._fadeProgress,4);result.alphaMultiplier+=(this._result[0]-result.alphaMultiplier)*fadeProgress;result.redMultiplier+=(this._result[1]-result.redMultiplier)*fadeProgress;result.greenMultiplier+=(this._result[2]-result.greenMultiplier)*fadeProgress;result.blueMultiplier+=(this._result[3]-result.blueMultiplier)*fadeProgress;result.alphaOffset+=(this._result[4]-result.alphaOffset)*fadeProgress;result.redOffset+=(this._result[5]-result.redOffset)*fadeProgress;result.greenOffset+=(this._result[6]-result.greenOffset)*fadeProgress;result.blueOffset+=(this._result[7]-result.blueOffset)*fadeProgress;this.slot._colorDirty=true;}}else if(this._dirty){this._dirty=false;if(result.alphaMultiplier!==this._result[0]||result.redMultiplier!==this._result[1]||result.greenMultiplier!==this._result[2]||result.blueMultiplier!==this._result[3]||result.alphaOffset!==this._result[4]||result.redOffset!==this._result[5]||result.greenOffset!==this._result[6]||result.blueOffset!==this._result[7]){result.alphaMultiplier=this._result[0];result.redMultiplier=this._result[1];result.greenMultiplier=this._result[2];result.blueMultiplier=this._result[3];result.alphaOffset=this._result[4];result.redOffset=this._result[5];result.greenOffset=this._result[6];result.blueOffset=this._result[7];this.slot._colorDirty=true;}}}};return SlotColorTimelineState;}(dragonBones.SlotTimelineState);dragonBones.SlotColorTimelineState=SlotColorTimelineState;var DeformTimelineState=function(_super){__extends(DeformTimelineState,_super);function DeformTimelineState(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this._current=[];_this._delta=[];_this._result=[];return _this;}DeformTimelineState.toString=function(){return "[class dragonBones.DeformTimelineState]";};DeformTimelineState.prototype._onClear=function(){_super.prototype._onClear.call(this);this.vertexOffset=0;this._dirty=false;this._frameFloatOffset=0;this._valueCount=0;this._deformCount=0;this._valueOffset=0;this._current.length=0;this._delta.length=0;this._result.length=0;};DeformTimelineState.prototype._onArriveAtFrame=function(){_super.prototype._onArriveAtFrame.call(this);if(this._timelineData!==null){var valueOffset=this._animationData.frameFloatOffset+this._frameValueOffset+this._frameIndex*this._valueCount;var scale=this._armature._armatureData.scale;var frameFloatArray=this._frameFloatArray;if(this._tweenState===2){var nextValueOffset=valueOffset+this._valueCount;if(this._frameIndex===this._frameCount-1){nextValueOffset=this._animationData.frameFloatOffset+this._frameValueOffset;}for(var i=0;i=0.0){this._floats[2]=this._floats[0]+this._floats[1]*this._tweenProgress;}this._floats[5]=this._floats[3]+this._floats[4]*this._tweenProgress;};AnimationTimelineState.prototype.blend=function(state){var animationState=this.animationState;var blendWeight=animationState._blendState.blendWeight;if(state===2){animationState.weight+=this._floats[5]*blendWeight;animationState.currentTime+=this._floats[2]*blendWeight;}else {animationState.weight=this._floats[5]*blendWeight;animationState.currentTime=this._floats[2]*blendWeight;}};return AnimationTimelineState;}(dragonBones.TweenTimelineState);dragonBones.AnimationTimelineState=AnimationTimelineState;})(dragonBones||(dragonBones={}));(function(dragonBones){var EventObject=function(_super){__extends(EventObject,_super);function EventObject(){return _super!==null&&_super.apply(this,arguments)||this;}EventObject.actionDataToInstance=function(data,instance,armature){if(data.type===0){instance.type=EventObject.FRAME_EVENT;}else {instance.type=data.type===10?EventObject.FRAME_EVENT:EventObject.SOUND_EVENT;}instance.name=data.name;instance.armature=armature;instance.actionData=data;instance.data=data.data;if(data.bone!==null){instance.bone=armature.getBone(data.bone.name);}if(data.slot!==null){instance.slot=armature.getSlot(data.slot.name);}};EventObject.toString=function(){return "[class dragonBones.EventObject]";};EventObject.prototype._onClear=function(){this.time=0.0;this.type="";this.name="";this.armature=null;this.bone=null;this.slot=null;this.animationState=null;this.actionData=null;this.data=null;};EventObject.START="start";EventObject.LOOP_COMPLETE="loopComplete";EventObject.COMPLETE="complete";EventObject.FADE_IN="fadeIn";EventObject.FADE_IN_COMPLETE="fadeInComplete";EventObject.FADE_OUT="fadeOut";EventObject.FADE_OUT_COMPLETE="fadeOutComplete";EventObject.FRAME_EVENT="frameEvent";EventObject.SOUND_EVENT="soundEvent";return EventObject;}(dragonBones.BaseObject);dragonBones.EventObject=EventObject;})(dragonBones||(dragonBones={}));(function(dragonBones){var DataParser=function(){function DataParser(){}DataParser._getArmatureType=function(value){switch(value.toLowerCase()){case"stage":return 2;case"armature":return 0;case"movieclip":return 1;default:return 0;}};DataParser._getBoneType=function(value){switch(value.toLowerCase()){case"bone":return 0;case"surface":return 1;default:return 0;}};DataParser._getDisplayType=function(value){switch(value.toLowerCase()){case"image":return 0;case"mesh":return 2;case"armature":return 1;case"boundingbox":return 3;case"path":return 4;default:return 0;}};DataParser._getBoundingBoxType=function(value){switch(value.toLowerCase()){case"rectangle":return 0;case"ellipse":return 1;case"polygon":return 2;default:return 0;}};DataParser._getActionType=function(value){switch(value.toLowerCase()){case"play":return 0;case"frame":return 10;case"sound":return 11;default:return 0;}};DataParser._getBlendMode=function(value){switch(value.toLowerCase()){case"normal":return 0;case"add":return 1;case"alpha":return 2;case"darken":return 3;case"difference":return 4;case"erase":return 5;case"hardlight":return 6;case"invert":return 7;case"layer":return 8;case"lighten":return 9;case"multiply":return 10;case"overlay":return 11;case"screen":return 12;case"subtract":return 13;default:return 0;}};DataParser._getPositionMode=function(value){switch(value.toLocaleLowerCase()){case"percent":return 1;case"fixed":return 0;default:return 1;}};DataParser._getSpacingMode=function(value){switch(value.toLocaleLowerCase()){case"length":return 0;case"percent":return 2;case"fixed":return 1;default:return 0;}};DataParser._getRotateMode=function(value){switch(value.toLocaleLowerCase()){case"tangent":return 0;case"chain":return 1;case"chainscale":return 2;default:return 0;}};DataParser.parseDragonBonesData=function(rawData){console.warn("Deprecated.");if(rawData instanceof ArrayBuffer){return dragonBones.BinaryDataParser.getInstance().parseDragonBonesData(rawData);}else {return dragonBones.ObjectDataParser.getInstance().parseDragonBonesData(rawData);}};DataParser.parseTextureAtlasData=function(rawData,scale){if(scale===void 0){scale=1;}console.warn("已废弃");var textureAtlasData={};var subTextureList=rawData[DataParser.SUB_TEXTURE];for(var i=0,len=subTextureList.length;i255){return encodeURI(value);}}}return value;}return String(value);}return defaultValue;};ObjectDataParser.prototype._getCurvePoint=function(x1,y1,x2,y2,x3,y3,x4,y4,t,result){var l_t=1.0-t;var powA=l_t*l_t;var powB=t*t;var kA=l_t*powA;var kB=3.0*t*powA;var kC=3.0*l_t*powB;var kD=t*powB;result.x=kA*x1+kB*x2+kC*x3+kD*x4;result.y=kA*y1+kB*y2+kC*y3+kD*y4;};ObjectDataParser.prototype._samplingEasingCurve=function(curve,samples){var curveCount=curve.length;var stepIndex=-2;for(var i=0,l=samples.length;i=0&&stepIndex+60.0001){var percentage=(higher+lower)*0.5;this._getCurvePoint(x1,y1,x2,y2,x3,y3,x4,y4,percentage,this._helpPoint);if(t-this._helpPoint.x>0.0){lower=percentage;}else {higher=percentage;}}samples[i]=this._helpPoint.y;}};ObjectDataParser.prototype._parseActionDataInFrame=function(rawData,frameStart,bone,slot){if(dragonBones.DataParser.EVENT in rawData){this._mergeActionFrame(rawData[dragonBones.DataParser.EVENT],frameStart,10,bone,slot);}if(dragonBones.DataParser.SOUND in rawData){this._mergeActionFrame(rawData[dragonBones.DataParser.SOUND],frameStart,11,bone,slot);}if(dragonBones.DataParser.ACTION in rawData){this._mergeActionFrame(rawData[dragonBones.DataParser.ACTION],frameStart,0,bone,slot);}if(dragonBones.DataParser.EVENTS in rawData){this._mergeActionFrame(rawData[dragonBones.DataParser.EVENTS],frameStart,10,bone,slot);}if(dragonBones.DataParser.ACTIONS in rawData){this._mergeActionFrame(rawData[dragonBones.DataParser.ACTIONS],frameStart,0,bone,slot);}};ObjectDataParser.prototype._mergeActionFrame=function(rawData,frameStart,type,bone,slot){var actionOffset=dragonBones.DragonBones.webAssembly?this._armature.actions.size():this._armature.actions.length;var actions=this._parseActionData(rawData,type,bone,slot);var frameIndex=0;var frame=null;for(var _i=0,actions_2=actions;_iframeStart){break;}frameIndex++;}if(frame===null){frame=new ActionFrame();frame.frameStart=frameStart;this._actionFrames.splice(frameIndex+1,0,frame);}for(var i=0;i0){var parent_1=armature.getBone(parentName);if(parent_1!==null){bone.parent=parent_1;}else {if(!(parentName in this._cacheBones)){this._cacheBones[parentName]=[];}this._cacheBones[parentName].push(bone);}}if(bone.name in this._cacheBones){for(var _a=0,_b=this._cacheBones[bone.name];_a<_b.length;_a++){var child=_b[_a];child.parent=bone;}delete this._cacheBones[bone.name];}armature.addBone(bone);this._rawBones.push(bone);}}if(dragonBones.DataParser.IK in rawData){var rawIKS=rawData[dragonBones.DataParser.IK];for(var _c=0,rawIKS_1=rawIKS;_c0&&bone.parent!==null){constraint.root=bone.parent;constraint.bone=bone;}else {constraint.root=bone;constraint.bone=null;}return constraint;};ObjectDataParser.prototype._parsePathConstraint=function(rawData){var target=this._armature.getSlot(ObjectDataParser._getString(rawData,dragonBones.DataParser.TARGET,""));if(target===null){return null;}var defaultSkin=this._armature.defaultSkin;if(defaultSkin===null){return null;}var targetDisplay=defaultSkin.getDisplay(target.name,ObjectDataParser._getString(rawData,dragonBones.DataParser.TARGET_DISPLAY,target.name));if(targetDisplay===null||!(targetDisplay instanceof dragonBones.PathDisplayData)){return null;}var bones=rawData[dragonBones.DataParser.BONES];if(bones===null||bones.length===0){return null;}var constraint=dragonBones.BaseObject.borrowObject(dragonBones.PathConstraintData);constraint.name=ObjectDataParser._getString(rawData,dragonBones.DataParser.NAME,"");constraint.type=1;constraint.pathSlot=target;constraint.pathDisplayData=targetDisplay;constraint.target=target.parent;constraint.positionMode=dragonBones.DataParser._getPositionMode(ObjectDataParser._getString(rawData,dragonBones.DataParser.POSITION_MODE,""));constraint.spacingMode=dragonBones.DataParser._getSpacingMode(ObjectDataParser._getString(rawData,dragonBones.DataParser.SPACING_MODE,""));constraint.rotateMode=dragonBones.DataParser._getRotateMode(ObjectDataParser._getString(rawData,dragonBones.DataParser.ROTATE_MODE,""));constraint.position=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.POSITION,0);constraint.spacing=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.SPACING,0);constraint.rotateOffset=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.ROTATE_OFFSET,0);constraint.rotateMix=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.ROTATE_MIX,1);constraint.translateMix=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.TRANSLATE_MIX,1);for(var _i=0,bones_3=bones;_i0?path:name;this._parsePivot(rawData,imageDisplay);break;case 1:var armatureDisplay=display=dragonBones.BaseObject.borrowObject(dragonBones.ArmatureDisplayData);armatureDisplay.name=name;armatureDisplay.path=path.length>0?path:name;armatureDisplay.inheritAnimation=true;if(dragonBones.DataParser.ACTIONS in rawData){var actions=this._parseActionData(rawData[dragonBones.DataParser.ACTIONS],0,null,null);for(var _i=0,actions_5=actions;_i0?path:name;meshDisplay.vertices.data=this._data;if(dragonBones.DataParser.SHARE in rawData){this._cacheRawMeshes.push(rawData);this._cacheMeshes.push(meshDisplay);}else {this._parseMesh(rawData,meshDisplay);}if(dragonBones.DataParser.GLUE_WEIGHTS in rawData&&dragonBones.DataParser.GLUE_MESHES in rawData){this._cacheRawMeshes.push(rawData);this._cacheMeshes.push(meshDisplay);}break;case 3:var boundingBox=this._parseBoundingBox(rawData);if(boundingBox!==null){var boundingBoxDisplay=display=dragonBones.BaseObject.borrowObject(dragonBones.BoundingBoxDisplayData);boundingBoxDisplay.name=name;boundingBoxDisplay.path=path.length>0?path:name;boundingBoxDisplay.boundingBox=boundingBox;}break;case 4:var rawCurveLengths=rawData[dragonBones.DataParser.LENGTHS];var pathDisplay=display=dragonBones.BaseObject.borrowObject(dragonBones.PathDisplayData);pathDisplay.closed=ObjectDataParser._getBoolean(rawData,dragonBones.DataParser.CLOSED,false);pathDisplay.constantSpeed=ObjectDataParser._getBoolean(rawData,dragonBones.DataParser.CONSTANT_SPEED,false);pathDisplay.name=name;pathDisplay.path=path.length>0?path:name;pathDisplay.vertices.data=this._data;pathDisplay.curveLengths.length=rawCurveLengths.length;for(var i=0,l=rawCurveLengths.length;ipolygonBoundingBox.width){polygonBoundingBox.width=x;}if(ypolygonBoundingBox.height){polygonBoundingBox.height=y;}}}polygonBoundingBox.width-=polygonBoundingBox.x;polygonBoundingBox.height-=polygonBoundingBox.y;}else {console.warn("Data error.\n Please reexport DragonBones Data to fixed the bug.");}return polygonBoundingBox;};ObjectDataParser.prototype._parseAnimation=function(rawData){var animation=dragonBones.BaseObject.borrowObject(dragonBones.AnimationData);animation.frameCount=Math.max(ObjectDataParser._getNumber(rawData,dragonBones.DataParser.DURATION,1),1);animation.playTimes=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.PLAY_TIMES,1);animation.duration=animation.frameCount/this._armature.frameRate;animation.fadeInTime=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.FADE_IN_TIME,0.0);animation.scale=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.SCALE,1.0);animation.name=ObjectDataParser._getString(rawData,dragonBones.DataParser.NAME,dragonBones.DataParser.DEFAULT_NAME);if(animation.name.length===0){animation.name=dragonBones.DataParser.DEFAULT_NAME;}animation.frameIntOffset=this._frameIntArray.length;animation.frameFloatOffset=this._frameFloatArray.length;animation.frameOffset=this._frameArray.length;this._animation=animation;if(dragonBones.DataParser.FRAME in rawData){var rawFrames=rawData[dragonBones.DataParser.FRAME];var keyFrameCount=rawFrames.length;if(keyFrameCount>0){for(var i=0,frameStart=0;i0){this._animation.actionTimeline=this._parseTimeline(null,this._actionFrames,"",0,false,false,0,this._parseActionFrame);this._actionFrames.length=0;}this._animation=null;return animation;};ObjectDataParser.prototype._parseTimeline=function(rawData,rawFrames,framesKey,type,addIntOffset,addFloatOffset,frameValueCount,frameParser){if(rawData!==null&&framesKey.length>0&&framesKey in rawData){rawFrames=rawData[framesKey];}if(rawFrames===null){return null;}var keyFrameCount=rawFrames.length;if(keyFrameCount===0){return null;}var frameIntArrayLength=this._frameIntArray.length;var frameFloatArrayLength=this._frameFloatArray.length;var timeline=dragonBones.BaseObject.borrowObject(dragonBones.TimelineData);var timelineOffset=this._timelineArray.length;this._timelineArray.length+=1+1+1+1+1+keyFrameCount;if(rawData!==null){this._timelineArray[timelineOffset+0]=Math.round(ObjectDataParser._getNumber(rawData,dragonBones.DataParser.SCALE,1.0)*100);this._timelineArray[timelineOffset+1]=Math.round(ObjectDataParser._getNumber(rawData,dragonBones.DataParser.OFFSET,0.0)*100);}else {this._timelineArray[timelineOffset+0]=100;this._timelineArray[timelineOffset+1]=0;}this._timelineArray[timelineOffset+2]=keyFrameCount;this._timelineArray[timelineOffset+3]=frameValueCount;if(addIntOffset){this._timelineArray[timelineOffset+4]=frameIntArrayLength-this._animation.frameIntOffset;}else if(addFloatOffset){this._timelineArray[timelineOffset+4]=frameFloatArrayLength-this._animation.frameFloatOffset;}else {this._timelineArray[timelineOffset+4]=0;}this._timeline=timeline;timeline.type=type;timeline.offset=timelineOffset;if(keyFrameCount===1){timeline.frameIndicesOffset=-1;this._timelineArray[timelineOffset+5+0]=frameParser.call(this,rawFrames[0],0,0)-this._animation.frameOffset;}else {var totalFrameCount=this._animation.frameCount+1;var frameIndices=this._data.frameIndices;var frameIndicesOffset=0;if(dragonBones.DragonBones.webAssembly){frameIndicesOffset=frameIndices.size();frameIndices.resize(frameIndicesOffset+totalFrameCount,0);}else {frameIndicesOffset=frameIndices.length;frameIndices.length+=totalFrameCount;}timeline.frameIndicesOffset=frameIndicesOffset;for(var i=0,iK=0,frameStart=0,frameCount=0;i0){if(dragonBones.DataParser.CURVE in rawData){var sampleCount=frameCount+1;this._helpArray.length=sampleCount;this._samplingEasingCurve(rawData[dragonBones.DataParser.CURVE],this._helpArray);this._frameArray.length+=1+1+this._helpArray.length;this._frameArray[frameOffset+1]=2;this._frameArray[frameOffset+2]=sampleCount;for(var i=0;i0){var slotCount=this._armature.sortedSlots.length;var unchanged=new Array(slotCount-rawZOrder.length/2);var zOrders=new Array(slotCount);for(var i_1=0;i_10?rotation>=this._prevRotation:rotation<=this._prevRotation){this._prevClockwise=this._prevClockwise>0?this._prevClockwise-1:this._prevClockwise+1;}rotation=this._prevRotation+rotation-this._prevRotation+dragonBones.Transform.PI_D*this._prevClockwise;}}this._prevClockwise=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.TWEEN_ROTATE,0.0);this._prevRotation=rotation;var frameOffset=this._parseTweenFrame(rawData,frameStart,frameCount);var frameFloatOffset=this._frameFloatArray.length;this._frameFloatArray.length+=6;this._frameFloatArray[frameFloatOffset++]=this._helpTransform.x;this._frameFloatArray[frameFloatOffset++]=this._helpTransform.y;this._frameFloatArray[frameFloatOffset++]=rotation;this._frameFloatArray[frameFloatOffset++]=this._helpTransform.skew;this._frameFloatArray[frameFloatOffset++]=this._helpTransform.scaleX;this._frameFloatArray[frameFloatOffset++]=this._helpTransform.scaleY;this._parseActionDataInFrame(rawData,frameStart,this._bone,this._slot);return frameOffset;};ObjectDataParser.prototype._parseBoneTranslateFrame=function(rawData,frameStart,frameCount){var frameOffset=this._parseTweenFrame(rawData,frameStart,frameCount);var frameFloatOffset=this._frameFloatArray.length;this._frameFloatArray.length+=2;this._frameFloatArray[frameFloatOffset++]=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.X,0.0);this._frameFloatArray[frameFloatOffset++]=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.Y,0.0);return frameOffset;};ObjectDataParser.prototype._parseBoneRotateFrame=function(rawData,frameStart,frameCount){var rotation=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.ROTATE,0.0)*dragonBones.Transform.DEG_RAD;if(frameStart!==0){if(this._prevClockwise===0){rotation=this._prevRotation+dragonBones.Transform.normalizeRadian(rotation-this._prevRotation);}else {if(this._prevClockwise>0?rotation>=this._prevRotation:rotation<=this._prevRotation){this._prevClockwise=this._prevClockwise>0?this._prevClockwise-1:this._prevClockwise+1;}rotation=this._prevRotation+rotation-this._prevRotation+dragonBones.Transform.PI_D*this._prevClockwise;}}this._prevClockwise=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.CLOCK_WISE,0);this._prevRotation=rotation;var frameOffset=this._parseTweenFrame(rawData,frameStart,frameCount);var frameFloatOffset=this._frameFloatArray.length;this._frameFloatArray.length+=2;this._frameFloatArray[frameFloatOffset++]=rotation;this._frameFloatArray[frameFloatOffset++]=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.SKEW,0.0)*dragonBones.Transform.DEG_RAD;return frameOffset;};ObjectDataParser.prototype._parseBoneScaleFrame=function(rawData,frameStart,frameCount){var frameOffset=this._parseTweenFrame(rawData,frameStart,frameCount);var frameFloatOffset=this._frameFloatArray.length;this._frameFloatArray.length+=2;this._frameFloatArray[frameFloatOffset++]=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.X,1.0);this._frameFloatArray[frameFloatOffset++]=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.Y,1.0);return frameOffset;};ObjectDataParser.prototype._parseSurfaceFrame=function(rawData,frameStart,frameCount){var frameFloatOffset=this._frameFloatArray.length;var frameOffset=this._parseTweenFrame(rawData,frameStart,frameCount);var rawVertices=rawData[dragonBones.DataParser.VERTICES];var offset=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.OFFSET,0);var vertexCount=this._surface.vertices.length/2;var x=0.0;var y=0.0;this._frameFloatArray.length+=vertexCount*2;for(var i=0;i=rawVertices.length){x=0.0;}else {x=rawVertices[i-offset];}if(i+1=rawVertices.length){y=0.0;}else {y=rawVertices[i+1-offset];}this._frameFloatArray[frameFloatOffset+i]=x;this._frameFloatArray[frameFloatOffset+i+1]=y;}if(frameStart===0){var frameIntOffset=this._frameIntArray.length;this._frameIntArray.length+=1+1+1+1+1;this._frameIntArray[frameIntOffset+0]=0;this._frameIntArray[frameIntOffset+1]=this._frameFloatArray.length-frameFloatOffset;this._frameIntArray[frameIntOffset+2]=this._frameFloatArray.length-frameFloatOffset;this._frameIntArray[frameIntOffset+3]=0;this._frameIntArray[frameIntOffset+4]=frameFloatOffset-this._animation.frameFloatOffset;this._timelineArray[this._timeline.offset+3]=frameIntOffset-this._animation.frameIntOffset;}return frameOffset;};ObjectDataParser.prototype._parseSlotDisplayFrame=function(rawData,frameStart,frameCount){var frameOffset=this._parseFrame(rawData,frameStart,frameCount);this._frameArray.length+=1;if(dragonBones.DataParser.VALUE in rawData){this._frameArray[frameOffset+1]=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.VALUE,0);}else {this._frameArray[frameOffset+1]=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.DISPLAY_INDEX,0);}this._parseActionDataInFrame(rawData,frameStart,this._slot.parent,this._slot);return frameOffset;};ObjectDataParser.prototype._parseSlotColorFrame=function(rawData,frameStart,frameCount){var frameOffset=this._parseTweenFrame(rawData,frameStart,frameCount);var colorOffset=-1;if(dragonBones.DataParser.VALUE in rawData||dragonBones.DataParser.COLOR in rawData){var rawColor=dragonBones.DataParser.VALUE in rawData?rawData[dragonBones.DataParser.VALUE]:rawData[dragonBones.DataParser.COLOR];for(var k in rawColor){this._parseColorTransform(rawColor,this._helpColorTransform);colorOffset=this._intArray.length;this._intArray.length+=8;this._intArray[colorOffset++]=Math.round(this._helpColorTransform.alphaMultiplier*100);this._intArray[colorOffset++]=Math.round(this._helpColorTransform.redMultiplier*100);this._intArray[colorOffset++]=Math.round(this._helpColorTransform.greenMultiplier*100);this._intArray[colorOffset++]=Math.round(this._helpColorTransform.blueMultiplier*100);this._intArray[colorOffset++]=Math.round(this._helpColorTransform.alphaOffset);this._intArray[colorOffset++]=Math.round(this._helpColorTransform.redOffset);this._intArray[colorOffset++]=Math.round(this._helpColorTransform.greenOffset);this._intArray[colorOffset++]=Math.round(this._helpColorTransform.blueOffset);colorOffset-=8;break;}}if(colorOffset<0){if(this._defaultColorOffset<0){this._defaultColorOffset=colorOffset=this._intArray.length;this._intArray.length+=8;this._intArray[colorOffset++]=100;this._intArray[colorOffset++]=100;this._intArray[colorOffset++]=100;this._intArray[colorOffset++]=100;this._intArray[colorOffset++]=0;this._intArray[colorOffset++]=0;this._intArray[colorOffset++]=0;this._intArray[colorOffset++]=0;}colorOffset=this._defaultColorOffset;}var frameIntOffset=this._frameIntArray.length;this._frameIntArray.length+=1;this._frameIntArray[frameIntOffset]=colorOffset;return frameOffset;};ObjectDataParser.prototype._parseSlotFFDFrame=function(rawData,frameStart,frameCount){var frameFloatOffset=this._frameFloatArray.length;var frameOffset=this._parseTweenFrame(rawData,frameStart,frameCount);var rawVertices=dragonBones.DataParser.VERTICES in rawData?rawData[dragonBones.DataParser.VERTICES]:null;var offset=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.OFFSET,0);var vertexCount=this._intArray[this._mesh.vertices.offset+0];var meshName=this._mesh.parent.name+"_"+this._slot.name+"_"+this._mesh.name;var weight=this._mesh.vertices.weight;var x=0.0;var y=0.0;var iB=0;var iV=0;if(weight!==null){var rawSlotPose=this._weightSlotPose[meshName];this._helpMatrixA.copyFromArray(rawSlotPose,0);this._frameFloatArray.length+=weight.count*2;iB=weight.offset+2+weight.bones.length;}else {this._frameFloatArray.length+=vertexCount*2;}for(var i=0;i=rawVertices.length){x=0.0;}else {x=rawVertices[i-offset];}if(i+1=rawVertices.length){y=0.0;}else {y=rawVertices[i+1-offset];}}if(weight!==null){var rawBonePoses=this._weightBonePoses[meshName];var vertexBoneCount=this._intArray[iB++];this._helpMatrixA.transformPoint(x,y,this._helpPoint,true);x=this._helpPoint.x;y=this._helpPoint.y;for(var j=0;j=0||dragonBones.DataParser.DATA_VERSIONS.indexOf(compatibleVersion)>=0){var data=dragonBones.BaseObject.borrowObject(dragonBones.DragonBonesData);data.version=version;data.name=ObjectDataParser._getString(rawData,dragonBones.DataParser.NAME,"");data.frameRate=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.FRAME_RATE,24);if(data.frameRate===0){data.frameRate=24;}if(dragonBones.DataParser.ARMATURE in rawData){this._data=data;this._parseArray(rawData);var rawArmatures=rawData[dragonBones.DataParser.ARMATURE];for(var _i=0,rawArmatures_1=rawArmatures;_i0){data.stage=data.getArmature(data.armatureNames[0]);}this._data=null;}if(dragonBones.DataParser.TEXTURE_ATLAS in rawData){this._rawTextureAtlases=rawData[dragonBones.DataParser.TEXTURE_ATLAS];}return data;}else {console.assert(false,"Nonsupport data version: "+version+"\n"+"Please convert DragonBones data to support version.\n"+"Read more: https://github.com/DragonBones/Tools/");}return null;};ObjectDataParser.prototype.parseTextureAtlasData=function(rawData,textureAtlasData,scale){if(scale===void 0){scale=1.0;}console.assert(rawData!==undefined);if(rawData===null){if(this._rawTextureAtlases===null||this._rawTextureAtlases.length===0){return false;}var rawTextureAtlas=this._rawTextureAtlases[this._rawTextureAtlasIndex++];this.parseTextureAtlasData(rawTextureAtlas,textureAtlasData,scale);if(this._rawTextureAtlasIndex>=this._rawTextureAtlases.length){this._rawTextureAtlasIndex=0;this._rawTextureAtlases=null;}return true;}textureAtlasData.width=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.WIDTH,0);textureAtlasData.height=ObjectDataParser._getNumber(rawData,dragonBones.DataParser.HEIGHT,0);textureAtlasData.scale=scale===1.0?1.0/ObjectDataParser._getNumber(rawData,dragonBones.DataParser.SCALE,1.0):scale;textureAtlasData.name=ObjectDataParser._getString(rawData,dragonBones.DataParser.NAME,"");textureAtlasData.imagePath=ObjectDataParser._getString(rawData,dragonBones.DataParser.IMAGE_PATH,"");if(dragonBones.DataParser.SUB_TEXTURE in rawData){var rawTextures=rawData[dragonBones.DataParser.SUB_TEXTURE];for(var i=0,l=rawTextures.length;i0.0&&frameHeight>0.0){textureData.frame=dragonBones.TextureData.createRectangle();textureData.frame.x=ObjectDataParser._getNumber(rawTexture,dragonBones.DataParser.FRAME_X,0.0);textureData.frame.y=ObjectDataParser._getNumber(rawTexture,dragonBones.DataParser.FRAME_Y,0.0);textureData.frame.width=frameWidth;textureData.frame.height=frameHeight;}textureAtlasData.addTexture(textureData);}}return true;};ObjectDataParser.getInstance=function(){if(ObjectDataParser._objectDataParserInstance===null){ObjectDataParser._objectDataParserInstance=new ObjectDataParser();}return ObjectDataParser._objectDataParserInstance;};ObjectDataParser._objectDataParserInstance=null;return ObjectDataParser;}(dragonBones.DataParser);dragonBones.ObjectDataParser=ObjectDataParser;var ActionFrame=function(){function ActionFrame(){this.frameStart=0;this.actions=[];}return ActionFrame;}();dragonBones.ActionFrame=ActionFrame;})(dragonBones||(dragonBones={}));(function(dragonBones){var BinaryDataParser=function(_super){__extends(BinaryDataParser,_super);function BinaryDataParser(){return _super!==null&&_super.apply(this,arguments)||this;}BinaryDataParser.prototype._inRange=function(a,min,max){return min<=a&&a<=max;};BinaryDataParser.prototype._decodeUTF8=function(data){var EOF_byte=-1;var EOF_code_point=-1;var FATAL_POINT=0xFFFD;var pos=0;var result="";var code_point;var utf8_code_point=0;var utf8_bytes_needed=0;var utf8_bytes_seen=0;var utf8_lower_boundary=0;while(data.length>pos){var _byte=data[pos++];if(_byte===EOF_byte){if(utf8_bytes_needed!==0){code_point=FATAL_POINT;}else {code_point=EOF_code_point;}}else {if(utf8_bytes_needed===0){if(this._inRange(_byte,0x00,0x7F)){code_point=_byte;}else {if(this._inRange(_byte,0xC2,0xDF)){utf8_bytes_needed=1;utf8_lower_boundary=0x80;utf8_code_point=_byte-0xC0;}else if(this._inRange(_byte,0xE0,0xEF)){utf8_bytes_needed=2;utf8_lower_boundary=0x800;utf8_code_point=_byte-0xE0;}else if(this._inRange(_byte,0xF0,0xF4)){utf8_bytes_needed=3;utf8_lower_boundary=0x10000;utf8_code_point=_byte-0xF0;}else;utf8_code_point=utf8_code_point*Math.pow(64,utf8_bytes_needed);code_point=null;}}else if(!this._inRange(_byte,0x80,0xBF)){utf8_code_point=0;utf8_bytes_needed=0;utf8_bytes_seen=0;utf8_lower_boundary=0;pos--;code_point=_byte;}else {utf8_bytes_seen+=1;utf8_code_point=utf8_code_point+(_byte-0x80)*Math.pow(64,utf8_bytes_needed-utf8_bytes_seen);if(utf8_bytes_seen!==utf8_bytes_needed){code_point=null;}else {var cp=utf8_code_point;var lower_boundary=utf8_lower_boundary;utf8_code_point=0;utf8_bytes_needed=0;utf8_bytes_seen=0;utf8_lower_boundary=0;if(this._inRange(cp,lower_boundary,0x10FFFF)&&!this._inRange(cp,0xD800,0xDFFF)){code_point=cp;}else {code_point=_byte;}}}}if(code_point!==null&&code_point!==EOF_code_point){if(code_point<=0xFFFF){if(code_point>0)result+=String.fromCharCode(code_point);}else {code_point-=0x10000;result+=String.fromCharCode(0xD800+(code_point>>10&0x3ff));result+=String.fromCharCode(0xDC00+(code_point&0x3ff));}}}return result;};BinaryDataParser.prototype._getUTF16Key=function(value){for(var i=0,l=value.length;i255){return encodeURI(value);}}return value;};BinaryDataParser.prototype._parseBinaryTimeline=function(type,offset,timelineData){if(timelineData===void 0){timelineData=null;}var timeline=timelineData!==null?timelineData:dragonBones.BaseObject.borrowObject(dragonBones.TimelineData);timeline.type=type;timeline.offset=offset;this._timeline=timeline;var keyFrameCount=this._timelineArrayBuffer[timeline.offset+2];if(keyFrameCount===1){timeline.frameIndicesOffset=-1;}else {var frameIndicesOffset=0;var totalFrameCount=this._animation.frameCount+1;var frameIndices=this._data.frameIndices;if(dragonBones.DragonBones.webAssembly){frameIndicesOffset=frameIndices.size();frameIndices.resize(frameIndicesOffset+totalFrameCount,0);}else {frameIndicesOffset=frameIndices.length;frameIndices.length+=totalFrameCount;}timeline.frameIndicesOffset=frameIndicesOffset;for(var i=0,iK=0,frameStart=0,frameCount=0;i=0){var weight=dragonBones.BaseObject.borrowObject(dragonBones.WeightData);var vertexCount=this._intArrayBuffer[vertices.offset+0];var boneCount=this._intArrayBuffer[weightOffset+0];weight.offset=weightOffset;for(var i=0;i0){if(dragonBonesName in this._dragonBonesDataMap){dragonBonesData=this._dragonBonesDataMap[dragonBonesName];armatureData=dragonBonesData.getArmature(armatureName);}}if(armatureData===null&&(dragonBonesName.length===0||this.autoSearch)){for(var k in this._dragonBonesDataMap){dragonBonesData=this._dragonBonesDataMap[k];if(dragonBonesName.length===0||dragonBonesData.autoSearch){armatureData=dragonBonesData.getArmature(armatureName);if(armatureData!==null){dragonBonesName=k;break;}}}}if(armatureData!==null){dataPackage.dataName=dragonBonesName;dataPackage.textureAtlasName=textureAtlasName;dataPackage.data=dragonBonesData;dataPackage.armature=armatureData;dataPackage.skin=null;if(skinName.length>0){dataPackage.skin=armatureData.getSkin(skinName);if(dataPackage.skin===null&&this.autoSearch){for(var k in this._dragonBonesDataMap){var skinDragonBonesData=this._dragonBonesDataMap[k];var skinArmatureData=skinDragonBonesData.getArmature(skinName);if(skinArmatureData!==null){dataPackage.skin=skinArmatureData.defaultSkin;break;}}}}if(dataPackage.skin===null){dataPackage.skin=armatureData.defaultSkin;}return true;}return false;};BaseFactory.prototype._buildBones=function(dataPackage,armature){for(var _i=0,_a=dataPackage.armature.sortedBones;_i<_a.length;_i++){var boneData=_a[_i];var bone=dragonBones.BaseObject.borrowObject(boneData.type===0?dragonBones.Bone:dragonBones.Surface);bone.init(boneData,armature);}};BaseFactory.prototype._buildSlots=function(dataPackage,armature){var currentSkin=dataPackage.skin;var defaultSkin=dataPackage.armature.defaultSkin;if(currentSkin===null||defaultSkin===null){return;}var skinSlots={};for(var k in defaultSkin.displays){var displays=defaultSkin.getDisplays(k);skinSlots[k]=displays;}if(currentSkin!==defaultSkin){for(var k in currentSkin.displays){var displays=currentSkin.getDisplays(k);skinSlots[k]=displays;}}for(var _i=0,_a=dataPackage.armature.sortedSlots;_i<_a.length;_i++){var slotData=_a[_i];var displayDatas=slotData.name in skinSlots?skinSlots[slotData.name]:null;var slot=this._buildSlot(dataPackage,slotData,armature);slot.rawDisplayDatas=displayDatas;if(displayDatas!==null){var displayList=new Array();for(var i=0,l=dragonBones.DragonBones.webAssembly?displayDatas.size():displayDatas.length;i0){imageDisplayData.texture=this._getTextureData(dataPackage.textureAtlasName,displayData.path);}if(imageDisplayData.texture===null){imageDisplayData.texture=this._getTextureData(dataName,displayData.path);}if(rawDisplayData!==null&&rawDisplayData.type===2&&this._isSupportMesh()){display=slot.meshDisplay;}else {display=slot.rawDisplay;}break;}case 2:{var meshDisplayData=displayData;if(dataPackage!==null&&dataPackage.textureAtlasName.length>0){meshDisplayData.texture=this._getTextureData(dataPackage.textureAtlasName,meshDisplayData.path);}if(meshDisplayData.texture===null){meshDisplayData.texture=this._getTextureData(dataName,meshDisplayData.path);}if(this._isSupportMesh()){display=slot.meshDisplay;}else {display=slot.rawDisplay;}break;}case 1:{var armatureDisplayData=displayData;var childArmature=this._buildChildArmature(dataPackage,slot,displayData);if(childArmature!==null){childArmature.inheritAnimation=armatureDisplayData.inheritAnimation;if(!childArmature.inheritAnimation){var actions=armatureDisplayData.actions.length>0?armatureDisplayData.actions:childArmature.armatureData.defaultActions;if(actions.length>0){for(var _i=0,actions_6=actions;_i=0){continue;}var displays=skin.getDisplays(slot.name);if(!displays){if(defaultSkin!==null&&skin!==defaultSkin){displays=defaultSkin.getDisplays(slot.name);}if(!displays){if(isOverride){slot.rawDisplayDatas=null;slot.displayList=[];}continue;}}var displayCount=dragonBones.DragonBones.webAssembly?displays.size():displays.length;var displayList=slot.displayList;displayList.length=displayCount;for(var i=0,l=displayCount;i 0 && verticesData.inheritDeform; + var localVertices = this._localVertices; + if (weightData) { + var data = verticesData.data; + var intArray = data.intArray; + var floatArray = data.floatArray; + var vertexCount = intArray[verticesData.offset + BinaryOffset.MeshVertexCount]; + var weightFloatOffset = intArray[weightData.offset + BinaryOffset.WeigthFloatOffset]; + if (weightFloatOffset < 0) { + weightFloatOffset += 65536; + } + for (var i = 0, iB = weightData.offset + BinaryOffset.WeigthBoneIndices + bones.length, iV = weightFloatOffset, iF = 0, lvi = 0; i < vertexCount; i++, lvi += 4) { + var boneCount = intArray[iB++]; + var xG = 0.0; + var yG = 0.0; + for (var j = 0; j < boneCount; ++j) { + var boneIndex = intArray[iB++]; + var bone = bones[boneIndex]; + if (bone !== null) { + var matrix = bone.globalTransformMatrix; + var weight = floatArray[iV++]; + var xL = floatArray[iV++] * scale; + var yL = floatArray[iV++] * scale; + if (hasDeform) { + xL += deformVertices[iF++]; + yL += deformVertices[iF++]; + } + xG += (matrix.a * xL + matrix.c * yL + matrix.tx) * weight; + yG += (matrix.b * xL + matrix.d * yL + matrix.ty) * weight; + } + } + localVertices[lvi] = xG; + localVertices[lvi + 1] = -yG; + } + } else if (hasDeform) { + var isSurface = this._parent._boneData.type !== BoneType.Bone; + var _data = verticesData.data; + var _intArray = _data.intArray; + var _floatArray = _data.floatArray; + var _vertexCount = _intArray[verticesData.offset + BinaryOffset.MeshVertexCount]; + var vertexOffset = _intArray[verticesData.offset + BinaryOffset.MeshFloatOffset]; + if (vertexOffset < 0) { + vertexOffset += 65536; + } + for (var _i2 = 0, l = _vertexCount, _lvi = 0; _i2 < l; _i2++, _lvi += 4) { + var x = _floatArray[vertexOffset + _i2 * 2] * scale + deformVertices[_i2 * 2]; + var y = _floatArray[vertexOffset + _i2 * 2 + 1] * scale + deformVertices[_i2 * 2 + 1]; + if (isSurface) { + var _matrix = this._parent._getGlobalTransformMatrix(x, y); + localVertices[_lvi] = _matrix.a * x + _matrix.c * y + _matrix.tx; + localVertices[_lvi + 1] = -_matrix.b * x + _matrix.d * y + _matrix.ty; + } else { + localVertices[_lvi] = x; + localVertices[_lvi + 1] = -y; + } + } + } + if (weightData) { + this._identityTransform(); + } + }; + _proto._identityTransform = function _identityTransform() { + var m = this._matrix; + m.m00 = 1.0; + m.m01 = 0.0; + m.m04 = -0.0; + m.m05 = -1.0; + m.m12 = 0.0; + m.m13 = 0.0; + this._worldMatrixDirty = true; + }; + _proto._updateTransform = function _updateTransform() { + var m = this._matrix; + m.m00 = this.globalTransformMatrix.a; + m.m01 = this.globalTransformMatrix.b; + m.m04 = -this.globalTransformMatrix.c; + m.m05 = -this.globalTransformMatrix.d; + if (this._childArmature) { + m.m12 = this.globalTransformMatrix.tx; + m.m13 = this.globalTransformMatrix.ty; + } else { + m.m12 = this.globalTransformMatrix.tx - (this.globalTransformMatrix.a * this._pivotX - this.globalTransformMatrix.c * this._pivotY); + m.m13 = this.globalTransformMatrix.ty - (this.globalTransformMatrix.b * this._pivotX - this.globalTransformMatrix.d * this._pivotY); + } + this._worldMatrixDirty = true; + }; + _proto.updateWorldMatrix = function updateWorldMatrix() { + if (!this._armature) return; + var parentSlot = this._armature._parent; + if (parentSlot) { + parentSlot.updateWorldMatrix(); + } + if (this._worldMatrixDirty) { + this.calculWorldMatrix(); + var childArmature = this.childArmature; + if (!childArmature) return; + var slots = childArmature.getSlots(); + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot) { + slot._worldMatrixDirty = true; + } + } + } + }; + _proto._mulMat = function _mulMat(out, a, b) { + var aa = a.m00; + var ab = a.m01; + var ac = a.m04; + var ad = a.m05; + var atx = a.m12; + var aty = a.m13; + var ba = b.m00; + var bb = b.m01; + var bc = b.m04; + var bd = b.m05; + var btx = b.m12; + var bty = b.m13; + if (ab !== 0 || ac !== 0) { + out.m00 = ba * aa + bb * ac; + out.m01 = ba * ab + bb * ad; + out.m04 = bc * aa + bd * ac; + out.m05 = bc * ab + bd * ad; + out.m12 = aa * btx + ac * bty + atx; + out.m13 = ab * btx + ad * bty + aty; + } else { + out.m00 = ba * aa; + out.m01 = bb * ad; + out.m04 = bc * aa; + out.m05 = bd * ad; + out.m12 = aa * btx + atx; + out.m13 = ad * bty + aty; + } + }; + return CCSlot; + }(Slot)) || _class$Q); + + var _dec$Q, _class$P; + var ccclass$l = ccclass$t; + var CCArmatureDisplay = (_dec$Q = ccclass$l('dragonBones.CCArmatureDisplay'), _dec$Q(_class$P = function (_DisplayData) { + _inheritsLoose(CCArmatureDisplay, _DisplayData); + function CCArmatureDisplay() { + var _this; + _this = _DisplayData.call(this) || this; + _this.shouldAdvanced = false; + _this._ccNode = null; + _this._ccComponent = null; + _this._eventTarget = void 0; + _this._armature = null; + _this._eventTarget = new EventTarget(); + return _this; + } + var _proto = CCArmatureDisplay.prototype; + _proto.hasEvent = function hasEvent(type) { + console.warn('Method not implemented.'); + return false; + }; + _proto.addEvent = function addEvent(type, listener, thisObject) { + console.warn('Method not implemented.'); + }; + _proto.removeEvent = function removeEvent(type, listener, thisObject) { + console.warn('Method not implemented.'); + }; + _proto.setEventTarget = function setEventTarget(eventTarget) { + this._eventTarget = eventTarget; + }; + _proto.getRootDisplay = function getRootDisplay() { + var parentSlot = this._armature._parent; + if (!parentSlot) { + return this; + } + var slot; + while (parentSlot) { + slot = parentSlot; + parentSlot = parentSlot._armature._parent; + } + return slot._armature.display; + }; + _proto.convertToRootSpace = function convertToRootSpace(pos) { + var slot = this._armature._parent; + if (!slot) { + return pos; + } + slot.updateWorldMatrix(); + var worldMatrix = slot._worldMatrix; + var newPos = new Vec3(0, 0); + newPos.x = pos.x * worldMatrix.m00 + pos.y * worldMatrix.m04 + worldMatrix.m12; + newPos.y = pos.x * worldMatrix.m01 + pos.y * worldMatrix.m05 + worldMatrix.m13; + return newPos; + }; + _proto.convertToWorldSpace = function convertToWorldSpace(point) { + var _ccNode$_uiProps$uiTr; + var newPos = this.convertToRootSpace(point); + var ccNode = this.getRootNode(); + return ccNode === null || ccNode === void 0 ? void 0 : (_ccNode$_uiProps$uiTr = ccNode._uiProps.uiTransformComp) === null || _ccNode$_uiProps$uiTr === void 0 ? void 0 : _ccNode$_uiProps$uiTr.convertToWorldSpaceAR(newPos); + }; + _proto.getRootNode = function getRootNode() { + var rootDisplay = this.getRootDisplay(); + return rootDisplay && rootDisplay._ccNode; + }; + _proto.dbInit = function dbInit(armature) { + this._armature = armature; + }; + _proto.dbClear = function dbClear() { + this._armature = null; + }; + _proto.dbUpdate = function dbUpdate() { + if (this._ccComponent) { + this._ccComponent.markForUpdateRenderData(); + } + }; + _proto.advanceTimeBySelf = function advanceTimeBySelf(on) { + this.shouldAdvanced = !!on; + }; + _proto.hasDBEventListener = function hasDBEventListener(type) { + return this._eventTarget.hasEventListener(type); + }; + _proto.addDBEventListener = function addDBEventListener(type, listener, target) { + this._eventTarget.on(type, listener, target); + }; + _proto.removeDBEventListener = function removeDBEventListener(type, listener, target) { + this._eventTarget.off(type, listener, target); + }; + _proto.dispatchDBEvent = function dispatchDBEvent(type, eventObject) { + this._eventTarget.emit(type, eventObject); + }; + _createClass(CCArmatureDisplay, [{ + key: "node", + get: function get() { + return this; + } + }]); + return CCArmatureDisplay; + }(DisplayData)) || _class$P); + + var _dec$P, _class$O, _class2$K; + var ccclass$k = ccclass$t; + var CCFactory = (_dec$P = ccclass$k('CCFactory'), _dec$P(_class$O = (_class2$K = function (_BaseFactory) { + _inheritsLoose(CCFactory, _BaseFactory); + CCFactory.getInstance = function getInstance() { + if (!CCFactory._factory) { + CCFactory._factory = new CCFactory(); + } + return CCFactory._factory; + }; + function CCFactory() { + var _this; + _this = _BaseFactory.call(this) || this; + _this.id = void 0; + _this.uuid = void 0; + _this._slots = void 0; + var eventManager = new CCArmatureDisplay(); + _this._dragonBones = new DragonBones(eventManager); + if (director.getScheduler()) { + game.on(Game.EVENT_RESTART, _this.onRestart, _assertThisInitialized(_this)); + _this.initUpdate(); + } + _this.id = _this.uuid = 'CCFactory'; + return _this; + } + var _proto = CCFactory.prototype; + _proto.onRestart = function onRestart() { + CCFactory._factory = null; + }; + _proto.initUpdate = function initUpdate(dt) { + Scheduler.enableForTarget(this); + director.getScheduler().scheduleUpdate(this, System.Priority.HIGH, false); + }; + _proto.update = function update(dt) { + this._dragonBones.advanceTime(dt); + }; + _proto.getDragonBonesDataByRawData = function getDragonBonesDataByRawData(rawData) { + var dataParser = rawData instanceof ArrayBuffer ? BaseFactory._binaryParser : this._dataParser; + return dataParser.parseDragonBonesData(rawData, 1.0); + }; + _proto.buildArmatureDisplay = function buildArmatureDisplay(armatureName, dragonBonesName, skinName, textureAtlasName) { + var armature = this.buildArmature(armatureName, dragonBonesName, skinName, textureAtlasName); + return armature ? armature._display : null; + }; + _proto.createArmatureNode = function createArmatureNode(comp, armatureName, node) { + node = node || new Node$1(); + var display = node.getComponent('dragonBones.ArmatureDisplay'); + if (!display) { + display = node.addComponent('dragonBones.ArmatureDisplay'); + } + node.name = armatureName; + display._armatureName = armatureName; + display._dragonAsset = comp.dragonAsset; + display._dragonAtlasAsset = comp.dragonAtlasAsset; + display._init(); + return display; + }; + _proto._buildTextureAtlasData = function _buildTextureAtlasData(textureAtlasData, textureAtlas) { + if (textureAtlasData) { + textureAtlasData.renderTexture = textureAtlas; + } else { + textureAtlasData = BaseObject.borrowObject(CCTextureAtlasData); + } + return textureAtlasData; + }; + _proto._sortSlots = function _sortSlots() { + var slots = this._slots; + var sortedSlots = []; + for (var i = 0, l = slots.length; i < l; i++) { + var slot = slots[i]; + var zOrder = slot._zOrder; + var inserted = false; + for (var j = sortedSlots.length - 1; j >= 0; j--) { + if (zOrder >= sortedSlots[j]._zOrder) { + sortedSlots.splice(j + 1, 0, slot); + inserted = true; + break; + } + } + if (!inserted) { + sortedSlots.unshift(slot); + } + } + this._slots = sortedSlots; + }; + _proto._buildArmature = function _buildArmature(dataPackage) { + var armature = BaseObject.borrowObject(Armature); + armature._skinData = dataPackage.skin; + armature._animation = BaseObject.borrowObject(Animation); + armature._animation._armature = armature; + armature._animation.animations = dataPackage.armature.animations; + armature._isChildArmature = false; + var display = new CCArmatureDisplay(); + armature.init(dataPackage.armature, display, display, this._dragonBones); + return armature; + }; + _proto._buildSlot = function _buildSlot(dataPackage, slotData, displays) { + var slot = BaseObject.borrowObject(CCSlot); + var display = slot; + slot.init(slotData, displays, display, display); + return slot; + }; + _proto.getDragonBonesDataByUUID = function getDragonBonesDataByUUID(uuid) { + for (var name in this._dragonBonesDataMap) { + if (name.indexOf(uuid) !== -1) { + return this._dragonBonesDataMap[name]; + } + } + return null; + }; + _proto.removeDragonBonesDataByUUID = function removeDragonBonesDataByUUID(uuid, disposeData) { + if (disposeData === undefined) { + disposeData = true; + } + for (var name in this._dragonBonesDataMap) { + if (name.indexOf(uuid) === -1) continue; + if (disposeData) { + this._dragonBones.bufferObject(this._dragonBonesDataMap[name]); + } + delete this._dragonBonesDataMap[name]; + } + }; + return CCFactory; + }(BaseFactory), _class2$K._factory = null, _class2$K)) || _class$O); + + var _class2$J; + var MaxCacheTime$1 = 30; + var FrameTime$1 = 1 / 60; + var _vertices = []; + var _indices = []; + var _boneInfoOffset = 0; + var _indexOffset$1 = 0; + var _vfOffset$1 = 0; + var _preTexUrl = null; + var _preBlendMode = null; + var _segVCount = 0; + var _segICount = 0; + var _segOffset = 0; + var _colorOffset = 0; + var _preColor = 0; + var _x; + var _y; + var PER_VERTEX_SIZE$1 = 5; + var EXPORT_VERTEX_SIZE = 9; + var AnimationCache$1 = function () { + function AnimationCache() { + this.maxVertexCount = 0; + this.maxIndexCount = 0; + this._privateMode = false; + this._inited = false; + this._invalid = true; + this._enableCacheAttachedInfo = false; + this.frames = []; + this.totalTime = 0; + this.isCompleted = false; + this._frameIdx = -1; + this._armatureInfo = null; + this._animationName = null; + this._tempSegments = null; + this._tempColors = null; + this._tempBoneInfos = null; + } + var _proto = AnimationCache.prototype; + _proto.init = function init(armatureInfo, animationName) { + this._inited = true; + this._armatureInfo = armatureInfo; + this._animationName = animationName; + }; + _proto.clear = function clear() { + this._inited = false; + for (var i = 0, n = this.frames.length; i < n; i++) { + var frame = this.frames[i]; + frame.segments.length = 0; + } + this.invalidAllFrame(); + }; + _proto.begin = function begin() { + if (!this._invalid) return; + var armatureInfo = this._armatureInfo; + var curAnimationCache = armatureInfo.curAnimationCache; + if (curAnimationCache && curAnimationCache !== this) { + if (this._privateMode) { + curAnimationCache.invalidAllFrame(); + } else { + curAnimationCache.updateToFrame(); + } + } + var armature = armatureInfo.armature; + var animation = armature.animation; + animation.play(this._animationName, 1); + armatureInfo.curAnimationCache = this; + this._invalid = false; + this._frameIdx = -1; + this.totalTime = 0; + this.isCompleted = false; + }; + _proto.end = function end() { + if (!this._needToUpdate()) { + this._armatureInfo.curAnimationCache = null; + this.frames.length = this._frameIdx + 1; + this.isCompleted = true; + } + }; + _proto._needToUpdate = function _needToUpdate(toFrameIdx) { + var armatureInfo = this._armatureInfo; + var armature = armatureInfo.armature; + var animation = armature.animation; + return !animation.isCompleted && this.totalTime < MaxCacheTime$1 && (toFrameIdx === undefined || this._frameIdx < toFrameIdx); + }; + _proto.updateToFrame = function updateToFrame(toFrameIdx) { + if (!this._inited) return; + this.begin(); + if (!this._needToUpdate(toFrameIdx)) return; + var armatureInfo = this._armatureInfo; + var armature = armatureInfo.armature; + do { + armature.advanceTime(FrameTime$1); + this._frameIdx++; + this.updateFrame(armature, this._frameIdx); + this.totalTime += FrameTime$1; + } while (this._needToUpdate(toFrameIdx)); + this.end(); + }; + _proto.isInited = function isInited() { + return this._inited; + }; + _proto.isInvalid = function isInvalid() { + return this._invalid; + }; + _proto.invalidAllFrame = function invalidAllFrame() { + this.isCompleted = false; + this._invalid = true; + }; + _proto.updateAllFrame = function updateAllFrame() { + this.invalidAllFrame(); + this.updateToFrame(); + }; + _proto.enableCacheAttachedInfo = function enableCacheAttachedInfo() { + if (!this._enableCacheAttachedInfo) { + this._enableCacheAttachedInfo = true; + this.invalidAllFrame(); + } + }; + _proto.updateFrame = function updateFrame(armature, index) { + _vfOffset$1 = 0; + _boneInfoOffset = 0; + _indexOffset$1 = 0; + _preTexUrl = null; + _preBlendMode = null; + _segVCount = 0; + _segICount = 0; + _segOffset = 0; + _colorOffset = 0; + _preColor = 0; + this.frames[index] = this.frames[index] || { + segments: [], + colors: [], + boneInfos: [], + vertices: new Float32Array(), + uintVert: new Uint32Array(), + indices: new Uint16Array() + }; + var frame = this.frames[index]; + var segments = this._tempSegments = frame.segments; + var colors = this._tempColors = frame.colors; + var boneInfos = this._tempBoneInfos = frame.boneInfos; + this._traverseArmature(armature, 1.0); + if (_colorOffset > 0) { + colors[_colorOffset - 1].vfOffset = _vfOffset$1; + } + colors.length = _colorOffset; + boneInfos.length = _boneInfoOffset; + var preSegOffset = _segOffset - 1; + if (preSegOffset >= 0) { + if (_segICount > 0) { + var preSegInfo = segments[preSegOffset]; + preSegInfo.indexCount = _segICount; + preSegInfo.vfCount = _segVCount * EXPORT_VERTEX_SIZE; + preSegInfo.vertexCount = _segVCount; + segments.length = _segOffset; + } else { + segments.length = _segOffset - 1; + } + } + if (segments.length === 0) return; + var vertices = frame.vertices; + var vertexCount = _vfOffset$1 / PER_VERTEX_SIZE$1; + var copyOutVerticeSize = vertexCount * EXPORT_VERTEX_SIZE; + if (!vertices || vertices.length < _vfOffset$1) { + vertices = frame.vertices = new Float32Array(copyOutVerticeSize); + } + var colorI32; + for (var i = 0, j = 0; i < copyOutVerticeSize;) { + vertices[i] = _vertices[j++]; + vertices[i + 1] = _vertices[j++]; + vertices[i + 3] = _vertices[j++]; + vertices[i + 4] = _vertices[j++]; + colorI32 = _vertices[j++]; + vertices[i + 5] = (colorI32 & 0xff) / 255.0; + vertices[i + 6] = (colorI32 >> 8 & 0xff) / 255.0; + vertices[i + 7] = (colorI32 >> 16 & 0xff) / 255.0; + vertices[i + 8] = (colorI32 >> 24 & 0xff) / 255.0; + i += EXPORT_VERTEX_SIZE; + } + var indices = frame.indices; + if (!indices || indices.length < _indexOffset$1) { + indices = frame.indices = new Uint16Array(_indexOffset$1); + } + for (var _i = 0; _i < _indexOffset$1; _i++) { + indices[_i] = _indices[_i]; + } + frame.vertices = vertices; + frame.indices = indices; + this.maxVertexCount = vertexCount > this.maxVertexCount ? vertexCount : this.maxVertexCount; + this.maxIndexCount = indices.length > this.maxIndexCount ? indices.length : this.maxIndexCount; + }; + _proto._traverseArmature = function _traverseArmature(armature, parentOpacity) { + var colors = this._tempColors; + var segments = this._tempSegments; + var boneInfos = this._tempBoneInfos; + var slots = armature._slots; + var slotVertices; + var slotIndices; + var slot; + var slotMatrix; + var slotColor; + var colorVal; + var texture; + var preSegOffset; + var preSegInfo; + var bones = armature._bones; + if (this._enableCacheAttachedInfo) { + for (var i = 0, l = bones.length; i < l; i++, _boneInfoOffset++) { + var bone = bones[i]; + var boneInfo = boneInfos[_boneInfoOffset]; + if (!boneInfo) { + boneInfo = boneInfos[_boneInfoOffset] = { + globalTransformMatrix: new Matrix() + }; + } + var boneMat = bone.globalTransformMatrix; + var cacheBoneMat = boneInfo.globalTransformMatrix; + cacheBoneMat.copyFrom(boneMat); + } + } + for (var _i2 = 0, _l = slots.length; _i2 < _l; _i2++) { + slot = slots[_i2]; + if (!slot._visible || !slot._displayData) continue; + slot.updateWorldMatrix(); + slotColor = slot._color; + if (slot.childArmature) { + this._traverseArmature(slot.childArmature, parentOpacity * slotColor.a / 255); + continue; + } + texture = slot.getTexture(); + if (!texture) continue; + if (_preTexUrl !== texture.nativeUrl || _preBlendMode !== slot._blendMode) { + _preTexUrl = texture.nativeUrl; + _preBlendMode = slot._blendMode; + preSegOffset = _segOffset - 1; + if (preSegOffset >= 0) { + if (_segICount > 0) { + preSegInfo = segments[preSegOffset]; + preSegInfo.indexCount = _segICount; + preSegInfo.vertexCount = _segVCount; + preSegInfo.vfCount = _segVCount * EXPORT_VERTEX_SIZE; + } else { + _segOffset--; + } + } + segments[_segOffset] = { + tex: texture, + blendMode: slot._blendMode, + indexCount: 0, + vertexCount: 0, + vfCount: 0 + }; + _segOffset++; + _segICount = 0; + _segVCount = 0; + } + colorVal = (slotColor.a * parentOpacity << 24 >>> 0) + (slotColor.b << 16) + (slotColor.g << 8) + slotColor.r; + if (_preColor !== colorVal) { + _preColor = colorVal; + if (_colorOffset > 0) { + colors[_colorOffset - 1].vfOffset = _vfOffset$1; + } + colors[_colorOffset++] = { + r: slotColor.r, + g: slotColor.g, + b: slotColor.b, + a: slotColor.a * parentOpacity, + vfOffset: 0 + }; + } + slotVertices = slot._localVertices; + slotIndices = slot._indices; + slotMatrix = slot._worldMatrix; + for (var j = 0, vl = slotVertices.length; j < vl;) { + _x = slotVertices[j++]; + _y = slotVertices[j++]; + _vertices[_vfOffset$1++] = _x * slotMatrix.m00 + _y * slotMatrix.m04 + slotMatrix.m12; + _vertices[_vfOffset$1++] = _x * slotMatrix.m01 + _y * slotMatrix.m05 + slotMatrix.m13; + _vertices[_vfOffset$1++] = slotVertices[j++]; + _vertices[_vfOffset$1++] = slotVertices[j++]; + _vertices[_vfOffset$1++] = colorVal; + } + for (var ii = 0, il = slotIndices.length; ii < il; ii++) { + _indices[_indexOffset$1++] = _segVCount + slotIndices[ii]; + } + _segICount += slotIndices.length; + _segVCount += slotVertices.length / 4; + } + }; + return AnimationCache; + }(); + var ArmatureCache = function () { + function ArmatureCache() { + this._privateMode = false; + this._animationPool = {}; + this._armatureCache = {}; + } + var _proto2 = ArmatureCache.prototype; + _proto2.enablePrivateMode = function enablePrivateMode() { + this._privateMode = true; + }; + _proto2.dispose = function dispose() { + for (var _key in this._armatureCache) { + var armatureInfo = this._armatureCache[_key]; + if (armatureInfo) { + var armature = armatureInfo.armature; + if (armature) armature.dispose(); + } + } + this._armatureCache = {}; + this._animationPool = {}; + }; + _proto2._removeArmature = function _removeArmature(armatureKey) { + var armatureInfo = this._armatureCache[armatureKey]; + var animationsCache = armatureInfo.animationsCache; + for (var aniKey in animationsCache) { + var animationCache = animationsCache[aniKey]; + if (!animationCache) continue; + this._animationPool[armatureKey + "#" + aniKey] = animationCache; + animationCache.clear(); + } + var armature = armatureInfo.armature; + if (armature) armature.dispose(); + delete this._armatureCache[armatureKey]; + }; + _proto2.resetArmature = function resetArmature(uuid) { + for (var armatureKey in this._armatureCache) { + if (armatureKey.indexOf(uuid) === -1) continue; + this._removeArmature(armatureKey); + } + }; + _proto2.getArmatureCache = function getArmatureCache(armatureName, armatureKey, atlasUUID) { + var armatureInfo = this._armatureCache[armatureKey]; + var armature; + if (!armatureInfo) { + var factory = CCFactory.getInstance(); + var proxy = factory.buildArmatureDisplay(armatureName, armatureKey, '', atlasUUID); + if (!proxy || !proxy._armature) return null; + armature = proxy._armature; + if (!ArmatureCache.canCache(armature)) { + armature.dispose(); + return null; + } + this._armatureCache[armatureKey] = { + armature: armature, + animationsCache: {}, + curAnimationCache: null + }; + } else { + armature = armatureInfo.armature; + } + return armature; + }; + _proto2.getAnimationCache = function getAnimationCache(armatureKey, animationName) { + var armatureInfo = this._armatureCache[armatureKey]; + if (!armatureInfo) return null; + var animationsCache = armatureInfo.animationsCache; + return animationsCache[animationName]; + }; + _proto2.initAnimationCache = function initAnimationCache(armatureKey, animationName) { + if (!animationName) return null; + var armatureInfo = this._armatureCache[armatureKey]; + var armature = armatureInfo && armatureInfo.armature; + if (!armature) return null; + var animation = armature.animation; + var hasAni = animation.hasAnimation(animationName); + if (!hasAni) return null; + var animationsCache = armatureInfo.animationsCache; + var animationCache = animationsCache[animationName]; + if (!animationCache) { + var poolKey = armatureKey + "#" + animationName; + animationCache = this._animationPool[poolKey]; + if (animationCache) { + delete this._animationPool[poolKey]; + } else { + animationCache = new AnimationCache$1(); + animationCache._privateMode = this._privateMode; + } + animationCache.init(armatureInfo, animationName); + animationsCache[animationName] = animationCache; + } + return animationCache; + }; + _proto2.invalidAnimationCache = function invalidAnimationCache(armatureKey) { + var armatureInfo = this._armatureCache[armatureKey]; + var armature = armatureInfo && armatureInfo.armature; + if (!armature) return; + var animationsCache = armatureInfo.animationsCache; + for (var aniKey in animationsCache) { + var animationCache = animationsCache[aniKey]; + animationCache.invalidAllFrame(); + } + }; + _proto2.updateAnimationCache = function updateAnimationCache(armatureKey, animationName) { + if (animationName) { + var animationCache = this.initAnimationCache(armatureKey, animationName); + if (!animationCache) return; + animationCache.updateAllFrame(); + } else { + var armatureInfo = this._armatureCache[armatureKey]; + var armature = armatureInfo && armatureInfo.armature; + if (!armature) return; + var animationsCache = armatureInfo.animationsCache; + for (var aniKey in animationsCache) { + var _animationCache = animationsCache[aniKey]; + _animationCache.updateAllFrame(); + } + } + }; + ArmatureCache.canCache = function canCache(armature) { + var slots = armature._slots; + for (var i = 0, l = slots.length; i < l; i++) { + var slot = slots[i]; + if (slot.childArmature) { + return false; + } + } + return true; + }; + return ArmatureCache; + }(); + _class2$J = ArmatureCache; + ArmatureCache.FrameTime = FrameTime$1; + ArmatureCache.sharedCache = new _class2$J(); + + var _dec$O, _class$N, _class2$I, _initializer$G; + var ccclass$j = ccclass$t, + serializable$4 = serializable$9; + var DragonBonesAsset = (_dec$O = ccclass$j('dragonBones.DragonBonesAsset'), _dec$O(_class$N = (_class2$I = function (_Asset) { + _inheritsLoose(DragonBonesAsset, _Asset); + function DragonBonesAsset() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Asset.call.apply(_Asset, [this].concat(args)) || this; + _this._dragonBonesJson = _initializer$G && _initializer$G(); + _this._factory = null; + _this._dragonBonesJsonData = void 0; + _this._armaturesEnum = null; + return _this; + } + var _proto = DragonBonesAsset.prototype; + _proto.constructctor = function constructctor() { + this.reset(); + }; + _proto.createNode = function createNode(callback) { + var node = new Node$1(this.name); + var armatureDisplay = node.addComponent('dragonBones.ArmatureDisplay'); + armatureDisplay.dragonAsset = this; + return callback(null, node); + }; + _proto.reset = function reset() { + this._clear(); + }; + _proto.init = function init(factory, atlasUUID) { + this._factory = factory || CCFactory.getInstance(); + if (!this._dragonBonesJsonData && this.dragonBonesJson) { + this._dragonBonesJsonData = JSON.parse(this.dragonBonesJson); + } + var rawData = null; + if (this._dragonBonesJsonData) { + rawData = this._dragonBonesJsonData; + } else { + rawData = this._nativeAsset; + } + if (!this._uuid) { + var dbData = this._factory.getDragonBonesDataByRawData(rawData); + if (dbData) { + this._uuid = dbData.name; + } else { + console.warn('dragonbones name is empty'); + } + } + var armatureKey = this._uuid + "#" + atlasUUID; + var dragonBonesData = this._factory.getDragonBonesData(armatureKey); + if (dragonBonesData) return armatureKey; + this._factory.parseDragonBonesData(rawData instanceof ArrayBuffer ? rawData : rawData.buffer instanceof ArrayBuffer ? rawData.buffer : rawData, armatureKey); + return armatureKey; + }; + _proto.getArmatureEnum = function getArmatureEnum() { + if (this._armaturesEnum) { + return this._armaturesEnum; + } + this.init(); + var dragonBonesData = this._factory.getDragonBonesDataByUUID(this._uuid); + if (dragonBonesData) { + var armatureNames = dragonBonesData.armatureNames; + var enumDef = {}; + for (var i = 0; i < armatureNames.length; i++) { + var name = armatureNames[i]; + enumDef[name] = i; + } + return this._armaturesEnum = Enum(enumDef); + } + return null; + }; + _proto.getAnimsEnum = function getAnimsEnum(armatureName) { + this.init(); + var dragonBonesData = this._factory.getDragonBonesDataByUUID(this._uuid); + if (dragonBonesData) { + var armature = dragonBonesData.getArmature(armatureName); + if (!armature) { + return null; + } + var enumDef = { + '': 0 + }; + var anims = armature.animations; + var i = 0; + for (var animName in anims) { + if (anims.hasOwnProperty(animName)) { + enumDef[animName] = i + 1; + i++; + } + } + return Enum(enumDef); + } + return null; + }; + _proto.destroy = function destroy() { + this._clear(); + return _Asset.prototype.destroy.call(this); + }; + _proto._clear = function _clear() { + if (this._factory) { + ArmatureCache.sharedCache.resetArmature(this._uuid); + this._factory.removeDragonBonesDataByUUID(this._uuid, true); + } + }; + _createClass(DragonBonesAsset, [{ + key: "dragonBonesJson", + get: function get() { + return this._dragonBonesJson; + }, + set: function set(value) { + this._dragonBonesJson = value; + this._dragonBonesJsonData = JSON.parse(value); + this.reset(); + } + }]); + return DragonBonesAsset; + }(Asset), (_initializer$G = applyDecoratedInitializer(_class2$I.prototype, "_dragonBonesJson", [serializable$4], function () { + return ''; + })), _class2$I)) || _class$N); + legacyCC.internal.DragonBonesAsset = DragonBonesAsset; + + var _dec$N, _dec2$H, _class$M, _class2$H, _initializer$F, _initializer2$B, _initializer3$u, _initializer4$r; + var ccclass$i = ccclass$t, + serializable$3 = serializable$9, + type$5 = type$8; + var DragonBonesAtlasAsset = (_dec$N = ccclass$i('dragonBones.DragonBonesAtlasAsset'), _dec2$H = type$5(Texture2D), _dec$N(_class$M = (_class2$H = function (_Asset) { + _inheritsLoose(DragonBonesAtlasAsset, _Asset); + function DragonBonesAtlasAsset() { + var _this; + _this = _Asset.call(this) || this; + _this._atlasJson = _initializer$F && _initializer$F(); + _this._texture = _initializer2$B && _initializer2$B(); + _this._atlasJsonData = _initializer3$u && _initializer3$u(); + _this._factory = null; + _this._textureAtlasData = _initializer4$r && _initializer4$r(); + _this._clear(); + return _this; + } + var _proto = DragonBonesAtlasAsset.prototype; + _proto.createNode = function createNode(callback) { + var node = new Node$1(this.name); + var armatureDisplay = node.addComponent('dragonBones.ArmatureDisplay'); + armatureDisplay.dragonAtlasAsset = this; + return callback(null, node); + }; + _proto.init = function init(factory) { + this._factory = factory; + if (!this._atlasJsonData) { + this._atlasJsonData = JSON.parse(this.atlasJson); + } + var atlasJsonObj = this._atlasJsonData; + this._uuid = this._uuid || atlasJsonObj.name; + if (this._textureAtlasData) { + factory.addTextureAtlasData(this._textureAtlasData, this._uuid); + } else { + this._textureAtlasData = factory.parseTextureAtlasData(atlasJsonObj, this.texture, this._uuid); + } + }; + _proto.destroy = function destroy() { + this._clear(); + return _Asset.prototype.destroy.call(this); + }; + _proto._clear = function _clear() { + if (this._factory) { + ArmatureCache.sharedCache.resetArmature(this._uuid); + this._factory.removeTextureAtlasData(this._uuid, true); + this._factory.removeDragonBonesDataByUUID(this._uuid, true); + } + this._textureAtlasData = null; + }; + _createClass(DragonBonesAtlasAsset, [{ + key: "atlasJson", + get: function get() { + return this._atlasJson; + }, + set: function set(value) { + this._atlasJson = value; + this._atlasJsonData = JSON.parse(this.atlasJson); + this._clear(); + } + }, { + key: "texture", + get: function get() { + return this._texture; + }, + set: function set(value) { + this._texture = value; + this._clear(); + } + }]); + return DragonBonesAtlasAsset; + }(Asset), (_initializer$F = applyDecoratedInitializer(_class2$H.prototype, "_atlasJson", [serializable$3], function () { + return ''; + }), _initializer2$B = applyDecoratedInitializer(_class2$H.prototype, "_texture", [serializable$3, _dec2$H], function () { + return null; + }), _initializer3$u = applyDecoratedInitializer(_class2$H.prototype, "_atlasJsonData", [serializable$3], function () { + return {}; + }), _initializer4$r = applyDecoratedInitializer(_class2$H.prototype, "_textureAtlasData", [serializable$3], function () { + return null; + })), _class2$H)) || _class$M); + legacyCC.internal.DragonBonesAtlasAsset = DragonBonesAtlasAsset; + + var _dec$M, _class$L; + var _tempMat4 = new Mat4(); + var ccclass$h = ccclass$t; + var AttachUtil$1 = (_dec$M = ccclass$h('dragonBones.AttachUtil'), _dec$M(_class$L = function () { + function AttachUtil() { + this._inited = false; + this._armature = null; + this._armatureNode = null; + this._armatureDisplay = null; + } + var _proto = AttachUtil.prototype; + _proto.init = function init(armatureDisplay) { + this._inited = true; + this._armature = armatureDisplay._armature; + this._armatureNode = armatureDisplay.node; + this._armatureDisplay = armatureDisplay; + }; + _proto.reset = function reset() { + this._inited = false; + this._armature = null; + this._armatureNode = null; + this._armatureDisplay = null; + }; + _proto._syncAttachedNode = function _syncAttachedNode() { + if (!this._inited) return; + this._armatureNode.worldMatrix; + var boneInfos = null; + var isCached = this._armatureDisplay.isAnimationCached(); + if (isCached && this._armatureDisplay) { + boneInfos = this._armatureDisplay._curFrame && this._armatureDisplay._curFrame.boneInfos; + if (!boneInfos) return; + } + var sockets = this._armatureDisplay.sockets; + var socketNodes = this._armatureDisplay.socketNodes; + var matrixHandle = function matrixHandle(node, boneMat) { + var tm = _tempMat4; + tm.m00 = boneMat.a; + tm.m01 = boneMat.b; + tm.m04 = -boneMat.c; + tm.m05 = -boneMat.d; + tm.m12 = boneMat.tx; + tm.m13 = boneMat.ty; + node.matrix = _tempMat4; + }; + var bones = this._armature.getBones(); + for (var l = sockets.length - 1; l >= 0; l--) { + var sock = sockets[l]; + var boneNode = sock.target; + if (!boneNode) continue; + if (!boneNode.isValid) { + socketNodes["delete"](sock.path); + sockets.splice(l, 1); + continue; + } + var bone = isCached ? boneInfos[sock.boneIndex] : bones[sock.boneIndex]; + if (!bone) continue; + matrixHandle(boneNode, bone.globalTransformMatrix); + } + }; + return AttachUtil; + }()) || _class$L); + + var ArmatureSystem = function (_System) { + _inheritsLoose(ArmatureSystem, _System); + function ArmatureSystem() { + var _this; + _this = _System.call(this) || this; + _this._armatures = new Set(); + return _this; + } + ArmatureSystem.getInstance = function getInstance() { + if (!ArmatureSystem._instance) { + ArmatureSystem._instance = new ArmatureSystem(); + director.registerSystem(ArmatureSystem.ID, ArmatureSystem._instance, System.Priority.HIGH); + } + return ArmatureSystem._instance; + }; + var _proto = ArmatureSystem.prototype; + _proto.add = function add(armature) { + if (!armature) return; + if (!this._armatures.has(armature)) { + this._armatures.add(armature); + } + }; + _proto.remove = function remove(armature) { + if (!armature) return; + if (this._armatures.has(armature)) { + this._armatures["delete"](armature); + } + }; + _proto.postUpdate = function postUpdate(dt) { + if (!this._armatures) { + return; + } + this._armatures.forEach(function (armature) { + armature.updateAnimation(dt); + armature.syncAttachedNode(); + }); + }; + _proto.prepareRenderData = function prepareRenderData() { + if (!this._armatures) { + return; + } + this._armatures.forEach(function (armature) { + armature.markForUpdateRenderData(); + }); + }; + return ArmatureSystem; + }(System); + ArmatureSystem.ID = 'ARMATURE'; + ArmatureSystem._instance = void 0; + legacyCC.internal.ArmatureSystem = ArmatureSystem; + + var _dec$L, _dec2$G, _class$K, _class2$G, _initializer$E, _initializer2$A, _dec3$A, _dec4$q, _dec5$p, _dec6$i, _dec7$f, _dec8$a, _dec9$8, _class4$3, _class5$4, _initializer3$t, _initializer4$q, _initializer5$m, _initializer6$i, _initializer7$e, _initializer8$d, _initializer9$b, _initializer10$b, _initializer11$b, _initializer12$a, _initializer13$7, _initializer14$6, _initializer15$5, _initializer16$5, _class6$2; + var DefaultArmaturesEnum; + (function (DefaultArmaturesEnum) { + DefaultArmaturesEnum[DefaultArmaturesEnum["default"] = -1] = "default"; + })(DefaultArmaturesEnum || (DefaultArmaturesEnum = {})); + ccenum(DefaultArmaturesEnum); + var DefaultAnimsEnum$1; + (function (DefaultAnimsEnum) { + DefaultAnimsEnum[DefaultAnimsEnum[""] = 0] = ""; + })(DefaultAnimsEnum$1 || (DefaultAnimsEnum$1 = {})); + ccenum(DefaultAnimsEnum$1); + var DefaultCacheMode; + (function (DefaultCacheMode) { + DefaultCacheMode[DefaultCacheMode["REALTIME"] = 0] = "REALTIME"; + })(DefaultCacheMode || (DefaultCacheMode = {})); + ccenum(DefaultAnimsEnum$1); + var timeScale$1 = 1; + var AnimationCacheMode$1; + (function (AnimationCacheMode) { + AnimationCacheMode[AnimationCacheMode["REALTIME"] = 0] = "REALTIME"; + AnimationCacheMode[AnimationCacheMode["SHARED_CACHE"] = 1] = "SHARED_CACHE"; + AnimationCacheMode[AnimationCacheMode["PRIVATE_CACHE"] = 2] = "PRIVATE_CACHE"; + })(AnimationCacheMode$1 || (AnimationCacheMode$1 = {})); + ccenum(AnimationCacheMode$1); + var ccclass$g = ccclass$t, + serializable$2 = serializable$9, + type$4 = type$8, + override = override$1; + var DragonBoneSocket = (_dec$L = ccclass$g('dragonBones.ArmatureDisplay.DragonBoneSocket'), _dec2$G = type$4(Node$1), _dec$L(_class$K = (_class2$G = function DragonBoneSocket(path, target) { + if (path === void 0) { + path = ''; + } + if (target === void 0) { + target = null; + } + this.path = _initializer$E && _initializer$E(); + this.target = _initializer2$A && _initializer2$A(); + this.boneIndex = null; + this.path = path; + this.target = target; + }, (_initializer$E = applyDecoratedInitializer(_class2$G.prototype, "path", [serializable$2], function () { + return ''; + }), _initializer2$A = applyDecoratedInitializer(_class2$G.prototype, "target", [_dec2$G, serializable$2], function () { + return null; + })), _class2$G)) || _class$K); + setClassAlias(DragonBoneSocket, 'dragonBones.ArmatureDisplay.DragonBoneSocket'); + var ArmatureDisplay = (_dec3$A = ccclass$g('dragonBones.ArmatureDisplay'), _dec4$q = type$4(DragonBonesAsset), _dec5$p = type$4(DragonBonesAtlasAsset), _dec6$i = type$4(DefaultArmaturesEnum), _dec7$f = type$4(DefaultAnimsEnum$1), _dec8$a = type$4([DragonBoneSocket]), _dec9$8 = type$4(Material), _dec3$A(_class4$3 = (_class5$4 = (_class6$2 = function (_UIRenderer) { + _inheritsLoose(ArmatureDisplay, _UIRenderer); + var _proto = ArmatureDisplay.prototype; + _proto.requestDrawInfo = function requestDrawInfo(idx) { + if (!this._drawInfoList[idx]) { + this._drawInfoList[idx] = new RenderDrawInfo(); + } + return this._drawInfoList[idx]; + }; + function ArmatureDisplay() { + var _this; + _this = _UIRenderer.call(this) || this; + _this.playTimes = _initializer3$t && _initializer3$t(); + _this.premultipliedAlpha = _initializer4$q && _initializer4$q(); + _this._armature = null; + _this.attachUtil = void 0; + _this._defaultArmatureIndexValue = _initializer5$m && _initializer5$m(); + _this._dragonAsset = _initializer6$i && _initializer6$i(); + _this._dragonAtlasAsset = _initializer7$e && _initializer7$e(); + _this._armatureName = _initializer8$d && _initializer8$d(); + _this._animationName = _initializer9$b && _initializer9$b(); + _this._animationIndexValue = _initializer10$b && _initializer10$b(); + _this._preCacheMode = -1; + _this._cacheMode = AnimationCacheMode$1.REALTIME; + _this._defaultCacheModeValue = _initializer11$b && _initializer11$b(); + _this._timeScale = _initializer12$a && _initializer12$a(); + _this._playTimes = _initializer13$7 && _initializer13$7(); + _this._debugBones = _initializer14$6 && _initializer14$6(); + _this._enableBatch = _initializer15$5 && _initializer15$5(); + _this._debugDraw = null; + _this._armatureKey = ''; + _this._accTime = 0; + _this._playCount = 0; + _this._frameCache = null; + _this._curFrame = null; + _this._playing = false; + _this._armatureCache = null; + _this._eventTarget = void 0; + _this._factory = null; + _this._displayProxy = null; + _this._drawIdx = 0; + _this._drawList = new RecyclePool(function () { + return { + material: null, + texture: null, + indexOffset: 0, + indexCount: 0 + }; + }, 1); + _this.maxVertexCount = 0; + _this.maxIndexCount = 0; + _this._materialCache = {}; + _this._enumArmatures = Enum({}); + _this._enumAnimations = Enum({}); + _this._socketNodes = new Map(); + _this._cachedSockets = new Map(); + _this._sockets = _initializer16$5 && _initializer16$5(); + _this._inited = void 0; + _this._drawInfoList = []; + _this._cacheModeEnum = void 0; + _this._eventTarget = new EventTarget(); + _this._inited = false; + _this.attachUtil = new AttachUtil$1(); + _this.initFactory(); + setPropertyEnumType(_assertThisInitialized(_this), '_animationIndex', _this._enumAnimations); + setPropertyEnumType(_assertThisInitialized(_this), '_defaultArmatureIndex', _this._enumArmatures); + _this._useVertexOpacity = true; + return _this; + } + _proto.initFactory = function initFactory() { + this._factory = CCFactory.getInstance(); + }; + _proto.onLoad = function onLoad() { + _UIRenderer.prototype.onLoad.call(this); + }; + _proto._requestDrawData = function _requestDrawData(material, texture, indexOffset, indexCount) { + var draw = this._drawList.add(); + draw.material = material; + draw.texture = texture; + draw.indexOffset = indexOffset; + draw.indexCount = indexCount; + return draw; + }; + _proto.destroyRenderData = function destroyRenderData() { + this._drawList.reset(); + _UIRenderer.prototype.destroyRenderData.call(this); + }; + _proto.getMaterialTemplate = function getMaterialTemplate() { + if (this.customMaterial !== null) return this.customMaterial; + if (this.material) return this.material; + this.updateMaterial(); + return this.material; + }; + _proto.getMaterialForBlend = function getMaterialForBlend(src, dst) { + var key = src + "/" + dst; + var inst = this._materialCache[key]; + if (inst) { + return inst; + } + var material = this.getMaterialTemplate(); + var matInfo = { + parent: material, + subModelIdx: 0, + owner: this + }; + inst = new MaterialInstance(matInfo); + inst.recompileShaders({ + TWO_COLORED: false, + USE_LOCAL: false + }); + this._materialCache[key] = inst; + inst.overridePipelineStates({ + blendState: { + targets: [{ + blendSrc: src, + blendDst: dst + }] + } + }); + return inst; + }; + _proto._updateBuiltinMaterial = function _updateBuiltinMaterial() { + var material = builtinResMgr.get('default-spine-material'); + return material; + }; + _proto.updateMaterial = function updateMaterial() { + var mat; + if (this._customMaterial) mat = this._customMaterial;else mat = this._updateBuiltinMaterial(); + this.setSharedMaterial(mat, 0); + this._cleanMaterialCache(); + }; + _proto._render = function _render(batcher) { + var indicesCount = 0; + if (this.renderData && this._drawList) { + var rd = this.renderData; + var chunk = rd.chunk; + var accessor = chunk.vertexAccessor; + var meshBuffer = rd.getMeshBuffer(); + var origin = meshBuffer.indexOffset; + for (var i = 0; i < this._drawList.length; i++) { + this._drawIdx = i; + var dc = this._drawList.data[i]; + if (dc.texture) { + batcher.commitMiddleware(this, meshBuffer, origin + dc.indexOffset, dc.indexCount, dc.texture, dc.material, this._enableBatch); + } + indicesCount += dc.indexCount; + } + var subIndices = rd.indices.subarray(0, indicesCount); + accessor.appendIndices(chunk.bufferId, subIndices); + } + }; + _proto.__preload = function __preload() { + _UIRenderer.prototype.__preload.call(this); + this._init(); + }; + _proto._init = function _init() { + this._cacheMode = this._defaultCacheMode; + if (this._inited) return; + this._inited = true; + this._parseDragonAtlasAsset(); + this._refresh(); + var children = this.node.children; + for (var i = 0, n = children.length; i < n; i++) { + var child = children[i]; + if (child && child.name === 'DEBUG_DRAW_NODE') { + child.destroy(); + } + } + this._updateDebugDraw(); + this._indexBoneSockets(); + this._updateSocketBindings(); + }; + _proto.getArmatureKey = function getArmatureKey() { + return this._armatureKey; + }; + _proto.setAnimationCacheMode = function setAnimationCacheMode(cacheMode) { + if (this._preCacheMode !== cacheMode) { + this._cacheMode = cacheMode; + this._buildArmature(); + if (this._armature && !this.isAnimationCached()) { + this._factory._dragonBones.clock.add(this._armature); + } + this._updateSocketBindings(); + this.markForUpdateRenderData(); + } + }; + _proto.isAnimationCached = function isAnimationCached() { + return this._cacheMode !== AnimationCacheMode$1.REALTIME; + }; + _proto.onEnable = function onEnable() { + _UIRenderer.prototype.onEnable.call(this); + if (this._armature && !this.isAnimationCached()) { + this._factory._dragonBones.clock.add(this._armature); + } + this._flushAssembler(); + ArmatureSystem.getInstance().add(this); + }; + _proto.onDisable = function onDisable() { + _UIRenderer.prototype.onDisable.call(this); + if (this._armature && !this.isAnimationCached()) { + this._factory._dragonBones.clock.remove(this._armature); + } + ArmatureSystem.getInstance().remove(this); + }; + _proto._emitCacheCompleteEvent = function _emitCacheCompleteEvent() { + this._eventTarget.emit(EventObject.LOOP_COMPLETE); + this._eventTarget.emit(EventObject.COMPLETE); + }; + _proto.updateAnimation = function updateAnimation(dt) { + this.markForUpdateRenderData(); + if (!this.isAnimationCached()) return; + if (!this._frameCache) return; + var frameCache = this._frameCache; + if (!frameCache.isInited()) { + return; + } + var frames = frameCache.frames; + if (!this._playing) { + if (frameCache.isInvalid()) { + frameCache.updateToFrame(); + this._curFrame = frames[frames.length - 1]; + if (this.renderData && (this.renderData.vertexCount < frameCache.maxVertexCount || this.renderData.indexCount < frameCache.maxIndexCount)) { + this.maxVertexCount = frameCache.maxVertexCount > this.maxVertexCount ? frameCache.maxVertexCount : this.maxVertexCount; + this.maxIndexCount = frameCache.maxIndexCount > this.maxIndexCount ? frameCache.maxIndexCount : this.maxIndexCount; + this.renderData.resize(this.maxVertexCount, this.maxIndexCount); + if (!this.renderData.indices || this.maxIndexCount > this.renderData.indices.length) { + this.renderData.indices = new Uint16Array(this.maxIndexCount); + } + } + } + return; + } + var frameTime = ArmatureCache.FrameTime; + if (this._accTime === 0 && this._playCount === 0) { + this._eventTarget.emit(EventObject.START); + } + var globalTimeScale = timeScale$1; + this._accTime += dt * this.timeScale * globalTimeScale; + var frameIdx = Math.floor(this._accTime / frameTime); + if (!frameCache.isCompleted) { + frameCache.updateToFrame(frameIdx); + if (this.renderData && (this.renderData.vertexCount < frameCache.maxVertexCount || this.renderData.indexCount < frameCache.maxIndexCount)) { + this.maxVertexCount = frameCache.maxVertexCount > this.maxVertexCount ? frameCache.maxVertexCount : this.maxVertexCount; + this.maxIndexCount = frameCache.maxIndexCount > this.maxIndexCount ? frameCache.maxIndexCount : this.maxIndexCount; + this.renderData.resize(this.maxVertexCount, this.maxIndexCount); + if (!this.renderData.indices || this.maxIndexCount > this.renderData.indices.length) { + this.renderData.indices = new Uint16Array(this.maxIndexCount); + } + } + } + if (frameCache.isCompleted && frameIdx >= frames.length) { + this._playCount++; + if (this.playTimes > 0 && this._playCount >= this.playTimes) { + this._curFrame = frames[frames.length - 1]; + this._accTime = 0; + this._playing = false; + this._playCount = 0; + this._emitCacheCompleteEvent(); + this.attachUtil._syncAttachedNode(); + return; + } + this._accTime = 0; + frameIdx = 0; + this._emitCacheCompleteEvent(); + } + this._curFrame = frames[frameIdx]; + this.attachUtil._syncAttachedNode(); + }; + _proto.onDestroy = function onDestroy() { + this._materialInstances = this._materialInstances.filter(function (instance) { + return !!instance; + }); + this._inited = false; + { + if (this._cacheMode === AnimationCacheMode$1.PRIVATE_CACHE) { + this._armatureCache.dispose(); + this._armatureCache = null; + this._armature = null; + } else if (this._cacheMode === AnimationCacheMode$1.SHARED_CACHE) { + this._armatureCache = null; + this._armature = null; + } else if (this._armature) { + this._armature.dispose(); + this._armature = null; + } + } + this._drawList.destroy(); + _UIRenderer.prototype.onDestroy.call(this); + }; + _proto._updateDebugDraw = function _updateDebugDraw() { + if (this.debugBones) { + if (!this._debugDraw) { + var debugDrawNode = new Node$1('DEBUG_DRAW_NODE'); + debugDrawNode.hideFlags |= CCObject.Flags.DontSave | CCObject.Flags.HideInHierarchy; + var debugDraw = debugDrawNode.addComponent(Graphics); + debugDraw.lineWidth = 1; + debugDraw.strokeColor = new Color$1(255, 0, 0, 255); + this._debugDraw = debugDraw; + } + this._debugDraw.node.parent = this.node; + } else if (this._debugDraw) { + this._debugDraw.node.parent = null; + } + this.markForUpdateRenderData(); + }; + _proto._updateBatch = function _updateBatch() { + this._cleanMaterialCache(); + this.markForUpdateRenderData(); + }; + _proto._buildArmature = function _buildArmature() { + if (!this.dragonAsset || !this.dragonAtlasAsset || !this.armatureName) return; + if (this._armature) { + { + if (this._preCacheMode === AnimationCacheMode$1.PRIVATE_CACHE) { + this._armatureCache.dispose(); + } else if (this._preCacheMode === AnimationCacheMode$1.REALTIME) { + this._armature.dispose(); + } + } + this._armatureCache = null; + this._armature = null; + this._displayProxy = null; + this._frameCache = null; + this._curFrame = null; + this._playing = false; + this._preCacheMode = -1; + } + { + if (this._cacheMode === AnimationCacheMode$1.SHARED_CACHE) { + this._armatureCache = ArmatureCache.sharedCache; + } else if (this._cacheMode === AnimationCacheMode$1.PRIVATE_CACHE) { + this._armatureCache = new ArmatureCache(); + this._armatureCache.enablePrivateMode(); + } + } + var atlasUUID = this.dragonAtlasAsset._uuid; + this._armatureKey = this.dragonAsset.init(this._factory, atlasUUID); + if (this.isAnimationCached()) { + this._armature = this._armatureCache.getArmatureCache(this.armatureName, this._armatureKey, atlasUUID); + if (!this._armature) { + this._cacheMode = AnimationCacheMode$1.REALTIME; + } + } + this._preCacheMode = this._cacheMode; + if (this._cacheMode === AnimationCacheMode$1.REALTIME) { + this._displayProxy = this._factory.buildArmatureDisplay(this.armatureName, this._armatureKey, '', atlasUUID); + if (!this._displayProxy) return; + this._displayProxy._ccNode = this.node; + this._displayProxy._ccComponent = this; + this._displayProxy.setEventTarget(this._eventTarget); + this._armature = this._displayProxy._armature; + this._armature.animation.timeScale = this.timeScale; + } + if (this._cacheMode !== AnimationCacheMode$1.REALTIME && this.debugBones) { + console.warn('Debug bones is invalid in cached mode'); + } + if (this._armature) { + var armatureData = this._armature.armatureData; + var aabb = armatureData.aabb; + this.node._uiProps.uiTransformComp.setContentSize(aabb.width, aabb.height); + } + this.attachUtil.init(this); + if (this.animationName) { + this.playAnimation(this.animationName, this.playTimes); + } + this._flushAssembler(); + }; + _proto.querySockets = function querySockets() { + if (!this._armature) { + return []; + } + if (this._cachedSockets.size === 0) { + this._indexBoneSockets(); + } + return Array.from(this._cachedSockets.keys()).sort(); + }; + _proto.querySocketPathByName = function querySocketPathByName(name) { + var ret = []; + for (var _iterator = _createForOfIteratorHelperLoose(this._cachedSockets.keys()), _step; !(_step = _iterator()).done;) { + var _key = _step.value; + if (_key.endsWith(name)) { + ret.push(_key); + } + } + return ret; + }; + _proto._parseDragonAtlasAsset = function _parseDragonAtlasAsset() { + if (this.dragonAtlasAsset) { + this.dragonAtlasAsset.init(this._factory); + } + }; + _proto._refresh = function _refresh() { + this._buildArmature(); + this._indexBoneSockets(); + this.markForUpdateRenderData(); + }; + _proto._updateCacheModeEnum = function _updateCacheModeEnum() { + this._cacheModeEnum = Enum({}); + if (this._armature) { + Object.assign(this._cacheModeEnum, AnimationCacheMode$1); + } else { + Object.assign(this._cacheModeEnum, DefaultCacheMode); + } + setPropertyEnumType(this, '_defaultCacheMode', this._cacheModeEnum); + }; + _proto._updateAnimEnum = function _updateAnimEnum() { + var animEnum; + if (this.dragonAsset) { + animEnum = this.dragonAsset.getAnimsEnum(this.armatureName); + } else { + animEnum = DefaultAnimsEnum$1; + } + this._enumAnimations = Enum({}); + Object.assign(this._enumAnimations, animEnum || DefaultAnimsEnum$1); + Enum.update(this._enumAnimations); + setPropertyEnumType(this, '_animationIndex', this._enumAnimations); + }; + _proto._updateArmatureEnum = function _updateArmatureEnum() { + var armatureEnum; + if (this.dragonAsset) { + armatureEnum = this.dragonAsset.getArmatureEnum(); + } else { + armatureEnum = DefaultArmaturesEnum; + } + this._enumArmatures = Enum({}); + Object.assign(this._enumArmatures, armatureEnum || DefaultArmaturesEnum); + Enum.update(this._enumArmatures); + setPropertyEnumType(this, '_defaultArmatureIndex', this._enumArmatures); + }; + _proto._indexBoneSockets = function _indexBoneSockets() { + if (!this._armature) { + return; + } + this._cachedSockets.clear(); + var nameToBone = this._cachedSockets; + var cacheBoneName = function cacheBoneName(bi, bones, cache) { + if (cache.has(bi)) { + return cache.get(bi); + } + var bone = bones[bi]; + if (!bone.parent) { + cache.set(bi, bone.name); + bone.path = bone.name; + return bone.name; + } + var name = cacheBoneName(bone.parent._boneIndex, bones, cache) + "/" + bone.name; + cache.set(bi, name); + bone.path = name; + return name; + }; + var walkArmature = function walkArmature(prefix, armature) { + var bones = armature.getBones(); + var boneToName = new Map(); + for (var i = 0; i < bones.length; i++) { + bones[i]._boneIndex = i; + } + for (var _i = 0; _i < bones.length; _i++) { + cacheBoneName(_i, bones, boneToName); + } + for (var _iterator2 = _createForOfIteratorHelperLoose(boneToName.keys()), _step2; !(_step2 = _iterator2()).done;) { + var bone = _step2.value; + nameToBone.set("" + prefix + boneToName.get(bone), bone); + } + var slots = armature.getSlots(); + for (var _i2 = 0; _i2 < slots.length; _i2++) { + if (slots[_i2].childArmature) { + walkArmature(slots[_i2].name, slots[_i2].childArmature); + } + } + }; + walkArmature('', this._armature); + }; + _proto.playAnimation = function playAnimation(animName, playTimes) { + this.playTimes = playTimes === undefined ? -1 : playTimes; + this.animationName = animName; + if (this.isAnimationCached()) { + var cache = this._armatureCache.getAnimationCache(this._armatureKey, animName); + if (!cache) { + cache = this._armatureCache.initAnimationCache(this._armatureKey, animName); + } + if (cache) { + this._accTime = 0; + this._playCount = 0; + this._frameCache = cache; + if (this._sockets.length > 0) { + this._frameCache.enableCacheAttachedInfo(); + } + this._frameCache.updateToFrame(0); + this._playing = true; + this._curFrame = this._frameCache.frames[0]; + } + } else if (this._armature) { + return this._armature.animation.play(animName, this.playTimes); + } + this.markForUpdateRenderData(); + return null; + }; + _proto.updateAnimationCache = function updateAnimationCache(animName) { + if (!this.isAnimationCached()) return; + this._armatureCache.updateAnimationCache(this._armatureKey, animName); + }; + _proto.invalidAnimationCache = function invalidAnimationCache() { + if (!this.isAnimationCached()) return; + this._armatureCache.invalidAnimationCache(this._armatureKey); + }; + _proto.getArmatureNames = function getArmatureNames() { + var dragonBonesData = this._factory.getDragonBonesData(this._armatureKey); + return dragonBonesData && dragonBonesData.armatureNames || []; + }; + _proto.getAnimationNames = function getAnimationNames(armatureName) { + var ret = []; + var dragonBonesData = this._factory.getDragonBonesData(this._armatureKey); + if (dragonBonesData) { + var armatureData = dragonBonesData.getArmature(armatureName); + if (armatureData) { + for (var animName in armatureData.animations) { + if (armatureData.animations.hasOwnProperty(animName)) { + ret.push(animName); + } + } + } + } + return ret; + }; + _proto.on = function on(eventType, listener, target) { + this.addEventListener(eventType, listener, target); + }; + _proto.off = function off(eventType, listener, target) { + this.removeEventListener(eventType, listener, target); + }; + _proto.once = function once(eventType, listener, target) { + this._eventTarget.once(eventType, listener, target); + }; + _proto.addEventListener = function addEventListener(eventType, listener, target) { + this._eventTarget.on(eventType, listener, target); + }; + _proto.removeEventListener = function removeEventListener(eventType, listener, target) { + this._eventTarget.off(eventType, listener, target); + }; + _proto.buildArmature = function buildArmature(armatureName, node) { + return this._factory.createArmatureNode(this, armatureName, node); + }; + _proto.armature = function armature() { + return this._armature; + }; + _proto._flushAssembler = function _flushAssembler() { + var assembler = ArmatureDisplay.Assembler.getAssembler(this); + if (this._assembler !== assembler) { + this._assembler = assembler; + } + if (this._armature && this._assembler) { + this._renderData = this._assembler.createData(this); + if (this._renderData) { + this.maxVertexCount = this._renderData.vertexCount; + this.maxIndexCount = this._renderData.indexCount; + } + this.markForUpdateRenderData(); + this._updateColor(); + } + }; + _proto._updateSocketBindings = function _updateSocketBindings() { + if (!this._armature) return; + this._socketNodes.clear(); + for (var i = 0, l = this._sockets.length; i < l; i++) { + var socket = this._sockets[i]; + if (socket.path && socket.target) { + var bone = this._cachedSockets.get(socket.path); + if (!bone) { + console.error("Skeleton data does not contain path " + socket.path); + continue; + } + socket.boneIndex = bone; + this._socketNodes.set(socket.path, socket.target); + } + } + }; + _proto._verifySockets = function _verifySockets(sockets) { + for (var i = 0, l = sockets.length; i < l; i++) { + var target = sockets[i].target; + if (target) { + if (!target.parent || target.parent !== this.node) { + console.error("Target node " + target.name + " is expected to be a direct child of " + this.node.name); + continue; + } + } + } + }; + _proto._cleanMaterialCache = function _cleanMaterialCache() { + for (var val in this._materialCache) { + this._materialCache[val].destroy(); + } + this._materialCache = {}; + }; + _proto.createRenderEntity = function createRenderEntity() { + var renderEntity = new RenderEntity(RenderEntityType.DYNAMIC); + renderEntity.setUseLocal(false); + return renderEntity; + }; + _proto.markForUpdateRenderData = function markForUpdateRenderData(enable) { + if (enable === void 0) { + enable = true; + } + _UIRenderer.prototype.markForUpdateRenderData.call(this, enable); + if (this._debugDraw) { + this._debugDraw.markForUpdateRenderData(enable); + } + }; + _proto.syncAttachedNode = function syncAttachedNode() { + this.attachUtil._syncAttachedNode(); + }; + _createClass(ArmatureDisplay, [{ + key: "dragonAsset", + get: function get() { + return this._dragonAsset; + }, + set: function set(value) { + this._dragonAsset = value; + this.destroyRenderData(); + this._refresh(); + } + }, { + key: "dragonAtlasAsset", + get: function get() { + return this._dragonAtlasAsset; + }, + set: function set(value) { + this._dragonAtlasAsset = value; + this._parseDragonAtlasAsset(); + this._refresh(); + } + }, { + key: "armatureName", + get: function get() { + return this._armatureName; + }, + set: function set(name) { + this._armatureName = name; + var animNames = this.getAnimationNames(this._armatureName); + if (!this.animationName || animNames.indexOf(this.animationName) < 0) { + { + this.animationName = ''; + } + } + if (this._armature && !this.isAnimationCached()) { + this._factory._dragonBones.clock.remove(this._armature); + } + this._refresh(); + if (this._armature && !this.isAnimationCached()) { + this._factory._dragonBones.clock.add(this._armature); + } + } + }, { + key: "animationName", + get: function get() { + return this._animationName; + }, + set: function set(value) { + this._animationName = value; + } + }, { + key: "_defaultArmatureIndex", + get: function get() { + return this._defaultArmatureIndexValue; + }, + set: function set(value) { + this._defaultArmatureIndexValue = value; + var armatureName = ''; + if (this.dragonAsset) { + var armaturesEnum; + if (this.dragonAsset) { + armaturesEnum = this.dragonAsset.getArmatureEnum(); + } + if (!armaturesEnum) { + errorID(7400, this.name); + return; + } + armatureName = armaturesEnum[this._defaultArmatureIndex]; + } + if (armatureName !== undefined) { + this.armatureName = armatureName; + } else { + errorID(7401, this.name); + } + this.markForUpdateRenderData(); + } + }, { + key: "_animationIndex", + get: function get() { + return this._animationIndexValue; + }, + set: function set(value) { + this._animationIndexValue = value; + if (this._animationIndex === 0) { + this.animationName = ''; + return; + } + var animsEnum; + if (this.dragonAsset) { + animsEnum = this.dragonAsset.getAnimsEnum(this.armatureName); + } + if (!animsEnum) { + return; + } + var animName = animsEnum[this._animationIndex]; + if (animName !== undefined) { + this.playAnimation(animName, this.playTimes); + } else { + errorID(7402, this.name); + } + } + }, { + key: "_defaultCacheMode", + get: function get() { + return this._defaultCacheModeValue; + }, + set: function set(value) { + this._defaultCacheModeValue = value; + if (this._defaultCacheMode !== AnimationCacheMode$1.REALTIME) { + if (this._armature && !ArmatureCache.canCache(this._armature)) { + this._defaultCacheMode = AnimationCacheMode$1.REALTIME; + console.warn('Animation cache mode doesn\'t support skeletal nesting'); + return; + } + } + this.setAnimationCacheMode(this._defaultCacheMode); + } + }, { + key: "timeScale", + get: function get() { + return this._timeScale; + }, + set: function set(value) { + this._timeScale = value; + if (this._armature && !this.isAnimationCached()) { + this._armature.animation.timeScale = this.timeScale; + } + } + }, { + key: "debugBones", + get: function get() { + return this._debugBones; + }, + set: function set(value) { + this._debugBones = value; + this._updateDebugDraw(); + } + }, { + key: "enableBatch", + get: function get() { + return this._enableBatch; + }, + set: function set(value) { + if (value !== this._enableBatch) { + this._enableBatch = value; + this._updateBatch(); + } + } + }, { + key: "sockets", + get: function get() { + return this._sockets; + }, + set: function set(val) { + this._verifySockets(val); + this._sockets = val; + this._updateSocketBindings(); + if (val.length > 0 && this._frameCache) { + this._frameCache.enableCacheAttachedInfo(); + } + } + }, { + key: "socketNodes", + get: function get() { + return this._socketNodes; + } + }, { + key: "drawList", + get: function get() { + return this._drawList; + } + }, { + key: "customMaterial", + get: function get() { + return this._customMaterial; + }, + set: function set(val) { + this._customMaterial = val; + this.updateMaterial(); + this.markForUpdateRenderData(); + } + }]); + return ArmatureDisplay; + }(UIRenderer), _class6$2.AnimationCacheMode = AnimationCacheMode$1, _class6$2), (_applyDecoratedDescriptor(_class5$4.prototype, "dragonAsset", [_dec4$q], Object.getOwnPropertyDescriptor(_class5$4.prototype, "dragonAsset"), _class5$4.prototype), _applyDecoratedDescriptor(_class5$4.prototype, "dragonAtlasAsset", [_dec5$p], Object.getOwnPropertyDescriptor(_class5$4.prototype, "dragonAtlasAsset"), _class5$4.prototype), _applyDecoratedDescriptor(_class5$4.prototype, "_defaultArmatureIndex", [_dec6$i], Object.getOwnPropertyDescriptor(_class5$4.prototype, "_defaultArmatureIndex"), _class5$4.prototype), _applyDecoratedDescriptor(_class5$4.prototype, "_animationIndex", [_dec7$f], Object.getOwnPropertyDescriptor(_class5$4.prototype, "_animationIndex"), _class5$4.prototype), _applyDecoratedDescriptor(_class5$4.prototype, "timeScale", [serializable$2], Object.getOwnPropertyDescriptor(_class5$4.prototype, "timeScale"), _class5$4.prototype), _initializer3$t = applyDecoratedInitializer(_class5$4.prototype, "playTimes", [serializable$2], function () { + return -1; + }), _initializer4$q = applyDecoratedInitializer(_class5$4.prototype, "premultipliedAlpha", [serializable$2], function () { + return false; + }), _applyDecoratedDescriptor(_class5$4.prototype, "sockets", [_dec8$a], Object.getOwnPropertyDescriptor(_class5$4.prototype, "sockets"), _class5$4.prototype), _initializer5$m = applyDecoratedInitializer(_class5$4.prototype, "_defaultArmatureIndexValue", [serializable$2], function () { + return DefaultArmaturesEnum["default"]; + }), _initializer6$i = applyDecoratedInitializer(_class5$4.prototype, "_dragonAsset", [serializable$2], function () { + return null; + }), _initializer7$e = applyDecoratedInitializer(_class5$4.prototype, "_dragonAtlasAsset", [serializable$2], function () { + return null; + }), _initializer8$d = applyDecoratedInitializer(_class5$4.prototype, "_armatureName", [serializable$2], function () { + return ''; + }), _initializer9$b = applyDecoratedInitializer(_class5$4.prototype, "_animationName", [serializable$2], function () { + return ''; + }), _initializer10$b = applyDecoratedInitializer(_class5$4.prototype, "_animationIndexValue", [serializable$2], function () { + return 0; + }), _initializer11$b = applyDecoratedInitializer(_class5$4.prototype, "_defaultCacheModeValue", [serializable$2], function () { + return AnimationCacheMode$1.REALTIME; + }), _initializer12$a = applyDecoratedInitializer(_class5$4.prototype, "_timeScale", [serializable$2], function () { + return 1; + }), _initializer13$7 = applyDecoratedInitializer(_class5$4.prototype, "_playTimes", [serializable$2], function () { + return -1; + }), _initializer14$6 = applyDecoratedInitializer(_class5$4.prototype, "_debugBones", [serializable$2], function () { + return false; + }), _initializer15$5 = applyDecoratedInitializer(_class5$4.prototype, "_enableBatch", [serializable$2], function () { + return false; + }), _initializer16$5 = applyDecoratedInitializer(_class5$4.prototype, "_sockets", [serializable$2], function () { + return []; + }), _applyDecoratedDescriptor(_class5$4.prototype, "customMaterial", [override, _dec9$8], Object.getOwnPropertyDescriptor(_class5$4.prototype, "customMaterial"), _class5$4.prototype)), _class5$4)) || _class4$3); + legacyCC.internal.ArmatureDisplay = ArmatureDisplay; + + var NEED_COLOR = 0x01; + var _boneColor$1 = new Color$1(255, 0, 0, 255); + var _slotColor$1 = new Color$1(0, 0, 255, 255); + var _originColor$1 = new Color$1(0, 255, 0, 255); + var _nodeR$1; + var _nodeG$1; + var _nodeB$1; + var _nodeA$1; + var _premultipliedAlpha$1; + var _mustFlush; + var _renderData; + var _ibuf; + var _vbuf; + var _comp; + var _vertexFloatCount = 0; + var _vertexCount = 0; + var _vertexOffset = 0; + var _vertexFloatOffset = 0; + var _indexCount = 0; + var _indexOffset = 0; + var _actualVCount = 0; + var _actualICount = 0; + var _prevDrawIndexOffset = 0; + var LOCAL_FLOAT_PER_VERTEX = 4; + var PER_VERTEX_SIZE = 3 + 2 + 4; + var _c = new Float32Array(4); + var _handleVal; + var _tempVecPos = new Vec3(0, 0, 0); + var _slotMat = new Mat4(); + var _currentMaterial = null; + var _currentTexture = null; + function _getSlotMaterial$1(tex, blendMode) { + if (!tex) return null; + var src; + var dst; + switch (blendMode) { + case 1: + src = _premultipliedAlpha$1 ? BlendFactor.ONE : BlendFactor.SRC_ALPHA; + dst = BlendFactor.ONE; + break; + case 10: + src = BlendFactor.DST_COLOR; + dst = BlendFactor.ONE_MINUS_SRC_ALPHA; + break; + case 12: + src = BlendFactor.ONE; + dst = BlendFactor.ONE_MINUS_SRC_COLOR; + break; + case 0: + default: + src = _premultipliedAlpha$1 ? BlendFactor.ONE : BlendFactor.SRC_ALPHA; + dst = BlendFactor.ONE_MINUS_SRC_ALPHA; + break; + } + return _comp.getMaterialForBlend(src, dst); + } + function _handleColor(color, parentOpacity) { + var _a = color.a * parentOpacity * _nodeA$1; + var _multiply = _premultipliedAlpha$1 ? _a / 255.0 : 1.0; + var _r = color.r * _nodeR$1 * _multiply / 255.0; + var _g = color.g * _nodeG$1 * _multiply / 255.0; + var _b = color.b * _nodeB$1 * _multiply / 255.0; + _c[0] = _r; + _c[1] = _g; + _c[2] = _b; + _c[3] = _premultipliedAlpha$1 ? 1.0 : _a / 255.0; + } + var _accessor$2 = null; + var simple$2 = { + accessor: _accessor$2, + vCount: 32767, + ensureAccessor: function ensureAccessor() { + if (!_accessor$2) { + var device = director.root.device; + var batcher = director.root.batcher2D; + var attributes = vfmtPosUvColor; + this.accessor = _accessor$2 = new StaticVBAccessor(device, attributes, this.vCount); + batcher.registerBufferAccessor(Number.parseInt('DRAGONBONES', 36), _accessor$2); + } + return this.accessor; + }, + createData: function createData(comp) { + var rd = comp.renderData; + if (!rd) { + this.ensureAccessor(); + var slots = comp._armature._slots; + var vCount = 0; + var iCount = 0; + for (var i = 0; i < slots.length; ++i) { + var slot = slots[i]; + var remainder = slot._localVertices.length % 4; + if (remainder === 0) { + vCount += slot._localVertices.length / LOCAL_FLOAT_PER_VERTEX; + } else { + vCount += (slot._localVertices.length - remainder) / LOCAL_FLOAT_PER_VERTEX + 1; + } + iCount += slot._indices.length; + } + rd = RenderData.add(vfmtPosUvColor, this.accessor); + rd.resize(vCount, iCount); + if (!rd.indices || iCount !== rd.indices.length) { + rd.indices = new Uint16Array(iCount); + } + } + return rd; + }, + updateRenderData: function updateRenderData(comp, batcher) { + _comp = comp; + var armature = comp._armature; + if (armature) { + updateComponentRenderData$1(comp); + } + }, + updateColor: function updateColor(comp) { + if (!comp) return; + _comp = comp; + _comp.markForUpdateRenderData(); + } + }; + function realTimeTraverse$1(armature, parentOpacity, worldMat) { + var rd = _renderData; + _vbuf = rd.chunk.vb; + _ibuf = rd.indices; + var slots = armature._slots; + var material; + var vertices; + var indices; + var slotColor; + var slot; + var cumulatedCount = 0; + for (var i = 0, l = slots.length; i < l; i++) { + slot = slots[i]; + slotColor = slot._color; + if (!slot._visible || !slot._displayData) continue; + if (worldMat) { + Mat4.multiply(slot._worldMatrix, worldMat, slot._matrix); + } else { + Mat4.copy(slot._worldMatrix, slot._matrix); + } + if (slot.childArmature) { + realTimeTraverse$1(slot.childArmature, slotColor.a / 255, slot._worldMatrix); + continue; + } + material = _getSlotMaterial$1(slot.getTexture(), slot._blendMode); + if (!material) { + continue; + } + if (!_currentMaterial) _currentMaterial = material; + var texture = slot.getTexture(); + if (_mustFlush || material.hash !== _currentMaterial.hash || texture && _currentTexture !== texture) { + _mustFlush = false; + var _cumulatedCount = _indexOffset - _prevDrawIndexOffset; + if (_cumulatedCount > 0) { + _comp._requestDrawData(_currentMaterial, _currentTexture, _prevDrawIndexOffset, _cumulatedCount); + _prevDrawIndexOffset = _indexOffset; + } + _currentTexture = texture; + _currentMaterial = material; + } + _handleColor(slotColor, parentOpacity); + _slotMat.set(slot._worldMatrix); + vertices = slot._localVertices; + _vertexCount = vertices.length / LOCAL_FLOAT_PER_VERTEX; + _vertexFloatCount = _vertexCount * PER_VERTEX_SIZE; + indices = slot._indices; + _indexCount = indices.length; + var isResize = false; + if (_vertexOffset + _vertexCount > _actualVCount) { + _actualVCount = _vertexOffset + _vertexCount; + isResize = true; + } + if (_indexOffset + _indexCount > _actualICount) { + _actualICount = _indexOffset + _indexCount; + isResize = true; + } + if (isResize) { + var oldIndices = _ibuf; + var oldChunkOffset = rd.chunk.vertexOffset; + rd.resizeAndCopy(_actualVCount, _actualICount > rd.indexCount ? _actualICount : rd.indexCount); + _vbuf = rd.chunk.vb; + if (_actualICount > _ibuf.length) { + _ibuf = rd.indices = new Uint16Array(_actualICount); + } + var correction = rd.chunk.vertexOffset - oldChunkOffset; + for (var _i = 0; _i < _indexOffset; ++_i) { + _ibuf[_i] = oldIndices[_i] + correction; + } + } + for (var vi = 0, vl = vertices.length, v = _vertexFloatOffset; vi < vl; v += PER_VERTEX_SIZE) { + _tempVecPos.x = vertices[vi++]; + _tempVecPos.y = vertices[vi++]; + _tempVecPos.z = 0; + _tempVecPos.transformMat4(_slotMat); + _vbuf[v] = _tempVecPos.x; + _vbuf[v + 1] = _tempVecPos.y; + _vbuf[v + 2] = _tempVecPos.z; + _vbuf[v + 3] = vertices[vi++]; + _vbuf[v + 4] = vertices[vi++]; + _vbuf.set(_c, v + 5); + } + var chunkOffset = rd.chunk.vertexOffset; + for (var _i2 = 0, il = indices.length, ii = _indexOffset; _i2 < il; _i2++, ii++) { + _ibuf[ii] = _vertexOffset + indices[_i2] + chunkOffset; + } + _vertexFloatOffset += _vertexFloatCount; + _vertexOffset += _vertexCount; + _indexOffset += _indexCount; + _vertexCount = 0; + _indexCount = 0; + } + cumulatedCount = _indexOffset - _prevDrawIndexOffset; + if (_currentTexture && cumulatedCount > 0) { + _comp._requestDrawData(_currentMaterial, _currentTexture, _prevDrawIndexOffset, cumulatedCount); + _prevDrawIndexOffset = _indexOffset; + } + if (_comp.maxIndexCount < _actualICount) { + _comp.maxIndexCount = _actualICount; + } + if (_comp.maxVertexCount < _actualVCount) { + _comp.maxVertexCount = _actualVCount; + } + } + function cacheTraverse$1(frame, parentMat) { + if (!frame) return; + var segments = frame.segments; + if (segments.length === 0) return; + var material = null; + var vertices = frame.vertices; + var indices = frame.indices; + var chunkOffset = 0; + var frameVFOffset = 0; + var frameIndexOffset = 0; + var segVFCount = 0; + var colorOffset = 0; + var colors = frame.colors; + var nowColor = colors[colorOffset++]; + var maxVFOffset = nowColor.vfOffset; + _handleColor(nowColor, 1.0); + var rd = _renderData; + var vbuf = rd.chunk.vb; + var ibuf = rd.indices; + for (var i = 0, n = segments.length; i < n; i++) { + var segInfo = segments[i]; + material = _getSlotMaterial$1(segInfo.tex, segInfo.blendMode); + if (!material) continue; + if (!_currentMaterial) _currentMaterial = material; + if (_mustFlush || material.hash !== _currentMaterial.hash || segInfo.tex && segInfo.tex !== _currentTexture) { + _mustFlush = false; + var _cumulatedCount2 = _indexOffset - _prevDrawIndexOffset; + if (_cumulatedCount2 > 0) { + _comp._requestDrawData(_currentMaterial, _currentTexture, _prevDrawIndexOffset, _cumulatedCount2); + _prevDrawIndexOffset = _indexOffset; + } + _currentMaterial = material; + _currentTexture = segInfo.tex; + } + _vertexCount = segInfo.vertexCount; + _indexCount = segInfo.indexCount; + chunkOffset = rd.chunk.vertexOffset; + for (var ii = _indexOffset, il = _indexOffset + _indexCount; ii < il; ii++) { + ibuf[ii] = chunkOffset + _vertexOffset + indices[frameIndexOffset++]; + } + segVFCount = segInfo.vfCount; + var subArray = vertices.subarray(frameVFOffset, segVFCount); + vbuf.set(subArray, frameVFOffset); + var offset = 0; + if (parentMat) { + for (var _ii = 0, _il = _vertexCount; _ii < _il; _ii++) { + _tempVecPos.x = vbuf[offset]; + _tempVecPos.y = vbuf[offset + 1]; + _tempVecPos.z = 0; + _tempVecPos.transformMat4(parentMat); + vbuf[offset] = _tempVecPos.x; + vbuf[offset + 1] = _tempVecPos.y; + vbuf[offset + 2] = _tempVecPos.z; + offset += PER_VERTEX_SIZE; + } + } + if (_handleVal & NEED_COLOR) { + var frameColorOffset = frameVFOffset / 9 * 5; + for (var _ii2 = frameVFOffset, iEnd = frameVFOffset + segVFCount; _ii2 < iEnd; _ii2 += PER_VERTEX_SIZE, frameColorOffset += 5) { + if (frameColorOffset >= maxVFOffset) { + nowColor = colors[colorOffset++]; + _handleColor(nowColor, 1.0); + maxVFOffset = nowColor.vfOffset; + } + vbuf.set(_c, _ii2 + 5); + } + } + frameVFOffset += segVFCount; + _vertexOffset += _vertexCount; + _indexOffset += _indexCount; + _vertexCount = 0; + _indexCount = 0; + } + var cumulatedCount = _indexOffset - _prevDrawIndexOffset; + if (_currentTexture && cumulatedCount > 0) { + _comp._requestDrawData(_currentMaterial, _currentTexture, _prevDrawIndexOffset, cumulatedCount); + } + } + function updateComponentRenderData$1(comp, batcher) { + var armature = comp._armature; + if (!armature || comp.renderData === null) return; + _mustFlush = true; + _premultipliedAlpha$1 = comp.premultipliedAlpha; + comp.drawList.reset(); + _comp = comp; + comp.node; + _renderData = comp.renderData; + _comp = comp; + _handleVal = 0; + _currentMaterial = null; + var nodeColor = comp.color; + _nodeR$1 = nodeColor.r / 255; + _nodeG$1 = nodeColor.g / 255; + _nodeB$1 = nodeColor.b / 255; + _nodeA$1 = comp.node._uiProps.opacity; + if (nodeColor._val !== 0xffffffff) { + _handleVal |= NEED_COLOR; + } + var worldMat = comp.node.getWorldMatrix(); + _vertexFloatCount = 0; + _vertexOffset = 0; + _vertexFloatOffset = 0; + _indexCount = 0; + _indexOffset = 0; + _prevDrawIndexOffset = 0; + _actualVCount = _comp.maxVertexCount; + _actualICount = _comp.maxIndexCount; + if (comp.isAnimationCached()) { + cacheTraverse$1(comp._curFrame, worldMat); + } else { + realTimeTraverse$1(armature, 1.0, worldMat); + var graphics = comp._debugDraw; + if (comp.debugBones && graphics) { + graphics.clear(); + graphics.lineWidth = 5; + graphics.strokeColor = _boneColor$1; + graphics.fillColor = _slotColor$1; + var bones = armature.getBones(); + for (var i = 0, l = bones.length; i < l; i++) { + var bone = bones[i]; + var boneLength = Math.max(bone.boneData.length, 5); + var startX = bone.globalTransformMatrix.tx; + var startY = bone.globalTransformMatrix.ty; + var endX = startX + bone.globalTransformMatrix.a * boneLength; + var endY = startY + bone.globalTransformMatrix.b * boneLength; + graphics.moveTo(startX, startY); + graphics.lineTo(endX, endY); + graphics.stroke(); + graphics.circle(startX, startY, Math.PI * 2); + graphics.fill(); + if (i === 0) { + graphics.fillColor = _originColor$1; + } + } + } + } + _accessor$2.getMeshBuffer(_renderData.chunk.bufferId).setDirty(); + _comp = undefined; + } + legacyCC.internal.DragonBonesAssembler = simple$2; + + var simpleDragonBoneAssembler = { + getAssembler: function getAssembler() { + return simple$2; + } + }; + ArmatureDisplay.Assembler = simpleDragonBoneAssembler; + + var ExtensionType; + (function (ExtensionType) { + ExtensionType[ExtensionType["FFD"] = 0] = "FFD"; + ExtensionType[ExtensionType["AdjustColor"] = 10] = "AdjustColor"; + ExtensionType[ExtensionType["BevelFilter"] = 11] = "BevelFilter"; + ExtensionType[ExtensionType["BlurFilter"] = 12] = "BlurFilter"; + ExtensionType[ExtensionType["DropShadowFilter"] = 13] = "DropShadowFilter"; + ExtensionType[ExtensionType["GlowFilter"] = 14] = "GlowFilter"; + ExtensionType[ExtensionType["GradientBevelFilter"] = 15] = "GradientBevelFilter"; + ExtensionType[ExtensionType["GradientGlowFilter"] = 16] = "GradientGlowFilter"; + })(ExtensionType || (ExtensionType = {})); + var EventType$7; + (function (EventType) { + EventType[EventType["Frame"] = 0] = "Frame"; + EventType[EventType["Sound"] = 1] = "Sound"; + })(EventType$7 || (EventType$7 = {})); + var AnimationFadeOutMode; + (function (AnimationFadeOutMode) { + AnimationFadeOutMode[AnimationFadeOutMode["None"] = 0] = "None"; + AnimationFadeOutMode[AnimationFadeOutMode["SameLayer"] = 1] = "SameLayer"; + AnimationFadeOutMode[AnimationFadeOutMode["SameGroup"] = 2] = "SameGroup"; + AnimationFadeOutMode[AnimationFadeOutMode["SameLayerAndGroup"] = 3] = "SameLayerAndGroup"; + AnimationFadeOutMode[AnimationFadeOutMode["All"] = 4] = "All"; + })(AnimationFadeOutMode || (AnimationFadeOutMode = {})); + + var index$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + get ExtensionType () { return ExtensionType; }, + get EventType () { return EventType$7; }, + get AnimationFadeOutMode () { return AnimationFadeOutMode; }, + CCFactory: CCFactory, + CCSlot: CCSlot, + CCTextureAtlasData: CCTextureAtlasData, + CCTextureData: CCTextureData, + CCArmatureDisplay: CCArmatureDisplay, + AnimationCache: AnimationCache$1, + ArmatureCache: ArmatureCache, + DragonBonesAsset: DragonBonesAsset, + DragonBonesAtlasAsset: DragonBonesAtlasAsset, + timeScale: timeScale$1, + get AnimationCacheMode () { return AnimationCacheMode$1; }, + DragonBoneSocket: DragonBoneSocket, + ArmatureDisplay: ArmatureDisplay, + AttachUtil: AttachUtil$1, + simpleDragonBoneAssembler: simpleDragonBoneAssembler, + DragonBones: DragonBones, + BaseObject: BaseObject, + Matrix: Matrix, + Transform: Transform, + ColorTransform: ColorTransform, + Point: Point$1, + Rectangle: Rectangle, + UserData: UserData, + ActionData: ActionData, + DragonBonesData: DragonBonesData, + ArmatureData: ArmatureData, + BoneData: BoneData, + SurfaceData: SurfaceData, + SlotData: SlotData, + ConstraintData: ConstraintData, + IKConstraintData: IKConstraintData, + PathConstraintData: PathConstraintData, + CanvasData: CanvasData, + SkinData: SkinData, + VerticesData: VerticesData, + DisplayData: DisplayData, + ImageDisplayData: ImageDisplayData, + ArmatureDisplayData: ArmatureDisplayData, + MeshDisplayData: MeshDisplayData, + BoundingBoxDisplayData: BoundingBoxDisplayData, + PathDisplayData: PathDisplayData, + WeightData: WeightData, + BoundingBoxData: BoundingBoxData, + RectangleBoundingBoxData: RectangleBoundingBoxData, + EllipseBoundingBoxData: EllipseBoundingBoxData, + PolygonBoundingBoxData: PolygonBoundingBoxData, + AnimationData: AnimationData, + TimelineData: TimelineData, + AnimationConfig: AnimationConfig, + TextureAtlasData: TextureAtlasData, + TextureData: TextureData, + DeformVertices: DeformVertices, + Armature: Armature, + TransformObject: TransformObject, + Bone: Bone, + Surface: Surface, + Slot: Slot, + Constraint: Constraint$1, + IKConstraint: IKConstraint, + PathConstraint: PathConstraint, + WorldClock: WorldClock, + Animation: Animation, + AnimationState: AnimationState, + BonePose: BonePose, + BlendState: BlendState, + TimelineState: TimelineState, + TweenTimelineState: TweenTimelineState, + BoneTimelineState: BoneTimelineState, + SlotTimelineState: SlotTimelineState, + ConstraintTimelineState: ConstraintTimelineState, + ActionTimelineState: ActionTimelineState, + ZOrderTimelineState: ZOrderTimelineState, + BoneAllTimelineState: BoneAllTimelineState, + BoneTranslateTimelineState: BoneTranslateTimelineState, + BoneRotateTimelineState: BoneRotateTimelineState, + BoneScaleTimelineState: BoneScaleTimelineState, + SurfaceTimelineState: SurfaceTimelineState, + SlotDislayTimelineState: SlotDislayTimelineState, + SlotColorTimelineState: SlotColorTimelineState, + DeformTimelineState: DeformTimelineState, + IKConstraintTimelineState: IKConstraintTimelineState, + AnimationTimelineState: AnimationTimelineState, + EventObject: EventObject, + DataParser: DataParser, + ObjectDataParser: ObjectDataParser, + ActionFrame: ActionFrame, + BinaryDataParser: BinaryDataParser, + BaseFactory: BaseFactory, + BuildArmaturePackage: BuildArmaturePackage, + BinaryOffset: BinaryOffset, + ArmatureType: ArmatureType, + BoneType: BoneType, + DisplayType: DisplayType, + BoundingBoxType: BoundingBoxType, + ActionType: ActionType, + BlendMode: BlendMode, + TweenType: TweenType, + TimelineType: TimelineType + }); + exports('ev', index$1); + + var WebGLDescriptorSet = function (_DescriptorSet) { + _inheritsLoose(WebGLDescriptorSet, _DescriptorSet); + function WebGLDescriptorSet() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _DescriptorSet.call.apply(_DescriptorSet, [this].concat(args)) || this; + _this._gpuDescriptorSet = null; + return _this; + } + var _proto = WebGLDescriptorSet.prototype; + _proto.initialize = function initialize(info) { + this._layout = info.layout; + var _gpuDescriptorSetLayo = info.layout.gpuDescriptorSetLayout, + bindings = _gpuDescriptorSetLayo.bindings, + descriptorIndices = _gpuDescriptorSetLayo.descriptorIndices, + descriptorCount = _gpuDescriptorSetLayo.descriptorCount; + this._buffers = Array(descriptorCount).fill(null); + this._textures = Array(descriptorCount).fill(null); + this._samplers = Array(descriptorCount).fill(null); + var gpuDescriptors = []; + this._gpuDescriptorSet = { + gpuDescriptors: gpuDescriptors, + descriptorIndices: descriptorIndices + }; + for (var i = 0; i < bindings.length; ++i) { + var binding = bindings[i]; + for (var j = 0; j < binding.count; j++) { + gpuDescriptors.push({ + type: binding.descriptorType, + gpuBuffer: null, + gpuTexture: null, + gpuSampler: null + }); + } + } + }; + _proto.destroy = function destroy() { + this._layout = null; + this._gpuDescriptorSet = null; + }; + _proto.update = function update() { + if (this._isDirty && this._gpuDescriptorSet) { + var descriptors = this._gpuDescriptorSet.gpuDescriptors; + for (var i = 0; i < descriptors.length; ++i) { + if (descriptors[i].type & DESCRIPTOR_BUFFER_TYPE) { + var buffer = this._buffers[i]; + if (buffer) { + descriptors[i].gpuBuffer = buffer.gpuBuffer || buffer.gpuBufferView; + } + } else if (descriptors[i].type & DESCRIPTOR_SAMPLER_TYPE) { + if (this._textures[i]) { + descriptors[i].gpuTexture = this._textures[i].gpuTexture; + } + if (this._samplers[i]) { + descriptors[i].gpuSampler = this._samplers[i].gpuSampler; + } + } + } + this._isDirty = false; + } + }; + _createClass(WebGLDescriptorSet, [{ + key: "gpuDescriptorSet", + get: function get() { + return this._gpuDescriptorSet; + } + }]); + return WebGLDescriptorSet; + }(DescriptorSet); + + var WebGLEXT; + (function (WebGLEXT) { + WebGLEXT[WebGLEXT["RGBA16F_EXT"] = 34842] = "RGBA16F_EXT"; + WebGLEXT[WebGLEXT["RGB16F_EXT"] = 34843] = "RGB16F_EXT"; + WebGLEXT[WebGLEXT["RGBA32F_EXT"] = 34836] = "RGBA32F_EXT"; + WebGLEXT[WebGLEXT["FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT"] = 33297] = "FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT"; + WebGLEXT[WebGLEXT["UNSIGNED_NORMALIZED_EXT"] = 35863] = "UNSIGNED_NORMALIZED_EXT"; + WebGLEXT[WebGLEXT["UNSIGNED_INT_24_8_WEBGL"] = 34042] = "UNSIGNED_INT_24_8_WEBGL"; + WebGLEXT[WebGLEXT["HALF_FLOAT_OES"] = 36193] = "HALF_FLOAT_OES"; + WebGLEXT[WebGLEXT["SRGB_EXT"] = 35904] = "SRGB_EXT"; + WebGLEXT[WebGLEXT["SRGB_ALPHA_EXT"] = 35906] = "SRGB_ALPHA_EXT"; + WebGLEXT[WebGLEXT["SRGB8_ALPHA8_EXT"] = 35907] = "SRGB8_ALPHA8_EXT"; + WebGLEXT[WebGLEXT["COMPRESSED_RGB_S3TC_DXT1_EXT"] = 33776] = "COMPRESSED_RGB_S3TC_DXT1_EXT"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_S3TC_DXT1_EXT"] = 33777] = "COMPRESSED_RGBA_S3TC_DXT1_EXT"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_S3TC_DXT3_EXT"] = 33778] = "COMPRESSED_RGBA_S3TC_DXT3_EXT"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_S3TC_DXT5_EXT"] = 33779] = "COMPRESSED_RGBA_S3TC_DXT5_EXT"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB_S3TC_DXT1_EXT"] = 35916] = "COMPRESSED_SRGB_S3TC_DXT1_EXT"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT"] = 35917] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT"] = 35918] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT"] = 35919] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT"; + WebGLEXT[WebGLEXT["COMPRESSED_RGB_PVRTC_4BPPV1_IMG"] = 35840] = "COMPRESSED_RGB_PVRTC_4BPPV1_IMG"; + WebGLEXT[WebGLEXT["COMPRESSED_RGB_PVRTC_2BPPV1_IMG"] = 35841] = "COMPRESSED_RGB_PVRTC_2BPPV1_IMG"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_PVRTC_4BPPV1_IMG"] = 35842] = "COMPRESSED_RGBA_PVRTC_4BPPV1_IMG"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_PVRTC_2BPPV1_IMG"] = 35843] = "COMPRESSED_RGBA_PVRTC_2BPPV1_IMG"; + WebGLEXT[WebGLEXT["COMPRESSED_RGB_ETC1_WEBGL"] = 36196] = "COMPRESSED_RGB_ETC1_WEBGL"; + WebGLEXT[WebGLEXT["COMPRESSED_R11_EAC"] = 37488] = "COMPRESSED_R11_EAC"; + WebGLEXT[WebGLEXT["COMPRESSED_SIGNED_R11_EAC"] = 37489] = "COMPRESSED_SIGNED_R11_EAC"; + WebGLEXT[WebGLEXT["COMPRESSED_RG11_EAC"] = 37490] = "COMPRESSED_RG11_EAC"; + WebGLEXT[WebGLEXT["COMPRESSED_SIGNED_RG11_EAC"] = 37491] = "COMPRESSED_SIGNED_RG11_EAC"; + WebGLEXT[WebGLEXT["COMPRESSED_RGB8_ETC2"] = 37492] = "COMPRESSED_RGB8_ETC2"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB8_ETC2"] = 37493] = "COMPRESSED_SRGB8_ETC2"; + WebGLEXT[WebGLEXT["COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2"] = 37494] = "COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2"] = 37495] = "COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA8_ETC2_EAC"] = 37496] = "COMPRESSED_RGBA8_ETC2_EAC"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB8_ALPHA8_ETC2_EAC"] = 37497] = "COMPRESSED_SRGB8_ALPHA8_ETC2_EAC"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_ASTC_4x4_KHR"] = 37808] = "COMPRESSED_RGBA_ASTC_4x4_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_ASTC_5x4_KHR"] = 37809] = "COMPRESSED_RGBA_ASTC_5x4_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_ASTC_5x5_KHR"] = 37810] = "COMPRESSED_RGBA_ASTC_5x5_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_ASTC_6x5_KHR"] = 37811] = "COMPRESSED_RGBA_ASTC_6x5_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_ASTC_6x6_KHR"] = 37812] = "COMPRESSED_RGBA_ASTC_6x6_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_ASTC_8x5_KHR"] = 37813] = "COMPRESSED_RGBA_ASTC_8x5_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_ASTC_8x6_KHR"] = 37814] = "COMPRESSED_RGBA_ASTC_8x6_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_ASTC_8x8_KHR"] = 37815] = "COMPRESSED_RGBA_ASTC_8x8_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_ASTC_10x5_KHR"] = 37816] = "COMPRESSED_RGBA_ASTC_10x5_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_ASTC_10x6_KHR"] = 37817] = "COMPRESSED_RGBA_ASTC_10x6_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_ASTC_10x8_KHR"] = 37818] = "COMPRESSED_RGBA_ASTC_10x8_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_ASTC_10x10_KHR"] = 37819] = "COMPRESSED_RGBA_ASTC_10x10_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_ASTC_12x10_KHR"] = 37820] = "COMPRESSED_RGBA_ASTC_12x10_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_ASTC_12x12_KHR"] = 37821] = "COMPRESSED_RGBA_ASTC_12x12_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR"] = 37840] = "COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR"] = 37841] = "COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR"] = 37842] = "COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR"] = 37843] = "COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR"] = 37844] = "COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR"] = 37845] = "COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR"] = 37846] = "COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR"] = 37847] = "COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR"] = 37848] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR"] = 37849] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR"] = 37850] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR"] = 37851] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR"] = 37852] = "COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR"] = 37853] = "COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR"; + })(WebGLEXT || (WebGLEXT = {})); + var WebGLDeviceManager = function () { + function WebGLDeviceManager() {} + WebGLDeviceManager.setInstance = function setInstance(instance) { + WebGLDeviceManager._instance = instance; + }; + _createClass(WebGLDeviceManager, null, [{ + key: "instance", + get: function get() { + return WebGLDeviceManager._instance; + } + }]); + return WebGLDeviceManager; + }(); + WebGLDeviceManager._instance = null; + + function GFXFormatToWebGLType$1(format, gl) { + switch (format) { + case Format.R8: + return gl.UNSIGNED_BYTE; + case Format.R8SN: + return gl.BYTE; + case Format.R8UI: + return gl.UNSIGNED_BYTE; + case Format.R8I: + return gl.BYTE; + case Format.R16F: + return WebGLEXT.HALF_FLOAT_OES; + case Format.R16UI: + return gl.UNSIGNED_SHORT; + case Format.R16I: + return gl.SHORT; + case Format.R32F: + return gl.FLOAT; + case Format.R32UI: + return gl.UNSIGNED_INT; + case Format.R32I: + return gl.INT; + case Format.RG8: + return gl.UNSIGNED_BYTE; + case Format.RG8SN: + return gl.BYTE; + case Format.RG8UI: + return gl.UNSIGNED_BYTE; + case Format.RG8I: + return gl.BYTE; + case Format.RG16F: + return WebGLEXT.HALF_FLOAT_OES; + case Format.RG16UI: + return gl.UNSIGNED_SHORT; + case Format.RG16I: + return gl.SHORT; + case Format.RG32F: + return gl.FLOAT; + case Format.RG32UI: + return gl.UNSIGNED_INT; + case Format.RG32I: + return gl.INT; + case Format.RGB8: + return gl.UNSIGNED_BYTE; + case Format.SRGB8: + return gl.UNSIGNED_BYTE; + case Format.RGB8SN: + return gl.BYTE; + case Format.RGB8UI: + return gl.UNSIGNED_BYTE; + case Format.RGB8I: + return gl.BYTE; + case Format.RGB16F: + return WebGLEXT.HALF_FLOAT_OES; + case Format.RGB16UI: + return gl.UNSIGNED_SHORT; + case Format.RGB16I: + return gl.SHORT; + case Format.RGB32F: + return gl.FLOAT; + case Format.RGB32UI: + return gl.UNSIGNED_INT; + case Format.RGB32I: + return gl.INT; + case Format.BGRA8: + return gl.UNSIGNED_BYTE; + case Format.RGBA8: + return gl.UNSIGNED_BYTE; + case Format.SRGB8_A8: + return gl.UNSIGNED_BYTE; + case Format.RGBA8SN: + return gl.BYTE; + case Format.RGBA8UI: + return gl.UNSIGNED_BYTE; + case Format.RGBA8I: + return gl.BYTE; + case Format.RGBA16F: + return WebGLEXT.HALF_FLOAT_OES; + case Format.RGBA16UI: + return gl.UNSIGNED_SHORT; + case Format.RGBA16I: + return gl.SHORT; + case Format.RGBA32F: + return gl.FLOAT; + case Format.RGBA32UI: + return gl.UNSIGNED_INT; + case Format.RGBA32I: + return gl.INT; + case Format.R5G6B5: + return gl.UNSIGNED_SHORT_5_6_5; + case Format.R11G11B10F: + return gl.FLOAT; + case Format.RGB5A1: + return gl.UNSIGNED_SHORT_5_5_5_1; + case Format.RGBA4: + return gl.UNSIGNED_SHORT_4_4_4_4; + case Format.RGB10A2: + return gl.UNSIGNED_BYTE; + case Format.RGB10A2UI: + return gl.UNSIGNED_INT; + case Format.RGB9E5: + return gl.UNSIGNED_BYTE; + case Format.DEPTH: + return gl.UNSIGNED_INT; + case Format.DEPTH_STENCIL: + return WebGLEXT.UNSIGNED_INT_24_8_WEBGL; + case Format.BC1: + return gl.UNSIGNED_BYTE; + case Format.BC1_SRGB: + return gl.UNSIGNED_BYTE; + case Format.BC2: + return gl.UNSIGNED_BYTE; + case Format.BC2_SRGB: + return gl.UNSIGNED_BYTE; + case Format.BC3: + return gl.UNSIGNED_BYTE; + case Format.BC3_SRGB: + return gl.UNSIGNED_BYTE; + case Format.BC4: + return gl.UNSIGNED_BYTE; + case Format.BC4_SNORM: + return gl.BYTE; + case Format.BC5: + return gl.UNSIGNED_BYTE; + case Format.BC5_SNORM: + return gl.BYTE; + case Format.BC6H_SF16: + return gl.FLOAT; + case Format.BC6H_UF16: + return gl.FLOAT; + case Format.BC7: + return gl.UNSIGNED_BYTE; + case Format.BC7_SRGB: + return gl.UNSIGNED_BYTE; + case Format.ETC_RGB8: + return gl.UNSIGNED_BYTE; + case Format.ETC2_RGB8: + return gl.UNSIGNED_BYTE; + case Format.ETC2_SRGB8: + return gl.UNSIGNED_BYTE; + case Format.ETC2_RGB8_A1: + return gl.UNSIGNED_BYTE; + case Format.ETC2_SRGB8_A1: + return gl.UNSIGNED_BYTE; + case Format.EAC_R11: + return gl.UNSIGNED_BYTE; + case Format.EAC_R11SN: + return gl.BYTE; + case Format.EAC_RG11: + return gl.UNSIGNED_BYTE; + case Format.EAC_RG11SN: + return gl.BYTE; + case Format.PVRTC_RGB2: + return gl.UNSIGNED_BYTE; + case Format.PVRTC_RGBA2: + return gl.UNSIGNED_BYTE; + case Format.PVRTC_RGB4: + return gl.UNSIGNED_BYTE; + case Format.PVRTC_RGBA4: + return gl.UNSIGNED_BYTE; + case Format.PVRTC2_2BPP: + return gl.UNSIGNED_BYTE; + case Format.PVRTC2_4BPP: + return gl.UNSIGNED_BYTE; + case Format.ASTC_RGBA_4X4: + case Format.ASTC_RGBA_5X4: + case Format.ASTC_RGBA_5X5: + case Format.ASTC_RGBA_6X5: + case Format.ASTC_RGBA_6X6: + case Format.ASTC_RGBA_8X5: + case Format.ASTC_RGBA_8X6: + case Format.ASTC_RGBA_8X8: + case Format.ASTC_RGBA_10X5: + case Format.ASTC_RGBA_10X6: + case Format.ASTC_RGBA_10X8: + case Format.ASTC_RGBA_10X10: + case Format.ASTC_RGBA_12X10: + case Format.ASTC_RGBA_12X12: + case Format.ASTC_SRGBA_4X4: + case Format.ASTC_SRGBA_5X4: + case Format.ASTC_SRGBA_5X5: + case Format.ASTC_SRGBA_6X5: + case Format.ASTC_SRGBA_6X6: + case Format.ASTC_SRGBA_8X5: + case Format.ASTC_SRGBA_8X6: + case Format.ASTC_SRGBA_8X8: + case Format.ASTC_SRGBA_10X5: + case Format.ASTC_SRGBA_10X6: + case Format.ASTC_SRGBA_10X8: + case Format.ASTC_SRGBA_10X10: + case Format.ASTC_SRGBA_12X10: + case Format.ASTC_SRGBA_12X12: + return gl.UNSIGNED_BYTE; + default: + { + return gl.UNSIGNED_BYTE; + } + } + } + function GFXFormatToWebGLInternalFormat$1(format, gl) { + switch (format) { + case Format.R5G6B5: + return gl.RGB565; + case Format.RGB5A1: + return gl.RGB5_A1; + case Format.RGBA4: + return gl.RGBA4; + case Format.RGBA16F: + return WebGLEXT.RGBA16F_EXT; + case Format.RGBA32F: + return WebGLEXT.RGBA32F_EXT; + case Format.SRGB8_A8: + return WebGLEXT.SRGB8_ALPHA8_EXT; + case Format.DEPTH: + return gl.DEPTH_COMPONENT16; + case Format.DEPTH_STENCIL: + return gl.DEPTH_STENCIL; + default: + { + error('Unsupported Format, convert to WebGL internal format failed.'); + return gl.RGBA; + } + } + } + function GFXFormatToWebGLFormat$1(format, gl) { + switch (format) { + case Format.A8: + return gl.ALPHA; + case Format.L8: + return gl.LUMINANCE; + case Format.LA8: + return gl.LUMINANCE_ALPHA; + case Format.RGB8: + return gl.RGB; + case Format.RGB16F: + return gl.RGB; + case Format.RGB32F: + return gl.RGB; + case Format.BGRA8: + return gl.RGBA; + case Format.RGBA8: + return gl.RGBA; + case Format.SRGB8_A8: + return gl.RGBA; + case Format.RGBA16F: + return gl.RGBA; + case Format.RGBA32F: + return gl.RGBA; + case Format.R5G6B5: + return gl.RGB; + case Format.RGB5A1: + return gl.RGBA; + case Format.RGBA4: + return gl.RGBA; + case Format.DEPTH: + return gl.DEPTH_COMPONENT; + case Format.DEPTH_STENCIL: + return gl.DEPTH_STENCIL; + case Format.BC1: + return WebGLEXT.COMPRESSED_RGB_S3TC_DXT1_EXT; + case Format.BC1_ALPHA: + return WebGLEXT.COMPRESSED_RGBA_S3TC_DXT1_EXT; + case Format.BC1_SRGB: + return WebGLEXT.COMPRESSED_SRGB_S3TC_DXT1_EXT; + case Format.BC1_SRGB_ALPHA: + return WebGLEXT.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT; + case Format.BC2: + return WebGLEXT.COMPRESSED_RGBA_S3TC_DXT3_EXT; + case Format.BC2_SRGB: + return WebGLEXT.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT; + case Format.BC3: + return WebGLEXT.COMPRESSED_RGBA_S3TC_DXT5_EXT; + case Format.BC3_SRGB: + return WebGLEXT.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT; + case Format.ETC_RGB8: + return WebGLEXT.COMPRESSED_RGB_ETC1_WEBGL; + case Format.ETC2_RGB8: + return WebGLEXT.COMPRESSED_RGB8_ETC2; + case Format.ETC2_SRGB8: + return WebGLEXT.COMPRESSED_SRGB8_ETC2; + case Format.ETC2_RGB8_A1: + return WebGLEXT.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2; + case Format.ETC2_SRGB8_A1: + return WebGLEXT.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2; + case Format.ETC2_RGBA8: + return WebGLEXT.COMPRESSED_RGBA8_ETC2_EAC; + case Format.ETC2_SRGB8_A8: + return WebGLEXT.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC; + case Format.EAC_R11: + return WebGLEXT.COMPRESSED_R11_EAC; + case Format.EAC_R11SN: + return WebGLEXT.COMPRESSED_SIGNED_R11_EAC; + case Format.EAC_RG11: + return WebGLEXT.COMPRESSED_RG11_EAC; + case Format.EAC_RG11SN: + return WebGLEXT.COMPRESSED_SIGNED_RG11_EAC; + case Format.PVRTC_RGB2: + return WebGLEXT.COMPRESSED_RGB_PVRTC_2BPPV1_IMG; + case Format.PVRTC_RGBA2: + return WebGLEXT.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; + case Format.PVRTC_RGB4: + return WebGLEXT.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; + case Format.PVRTC_RGBA4: + return WebGLEXT.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; + case Format.ASTC_RGBA_4X4: + return WebGLEXT.COMPRESSED_RGBA_ASTC_4x4_KHR; + case Format.ASTC_RGBA_5X4: + return WebGLEXT.COMPRESSED_RGBA_ASTC_5x4_KHR; + case Format.ASTC_RGBA_5X5: + return WebGLEXT.COMPRESSED_RGBA_ASTC_5x5_KHR; + case Format.ASTC_RGBA_6X5: + return WebGLEXT.COMPRESSED_RGBA_ASTC_6x5_KHR; + case Format.ASTC_RGBA_6X6: + return WebGLEXT.COMPRESSED_RGBA_ASTC_6x6_KHR; + case Format.ASTC_RGBA_8X5: + return WebGLEXT.COMPRESSED_RGBA_ASTC_8x5_KHR; + case Format.ASTC_RGBA_8X6: + return WebGLEXT.COMPRESSED_RGBA_ASTC_8x6_KHR; + case Format.ASTC_RGBA_8X8: + return WebGLEXT.COMPRESSED_RGBA_ASTC_8x8_KHR; + case Format.ASTC_RGBA_10X5: + return WebGLEXT.COMPRESSED_RGBA_ASTC_10x5_KHR; + case Format.ASTC_RGBA_10X6: + return WebGLEXT.COMPRESSED_RGBA_ASTC_10x6_KHR; + case Format.ASTC_RGBA_10X8: + return WebGLEXT.COMPRESSED_RGBA_ASTC_10x8_KHR; + case Format.ASTC_RGBA_10X10: + return WebGLEXT.COMPRESSED_RGBA_ASTC_10x10_KHR; + case Format.ASTC_RGBA_12X10: + return WebGLEXT.COMPRESSED_RGBA_ASTC_12x10_KHR; + case Format.ASTC_RGBA_12X12: + return WebGLEXT.COMPRESSED_RGBA_ASTC_12x12_KHR; + case Format.ASTC_SRGBA_4X4: + return WebGLEXT.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR; + case Format.ASTC_SRGBA_5X4: + return WebGLEXT.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR; + case Format.ASTC_SRGBA_5X5: + return WebGLEXT.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR; + case Format.ASTC_SRGBA_6X5: + return WebGLEXT.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR; + case Format.ASTC_SRGBA_6X6: + return WebGLEXT.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR; + case Format.ASTC_SRGBA_8X5: + return WebGLEXT.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR; + case Format.ASTC_SRGBA_8X6: + return WebGLEXT.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR; + case Format.ASTC_SRGBA_8X8: + return WebGLEXT.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR; + case Format.ASTC_SRGBA_10X5: + return WebGLEXT.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR; + case Format.ASTC_SRGBA_10X6: + return WebGLEXT.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR; + case Format.ASTC_SRGBA_10X8: + return WebGLEXT.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR; + case Format.ASTC_SRGBA_10X10: + return WebGLEXT.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR; + case Format.ASTC_SRGBA_12X10: + return WebGLEXT.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR; + case Format.ASTC_SRGBA_12X12: + return WebGLEXT.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR; + default: + { + error('Unsupported Format, convert to WebGL format failed.'); + return gl.RGBA; + } + } + } + function GFXTypeToWebGLType$1(type, gl) { + switch (type) { + case Type$1.BOOL: + return gl.BOOL; + case Type$1.BOOL2: + return gl.BOOL_VEC2; + case Type$1.BOOL3: + return gl.BOOL_VEC3; + case Type$1.BOOL4: + return gl.BOOL_VEC4; + case Type$1.INT: + return gl.INT; + case Type$1.INT2: + return gl.INT_VEC2; + case Type$1.INT3: + return gl.INT_VEC3; + case Type$1.INT4: + return gl.INT_VEC4; + case Type$1.UINT: + return gl.UNSIGNED_INT; + case Type$1.FLOAT: + return gl.FLOAT; + case Type$1.FLOAT2: + return gl.FLOAT_VEC2; + case Type$1.FLOAT3: + return gl.FLOAT_VEC3; + case Type$1.FLOAT4: + return gl.FLOAT_VEC4; + case Type$1.MAT2: + return gl.FLOAT_MAT2; + case Type$1.MAT3: + return gl.FLOAT_MAT3; + case Type$1.MAT4: + return gl.FLOAT_MAT4; + case Type$1.SAMPLER2D: + return gl.SAMPLER_2D; + case Type$1.SAMPLER_CUBE: + return gl.SAMPLER_CUBE; + default: + { + error('Unsupported GLType, convert to GL type failed.'); + return Type$1.UNKNOWN; + } + } + } + function GFXTypeToTypedArrayCtor(type) { + switch (type) { + case Type$1.BOOL: + case Type$1.BOOL2: + case Type$1.BOOL3: + case Type$1.BOOL4: + case Type$1.INT: + case Type$1.INT2: + case Type$1.INT3: + case Type$1.INT4: + case Type$1.UINT: + return Int32Array; + case Type$1.FLOAT: + case Type$1.FLOAT2: + case Type$1.FLOAT3: + case Type$1.FLOAT4: + case Type$1.MAT2: + case Type$1.MAT3: + case Type$1.MAT4: + return Float32Array; + default: + { + error('Unsupported GLType, convert to TypedArrayConstructor failed.'); + return Float32Array; + } + } + } + function WebGLTypeToGFXType$1(glType, gl) { + switch (glType) { + case gl.BOOL: + return Type$1.BOOL; + case gl.BOOL_VEC2: + return Type$1.BOOL2; + case gl.BOOL_VEC3: + return Type$1.BOOL3; + case gl.BOOL_VEC4: + return Type$1.BOOL4; + case gl.INT: + return Type$1.INT; + case gl.INT_VEC2: + return Type$1.INT2; + case gl.INT_VEC3: + return Type$1.INT3; + case gl.INT_VEC4: + return Type$1.INT4; + case gl.UNSIGNED_INT: + return Type$1.UINT; + case gl.FLOAT: + return Type$1.FLOAT; + case gl.FLOAT_VEC2: + return Type$1.FLOAT2; + case gl.FLOAT_VEC3: + return Type$1.FLOAT3; + case gl.FLOAT_VEC4: + return Type$1.FLOAT4; + case gl.FLOAT_MAT2: + return Type$1.MAT2; + case gl.FLOAT_MAT3: + return Type$1.MAT3; + case gl.FLOAT_MAT4: + return Type$1.MAT4; + case gl.SAMPLER_2D: + return Type$1.SAMPLER2D; + case gl.SAMPLER_CUBE: + return Type$1.SAMPLER_CUBE; + default: + { + error('Unsupported GLType, convert to Type failed.'); + return Type$1.UNKNOWN; + } + } + } + function WebGLGetTypeSize$1(glType, gl) { + switch (glType) { + case gl.BOOL: + return 4; + case gl.BOOL_VEC2: + return 8; + case gl.BOOL_VEC3: + return 12; + case gl.BOOL_VEC4: + return 16; + case gl.INT: + return 4; + case gl.INT_VEC2: + return 8; + case gl.INT_VEC3: + return 12; + case gl.INT_VEC4: + return 16; + case gl.UNSIGNED_INT: + return 4; + case gl.FLOAT: + return 4; + case gl.FLOAT_VEC2: + return 8; + case gl.FLOAT_VEC3: + return 12; + case gl.FLOAT_VEC4: + return 16; + case gl.FLOAT_MAT2: + return 16; + case gl.FLOAT_MAT3: + return 36; + case gl.FLOAT_MAT4: + return 64; + case gl.SAMPLER_2D: + return 4; + case gl.SAMPLER_CUBE: + return 4; + default: + { + error('Unsupported GLType, get type failed.'); + return 0; + } + } + } + function WebGLGetComponentCount$1(glType, gl) { + switch (glType) { + case gl.FLOAT_MAT2: + return 2; + case gl.FLOAT_MAT3: + return 3; + case gl.FLOAT_MAT4: + return 4; + default: + { + return 1; + } + } + } + var WebGLCmpFuncs$1 = [0x0200, 0x0201, 0x0202, 0x0203, 0x0204, 0x0205, 0x0206, 0x0207]; + var WebGLStencilOps$1 = [0x0000, 0x1E00, 0x1E01, 0x1E02, 0x1E03, 0x150A, 0x8507, 0x8508]; + var WebGLBlendOps$1 = [0x8006, 0x800A, 0x800B, 0x8007, 0x8008]; + var WebGLBlendFactors$1 = [0x0000, 0x0001, 0x0302, 0x0304, 0x0303, 0x0305, 0x0300, 0x0306, 0x0301, 0x0307, 0x0308, 0x8001, 0x8002, 0x8003, 0x8004]; + var WebGLCmd; + (function (WebGLCmd) { + WebGLCmd[WebGLCmd["BEGIN_RENDER_PASS"] = 0] = "BEGIN_RENDER_PASS"; + WebGLCmd[WebGLCmd["END_RENDER_PASS"] = 1] = "END_RENDER_PASS"; + WebGLCmd[WebGLCmd["BIND_STATES"] = 2] = "BIND_STATES"; + WebGLCmd[WebGLCmd["DRAW"] = 3] = "DRAW"; + WebGLCmd[WebGLCmd["UPDATE_BUFFER"] = 4] = "UPDATE_BUFFER"; + WebGLCmd[WebGLCmd["COPY_BUFFER_TO_TEXTURE"] = 5] = "COPY_BUFFER_TO_TEXTURE"; + WebGLCmd[WebGLCmd["BLIT_TEXTURE"] = 6] = "BLIT_TEXTURE"; + WebGLCmd[WebGLCmd["COUNT"] = 7] = "COUNT"; + })(WebGLCmd || (WebGLCmd = {})); + var WebGLCmdObject = function WebGLCmdObject(type) { + this.cmdType = void 0; + this.refCount = 0; + this.cmdType = type; + }; + var WebGLCmdBeginRenderPass = function (_WebGLCmdObject) { + _inheritsLoose(WebGLCmdBeginRenderPass, _WebGLCmdObject); + function WebGLCmdBeginRenderPass() { + var _this; + _this = _WebGLCmdObject.call(this, WebGLCmd.BEGIN_RENDER_PASS) || this; + _this.gpuRenderPass = null; + _this.gpuFramebuffer = null; + _this.renderArea = new Rect(); + _this.clearFlag = ClearFlagBit.NONE; + _this.clearColors = []; + _this.clearDepth = 1.0; + _this.clearStencil = 0; + return _this; + } + var _proto = WebGLCmdBeginRenderPass.prototype; + _proto.clear = function clear() { + this.gpuFramebuffer = null; + this.clearColors.length = 0; + }; + return WebGLCmdBeginRenderPass; + }(WebGLCmdObject); + var WebGLCmdBindStates = function (_WebGLCmdObject2) { + _inheritsLoose(WebGLCmdBindStates, _WebGLCmdObject2); + function WebGLCmdBindStates() { + var _this2; + _this2 = _WebGLCmdObject2.call(this, WebGLCmd.BIND_STATES) || this; + _this2.gpuPipelineState = null; + _this2.gpuInputAssembler = null; + _this2.gpuDescriptorSets = []; + _this2.dynamicOffsets = []; + _this2.dynamicStates = new DynamicStates(); + return _this2; + } + var _proto2 = WebGLCmdBindStates.prototype; + _proto2.clear = function clear() { + this.gpuPipelineState = null; + this.gpuDescriptorSets.length = 0; + this.gpuInputAssembler = null; + this.dynamicOffsets.length = 0; + }; + return WebGLCmdBindStates; + }(WebGLCmdObject); + var WebGLCmdDraw = function (_WebGLCmdObject3) { + _inheritsLoose(WebGLCmdDraw, _WebGLCmdObject3); + function WebGLCmdDraw() { + var _this3; + _this3 = _WebGLCmdObject3.call(this, WebGLCmd.DRAW) || this; + _this3.drawInfo = new DrawInfo(); + return _this3; + } + var _proto3 = WebGLCmdDraw.prototype; + _proto3.clear = function clear() {}; + return WebGLCmdDraw; + }(WebGLCmdObject); + var WebGLCmdUpdateBuffer = function (_WebGLCmdObject4) { + _inheritsLoose(WebGLCmdUpdateBuffer, _WebGLCmdObject4); + function WebGLCmdUpdateBuffer() { + var _this4; + _this4 = _WebGLCmdObject4.call(this, WebGLCmd.UPDATE_BUFFER) || this; + _this4.gpuBuffer = null; + _this4.buffer = null; + _this4.offset = 0; + _this4.size = 0; + return _this4; + } + var _proto4 = WebGLCmdUpdateBuffer.prototype; + _proto4.clear = function clear() { + this.gpuBuffer = null; + this.buffer = null; + }; + return WebGLCmdUpdateBuffer; + }(WebGLCmdObject); + var WebGLCmdCopyBufferToTexture = function (_WebGLCmdObject5) { + _inheritsLoose(WebGLCmdCopyBufferToTexture, _WebGLCmdObject5); + function WebGLCmdCopyBufferToTexture() { + var _this5; + _this5 = _WebGLCmdObject5.call(this, WebGLCmd.COPY_BUFFER_TO_TEXTURE) || this; + _this5.gpuTexture = null; + _this5.buffers = []; + _this5.regions = []; + return _this5; + } + var _proto5 = WebGLCmdCopyBufferToTexture.prototype; + _proto5.clear = function clear() { + this.gpuTexture = null; + this.buffers.length = 0; + this.regions.length = 0; + }; + return WebGLCmdCopyBufferToTexture; + }(WebGLCmdObject); + var WebGLCmdBlitTexture = function (_WebGLCmdObject6) { + _inheritsLoose(WebGLCmdBlitTexture, _WebGLCmdObject6); + function WebGLCmdBlitTexture() { + var _this6; + _this6 = _WebGLCmdObject6.call(this, WebGLCmd.BLIT_TEXTURE) || this; + _this6.srcTexture = null; + _this6.dstTexture = null; + _this6.regions = []; + _this6.filter = Filter$1.LINEAR; + return _this6; + } + var _proto6 = WebGLCmdBlitTexture.prototype; + _proto6.clear = function clear() { + this.srcTexture = null; + this.dstTexture = null; + this.regions.length = 0; + }; + return WebGLCmdBlitTexture; + }(WebGLCmdObject); + var WebGLCmdPackage = function () { + function WebGLCmdPackage() { + this.cmds = new CachedArray(1); + this.beginRenderPassCmds = new CachedArray(1); + this.bindStatesCmds = new CachedArray(1); + this.drawCmds = new CachedArray(1); + this.updateBufferCmds = new CachedArray(1); + this.copyBufferToTextureCmds = new CachedArray(1); + this.blitTextureCmds = new CachedArray(1); + } + var _proto7 = WebGLCmdPackage.prototype; + _proto7.clearCmds = function clearCmds(allocator) { + if (this.beginRenderPassCmds.length) { + allocator.beginRenderPassCmdPool.freeCmds(this.beginRenderPassCmds); + this.beginRenderPassCmds.clear(); + } + if (this.bindStatesCmds.length) { + allocator.bindStatesCmdPool.freeCmds(this.bindStatesCmds); + this.bindStatesCmds.clear(); + } + if (this.drawCmds.length) { + allocator.drawCmdPool.freeCmds(this.drawCmds); + this.drawCmds.clear(); + } + if (this.updateBufferCmds.length) { + allocator.updateBufferCmdPool.freeCmds(this.updateBufferCmds); + this.updateBufferCmds.clear(); + } + if (this.copyBufferToTextureCmds.length) { + allocator.copyBufferToTextureCmdPool.freeCmds(this.copyBufferToTextureCmds); + this.copyBufferToTextureCmds.clear(); + } + if (this.blitTextureCmds.length) { + allocator.blitTextureCmdPool.freeCmds(this.blitTextureCmds); + this.blitTextureCmds.clear(); + } + this.cmds.clear(); + }; + return WebGLCmdPackage; + }(); + function WebGLCmdFuncCreateBuffer(device, gpuBuffer) { + var gl = device.gl; + var cache = device.stateCache; + var glUsage = gpuBuffer.memUsage & MemoryUsageBit.HOST ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW; + if (gpuBuffer.usage & BufferUsageBit.VERTEX) { + gpuBuffer.glTarget = gl.ARRAY_BUFFER; + var glBuffer = gl.createBuffer(); + if (glBuffer) { + gpuBuffer.glBuffer = glBuffer; + if (gpuBuffer.size > 0) { + if (device.extensions.useVAO) { + if (cache.glVAO) { + device.extensions.OES_vertex_array_object.bindVertexArrayOES(null); + cache.glVAO = null; + } + } + gfxStateCache$1.gpuInputAssembler = null; + if (device.stateCache.glArrayBuffer !== gpuBuffer.glBuffer) { + gl.bindBuffer(gl.ARRAY_BUFFER, gpuBuffer.glBuffer); + device.stateCache.glArrayBuffer = gpuBuffer.glBuffer; + } + gl.bufferData(gl.ARRAY_BUFFER, gpuBuffer.size, glUsage); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + device.stateCache.glArrayBuffer = null; + } + } + } else if (gpuBuffer.usage & BufferUsageBit.INDEX) { + gpuBuffer.glTarget = gl.ELEMENT_ARRAY_BUFFER; + var _glBuffer = gl.createBuffer(); + if (_glBuffer) { + gpuBuffer.glBuffer = _glBuffer; + if (gpuBuffer.size > 0) { + if (device.extensions.useVAO) { + if (cache.glVAO) { + device.extensions.OES_vertex_array_object.bindVertexArrayOES(null); + cache.glVAO = null; + } + } + gfxStateCache$1.gpuInputAssembler = null; + if (device.stateCache.glElementArrayBuffer !== gpuBuffer.glBuffer) { + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, gpuBuffer.glBuffer); + device.stateCache.glElementArrayBuffer = gpuBuffer.glBuffer; + } + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, gpuBuffer.size, glUsage); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + device.stateCache.glElementArrayBuffer = null; + } + } + } else if (gpuBuffer.usage & BufferUsageBit.UNIFORM) { + gpuBuffer.glTarget = gl.NONE; + if (gpuBuffer.buffer) { + gpuBuffer.vf32 = new Float32Array(gpuBuffer.buffer.buffer); + } + } else if (gpuBuffer.usage & BufferUsageBit.INDIRECT) { + gpuBuffer.glTarget = gl.NONE; + } else if (gpuBuffer.usage & BufferUsageBit.TRANSFER_DST) { + gpuBuffer.glTarget = gl.NONE; + } else if (gpuBuffer.usage & BufferUsageBit.TRANSFER_SRC) { + gpuBuffer.glTarget = gl.NONE; + } else { + error('Unsupported BufferType, create buffer failed.'); + gpuBuffer.glTarget = gl.NONE; + } + } + function WebGLCmdFuncDestroyBuffer(device, gpuBuffer) { + var gl = device.gl; + var cache = device.stateCache; + if (gpuBuffer.glBuffer) { + switch (gpuBuffer.glTarget) { + case gl.ARRAY_BUFFER: + if (device.extensions.useVAO) { + if (cache.glVAO) { + device.extensions.OES_vertex_array_object.bindVertexArrayOES(null); + device.stateCache.glVAO = null; + } + } + gfxStateCache$1.gpuInputAssembler = null; + gl.bindBuffer(gl.ARRAY_BUFFER, null); + device.stateCache.glArrayBuffer = null; + break; + case gl.ELEMENT_ARRAY_BUFFER: + if (device.extensions.useVAO) { + if (cache.glVAO) { + device.extensions.OES_vertex_array_object.bindVertexArrayOES(null); + device.stateCache.glVAO = null; + } + } + gfxStateCache$1.gpuInputAssembler = null; + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + device.stateCache.glElementArrayBuffer = null; + break; + } + gl.deleteBuffer(gpuBuffer.glBuffer); + gpuBuffer.glBuffer = null; + } + } + function WebGLCmdFuncResizeBuffer(device, gpuBuffer) { + var gl = device.gl; + var cache = device.stateCache; + var glUsage = gpuBuffer.memUsage & MemoryUsageBit.HOST ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW; + if (gpuBuffer.usage & BufferUsageBit.VERTEX) { + if (device.extensions.useVAO) { + if (cache.glVAO) { + device.extensions.OES_vertex_array_object.bindVertexArrayOES(null); + cache.glVAO = null; + } + } + gfxStateCache$1.gpuInputAssembler = null; + if (device.stateCache.glArrayBuffer !== gpuBuffer.glBuffer) { + gl.bindBuffer(gl.ARRAY_BUFFER, gpuBuffer.glBuffer); + } + if (gpuBuffer.buffer) { + gl.bufferData(gl.ARRAY_BUFFER, gpuBuffer.buffer, glUsage); + } else { + gl.bufferData(gl.ARRAY_BUFFER, gpuBuffer.size, glUsage); + } + gl.bindBuffer(gl.ARRAY_BUFFER, null); + device.stateCache.glArrayBuffer = null; + } else if (gpuBuffer.usage & BufferUsageBit.INDEX) { + if (device.extensions.useVAO) { + if (cache.glVAO) { + device.extensions.OES_vertex_array_object.bindVertexArrayOES(null); + cache.glVAO = null; + } + } + gfxStateCache$1.gpuInputAssembler = null; + if (device.stateCache.glElementArrayBuffer !== gpuBuffer.glBuffer) { + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, gpuBuffer.glBuffer); + } + if (gpuBuffer.buffer) { + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, gpuBuffer.buffer, glUsage); + } else { + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, gpuBuffer.size, glUsage); + } + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + device.stateCache.glElementArrayBuffer = null; + } else if (gpuBuffer.usage & BufferUsageBit.UNIFORM) { + if (gpuBuffer.buffer) { + gpuBuffer.vf32 = new Float32Array(gpuBuffer.buffer.buffer); + } + } else if (gpuBuffer.usage & BufferUsageBit.INDIRECT || gpuBuffer.usage & BufferUsageBit.TRANSFER_DST || gpuBuffer.usage & BufferUsageBit.TRANSFER_SRC) { + gpuBuffer.glTarget = gl.NONE; + } else { + error('Unsupported BufferType, create buffer failed.'); + gpuBuffer.glTarget = gl.NONE; + } + } + function WebGLCmdFuncUpdateBuffer(device, gpuBuffer, buffer, offset, size) { + if (gpuBuffer.usage & BufferUsageBit.UNIFORM) { + if (ArrayBuffer.isView(buffer)) { + gpuBuffer.vf32.set(buffer, offset / Float32Array.BYTES_PER_ELEMENT); + } else { + gpuBuffer.vf32.set(new Float32Array(buffer), offset / Float32Array.BYTES_PER_ELEMENT); + } + } else if (gpuBuffer.usage & BufferUsageBit.INDIRECT) { + gpuBuffer.indirects.clearDraws(); + var drawInfos = buffer.drawInfos; + for (var i = 0; i < drawInfos.length; ++i) { + gpuBuffer.indirects.setDrawInfo(offset + i, drawInfos[i]); + } + } else { + var buff = buffer; + var gl = device.gl; + var cache = device.stateCache; + switch (gpuBuffer.glTarget) { + case gl.ARRAY_BUFFER: + { + if (device.extensions.useVAO) { + if (cache.glVAO) { + device.extensions.OES_vertex_array_object.bindVertexArrayOES(null); + cache.glVAO = null; + } + } + gfxStateCache$1.gpuInputAssembler = null; + if (device.stateCache.glArrayBuffer !== gpuBuffer.glBuffer) { + gl.bindBuffer(gl.ARRAY_BUFFER, gpuBuffer.glBuffer); + device.stateCache.glArrayBuffer = gpuBuffer.glBuffer; + } + break; + } + case gl.ELEMENT_ARRAY_BUFFER: + { + if (device.extensions.useVAO) { + if (cache.glVAO) { + device.extensions.OES_vertex_array_object.bindVertexArrayOES(null); + cache.glVAO = null; + } + } + gfxStateCache$1.gpuInputAssembler = null; + if (device.stateCache.glElementArrayBuffer !== gpuBuffer.glBuffer) { + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, gpuBuffer.glBuffer); + device.stateCache.glElementArrayBuffer = gpuBuffer.glBuffer; + } + break; + } + default: + { + error('Unsupported BufferType, update buffer failed.'); + return; + } + } + if (size === buff.byteLength) { + gl.bufferSubData(gpuBuffer.glTarget, offset, buff); + } else { + gl.bufferSubData(gpuBuffer.glTarget, offset, buff.slice(0, size)); + } + } + } + function WebGLCmdFuncCreateTexture(device, gpuTexture) { + var gl = device.gl; + gpuTexture.glFormat = gpuTexture.glInternalFmt = GFXFormatToWebGLFormat$1(gpuTexture.format, gl); + gpuTexture.glType = GFXFormatToWebGLType$1(gpuTexture.format, gl); + var w = gpuTexture.width; + var h = gpuTexture.height; + switch (gpuTexture.type) { + case TextureType.TEX2D: + { + gpuTexture.glTarget = gl.TEXTURE_2D; + var maxSize = Math.max(w, h); + if (maxSize > device.capabilities.maxTextureSize) { + errorID(9100, maxSize, device.capabilities.maxTextureSize); + } + if (!device.textureExclusive[gpuTexture.format] && !device.extensions.WEBGL_depth_texture && FormatInfos[gpuTexture.format].hasDepth) { + gpuTexture.glInternalFmt = GFXFormatToWebGLInternalFormat$1(gpuTexture.format, gl); + gpuTexture.glRenderbuffer = gl.createRenderbuffer(); + if (gpuTexture.size > 0) { + if (device.stateCache.glRenderbuffer !== gpuTexture.glRenderbuffer) { + gl.bindRenderbuffer(gl.RENDERBUFFER, gpuTexture.glRenderbuffer); + device.stateCache.glRenderbuffer = gpuTexture.glRenderbuffer; + } + gl.renderbufferStorage(gl.RENDERBUFFER, gpuTexture.glInternalFmt, w, h); + } + } else { + gpuTexture.glTexture = gl.createTexture(); + if (gpuTexture.size > 0) { + var glTexUnit = device.stateCache.glTexUnits[device.stateCache.texUnit]; + if (glTexUnit.glTexture !== gpuTexture.glTexture) { + gl.bindTexture(gl.TEXTURE_2D, gpuTexture.glTexture); + glTexUnit.glTexture = gpuTexture.glTexture; + } + if (FormatInfos[gpuTexture.format].isCompressed) { + for (var i = 0; i < gpuTexture.mipLevel; ++i) { + var imgSize = FormatSize(gpuTexture.format, w, h, 1); + var view = new Uint8Array(imgSize); + gl.compressedTexImage2D(gl.TEXTURE_2D, i, gpuTexture.glInternalFmt, w, h, 0, view); + w = Math.max(1, w >> 1); + h = Math.max(1, h >> 1); + } + } else { + for (var _i = 0; _i < gpuTexture.mipLevel; ++_i) { + gl.texImage2D(gl.TEXTURE_2D, _i, gpuTexture.glInternalFmt, w, h, 0, gpuTexture.glFormat, gpuTexture.glType, null); + w = Math.max(1, w >> 1); + h = Math.max(1, h >> 1); + } + } + if (gpuTexture.isPowerOf2) { + gpuTexture.glWrapS = gl.REPEAT; + gpuTexture.glWrapT = gl.REPEAT; + } else { + gpuTexture.glWrapS = gl.CLAMP_TO_EDGE; + gpuTexture.glWrapT = gl.CLAMP_TO_EDGE; + } + gpuTexture.glMinFilter = gl.LINEAR; + gpuTexture.glMagFilter = gl.LINEAR; + gl.texParameteri(gpuTexture.glTarget, gl.TEXTURE_WRAP_S, gpuTexture.glWrapS); + gl.texParameteri(gpuTexture.glTarget, gl.TEXTURE_WRAP_T, gpuTexture.glWrapT); + gl.texParameteri(gpuTexture.glTarget, gl.TEXTURE_MIN_FILTER, gpuTexture.glMinFilter); + gl.texParameteri(gpuTexture.glTarget, gl.TEXTURE_MAG_FILTER, gpuTexture.glMagFilter); + } + } + break; + } + case TextureType.CUBE: + { + gpuTexture.glTarget = gl.TEXTURE_CUBE_MAP; + var _maxSize = Math.max(w, h); + if (_maxSize > device.capabilities.maxCubeMapTextureSize) { + errorID(9100, _maxSize, device.capabilities.maxTextureSize); + } + gpuTexture.glTexture = gl.createTexture(); + if (gpuTexture.size > 0) { + var _glTexUnit = device.stateCache.glTexUnits[device.stateCache.texUnit]; + if (_glTexUnit.glTexture !== gpuTexture.glTexture) { + gl.bindTexture(gl.TEXTURE_CUBE_MAP, gpuTexture.glTexture); + _glTexUnit.glTexture = gpuTexture.glTexture; + } + if (FormatInfos[gpuTexture.format].isCompressed) { + for (var f = 0; f < 6; ++f) { + w = gpuTexture.width; + h = gpuTexture.height; + for (var _i2 = 0; _i2 < gpuTexture.mipLevel; ++_i2) { + var _imgSize = FormatSize(gpuTexture.format, w, h, 1); + var _view = new Uint8Array(_imgSize); + gl.compressedTexImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + f, _i2, gpuTexture.glInternalFmt, w, h, 0, _view); + w = Math.max(1, w >> 1); + h = Math.max(1, h >> 1); + } + } + } else { + for (var _f = 0; _f < 6; ++_f) { + w = gpuTexture.width; + h = gpuTexture.height; + for (var _i3 = 0; _i3 < gpuTexture.mipLevel; ++_i3) { + gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + _f, _i3, gpuTexture.glInternalFmt, w, h, 0, gpuTexture.glFormat, gpuTexture.glType, null); + w = Math.max(1, w >> 1); + h = Math.max(1, h >> 1); + } + } + } + if (gpuTexture.isPowerOf2) { + gpuTexture.glWrapS = gl.REPEAT; + gpuTexture.glWrapT = gl.REPEAT; + } else { + gpuTexture.glWrapS = gl.CLAMP_TO_EDGE; + gpuTexture.glWrapT = gl.CLAMP_TO_EDGE; + } + gpuTexture.glMinFilter = gl.LINEAR; + gpuTexture.glMagFilter = gl.LINEAR; + gl.texParameteri(gpuTexture.glTarget, gl.TEXTURE_WRAP_S, gpuTexture.glWrapS); + gl.texParameteri(gpuTexture.glTarget, gl.TEXTURE_WRAP_T, gpuTexture.glWrapT); + gl.texParameteri(gpuTexture.glTarget, gl.TEXTURE_MIN_FILTER, gpuTexture.glMinFilter); + gl.texParameteri(gpuTexture.glTarget, gl.TEXTURE_MAG_FILTER, gpuTexture.glMagFilter); + } + break; + } + default: + { + error('Unsupported TextureType, create texture failed.'); + gpuTexture.type = TextureType.TEX2D; + gpuTexture.glTarget = gl.TEXTURE_2D; + } + } + } + function WebGLCmdFuncDestroyTexture(device, gpuTexture) { + var gl = device.gl; + if (gpuTexture.glTexture) { + var glTexUnits = device.stateCache.glTexUnits; + var texUnit = device.stateCache.texUnit; + gl.deleteTexture(gpuTexture.glTexture); + for (var i = 0; i < glTexUnits.length; i++) { + if (glTexUnits[i].glTexture === gpuTexture.glTexture) { + gl.activeTexture(gl.TEXTURE0 + i); + texUnit = i; + gl.bindTexture(gpuTexture.glTarget, null); + glTexUnits[i].glTexture = null; + } + } + device.stateCache.texUnit = texUnit; + gpuTexture.glTexture = null; + } + if (gpuTexture.glRenderbuffer) { + var glRenderbuffer = device.stateCache.glRenderbuffer; + gl.deleteRenderbuffer(gpuTexture.glRenderbuffer); + if (glRenderbuffer === gpuTexture.glRenderbuffer) { + gl.bindRenderbuffer(gl.RENDERBUFFER, null); + glRenderbuffer = null; + } + gpuTexture.glRenderbuffer = null; + } + } + function WebGLCmdFuncResizeTexture(device, gpuTexture) { + if (!gpuTexture.size) return; + var gl = device.gl; + var w = gpuTexture.width; + var h = gpuTexture.height; + switch (gpuTexture.type) { + case TextureType.TEX2D: + { + gpuTexture.glTarget = gl.TEXTURE_2D; + var maxSize = Math.max(w, h); + if (maxSize > device.capabilities.maxTextureSize) { + errorID(9100, maxSize, device.capabilities.maxTextureSize); + } + if (gpuTexture.glRenderbuffer) { + if (device.stateCache.glRenderbuffer !== gpuTexture.glRenderbuffer) { + gl.bindRenderbuffer(gl.RENDERBUFFER, gpuTexture.glRenderbuffer); + device.stateCache.glRenderbuffer = gpuTexture.glRenderbuffer; + } + gl.renderbufferStorage(gl.RENDERBUFFER, gpuTexture.glInternalFmt, w, h); + } else if (gpuTexture.glTexture) { + var glTexUnit = device.stateCache.glTexUnits[device.stateCache.texUnit]; + if (glTexUnit.glTexture !== gpuTexture.glTexture) { + gl.bindTexture(gl.TEXTURE_2D, gpuTexture.glTexture); + glTexUnit.glTexture = gpuTexture.glTexture; + } + if (FormatInfos[gpuTexture.format].isCompressed) { + for (var i = 0; i < gpuTexture.mipLevel; ++i) { + var imgSize = FormatSize(gpuTexture.format, w, h, 1); + var view = new Uint8Array(imgSize); + gl.compressedTexImage2D(gl.TEXTURE_2D, i, gpuTexture.glInternalFmt, w, h, 0, view); + w = Math.max(1, w >> 1); + h = Math.max(1, h >> 1); + } + } else { + for (var _i4 = 0; _i4 < gpuTexture.mipLevel; ++_i4) { + gl.texImage2D(gl.TEXTURE_2D, _i4, gpuTexture.glInternalFmt, w, h, 0, gpuTexture.glFormat, gpuTexture.glType, null); + w = Math.max(1, w >> 1); + h = Math.max(1, h >> 1); + } + } + } + break; + } + case TextureType.CUBE: + { + gpuTexture.glTarget = gl.TEXTURE_CUBE_MAP; + var _maxSize2 = Math.max(w, h); + if (_maxSize2 > device.capabilities.maxCubeMapTextureSize) { + errorID(9100, _maxSize2, device.capabilities.maxTextureSize); + } + var _glTexUnit2 = device.stateCache.glTexUnits[device.stateCache.texUnit]; + if (_glTexUnit2.glTexture !== gpuTexture.glTexture) { + gl.bindTexture(gl.TEXTURE_CUBE_MAP, gpuTexture.glTexture); + _glTexUnit2.glTexture = gpuTexture.glTexture; + } + if (FormatInfos[gpuTexture.format].isCompressed) { + for (var f = 0; f < 6; ++f) { + w = gpuTexture.width; + h = gpuTexture.height; + for (var _i5 = 0; _i5 < gpuTexture.mipLevel; ++_i5) { + var _imgSize2 = FormatSize(gpuTexture.format, w, h, 1); + var _view2 = new Uint8Array(_imgSize2); + gl.compressedTexImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + f, _i5, gpuTexture.glInternalFmt, w, h, 0, _view2); + w = Math.max(1, w >> 1); + h = Math.max(1, h >> 1); + } + } + } else { + for (var _f2 = 0; _f2 < 6; ++_f2) { + w = gpuTexture.width; + h = gpuTexture.height; + for (var _i6 = 0; _i6 < gpuTexture.mipLevel; ++_i6) { + gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + _f2, _i6, gpuTexture.glInternalFmt, w, h, 0, gpuTexture.glFormat, gpuTexture.glType, null); + w = Math.max(1, w >> 1); + h = Math.max(1, h >> 1); + } + } + } + break; + } + default: + { + error('Unsupported TextureType, create texture failed.'); + gpuTexture.type = TextureType.TEX2D; + gpuTexture.glTarget = gl.TEXTURE_2D; + } + } + } + function WebGLCmdFuncCreateFramebuffer(device, gpuFramebuffer) { + for (var i = 0; i < gpuFramebuffer.gpuColorTextures.length; ++i) { + var tex = gpuFramebuffer.gpuColorTextures[i]; + if (tex.isSwapchainTexture) { + gpuFramebuffer.isOffscreen = false; + return; + } + } + var gl = device.gl; + var attachments = []; + var glFramebuffer = gl.createFramebuffer(); + if (glFramebuffer) { + gpuFramebuffer.glFramebuffer = glFramebuffer; + if (device.stateCache.glFramebuffer !== gpuFramebuffer.glFramebuffer) { + gl.bindFramebuffer(gl.FRAMEBUFFER, gpuFramebuffer.glFramebuffer); + } + for (var _i7 = 0; _i7 < gpuFramebuffer.gpuColorTextures.length; ++_i7) { + var gpuTexture = gpuFramebuffer.gpuColorTextures[_i7]; + if (gpuTexture) { + if (gpuTexture.glTexture) { + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + _i7, gpuTexture.glTarget, gpuTexture.glTexture, 0); + } else { + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + _i7, gl.RENDERBUFFER, gpuTexture.glRenderbuffer); + } + attachments.push(gl.COLOR_ATTACHMENT0 + _i7); + gpuFramebuffer.width = Math.min(gpuFramebuffer.width, gpuTexture.width); + gpuFramebuffer.height = Math.min(gpuFramebuffer.height, gpuTexture.height); + } + } + var dst = gpuFramebuffer.gpuDepthStencilTexture; + if (dst) { + var glAttachment = FormatInfos[dst.format].hasStencil ? gl.DEPTH_STENCIL_ATTACHMENT : gl.DEPTH_ATTACHMENT; + if (dst.glTexture) { + gl.framebufferTexture2D(gl.FRAMEBUFFER, glAttachment, dst.glTarget, dst.glTexture, 0); + } else { + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, glAttachment, gl.RENDERBUFFER, dst.glRenderbuffer); + } + gpuFramebuffer.width = Math.min(gpuFramebuffer.width, dst.width); + gpuFramebuffer.height = Math.min(gpuFramebuffer.height, dst.height); + } + if (device.extensions.WEBGL_draw_buffers) { + device.extensions.WEBGL_draw_buffers.drawBuffersWEBGL(attachments); + } + var status = gl.checkFramebufferStatus(gl.FRAMEBUFFER); + if (status !== gl.FRAMEBUFFER_COMPLETE) { + switch (status) { + case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT: + { + error('glCheckFramebufferStatus() - FRAMEBUFFER_INCOMPLETE_ATTACHMENT'); + break; + } + case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: + { + error('glCheckFramebufferStatus() - FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT'); + break; + } + case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS: + { + error('glCheckFramebufferStatus() - FRAMEBUFFER_INCOMPLETE_DIMENSIONS'); + break; + } + case gl.FRAMEBUFFER_UNSUPPORTED: + { + error('glCheckFramebufferStatus() - FRAMEBUFFER_UNSUPPORTED'); + break; + } + } + } + if (device.stateCache.glFramebuffer !== gpuFramebuffer.glFramebuffer) { + gl.bindFramebuffer(gl.FRAMEBUFFER, device.stateCache.glFramebuffer); + } + } + } + function WebGLCmdFuncDestroyFramebuffer(device, gpuFramebuffer) { + if (gpuFramebuffer.glFramebuffer) { + device.gl.deleteFramebuffer(gpuFramebuffer.glFramebuffer); + if (device.stateCache.glFramebuffer === gpuFramebuffer.glFramebuffer) { + device.gl.bindFramebuffer(device.gl.FRAMEBUFFER, null); + device.stateCache.glFramebuffer = null; + } + gpuFramebuffer.glFramebuffer = null; + } + } + function WebGLCmdFuncCreateShader(device, gpuShader) { + var gl = device.gl; + var _loop = function _loop() { + var gpuStage = gpuShader.gpuStages[k]; + var glShaderType = 0; + var shaderTypeStr = ''; + var lineNumber = 1; + switch (gpuStage.type) { + case ShaderStageFlagBit.VERTEX: + { + shaderTypeStr = 'VertexShader'; + glShaderType = gl.VERTEX_SHADER; + break; + } + case ShaderStageFlagBit.FRAGMENT: + { + shaderTypeStr = 'FragmentShader'; + glShaderType = gl.FRAGMENT_SHADER; + break; + } + default: + { + error('Unsupported ShaderType.'); + return { + v: void 0 + }; + } + } + var glShader = gl.createShader(glShaderType); + if (glShader) { + gpuStage.glShader = glShader; + gl.shaderSource(gpuStage.glShader, gpuStage.source); + gl.compileShader(gpuStage.glShader); + if (!gl.getShaderParameter(gpuStage.glShader, gl.COMPILE_STATUS)) { + error(shaderTypeStr + " in '" + gpuShader.name + "' compilation failed."); + error('Shader source dump:', gpuStage.source.replace(/^|\n/g, function () { + return "\n" + lineNumber++ + " "; + })); + error(gl.getShaderInfoLog(gpuStage.glShader)); + for (var l = 0; l < gpuShader.gpuStages.length; l++) { + var stage = gpuShader.gpuStages[k]; + if (stage.glShader) { + gl.deleteShader(stage.glShader); + stage.glShader = null; + } + } + return { + v: void 0 + }; + } + } + }, + _ret; + for (var k = 0; k < gpuShader.gpuStages.length; k++) { + _ret = _loop(); + if (_ret) return _ret.v; + } + var glProgram = gl.createProgram(); + if (!glProgram) { + return; + } + gpuShader.glProgram = glProgram; + for (var _k = 0; _k < gpuShader.gpuStages.length; _k++) { + var gpuStage = gpuShader.gpuStages[_k]; + gl.attachShader(gpuShader.glProgram, gpuStage.glShader); + } + gl.linkProgram(gpuShader.glProgram); + if (device.extensions.destroyShadersImmediately) { + for (var _k2 = 0; _k2 < gpuShader.gpuStages.length; _k2++) { + var _gpuStage = gpuShader.gpuStages[_k2]; + if (_gpuStage.glShader) { + gl.detachShader(gpuShader.glProgram, _gpuStage.glShader); + gl.deleteShader(_gpuStage.glShader); + _gpuStage.glShader = null; + } + } + } + if (gl.getProgramParameter(gpuShader.glProgram, gl.LINK_STATUS)) { + debug("Shader '" + gpuShader.name + "' compilation succeeded."); + } else { + error("Failed to link shader '" + gpuShader.name + "'."); + error(gl.getProgramInfoLog(gpuShader.glProgram)); + return; + } + var activeAttribCount = gl.getProgramParameter(gpuShader.glProgram, gl.ACTIVE_ATTRIBUTES); + gpuShader.glInputs = new Array(activeAttribCount); + for (var i = 0; i < activeAttribCount; ++i) { + var attribInfo = gl.getActiveAttrib(gpuShader.glProgram, i); + if (attribInfo) { + var varName = void 0; + var nameOffset = attribInfo.name.indexOf('['); + if (nameOffset !== -1) { + varName = attribInfo.name.substr(0, nameOffset); + } else { + varName = attribInfo.name; + } + var glLoc = gl.getAttribLocation(gpuShader.glProgram, varName); + var type = WebGLTypeToGFXType$1(attribInfo.type, gl); + var stride = WebGLGetTypeSize$1(attribInfo.type, gl); + gpuShader.glInputs[i] = { + binding: glLoc, + name: varName, + type: type, + stride: stride, + count: attribInfo.size, + size: stride * attribInfo.size, + glType: attribInfo.type, + glLoc: glLoc + }; + } + } + if (gpuShader.blocks.length > 0) { + gpuShader.glBlocks = new Array(gpuShader.blocks.length); + for (var _i8 = 0; _i8 < gpuShader.blocks.length; ++_i8) { + var block = gpuShader.blocks[_i8]; + var glBlock = { + set: block.set, + binding: block.binding, + name: block.name, + size: 0, + glUniforms: new Array(block.members.length), + glActiveUniforms: [] + }; + gpuShader.glBlocks[_i8] = glBlock; + for (var u = 0; u < block.members.length; ++u) { + var uniform = block.members[u]; + var glType = GFXTypeToWebGLType$1(uniform.type, gl); + var _stride = WebGLGetTypeSize$1(glType, gl); + var size = _stride * uniform.count; + glBlock.glUniforms[u] = { + binding: -1, + name: uniform.name, + type: uniform.type, + stride: _stride, + count: uniform.count, + size: size, + offset: 0, + glType: glType, + glLoc: null, + array: null + }; + } + } + } + for (var _i9 = 0; _i9 < gpuShader.subpassInputs.length; ++_i9) { + var subpassInput = gpuShader.subpassInputs[_i9]; + gpuShader.samplerTextures.push(new UniformSamplerTexture(subpassInput.set, subpassInput.binding, subpassInput.name, Type$1.SAMPLER2D, subpassInput.count)); + } + if (gpuShader.samplerTextures.length > 0) { + gpuShader.glSamplerTextures = new Array(gpuShader.samplerTextures.length); + for (var _i10 = 0; _i10 < gpuShader.samplerTextures.length; ++_i10) { + var sampler = gpuShader.samplerTextures[_i10]; + gpuShader.glSamplerTextures[_i10] = { + set: sampler.set, + binding: sampler.binding, + name: sampler.name, + type: sampler.type, + count: sampler.count, + units: [], + glUnits: null, + glType: GFXTypeToWebGLType$1(sampler.type, gl), + glLoc: null + }; + } + } + var activeUniformCount = gl.getProgramParameter(gpuShader.glProgram, gl.ACTIVE_UNIFORMS); + for (var _i11 = 0; _i11 < activeUniformCount; ++_i11) { + var uniformInfo = gl.getActiveUniform(gpuShader.glProgram, _i11); + if (uniformInfo) { + var isSampler = uniformInfo.type === gl.SAMPLER_2D || uniformInfo.type === gl.SAMPLER_CUBE; + if (!isSampler) { + var _glLoc = gl.getUniformLocation(gpuShader.glProgram, uniformInfo.name); + if (device.extensions.isLocationActive(_glLoc)) { + var _varName = void 0; + var _nameOffset = uniformInfo.name.indexOf('['); + if (_nameOffset !== -1) { + _varName = uniformInfo.name.substr(0, _nameOffset); + } else { + _varName = uniformInfo.name; + } + for (var j = 0; j < gpuShader.glBlocks.length; j++) { + var _glBlock = gpuShader.glBlocks[j]; + for (var _k3 = 0; _k3 < _glBlock.glUniforms.length; _k3++) { + var glUniform = _glBlock.glUniforms[_k3]; + if (glUniform.name === _varName) { + glUniform.glLoc = _glLoc; + glUniform.count = uniformInfo.size; + glUniform.size = glUniform.stride * glUniform.count; + glUniform.array = new (GFXTypeToTypedArrayCtor(glUniform.type))(glUniform.size / 4); + _glBlock.glActiveUniforms.push(glUniform); + break; + } + } + } + } + } + } + } + for (var _j = 0; _j < gpuShader.glBlocks.length; _j++) { + var _glBlock2 = gpuShader.glBlocks[_j]; + for (var _k4 = 0; _k4 < _glBlock2.glUniforms.length; _k4++) { + var _glUniform = _glBlock2.glUniforms[_k4]; + _glUniform.offset = _glBlock2.size / 4; + _glBlock2.size += _glUniform.size; + } + } + var glActiveSamplers = []; + var glActiveSamplerLocations = []; + var bindingMappings = device.bindingMappings; + var texUnitCacheMap = device.stateCache.texUnitCacheMap; + if (!(legacyCC.rendering && legacyCC.rendering.enableEffectImport)) { + var flexibleSetBaseOffset = 0; + for (var _i12 = 0; _i12 < gpuShader.blocks.length; ++_i12) { + if (gpuShader.blocks[_i12].set === bindingMappings.flexibleSet) { + flexibleSetBaseOffset++; + } + } + var arrayOffset = 0; + for (var _i13 = 0; _i13 < gpuShader.samplerTextures.length; ++_i13) { + var _sampler = gpuShader.samplerTextures[_i13]; + var _glLoc2 = gl.getUniformLocation(gpuShader.glProgram, _sampler.name); + if (device.extensions.isLocationActive(_glLoc2)) { + glActiveSamplers.push(gpuShader.glSamplerTextures[_i13]); + glActiveSamplerLocations.push(_glLoc2); + } + if (texUnitCacheMap[_sampler.name] === undefined) { + var binding = _sampler.binding + bindingMappings.samplerTextureOffsets[_sampler.set] + arrayOffset; + if (_sampler.set === bindingMappings.flexibleSet) { + binding -= flexibleSetBaseOffset; + } + texUnitCacheMap[_sampler.name] = binding % device.capabilities.maxTextureUnits; + arrayOffset += _sampler.count - 1; + } + } + } else { + for (var _i14 = 0; _i14 < gpuShader.samplerTextures.length; ++_i14) { + var _sampler2 = gpuShader.samplerTextures[_i14]; + var _glLoc3 = gl.getUniformLocation(gpuShader.glProgram, _sampler2.name); + if (device.extensions.isLocationActive(_glLoc3)) { + glActiveSamplers.push(gpuShader.glSamplerTextures[_i14]); + glActiveSamplerLocations.push(_glLoc3); + } + if (texUnitCacheMap[_sampler2.name] === undefined) { + texUnitCacheMap[_sampler2.name] = _sampler2.flattened % device.capabilities.maxTextureUnits; + } + } + } + if (glActiveSamplers.length) { + var usedTexUnits = []; + for (var _i15 = 0; _i15 < glActiveSamplers.length; ++_i15) { + var glSampler = glActiveSamplers[_i15]; + var cachedUnit = texUnitCacheMap[glSampler.name]; + if (cachedUnit !== undefined) { + glSampler.glLoc = glActiveSamplerLocations[_i15]; + for (var t = 0; t < glSampler.count; ++t) { + while (usedTexUnits[cachedUnit]) { + cachedUnit = (cachedUnit + 1) % device.capabilities.maxTextureUnits; + } + glSampler.units.push(cachedUnit); + usedTexUnits[cachedUnit] = true; + } + } + } + var unitIdx = 0; + for (var _i16 = 0; _i16 < glActiveSamplers.length; ++_i16) { + var _glSampler = glActiveSamplers[_i16]; + if (!device.extensions.isLocationActive(_glSampler.glLoc)) { + _glSampler.glLoc = glActiveSamplerLocations[_i16]; + for (var _t = 0; _t < _glSampler.count; ++_t) { + while (usedTexUnits[unitIdx]) { + unitIdx = (unitIdx + 1) % device.capabilities.maxTextureUnits; + } + if (texUnitCacheMap[_glSampler.name] === undefined) { + texUnitCacheMap[_glSampler.name] = unitIdx; + } + _glSampler.units.push(unitIdx); + usedTexUnits[unitIdx] = true; + } + } + } + if (device.stateCache.glProgram !== gpuShader.glProgram) { + gl.useProgram(gpuShader.glProgram); + } + for (var _i17 = 0; _i17 < glActiveSamplers.length; _i17++) { + var _glSampler2 = glActiveSamplers[_i17]; + _glSampler2.glUnits = new Int32Array(_glSampler2.units); + gl.uniform1iv(_glSampler2.glLoc, _glSampler2.glUnits); + } + if (device.stateCache.glProgram !== gpuShader.glProgram) { + gl.useProgram(device.stateCache.glProgram); + } + } + for (var _i18 = 0; _i18 < gpuShader.glBlocks.length;) { + if (gpuShader.glBlocks[_i18].glActiveUniforms.length) { + _i18++; + } else { + gpuShader.glBlocks[_i18] = gpuShader.glBlocks[gpuShader.glBlocks.length - 1]; + gpuShader.glBlocks.length--; + } + } + gpuShader.glSamplerTextures = glActiveSamplers; + } + function WebGLCmdFuncDestroyShader(device, gpuShader) { + if (gpuShader.glProgram) { + var gl = device.gl; + if (!device.extensions.destroyShadersImmediately) { + for (var k = 0; k < gpuShader.gpuStages.length; k++) { + var gpuStage = gpuShader.gpuStages[k]; + if (gpuStage.glShader) { + gl.detachShader(gpuShader.glProgram, gpuStage.glShader); + gl.deleteShader(gpuStage.glShader); + gpuStage.glShader = null; + } + } + } + gl.deleteProgram(gpuShader.glProgram); + if (device.stateCache.glProgram === gpuShader.glProgram) { + device.gl.useProgram(null); + device.stateCache.glProgram = null; + } + gpuShader.glProgram = null; + } + } + function WebGLCmdFuncCreateInputAssember(device, gpuInputAssembler) { + var gl = device.gl; + gpuInputAssembler.glAttribs = new Array(gpuInputAssembler.attributes.length); + var offsets = [0, 0, 0, 0, 0, 0, 0, 0]; + for (var i = 0; i < gpuInputAssembler.attributes.length; ++i) { + var attrib = gpuInputAssembler.attributes[i]; + var stream = attrib.stream !== undefined ? attrib.stream : 0; + var gpuBuffer = gpuInputAssembler.gpuVertexBuffers[stream]; + var glType = GFXFormatToWebGLType$1(attrib.format, gl); + var size = FormatInfos[attrib.format].size; + gpuInputAssembler.glAttribs[i] = { + name: attrib.name, + glBuffer: gpuBuffer.glBuffer, + glType: glType, + size: size, + count: FormatInfos[attrib.format].count, + stride: gpuBuffer.stride, + componentCount: WebGLGetComponentCount$1(glType, gl), + isNormalized: attrib.isNormalized !== undefined ? attrib.isNormalized : false, + isInstanced: attrib.isInstanced !== undefined ? attrib.isInstanced : false, + offset: offsets[stream] + }; + offsets[stream] += size; + } + } + function WebGLCmdFuncDestroyInputAssembler(device, gpuInputAssembler) { + var it = gpuInputAssembler.glVAOs.values(); + var res = it.next(); + var OES_vertex_array_object = device.extensions.OES_vertex_array_object; + var glVAO = device.stateCache.glVAO; + while (!res.done) { + OES_vertex_array_object.deleteVertexArrayOES(res.value); + if (glVAO === res.value) { + OES_vertex_array_object.bindVertexArrayOES(null); + glVAO = null; + } + res = it.next(); + } + device.stateCache.glVAO = glVAO; + gpuInputAssembler.glVAOs.clear(); + } + var gfxStateCache$1 = { + gpuPipelineState: null, + gpuInputAssembler: null, + glPrimitive: 0 + }; + var realRenderArea = new Rect(); + function WebGLCmdFuncBeginRenderPass(device, gpuRenderPass, gpuFramebuffer, renderArea, clearColors, clearDepth, clearStencil) { + var gl = device.gl; + var cache = device.stateCache; + var clears = 0; + if (gpuFramebuffer) { + realRenderArea.x = renderArea.x << gpuFramebuffer.lodLevel; + realRenderArea.y = renderArea.y << gpuFramebuffer.lodLevel; + realRenderArea.width = renderArea.width << gpuFramebuffer.lodLevel; + realRenderArea.height = renderArea.height << gpuFramebuffer.lodLevel; + } + if (gpuFramebuffer && gpuRenderPass) { + if (cache.glFramebuffer !== gpuFramebuffer.glFramebuffer) { + gl.bindFramebuffer(gl.FRAMEBUFFER, gpuFramebuffer.glFramebuffer); + cache.glFramebuffer = gpuFramebuffer.glFramebuffer; + } + if (cache.viewport.left !== realRenderArea.x || cache.viewport.top !== realRenderArea.y || cache.viewport.width !== realRenderArea.width || cache.viewport.height !== realRenderArea.height) { + gl.viewport(realRenderArea.x, realRenderArea.y, realRenderArea.width, realRenderArea.height); + cache.viewport.left = realRenderArea.x; + cache.viewport.top = realRenderArea.y; + cache.viewport.width = realRenderArea.width; + cache.viewport.height = realRenderArea.height; + } + if (cache.scissorRect.x !== realRenderArea.x || cache.scissorRect.y !== realRenderArea.y || cache.scissorRect.width !== realRenderArea.width || cache.scissorRect.height !== realRenderArea.height) { + gl.scissor(realRenderArea.x, realRenderArea.y, realRenderArea.width, realRenderArea.height); + cache.scissorRect.x = realRenderArea.x; + cache.scissorRect.y = realRenderArea.y; + cache.scissorRect.width = realRenderArea.width; + cache.scissorRect.height = realRenderArea.height; + } + var clearCount = clearColors.length; + if (!device.extensions.WEBGL_draw_buffers) { + clearCount = 1; + } + for (var j = 0; j < clearCount; ++j) { + var colorAttachment = gpuRenderPass.colorAttachments[j]; + if (colorAttachment.format !== Format.UNKNOWN) { + switch (colorAttachment.loadOp) { + case LoadOp.LOAD: + break; + case LoadOp.CLEAR: + { + if (cache.bs.targets[0].blendColorMask !== ColorMask.ALL) { + gl.colorMask(true, true, true, true); + } + var clearColor = clearColors[0]; + gl.clearColor(clearColor.x, clearColor.y, clearColor.z, clearColor.w); + clears |= gl.COLOR_BUFFER_BIT; + break; + } + case LoadOp.DISCARD: + { + break; + } + } + } + } + if (gpuRenderPass.depthStencilAttachment) { + if (gpuRenderPass.depthStencilAttachment.format !== Format.UNKNOWN) { + switch (gpuRenderPass.depthStencilAttachment.depthLoadOp) { + case LoadOp.LOAD: + break; + case LoadOp.CLEAR: + { + if (!cache.dss.depthWrite) { + gl.depthMask(true); + } + gl.clearDepth(clearDepth); + clears |= gl.DEPTH_BUFFER_BIT; + break; + } + case LoadOp.DISCARD: + { + break; + } + } + if (FormatInfos[gpuRenderPass.depthStencilAttachment.format].hasStencil) { + switch (gpuRenderPass.depthStencilAttachment.stencilLoadOp) { + case LoadOp.LOAD: + break; + case LoadOp.CLEAR: + { + if (!cache.dss.stencilWriteMaskFront) { + gl.stencilMaskSeparate(gl.FRONT, 0xffff); + } + if (!cache.dss.stencilWriteMaskBack) { + gl.stencilMaskSeparate(gl.BACK, 0xffff); + } + gl.clearStencil(clearStencil); + clears |= gl.STENCIL_BUFFER_BIT; + break; + } + case LoadOp.DISCARD: + { + break; + } + } + } + } + } + if (clears) { + gl.clear(clears); + } + if (clears & gl.COLOR_BUFFER_BIT) { + var colorMask = cache.bs.targets[0].blendColorMask; + if (colorMask !== ColorMask.ALL) { + var r = (colorMask & ColorMask.R) !== ColorMask.NONE; + var g = (colorMask & ColorMask.G) !== ColorMask.NONE; + var b = (colorMask & ColorMask.B) !== ColorMask.NONE; + var a = (colorMask & ColorMask.A) !== ColorMask.NONE; + gl.colorMask(r, g, b, a); + } + } + if (clears & gl.DEPTH_BUFFER_BIT && !cache.dss.depthWrite) { + gl.depthMask(false); + } + if (clears & gl.STENCIL_BUFFER_BIT) { + if (!cache.dss.stencilWriteMaskFront) { + gl.stencilMaskSeparate(gl.FRONT, 0); + } + if (!cache.dss.stencilWriteMaskBack) { + gl.stencilMaskSeparate(gl.BACK, 0); + } + } + } + } + function WebGLCmdFuncBindStates(device, gpuPipelineState, gpuInputAssembler, gpuDescriptorSets, dynamicOffsets, dynamicStates) { + var gl = device.gl; + var cache = device.stateCache; + var gpuShader = gpuPipelineState && gpuPipelineState.gpuShader; + var isShaderChanged = false; + var glWrapS; + var glWrapT; + var glMinFilter; + if (gpuPipelineState && gfxStateCache$1.gpuPipelineState !== gpuPipelineState) { + gfxStateCache$1.gpuPipelineState = gpuPipelineState; + gfxStateCache$1.glPrimitive = gpuPipelineState.glPrimitive; + if (gpuPipelineState.gpuShader) { + var glProgram = gpuPipelineState.gpuShader.glProgram; + if (cache.glProgram !== glProgram) { + gl.useProgram(glProgram); + cache.glProgram = glProgram; + isShaderChanged = true; + } + } + var rs = gpuPipelineState.rs; + if (rs) { + if (cache.rs.cullMode !== rs.cullMode) { + switch (rs.cullMode) { + case CullMode.NONE: + { + gl.disable(gl.CULL_FACE); + break; + } + case CullMode.FRONT: + { + gl.enable(gl.CULL_FACE); + gl.cullFace(gl.FRONT); + break; + } + case CullMode.BACK: + { + gl.enable(gl.CULL_FACE); + gl.cullFace(gl.BACK); + break; + } + } + cache.rs.cullMode = rs.cullMode; + } + var isFrontFaceCCW = rs.isFrontFaceCCW; + if (cache.rs.isFrontFaceCCW !== isFrontFaceCCW) { + gl.frontFace(isFrontFaceCCW ? gl.CCW : gl.CW); + cache.rs.isFrontFaceCCW = isFrontFaceCCW; + } + if (cache.rs.depthBias !== rs.depthBias || cache.rs.depthBiasSlop !== rs.depthBiasSlop) { + gl.polygonOffset(rs.depthBias, rs.depthBiasSlop); + cache.rs.depthBias = rs.depthBias; + cache.rs.depthBiasSlop = rs.depthBiasSlop; + } + if (cache.rs.lineWidth !== rs.lineWidth) { + gl.lineWidth(rs.lineWidth); + cache.rs.lineWidth = rs.lineWidth; + } + } + var dss = gpuPipelineState.dss; + if (dss) { + if (cache.dss.depthTest !== dss.depthTest) { + if (dss.depthTest) { + gl.enable(gl.DEPTH_TEST); + } else { + gl.disable(gl.DEPTH_TEST); + } + cache.dss.depthTest = dss.depthTest; + } + if (cache.dss.depthWrite !== dss.depthWrite) { + gl.depthMask(dss.depthWrite); + cache.dss.depthWrite = dss.depthWrite; + } + if (cache.dss.depthFunc !== dss.depthFunc) { + gl.depthFunc(WebGLCmpFuncs$1[dss.depthFunc]); + cache.dss.depthFunc = dss.depthFunc; + } + if (cache.dss.stencilTestFront !== dss.stencilTestFront || cache.dss.stencilTestBack !== dss.stencilTestBack) { + if (dss.stencilTestFront || dss.stencilTestBack) { + gl.enable(gl.STENCIL_TEST); + } else { + gl.disable(gl.STENCIL_TEST); + } + cache.dss.stencilTestFront = dss.stencilTestFront; + cache.dss.stencilTestBack = dss.stencilTestBack; + } + if (cache.dss.stencilFuncFront !== dss.stencilFuncFront || cache.dss.stencilRefFront !== dss.stencilRefFront || cache.dss.stencilReadMaskFront !== dss.stencilReadMaskFront) { + gl.stencilFuncSeparate(gl.FRONT, WebGLCmpFuncs$1[dss.stencilFuncFront], dss.stencilRefFront, dss.stencilReadMaskFront); + cache.dss.stencilFuncFront = dss.stencilFuncFront; + cache.dss.stencilRefFront = dss.stencilRefFront; + cache.dss.stencilReadMaskFront = dss.stencilReadMaskFront; + } + if (cache.dss.stencilFailOpFront !== dss.stencilFailOpFront || cache.dss.stencilZFailOpFront !== dss.stencilZFailOpFront || cache.dss.stencilPassOpFront !== dss.stencilPassOpFront) { + gl.stencilOpSeparate(gl.FRONT, WebGLStencilOps$1[dss.stencilFailOpFront], WebGLStencilOps$1[dss.stencilZFailOpFront], WebGLStencilOps$1[dss.stencilPassOpFront]); + cache.dss.stencilFailOpFront = dss.stencilFailOpFront; + cache.dss.stencilZFailOpFront = dss.stencilZFailOpFront; + cache.dss.stencilPassOpFront = dss.stencilPassOpFront; + } + if (cache.dss.stencilWriteMaskFront !== dss.stencilWriteMaskFront) { + gl.stencilMaskSeparate(gl.FRONT, dss.stencilWriteMaskFront); + cache.dss.stencilWriteMaskFront = dss.stencilWriteMaskFront; + } + if (cache.dss.stencilFuncBack !== dss.stencilFuncBack || cache.dss.stencilRefBack !== dss.stencilRefBack || cache.dss.stencilReadMaskBack !== dss.stencilReadMaskBack) { + gl.stencilFuncSeparate(gl.BACK, WebGLCmpFuncs$1[dss.stencilFuncBack], dss.stencilRefBack, dss.stencilReadMaskBack); + cache.dss.stencilFuncBack = dss.stencilFuncBack; + cache.dss.stencilRefBack = dss.stencilRefBack; + cache.dss.stencilReadMaskBack = dss.stencilReadMaskBack; + } + if (cache.dss.stencilFailOpBack !== dss.stencilFailOpBack || cache.dss.stencilZFailOpBack !== dss.stencilZFailOpBack || cache.dss.stencilPassOpBack !== dss.stencilPassOpBack) { + gl.stencilOpSeparate(gl.BACK, WebGLStencilOps$1[dss.stencilFailOpBack], WebGLStencilOps$1[dss.stencilZFailOpBack], WebGLStencilOps$1[dss.stencilPassOpBack]); + cache.dss.stencilFailOpBack = dss.stencilFailOpBack; + cache.dss.stencilZFailOpBack = dss.stencilZFailOpBack; + cache.dss.stencilPassOpBack = dss.stencilPassOpBack; + } + if (cache.dss.stencilWriteMaskBack !== dss.stencilWriteMaskBack) { + gl.stencilMaskSeparate(gl.BACK, dss.stencilWriteMaskBack); + cache.dss.stencilWriteMaskBack = dss.stencilWriteMaskBack; + } + } + var bs = gpuPipelineState.bs; + if (bs) { + if (cache.bs.isA2C !== bs.isA2C) { + if (bs.isA2C) { + gl.enable(gl.SAMPLE_ALPHA_TO_COVERAGE); + } else { + gl.disable(gl.SAMPLE_ALPHA_TO_COVERAGE); + } + cache.bs.isA2C = bs.isA2C; + } + if (cache.bs.blendColor.x !== bs.blendColor.x || cache.bs.blendColor.y !== bs.blendColor.y || cache.bs.blendColor.z !== bs.blendColor.z || cache.bs.blendColor.w !== bs.blendColor.w) { + gl.blendColor(bs.blendColor.x, bs.blendColor.y, bs.blendColor.z, bs.blendColor.w); + cache.bs.blendColor.x = bs.blendColor.x; + cache.bs.blendColor.y = bs.blendColor.y; + cache.bs.blendColor.z = bs.blendColor.z; + cache.bs.blendColor.w = bs.blendColor.w; + } + var target0 = bs.targets[0]; + var target0Cache = cache.bs.targets[0]; + if (target0Cache.blend !== target0.blend) { + if (target0.blend) { + gl.enable(gl.BLEND); + } else { + gl.disable(gl.BLEND); + } + target0Cache.blend = target0.blend; + } + if (target0Cache.blendEq !== target0.blendEq || target0Cache.blendAlphaEq !== target0.blendAlphaEq) { + gl.blendEquationSeparate(WebGLBlendOps$1[target0.blendEq], WebGLBlendOps$1[target0.blendAlphaEq]); + target0Cache.blendEq = target0.blendEq; + target0Cache.blendAlphaEq = target0.blendAlphaEq; + } + if (target0Cache.blendSrc !== target0.blendSrc || target0Cache.blendDst !== target0.blendDst || target0Cache.blendSrcAlpha !== target0.blendSrcAlpha || target0Cache.blendDstAlpha !== target0.blendDstAlpha) { + gl.blendFuncSeparate(WebGLBlendFactors$1[target0.blendSrc], WebGLBlendFactors$1[target0.blendDst], WebGLBlendFactors$1[target0.blendSrcAlpha], WebGLBlendFactors$1[target0.blendDstAlpha]); + target0Cache.blendSrc = target0.blendSrc; + target0Cache.blendDst = target0.blendDst; + target0Cache.blendSrcAlpha = target0.blendSrcAlpha; + target0Cache.blendDstAlpha = target0.blendDstAlpha; + } + if (target0Cache.blendColorMask !== target0.blendColorMask) { + gl.colorMask((target0.blendColorMask & ColorMask.R) !== ColorMask.NONE, (target0.blendColorMask & ColorMask.G) !== ColorMask.NONE, (target0.blendColorMask & ColorMask.B) !== ColorMask.NONE, (target0.blendColorMask & ColorMask.A) !== ColorMask.NONE); + target0Cache.blendColorMask = target0.blendColorMask; + } + } + } + if (gpuPipelineState && gpuPipelineState.gpuPipelineLayout && gpuShader) { + var blockLen = gpuShader.glBlocks.length; + var dynamicOffsetIndices = gpuPipelineState.gpuPipelineLayout.dynamicOffsetIndices; + for (var j = 0; j < blockLen; j++) { + var glBlock = gpuShader.glBlocks[j]; + var gpuDescriptorSet = gpuDescriptorSets[glBlock.set]; + var descriptorIdx = gpuDescriptorSet && gpuDescriptorSet.descriptorIndices[glBlock.binding]; + var gpuDescriptor = descriptorIdx >= 0 && gpuDescriptorSet.gpuDescriptors[descriptorIdx]; + var vf32 = null; + var offset = 0; + if (gpuDescriptor && gpuDescriptor.gpuBuffer) { + var gpuBuffer = gpuDescriptor.gpuBuffer; + var dynamicOffsetIndexSet = dynamicOffsetIndices[glBlock.set]; + var dynamicOffsetIndex = dynamicOffsetIndexSet && dynamicOffsetIndexSet[glBlock.binding]; + if (dynamicOffsetIndex >= 0) { + offset = dynamicOffsets[dynamicOffsetIndex]; + } + if ('vf32' in gpuBuffer) { + vf32 = gpuBuffer.vf32; + } else { + offset += gpuBuffer.offset; + vf32 = gpuBuffer.gpuBuffer.vf32; + } + offset >>= 2; + } + if (!vf32) { + continue; + } + var uniformLen = glBlock.glActiveUniforms.length; + for (var l = 0; l < uniformLen; l++) { + var glUniform = glBlock.glActiveUniforms[l]; + switch (glUniform.glType) { + case gl.BOOL: + case gl.INT: + { + for (var u = 0; u < glUniform.array.length; ++u) { + var idx = glUniform.offset + offset + u; + if (vf32[idx] !== glUniform.array[u]) { + for (var n = u, m = idx; n < glUniform.array.length; ++n, ++m) { + glUniform.array[n] = vf32[m]; + } + gl.uniform1iv(glUniform.glLoc, glUniform.array); + break; + } + } + break; + } + case gl.BOOL_VEC2: + case gl.INT_VEC2: + { + for (var _u = 0; _u < glUniform.array.length; ++_u) { + var _idx = glUniform.offset + offset + _u; + if (vf32[_idx] !== glUniform.array[_u]) { + for (var _n = _u, _m = _idx; _n < glUniform.array.length; ++_n, ++_m) { + glUniform.array[_n] = vf32[_m]; + } + gl.uniform2iv(glUniform.glLoc, glUniform.array); + break; + } + } + break; + } + case gl.BOOL_VEC3: + case gl.INT_VEC3: + { + for (var _u2 = 0; _u2 < glUniform.array.length; ++_u2) { + var _idx2 = glUniform.offset + offset + _u2; + if (vf32[_idx2] !== glUniform.array[_u2]) { + for (var _n2 = _u2, _m2 = _idx2; _n2 < glUniform.array.length; ++_n2, ++_m2) { + glUniform.array[_n2] = vf32[_m2]; + } + gl.uniform3iv(glUniform.glLoc, glUniform.array); + break; + } + } + break; + } + case gl.BOOL_VEC4: + case gl.INT_VEC4: + { + for (var _u3 = 0; _u3 < glUniform.array.length; ++_u3) { + var _idx3 = glUniform.offset + offset + _u3; + if (vf32[_idx3] !== glUniform.array[_u3]) { + for (var _n3 = _u3, _m3 = _idx3; _n3 < glUniform.array.length; ++_n3, ++_m3) { + glUniform.array[_n3] = vf32[_m3]; + } + gl.uniform4iv(glUniform.glLoc, glUniform.array); + break; + } + } + break; + } + case gl.FLOAT: + { + for (var _u4 = 0; _u4 < glUniform.array.length; ++_u4) { + var _idx4 = glUniform.offset + offset + _u4; + if (vf32[_idx4] !== glUniform.array[_u4]) { + for (var _n4 = _u4, _m4 = _idx4; _n4 < glUniform.array.length; ++_n4, ++_m4) { + glUniform.array[_n4] = vf32[_m4]; + } + gl.uniform1fv(glUniform.glLoc, glUniform.array); + break; + } + } + break; + } + case gl.FLOAT_VEC2: + { + for (var _u5 = 0; _u5 < glUniform.array.length; ++_u5) { + var _idx5 = glUniform.offset + offset + _u5; + if (vf32[_idx5] !== glUniform.array[_u5]) { + for (var _n5 = _u5, _m5 = _idx5; _n5 < glUniform.array.length; ++_n5, ++_m5) { + glUniform.array[_n5] = vf32[_m5]; + } + gl.uniform2fv(glUniform.glLoc, glUniform.array); + break; + } + } + break; + } + case gl.FLOAT_VEC3: + { + for (var _u6 = 0; _u6 < glUniform.array.length; ++_u6) { + var _idx6 = glUniform.offset + offset + _u6; + if (vf32[_idx6] !== glUniform.array[_u6]) { + for (var _n6 = _u6, _m6 = _idx6; _n6 < glUniform.array.length; ++_n6, ++_m6) { + glUniform.array[_n6] = vf32[_m6]; + } + gl.uniform3fv(glUniform.glLoc, glUniform.array); + break; + } + } + break; + } + case gl.FLOAT_VEC4: + { + for (var _u7 = 0; _u7 < glUniform.array.length; ++_u7) { + var _idx7 = glUniform.offset + offset + _u7; + if (vf32[_idx7] !== glUniform.array[_u7]) { + for (var _n7 = _u7, _m7 = _idx7; _n7 < glUniform.array.length; ++_n7, ++_m7) { + glUniform.array[_n7] = vf32[_m7]; + } + gl.uniform4fv(glUniform.glLoc, glUniform.array); + break; + } + } + break; + } + case gl.FLOAT_MAT2: + { + for (var _u8 = 0; _u8 < glUniform.array.length; ++_u8) { + var _idx8 = glUniform.offset + offset + _u8; + if (vf32[_idx8] !== glUniform.array[_u8]) { + for (var _n8 = _u8, _m8 = _idx8; _n8 < glUniform.array.length; ++_n8, ++_m8) { + glUniform.array[_n8] = vf32[_m8]; + } + gl.uniformMatrix2fv(glUniform.glLoc, false, glUniform.array); + break; + } + } + break; + } + case gl.FLOAT_MAT3: + { + for (var _u9 = 0; _u9 < glUniform.array.length; ++_u9) { + var _idx9 = glUniform.offset + offset + _u9; + if (vf32[_idx9] !== glUniform.array[_u9]) { + for (var _n9 = _u9, _m9 = _idx9; _n9 < glUniform.array.length; ++_n9, ++_m9) { + glUniform.array[_n9] = vf32[_m9]; + } + gl.uniformMatrix3fv(glUniform.glLoc, false, glUniform.array); + break; + } + } + break; + } + case gl.FLOAT_MAT4: + { + for (var _u10 = 0; _u10 < glUniform.array.length; ++_u10) { + var _idx10 = glUniform.offset + offset + _u10; + if (vf32[_idx10] !== glUniform.array[_u10]) { + for (var _n10 = _u10, _m10 = _idx10; _n10 < glUniform.array.length; ++_n10, ++_m10) { + glUniform.array[_n10] = vf32[_m10]; + } + gl.uniformMatrix4fv(glUniform.glLoc, false, glUniform.array); + break; + } + } + break; + } + } + } + continue; + } + var samplerLen = gpuShader.glSamplerTextures.length; + for (var i = 0; i < samplerLen; i++) { + var glSampler = gpuShader.glSamplerTextures[i]; + var _gpuDescriptorSet = gpuDescriptorSets[glSampler.set]; + var descriptorIndex = _gpuDescriptorSet && _gpuDescriptorSet.descriptorIndices[glSampler.binding]; + var _gpuDescriptor = descriptorIndex >= 0 && _gpuDescriptorSet.gpuDescriptors[descriptorIndex]; + var texUnitLen = glSampler.units.length; + for (var _l = 0; _l < texUnitLen; _l++) { + var texUnit = glSampler.units[_l]; + if (!_gpuDescriptor || !_gpuDescriptor.gpuSampler) { + continue; + } + if (_gpuDescriptor.gpuTexture && _gpuDescriptor.gpuTexture.size > 0) { + var _gpuDescriptor2 = _gpuDescriptor, + gpuTexture = _gpuDescriptor2.gpuTexture; + var glTexUnit = cache.glTexUnits[texUnit]; + if (glTexUnit.glTexture !== gpuTexture.glTexture) { + if (cache.texUnit !== texUnit) { + gl.activeTexture(gl.TEXTURE0 + texUnit); + cache.texUnit = texUnit; + } + if (gpuTexture.glTexture) { + gl.bindTexture(gpuTexture.glTarget, gpuTexture.glTexture); + } else { + gl.bindTexture(gpuTexture.glTarget, device.nullTex2D.gpuTexture.glTexture); + } + glTexUnit.glTexture = gpuTexture.glTexture; + } + var _gpuDescriptor3 = _gpuDescriptor, + gpuSampler = _gpuDescriptor3.gpuSampler; + if (gpuTexture.isPowerOf2) { + glWrapS = gpuSampler.glWrapS; + glWrapT = gpuSampler.glWrapT; + } else { + glWrapS = gl.CLAMP_TO_EDGE; + glWrapT = gl.CLAMP_TO_EDGE; + } + if (gpuTexture.isPowerOf2) { + if (gpuTexture.mipLevel <= 1 && (gpuSampler.glMinFilter === gl.LINEAR_MIPMAP_NEAREST || gpuSampler.glMinFilter === gl.LINEAR_MIPMAP_LINEAR)) { + glMinFilter = gl.LINEAR; + } else { + glMinFilter = gpuSampler.glMinFilter; + } + } else if (gpuSampler.glMinFilter === gl.LINEAR || gpuSampler.glMinFilter === gl.LINEAR_MIPMAP_NEAREST || gpuSampler.glMinFilter === gl.LINEAR_MIPMAP_LINEAR) { + glMinFilter = gl.LINEAR; + } else { + glMinFilter = gl.NEAREST; + } + if (gpuTexture.glWrapS !== glWrapS) { + if (cache.texUnit !== texUnit) { + gl.activeTexture(gl.TEXTURE0 + texUnit); + cache.texUnit = texUnit; + } + gl.texParameteri(gpuTexture.glTarget, gl.TEXTURE_WRAP_S, glWrapS); + gpuTexture.glWrapS = glWrapS; + } + if (gpuTexture.glWrapT !== glWrapT) { + if (cache.texUnit !== texUnit) { + gl.activeTexture(gl.TEXTURE0 + texUnit); + cache.texUnit = texUnit; + } + gl.texParameteri(gpuTexture.glTarget, gl.TEXTURE_WRAP_T, glWrapT); + gpuTexture.glWrapT = glWrapT; + } + if (gpuTexture.glMinFilter !== glMinFilter) { + if (cache.texUnit !== texUnit) { + gl.activeTexture(gl.TEXTURE0 + texUnit); + cache.texUnit = texUnit; + } + gl.texParameteri(gpuTexture.glTarget, gl.TEXTURE_MIN_FILTER, glMinFilter); + gpuTexture.glMinFilter = glMinFilter; + } + if (gpuTexture.glMagFilter !== gpuSampler.glMagFilter) { + if (cache.texUnit !== texUnit) { + gl.activeTexture(gl.TEXTURE0 + texUnit); + cache.texUnit = texUnit; + } + gl.texParameteri(gpuTexture.glTarget, gl.TEXTURE_MAG_FILTER, gpuSampler.glMagFilter); + gpuTexture.glMagFilter = gpuSampler.glMagFilter; + } + } + _gpuDescriptor = _gpuDescriptorSet.gpuDescriptors[++descriptorIndex]; + } + } + } + if (gpuInputAssembler && gpuShader && (isShaderChanged || gfxStateCache$1.gpuInputAssembler !== gpuInputAssembler)) { + gfxStateCache$1.gpuInputAssembler = gpuInputAssembler; + var ia = device.extensions.ANGLE_instanced_arrays; + if (device.extensions.useVAO) { + var vao = device.extensions.OES_vertex_array_object; + var glVAO = gpuInputAssembler.glVAOs.get(gpuShader.glProgram); + if (!glVAO) { + glVAO = vao.createVertexArrayOES(); + gpuInputAssembler.glVAOs.set(gpuShader.glProgram, glVAO); + vao.bindVertexArrayOES(glVAO); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + cache.glArrayBuffer = null; + cache.glElementArrayBuffer = null; + var glAttrib; + var inputLen = gpuShader.glInputs.length; + for (var _j2 = 0; _j2 < inputLen; _j2++) { + var glInput = gpuShader.glInputs[_j2]; + glAttrib = null; + var attribLen = gpuInputAssembler.glAttribs.length; + for (var k = 0; k < attribLen; k++) { + var attrib = gpuInputAssembler.glAttribs[k]; + if (attrib.name === glInput.name) { + glAttrib = attrib; + break; + } + } + if (glAttrib) { + if (cache.glArrayBuffer !== glAttrib.glBuffer) { + gl.bindBuffer(gl.ARRAY_BUFFER, glAttrib.glBuffer); + cache.glArrayBuffer = glAttrib.glBuffer; + } + for (var c = 0; c < glAttrib.componentCount; ++c) { + var glLoc = glInput.glLoc + c; + var attribOffset = glAttrib.offset + glAttrib.size * c; + gl.enableVertexAttribArray(glLoc); + cache.glCurrentAttribLocs[glLoc] = true; + gl.vertexAttribPointer(glLoc, glAttrib.count, glAttrib.glType, glAttrib.isNormalized, glAttrib.stride, attribOffset); + if (ia) { + ia.vertexAttribDivisorANGLE(glLoc, glAttrib.isInstanced ? 1 : 0); + } + } + } + } + var _gpuBuffer = gpuInputAssembler.gpuIndexBuffer; + if (_gpuBuffer) { + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, _gpuBuffer.glBuffer); + } + vao.bindVertexArrayOES(null); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + cache.glArrayBuffer = null; + cache.glElementArrayBuffer = null; + } + if (cache.glVAO !== glVAO) { + vao.bindVertexArrayOES(glVAO); + cache.glVAO = glVAO; + } + } else { + for (var a = 0; a < device.capabilities.maxVertexAttributes; ++a) { + cache.glCurrentAttribLocs[a] = false; + } + var _inputLen = gpuShader.glInputs.length; + for (var _j3 = 0; _j3 < _inputLen; _j3++) { + var _glInput = gpuShader.glInputs[_j3]; + var _glAttrib = null; + var _attribLen = gpuInputAssembler.glAttribs.length; + for (var _k5 = 0; _k5 < _attribLen; _k5++) { + var _attrib = gpuInputAssembler.glAttribs[_k5]; + if (_attrib.name === _glInput.name) { + _glAttrib = _attrib; + break; + } + } + if (_glAttrib) { + if (cache.glArrayBuffer !== _glAttrib.glBuffer) { + gl.bindBuffer(gl.ARRAY_BUFFER, _glAttrib.glBuffer); + cache.glArrayBuffer = _glAttrib.glBuffer; + } + for (var _c = 0; _c < _glAttrib.componentCount; ++_c) { + var _glLoc4 = _glInput.glLoc + _c; + var _attribOffset = _glAttrib.offset + _glAttrib.size * _c; + if (!cache.glEnabledAttribLocs[_glLoc4] && _glLoc4 >= 0) { + gl.enableVertexAttribArray(_glLoc4); + cache.glEnabledAttribLocs[_glLoc4] = true; + } + cache.glCurrentAttribLocs[_glLoc4] = true; + gl.vertexAttribPointer(_glLoc4, _glAttrib.count, _glAttrib.glType, _glAttrib.isNormalized, _glAttrib.stride, _attribOffset); + if (ia) { + ia.vertexAttribDivisorANGLE(_glLoc4, _glAttrib.isInstanced ? 1 : 0); + } + } + } + } + var _gpuBuffer2 = gpuInputAssembler.gpuIndexBuffer; + if (_gpuBuffer2) { + if (cache.glElementArrayBuffer !== _gpuBuffer2.glBuffer) { + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, _gpuBuffer2.glBuffer); + cache.glElementArrayBuffer = _gpuBuffer2.glBuffer; + } + } + for (var _a = 0; _a < device.capabilities.maxVertexAttributes; ++_a) { + if (cache.glEnabledAttribLocs[_a] !== cache.glCurrentAttribLocs[_a]) { + gl.disableVertexAttribArray(_a); + cache.glEnabledAttribLocs[_a] = false; + } + } + } + } + if (gpuPipelineState && gpuPipelineState.dynamicStates.length) { + var dsLen = gpuPipelineState.dynamicStates.length; + for (var _j4 = 0; _j4 < dsLen; _j4++) { + var dynamicState = gpuPipelineState.dynamicStates[_j4]; + switch (dynamicState) { + case DynamicStateFlagBit.LINE_WIDTH: + { + if (cache.rs.lineWidth !== dynamicStates.lineWidth) { + gl.lineWidth(dynamicStates.lineWidth); + cache.rs.lineWidth = dynamicStates.lineWidth; + } + break; + } + case DynamicStateFlagBit.DEPTH_BIAS: + { + if (cache.rs.depthBias !== dynamicStates.depthBiasConstant || cache.rs.depthBiasSlop !== dynamicStates.depthBiasSlope) { + gl.polygonOffset(dynamicStates.depthBiasConstant, dynamicStates.depthBiasSlope); + cache.rs.depthBias = dynamicStates.depthBiasConstant; + cache.rs.depthBiasSlop = dynamicStates.depthBiasSlope; + } + break; + } + case DynamicStateFlagBit.BLEND_CONSTANTS: + { + var blendConstant = dynamicStates.blendConstant; + if (cache.bs.blendColor.x !== blendConstant.x || cache.bs.blendColor.y !== blendConstant.y || cache.bs.blendColor.z !== blendConstant.z || cache.bs.blendColor.w !== blendConstant.w) { + gl.blendColor(blendConstant.x, blendConstant.y, blendConstant.z, blendConstant.w); + cache.bs.blendColor.copy(blendConstant); + } + break; + } + case DynamicStateFlagBit.STENCIL_WRITE_MASK: + { + var front = dynamicStates.stencilStatesFront; + var back = dynamicStates.stencilStatesBack; + if (cache.dss.stencilWriteMaskFront !== front.writeMask) { + gl.stencilMaskSeparate(gl.FRONT, front.writeMask); + cache.dss.stencilWriteMaskFront = front.writeMask; + } + if (cache.dss.stencilWriteMaskBack !== back.writeMask) { + gl.stencilMaskSeparate(gl.BACK, back.writeMask); + cache.dss.stencilWriteMaskBack = back.writeMask; + } + break; + } + case DynamicStateFlagBit.STENCIL_COMPARE_MASK: + { + var _front = dynamicStates.stencilStatesFront; + var _back = dynamicStates.stencilStatesBack; + if (cache.dss.stencilRefFront !== _front.reference || cache.dss.stencilReadMaskFront !== _front.compareMask) { + gl.stencilFuncSeparate(gl.FRONT, WebGLCmpFuncs$1[cache.dss.stencilFuncFront], _front.reference, _front.compareMask); + cache.dss.stencilRefFront = _front.reference; + cache.dss.stencilReadMaskFront = _front.compareMask; + } + if (cache.dss.stencilRefBack !== _back.reference || cache.dss.stencilReadMaskBack !== _back.compareMask) { + gl.stencilFuncSeparate(gl.BACK, WebGLCmpFuncs$1[cache.dss.stencilFuncBack], _back.reference, _back.compareMask); + cache.dss.stencilRefBack = _back.reference; + cache.dss.stencilReadMaskBack = _back.compareMask; + } + break; + } + } + } + } + } + function WebGLCmdFuncDraw(device, drawInfo) { + var gl = device.gl; + var _device$extensions = device.extensions, + ia = _device$extensions.ANGLE_instanced_arrays, + md = _device$extensions.WEBGL_multi_draw; + var gpuInputAssembler = gfxStateCache$1.gpuInputAssembler, + glPrimitive = gfxStateCache$1.glPrimitive; + if (gpuInputAssembler) { + var indexBuffer = gpuInputAssembler.gpuIndexBuffer; + if (gpuInputAssembler.gpuIndirectBuffer) { + var indirects = gpuInputAssembler.gpuIndirectBuffer.indirects; + if (indirects.drawByIndex) { + for (var j = 0; j < indirects.drawCount; j++) { + indirects.byteOffsets[j] = indirects.offsets[j] * indexBuffer.stride; + } + if (md) { + if (indirects.instancedDraw) { + md.multiDrawElementsInstancedWEBGL(glPrimitive, indirects.counts, 0, gpuInputAssembler.glIndexType, indirects.byteOffsets, 0, indirects.instances, 0, indirects.drawCount); + } else { + md.multiDrawElementsWEBGL(glPrimitive, indirects.counts, 0, gpuInputAssembler.glIndexType, indirects.byteOffsets, 0, indirects.drawCount); + } + } else { + for (var _j5 = 0; _j5 < indirects.drawCount; _j5++) { + if (indirects.instances[_j5] && ia) { + ia.drawElementsInstancedANGLE(glPrimitive, indirects.counts[_j5], gpuInputAssembler.glIndexType, indirects.byteOffsets[_j5], indirects.instances[_j5]); + } else { + gl.drawElements(glPrimitive, indirects.counts[_j5], gpuInputAssembler.glIndexType, indirects.byteOffsets[_j5]); + } + } + } + } else if (md) { + if (indirects.instancedDraw) { + md.multiDrawArraysInstancedWEBGL(glPrimitive, indirects.offsets, 0, indirects.counts, 0, indirects.instances, 0, indirects.drawCount); + } else { + md.multiDrawArraysWEBGL(glPrimitive, indirects.offsets, 0, indirects.counts, 0, indirects.drawCount); + } + } else { + for (var _j6 = 0; _j6 < indirects.drawCount; _j6++) { + if (indirects.instances[_j6] && ia) { + ia.drawArraysInstancedANGLE(glPrimitive, indirects.offsets[_j6], indirects.counts[_j6], indirects.instances[_j6]); + } else { + gl.drawArrays(glPrimitive, indirects.offsets[_j6], indirects.counts[_j6]); + } + } + } + } else if (drawInfo.instanceCount && ia) { + if (indexBuffer) { + if (drawInfo.indexCount > 0) { + var offset = drawInfo.firstIndex * indexBuffer.stride; + ia.drawElementsInstancedANGLE(glPrimitive, drawInfo.indexCount, gpuInputAssembler.glIndexType, offset, drawInfo.instanceCount); + } + } else if (drawInfo.vertexCount > 0) { + ia.drawArraysInstancedANGLE(glPrimitive, drawInfo.firstVertex, drawInfo.vertexCount, drawInfo.instanceCount); + } + } else if (indexBuffer) { + if (drawInfo.indexCount > 0) { + var _offset = drawInfo.firstIndex * indexBuffer.stride; + gl.drawElements(glPrimitive, drawInfo.indexCount, gpuInputAssembler.glIndexType, _offset); + } + } else if (drawInfo.vertexCount > 0) { + gl.drawArrays(glPrimitive, drawInfo.firstVertex, drawInfo.vertexCount); + } + } + } + var cmdIds$1 = new Array(WebGLCmd.COUNT); + function WebGLCmdFuncExecuteCmds(device, cmdPackage) { + cmdIds$1.fill(0); + for (var i = 0; i < cmdPackage.cmds.length; ++i) { + var cmd = cmdPackage.cmds.array[i]; + var cmdId = cmdIds$1[cmd]++; + switch (cmd) { + case WebGLCmd.BEGIN_RENDER_PASS: + { + var cmd0 = cmdPackage.beginRenderPassCmds.array[cmdId]; + WebGLCmdFuncBeginRenderPass(device, cmd0.gpuRenderPass, cmd0.gpuFramebuffer, cmd0.renderArea, cmd0.clearColors, cmd0.clearDepth, cmd0.clearStencil); + break; + } + case WebGLCmd.BIND_STATES: + { + var cmd2 = cmdPackage.bindStatesCmds.array[cmdId]; + WebGLCmdFuncBindStates(device, cmd2.gpuPipelineState, cmd2.gpuInputAssembler, cmd2.gpuDescriptorSets, cmd2.dynamicOffsets, cmd2.dynamicStates); + break; + } + case WebGLCmd.DRAW: + { + var cmd3 = cmdPackage.drawCmds.array[cmdId]; + WebGLCmdFuncDraw(device, cmd3.drawInfo); + break; + } + case WebGLCmd.UPDATE_BUFFER: + { + var cmd4 = cmdPackage.updateBufferCmds.array[cmdId]; + WebGLCmdFuncUpdateBuffer(device, cmd4.gpuBuffer, cmd4.buffer, cmd4.offset, cmd4.size); + break; + } + case WebGLCmd.COPY_BUFFER_TO_TEXTURE: + { + var cmd5 = cmdPackage.copyBufferToTextureCmds.array[cmdId]; + WebGLCmdFuncCopyBuffersToTexture(device, cmd5.buffers, cmd5.gpuTexture, cmd5.regions); + break; + } + case WebGLCmd.BLIT_TEXTURE: + { + var cmd6 = cmdPackage.blitTextureCmds.array[cmdId]; + WebGLCmdFuncBlitTexture(device, cmd6.srcTexture, cmd6.dstTexture, cmd6.regions, cmd6.filter); + break; + } + } + } + } + function WebGLCmdFuncCopyTexImagesToTexture(device, texImages, gpuTexture, regions) { + var gl = device.gl; + var glTexUnit = device.stateCache.glTexUnits[device.stateCache.texUnit]; + if (glTexUnit.glTexture !== gpuTexture.glTexture) { + gl.bindTexture(gpuTexture.glTarget, gpuTexture.glTexture); + glTexUnit.glTexture = gpuTexture.glTexture; + } + var n = 0; + var f = 0; + switch (gpuTexture.glTarget) { + case gl.TEXTURE_2D: + { + for (var i = 0; i < regions.length; i++) { + var region = regions[i]; + gl.texSubImage2D(gl.TEXTURE_2D, region.texSubres.mipLevel, region.texOffset.x, region.texOffset.y, gpuTexture.glFormat, gpuTexture.glType, texImages[n++]); + } + break; + } + case gl.TEXTURE_CUBE_MAP: + { + for (var _i19 = 0; _i19 < regions.length; _i19++) { + var _region = regions[_i19]; + var fcount = _region.texSubres.baseArrayLayer + _region.texSubres.layerCount; + for (f = _region.texSubres.baseArrayLayer; f < fcount; ++f) { + gl.texSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + f, _region.texSubres.mipLevel, _region.texOffset.x, _region.texOffset.y, gpuTexture.glFormat, gpuTexture.glType, texImages[n++]); + } + } + break; + } + default: + { + error('Unsupported GL texture type, copy buffer to texture failed.'); + } + } + if (gpuTexture.flags & TextureFlagBit.GEN_MIPMAP && gpuTexture.isPowerOf2) { + gl.generateMipmap(gpuTexture.glTarget); + } + } + var stagingBuffer$1 = new Uint8Array(1); + function pixelBufferPick$1(buffer, format, offset, stride, extent) { + var blockHeight = formatAlignment(format).height; + var bufferSize = FormatSize(format, extent.width, extent.height, extent.depth); + var rowStride = FormatSize(format, stride.width, 1, 1); + var sliceStride = FormatSize(format, stride.width, stride.height, 1); + var chunkSize = FormatSize(format, extent.width, 1, 1); + var ArrayBufferCtor = getTypedArrayConstructor(FormatInfos[format]); + if (stagingBuffer$1.byteLength < bufferSize) { + stagingBuffer$1 = new Uint8Array(bufferSize); + } + var destOffset = 0; + var bufferOffset = offset; + for (var i = 0; i < extent.depth; i++) { + bufferOffset = offset + sliceStride * i; + for (var j = 0; j < extent.height; j += blockHeight) { + stagingBuffer$1.subarray(destOffset, destOffset + chunkSize).set(new Uint8Array(buffer.buffer, buffer.byteOffset + bufferOffset, chunkSize)); + destOffset += chunkSize; + bufferOffset += rowStride; + } + } + var length = bufferSize / ArrayBufferCtor.BYTES_PER_ELEMENT; + assertID(Number.isInteger(length), 9101); + return new ArrayBufferCtor(stagingBuffer$1.buffer, 0, length); + } + function WebGLCmdFuncCopyBuffersToTexture(device, buffers, gpuTexture, regions) { + var gl = device.gl; + var glTexUnit = device.stateCache.glTexUnits[device.stateCache.texUnit]; + if (glTexUnit.glTexture !== gpuTexture.glTexture) { + gl.bindTexture(gpuTexture.glTarget, gpuTexture.glTexture); + glTexUnit.glTexture = gpuTexture.glTexture; + } + var n = 0; + var f = 0; + var fmtInfo = FormatInfos[gpuTexture.format]; + var ArrayBufferCtor = getTypedArrayConstructor(fmtInfo); + var isCompressed = fmtInfo.isCompressed; + var blockSize = formatAlignment(gpuTexture.format); + var extent = new Extent(); + var offset = new Offset(); + var stride = new Extent(); + switch (gpuTexture.glTarget) { + case gl.TEXTURE_2D: + { + for (var i = 0; i < regions.length; i++) { + var region = regions[i]; + var mipLevel = region.texSubres.mipLevel; + offset.x = region.texOffset.x === 0 ? 0 : alignTo(region.texOffset.x, blockSize.width); + offset.y = region.texOffset.y === 0 ? 0 : alignTo(region.texOffset.y, blockSize.height); + extent.width = region.texExtent.width < blockSize.width ? region.texExtent.width : alignTo(region.texExtent.width, blockSize.width); + extent.height = region.texExtent.height < blockSize.height ? region.texExtent.width : alignTo(region.texExtent.height, blockSize.height); + stride.width = region.buffStride > 0 ? region.buffStride : extent.width; + stride.height = region.buffTexHeight > 0 ? region.buffTexHeight : extent.height; + var destWidth = region.texExtent.width + offset.x === gpuTexture.width >> mipLevel ? region.texExtent.width : extent.width; + var destHeight = region.texExtent.height + offset.y === gpuTexture.height >> mipLevel ? region.texExtent.height : extent.height; + var pixels = void 0; + var buffer = buffers[n++]; + if (stride.width === extent.width && stride.height === extent.height) { + var length = FormatSize(gpuTexture.format, destWidth, destHeight, 1) / ArrayBufferCtor.BYTES_PER_ELEMENT; + assertID(Number.isInteger(length), 9101); + pixels = new ArrayBufferCtor(buffer.buffer, buffer.byteOffset + region.buffOffset, length); + } else { + pixels = pixelBufferPick$1(buffer, gpuTexture.format, region.buffOffset, stride, extent); + } + if (!isCompressed) { + gl.texSubImage2D(gl.TEXTURE_2D, mipLevel, offset.x, offset.y, destWidth, destHeight, gpuTexture.glFormat, gpuTexture.glType, pixels); + } else if (gpuTexture.glInternalFmt !== WebGLEXT.COMPRESSED_RGB_ETC1_WEBGL && !device.extensions.noCompressedTexSubImage2D) { + gl.compressedTexSubImage2D(gl.TEXTURE_2D, mipLevel, offset.x, offset.y, destWidth, destHeight, gpuTexture.glFormat, pixels); + } else { + gl.compressedTexImage2D(gl.TEXTURE_2D, mipLevel, gpuTexture.glInternalFmt, destWidth, destHeight, 0, pixels); + } + } + break; + } + case gl.TEXTURE_CUBE_MAP: + { + for (var _i20 = 0; _i20 < regions.length; _i20++) { + var _region2 = regions[_i20]; + var _mipLevel = _region2.texSubres.mipLevel; + offset.x = _region2.texOffset.x === 0 ? 0 : alignTo(_region2.texOffset.x, blockSize.width); + offset.y = _region2.texOffset.y === 0 ? 0 : alignTo(_region2.texOffset.y, blockSize.height); + extent.width = _region2.texExtent.width < blockSize.width ? _region2.texExtent.width : alignTo(_region2.texExtent.width, blockSize.width); + extent.height = _region2.texExtent.height < blockSize.height ? _region2.texExtent.width : alignTo(_region2.texExtent.height, blockSize.height); + stride.width = _region2.buffStride > 0 ? _region2.buffStride : extent.width; + stride.height = _region2.buffTexHeight > 0 ? _region2.buffTexHeight : extent.height; + var _destWidth = _region2.texExtent.width + offset.x === gpuTexture.width >> _mipLevel ? _region2.texExtent.width : extent.width; + var _destHeight = _region2.texExtent.height + offset.y === gpuTexture.height >> _mipLevel ? _region2.texExtent.height : extent.height; + var fcount = _region2.texSubres.baseArrayLayer + _region2.texSubres.layerCount; + for (f = _region2.texSubres.baseArrayLayer; f < fcount; ++f) { + var _pixels = void 0; + var _buffer = buffers[n++]; + if (stride.width === extent.width && stride.height === extent.height) { + var _length = FormatSize(gpuTexture.format, _destWidth, _destHeight, 1) / ArrayBufferCtor.BYTES_PER_ELEMENT; + assertID(Number.isInteger(_length), 9101); + _pixels = new ArrayBufferCtor(_buffer.buffer, _buffer.byteOffset + _region2.buffOffset, _length); + } else { + _pixels = pixelBufferPick$1(_buffer, gpuTexture.format, _region2.buffOffset, stride, extent); + } + if (!isCompressed) { + gl.texSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + f, _mipLevel, offset.x, offset.y, _destWidth, _destHeight, gpuTexture.glFormat, gpuTexture.glType, _pixels); + } else if (gpuTexture.glInternalFmt !== WebGLEXT.COMPRESSED_RGB_ETC1_WEBGL && !device.extensions.noCompressedTexSubImage2D) { + gl.compressedTexSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + f, _mipLevel, offset.x, offset.y, _destWidth, _destHeight, gpuTexture.glFormat, _pixels); + } else { + gl.compressedTexImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + f, _mipLevel, gpuTexture.glInternalFmt, _destWidth, _destHeight, 0, _pixels); + } + } + } + break; + } + default: + { + error('Unsupported GL texture type, copy buffer to texture failed.'); + } + } + if (gpuTexture.flags & TextureFlagBit.GEN_MIPMAP) { + gl.generateMipmap(gpuTexture.glTarget); + } + } + function WebGLCmdFuncCopyTextureToBuffers(device, gpuTexture, buffers, regions) { + var gl = device.gl; + var cache = device.stateCache; + var framebuffer = gl.createFramebuffer(); + gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); + var x = 0; + var y = 0; + var w = 1; + var h = 1; + switch (gpuTexture.glTarget) { + case gl.TEXTURE_2D: + { + for (var k = 0; k < regions.length; k++) { + var region = regions[k]; + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gpuTexture.glTarget, gpuTexture.glTexture, region.texSubres.mipLevel); + x = region.texOffset.x; + y = region.texOffset.y; + w = region.texExtent.width; + h = region.texExtent.height; + gl.readPixels(x, y, w, h, gpuTexture.glFormat, gpuTexture.glType, buffers[k]); + } + break; + } + default: + { + error('Unsupported GL texture type, copy texture to buffers failed.'); + } + } + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + cache.glFramebuffer = null; + gl.deleteFramebuffer(framebuffer); + } + function WebGLCmdFuncBlitTexture(device, srcTexture, dstTexture, regions, filter) { + device.blitManager.draw(srcTexture, dstTexture, regions, filter); + } + + var WebGLIndirectDrawInfos = function () { + function WebGLIndirectDrawInfos() { + this.counts = void 0; + this.offsets = void 0; + this.instances = void 0; + this.drawCount = 0; + this.drawByIndex = false; + this.instancedDraw = false; + this.byteOffsets = void 0; + this._capacity = 4; + this.counts = new Int32Array(this._capacity); + this.offsets = new Int32Array(this._capacity); + this.instances = new Int32Array(this._capacity); + this.byteOffsets = new Int32Array(this._capacity); + } + var _proto = WebGLIndirectDrawInfos.prototype; + _proto.clearDraws = function clearDraws() { + this.drawCount = 0; + this.drawByIndex = false; + this.instancedDraw = false; + }; + _proto.setDrawInfo = function setDrawInfo(idx, info) { + this._ensureCapacity(idx); + this.drawByIndex = info.indexCount > 0; + this.instancedDraw = !!info.instanceCount; + this.drawCount = Math.max(idx + 1, this.drawCount); + if (this.drawByIndex) { + this.counts[idx] = info.indexCount; + this.offsets[idx] = info.firstIndex; + } else { + this.counts[idx] = info.vertexCount; + this.offsets[idx] = info.firstVertex; + } + this.instances[idx] = Math.max(1, info.instanceCount); + }; + _proto._ensureCapacity = function _ensureCapacity(target) { + if (this._capacity > target) return; + this._capacity = nextPow2(target); + var counts = new Int32Array(this._capacity); + var offsets = new Int32Array(this._capacity); + var instances = new Int32Array(this._capacity); + this.byteOffsets = new Int32Array(this._capacity); + counts.set(this.counts); + offsets.set(this.offsets); + instances.set(this.instances); + this.counts = counts; + this.offsets = offsets; + this.instances = instances; + }; + return WebGLIndirectDrawInfos; + }(); + var IWebGLBlitManager = function () { + function IWebGLBlitManager() { + this._gpuShader = null; + this._gpuDescriptorSetLayout = null; + this._gpuPipelineLayout = null; + this._gpuPipelineState = null; + this._gpuVertexBuffer = null; + this._gpuInputAssembler = null; + this._gpuPointSampler = null; + this._gpuLinearSampler = null; + this._gpuDescriptorSet = null; + this._gpuUniformBuffer = null; + this._drawInfo = null; + this._glFramebuffer = null; + this._uniformBuffer = null; + var gl = WebGLDeviceManager.instance.gl; + var device = WebGLDeviceManager.instance; + var samplerOffset = device.bindingMappingInfo.maxBlockCounts[0]; + this._gpuShader = { + name: 'Blit Pass', + blocks: [new UniformBlock(0, 0, "BlitParams", [new Uniform("tilingOffsetSrc", Type$1.FLOAT4, 1), new Uniform("tilingOffsetDst", Type$1.FLOAT4, 1)], 1)], + samplerTextures: [new UniformSamplerTexture(0, samplerOffset, 'textureSrc', Type$1.SAMPLER2D, 1)], + subpassInputs: [], + gpuStages: [{ + type: ShaderStageFlagBit.VERTEX, + source: "\n precision mediump float;\n\n attribute vec2 a_position;\n attribute vec2 a_texCoord;\n \n uniform vec4 tilingOffsetSrc;\n uniform vec4 tilingOffsetDst;\n \n varying vec2 v_texCoord;\n \n void main() {\n v_texCoord = a_texCoord * tilingOffsetSrc.xy + tilingOffsetSrc.zw;\n gl_Position = vec4((a_position + 1.0) * tilingOffsetDst.xy - 1.0 + tilingOffsetDst.zw * 2.0, 0, 1);\n }", + glShader: null + }, { + type: ShaderStageFlagBit.FRAGMENT, + source: "\n precision mediump float;\n uniform sampler2D textureSrc;\n\n varying vec2 v_texCoord;\n \n void main() {\n gl_FragColor = texture2D(textureSrc, v_texCoord);\n }", + glShader: null + }], + glProgram: null, + glInputs: [], + glUniforms: [], + glBlocks: [], + glSamplerTextures: [] + }; + WebGLCmdFuncCreateShader(WebGLDeviceManager.instance, this._gpuShader); + this._gpuDescriptorSetLayout = { + bindings: [new DescriptorSetLayoutBinding(0, DescriptorType.UNIFORM_BUFFER, 1, ShaderStageFlagBit.VERTEX), new DescriptorSetLayoutBinding(samplerOffset, DescriptorType.SAMPLER_TEXTURE, 1, ShaderStageFlagBit.FRAGMENT)], + dynamicBindings: [], + descriptorIndices: [], + descriptorCount: samplerOffset + 1 + }; + for (var i = 0; i < samplerOffset; i++) { + this._gpuDescriptorSetLayout.descriptorIndices[i] = 0; + } + this._gpuDescriptorSetLayout.descriptorIndices.push(1); + this._gpuPipelineLayout = { + gpuSetLayouts: [this._gpuDescriptorSetLayout], + dynamicOffsetCount: 0, + dynamicOffsetOffsets: [0], + dynamicOffsetIndices: [[]] + }; + this._gpuPipelineState = { + glPrimitive: gl.TRIANGLE_STRIP, + gpuShader: this._gpuShader, + gpuPipelineLayout: this._gpuPipelineLayout, + rs: null, + dss: new DepthStencilState(false, false), + bs: null, + dynamicStates: [], + gpuRenderPass: null + }; + this._gpuVertexBuffer = { + usage: BufferUsageBit.VERTEX, + memUsage: MemoryUsageBit.DEVICE, + size: 16 * Float32Array.BYTES_PER_ELEMENT, + stride: 4 * Float32Array.BYTES_PER_ELEMENT, + buffer: null, + vf32: null, + indirects: new WebGLIndirectDrawInfos(), + glTarget: 0, + glBuffer: null + }; + WebGLCmdFuncCreateBuffer(WebGLDeviceManager.instance, this._gpuVertexBuffer); + WebGLDeviceManager.instance.memoryStatus.bufferSize += this._gpuVertexBuffer.size; + var data = new Float32Array([-1.0, -1.0, 0.0, 0.0, 1.0, -1.0, 1.0, 0.0, -1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0]); + WebGLCmdFuncUpdateBuffer(WebGLDeviceManager.instance, this._gpuVertexBuffer, data, 0, data.length); + this._gpuInputAssembler = { + attributes: [new Attribute("a_position", Format.RG32F), new Attribute("a_texCoord", Format.RG32F)], + gpuVertexBuffers: [this._gpuVertexBuffer], + gpuIndexBuffer: null, + gpuIndirectBuffer: null, + glAttribs: [], + glIndexType: 0, + glVAOs: new Map() + }; + WebGLCmdFuncCreateInputAssember(WebGLDeviceManager.instance, this._gpuInputAssembler); + this._gpuPointSampler = { + glMinFilter: 0x2600, + glMagFilter: 0x2600, + glWrapS: 0x2901, + glWrapT: 0x2901, + glWrapR: 0x2901 + }; + this._gpuLinearSampler = { + glMinFilter: 0x2601, + glMagFilter: 0x2601, + glWrapS: 0x2901, + glWrapT: 0x2901, + glWrapR: 0x2901 + }; + this._uniformBuffer = new Float32Array(8); + this._gpuUniformBuffer = { + usage: BufferUsageBit.UNIFORM, + memUsage: MemoryUsageBit.DEVICE, + size: 8 * Float32Array.BYTES_PER_ELEMENT, + stride: 8 * Float32Array.BYTES_PER_ELEMENT, + buffer: this._uniformBuffer, + vf32: null, + indirects: new WebGLIndirectDrawInfos(), + glTarget: 0, + glBuffer: null + }; + WebGLCmdFuncCreateBuffer(WebGLDeviceManager.instance, this._gpuUniformBuffer); + WebGLDeviceManager.instance.memoryStatus.bufferSize += this._gpuUniformBuffer.size; + this._gpuDescriptorSet = { + gpuDescriptors: [{ + type: DescriptorType.UNIFORM_BUFFER, + gpuBuffer: this._gpuUniformBuffer, + gpuTexture: null, + gpuSampler: null + }, { + type: DescriptorType.SAMPLER_TEXTURE, + gpuBuffer: null, + gpuTexture: null, + gpuSampler: null + }], + descriptorIndices: this._gpuDescriptorSetLayout.descriptorIndices + }; + this._drawInfo = new DrawInfo(4, 0, 0, 0, 0, 0, 0); + this._glFramebuffer = WebGLDeviceManager.instance.gl.createFramebuffer(); + } + var _proto2 = IWebGLBlitManager.prototype; + _proto2.destroy = function destroy() { + if (this._glFramebuffer) { + WebGLDeviceManager.instance.gl.deleteFramebuffer(this._glFramebuffer); + this._glFramebuffer = null; + } + if (this._gpuVertexBuffer) { + WebGLDeviceManager.instance.memoryStatus.bufferSize -= this._gpuVertexBuffer.size; + WebGLCmdFuncDestroyBuffer(WebGLDeviceManager.instance, this._gpuVertexBuffer); + } + if (this._gpuUniformBuffer) { + WebGLDeviceManager.instance.memoryStatus.bufferSize -= this._gpuUniformBuffer.size; + WebGLCmdFuncDestroyBuffer(WebGLDeviceManager.instance, this._gpuUniformBuffer); + } + if (this._gpuShader) { + WebGLCmdFuncDestroyShader(WebGLDeviceManager.instance, this._gpuShader); + } + if (this._gpuInputAssembler) { + WebGLCmdFuncDestroyInputAssembler(WebGLDeviceManager.instance, this._gpuInputAssembler); + } + }; + _proto2.draw = function draw(gpuTextureSrc, gpuTextureDst, regions, filter) { + var device = WebGLDeviceManager.instance; + var gl = device.gl; + var stateCache = device.stateCache; + var origFramebuffer = stateCache.glFramebuffer; + gl.viewport(0, 0, gpuTextureDst.width, gpuTextureDst.height); + gl.scissor(0, 0, gpuTextureDst.width, gpuTextureDst.height); + if (!this._uniformBuffer || !this._gpuUniformBuffer || !this._gpuPipelineState || !this._gpuInputAssembler || !this._gpuDescriptorSet || !this._drawInfo) { + return; + } + var descriptor = this._gpuDescriptorSet.gpuDescriptors[1]; + descriptor.gpuTexture = gpuTextureSrc; + descriptor.gpuSampler = filter === Filter$1.POINT ? this._gpuPointSampler : this._gpuLinearSampler; + var formatInfo = FormatInfos[gpuTextureDst.format]; + var attachment = gl.COLOR_ATTACHMENT0; + if (formatInfo.hasStencil) { + attachment = gl.DEPTH_STENCIL_ATTACHMENT; + } else if (formatInfo.hasDepth) { + attachment = gl.DEPTH_ATTACHMENT; + } + var regionIndices = regions.map(function (_, i) { + return i; + }); + regionIndices.sort(function (a, b) { + return regions[a].srcSubres.mipLevel - regions[b].srcSubres.mipLevel; + }); + if (stateCache.glFramebuffer !== this._glFramebuffer) { + device.gl.bindFramebuffer(device.gl.FRAMEBUFFER, this._glFramebuffer); + stateCache.glFramebuffer = this._glFramebuffer; + } + var mipLevel = regions[0].dstSubres.mipLevel; + if (gpuTextureDst.glTexture) { + gl.framebufferTexture2D(gl.FRAMEBUFFER, attachment, gpuTextureDst.glTarget, gpuTextureDst.glTexture, mipLevel); + } else { + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachment, gl.RENDERBUFFER, gpuTextureDst.glRenderbuffer); + } + for (var i = 0; i < regionIndices.length; ++i) { + var region = regions[regionIndices[i]]; + if (gpuTextureSrc.glTexture && mipLevel !== region.srcSubres.mipLevel) { + mipLevel = region.srcSubres.mipLevel; + gl.framebufferTexture2D(gl.FRAMEBUFFER, attachment, gpuTextureDst.glTarget, gpuTextureDst.glTexture, mipLevel); + } + var srcWidth = gpuTextureSrc.width; + var srcHeight = gpuTextureSrc.height; + var dstWidth = gpuTextureDst.width; + var dstHeight = gpuTextureDst.height; + this._uniformBuffer[0] = region.srcExtent.width / srcWidth; + this._uniformBuffer[1] = region.srcExtent.height / srcHeight; + this._uniformBuffer[2] = region.srcOffset.x / srcWidth; + this._uniformBuffer[3] = region.srcOffset.y / srcHeight; + this._uniformBuffer[4] = region.dstExtent.width / dstWidth; + this._uniformBuffer[5] = region.dstExtent.height / dstHeight; + this._uniformBuffer[6] = region.dstOffset.x / dstWidth; + this._uniformBuffer[7] = region.dstOffset.y / dstHeight; + WebGLCmdFuncUpdateBuffer(device, this._gpuUniformBuffer, this._uniformBuffer, 0, this._uniformBuffer.length * Float32Array.BYTES_PER_ELEMENT); + WebGLCmdFuncBindStates(device, this._gpuPipelineState, this._gpuInputAssembler, [this._gpuDescriptorSet], [], null); + WebGLCmdFuncDraw(device, this._drawInfo); + } + if (stateCache.glFramebuffer !== origFramebuffer) { + device.gl.bindFramebuffer(device.gl.FRAMEBUFFER, origFramebuffer); + stateCache.glFramebuffer = origFramebuffer; + } + var origViewport = stateCache.viewport; + gl.viewport(origViewport.left, origViewport.top, origViewport.width, origViewport.height); + var origScissor = stateCache.scissorRect; + gl.scissor(origScissor.x, origScissor.y, origScissor.width, origScissor.height); + }; + return IWebGLBlitManager; + }(); + + var WebGLBuffer = function (_Buffer) { + _inheritsLoose(WebGLBuffer, _Buffer); + function WebGLBuffer() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Buffer.call.apply(_Buffer, [this].concat(args)) || this; + _this._gpuBuffer = null; + _this._gpuBufferView = null; + _this._uniformBuffer = null; + return _this; + } + var _proto = WebGLBuffer.prototype; + _proto.initialize = function initialize(info) { + if ('buffer' in info) { + this._isBufferView = true; + var buffer = info.buffer; + this._usage = buffer.usage; + this._memUsage = buffer.memUsage; + this._size = this._stride = info.range; + this._count = 1; + this._flags = buffer.flags; + this._gpuBufferView = { + gpuBuffer: buffer.gpuBuffer, + offset: info.offset, + range: info.range + }; + } else { + this._usage = info.usage; + this._memUsage = info.memUsage; + this._size = info.size; + this._stride = Math.max(info.stride || this._size, 1); + this._count = this._size / this._stride; + this._flags = info.flags; + if (this._usage & BufferUsageBit.UNIFORM && this._size > 0) { + this._uniformBuffer = new Uint8Array(this._size); + } + this._gpuBuffer = { + usage: this._usage, + memUsage: this._memUsage, + size: this._size, + stride: this._stride, + buffer: null, + vf32: null, + indirects: new WebGLIndirectDrawInfos(), + glTarget: 0, + glBuffer: null + }; + if (this._usage & BufferUsageBit.UNIFORM) { + this._gpuBuffer.buffer = this._uniformBuffer; + } + WebGLCmdFuncCreateBuffer(WebGLDeviceManager.instance, this._gpuBuffer); + WebGLDeviceManager.instance.memoryStatus.bufferSize += this._size; + } + }; + _proto.destroy = function destroy() { + if (this._gpuBuffer) { + WebGLCmdFuncDestroyBuffer(WebGLDeviceManager.instance, this._gpuBuffer); + WebGLDeviceManager.instance.memoryStatus.bufferSize -= this._size; + this._gpuBuffer = null; + } + if (this._gpuBufferView) { + this._gpuBufferView = null; + } + }; + _proto.resize = function resize(size) { + if (this._isBufferView) { + console.warn('cannot resize buffer views!'); + return; + } + var oldSize = this._size; + if (oldSize === size) { + return; + } + this._size = size; + this._count = this._size / this._stride; + if (this._uniformBuffer) { + this._uniformBuffer = new Uint8Array(size); + } + if (this._gpuBuffer) { + if (this._uniformBuffer) { + this._gpuBuffer.buffer = this._uniformBuffer; + } + this._gpuBuffer.size = size; + if (size > 0) { + WebGLCmdFuncResizeBuffer(WebGLDeviceManager.instance, this._gpuBuffer); + WebGLDeviceManager.instance.memoryStatus.bufferSize -= oldSize; + WebGLDeviceManager.instance.memoryStatus.bufferSize += size; + } + } + }; + _proto.update = function update(buffer, size) { + if (this._isBufferView) { + console.warn('cannot update through buffer views!'); + return; + } + var buffSize; + if (size !== undefined) { + buffSize = size; + } else if (this._usage & BufferUsageBit.INDIRECT) { + buffSize = 0; + } else { + buffSize = buffer.byteLength; + } + WebGLCmdFuncUpdateBuffer(WebGLDeviceManager.instance, this._gpuBuffer, buffer, 0, buffSize); + }; + _createClass(WebGLBuffer, [{ + key: "gpuBuffer", + get: function get() { + return this._gpuBuffer; + } + }, { + key: "gpuBufferView", + get: function get() { + return this._gpuBufferView; + } + }]); + return WebGLBuffer; + }(Buffer); + + var WebGLCommandPool = function () { + function WebGLCommandPool(Clazz, count) { + this._frees = void 0; + this._freeIdx = 0; + this._freeCmds = void 0; + this._frees = new Array(count); + this._freeCmds = new CachedArray(count); + for (var i = 0; i < count; ++i) { + this._frees[i] = new Clazz(); + } + this._freeIdx = count - 1; + } + var _proto = WebGLCommandPool.prototype; + _proto.alloc = function alloc(Clazz) { + if (this._freeIdx < 0) { + var size = this._frees.length * 2; + var temp = this._frees; + this._frees = new Array(size); + var increase = size - temp.length; + for (var i = 0; i < increase; ++i) { + this._frees[i] = new Clazz(); + } + for (var _i = increase, j = 0; _i < size; ++_i, ++j) { + this._frees[_i] = temp[j]; + } + this._freeIdx += increase; + } + var cmd = this._frees[this._freeIdx]; + this._frees[this._freeIdx--] = null; + ++cmd.refCount; + return cmd; + }; + _proto.free = function free(cmd) { + if (--cmd.refCount === 0) { + this._freeCmds.push(cmd); + } + }; + _proto.freeCmds = function freeCmds(cmds) { + for (var i = 0; i < cmds.length; ++i) { + if (--cmds.array[i].refCount === 0) { + this._freeCmds.push(cmds.array[i]); + } + } + }; + _proto.release = function release() { + for (var i = 0; i < this._freeCmds.length; ++i) { + var cmd = this._freeCmds.array[i]; + cmd.clear(); + this._frees[++this._freeIdx] = cmd; + } + this._freeCmds.clear(); + }; + return WebGLCommandPool; + }(); + var WebGLCommandAllocator = function () { + function WebGLCommandAllocator() { + this.beginRenderPassCmdPool = void 0; + this.bindStatesCmdPool = void 0; + this.drawCmdPool = void 0; + this.updateBufferCmdPool = void 0; + this.copyBufferToTextureCmdPool = void 0; + this.blitTextureCmdPool = void 0; + this.beginRenderPassCmdPool = new WebGLCommandPool(WebGLCmdBeginRenderPass, 1); + this.bindStatesCmdPool = new WebGLCommandPool(WebGLCmdBindStates, 1); + this.drawCmdPool = new WebGLCommandPool(WebGLCmdDraw, 1); + this.updateBufferCmdPool = new WebGLCommandPool(WebGLCmdUpdateBuffer, 1); + this.copyBufferToTextureCmdPool = new WebGLCommandPool(WebGLCmdCopyBufferToTexture, 1); + this.blitTextureCmdPool = new WebGLCommandPool(WebGLCmdBlitTexture, 1); + } + var _proto2 = WebGLCommandAllocator.prototype; + _proto2.clearCmds = function clearCmds(cmdPackage) { + if (cmdPackage.beginRenderPassCmds.length) { + this.beginRenderPassCmdPool.freeCmds(cmdPackage.beginRenderPassCmds); + cmdPackage.beginRenderPassCmds.clear(); + } + if (cmdPackage.bindStatesCmds.length) { + this.bindStatesCmdPool.freeCmds(cmdPackage.bindStatesCmds); + cmdPackage.bindStatesCmds.clear(); + } + if (cmdPackage.drawCmds.length) { + this.drawCmdPool.freeCmds(cmdPackage.drawCmds); + cmdPackage.drawCmds.clear(); + } + if (cmdPackage.updateBufferCmds.length) { + this.updateBufferCmdPool.freeCmds(cmdPackage.updateBufferCmds); + cmdPackage.updateBufferCmds.clear(); + } + if (cmdPackage.copyBufferToTextureCmds.length) { + this.copyBufferToTextureCmdPool.freeCmds(cmdPackage.copyBufferToTextureCmds); + cmdPackage.copyBufferToTextureCmds.clear(); + } + if (cmdPackage.blitTextureCmds.length) { + this.blitTextureCmdPool.freeCmds(cmdPackage.blitTextureCmds); + cmdPackage.blitTextureCmds.clear(); + } + cmdPackage.cmds.clear(); + }; + _proto2.releaseCmds = function releaseCmds() { + this.beginRenderPassCmdPool.release(); + this.bindStatesCmdPool.release(); + this.drawCmdPool.release(); + this.updateBufferCmdPool.release(); + this.copyBufferToTextureCmdPool.release(); + this.blitTextureCmdPool.release(); + }; + return WebGLCommandAllocator; + }(); + + var WebGLCommandBuffer = function (_CommandBuffer) { + _inheritsLoose(WebGLCommandBuffer, _CommandBuffer); + function WebGLCommandBuffer() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _CommandBuffer.call.apply(_CommandBuffer, [this].concat(args)) || this; + _this.cmdPackage = new WebGLCmdPackage(); + _this._cmdAllocator = new WebGLCommandAllocator(); + _this._isInRenderPass = false; + _this._curGPUPipelineState = null; + _this._curGPUInputAssembler = null; + _this._curGPUDescriptorSets = []; + _this._curDynamicOffsets = Array(8).fill(0); + _this._curDynamicStates = new DynamicStates(); + _this._isStateInvalied = false; + return _this; + } + var _proto = WebGLCommandBuffer.prototype; + _proto.initialize = function initialize(info) { + this._type = info.type; + this._queue = info.queue; + var setCount = WebGLDeviceManager.instance.bindingMappings.blockOffsets.length; + for (var i = 0; i < setCount; i++) { + this._curGPUDescriptorSets.push(null); + } + }; + _proto.destroy = function destroy() { + this._cmdAllocator.clearCmds(this.cmdPackage); + }; + _proto.begin = function begin(renderPass, subpass, frameBuffer) { + this._cmdAllocator.clearCmds(this.cmdPackage); + this._curGPUPipelineState = null; + this._curGPUInputAssembler = null; + this._curGPUDescriptorSets.length = 0; + this._numDrawCalls = 0; + this._numInstances = 0; + this._numTris = 0; + }; + _proto.end = function end() { + if (this._isStateInvalied) { + this.bindStates(); + } + this._isInRenderPass = false; + }; + _proto.beginRenderPass = function beginRenderPass(renderPass, framebuffer, renderArea, clearColors, clearDepth, clearStencil) { + var cmd = this._cmdAllocator.beginRenderPassCmdPool.alloc(WebGLCmdBeginRenderPass); + cmd.gpuRenderPass = renderPass.gpuRenderPass; + cmd.gpuFramebuffer = framebuffer.gpuFramebuffer; + cmd.renderArea.copy(renderArea); + cmd.clearColors.length = clearColors.length; + for (var i = 0; i < clearColors.length; ++i) { + cmd.clearColors[i] = clearColors[i]; + } + cmd.clearDepth = clearDepth; + cmd.clearStencil = clearStencil; + this.cmdPackage.beginRenderPassCmds.push(cmd); + this.cmdPackage.cmds.push(WebGLCmd.BEGIN_RENDER_PASS); + this._isInRenderPass = true; + }; + _proto.endRenderPass = function endRenderPass() { + this._isInRenderPass = false; + }; + _proto.bindPipelineState = function bindPipelineState(pipelineState) { + var gpuPipelineState = pipelineState.gpuPipelineState; + if (gpuPipelineState !== this._curGPUPipelineState) { + this._curGPUPipelineState = gpuPipelineState; + this._isStateInvalied = true; + } + }; + _proto.bindDescriptorSet = function bindDescriptorSet(set, descriptorSet, dynamicOffsets) { + var gpuDescriptorSet = descriptorSet.gpuDescriptorSet; + if (gpuDescriptorSet !== this._curGPUDescriptorSets[set]) { + this._curGPUDescriptorSets[set] = gpuDescriptorSet; + this._isStateInvalied = true; + } + if (dynamicOffsets) { + var _this$_curGPUPipeline; + var gpuPipelineLayout = (_this$_curGPUPipeline = this._curGPUPipelineState) === null || _this$_curGPUPipeline === void 0 ? void 0 : _this$_curGPUPipeline.gpuPipelineLayout; + if (gpuPipelineLayout) { + var offsets = this._curDynamicOffsets; + var idx = gpuPipelineLayout.dynamicOffsetOffsets[set]; + for (var i = 0; i < dynamicOffsets.length; i++) offsets[idx + i] = dynamicOffsets[i]; + this._isStateInvalied = true; + } + } + }; + _proto.bindInputAssembler = function bindInputAssembler(inputAssembler) { + var gpuInputAssembler = inputAssembler.gpuInputAssembler; + this._curGPUInputAssembler = gpuInputAssembler; + this._isStateInvalied = true; + }; + _proto.setViewport = function setViewport(viewport) { + var cache = this._curDynamicStates.viewport; + if (cache.left !== viewport.left || cache.top !== viewport.top || cache.width !== viewport.width || cache.height !== viewport.height || cache.minDepth !== viewport.minDepth || cache.maxDepth !== viewport.maxDepth) { + cache.left = viewport.left; + cache.top = viewport.top; + cache.width = viewport.width; + cache.height = viewport.height; + cache.minDepth = viewport.minDepth; + cache.maxDepth = viewport.maxDepth; + this._isStateInvalied = true; + } + }; + _proto.setScissor = function setScissor(scissor) { + var cache = this._curDynamicStates.scissor; + if (cache.x !== scissor.x || cache.y !== scissor.y || cache.width !== scissor.width || cache.height !== scissor.height) { + cache.x = scissor.x; + cache.y = scissor.y; + cache.width = scissor.width; + cache.height = scissor.height; + this._isStateInvalied = true; + } + }; + _proto.setLineWidth = function setLineWidth(lineWidth) { + if (this._curDynamicStates.lineWidth !== lineWidth) { + this._curDynamicStates.lineWidth = lineWidth; + this._isStateInvalied = true; + } + }; + _proto.setDepthBias = function setDepthBias(depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) { + var cache = this._curDynamicStates; + if (cache.depthBiasConstant !== depthBiasConstantFactor || cache.depthBiasClamp !== depthBiasClamp || cache.depthBiasSlope !== depthBiasSlopeFactor) { + cache.depthBiasConstant = depthBiasConstantFactor; + cache.depthBiasClamp = depthBiasClamp; + cache.depthBiasSlope = depthBiasSlopeFactor; + this._isStateInvalied = true; + } + }; + _proto.setBlendConstants = function setBlendConstants(blendConstants) { + var cache = this._curDynamicStates.blendConstant; + if (cache.x !== blendConstants.x || cache.y !== blendConstants.y || cache.z !== blendConstants.z || cache.w !== blendConstants.w) { + cache.copy(blendConstants); + this._isStateInvalied = true; + } + }; + _proto.setDepthBound = function setDepthBound(minDepthBounds, maxDepthBounds) { + var cache = this._curDynamicStates; + if (cache.depthMinBounds !== minDepthBounds || cache.depthMaxBounds !== maxDepthBounds) { + cache.depthMinBounds = minDepthBounds; + cache.depthMaxBounds = maxDepthBounds; + this._isStateInvalied = true; + } + }; + _proto.setStencilWriteMask = function setStencilWriteMask(face, writeMask) { + var front = this._curDynamicStates.stencilStatesFront; + var back = this._curDynamicStates.stencilStatesBack; + if (face & StencilFace.FRONT) { + if (front.writeMask !== writeMask) { + front.writeMask = writeMask; + this._isStateInvalied = true; + } + } + if (face & StencilFace.BACK) { + if (back.writeMask !== writeMask) { + back.writeMask = writeMask; + this._isStateInvalied = true; + } + } + }; + _proto.setStencilCompareMask = function setStencilCompareMask(face, reference, compareMask) { + var front = this._curDynamicStates.stencilStatesFront; + var back = this._curDynamicStates.stencilStatesBack; + if (face & StencilFace.FRONT) { + if (front.compareMask !== compareMask || front.reference !== reference) { + front.reference = reference; + front.compareMask = compareMask; + this._isStateInvalied = true; + } + } + if (face & StencilFace.BACK) { + if (back.compareMask !== compareMask || back.reference !== reference) { + back.reference = reference; + back.compareMask = compareMask; + this._isStateInvalied = true; + } + } + }; + _proto.draw = function draw(infoOrAssembler) { + if (this._type === CommandBufferType.PRIMARY && this._isInRenderPass || this._type === CommandBufferType.SECONDARY) { + if (this._isStateInvalied) { + this.bindStates(); + } + var info = 'drawInfo' in infoOrAssembler ? infoOrAssembler.drawInfo : infoOrAssembler; + var cmd = this._cmdAllocator.drawCmdPool.alloc(WebGLCmdDraw); + cmd.drawInfo.copy(info); + this.cmdPackage.drawCmds.push(cmd); + this.cmdPackage.cmds.push(WebGLCmd.DRAW); + ++this._numDrawCalls; + this._numInstances += info.instanceCount; + var indexCount = info.indexCount || info.vertexCount; + if (this._curGPUPipelineState) { + var glPrimitive = this._curGPUPipelineState.glPrimitive; + switch (glPrimitive) { + case 0x0004: + { + this._numTris += indexCount / 3 * Math.max(info.instanceCount, 1); + break; + } + case 0x0005: + case 0x0006: + { + this._numTris += (indexCount - 2) * Math.max(info.instanceCount, 1); + break; + } + } + } + } else { + console.error('Command \'draw\' must be recorded inside a render pass.'); + } + }; + _proto.updateBuffer = function updateBuffer(buffer, data, size) { + if (this._type === CommandBufferType.PRIMARY && !this._isInRenderPass || this._type === CommandBufferType.SECONDARY) { + var gpuBuffer = buffer.gpuBuffer; + if (gpuBuffer) { + var cmd = this._cmdAllocator.updateBufferCmdPool.alloc(WebGLCmdUpdateBuffer); + var buffSize = 0; + var buff = null; + if (buffer.usage & BufferUsageBit.INDIRECT) { + buff = data; + } else { + if (size !== undefined) { + buffSize = size; + } else { + buffSize = data.byteLength; + } + buff = data; + } + cmd.gpuBuffer = gpuBuffer; + cmd.buffer = buff; + cmd.offset = 0; + cmd.size = buffSize; + this.cmdPackage.updateBufferCmds.push(cmd); + this.cmdPackage.cmds.push(WebGLCmd.UPDATE_BUFFER); + } + } else { + console.error('Command \'updateBuffer\' must be recorded outside a render pass.'); + } + }; + _proto.copyBuffersToTexture = function copyBuffersToTexture(buffers, texture, regions) { + if (this._type === CommandBufferType.PRIMARY && !this._isInRenderPass || this._type === CommandBufferType.SECONDARY) { + var gpuTexture = texture.gpuTexture; + if (gpuTexture) { + var cmd = this._cmdAllocator.copyBufferToTextureCmdPool.alloc(WebGLCmdCopyBufferToTexture); + if (cmd) { + cmd.gpuTexture = gpuTexture; + cmd.regions = regions; + cmd.buffers = buffers; + this.cmdPackage.copyBufferToTextureCmds.push(cmd); + this.cmdPackage.cmds.push(WebGLCmd.COPY_BUFFER_TO_TEXTURE); + } + } + } else { + console.error('Command \'copyBufferToTexture\' must be recorded outside a render pass.'); + } + }; + _proto.execute = function execute(cmdBuffs, count) { + for (var i = 0; i < count; ++i) { + var webGLCmdBuff = cmdBuffs[i]; + for (var c = 0; c < webGLCmdBuff.cmdPackage.beginRenderPassCmds.length; ++c) { + var cmd = webGLCmdBuff.cmdPackage.beginRenderPassCmds.array[c]; + ++cmd.refCount; + this.cmdPackage.beginRenderPassCmds.push(cmd); + } + for (var _c = 0; _c < webGLCmdBuff.cmdPackage.bindStatesCmds.length; ++_c) { + var _cmd = webGLCmdBuff.cmdPackage.bindStatesCmds.array[_c]; + ++_cmd.refCount; + this.cmdPackage.bindStatesCmds.push(_cmd); + } + for (var _c2 = 0; _c2 < webGLCmdBuff.cmdPackage.drawCmds.length; ++_c2) { + var _cmd2 = webGLCmdBuff.cmdPackage.drawCmds.array[_c2]; + ++_cmd2.refCount; + this.cmdPackage.drawCmds.push(_cmd2); + } + for (var _c3 = 0; _c3 < webGLCmdBuff.cmdPackage.updateBufferCmds.length; ++_c3) { + var _cmd3 = webGLCmdBuff.cmdPackage.updateBufferCmds.array[_c3]; + ++_cmd3.refCount; + this.cmdPackage.updateBufferCmds.push(_cmd3); + } + for (var _c4 = 0; _c4 < webGLCmdBuff.cmdPackage.copyBufferToTextureCmds.length; ++_c4) { + var _cmd4 = webGLCmdBuff.cmdPackage.copyBufferToTextureCmds.array[_c4]; + ++_cmd4.refCount; + this.cmdPackage.copyBufferToTextureCmds.push(_cmd4); + } + for (var _c5 = 0; _c5 < webGLCmdBuff.cmdPackage.blitTextureCmds.length; ++_c5) { + var _cmd5 = webGLCmdBuff.cmdPackage.blitTextureCmds.array[_c5]; + ++_cmd5.refCount; + this.cmdPackage.blitTextureCmds.push(_cmd5); + } + this.cmdPackage.cmds.concat(webGLCmdBuff.cmdPackage.cmds.array); + this._numDrawCalls += webGLCmdBuff._numDrawCalls; + this._numInstances += webGLCmdBuff._numInstances; + this._numTris += webGLCmdBuff._numTris; + } + }; + _proto.pipelineBarrier = function pipelineBarrier(GeneralBarrier, bufferBarriers, buffers, textureBarriers, textures) {}; + _proto.bindStates = function bindStates() { + var bindStatesCmd = this._cmdAllocator.bindStatesCmdPool.alloc(WebGLCmdBindStates); + if (bindStatesCmd) { + bindStatesCmd.gpuPipelineState = this._curGPUPipelineState; + Array.prototype.push.apply(bindStatesCmd.gpuDescriptorSets, this._curGPUDescriptorSets); + Array.prototype.push.apply(bindStatesCmd.dynamicOffsets, this._curDynamicOffsets); + bindStatesCmd.gpuInputAssembler = this._curGPUInputAssembler; + bindStatesCmd.dynamicStates.copy(this._curDynamicStates); + this.cmdPackage.bindStatesCmds.push(bindStatesCmd); + this.cmdPackage.cmds.push(WebGLCmd.BIND_STATES); + this._isStateInvalied = false; + } + }; + _proto.blitTexture = function blitTexture(srcTexture, dstTexture, regions, filter) { + var blitTextureCmd = this._cmdAllocator.blitTextureCmdPool.alloc(WebGLCmdBlitTexture); + blitTextureCmd.srcTexture = srcTexture.gpuTexture; + blitTextureCmd.dstTexture = dstTexture.gpuTexture; + blitTextureCmd.regions = regions; + blitTextureCmd.filter = filter; + ++this._numDrawCalls; + this.cmdPackage.blitTextureCmds.push(blitTextureCmd); + this.cmdPackage.cmds.push(WebGLCmd.BLIT_TEXTURE); + }; + return WebGLCommandBuffer; + }(CommandBuffer); + + var WebGLFramebuffer = function (_Framebuffer) { + _inheritsLoose(WebGLFramebuffer, _Framebuffer); + function WebGLFramebuffer() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Framebuffer.call.apply(_Framebuffer, [this].concat(args)) || this; + _this._gpuFramebuffer = null; + return _this; + } + var _proto = WebGLFramebuffer.prototype; + _proto.initialize = function initialize(info) { + this._renderPass = info.renderPass; + this._colorTextures = info.colorTextures || []; + this._depthStencilTexture = info.depthStencilTexture || null; + var lodLevel = 0; + var gpuColorTextures = []; + for (var i = 0; i < info.colorTextures.length; ++i) { + var colorTexture = info.colorTextures[i]; + if (colorTexture) { + gpuColorTextures.push(colorTexture.gpuTexture); + lodLevel = colorTexture.lodLevel; + } + } + var gpuDepthStencilTexture = null; + if (info.depthStencilTexture) { + gpuDepthStencilTexture = info.depthStencilTexture.gpuTexture; + lodLevel = info.depthStencilTexture.lodLevel; + } + var width = Number.MAX_SAFE_INTEGER; + var height = Number.MAX_SAFE_INTEGER; + this._gpuFramebuffer = { + gpuRenderPass: info.renderPass.gpuRenderPass, + gpuColorTextures: gpuColorTextures, + gpuDepthStencilTexture: gpuDepthStencilTexture, + glFramebuffer: null, + isOffscreen: true, + get width() { + if (this.isOffscreen) { + return width; + } else if (this.gpuColorTextures.length > 0) { + return this.gpuColorTextures[0].width; + } else { + return this.gpuDepthStencilTexture.width; + } + }, + set width(val) { + width = val; + }, + get height() { + if (this.isOffscreen) { + return height; + } else if (this.gpuColorTextures.length > 0) { + return this.gpuColorTextures[0].height; + } else { + return this.gpuDepthStencilTexture.height; + } + }, + set height(val) { + height = val; + }, + lodLevel: lodLevel + }; + WebGLCmdFuncCreateFramebuffer(WebGLDeviceManager.instance, this._gpuFramebuffer); + this._width = this._gpuFramebuffer.width; + this._height = this._gpuFramebuffer.height; + }; + _proto.destroy = function destroy() { + if (this._gpuFramebuffer) { + WebGLCmdFuncDestroyFramebuffer(WebGLDeviceManager.instance, this._gpuFramebuffer); + this._gpuFramebuffer = null; + } + }; + _createClass(WebGLFramebuffer, [{ + key: "gpuFramebuffer", + get: function get() { + return this._gpuFramebuffer; + } + }]); + return WebGLFramebuffer; + }(Framebuffer); + + var WebGLInputAssembler = function (_InputAssembler) { + _inheritsLoose(WebGLInputAssembler, _InputAssembler); + function WebGLInputAssembler() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _InputAssembler.call.apply(_InputAssembler, [this].concat(args)) || this; + _this._gpuInputAssembler = null; + return _this; + } + var _proto = WebGLInputAssembler.prototype; + _proto.initialize = function initialize(info) { + if (info.vertexBuffers.length === 0) { + console.error('InputAssemblerInfo.vertexBuffers is null.'); + return; + } + this._attributes = info.attributes; + this._attributesHash = this.computeAttributesHash(); + this._vertexBuffers = info.vertexBuffers; + if (info.indexBuffer) { + this._indexBuffer = info.indexBuffer; + this._drawInfo.indexCount = this._indexBuffer.size / this._indexBuffer.stride; + this._drawInfo.firstIndex = 0; + } else { + var vertBuff = this._vertexBuffers[0]; + this._drawInfo.vertexCount = vertBuff.size / vertBuff.stride; + this._drawInfo.firstVertex = 0; + this._drawInfo.vertexOffset = 0; + } + this._drawInfo.instanceCount = 0; + this._drawInfo.firstInstance = 0; + this._indirectBuffer = info.indirectBuffer || null; + var gpuVertexBuffers = new Array(info.vertexBuffers.length); + for (var i = 0; i < info.vertexBuffers.length; ++i) { + var vb = info.vertexBuffers[i]; + if (vb.gpuBuffer) { + gpuVertexBuffers[i] = vb.gpuBuffer; + } + } + var gpuIndexBuffer = null; + var glIndexType = 0; + if (info.indexBuffer) { + gpuIndexBuffer = info.indexBuffer.gpuBuffer; + if (gpuIndexBuffer) { + switch (gpuIndexBuffer.stride) { + case 1: + glIndexType = 0x1401; + break; + case 2: + glIndexType = 0x1403; + break; + case 4: + glIndexType = 0x1405; + break; + default: + { + console.error('Error index buffer stride.'); + } + } + } + } + var gpuIndirectBuffer = null; + if (info.indirectBuffer) { + gpuIndirectBuffer = info.indirectBuffer.gpuBuffer; + } + this._gpuInputAssembler = { + attributes: info.attributes, + gpuVertexBuffers: gpuVertexBuffers, + gpuIndexBuffer: gpuIndexBuffer, + gpuIndirectBuffer: gpuIndirectBuffer, + glAttribs: [], + glIndexType: glIndexType, + glVAOs: new Map() + }; + WebGLCmdFuncCreateInputAssember(WebGLDeviceManager.instance, this._gpuInputAssembler); + }; + _proto.destroy = function destroy() { + var device = WebGLDeviceManager.instance; + if (this._gpuInputAssembler && device.extensions.useVAO) { + WebGLCmdFuncDestroyInputAssembler(device, this._gpuInputAssembler); + } + this._gpuInputAssembler = null; + }; + _createClass(WebGLInputAssembler, [{ + key: "gpuInputAssembler", + get: function get() { + return this._gpuInputAssembler; + } + }]); + return WebGLInputAssembler; + }(InputAssembler); + + var WebGLDescriptorSetLayout = function (_DescriptorSetLayout) { + _inheritsLoose(WebGLDescriptorSetLayout, _DescriptorSetLayout); + function WebGLDescriptorSetLayout() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _DescriptorSetLayout.call.apply(_DescriptorSetLayout, [this].concat(args)) || this; + _this._gpuDescriptorSetLayout = null; + return _this; + } + var _proto = WebGLDescriptorSetLayout.prototype; + _proto.initialize = function initialize(info) { + Array.prototype.push.apply(this._bindings, info.bindings); + var descriptorCount = 0; + var maxBinding = -1; + var flattenedIndices = []; + for (var i = 0; i < this._bindings.length; i++) { + var binding = this._bindings[i]; + flattenedIndices.push(descriptorCount); + descriptorCount += binding.count; + if (binding.binding > maxBinding) maxBinding = binding.binding; + } + this._bindingIndices = Array(maxBinding + 1).fill(-1); + var descriptorIndices = this._descriptorIndices = Array(maxBinding + 1).fill(-1); + for (var _i = 0; _i < this._bindings.length; _i++) { + var _binding = this._bindings[_i]; + this._bindingIndices[_binding.binding] = _i; + descriptorIndices[_binding.binding] = flattenedIndices[_i]; + } + var dynamicBindings = []; + for (var _i2 = 0; _i2 < this._bindings.length; _i2++) { + var _binding2 = this._bindings[_i2]; + if (_binding2.descriptorType & DESCRIPTOR_DYNAMIC_TYPE) { + for (var j = 0; j < _binding2.count; j++) { + dynamicBindings.push(_binding2.binding); + } + } + } + this._gpuDescriptorSetLayout = { + bindings: this._bindings, + dynamicBindings: dynamicBindings, + descriptorIndices: descriptorIndices, + descriptorCount: descriptorCount + }; + }; + _proto.destroy = function destroy() { + this._bindings.length = 0; + }; + _createClass(WebGLDescriptorSetLayout, [{ + key: "gpuDescriptorSetLayout", + get: function get() { + return this._gpuDescriptorSetLayout; + } + }]); + return WebGLDescriptorSetLayout; + }(DescriptorSetLayout); + + var WebGLPipelineLayout = function (_PipelineLayout) { + _inheritsLoose(WebGLPipelineLayout, _PipelineLayout); + function WebGLPipelineLayout() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _PipelineLayout.call.apply(_PipelineLayout, [this].concat(args)) || this; + _this._gpuPipelineLayout = null; + return _this; + } + var _proto = WebGLPipelineLayout.prototype; + _proto.initialize = function initialize(info) { + Array.prototype.push.apply(this._setLayouts, info.setLayouts); + var dynamicOffsetIndices = []; + var gpuSetLayouts = []; + var dynamicOffsetCount = 0; + var dynamicOffsetOffsets = []; + for (var i = 0; i < this._setLayouts.length; i++) { + var setLayout = this._setLayouts[i]; + var dynamicBindings = setLayout.gpuDescriptorSetLayout.dynamicBindings; + var indices = Array(setLayout.bindingIndices.length).fill(-1); + for (var j = 0; j < dynamicBindings.length; j++) { + var binding = dynamicBindings[j]; + if (indices[binding] < 0) indices[binding] = dynamicOffsetCount + j; + } + gpuSetLayouts.push(setLayout.gpuDescriptorSetLayout); + dynamicOffsetIndices.push(indices); + dynamicOffsetOffsets.push(dynamicOffsetCount); + dynamicOffsetCount += dynamicBindings.length; + } + this._gpuPipelineLayout = { + gpuSetLayouts: gpuSetLayouts, + dynamicOffsetIndices: dynamicOffsetIndices, + dynamicOffsetCount: dynamicOffsetCount, + dynamicOffsetOffsets: dynamicOffsetOffsets + }; + }; + _proto.destroy = function destroy() { + this._setLayouts.length = 0; + }; + _createClass(WebGLPipelineLayout, [{ + key: "gpuPipelineLayout", + get: function get() { + return this._gpuPipelineLayout; + } + }]); + return WebGLPipelineLayout; + }(PipelineLayout); + + var WebGLPrimitives$1 = [0x0000, 0x0001, 0x0003, 0x0002, 0x0000, 0x0000, 0x0000, 0x0004, 0x0005, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000]; + var WebGLPipelineState = function (_PipelineState) { + _inheritsLoose(WebGLPipelineState, _PipelineState); + function WebGLPipelineState() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _PipelineState.call.apply(_PipelineState, [this].concat(args)) || this; + _this._gpuPipelineState = null; + return _this; + } + var _proto = WebGLPipelineState.prototype; + _proto.initialize = function initialize(info) { + this._primitive = info.primitive; + this._shader = info.shader; + this._pipelineLayout = info.pipelineLayout; + var bs = this._bs; + if (info.blendState) { + var bsInfo = info.blendState; + var targets = bsInfo.targets; + if (targets) { + targets.forEach(function (t, i) { + bs.setTarget(i, t); + }); + } + if (bsInfo.isA2C !== undefined) { + bs.isA2C = bsInfo.isA2C; + } + if (bsInfo.isIndepend !== undefined) { + bs.isIndepend = bsInfo.isIndepend; + } + if (bsInfo.blendColor !== undefined) { + bs.blendColor = bsInfo.blendColor; + } + } + Object.assign(this._rs, info.rasterizerState); + Object.assign(this._dss, info.depthStencilState); + this._is = info.inputState; + this._renderPass = info.renderPass; + this._dynamicStates = info.dynamicStates; + var dynamicStates = []; + for (var i = 0; i < 31; i++) { + if (this._dynamicStates & 1 << i) { + dynamicStates.push(1 << i); + } + } + this._gpuPipelineState = { + glPrimitive: WebGLPrimitives$1[info.primitive], + gpuShader: info.shader.gpuShader, + gpuPipelineLayout: info.pipelineLayout.gpuPipelineLayout, + rs: info.rasterizerState, + dss: info.depthStencilState, + bs: info.blendState, + gpuRenderPass: info.renderPass.gpuRenderPass, + dynamicStates: dynamicStates + }; + }; + _proto.destroy = function destroy() { + this._gpuPipelineState = null; + }; + _createClass(WebGLPipelineState, [{ + key: "gpuPipelineState", + get: function get() { + return this._gpuPipelineState; + } + }]); + return WebGLPipelineState; + }(PipelineState); + + var WebGLPrimaryCommandBuffer = function (_WebGLCommandBuffer) { + _inheritsLoose(WebGLPrimaryCommandBuffer, _WebGLCommandBuffer); + function WebGLPrimaryCommandBuffer() { + return _WebGLCommandBuffer.apply(this, arguments) || this; + } + var _proto = WebGLPrimaryCommandBuffer.prototype; + _proto.beginRenderPass = function beginRenderPass(renderPass, framebuffer, renderArea, clearColors, clearDepth, clearStencil) { + WebGLCmdFuncBeginRenderPass(WebGLDeviceManager.instance, renderPass.gpuRenderPass, framebuffer.gpuFramebuffer, renderArea, clearColors, clearDepth, clearStencil); + this._isInRenderPass = true; + }; + _proto.draw = function draw(infoOrAssembler) { + if (this._isInRenderPass) { + if (this._isStateInvalied) { + this.bindStates(); + } + var info = 'drawInfo' in infoOrAssembler ? infoOrAssembler.drawInfo : infoOrAssembler; + WebGLCmdFuncDraw(WebGLDeviceManager.instance, info); + ++this._numDrawCalls; + this._numInstances += info.instanceCount; + var indexCount = info.indexCount || info.vertexCount; + if (this._curGPUPipelineState) { + var glPrimitive = this._curGPUPipelineState.glPrimitive; + switch (glPrimitive) { + case 0x0004: + { + this._numTris += indexCount / 3 * Math.max(info.instanceCount, 1); + break; + } + case 0x0005: + case 0x0006: + { + this._numTris += (indexCount - 2) * Math.max(info.instanceCount, 1); + break; + } + } + } + } else { + console.error('Command \'draw\' must be recorded inside a render pass.'); + } + }; + _proto.setViewport = function setViewport(viewport) { + var _WebGLDeviceManager$i = WebGLDeviceManager.instance, + cache = _WebGLDeviceManager$i.stateCache, + gl = _WebGLDeviceManager$i.gl; + if (cache.viewport.left !== viewport.left || cache.viewport.top !== viewport.top || cache.viewport.width !== viewport.width || cache.viewport.height !== viewport.height) { + gl.viewport(viewport.left, viewport.top, viewport.width, viewport.height); + cache.viewport.left = viewport.left; + cache.viewport.top = viewport.top; + cache.viewport.width = viewport.width; + cache.viewport.height = viewport.height; + } + }; + _proto.setScissor = function setScissor(scissor) { + var _WebGLDeviceManager$i2 = WebGLDeviceManager.instance, + cache = _WebGLDeviceManager$i2.stateCache, + gl = _WebGLDeviceManager$i2.gl; + if (cache.scissorRect.x !== scissor.x || cache.scissorRect.y !== scissor.y || cache.scissorRect.width !== scissor.width || cache.scissorRect.height !== scissor.height) { + gl.scissor(scissor.x, scissor.y, scissor.width, scissor.height); + cache.scissorRect.x = scissor.x; + cache.scissorRect.y = scissor.y; + cache.scissorRect.width = scissor.width; + cache.scissorRect.height = scissor.height; + } + }; + _proto.updateBuffer = function updateBuffer(buffer, data, size) { + if (!this._isInRenderPass) { + var gpuBuffer = buffer.gpuBuffer; + if (gpuBuffer) { + var buffSize; + if (size !== undefined) { + buffSize = size; + } else if (buffer.usage & BufferUsageBit.INDIRECT) { + buffSize = 0; + } else { + buffSize = data.byteLength; + } + WebGLCmdFuncUpdateBuffer(WebGLDeviceManager.instance, gpuBuffer, data, 0, buffSize); + } + } else { + console.error('Command \'updateBuffer\' must be recorded outside a render pass.'); + } + }; + _proto.copyBuffersToTexture = function copyBuffersToTexture(buffers, texture, regions) { + if (!this._isInRenderPass) { + var gpuTexture = texture.gpuTexture; + if (gpuTexture) { + WebGLCmdFuncCopyBuffersToTexture(WebGLDeviceManager.instance, buffers, gpuTexture, regions); + } + } else { + console.error('Command \'copyBufferToTexture\' must be recorded outside a render pass.'); + } + }; + _proto.execute = function execute(cmdBuffs, count) { + for (var i = 0; i < count; ++i) { + var webGLCmdBuff = cmdBuffs[i]; + WebGLCmdFuncExecuteCmds(WebGLDeviceManager.instance, webGLCmdBuff.cmdPackage); + this._numDrawCalls += webGLCmdBuff._numDrawCalls; + this._numInstances += webGLCmdBuff._numInstances; + this._numTris += webGLCmdBuff._numTris; + } + }; + _proto.bindStates = function bindStates() { + WebGLCmdFuncBindStates(WebGLDeviceManager.instance, this._curGPUPipelineState, this._curGPUInputAssembler, this._curGPUDescriptorSets, this._curDynamicOffsets, this._curDynamicStates); + this._isStateInvalied = false; + }; + _proto.blitTexture = function blitTexture(srcTexture, dstTexture, regions, filter) { + var gpuTextureSrc = srcTexture.gpuTexture; + var gpuTextureDst = dstTexture.gpuTexture; + WebGLCmdFuncBlitTexture(WebGLDeviceManager.instance, gpuTextureSrc, gpuTextureDst, regions, filter); + }; + return WebGLPrimaryCommandBuffer; + }(WebGLCommandBuffer); + + var WebGLQueue = function (_Queue) { + _inheritsLoose(WebGLQueue, _Queue); + function WebGLQueue() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Queue.call.apply(_Queue, [this].concat(args)) || this; + _this.numDrawCalls = 0; + _this.numInstances = 0; + _this.numTris = 0; + return _this; + } + var _proto = WebGLQueue.prototype; + _proto.initialize = function initialize(info) { + this._type = info.type; + }; + _proto.destroy = function destroy() {}; + _proto.submit = function submit(cmdBuffs) { + var len = cmdBuffs.length; + for (var i = 0; i < len; i++) { + var cmdBuff = cmdBuffs[i]; + this.numDrawCalls += cmdBuff.numDrawCalls; + this.numInstances += cmdBuff.numInstances; + this.numTris += cmdBuff.numTris; + } + }; + _proto.clear = function clear() { + this.numDrawCalls = 0; + this.numInstances = 0; + this.numTris = 0; + }; + return WebGLQueue; + }(Queue); + + var WebGLRenderPass = function (_RenderPass) { + _inheritsLoose(WebGLRenderPass, _RenderPass); + function WebGLRenderPass() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _RenderPass.call.apply(_RenderPass, [this].concat(args)) || this; + _this._gpuRenderPass = null; + return _this; + } + var _proto = WebGLRenderPass.prototype; + _proto.initialize = function initialize(info) { + this._colorInfos = info.colorAttachments; + this._depthStencilInfo = info.depthStencilAttachment; + this._subpasses = info.subpasses; + this._gpuRenderPass = { + colorAttachments: this._colorInfos, + depthStencilAttachment: this._depthStencilInfo + }; + this._hash = this.computeHash(); + }; + _proto.destroy = function destroy() { + this._gpuRenderPass = null; + }; + _createClass(WebGLRenderPass, [{ + key: "gpuRenderPass", + get: function get() { + return this._gpuRenderPass; + } + }]); + return WebGLRenderPass; + }(RenderPass); + + var WebGLWraps$1 = [0x2901, 0x8370, 0x812F, 0x812F]; + var WebGLSampler = function (_Sampler) { + _inheritsLoose(WebGLSampler, _Sampler); + function WebGLSampler(info, hash) { + var _this; + _this = _Sampler.call(this, info, hash) || this; + _this._gpuSampler = null; + var glMinFilter = 0; + var glMagFilter = 0; + var minFilter = _this._info.minFilter; + var magFilter = _this._info.magFilter; + var mipFilter = _this._info.mipFilter; + if (minFilter === Filter$1.LINEAR || minFilter === Filter$1.ANISOTROPIC) { + if (mipFilter === Filter$1.LINEAR || mipFilter === Filter$1.ANISOTROPIC) { + glMinFilter = 0x2703; + } else if (mipFilter === Filter$1.POINT) { + glMinFilter = 0x2701; + } else { + glMinFilter = 0x2601; + } + } else if (mipFilter === Filter$1.LINEAR || mipFilter === Filter$1.ANISOTROPIC) { + glMinFilter = 0x2702; + } else if (mipFilter === Filter$1.POINT) { + glMinFilter = 0x2700; + } else { + glMinFilter = 0x2600; + } + if (magFilter === Filter$1.LINEAR || magFilter === Filter$1.ANISOTROPIC) { + glMagFilter = 0x2601; + } else { + glMagFilter = 0x2600; + } + var glWrapS = WebGLWraps$1[_this._info.addressU]; + var glWrapT = WebGLWraps$1[_this._info.addressV]; + var glWrapR = WebGLWraps$1[_this._info.addressW]; + _this._gpuSampler = { + glMinFilter: glMinFilter, + glMagFilter: glMagFilter, + glWrapS: glWrapS, + glWrapT: glWrapT, + glWrapR: glWrapR + }; + return _this; + } + _createClass(WebGLSampler, [{ + key: "gpuSampler", + get: function get() { + return this._gpuSampler; + } + }]); + return WebGLSampler; + }(Sampler); + + var WebGLShader = function (_Shader) { + _inheritsLoose(WebGLShader, _Shader); + function WebGLShader() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Shader.call.apply(_Shader, [this].concat(args)) || this; + _this._gpuShader = null; + return _this; + } + var _proto = WebGLShader.prototype; + _proto.initialize = function initialize(info) { + this._name = info.name; + this._stages = info.stages; + this._attributes = info.attributes; + this._blocks = info.blocks; + this._samplers = info.samplers; + this._gpuShader = { + name: info.name, + blocks: info.blocks.slice(), + samplerTextures: info.samplerTextures.slice(), + subpassInputs: info.subpassInputs.slice(), + gpuStages: new Array(info.stages.length), + glProgram: null, + glInputs: [], + glUniforms: [], + glBlocks: [], + glSamplerTextures: [] + }; + for (var i = 0; i < info.stages.length; ++i) { + var stage = info.stages[i]; + this._gpuShader.gpuStages[i] = { + type: stage.stage, + source: stage.source, + glShader: null + }; + } + }; + _proto.destroy = function destroy() { + if (this._gpuShader) { + WebGLCmdFuncDestroyShader(WebGLDeviceManager.instance, this._gpuShader); + this._gpuShader = null; + } + }; + _createClass(WebGLShader, [{ + key: "gpuShader", + get: function get() { + if (this._gpuShader.glProgram === null) { + WebGLCmdFuncCreateShader(WebGLDeviceManager.instance, this._gpuShader); + } + return this._gpuShader; + } + }]); + return WebGLShader; + }(Shader); + + var WebGLStateCache = function () { + function WebGLStateCache() { + this.glArrayBuffer = null; + this.glElementArrayBuffer = null; + this.glVAO = null; + this.texUnit = 0; + this.glTexUnits = []; + this.glRenderbuffer = null; + this.glFramebuffer = null; + this.viewport = new Viewport(); + this.scissorRect = new Rect(0, 0, 0, 0); + this.rs = new RasterizerState(); + this.dss = new DepthStencilState(); + this.bs = new BlendState$1(); + this.glProgram = null; + this.glEnabledAttribLocs = []; + this.glCurrentAttribLocs = []; + this.texUnitCacheMap = {}; + } + var _proto = WebGLStateCache.prototype; + _proto.initialize = function initialize(texUnit, vertexAttributes) { + for (var i = 0; i < texUnit; ++i) this.glTexUnits.push({ + glTexture: null + }); + this.glEnabledAttribLocs.length = vertexAttributes; + this.glEnabledAttribLocs.fill(false); + this.glCurrentAttribLocs.length = vertexAttributes; + this.glCurrentAttribLocs.fill(false); + }; + return WebGLStateCache; + }(); + + var WebGLTexture = function (_Texture) { + _inheritsLoose(WebGLTexture, _Texture); + function WebGLTexture() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Texture.call.apply(_Texture, [this].concat(args)) || this; + _this._gpuTexture = null; + _this._lodLevel = 0; + return _this; + } + var _proto = WebGLTexture.prototype; + _proto.initialize = function initialize(info, isSwapchainTexture) { + var texInfo = info; + var viewInfo = info; + if ('texture' in info) { + texInfo = viewInfo.texture.info; + this._isTextureView = true; + } + this._info.copy(texInfo); + this._isPowerOf2 = IsPowerOf2(this._info.width) && IsPowerOf2(this._info.height); + this._size = FormatSurfaceSize(this._info.format, this.width, this.height, this.depth, this._info.levelCount) * this._info.layerCount; + if (!this._isTextureView) { + this._gpuTexture = { + type: texInfo.type, + format: texInfo.format, + usage: texInfo.usage, + width: texInfo.width, + height: texInfo.height, + depth: texInfo.depth, + size: this._size, + arrayLayer: texInfo.layerCount, + mipLevel: texInfo.levelCount, + samples: texInfo.samples, + flags: texInfo.flags, + isPowerOf2: this._isPowerOf2, + glTarget: 0, + glInternalFmt: 0, + glFormat: 0, + glType: 0, + glUsage: 0, + glTexture: null, + glRenderbuffer: null, + glWrapS: 0, + glWrapT: 0, + glMinFilter: 0, + glMagFilter: 0, + isSwapchainTexture: isSwapchainTexture || false + }; + if (!this._gpuTexture.isSwapchainTexture) { + WebGLCmdFuncCreateTexture(WebGLDeviceManager.instance, this._gpuTexture); + WebGLDeviceManager.instance.memoryStatus.textureSize += this._size; + } + this._viewInfo.texture = this; + this._viewInfo.type = info.type; + this._viewInfo.format = info.format; + this._viewInfo.baseLevel = 0; + this._viewInfo.levelCount = info.levelCount; + this._viewInfo.baseLayer = 0; + this._viewInfo.layerCount = info.layerCount; + } else { + this._viewInfo.copy(viewInfo); + this._lodLevel = viewInfo.baseLevel; + this._gpuTexture = viewInfo.texture._gpuTexture; + } + }; + _proto.destroy = function destroy() { + if (!this._isTextureView && this._gpuTexture) { + WebGLCmdFuncDestroyTexture(WebGLDeviceManager.instance, this._gpuTexture); + WebGLDeviceManager.instance.memoryStatus.textureSize -= this._size; + this._gpuTexture = null; + } + }; + _proto.getGLTextureHandle = function getGLTextureHandle() { + var gpuTexture = this._gpuTexture; + if (!gpuTexture) { + return 0; + } + if (gpuTexture.glTexture) { + return gpuTexture.glTexture; + } else if (gpuTexture.glRenderbuffer) { + return gpuTexture.glRenderbuffer; + } + return 0; + }; + _proto.resize = function resize(width, height) { + if (this._info.width === width && this._info.height === height) { + return; + } + if (this._info.levelCount === WebGLTexture.getLevelCount(this._info.width, this._info.height)) { + this._info.levelCount = WebGLTexture.getLevelCount(width, height); + } else if (this._info.levelCount > 1) { + this._info.levelCount = Math.min(this._info.levelCount, WebGLTexture.getLevelCount(width, height)); + } + var oldSize = this._size; + this._info.width = width; + this._info.height = height; + this._size = FormatSurfaceSize(this._info.format, this.width, this.height, this.depth, this._info.levelCount) * this._info.layerCount; + if (!this._isTextureView && this._gpuTexture) { + this._gpuTexture.width = width; + this._gpuTexture.height = height; + this._gpuTexture.size = this._size; + if (!this._gpuTexture.isSwapchainTexture) { + WebGLCmdFuncResizeTexture(WebGLDeviceManager.instance, this._gpuTexture); + WebGLDeviceManager.instance.memoryStatus.textureSize -= oldSize; + WebGLDeviceManager.instance.memoryStatus.textureSize += this._size; + } + } + }; + _proto.initAsSwapchainTexture = function initAsSwapchainTexture(info) { + var texInfo = new TextureInfo(); + texInfo.format = info.format; + texInfo.usage = FormatInfos[info.format].hasDepth ? TextureUsageBit.DEPTH_STENCIL_ATTACHMENT : TextureUsageBit.COLOR_ATTACHMENT; + texInfo.width = info.width; + texInfo.height = info.height; + this.initialize(texInfo, true); + }; + _createClass(WebGLTexture, [{ + key: "gpuTexture", + get: function get() { + return this._gpuTexture; + } + }, { + key: "lodLevel", + get: function get() { + return this._lodLevel; + } + }]); + return WebGLTexture; + }(Texture); + + var eventWebGLContextLost$1 = 'webglcontextlost'; + function initStates$1(gl) { + gl.activeTexture(gl.TEXTURE0); + gl.pixelStorei(gl.PACK_ALIGNMENT, 1); + gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1); + gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + gl.enable(gl.SCISSOR_TEST); + gl.enable(gl.CULL_FACE); + gl.cullFace(gl.BACK); + gl.frontFace(gl.CCW); + gl.disable(gl.POLYGON_OFFSET_FILL); + gl.polygonOffset(0.0, 0.0); + gl.enable(gl.DEPTH_TEST); + gl.depthMask(true); + gl.depthFunc(gl.LESS); + gl.depthRange(0.0, 1.0); + gl.stencilFuncSeparate(gl.FRONT, gl.ALWAYS, 1, 0xffff); + gl.stencilOpSeparate(gl.FRONT, gl.KEEP, gl.KEEP, gl.KEEP); + gl.stencilMaskSeparate(gl.FRONT, 0xffff); + gl.stencilFuncSeparate(gl.BACK, gl.ALWAYS, 1, 0xffff); + gl.stencilOpSeparate(gl.BACK, gl.KEEP, gl.KEEP, gl.KEEP); + gl.stencilMaskSeparate(gl.BACK, 0xffff); + gl.disable(gl.STENCIL_TEST); + gl.disable(gl.SAMPLE_ALPHA_TO_COVERAGE); + gl.disable(gl.BLEND); + gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD); + gl.blendFuncSeparate(gl.ONE, gl.ZERO, gl.ONE, gl.ZERO); + gl.colorMask(true, true, true, true); + gl.blendColor(0.0, 0.0, 0.0, 0.0); + } + function getExtension$1(gl, ext) { + var prefixes = ['', 'WEBKIT_', 'MOZ_']; + for (var i = 0; i < prefixes.length; ++i) { + var _ext = gl.getExtension(prefixes[i] + ext); + if (_ext) { + return _ext; + } + } + return null; + } + function getExtensions$1(gl) { + var res = { + EXT_texture_filter_anisotropic: getExtension$1(gl, 'EXT_texture_filter_anisotropic'), + EXT_blend_minmax: getExtension$1(gl, 'EXT_blend_minmax'), + EXT_frag_depth: getExtension$1(gl, 'EXT_frag_depth'), + EXT_shader_texture_lod: getExtension$1(gl, 'EXT_shader_texture_lod'), + EXT_sRGB: getExtension$1(gl, 'EXT_sRGB'), + OES_vertex_array_object: getExtension$1(gl, 'OES_vertex_array_object'), + EXT_color_buffer_half_float: getExtension$1(gl, 'EXT_color_buffer_half_float'), + WEBGL_color_buffer_float: getExtension$1(gl, 'WEBGL_color_buffer_float'), + WEBGL_compressed_texture_etc1: getExtension$1(gl, 'WEBGL_compressed_texture_etc1'), + WEBGL_compressed_texture_etc: getExtension$1(gl, 'WEBGL_compressed_texture_etc'), + WEBGL_compressed_texture_pvrtc: getExtension$1(gl, 'WEBGL_compressed_texture_pvrtc'), + WEBGL_compressed_texture_s3tc: getExtension$1(gl, 'WEBGL_compressed_texture_s3tc'), + WEBGL_compressed_texture_s3tc_srgb: getExtension$1(gl, 'WEBGL_compressed_texture_s3tc_srgb'), + WEBGL_debug_shaders: getExtension$1(gl, 'WEBGL_debug_shaders'), + WEBGL_draw_buffers: getExtension$1(gl, 'WEBGL_draw_buffers'), + WEBGL_lose_context: getExtension$1(gl, 'WEBGL_lose_context'), + WEBGL_depth_texture: getExtension$1(gl, 'WEBGL_depth_texture'), + OES_texture_half_float: getExtension$1(gl, 'OES_texture_half_float'), + OES_texture_half_float_linear: getExtension$1(gl, 'OES_texture_half_float_linear'), + OES_texture_float: getExtension$1(gl, 'OES_texture_float'), + OES_texture_float_linear: getExtension$1(gl, 'OES_texture_float_linear'), + OES_standard_derivatives: getExtension$1(gl, 'OES_standard_derivatives'), + OES_element_index_uint: getExtension$1(gl, 'OES_element_index_uint'), + ANGLE_instanced_arrays: getExtension$1(gl, 'ANGLE_instanced_arrays'), + WEBGL_debug_renderer_info: getExtension$1(gl, 'WEBGL_debug_renderer_info'), + WEBGL_multi_draw: null, + WEBGL_compressed_texture_astc: null, + destroyShadersImmediately: true, + noCompressedTexSubImage2D: false, + isLocationActive: function isLocationActive(glLoc) { + return !!glLoc; + }, + useVAO: false + }; + { + if (systemInfo.os !== OS.IOS || systemInfo.osMainVersion !== 14 || !systemInfo.isBrowser) { + res.WEBGL_compressed_texture_astc = getExtension$1(gl, 'WEBGL_compressed_texture_astc'); + } + if (systemInfo.os !== OS.ANDROID && systemInfo.os !== OS.IOS) { + res.WEBGL_multi_draw = getExtension$1(gl, 'WEBGL_multi_draw'); + } + if (systemInfo.browserType === BrowserType.UC) { + res.ANGLE_instanced_arrays = null; + } + if (systemInfo.os === OS.IOS && systemInfo.osMainVersion <= 10 || (WECHAT_MINI_PROGRAM) ) { + res.destroyShadersImmediately = false; + } + } + if (res.OES_vertex_array_object) { + res.useVAO = true; + } + return res; + } + function getContext$1(canvas) { + var context = null; + try { + var webGLCtxAttribs = { + alpha: macro.ENABLE_TRANSPARENT_CANVAS, + antialias: EDITOR || macro.ENABLE_WEBGL_ANTIALIAS, + depth: true, + stencil: true, + premultipliedAlpha: false, + preserveDrawingBuffer: false, + powerPreference: 'default', + failIfMajorPerformanceCaveat: false + }; + context = canvas.getContext('webgl', webGLCtxAttribs); + } catch (err) { + return null; + } + return context; + } + var WebGLSwapchain = function (_Swapchain) { + _inheritsLoose(WebGLSwapchain, _Swapchain); + function WebGLSwapchain() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Swapchain.call.apply(_Swapchain, [this].concat(args)) || this; + _this.stateCache = new WebGLStateCache(); + _this.cmdAllocator = new WebGLCommandAllocator(); + _this.nullTex2D = null; + _this.nullTexCube = null; + _this._canvas = null; + _this._webGLContextLostHandler = null; + _this._extensions = null; + _this._blitManager = null; + return _this; + } + var _proto = WebGLSwapchain.prototype; + _proto.initialize = function initialize(info) { + this._canvas = info.windowHandle; + this._webGLContextLostHandler = this._onWebGLContextLost.bind(this); + this._canvas.addEventListener(eventWebGLContextLost$1, this._onWebGLContextLost); + var gl = WebGLDeviceManager.instance.gl; + this.stateCache.initialize(WebGLDeviceManager.instance.capabilities.maxTextureUnits, WebGLDeviceManager.instance.capabilities.maxVertexAttributes); + this._extensions = getExtensions$1(gl); + initStates$1(gl); + var colorFmt = Format.RGBA8; + var depthStencilFmt = Format.DEPTH_STENCIL; + var depthBits = gl.getParameter(gl.DEPTH_BITS); + var stencilBits = gl.getParameter(gl.STENCIL_BITS); + if (depthBits && stencilBits) depthStencilFmt = Format.DEPTH_STENCIL;else if (depthBits) depthStencilFmt = Format.DEPTH; + this._colorTexture = new WebGLTexture(); + this._colorTexture.initAsSwapchainTexture({ + swapchain: this, + format: colorFmt, + width: info.width, + height: info.height + }); + this._depthStencilTexture = new WebGLTexture(); + this._depthStencilTexture.initAsSwapchainTexture({ + swapchain: this, + format: depthStencilFmt, + width: info.width, + height: info.height + }); + this.nullTex2D = WebGLDeviceManager.instance.createTexture(new TextureInfo(TextureType.TEX2D, TextureUsageBit.SAMPLED, Format.RGBA8, 2, 2, TextureFlagBit.GEN_MIPMAP)); + this.nullTexCube = WebGLDeviceManager.instance.createTexture(new TextureInfo(TextureType.CUBE, TextureUsageBit.SAMPLED, Format.RGBA8, 2, 2, TextureFlagBit.GEN_MIPMAP, 6)); + var nullTexRegion = new BufferTextureCopy(); + nullTexRegion.texExtent.width = 2; + nullTexRegion.texExtent.height = 2; + var nullTexBuff = new Uint8Array(this.nullTex2D.size); + nullTexBuff.fill(0); + WebGLDeviceManager.instance.copyBuffersToTexture([nullTexBuff], this.nullTex2D, [nullTexRegion]); + nullTexRegion.texSubres.layerCount = 6; + WebGLDeviceManager.instance.copyBuffersToTexture([nullTexBuff, nullTexBuff, nullTexBuff, nullTexBuff, nullTexBuff, nullTexBuff], this.nullTexCube, [nullTexRegion]); + this._blitManager = new IWebGLBlitManager(); + }; + _proto.destroy = function destroy() { + if (this._canvas && this._webGLContextLostHandler) { + this._canvas.removeEventListener(eventWebGLContextLost$1, this._webGLContextLostHandler); + this._webGLContextLostHandler = null; + } + if (this.nullTex2D) { + this.nullTex2D.destroy(); + this.nullTex2D = null; + } + if (this.nullTexCube) { + this.nullTexCube.destroy(); + this.nullTexCube = null; + } + if (this._blitManager) { + this._blitManager.destroy(); + this._blitManager = null; + } + this._extensions = null; + this._canvas = null; + }; + _proto.resize = function resize(width, height, surfaceTransform) { + if (this._colorTexture.width !== width || this._colorTexture.height !== height) { + debug("Resizing swapchain: " + width + "x" + height); + this._canvas.width = width; + this._canvas.height = height; + this._colorTexture.resize(width, height); + this._depthStencilTexture.resize(width, height); + } + }; + _proto._onWebGLContextLost = function _onWebGLContextLost(event) { + warnID(11000); + warn(event); + }; + _createClass(WebGLSwapchain, [{ + key: "extensions", + get: function get() { + return this._extensions; + } + }, { + key: "blitManager", + get: function get() { + return this._blitManager; + } + }]); + return WebGLSwapchain; + }(Swapchain); + + var WebGLDevice = exports('ew', function (_Device) { + _inheritsLoose(WebGLDevice, _Device); + function WebGLDevice() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Device.call.apply(_Device, [this].concat(args)) || this; + _this._swapchain = null; + _this._context = null; + _this._bindingMappings = null; + _this._textureExclusive = new Array(Format.COUNT); + return _this; + } + var _proto = WebGLDevice.prototype; + _proto.initialize = function initialize(info) { + WebGLDeviceManager.setInstance(this); + this._gfxAPI = API.WEBGL; + var mapping = this._bindingMappingInfo = info.bindingMappingInfo; + var blockOffsets = []; + var samplerTextureOffsets = []; + var firstSet = mapping.setIndices[0]; + blockOffsets[firstSet] = 0; + samplerTextureOffsets[firstSet] = 0; + for (var i = 1; i < mapping.setIndices.length; ++i) { + var curSet = mapping.setIndices[i]; + var prevSet = mapping.setIndices[i - 1]; + blockOffsets[curSet] = mapping.maxBlockCounts[prevSet] + blockOffsets[prevSet]; + samplerTextureOffsets[curSet] = mapping.maxSamplerTextureCounts[prevSet] + samplerTextureOffsets[prevSet]; + } + for (var _i = 0; _i < mapping.setIndices.length; ++_i) { + var _curSet = mapping.setIndices[_i]; + samplerTextureOffsets[_curSet] -= mapping.maxBlockCounts[_curSet]; + } + this._bindingMappings = { + blockOffsets: blockOffsets, + samplerTextureOffsets: samplerTextureOffsets, + flexibleSet: mapping.setIndices[mapping.setIndices.length - 1] + }; + var gl = this._context = getContext$1(Device.canvas); + if (!gl) { + console.error('This device does not support WebGL.'); + return false; + } + this._queue = this.createQueue(new QueueInfo(QueueType.GRAPHICS)); + this._cmdBuff = this.createCommandBuffer(new CommandBufferInfo(this._queue)); + this._caps.maxVertexAttributes = gl.getParameter(gl.MAX_VERTEX_ATTRIBS); + this._caps.maxVertexUniformVectors = gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS); + this._caps.maxFragmentUniformVectors = gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS); + this._caps.maxTextureUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS); + this._caps.maxVertexTextureUnits = gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS); + this._caps.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE); + this._caps.maxCubeMapTextureSize = gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE); + this._caps.maxArrayTextureLayers = 0; + this._caps.max3DTextureSize = 0; + this._caps.maxUniformBufferBindings = 16; + var extensions = gl.getSupportedExtensions(); + var extStr = ''; + if (extensions) { + for (var _iterator = _createForOfIteratorHelperLoose(extensions), _step; !(_step = _iterator()).done;) { + var ext = _step.value; + extStr += ext + " "; + } + } + var exts = getExtensions$1(gl); + if (exts.WEBGL_debug_renderer_info) { + this._renderer = gl.getParameter(exts.WEBGL_debug_renderer_info.UNMASKED_RENDERER_WEBGL); + this._vendor = gl.getParameter(exts.WEBGL_debug_renderer_info.UNMASKED_VENDOR_WEBGL); + } else { + this._renderer = gl.getParameter(gl.RENDERER); + this._vendor = gl.getParameter(gl.VENDOR); + } + var version = gl.getParameter(gl.VERSION); + this._features.fill(false); + this.initFormatFeatures(exts); + if (exts.EXT_blend_minmax) { + this._features[Feature.BLEND_MINMAX] = true; + } + if (exts.OES_element_index_uint) { + this._features[Feature.ELEMENT_INDEX_UINT] = true; + } + if (exts.ANGLE_instanced_arrays) { + this._features[Feature.INSTANCED_ARRAYS] = true; + } + if (exts.WEBGL_draw_buffers) { + this._features[Feature.MULTIPLE_RENDER_TARGETS] = true; + } + var compressedFormat = ''; + if (this.getFormatFeatures(Format.ETC_RGB8)) { + compressedFormat += 'etc1 '; + } + if (this.getFormatFeatures(Format.ETC2_RGB8)) { + compressedFormat += 'etc2 '; + } + if (this.getFormatFeatures(Format.BC1)) { + compressedFormat += 'dxt '; + } + if (this.getFormatFeatures(Format.PVRTC_RGB2)) { + compressedFormat += 'pvrtc '; + } + if (this.getFormatFeatures(Format.ASTC_RGBA_4X4)) { + compressedFormat += 'astc '; + } + debug('WebGL device initialized.'); + debug("RENDERER: " + this._renderer); + debug("VENDOR: " + this._vendor); + debug("VERSION: " + version); + debug("COMPRESSED_FORMAT: " + compressedFormat); + debug("EXTENSIONS: " + extStr); + return true; + }; + _proto.destroy = function destroy() { + if (this._queue) { + this._queue.destroy(); + this._queue = null; + } + if (this._cmdBuff) { + this._cmdBuff.destroy(); + this._cmdBuff = null; + } + this._swapchain = null; + }; + _proto.flushCommands = function flushCommands(cmdBuffs) {}; + _proto.acquire = function acquire(swapchains) {}; + _proto.present = function present() { + var queue = this._queue; + this._numDrawCalls = queue.numDrawCalls; + this._numInstances = queue.numInstances; + this._numTris = queue.numTris; + queue.clear(); + }; + _proto.initFormatFeatures = function initFormatFeatures(exts) { + this._formatFeatures.fill(FormatFeatureBit.NONE); + this._textureExclusive.fill(true); + var tempFeature = FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.SAMPLED_TEXTURE | FormatFeatureBit.LINEAR_FILTER; + this._formatFeatures[Format.RGB8] = tempFeature; + this._formatFeatures[Format.R5G6B5] = tempFeature; + this._textureExclusive[Format.R5G6B5] = false; + this._formatFeatures[Format.RGBA8] = tempFeature; + this._formatFeatures[Format.RGBA4] = tempFeature; + this._textureExclusive[Format.RGBA4] = false; + this._formatFeatures[Format.RGB5A1] = tempFeature; + this._textureExclusive[Format.RGB5A1] = false; + this._formatFeatures[Format.DEPTH] = FormatFeatureBit.RENDER_TARGET; + this._textureExclusive[Format.DEPTH] = false; + this._formatFeatures[Format.DEPTH_STENCIL] = FormatFeatureBit.RENDER_TARGET; + this._textureExclusive[Format.DEPTH_STENCIL] = false; + this._formatFeatures[Format.R8I] |= FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.RG8I] |= FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.RGB8I] |= FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.RGBA8I] |= FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.R8UI] |= FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.RG8UI] |= FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.RGB8UI] |= FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.RGBA8UI] |= FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.R8I] |= FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.RG8I] |= FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.RGB8I] |= FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.RGBA8I] |= FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.R8UI] |= FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.RG8UI] |= FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.RGB8UI] |= FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.RGBA8UI] |= FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.R32F] |= FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.RG32F] |= FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.RGB32F] |= FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.RGBA32F] |= FormatFeatureBit.VERTEX_ATTRIBUTE; + if (exts.EXT_sRGB) { + this._formatFeatures[Format.SRGB8] = tempFeature; + this._formatFeatures[Format.SRGB8_A8] = tempFeature; + this._textureExclusive[Format.SRGB8_A8] = false; + } + if (exts.WEBGL_depth_texture) { + this._formatFeatures[Format.DEPTH] |= tempFeature; + this._formatFeatures[Format.DEPTH_STENCIL] |= tempFeature; + } + if (exts.WEBGL_color_buffer_float) { + this._formatFeatures[Format.RGB32F] |= FormatFeatureBit.RENDER_TARGET; + this._formatFeatures[Format.RGBA32F] |= FormatFeatureBit.RENDER_TARGET; + this._textureExclusive[Format.RGB32F] = false; + this._textureExclusive[Format.RGBA32F] = false; + } + if (exts.EXT_color_buffer_half_float) { + this._formatFeatures[Format.RGB16F] |= FormatFeatureBit.RENDER_TARGET; + this._formatFeatures[Format.RGBA16F] |= FormatFeatureBit.RENDER_TARGET; + this._textureExclusive[Format.RGB16F] = false; + this._textureExclusive[Format.RGBA16F] = false; + } + if (exts.OES_texture_float) { + this._formatFeatures[Format.RGB32F] |= FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.SAMPLED_TEXTURE; + this._formatFeatures[Format.RGBA32F] |= FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.SAMPLED_TEXTURE; + } + if (exts.OES_texture_half_float) { + this._formatFeatures[Format.RGB16F] |= FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.SAMPLED_TEXTURE; + this._formatFeatures[Format.RGBA16F] |= FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.SAMPLED_TEXTURE; + } + if (exts.OES_texture_float_linear) { + this._formatFeatures[Format.RGB32F] |= FormatFeatureBit.LINEAR_FILTER; + this._formatFeatures[Format.RGBA32F] |= FormatFeatureBit.LINEAR_FILTER; + } + if (exts.OES_texture_half_float_linear) { + this._formatFeatures[Format.RGB16F] |= FormatFeatureBit.LINEAR_FILTER; + this._formatFeatures[Format.RGBA16F] |= FormatFeatureBit.LINEAR_FILTER; + } + var compressedFeature = FormatFeatureBit.SAMPLED_TEXTURE | FormatFeatureBit.LINEAR_FILTER; + if (exts.WEBGL_compressed_texture_etc1) { + this._formatFeatures[Format.ETC_RGB8] = compressedFeature; + } + if (exts.WEBGL_compressed_texture_etc) { + this._formatFeatures[Format.ETC2_RGB8] = compressedFeature; + this._formatFeatures[Format.ETC2_RGBA8] = compressedFeature; + this._formatFeatures[Format.ETC2_SRGB8] = compressedFeature; + this._formatFeatures[Format.ETC2_SRGB8_A8] = compressedFeature; + this._formatFeatures[Format.ETC2_RGB8_A1] = compressedFeature; + this._formatFeatures[Format.ETC2_SRGB8_A1] = compressedFeature; + } + if (exts.WEBGL_compressed_texture_s3tc) { + this._formatFeatures[Format.BC1] = compressedFeature; + this._formatFeatures[Format.BC1_ALPHA] = compressedFeature; + this._formatFeatures[Format.BC1_SRGB] = compressedFeature; + this._formatFeatures[Format.BC1_SRGB_ALPHA] = compressedFeature; + this._formatFeatures[Format.BC2] = compressedFeature; + this._formatFeatures[Format.BC2_SRGB] = compressedFeature; + this._formatFeatures[Format.BC3] = compressedFeature; + this._formatFeatures[Format.BC3_SRGB] = compressedFeature; + } + if (exts.WEBGL_compressed_texture_pvrtc) { + this._formatFeatures[Format.PVRTC_RGB2] |= compressedFeature; + this._formatFeatures[Format.PVRTC_RGBA2] |= compressedFeature; + this._formatFeatures[Format.PVRTC_RGB4] |= compressedFeature; + this._formatFeatures[Format.PVRTC_RGBA4] |= compressedFeature; + } + if (exts.WEBGL_compressed_texture_astc) { + this._formatFeatures[Format.ASTC_RGBA_4X4] |= compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_5X4] |= compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_5X5] |= compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_6X5] |= compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_6X6] |= compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_8X5] |= compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_8X6] |= compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_8X8] |= compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_10X5] |= compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_10X6] |= compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_10X8] |= compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_10X10] |= compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_12X10] |= compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_12X12] |= compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_4X4] |= compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_5X4] |= compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_5X5] |= compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_6X5] |= compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_6X6] |= compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_8X5] |= compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_8X6] |= compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_8X8] |= compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_10X5] |= compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_10X6] |= compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_10X8] |= compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_10X10] |= compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_12X10] |= compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_12X12] |= compressedFeature; + } + }; + _proto.createCommandBuffer = function createCommandBuffer(info) { + var Ctor = info.type === CommandBufferType.PRIMARY ? WebGLPrimaryCommandBuffer : WebGLCommandBuffer; + var cmdBuff = new Ctor(); + cmdBuff.initialize(info); + return cmdBuff; + }; + _proto.createSwapchain = function createSwapchain(info) { + var swapchain = new WebGLSwapchain(); + this._swapchain = swapchain; + swapchain.initialize(info); + return swapchain; + }; + _proto.createBuffer = function createBuffer(info) { + var buffer = new WebGLBuffer(); + buffer.initialize(info); + return buffer; + }; + _proto.createTexture = function createTexture(info) { + var texture = new WebGLTexture(); + texture.initialize(info); + return texture; + }; + _proto.createDescriptorSet = function createDescriptorSet(info) { + var descriptorSet = new WebGLDescriptorSet(); + descriptorSet.initialize(info); + return descriptorSet; + }; + _proto.createShader = function createShader(info) { + var shader = new WebGLShader(); + shader.initialize(info); + return shader; + }; + _proto.createInputAssembler = function createInputAssembler(info) { + var inputAssembler = new WebGLInputAssembler(); + inputAssembler.initialize(info); + return inputAssembler; + }; + _proto.createRenderPass = function createRenderPass(info) { + var renderPass = new WebGLRenderPass(); + renderPass.initialize(info); + return renderPass; + }; + _proto.createFramebuffer = function createFramebuffer(info) { + var framebuffer = new WebGLFramebuffer(); + framebuffer.initialize(info); + return framebuffer; + }; + _proto.createDescriptorSetLayout = function createDescriptorSetLayout(info) { + var descriptorSetLayout = new WebGLDescriptorSetLayout(); + descriptorSetLayout.initialize(info); + return descriptorSetLayout; + }; + _proto.createPipelineLayout = function createPipelineLayout(info) { + var pipelineLayout = new WebGLPipelineLayout(); + pipelineLayout.initialize(info); + return pipelineLayout; + }; + _proto.createPipelineState = function createPipelineState(info) { + var pipelineState = new WebGLPipelineState(); + pipelineState.initialize(info); + return pipelineState; + }; + _proto.createQueue = function createQueue(info) { + var queue = new WebGLQueue(); + queue.initialize(info); + return queue; + }; + _proto.getSampler = function getSampler(info) { + var hash = Sampler.computeHash(info); + if (!this._samplers.has(hash)) { + this._samplers.set(hash, new WebGLSampler(info, hash)); + } + return this._samplers.get(hash); + }; + _proto.getSwapchains = function getSwapchains() { + return [this._swapchain]; + }; + _proto.getGeneralBarrier = function getGeneralBarrier(info) { + var hash = GeneralBarrier.computeHash(info); + if (!this._generalBarrierss.has(hash)) { + this._generalBarrierss.set(hash, new GeneralBarrier(info, hash)); + } + return this._generalBarrierss.get(hash); + }; + _proto.getTextureBarrier = function getTextureBarrier(info) { + var hash = TextureBarrier.computeHash(info); + if (!this._textureBarriers.has(hash)) { + this._textureBarriers.set(hash, new TextureBarrier(info, hash)); + } + return this._textureBarriers.get(hash); + }; + _proto.getBufferBarrier = function getBufferBarrier(info) { + var hash = BufferBarrier.computeHash(info); + if (!this._bufferBarriers.has(hash)) { + this._bufferBarriers.set(hash, new BufferBarrier(info, hash)); + } + return this._bufferBarriers.get(hash); + }; + _proto.copyBuffersToTexture = function copyBuffersToTexture(buffers, texture, regions) { + WebGLCmdFuncCopyBuffersToTexture(this, buffers, texture.gpuTexture, regions); + }; + _proto.copyTextureToBuffers = function copyTextureToBuffers(texture, buffers, regions) { + WebGLCmdFuncCopyTextureToBuffers(this, texture.gpuTexture, buffers, regions); + }; + _proto.copyTexImagesToTexture = function copyTexImagesToTexture(texImages, texture, regions) { + WebGLCmdFuncCopyTexImagesToTexture(this, texImages, texture.gpuTexture, regions); + }; + _createClass(WebGLDevice, [{ + key: "gl", + get: function get() { + return this._context; + } + }, { + key: "extensions", + get: function get() { + return this._swapchain.extensions; + } + }, { + key: "stateCache", + get: function get() { + return this._swapchain.stateCache; + } + }, { + key: "nullTex2D", + get: function get() { + return this._swapchain.nullTex2D; + } + }, { + key: "nullTexCube", + get: function get() { + return this._swapchain.nullTexCube; + } + }, { + key: "textureExclusive", + get: function get() { + return this._textureExclusive; + } + }, { + key: "bindingMappings", + get: function get() { + return this._bindingMappings; + } + }, { + key: "blitManager", + get: function get() { + return this._swapchain.blitManager; + } + }]); + return WebGLDevice; + }(Device)); + + legacyCC.WebGLDevice = WebGLDevice; + + var WebGL2DescriptorSet = function (_DescriptorSet) { + _inheritsLoose(WebGL2DescriptorSet, _DescriptorSet); + function WebGL2DescriptorSet() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _DescriptorSet.call.apply(_DescriptorSet, [this].concat(args)) || this; + _this._gpuDescriptorSet = null; + return _this; + } + var _proto = WebGL2DescriptorSet.prototype; + _proto.initialize = function initialize(info) { + this._layout = info.layout; + var _gpuDescriptorSetLayo = info.layout.gpuDescriptorSetLayout, + bindings = _gpuDescriptorSetLayo.bindings, + descriptorIndices = _gpuDescriptorSetLayo.descriptorIndices, + descriptorCount = _gpuDescriptorSetLayo.descriptorCount; + this._buffers = Array(descriptorCount).fill(null); + this._textures = Array(descriptorCount).fill(null); + this._samplers = Array(descriptorCount).fill(null); + var gpuDescriptors = []; + this._gpuDescriptorSet = { + gpuDescriptors: gpuDescriptors, + descriptorIndices: descriptorIndices + }; + for (var i = 0; i < bindings.length; ++i) { + var binding = bindings[i]; + for (var j = 0; j < binding.count; j++) { + gpuDescriptors.push({ + type: binding.descriptorType, + gpuBuffer: null, + gpuTextureView: null, + gpuSampler: null + }); + } + } + }; + _proto.destroy = function destroy() { + this._layout = null; + this._gpuDescriptorSet = null; + }; + _proto.update = function update() { + if (this._isDirty && this._gpuDescriptorSet) { + var descriptors = this._gpuDescriptorSet.gpuDescriptors; + for (var i = 0; i < descriptors.length; ++i) { + if (descriptors[i].type & DESCRIPTOR_BUFFER_TYPE) { + if (this._buffers[i]) { + descriptors[i].gpuBuffer = this._buffers[i].gpuBuffer; + } + } else if (descriptors[i].type & DESCRIPTOR_SAMPLER_TYPE) { + if (this._textures[i]) { + descriptors[i].gpuTextureView = this._textures[i].gpuTextureView; + } + if (this._samplers[i]) { + descriptors[i].gpuSampler = this._samplers[i].gpuSampler; + } + } + } + this._isDirty = false; + } + }; + _createClass(WebGL2DescriptorSet, [{ + key: "gpuDescriptorSet", + get: function get() { + return this._gpuDescriptorSet; + } + }]); + return WebGL2DescriptorSet; + }(DescriptorSet); + + var WebGL2EXT; + (function (WebGL2EXT) { + WebGL2EXT[WebGL2EXT["COMPRESSED_RGB_S3TC_DXT1_EXT"] = 33776] = "COMPRESSED_RGB_S3TC_DXT1_EXT"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGBA_S3TC_DXT1_EXT"] = 33777] = "COMPRESSED_RGBA_S3TC_DXT1_EXT"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGBA_S3TC_DXT3_EXT"] = 33778] = "COMPRESSED_RGBA_S3TC_DXT3_EXT"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGBA_S3TC_DXT5_EXT"] = 33779] = "COMPRESSED_RGBA_S3TC_DXT5_EXT"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB_S3TC_DXT1_EXT"] = 35916] = "COMPRESSED_SRGB_S3TC_DXT1_EXT"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT"] = 35917] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT"] = 35918] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT"] = 35919] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGB_PVRTC_4BPPV1_IMG"] = 35840] = "COMPRESSED_RGB_PVRTC_4BPPV1_IMG"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGB_PVRTC_2BPPV1_IMG"] = 35841] = "COMPRESSED_RGB_PVRTC_2BPPV1_IMG"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGBA_PVRTC_4BPPV1_IMG"] = 35842] = "COMPRESSED_RGBA_PVRTC_4BPPV1_IMG"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGBA_PVRTC_2BPPV1_IMG"] = 35843] = "COMPRESSED_RGBA_PVRTC_2BPPV1_IMG"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGB_ETC1_WEBGL"] = 36196] = "COMPRESSED_RGB_ETC1_WEBGL"; + WebGL2EXT[WebGL2EXT["COMPRESSED_R11_EAC"] = 37488] = "COMPRESSED_R11_EAC"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SIGNED_R11_EAC"] = 37489] = "COMPRESSED_SIGNED_R11_EAC"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RG11_EAC"] = 37490] = "COMPRESSED_RG11_EAC"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SIGNED_RG11_EAC"] = 37491] = "COMPRESSED_SIGNED_RG11_EAC"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGB8_ETC2"] = 37492] = "COMPRESSED_RGB8_ETC2"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB8_ETC2"] = 37493] = "COMPRESSED_SRGB8_ETC2"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2"] = 37494] = "COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2"] = 37495] = "COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGBA8_ETC2_EAC"] = 37496] = "COMPRESSED_RGBA8_ETC2_EAC"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB8_ALPHA8_ETC2_EAC"] = 37497] = "COMPRESSED_SRGB8_ALPHA8_ETC2_EAC"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGBA_ASTC_4x4_KHR"] = 37808] = "COMPRESSED_RGBA_ASTC_4x4_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGBA_ASTC_5x4_KHR"] = 37809] = "COMPRESSED_RGBA_ASTC_5x4_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGBA_ASTC_5x5_KHR"] = 37810] = "COMPRESSED_RGBA_ASTC_5x5_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGBA_ASTC_6x5_KHR"] = 37811] = "COMPRESSED_RGBA_ASTC_6x5_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGBA_ASTC_6x6_KHR"] = 37812] = "COMPRESSED_RGBA_ASTC_6x6_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGBA_ASTC_8x5_KHR"] = 37813] = "COMPRESSED_RGBA_ASTC_8x5_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGBA_ASTC_8x6_KHR"] = 37814] = "COMPRESSED_RGBA_ASTC_8x6_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGBA_ASTC_8x8_KHR"] = 37815] = "COMPRESSED_RGBA_ASTC_8x8_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGBA_ASTC_10x5_KHR"] = 37816] = "COMPRESSED_RGBA_ASTC_10x5_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGBA_ASTC_10x6_KHR"] = 37817] = "COMPRESSED_RGBA_ASTC_10x6_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGBA_ASTC_10x8_KHR"] = 37818] = "COMPRESSED_RGBA_ASTC_10x8_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGBA_ASTC_10x10_KHR"] = 37819] = "COMPRESSED_RGBA_ASTC_10x10_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGBA_ASTC_12x10_KHR"] = 37820] = "COMPRESSED_RGBA_ASTC_12x10_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_RGBA_ASTC_12x12_KHR"] = 37821] = "COMPRESSED_RGBA_ASTC_12x12_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR"] = 37840] = "COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR"] = 37841] = "COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR"] = 37842] = "COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR"] = 37843] = "COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR"] = 37844] = "COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR"] = 37845] = "COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR"] = 37846] = "COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR"] = 37847] = "COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR"] = 37848] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR"] = 37849] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR"] = 37850] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR"] = 37851] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR"] = 37852] = "COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR"; + WebGL2EXT[WebGL2EXT["COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR"] = 37853] = "COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR"; + })(WebGL2EXT || (WebGL2EXT = {})); + var WebGL2DeviceManager = function () { + function WebGL2DeviceManager() {} + WebGL2DeviceManager.setInstance = function setInstance(instance) { + WebGL2DeviceManager._instance = instance; + }; + _createClass(WebGL2DeviceManager, null, [{ + key: "instance", + get: function get() { + return WebGL2DeviceManager._instance; + } + }]); + return WebGL2DeviceManager; + }(); + WebGL2DeviceManager._instance = null; + + var WebGLWraps = [0x2901, 0x8370, 0x812F, 0x812F]; + var _f32v4 = new Float32Array(4); + function GFXFormatToWebGLType(format, gl) { + switch (format) { + case Format.R8: + return gl.UNSIGNED_BYTE; + case Format.R8SN: + return gl.BYTE; + case Format.R8UI: + return gl.UNSIGNED_BYTE; + case Format.R8I: + return gl.BYTE; + case Format.R16F: + return gl.HALF_FLOAT; + case Format.R16UI: + return gl.UNSIGNED_SHORT; + case Format.R16I: + return gl.SHORT; + case Format.R32F: + return gl.FLOAT; + case Format.R32UI: + return gl.UNSIGNED_INT; + case Format.R32I: + return gl.INT; + case Format.RG8: + return gl.UNSIGNED_BYTE; + case Format.RG8SN: + return gl.BYTE; + case Format.RG8UI: + return gl.UNSIGNED_BYTE; + case Format.RG8I: + return gl.BYTE; + case Format.RG16F: + return gl.HALF_FLOAT; + case Format.RG16UI: + return gl.UNSIGNED_SHORT; + case Format.RG16I: + return gl.SHORT; + case Format.RG32F: + return gl.FLOAT; + case Format.RG32UI: + return gl.UNSIGNED_INT; + case Format.RG32I: + return gl.INT; + case Format.RGB8: + return gl.UNSIGNED_BYTE; + case Format.SRGB8: + return gl.UNSIGNED_BYTE; + case Format.RGB8SN: + return gl.BYTE; + case Format.RGB8UI: + return gl.UNSIGNED_BYTE; + case Format.RGB8I: + return gl.BYTE; + case Format.RGB16F: + return gl.HALF_FLOAT; + case Format.RGB16UI: + return gl.UNSIGNED_SHORT; + case Format.RGB16I: + return gl.SHORT; + case Format.RGB32F: + return gl.FLOAT; + case Format.RGB32UI: + return gl.UNSIGNED_INT; + case Format.RGB32I: + return gl.INT; + case Format.BGRA8: + return gl.UNSIGNED_BYTE; + case Format.RGBA8: + return gl.UNSIGNED_BYTE; + case Format.SRGB8_A8: + return gl.UNSIGNED_BYTE; + case Format.RGBA8SN: + return gl.BYTE; + case Format.RGBA8UI: + return gl.UNSIGNED_BYTE; + case Format.RGBA8I: + return gl.BYTE; + case Format.RGBA16F: + return gl.HALF_FLOAT; + case Format.RGBA16UI: + return gl.UNSIGNED_SHORT; + case Format.RGBA16I: + return gl.SHORT; + case Format.RGBA32F: + return gl.FLOAT; + case Format.RGBA32UI: + return gl.UNSIGNED_INT; + case Format.RGBA32I: + return gl.INT; + case Format.R5G6B5: + return gl.UNSIGNED_SHORT_5_6_5; + case Format.R11G11B10F: + return gl.UNSIGNED_INT_10F_11F_11F_REV; + case Format.RGB5A1: + return gl.UNSIGNED_SHORT_5_5_5_1; + case Format.RGBA4: + return gl.UNSIGNED_SHORT_4_4_4_4; + case Format.RGB10A2: + return gl.UNSIGNED_INT_2_10_10_10_REV; + case Format.RGB10A2UI: + return gl.UNSIGNED_INT_2_10_10_10_REV; + case Format.RGB9E5: + return gl.FLOAT; + case Format.DEPTH: + return gl.FLOAT; + case Format.DEPTH_STENCIL: + return gl.UNSIGNED_INT_24_8; + case Format.BC1: + return gl.UNSIGNED_BYTE; + case Format.BC1_SRGB: + return gl.UNSIGNED_BYTE; + case Format.BC2: + return gl.UNSIGNED_BYTE; + case Format.BC2_SRGB: + return gl.UNSIGNED_BYTE; + case Format.BC3: + return gl.UNSIGNED_BYTE; + case Format.BC3_SRGB: + return gl.UNSIGNED_BYTE; + case Format.BC4: + return gl.UNSIGNED_BYTE; + case Format.BC4_SNORM: + return gl.BYTE; + case Format.BC5: + return gl.UNSIGNED_BYTE; + case Format.BC5_SNORM: + return gl.BYTE; + case Format.BC6H_SF16: + return gl.FLOAT; + case Format.BC6H_UF16: + return gl.FLOAT; + case Format.BC7: + return gl.UNSIGNED_BYTE; + case Format.BC7_SRGB: + return gl.UNSIGNED_BYTE; + case Format.ETC_RGB8: + return gl.UNSIGNED_BYTE; + case Format.ETC2_RGB8: + return gl.UNSIGNED_BYTE; + case Format.ETC2_SRGB8: + return gl.UNSIGNED_BYTE; + case Format.ETC2_RGB8_A1: + return gl.UNSIGNED_BYTE; + case Format.ETC2_SRGB8_A1: + return gl.UNSIGNED_BYTE; + case Format.EAC_R11: + return gl.UNSIGNED_BYTE; + case Format.EAC_R11SN: + return gl.BYTE; + case Format.EAC_RG11: + return gl.UNSIGNED_BYTE; + case Format.EAC_RG11SN: + return gl.BYTE; + case Format.PVRTC_RGB2: + return gl.UNSIGNED_BYTE; + case Format.PVRTC_RGBA2: + return gl.UNSIGNED_BYTE; + case Format.PVRTC_RGB4: + return gl.UNSIGNED_BYTE; + case Format.PVRTC_RGBA4: + return gl.UNSIGNED_BYTE; + case Format.PVRTC2_2BPP: + return gl.UNSIGNED_BYTE; + case Format.PVRTC2_4BPP: + return gl.UNSIGNED_BYTE; + case Format.ASTC_RGBA_4X4: + case Format.ASTC_RGBA_5X4: + case Format.ASTC_RGBA_5X5: + case Format.ASTC_RGBA_6X5: + case Format.ASTC_RGBA_6X6: + case Format.ASTC_RGBA_8X5: + case Format.ASTC_RGBA_8X6: + case Format.ASTC_RGBA_8X8: + case Format.ASTC_RGBA_10X5: + case Format.ASTC_RGBA_10X6: + case Format.ASTC_RGBA_10X8: + case Format.ASTC_RGBA_10X10: + case Format.ASTC_RGBA_12X10: + case Format.ASTC_RGBA_12X12: + case Format.ASTC_SRGBA_4X4: + case Format.ASTC_SRGBA_5X4: + case Format.ASTC_SRGBA_5X5: + case Format.ASTC_SRGBA_6X5: + case Format.ASTC_SRGBA_6X6: + case Format.ASTC_SRGBA_8X5: + case Format.ASTC_SRGBA_8X6: + case Format.ASTC_SRGBA_8X8: + case Format.ASTC_SRGBA_10X5: + case Format.ASTC_SRGBA_10X6: + case Format.ASTC_SRGBA_10X8: + case Format.ASTC_SRGBA_10X10: + case Format.ASTC_SRGBA_12X10: + case Format.ASTC_SRGBA_12X12: + return gl.UNSIGNED_BYTE; + default: + { + return gl.UNSIGNED_BYTE; + } + } + } + function GFXFormatToWebGLInternalFormat(format, gl) { + switch (format) { + case Format.A8: + return gl.ALPHA; + case Format.L8: + return gl.LUMINANCE; + case Format.LA8: + return gl.LUMINANCE_ALPHA; + case Format.R8: + return gl.R8; + case Format.R8SN: + return gl.R8_SNORM; + case Format.R8UI: + return gl.R8UI; + case Format.R8I: + return gl.R8I; + case Format.RG8: + return gl.RG8; + case Format.RG8SN: + return gl.RG8_SNORM; + case Format.RG8UI: + return gl.RG8UI; + case Format.RG8I: + return gl.RG8I; + case Format.RGB8: + return gl.RGB8; + case Format.RGB8SN: + return gl.RGB8_SNORM; + case Format.RGB8UI: + return gl.RGB8UI; + case Format.RGB8I: + return gl.RGB8I; + case Format.BGRA8: + return gl.RGBA8; + case Format.RGBA8: + return gl.RGBA8; + case Format.RGBA8SN: + return gl.RGBA8_SNORM; + case Format.RGBA8UI: + return gl.RGBA8UI; + case Format.RGBA8I: + return gl.RGBA8I; + case Format.R16I: + return gl.R16I; + case Format.R16UI: + return gl.R16UI; + case Format.R16F: + return gl.R16F; + case Format.RG16I: + return gl.RG16I; + case Format.RG16UI: + return gl.RG16UI; + case Format.RG16F: + return gl.RG16F; + case Format.RGB16I: + return gl.RGB16I; + case Format.RGB16UI: + return gl.RGB16UI; + case Format.RGB16F: + return gl.RGB16F; + case Format.RGBA16I: + return gl.RGBA16I; + case Format.RGBA16UI: + return gl.RGBA16UI; + case Format.RGBA16F: + return gl.RGBA16F; + case Format.R32I: + return gl.R32I; + case Format.R32UI: + return gl.R32UI; + case Format.R32F: + return gl.R32F; + case Format.RG32I: + return gl.RG32I; + case Format.RG32UI: + return gl.RG32UI; + case Format.RG32F: + return gl.RG32F; + case Format.RGB32I: + return gl.RGB32I; + case Format.RGB32UI: + return gl.RGB32UI; + case Format.RGB32F: + return gl.RGB32F; + case Format.RGBA32I: + return gl.RGBA32I; + case Format.RGBA32UI: + return gl.RGBA32UI; + case Format.RGBA32F: + return gl.RGBA32F; + case Format.R5G6B5: + return gl.RGB565; + case Format.RGB5A1: + return gl.RGB5_A1; + case Format.RGBA4: + return gl.RGBA4; + case Format.SRGB8: + return gl.SRGB8; + case Format.SRGB8_A8: + return gl.SRGB8_ALPHA8; + case Format.RGB10A2: + return gl.RGB10_A2; + case Format.RGB10A2UI: + return gl.RGB10_A2UI; + case Format.R11G11B10F: + return gl.R11F_G11F_B10F; + case Format.DEPTH: + return gl.DEPTH_COMPONENT32F; + case Format.DEPTH_STENCIL: + return gl.DEPTH24_STENCIL8; + case Format.BC1: + return WebGL2EXT.COMPRESSED_RGB_S3TC_DXT1_EXT; + case Format.BC1_ALPHA: + return WebGL2EXT.COMPRESSED_RGBA_S3TC_DXT1_EXT; + case Format.BC1_SRGB: + return WebGL2EXT.COMPRESSED_SRGB_S3TC_DXT1_EXT; + case Format.BC1_SRGB_ALPHA: + return WebGL2EXT.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT; + case Format.BC2: + return WebGL2EXT.COMPRESSED_RGBA_S3TC_DXT3_EXT; + case Format.BC2_SRGB: + return WebGL2EXT.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT; + case Format.BC3: + return WebGL2EXT.COMPRESSED_RGBA_S3TC_DXT5_EXT; + case Format.BC3_SRGB: + return WebGL2EXT.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT; + case Format.ETC_RGB8: + return WebGL2EXT.COMPRESSED_RGB_ETC1_WEBGL; + case Format.ETC2_RGB8: + return WebGL2EXT.COMPRESSED_RGB8_ETC2; + case Format.ETC2_SRGB8: + return WebGL2EXT.COMPRESSED_SRGB8_ETC2; + case Format.ETC2_RGB8_A1: + return WebGL2EXT.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2; + case Format.ETC2_SRGB8_A1: + return WebGL2EXT.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2; + case Format.ETC2_RGBA8: + return WebGL2EXT.COMPRESSED_RGBA8_ETC2_EAC; + case Format.ETC2_SRGB8_A8: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC; + case Format.EAC_R11: + return WebGL2EXT.COMPRESSED_R11_EAC; + case Format.EAC_R11SN: + return WebGL2EXT.COMPRESSED_SIGNED_R11_EAC; + case Format.EAC_RG11: + return WebGL2EXT.COMPRESSED_RG11_EAC; + case Format.EAC_RG11SN: + return WebGL2EXT.COMPRESSED_SIGNED_RG11_EAC; + case Format.PVRTC_RGB2: + return WebGL2EXT.COMPRESSED_RGB_PVRTC_2BPPV1_IMG; + case Format.PVRTC_RGBA2: + return WebGL2EXT.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; + case Format.PVRTC_RGB4: + return WebGL2EXT.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; + case Format.PVRTC_RGBA4: + return WebGL2EXT.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; + case Format.ASTC_RGBA_4X4: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_4x4_KHR; + case Format.ASTC_RGBA_5X4: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_5x4_KHR; + case Format.ASTC_RGBA_5X5: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_5x5_KHR; + case Format.ASTC_RGBA_6X5: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_6x5_KHR; + case Format.ASTC_RGBA_6X6: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_6x6_KHR; + case Format.ASTC_RGBA_8X5: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_8x5_KHR; + case Format.ASTC_RGBA_8X6: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_8x6_KHR; + case Format.ASTC_RGBA_8X8: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_8x8_KHR; + case Format.ASTC_RGBA_10X5: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_10x5_KHR; + case Format.ASTC_RGBA_10X6: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_10x6_KHR; + case Format.ASTC_RGBA_10X8: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_10x8_KHR; + case Format.ASTC_RGBA_10X10: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_10x10_KHR; + case Format.ASTC_RGBA_12X10: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_12x10_KHR; + case Format.ASTC_RGBA_12X12: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_12x12_KHR; + case Format.ASTC_SRGBA_4X4: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR; + case Format.ASTC_SRGBA_5X4: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR; + case Format.ASTC_SRGBA_5X5: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR; + case Format.ASTC_SRGBA_6X5: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR; + case Format.ASTC_SRGBA_6X6: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR; + case Format.ASTC_SRGBA_8X5: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR; + case Format.ASTC_SRGBA_8X6: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR; + case Format.ASTC_SRGBA_8X8: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR; + case Format.ASTC_SRGBA_10X5: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR; + case Format.ASTC_SRGBA_10X6: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR; + case Format.ASTC_SRGBA_10X8: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR; + case Format.ASTC_SRGBA_10X10: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR; + case Format.ASTC_SRGBA_12X10: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR; + case Format.ASTC_SRGBA_12X12: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR; + default: + { + error('Unsupported Format, convert to WebGL internal format failed.'); + return gl.RGBA; + } + } + } + function GFXFormatToWebGLFormat(format, gl) { + switch (format) { + case Format.A8: + return gl.ALPHA; + case Format.L8: + return gl.LUMINANCE; + case Format.LA8: + return gl.LUMINANCE_ALPHA; + case Format.R8: + case Format.R8SN: + return gl.RED; + case Format.R8UI: + case Format.R8I: + return gl.RED; + case Format.RG8: + case Format.RG8SN: + case Format.RG8UI: + case Format.RG8I: + return gl.RG; + case Format.RGB8: + case Format.RGB8SN: + case Format.RGB8UI: + case Format.RGB8I: + return gl.RGB; + case Format.BGRA8: + case Format.RGBA8: + case Format.RGBA8SN: + case Format.RGBA8UI: + case Format.RGBA8I: + return gl.RGBA; + case Format.R16UI: + case Format.R16I: + case Format.R16F: + return gl.RED; + case Format.RG16UI: + case Format.RG16I: + case Format.RG16F: + return gl.RG; + case Format.RGB16UI: + case Format.RGB16I: + case Format.RGB16F: + return gl.RGB; + case Format.RGBA16UI: + case Format.RGBA16I: + case Format.RGBA16F: + return gl.RGBA; + case Format.R32UI: + case Format.R32I: + case Format.R32F: + return gl.RED; + case Format.RG32UI: + case Format.RG32I: + case Format.RG32F: + return gl.RG; + case Format.RGB32UI: + case Format.RGB32I: + case Format.RGB32F: + return gl.RGB; + case Format.RGBA32UI: + case Format.RGBA32I: + case Format.RGBA32F: + return gl.RGBA; + case Format.RGB10A2: + return gl.RGBA; + case Format.R11G11B10F: + return gl.RGB; + case Format.R5G6B5: + return gl.RGB; + case Format.RGB5A1: + return gl.RGBA; + case Format.RGBA4: + return gl.RGBA; + case Format.SRGB8: + return gl.RGB; + case Format.SRGB8_A8: + return gl.RGBA; + case Format.DEPTH: + return gl.DEPTH_COMPONENT; + case Format.DEPTH_STENCIL: + return gl.DEPTH_STENCIL; + case Format.BC1: + return WebGL2EXT.COMPRESSED_RGB_S3TC_DXT1_EXT; + case Format.BC1_ALPHA: + return WebGL2EXT.COMPRESSED_RGBA_S3TC_DXT1_EXT; + case Format.BC1_SRGB: + return WebGL2EXT.COMPRESSED_SRGB_S3TC_DXT1_EXT; + case Format.BC1_SRGB_ALPHA: + return WebGL2EXT.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT; + case Format.BC2: + return WebGL2EXT.COMPRESSED_RGBA_S3TC_DXT3_EXT; + case Format.BC2_SRGB: + return WebGL2EXT.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT; + case Format.BC3: + return WebGL2EXT.COMPRESSED_RGBA_S3TC_DXT5_EXT; + case Format.BC3_SRGB: + return WebGL2EXT.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT; + case Format.ETC_RGB8: + return WebGL2EXT.COMPRESSED_RGB_ETC1_WEBGL; + case Format.ETC2_RGB8: + return WebGL2EXT.COMPRESSED_RGB8_ETC2; + case Format.ETC2_SRGB8: + return WebGL2EXT.COMPRESSED_SRGB8_ETC2; + case Format.ETC2_RGB8_A1: + return WebGL2EXT.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2; + case Format.ETC2_SRGB8_A1: + return WebGL2EXT.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2; + case Format.ETC2_RGBA8: + return WebGL2EXT.COMPRESSED_RGBA8_ETC2_EAC; + case Format.ETC2_SRGB8_A8: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC; + case Format.EAC_R11: + return WebGL2EXT.COMPRESSED_R11_EAC; + case Format.EAC_R11SN: + return WebGL2EXT.COMPRESSED_SIGNED_R11_EAC; + case Format.EAC_RG11: + return WebGL2EXT.COMPRESSED_RG11_EAC; + case Format.EAC_RG11SN: + return WebGL2EXT.COMPRESSED_SIGNED_RG11_EAC; + case Format.PVRTC_RGB2: + return WebGL2EXT.COMPRESSED_RGB_PVRTC_2BPPV1_IMG; + case Format.PVRTC_RGBA2: + return WebGL2EXT.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; + case Format.PVRTC_RGB4: + return WebGL2EXT.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; + case Format.PVRTC_RGBA4: + return WebGL2EXT.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; + case Format.ASTC_RGBA_4X4: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_4x4_KHR; + case Format.ASTC_RGBA_5X4: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_5x4_KHR; + case Format.ASTC_RGBA_5X5: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_5x5_KHR; + case Format.ASTC_RGBA_6X5: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_6x5_KHR; + case Format.ASTC_RGBA_6X6: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_6x6_KHR; + case Format.ASTC_RGBA_8X5: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_8x5_KHR; + case Format.ASTC_RGBA_8X6: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_8x6_KHR; + case Format.ASTC_RGBA_8X8: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_8x8_KHR; + case Format.ASTC_RGBA_10X5: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_10x5_KHR; + case Format.ASTC_RGBA_10X6: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_10x6_KHR; + case Format.ASTC_RGBA_10X8: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_10x8_KHR; + case Format.ASTC_RGBA_10X10: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_10x10_KHR; + case Format.ASTC_RGBA_12X10: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_12x10_KHR; + case Format.ASTC_RGBA_12X12: + return WebGL2EXT.COMPRESSED_RGBA_ASTC_12x12_KHR; + case Format.ASTC_SRGBA_4X4: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR; + case Format.ASTC_SRGBA_5X4: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR; + case Format.ASTC_SRGBA_5X5: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR; + case Format.ASTC_SRGBA_6X5: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR; + case Format.ASTC_SRGBA_6X6: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR; + case Format.ASTC_SRGBA_8X5: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR; + case Format.ASTC_SRGBA_8X6: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR; + case Format.ASTC_SRGBA_8X8: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR; + case Format.ASTC_SRGBA_10X5: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR; + case Format.ASTC_SRGBA_10X6: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR; + case Format.ASTC_SRGBA_10X8: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR; + case Format.ASTC_SRGBA_10X10: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR; + case Format.ASTC_SRGBA_12X10: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR; + case Format.ASTC_SRGBA_12X12: + return WebGL2EXT.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR; + default: + { + error('Unsupported Format, convert to WebGL format failed.'); + return gl.RGBA; + } + } + } + function GFXTypeToWebGLType(type, gl) { + switch (type) { + case Type$1.BOOL: + return gl.BOOL; + case Type$1.BOOL2: + return gl.BOOL_VEC2; + case Type$1.BOOL3: + return gl.BOOL_VEC3; + case Type$1.BOOL4: + return gl.BOOL_VEC4; + case Type$1.INT: + return gl.INT; + case Type$1.INT2: + return gl.INT_VEC2; + case Type$1.INT3: + return gl.INT_VEC3; + case Type$1.INT4: + return gl.INT_VEC4; + case Type$1.UINT: + return gl.UNSIGNED_INT; + case Type$1.FLOAT: + return gl.FLOAT; + case Type$1.FLOAT2: + return gl.FLOAT_VEC2; + case Type$1.FLOAT3: + return gl.FLOAT_VEC3; + case Type$1.FLOAT4: + return gl.FLOAT_VEC4; + case Type$1.MAT2: + return gl.FLOAT_MAT2; + case Type$1.MAT2X3: + return gl.FLOAT_MAT2x3; + case Type$1.MAT2X4: + return gl.FLOAT_MAT2x4; + case Type$1.MAT3X2: + return gl.FLOAT_MAT3x2; + case Type$1.MAT3: + return gl.FLOAT_MAT3; + case Type$1.MAT3X4: + return gl.FLOAT_MAT3x4; + case Type$1.MAT4X2: + return gl.FLOAT_MAT4x2; + case Type$1.MAT4X3: + return gl.FLOAT_MAT4x3; + case Type$1.MAT4: + return gl.FLOAT_MAT4; + case Type$1.SAMPLER2D: + return gl.SAMPLER_2D; + case Type$1.SAMPLER2D_ARRAY: + return gl.SAMPLER_2D_ARRAY; + case Type$1.SAMPLER3D: + return gl.SAMPLER_3D; + case Type$1.SAMPLER_CUBE: + return gl.SAMPLER_CUBE; + default: + { + error('Unsupported GLType, convert to GL type failed.'); + return Type$1.UNKNOWN; + } + } + } + function WebGLTypeToGFXType(glType, gl) { + switch (glType) { + case gl.BOOL: + return Type$1.BOOL; + case gl.BOOL_VEC2: + return Type$1.BOOL2; + case gl.BOOL_VEC3: + return Type$1.BOOL3; + case gl.BOOL_VEC4: + return Type$1.BOOL4; + case gl.INT: + return Type$1.INT; + case gl.INT_VEC2: + return Type$1.INT2; + case gl.INT_VEC3: + return Type$1.INT3; + case gl.INT_VEC4: + return Type$1.INT4; + case gl.UNSIGNED_INT: + return Type$1.UINT; + case gl.UNSIGNED_INT_VEC2: + return Type$1.UINT2; + case gl.UNSIGNED_INT_VEC3: + return Type$1.UINT3; + case gl.UNSIGNED_INT_VEC4: + return Type$1.UINT4; + case gl.FLOAT: + return Type$1.FLOAT; + case gl.FLOAT_VEC2: + return Type$1.FLOAT2; + case gl.FLOAT_VEC3: + return Type$1.FLOAT3; + case gl.FLOAT_VEC4: + return Type$1.FLOAT4; + case gl.FLOAT_MAT2: + return Type$1.MAT2; + case gl.FLOAT_MAT2x3: + return Type$1.MAT2X3; + case gl.FLOAT_MAT2x4: + return Type$1.MAT2X4; + case gl.FLOAT_MAT3x2: + return Type$1.MAT3X2; + case gl.FLOAT_MAT3: + return Type$1.MAT3; + case gl.FLOAT_MAT3x4: + return Type$1.MAT3X4; + case gl.FLOAT_MAT4x2: + return Type$1.MAT4X2; + case gl.FLOAT_MAT4x3: + return Type$1.MAT4X3; + case gl.FLOAT_MAT4: + return Type$1.MAT4; + case gl.SAMPLER_2D: + return Type$1.SAMPLER2D; + case gl.SAMPLER_2D_ARRAY: + return Type$1.SAMPLER2D_ARRAY; + case gl.SAMPLER_3D: + return Type$1.SAMPLER3D; + case gl.SAMPLER_CUBE: + return Type$1.SAMPLER_CUBE; + default: + { + error('Unsupported GLType, convert to Type failed.'); + return Type$1.UNKNOWN; + } + } + } + function WebGLGetTypeSize(glType, gl) { + switch (glType) { + case gl.BOOL: + return 4; + case gl.BOOL_VEC2: + return 8; + case gl.BOOL_VEC3: + return 12; + case gl.BOOL_VEC4: + return 16; + case gl.INT: + return 4; + case gl.INT_VEC2: + return 8; + case gl.INT_VEC3: + return 12; + case gl.INT_VEC4: + return 16; + case gl.UNSIGNED_INT: + return 4; + case gl.UNSIGNED_INT_VEC2: + return 8; + case gl.UNSIGNED_INT_VEC3: + return 12; + case gl.UNSIGNED_INT_VEC4: + return 16; + case gl.FLOAT: + return 4; + case gl.FLOAT_VEC2: + return 8; + case gl.FLOAT_VEC3: + return 12; + case gl.FLOAT_VEC4: + return 16; + case gl.FLOAT_MAT2: + return 16; + case gl.FLOAT_MAT2x3: + return 24; + case gl.FLOAT_MAT2x4: + return 32; + case gl.FLOAT_MAT3x2: + return 24; + case gl.FLOAT_MAT3: + return 36; + case gl.FLOAT_MAT3x4: + return 48; + case gl.FLOAT_MAT4x2: + return 32; + case gl.FLOAT_MAT4x3: + return 48; + case gl.FLOAT_MAT4: + return 64; + case gl.SAMPLER_2D: + return 4; + case gl.SAMPLER_2D_ARRAY: + return 4; + case gl.SAMPLER_2D_ARRAY_SHADOW: + return 4; + case gl.SAMPLER_3D: + return 4; + case gl.SAMPLER_CUBE: + return 4; + case gl.INT_SAMPLER_2D: + return 4; + case gl.INT_SAMPLER_2D_ARRAY: + return 4; + case gl.INT_SAMPLER_3D: + return 4; + case gl.INT_SAMPLER_CUBE: + return 4; + case gl.UNSIGNED_INT_SAMPLER_2D: + return 4; + case gl.UNSIGNED_INT_SAMPLER_2D_ARRAY: + return 4; + case gl.UNSIGNED_INT_SAMPLER_3D: + return 4; + case gl.UNSIGNED_INT_SAMPLER_CUBE: + return 4; + default: + { + error('Unsupported GLType, get type failed.'); + return 0; + } + } + } + function WebGLGetComponentCount(glType, gl) { + switch (glType) { + case gl.FLOAT_MAT2: + return 2; + case gl.FLOAT_MAT2x3: + return 2; + case gl.FLOAT_MAT2x4: + return 2; + case gl.FLOAT_MAT3x2: + return 3; + case gl.FLOAT_MAT3: + return 3; + case gl.FLOAT_MAT3x4: + return 3; + case gl.FLOAT_MAT4x2: + return 4; + case gl.FLOAT_MAT4x3: + return 4; + case gl.FLOAT_MAT4: + return 4; + default: + { + return 1; + } + } + } + var WebGLCmpFuncs = [0x0200, 0x0201, 0x0202, 0x0203, 0x0204, 0x0205, 0x0206, 0x0207]; + var WebGLStencilOps = [0x0000, 0x1E00, 0x1E01, 0x1E02, 0x1E03, 0x150A, 0x8507, 0x8508]; + var WebGLBlendOps = [0x8006, 0x800A, 0x800B, 0x8007, 0x8008]; + var WebGLBlendFactors = [0x0000, 0x0001, 0x0302, 0x0304, 0x0303, 0x0305, 0x0300, 0x0306, 0x0301, 0x0307, 0x0308, 0x8001, 0x8002, 0x8003, 0x8004]; + var WebGL2Cmd; + (function (WebGL2Cmd) { + WebGL2Cmd[WebGL2Cmd["BEGIN_RENDER_PASS"] = 0] = "BEGIN_RENDER_PASS"; + WebGL2Cmd[WebGL2Cmd["END_RENDER_PASS"] = 1] = "END_RENDER_PASS"; + WebGL2Cmd[WebGL2Cmd["BIND_STATES"] = 2] = "BIND_STATES"; + WebGL2Cmd[WebGL2Cmd["DRAW"] = 3] = "DRAW"; + WebGL2Cmd[WebGL2Cmd["UPDATE_BUFFER"] = 4] = "UPDATE_BUFFER"; + WebGL2Cmd[WebGL2Cmd["COPY_BUFFER_TO_TEXTURE"] = 5] = "COPY_BUFFER_TO_TEXTURE"; + WebGL2Cmd[WebGL2Cmd["BLIT_TEXTURE"] = 6] = "BLIT_TEXTURE"; + WebGL2Cmd[WebGL2Cmd["COUNT"] = 7] = "COUNT"; + })(WebGL2Cmd || (WebGL2Cmd = {})); + var WebGL2CmdObject = function WebGL2CmdObject(type) { + this.cmdType = void 0; + this.refCount = 0; + this.cmdType = type; + }; + var WebGL2CmdBeginRenderPass = function (_WebGL2CmdObject) { + _inheritsLoose(WebGL2CmdBeginRenderPass, _WebGL2CmdObject); + function WebGL2CmdBeginRenderPass() { + var _this; + _this = _WebGL2CmdObject.call(this, WebGL2Cmd.BEGIN_RENDER_PASS) || this; + _this.gpuRenderPass = null; + _this.gpuFramebuffer = null; + _this.renderArea = new Rect(); + _this.clearColors = []; + _this.clearDepth = 1.0; + _this.clearStencil = 0; + return _this; + } + var _proto = WebGL2CmdBeginRenderPass.prototype; + _proto.clear = function clear() { + this.gpuFramebuffer = null; + this.clearColors.length = 0; + }; + return WebGL2CmdBeginRenderPass; + }(WebGL2CmdObject); + var WebGL2CmdBindStates = function (_WebGL2CmdObject2) { + _inheritsLoose(WebGL2CmdBindStates, _WebGL2CmdObject2); + function WebGL2CmdBindStates() { + var _this2; + _this2 = _WebGL2CmdObject2.call(this, WebGL2Cmd.BIND_STATES) || this; + _this2.gpuPipelineState = null; + _this2.gpuInputAssembler = null; + _this2.gpuDescriptorSets = []; + _this2.dynamicOffsets = []; + _this2.dynamicStates = new DynamicStates(); + return _this2; + } + var _proto2 = WebGL2CmdBindStates.prototype; + _proto2.clear = function clear() { + this.gpuPipelineState = null; + this.gpuInputAssembler = null; + this.gpuDescriptorSets.length = 0; + this.dynamicOffsets.length = 0; + }; + return WebGL2CmdBindStates; + }(WebGL2CmdObject); + var WebGL2CmdDraw = function (_WebGL2CmdObject3) { + _inheritsLoose(WebGL2CmdDraw, _WebGL2CmdObject3); + function WebGL2CmdDraw() { + var _this3; + _this3 = _WebGL2CmdObject3.call(this, WebGL2Cmd.DRAW) || this; + _this3.drawInfo = new DrawInfo(); + return _this3; + } + var _proto3 = WebGL2CmdDraw.prototype; + _proto3.clear = function clear() {}; + return WebGL2CmdDraw; + }(WebGL2CmdObject); + var WebGL2CmdUpdateBuffer = function (_WebGL2CmdObject4) { + _inheritsLoose(WebGL2CmdUpdateBuffer, _WebGL2CmdObject4); + function WebGL2CmdUpdateBuffer() { + var _this4; + _this4 = _WebGL2CmdObject4.call(this, WebGL2Cmd.UPDATE_BUFFER) || this; + _this4.gpuBuffer = null; + _this4.buffer = null; + _this4.offset = 0; + _this4.size = 0; + return _this4; + } + var _proto4 = WebGL2CmdUpdateBuffer.prototype; + _proto4.clear = function clear() { + this.gpuBuffer = null; + this.buffer = null; + }; + return WebGL2CmdUpdateBuffer; + }(WebGL2CmdObject); + var WebGL2CmdCopyBufferToTexture = function (_WebGL2CmdObject5) { + _inheritsLoose(WebGL2CmdCopyBufferToTexture, _WebGL2CmdObject5); + function WebGL2CmdCopyBufferToTexture() { + var _this5; + _this5 = _WebGL2CmdObject5.call(this, WebGL2Cmd.COPY_BUFFER_TO_TEXTURE) || this; + _this5.gpuTexture = null; + _this5.buffers = []; + _this5.regions = []; + return _this5; + } + var _proto5 = WebGL2CmdCopyBufferToTexture.prototype; + _proto5.clear = function clear() { + this.gpuTexture = null; + this.buffers.length = 0; + this.regions.length = 0; + }; + return WebGL2CmdCopyBufferToTexture; + }(WebGL2CmdObject); + var WebGL2CmdBlitTexture = function (_WebGL2CmdObject6) { + _inheritsLoose(WebGL2CmdBlitTexture, _WebGL2CmdObject6); + function WebGL2CmdBlitTexture() { + var _this6; + _this6 = _WebGL2CmdObject6.call(this, WebGL2Cmd.BLIT_TEXTURE) || this; + _this6.srcTexture = null; + _this6.dstTexture = null; + _this6.regions = []; + _this6.filter = Filter$1.LINEAR; + return _this6; + } + var _proto6 = WebGL2CmdBlitTexture.prototype; + _proto6.clear = function clear() { + this.srcTexture = null; + this.dstTexture = null; + this.regions.length = 0; + }; + return WebGL2CmdBlitTexture; + }(WebGL2CmdObject); + var WebGL2CmdPackage = function () { + function WebGL2CmdPackage() { + this.cmds = new CachedArray(1); + this.beginRenderPassCmds = new CachedArray(1); + this.bindStatesCmds = new CachedArray(1); + this.drawCmds = new CachedArray(1); + this.updateBufferCmds = new CachedArray(1); + this.copyBufferToTextureCmds = new CachedArray(1); + this.blitTextureCmds = new CachedArray(1); + } + var _proto7 = WebGL2CmdPackage.prototype; + _proto7.clearCmds = function clearCmds(allocator) { + if (this.beginRenderPassCmds.length) { + allocator.beginRenderPassCmdPool.freeCmds(this.beginRenderPassCmds); + this.beginRenderPassCmds.clear(); + } + if (this.bindStatesCmds.length) { + allocator.bindStatesCmdPool.freeCmds(this.bindStatesCmds); + this.bindStatesCmds.clear(); + } + if (this.drawCmds.length) { + allocator.drawCmdPool.freeCmds(this.drawCmds); + this.drawCmds.clear(); + } + if (this.updateBufferCmds.length) { + allocator.updateBufferCmdPool.freeCmds(this.updateBufferCmds); + this.updateBufferCmds.clear(); + } + if (this.copyBufferToTextureCmds.length) { + allocator.copyBufferToTextureCmdPool.freeCmds(this.copyBufferToTextureCmds); + this.copyBufferToTextureCmds.clear(); + } + if (this.blitTextureCmds.length) { + allocator.blitTextureCmdPool.freeCmds(this.blitTextureCmds); + this.blitTextureCmds.clear(); + } + this.cmds.clear(); + }; + return WebGL2CmdPackage; + }(); + function WebGL2CmdFuncCreateBuffer(device, gpuBuffer) { + var gl = device.gl; + var cache = device.stateCache; + var glUsage = gpuBuffer.memUsage & MemoryUsageBit.HOST ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW; + if (gpuBuffer.usage & BufferUsageBit.VERTEX) { + gpuBuffer.glTarget = gl.ARRAY_BUFFER; + var glBuffer = gl.createBuffer(); + if (glBuffer) { + gpuBuffer.glBuffer = glBuffer; + if (gpuBuffer.size > 0) { + if (device.extensions.useVAO) { + if (cache.glVAO) { + gl.bindVertexArray(null); + cache.glVAO = null; + } + } + gfxStateCache.gpuInputAssembler = null; + if (device.stateCache.glArrayBuffer !== gpuBuffer.glBuffer) { + gl.bindBuffer(gl.ARRAY_BUFFER, gpuBuffer.glBuffer); + device.stateCache.glArrayBuffer = gpuBuffer.glBuffer; + } + gl.bufferData(gl.ARRAY_BUFFER, gpuBuffer.size, glUsage); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + device.stateCache.glArrayBuffer = null; + } + } + } else if (gpuBuffer.usage & BufferUsageBit.INDEX) { + gpuBuffer.glTarget = gl.ELEMENT_ARRAY_BUFFER; + var _glBuffer = gl.createBuffer(); + if (_glBuffer) { + gpuBuffer.glBuffer = _glBuffer; + if (gpuBuffer.size > 0) { + if (device.extensions.useVAO) { + if (cache.glVAO) { + gl.bindVertexArray(null); + cache.glVAO = null; + } + } + gfxStateCache.gpuInputAssembler = null; + if (device.stateCache.glElementArrayBuffer !== gpuBuffer.glBuffer) { + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, gpuBuffer.glBuffer); + device.stateCache.glElementArrayBuffer = gpuBuffer.glBuffer; + } + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, gpuBuffer.size, glUsage); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + device.stateCache.glElementArrayBuffer = null; + } + } + } else if (gpuBuffer.usage & BufferUsageBit.UNIFORM) { + gpuBuffer.glTarget = gl.UNIFORM_BUFFER; + var _glBuffer2 = gl.createBuffer(); + if (_glBuffer2 && gpuBuffer.size > 0) { + gpuBuffer.glBuffer = _glBuffer2; + if (device.stateCache.glUniformBuffer !== gpuBuffer.glBuffer) { + gl.bindBuffer(gl.UNIFORM_BUFFER, gpuBuffer.glBuffer); + device.stateCache.glUniformBuffer = gpuBuffer.glBuffer; + } + gl.bufferData(gl.UNIFORM_BUFFER, gpuBuffer.size, glUsage); + gl.bindBuffer(gl.UNIFORM_BUFFER, null); + device.stateCache.glUniformBuffer = null; + } + } else if (gpuBuffer.usage & BufferUsageBit.INDIRECT) { + gpuBuffer.glTarget = gl.NONE; + } else if (gpuBuffer.usage & BufferUsageBit.TRANSFER_DST) { + gpuBuffer.glTarget = gl.NONE; + } else if (gpuBuffer.usage & BufferUsageBit.TRANSFER_SRC) { + gpuBuffer.glTarget = gl.NONE; + } else { + error('Unsupported BufferType, create buffer failed.'); + gpuBuffer.glTarget = gl.NONE; + } + } + function WebGL2CmdFuncDestroyBuffer(device, gpuBuffer) { + var gl = device.gl; + var cache = device.stateCache; + if (gpuBuffer.glBuffer) { + switch (gpuBuffer.glTarget) { + case gl.ARRAY_BUFFER: + if (device.extensions.useVAO) { + if (cache.glVAO) { + gl.bindVertexArray(null); + device.stateCache.glVAO = null; + } + } + gfxStateCache.gpuInputAssembler = null; + gl.bindBuffer(gl.ARRAY_BUFFER, null); + device.stateCache.glArrayBuffer = null; + break; + case gl.ELEMENT_ARRAY_BUFFER: + if (device.extensions.useVAO) { + if (cache.glVAO) { + gl.bindVertexArray(null); + device.stateCache.glVAO = null; + } + } + gfxStateCache.gpuInputAssembler = null; + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + device.stateCache.glElementArrayBuffer = null; + break; + case gl.UNIFORM_BUFFER: + gl.bindBuffer(gl.UNIFORM_BUFFER, null); + device.stateCache.glUniformBuffer = null; + break; + } + gl.deleteBuffer(gpuBuffer.glBuffer); + gpuBuffer.glBuffer = null; + } + } + function WebGL2CmdFuncResizeBuffer(device, gpuBuffer) { + var gl = device.gl; + var cache = device.stateCache; + var glUsage = gpuBuffer.memUsage & MemoryUsageBit.HOST ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW; + if (gpuBuffer.usage & BufferUsageBit.VERTEX) { + if (device.extensions.useVAO) { + if (cache.glVAO) { + gl.bindVertexArray(null); + cache.glVAO = null; + } + } + gfxStateCache.gpuInputAssembler = null; + if (cache.glArrayBuffer !== gpuBuffer.glBuffer) { + gl.bindBuffer(gl.ARRAY_BUFFER, gpuBuffer.glBuffer); + } + if (gpuBuffer.buffer) { + gl.bufferData(gl.ARRAY_BUFFER, gpuBuffer.buffer, glUsage); + } else { + gl.bufferData(gl.ARRAY_BUFFER, gpuBuffer.size, glUsage); + } + gl.bindBuffer(gl.ARRAY_BUFFER, null); + cache.glArrayBuffer = null; + } else if (gpuBuffer.usage & BufferUsageBit.INDEX) { + if (device.extensions.useVAO) { + if (cache.glVAO) { + gl.bindVertexArray(null); + cache.glVAO = null; + } + } + gfxStateCache.gpuInputAssembler = null; + if (device.stateCache.glElementArrayBuffer !== gpuBuffer.glBuffer) { + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, gpuBuffer.glBuffer); + } + if (gpuBuffer.buffer) { + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, gpuBuffer.buffer, glUsage); + } else { + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, gpuBuffer.size, glUsage); + } + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + device.stateCache.glElementArrayBuffer = null; + } else if (gpuBuffer.usage & BufferUsageBit.UNIFORM) { + if (device.stateCache.glUniformBuffer !== gpuBuffer.glBuffer) { + gl.bindBuffer(gl.UNIFORM_BUFFER, gpuBuffer.glBuffer); + } + gl.bufferData(gl.UNIFORM_BUFFER, gpuBuffer.size, glUsage); + gl.bindBuffer(gl.UNIFORM_BUFFER, null); + device.stateCache.glUniformBuffer = null; + } else if (gpuBuffer.usage & BufferUsageBit.INDIRECT || gpuBuffer.usage & BufferUsageBit.TRANSFER_DST || gpuBuffer.usage & BufferUsageBit.TRANSFER_SRC) { + gpuBuffer.glTarget = gl.NONE; + } else { + error('Unsupported BufferType, create buffer failed.'); + gpuBuffer.glTarget = gl.NONE; + } + } + function WebGL2CmdFuncUpdateBuffer(device, gpuBuffer, buffer, offset, size) { + if (gpuBuffer.usage & BufferUsageBit.INDIRECT) { + gpuBuffer.indirects.clearDraws(); + var drawInfos = buffer.drawInfos; + for (var i = 0; i < drawInfos.length; ++i) { + gpuBuffer.indirects.setDrawInfo(offset + i, drawInfos[i]); + } + } else { + var buff = buffer; + var gl = device.gl; + var cache = device.stateCache; + switch (gpuBuffer.glTarget) { + case gl.ARRAY_BUFFER: + { + if (device.extensions.useVAO) { + if (cache.glVAO) { + gl.bindVertexArray(null); + cache.glVAO = null; + } + } + gfxStateCache.gpuInputAssembler = null; + if (cache.glArrayBuffer !== gpuBuffer.glBuffer) { + gl.bindBuffer(gl.ARRAY_BUFFER, gpuBuffer.glBuffer); + cache.glArrayBuffer = gpuBuffer.glBuffer; + } + if (size === buff.byteLength) { + gl.bufferSubData(gpuBuffer.glTarget, offset, buff); + } else { + gl.bufferSubData(gpuBuffer.glTarget, offset, buff.slice(0, size)); + } + break; + } + case gl.ELEMENT_ARRAY_BUFFER: + { + if (device.extensions.useVAO) { + if (cache.glVAO) { + gl.bindVertexArray(null); + cache.glVAO = null; + } + } + gfxStateCache.gpuInputAssembler = null; + if (cache.glElementArrayBuffer !== gpuBuffer.glBuffer) { + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, gpuBuffer.glBuffer); + cache.glElementArrayBuffer = gpuBuffer.glBuffer; + } + if (size === buff.byteLength) { + gl.bufferSubData(gpuBuffer.glTarget, offset, buff); + } else { + gl.bufferSubData(gpuBuffer.glTarget, offset, buff.slice(0, size)); + } + break; + } + case gl.UNIFORM_BUFFER: + { + if (cache.glUniformBuffer !== gpuBuffer.glBuffer) { + gl.bindBuffer(gl.UNIFORM_BUFFER, gpuBuffer.glBuffer); + cache.glUniformBuffer = gpuBuffer.glBuffer; + } + if (size === buff.byteLength) { + gl.bufferSubData(gpuBuffer.glTarget, offset, buff); + } else { + gl.bufferSubData(gpuBuffer.glTarget, offset, new Float32Array(buff, 0, size / 4)); + } + break; + } + default: + { + error('Unsupported BufferType, update buffer failed.'); + } + } + } + } + function WebGL2CmdFuncCreateTexture(device, gpuTexture) { + var gl = device.gl; + gpuTexture.glInternalFmt = GFXFormatToWebGLInternalFormat(gpuTexture.format, gl); + gpuTexture.glFormat = GFXFormatToWebGLFormat(gpuTexture.format, gl); + gpuTexture.glType = GFXFormatToWebGLType(gpuTexture.format, gl); + var w = gpuTexture.width; + var h = gpuTexture.height; + var d = gpuTexture.depth; + var l = gpuTexture.arrayLayer; + switch (gpuTexture.type) { + case TextureType.TEX2D: + { + gpuTexture.glTarget = gl.TEXTURE_2D; + var maxSize = Math.max(w, h); + if (maxSize > device.capabilities.maxTextureSize) { + errorID(9100, maxSize, device.capabilities.maxTextureSize); + } + if (gpuTexture.samples === SampleCount.X1) { + gpuTexture.glTexture = gl.createTexture(); + if (gpuTexture.size > 0) { + var glTexUnit = device.stateCache.glTexUnits[device.stateCache.texUnit]; + if (glTexUnit.glTexture !== gpuTexture.glTexture) { + gl.bindTexture(gl.TEXTURE_2D, gpuTexture.glTexture); + glTexUnit.glTexture = gpuTexture.glTexture; + } + if (FormatInfos[gpuTexture.format].isCompressed) { + for (var i = 0; i < gpuTexture.mipLevel; ++i) { + var imgSize = FormatSize(gpuTexture.format, w, h, 1); + var view = new Uint8Array(imgSize); + gl.compressedTexImage2D(gl.TEXTURE_2D, i, gpuTexture.glInternalFmt, w, h, 0, view); + w = Math.max(1, w >> 1); + h = Math.max(1, h >> 1); + } + } else { + gl.texStorage2D(gl.TEXTURE_2D, gpuTexture.mipLevel, gpuTexture.glInternalFmt, w, h); + } + } + } else { + gpuTexture.glRenderbuffer = gl.createRenderbuffer(); + if (gpuTexture.size > 0) { + if (device.stateCache.glRenderbuffer !== gpuTexture.glRenderbuffer) { + gl.bindRenderbuffer(gl.RENDERBUFFER, gpuTexture.glRenderbuffer); + device.stateCache.glRenderbuffer = gpuTexture.glRenderbuffer; + } + gl.renderbufferStorageMultisample(gl.RENDERBUFFER, gpuTexture.samples, gpuTexture.glInternalFmt, gpuTexture.width, gpuTexture.height); + } + } + break; + } + case TextureType.TEX2D_ARRAY: + { + gpuTexture.glTarget = gl.TEXTURE_2D_ARRAY; + var _maxSize = Math.max(w, h); + if (_maxSize > device.capabilities.maxTextureSize) { + errorID(9100, _maxSize, device.capabilities.maxTextureSize); + } + if (l > device.capabilities.maxArrayTextureLayers) { + errorID(9100, l, device.capabilities.maxArrayTextureLayers); + } + gpuTexture.glTexture = gl.createTexture(); + if (gpuTexture.size > 0) { + var _glTexUnit = device.stateCache.glTexUnits[device.stateCache.texUnit]; + if (_glTexUnit.glTexture !== gpuTexture.glTexture) { + gl.bindTexture(gl.TEXTURE_2D_ARRAY, gpuTexture.glTexture); + _glTexUnit.glTexture = gpuTexture.glTexture; + } + if (FormatInfos[gpuTexture.format].isCompressed) { + for (var _i = 0; _i < gpuTexture.mipLevel; ++_i) { + var _imgSize = FormatSize(gpuTexture.format, w, h, l); + var _view = new Uint8Array(_imgSize); + gl.compressedTexImage3D(gl.TEXTURE_2D_ARRAY, _i, gpuTexture.glInternalFmt, w, h, l, 0, _view); + w = Math.max(1, w >> 1); + h = Math.max(1, h >> 1); + } + } else { + gl.texStorage3D(gl.TEXTURE_2D_ARRAY, gpuTexture.mipLevel, gpuTexture.glInternalFmt, w, h, l); + } + } + break; + } + case TextureType.TEX3D: + { + gpuTexture.glTarget = gl.TEXTURE_3D; + var _maxSize2 = Math.max(Math.max(w, h), d); + if (_maxSize2 > device.capabilities.max3DTextureSize) { + errorID(9100, _maxSize2, device.capabilities.max3DTextureSize); + } + gpuTexture.glTexture = gl.createTexture(); + if (gpuTexture.size > 0) { + var _glTexUnit2 = device.stateCache.glTexUnits[device.stateCache.texUnit]; + if (_glTexUnit2.glTexture !== gpuTexture.glTexture) { + gl.bindTexture(gl.TEXTURE_3D, gpuTexture.glTexture); + _glTexUnit2.glTexture = gpuTexture.glTexture; + } + if (FormatInfos[gpuTexture.format].isCompressed) { + for (var _i2 = 0; _i2 < gpuTexture.mipLevel; ++_i2) { + var _imgSize2 = FormatSize(gpuTexture.format, w, h, d); + var _view2 = new Uint8Array(_imgSize2); + gl.compressedTexImage3D(gl.TEXTURE_3D, _i2, gpuTexture.glInternalFmt, w, h, d, 0, _view2); + w = Math.max(1, w >> 1); + h = Math.max(1, h >> 1); + } + } else { + gl.texStorage3D(gl.TEXTURE_3D, gpuTexture.mipLevel, gpuTexture.glInternalFmt, w, h, d); + } + } + break; + } + case TextureType.CUBE: + { + gpuTexture.glTarget = gl.TEXTURE_CUBE_MAP; + var _maxSize3 = Math.max(w, h); + if (_maxSize3 > device.capabilities.maxCubeMapTextureSize) { + errorID(9100, _maxSize3, device.capabilities.maxTextureSize); + } + gpuTexture.glTexture = gl.createTexture(); + if (gpuTexture.size > 0) { + var _glTexUnit3 = device.stateCache.glTexUnits[device.stateCache.texUnit]; + if (_glTexUnit3.glTexture !== gpuTexture.glTexture) { + gl.bindTexture(gl.TEXTURE_CUBE_MAP, gpuTexture.glTexture); + _glTexUnit3.glTexture = gpuTexture.glTexture; + } + if (FormatInfos[gpuTexture.format].isCompressed) { + for (var _i3 = 0; _i3 < gpuTexture.mipLevel; ++_i3) { + var _imgSize3 = FormatSize(gpuTexture.format, w, h, 1); + var _view3 = new Uint8Array(_imgSize3); + for (var f = 0; f < 6; ++f) { + gl.compressedTexImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + f, _i3, gpuTexture.glInternalFmt, w, h, 0, _view3); + } + w = Math.max(1, w >> 1); + h = Math.max(1, h >> 1); + } + } else { + gl.texStorage2D(gl.TEXTURE_CUBE_MAP, gpuTexture.mipLevel, gpuTexture.glInternalFmt, w, h); + } + } + break; + } + default: + { + error('Unsupported TextureType, create texture failed.'); + gpuTexture.type = TextureType.TEX2D; + gpuTexture.glTarget = gl.TEXTURE_2D; + } + } + } + function WebGL2CmdFuncDestroyTexture(device, gpuTexture) { + var gl = device.gl; + if (gpuTexture.glTexture) { + var glTexUnits = device.stateCache.glTexUnits; + var texUnit = device.stateCache.texUnit; + gl.deleteTexture(gpuTexture.glTexture); + for (var i = 0; i < glTexUnits.length; ++i) { + if (glTexUnits[i].glTexture === gpuTexture.glTexture) { + gl.activeTexture(gl.TEXTURE0 + i); + texUnit = i; + gl.bindTexture(gpuTexture.glTarget, null); + glTexUnits[i].glTexture = null; + } + } + device.stateCache.texUnit = texUnit; + gpuTexture.glTexture = null; + } + if (gpuTexture.glRenderbuffer) { + var glRenderbuffer = device.stateCache.glRenderbuffer; + gl.deleteRenderbuffer(gpuTexture.glRenderbuffer); + if (glRenderbuffer === gpuTexture.glRenderbuffer) { + gl.bindRenderbuffer(gl.RENDERBUFFER, null); + glRenderbuffer = null; + } + gpuTexture.glRenderbuffer = null; + } + } + function WebGL2CmdFuncResizeTexture(device, gpuTexture) { + if (!gpuTexture.size) return; + var gl = device.gl; + var w = gpuTexture.width; + var h = gpuTexture.height; + var d = gpuTexture.depth; + var l = gpuTexture.arrayLayer; + switch (gpuTexture.type) { + case TextureType.TEX2D: + { + gpuTexture.glTarget = gl.TEXTURE_2D; + var maxSize = Math.max(w, h); + if (maxSize > device.capabilities.maxTextureSize) { + errorID(9100, maxSize, device.capabilities.maxTextureSize); + } + if (gpuTexture.samples === SampleCount.X1) { + var glTexUnit = device.stateCache.glTexUnits[device.stateCache.texUnit]; + if (glTexUnit.glTexture !== gpuTexture.glTexture) { + gl.bindTexture(gl.TEXTURE_2D, gpuTexture.glTexture); + glTexUnit.glTexture = gpuTexture.glTexture; + } + if (FormatInfos[gpuTexture.format].isCompressed) { + for (var i = 0; i < gpuTexture.mipLevel; ++i) { + var imgSize = FormatSize(gpuTexture.format, w, h, 1); + var view = new Uint8Array(imgSize); + gl.compressedTexImage2D(gl.TEXTURE_2D, i, gpuTexture.glInternalFmt, w, h, 0, view); + w = Math.max(1, w >> 1); + h = Math.max(1, h >> 1); + } + } else { + WebGL2CmdFuncDestroyTexture(device, gpuTexture); + WebGL2CmdFuncCreateTexture(device, gpuTexture); + } + } else if (gpuTexture.glRenderbuffer) { + if (device.stateCache.glRenderbuffer !== gpuTexture.glRenderbuffer) { + gl.bindRenderbuffer(gl.RENDERBUFFER, gpuTexture.glRenderbuffer); + device.stateCache.glRenderbuffer = gpuTexture.glRenderbuffer; + } + gl.renderbufferStorageMultisample(gl.RENDERBUFFER, gpuTexture.samples, gpuTexture.glInternalFmt, gpuTexture.width, gpuTexture.height); + } + break; + } + case TextureType.TEX2D_ARRAY: + { + gpuTexture.glTarget = gl.TEXTURE_2D_ARRAY; + var _maxSize4 = Math.max(w, h); + if (_maxSize4 > device.capabilities.maxTextureSize) { + errorID(9100, _maxSize4, device.capabilities.maxTextureSize); + } + if (l > device.capabilities.maxArrayTextureLayers) { + errorID(9100, l, device.capabilities.maxArrayTextureLayers); + } + gpuTexture.glTexture = gl.createTexture(); + if (gpuTexture.size > 0) { + var _glTexUnit4 = device.stateCache.glTexUnits[device.stateCache.texUnit]; + if (_glTexUnit4.glTexture !== gpuTexture.glTexture) { + gl.bindTexture(gl.TEXTURE_2D_ARRAY, gpuTexture.glTexture); + _glTexUnit4.glTexture = gpuTexture.glTexture; + } + if (FormatInfos[gpuTexture.format].isCompressed) { + for (var _i4 = 0; _i4 < gpuTexture.mipLevel; ++_i4) { + var _imgSize4 = FormatSize(gpuTexture.format, w, h, l); + var _view4 = new Uint8Array(_imgSize4); + gl.compressedTexImage3D(gl.TEXTURE_2D_ARRAY, _i4, gpuTexture.glInternalFmt, w, h, l, 0, _view4); + w = Math.max(1, w >> 1); + h = Math.max(1, h >> 1); + } + } else { + gl.texStorage3D(gl.TEXTURE_2D_ARRAY, gpuTexture.mipLevel, gpuTexture.glInternalFmt, w, h, l); + } + } + break; + } + case TextureType.TEX3D: + { + gpuTexture.glTarget = gl.TEXTURE_3D; + var _maxSize5 = Math.max(Math.max(w, h), d); + if (_maxSize5 > device.capabilities.max3DTextureSize) { + errorID(9100, _maxSize5, device.capabilities.max3DTextureSize); + } + gpuTexture.glTexture = gl.createTexture(); + if (gpuTexture.size > 0) { + var _glTexUnit5 = device.stateCache.glTexUnits[device.stateCache.texUnit]; + if (_glTexUnit5.glTexture !== gpuTexture.glTexture) { + gl.bindTexture(gl.TEXTURE_3D, gpuTexture.glTexture); + _glTexUnit5.glTexture = gpuTexture.glTexture; + } + if (FormatInfos[gpuTexture.format].isCompressed) { + for (var _i5 = 0; _i5 < gpuTexture.mipLevel; ++_i5) { + var _imgSize5 = FormatSize(gpuTexture.format, w, h, d); + var _view5 = new Uint8Array(_imgSize5); + gl.compressedTexImage3D(gl.TEXTURE_3D, _i5, gpuTexture.glInternalFmt, w, h, d, 0, _view5); + w = Math.max(1, w >> 1); + h = Math.max(1, h >> 1); + } + } else { + gl.texStorage3D(gl.TEXTURE_3D, gpuTexture.mipLevel, gpuTexture.glInternalFmt, w, h, d); + } + } + break; + } + case TextureType.CUBE: + { + gpuTexture.type = TextureType.CUBE; + gpuTexture.glTarget = gl.TEXTURE_CUBE_MAP; + var _maxSize6 = Math.max(w, h); + if (_maxSize6 > device.capabilities.maxCubeMapTextureSize) { + errorID(9100, _maxSize6, device.capabilities.maxTextureSize); + } + var _glTexUnit6 = device.stateCache.glTexUnits[device.stateCache.texUnit]; + if (_glTexUnit6.glTexture !== gpuTexture.glTexture) { + gl.bindTexture(gl.TEXTURE_CUBE_MAP, gpuTexture.glTexture); + _glTexUnit6.glTexture = gpuTexture.glTexture; + } + if (FormatInfos[gpuTexture.format].isCompressed) { + for (var f = 0; f < 6; ++f) { + w = gpuTexture.width; + h = gpuTexture.height; + for (var _i6 = 0; _i6 < gpuTexture.mipLevel; ++_i6) { + var _imgSize6 = FormatSize(gpuTexture.format, w, h, 1); + var _view6 = new Uint8Array(_imgSize6); + gl.compressedTexImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + f, _i6, gpuTexture.glInternalFmt, w, h, 0, _view6); + w = Math.max(1, w >> 1); + h = Math.max(1, h >> 1); + } + } + } else { + WebGL2CmdFuncDestroyTexture(device, gpuTexture); + WebGL2CmdFuncCreateTexture(device, gpuTexture); + } + break; + } + default: + { + error('Unsupported TextureType, create texture failed.'); + gpuTexture.type = TextureType.TEX2D; + gpuTexture.glTarget = gl.TEXTURE_2D; + } + } + } + function WebGL2CmdFuncPrepareSamplerInfo(device, gpuSampler) { + var gl = device.gl; + if (gpuSampler.minFilter === Filter$1.LINEAR || gpuSampler.minFilter === Filter$1.ANISOTROPIC) { + if (gpuSampler.mipFilter === Filter$1.LINEAR || gpuSampler.mipFilter === Filter$1.ANISOTROPIC) { + gpuSampler.glMinFilter = gl.LINEAR_MIPMAP_LINEAR; + } else if (gpuSampler.mipFilter === Filter$1.POINT) { + gpuSampler.glMinFilter = gl.LINEAR_MIPMAP_NEAREST; + } else { + gpuSampler.glMinFilter = gl.LINEAR; + } + } else if (gpuSampler.mipFilter === Filter$1.LINEAR || gpuSampler.mipFilter === Filter$1.ANISOTROPIC) { + gpuSampler.glMinFilter = gl.NEAREST_MIPMAP_LINEAR; + } else if (gpuSampler.mipFilter === Filter$1.POINT) { + gpuSampler.glMinFilter = gl.NEAREST_MIPMAP_NEAREST; + } else { + gpuSampler.glMinFilter = gl.NEAREST; + } + if (gpuSampler.magFilter === Filter$1.LINEAR || gpuSampler.magFilter === Filter$1.ANISOTROPIC) { + gpuSampler.glMagFilter = gl.LINEAR; + } else { + gpuSampler.glMagFilter = gl.NEAREST; + } + gpuSampler.glWrapS = WebGLWraps[gpuSampler.addressU]; + gpuSampler.glWrapT = WebGLWraps[gpuSampler.addressV]; + gpuSampler.glWrapR = WebGLWraps[gpuSampler.addressW]; + } + function WebGL2CmdFuncDestroySampler(device, gpuSampler) { + var gl = device.gl; + var it = gpuSampler.glSamplers.values(); + var res = it.next(); + while (!res.done) { + gl.deleteSampler(res.value); + var glSamplerUnits = device.stateCache.glSamplerUnits; + for (var i = 0; i < glSamplerUnits.length; ++i) { + if (glSamplerUnits[i] === res.value) { + gl.bindSampler(i, null); + glSamplerUnits[i] = null; + } + } + } + gpuSampler.glSamplers.clear(); + } + function WebGL2CmdFuncCreateFramebuffer(device, gpuFramebuffer) { + for (var i = 0; i < gpuFramebuffer.gpuColorViews.length; ++i) { + var tex = gpuFramebuffer.gpuColorViews[i].gpuTexture; + if (tex.isSwapchainTexture) { + gpuFramebuffer.isOffscreen = false; + return; + } + } + var gl = device.gl; + var attachments = []; + var glFramebuffer = gl.createFramebuffer(); + if (glFramebuffer) { + gpuFramebuffer.glFramebuffer = glFramebuffer; + if (device.stateCache.glFramebuffer !== gpuFramebuffer.glFramebuffer) { + gl.bindFramebuffer(gl.FRAMEBUFFER, gpuFramebuffer.glFramebuffer); + } + for (var _i7 = 0; _i7 < gpuFramebuffer.gpuColorViews.length; ++_i7) { + var colorTextureView = gpuFramebuffer.gpuColorViews[_i7]; + var colorTexture = colorTextureView.gpuTexture; + if (colorTexture) { + if (colorTexture.glTexture) { + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + _i7, colorTexture.glTarget, colorTexture.glTexture, colorTextureView.baseLevel); + } else { + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + _i7, gl.RENDERBUFFER, colorTexture.glRenderbuffer); + } + attachments.push(gl.COLOR_ATTACHMENT0 + _i7); + gpuFramebuffer.width = Math.min(gpuFramebuffer.width, colorTexture.width >> colorTextureView.baseLevel); + gpuFramebuffer.height = Math.min(gpuFramebuffer.height, colorTexture.height >> colorTextureView.baseLevel); + } + } + var dstView = gpuFramebuffer.gpuDepthStencilView; + if (dstView) { + var dst = dstView.gpuTexture; + var glAttachment = FormatInfos[dst.format].hasStencil ? gl.DEPTH_STENCIL_ATTACHMENT : gl.DEPTH_ATTACHMENT; + if (dst.glTexture) { + gl.framebufferTexture2D(gl.FRAMEBUFFER, glAttachment, dst.glTarget, dst.glTexture, gpuFramebuffer.gpuDepthStencilView.baseLevel); + } else { + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, glAttachment, gl.RENDERBUFFER, dst.glRenderbuffer); + } + gpuFramebuffer.width = Math.min(gpuFramebuffer.width, dst.width >> dstView.baseLevel); + gpuFramebuffer.height = Math.min(gpuFramebuffer.height, dst.height >> dstView.baseLevel); + } + gl.drawBuffers(attachments); + var status = gl.checkFramebufferStatus(gl.FRAMEBUFFER); + if (status !== gl.FRAMEBUFFER_COMPLETE) { + switch (status) { + case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT: + { + error('glCheckFramebufferStatus() - FRAMEBUFFER_INCOMPLETE_ATTACHMENT'); + break; + } + case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: + { + error('glCheckFramebufferStatus() - FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT'); + break; + } + case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS: + { + error('glCheckFramebufferStatus() - FRAMEBUFFER_INCOMPLETE_DIMENSIONS'); + break; + } + case gl.FRAMEBUFFER_UNSUPPORTED: + { + error('glCheckFramebufferStatus() - FRAMEBUFFER_UNSUPPORTED'); + break; + } + } + } + if (device.stateCache.glFramebuffer !== gpuFramebuffer.glFramebuffer) { + gl.bindFramebuffer(gl.FRAMEBUFFER, device.stateCache.glFramebuffer); + } + } + } + function WebGL2CmdFuncDestroyFramebuffer(device, gpuFramebuffer) { + if (gpuFramebuffer.glFramebuffer) { + device.gl.deleteFramebuffer(gpuFramebuffer.glFramebuffer); + if (device.stateCache.glFramebuffer === gpuFramebuffer.glFramebuffer) { + device.gl.bindFramebuffer(device.gl.FRAMEBUFFER, null); + device.stateCache.glFramebuffer = null; + } + gpuFramebuffer.glFramebuffer = null; + } + } + function WebGL2CmdFuncCreateShader(device, gpuShader) { + var gl = device.gl; + var _loop = function _loop() { + var gpuStage = gpuShader.gpuStages[k]; + var glShaderType = 0; + var shaderTypeStr = ''; + var lineNumber = 1; + switch (gpuStage.type) { + case ShaderStageFlagBit.VERTEX: + { + shaderTypeStr = 'VertexShader'; + glShaderType = gl.VERTEX_SHADER; + break; + } + case ShaderStageFlagBit.FRAGMENT: + { + shaderTypeStr = 'FragmentShader'; + glShaderType = gl.FRAGMENT_SHADER; + break; + } + default: + { + error('Unsupported ShaderType.'); + return { + v: void 0 + }; + } + } + var glShader = gl.createShader(glShaderType); + if (glShader) { + gpuStage.glShader = glShader; + gl.shaderSource(gpuStage.glShader, "#version 300 es\n" + gpuStage.source); + gl.compileShader(gpuStage.glShader); + if (!gl.getShaderParameter(gpuStage.glShader, gl.COMPILE_STATUS)) { + error(shaderTypeStr + " in '" + gpuShader.name + "' compilation failed."); + error('Shader source dump:', gpuStage.source.replace(/^|\n/g, function () { + return "\n" + lineNumber++ + " "; + })); + error(gl.getShaderInfoLog(gpuStage.glShader)); + for (var l = 0; l < gpuShader.gpuStages.length; l++) { + var stage = gpuShader.gpuStages[k]; + if (stage.glShader) { + gl.deleteShader(stage.glShader); + stage.glShader = null; + } + } + return { + v: void 0 + }; + } + } + }, + _ret; + for (var k = 0; k < gpuShader.gpuStages.length; k++) { + _ret = _loop(); + if (_ret) return _ret.v; + } + var glProgram = gl.createProgram(); + if (!glProgram) { + return; + } + gpuShader.glProgram = glProgram; + var enableEffectImport = !!(legacyCC.rendering && legacyCC.rendering.enableEffectImport); + for (var _k = 0; _k < gpuShader.gpuStages.length; _k++) { + var gpuStage = gpuShader.gpuStages[_k]; + gl.attachShader(gpuShader.glProgram, gpuStage.glShader); + } + gl.linkProgram(gpuShader.glProgram); + for (var _k2 = 0; _k2 < gpuShader.gpuStages.length; _k2++) { + var _gpuStage = gpuShader.gpuStages[_k2]; + if (_gpuStage.glShader) { + gl.detachShader(gpuShader.glProgram, _gpuStage.glShader); + gl.deleteShader(_gpuStage.glShader); + _gpuStage.glShader = null; + } + } + if (gl.getProgramParameter(gpuShader.glProgram, gl.LINK_STATUS)) { + debug("Shader '" + gpuShader.name + "' compilation succeeded."); + } else { + error("Failed to link shader '" + gpuShader.name + "'."); + error(gl.getProgramInfoLog(gpuShader.glProgram)); + return; + } + var activeAttribCount = gl.getProgramParameter(gpuShader.glProgram, gl.ACTIVE_ATTRIBUTES); + gpuShader.glInputs = new Array(activeAttribCount); + for (var i = 0; i < activeAttribCount; ++i) { + var attribInfo = gl.getActiveAttrib(gpuShader.glProgram, i); + if (attribInfo) { + var varName = void 0; + var nameOffset = attribInfo.name.indexOf('['); + if (nameOffset !== -1) { + varName = attribInfo.name.substr(0, nameOffset); + } else { + varName = attribInfo.name; + } + var glLoc = gl.getAttribLocation(gpuShader.glProgram, varName); + var type = WebGLTypeToGFXType(attribInfo.type, gl); + var stride = WebGLGetTypeSize(attribInfo.type, gl); + gpuShader.glInputs[i] = { + name: varName, + type: type, + stride: stride, + count: attribInfo.size, + size: stride * attribInfo.size, + glType: attribInfo.type, + glLoc: glLoc + }; + } + } + var activeBlockCount = gl.getProgramParameter(gpuShader.glProgram, gl.ACTIVE_UNIFORM_BLOCKS); + var blockName; + var blockIdx; + var blockSize; + var block; + if (activeBlockCount) { + gpuShader.glBlocks = new Array(activeBlockCount); + for (var b = 0; b < activeBlockCount; ++b) { + blockName = gl.getActiveUniformBlockName(gpuShader.glProgram, b); + var _nameOffset = blockName.indexOf('['); + if (_nameOffset !== -1) { + blockName = blockName.substr(0, _nameOffset); + } + block = null; + for (var _k3 = 0; _k3 < gpuShader.blocks.length; _k3++) { + if (gpuShader.blocks[_k3].name === blockName) { + block = gpuShader.blocks[_k3]; + break; + } + } + if (!block) { + error("Block '" + blockName + "' does not bound"); + } else { + blockIdx = b; + blockSize = gl.getActiveUniformBlockParameter(gpuShader.glProgram, blockIdx, gl.UNIFORM_BLOCK_DATA_SIZE); + var glBinding = enableEffectImport ? block.flattened : block.binding + (device.bindingMappings.blockOffsets[block.set] || 0); + gl.uniformBlockBinding(gpuShader.glProgram, blockIdx, glBinding); + gpuShader.glBlocks[b] = { + set: block.set, + binding: block.binding, + idx: blockIdx, + name: blockName, + size: blockSize, + glBinding: glBinding + }; + } + } + } + for (var _i8 = 0; _i8 < gpuShader.subpassInputs.length; ++_i8) { + var subpassInput = gpuShader.subpassInputs[_i8]; + gpuShader.samplerTextures.push(new UniformSamplerTexture(subpassInput.set, subpassInput.binding, subpassInput.name, Type$1.SAMPLER2D, subpassInput.count)); + } + if (gpuShader.samplerTextures.length > 0) { + gpuShader.glSamplerTextures = new Array(gpuShader.samplerTextures.length); + for (var _i9 = 0; _i9 < gpuShader.samplerTextures.length; ++_i9) { + var sampler = gpuShader.samplerTextures[_i9]; + gpuShader.glSamplerTextures[_i9] = { + set: sampler.set, + binding: sampler.binding, + name: sampler.name, + type: sampler.type, + count: sampler.count, + units: [], + glUnits: null, + glType: GFXTypeToWebGLType(sampler.type, gl), + glLoc: null + }; + } + } + var glActiveSamplers = []; + var glActiveSamplerLocations = []; + var texUnitCacheMap = device.stateCache.texUnitCacheMap; + if (!enableEffectImport) { + var flexibleSetBaseOffset = 0; + for (var _i10 = 0; _i10 < gpuShader.blocks.length; ++_i10) { + if (gpuShader.blocks[_i10].set === device.bindingMappings.flexibleSet) { + flexibleSetBaseOffset++; + } + } + var arrayOffset = 0; + for (var _i11 = 0; _i11 < gpuShader.samplerTextures.length; ++_i11) { + var _sampler = gpuShader.samplerTextures[_i11]; + var _glLoc = gl.getUniformLocation(gpuShader.glProgram, _sampler.name); + if (_glLoc && _glLoc.id !== -1) { + glActiveSamplers.push(gpuShader.glSamplerTextures[_i11]); + glActiveSamplerLocations.push(_glLoc); + } + if (texUnitCacheMap[_sampler.name] === undefined) { + var binding = _sampler.binding + device.bindingMappings.samplerTextureOffsets[_sampler.set] + arrayOffset; + if (_sampler.set === device.bindingMappings.flexibleSet) { + binding -= flexibleSetBaseOffset; + } + texUnitCacheMap[_sampler.name] = binding % device.capabilities.maxTextureUnits; + arrayOffset += _sampler.count - 1; + } + } + } else { + for (var _i12 = 0; _i12 < gpuShader.samplerTextures.length; ++_i12) { + var _sampler2 = gpuShader.samplerTextures[_i12]; + var _glLoc2 = gl.getUniformLocation(gpuShader.glProgram, _sampler2.name); + if (_glLoc2 && _glLoc2.id !== -1) { + glActiveSamplers.push(gpuShader.glSamplerTextures[_i12]); + glActiveSamplerLocations.push(_glLoc2); + } + if (texUnitCacheMap[_sampler2.name] === undefined) { + texUnitCacheMap[_sampler2.name] = _sampler2.flattened % device.capabilities.maxTextureUnits; + } + } + } + if (glActiveSamplers.length) { + var usedTexUnits = []; + for (var _i13 = 0; _i13 < glActiveSamplers.length; ++_i13) { + var glSampler = glActiveSamplers[_i13]; + var cachedUnit = texUnitCacheMap[glSampler.name]; + if (cachedUnit !== undefined) { + glSampler.glLoc = glActiveSamplerLocations[_i13]; + for (var t = 0; t < glSampler.count; ++t) { + while (usedTexUnits[cachedUnit]) { + cachedUnit = (cachedUnit + 1) % device.capabilities.maxTextureUnits; + } + glSampler.units.push(cachedUnit); + usedTexUnits[cachedUnit] = true; + } + } + } + var unitIdx = 0; + for (var _i14 = 0; _i14 < glActiveSamplers.length; ++_i14) { + var _glSampler = glActiveSamplers[_i14]; + if (!_glSampler.glLoc) { + _glSampler.glLoc = glActiveSamplerLocations[_i14]; + while (usedTexUnits[unitIdx]) { + unitIdx++; + } + for (var _t = 0; _t < _glSampler.count; ++_t) { + while (usedTexUnits[unitIdx]) { + unitIdx = (unitIdx + 1) % device.capabilities.maxTextureUnits; + } + if (texUnitCacheMap[_glSampler.name] === undefined) { + texUnitCacheMap[_glSampler.name] = unitIdx; + } + _glSampler.units.push(unitIdx); + usedTexUnits[unitIdx] = true; + } + } + } + if (device.stateCache.glProgram !== gpuShader.glProgram) { + gl.useProgram(gpuShader.glProgram); + } + for (var _k4 = 0; _k4 < glActiveSamplers.length; _k4++) { + var _glSampler2 = glActiveSamplers[_k4]; + _glSampler2.glUnits = new Int32Array(_glSampler2.units); + gl.uniform1iv(_glSampler2.glLoc, _glSampler2.glUnits); + } + if (device.stateCache.glProgram !== gpuShader.glProgram) { + gl.useProgram(device.stateCache.glProgram); + } + } + gpuShader.glSamplerTextures = glActiveSamplers; + } + function WebGL2CmdFuncDestroyShader(device, gpuShader) { + if (gpuShader.glProgram) { + device.gl.deleteProgram(gpuShader.glProgram); + if (device.stateCache.glProgram === gpuShader.glProgram) { + device.gl.useProgram(null); + device.stateCache.glProgram = null; + } + gpuShader.glProgram = null; + } + } + function WebGL2CmdFuncCreateInputAssember(device, gpuInputAssembler) { + var gl = device.gl; + gpuInputAssembler.glAttribs = new Array(gpuInputAssembler.attributes.length); + var offsets = [0, 0, 0, 0, 0, 0, 0, 0]; + for (var i = 0; i < gpuInputAssembler.attributes.length; ++i) { + var attrib = gpuInputAssembler.attributes[i]; + var stream = attrib.stream !== undefined ? attrib.stream : 0; + var gpuBuffer = gpuInputAssembler.gpuVertexBuffers[stream]; + var glType = GFXFormatToWebGLType(attrib.format, gl); + var size = FormatInfos[attrib.format].size; + gpuInputAssembler.glAttribs[i] = { + name: attrib.name, + glBuffer: gpuBuffer.glBuffer, + glType: glType, + size: size, + count: FormatInfos[attrib.format].count, + stride: gpuBuffer.stride, + componentCount: WebGLGetComponentCount(glType, gl), + isNormalized: attrib.isNormalized !== undefined ? attrib.isNormalized : false, + isInstanced: attrib.isInstanced !== undefined ? attrib.isInstanced : false, + offset: offsets[stream] + }; + offsets[stream] += size; + } + } + function WebGL2CmdFuncDestroyInputAssembler(device, gpuInputAssembler) { + var it = gpuInputAssembler.glVAOs.values(); + var res = it.next(); + var gl = device.gl; + var glVAO = device.stateCache.glVAO; + while (!res.done) { + gl.deleteVertexArray(res.value); + if (glVAO === res.value) { + gl.bindVertexArray(null); + glVAO = null; + } + res = it.next(); + } + device.stateCache.glVAO = glVAO; + gpuInputAssembler.glVAOs.clear(); + } + var gfxStateCache = { + gpuPipelineState: null, + gpuInputAssembler: null, + glPrimitive: 0, + invalidateAttachments: [] + }; + function WebGL2CmdFuncBeginRenderPass(device, gpuRenderPass, gpuFramebuffer, renderArea, clearColors, clearDepth, clearStencil) { + var gl = device.gl; + var cache = device.stateCache; + var clears = 0; + if (gpuFramebuffer && gpuRenderPass) { + if (cache.glFramebuffer !== gpuFramebuffer.glFramebuffer) { + gl.bindFramebuffer(gl.FRAMEBUFFER, gpuFramebuffer.glFramebuffer); + cache.glFramebuffer = gpuFramebuffer.glFramebuffer; + } + if (cache.viewport.left !== renderArea.x || cache.viewport.top !== renderArea.y || cache.viewport.width !== renderArea.width || cache.viewport.height !== renderArea.height) { + gl.viewport(renderArea.x, renderArea.y, renderArea.width, renderArea.height); + cache.viewport.left = renderArea.x; + cache.viewport.top = renderArea.y; + cache.viewport.width = renderArea.width; + cache.viewport.height = renderArea.height; + } + if (cache.scissorRect.x !== renderArea.x || cache.scissorRect.y !== renderArea.y || cache.scissorRect.width !== renderArea.width || cache.scissorRect.height !== renderArea.height) { + gl.scissor(renderArea.x, renderArea.y, renderArea.width, renderArea.height); + cache.scissorRect.x = renderArea.x; + cache.scissorRect.y = renderArea.y; + cache.scissorRect.width = renderArea.width; + cache.scissorRect.height = renderArea.height; + } + gfxStateCache.invalidateAttachments.length = 0; + for (var j = 0; j < clearColors.length; ++j) { + var colorAttachment = gpuRenderPass.colorAttachments[j]; + if (colorAttachment.format !== Format.UNKNOWN) { + switch (colorAttachment.loadOp) { + case LoadOp.LOAD: + break; + case LoadOp.CLEAR: + { + if (cache.bs.targets[0].blendColorMask !== ColorMask.ALL) { + gl.colorMask(true, true, true, true); + } + if (gpuRenderPass.colorAttachments.length === 1) { + var clearColor = clearColors[0]; + gl.clearColor(clearColor.x, clearColor.y, clearColor.z, clearColor.w); + clears |= gl.COLOR_BUFFER_BIT; + } else { + _f32v4[0] = clearColors[j].x; + _f32v4[1] = clearColors[j].y; + _f32v4[2] = clearColors[j].z; + _f32v4[3] = clearColors[j].w; + gl.clearBufferfv(gl.COLOR, j, _f32v4); + } + break; + } + case LoadOp.DISCARD: + { + gfxStateCache.invalidateAttachments.push(gl.COLOR_ATTACHMENT0 + j); + break; + } + } + } + } + if (gpuRenderPass.depthStencilAttachment) { + if (gpuRenderPass.depthStencilAttachment.format !== Format.UNKNOWN) { + switch (gpuRenderPass.depthStencilAttachment.depthLoadOp) { + case LoadOp.LOAD: + break; + case LoadOp.CLEAR: + { + if (!cache.dss.depthWrite) { + gl.depthMask(true); + } + gl.clearDepth(clearDepth); + clears |= gl.DEPTH_BUFFER_BIT; + break; + } + case LoadOp.DISCARD: + { + gfxStateCache.invalidateAttachments.push(gl.DEPTH_ATTACHMENT); + break; + } + } + if (FormatInfos[gpuRenderPass.depthStencilAttachment.format].hasStencil) { + switch (gpuRenderPass.depthStencilAttachment.stencilLoadOp) { + case LoadOp.LOAD: + break; + case LoadOp.CLEAR: + { + if (!cache.dss.stencilWriteMaskFront) { + gl.stencilMaskSeparate(gl.FRONT, 0xffff); + } + if (!cache.dss.stencilWriteMaskBack) { + gl.stencilMaskSeparate(gl.BACK, 0xffff); + } + gl.clearStencil(clearStencil); + clears |= gl.STENCIL_BUFFER_BIT; + break; + } + case LoadOp.DISCARD: + { + gfxStateCache.invalidateAttachments.push(gl.STENCIL_ATTACHMENT); + break; + } + } + } + } + } + if (gpuFramebuffer.glFramebuffer && gfxStateCache.invalidateAttachments.length) { + gl.invalidateFramebuffer(gl.FRAMEBUFFER, gfxStateCache.invalidateAttachments); + } + if (clears) { + gl.clear(clears); + } + if (clears & gl.COLOR_BUFFER_BIT) { + var colorMask = cache.bs.targets[0].blendColorMask; + if (colorMask !== ColorMask.ALL) { + var r = (colorMask & ColorMask.R) !== ColorMask.NONE; + var g = (colorMask & ColorMask.G) !== ColorMask.NONE; + var b = (colorMask & ColorMask.B) !== ColorMask.NONE; + var a = (colorMask & ColorMask.A) !== ColorMask.NONE; + gl.colorMask(r, g, b, a); + } + } + if (clears & gl.DEPTH_BUFFER_BIT && !cache.dss.depthWrite) { + gl.depthMask(false); + } + if (clears & gl.STENCIL_BUFFER_BIT) { + if (!cache.dss.stencilWriteMaskFront) { + gl.stencilMaskSeparate(gl.FRONT, 0); + } + if (!cache.dss.stencilWriteMaskBack) { + gl.stencilMaskSeparate(gl.BACK, 0); + } + } + } + } + function WebGL2CmdFuncBindStates(device, gpuPipelineState, gpuInputAssembler, gpuDescriptorSets, dynamicOffsets, dynamicStates) { + var gl = device.gl; + var cache = device.stateCache; + var gpuShader = gpuPipelineState && gpuPipelineState.gpuShader; + var isShaderChanged = false; + if (gpuPipelineState && gfxStateCache.gpuPipelineState !== gpuPipelineState) { + gfxStateCache.gpuPipelineState = gpuPipelineState; + gfxStateCache.glPrimitive = gpuPipelineState.glPrimitive; + if (gpuShader) { + var glProgram = gpuShader.glProgram; + if (cache.glProgram !== glProgram) { + gl.useProgram(glProgram); + cache.glProgram = glProgram; + isShaderChanged = true; + } + } + var rs = gpuPipelineState.rs; + if (rs) { + if (cache.rs.cullMode !== rs.cullMode) { + switch (rs.cullMode) { + case CullMode.NONE: + { + gl.disable(gl.CULL_FACE); + break; + } + case CullMode.FRONT: + { + gl.enable(gl.CULL_FACE); + gl.cullFace(gl.FRONT); + break; + } + case CullMode.BACK: + { + gl.enable(gl.CULL_FACE); + gl.cullFace(gl.BACK); + break; + } + } + device.stateCache.rs.cullMode = rs.cullMode; + } + var isFrontFaceCCW = rs.isFrontFaceCCW; + if (device.stateCache.rs.isFrontFaceCCW !== isFrontFaceCCW) { + gl.frontFace(isFrontFaceCCW ? gl.CCW : gl.CW); + device.stateCache.rs.isFrontFaceCCW = isFrontFaceCCW; + } + if (device.stateCache.rs.depthBias !== rs.depthBias || device.stateCache.rs.depthBiasSlop !== rs.depthBiasSlop) { + gl.polygonOffset(rs.depthBias, rs.depthBiasSlop); + device.stateCache.rs.depthBias = rs.depthBias; + device.stateCache.rs.depthBiasSlop = rs.depthBiasSlop; + } + if (device.stateCache.rs.lineWidth !== rs.lineWidth) { + gl.lineWidth(rs.lineWidth); + device.stateCache.rs.lineWidth = rs.lineWidth; + } + } + var dss = gpuPipelineState.dss; + if (dss) { + if (cache.dss.depthTest !== dss.depthTest) { + if (dss.depthTest) { + gl.enable(gl.DEPTH_TEST); + } else { + gl.disable(gl.DEPTH_TEST); + } + cache.dss.depthTest = dss.depthTest; + } + if (cache.dss.depthWrite !== dss.depthWrite) { + gl.depthMask(dss.depthWrite); + cache.dss.depthWrite = dss.depthWrite; + } + if (cache.dss.depthFunc !== dss.depthFunc) { + gl.depthFunc(WebGLCmpFuncs[dss.depthFunc]); + cache.dss.depthFunc = dss.depthFunc; + } + if (cache.dss.stencilTestFront !== dss.stencilTestFront || cache.dss.stencilTestBack !== dss.stencilTestBack) { + if (dss.stencilTestFront || dss.stencilTestBack) { + gl.enable(gl.STENCIL_TEST); + } else { + gl.disable(gl.STENCIL_TEST); + } + cache.dss.stencilTestFront = dss.stencilTestFront; + cache.dss.stencilTestBack = dss.stencilTestBack; + } + if (cache.dss.stencilFuncFront !== dss.stencilFuncFront || cache.dss.stencilRefFront !== dss.stencilRefFront || cache.dss.stencilReadMaskFront !== dss.stencilReadMaskFront) { + gl.stencilFuncSeparate(gl.FRONT, WebGLCmpFuncs[dss.stencilFuncFront], dss.stencilRefFront, dss.stencilReadMaskFront); + cache.dss.stencilFuncFront = dss.stencilFuncFront; + cache.dss.stencilRefFront = dss.stencilRefFront; + cache.dss.stencilReadMaskFront = dss.stencilReadMaskFront; + } + if (cache.dss.stencilFailOpFront !== dss.stencilFailOpFront || cache.dss.stencilZFailOpFront !== dss.stencilZFailOpFront || cache.dss.stencilPassOpFront !== dss.stencilPassOpFront) { + gl.stencilOpSeparate(gl.FRONT, WebGLStencilOps[dss.stencilFailOpFront], WebGLStencilOps[dss.stencilZFailOpFront], WebGLStencilOps[dss.stencilPassOpFront]); + cache.dss.stencilFailOpFront = dss.stencilFailOpFront; + cache.dss.stencilZFailOpFront = dss.stencilZFailOpFront; + cache.dss.stencilPassOpFront = dss.stencilPassOpFront; + } + if (cache.dss.stencilWriteMaskFront !== dss.stencilWriteMaskFront) { + gl.stencilMaskSeparate(gl.FRONT, dss.stencilWriteMaskFront); + cache.dss.stencilWriteMaskFront = dss.stencilWriteMaskFront; + } + if (cache.dss.stencilFuncBack !== dss.stencilFuncBack || cache.dss.stencilRefBack !== dss.stencilRefBack || cache.dss.stencilReadMaskBack !== dss.stencilReadMaskBack) { + gl.stencilFuncSeparate(gl.BACK, WebGLCmpFuncs[dss.stencilFuncBack], dss.stencilRefBack, dss.stencilReadMaskBack); + cache.dss.stencilFuncBack = dss.stencilFuncBack; + cache.dss.stencilRefBack = dss.stencilRefBack; + cache.dss.stencilReadMaskBack = dss.stencilReadMaskBack; + } + if (cache.dss.stencilFailOpBack !== dss.stencilFailOpBack || cache.dss.stencilZFailOpBack !== dss.stencilZFailOpBack || cache.dss.stencilPassOpBack !== dss.stencilPassOpBack) { + gl.stencilOpSeparate(gl.BACK, WebGLStencilOps[dss.stencilFailOpBack], WebGLStencilOps[dss.stencilZFailOpBack], WebGLStencilOps[dss.stencilPassOpBack]); + cache.dss.stencilFailOpBack = dss.stencilFailOpBack; + cache.dss.stencilZFailOpBack = dss.stencilZFailOpBack; + cache.dss.stencilPassOpBack = dss.stencilPassOpBack; + } + if (cache.dss.stencilWriteMaskBack !== dss.stencilWriteMaskBack) { + gl.stencilMaskSeparate(gl.BACK, dss.stencilWriteMaskBack); + cache.dss.stencilWriteMaskBack = dss.stencilWriteMaskBack; + } + } + var bs = gpuPipelineState.bs; + if (bs) { + if (cache.bs.isA2C !== bs.isA2C) { + if (bs.isA2C) { + gl.enable(gl.SAMPLE_ALPHA_TO_COVERAGE); + } else { + gl.disable(gl.SAMPLE_ALPHA_TO_COVERAGE); + } + cache.bs.isA2C = bs.isA2C; + } + if (cache.bs.blendColor.x !== bs.blendColor.x || cache.bs.blendColor.y !== bs.blendColor.y || cache.bs.blendColor.z !== bs.blendColor.z || cache.bs.blendColor.w !== bs.blendColor.w) { + gl.blendColor(bs.blendColor.x, bs.blendColor.y, bs.blendColor.z, bs.blendColor.w); + cache.bs.blendColor.x = bs.blendColor.x; + cache.bs.blendColor.y = bs.blendColor.y; + cache.bs.blendColor.z = bs.blendColor.z; + cache.bs.blendColor.w = bs.blendColor.w; + } + var target0 = bs.targets[0]; + var target0Cache = cache.bs.targets[0]; + if (target0Cache.blend !== target0.blend) { + if (target0.blend) { + gl.enable(gl.BLEND); + } else { + gl.disable(gl.BLEND); + } + target0Cache.blend = target0.blend; + } + if (target0Cache.blendEq !== target0.blendEq || target0Cache.blendAlphaEq !== target0.blendAlphaEq) { + gl.blendEquationSeparate(WebGLBlendOps[target0.blendEq], WebGLBlendOps[target0.blendAlphaEq]); + target0Cache.blendEq = target0.blendEq; + target0Cache.blendAlphaEq = target0.blendAlphaEq; + } + if (target0Cache.blendSrc !== target0.blendSrc || target0Cache.blendDst !== target0.blendDst || target0Cache.blendSrcAlpha !== target0.blendSrcAlpha || target0Cache.blendDstAlpha !== target0.blendDstAlpha) { + gl.blendFuncSeparate(WebGLBlendFactors[target0.blendSrc], WebGLBlendFactors[target0.blendDst], WebGLBlendFactors[target0.blendSrcAlpha], WebGLBlendFactors[target0.blendDstAlpha]); + target0Cache.blendSrc = target0.blendSrc; + target0Cache.blendDst = target0.blendDst; + target0Cache.blendSrcAlpha = target0.blendSrcAlpha; + target0Cache.blendDstAlpha = target0.blendDstAlpha; + } + if (target0Cache.blendColorMask !== target0.blendColorMask) { + gl.colorMask((target0.blendColorMask & ColorMask.R) !== ColorMask.NONE, (target0.blendColorMask & ColorMask.G) !== ColorMask.NONE, (target0.blendColorMask & ColorMask.B) !== ColorMask.NONE, (target0.blendColorMask & ColorMask.A) !== ColorMask.NONE); + target0Cache.blendColorMask = target0.blendColorMask; + } + } + } + if (gpuPipelineState && gpuPipelineState.gpuPipelineLayout && gpuShader) { + var blockLen = gpuShader.glBlocks.length; + var dynamicOffsetIndices = gpuPipelineState.gpuPipelineLayout.dynamicOffsetIndices; + for (var j = 0; j < blockLen; j++) { + var glBlock = gpuShader.glBlocks[j]; + var gpuDescriptorSet = gpuDescriptorSets[glBlock.set]; + var descriptorIndex = gpuDescriptorSet && gpuDescriptorSet.descriptorIndices[glBlock.binding]; + var gpuDescriptor = descriptorIndex >= 0 && gpuDescriptorSet.gpuDescriptors[descriptorIndex]; + if (!gpuDescriptor || !gpuDescriptor.gpuBuffer) { + continue; + } + var dynamicOffsetIndexSet = dynamicOffsetIndices[glBlock.set]; + var dynamicOffsetIndex = dynamicOffsetIndexSet && dynamicOffsetIndexSet[glBlock.binding]; + var offset = gpuDescriptor.gpuBuffer.glOffset; + if (dynamicOffsetIndex >= 0) { + offset += dynamicOffsets[dynamicOffsetIndex]; + } + if (cache.glBindUBOs[glBlock.glBinding] !== gpuDescriptor.gpuBuffer.glBuffer || cache.glBindUBOOffsets[glBlock.glBinding] !== offset) { + if (offset) { + gl.bindBufferRange(gl.UNIFORM_BUFFER, glBlock.glBinding, gpuDescriptor.gpuBuffer.glBuffer, offset, gpuDescriptor.gpuBuffer.size); + } else { + gl.bindBufferBase(gl.UNIFORM_BUFFER, glBlock.glBinding, gpuDescriptor.gpuBuffer.glBuffer); + } + cache.glUniformBuffer = cache.glBindUBOs[glBlock.glBinding] = gpuDescriptor.gpuBuffer.glBuffer; + cache.glBindUBOOffsets[glBlock.glBinding] = offset; + } + } + var samplerLen = gpuShader.glSamplerTextures.length; + for (var i = 0; i < samplerLen; i++) { + var glSampler = gpuShader.glSamplerTextures[i]; + var _gpuDescriptorSet = gpuDescriptorSets[glSampler.set]; + var _descriptorIndex = _gpuDescriptorSet && _gpuDescriptorSet.descriptorIndices[glSampler.binding]; + var _gpuDescriptor = _descriptorIndex >= 0 && _gpuDescriptorSet.gpuDescriptors[_descriptorIndex]; + for (var l = 0; l < glSampler.units.length; l++) { + var texUnit = glSampler.units[l]; + var glTexUnit = cache.glTexUnits[texUnit]; + if (!_gpuDescriptor || !_gpuDescriptor.gpuTextureView || !_gpuDescriptor.gpuTextureView.gpuTexture || !_gpuDescriptor.gpuSampler) { + continue; + } + var gpuTextureView = _gpuDescriptor.gpuTextureView; + var gpuTexture = gpuTextureView.gpuTexture; + var minLod = gpuTextureView.baseLevel; + var maxLod = minLod + gpuTextureView.levelCount; + if (gpuTexture.size > 0) { + if (glTexUnit.glTexture !== gpuTexture.glTexture) { + if (cache.texUnit !== texUnit) { + gl.activeTexture(gl.TEXTURE0 + texUnit); + cache.texUnit = texUnit; + } + if (gpuTexture.glTexture) { + gl.bindTexture(gpuTexture.glTarget, gpuTexture.glTexture); + } else { + gl.bindTexture(gpuTexture.glTarget, device.nullTex2D.gpuTexture.glTexture); + } + glTexUnit.glTexture = gpuTexture.glTexture; + } + var _gpuDescriptor2 = _gpuDescriptor, + gpuSampler = _gpuDescriptor2.gpuSampler; + var _glSampler3 = gpuSampler.getGLSampler(device, minLod, maxLod); + if (cache.glSamplerUnits[texUnit] !== _glSampler3) { + gl.bindSampler(texUnit, _glSampler3); + cache.glSamplerUnits[texUnit] = _glSampler3; + } + } + _gpuDescriptor = _gpuDescriptorSet.gpuDescriptors[++_descriptorIndex]; + } + } + } + if (gpuInputAssembler && gpuShader && (isShaderChanged || gfxStateCache.gpuInputAssembler !== gpuInputAssembler)) { + gfxStateCache.gpuInputAssembler = gpuInputAssembler; + if (device.extensions.useVAO) { + var glVAO = gpuInputAssembler.glVAOs.get(gpuShader.glProgram); + if (!glVAO) { + glVAO = gl.createVertexArray(); + gpuInputAssembler.glVAOs.set(gpuShader.glProgram, glVAO); + gl.bindVertexArray(glVAO); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + cache.glArrayBuffer = null; + cache.glElementArrayBuffer = null; + var glAttrib; + for (var _j = 0; _j < gpuShader.glInputs.length; _j++) { + var glInput = gpuShader.glInputs[_j]; + glAttrib = null; + for (var k = 0; k < gpuInputAssembler.glAttribs.length; k++) { + var attrib = gpuInputAssembler.glAttribs[k]; + if (attrib.name === glInput.name) { + glAttrib = attrib; + break; + } + } + if (glAttrib) { + if (cache.glArrayBuffer !== glAttrib.glBuffer) { + gl.bindBuffer(gl.ARRAY_BUFFER, glAttrib.glBuffer); + cache.glArrayBuffer = glAttrib.glBuffer; + } + for (var c = 0; c < glAttrib.componentCount; ++c) { + var glLoc = glInput.glLoc + c; + var attribOffset = glAttrib.offset + glAttrib.size * c; + gl.enableVertexAttribArray(glLoc); + cache.glCurrentAttribLocs[glLoc] = true; + gl.vertexAttribPointer(glLoc, glAttrib.count, glAttrib.glType, glAttrib.isNormalized, glAttrib.stride, attribOffset); + gl.vertexAttribDivisor(glLoc, glAttrib.isInstanced ? 1 : 0); + } + } + } + var gpuBuffer = gpuInputAssembler.gpuIndexBuffer; + if (gpuBuffer) { + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, gpuBuffer.glBuffer); + } + gl.bindVertexArray(null); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + cache.glArrayBuffer = null; + cache.glElementArrayBuffer = null; + } + if (cache.glVAO !== glVAO) { + gl.bindVertexArray(glVAO); + cache.glVAO = glVAO; + } + } else { + for (var a = 0; a < device.capabilities.maxVertexAttributes; ++a) { + cache.glCurrentAttribLocs[a] = false; + } + for (var _j2 = 0; _j2 < gpuShader.glInputs.length; _j2++) { + var _glInput = gpuShader.glInputs[_j2]; + var _glAttrib = null; + for (var _k5 = 0; _k5 < gpuInputAssembler.glAttribs.length; _k5++) { + var _attrib = gpuInputAssembler.glAttribs[_k5]; + if (_attrib.name === _glInput.name) { + _glAttrib = _attrib; + break; + } + } + if (_glAttrib) { + if (cache.glArrayBuffer !== _glAttrib.glBuffer) { + gl.bindBuffer(gl.ARRAY_BUFFER, _glAttrib.glBuffer); + cache.glArrayBuffer = _glAttrib.glBuffer; + } + for (var _c = 0; _c < _glAttrib.componentCount; ++_c) { + var _glLoc3 = _glInput.glLoc + _c; + var _attribOffset = _glAttrib.offset + _glAttrib.size * _c; + if (!cache.glEnabledAttribLocs[_glLoc3] && _glLoc3 >= 0) { + gl.enableVertexAttribArray(_glLoc3); + cache.glEnabledAttribLocs[_glLoc3] = true; + } + cache.glCurrentAttribLocs[_glLoc3] = true; + gl.vertexAttribPointer(_glLoc3, _glAttrib.count, _glAttrib.glType, _glAttrib.isNormalized, _glAttrib.stride, _attribOffset); + gl.vertexAttribDivisor(_glLoc3, _glAttrib.isInstanced ? 1 : 0); + } + } + } + var _gpuBuffer = gpuInputAssembler.gpuIndexBuffer; + if (_gpuBuffer) { + if (cache.glElementArrayBuffer !== _gpuBuffer.glBuffer) { + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, _gpuBuffer.glBuffer); + cache.glElementArrayBuffer = _gpuBuffer.glBuffer; + } + } + for (var _a = 0; _a < device.capabilities.maxVertexAttributes; ++_a) { + if (cache.glEnabledAttribLocs[_a] !== cache.glCurrentAttribLocs[_a]) { + gl.disableVertexAttribArray(_a); + cache.glEnabledAttribLocs[_a] = false; + } + } + } + } + if (gpuPipelineState && gpuPipelineState.dynamicStates.length) { + var dsLen = gpuPipelineState.dynamicStates.length; + for (var _k6 = 0; _k6 < dsLen; _k6++) { + var dynamicState = gpuPipelineState.dynamicStates[_k6]; + switch (dynamicState) { + case DynamicStateFlagBit.LINE_WIDTH: + { + if (cache.rs.lineWidth !== dynamicStates.lineWidth) { + gl.lineWidth(dynamicStates.lineWidth); + cache.rs.lineWidth = dynamicStates.lineWidth; + } + break; + } + case DynamicStateFlagBit.DEPTH_BIAS: + { + if (cache.rs.depthBias !== dynamicStates.depthBiasConstant || cache.rs.depthBiasSlop !== dynamicStates.depthBiasSlope) { + gl.polygonOffset(dynamicStates.depthBiasConstant, dynamicStates.depthBiasSlope); + cache.rs.depthBias = dynamicStates.depthBiasConstant; + cache.rs.depthBiasSlop = dynamicStates.depthBiasSlope; + } + break; + } + case DynamicStateFlagBit.BLEND_CONSTANTS: + { + var blendConstant = dynamicStates.blendConstant; + if (cache.bs.blendColor.x !== blendConstant.x || cache.bs.blendColor.y !== blendConstant.y || cache.bs.blendColor.z !== blendConstant.z || cache.bs.blendColor.w !== blendConstant.w) { + gl.blendColor(blendConstant.x, blendConstant.y, blendConstant.z, blendConstant.w); + cache.bs.blendColor.copy(blendConstant); + } + break; + } + case DynamicStateFlagBit.STENCIL_WRITE_MASK: + { + var front = dynamicStates.stencilStatesFront; + var back = dynamicStates.stencilStatesBack; + if (cache.dss.stencilWriteMaskFront !== front.writeMask) { + gl.stencilMaskSeparate(gl.FRONT, front.writeMask); + cache.dss.stencilWriteMaskFront = front.writeMask; + } + if (cache.dss.stencilWriteMaskBack !== back.writeMask) { + gl.stencilMaskSeparate(gl.BACK, back.writeMask); + cache.dss.stencilWriteMaskBack = back.writeMask; + } + break; + } + case DynamicStateFlagBit.STENCIL_COMPARE_MASK: + { + var _front = dynamicStates.stencilStatesFront; + var _back = dynamicStates.stencilStatesBack; + if (cache.dss.stencilRefFront !== _front.reference || cache.dss.stencilReadMaskFront !== _front.compareMask) { + gl.stencilFuncSeparate(gl.FRONT, WebGLCmpFuncs[cache.dss.stencilFuncFront], _front.reference, _front.compareMask); + cache.dss.stencilRefFront = _front.reference; + cache.dss.stencilReadMaskFront = _front.compareMask; + } + if (cache.dss.stencilRefBack !== _back.reference || cache.dss.stencilReadMaskBack !== _back.compareMask) { + gl.stencilFuncSeparate(gl.BACK, WebGLCmpFuncs[cache.dss.stencilFuncBack], _back.reference, _back.compareMask); + cache.dss.stencilRefBack = _back.reference; + cache.dss.stencilReadMaskBack = _back.compareMask; + } + break; + } + } + } + } + } + function WebGL2CmdFuncDraw(device, drawInfo) { + var gl = device.gl; + var gpuInputAssembler = gfxStateCache.gpuInputAssembler, + glPrimitive = gfxStateCache.glPrimitive; + var md = device.extensions.WEBGL_multi_draw; + if (gpuInputAssembler) { + var indexBuffer = gpuInputAssembler.gpuIndexBuffer; + if (gpuInputAssembler.gpuIndirectBuffer) { + var indirects = gpuInputAssembler.gpuIndirectBuffer.indirects; + if (indirects.drawByIndex) { + for (var j = 0; j < indirects.drawCount; j++) { + indirects.byteOffsets[j] = indirects.offsets[j] * indexBuffer.stride; + } + if (md) { + if (indirects.instancedDraw) { + md.multiDrawElementsInstancedWEBGL(glPrimitive, indirects.counts, 0, gpuInputAssembler.glIndexType, indirects.byteOffsets, 0, indirects.instances, 0, indirects.drawCount); + } else { + md.multiDrawElementsWEBGL(glPrimitive, indirects.counts, 0, gpuInputAssembler.glIndexType, indirects.byteOffsets, 0, indirects.drawCount); + } + } else { + for (var _j3 = 0; _j3 < indirects.drawCount; _j3++) { + if (indirects.instances[_j3]) { + gl.drawElementsInstanced(glPrimitive, indirects.counts[_j3], gpuInputAssembler.glIndexType, indirects.byteOffsets[_j3], indirects.instances[_j3]); + } else { + gl.drawElements(glPrimitive, indirects.counts[_j3], gpuInputAssembler.glIndexType, indirects.byteOffsets[_j3]); + } + } + } + } else if (md) { + if (indirects.instancedDraw) { + md.multiDrawArraysInstancedWEBGL(glPrimitive, indirects.offsets, 0, indirects.counts, 0, indirects.instances, 0, indirects.drawCount); + } else { + md.multiDrawArraysWEBGL(glPrimitive, indirects.offsets, 0, indirects.counts, 0, indirects.drawCount); + } + } else { + for (var _j4 = 0; _j4 < indirects.drawCount; _j4++) { + if (indirects.instances[_j4]) { + gl.drawArraysInstanced(glPrimitive, indirects.offsets[_j4], indirects.counts[_j4], indirects.instances[_j4]); + } else { + gl.drawArrays(glPrimitive, indirects.offsets[_j4], indirects.counts[_j4]); + } + } + } + } else if (drawInfo.instanceCount) { + if (indexBuffer) { + if (drawInfo.indexCount > 0) { + var offset = drawInfo.firstIndex * indexBuffer.stride; + gl.drawElementsInstanced(glPrimitive, drawInfo.indexCount, gpuInputAssembler.glIndexType, offset, drawInfo.instanceCount); + } + } else if (drawInfo.vertexCount > 0) { + gl.drawArraysInstanced(glPrimitive, drawInfo.firstVertex, drawInfo.vertexCount, drawInfo.instanceCount); + } + } else if (indexBuffer) { + if (drawInfo.indexCount > 0) { + var _offset = drawInfo.firstIndex * indexBuffer.stride; + gl.drawElements(glPrimitive, drawInfo.indexCount, gpuInputAssembler.glIndexType, _offset); + } + } else if (drawInfo.vertexCount > 0) { + gl.drawArrays(glPrimitive, drawInfo.firstVertex, drawInfo.vertexCount); + } + } + } + var cmdIds = new Array(WebGL2Cmd.COUNT); + function WebGL2CmdFuncExecuteCmds(device, cmdPackage) { + cmdIds.fill(0); + for (var i = 0; i < cmdPackage.cmds.length; ++i) { + var cmd = cmdPackage.cmds.array[i]; + var cmdId = cmdIds[cmd]++; + switch (cmd) { + case WebGL2Cmd.BEGIN_RENDER_PASS: + { + var cmd0 = cmdPackage.beginRenderPassCmds.array[cmdId]; + WebGL2CmdFuncBeginRenderPass(device, cmd0.gpuRenderPass, cmd0.gpuFramebuffer, cmd0.renderArea, cmd0.clearColors, cmd0.clearDepth, cmd0.clearStencil); + break; + } + case WebGL2Cmd.BIND_STATES: + { + var cmd2 = cmdPackage.bindStatesCmds.array[cmdId]; + WebGL2CmdFuncBindStates(device, cmd2.gpuPipelineState, cmd2.gpuInputAssembler, cmd2.gpuDescriptorSets, cmd2.dynamicOffsets, cmd2.dynamicStates); + break; + } + case WebGL2Cmd.DRAW: + { + var cmd3 = cmdPackage.drawCmds.array[cmdId]; + WebGL2CmdFuncDraw(device, cmd3.drawInfo); + break; + } + case WebGL2Cmd.UPDATE_BUFFER: + { + var cmd4 = cmdPackage.updateBufferCmds.array[cmdId]; + WebGL2CmdFuncUpdateBuffer(device, cmd4.gpuBuffer, cmd4.buffer, cmd4.offset, cmd4.size); + break; + } + case WebGL2Cmd.COPY_BUFFER_TO_TEXTURE: + { + var cmd5 = cmdPackage.copyBufferToTextureCmds.array[cmdId]; + WebGL2CmdFuncCopyBuffersToTexture(device, cmd5.buffers, cmd5.gpuTexture, cmd5.regions); + break; + } + case WebGL2Cmd.BLIT_TEXTURE: + { + var cmd6 = cmdPackage.blitTextureCmds.array[cmdId]; + WebGL2CmdFuncBlitTexture(device, cmd6.srcTexture, cmd6.dstTexture, cmd6.regions, cmd6.filter); + break; + } + } + } + } + function toUseTexImage2D(texImages, regions) { + if (texImages.length > 1 || regions.length > 1) return false; + var isVideoElement = texImages[0] instanceof HTMLVideoElement; + if (isVideoElement) { + var videoElement = texImages[0]; + var isSameSize = regions[0].texOffset.x === 0 && regions[0].texOffset.y === 0 && regions[0].texExtent.width === videoElement.videoWidth && regions[0].texExtent.height === videoElement.videoHeight; + return isSameSize; + } + return false; + } + function WebGL2CmdFuncCopyTexImagesToTexture(device, texImages, gpuTexture, regions) { + var gl = device.gl; + var glTexUnit = device.stateCache.glTexUnits[device.stateCache.texUnit]; + if (glTexUnit.glTexture !== gpuTexture.glTexture) { + gl.bindTexture(gpuTexture.glTarget, gpuTexture.glTexture); + glTexUnit.glTexture = gpuTexture.glTexture; + } + var n = 0; + var f = 0; + switch (gpuTexture.glTarget) { + case gl.TEXTURE_2D: + { + if (toUseTexImage2D(texImages, regions)) { + gl.texImage2D(gl.TEXTURE_2D, regions[0].texSubres.mipLevel, gpuTexture.glInternalFmt, regions[0].texExtent.width, regions[0].texExtent.height, 0, gpuTexture.glFormat, gpuTexture.glType, texImages[0]); + } else { + for (var k = 0; k < regions.length; k++) { + var region = regions[k]; + gl.texSubImage2D(gl.TEXTURE_2D, region.texSubres.mipLevel, region.texOffset.x, region.texOffset.y, gpuTexture.glFormat, gpuTexture.glType, texImages[n++]); + } + } + break; + } + case gl.TEXTURE_CUBE_MAP: + { + for (var _k7 = 0; _k7 < regions.length; _k7++) { + var _region = regions[_k7]; + var fcount = _region.texSubres.baseArrayLayer + _region.texSubres.layerCount; + for (f = _region.texSubres.baseArrayLayer; f < fcount; ++f) { + gl.texSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + f, _region.texSubres.mipLevel, _region.texOffset.x, _region.texOffset.y, gpuTexture.glFormat, gpuTexture.glType, texImages[n++]); + } + } + break; + } + default: + { + error('Unsupported GL texture type, copy buffer to texture failed.'); + } + } + if (gpuTexture.flags & TextureFlagBit.GEN_MIPMAP) { + gl.generateMipmap(gpuTexture.glTarget); + } + } + var stagingBuffer = new Uint8Array(1); + function pixelBufferPick(buffer, format, offset, stride, extent) { + var blockHeight = formatAlignment(format).height; + var bufferSize = FormatSize(format, extent.width, extent.height, extent.depth); + var rowStrideSize = FormatSize(format, stride.width, 1, 1); + var sliceStrideSize = FormatSize(format, stride.width, stride.height, 1); + var destRowSize = FormatSize(format, extent.width, 1, 1); + var ArrayBufferCtor = getTypedArrayConstructor(FormatInfos[format]); + if (stagingBuffer.byteLength < bufferSize) { + stagingBuffer = new Uint8Array(bufferSize); + } + var destOffset = 0; + var bufferOffset = offset; + for (var i = 0; i < extent.depth; i++) { + bufferOffset = offset + sliceStrideSize * i; + for (var j = 0; j < extent.height; j += blockHeight) { + stagingBuffer.subarray(destOffset, destOffset + destRowSize).set(new Uint8Array(buffer.buffer, buffer.byteOffset + bufferOffset, destRowSize)); + destOffset += destRowSize; + bufferOffset += rowStrideSize; + } + } + var length = bufferSize / ArrayBufferCtor.BYTES_PER_ELEMENT; + assertID(Number.isInteger(length), 9101); + return new ArrayBufferCtor(stagingBuffer.buffer, 0, length); + } + function WebGL2CmdFuncCopyBuffersToTexture(device, buffers, gpuTexture, regions) { + var gl = device.gl; + var glTexUnit = device.stateCache.glTexUnits[device.stateCache.texUnit]; + if (glTexUnit.glTexture !== gpuTexture.glTexture) { + gl.bindTexture(gpuTexture.glTarget, gpuTexture.glTexture); + glTexUnit.glTexture = gpuTexture.glTexture; + } + var n = 0; + var f = 0; + var fmtInfo = FormatInfos[gpuTexture.format]; + var ArrayBufferCtor = getTypedArrayConstructor(fmtInfo); + var isCompressed = fmtInfo.isCompressed; + var blockSize = formatAlignment(gpuTexture.format); + var extent = new Extent(); + var offset = new Offset(); + var stride = new Extent(); + switch (gpuTexture.glTarget) { + case gl.TEXTURE_2D: + { + for (var k = 0; k < regions.length; k++) { + var region = regions[k]; + var mipLevel = region.texSubres.mipLevel; + offset.x = region.texOffset.x === 0 ? 0 : alignTo(region.texOffset.x, blockSize.width); + offset.y = region.texOffset.y === 0 ? 0 : alignTo(region.texOffset.y, blockSize.height); + extent.width = region.texExtent.width < blockSize.width ? region.texExtent.width : alignTo(region.texExtent.width, blockSize.width); + extent.height = region.texExtent.height < blockSize.height ? region.texExtent.width : alignTo(region.texExtent.height, blockSize.height); + stride.width = region.buffStride > 0 ? region.buffStride : extent.width; + stride.height = region.buffTexHeight > 0 ? region.buffTexHeight : extent.height; + var destWidth = region.texExtent.width + offset.x === gpuTexture.width >> mipLevel ? region.texExtent.width : extent.width; + var destHeight = region.texExtent.height + offset.y === gpuTexture.height >> mipLevel ? region.texExtent.height : extent.height; + var pixels = void 0; + var buffer = buffers[n++]; + if (stride.width === extent.width && stride.height === extent.height) { + var length = FormatSize(gpuTexture.format, destWidth, destHeight, 1) / ArrayBufferCtor.BYTES_PER_ELEMENT; + assertID(Number.isInteger(length), 9101); + pixels = new ArrayBufferCtor(buffer.buffer, buffer.byteOffset + region.buffOffset, length); + } else { + pixels = pixelBufferPick(buffer, gpuTexture.format, region.buffOffset, stride, extent); + } + if (!isCompressed) { + gl.texSubImage2D(gl.TEXTURE_2D, mipLevel, offset.x, offset.y, destWidth, destHeight, gpuTexture.glFormat, gpuTexture.glType, pixels); + } else if (gpuTexture.glInternalFmt !== WebGL2EXT.COMPRESSED_RGB_ETC1_WEBGL) { + gl.compressedTexSubImage2D(gl.TEXTURE_2D, mipLevel, offset.x, offset.y, destWidth, destHeight, gpuTexture.glFormat, pixels); + } else { + gl.compressedTexImage2D(gl.TEXTURE_2D, mipLevel, gpuTexture.glInternalFmt, destWidth, destHeight, 0, pixels); + } + } + break; + } + case gl.TEXTURE_2D_ARRAY: + { + for (var _k8 = 0; _k8 < regions.length; _k8++) { + var _region2 = regions[_k8]; + var _mipLevel = _region2.texSubres.mipLevel; + offset.x = _region2.texOffset.x === 0 ? 0 : alignTo(_region2.texOffset.x, blockSize.width); + offset.y = _region2.texOffset.y === 0 ? 0 : alignTo(_region2.texOffset.y, blockSize.height); + extent.width = _region2.texExtent.width < blockSize.width ? _region2.texExtent.width : alignTo(_region2.texExtent.width, blockSize.width); + extent.height = _region2.texExtent.height < blockSize.height ? _region2.texExtent.width : alignTo(_region2.texExtent.height, blockSize.height); + extent.depth = 1; + stride.width = _region2.buffStride > 0 ? _region2.buffStride : extent.width; + stride.height = _region2.buffTexHeight > 0 ? _region2.buffTexHeight : extent.height; + var _destWidth = _region2.texExtent.width + offset.x === gpuTexture.width >> _mipLevel ? _region2.texExtent.width : extent.width; + var _destHeight = _region2.texExtent.height + offset.y === gpuTexture.height >> _mipLevel ? _region2.texExtent.height : extent.height; + var fcount = _region2.texSubres.baseArrayLayer + _region2.texSubres.layerCount; + for (f = _region2.texSubres.baseArrayLayer; f < fcount; ++f) { + offset.z = f; + var _pixels = void 0; + var _buffer = buffers[n++]; + if (stride.width === extent.width && stride.height === extent.height) { + var _length = FormatSize(gpuTexture.format, _destWidth, _destHeight, 1) / ArrayBufferCtor.BYTES_PER_ELEMENT; + assertID(Number.isInteger(_length), 9101); + _pixels = new ArrayBufferCtor(_buffer.buffer, _buffer.byteOffset + _region2.buffOffset, _length); + } else { + _pixels = pixelBufferPick(_buffer, gpuTexture.format, _region2.buffOffset, stride, extent); + } + if (!isCompressed) { + gl.texSubImage3D(gl.TEXTURE_2D_ARRAY, _mipLevel, offset.x, offset.y, offset.z, _destWidth, _destHeight, extent.depth, gpuTexture.glFormat, gpuTexture.glType, _pixels); + } else if (gpuTexture.glInternalFmt !== WebGL2EXT.COMPRESSED_RGB_ETC1_WEBGL) { + gl.compressedTexSubImage3D(gl.TEXTURE_2D_ARRAY, _mipLevel, offset.x, offset.y, offset.z, _destWidth, _destHeight, extent.depth, gpuTexture.glFormat, _pixels); + } else { + gl.compressedTexImage3D(gl.TEXTURE_2D_ARRAY, _mipLevel, gpuTexture.glInternalFmt, _destWidth, _destHeight, extent.depth, 0, _pixels); + } + } + } + break; + } + case gl.TEXTURE_3D: + { + for (var _k9 = 0; _k9 < regions.length; _k9++) { + var _region3 = regions[_k9]; + var _mipLevel2 = _region3.texSubres.mipLevel; + offset.x = _region3.texOffset.x === 0 ? 0 : alignTo(_region3.texOffset.x, blockSize.width); + offset.y = _region3.texOffset.y === 0 ? 0 : alignTo(_region3.texOffset.y, blockSize.height); + offset.z = _region3.texOffset.z; + extent.width = _region3.texExtent.width < blockSize.width ? _region3.texExtent.width : alignTo(_region3.texExtent.width, blockSize.width); + extent.height = _region3.texExtent.height < blockSize.height ? _region3.texExtent.width : alignTo(_region3.texExtent.height, blockSize.height); + extent.depth = _region3.texExtent.depth; + stride.width = _region3.buffStride > 0 ? _region3.buffStride : extent.width; + stride.height = _region3.buffTexHeight > 0 ? _region3.buffTexHeight : extent.height; + var _destWidth2 = _region3.texExtent.width + offset.x === gpuTexture.width >> _mipLevel2 ? _region3.texExtent.width : extent.width; + var _destHeight2 = _region3.texExtent.height + offset.y === gpuTexture.height >> _mipLevel2 ? _region3.texExtent.height : extent.height; + var _pixels2 = void 0; + var _buffer2 = buffers[n++]; + if (stride.width === extent.width && stride.height === extent.height) { + var _length2 = FormatSize(gpuTexture.format, _destWidth2, _destHeight2, extent.depth) / ArrayBufferCtor.BYTES_PER_ELEMENT; + assertID(Number.isInteger(_length2), 9101); + _pixels2 = new ArrayBufferCtor(_buffer2.buffer, _buffer2.byteOffset + _region3.buffOffset, _length2); + } else { + _pixels2 = pixelBufferPick(_buffer2, gpuTexture.format, _region3.buffOffset, stride, extent); + } + if (!isCompressed) { + gl.texSubImage3D(gl.TEXTURE_2D_ARRAY, _mipLevel2, offset.x, offset.y, offset.z, _destWidth2, _destHeight2, extent.depth, gpuTexture.glFormat, gpuTexture.glType, _pixels2); + } else if (gpuTexture.glInternalFmt !== WebGL2EXT.COMPRESSED_RGB_ETC1_WEBGL) { + gl.compressedTexSubImage3D(gl.TEXTURE_2D_ARRAY, _mipLevel2, offset.x, offset.y, offset.z, _destWidth2, _destHeight2, extent.depth, gpuTexture.glFormat, _pixels2); + } else { + gl.compressedTexImage3D(gl.TEXTURE_2D_ARRAY, _mipLevel2, gpuTexture.glInternalFmt, _destWidth2, _destHeight2, extent.depth, 0, _pixels2); + } + } + break; + } + case gl.TEXTURE_CUBE_MAP: + { + for (var _k10 = 0; _k10 < regions.length; _k10++) { + var _region4 = regions[_k10]; + var _mipLevel3 = _region4.texSubres.mipLevel; + offset.x = _region4.texOffset.x === 0 ? 0 : alignTo(_region4.texOffset.x, blockSize.width); + offset.y = _region4.texOffset.y === 0 ? 0 : alignTo(_region4.texOffset.y, blockSize.height); + extent.width = _region4.texExtent.width < blockSize.width ? _region4.texExtent.width : alignTo(_region4.texExtent.width, blockSize.width); + extent.height = _region4.texExtent.height < blockSize.height ? _region4.texExtent.width : alignTo(_region4.texExtent.height, blockSize.height); + stride.width = _region4.buffStride > 0 ? _region4.buffStride : extent.width; + stride.height = _region4.buffTexHeight > 0 ? _region4.buffTexHeight : extent.height; + var _destWidth3 = _region4.texExtent.width + offset.x === gpuTexture.width >> _mipLevel3 ? _region4.texExtent.width : extent.width; + var _destHeight3 = _region4.texExtent.height + offset.y === gpuTexture.height >> _mipLevel3 ? _region4.texExtent.height : extent.height; + var _fcount = _region4.texSubres.baseArrayLayer + _region4.texSubres.layerCount; + for (f = _region4.texSubres.baseArrayLayer; f < _fcount; ++f) { + var _pixels3 = void 0; + var _buffer3 = buffers[n++]; + if (stride.width === extent.width && stride.height === extent.height) { + var _length3 = FormatSize(gpuTexture.format, _destWidth3, _destHeight3, 1) / ArrayBufferCtor.BYTES_PER_ELEMENT; + assertID(Number.isInteger(_length3), 9101); + _pixels3 = new ArrayBufferCtor(_buffer3.buffer, _buffer3.byteOffset + _region4.buffOffset, _length3); + } else { + _pixels3 = pixelBufferPick(_buffer3, gpuTexture.format, _region4.buffOffset, stride, extent); + } + if (!isCompressed) { + gl.texSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + f, _mipLevel3, offset.x, offset.y, _destWidth3, _destHeight3, gpuTexture.glFormat, gpuTexture.glType, _pixels3); + } else if (gpuTexture.glInternalFmt !== WebGL2EXT.COMPRESSED_RGB_ETC1_WEBGL) { + gl.compressedTexSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + f, _mipLevel3, offset.x, offset.y, _destWidth3, _destHeight3, gpuTexture.glFormat, _pixels3); + } else { + gl.compressedTexImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + f, _mipLevel3, gpuTexture.glInternalFmt, _destWidth3, _destHeight3, 0, _pixels3); + } + } + } + break; + } + default: + { + error('Unsupported GL texture type, copy buffer to texture failed.'); + } + } + if (gpuTexture.flags & TextureFlagBit.GEN_MIPMAP) { + gl.generateMipmap(gpuTexture.glTarget); + } + } + function WebGL2CmdFuncCopyTextureToBuffers(device, gpuTexture, buffers, regions) { + var gl = device.gl; + var cache = device.stateCache; + var framebuffer = gl.createFramebuffer(); + gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); + var x = 0; + var y = 0; + var w = 1; + var h = 1; + switch (gpuTexture.glTarget) { + case gl.TEXTURE_2D: + { + for (var k = 0; k < regions.length; k++) { + var region = regions[k]; + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gpuTexture.glTarget, gpuTexture.glTexture, region.texSubres.mipLevel); + x = region.texOffset.x; + y = region.texOffset.y; + w = region.texExtent.width; + h = region.texExtent.height; + gl.readPixels(x, y, w, h, gpuTexture.glFormat, gpuTexture.glType, buffers[k]); + } + break; + } + default: + { + error('Unsupported GL texture type, copy texture to buffers failed.'); + } + } + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + cache.glFramebuffer = null; + gl.deleteFramebuffer(framebuffer); + } + function WebGL2CmdFuncBlitTexture(device, src, dst, regions, filter) { + var gl = device.gl; + var cache = device.stateCache; + var blitManager = device.blitManager; + if (!blitManager) { + return; + } + var glFilter = filter === Filter$1.LINEAR || filter === Filter$1.ANISOTROPIC ? gl.LINEAR : gl.NEAREST; + var srcFramebuffer = blitManager.srcFramebuffer; + var dstFramebuffer = blitManager.dstFramebuffer; + var origReadFBO = cache.glReadFramebuffer; + var origDrawFBO = cache.glFramebuffer; + var srcMip = regions[0].srcSubres.mipLevel; + var dstMip = regions[0].dstSubres.mipLevel; + var blitInfo = function blitInfo(formatInfo) { + var mask = 0; + var attachment = gl.COLOR_ATTACHMENT0; + if (formatInfo.hasStencil) { + attachment = gl.DEPTH_STENCIL_ATTACHMENT; + } else if (formatInfo.hasDepth) { + attachment = gl.DEPTH_ATTACHMENT; + } + if (formatInfo.hasDepth || formatInfo.hasStencil) { + if (formatInfo.hasDepth) { + mask |= gl.DEPTH_BUFFER_BIT; + } + if (formatInfo.hasStencil) { + mask |= gl.STENCIL_BUFFER_BIT; + } + } else { + mask |= gl.COLOR_BUFFER_BIT; + } + return { + mask: mask, + attachment: attachment + }; + }; + var regionIndices = regions.map(function (_, i) { + return i; + }); + regionIndices.sort(function (a, b) { + return regions[a].srcSubres.mipLevel - regions[b].srcSubres.mipLevel; + }); + var _blitInfo = blitInfo(FormatInfos[src.format]), + srcMask = _blitInfo.mask, + srcAttachment = _blitInfo.attachment; + var _blitInfo2 = blitInfo(FormatInfos[dst.format]), + dstAttachment = _blitInfo2.attachment; + if (cache.glReadFramebuffer !== srcFramebuffer) { + gl.bindFramebuffer(gl.READ_FRAMEBUFFER, srcFramebuffer); + cache.glReadFramebuffer = srcFramebuffer; + } + if (cache.glFramebuffer !== dstFramebuffer) { + gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, dstFramebuffer); + cache.glFramebuffer = dstFramebuffer; + } + if (src.glTexture) { + gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, srcAttachment, src.glTarget, src.glTexture, srcMip); + } else { + gl.framebufferRenderbuffer(gl.READ_FRAMEBUFFER, srcAttachment, gl.RENDERBUFFER, src.glRenderbuffer); + } + if (dst.glTexture) { + gl.framebufferTexture2D(gl.DRAW_FRAMEBUFFER, dstAttachment, dst.glTarget, dst.glTexture, dstMip); + } else { + gl.framebufferRenderbuffer(gl.DRAW_FRAMEBUFFER, dstAttachment, gl.RENDERBUFFER, dst.glRenderbuffer); + } + for (var i = 0; i < regionIndices.length; i++) { + var region = regions[regionIndices[i]]; + if (src.glTexture && srcMip !== region.srcSubres.mipLevel) { + srcMip = region.srcSubres.mipLevel; + gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, srcAttachment, src.glTarget, src.glTexture, srcMip); + } + if (dst.glTexture && dstMip !== region.dstSubres.mipLevel) { + dstMip = region.dstSubres.mipLevel; + gl.framebufferTexture2D(gl.DRAW_FRAMEBUFFER, dstAttachment, dst.glTarget, dst.glTexture, dstMip); + } + gl.blitFramebuffer(region.srcOffset.x, region.srcOffset.y, region.srcOffset.x + region.srcExtent.width, region.srcOffset.y + region.srcExtent.height, region.dstOffset.x, region.dstOffset.y, region.dstOffset.x + region.dstExtent.width, region.dstOffset.y + region.dstExtent.height, srcMask, glFilter); + } + if (cache.glReadFramebuffer !== origReadFBO) { + gl.bindFramebuffer(gl.READ_FRAMEBUFFER, origReadFBO); + cache.glReadFramebuffer = origReadFBO; + } + if (cache.glFramebuffer !== origDrawFBO) { + gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, origDrawFBO); + cache.glFramebuffer = origDrawFBO; + } + } + + var WebGL2IndirectDrawInfos = function () { + function WebGL2IndirectDrawInfos() { + this.counts = void 0; + this.offsets = void 0; + this.instances = void 0; + this.drawCount = 0; + this.drawByIndex = false; + this.instancedDraw = false; + this.byteOffsets = void 0; + this._capacity = 4; + this.counts = new Int32Array(this._capacity); + this.offsets = new Int32Array(this._capacity); + this.instances = new Int32Array(this._capacity); + this.byteOffsets = new Int32Array(this._capacity); + } + var _proto = WebGL2IndirectDrawInfos.prototype; + _proto.clearDraws = function clearDraws() { + this.drawCount = 0; + this.drawByIndex = false; + this.instancedDraw = false; + }; + _proto.setDrawInfo = function setDrawInfo(idx, info) { + this._ensureCapacity(idx); + this.drawByIndex = info.indexCount > 0; + this.instancedDraw = !!info.instanceCount; + this.drawCount = Math.max(idx + 1, this.drawCount); + if (this.drawByIndex) { + this.counts[idx] = info.indexCount; + this.offsets[idx] = info.firstIndex; + } else { + this.counts[idx] = info.vertexCount; + this.offsets[idx] = info.firstVertex; + } + this.instances[idx] = Math.max(1, info.instanceCount); + }; + _proto._ensureCapacity = function _ensureCapacity(target) { + if (this._capacity > target) return; + this._capacity = nextPow2(target); + var counts = new Int32Array(this._capacity); + var offsets = new Int32Array(this._capacity); + var instances = new Int32Array(this._capacity); + this.byteOffsets = new Int32Array(this._capacity); + counts.set(this.counts); + offsets.set(this.offsets); + instances.set(this.instances); + this.counts = counts; + this.offsets = offsets; + this.instances = instances; + }; + return WebGL2IndirectDrawInfos; + }(); + var IWebGL2BlitManager = function () { + function IWebGL2BlitManager() { + this._srcFramebuffer = void 0; + this._dstFramebuffer = void 0; + var gl = WebGL2DeviceManager.instance.gl; + this._srcFramebuffer = gl.createFramebuffer(); + this._dstFramebuffer = gl.createFramebuffer(); + } + var _proto2 = IWebGL2BlitManager.prototype; + _proto2.destroy = function destroy() { + var gl = WebGL2DeviceManager.instance.gl; + gl.deleteFramebuffer(this._srcFramebuffer); + gl.deleteFramebuffer(this._dstFramebuffer); + }; + _createClass(IWebGL2BlitManager, [{ + key: "srcFramebuffer", + get: function get() { + return this._srcFramebuffer; + } + }, { + key: "dstFramebuffer", + get: function get() { + return this._dstFramebuffer; + } + }]); + return IWebGL2BlitManager; + }(); + + var WebGL2Buffer = function (_Buffer) { + _inheritsLoose(WebGL2Buffer, _Buffer); + function WebGL2Buffer() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Buffer.call.apply(_Buffer, [this].concat(args)) || this; + _this._gpuBuffer = null; + return _this; + } + var _proto = WebGL2Buffer.prototype; + _proto.initialize = function initialize(info) { + if ('buffer' in info) { + this._isBufferView = true; + var buffer = info.buffer; + this._usage = buffer.usage; + this._memUsage = buffer.memUsage; + this._size = this._stride = info.range; + this._count = 1; + this._flags = buffer.flags; + this._gpuBuffer = { + usage: this._usage, + memUsage: this._memUsage, + size: this._size, + stride: this._stride, + buffer: null, + indirects: buffer.gpuBuffer.indirects, + glTarget: buffer.gpuBuffer.glTarget, + glBuffer: buffer.gpuBuffer.glBuffer, + glOffset: info.offset + }; + } else { + this._usage = info.usage; + this._memUsage = info.memUsage; + this._size = info.size; + this._stride = Math.max(info.stride || this._size, 1); + this._count = this._size / this._stride; + this._flags = info.flags; + this._gpuBuffer = { + usage: this._usage, + memUsage: this._memUsage, + size: this._size, + stride: this._stride, + buffer: null, + indirects: new WebGL2IndirectDrawInfos(), + glTarget: 0, + glBuffer: null, + glOffset: 0 + }; + WebGL2CmdFuncCreateBuffer(WebGL2DeviceManager.instance, this._gpuBuffer); + WebGL2DeviceManager.instance.memoryStatus.bufferSize += this._size; + } + }; + _proto.destroy = function destroy() { + if (this._gpuBuffer) { + if (!this._isBufferView) { + WebGL2CmdFuncDestroyBuffer(WebGL2DeviceManager.instance, this._gpuBuffer); + WebGL2DeviceManager.instance.memoryStatus.bufferSize -= this._size; + } + this._gpuBuffer = null; + } + }; + _proto.resize = function resize(size) { + if (this._isBufferView) { + console.warn('cannot resize buffer views!'); + return; + } + var oldSize = this._size; + if (oldSize === size) { + return; + } + this._size = size; + this._count = this._size / this._stride; + if (this._gpuBuffer) { + this._gpuBuffer.size = size; + if (size > 0) { + WebGL2CmdFuncResizeBuffer(WebGL2DeviceManager.instance, this._gpuBuffer); + WebGL2DeviceManager.instance.memoryStatus.bufferSize -= oldSize; + WebGL2DeviceManager.instance.memoryStatus.bufferSize += size; + } + } + }; + _proto.update = function update(buffer, size) { + if (this._isBufferView) { + console.warn('cannot update through buffer views!'); + return; + } + var buffSize; + if (size !== undefined) { + buffSize = size; + } else if (this._usage & BufferUsageBit.INDIRECT) { + buffSize = 0; + } else { + buffSize = buffer.byteLength; + } + WebGL2CmdFuncUpdateBuffer(WebGL2DeviceManager.instance, this._gpuBuffer, buffer, 0, buffSize); + }; + _createClass(WebGL2Buffer, [{ + key: "gpuBuffer", + get: function get() { + return this._gpuBuffer; + } + }]); + return WebGL2Buffer; + }(Buffer); + + var WebGL2CommandPool = function () { + function WebGL2CommandPool(Clazz, count) { + this._frees = void 0; + this._freeIdx = 0; + this._freeCmds = void 0; + this._frees = new Array(count); + this._freeCmds = new CachedArray(count); + for (var i = 0; i < count; ++i) { + this._frees[i] = new Clazz(); + } + this._freeIdx = count - 1; + } + var _proto = WebGL2CommandPool.prototype; + _proto.alloc = function alloc(Clazz) { + if (this._freeIdx < 0) { + var size = this._frees.length * 2; + var temp = this._frees; + this._frees = new Array(size); + var increase = size - temp.length; + for (var i = 0; i < increase; ++i) { + this._frees[i] = new Clazz(); + } + for (var _i = increase, j = 0; _i < size; ++_i, ++j) { + this._frees[_i] = temp[j]; + } + this._freeIdx += increase; + } + var cmd = this._frees[this._freeIdx]; + this._frees[this._freeIdx--] = null; + ++cmd.refCount; + return cmd; + }; + _proto.free = function free(cmd) { + if (--cmd.refCount === 0) { + this._freeCmds.push(cmd); + } + }; + _proto.freeCmds = function freeCmds(cmds) { + for (var i = 0; i < cmds.length; ++i) { + if (--cmds.array[i].refCount === 0) { + this._freeCmds.push(cmds.array[i]); + } + } + }; + _proto.release = function release() { + for (var i = 0; i < this._freeCmds.length; ++i) { + var cmd = this._freeCmds.array[i]; + cmd.clear(); + this._frees[++this._freeIdx] = cmd; + } + this._freeCmds.clear(); + }; + return WebGL2CommandPool; + }(); + var WebGL2CommandAllocator = function () { + function WebGL2CommandAllocator() { + this.beginRenderPassCmdPool = void 0; + this.bindStatesCmdPool = void 0; + this.drawCmdPool = void 0; + this.updateBufferCmdPool = void 0; + this.copyBufferToTextureCmdPool = void 0; + this.blitTextureCmdPool = void 0; + this.beginRenderPassCmdPool = new WebGL2CommandPool(WebGL2CmdBeginRenderPass, 1); + this.bindStatesCmdPool = new WebGL2CommandPool(WebGL2CmdBindStates, 1); + this.drawCmdPool = new WebGL2CommandPool(WebGL2CmdDraw, 1); + this.updateBufferCmdPool = new WebGL2CommandPool(WebGL2CmdUpdateBuffer, 1); + this.copyBufferToTextureCmdPool = new WebGL2CommandPool(WebGL2CmdCopyBufferToTexture, 1); + this.blitTextureCmdPool = new WebGL2CommandPool(WebGL2CmdBlitTexture, 1); + } + var _proto2 = WebGL2CommandAllocator.prototype; + _proto2.clearCmds = function clearCmds(cmdPackage) { + if (cmdPackage.beginRenderPassCmds.length) { + this.beginRenderPassCmdPool.freeCmds(cmdPackage.beginRenderPassCmds); + cmdPackage.beginRenderPassCmds.clear(); + } + if (cmdPackage.bindStatesCmds.length) { + this.bindStatesCmdPool.freeCmds(cmdPackage.bindStatesCmds); + cmdPackage.bindStatesCmds.clear(); + } + if (cmdPackage.drawCmds.length) { + this.drawCmdPool.freeCmds(cmdPackage.drawCmds); + cmdPackage.drawCmds.clear(); + } + if (cmdPackage.updateBufferCmds.length) { + this.updateBufferCmdPool.freeCmds(cmdPackage.updateBufferCmds); + cmdPackage.updateBufferCmds.clear(); + } + if (cmdPackage.copyBufferToTextureCmds.length) { + this.copyBufferToTextureCmdPool.freeCmds(cmdPackage.copyBufferToTextureCmds); + cmdPackage.copyBufferToTextureCmds.clear(); + } + if (cmdPackage.blitTextureCmds.length) { + this.blitTextureCmdPool.freeCmds(cmdPackage.blitTextureCmds); + cmdPackage.blitTextureCmds.clear(); + } + cmdPackage.cmds.clear(); + }; + _proto2.releaseCmds = function releaseCmds() { + this.beginRenderPassCmdPool.release(); + this.bindStatesCmdPool.release(); + this.drawCmdPool.release(); + this.updateBufferCmdPool.release(); + this.copyBufferToTextureCmdPool.release(); + this.blitTextureCmdPool.release(); + }; + return WebGL2CommandAllocator; + }(); + + var WebGL2CommandBuffer = function (_CommandBuffer) { + _inheritsLoose(WebGL2CommandBuffer, _CommandBuffer); + function WebGL2CommandBuffer() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _CommandBuffer.call.apply(_CommandBuffer, [this].concat(args)) || this; + _this.cmdPackage = new WebGL2CmdPackage(); + _this._cmdAllocator = new WebGL2CommandAllocator(); + _this._isInRenderPass = false; + _this._curGPUPipelineState = null; + _this._curGPUDescriptorSets = []; + _this._curGPUInputAssembler = null; + _this._curDynamicOffsets = Array(8).fill(0); + _this._curDynamicStates = new DynamicStates(); + _this._isStateInvalied = false; + return _this; + } + var _proto = WebGL2CommandBuffer.prototype; + _proto.initialize = function initialize(info) { + this._type = info.type; + this._queue = info.queue; + var setCount = WebGL2DeviceManager.instance.bindingMappings.blockOffsets.length; + for (var i = 0; i < setCount; i++) { + this._curGPUDescriptorSets.push(null); + } + }; + _proto.destroy = function destroy() { + this._cmdAllocator.clearCmds(this.cmdPackage); + }; + _proto.begin = function begin(renderPass, subpass, frameBuffer) { + this._cmdAllocator.clearCmds(this.cmdPackage); + this._curGPUPipelineState = null; + this._curGPUInputAssembler = null; + this._curGPUDescriptorSets.length = 0; + this._numDrawCalls = 0; + this._numInstances = 0; + this._numTris = 0; + }; + _proto.end = function end() { + if (this._isStateInvalied) { + this.bindStates(); + } + this._isInRenderPass = false; + }; + _proto.beginRenderPass = function beginRenderPass(renderPass, framebuffer, renderArea, clearColors, clearDepth, clearStencil) { + var cmd = this._cmdAllocator.beginRenderPassCmdPool.alloc(WebGL2CmdBeginRenderPass); + cmd.gpuRenderPass = renderPass.gpuRenderPass; + cmd.gpuFramebuffer = framebuffer.gpuFramebuffer; + cmd.renderArea.copy(renderArea); + for (var i = 0; i < clearColors.length; ++i) { + cmd.clearColors[i] = clearColors[i]; + } + cmd.clearDepth = clearDepth; + cmd.clearStencil = clearStencil; + this.cmdPackage.beginRenderPassCmds.push(cmd); + this.cmdPackage.cmds.push(WebGL2Cmd.BEGIN_RENDER_PASS); + this._isInRenderPass = true; + }; + _proto.endRenderPass = function endRenderPass() { + this._isInRenderPass = false; + }; + _proto.bindPipelineState = function bindPipelineState(pipelineState) { + var gpuPipelineState = pipelineState.gpuPipelineState; + if (gpuPipelineState !== this._curGPUPipelineState) { + this._curGPUPipelineState = gpuPipelineState; + this._isStateInvalied = true; + } + }; + _proto.bindDescriptorSet = function bindDescriptorSet(set, descriptorSet, dynamicOffsets) { + var gpuDescriptorSets = descriptorSet.gpuDescriptorSet; + if (gpuDescriptorSets !== this._curGPUDescriptorSets[set]) { + this._curGPUDescriptorSets[set] = gpuDescriptorSets; + this._isStateInvalied = true; + } + if (dynamicOffsets) { + var _this$_curGPUPipeline; + var gpuPipelineLayout = (_this$_curGPUPipeline = this._curGPUPipelineState) === null || _this$_curGPUPipeline === void 0 ? void 0 : _this$_curGPUPipeline.gpuPipelineLayout; + if (gpuPipelineLayout) { + var offsets = this._curDynamicOffsets; + var idx = gpuPipelineLayout.dynamicOffsetOffsets[set]; + for (var i = 0; i < dynamicOffsets.length; i++) offsets[idx + i] = dynamicOffsets[i]; + this._isStateInvalied = true; + } + } + }; + _proto.bindInputAssembler = function bindInputAssembler(inputAssembler) { + var gpuInputAssembler = inputAssembler.gpuInputAssembler; + this._curGPUInputAssembler = gpuInputAssembler; + this._isStateInvalied = true; + }; + _proto.setViewport = function setViewport(viewport) { + var cache = this._curDynamicStates.viewport; + if (cache.left !== viewport.left || cache.top !== viewport.top || cache.width !== viewport.width || cache.height !== viewport.height || cache.minDepth !== viewport.minDepth || cache.maxDepth !== viewport.maxDepth) { + cache.left = viewport.left; + cache.top = viewport.top; + cache.width = viewport.width; + cache.height = viewport.height; + cache.minDepth = viewport.minDepth; + cache.maxDepth = viewport.maxDepth; + this._isStateInvalied = true; + } + }; + _proto.setScissor = function setScissor(scissor) { + var cache = this._curDynamicStates.scissor; + if (cache.x !== scissor.x || cache.y !== scissor.y || cache.width !== scissor.width || cache.height !== scissor.height) { + cache.x = scissor.x; + cache.y = scissor.y; + cache.width = scissor.width; + cache.height = scissor.height; + this._isStateInvalied = true; + } + }; + _proto.setLineWidth = function setLineWidth(lineWidth) { + if (this._curDynamicStates.lineWidth !== lineWidth) { + this._curDynamicStates.lineWidth = lineWidth; + this._isStateInvalied = true; + } + }; + _proto.setDepthBias = function setDepthBias(depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) { + var cache = this._curDynamicStates; + if (cache.depthBiasConstant !== depthBiasConstantFactor || cache.depthBiasClamp !== depthBiasClamp || cache.depthBiasSlope !== depthBiasSlopeFactor) { + cache.depthBiasConstant = depthBiasConstantFactor; + cache.depthBiasClamp = depthBiasClamp; + cache.depthBiasSlope = depthBiasSlopeFactor; + this._isStateInvalied = true; + } + }; + _proto.setBlendConstants = function setBlendConstants(blendConstants) { + var cache = this._curDynamicStates.blendConstant; + if (cache.x !== blendConstants.x || cache.y !== blendConstants.y || cache.z !== blendConstants.z || cache.w !== blendConstants.w) { + cache.copy(blendConstants); + this._isStateInvalied = true; + } + }; + _proto.setDepthBound = function setDepthBound(minDepthBounds, maxDepthBounds) { + var cache = this._curDynamicStates; + if (cache.depthMinBounds !== minDepthBounds || cache.depthMaxBounds !== maxDepthBounds) { + cache.depthMinBounds = minDepthBounds; + cache.depthMaxBounds = maxDepthBounds; + this._isStateInvalied = true; + } + }; + _proto.setStencilWriteMask = function setStencilWriteMask(face, writeMask) { + var front = this._curDynamicStates.stencilStatesFront; + var back = this._curDynamicStates.stencilStatesBack; + if (face & StencilFace.FRONT) { + if (front.writeMask !== writeMask) { + front.writeMask = writeMask; + this._isStateInvalied = true; + } + } + if (face & StencilFace.BACK) { + if (back.writeMask !== writeMask) { + back.writeMask = writeMask; + this._isStateInvalied = true; + } + } + }; + _proto.setStencilCompareMask = function setStencilCompareMask(face, reference, compareMask) { + var front = this._curDynamicStates.stencilStatesFront; + var back = this._curDynamicStates.stencilStatesBack; + if (face & StencilFace.FRONT) { + if (front.compareMask !== compareMask || front.reference !== reference) { + front.reference = reference; + front.compareMask = compareMask; + this._isStateInvalied = true; + } + } + if (face & StencilFace.BACK) { + if (back.compareMask !== compareMask || back.reference !== reference) { + back.reference = reference; + back.compareMask = compareMask; + this._isStateInvalied = true; + } + } + }; + _proto.draw = function draw(infoOrAssembler) { + if (this._type === CommandBufferType.PRIMARY && this._isInRenderPass || this._type === CommandBufferType.SECONDARY) { + if (this._isStateInvalied) { + this.bindStates(); + } + var info = 'drawInfo' in infoOrAssembler ? infoOrAssembler.drawInfo : infoOrAssembler; + var cmd = this._cmdAllocator.drawCmdPool.alloc(WebGL2CmdDraw); + cmd.drawInfo.copy(info); + this.cmdPackage.drawCmds.push(cmd); + this.cmdPackage.cmds.push(WebGL2Cmd.DRAW); + ++this._numDrawCalls; + this._numInstances += info.instanceCount; + var indexCount = info.indexCount || info.vertexCount; + if (this._curGPUPipelineState) { + var glPrimitive = this._curGPUPipelineState.glPrimitive; + switch (glPrimitive) { + case 0x0004: + { + this._numTris += indexCount / 3 * Math.max(info.instanceCount, 1); + break; + } + case 0x0005: + case 0x0006: + { + this._numTris += (indexCount - 2) * Math.max(info.instanceCount, 1); + break; + } + } + } + } else { + console.error('Command \'draw\' must be recorded inside a render pass.'); + } + }; + _proto.updateBuffer = function updateBuffer(buffer, data, size) { + if (this._type === CommandBufferType.PRIMARY && !this._isInRenderPass || this._type === CommandBufferType.SECONDARY) { + var gpuBuffer = buffer.gpuBuffer; + if (gpuBuffer) { + var cmd = this._cmdAllocator.updateBufferCmdPool.alloc(WebGL2CmdUpdateBuffer); + var buffSize = 0; + var buff = null; + if (buffer.usage & BufferUsageBit.INDIRECT) { + buff = data; + } else { + if (size !== undefined) { + buffSize = size; + } else { + buffSize = data.byteLength; + } + buff = data; + } + cmd.gpuBuffer = gpuBuffer; + cmd.buffer = buff; + cmd.offset = 0; + cmd.size = buffSize; + this.cmdPackage.updateBufferCmds.push(cmd); + this.cmdPackage.cmds.push(WebGL2Cmd.UPDATE_BUFFER); + } + } else { + console.error('Command \'updateBuffer\' must be recorded outside a render pass.'); + } + }; + _proto.copyBuffersToTexture = function copyBuffersToTexture(buffers, texture, regions) { + if (this._type === CommandBufferType.PRIMARY && !this._isInRenderPass || this._type === CommandBufferType.SECONDARY) { + var gpuTexture = texture.gpuTexture; + if (gpuTexture) { + var cmd = this._cmdAllocator.copyBufferToTextureCmdPool.alloc(WebGL2CmdCopyBufferToTexture); + cmd.gpuTexture = gpuTexture; + cmd.regions = regions; + cmd.buffers = buffers; + this.cmdPackage.copyBufferToTextureCmds.push(cmd); + this.cmdPackage.cmds.push(WebGL2Cmd.COPY_BUFFER_TO_TEXTURE); + } + } else { + console.error('Command \'copyBufferToTexture\' must be recorded outside a render pass.'); + } + }; + _proto.execute = function execute(cmdBuffs, count) { + for (var i = 0; i < count; ++i) { + var webGL2CmdBuff = cmdBuffs[i]; + for (var c = 0; c < webGL2CmdBuff.cmdPackage.beginRenderPassCmds.length; ++c) { + var cmd = webGL2CmdBuff.cmdPackage.beginRenderPassCmds.array[c]; + ++cmd.refCount; + this.cmdPackage.beginRenderPassCmds.push(cmd); + } + for (var _c = 0; _c < webGL2CmdBuff.cmdPackage.bindStatesCmds.length; ++_c) { + var _cmd = webGL2CmdBuff.cmdPackage.bindStatesCmds.array[_c]; + ++_cmd.refCount; + this.cmdPackage.bindStatesCmds.push(_cmd); + } + for (var _c2 = 0; _c2 < webGL2CmdBuff.cmdPackage.drawCmds.length; ++_c2) { + var _cmd2 = webGL2CmdBuff.cmdPackage.drawCmds.array[_c2]; + ++_cmd2.refCount; + this.cmdPackage.drawCmds.push(_cmd2); + } + for (var _c3 = 0; _c3 < webGL2CmdBuff.cmdPackage.updateBufferCmds.length; ++_c3) { + var _cmd3 = webGL2CmdBuff.cmdPackage.updateBufferCmds.array[_c3]; + ++_cmd3.refCount; + this.cmdPackage.updateBufferCmds.push(_cmd3); + } + for (var _c4 = 0; _c4 < webGL2CmdBuff.cmdPackage.copyBufferToTextureCmds.length; ++_c4) { + var _cmd4 = webGL2CmdBuff.cmdPackage.copyBufferToTextureCmds.array[_c4]; + ++_cmd4.refCount; + this.cmdPackage.copyBufferToTextureCmds.push(_cmd4); + } + for (var _c5 = 0; _c5 < webGL2CmdBuff.cmdPackage.blitTextureCmds.length; ++_c5) { + var _cmd5 = webGL2CmdBuff.cmdPackage.blitTextureCmds.array[_c5]; + ++_cmd5.refCount; + this.cmdPackage.blitTextureCmds.push(_cmd5); + } + this.cmdPackage.cmds.concat(webGL2CmdBuff.cmdPackage.cmds.array); + this._numDrawCalls += webGL2CmdBuff._numDrawCalls; + this._numInstances += webGL2CmdBuff._numInstances; + this._numTris += webGL2CmdBuff._numTris; + } + }; + _proto.pipelineBarrier = function pipelineBarrier(GeneralBarrier, bufferBarriers, buffers, textureBarriers, textures) {}; + _proto.bindStates = function bindStates() { + var bindStatesCmd = this._cmdAllocator.bindStatesCmdPool.alloc(WebGL2CmdBindStates); + bindStatesCmd.gpuPipelineState = this._curGPUPipelineState; + Array.prototype.push.apply(bindStatesCmd.gpuDescriptorSets, this._curGPUDescriptorSets); + Array.prototype.push.apply(bindStatesCmd.dynamicOffsets, this._curDynamicOffsets); + bindStatesCmd.gpuInputAssembler = this._curGPUInputAssembler; + bindStatesCmd.dynamicStates = this._curDynamicStates; + this.cmdPackage.bindStatesCmds.push(bindStatesCmd); + this.cmdPackage.cmds.push(WebGL2Cmd.BIND_STATES); + this._isStateInvalied = false; + }; + _proto.blitTexture = function blitTexture(srcTexture, dstTexture, regions, filter) { + var blitTextureCmd = this._cmdAllocator.blitTextureCmdPool.alloc(WebGL2CmdBlitTexture); + blitTextureCmd.srcTexture = srcTexture.gpuTexture; + blitTextureCmd.dstTexture = dstTexture.gpuTexture; + blitTextureCmd.regions = regions; + blitTextureCmd.filter = filter; + ++this._numDrawCalls; + this.cmdPackage.blitTextureCmds.push(blitTextureCmd); + this.cmdPackage.cmds.push(WebGL2Cmd.BLIT_TEXTURE); + }; + return WebGL2CommandBuffer; + }(CommandBuffer); + + var WebGL2Framebuffer = function (_Framebuffer) { + _inheritsLoose(WebGL2Framebuffer, _Framebuffer); + function WebGL2Framebuffer() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Framebuffer.call.apply(_Framebuffer, [this].concat(args)) || this; + _this._gpuFramebuffer = null; + return _this; + } + var _proto = WebGL2Framebuffer.prototype; + _proto.initialize = function initialize(info) { + this._renderPass = info.renderPass; + this._colorTextures = info.colorTextures || []; + this._depthStencilTexture = info.depthStencilTexture || null; + var gpuColorViews = []; + for (var i = 0; i < info.colorTextures.length; i++) { + var colorTexture = info.colorTextures[i]; + if (colorTexture) { + gpuColorViews.push(colorTexture.gpuTextureView); + } + } + var gpuDepthStencilView = null; + if (info.depthStencilTexture) { + gpuDepthStencilView = info.depthStencilTexture.gpuTextureView; + } + var width = Number.MAX_SAFE_INTEGER; + var height = Number.MAX_SAFE_INTEGER; + this._gpuFramebuffer = { + gpuRenderPass: info.renderPass.gpuRenderPass, + gpuColorViews: gpuColorViews, + gpuDepthStencilView: gpuDepthStencilView, + glFramebuffer: null, + isOffscreen: true, + get width() { + if (this.isOffscreen) { + return width; + } else if (this.gpuColorViews.length > 0) { + return this.gpuColorViews[0].gpuTexture.width; + } else { + return this.gpuDepthStencilView.gpuTexture.width; + } + }, + set width(val) { + width = val; + }, + get height() { + if (this.isOffscreen) { + return height; + } else if (this.gpuColorViews.length > 0) { + return this.gpuColorViews[0].gpuTexture.height; + } else { + return this.gpuDepthStencilView.gpuTexture.height; + } + }, + set height(val) { + height = val; + } + }; + WebGL2CmdFuncCreateFramebuffer(WebGL2DeviceManager.instance, this._gpuFramebuffer); + this._width = this._gpuFramebuffer.width; + this._height = this._gpuFramebuffer.height; + }; + _proto.destroy = function destroy() { + if (this._gpuFramebuffer) { + WebGL2CmdFuncDestroyFramebuffer(WebGL2DeviceManager.instance, this._gpuFramebuffer); + this._gpuFramebuffer = null; + } + }; + _createClass(WebGL2Framebuffer, [{ + key: "gpuFramebuffer", + get: function get() { + return this._gpuFramebuffer; + } + }]); + return WebGL2Framebuffer; + }(Framebuffer); + + var WebGL2InputAssembler = function (_InputAssembler) { + _inheritsLoose(WebGL2InputAssembler, _InputAssembler); + function WebGL2InputAssembler() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _InputAssembler.call.apply(_InputAssembler, [this].concat(args)) || this; + _this._gpuInputAssembler = null; + return _this; + } + var _proto = WebGL2InputAssembler.prototype; + _proto.initialize = function initialize(info) { + if (info.vertexBuffers.length === 0) { + console.error('InputAssemblerInfo.vertexBuffers is null.'); + return; + } + this._attributes = info.attributes; + this._attributesHash = this.computeAttributesHash(); + this._vertexBuffers = info.vertexBuffers; + if (info.indexBuffer) { + this._indexBuffer = info.indexBuffer; + this._drawInfo.indexCount = this._indexBuffer.size / this._indexBuffer.stride; + this._drawInfo.firstIndex = 0; + } else { + var vertBuff = this._vertexBuffers[0]; + this._drawInfo.vertexCount = vertBuff.size / vertBuff.stride; + this._drawInfo.firstVertex = 0; + this._drawInfo.vertexOffset = 0; + } + this._drawInfo.instanceCount = 0; + this._drawInfo.firstInstance = 0; + this._indirectBuffer = info.indirectBuffer || null; + var gpuVertexBuffers = new Array(info.vertexBuffers.length); + for (var i = 0; i < info.vertexBuffers.length; ++i) { + var vb = info.vertexBuffers[i]; + if (vb.gpuBuffer) { + gpuVertexBuffers[i] = vb.gpuBuffer; + } + } + var gpuIndexBuffer = null; + var glIndexType = 0; + if (info.indexBuffer) { + gpuIndexBuffer = info.indexBuffer.gpuBuffer; + if (gpuIndexBuffer) { + switch (gpuIndexBuffer.stride) { + case 1: + glIndexType = 0x1401; + break; + case 2: + glIndexType = 0x1403; + break; + case 4: + glIndexType = 0x1405; + break; + default: + { + console.error('Illegal index buffer stride.'); + } + } + } + } + var gpuIndirectBuffer = null; + if (info.indirectBuffer) { + gpuIndirectBuffer = info.indirectBuffer.gpuBuffer; + } + this._gpuInputAssembler = { + attributes: info.attributes, + gpuVertexBuffers: gpuVertexBuffers, + gpuIndexBuffer: gpuIndexBuffer, + gpuIndirectBuffer: gpuIndirectBuffer, + glAttribs: [], + glIndexType: glIndexType, + glVAOs: new Map() + }; + WebGL2CmdFuncCreateInputAssember(WebGL2DeviceManager.instance, this._gpuInputAssembler); + }; + _proto.destroy = function destroy() { + var device = WebGL2DeviceManager.instance; + if (this._gpuInputAssembler && device.extensions.useVAO) { + WebGL2CmdFuncDestroyInputAssembler(device, this._gpuInputAssembler); + } + this._gpuInputAssembler = null; + }; + _createClass(WebGL2InputAssembler, [{ + key: "gpuInputAssembler", + get: function get() { + return this._gpuInputAssembler; + } + }]); + return WebGL2InputAssembler; + }(InputAssembler); + + var WebGL2DescriptorSetLayout = function (_DescriptorSetLayout) { + _inheritsLoose(WebGL2DescriptorSetLayout, _DescriptorSetLayout); + function WebGL2DescriptorSetLayout() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _DescriptorSetLayout.call.apply(_DescriptorSetLayout, [this].concat(args)) || this; + _this._gpuDescriptorSetLayout = null; + return _this; + } + var _proto = WebGL2DescriptorSetLayout.prototype; + _proto.initialize = function initialize(info) { + Array.prototype.push.apply(this._bindings, info.bindings); + var descriptorCount = 0; + var maxBinding = -1; + var flattenedIndices = []; + for (var i = 0; i < this._bindings.length; i++) { + var binding = this._bindings[i]; + flattenedIndices.push(descriptorCount); + descriptorCount += binding.count; + if (binding.binding > maxBinding) maxBinding = binding.binding; + } + this._bindingIndices = Array(maxBinding + 1).fill(-1); + var descriptorIndices = this._descriptorIndices = Array(maxBinding + 1).fill(-1); + for (var _i = 0; _i < this._bindings.length; _i++) { + var _binding = this._bindings[_i]; + this._bindingIndices[_binding.binding] = _i; + descriptorIndices[_binding.binding] = flattenedIndices[_i]; + } + var dynamicBindings = []; + for (var _i2 = 0; _i2 < this._bindings.length; _i2++) { + var _binding2 = this._bindings[_i2]; + if (_binding2.descriptorType & DESCRIPTOR_DYNAMIC_TYPE) { + for (var j = 0; j < _binding2.count; j++) { + dynamicBindings.push(_binding2.binding); + } + } + } + this._gpuDescriptorSetLayout = { + bindings: this._bindings, + dynamicBindings: dynamicBindings, + descriptorIndices: descriptorIndices, + descriptorCount: descriptorCount + }; + }; + _proto.destroy = function destroy() { + this._bindings.length = 0; + }; + _createClass(WebGL2DescriptorSetLayout, [{ + key: "gpuDescriptorSetLayout", + get: function get() { + return this._gpuDescriptorSetLayout; + } + }]); + return WebGL2DescriptorSetLayout; + }(DescriptorSetLayout); + + var WebGL2PipelineLayout = function (_PipelineLayout) { + _inheritsLoose(WebGL2PipelineLayout, _PipelineLayout); + function WebGL2PipelineLayout() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _PipelineLayout.call.apply(_PipelineLayout, [this].concat(args)) || this; + _this._gpuPipelineLayout = null; + return _this; + } + var _proto = WebGL2PipelineLayout.prototype; + _proto.initialize = function initialize(info) { + Array.prototype.push.apply(this._setLayouts, info.setLayouts); + var dynamicOffsetIndices = []; + var gpuSetLayouts = []; + var dynamicOffsetCount = 0; + var dynamicOffsetOffsets = []; + for (var i = 0; i < this._setLayouts.length; i++) { + var setLayout = this._setLayouts[i]; + var dynamicBindings = setLayout.gpuDescriptorSetLayout.dynamicBindings; + var indices = Array(setLayout.bindingIndices.length).fill(-1); + for (var j = 0; j < dynamicBindings.length; j++) { + var binding = dynamicBindings[j]; + if (indices[binding] < 0) indices[binding] = dynamicOffsetCount + j; + } + gpuSetLayouts.push(setLayout.gpuDescriptorSetLayout); + dynamicOffsetIndices.push(indices); + dynamicOffsetOffsets.push(dynamicOffsetCount); + dynamicOffsetCount += dynamicBindings.length; + } + this._gpuPipelineLayout = { + gpuSetLayouts: gpuSetLayouts, + dynamicOffsetIndices: dynamicOffsetIndices, + dynamicOffsetCount: dynamicOffsetCount, + dynamicOffsetOffsets: dynamicOffsetOffsets + }; + }; + _proto.destroy = function destroy() { + this._setLayouts.length = 0; + }; + _createClass(WebGL2PipelineLayout, [{ + key: "gpuPipelineLayout", + get: function get() { + return this._gpuPipelineLayout; + } + }]); + return WebGL2PipelineLayout; + }(PipelineLayout); + + var WebGLPrimitives = [0x0000, 0x0001, 0x0003, 0x0002, 0x0000, 0x0000, 0x0000, 0x0004, 0x0005, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000]; + var WebGL2PipelineState = function (_PipelineState) { + _inheritsLoose(WebGL2PipelineState, _PipelineState); + function WebGL2PipelineState() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _PipelineState.call.apply(_PipelineState, [this].concat(args)) || this; + _this._gpuPipelineState = null; + return _this; + } + var _proto = WebGL2PipelineState.prototype; + _proto.initialize = function initialize(info) { + this._primitive = info.primitive; + this._shader = info.shader; + this._pipelineLayout = info.pipelineLayout; + var bs = this._bs; + if (info.blendState) { + var bsInfo = info.blendState; + var targets = bsInfo.targets; + if (targets) { + targets.forEach(function (t, i) { + bs.setTarget(i, t); + }); + } + if (bsInfo.isA2C !== undefined) { + bs.isA2C = bsInfo.isA2C; + } + if (bsInfo.isIndepend !== undefined) { + bs.isIndepend = bsInfo.isIndepend; + } + if (bsInfo.blendColor !== undefined) { + bs.blendColor = bsInfo.blendColor; + } + } + Object.assign(this._rs, info.rasterizerState); + Object.assign(this._dss, info.depthStencilState); + this._is = info.inputState; + this._renderPass = info.renderPass; + this._dynamicStates = info.dynamicStates; + var dynamicStates = []; + for (var i = 0; i < 31; i++) { + if (this._dynamicStates & 1 << i) { + dynamicStates.push(1 << i); + } + } + this._gpuPipelineState = { + glPrimitive: WebGLPrimitives[info.primitive], + gpuShader: info.shader.gpuShader, + gpuPipelineLayout: info.pipelineLayout.gpuPipelineLayout, + rs: info.rasterizerState, + dss: info.depthStencilState, + bs: info.blendState, + gpuRenderPass: info.renderPass.gpuRenderPass, + dynamicStates: dynamicStates + }; + }; + _proto.destroy = function destroy() { + this._gpuPipelineState = null; + }; + _createClass(WebGL2PipelineState, [{ + key: "gpuPipelineState", + get: function get() { + return this._gpuPipelineState; + } + }]); + return WebGL2PipelineState; + }(PipelineState); + + var WebGL2PrimaryCommandBuffer = function (_WebGL2CommandBuffer) { + _inheritsLoose(WebGL2PrimaryCommandBuffer, _WebGL2CommandBuffer); + function WebGL2PrimaryCommandBuffer() { + return _WebGL2CommandBuffer.apply(this, arguments) || this; + } + var _proto = WebGL2PrimaryCommandBuffer.prototype; + _proto.beginRenderPass = function beginRenderPass(renderPass, framebuffer, renderArea, clearColors, clearDepth, clearStencil) { + WebGL2CmdFuncBeginRenderPass(WebGL2DeviceManager.instance, renderPass.gpuRenderPass, framebuffer.gpuFramebuffer, renderArea, clearColors, clearDepth, clearStencil); + this._isInRenderPass = true; + }; + _proto.draw = function draw(infoOrAssembler) { + if (this._isInRenderPass) { + if (this._isStateInvalied) { + this.bindStates(); + } + var info = 'drawInfo' in infoOrAssembler ? infoOrAssembler.drawInfo : infoOrAssembler; + WebGL2CmdFuncDraw(WebGL2DeviceManager.instance, info); + ++this._numDrawCalls; + this._numInstances += info.instanceCount; + var indexCount = info.indexCount || info.vertexCount; + if (this._curGPUPipelineState) { + var glPrimitive = this._curGPUPipelineState.glPrimitive; + switch (glPrimitive) { + case 0x0004: + { + this._numTris += indexCount / 3 * Math.max(info.instanceCount, 1); + break; + } + case 0x0005: + case 0x0006: + { + this._numTris += (indexCount - 2) * Math.max(info.instanceCount, 1); + break; + } + } + } + } else { + console.error('Command \'draw\' must be recorded inside a render pass.'); + } + }; + _proto.setViewport = function setViewport(viewport) { + var _WebGL2DeviceManager$ = WebGL2DeviceManager.instance, + cache = _WebGL2DeviceManager$.stateCache, + gl = _WebGL2DeviceManager$.gl; + if (cache.viewport.left !== viewport.left || cache.viewport.top !== viewport.top || cache.viewport.width !== viewport.width || cache.viewport.height !== viewport.height) { + gl.viewport(viewport.left, viewport.top, viewport.width, viewport.height); + cache.viewport.left = viewport.left; + cache.viewport.top = viewport.top; + cache.viewport.width = viewport.width; + cache.viewport.height = viewport.height; + } + }; + _proto.setScissor = function setScissor(scissor) { + var _WebGL2DeviceManager$2 = WebGL2DeviceManager.instance, + cache = _WebGL2DeviceManager$2.stateCache, + gl = _WebGL2DeviceManager$2.gl; + if (cache.scissorRect.x !== scissor.x || cache.scissorRect.y !== scissor.y || cache.scissorRect.width !== scissor.width || cache.scissorRect.height !== scissor.height) { + gl.scissor(scissor.x, scissor.y, scissor.width, scissor.height); + cache.scissorRect.x = scissor.x; + cache.scissorRect.y = scissor.y; + cache.scissorRect.width = scissor.width; + cache.scissorRect.height = scissor.height; + } + }; + _proto.updateBuffer = function updateBuffer(buffer, data, size) { + if (!this._isInRenderPass) { + var gpuBuffer = buffer.gpuBuffer; + if (gpuBuffer) { + var buffSize; + if (size !== undefined) { + buffSize = size; + } else if (buffer.usage & BufferUsageBit.INDIRECT) { + buffSize = 0; + } else { + buffSize = data.byteLength; + } + WebGL2CmdFuncUpdateBuffer(WebGL2DeviceManager.instance, gpuBuffer, data, 0, buffSize); + } + } else { + console.error('Command \'updateBuffer\' must be recorded outside a render pass.'); + } + }; + _proto.copyBuffersToTexture = function copyBuffersToTexture(buffers, texture, regions) { + if (!this._isInRenderPass) { + var gpuTexture = texture.gpuTexture; + if (gpuTexture) { + WebGL2CmdFuncCopyBuffersToTexture(WebGL2DeviceManager.instance, buffers, gpuTexture, regions); + } + } else { + console.error('Command \'copyBufferToTexture\' must be recorded outside a render pass.'); + } + }; + _proto.execute = function execute(cmdBuffs, count) { + for (var i = 0; i < count; ++i) { + var webGL2CmdBuff = cmdBuffs[i]; + WebGL2CmdFuncExecuteCmds(WebGL2DeviceManager.instance, webGL2CmdBuff.cmdPackage); + this._numDrawCalls += webGL2CmdBuff._numDrawCalls; + this._numInstances += webGL2CmdBuff._numInstances; + this._numTris += webGL2CmdBuff._numTris; + } + }; + _proto.bindStates = function bindStates() { + WebGL2CmdFuncBindStates(WebGL2DeviceManager.instance, this._curGPUPipelineState, this._curGPUInputAssembler, this._curGPUDescriptorSets, this._curDynamicOffsets, this._curDynamicStates); + this._isStateInvalied = false; + }; + _proto.blitTexture = function blitTexture(srcTexture, dstTexture, regions, filter) { + var gpuTextureSrc = srcTexture.gpuTexture; + var gpuTextureDst = dstTexture.gpuTexture; + WebGL2CmdFuncBlitTexture(WebGL2DeviceManager.instance, gpuTextureSrc, gpuTextureDst, regions, filter); + }; + return WebGL2PrimaryCommandBuffer; + }(WebGL2CommandBuffer); + + var WebGL2Queue = function (_Queue) { + _inheritsLoose(WebGL2Queue, _Queue); + function WebGL2Queue() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Queue.call.apply(_Queue, [this].concat(args)) || this; + _this.numDrawCalls = 0; + _this.numInstances = 0; + _this.numTris = 0; + return _this; + } + var _proto = WebGL2Queue.prototype; + _proto.initialize = function initialize(info) { + this._type = info.type; + }; + _proto.destroy = function destroy() {}; + _proto.submit = function submit(cmdBuffs) { + for (var i = 0; i < cmdBuffs.length; i++) { + var cmdBuff = cmdBuffs[i]; + this.numDrawCalls += cmdBuff.numDrawCalls; + this.numInstances += cmdBuff.numInstances; + this.numTris += cmdBuff.numTris; + } + }; + _proto.clear = function clear() { + this.numDrawCalls = 0; + this.numInstances = 0; + this.numTris = 0; + }; + return WebGL2Queue; + }(Queue); + + var WebGL2RenderPass = function (_RenderPass) { + _inheritsLoose(WebGL2RenderPass, _RenderPass); + function WebGL2RenderPass() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _RenderPass.call.apply(_RenderPass, [this].concat(args)) || this; + _this._gpuRenderPass = null; + return _this; + } + var _proto = WebGL2RenderPass.prototype; + _proto.initialize = function initialize(info) { + this._colorInfos = info.colorAttachments; + this._depthStencilInfo = info.depthStencilAttachment; + this._subpasses = info.subpasses; + this._gpuRenderPass = { + colorAttachments: this._colorInfos, + depthStencilAttachment: this._depthStencilInfo + }; + this._hash = this.computeHash(); + }; + _proto.destroy = function destroy() { + this._gpuRenderPass = null; + }; + _createClass(WebGL2RenderPass, [{ + key: "gpuRenderPass", + get: function get() { + return this._gpuRenderPass; + } + }]); + return WebGL2RenderPass; + }(RenderPass); + + var WebGL2Sampler = function (_Sampler) { + _inheritsLoose(WebGL2Sampler, _Sampler); + function WebGL2Sampler(info, hash) { + var _this; + _this = _Sampler.call(this, info, hash) || this; + _this._gpuSampler = null; + _this._gpuSampler = { + glSamplers: new Map(), + minFilter: _this._info.minFilter, + magFilter: _this._info.magFilter, + mipFilter: _this._info.mipFilter, + addressU: _this._info.addressU, + addressV: _this._info.addressV, + addressW: _this._info.addressW, + glMinFilter: 0, + glMagFilter: 0, + glWrapS: 0, + glWrapT: 0, + glWrapR: 0, + getGLSampler: function getGLSampler(device, minLod, maxLod) { + var gl = device.gl; + var samplerHash = minLod << 16 | maxLod; + if (!this.glSamplers.has(samplerHash)) { + var glSampler = gl.createSampler(); + if (glSampler) { + this.glSamplers.set(samplerHash, glSampler); + gl.samplerParameteri(glSampler, gl.TEXTURE_MIN_FILTER, this.glMinFilter); + gl.samplerParameteri(glSampler, gl.TEXTURE_MAG_FILTER, this.glMagFilter); + gl.samplerParameteri(glSampler, gl.TEXTURE_WRAP_S, this.glWrapS); + gl.samplerParameteri(glSampler, gl.TEXTURE_WRAP_T, this.glWrapT); + gl.samplerParameteri(glSampler, gl.TEXTURE_WRAP_R, this.glWrapR); + gl.samplerParameterf(glSampler, gl.TEXTURE_MIN_LOD, minLod); + gl.samplerParameterf(glSampler, gl.TEXTURE_MAX_LOD, maxLod); + } + } + var sampler = this.glSamplers.get(samplerHash); + return sampler; + } + }; + WebGL2CmdFuncPrepareSamplerInfo(WebGL2DeviceManager.instance, _this._gpuSampler); + return _this; + } + var _proto = WebGL2Sampler.prototype; + _proto.destroy = function destroy() { + if (this._gpuSampler) { + WebGL2CmdFuncDestroySampler(WebGL2DeviceManager.instance, this._gpuSampler); + this._gpuSampler = null; + } + }; + _createClass(WebGL2Sampler, [{ + key: "gpuSampler", + get: function get() { + return this._gpuSampler; + } + }]); + return WebGL2Sampler; + }(Sampler); + + var WebGL2Shader = function (_Shader) { + _inheritsLoose(WebGL2Shader, _Shader); + function WebGL2Shader() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Shader.call.apply(_Shader, [this].concat(args)) || this; + _this._gpuShader = null; + return _this; + } + var _proto = WebGL2Shader.prototype; + _proto.initialize = function initialize(info) { + this._name = info.name; + this._stages = info.stages; + this._attributes = info.attributes; + this._blocks = info.blocks; + this._samplers = info.samplers; + this._gpuShader = { + name: info.name, + blocks: info.blocks.slice(), + samplerTextures: info.samplerTextures.slice(), + subpassInputs: info.subpassInputs.slice(), + gpuStages: new Array(info.stages.length), + glProgram: null, + glInputs: [], + glUniforms: [], + glBlocks: [], + glSamplerTextures: [] + }; + for (var i = 0; i < info.stages.length; ++i) { + var stage = info.stages[i]; + this._gpuShader.gpuStages[i] = { + type: stage.stage, + source: stage.source, + glShader: null + }; + } + }; + _proto.destroy = function destroy() { + if (this._gpuShader) { + WebGL2CmdFuncDestroyShader(WebGL2DeviceManager.instance, this._gpuShader); + this._gpuShader = null; + } + }; + _createClass(WebGL2Shader, [{ + key: "gpuShader", + get: function get() { + if (this._gpuShader.glProgram === null) { + WebGL2CmdFuncCreateShader(WebGL2DeviceManager.instance, this._gpuShader); + } + return this._gpuShader; + } + }]); + return WebGL2Shader; + }(Shader); + + var WebGL2StateCache = function () { + function WebGL2StateCache() { + this.glArrayBuffer = null; + this.glElementArrayBuffer = null; + this.glUniformBuffer = null; + this.glBindUBOs = []; + this.glBindUBOOffsets = []; + this.glVAO = null; + this.texUnit = 0; + this.glTexUnits = []; + this.glSamplerUnits = []; + this.glRenderbuffer = null; + this.glFramebuffer = null; + this.glReadFramebuffer = null; + this.viewport = new Viewport(); + this.scissorRect = new Rect(0, 0, 0, 0); + this.rs = new RasterizerState(); + this.dss = new DepthStencilState(); + this.bs = new BlendState$1(); + this.glProgram = null; + this.glEnabledAttribLocs = []; + this.glCurrentAttribLocs = []; + this.texUnitCacheMap = {}; + } + var _proto = WebGL2StateCache.prototype; + _proto.initialize = function initialize(texUnit, bufferBindings, vertexAttributes) { + for (var i = 0; i < texUnit; ++i) this.glTexUnits.push({ + glTexture: null + }); + this.glSamplerUnits.length = texUnit; + this.glSamplerUnits.fill(null); + this.glBindUBOs.length = bufferBindings; + this.glBindUBOs.fill(null); + this.glBindUBOOffsets.length = bufferBindings; + this.glBindUBOOffsets.fill(0); + this.glEnabledAttribLocs.length = vertexAttributes; + this.glEnabledAttribLocs.fill(false); + this.glCurrentAttribLocs.length = vertexAttributes; + this.glCurrentAttribLocs.fill(false); + }; + return WebGL2StateCache; + }(); + + var WebGL2Texture = function (_Texture) { + _inheritsLoose(WebGL2Texture, _Texture); + function WebGL2Texture() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Texture.call.apply(_Texture, [this].concat(args)) || this; + _this._gpuTexture = null; + _this._gpuTextureView = null; + return _this; + } + var _proto = WebGL2Texture.prototype; + _proto.initialize = function initialize(info, isSwapchainTexture) { + var texInfo = info; + var viewInfo = info; + if ('texture' in info) { + texInfo = viewInfo.texture.info; + this._isTextureView = true; + } + this._info.copy(texInfo); + this._isPowerOf2 = IsPowerOf2(this._info.width) && IsPowerOf2(this._info.height); + this._size = FormatSurfaceSize(this._info.format, this.width, this.height, this.depth, this._info.levelCount) * this._info.layerCount; + if (!this._isTextureView) { + this._gpuTexture = { + type: texInfo.type, + format: texInfo.format, + usage: texInfo.usage, + width: texInfo.width, + height: texInfo.height, + depth: texInfo.depth, + size: this._size, + arrayLayer: texInfo.layerCount, + mipLevel: texInfo.levelCount, + samples: texInfo.samples, + flags: texInfo.flags, + isPowerOf2: this._isPowerOf2, + glTarget: 0, + glInternalFmt: 0, + glFormat: 0, + glType: 0, + glUsage: 0, + glTexture: null, + glRenderbuffer: null, + glWrapS: 0, + glWrapT: 0, + glMinFilter: 0, + glMagFilter: 0, + isSwapchainTexture: isSwapchainTexture || false + }; + if (!this._gpuTexture.isSwapchainTexture && this._gpuTexture) { + WebGL2CmdFuncCreateTexture(WebGL2DeviceManager.instance, this._gpuTexture); + WebGL2DeviceManager.instance.memoryStatus.textureSize += this._size; + } + this._viewInfo.texture = this; + this._viewInfo.type = info.type; + this._viewInfo.format = info.format; + this._viewInfo.baseLevel = 0; + this._viewInfo.levelCount = info.levelCount; + this._viewInfo.baseLayer = 0; + this._viewInfo.layerCount = info.layerCount; + this._gpuTextureView = { + gpuTexture: this._gpuTexture, + type: this._viewInfo.type, + format: this._viewInfo.format, + baseLevel: this._viewInfo.baseLevel, + levelCount: this._viewInfo.levelCount + }; + } else { + var _this$_gpuTexture; + this._viewInfo.copy(viewInfo); + this._gpuTexture = viewInfo.texture._gpuTexture; + if (((_this$_gpuTexture = this._gpuTexture) === null || _this$_gpuTexture === void 0 ? void 0 : _this$_gpuTexture.format) !== texInfo.format) { + console.log('GPU memory alias is not supported'); + return; + } + this._gpuTextureView = { + gpuTexture: this._gpuTexture, + type: viewInfo.type, + format: viewInfo.format, + baseLevel: viewInfo.baseLevel, + levelCount: viewInfo.levelCount + }; + } + }; + _proto.destroy = function destroy() { + if (!this._isTextureView && this._gpuTexture) { + WebGL2CmdFuncDestroyTexture(WebGL2DeviceManager.instance, this._gpuTexture); + WebGL2DeviceManager.instance.memoryStatus.textureSize -= this._size; + this._gpuTexture = null; + } + }; + _proto.getGLTextureHandle = function getGLTextureHandle() { + var gpuTexture = this._gpuTexture; + if (!gpuTexture) { + return 0; + } + if (gpuTexture.glTexture) { + return gpuTexture.glTexture; + } else if (gpuTexture.glRenderbuffer) { + return gpuTexture.glRenderbuffer; + } + return 0; + }; + _proto.resize = function resize(width, height) { + if (this._info.width === width && this._info.height === height) { + return; + } + if (this._info.levelCount === WebGL2Texture.getLevelCount(this._info.width, this._info.height)) { + this._info.levelCount = WebGL2Texture.getLevelCount(width, height); + } else if (this._info.levelCount > 1) { + this._info.levelCount = Math.min(this._info.levelCount, WebGL2Texture.getLevelCount(width, height)); + } + var oldSize = this._size; + this._info.width = width; + this._info.height = height; + this._size = FormatSurfaceSize(this._info.format, this.width, this.height, this.depth, this._info.levelCount) * this._info.layerCount; + if (!this._isTextureView && this._gpuTexture) { + this._gpuTexture.width = width; + this._gpuTexture.height = height; + this._gpuTexture.size = this._size; + if (!this._gpuTexture.isSwapchainTexture) { + WebGL2CmdFuncResizeTexture(WebGL2DeviceManager.instance, this._gpuTexture); + WebGL2DeviceManager.instance.memoryStatus.textureSize -= oldSize; + WebGL2DeviceManager.instance.memoryStatus.textureSize += this._size; + } + } + }; + _proto.initAsSwapchainTexture = function initAsSwapchainTexture(info) { + var texInfo = new TextureInfo(); + texInfo.format = info.format; + texInfo.usage = FormatInfos[info.format].hasDepth ? TextureUsageBit.DEPTH_STENCIL_ATTACHMENT : TextureUsageBit.COLOR_ATTACHMENT; + texInfo.width = info.width; + texInfo.height = info.height; + this.initialize(texInfo, true); + }; + _createClass(WebGL2Texture, [{ + key: "gpuTexture", + get: function get() { + return this._gpuTexture; + } + }, { + key: "gpuTextureView", + get: function get() { + return this._gpuTextureView; + } + }]); + return WebGL2Texture; + }(Texture); + + var eventWebGLContextLost = 'webglcontextlost'; + function initStates(gl) { + gl.activeTexture(gl.TEXTURE0); + gl.pixelStorei(gl.PACK_ALIGNMENT, 1); + gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1); + gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + gl.enable(gl.SCISSOR_TEST); + gl.enable(gl.CULL_FACE); + gl.cullFace(gl.BACK); + gl.frontFace(gl.CCW); + gl.polygonOffset(0.0, 0.0); + gl.enable(gl.DEPTH_TEST); + gl.depthMask(true); + gl.depthFunc(gl.LESS); + gl.stencilFuncSeparate(gl.FRONT, gl.ALWAYS, 1, 0xffff); + gl.stencilOpSeparate(gl.FRONT, gl.KEEP, gl.KEEP, gl.KEEP); + gl.stencilMaskSeparate(gl.FRONT, 0xffff); + gl.stencilFuncSeparate(gl.BACK, gl.ALWAYS, 1, 0xffff); + gl.stencilOpSeparate(gl.BACK, gl.KEEP, gl.KEEP, gl.KEEP); + gl.stencilMaskSeparate(gl.BACK, 0xffff); + gl.disable(gl.STENCIL_TEST); + gl.disable(gl.SAMPLE_ALPHA_TO_COVERAGE); + gl.disable(gl.BLEND); + gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD); + gl.blendFuncSeparate(gl.ONE, gl.ZERO, gl.ONE, gl.ZERO); + gl.colorMask(true, true, true, true); + gl.blendColor(0.0, 0.0, 0.0, 0.0); + } + function getExtension(gl, ext) { + var prefixes = ['', 'WEBKIT_', 'MOZ_']; + for (var i = 0; i < prefixes.length; ++i) { + var _ext = gl.getExtension(prefixes[i] + ext); + if (_ext) { + return _ext; + } + } + return null; + } + function getExtensions(gl) { + var res = { + EXT_texture_filter_anisotropic: getExtension(gl, 'EXT_texture_filter_anisotropic'), + EXT_color_buffer_half_float: getExtension(gl, 'EXT_color_buffer_half_float'), + EXT_color_buffer_float: getExtension(gl, 'EXT_color_buffer_float'), + WEBGL_compressed_texture_etc1: getExtension(gl, 'WEBGL_compressed_texture_etc1'), + WEBGL_compressed_texture_etc: getExtension(gl, 'WEBGL_compressed_texture_etc'), + WEBGL_compressed_texture_pvrtc: getExtension(gl, 'WEBGL_compressed_texture_pvrtc'), + WEBGL_compressed_texture_astc: getExtension(gl, 'WEBGL_compressed_texture_astc'), + WEBGL_compressed_texture_s3tc: getExtension(gl, 'WEBGL_compressed_texture_s3tc'), + WEBGL_compressed_texture_s3tc_srgb: getExtension(gl, 'WEBGL_compressed_texture_s3tc_srgb'), + WEBGL_debug_shaders: getExtension(gl, 'WEBGL_debug_shaders'), + WEBGL_lose_context: getExtension(gl, 'WEBGL_lose_context'), + WEBGL_debug_renderer_info: getExtension(gl, 'WEBGL_debug_renderer_info'), + OES_texture_half_float_linear: getExtension(gl, 'OES_texture_half_float_linear'), + OES_texture_float_linear: getExtension(gl, 'OES_texture_float_linear'), + WEBGL_multi_draw: null, + useVAO: true + }; + { + if (systemInfo.os !== OS.ANDROID && systemInfo.os !== OS.IOS) { + res.WEBGL_multi_draw = getExtension(gl, 'WEBGL_multi_draw'); + } + } + return res; + } + function getContext(canvas) { + var context = null; + try { + var _globalThis$__globalX; + if ((_globalThis$__globalX = globalThis.__globalXR) !== null && _globalThis$__globalX !== void 0 && _globalThis$__globalX.webxrCompatible) { + var glAttribs = { + alpha: macro.ENABLE_TRANSPARENT_CANVAS, + antialias: EDITOR || macro.ENABLE_WEBGL_ANTIALIAS, + depth: true, + stencil: true, + premultipliedAlpha: false, + preserveDrawingBuffer: false, + powerPreference: 'default', + failIfMajorPerformanceCaveat: false, + xrCompatible: true + }; + context = canvas.getContext('webgl2', glAttribs); + return context; + } + var webGLCtxAttribs = { + alpha: macro.ENABLE_TRANSPARENT_CANVAS, + antialias: EDITOR || macro.ENABLE_WEBGL_ANTIALIAS, + depth: true, + stencil: true, + premultipliedAlpha: false, + preserveDrawingBuffer: false, + powerPreference: 'default', + failIfMajorPerformanceCaveat: false + }; + context = canvas.getContext('webgl2', webGLCtxAttribs); + } catch (err) { + return null; + } + return context; + } + var WebGL2Swapchain = function (_Swapchain) { + _inheritsLoose(WebGL2Swapchain, _Swapchain); + function WebGL2Swapchain() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Swapchain.call.apply(_Swapchain, [this].concat(args)) || this; + _this.stateCache = new WebGL2StateCache(); + _this.nullTex2D = null; + _this.nullTexCube = null; + _this._canvas = null; + _this._webGL2ContextLostHandler = null; + _this._extensions = null; + _this._blitManager = null; + return _this; + } + var _proto = WebGL2Swapchain.prototype; + _proto.initialize = function initialize(info) { + this._canvas = info.windowHandle; + this._webGL2ContextLostHandler = this._onWebGLContextLost.bind(this); + this._canvas.addEventListener(eventWebGLContextLost, this._onWebGLContextLost); + var gl = WebGL2DeviceManager.instance.gl; + this.stateCache.initialize(WebGL2DeviceManager.instance.capabilities.maxTextureUnits, WebGL2DeviceManager.instance.capabilities.maxUniformBufferBindings, WebGL2DeviceManager.instance.capabilities.maxVertexAttributes); + this._extensions = getExtensions(gl); + initStates(gl); + var colorFmt = Format.RGBA8; + var depthStencilFmt = Format.DEPTH_STENCIL; + var depthBits = gl.getParameter(gl.DEPTH_BITS); + var stencilBits = gl.getParameter(gl.STENCIL_BITS); + if (depthBits && stencilBits) depthStencilFmt = Format.DEPTH_STENCIL;else if (depthBits) depthStencilFmt = Format.DEPTH; + this._colorTexture = new WebGL2Texture(); + this._colorTexture.initAsSwapchainTexture({ + swapchain: this, + format: colorFmt, + width: info.width, + height: info.height + }); + this._depthStencilTexture = new WebGL2Texture(); + this._depthStencilTexture.initAsSwapchainTexture({ + swapchain: this, + format: depthStencilFmt, + width: info.width, + height: info.height + }); + this.nullTex2D = WebGL2DeviceManager.instance.createTexture(new TextureInfo(TextureType.TEX2D, TextureUsageBit.SAMPLED, Format.RGBA8, 2, 2, TextureFlagBit.NONE)); + this.nullTexCube = WebGL2DeviceManager.instance.createTexture(new TextureInfo(TextureType.CUBE, TextureUsageBit.SAMPLED, Format.RGBA8, 2, 2, TextureFlagBit.NONE, 6)); + var nullTexRegion = new BufferTextureCopy(); + nullTexRegion.texExtent.width = 2; + nullTexRegion.texExtent.height = 2; + var nullTexBuff = new Uint8Array(this.nullTex2D.size); + nullTexBuff.fill(0); + WebGL2DeviceManager.instance.copyBuffersToTexture([nullTexBuff], this.nullTex2D, [nullTexRegion]); + nullTexRegion.texSubres.layerCount = 6; + WebGL2DeviceManager.instance.copyBuffersToTexture([nullTexBuff, nullTexBuff, nullTexBuff, nullTexBuff, nullTexBuff, nullTexBuff], this.nullTexCube, [nullTexRegion]); + this._blitManager = new IWebGL2BlitManager(); + }; + _proto.destroy = function destroy() { + if (this._canvas && this._webGL2ContextLostHandler) { + this._canvas.removeEventListener(eventWebGLContextLost, this._webGL2ContextLostHandler); + this._webGL2ContextLostHandler = null; + } + if (this.nullTex2D) { + this.nullTex2D.destroy(); + this.nullTex2D = null; + } + if (this.nullTexCube) { + this.nullTexCube.destroy(); + this.nullTexCube = null; + } + if (this._blitManager) { + this._blitManager.destroy(); + this._blitManager = null; + } + this._extensions = null; + this._canvas = null; + }; + _proto.resize = function resize(width, height, surfaceTransform) { + if (this._colorTexture.width !== width || this._colorTexture.height !== height) { + debug("Resizing swapchain: " + width + "x" + height); + this._canvas.width = width; + this._canvas.height = height; + this._colorTexture.resize(width, height); + this._depthStencilTexture.resize(width, height); + } + }; + _proto._onWebGLContextLost = function _onWebGLContextLost(event) { + warnID(11000); + warn(event); + }; + _createClass(WebGL2Swapchain, [{ + key: "extensions", + get: function get() { + return this._extensions; + } + }, { + key: "blitManager", + get: function get() { + return this._blitManager; + } + }]); + return WebGL2Swapchain; + }(Swapchain); + + var WebGL2Device = exports('ex', function (_Device) { + _inheritsLoose(WebGL2Device, _Device); + function WebGL2Device() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Device.call.apply(_Device, [this].concat(args)) || this; + _this._swapchain = null; + _this._context = null; + _this._bindingMappings = null; + _this._textureExclusive = new Array(Format.COUNT); + return _this; + } + var _proto = WebGL2Device.prototype; + _proto.initialize = function initialize(info) { + WebGL2DeviceManager.setInstance(this); + this._gfxAPI = API.WEBGL2; + var mapping = this._bindingMappingInfo = info.bindingMappingInfo; + var blockOffsets = []; + var samplerTextureOffsets = []; + var firstSet = mapping.setIndices[0]; + blockOffsets[firstSet] = 0; + samplerTextureOffsets[firstSet] = 0; + for (var i = 1; i < mapping.setIndices.length; ++i) { + var curSet = mapping.setIndices[i]; + var prevSet = mapping.setIndices[i - 1]; + blockOffsets[curSet] = mapping.maxBlockCounts[prevSet] + blockOffsets[prevSet]; + samplerTextureOffsets[curSet] = mapping.maxSamplerTextureCounts[prevSet] + samplerTextureOffsets[prevSet]; + } + for (var _i = 0; _i < mapping.setIndices.length; ++_i) { + var _curSet = mapping.setIndices[_i]; + samplerTextureOffsets[_curSet] -= mapping.maxBlockCounts[_curSet]; + } + this._bindingMappings = { + blockOffsets: blockOffsets, + samplerTextureOffsets: samplerTextureOffsets, + flexibleSet: mapping.setIndices[mapping.setIndices.length - 1] + }; + var gl = this._context = getContext(Device.canvas); + if (!gl) { + console.error('This device does not support WebGL2.'); + return false; + } + this._queue = this.createQueue(new QueueInfo(QueueType.GRAPHICS)); + this._cmdBuff = this.createCommandBuffer(new CommandBufferInfo(this._queue)); + this._caps.maxVertexAttributes = gl.getParameter(gl.MAX_VERTEX_ATTRIBS); + this._caps.maxVertexUniformVectors = gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS); + if (systemInfo.os === OS.IOS) { + var maxVertexUniformVectors = this._caps.maxVertexUniformVectors; + if (sys.browserType === BrowserType.WECHAT) { + this._caps.maxVertexUniformVectors = maxVertexUniformVectors < 256 ? maxVertexUniformVectors : 256; + } else if (sys.browserType === BrowserType.SAFARI) { + this._caps.maxVertexUniformVectors = maxVertexUniformVectors < 512 ? maxVertexUniformVectors : 512; + } + } + this._caps.maxFragmentUniformVectors = gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS); + this._caps.maxTextureUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS); + this._caps.maxVertexTextureUnits = gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS); + this._caps.maxUniformBufferBindings = gl.getParameter(gl.MAX_UNIFORM_BUFFER_BINDINGS); + this._caps.maxUniformBlockSize = gl.getParameter(gl.MAX_UNIFORM_BLOCK_SIZE); + this._caps.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE); + this._caps.maxCubeMapTextureSize = gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE); + this._caps.maxArrayTextureLayers = gl.getParameter(gl.MAX_ARRAY_TEXTURE_LAYERS); + this._caps.max3DTextureSize = gl.getParameter(gl.MAX_3D_TEXTURE_SIZE); + this._caps.uboOffsetAlignment = gl.getParameter(gl.UNIFORM_BUFFER_OFFSET_ALIGNMENT); + var extensions = gl.getSupportedExtensions(); + var extStr = ''; + if (extensions) { + for (var _iterator = _createForOfIteratorHelperLoose(extensions), _step; !(_step = _iterator()).done;) { + var ext = _step.value; + extStr += ext + " "; + } + } + var exts = getExtensions(gl); + if (exts.WEBGL_debug_renderer_info) { + this._renderer = gl.getParameter(exts.WEBGL_debug_renderer_info.UNMASKED_RENDERER_WEBGL); + this._vendor = gl.getParameter(exts.WEBGL_debug_renderer_info.UNMASKED_VENDOR_WEBGL); + } else { + this._renderer = gl.getParameter(gl.RENDERER); + this._vendor = gl.getParameter(gl.VENDOR); + } + var version = gl.getParameter(gl.VERSION); + this._features.fill(false); + this.initFormatFeatures(exts); + this._features[Feature.ELEMENT_INDEX_UINT] = true; + this._features[Feature.INSTANCED_ARRAYS] = true; + this._features[Feature.MULTIPLE_RENDER_TARGETS] = true; + this._features[Feature.BLEND_MINMAX] = true; + var compressedFormat = ''; + if (this.getFormatFeatures(Format.ETC_RGB8)) { + compressedFormat += 'etc1 '; + } + if (this.getFormatFeatures(Format.ETC2_RGB8)) { + compressedFormat += 'etc2 '; + } + if (this.getFormatFeatures(Format.BC1)) { + compressedFormat += 'dxt '; + } + if (this.getFormatFeatures(Format.PVRTC_RGB2)) { + compressedFormat += 'pvrtc '; + } + if (this.getFormatFeatures(Format.ASTC_RGBA_4X4)) { + compressedFormat += 'astc '; + } + debug('WebGL2 device initialized.'); + debug("RENDERER: " + this._renderer); + debug("VENDOR: " + this._vendor); + debug("VERSION: " + version); + debug("COMPRESSED_FORMAT: " + compressedFormat); + debug("EXTENSIONS: " + extStr); + return true; + }; + _proto.destroy = function destroy() { + if (this._queue) { + this._queue.destroy(); + this._queue = null; + } + if (this._cmdBuff) { + this._cmdBuff.destroy(); + this._cmdBuff = null; + } + var it = this._samplers.values(); + var res = it.next(); + while (!res.done) { + res.value.destroy(); + res = it.next(); + } + this._swapchain = null; + }; + _proto.flushCommands = function flushCommands(cmdBuffs) {}; + _proto.acquire = function acquire(swapchains) {}; + _proto.present = function present() { + var queue = this._queue; + this._numDrawCalls = queue.numDrawCalls; + this._numInstances = queue.numInstances; + this._numTris = queue.numTris; + queue.clear(); + }; + _proto.initFormatFeatures = function initFormatFeatures(exts) { + this._formatFeatures.fill(FormatFeatureBit.NONE); + this._textureExclusive.fill(true); + var tempFeature = FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.SAMPLED_TEXTURE | FormatFeatureBit.STORAGE_TEXTURE | FormatFeatureBit.LINEAR_FILTER | FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.R8] = tempFeature; + this._formatFeatures[Format.RG8] = tempFeature; + this._formatFeatures[Format.RGB8] = tempFeature; + this._formatFeatures[Format.RGBA8] = tempFeature; + tempFeature = FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.SAMPLED_TEXTURE | FormatFeatureBit.STORAGE_TEXTURE | FormatFeatureBit.LINEAR_FILTER; + this._formatFeatures[Format.R8SN] = tempFeature; + this._formatFeatures[Format.RG8SN] = tempFeature; + this._formatFeatures[Format.RGB8SN] = tempFeature; + this._formatFeatures[Format.RGBA8SN] = tempFeature; + this._formatFeatures[Format.R5G6B5] = tempFeature; + this._formatFeatures[Format.RGBA4] = tempFeature; + this._formatFeatures[Format.RGB5A1] = tempFeature; + this._formatFeatures[Format.RGB10A2] = tempFeature; + this._formatFeatures[Format.SRGB8] = tempFeature; + this._formatFeatures[Format.SRGB8_A8] = tempFeature; + this._formatFeatures[Format.R11G11B10F] = tempFeature; + this._formatFeatures[Format.RGB9E5] = tempFeature; + this._formatFeatures[Format.DEPTH] = tempFeature; + this._formatFeatures[Format.DEPTH_STENCIL] = tempFeature; + this._formatFeatures[Format.RGB10A2UI] = FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.STORAGE_TEXTURE | FormatFeatureBit.SAMPLED_TEXTURE | FormatFeatureBit.LINEAR_FILTER; + tempFeature = FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.SAMPLED_TEXTURE | FormatFeatureBit.STORAGE_TEXTURE | FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.R16F] = tempFeature; + this._formatFeatures[Format.RG16F] = tempFeature; + this._formatFeatures[Format.RGB16F] = tempFeature; + this._formatFeatures[Format.RGBA16F] = tempFeature; + tempFeature = FormatFeatureBit.STORAGE_TEXTURE | FormatFeatureBit.SAMPLED_TEXTURE | FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.R32F] = tempFeature; + this._formatFeatures[Format.RG32F] = tempFeature; + this._formatFeatures[Format.RGB32F] = tempFeature; + this._formatFeatures[Format.RGBA32F] = tempFeature; + this._formatFeatures[Format.RGB10A2UI] = FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.STORAGE_TEXTURE | FormatFeatureBit.SAMPLED_TEXTURE | FormatFeatureBit.LINEAR_FILTER; + tempFeature = FormatFeatureBit.RENDER_TARGET | FormatFeatureBit.STORAGE_TEXTURE | FormatFeatureBit.SAMPLED_TEXTURE | FormatFeatureBit.LINEAR_FILTER | FormatFeatureBit.VERTEX_ATTRIBUTE; + this._formatFeatures[Format.R8I] = tempFeature; + this._formatFeatures[Format.R8UI] = tempFeature; + this._formatFeatures[Format.R16I] = tempFeature; + this._formatFeatures[Format.R16UI] = tempFeature; + this._formatFeatures[Format.R32I] = tempFeature; + this._formatFeatures[Format.R32UI] = tempFeature; + this._formatFeatures[Format.RG8I] = tempFeature; + this._formatFeatures[Format.RG8UI] = tempFeature; + this._formatFeatures[Format.RG16I] = tempFeature; + this._formatFeatures[Format.RG16UI] = tempFeature; + this._formatFeatures[Format.RG32I] = tempFeature; + this._formatFeatures[Format.RG32UI] = tempFeature; + this._formatFeatures[Format.RGB8I] = tempFeature; + this._formatFeatures[Format.RGB8UI] = tempFeature; + this._formatFeatures[Format.RGB16I] = tempFeature; + this._formatFeatures[Format.RGB16UI] = tempFeature; + this._formatFeatures[Format.RGB32I] = tempFeature; + this._formatFeatures[Format.RGB32UI] = tempFeature; + this._formatFeatures[Format.RGBA8I] = tempFeature; + this._formatFeatures[Format.RGBA8UI] = tempFeature; + this._formatFeatures[Format.RGBA16I] = tempFeature; + this._formatFeatures[Format.RGBA16UI] = tempFeature; + this._formatFeatures[Format.RGBA32I] = tempFeature; + this._formatFeatures[Format.RGBA32UI] = tempFeature; + this._textureExclusive[Format.R8] = false; + this._textureExclusive[Format.RG8] = false; + this._textureExclusive[Format.RGB8] = false; + this._textureExclusive[Format.R5G6B5] = false; + this._textureExclusive[Format.RGBA4] = false; + this._textureExclusive[Format.RGB5A1] = false; + this._textureExclusive[Format.RGBA8] = false; + this._textureExclusive[Format.RGB10A2] = false; + this._textureExclusive[Format.RGB10A2UI] = false; + this._textureExclusive[Format.SRGB8_A8] = false; + this._textureExclusive[Format.R8I] = false; + this._textureExclusive[Format.R8UI] = false; + this._textureExclusive[Format.R16I] = false; + this._textureExclusive[Format.R16UI] = false; + this._textureExclusive[Format.R32I] = false; + this._textureExclusive[Format.R32UI] = false; + this._textureExclusive[Format.RG8I] = false; + this._textureExclusive[Format.RG8UI] = false; + this._textureExclusive[Format.RG16I] = false; + this._textureExclusive[Format.RG16UI] = false; + this._textureExclusive[Format.RG32I] = false; + this._textureExclusive[Format.RG32UI] = false; + this._textureExclusive[Format.RGBA8I] = false; + this._textureExclusive[Format.RGBA8UI] = false; + this._textureExclusive[Format.RGBA16I] = false; + this._textureExclusive[Format.RGBA16UI] = false; + this._textureExclusive[Format.RGBA32I] = false; + this._textureExclusive[Format.RGBA32UI] = false; + this._textureExclusive[Format.DEPTH] = false; + this._textureExclusive[Format.DEPTH_STENCIL] = false; + if (exts.EXT_color_buffer_float) { + this._formatFeatures[Format.R32F] |= FormatFeatureBit.RENDER_TARGET; + this._formatFeatures[Format.RG32F] |= FormatFeatureBit.RENDER_TARGET; + this._formatFeatures[Format.RGBA32F] |= FormatFeatureBit.RENDER_TARGET; + this._textureExclusive[Format.R32F] = false; + this._textureExclusive[Format.RG32F] = false; + this._textureExclusive[Format.RGBA32F] = false; + } + if (exts.EXT_color_buffer_half_float) { + this._textureExclusive[Format.R16F] = false; + this._textureExclusive[Format.RG16F] = false; + this._textureExclusive[Format.RGBA16F] = false; + } + if (exts.OES_texture_float_linear) { + this._formatFeatures[Format.RGB32F] |= FormatFeatureBit.LINEAR_FILTER; + this._formatFeatures[Format.RGBA32F] |= FormatFeatureBit.LINEAR_FILTER; + this._formatFeatures[Format.R32F] |= FormatFeatureBit.LINEAR_FILTER; + this._formatFeatures[Format.RG32F] |= FormatFeatureBit.LINEAR_FILTER; + } + if (exts.OES_texture_half_float_linear) { + this._formatFeatures[Format.RGB16F] |= FormatFeatureBit.LINEAR_FILTER; + this._formatFeatures[Format.RGBA16F] |= FormatFeatureBit.LINEAR_FILTER; + this._formatFeatures[Format.R16F] |= FormatFeatureBit.LINEAR_FILTER; + this._formatFeatures[Format.RG16F] |= FormatFeatureBit.LINEAR_FILTER; + } + var compressedFeature = FormatFeatureBit.SAMPLED_TEXTURE | FormatFeatureBit.LINEAR_FILTER; + if (exts.WEBGL_compressed_texture_etc1) { + this._formatFeatures[Format.ETC_RGB8] = compressedFeature; + } + if (exts.WEBGL_compressed_texture_etc) { + this._formatFeatures[Format.ETC2_RGB8] = compressedFeature; + this._formatFeatures[Format.ETC2_RGBA8] = compressedFeature; + this._formatFeatures[Format.ETC2_SRGB8] = compressedFeature; + this._formatFeatures[Format.ETC2_SRGB8_A8] = compressedFeature; + this._formatFeatures[Format.ETC2_RGB8_A1] = compressedFeature; + this._formatFeatures[Format.ETC2_SRGB8_A1] = compressedFeature; + } + if (exts.WEBGL_compressed_texture_s3tc) { + this._formatFeatures[Format.BC1] = compressedFeature; + this._formatFeatures[Format.BC1_ALPHA] = compressedFeature; + this._formatFeatures[Format.BC1_SRGB] = compressedFeature; + this._formatFeatures[Format.BC1_SRGB_ALPHA] = compressedFeature; + this._formatFeatures[Format.BC2] = compressedFeature; + this._formatFeatures[Format.BC2_SRGB] = compressedFeature; + this._formatFeatures[Format.BC3] = compressedFeature; + this._formatFeatures[Format.BC3_SRGB] = compressedFeature; + } + if (exts.WEBGL_compressed_texture_pvrtc) { + this._formatFeatures[Format.PVRTC_RGB2] = compressedFeature; + this._formatFeatures[Format.PVRTC_RGBA2] = compressedFeature; + this._formatFeatures[Format.PVRTC_RGB4] = compressedFeature; + this._formatFeatures[Format.PVRTC_RGBA4] = compressedFeature; + } + if (exts.WEBGL_compressed_texture_astc) { + this._formatFeatures[Format.ASTC_RGBA_4X4] = compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_5X4] = compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_5X5] = compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_6X5] = compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_6X6] = compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_8X5] = compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_8X6] = compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_8X8] = compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_10X5] = compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_10X6] = compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_10X8] = compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_10X10] = compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_12X10] = compressedFeature; + this._formatFeatures[Format.ASTC_RGBA_12X12] = compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_4X4] = compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_5X4] = compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_5X5] = compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_6X5] = compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_6X6] = compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_8X5] = compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_8X6] = compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_8X8] = compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_10X5] = compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_10X6] = compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_10X8] = compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_10X10] = compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_12X10] = compressedFeature; + this._formatFeatures[Format.ASTC_SRGBA_12X12] = compressedFeature; + } + }; + _proto.createCommandBuffer = function createCommandBuffer(info) { + var Ctor = info.type === CommandBufferType.PRIMARY ? WebGL2PrimaryCommandBuffer : WebGL2CommandBuffer; + var cmdBuff = new Ctor(); + cmdBuff.initialize(info); + return cmdBuff; + }; + _proto.createSwapchain = function createSwapchain(info) { + var swapchain = new WebGL2Swapchain(); + this._swapchain = swapchain; + swapchain.initialize(info); + return swapchain; + }; + _proto.createBuffer = function createBuffer(info) { + var buffer = new WebGL2Buffer(); + buffer.initialize(info); + return buffer; + }; + _proto.createTexture = function createTexture(info) { + var texture = new WebGL2Texture(); + texture.initialize(info); + return texture; + }; + _proto.createDescriptorSet = function createDescriptorSet(info) { + var descriptorSet = new WebGL2DescriptorSet(); + descriptorSet.initialize(info); + return descriptorSet; + }; + _proto.createShader = function createShader(info) { + var shader = new WebGL2Shader(); + shader.initialize(info); + return shader; + }; + _proto.createInputAssembler = function createInputAssembler(info) { + var inputAssembler = new WebGL2InputAssembler(); + inputAssembler.initialize(info); + return inputAssembler; + }; + _proto.createRenderPass = function createRenderPass(info) { + var renderPass = new WebGL2RenderPass(); + renderPass.initialize(info); + return renderPass; + }; + _proto.createFramebuffer = function createFramebuffer(info) { + var framebuffer = new WebGL2Framebuffer(); + framebuffer.initialize(info); + return framebuffer; + }; + _proto.createDescriptorSetLayout = function createDescriptorSetLayout(info) { + var descriptorSetLayout = new WebGL2DescriptorSetLayout(); + descriptorSetLayout.initialize(info); + return descriptorSetLayout; + }; + _proto.createPipelineLayout = function createPipelineLayout(info) { + var pipelineLayout = new WebGL2PipelineLayout(); + pipelineLayout.initialize(info); + return pipelineLayout; + }; + _proto.createPipelineState = function createPipelineState(info) { + var pipelineState = new WebGL2PipelineState(); + pipelineState.initialize(info); + return pipelineState; + }; + _proto.createQueue = function createQueue(info) { + var queue = new WebGL2Queue(); + queue.initialize(info); + return queue; + }; + _proto.getSampler = function getSampler(info) { + var hash = Sampler.computeHash(info); + if (!this._samplers.has(hash)) { + this._samplers.set(hash, new WebGL2Sampler(info, hash)); + } + return this._samplers.get(hash); + }; + _proto.getSwapchains = function getSwapchains() { + return [this._swapchain]; + }; + _proto.getGeneralBarrier = function getGeneralBarrier(info) { + var hash = GeneralBarrier.computeHash(info); + if (!this._generalBarrierss.has(hash)) { + this._generalBarrierss.set(hash, new GeneralBarrier(info, hash)); + } + return this._generalBarrierss.get(hash); + }; + _proto.getTextureBarrier = function getTextureBarrier(info) { + var hash = TextureBarrier.computeHash(info); + if (!this._textureBarriers.has(hash)) { + this._textureBarriers.set(hash, new TextureBarrier(info, hash)); + } + return this._textureBarriers.get(hash); + }; + _proto.getBufferBarrier = function getBufferBarrier(info) { + var hash = BufferBarrier.computeHash(info); + if (!this._bufferBarriers.has(hash)) { + this._bufferBarriers.set(hash, new BufferBarrier(info, hash)); + } + return this._bufferBarriers.get(hash); + }; + _proto.copyBuffersToTexture = function copyBuffersToTexture(buffers, texture, regions) { + WebGL2CmdFuncCopyBuffersToTexture(this, buffers, texture.gpuTexture, regions); + }; + _proto.copyTextureToBuffers = function copyTextureToBuffers(texture, buffers, regions) { + WebGL2CmdFuncCopyTextureToBuffers(this, texture.gpuTexture, buffers, regions); + }; + _proto.copyTexImagesToTexture = function copyTexImagesToTexture(texImages, texture, regions) { + WebGL2CmdFuncCopyTexImagesToTexture(this, texImages, texture.gpuTexture, regions); + }; + _createClass(WebGL2Device, [{ + key: "gl", + get: function get() { + return this._context; + } + }, { + key: "extensions", + get: function get() { + return this._swapchain.extensions; + } + }, { + key: "stateCache", + get: function get() { + return this._swapchain.stateCache; + } + }, { + key: "nullTex2D", + get: function get() { + return this._swapchain.nullTex2D; + } + }, { + key: "nullTexCube", + get: function get() { + return this._swapchain.nullTexCube; + } + }, { + key: "textureExclusive", + get: function get() { + return this._textureExclusive; + } + }, { + key: "bindingMappings", + get: function get() { + return this._bindingMappings; + } + }, { + key: "blitManager", + get: function get() { + return this._swapchain.blitManager; + } + }]); + return WebGL2Device; + }(Device)); + + legacyCC.WebGL2Device = WebGL2Device; + + function lineLine(a1, a2, b1, b2) { + var ua_t = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x); + var ub_t = (a2.x - a1.x) * (a1.y - b1.y) - (a2.y - a1.y) * (a1.x - b1.x); + var u_b = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y); + if (u_b !== 0) { + var ua = ua_t / u_b; + var ub = ub_t / u_b; + if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) { + return true; + } + } + return false; + } + var tempR1 = new Vec2(); + var tempR2 = new Vec2(); + var tempR3 = new Vec2(); + var tempR4 = new Vec2(); + function lineRect(a1, a2, b) { + var r0 = tempR1.set(b.x, b.y); + var r1 = tempR2.set(b.x, b.yMax); + var r2 = tempR3.set(b.xMax, b.yMax); + var r3 = tempR4.set(b.xMax, b.y); + if (lineLine(a1, a2, r0, r1)) return true; + if (lineLine(a1, a2, r1, r2)) return true; + if (lineLine(a1, a2, r2, r3)) return true; + if (lineLine(a1, a2, r3, r0)) return true; + return false; + } + function linePolygon(a1, a2, b) { + var length = b.length; + for (var i = 0; i < length; ++i) { + var b1 = b[i]; + var b2 = b[(i + 1) % length]; + if (lineLine(a1, a2, b1, b2)) return true; + } + return false; + } + function rectRect(a, b) { + var a_min_x = a.x; + var a_min_y = a.y; + var a_max_x = a.x + a.width; + var a_max_y = a.y + a.height; + var b_min_x = b.x; + var b_min_y = b.y; + var b_max_x = b.x + b.width; + var b_max_y = b.y + b.height; + return a_min_x <= b_max_x && a_max_x >= b_min_x && a_min_y <= b_max_y && a_max_y >= b_min_y; + } + function rectPolygon(a, b) { + var r0 = tempR1.set(a.x, a.y); + var r1 = tempR2.set(a.x, a.yMax); + var r2 = tempR3.set(a.xMax, a.yMax); + var r3 = tempR4.set(a.xMax, a.y); + if (linePolygon(r0, r1, b)) return true; + if (linePolygon(r1, r2, b)) return true; + if (linePolygon(r2, r3, b)) return true; + if (linePolygon(r3, r0, b)) return true; + for (var i = 0, l = b.length; i < l; ++i) { + if (a.contains(b[i])) return true; + } + if (pointInPolygon(r0, b)) return true; + if (pointInPolygon(r1, b)) return true; + if (pointInPolygon(r2, b)) return true; + if (pointInPolygon(r3, b)) return true; + return false; + } + function polygonPolygon(a, b) { + var i; + var l; + for (i = 0, l = a.length; i < l; ++i) { + var a1 = a[i]; + var a2 = a[(i + 1) % l]; + if (linePolygon(a1, a2, b)) return true; + } + for (i = 0, l = b.length; i < l; ++i) { + if (pointInPolygon(b[i], a)) return true; + } + for (i = 0, l = a.length; i < l; ++i) { + if (pointInPolygon(a[i], b)) return true; + } + return false; + } + function circleCircle(c1p, c1r, c2p, c2r) { + var distance = Vec2.distance(c1p, c2p); + return distance < c1r + c2r; + } + function polygonCircle(polygon, cp, cr) { + var position = cp; + if (pointInPolygon(position, polygon)) { + return true; + } + for (var i = 0, l = polygon.length; i < l; i++) { + var start = i === 0 ? polygon[polygon.length - 1] : polygon[i - 1]; + var end = polygon[i]; + if (pointLineDistance(position, start, end, true) < cr) { + return true; + } + } + return false; + } + function rectCircle(rect, cp, cr) { + var cx = cp.x; + var cy = cp.y; + var rx = rect.x; + var ry = rect.y; + var rw = rect.width; + var rh = rect.height; + var testX = cx; + var testY = cy; + if (cx < rx) testX = rx;else if (cx > rx + rw) testX = rx + rw; + if (cy < ry) testY = ry;else if (cy > ry + rh) testY = ry + rh; + var distX = cx - testX; + var distY = cy - testY; + var distance = Math.sqrt(distX * distX + distY * distY); + if (distance <= cr) { + return true; + } + return false; + } + function pointInPolygon(point, polygon) { + var inside = false; + var x = point.x; + var y = point.y; + var length = polygon.length; + for (var i = 0, j = length - 1; i < length; j = i++) { + var xi = polygon[i].x; + var yi = polygon[i].y; + var xj = polygon[j].x; + var yj = polygon[j].y; + var intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi; + if (intersect) inside = !inside; + } + return inside; + } + function pointLineDistance(point, start, end, isSegment) { + var dx = end.x - start.x; + var dy = end.y - start.y; + var d = dx * dx + dy * dy; + var t = ((point.x - start.x) * dx + (point.y - start.y) * dy) / d; + var p; + if (!isSegment) { + p = tempR1.set(start.x + t * dx, start.y + t * dy); + } else if (d) { + if (t < 0) p = start;else if (t > 1) p = end;else p = tempR1.set(start.x + t * dx, start.y + t * dy); + } else { + p = start; + } + dx = point.x - p.x; + dy = point.y - p.y; + return Math.sqrt(dx * dx + dy * dy); + } + var Intersection2D = exports('ey', function Intersection2D() {}); + Intersection2D.lineLine = lineLine; + Intersection2D.lineRect = lineRect; + Intersection2D.linePolygon = linePolygon; + Intersection2D.rectRect = rectRect; + Intersection2D.rectPolygon = rectPolygon; + Intersection2D.rectCircle = rectCircle; + Intersection2D.polygonPolygon = polygonPolygon; + Intersection2D.circleCircle = circleCircle; + Intersection2D.polygonCircle = polygonCircle; + Intersection2D.pointInPolygon = pointInPolygon; + Intersection2D.pointLineDistance = pointLineDistance; + + var DURATION_INFINITY = -1; + var START_SIZE_EQUAL_TO_END_SIZE = -1; + var START_RADIUS_EQUAL_TO_END_RADIUS = -1; + var EmitterMode = Enum({ + GRAVITY: 0, + RADIUS: 1 + }); + var PositionType = Enum({ + FREE: 0, + RELATIVE: 1, + GROUPED: 2 + }); + + var ZERO_VEC2 = new Vec2(0, 0); + var _pos = new Vec2(); + var _tpa = new Vec2(); + var _tpb = new Vec2(); + var _tpc = new Vec2(); + var formatBytes = getComponentPerVertex(vfmtPosUvColor); + function getWorldRotation(node) { + var rotation = 0; + var tempNode = node; + while (tempNode) { + rotation += tempNode.eulerAngles.z; + tempNode = tempNode.parent; + } + return rotation; + } + var Particle = function Particle() { + this.pos = new Vec2(0, 0); + this.startPos = new Vec2(0, 0); + this.color = new Color$1(0, 0, 0, 255); + this.deltaColor = { + r: 0, + g: 0, + b: 0, + a: 255 + }; + this.size = 0; + this.deltaSize = 0; + this.rotation = 0; + this.deltaRotation = 0; + this.timeToLive = 0; + this.drawPos = new Vec2(0, 0); + this.aspectRatio = 1; + this.dir = new Vec2(0, 0); + this.radialAccel = 0; + this.tangentialAccel = 0; + this.angle = 0; + this.degreesPerSecond = 0; + this.radius = 0; + this.deltaRadius = 0; + }; + var ParticlePool = function (_js$Pool) { + _inheritsLoose(ParticlePool, _js$Pool); + function ParticlePool() { + return _js$Pool.apply(this, arguments) || this; + } + var _proto = ParticlePool.prototype; + _proto.get = function get() { + return this._get() || new Particle(); + }; + return ParticlePool; + }(Pool$1); + var pool = new ParticlePool(function (par) { + par.pos.set(ZERO_VEC2); + par.startPos.set(ZERO_VEC2); + par.color._val = 0xFF000000; + par.deltaColor.r = par.deltaColor.g = par.deltaColor.b = 0; + par.deltaColor.a = 255; + par.size = 0; + par.deltaSize = 0; + par.rotation = 0; + par.deltaRotation = 0; + par.timeToLive = 0; + par.drawPos.set(ZERO_VEC2); + par.aspectRatio = 1; + par.dir.set(ZERO_VEC2); + par.radialAccel = 0; + par.tangentialAccel = 0; + par.angle = 0; + par.degreesPerSecond = 0; + par.radius = 0; + par.deltaRadius = 0; + }, 1024); + var Simulator = function () { + function Simulator(system) { + this.particles = []; + this.active = false; + this.uvFilled = 0; + this.finished = false; + this.readyToPlay = true; + this.elapsed = 0; + this.emitCounter = 0; + this._worldRotation = 0; + this.sys = system; + this.particles = []; + this.active = false; + this.readyToPlay = true; + this.finished = false; + this.elapsed = 0; + this.emitCounter = 0; + this.uvFilled = 0; + this._worldRotation = 0; + } + var _proto2 = Simulator.prototype; + _proto2.stop = function stop() { + this.active = false; + this.readyToPlay = false; + this.elapsed = this.sys.duration; + this.emitCounter = 0; + }; + _proto2.reset = function reset() { + this.active = true; + this.readyToPlay = true; + this.elapsed = 0; + this.emitCounter = 0; + this.finished = false; + var particles = this.particles; + for (var id = 0; id < particles.length; ++id) pool.put(particles[id]); + particles.length = 0; + }; + _proto2.emitParticle = function emitParticle(pos) { + var psys = this.sys; + var particle = pool.get(); + this.particles.push(particle); + particle.timeToLive = psys.life + psys.lifeVar * (random() - 0.5) * 2; + var timeToLive = particle.timeToLive = Math.max(0, particle.timeToLive); + particle.pos.x = psys.sourcePos.x + psys.posVar.x * (random() - 0.5) * 2; + particle.pos.y = psys.sourcePos.y + psys.posVar.y * (random() - 0.5) * 2; + var sr = 0; + var sg = 0; + var sb = 0; + var sa = 0; + var startColor = psys.startColor; + var startColorVar = psys.startColorVar; + var endColor = psys.endColor; + var endColorVar = psys.endColorVar; + particle.color.r = sr = clampf(startColor.r + startColorVar.r * (random() - 0.5) * 2, 0, 255); + particle.color.g = sg = clampf(startColor.g + startColorVar.g * (random() - 0.5) * 2, 0, 255); + particle.color.b = sb = clampf(startColor.b + startColorVar.b * (random() - 0.5) * 2, 0, 255); + particle.color.a = sa = clampf(startColor.a + startColorVar.a * (random() - 0.5) * 2, 0, 255); + particle.deltaColor.r = (clampf(endColor.r + endColorVar.r * (random() - 0.5) * 2, 0, 255) - sr) / timeToLive; + particle.deltaColor.g = (clampf(endColor.g + endColorVar.g * (random() - 0.5) * 2, 0, 255) - sg) / timeToLive; + particle.deltaColor.b = (clampf(endColor.b + endColorVar.b * (random() - 0.5) * 2, 0, 255) - sb) / timeToLive; + particle.deltaColor.a = (clampf(endColor.a + endColorVar.a * (random() - 0.5) * 2, 0, 255) - sa) / timeToLive; + var startS = psys.startSize + psys.startSizeVar * (random() - 0.5) * 2; + startS = Math.max(0, startS); + particle.size = startS; + if (psys.endSize === START_SIZE_EQUAL_TO_END_SIZE) { + particle.deltaSize = 0; + } else { + var endS = psys.endSize + psys.endSizeVar * (random() - 0.5) * 2; + endS = Math.max(0, endS); + particle.deltaSize = (endS - startS) / timeToLive; + } + var startA = psys.startSpin + psys.startSpinVar * (random() - 0.5) * 2; + var endA = psys.endSpin + psys.endSpinVar * (random() - 0.5) * 2; + particle.rotation = startA; + particle.deltaRotation = (endA - startA) / timeToLive; + particle.startPos.x = pos.x; + particle.startPos.y = pos.y; + particle.aspectRatio = psys.aspectRatio || 1; + var a = degreesToRadians(psys.angle + this._worldRotation + psys.angleVar * (random() - 0.5) * 2); + if (psys.emitterMode === EmitterMode.GRAVITY) { + var s = psys.speed + psys.speedVar * (random() - 0.5) * 2; + particle.dir.x = Math.cos(a); + particle.dir.y = Math.sin(a); + particle.dir.multiplyScalar(s); + particle.radialAccel = psys.radialAccel + psys.radialAccelVar * (random() - 0.5) * 2; + particle.tangentialAccel = psys.tangentialAccel + psys.tangentialAccelVar * (random() - 0.5) * 2; + if (psys.rotationIsDir) { + particle.rotation = -radiansToDegrees(Math.atan2(particle.dir.y, particle.dir.x)); + } + } else { + var startRadius = psys.startRadius + psys.startRadiusVar * (random() - 0.5) * 2; + var endRadius = psys.endRadius + psys.endRadiusVar * (random() - 0.5) * 2; + particle.radius = startRadius; + particle.deltaRadius = psys.endRadius === START_RADIUS_EQUAL_TO_END_RADIUS ? 0 : (endRadius - startRadius) / timeToLive; + particle.angle = a; + particle.degreesPerSecond = degreesToRadians(psys.rotatePerS + psys.rotatePerSVar * (random() - 0.5) * 2); + } + }; + _proto2.updateUVs = function updateUVs(force) { + var renderData = this.renderData; + if (renderData && this.sys._renderSpriteFrame) { + var vbuf = renderData.vData; + var uv = this.sys._renderSpriteFrame.uv; + var start = force ? 0 : this.uvFilled; + var particleCount = this.particles.length; + for (var i = start; i < particleCount; i++) { + var offset = i * formatBytes * 4; + vbuf[offset + 3] = uv[0]; + vbuf[offset + 4] = uv[1]; + vbuf[offset + 12] = uv[2]; + vbuf[offset + 13] = uv[3]; + vbuf[offset + 21] = uv[4]; + vbuf[offset + 22] = uv[5]; + vbuf[offset + 30] = uv[6]; + vbuf[offset + 31] = uv[7]; + } + this.uvFilled = particleCount; + } + }; + _proto2.updateParticleBuffer = function updateParticleBuffer(particle, pos, buffer, offset) { + var vbuf = buffer.vData; + var x = pos.x; + var y = pos.y; + var width = particle.size; + var height = width; + var aspectRatio = particle.aspectRatio; + if (aspectRatio > 1) { + height = width / aspectRatio; + } else { + width = height * aspectRatio; + } + var halfWidth = width / 2; + var halfHeight = height / 2; + if (particle.rotation) { + var x1 = -halfWidth; + var y1 = -halfHeight; + var x2 = halfWidth; + var y2 = halfHeight; + var rad = -degreesToRadians(particle.rotation); + var cr = Math.cos(rad); + var sr = Math.sin(rad); + vbuf[offset] = x1 * cr - y1 * sr + x; + vbuf[offset + 1] = x1 * sr + y1 * cr + y; + vbuf[offset + 2] = 0; + vbuf[offset + 9] = x2 * cr - y1 * sr + x; + vbuf[offset + 10] = x2 * sr + y1 * cr + y; + vbuf[offset + 11] = 0; + vbuf[offset + 18] = x1 * cr - y2 * sr + x; + vbuf[offset + 19] = x1 * sr + y2 * cr + y; + vbuf[offset + 20] = 0; + vbuf[offset + 27] = x2 * cr - y2 * sr + x; + vbuf[offset + 28] = x2 * sr + y2 * cr + y; + vbuf[offset + 29] = 0; + } else { + vbuf[offset] = x - halfWidth; + vbuf[offset + 1] = y - halfHeight; + vbuf[offset + 2] = 0; + vbuf[offset + 9] = x + halfWidth; + vbuf[offset + 10] = y - halfHeight; + vbuf[offset + 11] = 0; + vbuf[offset + 18] = x - halfWidth; + vbuf[offset + 19] = y + halfHeight; + vbuf[offset + 20] = 0; + vbuf[offset + 27] = x + halfWidth; + vbuf[offset + 28] = y + halfHeight; + vbuf[offset + 29] = 0; + } + Color$1.toArray(vbuf, particle.color, offset + 5); + Color$1.toArray(vbuf, particle.color, offset + 14); + Color$1.toArray(vbuf, particle.color, offset + 23); + Color$1.toArray(vbuf, particle.color, offset + 32); + }; + _proto2.step = function step(dt) { + var assembler = this.sys.assembler; + var psys = this.sys; + var node = psys.node; + var particles = this.particles; + dt = dt > assembler.maxParticleDeltaTime ? assembler.maxParticleDeltaTime : dt; + node.updateWorldTransform(); + if (psys.positionType === PositionType.FREE) { + this._worldRotation = getWorldRotation(node); + var m = node.worldMatrix; + _pos.x = m.m12; + _pos.y = m.m13; + } else if (psys.positionType === PositionType.RELATIVE) { + this._worldRotation = node.eulerAngles.z; + _pos.x = node.position.x; + _pos.y = node.position.y; + } else { + this._worldRotation = 0; + } + if (this.active && psys.emissionRate) { + var rate = 1.0 / psys.emissionRate; + if (particles.length < psys.totalParticles) this.emitCounter += dt; + while (particles.length < psys.totalParticles && this.emitCounter > rate) { + this.emitParticle(_pos); + this.emitCounter -= rate; + } + this.elapsed += dt; + if (psys.duration !== -1 && psys.duration < this.elapsed) { + psys.stopSystem(); + } + } + var renderData = this.renderData; + var particleCount = particles.length; + renderData.reset(); + this.requestData(particleCount * 4, particleCount * 6); + if (particleCount > this.uvFilled) { + this.updateUVs(); + } + var particleIdx = 0; + while (particleIdx < particles.length) { + _tpa.x = _tpa.y = _tpb.x = _tpb.y = _tpc.x = _tpc.y = 0; + var particle = particles[particleIdx]; + particle.timeToLive -= dt; + if (particle.timeToLive > 0) { + if (psys.emitterMode === EmitterMode.GRAVITY) { + var tmp = _tpc; + var radial = _tpa; + var tangential = _tpb; + if (particle.pos.x || particle.pos.y) { + radial.set(particle.pos); + radial.normalize(); + } + tangential.set(radial); + radial.multiplyScalar(particle.radialAccel); + var newy = tangential.x; + tangential.x = -tangential.y; + tangential.y = newy; + tangential.multiplyScalar(particle.tangentialAccel); + tmp.set(radial); + tmp.add(tangential); + tmp.add(psys.gravity); + tmp.multiplyScalar(dt); + particle.dir.add(tmp); + tmp.set(particle.dir); + tmp.multiplyScalar(dt); + particle.pos.add(tmp); + } else { + particle.angle += particle.degreesPerSecond * dt; + particle.radius += particle.deltaRadius * dt; + particle.pos.x = -Math.cos(particle.angle) * particle.radius; + particle.pos.y = -Math.sin(particle.angle) * particle.radius; + } + particle.color.r += particle.deltaColor.r * dt; + particle.color.g += particle.deltaColor.g * dt; + particle.color.b += particle.deltaColor.b * dt; + particle.color.a += particle.deltaColor.a * dt; + particle.size += particle.deltaSize * dt; + if (particle.size < 0) { + particle.size = 0; + } + particle.rotation += particle.deltaRotation * dt; + var newPos = _tpa; + newPos.set(particle.pos); + if (psys.positionType !== PositionType.GROUPED) { + newPos.add(particle.startPos); + } + var offset = formatBytes * particleIdx * 4; + this.updateParticleBuffer(particle, newPos, renderData, offset); + ++particleIdx; + } else { + var deadParticle = particles[particleIdx]; + if (particleIdx !== particles.length - 1) { + particles[particleIdx] = particles[particles.length - 1]; + } + pool.put(deadParticle); + particles.length--; + renderData.resize(renderData.vertexCount - 4, renderData.indexCount - 6); + } + } + this.renderData.material = this.sys.getRenderMaterial(0); + this.renderData.frame = this.sys._renderSpriteFrame; + renderData.setRenderDrawInfoAttributes(); + if (particles.length === 0 && !this.active && !this.readyToPlay) { + this.finished = true; + psys._finishedSimulation(); + } + }; + _proto2.requestData = function requestData(vertexCount, indexCount) { + var offset = this.renderData.indexCount; + this.renderData.request(vertexCount, indexCount); + var count = this.renderData.indexCount / 6; + var buffer = this.renderData.iData; + for (var i = offset; i < count; i++) { + var vId = i * 4; + buffer[offset++] = vId; + buffer[offset++] = vId + 1; + buffer[offset++] = vId + 2; + buffer[offset++] = vId + 1; + buffer[offset++] = vId + 3; + buffer[offset++] = vId + 2; + } + }; + _proto2.initDrawInfo = function initDrawInfo() { + var renderData = this.renderData; + renderData.setRenderDrawInfoAttributes(); + }; + return Simulator; + }(); + + var _dec$K, _class$J, _class2$F, _initializer$D; + var ccclass$f = ccclass$t, + serializable$1 = serializable$9; + var ParticleAsset = exports('eD', (_dec$K = ccclass$f('cc.ParticleAsset'), _dec$K(_class$J = (_class2$F = function (_Asset) { + _inheritsLoose(ParticleAsset, _Asset); + function ParticleAsset() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Asset.call.apply(_Asset, [this].concat(args)) || this; + _this.spriteFrame = _initializer$D && _initializer$D(); + return _this; + } + return ParticleAsset; + }(Asset), (_initializer$D = applyDecoratedInitializer(_class2$F.prototype, "spriteFrame", [serializable$1], function () { + return null; + })), _class2$F)) || _class$J)); + legacyCC.ParticleAsset = ParticleAsset; + + var PNGReader = function () { + function PNGReader(data) { + var _this = this; + this.pos = 8; + this.palette = []; + this.imgData = []; + this.text = {}; + this.width = 0; + this.height = 0; + this.bits = 0; + this.colorType = 0; + this.compressionMethod = 0; + this.filterMethod = 0; + this.interlaceMethod = 0; + this.colors = 0; + this.hasAlphaChannel = false; + this.pixelBitlength = 0; + this.data = data; + this.transparency = { + indexed: [], + rgb: 0, + grayscale: 0 + }; + var frame; + var _i = 0; + var _j = 0; + var chunkSize = 0; + while (true) { + chunkSize = this.readUInt32(); + var section = function () { + var _results = []; + for (_i = 0; _i < 4; ++_i) { + _results.push(String.fromCharCode(_this.data[_this.pos++])); + } + return _results; + }.call(this).join(''); + switch (section) { + case 'IHDR': + this.width = this.readUInt32(); + this.height = this.readUInt32(); + this.bits = this.data[this.pos++]; + this.colorType = this.data[this.pos++]; + this.compressionMethod = this.data[this.pos++]; + this.filterMethod = this.data[this.pos++]; + this.interlaceMethod = this.data[this.pos++]; + break; + case 'acTL': + this.animation = { + numFrames: this.readUInt32(), + numPlays: this.readUInt32() || Infinity, + frames: [] + }; + break; + case 'PLTE': + this.palette = this.read(chunkSize); + break; + case 'fcTL': + if (frame) { + this.animation.frames.push(frame); + } + this.pos += 4; + frame = { + width: this.readUInt32(), + height: this.readUInt32(), + xOffset: this.readUInt32(), + yOffset: this.readUInt32() + }; + var delayNum = this.readUInt16(); + var delayDen = this.readUInt16() || 100; + frame.delay = 1000 * delayNum / delayDen; + frame.disposeOp = this.data[this.pos++]; + frame.blendOp = this.data[this.pos++]; + frame.data = []; + break; + case 'IDAT': + case 'fdAT': + if (section === 'fdAT') { + this.pos += 4; + chunkSize -= 4; + } + data = (frame != null ? frame.data : void 0) || this.imgData; + for (_i = 0; chunkSize >= 0 ? _i < chunkSize : _i > chunkSize; chunkSize >= 0 ? ++_i : --_i) { + data.push(this.data[this.pos++]); + } + break; + case 'tRNS': + this.transparency = {}; + switch (this.colorType) { + case 3: + this.transparency.indexed = this.read(chunkSize); + var ccshort = 255 - this.transparency.indexed.length; + if (ccshort > 0) { + for (_j = 0; ccshort >= 0 ? _j < ccshort : _j > ccshort; ccshort >= 0 ? ++_j : --_j) { + this.transparency.indexed.push(255); + } + } + break; + case 0: + this.transparency.grayscale = this.read(chunkSize)[0]; + break; + case 2: + this.transparency.rgb = this.read(chunkSize); + } + break; + case 'tEXt': + var text = this.read(chunkSize); + var index = text.indexOf(0); + var key = String.fromCharCode.apply(String, text.slice(0, index)); + this.text[key] = String.fromCharCode.apply(String, text.slice(index + 1)); + break; + case 'IEND': + if (frame) { + this.animation.frames.push(frame); + } + this.colors = function () { + switch (_this.colorType) { + case 0: + case 3: + case 4: + return 1; + case 2: + case 6: + return 3; + } + }.call(this); + var _ref = this.colorType; + this.hasAlphaChannel = _ref === 4 || _ref === 6; + var colors = this.colors + (this.hasAlphaChannel ? 1 : 0); + this.pixelBitlength = this.bits * colors; + this.colorSpace = function () { + switch (_this.colors) { + case 1: + return 'DeviceGray'; + case 3: + return 'DeviceRGB'; + } + }.call(this); + if (!(this.imgData instanceof Uint8Array)) { + this.imgData = new Uint8Array(this.imgData); + } + return; + default: + this.pos += chunkSize; + } + this.pos += 4; + if (this.pos > this.data.length) { + throw new Error(getError(6017)); + } + } + } + var _proto = PNGReader.prototype; + _proto.read = function read(bytes) { + var _i = 0; + var _results = []; + for (_i = 0; bytes >= 0 ? _i < bytes : _i > bytes; bytes >= 0 ? ++_i : --_i) { + _results.push(this.data[this.pos++]); + } + return _results; + }; + _proto.readUInt32 = function readUInt32() { + var b1 = this.data[this.pos++] << 24; + var b2 = this.data[this.pos++] << 16; + var b3 = this.data[this.pos++] << 8; + var b4 = this.data[this.pos++]; + return b1 | b2 | b3 | b4; + }; + _proto.readUInt16 = function readUInt16() { + var b1 = this.data[this.pos++] << 8; + var b2 = this.data[this.pos++]; + return b1 | b2; + }; + _proto.decodePixels = function decodePixels(data) { + if (data == null) { + data = this.imgData; + } + if (data.length === 0) { + return new Uint8Array(0); + } + var inflate = new _p.Inflate(data, { + index: 0, + verify: false + }); + data = inflate.decompress(); + var pixelBytes = this.pixelBitlength / 8; + var scanlineLength = pixelBytes * this.width; + var pixels = new Uint8Array(scanlineLength * this.height); + var length = data.length; + var row = 0; + var pos = 0; + var c = 0; + var ccbyte = 0; + var col = 0; + var i = 0; + var _i = 0; + var _j = 0; + var _k = 0; + var _l = 0; + var _m = 0; + var left = 0; + var p = 0; + var pa = 0; + var paeth = 0; + var pb = 0; + var pc = 0; + var upper = 0; + var upperLeft = 0; + while (pos < length) { + switch (data[pos++]) { + case 0: + for (i = _i = 0; _i < scanlineLength; i = _i += 1) { + pixels[c++] = data[pos++]; + } + break; + case 1: + for (i = _j = 0; _j < scanlineLength; i = _j += 1) { + ccbyte = data[pos++]; + left = i < pixelBytes ? 0 : pixels[c - pixelBytes]; + pixels[c++] = (ccbyte + left) % 256; + } + break; + case 2: + for (i = _k = 0; _k < scanlineLength; i = _k += 1) { + ccbyte = data[pos++]; + col = (i - i % pixelBytes) / pixelBytes; + upper = row && pixels[(row - 1) * scanlineLength + col * pixelBytes + i % pixelBytes]; + pixels[c++] = (upper + ccbyte) % 256; + } + break; + case 3: + for (i = _l = 0; _l < scanlineLength; i = _l += 1) { + ccbyte = data[pos++]; + col = (i - i % pixelBytes) / pixelBytes; + left = i < pixelBytes ? 0 : pixels[c - pixelBytes]; + upper = row && pixels[(row - 1) * scanlineLength + col * pixelBytes + i % pixelBytes]; + pixels[c++] = (ccbyte + Math.floor((left + upper) / 2)) % 256; + } + break; + case 4: + for (i = _m = 0; _m < scanlineLength; i = _m += 1) { + ccbyte = data[pos++]; + col = (i - i % pixelBytes) / pixelBytes; + left = i < pixelBytes ? 0 : pixels[c - pixelBytes]; + if (row === 0) { + upper = upperLeft = 0; + } else { + upper = pixels[(row - 1) * scanlineLength + col * pixelBytes + i % pixelBytes]; + upperLeft = col && pixels[(row - 1) * scanlineLength + (col - 1) * pixelBytes + i % pixelBytes]; + } + p = left + upper - upperLeft; + pa = Math.abs(p - left); + pb = Math.abs(p - upper); + pc = Math.abs(p - upperLeft); + if (pa <= pb && pa <= pc) { + paeth = left; + } else if (pb <= pc) { + paeth = upper; + } else { + paeth = upperLeft; + } + pixels[c++] = (ccbyte + paeth) % 256; + } + break; + default: + throw new Error(getError(6018, data[pos - 1])); + } + row++; + } + return pixels; + }; + _proto.copyToImageData = function copyToImageData(imageData, pixels) { + var alpha = this.hasAlphaChannel; + var palette; + var colors = this.colors; + if (this.palette.length) { + palette = this._decodedPalette != null ? this._decodedPalette : this._decodedPalette = this.decodePalette(); + colors = 4; + alpha = true; + } + var data = imageData.data || imageData; + var length = data.length; + var input = palette || pixels; + var i = 0; + var j = 0; + var k = 0; + var v = 0; + if (colors === 1) { + while (i < length) { + k = palette ? pixels[i / 4] * 4 : j; + v = input[k++]; + data[i++] = v; + data[i++] = v; + data[i++] = v; + data[i++] = alpha ? input[k++] : 255; + j = k; + } + } else { + while (i < length) { + k = palette ? pixels[i / 4] * 4 : j; + data[i++] = input[k++]; + data[i++] = input[k++]; + data[i++] = input[k++]; + data[i++] = alpha ? input[k++] : 255; + j = k; + } + } + }; + _proto.decodePalette = function decodePalette() { + var palette = this.palette; + var transparency = this.transparency.indexed || []; + var ret = new Uint8Array((transparency.length || 0) + palette.length); + var pos = 0; + var c = 0; + var _ref1 = 0; + for (var i = 0, _i = 0, _ref = palette.length; _i < _ref; i = _i += 3) { + ret[pos++] = palette[i]; + ret[pos++] = palette[i + 1]; + ret[pos++] = palette[i + 2]; + _ref1 = transparency[c++]; + ret[pos++] = _ref1 != null ? _ref1 : 255; + } + return ret; + }; + _proto.render = function render(canvas) { + canvas.width = this.width; + canvas.height = this.height; + var ctx = canvas.getContext('2d'); + var data = ctx.createImageData(this.width, this.height); + this.copyToImageData(data, this.decodePixels(null)); + return ctx.putImageData(data, 0, 0); + }; + return PNGReader; + }(); + + var TiffReader = function () { + function TiffReader() { + this._littleEndian = false; + this._tiffData = []; + this._fileDirectories = []; + } + var _proto = TiffReader.prototype; + _proto.getUint8 = function getUint8(offset) { + return this._tiffData[offset]; + }; + _proto.getUint16 = function getUint16(offset) { + if (this._littleEndian) return this._tiffData[offset + 1] << 8 | this._tiffData[offset];else return this._tiffData[offset] << 8 | this._tiffData[offset + 1]; + }; + _proto.getUint32 = function getUint32(offset) { + var a = this._tiffData; + if (this._littleEndian) return a[offset + 3] << 24 | a[offset + 2] << 16 | a[offset + 1] << 8 | a[offset];else return a[offset] << 24 | a[offset + 1] << 16 | a[offset + 2] << 8 | a[offset + 3]; + }; + _proto.checkLittleEndian = function checkLittleEndian() { + var BOM = this.getUint16(0); + if (BOM === 0x4949) { + this._littleEndian = true; + } else if (BOM === 0x4D4D) { + this._littleEndian = false; + } else { + console.log(BOM); + throw TypeError(getError(6019)); + } + return this._littleEndian; + }; + _proto.hasTowel = function hasTowel() { + if (this.getUint16(2) !== 42) { + throw RangeError(getError(6020)); + } + return true; + }; + _proto.getFieldTypeName = function getFieldTypeName(fieldType) { + var typeNames = fieldTypeNames; + if (fieldType in typeNames) { + return typeNames[fieldType]; + } + return null; + }; + _proto.getFieldTagName = function getFieldTagName(fieldTag) { + var tagNames = fieldTagNames; + if (fieldTag in tagNames) { + return tagNames[fieldTag]; + } else { + logID(6021, fieldTag); + return "Tag" + fieldTag; + } + }; + _proto.getFieldTypeLength = function getFieldTypeLength(fieldTypeName) { + if (['BYTE', 'ASCII', 'SBYTE', 'UNDEFINED'].indexOf(fieldTypeName) !== -1) { + return 1; + } else if (['SHORT', 'SSHORT'].indexOf(fieldTypeName) !== -1) { + return 2; + } else if (['LONG', 'SLONG', 'FLOAT'].indexOf(fieldTypeName) !== -1) { + return 4; + } else if (['RATIONAL', 'SRATIONAL', 'DOUBLE'].indexOf(fieldTypeName) !== -1) { + return 8; + } + return 0; + }; + _proto.getFieldValues = function getFieldValues(fieldTagName, fieldTypeName, typeCount, valueOffset) { + var fieldValues = []; + var fieldTypeLength = this.getFieldTypeLength(fieldTypeName); + var fieldValueSize = fieldTypeLength * typeCount; + if (fieldValueSize <= 4) { + if (this._littleEndian === false) fieldValues.push(valueOffset >>> (4 - fieldTypeLength) * 8);else fieldValues.push(valueOffset); + } else { + for (var i = 0; i < typeCount; i++) { + var indexOffset = fieldTypeLength * i; + if (fieldTypeLength >= 8) { + if (['RATIONAL', 'SRATIONAL'].indexOf(fieldTypeName) !== -1) { + fieldValues.push(this.getUint32(valueOffset + indexOffset)); + fieldValues.push(this.getUint32(valueOffset + indexOffset + 4)); + } else { + logID(8000); + } + } else { + fieldValues.push(this.getBytes(fieldTypeLength, valueOffset + indexOffset)); + } + } + } + if (fieldTypeName === 'ASCII') { + fieldValues.forEach(function (e, i, a) { + a[i] = String.fromCharCode(e); + }); + } + return fieldValues; + }; + _proto.getBytes = function getBytes(numBytes, offset) { + if (numBytes <= 0) { + logID(8001); + } else if (numBytes <= 1) { + return this.getUint8(offset); + } else if (numBytes <= 2) { + return this.getUint16(offset); + } else if (numBytes <= 3) { + return this.getUint32(offset) >>> 8; + } else if (numBytes <= 4) { + return this.getUint32(offset); + } else { + logID(8002); + } + return 0; + }; + _proto.getBits = function getBits(numBits, byteOffset, bitOffset) { + bitOffset = bitOffset || 0; + var extraBytes = Math.floor(bitOffset / 8); + var newByteOffset = byteOffset + extraBytes; + var totalBits = bitOffset + numBits; + var shiftRight = 32 - numBits; + var shiftLeft = 0; + var rawBits = 0; + if (totalBits <= 0) { + logID(6023); + } else if (totalBits <= 8) { + shiftLeft = 24 + bitOffset; + rawBits = this.getUint8(newByteOffset); + } else if (totalBits <= 16) { + shiftLeft = 16 + bitOffset; + rawBits = this.getUint16(newByteOffset); + } else if (totalBits <= 32) { + shiftLeft = bitOffset; + rawBits = this.getUint32(newByteOffset); + } else { + logID(6022); + } + return { + bits: rawBits << shiftLeft >>> shiftRight, + byteOffset: newByteOffset + Math.floor(totalBits / 8), + bitOffset: totalBits % 8 + }; + }; + _proto.parseFileDirectory = function parseFileDirectory(offset) { + var numDirEntries = this.getUint16(offset); + var tiffFields = []; + var i = 0; + var entryCount = 0; + for (i = offset + 2, entryCount = 0; entryCount < numDirEntries; i += 12, entryCount++) { + var fieldTag = this.getUint16(i); + var fieldType = this.getUint16(i + 2); + var typeCount = this.getUint32(i + 4); + var valueOffset = this.getUint32(i + 8); + var fieldTagName = this.getFieldTagName(fieldTag); + var fieldTypeName = this.getFieldTypeName(fieldType); + var fieldValues = this.getFieldValues(fieldTagName, fieldTypeName, typeCount, valueOffset); + tiffFields[fieldTagName] = { + type: fieldTypeName, + values: fieldValues + }; + } + this._fileDirectories.push(tiffFields); + var nextIFDByteOffset = this.getUint32(i); + if (nextIFDByteOffset !== 0x00000000) { + this.parseFileDirectory(nextIFDByteOffset); + } + }; + _proto.clampColorSample = function clampColorSample(colorSample, bitsPerSample) { + var multiplier = Math.pow(2, 8 - bitsPerSample); + return Math.floor(colorSample * multiplier + (multiplier - 1)); + }; + _proto.parseTIFF = function parseTIFF(tiffData, canvas) { + var _this = this; + canvas = canvas || ccwindow.document.createElement('canvas'); + this._tiffData = tiffData; + this._canvas = canvas; + this.checkLittleEndian(); + if (!this.hasTowel()) { + return; + } + var firstIFDByteOffset = this.getUint32(4); + this._fileDirectories.length = 0; + this.parseFileDirectory(firstIFDByteOffset); + var fileDirectory = this._fileDirectories[0]; + var imageWidth = fileDirectory.ImageWidth.values[0]; + var imageLength = fileDirectory.ImageLength.values[0]; + this._canvas.width = imageWidth; + this._canvas.height = imageLength; + var strips = []; + var compression = fileDirectory.Compression ? fileDirectory.Compression.values[0] : 1; + var samplesPerPixel = fileDirectory.SamplesPerPixel.values[0]; + var sampleProperties = []; + var bitsPerPixel = 0; + var hasBytesPerPixel = false; + fileDirectory.BitsPerSample.values.forEach(function (bitsPerSample, i, bitsPerSampleValues) { + sampleProperties[i] = { + bitsPerSample: bitsPerSample, + hasBytesPerSample: false, + bytesPerSample: undefined + }; + if (bitsPerSample % 8 === 0) { + sampleProperties[i].hasBytesPerSample = true; + sampleProperties[i].bytesPerSample = bitsPerSample / 8; + } + bitsPerPixel += bitsPerSample; + }, this); + var bytesPerPixel = 0; + if (bitsPerPixel % 8 === 0) { + hasBytesPerPixel = true; + bytesPerPixel = bitsPerPixel / 8; + } + var stripOffsetValues = fileDirectory.StripOffsets.values; + var numStripOffsetValues = stripOffsetValues.length; + var stripByteCountValues; + if (fileDirectory.StripByteCounts) { + stripByteCountValues = fileDirectory.StripByteCounts.values; + } else { + logID(8003); + if (numStripOffsetValues === 1) { + stripByteCountValues = [Math.ceil(imageWidth * imageLength * bitsPerPixel / 8)]; + } else { + throw Error(getError(6024)); + } + } + var blockLength = 1; + var iterations = 1; + for (var i = 0; i < numStripOffsetValues; i++) { + var stripOffset = stripOffsetValues[i]; + strips[i] = []; + var stripByteCount = stripByteCountValues[i]; + for (var byteOffset = 0, bitOffset = 0, jIncrement = 1, getHeader = true, pixel = [], numBytes = 0, sample = 0, currentSample = 0; byteOffset < stripByteCount; byteOffset += jIncrement) { + switch (compression) { + case 1: + pixel = []; + for (var m = 0; m < samplesPerPixel; m++) { + var s = sampleProperties[m]; + if (s.hasBytesPerSample) { + var sampleOffset = s.bytesPerSample * m; + pixel.push(this.getBytes(s.bytesPerSample, stripOffset + byteOffset + sampleOffset)); + } else { + var sampleInfo = this.getBits(s.bitsPerSample, stripOffset + byteOffset, bitOffset); + pixel.push(sampleInfo.bits); + byteOffset = sampleInfo.byteOffset - stripOffset; + bitOffset = sampleInfo.bitOffset; + throw RangeError(getError(6025)); + } + } + strips[i].push(pixel); + if (hasBytesPerPixel) { + jIncrement = bytesPerPixel; + } else { + jIncrement = 0; + throw RangeError(getError(6026)); + } + break; + case 2: + break; + case 3: + break; + case 4: + break; + case 5: + break; + case 6: + break; + case 7: + break; + case 32773: + if (getHeader) { + getHeader = false; + var header = this.getUint8(stripOffset + byteOffset); + if (header >= 0 && header <= 127) { + blockLength = header + 1; + } else if (header >= -127 && header <= -1) { + iterations = -header + 1; + } else { + getHeader = true; + } + } else { + var currentByte = this.getUint8(stripOffset + byteOffset); + for (var _m = 0; _m < iterations; _m++) { + var _s = sampleProperties[sample]; + if (_s.hasBytesPerSample) { + currentSample = currentSample << 8 * numBytes | currentByte; + numBytes++; + if (numBytes === _s.bytesPerSample) { + pixel.push(currentSample); + currentSample = numBytes = 0; + sample++; + } + } else { + throw RangeError(getError(6025)); + } + if (sample === samplesPerPixel) { + strips[i].push(pixel); + pixel = []; + sample = 0; + } + } + blockLength--; + if (blockLength === 0) { + getHeader = true; + } + } + jIncrement = 1; + break; + } + } + } + if (canvas.getContext) { + var ctx = this._canvas.getContext('2d'); + ctx.fillStyle = 'rgba(255, 255, 255, 0)'; + var rowsPerStrip = fileDirectory.RowsPerStrip ? fileDirectory.RowsPerStrip.values[0] : imageLength; + var numStrips = strips.length; + var imageLengthModRowsPerStrip = imageLength % rowsPerStrip; + var rowsInLastStrip = imageLengthModRowsPerStrip === 0 ? rowsPerStrip : imageLengthModRowsPerStrip; + var numRowsInStrip = rowsPerStrip; + var numRowsInPreviousStrip = 0; + var photometricInterpretation = fileDirectory.PhotometricInterpretation.values[0]; + var extraSamplesValues = []; + var numExtraSamples = 0; + if (fileDirectory.ExtraSamples) { + extraSamplesValues = fileDirectory.ExtraSamples.values; + numExtraSamples = extraSamplesValues.length; + } + var colorMapValues = []; + var colorMapSampleSize = 0; + if (fileDirectory.ColorMap) { + colorMapValues = fileDirectory.ColorMap.values; + colorMapSampleSize = Math.pow(2, sampleProperties[0].bitsPerSample); + } + for (var _i = 0; _i < numStrips; _i++) { + if (_i + 1 === numStrips) { + numRowsInStrip = rowsInLastStrip; + } + var numPixels = strips[_i].length; + var yPadding = numRowsInPreviousStrip * _i; + for (var y = 0, j = 0; y < numRowsInStrip && j < numPixels; y++) { + var _loop = function _loop() { + var pixelSamples = strips[_i][j]; + var red = 0; + var green = 0; + var blue = 0; + var opacity = 1.0; + if (numExtraSamples > 0) { + for (var k = 0; k < numExtraSamples; k++) { + if (extraSamplesValues[k] === 1 || extraSamplesValues[k] === 2) { + opacity = pixelSamples[3 + k] / 256; + break; + } + } + } + switch (photometricInterpretation) { + case 0: + var invertValue = 0; + if (sampleProperties[0].hasBytesPerSample) { + invertValue = Math.pow(0x10, sampleProperties[0].bytesPerSample * 2); + } + pixelSamples.forEach(function (sample, index, samples) { + samples[index] = invertValue - sample; + }); + case 1: + red = green = blue = _this.clampColorSample(pixelSamples[0], sampleProperties[0].bitsPerSample); + break; + case 2: + red = _this.clampColorSample(pixelSamples[0], sampleProperties[0].bitsPerSample); + green = _this.clampColorSample(pixelSamples[1], sampleProperties[1].bitsPerSample); + blue = _this.clampColorSample(pixelSamples[2], sampleProperties[2].bitsPerSample); + break; + case 3: + if (colorMapValues === undefined) { + throw Error(getError(6027)); + } + var colorMapIndex = pixelSamples[0]; + red = _this.clampColorSample(colorMapValues[colorMapIndex], 16); + green = _this.clampColorSample(colorMapValues[colorMapSampleSize + colorMapIndex], 16); + blue = _this.clampColorSample(colorMapValues[2 * colorMapSampleSize + colorMapIndex], 16); + break; + default: + throw RangeError(getError(6028, photometricInterpretation)); + } + ctx.fillStyle = "rgba(" + red + ", " + green + ", " + blue + ", " + opacity + ")"; + ctx.fillRect(x, yPadding + y, 1, 1); + }; + for (var x = 0; x < imageWidth; x++, j++) { + _loop(); + } + } + numRowsInPreviousStrip = numRowsInStrip; + } + } + return this._canvas; + }; + return TiffReader; + }(); + var fieldTagNames = { + 0x013B: 'Artist', + 0x0102: 'BitsPerSample', + 0x0109: 'CellLength', + 0x0108: 'CellWidth', + 0x0140: 'ColorMap', + 0x0103: 'Compression', + 0x8298: 'Copyright', + 0x0132: 'DateTime', + 0x0152: 'ExtraSamples', + 0x010A: 'FillOrder', + 0x0121: 'FreeByteCounts', + 0x0120: 'FreeOffsets', + 0x0123: 'GrayResponseCurve', + 0x0122: 'GrayResponseUnit', + 0x013C: 'HostComputer', + 0x010E: 'ImageDescription', + 0x0101: 'ImageLength', + 0x0100: 'ImageWidth', + 0x010F: 'Make', + 0x0119: 'MaxSampleValue', + 0x0118: 'MinSampleValue', + 0x0110: 'Model', + 0x00FE: 'NewSubfileType', + 0x0112: 'Orientation', + 0x0106: 'PhotometricInterpretation', + 0x011C: 'PlanarConfiguration', + 0x0128: 'ResolutionUnit', + 0x0116: 'RowsPerStrip', + 0x0115: 'SamplesPerPixel', + 0x0131: 'Software', + 0x0117: 'StripByteCounts', + 0x0111: 'StripOffsets', + 0x00FF: 'SubfileType', + 0x0107: 'Threshholding', + 0x011A: 'XResolution', + 0x011B: 'YResolution', + 0x0146: 'BadFaxLines', + 0x0147: 'CleanFaxData', + 0x0157: 'ClipPath', + 0x0148: 'ConsecutiveBadFaxLines', + 0x01B1: 'Decode', + 0x01B2: 'DefaultImageColor', + 0x010D: 'DocumentName', + 0x0150: 'DotRange', + 0x0141: 'HalftoneHints', + 0x015A: 'Indexed', + 0x015B: 'JPEGTables', + 0x011D: 'PageName', + 0x0129: 'PageNumber', + 0x013D: 'Predictor', + 0x013F: 'PrimaryChromaticities', + 0x0214: 'ReferenceBlackWhite', + 0x0153: 'SampleFormat', + 0x022F: 'StripRowCounts', + 0x014A: 'SubIFDs', + 0x0124: 'T4Options', + 0x0125: 'T6Options', + 0x0145: 'TileByteCounts', + 0x0143: 'TileLength', + 0x0144: 'TileOffsets', + 0x0142: 'TileWidth', + 0x012D: 'TransferFunction', + 0x013E: 'WhitePoint', + 0x0158: 'XClipPathUnits', + 0x011E: 'XPosition', + 0x0211: 'YCbCrCoefficients', + 0x0213: 'YCbCrPositioning', + 0x0212: 'YCbCrSubSampling', + 0x0159: 'YClipPathUnits', + 0x011F: 'YPosition', + 0x9202: 'ApertureValue', + 0xA001: 'ColorSpace', + 0x9004: 'DateTimeDigitized', + 0x9003: 'DateTimeOriginal', + 0x8769: 'Exif IFD', + 0x9000: 'ExifVersion', + 0x829A: 'ExposureTime', + 0xA300: 'FileSource', + 0x9209: 'Flash', + 0xA000: 'FlashpixVersion', + 0x829D: 'FNumber', + 0xA420: 'ImageUniqueID', + 0x9208: 'LightSource', + 0x927C: 'MakerNote', + 0x9201: 'ShutterSpeedValue', + 0x9286: 'UserComment', + 0x83BB: 'IPTC', + 0x8773: 'ICC Profile', + 0x02BC: 'XMP', + 0xA480: 'GDAL_METADATA', + 0xA481: 'GDAL_NODATA', + 0x8649: 'Photoshop' + }; + var fieldTypeNames = { + 0x0001: 'BYTE', + 0x0002: 'ASCII', + 0x0003: 'SHORT', + 0x0004: 'LONG', + 0x0005: 'RATIONAL', + 0x0006: 'SBYTE', + 0x0007: 'UNDEFINED', + 0x0008: 'SSHORT', + 0x0009: 'SLONG', + 0x000A: 'SRATIONAL', + 0x000B: 'FLOAT', + 0x000C: 'DOUBLE' + }; + + var BASE64_KEYS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + var BASE64_VALUES = new Array(123); + for (var i$1 = 0; i$1 < 123; ++i$1) { + BASE64_VALUES[i$1] = 64; + } + for (var _i = 0; _i < 64; ++_i) { + BASE64_VALUES[BASE64_KEYS.charCodeAt(_i)] = _i; + } + + var Base64 = { + name: 'Jacob__Codec__Base64' + }; + Base64.decode = function Jacob__Codec__Base64__decode(input) { + var output = [], + chr1, + chr2, + chr3, + enc1, + enc2, + enc3, + enc4, + i = 0; + input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); + while (i < input.length) { + enc1 = BASE64_VALUES[input.charCodeAt(i++)]; + enc2 = BASE64_VALUES[input.charCodeAt(i++)]; + enc3 = BASE64_VALUES[input.charCodeAt(i++)]; + enc4 = BASE64_VALUES[input.charCodeAt(i++)]; + chr1 = enc1 << 2 | enc2 >> 4; + chr2 = (enc2 & 15) << 4 | enc3 >> 2; + chr3 = (enc3 & 3) << 6 | enc4; + output.push(String.fromCharCode(chr1)); + if (enc3 !== 64) { + output.push(String.fromCharCode(chr2)); + } + if (enc4 !== 64) { + output.push(String.fromCharCode(chr3)); + } + } + output = output.join(''); + return output; + }; + Base64.decodeAsArray = function Jacob__Codec__Base64___decodeAsArray(input, bytes) { + var dec = this.decode(input), + ar = [], + i, + j, + len; + for (i = 0, len = dec.length / bytes; i < len; i++) { + ar[i] = 0; + for (j = bytes - 1; j >= 0; --j) { + ar[i] += dec.charCodeAt(i * bytes + j) << j * 8; + } + } + return ar; + }; + + var GZip = function Jacob__GZip(data) { + this.data = data; + this.debug = false; + this.gpflags = undefined; + this.files = 0; + this.unzipped = []; + this.buf32k = new Array(32768); + this.bIdx = 0; + this.modeZIP = false; + this.bytepos = 0; + this.bb = 1; + this.bits = 0; + this.nameBuf = []; + this.fileout = undefined; + this.literalTree = new Array(GZip.LITERALS); + this.distanceTree = new Array(32); + this.treepos = 0; + this.Places = null; + this.len = 0; + this.fpos = new Array(17); + this.fpos[0] = 0; + this.flens = undefined; + this.fmax = undefined; + }; + GZip.gunzip = function (string) { + if (string.constructor === Array) ; else if (string.constructor === String) ; + var gzip = new GZip(string); + return gzip.gunzip()[0][0]; + }; + GZip.HufNode = function () { + this.b0 = 0; + this.b1 = 0; + this.jump = null; + this.jumppos = -1; + }; + GZip.LITERALS = 288; + GZip.NAMEMAX = 256; + GZip.bitReverse = [0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff]; + GZip.cplens = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0]; + GZip.cplext = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99]; + GZip.cpdist = [0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0007, 0x0009, 0x000d, 0x0011, 0x0019, 0x0021, 0x0031, 0x0041, 0x0061, 0x0081, 0x00c1, 0x0101, 0x0181, 0x0201, 0x0301, 0x0401, 0x0601, 0x0801, 0x0c01, 0x1001, 0x1801, 0x2001, 0x3001, 0x4001, 0x6001]; + GZip.cpdext = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]; + GZip.border = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; + GZip.prototype.gunzip = function () { + this.outputArr = []; + this.nextFile(); + return this.unzipped; + }; + GZip.prototype.readByte = function () { + this.bits += 8; + if (this.bytepos < this.data.length) { + return this.data.charCodeAt(this.bytepos++); + } else { + return -1; + } + }; + GZip.prototype.byteAlign = function () { + this.bb = 1; + }; + GZip.prototype.readBit = function () { + var carry; + this.bits++; + carry = this.bb & 1; + this.bb >>= 1; + if (this.bb === 0) { + this.bb = this.readByte(); + carry = this.bb & 1; + this.bb = this.bb >> 1 | 0x80; + } + return carry; + }; + GZip.prototype.readBits = function (a) { + var res = 0, + i = a; + while (i--) res = res << 1 | this.readBit(); + if (a) res = GZip.bitReverse[res] >> 8 - a; + return res; + }; + GZip.prototype.flushBuffer = function () { + this.bIdx = 0; + }; + GZip.prototype.addBuffer = function (a) { + this.buf32k[this.bIdx++] = a; + this.outputArr.push(String.fromCharCode(a)); + if (this.bIdx === 0x8000) this.bIdx = 0; + }; + GZip.prototype.IsPat = function () { + while (1) { + if (this.fpos[this.len] >= this.fmax) return -1; + if (this.flens[this.fpos[this.len]] === this.len) return this.fpos[this.len]++; + this.fpos[this.len]++; + } + }; + GZip.prototype.Rec = function () { + var curplace = this.Places[this.treepos]; + var tmp; + if (this.len === 17) { + return -1; + } + this.treepos++; + this.len++; + tmp = this.IsPat(); + if (tmp >= 0) { + curplace.b0 = tmp; + } else { + curplace.b0 = 0x8000; + if (this.Rec()) return -1; + } + tmp = this.IsPat(); + if (tmp >= 0) { + curplace.b1 = tmp; + curplace.jump = null; + } else { + curplace.b1 = 0x8000; + curplace.jump = this.Places[this.treepos]; + curplace.jumppos = this.treepos; + if (this.Rec()) return -1; + } + this.len--; + return 0; + }; + GZip.prototype.CreateTree = function (currentTree, numval, lengths, show) { + var i; + this.Places = currentTree; + this.treepos = 0; + this.flens = lengths; + this.fmax = numval; + for (i = 0; i < 17; i++) this.fpos[i] = 0; + this.len = 0; + if (this.Rec()) { + return -1; + } + return 0; + }; + GZip.prototype.DecodeValue = function (currentTree) { + var len, + i, + xtreepos = 0, + X = currentTree[xtreepos], + b; + while (1) { + b = this.readBit(); + if (b) { + if (!(X.b1 & 0x8000)) { + return X.b1; + } + X = X.jump; + len = currentTree.length; + for (i = 0; i < len; i++) { + if (currentTree[i] === X) { + xtreepos = i; + break; + } + } + } else { + if (!(X.b0 & 0x8000)) { + return X.b0; + } + xtreepos++; + X = currentTree[xtreepos]; + } + } + return -1; + }; + GZip.prototype.DeflateLoop = function () { + var last, c, type, i, len; + do { + last = this.readBit(); + type = this.readBits(2); + if (type === 0) { + var blockLen, cSum; + this.byteAlign(); + blockLen = this.readByte(); + blockLen |= this.readByte() << 8; + cSum = this.readByte(); + cSum |= this.readByte() << 8; + if ((blockLen ^ ~cSum) & 0xffff) { + document.write("BlockLen checksum mismatch\n"); + } + while (blockLen--) { + c = this.readByte(); + this.addBuffer(c); + } + } else if (type === 1) { + var j; + while (1) { + j = GZip.bitReverse[this.readBits(7)] >> 1; + if (j > 23) { + j = j << 1 | this.readBit(); + if (j > 199) { + j -= 128; + j = j << 1 | this.readBit(); + } else { + j -= 48; + if (j > 143) { + j = j + 136; + } + } + } else { + j += 256; + } + if (j < 256) { + this.addBuffer(j); + } else if (j === 256) { + break; + } else { + var len, dist; + j -= 256 + 1; + len = this.readBits(GZip.cplext[j]) + GZip.cplens[j]; + j = GZip.bitReverse[this.readBits(5)] >> 3; + if (GZip.cpdext[j] > 8) { + dist = this.readBits(8); + dist |= this.readBits(GZip.cpdext[j] - 8) << 8; + } else { + dist = this.readBits(GZip.cpdext[j]); + } + dist += GZip.cpdist[j]; + for (j = 0; j < len; j++) { + var c = this.buf32k[this.bIdx - dist & 0x7fff]; + this.addBuffer(c); + } + } + } + } else if (type === 2) { + var j, n, literalCodes, distCodes, lenCodes; + var ll = new Array(288 + 32); + literalCodes = 257 + this.readBits(5); + distCodes = 1 + this.readBits(5); + lenCodes = 4 + this.readBits(4); + for (j = 0; j < 19; j++) { + ll[j] = 0; + } + for (j = 0; j < lenCodes; j++) { + ll[GZip.border[j]] = this.readBits(3); + } + len = this.distanceTree.length; + for (i = 0; i < len; i++) this.distanceTree[i] = new GZip.HufNode(); + if (this.CreateTree(this.distanceTree, 19, ll, 0)) { + this.flushBuffer(); + return 1; + } + n = literalCodes + distCodes; + i = 0; + while (i < n) { + j = this.DecodeValue(this.distanceTree); + if (j < 16) { + ll[i++] = j; + } else if (j === 16) { + var l; + j = 3 + this.readBits(2); + if (i + j > n) { + this.flushBuffer(); + return 1; + } + l = i ? ll[i - 1] : 0; + while (j--) { + ll[i++] = l; + } + } else { + if (j === 17) { + j = 3 + this.readBits(3); + } else { + j = 11 + this.readBits(7); + } + if (i + j > n) { + this.flushBuffer(); + return 1; + } + while (j--) { + ll[i++] = 0; + } + } + } + len = this.literalTree.length; + for (i = 0; i < len; i++) this.literalTree[i] = new GZip.HufNode(); + if (this.CreateTree(this.literalTree, literalCodes, ll, 0)) { + this.flushBuffer(); + return 1; + } + len = this.literalTree.length; + for (i = 0; i < len; i++) this.distanceTree[i] = new GZip.HufNode(); + var ll2 = new Array(); + for (i = literalCodes; i < ll.length; i++) ll2[i - literalCodes] = ll[i]; + if (this.CreateTree(this.distanceTree, distCodes, ll2, 0)) { + this.flushBuffer(); + return 1; + } + while (1) { + j = this.DecodeValue(this.literalTree); + if (j >= 256) { + var len, dist; + j -= 256; + if (j === 0) { + break; + } + j--; + len = this.readBits(GZip.cplext[j]) + GZip.cplens[j]; + j = this.DecodeValue(this.distanceTree); + if (GZip.cpdext[j] > 8) { + dist = this.readBits(8); + dist |= this.readBits(GZip.cpdext[j] - 8) << 8; + } else { + dist = this.readBits(GZip.cpdext[j]); + } + dist += GZip.cpdist[j]; + while (len--) { + var c = this.buf32k[this.bIdx - dist & 0x7fff]; + this.addBuffer(c); + } + } else { + this.addBuffer(j); + } + } + } + } while (!last); + this.flushBuffer(); + this.byteAlign(); + return 0; + }; + GZip.prototype.unzipFile = function (name) { + var i; + this.gunzip(); + for (i = 0; i < this.unzipped.length; i++) { + if (this.unzipped[i][1] === name) { + return this.unzipped[i][0]; + } + } + }; + GZip.prototype.nextFile = function () { + this.outputArr = []; + this.modeZIP = false; + var tmp = []; + tmp[0] = this.readByte(); + tmp[1] = this.readByte(); + if (tmp[0] === 0x78 && tmp[1] === 0xda) { + this.DeflateLoop(); + this.unzipped[this.files] = [this.outputArr.join(''), "geonext.gxt"]; + this.files++; + } + if (tmp[0] === 0x1f && tmp[1] === 0x8b) { + this.skipdir(); + this.unzipped[this.files] = [this.outputArr.join(''), "file"]; + this.files++; + } + if (tmp[0] === 0x50 && tmp[1] === 0x4b) { + this.modeZIP = true; + tmp[2] = this.readByte(); + tmp[3] = this.readByte(); + if (tmp[2] === 0x03 && tmp[3] === 0x04) { + tmp[0] = this.readByte(); + tmp[1] = this.readByte(); + this.gpflags = this.readByte(); + this.gpflags |= this.readByte() << 8; + var method = this.readByte(); + method |= this.readByte() << 8; + this.readByte(); + this.readByte(); + this.readByte(); + this.readByte(); + var compSize = this.readByte(); + compSize |= this.readByte() << 8; + compSize |= this.readByte() << 16; + compSize |= this.readByte() << 24; + var size = this.readByte(); + size |= this.readByte() << 8; + size |= this.readByte() << 16; + size |= this.readByte() << 24; + var filelen = this.readByte(); + filelen |= this.readByte() << 8; + var extralen = this.readByte(); + extralen |= this.readByte() << 8; + i = 0; + this.nameBuf = []; + while (filelen--) { + var c = this.readByte(); + if (c === "/" | c === ":") { + i = 0; + } else if (i < GZip.NAMEMAX - 1) { + this.nameBuf[i++] = String.fromCharCode(c); + } + } + if (!this.fileout) this.fileout = this.nameBuf; + var i = 0; + while (i < extralen) { + c = this.readByte(); + i++; + } + if (method === 8) { + this.DeflateLoop(); + this.unzipped[this.files] = [this.outputArr.join(''), this.nameBuf.join('')]; + this.files++; + } + this.skipdir(); + } + } + }; + GZip.prototype.skipdir = function () { + var tmp = []; + var compSize, size, i, c; + if (this.gpflags & 8) { + tmp[0] = this.readByte(); + tmp[1] = this.readByte(); + tmp[2] = this.readByte(); + tmp[3] = this.readByte(); + compSize = this.readByte(); + compSize |= this.readByte() << 8; + compSize |= this.readByte() << 16; + compSize |= this.readByte() << 24; + size = this.readByte(); + size |= this.readByte() << 8; + size |= this.readByte() << 16; + size |= this.readByte() << 24; + } + if (this.modeZIP) this.nextFile(); + tmp[0] = this.readByte(); + if (tmp[0] !== 8) { + return 0; + } + this.gpflags = this.readByte(); + this.readByte(); + this.readByte(); + this.readByte(); + this.readByte(); + this.readByte(); + this.readByte(); + if (this.gpflags & 4) { + tmp[0] = this.readByte(); + tmp[2] = this.readByte(); + this.len = tmp[0] + 256 * tmp[1]; + for (i = 0; i < this.len; i++) this.readByte(); + } + if (this.gpflags & 8) { + i = 0; + this.nameBuf = []; + while (c = this.readByte()) { + if (c === "7" || c === ":") i = 0; + if (i < GZip.NAMEMAX - 1) this.nameBuf[i++] = c; + } + } + if (this.gpflags & 16) { + while (c = this.readByte()) {} + } + if (this.gpflags & 2) { + this.readByte(); + this.readByte(); + } + this.DeflateLoop(); + size = this.readByte(); + size |= this.readByte() << 8; + size |= this.readByte() << 16; + size |= this.readByte() << 24; + if (this.modeZIP) this.nextFile(); + }; + + var codec = { + name: 'Jacob__Codec' + }; + codec.Base64 = Base64; + codec.GZip = GZip; + codec.unzip = function () { + return codec.GZip.gunzip.apply(codec.GZip, arguments); + }; + codec.unzipBase64 = function () { + var buffer = codec.Base64.decode.apply(codec.Base64, arguments); + try { + return codec.GZip.gunzip.call(codec.GZip, buffer); + } catch (e) { + return buffer.slice(7); + } + }; + codec.unzipBase64AsArray = function (input, bytes) { + bytes = bytes || 1; + var dec = this.unzipBase64(input), + ar = [], + i, + j, + len; + for (i = 0, len = dec.length / bytes; i < len; i++) { + ar[i] = 0; + for (j = bytes - 1; j >= 0; --j) { + ar[i] += dec.charCodeAt(i * bytes + j) << j * 8; + } + } + return ar; + }; + codec.unzipAsArray = function (input, bytes) { + bytes = bytes || 1; + var dec = this.unzip(input), + ar = [], + i, + j, + len; + for (i = 0, len = dec.length / bytes; i < len; i++) { + ar[i] = 0; + for (j = bytes - 1; j >= 0; --j) { + ar[i] += dec.charCodeAt(i * bytes + j) << j * 8; + } + } + return ar; + }; + + var _dec$J, _dec2$F, _dec3$z, _dec4$p, _dec5$o, _dec6$h, _class$I, _class2$E, _initializer$C, _initializer2$z, _initializer3$s, _initializer4$p, _initializer5$l, _initializer6$h, _initializer7$d, _initializer8$c, _initializer9$a, _initializer10$a, _initializer11$a, _initializer12$9, _initializer13$6, _initializer14$5, _initializer15$4, _initializer16$4, _initializer17$3, _initializer18$2, _initializer19$1, _initializer20$1, _initializer21$1, _initializer22, _initializer23, _initializer24, _initializer25, _initializer26, _initializer27, _initializer28, _initializer29, _initializer30, _initializer31, _initializer32, _initializer33, _initializer34, _initializer35, _initializer36, _initializer37, _initializer38, _initializer39, _initializer40, _initializer41, _initializer42, _initializer43, _class3$h; + var ImageFormat; + (function (ImageFormat) { + ImageFormat[ImageFormat["JPG"] = 0] = "JPG"; + ImageFormat[ImageFormat["PNG"] = 1] = "PNG"; + ImageFormat[ImageFormat["TIFF"] = 2] = "TIFF"; + ImageFormat[ImageFormat["WEBP"] = 3] = "WEBP"; + ImageFormat[ImageFormat["PVR"] = 4] = "PVR"; + ImageFormat[ImageFormat["ETC"] = 5] = "ETC"; + ImageFormat[ImageFormat["S3TC"] = 6] = "S3TC"; + ImageFormat[ImageFormat["ATITC"] = 7] = "ATITC"; + ImageFormat[ImageFormat["TGA"] = 8] = "TGA"; + ImageFormat[ImageFormat["RAWDATA"] = 9] = "RAWDATA"; + ImageFormat[ImageFormat["UNKNOWN"] = 10] = "UNKNOWN"; + })(ImageFormat || (ImageFormat = {})); + function getImageFormatByData(imgData) { + if (imgData.length > 8 && imgData[0] === 0x89 && imgData[1] === 0x50 && imgData[2] === 0x4E && imgData[3] === 0x47 && imgData[4] === 0x0D && imgData[5] === 0x0A && imgData[6] === 0x1A && imgData[7] === 0x0A) { + return ImageFormat.PNG; + } + if (imgData.length > 2 && (imgData[0] === 0x49 && imgData[1] === 0x49 || imgData[0] === 0x4d && imgData[1] === 0x4d || imgData[0] === 0xff && imgData[1] === 0xd8)) { + return ImageFormat.TIFF; + } + return ImageFormat.UNKNOWN; + } + function getParticleComponents(node) { + var parent = node.parent; + var comp = node.getComponent(ParticleSystem2D); + if (!parent || !comp) { + return node.getComponentsInChildren(ParticleSystem2D); + } + return getParticleComponents(parent); + } + var ParticleSystem2D = exports('ez', (_dec$J = ccclass$t('cc.ParticleSystem2D'), _dec2$F = type$8(ParticleAsset), _dec3$z = type$8(SpriteFrame), _dec4$p = type$8(PositionType), _dec5$o = type$8(EmitterMode), _dec6$h = formerlySerializedAs$1('preview'), _dec$J(_class$I = (_class2$E = (_class3$h = function (_UIRenderer) { + _inheritsLoose(ParticleSystem2D, _UIRenderer); + function ParticleSystem2D() { + var _this; + _this = _UIRenderer.call(this) || this; + _this.duration = _initializer$C && _initializer$C(); + _this.emissionRate = _initializer2$z && _initializer2$z(); + _this.life = _initializer3$s && _initializer3$s(); + _this.lifeVar = _initializer4$p && _initializer4$p(); + _this.angle = _initializer5$l && _initializer5$l(); + _this.angleVar = _initializer6$h && _initializer6$h(); + _this.startSize = _initializer7$d && _initializer7$d(); + _this.startSizeVar = _initializer8$c && _initializer8$c(); + _this.endSize = _initializer9$a && _initializer9$a(); + _this.endSizeVar = _initializer10$a && _initializer10$a(); + _this.startSpin = _initializer11$a && _initializer11$a(); + _this.startSpinVar = _initializer12$9 && _initializer12$9(); + _this.endSpin = _initializer13$6 && _initializer13$6(); + _this.endSpinVar = _initializer14$5 && _initializer14$5(); + _this.sourcePos = _initializer15$4 && _initializer15$4(); + _this.posVar = _initializer16$4 && _initializer16$4(); + _this.emitterMode = _initializer17$3 && _initializer17$3(); + _this.gravity = _initializer18$2 && _initializer18$2(); + _this.speed = _initializer19$1 && _initializer19$1(); + _this.speedVar = _initializer20$1 && _initializer20$1(); + _this.tangentialAccel = _initializer21$1 && _initializer21$1(); + _this.tangentialAccelVar = _initializer22 && _initializer22(); + _this.radialAccel = _initializer23 && _initializer23(); + _this.radialAccelVar = _initializer24 && _initializer24(); + _this.rotationIsDir = _initializer25 && _initializer25(); + _this.startRadius = _initializer26 && _initializer26(); + _this.startRadiusVar = _initializer27 && _initializer27(); + _this.endRadius = _initializer28 && _initializer28(); + _this.endRadiusVar = _initializer29 && _initializer29(); + _this.rotatePerS = _initializer30 && _initializer30(); + _this.rotatePerSVar = _initializer31 && _initializer31(); + _this.aspectRatio = 1; + _this.playOnLoad = _initializer32 && _initializer32(); + _this.autoRemoveOnFinish = _initializer33 && _initializer33(); + _this._preview = _initializer34 && _initializer34(); + _this._custom = _initializer35 && _initializer35(); + _this._file = _initializer36 && _initializer36(); + _this._spriteFrame = _initializer37 && _initializer37(); + _this._totalParticles = _initializer38 && _initializer38(); + _this._startColor = _initializer39 && _initializer39(); + _this._startColorVar = _initializer40 && _initializer40(); + _this._endColor = _initializer41 && _initializer41(); + _this._endColorVar = _initializer42 && _initializer42(); + _this._positionType = _initializer43 && _initializer43(); + _this._stopped = true; + _this._useFile = void 0; + _this.initProperties(); + _this._useFile = false; + return _this; + } + var _proto = ParticleSystem2D.prototype; + _proto.onEnable = function onEnable() { + _UIRenderer.prototype.onEnable.call(this); + this._updateMaterial(); + this._updatePositionType(); + }; + _proto.onDestroy = function onDestroy() { + _UIRenderer.prototype.onDestroy.call(this); + if (this.autoRemoveOnFinish) { + this.autoRemoveOnFinish = false; + } + this._simulator.uvFilled = 0; + if (this._simulator.renderData && this._assembler) { + this._assembler.removeData(this._simulator.renderData); + } + }; + _proto.initProperties = function initProperties() { + this._previewTimer = null; + this._focused = false; + this.aspectRatio = 1; + this._simulator = new Simulator(this); + }; + _proto.onFocusInEditor = function onFocusInEditor() { + this._focused = true; + var components = getParticleComponents(this.node); + for (var i = 0; i < components.length; ++i) { + components[i]._startPreview(); + } + }; + _proto.onLostFocusInEditor = function onLostFocusInEditor() { + this._focused = false; + var components = getParticleComponents(this.node); + for (var i = 0; i < components.length; ++i) { + components[i]._stopPreview(); + } + }; + _proto._startPreview = function _startPreview() { + if (this._preview) { + this.resetSystem(); + } + }; + _proto._stopPreview = function _stopPreview() { + if (this._preview) { + this.resetSystem(); + this.stopSystem(); + } + if (this._previewTimer) { + clearInterval(this._previewTimer); + } + }; + _proto.__preload = function __preload() { + _UIRenderer.prototype.__preload.call(this); + if (this._custom && this.spriteFrame && !this._renderSpriteFrame) { + this._applySpriteFrame(); + } else if (this._file) { + if (this._custom) { + var missCustomTexture = !this._getTexture(); + if (missCustomTexture) { + this._applyFile(); + } + } else { + this._applyFile(); + } + } + { + if (this.playOnLoad) { + this.resetSystem(); + } + } + }; + _proto._flushAssembler = function _flushAssembler() { + var assembler = ParticleSystem2D.Assembler.getAssembler(this); + if (this._assembler !== assembler) { + this._assembler = assembler; + } + if (this._assembler && this._assembler.createData) { + this._simulator.renderData = this._assembler.createData(this); + this._simulator.renderData.particleInitRenderDrawInfo(this.renderEntity); + this._simulator.initDrawInfo(); + } + }; + _proto.lateUpdate = function lateUpdate(dt) { + if (!this._simulator.finished) { + this._simulator.step(dt); + } + }; + _proto.addParticle = function addParticle() {}; + _proto.stopSystem = function stopSystem() { + this._stopped = true; + this._simulator.stop(); + }; + _proto.resetSystem = function resetSystem() { + this._stopped = false; + this._simulator.reset(); + this.markForUpdateRenderData(); + }; + _proto.isFull = function isFull() { + return this.particleCount >= this.totalParticles; + }; + _proto._applyFile = function _applyFile() { + var file = this._file; + if (file) { + if (!file) { + errorID(6029); + return; + } + if (!this.isValid) { + return; + } + this._plistFile = file.nativeUrl; + if (!this._custom) { + var isDiffFrame = this._spriteFrame !== file.spriteFrame; + if (isDiffFrame) this.spriteFrame = file.spriteFrame; + this._initWithDictionary(file._nativeAsset); + } + if (!this._spriteFrame) { + if (file.spriteFrame) { + this.spriteFrame = file.spriteFrame; + } else if (this._custom) { + this._initTextureWithDictionary(file._nativeAsset); + } + } else if (!this._renderSpriteFrame && this._spriteFrame) { + this._applySpriteFrame(); + } + } + }; + _proto._initTextureWithDictionary = function _initTextureWithDictionary(dict) { + var _this2 = this; + if (dict.spriteFrameUuid) { + var spriteFrameUuid = dict.spriteFrameUuid; + assetManager.loadAny(spriteFrameUuid, function (err, spriteFrame) { + if (err) { + dict.spriteFrameUuid = undefined; + _this2._initTextureWithDictionary(dict); + error(err); + } else { + _this2.spriteFrame = spriteFrame; + } + }); + } else { + var imgPath = changeBasename(this._plistFile, dict.textureFileName || ''); + if (dict.textureFileName) { + assetManager.loadRemote(imgPath, function (err, imageAsset) { + if (err) { + dict.textureFileName = undefined; + _this2._initTextureWithDictionary(dict); + error(err); + } else { + if (imageAsset) { + _this2.spriteFrame = SpriteFrame.createWithImage(imageAsset); + } else { + _this2.spriteFrame = SpriteFrame.createWithImage(builtinResMgr.get('white-texture')); + } + } + }); + } else if (dict.textureImageData) { + var textureData = dict.textureImageData; + if (textureData && textureData.length > 0) { + var imgPathName = imgPath; + if (this.file) { + imgPathName += "-" + this.file.uuid; + } + var imageAsset = assetManager.assets.get(imgPathName); + if (!imageAsset) { + var buffer = codec.unzipBase64AsArray(textureData, 1); + if (!buffer) { + warnID(6030, this._file.name); + return false; + } + var imageFormat = getImageFormatByData(buffer); + if (imageFormat !== ImageFormat.TIFF && imageFormat !== ImageFormat.PNG) { + warnID(6031, this._file.name); + return false; + } + var canvasObj = ccwindow.document.createElement('canvas'); + if (imageFormat === ImageFormat.PNG) { + var myPngObj = new PNGReader(buffer); + myPngObj.render(canvasObj); + } else { + if (!this._tiffReader) { + this._tiffReader = new TiffReader(); + } + this._tiffReader.parseTIFF(buffer, canvasObj); + } + imageAsset = new ImageAsset(canvasObj); + assetManager.assets.add(imgPathName, imageAsset); + } + if (!imageAsset) { + warnID(6032, this._file.name); + } + if (imageAsset) { + this.spriteFrame = SpriteFrame.createWithImage(imageAsset); + } else { + this.spriteFrame = SpriteFrame.createWithImage(builtinResMgr.get('white-texture')); + } + } else { + return false; + } + } + } + return true; + }; + _proto._initWithDictionary = function _initWithDictionary(dict) { + this._useFile = true; + this.totalParticles = parseInt(dict.maxParticles || 0); + this.life = parseFloat(dict.particleLifespan || 0); + this.lifeVar = parseFloat(dict.particleLifespanVariance || 0); + var _tempEmissionRate = dict.emissionRate; + if (_tempEmissionRate) { + this.emissionRate = _tempEmissionRate; + } else { + this.emissionRate = Math.min(this.totalParticles / this.life, Number.MAX_VALUE); + } + this.duration = parseFloat(dict.duration || 0); + this._srcBlendFactor = parseInt(dict.blendFuncSource || BlendFactor.SRC_ALPHA); + this._dstBlendFactor = parseInt(dict.blendFuncDestination || BlendFactor.ONE_MINUS_SRC_ALPHA); + var locStartColor = this._startColor; + locStartColor.r = parseFloat(dict.startColorRed || 0) * 255; + locStartColor.g = parseFloat(dict.startColorGreen || 0) * 255; + locStartColor.b = parseFloat(dict.startColorBlue || 0) * 255; + locStartColor.a = parseFloat(dict.startColorAlpha || 0) * 255; + var locStartColorVar = this._startColorVar; + locStartColorVar.r = parseFloat(dict.startColorVarianceRed || 0) * 255; + locStartColorVar.g = parseFloat(dict.startColorVarianceGreen || 0) * 255; + locStartColorVar.b = parseFloat(dict.startColorVarianceBlue || 0) * 255; + locStartColorVar.a = parseFloat(dict.startColorVarianceAlpha || 0) * 255; + var locEndColor = this._endColor; + locEndColor.r = parseFloat(dict.finishColorRed || 0) * 255; + locEndColor.g = parseFloat(dict.finishColorGreen || 0) * 255; + locEndColor.b = parseFloat(dict.finishColorBlue || 0) * 255; + locEndColor.a = parseFloat(dict.finishColorAlpha || 0) * 255; + var locEndColorVar = this._endColorVar; + locEndColorVar.r = parseFloat(dict.finishColorVarianceRed || 0) * 255; + locEndColorVar.g = parseFloat(dict.finishColorVarianceGreen || 0) * 255; + locEndColorVar.b = parseFloat(dict.finishColorVarianceBlue || 0) * 255; + locEndColorVar.a = parseFloat(dict.finishColorVarianceAlpha || 0) * 255; + this.startSize = parseFloat(dict.startParticleSize || 0); + this.startSizeVar = parseFloat(dict.startParticleSizeVariance || 0); + this.endSize = parseFloat(dict.finishParticleSize || 0); + this.endSizeVar = parseFloat(dict.finishParticleSizeVariance || 0); + this.positionType = parseFloat(dict.positionType !== undefined ? dict.positionType : PositionType.FREE); + this.sourcePos.set(0, 0); + this.posVar.set(parseFloat(dict.sourcePositionVariancex || 0), parseFloat(dict.sourcePositionVariancey || 0)); + this.angle = parseFloat(dict.angle || 0); + this.angleVar = parseFloat(dict.angleVariance || 0); + this.startSpin = parseFloat(dict.rotationStart || 0); + this.startSpinVar = parseFloat(dict.rotationStartVariance || 0); + this.endSpin = parseFloat(dict.rotationEnd || 0); + this.endSpinVar = parseFloat(dict.rotationEndVariance || 0); + this.emitterMode = parseInt(dict.emitterType || EmitterMode.GRAVITY); + if (this.emitterMode === EmitterMode.GRAVITY) { + this.gravity.set(parseFloat(dict.gravityx || 0), parseFloat(dict.gravityy || 0)); + this.speed = parseFloat(dict.speed || 0); + this.speedVar = parseFloat(dict.speedVariance || 0); + this.radialAccel = parseFloat(dict.radialAcceleration || 0); + this.radialAccelVar = parseFloat(dict.radialAccelVariance || 0); + this.tangentialAccel = parseFloat(dict.tangentialAcceleration || 0); + this.tangentialAccelVar = parseFloat(dict.tangentialAccelVariance || 0); + var locRotationIsDir = dict.rotationIsDir || ''; + if (locRotationIsDir !== null) { + locRotationIsDir = locRotationIsDir.toString().toLowerCase(); + this.rotationIsDir = locRotationIsDir === 'true' || locRotationIsDir === '1'; + } else { + this.rotationIsDir = false; + } + } else if (this.emitterMode === EmitterMode.RADIUS) { + this.startRadius = parseFloat(dict.maxRadius || 0); + this.startRadiusVar = parseFloat(dict.maxRadiusVariance || 0); + this.endRadius = parseFloat(dict.minRadius || 0); + this.endRadiusVar = parseFloat(dict.minRadiusVariance || 0); + this.rotatePerS = parseFloat(dict.rotatePerSecond || 0); + this.rotatePerSVar = parseFloat(dict.rotatePerSecondVariance || 0); + } else { + warnID(6009); + return false; + } + this._initTextureWithDictionary(dict); + return true; + }; + _proto._syncAspect = function _syncAspect() { + if (this._renderSpriteFrame) { + var frameRect = this._renderSpriteFrame.rect; + this.aspectRatio = frameRect.width / frameRect.height; + } + }; + _proto._applySpriteFrame = function _applySpriteFrame() { + this._renderSpriteFrame = this._renderSpriteFrame || this._spriteFrame; + if (this._renderSpriteFrame) { + if (this._renderSpriteFrame.texture) { + if (this._simulator) { + this._simulator.updateUVs(true); + } + this._syncAspect(); + this._updateMaterial(); + this._stopped = false; + this.markForUpdateRenderData(); + } + } else { + this.resetSystem(); + } + }; + _proto._getTexture = function _getTexture() { + return this._renderSpriteFrame && this._renderSpriteFrame.texture; + }; + _proto._updateMaterial = function _updateMaterial() { + if (this._customMaterial) { + this.setSharedMaterial(this._customMaterial, 0); + var target = this.getRenderMaterial(0).passes[0].blendState.targets[0]; + this._dstBlendFactor = target.blendDst; + this._srcBlendFactor = target.blendSrc; + } + var mat = this.getMaterialInstance(0); + if (mat) mat.recompileShaders({ + USE_LOCAL: this._positionType !== PositionType.FREE + }); + if (mat && mat.passes.length > 0) { + this._updateBlendFunc(); + } + }; + _proto._finishedSimulation = function _finishedSimulation() { + this.resetSystem(); + this.stopSystem(); + this.markForUpdateRenderData(); + if (this.autoRemoveOnFinish && this._stopped) { + this.node.destroy(); + } + }; + _proto._canRender = function _canRender() { + return _UIRenderer.prototype._canRender.call(this) && !this._stopped && this._renderSpriteFrame !== null && this._renderSpriteFrame !== undefined; + }; + _proto._render = function _render(render) { + if (this._positionType === PositionType.RELATIVE) { + render.commitComp(this, this._simulator.renderData, this._renderSpriteFrame, this._assembler, this.node.parent); + } else if (this.positionType === PositionType.GROUPED) { + render.commitComp(this, this._simulator.renderData, this._renderSpriteFrame, this._assembler, this.node); + } else { + render.commitComp(this, this._simulator.renderData, this._renderSpriteFrame, this._assembler, null); + } + }; + _proto._updatePositionType = function _updatePositionType() { + if (this._positionType === PositionType.RELATIVE) { + this._renderEntity.setRenderTransform(this.node.parent); + this._renderEntity.setUseLocal(true); + } else if (this.positionType === PositionType.GROUPED) { + this._renderEntity.setRenderTransform(this.node); + this._renderEntity.setUseLocal(true); + } else { + this._renderEntity.setRenderTransform(null); + this._renderEntity.setUseLocal(false); + } + }; + _createClass(ParticleSystem2D, [{ + key: "custom", + get: function get() { + return this._custom; + }, + set: function set(value) { + if (this._custom !== value) { + this._custom = value; + this._applyFile(); + this._updateMaterial(); + } + } + }, { + key: "file", + get: function get() { + return this._file; + }, + set: function set(value) { + if (this._file !== value) { + this._file = value; + if (value) { + this._applyFile(); + } else { + this.custom = true; + } + } + } + }, { + key: "spriteFrame", + get: function get() { + return this._spriteFrame; + }, + set: function set(value) { + var lastSprite = this._renderSpriteFrame; + if (lastSprite === value) { + return; + } + this._renderSpriteFrame = value; + if (!value || value._uuid) { + this._spriteFrame = value; + } + this._applySpriteFrame(); + } + }, { + key: "particleCount", + get: function get() { + return this._simulator.particles.length; + } + }, { + key: "totalParticles", + get: function get() { + return this._totalParticles; + }, + set: function set(value) { + if (this._totalParticles === value) return; + this._totalParticles = value; + } + }, { + key: "startColor", + get: function get() { + return this._startColor; + }, + set: function set(val) { + this._startColor.r = val.r; + this._startColor.g = val.g; + this._startColor.b = val.b; + this._startColor.a = val.a; + } + }, { + key: "startColorVar", + get: function get() { + return this._startColorVar; + }, + set: function set(val) { + this._startColorVar.r = val.r; + this._startColorVar.g = val.g; + this._startColorVar.b = val.b; + this._startColorVar.a = val.a; + } + }, { + key: "color", + get: function get() { + return this._color; + }, + set: function set(value) {} + }, { + key: "endColor", + get: function get() { + return this._endColor; + }, + set: function set(val) { + this._endColor.r = val.r; + this._endColor.g = val.g; + this._endColor.b = val.b; + this._endColor.a = val.a; + } + }, { + key: "endColorVar", + get: function get() { + return this._endColorVar; + }, + set: function set(val) { + this._endColorVar.r = val.r; + this._endColorVar.g = val.g; + this._endColorVar.b = val.b; + this._endColorVar.a = val.a; + } + }, { + key: "positionType", + get: function get() { + return this._positionType; + }, + set: function set(val) { + this._positionType = val; + this._updateMaterial(); + this._updatePositionType(); + } + }, { + key: "preview", + get: function get() { + return this._preview; + }, + set: function set(val) { + if (val) { + this._startPreview(); + } else { + this._stopPreview(); + } + this._preview = val; + } + }, { + key: "stopped", + get: function get() { + return this._stopped; + } + }, { + key: "active", + get: function get() { + return this._simulator.active; + } + }, { + key: "assembler", + get: function get() { + return this._assembler; + } + }]); + return ParticleSystem2D; + }(UIRenderer), _class3$h.EmitterMode = EmitterMode, _class3$h.PositionType = PositionType, _class3$h.DURATION_INFINITY = DURATION_INFINITY, _class3$h.START_SIZE_EQUAL_TO_END_SIZE = START_SIZE_EQUAL_TO_END_SIZE, _class3$h.START_RADIUS_EQUAL_TO_END_RADIUS = START_RADIUS_EQUAL_TO_END_RADIUS, _class3$h), (_applyDecoratedDescriptor(_class2$E.prototype, "file", [_dec2$F], Object.getOwnPropertyDescriptor(_class2$E.prototype, "file"), _class2$E.prototype), _applyDecoratedDescriptor(_class2$E.prototype, "spriteFrame", [_dec3$z], Object.getOwnPropertyDescriptor(_class2$E.prototype, "spriteFrame"), _class2$E.prototype), _initializer$C = applyDecoratedInitializer(_class2$E.prototype, "duration", [serializable$9], function () { + return -1; + }), _initializer2$z = applyDecoratedInitializer(_class2$E.prototype, "emissionRate", [serializable$9], function () { + return 10; + }), _initializer3$s = applyDecoratedInitializer(_class2$E.prototype, "life", [serializable$9], function () { + return 1; + }), _initializer4$p = applyDecoratedInitializer(_class2$E.prototype, "lifeVar", [serializable$9], function () { + return 0; + }), _applyDecoratedDescriptor(_class2$E.prototype, "color", [override$1], Object.getOwnPropertyDescriptor(_class2$E.prototype, "color"), _class2$E.prototype), _initializer5$l = applyDecoratedInitializer(_class2$E.prototype, "angle", [serializable$9], function () { + return 90; + }), _initializer6$h = applyDecoratedInitializer(_class2$E.prototype, "angleVar", [serializable$9], function () { + return 20; + }), _initializer7$d = applyDecoratedInitializer(_class2$E.prototype, "startSize", [serializable$9], function () { + return 50; + }), _initializer8$c = applyDecoratedInitializer(_class2$E.prototype, "startSizeVar", [serializable$9], function () { + return 0; + }), _initializer9$a = applyDecoratedInitializer(_class2$E.prototype, "endSize", [serializable$9], function () { + return 0; + }), _initializer10$a = applyDecoratedInitializer(_class2$E.prototype, "endSizeVar", [serializable$9], function () { + return 0; + }), _initializer11$a = applyDecoratedInitializer(_class2$E.prototype, "startSpin", [serializable$9], function () { + return 0; + }), _initializer12$9 = applyDecoratedInitializer(_class2$E.prototype, "startSpinVar", [serializable$9], function () { + return 0; + }), _initializer13$6 = applyDecoratedInitializer(_class2$E.prototype, "endSpin", [serializable$9], function () { + return 0; + }), _initializer14$5 = applyDecoratedInitializer(_class2$E.prototype, "endSpinVar", [serializable$9], function () { + return 0; + }), _initializer15$4 = applyDecoratedInitializer(_class2$E.prototype, "sourcePos", [serializable$9], function () { + return Vec2.ZERO.clone(); + }), _initializer16$4 = applyDecoratedInitializer(_class2$E.prototype, "posVar", [serializable$9], function () { + return Vec2.ZERO.clone(); + }), _applyDecoratedDescriptor(_class2$E.prototype, "positionType", [_dec4$p], Object.getOwnPropertyDescriptor(_class2$E.prototype, "positionType"), _class2$E.prototype), _initializer17$3 = applyDecoratedInitializer(_class2$E.prototype, "emitterMode", [serializable$9, _dec5$o], function () { + return EmitterMode.GRAVITY; + }), _initializer18$2 = applyDecoratedInitializer(_class2$E.prototype, "gravity", [serializable$9], function () { + return Vec2.ZERO.clone(); + }), _initializer19$1 = applyDecoratedInitializer(_class2$E.prototype, "speed", [serializable$9], function () { + return 180; + }), _initializer20$1 = applyDecoratedInitializer(_class2$E.prototype, "speedVar", [serializable$9], function () { + return 50; + }), _initializer21$1 = applyDecoratedInitializer(_class2$E.prototype, "tangentialAccel", [serializable$9], function () { + return 80; + }), _initializer22 = applyDecoratedInitializer(_class2$E.prototype, "tangentialAccelVar", [serializable$9], function () { + return 0; + }), _initializer23 = applyDecoratedInitializer(_class2$E.prototype, "radialAccel", [serializable$9], function () { + return 0; + }), _initializer24 = applyDecoratedInitializer(_class2$E.prototype, "radialAccelVar", [serializable$9], function () { + return 0; + }), _initializer25 = applyDecoratedInitializer(_class2$E.prototype, "rotationIsDir", [serializable$9], function () { + return false; + }), _initializer26 = applyDecoratedInitializer(_class2$E.prototype, "startRadius", [serializable$9], function () { + return 0; + }), _initializer27 = applyDecoratedInitializer(_class2$E.prototype, "startRadiusVar", [serializable$9], function () { + return 0; + }), _initializer28 = applyDecoratedInitializer(_class2$E.prototype, "endRadius", [serializable$9], function () { + return 0; + }), _initializer29 = applyDecoratedInitializer(_class2$E.prototype, "endRadiusVar", [serializable$9], function () { + return 0; + }), _initializer30 = applyDecoratedInitializer(_class2$E.prototype, "rotatePerS", [serializable$9], function () { + return 0; + }), _initializer31 = applyDecoratedInitializer(_class2$E.prototype, "rotatePerSVar", [serializable$9], function () { + return 0; + }), _initializer32 = applyDecoratedInitializer(_class2$E.prototype, "playOnLoad", [serializable$9], function () { + return true; + }), _initializer33 = applyDecoratedInitializer(_class2$E.prototype, "autoRemoveOnFinish", [serializable$9], function () { + return false; + }), _initializer34 = applyDecoratedInitializer(_class2$E.prototype, "_preview", [_dec6$h], function () { + return true; + }), _initializer35 = applyDecoratedInitializer(_class2$E.prototype, "_custom", [serializable$9], function () { + return false; + }), _initializer36 = applyDecoratedInitializer(_class2$E.prototype, "_file", [serializable$9], function () { + return null; + }), _initializer37 = applyDecoratedInitializer(_class2$E.prototype, "_spriteFrame", [serializable$9], function () { + return null; + }), _initializer38 = applyDecoratedInitializer(_class2$E.prototype, "_totalParticles", [serializable$9], function () { + return 150; + }), _initializer39 = applyDecoratedInitializer(_class2$E.prototype, "_startColor", [serializable$9], function () { + return new Color$1(255, 255, 255, 255); + }), _initializer40 = applyDecoratedInitializer(_class2$E.prototype, "_startColorVar", [serializable$9], function () { + return new Color$1(0, 0, 0, 0); + }), _initializer41 = applyDecoratedInitializer(_class2$E.prototype, "_endColor", [serializable$9], function () { + return new Color$1(255, 255, 255, 0); + }), _initializer42 = applyDecoratedInitializer(_class2$E.prototype, "_endColorVar", [serializable$9], function () { + return new Color$1(0, 0, 0, 0); + }), _initializer43 = applyDecoratedInitializer(_class2$E.prototype, "_positionType", [serializable$9], function () { + return PositionType.FREE; + })), _class2$E)) || _class$I)); + + var _dec$I, _dec2$E, _class2$D, _class3$g, _initializer$B, _initializer2$y, _initializer3$r, _initializer4$o, _initializer5$k, _initializer6$g, _class4$2; + var Point = function () { + function Point(point, dir) { + this.point = new Vec2(); + this.dir = new Vec2(); + this.distance = 0; + this.time = 0; + if (point) this.point.set(point); + if (dir) this.dir.set(dir); + } + var _proto = Point.prototype; + _proto.setPoint = function setPoint(x, y) { + this.point.x = x; + this.point.y = y; + }; + _proto.setDir = function setDir(x, y) { + this.dir.x = x; + this.dir.y = y; + }; + return Point; + }(); + var MotionStreak = exports('eA', (_dec$I = ccclass$t('cc.MotionStreak'), _dec2$E = type$8(Texture2D), _dec$I(_class2$D = (_class3$g = (_class4$2 = function (_UIRenderer) { + _inheritsLoose(MotionStreak, _UIRenderer); + function MotionStreak() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _UIRenderer.call.apply(_UIRenderer, [this].concat(args)) || this; + _this._preview = _initializer$B && _initializer$B(); + _this._fadeTime = _initializer2$y && _initializer2$y(); + _this._minSeg = _initializer3$r && _initializer3$r(); + _this._stroke = _initializer4$o && _initializer4$o(); + _this._texture = _initializer5$k && _initializer5$k(); + _this._fastMode = _initializer6$g && _initializer6$g(); + _this._points = []; + return _this; + } + var _proto2 = MotionStreak.prototype; + _proto2.onEnable = function onEnable() { + _UIRenderer.prototype.onEnable.call(this); + this.reset(); + }; + _proto2._flushAssembler = function _flushAssembler() { + var assembler = MotionStreak.Assembler.getAssembler(this); + if (this._assembler !== assembler) { + this._assembler = assembler; + } + if (!this._renderData) { + if (this._assembler && this._assembler.createData) { + this._renderData = this._assembler.createData(this); + this._renderData.material = this.material; + this._updateColor(); + } + } + }; + _proto2.onFocusInEditor = function onFocusInEditor() { + if (this._preview) { + this.reset(); + } + }; + _proto2.onLostFocusInEditor = function onLostFocusInEditor() { + if (this._preview) { + this.reset(); + } + }; + _proto2.reset = function reset() { + this._points.length = 0; + if (this._renderData) this._renderData.clear(); + }; + _proto2.lateUpdate = function lateUpdate(dt) { + if (this._assembler) this._assembler.update(this, dt); + }; + _proto2._render = function _render(render) { + render.commitComp(this, this._renderData, this._texture, this._assembler, null); + }; + _createClass(MotionStreak, [{ + key: "preview", + get: function get() { + return this._preview; + }, + set: function set(val) { + this._preview = val; + this.reset(); + } + }, { + key: "fadeTime", + get: function get() { + return this._fadeTime; + }, + set: function set(val) { + this._fadeTime = val; + this.reset(); + } + }, { + key: "minSeg", + get: function get() { + return this._minSeg; + }, + set: function set(val) { + this._minSeg = val; + } + }, { + key: "stroke", + get: function get() { + return this._stroke; + }, + set: function set(val) { + this._stroke = val; + } + }, { + key: "texture", + get: function get() { + return this._texture; + }, + set: function set(val) { + if (this._texture === val) return; + this._texture = val; + } + }, { + key: "fastMode", + get: function get() { + return this._fastMode; + }, + set: function set(val) { + this._fastMode = val; + } + }, { + key: "points", + get: function get() { + return this._points; + } + }]); + return MotionStreak; + }(UIRenderer), _class4$2.Point = Point, _class4$2), (_applyDecoratedDescriptor(_class3$g.prototype, "texture", [_dec2$E], Object.getOwnPropertyDescriptor(_class3$g.prototype, "texture"), _class3$g.prototype), _initializer$B = applyDecoratedInitializer(_class3$g.prototype, "_preview", [serializable$9], function () { + return false; + }), _initializer2$y = applyDecoratedInitializer(_class3$g.prototype, "_fadeTime", [serializable$9], function () { + return 1; + }), _initializer3$r = applyDecoratedInitializer(_class3$g.prototype, "_minSeg", [serializable$9], function () { + return 1; + }), _initializer4$o = applyDecoratedInitializer(_class3$g.prototype, "_stroke", [serializable$9], function () { + return 64; + }), _initializer5$k = applyDecoratedInitializer(_class3$g.prototype, "_texture", [serializable$9], function () { + return null; + }), _initializer6$g = applyDecoratedInitializer(_class3$g.prototype, "_fastMode", [serializable$9], function () { + return false; + })), _class3$g)) || _class2$D)); + + new Vec2(); + var _normal = new Vec2(); + var _vec2 = new Vec2(); + var QUAD_INDICES; + function normal(out, dir) { + out.x = -dir.y; + out.y = dir.x; + return out; + } + var MotionStreakAssembler = { + createData: function createData(comp) { + var renderData = comp.requestRenderData(); + renderData.dataLength = 4; + renderData.resize(16, (16 - 2) * 3); + return renderData; + }, + update: function update(comp, dt) { + var stroke = comp.stroke / 2; + var node = comp.node; + var matrix = node.worldMatrix; + var tx = matrix.m12; + var ty = matrix.m13; + var points = comp.points; + var cur; + if (points.length > 1) { + var point = points[0]; + var difx = point.point.x - tx; + var dify = point.point.y - ty; + if (difx * difx + dify * dify < comp.minSeg) { + cur = point; + } + } + if (!cur) { + cur = new MotionStreak.Point(); + points.unshift(cur); + } + cur.setPoint(tx, ty); + cur.time = comp.fadeTime + dt; + var vertexCount = 0; + var indexCount = 0; + if (points.length < 2) { + return; + } + var renderData = comp.renderData; + this.updateRenderDataCache(comp, renderData); + var color = comp.color; + var cr = color.r; + var cg = color.g; + var cb = color.b; + var ca = color.a; + var prev = points[1]; + prev.distance = Vec2.subtract(_vec2, cur.point, prev.point).length(); + _vec2.normalize(); + prev.setDir(_vec2.x, _vec2.y); + cur.setDir(_vec2.x, _vec2.y); + renderData.dataLength = points.length * 2; + var data = renderData.data; + var fadeTime = comp.fadeTime; + var findLast = false; + for (var i = points.length - 1; i >= 0; i--) { + var p = points[i]; + var _point = p.point; + var dir = p.dir; + p.time -= dt; + if (p.time < 0) { + points.splice(i, 1); + continue; + } + var progress = p.time / fadeTime; + var next = points[i - 1]; + if (!findLast) { + if (!next) { + points.splice(i, 1); + continue; + } + _point.x = next.point.x - dir.x * progress; + _point.y = next.point.y - dir.y * progress; + } + findLast = true; + normal(_normal, dir); + var da = progress * ca; + var c = (da << 24 >>> 0) + (cb << 16) + (cg << 8) + cr; + var offset = vertexCount; + data[offset].x = _point.x + _normal.x * stroke; + data[offset].y = _point.y + _normal.y * stroke; + data[offset].u = 1; + data[offset].v = progress; + data[offset].color._val = c; + offset += 1; + data[offset].x = _point.x - _normal.x * stroke; + data[offset].y = _point.y - _normal.y * stroke; + data[offset].u = 0; + data[offset].v = progress; + data[offset].color._val = c; + vertexCount += 2; + } + indexCount = vertexCount <= 2 ? 0 : (vertexCount - 2) * 3; + renderData.resize(vertexCount, indexCount); + }, + updateWorldVertexAllData: function updateWorldVertexAllData(comp) { + var renderData = comp.renderData; + var stride = renderData.floatStride; + var dataList = renderData.data; + var vData = renderData.chunk.vb; + for (var i = 0; i < dataList.length; i++) { + var offset = i * stride; + vData[offset + 0] = dataList[i].x; + vData[offset + 1] = dataList[i].y; + vData[offset + 2] = dataList[i].z; + vData[offset + 3] = dataList[i].u; + vData[offset + 4] = dataList[i].v; + Color$1.toArray(vData, dataList[i].color, offset + 5); + } + }, + createQuadIndices: function createQuadIndices(comp, indexCount) { + var renderData = comp.renderData; + var chunk = renderData.chunk; + var vid = 0; + var meshBuffer = chunk.meshBuffer; + var indexOffset = meshBuffer.indexOffset; + QUAD_INDICES = null; + QUAD_INDICES = new Uint16Array(indexCount); + for (var i = 0, l = indexCount; i < l; i += 2) { + var start = vid + i; + QUAD_INDICES[indexOffset++] = start; + QUAD_INDICES[indexOffset++] = start + 2; + QUAD_INDICES[indexOffset++] = start + 1; + QUAD_INDICES[indexOffset++] = start + 1; + QUAD_INDICES[indexOffset++] = start + 2; + QUAD_INDICES[indexOffset++] = start + 3; + } + }, + updateRenderDataCache: function updateRenderDataCache(comp, renderData) { + if (renderData.passDirty) { + renderData.updatePass(comp); + } + if (renderData.nodeDirty) { + renderData.updateNode(comp); + } + if (renderData.textureDirty && comp.texture) { + renderData.updateTexture(comp.texture); + renderData.material = comp.getRenderMaterial(0); + } + if (renderData.hashDirty) { + renderData.updateHash(); + } + }, + updateRenderData: function updateRenderData(comp) { + }, + updateColor: function updateColor(comp) {}, + fillBuffers: function fillBuffers(comp, renderer) { + var renderData = comp.renderData; + var chunk = renderData.chunk; + var dataList = renderData.data; + var vertexCount = renderData.vertexCount; + var indexCount = renderData.indexCount; + var vData = chunk.vb; + var vertexOffset = 0; + for (var i = 0; i < vertexCount; i++) { + var vert = dataList[i]; + vData[vertexOffset++] = vert.x; + vData[vertexOffset++] = vert.y; + vData[vertexOffset++] = vert.z; + vData[vertexOffset++] = vert.u; + vData[vertexOffset++] = vert.v; + Color$1.toArray(vData, vert.color, vertexOffset); + vertexOffset += 4; + } + chunk.bufferId; + var vid = chunk.vertexOffset; + var meshBuffer = chunk.meshBuffer; + var ib = chunk.meshBuffer.iData; + var indexOffset = meshBuffer.indexOffset; + for (var _i = 0, l = indexCount; _i < l; _i += 2) { + var start = vid + _i; + ib[indexOffset++] = start; + ib[indexOffset++] = start + 2; + ib[indexOffset++] = start + 1; + ib[indexOffset++] = start + 1; + ib[indexOffset++] = start + 2; + ib[indexOffset++] = start + 3; + } + meshBuffer.indexOffset += renderData.indexCount; + meshBuffer.setDirty(); + } + }; + var MotionStreakAssemblerManager = exports('eB', { + getAssembler: function getAssembler(comp) { + return MotionStreakAssembler; + } + }); + MotionStreak.Assembler = MotionStreakAssemblerManager; + + var ParticleAssembler = { + maxParticleDeltaTime: 0, + createData: function createData(comp) { + return MeshRenderData.add(); + }, + removeData: function removeData(data) { + MeshRenderData.remove(data); + }, + updateRenderData: function updateRenderData() {}, + fillBuffers: function fillBuffers(comp, renderer) {} + }; + var ParticleSystem2DAssembler = exports('eC', { + getAssembler: function getAssembler(comp) { + if (!ParticleAssembler.maxParticleDeltaTime) { + ParticleAssembler.maxParticleDeltaTime = legacyCC.game.frameTime / 1000 * 2; + } + return ParticleAssembler; + } + }); + ParticleSystem2D.Assembler = ParticleSystem2DAssembler; + + var ERigidBody2DType; exports('eG', ERigidBody2DType); + (function (ERigidBody2DType) { + ERigidBody2DType[ERigidBody2DType["Static"] = 0] = "Static"; + ERigidBody2DType[ERigidBody2DType["Kinematic"] = 1] = "Kinematic"; + ERigidBody2DType[ERigidBody2DType["Dynamic"] = 2] = "Dynamic"; + ERigidBody2DType[ERigidBody2DType["Animated"] = 3] = "Animated"; + })(ERigidBody2DType || (exports('eG', ERigidBody2DType = {}))); + Enum(ERigidBody2DType); + var ECollider2DType; exports('eH', ECollider2DType); + (function (ECollider2DType) { + ECollider2DType[ECollider2DType["None"] = 0] = "None"; + ECollider2DType[ECollider2DType["BOX"] = 1] = "BOX"; + ECollider2DType[ECollider2DType["CIRCLE"] = 2] = "CIRCLE"; + ECollider2DType[ECollider2DType["POLYGON"] = 3] = "POLYGON"; + })(ECollider2DType || (exports('eH', ECollider2DType = {}))); + Enum(ECollider2DType); + var EJoint2DType; exports('eI', EJoint2DType); + (function (EJoint2DType) { + EJoint2DType[EJoint2DType["None"] = 0] = "None"; + EJoint2DType[EJoint2DType["DISTANCE"] = 1] = "DISTANCE"; + EJoint2DType[EJoint2DType["SPRING"] = 2] = "SPRING"; + EJoint2DType[EJoint2DType["WHEEL"] = 3] = "WHEEL"; + EJoint2DType[EJoint2DType["MOUSE"] = 4] = "MOUSE"; + EJoint2DType[EJoint2DType["FIXED"] = 5] = "FIXED"; + EJoint2DType[EJoint2DType["SLIDER"] = 6] = "SLIDER"; + EJoint2DType[EJoint2DType["RELATIVE"] = 7] = "RELATIVE"; + EJoint2DType[EJoint2DType["HINGE"] = 8] = "HINGE"; + })(EJoint2DType || (exports('eI', EJoint2DType = {}))); + Enum(EJoint2DType); + var PhysicsGroup$1; exports('eJ', PhysicsGroup$1); + (function (PhysicsGroup) { + PhysicsGroup[PhysicsGroup["DEFAULT"] = 1] = "DEFAULT"; + })(PhysicsGroup$1 || (exports('eJ', PhysicsGroup$1 = {}))); + Enum(PhysicsGroup$1); + var ERaycast2DType; exports('eK', ERaycast2DType); + (function (ERaycast2DType) { + ERaycast2DType[ERaycast2DType["Closest"] = 0] = "Closest"; + ERaycast2DType[ERaycast2DType["Any"] = 1] = "Any"; + ERaycast2DType[ERaycast2DType["AllClosest"] = 2] = "AllClosest"; + ERaycast2DType[ERaycast2DType["All"] = 3] = "All"; + })(ERaycast2DType || (exports('eK', ERaycast2DType = {}))); + var Contact2DType = exports('eL', { + None: 'none-contact', + BEGIN_CONTACT: 'begin-contact', + END_CONTACT: 'end-contact', + PRE_SOLVE: 'pre-solve', + POST_SOLVE: 'post-solve' + }); + var EPhysics2DDrawFlags; exports('eM', EPhysics2DDrawFlags); + (function (EPhysics2DDrawFlags) { + EPhysics2DDrawFlags[EPhysics2DDrawFlags["None"] = 0] = "None"; + EPhysics2DDrawFlags[EPhysics2DDrawFlags["Shape"] = 1] = "Shape"; + EPhysics2DDrawFlags[EPhysics2DDrawFlags["Joint"] = 2] = "Joint"; + EPhysics2DDrawFlags[EPhysics2DDrawFlags["Aabb"] = 4] = "Aabb"; + EPhysics2DDrawFlags[EPhysics2DDrawFlags["Pair"] = 8] = "Pair"; + EPhysics2DDrawFlags[EPhysics2DDrawFlags["CenterOfMass"] = 16] = "CenterOfMass"; + EPhysics2DDrawFlags[EPhysics2DDrawFlags["Particle"] = 32] = "Particle"; + EPhysics2DDrawFlags[EPhysics2DDrawFlags["Controller"] = 64] = "Controller"; + EPhysics2DDrawFlags[EPhysics2DDrawFlags["All"] = 63] = "All"; + })(EPhysics2DDrawFlags || (exports('eM', EPhysics2DDrawFlags = {}))); + var PHYSICS_2D_PTM_RATIO = exports('eN', 32); + + function register(id, wrapper) { + log("[PHYSICS2D]: register " + id + "."); + selector.backend[id] = wrapper; + if (!selector.physicsWorld || selector.id === id) { + var mutableSelector = selector; + mutableSelector.id = id; + mutableSelector.wrapper = wrapper; + } + } + function switchTo(id) { + var mutableSelector = selector; + if (selector.physicsWorld && id !== selector.id && selector.backend[id] != null) { + log("[PHYSICS2D]: switch from " + selector.id + " to " + id + "."); + mutableSelector.id = id; + mutableSelector.wrapper = selector.backend[id]; + mutableSelector.physicsWorld = createPhysicsWorld(); + } else { + log("[PHYSICS2D]: using " + mutableSelector.id + "."); + mutableSelector.physicsWorld = createPhysicsWorld(); + } + } + var selector = exports('eF', { + id: '', + switchTo: switchTo, + register: register, + wrapper: {}, + backend: {}, + physicsWorld: null, + runInEditor: !EDITOR + }); + var FUNC = function FUNC() { + return 0; + }; + var ENTIRE_WORLD = { + impl: null, + debugDrawFlags: 0, + setGravity: FUNC, + setAllowSleep: FUNC, + step: FUNC, + syncPhysicsToScene: FUNC, + syncSceneToPhysics: FUNC, + raycast: FUNC, + testPoint: FUNC, + testAABB: FUNC, + drawDebug: FUNC + }; + function checkPhysicsModule(obj) { + if (obj == null) { + errorID(9600); + return true; + } + return false; + } + function createPhysicsWorld() { + if (checkPhysicsModule(selector.wrapper.PhysicsWorld)) { + return ENTIRE_WORLD; + } + return new selector.wrapper.PhysicsWorld(); + } + var EntireBody = { + impl: null, + rigidBody: null, + isAwake: false, + isSleeping: false, + initialize: FUNC, + setType: FUNC, + setLinearDamping: FUNC, + setAngularDamping: FUNC, + setGravityScale: FUNC, + setFixedRotation: FUNC, + setAllowSleep: FUNC, + isActive: FUNC, + setActive: FUNC, + wakeUp: FUNC, + sleep: FUNC, + getMass: FUNC, + getInertia: FUNC, + getLinearVelocity: FUNC, + setLinearVelocity: FUNC, + getLinearVelocityFromWorldPoint: FUNC, + getAngularVelocity: FUNC, + setAngularVelocity: FUNC, + getLocalVector: FUNC, + getWorldVector: FUNC, + getLocalPoint: FUNC, + getWorldPoint: FUNC, + getLocalCenter: FUNC, + getWorldCenter: FUNC, + applyForce: FUNC, + applyForceToCenter: FUNC, + applyTorque: FUNC, + applyLinearImpulse: FUNC, + applyLinearImpulseToCenter: FUNC, + applyAngularImpulse: FUNC, + onEnable: FUNC, + onDisable: FUNC, + onDestroy: FUNC + }; + function createRigidBody() { + var PHYSICS_2D_BUILTIN = selector.id === 'builtin'; + if (PHYSICS_2D_BUILTIN) { + return EntireBody; + } else { + if (checkPhysicsModule(selector.wrapper.RigidBody)) { + return EntireBody; + } + return new selector.wrapper.RigidBody(); + } + } + var CREATE_COLLIDER_PROXY = { + INITED: false + }; + var ENTIRE_SHAPE = { + impl: null, + collider: null, + worldAABB: null, + worldPoints: null, + worldPosition: null, + worldRadius: null, + initialize: FUNC, + apply: FUNC, + onLoad: FUNC, + onEnable: FUNC, + onDisable: FUNC, + onDestroy: FUNC, + onGroupChanged: FUNC + }; + function createShape(type) { + initColliderProxy(); + return CREATE_COLLIDER_PROXY[type](); + } + function initColliderProxy() { + if (CREATE_COLLIDER_PROXY.INITED) return; + CREATE_COLLIDER_PROXY.INITED = true; + CREATE_COLLIDER_PROXY[ECollider2DType.BOX] = function createBoxShape() { + if (checkPhysicsModule(selector.wrapper.BoxShape)) { + return ENTIRE_SHAPE; + } + return new selector.wrapper.BoxShape(); + }; + CREATE_COLLIDER_PROXY[ECollider2DType.CIRCLE] = function createCircleShape() { + if (checkPhysicsModule(selector.wrapper.CircleShape)) { + return ENTIRE_SHAPE; + } + return new selector.wrapper.CircleShape(); + }; + CREATE_COLLIDER_PROXY[ECollider2DType.POLYGON] = function createPolygonShape() { + if (checkPhysicsModule(selector.wrapper.PolygonShape)) { + return ENTIRE_SHAPE; + } + return new selector.wrapper.PolygonShape(); + }; + } + var CREATE_JOINT_PROXY = { + INITED: false + }; + var ENTIRE_JOINT = { + impl: null, + initialize: FUNC, + setDampingRatio: FUNC, + setFrequency: FUNC, + setMaxForce: FUNC, + setTarget: FUNC, + setDistance: FUNC, + setAngularOffset: FUNC, + setCorrectionFactor: FUNC, + setLinearOffset: FUNC, + setMaxLength: FUNC, + setMaxTorque: FUNC, + setLowerLimit: FUNC, + setUpperLimit: FUNC, + setMaxMotorForce: FUNC, + setMaxMotorTorque: FUNC, + setMotorSpeed: FUNC, + enableLimit: FUNC, + enableMotor: FUNC, + setLowerAngle: FUNC, + setUpperAngle: FUNC + }; + function createJoint(type) { + initJointProxy(); + return CREATE_JOINT_PROXY[type](); + } + function initJointProxy() { + if (CREATE_JOINT_PROXY.INITED) return; + CREATE_JOINT_PROXY.INITED = true; + var PHYSICS_2D_BUILTIN = selector.id === 'builtin'; + CREATE_JOINT_PROXY[EJoint2DType.SPRING] = function createSpringJoint() { + if (PHYSICS_2D_BUILTIN) { + return ENTIRE_JOINT; + } else { + if (checkPhysicsModule(selector.wrapper.SpringJoint)) { + return ENTIRE_JOINT; + } + return new selector.wrapper.SpringJoint(); + } + }; + CREATE_JOINT_PROXY[EJoint2DType.DISTANCE] = function createDistanceJoint() { + if (PHYSICS_2D_BUILTIN) { + return ENTIRE_JOINT; + } else { + if (checkPhysicsModule(selector.wrapper.DistanceJoint)) { + return ENTIRE_JOINT; + } + return new selector.wrapper.DistanceJoint(); + } + }; + CREATE_JOINT_PROXY[EJoint2DType.FIXED] = function createFixedJoint() { + if (PHYSICS_2D_BUILTIN) { + return ENTIRE_JOINT; + } else { + if (checkPhysicsModule(selector.wrapper.FixedJoint)) { + return ENTIRE_JOINT; + } + return new selector.wrapper.FixedJoint(); + } + }; + CREATE_JOINT_PROXY[EJoint2DType.MOUSE] = function createMouseJoint() { + if (PHYSICS_2D_BUILTIN) { + return ENTIRE_JOINT; + } else { + if (checkPhysicsModule(selector.wrapper.MouseJoint)) { + return ENTIRE_JOINT; + } + return new selector.wrapper.MouseJoint(); + } + }; + CREATE_JOINT_PROXY[EJoint2DType.RELATIVE] = function createRelativeJoint() { + if (PHYSICS_2D_BUILTIN) { + return ENTIRE_JOINT; + } else { + if (checkPhysicsModule(selector.wrapper.RelativeJoint)) { + return ENTIRE_JOINT; + } + return new selector.wrapper.RelativeJoint(); + } + }; + CREATE_JOINT_PROXY[EJoint2DType.SLIDER] = function createSliderJoint() { + if (PHYSICS_2D_BUILTIN) { + return ENTIRE_JOINT; + } else { + if (checkPhysicsModule(selector.wrapper.SliderJoint)) { + return ENTIRE_JOINT; + } + return new selector.wrapper.SliderJoint(); + } + }; + CREATE_JOINT_PROXY[EJoint2DType.WHEEL] = function createWheelJoint() { + if (PHYSICS_2D_BUILTIN) { + return ENTIRE_JOINT; + } else { + if (checkPhysicsModule(selector.wrapper.WheelJoint)) { + return ENTIRE_JOINT; + } + return new selector.wrapper.WheelJoint(); + } + }; + CREATE_JOINT_PROXY[EJoint2DType.HINGE] = function createHingeJoint() { + if (PHYSICS_2D_BUILTIN) { + return ENTIRE_JOINT; + } else { + if (checkPhysicsModule(selector.wrapper.HingeJoint)) { + return ENTIRE_JOINT; + } + return new selector.wrapper.HingeJoint(); + } + }; + } + + function At(i, vertices) { + var s = vertices.length; + return vertices[i < 0 ? s - -i % s : i % s]; + } + function Copy(i, j, vertices) { + var p = []; + while (j < i) j += vertices.length; + for (; i <= j; ++i) { + p.push(At(i, vertices)); + } + return p; + } + function ConvexPartition$1(vertices) { + ForceCounterClockWise$1(vertices); + var list = []; + var d; + var lowerDist; + var upperDist; + var p; + var lowerInt = new Vec2(); + var upperInt = new Vec2(); + var lowerIndex = 0; + var upperIndex = 0; + var lowerPoly; + var upperPoly; + for (var i = 0; i < vertices.length; ++i) { + if (Reflex(i, vertices)) { + lowerDist = upperDist = 10e7; + for (var j = 0; j < vertices.length; ++j) { + if (Left(At(i - 1, vertices), At(i, vertices), At(j, vertices)) && RightOn(At(i - 1, vertices), At(i, vertices), At(j - 1, vertices))) { + p = LineIntersect(At(i - 1, vertices), At(i, vertices), At(j, vertices), At(j - 1, vertices)); + if (Right(At(i + 1, vertices), At(i, vertices), p)) { + d = SquareDist(At(i, vertices), p); + if (d < lowerDist) { + lowerDist = d; + lowerInt = p; + lowerIndex = j; + } + } + } + if (Left(At(i + 1, vertices), At(i, vertices), At(j + 1, vertices)) && RightOn(At(i + 1, vertices), At(i, vertices), At(j, vertices))) { + p = LineIntersect(At(i + 1, vertices), At(i, vertices), At(j, vertices), At(j + 1, vertices)); + if (Left(At(i - 1, vertices), At(i, vertices), p)) { + d = SquareDist(At(i, vertices), p); + if (d < upperDist) { + upperDist = d; + upperIndex = j; + upperInt = p; + } + } + } + } + if (lowerIndex == (upperIndex + 1) % vertices.length) { + var sp = lowerInt.add(upperInt).multiplyScalar(1 / 2); + lowerPoly = Copy(i, upperIndex, vertices); + lowerPoly.push(sp); + upperPoly = Copy(lowerIndex, i, vertices); + upperPoly.push(sp); + } else { + var highestScore = 0; + var bestIndex = lowerIndex; + while (upperIndex < lowerIndex) { + upperIndex += vertices.length; + } + for (var _j = lowerIndex; _j <= upperIndex; ++_j) { + if (CanSee(i, _j, vertices)) { + var score = 1 / (SquareDist(At(i, vertices), At(_j, vertices)) + 1); + if (Reflex(_j, vertices)) { + if (RightOn(At(_j - 1, vertices), At(_j, vertices), At(i, vertices)) && LeftOn(At(_j + 1, vertices), At(_j, vertices), At(i, vertices))) { + score += 3; + } else { + score += 2; + } + } else { + score += 1; + } + if (score > highestScore) { + bestIndex = _j; + highestScore = score; + } + } + } + lowerPoly = Copy(i, bestIndex, vertices); + upperPoly = Copy(bestIndex, i, vertices); + } + list = list.concat(ConvexPartition$1(lowerPoly)); + list = list.concat(ConvexPartition$1(upperPoly)); + return list; + } + } + list.push(vertices); + for (var _i = list.length - 1; _i >= 0; _i--) { + if (list[_i].length == 0) list.splice(_i, 0); + } + return list; + } + function CanSee(i, j, vertices) { + if (Reflex(i, vertices)) { + if (LeftOn(At(i, vertices), At(i - 1, vertices), At(j, vertices)) && RightOn(At(i, vertices), At(i + 1, vertices), At(j, vertices))) return false; + } else if (RightOn(At(i, vertices), At(i + 1, vertices), At(j, vertices)) || LeftOn(At(i, vertices), At(i - 1, vertices), At(j, vertices))) return false; + if (Reflex(j, vertices)) { + if (LeftOn(At(j, vertices), At(j - 1, vertices), At(i, vertices)) && RightOn(At(j, vertices), At(j + 1, vertices), At(i, vertices))) return false; + } else if (RightOn(At(j, vertices), At(j + 1, vertices), At(i, vertices)) || LeftOn(At(j, vertices), At(j - 1, vertices), At(i, vertices))) return false; + for (var k = 0; k < vertices.length; ++k) { + if ((k + 1) % vertices.length == i || k == i || (k + 1) % vertices.length == j || k == j) { + continue; + } + var intersectionPoint = new Vec2(); + if (LineIntersect2(At(i, vertices), At(j, vertices), At(k, vertices), At(k + 1, vertices), intersectionPoint)) { + return false; + } + } + return true; + } + function Reflex(i, vertices) { + return Right(i, vertices); + } + function Right(a, b, c) { + if (typeof c === 'undefined') { + var i = a; + var vertices = b; + a = At(i - 1, vertices); + b = At(i, vertices); + c = At(i + 1, vertices); + if (typeof a === 'undefined') { + a = b; + } + if (typeof c === 'undefined') { + c = b; + } + } + return Area(a, b, c) < 0; + } + function Left(a, b, c) { + return Area(a, b, c) > 0; + } + function LeftOn(a, b, c) { + return Area(a, b, c) >= 0; + } + function RightOn(a, b, c) { + return Area(a, b, c) <= 0; + } + function SquareDist(a, b) { + var dx = b.x - a.x; + var dy = b.y - a.y; + return dx * dx + dy * dy; + } + function ForceCounterClockWise$1(vertices) { + if (!IsCounterClockWise(vertices)) { + vertices.reverse(); + } + } + function IsCounterClockWise(vertices) { + if (vertices.length < 3) return true; + return GetSignedArea(vertices) > 0; + } + function GetSignedArea(vertices) { + var i; + var area = 0; + for (i = 0; i < vertices.length; i++) { + var j = (i + 1) % vertices.length; + area += vertices[i].x * vertices[j].y; + area -= vertices[i].y * vertices[j].x; + } + area /= 2; + return area; + } + function LineIntersect(p1, p2, q1, q2) { + var i = new Vec2(); + var a1 = p2.y - p1.y; + var b1 = p1.x - p2.x; + var c1 = a1 * p1.x + b1 * p1.y; + var a2 = q2.y - q1.y; + var b2 = q1.x - q2.x; + var c2 = a2 * q1.x + b2 * q1.y; + var det = a1 * b2 - a2 * b1; + if (!FloatEquals(det, 0)) { + i.x = (b2 * c1 - b1 * c2) / det; + i.y = (a1 * c2 - a2 * c1) / det; + } + return i; + } + function LineIntersect2(a0, a1, b0, b1, intersectionPoint) { + if (a0 == b0 || a0 == b1 || a1 == b0 || a1 == b1) return false; + var x1 = a0.x; + var y1 = a0.y; + var x2 = a1.x; + var y2 = a1.y; + var x3 = b0.x; + var y3 = b0.y; + var x4 = b1.x; + var y4 = b1.y; + if (Math.max(x1, x2) < Math.min(x3, x4) || Math.max(x3, x4) < Math.min(x1, x2)) return false; + if (Math.max(y1, y2) < Math.min(y3, y4) || Math.max(y3, y4) < Math.min(y1, y2)) return false; + var ua = (x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3); + var ub = (x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3); + var denom = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1); + if (Math.abs(denom) < 10e-7) { + return false; + } + ua /= denom; + ub /= denom; + if (ua > 0 && ua < 1 && ub > 0 && ub < 1) { + intersectionPoint.x = x1 + ua * (x2 - x1); + intersectionPoint.y = y1 + ua * (y2 - y1); + return true; + } + return false; + } + function FloatEquals(value1, value2) { + return Math.abs(value1 - value2) <= 10e-7; + } + function Area(a, b, c) { + return a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y); + } + + var PolygonSeparator = /*#__PURE__*/Object.freeze({ + __proto__: null, + ConvexPartition: ConvexPartition$1, + ForceCounterClockWise: ForceCounterClockWise$1, + IsCounterClockWise: IsCounterClockWise + }); + + function ConvexPartition(polygon) { + ForceCounterClockWise(polygon); + var convex = true; + for (var i = 0, len = polygon.length; i < len; ++i) { + if (!isConvex(polygon[(i + len - 1) % len], polygon[i], polygon[(i + 1) % len])) { + convex = false; + break; + } + } + if (convex) { + return [polygon]; + } + var ret = []; + var triangles = Triangulate(polygon); + if (!triangles) return null; + for (; triangles.length;) { + var poly = triangles.splice(0, 1)[0]; + for (var iPoly = 0, polyLen = poly.length; iPoly < polyLen; ++iPoly) { + var diag1 = poly[iPoly]; + var diag2 = poly[(iPoly + 1) % polyLen]; + var tri3 = null; + var iTri2 = 0; + for (; iTri2 < triangles.length; ++iTri2) { + var triangle = triangles[iTri2]; + for (var _i = 0; _i < 3; ++_i) { + var tri1 = triangle[_i]; + var tri2 = triangle[(_i + 1) % 3]; + if (equals(diag1, tri2) && equals(diag2, tri1)) { + tri3 = triangle[(_i + 2) % 3]; + break; + } + } + if (tri3) { + break; + } + } + if (!tri3) { + continue; + } + if (area(poly[(iPoly + polyLen - 1) % polyLen], diag1, tri3) > 0) { + continue; + } + if (area(tri3, diag2, poly[(iPoly + 2) % polyLen]) > 0) { + continue; + } + var newPoly = []; + for (var _i2 = (iPoly + 1) % polyLen; _i2 !== iPoly; _i2 = (_i2 + 1) % polyLen) { + newPoly.push(poly[_i2]); + } + newPoly.push(diag1, tri3); + poly = newPoly; + polyLen = newPoly.length; + iPoly = -1; + triangles.splice(iTri2, 1); + } + ret.push(poly); + } + return ret; + } + var Vertex = function Vertex() { + this.isActive = false; + this.isConvex = false; + this.isEar = false; + this.point = null; + this.angleCos = 0; + this.shouldUpdate = false; + this.index = 0; + this.prev = null; + this.next = null; + }; + function area(a, b, c) { + return (b.y - a.y) * (c.x - b.x) - (b.x - a.x) * (c.y - b.y); + } + function isConvex(p1, p2, p3) { + return area(p1, p2, p3) < 0; + } + function equals(a, b) { + return a.x === b.x && a.y === b.y; + } + function isClockwise(polygon) { + var sum = 0; + for (var i = 0, len = polygon.length; i < len; ++i) { + var p1 = polygon[i]; + var p2 = polygon[(i + 1) % len]; + sum += (p2.x - p1.x) * (p2.y + p1.y); + } + return sum > 0; + } + function ForceCounterClockWise(vertices) { + if (isClockwise(vertices)) { + vertices.reverse(); + } + } + function updateVertex(vertex, vertices) { + if (!vertex.shouldUpdate) { + return; + } + vertex.shouldUpdate = false; + var v1 = vertex.prev.point; + var v2 = vertex.point; + var v3 = vertex.next.point; + vertex.isConvex = isConvex(v1, v2, v3); + var v1x = v1.x - v2.x; + var v1y = v1.y - v2.y; + var v1Len = Math.sqrt(v1x * v1x + v1y * v1y); + v1x /= v1Len; + v1y /= v1Len; + var v3x = v3.x - v2.x; + var v3y = v3.y - v2.y; + var v3Len = Math.sqrt(v3x * v3x + v3y * v3y); + v3x /= v3Len; + v3y /= v3Len; + vertex.angleCos = v1x * v3x + v1y * v3y; + if (vertex.isConvex) { + vertex.isEar = true; + for (var i = 0, len = vertices.length; i < len; ++i) { + var curr = vertices[i]; + if (!curr.isActive || curr === vertex) { + continue; + } + var currentPoint = curr.point; + if (equals(v1, currentPoint) || equals(v2, currentPoint) || equals(v3, currentPoint)) { + continue; + } + var areaA = area(v1, currentPoint, v2); + var areaB = area(v2, currentPoint, v3); + var areaC = area(v3, currentPoint, v1); + if (areaA > 0 && areaB > 0 && areaC > 0) { + vertex.isEar = false; + break; + } + if (areaA === 0 && areaB >= 0 && areaC >= 0) { + if (area(v1, curr.prev.point, v2) > 0 || area(v1, curr.next.point, v2) > 0) { + vertex.isEar = false; + break; + } + } + if (areaB === 0 && areaA >= 0 && areaC >= 0) { + if (area(v2, curr.prev.point, v3) > 0 || area(v2, curr.next.point, v3) > 0) { + vertex.isEar = false; + break; + } + } + if (areaC === 0 && areaA >= 0 && areaB >= 0) { + if (area(v3, curr.prev.point, v1) > 0 || area(v3, curr.next.point, v1) > 0) { + vertex.isEar = false; + break; + } + } + } + } else { + vertex.isEar = false; + } + } + function removeCollinearOrDuplicate(start) { + for (var curr = start, end = start;;) { + if (equals(curr.point, curr.next.point) || area(curr.prev.point, curr.point, curr.next.point) === 0) { + curr.prev.next = curr.next; + curr.next.prev = curr.prev; + curr.prev.shouldUpdate = true; + curr.next.shouldUpdate = true; + if (curr === curr.next) { + break; + } + end = curr.prev; + curr = curr.next; + continue; + } + curr = curr.next; + if (curr === end) { + break; + } + } + } + function Triangulate(polygon) { + ForceCounterClockWise(polygon); + if (polygon.length < 4) { + return [polygon]; + } + var len = polygon.length; + var vertices = []; + var triangles = []; + for (var i = 0; i < len; ++i) { + var v = new Vertex(); + v.isActive = true; + v.isConvex = false; + v.isEar = false; + v.point = polygon[i]; + v.angleCos = 0; + v.shouldUpdate = true; + v.index = i; + vertices.push(v); + } + for (var _i3 = 0; _i3 < len; ++_i3) { + var vertex = vertices[_i3]; + vertex.prev = vertices[(_i3 + len - 1) % len]; + vertex.next = vertices[(_i3 + 1) % len]; + } + vertices.forEach(function (vertex) { + return updateVertex(vertex, vertices); + }); + for (var _i4 = 0; _i4 < len - 3; ++_i4) { + var ear = void 0; + for (var j = 0; j < len; ++j) { + var _vertex = vertices[j]; + if (!_vertex.isActive || !_vertex.isEar) { + continue; + } + if (!ear) { + ear = _vertex; + } else if (_vertex.angleCos > ear.angleCos) { + ear = _vertex; + } + } + if (!ear) { + for (var i_1 = 0; i_1 < len; ++i_1) { + var _vertex2 = vertices[i_1]; + if (_vertex2.isActive) { + var p1 = _vertex2.prev.point; + var p2 = _vertex2.point; + var p3 = _vertex2.next.point; + if (Math.abs(area(p1, p2, p3)) > 1e-5) { + console.log('Failed to find ear. There might be self-intersection in the polygon.'); + return null; + } + } + } + break; + } + triangles.push([ear.prev.point, ear.point, ear.next.point]); + ear.isActive = false; + ear.prev.next = ear.next; + ear.next.prev = ear.prev; + ear.prev.shouldUpdate = true; + ear.next.shouldUpdate = true; + removeCollinearOrDuplicate(ear.next); + if (_i4 === len - 4) { + break; + } + for (var i_2 = 0; i_2 < len; ++i_2) { + updateVertex(vertices[i_2], vertices); + } + } + for (var _i5 = 0; _i5 < len; ++_i5) { + var _vertex3 = vertices[_i5]; + if (_vertex3.isActive) { + _vertex3.prev.isActive = false; + _vertex3.next.isActive = false; + var _p = _vertex3.prev.point; + var _p2 = _vertex3.point; + var _p3 = _vertex3.next.point; + if (Math.abs(area(_p, _p2, _p3)) > 1e-5) { + triangles.push([_p, _p2, _p3]); + } + } + } + return triangles; + } + + var PolygonPartition = /*#__PURE__*/Object.freeze({ + __proto__: null, + ConvexPartition: ConvexPartition + }); + + var ERigidBodyType; + (function (ERigidBodyType) { + ERigidBodyType[ERigidBodyType["DYNAMIC"] = 1] = "DYNAMIC"; + ERigidBodyType[ERigidBodyType["STATIC"] = 2] = "STATIC"; + ERigidBodyType[ERigidBodyType["KINEMATIC"] = 4] = "KINEMATIC"; + })(ERigidBodyType || (ERigidBodyType = {})); + Enum(ERigidBodyType); + var EAxisDirection; + (function (EAxisDirection) { + EAxisDirection[EAxisDirection["X_AXIS"] = 0] = "X_AXIS"; + EAxisDirection[EAxisDirection["Y_AXIS"] = 1] = "Y_AXIS"; + EAxisDirection[EAxisDirection["Z_AXIS"] = 2] = "Z_AXIS"; + })(EAxisDirection || (EAxisDirection = {})); + Enum(EAxisDirection); + var ED6Axis; + (function (ED6Axis) { + ED6Axis[ED6Axis["X"] = 0] = "X"; + ED6Axis[ED6Axis["Y"] = 1] = "Y"; + ED6Axis[ED6Axis["Z"] = 2] = "Z"; + ED6Axis[ED6Axis["SWING1"] = 3] = "SWING1"; + ED6Axis[ED6Axis["SWING2"] = 4] = "SWING2"; + ED6Axis[ED6Axis["TWIST"] = 5] = "TWIST"; + })(ED6Axis || (ED6Axis = {})); + Enum(ED6Axis); + var ESimplexType; + (function (ESimplexType) { + ESimplexType[ESimplexType["VERTEX"] = 1] = "VERTEX"; + ESimplexType[ESimplexType["LINE"] = 2] = "LINE"; + ESimplexType[ESimplexType["TRIANGLE"] = 3] = "TRIANGLE"; + ESimplexType[ESimplexType["TETRAHEDRON"] = 4] = "TETRAHEDRON"; + })(ESimplexType || (ESimplexType = {})); + Enum(ESimplexType); + var EColliderType; + (function (EColliderType) { + EColliderType[EColliderType["BOX"] = 0] = "BOX"; + EColliderType[EColliderType["SPHERE"] = 1] = "SPHERE"; + EColliderType[EColliderType["CAPSULE"] = 2] = "CAPSULE"; + EColliderType[EColliderType["CYLINDER"] = 3] = "CYLINDER"; + EColliderType[EColliderType["CONE"] = 4] = "CONE"; + EColliderType[EColliderType["MESH"] = 5] = "MESH"; + EColliderType[EColliderType["PLANE"] = 6] = "PLANE"; + EColliderType[EColliderType["SIMPLEX"] = 7] = "SIMPLEX"; + EColliderType[EColliderType["TERRAIN"] = 8] = "TERRAIN"; + })(EColliderType || (EColliderType = {})); + Enum(EColliderType); + var EConstraintType; + (function (EConstraintType) { + EConstraintType[EConstraintType["POINT_TO_POINT"] = 0] = "POINT_TO_POINT"; + EConstraintType[EConstraintType["HINGE"] = 1] = "HINGE"; + EConstraintType[EConstraintType["FIXED"] = 2] = "FIXED"; + EConstraintType[EConstraintType["CONFIGURABLE"] = 3] = "CONFIGURABLE"; + })(EConstraintType || (EConstraintType = {})); + Enum(EConstraintType); + var EConstraintMode; + (function (EConstraintMode) { + EConstraintMode[EConstraintMode["FREE"] = 0] = "FREE"; + EConstraintMode[EConstraintMode["LIMITED"] = 1] = "LIMITED"; + EConstraintMode[EConstraintMode["LOCKED"] = 2] = "LOCKED"; + })(EConstraintMode || (EConstraintMode = {})); + Enum(EConstraintMode); + var EDriverMode; + (function (EDriverMode) { + EDriverMode[EDriverMode["DISABLED"] = 0] = "DISABLED"; + EDriverMode[EDriverMode["SERVO"] = 1] = "SERVO"; + EDriverMode[EDriverMode["INDUCTION"] = 2] = "INDUCTION"; + })(EDriverMode || (EDriverMode = {})); + Enum(EDriverMode); + var ECharacterControllerType; + (function (ECharacterControllerType) { + ECharacterControllerType[ECharacterControllerType["BOX"] = 0] = "BOX"; + ECharacterControllerType[ECharacterControllerType["CAPSULE"] = 1] = "CAPSULE"; + })(ECharacterControllerType || (ECharacterControllerType = {})); + Enum(ECharacterControllerType); + var PhysicsGroup; + (function (PhysicsGroup) { + PhysicsGroup[PhysicsGroup["DEFAULT"] = 1] = "DEFAULT"; + })(PhysicsGroup || (PhysicsGroup = {})); + Enum(PhysicsGroup); + + var CollisionMatrix = function CollisionMatrix(strategy) { + if (strategy === 1) { + var self = this; + var _loop = function _loop(i) { + var key = "_" + (1 << i); + self[key] = 0; + self.updateArray = []; + Object.defineProperty(self, 1 << i, { + get: function get() { + return this[key]; + }, + set: function set(v) { + if (this[key] !== v) { + this[key] = v; + if (this.updateArray.indexOf(i) < 0) { + this.updateArray.push(i); + } + } + } + }); + }; + for (var i = 0; i < 32; i++) { + _loop(i); + } + this['_1'] = PhysicsGroup.DEFAULT; + } else { + for (var _i = 0; _i < 32; _i++) { + var key = 1 << _i; + this["" + key] = 0; + } + this['1'] = PhysicsGroup.DEFAULT; + } + }; + + var instance = null; + legacyCC.internal.PhysicsGroup2D = PhysicsGroup$1; + var PhysicsSystem2D = exports('eO', function (_Eventify) { + _inheritsLoose(PhysicsSystem2D, _Eventify); + function PhysicsSystem2D() { + var _settings$querySettin, _settings$querySettin2, _settings$querySettin3, _settings$querySettin4; + var _this; + _this = _Eventify.call(this) || this; + _this.velocityIterations = 10; + _this.positionIterations = 10; + _this.collisionMatrix = new CollisionMatrix(); + _this._enable = true; + _this._allowSleep = true; + _this._maxSubSteps = 1; + _this._fixedTimeStep = 1.0 / 60.0; + _this._autoSimulation = true; + _this._accumulator = 0; + _this._steping = false; + _this._gravity = new Vec2(0, -10 * PHYSICS_2D_PTM_RATIO); + _this._delayEvents = []; + var gravity = settings.querySettings(Settings.Category.PHYSICS, 'gravity'); + if (gravity) { + Vec2.copy(_this._gravity, gravity); + _this._gravity.multiplyScalar(PHYSICS_2D_PTM_RATIO); + } + _this._allowSleep = (_settings$querySettin = settings.querySettings(Settings.Category.PHYSICS, 'allowSleep')) !== null && _settings$querySettin !== void 0 ? _settings$querySettin : _this._allowSleep; + _this._fixedTimeStep = (_settings$querySettin2 = settings.querySettings(Settings.Category.PHYSICS, 'fixedTimeStep')) !== null && _settings$querySettin2 !== void 0 ? _settings$querySettin2 : _this._fixedTimeStep; + _this._maxSubSteps = (_settings$querySettin3 = settings.querySettings(Settings.Category.PHYSICS, 'maxSubSteps')) !== null && _settings$querySettin3 !== void 0 ? _settings$querySettin3 : _this._maxSubSteps; + _this._autoSimulation = (_settings$querySettin4 = settings.querySettings(Settings.Category.PHYSICS, 'autoSimulation')) !== null && _settings$querySettin4 !== void 0 ? _settings$querySettin4 : _this._autoSimulation; + var collisionMatrix = settings.querySettings(Settings.Category.PHYSICS, 'collisionMatrix'); + if (collisionMatrix) { + for (var i in collisionMatrix) { + var bit = parseInt(i); + var value = 1 << parseInt(i); + _this.collisionMatrix["" + value] = collisionMatrix[bit]; + } + } + var collisionGroups = settings.querySettings(Settings.Category.PHYSICS, 'collisionGroups'); + if (collisionGroups) { + var cg = collisionGroups; + if (cg instanceof Array) { + cg.forEach(function (v) { + PhysicsGroup$1[v.name] = 1 << v.index; + }); + Enum.update(PhysicsGroup$1); + } + } + var mutableSelector = selector; + mutableSelector.physicsWorld = createPhysicsWorld(); + _this.gravity = _this._gravity; + _this.allowSleep = _this._allowSleep; + return _this; + } + var _proto = PhysicsSystem2D.prototype; + _proto.postUpdate = function postUpdate(deltaTime) { + if (!this._enable) { + return; + } + if (!this._autoSimulation) { + return; + } + director.emit(Director.EVENT_BEFORE_PHYSICS); + this.physicsWorld.syncSceneToPhysics(); + this._steping = true; + var fixedTimeStep = this._fixedTimeStep; + var velocityIterations = this.velocityIterations; + var positionIterations = this.positionIterations; + this._accumulator += deltaTime; + var substepIndex = 0; + while (substepIndex++ < this._maxSubSteps && this._accumulator > fixedTimeStep) { + this.physicsWorld.step(fixedTimeStep, velocityIterations, positionIterations); + this._accumulator -= fixedTimeStep; + } + var events = this._delayEvents; + for (var i = 0, l = events.length; i < l; i++) { + var event = events[i]; + event.func.call(event.target); + } + events.length = 0; + this.physicsWorld.syncPhysicsToScene(); + if (this.debugDrawFlags) { + this.physicsWorld.drawDebug(); + } + this._steping = false; + director.emit(Director.EVENT_AFTER_PHYSICS); + }; + _proto._callAfterStep = function _callAfterStep(target, func) { + if (this._steping) { + this._delayEvents.push({ + target: target, + func: func + }); + } else { + func.call(target); + } + }; + _proto.resetAccumulator = function resetAccumulator(time) { + if (time === void 0) { + time = 0; + } + this._accumulator = time; + }; + _proto.step = function step(fixedTimeStep) { + this.physicsWorld.step(fixedTimeStep, this.velocityIterations, this.positionIterations); + }; + _proto.raycast = function raycast(p1, p2, type, mask) { + if (type === void 0) { + type = ERaycast2DType.Closest; + } + if (mask === void 0) { + mask = 0xffffffff; + } + return this.physicsWorld.raycast(p1, p2, type, mask); + }; + _proto.testPoint = function testPoint(p) { + return this.physicsWorld.testPoint(p); + }; + _proto.testAABB = function testAABB(rect) { + return this.physicsWorld.testAABB(rect); + }; + PhysicsSystem2D.constructAndRegister = function constructAndRegister() { + director.registerSystem(PhysicsSystem2D.ID, PhysicsSystem2D.instance, System.Priority.LOW); + }; + _createClass(PhysicsSystem2D, [{ + key: "enable", + get: function get() { + return this._enable; + }, + set: function set(value) { + this._enable = value; + } + }, { + key: "allowSleep", + get: function get() { + return this._allowSleep; + }, + set: function set(v) { + this._allowSleep = v; + { + this.physicsWorld.setAllowSleep(v); + } + } + }, { + key: "gravity", + get: function get() { + return this._gravity; + }, + set: function set(gravity) { + this._gravity.set(gravity); + { + this.physicsWorld.setGravity(new Vec2(gravity.x / PHYSICS_2D_PTM_RATIO, gravity.y / PHYSICS_2D_PTM_RATIO)); + } + } + }, { + key: "maxSubSteps", + get: function get() { + return this._maxSubSteps; + }, + set: function set(value) { + this._maxSubSteps = value; + } + }, { + key: "fixedTimeStep", + get: function get() { + return this._fixedTimeStep; + }, + set: function set(value) { + this._fixedTimeStep = value; + } + }, { + key: "autoSimulation", + get: function get() { + return this._autoSimulation; + }, + set: function set(value) { + this._autoSimulation = value; + } + }, { + key: "debugDrawFlags", + get: function get() { + return this.physicsWorld.debugDrawFlags; + }, + set: function set(v) { + this.physicsWorld.debugDrawFlags = v; + } + }, { + key: "physicsWorld", + get: function get() { + return selector.physicsWorld; + } + }, { + key: "stepping", + get: function get() { + return this._steping; + } + }], [{ + key: "PHYSICS_NONE", + get: function get() { + return !selector.id; + } + }, { + key: "PHYSICS_BUILTIN", + get: function get() { + return selector.id === 'builtin'; + } + }, { + key: "PHYSICS_BOX2D", + get: function get() { + return selector.id === 'box2d'; + } + }, { + key: "PHYSICS_BOX2D_WASM", + get: function get() { + return selector.id === 'box2d-wasm'; + } + }, { + key: "PhysicsGroup", + get: function get() { + return PhysicsGroup$1; + } + }, { + key: "instance", + get: function get() { + if (!instance) { + instance = new PhysicsSystem2D(); + } + return instance; + } + }]); + return PhysicsSystem2D; + }(Eventify(System))); + PhysicsSystem2D.ID = 'PHYSICS_2D'; + director.once(Director.EVENT_INIT, function () { + PhysicsSystem2D.constructAndRegister(); + }); + + var Physics2DManifoldType; exports('eP', Physics2DManifoldType); + (function (Physics2DManifoldType) { + Physics2DManifoldType[Physics2DManifoldType["Circles"] = 0] = "Circles"; + Physics2DManifoldType[Physics2DManifoldType["FaceA"] = 1] = "FaceA"; + Physics2DManifoldType[Physics2DManifoldType["FaceB"] = 2] = "FaceB"; + })(Physics2DManifoldType || (exports('eP', Physics2DManifoldType = {}))); + + var _dec$H, _dec2$D, _dec3$y, _dec4$o, _dec5$n, _dec6$g, _dec7$e, _dec8$9, _dec9$7, _dec10$3, _class$H, _class2$C, _initializer$A, _initializer2$x, _initializer3$q, _initializer4$n, _initializer5$j, _initializer6$f, _initializer7$c, _initializer8$b, _initializer9$9, _initializer10$9, _initializer11$9, _initializer12$8; + var type$3 = type$8, + ccclass$e = ccclass$t; + var RigidBody2D = exports('eQ', (_dec$H = ccclass$e('cc.RigidBody2D'), _dec2$D = type$3(PhysicsGroup), _dec3$y = type$3(ERigidBody2DType), _dec4$o = type$3(CCBoolean), _dec5$n = type$3(CCFloat), _dec6$g = type$3(CCFloat), _dec7$e = type$3(CCFloat), _dec8$9 = type$3(Vec2), _dec9$7 = type$3(CCFloat), _dec10$3 = type$3(CCBoolean), _dec$H(_class$H = (_class2$C = function (_Component) { + _inheritsLoose(RigidBody2D, _Component); + function RigidBody2D() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this.enabledContactListener = _initializer$A && _initializer$A(); + _this.bullet = _initializer2$x && _initializer2$x(); + _this.awakeOnLoad = _initializer3$q && _initializer3$q(); + _this._body = null; + _this._group = _initializer4$n && _initializer4$n(); + _this._type = _initializer5$j && _initializer5$j(); + _this._allowSleep = _initializer6$f && _initializer6$f(); + _this._gravityScale = _initializer7$c && _initializer7$c(); + _this._linearDamping = _initializer8$b && _initializer8$b(); + _this._angularDamping = _initializer9$9 && _initializer9$9(); + _this._linearVelocity = _initializer10$9 && _initializer10$9(); + _this._angularVelocity = _initializer11$9 && _initializer11$9(); + _this._fixedRotation = _initializer12$8 && _initializer12$8(); + return _this; + } + var _proto = RigidBody2D.prototype; + _proto.isAwake = function isAwake() { + if (this._body) { + return this._body.isAwake; + } + return false; + }; + _proto.wakeUp = function wakeUp() { + if (this._body) { + this._body.wakeUp(); + } + }; + _proto.sleep = function sleep() { + if (this._body) { + this._body.sleep(); + } + }; + _proto.getMass = function getMass() { + if (this._body) { + return this._body.getMass(); + } + return 0; + }; + _proto.applyForce = function applyForce(force, point, wake) { + if (this._body) { + this._body.applyForce(force, point, wake); + } + }; + _proto.applyForceToCenter = function applyForceToCenter(force, wake) { + if (this._body) { + this._body.applyForceToCenter(force, wake); + } + }; + _proto.applyTorque = function applyTorque(torque, wake) { + if (this._body) { + this._body.applyTorque(torque, wake); + } + }; + _proto.applyLinearImpulse = function applyLinearImpulse(impulse, point, wake) { + if (this._body) { + this._body.applyLinearImpulse(impulse, point, wake); + } + }; + _proto.applyLinearImpulseToCenter = function applyLinearImpulseToCenter(impulse, wake) { + if (this._body) { + this._body.applyLinearImpulseToCenter(impulse, wake); + } + }; + _proto.applyAngularImpulse = function applyAngularImpulse(impulse, wake) { + if (this._body) { + this._body.applyAngularImpulse(impulse, wake); + } + }; + _proto.getLinearVelocityFromWorldPoint = function getLinearVelocityFromWorldPoint(worldPoint, out) { + if (this._body) { + return this._body.getLinearVelocityFromWorldPoint(worldPoint, out); + } + return out; + }; + _proto.getLocalVector = function getLocalVector(worldVector, out) { + if (this._body) { + return this._body.getLocalVector(worldVector, out); + } + return out; + }; + _proto.getWorldVector = function getWorldVector(localVector, out) { + if (this._body) { + return this._body.getWorldVector(localVector, out); + } + return out; + }; + _proto.getLocalPoint = function getLocalPoint(worldPoint, out) { + if (this._body) { + return this._body.getLocalPoint(worldPoint, out); + } + return out; + }; + _proto.getWorldPoint = function getWorldPoint(localPoint, out) { + if (this._body) { + return this._body.getWorldPoint(localPoint, out); + } + return out; + }; + _proto.getLocalCenter = function getLocalCenter(out) { + if (this._body) { + return this._body.getLocalCenter(out); + } + return out; + }; + _proto.getWorldCenter = function getWorldCenter(out) { + if (this._body) { + return this._body.getWorldCenter(out); + } + return out; + }; + _proto.getInertia = function getInertia() { + if (this._body) { + this._body.getInertia(); + } + return 0; + }; + _proto.onLoad = function onLoad() { + { + this._body = createRigidBody(); + this._body.initialize(this); + } + }; + _proto.onEnable = function onEnable() { + if (this._body) { + this._body.onEnable(); + } + }; + _proto.onDisable = function onDisable() { + if (this._body) { + this._body.onDisable(); + } + }; + _proto.onDestroy = function onDestroy() { + if (this._body) { + this._body.onDestroy(); + } + }; + _createClass(RigidBody2D, [{ + key: "group", + get: function get() { + return this._group; + }, + set: function set(v) { + this._group = v; + } + }, { + key: "type", + get: function get() { + return this._type; + }, + set: function set(v) { + this._type = v; + if (this._body) { + if (v === ERigidBody2DType.Animated) { + this._body.setType(ERigidBody2DType.Kinematic); + } else { + this._body.setType(v); + } + } + } + }, { + key: "allowSleep", + get: function get() { + return this._allowSleep; + }, + set: function set(v) { + this._allowSleep = v; + if (this._body) { + this._body.setAllowSleep(v); + } + } + }, { + key: "gravityScale", + get: function get() { + return this._gravityScale; + }, + set: function set(v) { + this._gravityScale = v; + if (this._body) { + this._body.setGravityScale(v); + } + } + }, { + key: "linearDamping", + get: function get() { + return this._linearDamping; + }, + set: function set(v) { + this._linearDamping = v; + if (this._body) { + this._body.setLinearDamping(v); + } + } + }, { + key: "angularDamping", + get: function get() { + return this._angularDamping; + }, + set: function set(v) { + this._angularDamping = v; + if (this._body) { + this._body.setAngularDamping(v); + } + } + }, { + key: "linearVelocity", + get: function get() { + if (this._body) { + this._body.getLinearVelocity(this._linearVelocity); + } + return this._linearVelocity; + }, + set: function set(v) { + this._linearVelocity = v; + if (this._body) { + this._body.setLinearVelocity(v); + } + } + }, { + key: "angularVelocity", + get: function get() { + if (this._body) { + this._angularVelocity = this._body.getAngularVelocity(); + } + return this._angularVelocity; + }, + set: function set(v) { + this._angularVelocity = v; + if (this._body) { + this._body.setAngularVelocity(v); + } + } + }, { + key: "fixedRotation", + get: function get() { + return this._fixedRotation; + }, + set: function set(v) { + this._fixedRotation = v; + if (this._body) { + this._body.setFixedRotation(v); + } + } + }, { + key: "impl", + get: function get() { + return this._body; + } + }]); + return RigidBody2D; + }(Component), (_applyDecoratedDescriptor(_class2$C.prototype, "group", [_dec2$D], Object.getOwnPropertyDescriptor(_class2$C.prototype, "group"), _class2$C.prototype), _initializer$A = applyDecoratedInitializer(_class2$C.prototype, "enabledContactListener", [serializable$9], function () { + return false; + }), _initializer2$x = applyDecoratedInitializer(_class2$C.prototype, "bullet", [serializable$9], function () { + return false; + }), _applyDecoratedDescriptor(_class2$C.prototype, "type", [_dec3$y], Object.getOwnPropertyDescriptor(_class2$C.prototype, "type"), _class2$C.prototype), _applyDecoratedDescriptor(_class2$C.prototype, "allowSleep", [_dec4$o], Object.getOwnPropertyDescriptor(_class2$C.prototype, "allowSleep"), _class2$C.prototype), _applyDecoratedDescriptor(_class2$C.prototype, "gravityScale", [_dec5$n], Object.getOwnPropertyDescriptor(_class2$C.prototype, "gravityScale"), _class2$C.prototype), _applyDecoratedDescriptor(_class2$C.prototype, "linearDamping", [_dec6$g], Object.getOwnPropertyDescriptor(_class2$C.prototype, "linearDamping"), _class2$C.prototype), _applyDecoratedDescriptor(_class2$C.prototype, "angularDamping", [_dec7$e], Object.getOwnPropertyDescriptor(_class2$C.prototype, "angularDamping"), _class2$C.prototype), _applyDecoratedDescriptor(_class2$C.prototype, "linearVelocity", [_dec8$9], Object.getOwnPropertyDescriptor(_class2$C.prototype, "linearVelocity"), _class2$C.prototype), _applyDecoratedDescriptor(_class2$C.prototype, "angularVelocity", [_dec9$7], Object.getOwnPropertyDescriptor(_class2$C.prototype, "angularVelocity"), _class2$C.prototype), _applyDecoratedDescriptor(_class2$C.prototype, "fixedRotation", [_dec10$3], Object.getOwnPropertyDescriptor(_class2$C.prototype, "fixedRotation"), _class2$C.prototype), _initializer3$q = applyDecoratedInitializer(_class2$C.prototype, "awakeOnLoad", [serializable$9], function () { + return true; + }), _initializer4$n = applyDecoratedInitializer(_class2$C.prototype, "_group", [serializable$9], function () { + return PhysicsGroup.DEFAULT; + }), _initializer5$j = applyDecoratedInitializer(_class2$C.prototype, "_type", [serializable$9], function () { + return ERigidBody2DType.Dynamic; + }), _initializer6$f = applyDecoratedInitializer(_class2$C.prototype, "_allowSleep", [serializable$9], function () { + return true; + }), _initializer7$c = applyDecoratedInitializer(_class2$C.prototype, "_gravityScale", [serializable$9], function () { + return 1; + }), _initializer8$b = applyDecoratedInitializer(_class2$C.prototype, "_linearDamping", [serializable$9], function () { + return 0; + }), _initializer9$9 = applyDecoratedInitializer(_class2$C.prototype, "_angularDamping", [serializable$9], function () { + return 0; + }), _initializer10$9 = applyDecoratedInitializer(_class2$C.prototype, "_linearVelocity", [serializable$9], function () { + return new Vec2(); + }), _initializer11$9 = applyDecoratedInitializer(_class2$C.prototype, "_angularVelocity", [serializable$9], function () { + return 0; + }), _initializer12$8 = applyDecoratedInitializer(_class2$C.prototype, "_fixedRotation", [serializable$9], function () { + return false; + })), _class2$C)) || _class$H)); + + var _dec$G, _dec2$C, _dec3$x, _dec4$n, _dec5$m, _dec6$f, _dec7$d, _dec8$8, _class$G, _class2$B, _initializer$z, _initializer2$w, _initializer3$p, _initializer4$m, _initializer5$i, _initializer6$e, _initializer7$b; + var ccclass$d = ccclass$t, + type$2 = type$8; + var Collider2D = exports('eR', (_dec$G = ccclass$d('cc.Collider2D'), _dec2$C = type$2(CCFloat), _dec3$x = type$2(PhysicsGroup), _dec4$n = type$2(CCFloat), _dec5$m = type$2(CCBoolean), _dec6$f = type$2(CCFloat), _dec7$d = type$2(CCFloat), _dec8$8 = type$2(Vec2), _dec$G(_class$G = (_class2$B = function (_Eventify) { + _inheritsLoose(Collider2D, _Eventify); + function Collider2D() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Eventify.call.apply(_Eventify, [this].concat(args)) || this; + _this.editing = false; + _this.tag = _initializer$z && _initializer$z(); + _this.TYPE = ECollider2DType.None; + _this._shape = null; + _this._body = null; + _this._group = _initializer2$w && _initializer2$w(); + _this._density = _initializer3$p && _initializer3$p(); + _this._sensor = _initializer4$m && _initializer4$m(); + _this._friction = _initializer5$i && _initializer5$i(); + _this._restitution = _initializer6$e && _initializer6$e(); + _this._offset = _initializer7$b && _initializer7$b(); + return _this; + } + var _proto = Collider2D.prototype; + _proto.onLoad = function onLoad() { + { + this._shape = createShape(this.TYPE); + this._shape.initialize(this); + if (this._shape.onLoad) { + this._shape.onLoad(); + } + this._body = this.getComponent(RigidBody2D); + } + }; + _proto.onEnable = function onEnable() { + if (this._shape) { + this._shape.onEnable(); + } + }; + _proto.onDisable = function onDisable() { + if (this._shape && this._shape.onDisable) { + this._shape.onDisable(); + } + }; + _proto.onDestroy = function onDestroy() { + if (this._shape && this._shape.onDestroy) { + this._shape.onDestroy(); + } + }; + _proto.apply = function apply() { + if (this._shape && this._shape.apply) { + this._shape.apply(); + } + }; + _createClass(Collider2D, [{ + key: "group", + get: function get() { + return this._group; + }, + set: function set(v) { + this._group = v; + if (this._shape && this._shape.onGroupChanged) { + this._shape.onGroupChanged(); + } + } + }, { + key: "density", + get: function get() { + return this._density; + }, + set: function set(v) { + this._density = v; + } + }, { + key: "sensor", + get: function get() { + return this._sensor; + }, + set: function set(v) { + this._sensor = v; + } + }, { + key: "friction", + get: function get() { + return this._friction; + }, + set: function set(v) { + this._friction = v; + } + }, { + key: "restitution", + get: function get() { + return this._restitution; + }, + set: function set(v) { + this._restitution = v; + } + }, { + key: "offset", + get: function get() { + return this._offset; + }, + set: function set(v) { + this._offset = v; + } + }, { + key: "body", + get: function get() { + return this._body; + } + }, { + key: "impl", + get: function get() { + return this._shape; + } + }, { + key: "worldAABB", + get: function get() { + if (this._shape) { + return this._shape.worldAABB; + } + return new Rect$1(); + } + }]); + return Collider2D; + }(Eventify(Component)), (_initializer$z = applyDecoratedInitializer(_class2$B.prototype, "tag", [_dec2$C, serializable$9], function () { + return 0; + }), _applyDecoratedDescriptor(_class2$B.prototype, "group", [_dec3$x], Object.getOwnPropertyDescriptor(_class2$B.prototype, "group"), _class2$B.prototype), _applyDecoratedDescriptor(_class2$B.prototype, "density", [_dec4$n], Object.getOwnPropertyDescriptor(_class2$B.prototype, "density"), _class2$B.prototype), _applyDecoratedDescriptor(_class2$B.prototype, "sensor", [_dec5$m], Object.getOwnPropertyDescriptor(_class2$B.prototype, "sensor"), _class2$B.prototype), _applyDecoratedDescriptor(_class2$B.prototype, "friction", [_dec6$f], Object.getOwnPropertyDescriptor(_class2$B.prototype, "friction"), _class2$B.prototype), _applyDecoratedDescriptor(_class2$B.prototype, "restitution", [_dec7$d], Object.getOwnPropertyDescriptor(_class2$B.prototype, "restitution"), _class2$B.prototype), _applyDecoratedDescriptor(_class2$B.prototype, "offset", [_dec8$8], Object.getOwnPropertyDescriptor(_class2$B.prototype, "offset"), _class2$B.prototype), _initializer2$w = applyDecoratedInitializer(_class2$B.prototype, "_group", [serializable$9], function () { + return PhysicsGroup.DEFAULT; + }), _initializer3$p = applyDecoratedInitializer(_class2$B.prototype, "_density", [serializable$9], function () { + return 1.0; + }), _initializer4$m = applyDecoratedInitializer(_class2$B.prototype, "_sensor", [serializable$9], function () { + return false; + }), _initializer5$i = applyDecoratedInitializer(_class2$B.prototype, "_friction", [serializable$9], function () { + return 0.2; + }), _initializer6$e = applyDecoratedInitializer(_class2$B.prototype, "_restitution", [serializable$9], function () { + return 0; + }), _initializer7$b = applyDecoratedInitializer(_class2$B.prototype, "_offset", [serializable$9], function () { + return new Vec2(); + })), _class2$B)) || _class$G)); + + var _dec$F, _dec2$B, _class$F, _class2$A, _initializer$y; + var ccclass$c = ccclass$t; + var BoxCollider2D = exports('eS', (_dec$F = ccclass$c('cc.BoxCollider2D'), _dec2$B = type$8(Size$1), _dec$F(_class$F = (_class2$A = function (_Collider2D) { + _inheritsLoose(BoxCollider2D, _Collider2D); + function BoxCollider2D() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Collider2D.call.apply(_Collider2D, [this].concat(args)) || this; + _this._size = _initializer$y && _initializer$y(); + _this.TYPE = ECollider2DType.BOX; + return _this; + } + _createClass(BoxCollider2D, [{ + key: "size", + get: function get() { + return this._size; + }, + set: function set(v) { + this._size = v; + } + }, { + key: "worldPoints", + get: function get() { + if (this._shape) { + return this._shape.worldPoints; + } + return []; + } + }]); + return BoxCollider2D; + }(Collider2D), (_initializer$y = applyDecoratedInitializer(_class2$A.prototype, "_size", [serializable$9], function () { + return new Size$1(1, 1); + }), _applyDecoratedDescriptor(_class2$A.prototype, "size", [_dec2$B], Object.getOwnPropertyDescriptor(_class2$A.prototype, "size"), _class2$A.prototype)), _class2$A)) || _class$F)); + + var _dec$E, _dec2$A, _class$E, _class2$z, _initializer$x; + var ccclass$b = ccclass$t; + var CircleCollider2D = exports('eT', (_dec$E = ccclass$b('cc.CircleCollider2D'), _dec2$A = type$8(CCFloat), _dec$E(_class$E = (_class2$z = function (_Collider2D) { + _inheritsLoose(CircleCollider2D, _Collider2D); + function CircleCollider2D() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Collider2D.call.apply(_Collider2D, [this].concat(args)) || this; + _this._radius = _initializer$x && _initializer$x(); + _this.TYPE = ECollider2DType.CIRCLE; + return _this; + } + _createClass(CircleCollider2D, [{ + key: "radius", + get: function get() { + return this._radius; + }, + set: function set(v) { + this._radius = v < 0 ? 0 : v; + } + }, { + key: "worldPosition", + get: function get() { + if (this._shape) { + return this._shape.worldPosition; + } + return new Vec2(); + } + }, { + key: "worldRadius", + get: function get() { + if (this._shape) { + return this._shape.worldRadius; + } + return 0; + } + }]); + return CircleCollider2D; + }(Collider2D), (_initializer$x = applyDecoratedInitializer(_class2$z.prototype, "_radius", [serializable$9], function () { + return 1; + }), _applyDecoratedDescriptor(_class2$z.prototype, "radius", [_dec2$A], Object.getOwnPropertyDescriptor(_class2$z.prototype, "radius"), _class2$z.prototype)), _class2$z)) || _class$E)); + + var _dec$D, _dec2$z, _dec3$w, _class$D, _class2$y, _initializer$w, _initializer2$v; + var ccclass$a = ccclass$t; + var PolygonCollider2D = exports('eU', (_dec$D = ccclass$a('cc.PolygonCollider2D'), _dec2$z = type$8(CCFloat), _dec3$w = type$8([Vec2]), _dec$D(_class$D = (_class2$y = function (_Collider2D) { + _inheritsLoose(PolygonCollider2D, _Collider2D); + function PolygonCollider2D() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Collider2D.call.apply(_Collider2D, [this].concat(args)) || this; + _this.threshold = _initializer$w && _initializer$w(); + _this._points = _initializer2$v && _initializer2$v(); + _this.TYPE = ECollider2DType.POLYGON; + return _this; + } + _createClass(PolygonCollider2D, [{ + key: "points", + get: function get() { + return this._points; + }, + set: function set(v) { + this._points = v; + } + }, { + key: "worldPoints", + get: function get() { + if (this._shape) { + return this._shape.worldPoints; + } + return []; + } + }]); + return PolygonCollider2D; + }(Collider2D), (_initializer$w = applyDecoratedInitializer(_class2$y.prototype, "threshold", [_dec2$z], function () { + return 1; + }), _initializer2$v = applyDecoratedInitializer(_class2$y.prototype, "_points", [serializable$9], function () { + return [new Vec2(-1, -1), new Vec2(1, -1), new Vec2(1, 1), new Vec2(-1, 1)]; + }), _applyDecoratedDescriptor(_class2$y.prototype, "points", [_dec3$w], Object.getOwnPropertyDescriptor(_class2$y.prototype, "points"), _class2$y.prototype)), _class2$y)) || _class$D)); + + var _dec$C, _dec2$y, _class$C, _class2$x, _initializer$v, _initializer2$u, _initializer3$o, _initializer4$l; + var ccclass$9 = ccclass$t, + type$1 = type$8; + var Joint2D = exports('eV', (_dec$C = ccclass$9('cc.Joint2D'), _dec2$y = type$1(RigidBody2D), _dec$C(_class$C = (_class2$x = function (_Component) { + _inheritsLoose(Joint2D, _Component); + function Joint2D() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this.anchor = _initializer$v && _initializer$v(); + _this.connectedAnchor = _initializer2$u && _initializer2$u(); + _this.collideConnected = _initializer3$o && _initializer3$o(); + _this.connectedBody = _initializer4$l && _initializer4$l(); + _this._body = null; + _this._joint = null; + _this.TYPE = EJoint2DType.None; + return _this; + } + var _proto = Joint2D.prototype; + _proto.onLoad = function onLoad() { + { + this._joint = createJoint(this.TYPE); + this._joint.initialize(this); + this._body = this.getComponent(RigidBody2D); + } + }; + _proto.onEnable = function onEnable() { + if (this._joint && this._joint.onEnable) { + this._joint.onEnable(); + } + }; + _proto.onDisable = function onDisable() { + if (this._joint && this._joint.onDisable) { + this._joint.onDisable(); + } + }; + _proto.start = function start() { + if (this._joint && this._joint.start) { + this._joint.start(); + } + }; + _proto.onDestroy = function onDestroy() { + if (this._joint && this._joint.onDestroy) { + this._joint.onDestroy(); + } + }; + _createClass(Joint2D, [{ + key: "body", + get: function get() { + return this._body; + } + }, { + key: "impl", + get: function get() { + return this._joint; + } + }]); + return Joint2D; + }(Component), (_initializer$v = applyDecoratedInitializer(_class2$x.prototype, "anchor", [serializable$9], function () { + return new Vec2(); + }), _initializer2$u = applyDecoratedInitializer(_class2$x.prototype, "connectedAnchor", [serializable$9], function () { + return new Vec2(); + }), _initializer3$o = applyDecoratedInitializer(_class2$x.prototype, "collideConnected", [serializable$9], function () { + return false; + }), _initializer4$l = applyDecoratedInitializer(_class2$x.prototype, "connectedBody", [_dec2$y, serializable$9], function () { + return null; + })), _class2$x)) || _class$C)); + + var _dec$B, _dec2$x, _dec3$v, _class$B, _class2$w, _initializer$u, _initializer2$t; + var ccclass$8 = ccclass$t; + var DistanceJoint2D = exports('eW', (_dec$B = ccclass$8('cc.DistanceJoint2D'), _dec2$x = type$8(CCFloat), _dec3$v = type$8(CCBoolean), _dec$B(_class$B = (_class2$w = function (_Joint2D) { + _inheritsLoose(DistanceJoint2D, _Joint2D); + function DistanceJoint2D() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Joint2D.call.apply(_Joint2D, [this].concat(args)) || this; + _this.TYPE = EJoint2DType.DISTANCE; + _this._maxLength = _initializer$u && _initializer$u(); + _this._autoCalcDistance = _initializer2$t && _initializer2$t(); + return _this; + } + _createClass(DistanceJoint2D, [{ + key: "maxLength", + get: function get() { + if (this._autoCalcDistance) { + if (this.connectedBody) { + return Vec3.distance(this.node.worldPosition, this.connectedBody.node.worldPosition); + } else { + return Vec3.len(this.node.worldPosition); + } + } + return this._maxLength; + }, + set: function set(v) { + this._maxLength = v; + if (this._joint) { + this._joint.setMaxLength(v); + } + } + }, { + key: "autoCalcDistance", + get: function get() { + return this._autoCalcDistance; + }, + set: function set(v) { + this._autoCalcDistance = v; + } + }]); + return DistanceJoint2D; + }(Joint2D), (_applyDecoratedDescriptor(_class2$w.prototype, "maxLength", [_dec2$x], Object.getOwnPropertyDescriptor(_class2$w.prototype, "maxLength"), _class2$w.prototype), _applyDecoratedDescriptor(_class2$w.prototype, "autoCalcDistance", [_dec3$v], Object.getOwnPropertyDescriptor(_class2$w.prototype, "autoCalcDistance"), _class2$w.prototype), _initializer$u = applyDecoratedInitializer(_class2$w.prototype, "_maxLength", [serializable$9], function () { + return 5; + }), _initializer2$t = applyDecoratedInitializer(_class2$w.prototype, "_autoCalcDistance", [serializable$9], function () { + return true; + })), _class2$w)) || _class$B)); + + var _dec$A, _dec2$w, _dec3$u, _dec4$m, _dec5$l, _class$A, _class2$v, _initializer$t, _initializer2$s, _initializer3$n, _initializer4$k; + var ccclass$7 = ccclass$t; + var SpringJoint2D = exports('eX', (_dec$A = ccclass$7('cc.SpringJoint2D'), _dec2$w = type$8(CCFloat), _dec3$u = type$8(CCFloat), _dec4$m = type$8(CCFloat), _dec5$l = type$8(CCBoolean), _dec$A(_class$A = (_class2$v = function (_Joint2D) { + _inheritsLoose(SpringJoint2D, _Joint2D); + function SpringJoint2D() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Joint2D.call.apply(_Joint2D, [this].concat(args)) || this; + _this.TYPE = EJoint2DType.SPRING; + _this._frequency = _initializer$t && _initializer$t(); + _this._dampingRatio = _initializer2$s && _initializer2$s(); + _this._distance = _initializer3$n && _initializer3$n(); + _this._autoCalcDistance = _initializer4$k && _initializer4$k(); + return _this; + } + _createClass(SpringJoint2D, [{ + key: "frequency", + get: function get() { + return this._frequency; + }, + set: function set(v) { + this._frequency = v; + if (this._joint) { + this._joint.setFrequency(v); + } + } + }, { + key: "dampingRatio", + get: function get() { + return this._dampingRatio; + }, + set: function set(v) { + this._dampingRatio = v; + if (this._joint) { + this._joint.setDampingRatio(v); + } + } + }, { + key: "distance", + get: function get() { + if (this._autoCalcDistance) { + if (this.connectedBody) { + return Vec3.distance(this.node.worldPosition, this.connectedBody.node.worldPosition); + } else { + return Vec3.len(this.node.worldPosition); + } + } + return this._distance; + }, + set: function set(v) { + this._distance = v; + if (this._joint) { + this._joint.setDistance(v); + } + } + }, { + key: "autoCalcDistance", + get: function get() { + return this._autoCalcDistance; + }, + set: function set(v) { + this._autoCalcDistance = v; + } + }]); + return SpringJoint2D; + }(Joint2D), (_applyDecoratedDescriptor(_class2$v.prototype, "frequency", [_dec2$w], Object.getOwnPropertyDescriptor(_class2$v.prototype, "frequency"), _class2$v.prototype), _applyDecoratedDescriptor(_class2$v.prototype, "dampingRatio", [_dec3$u], Object.getOwnPropertyDescriptor(_class2$v.prototype, "dampingRatio"), _class2$v.prototype), _applyDecoratedDescriptor(_class2$v.prototype, "distance", [_dec4$m], Object.getOwnPropertyDescriptor(_class2$v.prototype, "distance"), _class2$v.prototype), _applyDecoratedDescriptor(_class2$v.prototype, "autoCalcDistance", [_dec5$l], Object.getOwnPropertyDescriptor(_class2$v.prototype, "autoCalcDistance"), _class2$v.prototype), _initializer$t = applyDecoratedInitializer(_class2$v.prototype, "_frequency", [serializable$9], function () { + return 5; + }), _initializer2$s = applyDecoratedInitializer(_class2$v.prototype, "_dampingRatio", [serializable$9], function () { + return 0.7; + }), _initializer3$n = applyDecoratedInitializer(_class2$v.prototype, "_distance", [serializable$9], function () { + return 10; + }), _initializer4$k = applyDecoratedInitializer(_class2$v.prototype, "_autoCalcDistance", [serializable$9], function () { + return true; + })), _class2$v)) || _class$A)); + + var _dec$z, _dec2$v, _dec3$t, _dec4$l, _class$z, _class2$u, _initializer$s, _initializer2$r, _initializer3$m; + var ccclass$6 = ccclass$t; + var MouseJoint2D = exports('eY', (_dec$z = ccclass$6('cc.MouseJoint2D'), _dec2$v = type$8(CCFloat), _dec3$t = type$8(CCFloat), _dec4$l = type$8(CCFloat), _dec$z(_class$z = (_class2$u = function (_Joint2D) { + _inheritsLoose(MouseJoint2D, _Joint2D); + function MouseJoint2D() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Joint2D.call.apply(_Joint2D, [this].concat(args)) || this; + _this.TYPE = EJoint2DType.MOUSE; + _this._maxForce = _initializer$s && _initializer$s(); + _this._dampingRatio = _initializer2$r && _initializer2$r(); + _this._frequency = _initializer3$m && _initializer3$m(); + _this._target = new Vec2(); + return _this; + } + var _proto = MouseJoint2D.prototype; + _proto.update = function update(dt) { + this._joint.update(dt); + }; + _createClass(MouseJoint2D, [{ + key: "target", + get: function get() { + return this._target; + }, + set: function set(v) { + this._target = v; + if (this._joint) { + this._joint.setTarget(v); + } + } + }, { + key: "frequency", + get: function get() { + return this._frequency; + }, + set: function set(v) { + this._frequency = v; + if (this._joint) { + this._joint.setFrequency(v); + } + } + }, { + key: "dampingRatio", + get: function get() { + return this._dampingRatio; + }, + set: function set(v) { + this._dampingRatio = v; + if (this._joint) { + this._joint.setDampingRatio(v); + } + } + }, { + key: "maxForce", + get: function get() { + return this._maxForce; + }, + set: function set(v) { + this._maxForce = v; + if (this._joint) { + this._joint.setMaxForce(v); + } + } + }]); + return MouseJoint2D; + }(Joint2D), (_applyDecoratedDescriptor(_class2$u.prototype, "frequency", [_dec2$v], Object.getOwnPropertyDescriptor(_class2$u.prototype, "frequency"), _class2$u.prototype), _applyDecoratedDescriptor(_class2$u.prototype, "dampingRatio", [_dec3$t], Object.getOwnPropertyDescriptor(_class2$u.prototype, "dampingRatio"), _class2$u.prototype), _applyDecoratedDescriptor(_class2$u.prototype, "maxForce", [_dec4$l], Object.getOwnPropertyDescriptor(_class2$u.prototype, "maxForce"), _class2$u.prototype), _initializer$s = applyDecoratedInitializer(_class2$u.prototype, "_maxForce", [serializable$9], function () { + return 1000; + }), _initializer2$r = applyDecoratedInitializer(_class2$u.prototype, "_dampingRatio", [serializable$9], function () { + return 0.7; + }), _initializer3$m = applyDecoratedInitializer(_class2$u.prototype, "_frequency", [serializable$9], function () { + return 5; + })), _class2$u)) || _class$z)); + + var _dec$y, _dec2$u, _dec3$s, _dec4$k, _dec5$k, _dec6$e, _dec7$c, _class$y, _class2$t, _initializer$r, _initializer2$q, _initializer3$l, _initializer4$j, _initializer5$h, _initializer6$d; + var tempVec3_1 = new Vec3(); + var tempVec3_2 = new Vec3(); + var ccclass$5 = ccclass$t; + var RelativeJoint2D = exports('eZ', (_dec$y = ccclass$5('cc.RelativeJoint2D'), _dec2$u = type$8(CCFloat), _dec3$s = type$8(CCFloat), _dec4$k = type$8(CCFloat), _dec5$k = type$8(Vec2), _dec6$e = type$8(CCFloat), _dec7$c = type$8(CCBoolean), _dec$y(_class$y = (_class2$t = function (_Joint2D) { + _inheritsLoose(RelativeJoint2D, _Joint2D); + function RelativeJoint2D() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Joint2D.call.apply(_Joint2D, [this].concat(args)) || this; + _this.TYPE = EJoint2DType.RELATIVE; + _this._maxForce = _initializer$r && _initializer$r(); + _this._maxTorque = _initializer2$q && _initializer2$q(); + _this._correctionFactor = _initializer3$l && _initializer3$l(); + _this._angularOffset = _initializer4$j && _initializer4$j(); + _this._linearOffset = _initializer5$h && _initializer5$h(); + _this._autoCalcOffset = _initializer6$d && _initializer6$d(); + return _this; + } + _createClass(RelativeJoint2D, [{ + key: "maxForce", + get: function get() { + return this._maxForce; + }, + set: function set(v) { + this._maxForce = v; + if (this._joint) { + this._joint.setMaxForce(v); + } + } + }, { + key: "maxTorque", + get: function get() { + return this._maxTorque; + }, + set: function set(v) { + this._maxTorque = v; + if (this._joint) { + this._joint.setMaxTorque(v); + } + } + }, { + key: "correctionFactor", + get: function get() { + return this._correctionFactor; + }, + set: function set(v) { + this._correctionFactor = v; + if (this._joint) { + this._joint.setCorrectionFactor(v); + } + } + }, { + key: "linearOffset", + get: function get() { + if (this._autoCalcOffset) { + if (this.connectedBody) { + return Vec2.subtract(this._linearOffset, this.connectedBody.node.worldPosition, this.node.worldPosition); + } else { + return Vec2.subtract(this._linearOffset, new Vec2(0, 0), this.node.worldPosition); + } + } + return this._linearOffset; + }, + set: function set(v) { + this._linearOffset.set(v); + if (this._joint) { + this._joint.setLinearOffset(v); + } + } + }, { + key: "angularOffset", + get: function get() { + if (this._autoCalcOffset) { + Quat.toEuler(tempVec3_1, this.node.worldRotation); + if (this.connectedBody) { + Quat.toEuler(tempVec3_2, this.connectedBody.node.worldRotation); + } else { + Quat.toEuler(tempVec3_2, new Quat()); + } + this._angularOffset = tempVec3_2.z - tempVec3_1.z; + } + return this._angularOffset; + }, + set: function set(v) { + this._angularOffset = v; + if (this._joint) { + this._joint.setAngularOffset(v); + } + } + }, { + key: "autoCalcOffset", + get: function get() { + return this._autoCalcOffset; + }, + set: function set(v) { + this._autoCalcOffset = v; + } + }]); + return RelativeJoint2D; + }(Joint2D), (_applyDecoratedDescriptor(_class2$t.prototype, "maxForce", [_dec2$u], Object.getOwnPropertyDescriptor(_class2$t.prototype, "maxForce"), _class2$t.prototype), _applyDecoratedDescriptor(_class2$t.prototype, "maxTorque", [_dec3$s], Object.getOwnPropertyDescriptor(_class2$t.prototype, "maxTorque"), _class2$t.prototype), _applyDecoratedDescriptor(_class2$t.prototype, "correctionFactor", [_dec4$k], Object.getOwnPropertyDescriptor(_class2$t.prototype, "correctionFactor"), _class2$t.prototype), _applyDecoratedDescriptor(_class2$t.prototype, "linearOffset", [_dec5$k], Object.getOwnPropertyDescriptor(_class2$t.prototype, "linearOffset"), _class2$t.prototype), _applyDecoratedDescriptor(_class2$t.prototype, "angularOffset", [_dec6$e], Object.getOwnPropertyDescriptor(_class2$t.prototype, "angularOffset"), _class2$t.prototype), _applyDecoratedDescriptor(_class2$t.prototype, "autoCalcOffset", [_dec7$c], Object.getOwnPropertyDescriptor(_class2$t.prototype, "autoCalcOffset"), _class2$t.prototype), _initializer$r = applyDecoratedInitializer(_class2$t.prototype, "_maxForce", [serializable$9], function () { + return 5; + }), _initializer2$q = applyDecoratedInitializer(_class2$t.prototype, "_maxTorque", [serializable$9], function () { + return 0.7; + }), _initializer3$l = applyDecoratedInitializer(_class2$t.prototype, "_correctionFactor", [serializable$9], function () { + return 0.3; + }), _initializer4$j = applyDecoratedInitializer(_class2$t.prototype, "_angularOffset", [serializable$9], function () { + return 0; + }), _initializer5$h = applyDecoratedInitializer(_class2$t.prototype, "_linearOffset", [serializable$9], function () { + return new Vec2(); + }), _initializer6$d = applyDecoratedInitializer(_class2$t.prototype, "_autoCalcOffset", [serializable$9], function () { + return true; + })), _class2$t)) || _class$y)); + + var _dec$x, _dec2$t, _dec3$r, _dec4$j, _dec5$j, _dec6$d, _dec7$b, _dec8$7, _dec9$6, _class$x, _class2$s, _initializer$q, _initializer2$p, _initializer3$k, _initializer4$i, _initializer5$g, _initializer6$c, _initializer7$a, _initializer8$a; + var tempVec2$2 = new Vec2(); + var ccclass$4 = ccclass$t; + var SliderJoint2D = exports('e_', (_dec$x = ccclass$4('cc.SliderJoint2D'), _dec2$t = type$8(CCFloat), _dec3$r = type$8(CCBoolean), _dec4$j = type$8(CCBoolean), _dec5$j = type$8(CCFloat), _dec6$d = type$8(CCFloat), _dec7$b = type$8(CCBoolean), _dec8$7 = type$8(CCFloat), _dec9$6 = type$8(CCFloat), _dec$x(_class$x = (_class2$s = function (_Joint2D) { + _inheritsLoose(SliderJoint2D, _Joint2D); + function SliderJoint2D() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Joint2D.call.apply(_Joint2D, [this].concat(args)) || this; + _this.TYPE = EJoint2DType.SLIDER; + _this._angle = _initializer$q && _initializer$q(); + _this._autoCalcAngle = _initializer2$p && _initializer2$p(); + _this._enableMotor = _initializer3$k && _initializer3$k(); + _this._maxMotorForce = _initializer4$i && _initializer4$i(); + _this._motorSpeed = _initializer5$g && _initializer5$g(); + _this._enableLimit = _initializer6$c && _initializer6$c(); + _this._lowerLimit = _initializer7$a && _initializer7$a(); + _this._upperLimit = _initializer8$a && _initializer8$a(); + return _this; + } + _createClass(SliderJoint2D, [{ + key: "angle", + get: function get() { + if (this._autoCalcAngle) { + if (this.connectedBody) { + Vec2.subtract(tempVec2$2, this.connectedBody.node.worldPosition, this.node.worldPosition); + } else { + Vec2.subtract(tempVec2$2, new Vec2(0, 0), this.node.worldPosition); + } + this._angle = toDegree(Math.atan2(tempVec2$2.y, tempVec2$2.x)); + } + return this._angle; + }, + set: function set(v) { + this._angle = v; + } + }, { + key: "autoCalcAngle", + get: function get() { + return this._autoCalcAngle; + }, + set: function set(v) { + this._autoCalcAngle = v; + } + }, { + key: "enableMotor", + get: function get() { + return this._enableMotor; + }, + set: function set(v) { + this._enableMotor = v; + } + }, { + key: "maxMotorForce", + get: function get() { + return this._maxMotorForce; + }, + set: function set(v) { + this._maxMotorForce = v; + if (this._joint) { + this._joint.setMaxMotorForce(v); + } + } + }, { + key: "motorSpeed", + get: function get() { + return this._motorSpeed; + }, + set: function set(v) { + this._motorSpeed = v; + if (this._joint) { + this._joint.setMotorSpeed(v); + } + } + }, { + key: "enableLimit", + get: function get() { + return this._enableLimit; + }, + set: function set(v) { + this._enableLimit = v; + } + }, { + key: "lowerLimit", + get: function get() { + return this._lowerLimit; + }, + set: function set(v) { + this._lowerLimit = v; + if (this._joint) { + this._joint.setLowerLimit(v); + } + } + }, { + key: "upperLimit", + get: function get() { + return this._upperLimit; + }, + set: function set(v) { + this._upperLimit = v; + if (this._joint) { + this._joint.setUpperLimit(v); + } + } + }]); + return SliderJoint2D; + }(Joint2D), (_applyDecoratedDescriptor(_class2$s.prototype, "angle", [_dec2$t], Object.getOwnPropertyDescriptor(_class2$s.prototype, "angle"), _class2$s.prototype), _applyDecoratedDescriptor(_class2$s.prototype, "autoCalcAngle", [_dec3$r], Object.getOwnPropertyDescriptor(_class2$s.prototype, "autoCalcAngle"), _class2$s.prototype), _applyDecoratedDescriptor(_class2$s.prototype, "enableMotor", [_dec4$j], Object.getOwnPropertyDescriptor(_class2$s.prototype, "enableMotor"), _class2$s.prototype), _applyDecoratedDescriptor(_class2$s.prototype, "maxMotorForce", [_dec5$j], Object.getOwnPropertyDescriptor(_class2$s.prototype, "maxMotorForce"), _class2$s.prototype), _applyDecoratedDescriptor(_class2$s.prototype, "motorSpeed", [_dec6$d], Object.getOwnPropertyDescriptor(_class2$s.prototype, "motorSpeed"), _class2$s.prototype), _applyDecoratedDescriptor(_class2$s.prototype, "enableLimit", [_dec7$b], Object.getOwnPropertyDescriptor(_class2$s.prototype, "enableLimit"), _class2$s.prototype), _applyDecoratedDescriptor(_class2$s.prototype, "lowerLimit", [_dec8$7], Object.getOwnPropertyDescriptor(_class2$s.prototype, "lowerLimit"), _class2$s.prototype), _applyDecoratedDescriptor(_class2$s.prototype, "upperLimit", [_dec9$6], Object.getOwnPropertyDescriptor(_class2$s.prototype, "upperLimit"), _class2$s.prototype), _initializer$q = applyDecoratedInitializer(_class2$s.prototype, "_angle", [serializable$9], function () { + return 0; + }), _initializer2$p = applyDecoratedInitializer(_class2$s.prototype, "_autoCalcAngle", [serializable$9], function () { + return true; + }), _initializer3$k = applyDecoratedInitializer(_class2$s.prototype, "_enableMotor", [serializable$9], function () { + return false; + }), _initializer4$i = applyDecoratedInitializer(_class2$s.prototype, "_maxMotorForce", [serializable$9], function () { + return 1000; + }), _initializer5$g = applyDecoratedInitializer(_class2$s.prototype, "_motorSpeed", [serializable$9], function () { + return 1000; + }), _initializer6$c = applyDecoratedInitializer(_class2$s.prototype, "_enableLimit", [serializable$9], function () { + return false; + }), _initializer7$a = applyDecoratedInitializer(_class2$s.prototype, "_lowerLimit", [serializable$9], function () { + return 0; + }), _initializer8$a = applyDecoratedInitializer(_class2$s.prototype, "_upperLimit", [serializable$9], function () { + return 0; + })), _class2$s)) || _class$x)); + + var _dec$w, _dec2$s, _dec3$q, _class$w, _class2$r, _initializer$p, _initializer2$o; + var ccclass$3 = ccclass$t; + var FixedJoint2D = exports('e$', (_dec$w = ccclass$3('cc.FixedJoint2D'), _dec2$s = type$8(CCFloat), _dec3$q = type$8(CCFloat), _dec$w(_class$w = (_class2$r = function (_Joint2D) { + _inheritsLoose(FixedJoint2D, _Joint2D); + function FixedJoint2D() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Joint2D.call.apply(_Joint2D, [this].concat(args)) || this; + _this.TYPE = EJoint2DType.FIXED; + _this._frequency = _initializer$p && _initializer$p(); + _this._dampingRatio = _initializer2$o && _initializer2$o(); + return _this; + } + _createClass(FixedJoint2D, [{ + key: "frequency", + get: function get() { + return this._frequency; + }, + set: function set(v) { + this._frequency = v; + if (this._joint) { + this._joint.setFrequency(v); + } + } + }, { + key: "dampingRatio", + get: function get() { + return this._dampingRatio; + }, + set: function set(v) { + this._dampingRatio = v; + if (this._joint) { + this._joint.setDampingRatio(v); + } + } + }]); + return FixedJoint2D; + }(Joint2D), (_applyDecoratedDescriptor(_class2$r.prototype, "frequency", [_dec2$s], Object.getOwnPropertyDescriptor(_class2$r.prototype, "frequency"), _class2$r.prototype), _applyDecoratedDescriptor(_class2$r.prototype, "dampingRatio", [_dec3$q], Object.getOwnPropertyDescriptor(_class2$r.prototype, "dampingRatio"), _class2$r.prototype), _initializer$p = applyDecoratedInitializer(_class2$r.prototype, "_frequency", [serializable$9], function () { + return 0.7; + }), _initializer2$o = applyDecoratedInitializer(_class2$r.prototype, "_dampingRatio", [serializable$9], function () { + return 0.5; + })), _class2$r)) || _class$w)); + + var _dec$v, _dec2$r, _dec3$p, _dec4$i, _dec5$i, _dec6$c, _dec7$a, _class$v, _class2$q, _initializer$o, _initializer2$n, _initializer3$j, _initializer4$h, _initializer5$f, _initializer6$b; + var ccclass$2 = ccclass$t; + var WheelJoint2D = exports('f0', (_dec$v = ccclass$2('cc.WheelJoint2D'), _dec2$r = type$8(CCFloat), _dec3$p = type$8(CCBoolean), _dec4$i = type$8(CCFloat), _dec5$i = type$8(CCFloat), _dec6$c = type$8(CCFloat), _dec7$a = type$8(CCFloat), _dec$v(_class$v = (_class2$q = function (_Joint2D) { + _inheritsLoose(WheelJoint2D, _Joint2D); + function WheelJoint2D() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Joint2D.call.apply(_Joint2D, [this].concat(args)) || this; + _this.TYPE = EJoint2DType.WHEEL; + _this._angle = _initializer$o && _initializer$o(); + _this._enableMotor = _initializer2$n && _initializer2$n(); + _this._maxMotorTorque = _initializer3$j && _initializer3$j(); + _this._motorSpeed = _initializer4$h && _initializer4$h(); + _this._frequency = _initializer5$f && _initializer5$f(); + _this._dampingRatio = _initializer6$b && _initializer6$b(); + return _this; + } + _createClass(WheelJoint2D, [{ + key: "angle", + get: function get() { + return this._angle; + }, + set: function set(v) { + this._angle = v; + } + }, { + key: "enableMotor", + get: function get() { + return this._enableMotor; + }, + set: function set(v) { + this._enableMotor = v; + if (this._joint) { + this._joint.enableMotor(v); + } + } + }, { + key: "maxMotorTorque", + get: function get() { + return this._maxMotorTorque; + }, + set: function set(v) { + this._maxMotorTorque = v; + if (this._joint) { + this._joint.setMaxMotorTorque(v); + } + } + }, { + key: "motorSpeed", + get: function get() { + return this._motorSpeed; + }, + set: function set(v) { + this._motorSpeed = v; + if (this._joint) { + this._joint.setMotorSpeed(v); + } + } + }, { + key: "frequency", + get: function get() { + return this._frequency; + }, + set: function set(v) { + this._frequency = v; + if (this._joint) { + this._joint.setFrequency(v); + } + } + }, { + key: "dampingRatio", + get: function get() { + return this._dampingRatio; + }, + set: function set(v) { + this._dampingRatio = v; + if (this._joint) { + this._joint.setDampingRatio(v); + } + } + }]); + return WheelJoint2D; + }(Joint2D), (_applyDecoratedDescriptor(_class2$q.prototype, "angle", [_dec2$r], Object.getOwnPropertyDescriptor(_class2$q.prototype, "angle"), _class2$q.prototype), _applyDecoratedDescriptor(_class2$q.prototype, "enableMotor", [_dec3$p], Object.getOwnPropertyDescriptor(_class2$q.prototype, "enableMotor"), _class2$q.prototype), _applyDecoratedDescriptor(_class2$q.prototype, "maxMotorTorque", [_dec4$i], Object.getOwnPropertyDescriptor(_class2$q.prototype, "maxMotorTorque"), _class2$q.prototype), _applyDecoratedDescriptor(_class2$q.prototype, "motorSpeed", [_dec5$i], Object.getOwnPropertyDescriptor(_class2$q.prototype, "motorSpeed"), _class2$q.prototype), _applyDecoratedDescriptor(_class2$q.prototype, "frequency", [_dec6$c], Object.getOwnPropertyDescriptor(_class2$q.prototype, "frequency"), _class2$q.prototype), _applyDecoratedDescriptor(_class2$q.prototype, "dampingRatio", [_dec7$a], Object.getOwnPropertyDescriptor(_class2$q.prototype, "dampingRatio"), _class2$q.prototype), _initializer$o = applyDecoratedInitializer(_class2$q.prototype, "_angle", [serializable$9], function () { + return 90; + }), _initializer2$n = applyDecoratedInitializer(_class2$q.prototype, "_enableMotor", [serializable$9], function () { + return false; + }), _initializer3$j = applyDecoratedInitializer(_class2$q.prototype, "_maxMotorTorque", [serializable$9], function () { + return 1000; + }), _initializer4$h = applyDecoratedInitializer(_class2$q.prototype, "_motorSpeed", [serializable$9], function () { + return 0; + }), _initializer5$f = applyDecoratedInitializer(_class2$q.prototype, "_frequency", [serializable$9], function () { + return 5; + }), _initializer6$b = applyDecoratedInitializer(_class2$q.prototype, "_dampingRatio", [serializable$9], function () { + return 0.7; + })), _class2$q)) || _class$v)); + + var _dec$u, _dec2$q, _dec3$o, _dec4$h, _dec5$h, _dec6$b, _dec7$9, _class$u, _class2$p, _initializer$n, _initializer2$m, _initializer3$i, _initializer4$g, _initializer5$e, _initializer6$a; + var ccclass$1 = ccclass$t; + var HingeJoint2D = exports('f1', (_dec$u = ccclass$1('cc.HingeJoint2D'), _dec2$q = type$8(CCBoolean), _dec3$o = type$8(CCFloat), _dec4$h = type$8(CCFloat), _dec5$h = type$8(CCBoolean), _dec6$b = type$8(CCFloat), _dec7$9 = type$8(CCFloat), _dec$u(_class$u = (_class2$p = function (_Joint2D) { + _inheritsLoose(HingeJoint2D, _Joint2D); + function HingeJoint2D() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Joint2D.call.apply(_Joint2D, [this].concat(args)) || this; + _this.TYPE = EJoint2DType.HINGE; + _this._enableLimit = _initializer$n && _initializer$n(); + _this._lowerAngle = _initializer2$m && _initializer2$m(); + _this._upperAngle = _initializer3$i && _initializer3$i(); + _this._enableMotor = _initializer4$g && _initializer4$g(); + _this._maxMotorTorque = _initializer5$e && _initializer5$e(); + _this._motorSpeed = _initializer6$a && _initializer6$a(); + return _this; + } + _createClass(HingeJoint2D, [{ + key: "enableLimit", + get: function get() { + return this._enableLimit; + }, + set: function set(v) { + this._enableLimit = v; + } + }, { + key: "lowerAngle", + get: function get() { + return this._lowerAngle; + }, + set: function set(v) { + this._lowerAngle = v; + if (this._joint) { + this._joint.setLowerAngle(v); + } + } + }, { + key: "upperAngle", + get: function get() { + return this._upperAngle; + }, + set: function set(v) { + this._upperAngle = v; + if (this._joint) { + this._joint.setUpperAngle(v); + } + } + }, { + key: "enableMotor", + get: function get() { + return this._enableMotor; + }, + set: function set(v) { + this._enableMotor = v; + if (this._joint) { + this._joint.enableMotor(v); + } + } + }, { + key: "maxMotorTorque", + get: function get() { + return this._maxMotorTorque; + }, + set: function set(v) { + this._maxMotorTorque = v; + if (this._joint) { + this._joint.setMaxMotorTorque(v); + } + } + }, { + key: "motorSpeed", + get: function get() { + return this._motorSpeed; + }, + set: function set(v) { + this._motorSpeed = v; + if (this._joint) { + this._joint.setMotorSpeed(v); + } + } + }]); + return HingeJoint2D; + }(Joint2D), (_applyDecoratedDescriptor(_class2$p.prototype, "enableLimit", [_dec2$q], Object.getOwnPropertyDescriptor(_class2$p.prototype, "enableLimit"), _class2$p.prototype), _applyDecoratedDescriptor(_class2$p.prototype, "lowerAngle", [_dec3$o], Object.getOwnPropertyDescriptor(_class2$p.prototype, "lowerAngle"), _class2$p.prototype), _applyDecoratedDescriptor(_class2$p.prototype, "upperAngle", [_dec4$h], Object.getOwnPropertyDescriptor(_class2$p.prototype, "upperAngle"), _class2$p.prototype), _applyDecoratedDescriptor(_class2$p.prototype, "enableMotor", [_dec5$h], Object.getOwnPropertyDescriptor(_class2$p.prototype, "enableMotor"), _class2$p.prototype), _applyDecoratedDescriptor(_class2$p.prototype, "maxMotorTorque", [_dec6$b], Object.getOwnPropertyDescriptor(_class2$p.prototype, "maxMotorTorque"), _class2$p.prototype), _applyDecoratedDescriptor(_class2$p.prototype, "motorSpeed", [_dec7$9], Object.getOwnPropertyDescriptor(_class2$p.prototype, "motorSpeed"), _class2$p.prototype), _initializer$n = applyDecoratedInitializer(_class2$p.prototype, "_enableLimit", [serializable$9], function () { + return false; + }), _initializer2$m = applyDecoratedInitializer(_class2$p.prototype, "_lowerAngle", [serializable$9], function () { + return 0; + }), _initializer3$i = applyDecoratedInitializer(_class2$p.prototype, "_upperAngle", [serializable$9], function () { + return 0; + }), _initializer4$g = applyDecoratedInitializer(_class2$p.prototype, "_enableMotor", [serializable$9], function () { + return false; + }), _initializer5$e = applyDecoratedInitializer(_class2$p.prototype, "_maxMotorTorque", [serializable$9], function () { + return 1000; + }), _initializer6$a = applyDecoratedInitializer(_class2$p.prototype, "_motorSpeed", [serializable$9], function () { + return 0; + })), _class2$p)) || _class$u)); + + var Physics2DUtils = exports('eE', { + PolygonSeparator: PolygonSeparator, + PolygonPartition: PolygonPartition + }); + legacyCC.internal.physics2d = { + selector: selector + }; + + var BuiltinShape2D = function () { + function BuiltinShape2D() { + this._collider = null; + this._worldAabb = new Rect$1(); + this._contacts = []; + } + var _proto = BuiltinShape2D.prototype; + _proto.apply = function apply() {}; + _proto.initialize = function initialize(comp) { + this._collider = comp; + }; + _proto.onLoad = function onLoad() {}; + _proto.onEnable = function onEnable() { + PhysicsSystem2D.instance.physicsWorld.addShape(this); + }; + _proto.onDisable = function onDisable() { + PhysicsSystem2D.instance.physicsWorld.removeShape(this); + }; + _proto.start = function start() {}; + _proto.update = function update() {}; + _proto.containsPoint = function containsPoint(p) { + if (!this.worldAABB.contains(p)) { + return false; + } + return true; + }; + _proto.intersectsRect = function intersectsRect(rect) { + if (!this.worldAABB.intersects(rect)) { + return false; + } + return true; + }; + _proto.onGroupChanged = function onGroupChanged() { + PhysicsSystem2D.instance.physicsWorld.updateShapeGroup(this); + }; + _createClass(BuiltinShape2D, [{ + key: "impl", + get: function get() { + return null; + } + }, { + key: "collider", + get: function get() { + return this._collider; + } + }, { + key: "worldAABB", + get: function get() { + return this._worldAabb; + } + }]); + return BuiltinShape2D; + }(); + + var BuiltinBoxShape = function (_BuiltinShape2D) { + _inheritsLoose(BuiltinBoxShape, _BuiltinShape2D); + function BuiltinBoxShape() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _BuiltinShape2D.call.apply(_BuiltinShape2D, [this].concat(args)) || this; + _this._worldPoints = [new Vec2(), new Vec2(), new Vec2(), new Vec2()]; + return _this; + } + var _proto = BuiltinBoxShape.prototype; + _proto.update = function update() { + var aabb = this._worldAabb; + var collider = this.collider; + var size = collider.size; + var offset = collider.offset; + aabb.x = offset.x - size.width / 2; + aabb.y = offset.y - size.height / 2; + aabb.width = size.width; + aabb.height = size.height; + var wps = this._worldPoints; + var wp0 = wps[0]; + var wp1 = wps[1]; + var wp2 = wps[2]; + var wp3 = wps[3]; + aabb.transformMat4ToPoints(collider.node.worldMatrix, wp0, wp1, wp2, wp3); + var minx = Math.min(wp0.x, wp1.x, wp2.x, wp3.x); + var miny = Math.min(wp0.y, wp1.y, wp2.y, wp3.y); + var maxx = Math.max(wp0.x, wp1.x, wp2.x, wp3.x); + var maxy = Math.max(wp0.y, wp1.y, wp2.y, wp3.y); + aabb.x = minx; + aabb.y = miny; + aabb.width = maxx - minx; + aabb.height = maxy - miny; + }; + _proto.containsPoint = function containsPoint(p) { + if (!this.worldAABB.contains(p)) { + return false; + } + return Intersection2D.pointInPolygon(p, this.worldPoints); + }; + _proto.intersectsRect = function intersectsRect(rect) { + if (!this.worldAABB.intersects(rect)) { + return false; + } + return Intersection2D.rectPolygon(rect, this.worldPoints); + }; + _createClass(BuiltinBoxShape, [{ + key: "worldPoints", + get: function get() { + return this._worldPoints; + } + }]); + return BuiltinBoxShape; + }(BuiltinShape2D); + + var tempVec2$1 = new Vec2(); + var tempMat4$1 = new Mat4(); + var BuiltinCircleShape = function (_BuiltinShape2D) { + _inheritsLoose(BuiltinCircleShape, _BuiltinShape2D); + function BuiltinCircleShape() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _BuiltinShape2D.call.apply(_BuiltinShape2D, [this].concat(args)) || this; + _this._worldPosition = new Vec2(); + _this._worldRadius = 0; + return _this; + } + var _proto = BuiltinCircleShape.prototype; + _proto.update = function update() { + var aabb = this._worldAabb; + var collider = this.collider; + var worldMatrix = collider.node.getWorldMatrix(tempMat4$1); + Vec2.transformMat4(tempVec2$1, collider.offset, worldMatrix); + var worldPos = this._worldPosition; + worldPos.x = tempVec2$1.x; + worldPos.y = tempVec2$1.y; + worldMatrix.m12 = worldMatrix.m13 = 0; + tempVec2$1.x = collider.radius; + tempVec2$1.y = 0; + Vec2.transformMat4(tempVec2$1, tempVec2$1, worldMatrix); + var d = this._worldRadius = tempVec2$1.length(); + aabb.x = worldPos.x - d; + aabb.y = worldPos.y - d; + aabb.width = d * 2; + aabb.height = d * 2; + }; + _proto.containsPoint = function containsPoint(p) { + if (!this.worldAABB.contains(p)) { + return false; + } + var dist = Vec2.subtract(tempVec2$1, p, this.worldPosition).length(); + return dist < this.worldRadius; + }; + _proto.intersectsRect = function intersectsRect(rect) { + if (!this.worldAABB.intersects(rect)) { + return false; + } + return Intersection2D.rectCircle(rect, this.worldPosition, this.worldRadius); + }; + _createClass(BuiltinCircleShape, [{ + key: "worldPosition", + get: function get() { + return this._worldPosition; + } + }, { + key: "worldRadius", + get: function get() { + return this._worldRadius; + } + }]); + return BuiltinCircleShape; + }(BuiltinShape2D); + + var tempVec2 = new Vec2(); + var BuiltinPolygonShape = function (_BuiltinShape2D) { + _inheritsLoose(BuiltinPolygonShape, _BuiltinShape2D); + function BuiltinPolygonShape() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _BuiltinShape2D.call.apply(_BuiltinShape2D, [this].concat(args)) || this; + _this._worldPoints = []; + return _this; + } + var _proto = BuiltinPolygonShape.prototype; + _proto.update = function update() { + var aabb = this._worldAabb; + var collider = this.collider; + var points = collider.points; + var offset = collider.offset; + var worldMatrix = collider.node.worldMatrix; + var worldPoints = this._worldPoints; + worldPoints.length = points.length; + var minx = 1e6; + var miny = 1e6; + var maxx = -1e6; + var maxy = -1e6; + for (var i = 0, l = points.length; i < l; i++) { + if (!worldPoints[i]) { + worldPoints[i] = new Vec2(); + } + tempVec2.x = points[i].x + offset.x; + tempVec2.y = points[i].y + offset.y; + Vec2.transformMat4(tempVec2, tempVec2, worldMatrix); + var x = tempVec2.x; + var y = tempVec2.y; + worldPoints[i].x = x; + worldPoints[i].y = y; + if (x > maxx) maxx = x; + if (x < minx) minx = x; + if (y > maxy) maxy = y; + if (y < miny) miny = y; + } + aabb.x = minx; + aabb.y = miny; + aabb.width = maxx - minx; + aabb.height = maxy - miny; + }; + _proto.containsPoint = function containsPoint(p) { + if (!this.worldAABB.contains(p)) { + return false; + } + return Intersection2D.pointInPolygon(p, this.worldPoints); + }; + _proto.intersectsRect = function intersectsRect(rect) { + if (!this.worldAABB.intersects(rect)) { + return false; + } + return Intersection2D.rectPolygon(rect, this.worldPoints); + }; + _createClass(BuiltinPolygonShape, [{ + key: "worldPoints", + get: function get() { + return this._worldPoints; + } + }]); + return BuiltinPolygonShape; + }(BuiltinShape2D); + + var BuiltinContact = function () { + function BuiltinContact(shape1, shape2) { + this.shape1 = void 0; + this.shape2 = void 0; + this.testFunc = void 0; + this.touching = false; + this.type = Contact2DType.None; + this.shape1 = shape1; + this.shape2 = shape2; + this.touching = false; + var isShape1Polygon = shape1 instanceof BuiltinBoxShape || shape1 instanceof BuiltinPolygonShape; + var isShape2Polygon = shape2 instanceof BuiltinBoxShape || shape2 instanceof BuiltinPolygonShape; + var isShape1Circle = shape1 instanceof BuiltinCircleShape; + var isShape2Circle = shape2 instanceof BuiltinCircleShape; + if (isShape1Polygon && isShape2Polygon) { + this.testFunc = Intersection2D.polygonPolygon; + } else if (isShape1Circle && isShape2Circle) { + this.testFunc = Intersection2D.circleCircle; + } else if (isShape1Polygon && isShape2Circle) { + this.testFunc = Intersection2D.polygonCircle; + } else if (isShape1Circle && isShape2Polygon) { + this.testFunc = Intersection2D.polygonCircle; + this.shape1 = shape2; + this.shape2 = shape1; + } else { + error("Can not find contact for builtin shape: " + shape1.constructor.name + ", " + shape2.constructor.name); + } + } + var _proto = BuiltinContact.prototype; + _proto.test = function test() { + var s1 = this.shape1; + var s2 = this.shape2; + if (!s1.worldAABB.intersects(s2.worldAABB)) { + return false; + } + if (this.testFunc === Intersection2D.polygonPolygon) { + return Intersection2D.polygonPolygon(s1.worldPoints, s2.worldPoints); + } else if (this.testFunc === Intersection2D.circleCircle) { + return Intersection2D.circleCircle(s1.worldPosition, s1.worldRadius, s2.worldPosition, s2.worldRadius); + } else if (this.testFunc === Intersection2D.polygonCircle) { + return Intersection2D.polygonCircle(s1.worldPoints, s2.worldPosition, s2.worldRadius); + } + return false; + }; + _proto.updateState = function updateState() { + var result = this.test(); + var type = Contact2DType.None; + if (result && !this.touching) { + this.touching = true; + type = Contact2DType.BEGIN_CONTACT; + } else if (!result && this.touching) { + this.touching = false; + type = Contact2DType.END_CONTACT; + } + this.type = type; + return type; + }; + return BuiltinContact; + }(); + + var contactResults = []; + var testIntersectResults = []; + var BuiltinPhysicsWorld = function () { + function BuiltinPhysicsWorld() { + this._contacts = []; + this._shapes = []; + this._debugGraphics = null; + this._debugDrawFlags = 0; + } + var _proto = BuiltinPhysicsWorld.prototype; + _proto.shouldCollide = function shouldCollide(c1, c2) { + var collider1 = c1.collider; + var collider2 = c2.collider; + var collisionMatrix = PhysicsSystem2D.instance.collisionMatrix; + return collider1 !== collider2 && collider1.node !== collider2.node && collisionMatrix[collider1.group] & collider2.group && collisionMatrix[collider2.group] & collider1.group; + }; + _proto.addShape = function addShape(shape) { + var shapes = this._shapes; + var index = shapes.indexOf(shape); + if (index === -1) { + for (var i = 0, l = shapes.length; i < l; i++) { + var other = shapes[i]; + if (this.shouldCollide(shape, other)) { + var contact = new BuiltinContact(shape, other); + this._contacts.push(contact); + if (shape._contacts.indexOf(contact) === -1) { + shape._contacts.push(contact); + } + if (other._contacts.indexOf(contact) === -1) { + other._contacts.push(contact); + } + } + } + shapes.push(shape); + } + }; + _proto.removeShape = function removeShape(shape) { + var shapes = this._shapes; + var index = shapes.indexOf(shape); + if (index >= 0) { + fastRemoveAt$2(shapes, index); + var contacts = this._contacts; + for (var i = contacts.length - 1; i >= 0; i--) { + var contact = contacts[i]; + if (contact.shape1 === shape || contact.shape2 === shape) { + if (contact.touching) { + this._emitCollide(contact, Contact2DType.END_CONTACT); + } + fastRemoveAt$2(contacts, i); + var other = contact.shape1 === shape ? contact.shape2 : contact.shape1; + var contactIndex = other._contacts.indexOf(contact); + if (contactIndex >= 0) { + fastRemoveAt$2(other._contacts, contactIndex); + } + } + } + } + shape._contacts.length = 0; + }; + _proto.updateShapeGroup = function updateShapeGroup(shape) { + this.removeShape(shape); + if (shape.collider.enabledInHierarchy) { + this.addShape(shape); + } + }; + _proto.step = function step(deltaTime, velocityIterations, positionIterations) { + var shapes = this._shapes; + for (var i = 0, l = shapes.length; i < l; i++) { + shapes[i].update(); + } + var contacts = this._contacts; + contactResults.length = 0; + for (var _i = 0, _l = contacts.length; _i < _l; _i++) { + var collisionType = contacts[_i].updateState(); + if (collisionType === Contact2DType.None) { + continue; + } + contactResults.push(contacts[_i]); + } + for (var _i2 = 0, _l2 = contactResults.length; _i2 < _l2; _i2++) { + var result = contactResults[_i2]; + this._emitCollide(result); + } + }; + _proto.drawDebug = function drawDebug() { + if (!this._debugDrawFlags) { + return; + } + this._checkDebugDrawValid(); + var debugDrawer = this._debugGraphics; + if (!debugDrawer) { + return; + } + debugDrawer.clear(); + debugDrawer.lineWidth = 3; + var shapes = this._shapes; + for (var i = 0, l = shapes.length; i < l; i++) { + var shape = shapes[i]; + debugDrawer.strokeColor = Color$1.WHITE; + if (shape instanceof BuiltinBoxShape || shape instanceof BuiltinPolygonShape) { + var ps = shape.worldPoints; + if (ps.length > 0) { + debugDrawer.moveTo(ps[0].x, ps[0].y); + for (var j = 1; j < ps.length; j++) { + debugDrawer.lineTo(ps[j].x, ps[j].y); + } + debugDrawer.close(); + debugDrawer.stroke(); + } + } else if (shape instanceof BuiltinCircleShape) { + debugDrawer.circle(shape.worldPosition.x, shape.worldPosition.y, shape.worldRadius); + debugDrawer.stroke(); + } + if (this._debugDrawFlags & EPhysics2DDrawFlags.Aabb) { + var aabb = shape.worldAABB; + debugDrawer.strokeColor = Color$1.BLUE; + debugDrawer.moveTo(aabb.xMin, aabb.yMin); + debugDrawer.lineTo(aabb.xMin, aabb.yMax); + debugDrawer.lineTo(aabb.xMax, aabb.yMax); + debugDrawer.lineTo(aabb.xMax, aabb.yMin); + debugDrawer.close(); + debugDrawer.stroke(); + } + } + }; + _proto._emitCollide = function _emitCollide(contact, collisionType) { + collisionType = collisionType || contact.type; + var c1 = contact.shape1.collider; + var c2 = contact.shape2.collider; + PhysicsSystem2D.instance.emit(collisionType, c1, c2); + c1.emit(collisionType, c1, c2); + c2.emit(collisionType, c2, c1); + }; + _proto._checkDebugDrawValid = function _checkDebugDrawValid() { + if (!this._debugGraphics || !this._debugGraphics.isValid) { + var canvas = find('Canvas'); + if (!canvas) { + var scene = director.getScene(); + if (!scene) { + return; + } + canvas = new Node$1('Canvas'); + canvas.addComponent('cc.Canvas'); + canvas.parent = scene; + } + var node = new Node$1('PHYSICS_2D_DEBUG_DRAW'); + node.hideFlags |= CCObject.Flags.DontSave; + node.parent = canvas; + node.worldPosition = Vec3.ZERO; + this._debugGraphics = node.addComponent('cc.Graphics'); + this._debugGraphics.lineWidth = 2; + } + var parent = this._debugGraphics.node.parent; + this._debugGraphics.node.setSiblingIndex(parent.children.length - 1); + }; + _proto.testPoint = function testPoint(p) { + var shapes = this._shapes; + testIntersectResults.length = 0; + for (var i = 0; i < shapes.length; i++) { + var shape = shapes[i]; + if (!shape.containsPoint(p)) { + continue; + } + testIntersectResults.push(shape.collider); + } + return testIntersectResults; + }; + _proto.testAABB = function testAABB(rect) { + var shapes = this._shapes; + testIntersectResults.length = 0; + for (var i = 0; i < shapes.length; i++) { + var shape = shapes[i]; + if (!shape.intersectsRect(rect)) { + continue; + } + testIntersectResults.push(shape.collider); + } + return testIntersectResults; + }; + _proto.impl = function impl() { + return null; + }; + _proto.setGravity = function setGravity() {}; + _proto.setAllowSleep = function setAllowSleep() {}; + _proto.syncPhysicsToScene = function syncPhysicsToScene() {}; + _proto.syncSceneToPhysics = function syncSceneToPhysics() {}; + _proto.raycast = function raycast(p1, p2, type) { + return []; + }; + _createClass(BuiltinPhysicsWorld, [{ + key: "debugDrawFlags", + get: function get() { + return this._debugDrawFlags; + }, + set: function set(v) { + this._debugDrawFlags = v; + } + }]); + return BuiltinPhysicsWorld; + }(); + + game.once(Game.EVENT_PRE_SUBSYSTEM_INIT, function () { + selector.register('builtin', { + PhysicsWorld: BuiltinPhysicsWorld, + RigidBody: null, + BoxShape: BuiltinBoxShape, + CircleShape: BuiltinCircleShape, + PolygonShape: BuiltinPolygonShape, + MouseJoint: null, + DistanceJoint: null, + SpringJoint: null, + RelativeJoint: null, + SliderJoint: null, + FixedJoint: null, + WheelJoint: null, + HingeJoint: null + }); + }); + + var MorphModel = function (_Model) { + _inheritsLoose(MorphModel, _Model); + function MorphModel() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Model.call.apply(_Model, [this].concat(args)) || this; + _this._morphRenderingInstance = null; + _this._usedMaterials = new Set(); + return _this; + } + var _proto = MorphModel.prototype; + _proto.getMacroPatches = function getMacroPatches(subModelIndex) { + var superMacroPatches = _Model.prototype.getMacroPatches.call(this, subModelIndex); + if (this._morphRenderingInstance) { + var morphInstanceMacroPatches = this._morphRenderingInstance.requiredPatches(subModelIndex); + if (morphInstanceMacroPatches) { + return morphInstanceMacroPatches.concat(superMacroPatches !== null && superMacroPatches !== void 0 ? superMacroPatches : []); + } + } + return superMacroPatches; + }; + _proto.initSubModel = function initSubModel(subModelIndex, subMeshData, material) { + return _Model.prototype.initSubModel.call(this, subModelIndex, subMeshData, this._launderMaterial(material)); + }; + _proto.destroy = function destroy() { + _Model.prototype.destroy.call(this); + this._morphRenderingInstance = null; + }; + _proto.setSubModelMaterial = function setSubModelMaterial(subModelIndex, material) { + return _Model.prototype.setSubModelMaterial.call(this, subModelIndex, this._launderMaterial(material)); + }; + _proto.setMorphRendering = function setMorphRendering(morphRendering) { + this._morphRenderingInstance = morphRendering; + }; + _proto._updateLocalDescriptors = function _updateLocalDescriptors(submodelIdx, descriptorSet) { + _Model.prototype._updateLocalDescriptors.call(this, submodelIdx, descriptorSet); + if (this._morphRenderingInstance) { + this._morphRenderingInstance.adaptPipelineState(submodelIdx, descriptorSet); + } + }; + _proto._launderMaterial = function _launderMaterial(material) { + return material; + }; + return MorphModel; + }(Model); + + var _dec$t, _dec2$p, _dec3$n, _dec4$g, _dec5$g, _dec6$a, _dec7$8, _class$t, _class2$o, _initializer$m, _initializer2$l, _initializer3$h, _initializer4$f, _initializer5$d, _initializer6$9, _initializer7$9, _initializer8$9, _initializer9$8, _initializer10$8, _class3$f, _dec8$6, _dec9$5, _dec10$2, _dec11$1, _dec12$1, _dec13$1, _dec14, _dec15, _class4$1, _class5$3, _initializer11$8, _initializer12$7, _initializer13$5, _initializer14$4, _initializer15$3, _initializer16$3, _initializer17$2, _initializer18$1, _initializer19, _initializer20, _initializer21, _class6$1; + var ccclass = ccclass$t, + executionOrder = executionOrder$1, + type = type$8, + formerlySerializedAs = formerlySerializedAs$1, + serializable = serializable$9; + var _phaseID = getPhaseID('specular-pass'); + function getSkinPassIndex(subModel) { + var passes = subModel.passes; + var r = legacyCC.rendering; + if (isEnableEffect()) _phaseID = r.getPhaseID(r.getPassID('specular-pass'), 'default'); + for (var k = 0; k < passes.length; k++) { + if ((!r || !r.enableEffectImport) && passes[k].phase === _phaseID || isEnableEffect() && passes[k].phaseID === _phaseID) { + return k; + } + } + return -1; + } + var ModelShadowCastingMode = Enum({ + OFF: 0, + ON: 1 + }); + var ModelShadowReceivingMode = Enum({ + OFF: 0, + ON: 1 + }); + var ModelBakeSettings = (_dec$t = ccclass('cc.ModelBakeSettings'), _dec2$p = formerlySerializedAs('_recieveShadow'), _dec3$n = type(CCInteger), _dec4$g = type(CCBoolean), _dec5$g = type(CCBoolean), _dec6$a = type(Enum(ReflectionProbeType)), _dec7$8 = type(CCBoolean), _dec$t(_class$t = (_class2$o = (_class3$f = function (_EventTarget) { + _inheritsLoose(ModelBakeSettings, _EventTarget); + function ModelBakeSettings() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _EventTarget.call.apply(_EventTarget, [this].concat(args)) || this; + _this.texture = _initializer$m && _initializer$m(); + _this.uvParam = _initializer2$l && _initializer2$l(); + _this._bakeable = _initializer3$h && _initializer3$h(); + _this._castShadow = _initializer4$f && _initializer4$f(); + _this._receiveShadow = _initializer5$d && _initializer5$d(); + _this._lightmapSize = _initializer6$9 && _initializer6$9(); + _this._useLightProbe = _initializer7$9 && _initializer7$9(); + _this._bakeToLightProbe = _initializer8$9 && _initializer8$9(); + _this._reflectionProbeType = _initializer9$8 && _initializer9$8(); + _this._bakeToReflectionProbe = _initializer10$8 && _initializer10$8(); + _this.probeCubemap = null; + _this.probeBlendCubemap = null; + _this.probePlanarmap = null; + return _this; + } + _createClass(ModelBakeSettings, [{ + key: "bakeable", + get: function get() { + return this._bakeable; + }, + set: function set(val) { + this._bakeable = val; + } + }, { + key: "castShadow", + get: function get() { + return this._castShadow; + }, + set: function set(val) { + this._castShadow = val; + } + }, { + key: "receiveShadow", + get: function get() { + return this._receiveShadow; + }, + set: function set(val) { + this._receiveShadow = val; + } + }, { + key: "lightmapSize", + get: function get() { + return this._lightmapSize; + }, + set: function set(val) { + this._lightmapSize = val; + } + }, { + key: "useLightProbe", + get: function get() { + return this._useLightProbe; + }, + set: function set(val) { + this._useLightProbe = val; + this.emit(ModelBakeSettings.USE_LIGHT_PROBE_CHANGED); + } + }, { + key: "bakeToLightProbe", + get: function get() { + return this._bakeToLightProbe; + }, + set: function set(val) { + this._bakeToLightProbe = val; + } + }, { + key: "reflectionProbe", + get: function get() { + return this._reflectionProbeType; + }, + set: function set(val) { + this._reflectionProbeType = val; + this.emit(ModelBakeSettings.REFLECTION_PROBE_CHANGED); + } + }, { + key: "bakeToReflectionProbe", + get: function get() { + return this._bakeToReflectionProbe; + }, + set: function set(val) { + this._bakeToReflectionProbe = val; + this.emit(ModelBakeSettings.BAKE_TO_REFLECTION_PROBE_CHANGED); + } + }]); + return ModelBakeSettings; + }(EventTarget), _class3$f.USE_LIGHT_PROBE_CHANGED = 'use_light_probe_changed', _class3$f.REFLECTION_PROBE_CHANGED = 'reflection_probe_changed', _class3$f.BAKE_TO_REFLECTION_PROBE_CHANGED = 'bake_to_reflection_probe_changed', _class3$f), (_initializer$m = applyDecoratedInitializer(_class2$o.prototype, "texture", [serializable], function () { + return null; + }), _initializer2$l = applyDecoratedInitializer(_class2$o.prototype, "uvParam", [serializable], function () { + return new Vec4(); + }), _initializer3$h = applyDecoratedInitializer(_class2$o.prototype, "_bakeable", [serializable], function () { + return false; + }), _initializer4$f = applyDecoratedInitializer(_class2$o.prototype, "_castShadow", [serializable], function () { + return false; + }), _initializer5$d = applyDecoratedInitializer(_class2$o.prototype, "_receiveShadow", [_dec2$p], function () { + return false; + }), _initializer6$9 = applyDecoratedInitializer(_class2$o.prototype, "_lightmapSize", [serializable], function () { + return 64; + }), _initializer7$9 = applyDecoratedInitializer(_class2$o.prototype, "_useLightProbe", [serializable], function () { + return false; + }), _initializer8$9 = applyDecoratedInitializer(_class2$o.prototype, "_bakeToLightProbe", [serializable], function () { + return true; + }), _initializer9$8 = applyDecoratedInitializer(_class2$o.prototype, "_reflectionProbeType", [serializable], function () { + return ReflectionProbeType.NONE; + }), _initializer10$8 = applyDecoratedInitializer(_class2$o.prototype, "_bakeToReflectionProbe", [serializable], function () { + return true; + }), _applyDecoratedDescriptor(_class2$o.prototype, "lightmapSize", [_dec3$n], Object.getOwnPropertyDescriptor(_class2$o.prototype, "lightmapSize"), _class2$o.prototype), _applyDecoratedDescriptor(_class2$o.prototype, "useLightProbe", [_dec4$g], Object.getOwnPropertyDescriptor(_class2$o.prototype, "useLightProbe"), _class2$o.prototype), _applyDecoratedDescriptor(_class2$o.prototype, "bakeToLightProbe", [_dec5$g], Object.getOwnPropertyDescriptor(_class2$o.prototype, "bakeToLightProbe"), _class2$o.prototype), _applyDecoratedDescriptor(_class2$o.prototype, "reflectionProbe", [_dec6$a], Object.getOwnPropertyDescriptor(_class2$o.prototype, "reflectionProbe"), _class2$o.prototype), _applyDecoratedDescriptor(_class2$o.prototype, "bakeToReflectionProbe", [_dec7$8], Object.getOwnPropertyDescriptor(_class2$o.prototype, "bakeToReflectionProbe"), _class2$o.prototype)), _class2$o)) || _class$t); + var MeshRenderer = (_dec8$6 = ccclass('cc.MeshRenderer'), _dec9$5 = executionOrder(100), _dec10$2 = type(CCFloat), _dec11$1 = type(CCFloat), _dec12$1 = type(ModelShadowCastingMode), _dec13$1 = type(ModelShadowReceivingMode), _dec14 = type(Mesh), _dec15 = type(CCBoolean), _dec8$6(_class4$1 = _dec9$5(_class4$1 = (_class5$3 = (_class6$1 = function (_ModelRenderer) { + _inheritsLoose(MeshRenderer, _ModelRenderer); + var _proto = MeshRenderer.prototype; + _proto.onUpdateReceiveDirLight = function onUpdateReceiveDirLight(visibility, forceClose) { + if (forceClose === void 0) { + forceClose = false; + } + if (!this._model) { + return; + } + if (forceClose) { + this._model.receiveDirLight = false; + return; + } + if (this.node && (visibility & this.node.layer) === this.node.layer || visibility & this._model.visFlags) { + this._model.receiveDirLight = true; + } else { + this._model.receiveDirLight = false; + } + }; + _proto.clearGlobalStandardSkinObjectFlag = function clearGlobalStandardSkinObjectFlag() { + this._enabledGlobalStandardSkinObject = false; + }; + function MeshRenderer() { + var _this2; + _this2 = _ModelRenderer.call(this) || this; + _this2.bakeSettings = _initializer11$8 && _initializer11$8(); + _this2._mesh = _initializer12$7 && _initializer12$7(); + _this2._shadowCastingMode = _initializer13$5 && _initializer13$5(); + _this2._shadowReceivingMode = _initializer14$4 && _initializer14$4(); + _this2._shadowBias = _initializer15$3 && _initializer15$3(); + _this2._shadowNormalBias = _initializer16$3 && _initializer16$3(); + _this2._reflectionProbeId = _initializer17$2 && _initializer17$2(); + _this2._reflectionProbeBlendId = _initializer18$1 && _initializer18$1(); + _this2._reflectionProbeBlendWeight = _initializer19 && _initializer19(); + _this2._enabledGlobalStandardSkinObject = _initializer20 && _initializer20(); + _this2._reflectionProbeDataMap = null; + _this2._subMeshShapesWeights = []; + _this2._modelType = void 0; + _this2._model = null; + _this2._morphInstance = null; + _this2._enableMorph = _initializer21 && _initializer21(); + _this2._modelType = Model; + var highQualityMode = settings.querySettings(Settings.Category.RENDERING, 'highQualityMode'); + if (highQualityMode) { + _this2._shadowCastingMode = ModelShadowCastingMode.ON; + _this2.bakeSettings.castShadow = true; + _this2.bakeSettings.receiveShadow = true; + } + return _this2; + } + _proto.onLoad = function onLoad() { + if (this._mesh) { + this._mesh.initialize(); + } + if (!this._validateShapeWeights()) { + this._initSubMeshShapesWeights(); + } + this._watchMorphInMesh(); + this._updateModels(); + this._updateCastShadow(); + this._updateReceiveShadow(); + this._updateShadowBias(); + this._updateShadowNormalBias(); + this._updateUseLightProbe(); + this._updateBakeToReflectionProbe(); + this._updateUseReflectionProbe(); + this._updateReceiveDirLight(); + this._updateStandardSkin(); + }; + _proto.onRestore = function onRestore() { + this._updateModels(); + if (this.enabledInHierarchy) { + this._attachToScene(); + } + this._updateCastShadow(); + this._updateReceiveShadow(); + this._updateShadowBias(); + this._updateShadowNormalBias(); + this._updateUseLightProbe(); + this._updateBakeToReflectionProbe(); + this._updateUseReflectionProbe(); + this._updateReceiveDirLight(); + this._updateStandardSkin(); + }; + _proto.onEnable = function onEnable() { + _ModelRenderer.prototype.onEnable.call(this); + this.node.on(NodeEventType.MOBILITY_CHANGED, this.onMobilityChanged, this); + this.node.on(NodeEventType.LIGHT_PROBE_BAKING_CHANGED, this.onLightProbeBakingChanged, this); + this.bakeSettings.on(ModelBakeSettings.USE_LIGHT_PROBE_CHANGED, this.onUseLightProbeChanged, this); + this.bakeSettings.on(ModelBakeSettings.REFLECTION_PROBE_CHANGED, this.onReflectionProbeChanged, this); + this.bakeSettings.on(ModelBakeSettings.BAKE_TO_REFLECTION_PROBE_CHANGED, this.onBakeToReflectionProbeChanged, this); + if (!this._model) { + this._updateModels(); + } + this._model.onGlobalPipelineStateChanged(); + this._updateCastShadow(); + this._updateReceiveShadow(); + this._updateShadowBias(); + this._updateShadowNormalBias(); + this._updateBakeToReflectionProbe(); + this._updateUseReflectionProbe(); + this._onUpdateLocalShadowBiasAndProbeId(); + this._updateUseLightProbe(); + this._updateReceiveDirLight(); + this._onUpdateReflectionProbeDataMap(); + this._onUpdateLocalReflectionProbeData(); + this._updateStandardSkin(); + this._attachToScene(); + }; + _proto.onDisable = function onDisable() { + if (this._model) { + this._detachFromScene(); + } + this.node.off(NodeEventType.MOBILITY_CHANGED, this.onMobilityChanged, this); + this.node.off(NodeEventType.LIGHT_PROBE_BAKING_CHANGED, this.onLightProbeBakingChanged, this); + this.bakeSettings.off(ModelBakeSettings.USE_LIGHT_PROBE_CHANGED, this.onUseLightProbeChanged, this); + this.bakeSettings.off(ModelBakeSettings.REFLECTION_PROBE_CHANGED, this.onReflectionProbeChanged, this); + this.bakeSettings.off(ModelBakeSettings.BAKE_TO_REFLECTION_PROBE_CHANGED, this.onBakeToReflectionProbeChanged, this); + }; + _proto.onDestroy = function onDestroy() { + if (this._model) { + legacyCC.director.root.destroyModel(this._model); + this._model = null; + this._models.length = 0; + } + if (this._morphInstance) { + this._morphInstance.destroy(); + } + }; + _proto.onGeometryChanged = function onGeometryChanged() { + if (this._model && this._mesh) { + var meshStruct = this._mesh.struct; + this._model.createBoundingShape(meshStruct.minPosition, meshStruct.maxPosition); + this._model.updateWorldBound(); + this._model.onGeometryChanged(); + } + }; + _proto.getWeight = function getWeight(subMeshIndex, shapeIndex) { + var subMeshShapesWeights = this._subMeshShapesWeights; + assertIsTrue(subMeshIndex < subMeshShapesWeights.length); + var shapeWeights = this._subMeshShapesWeights[subMeshIndex]; + assertIsTrue(shapeIndex < shapeWeights.length); + return shapeWeights[shapeIndex]; + }; + _proto.setWeights = function setWeights(weights, subMeshIndex) { + var subMeshShapesWeights = this._subMeshShapesWeights; + if (subMeshIndex >= subMeshShapesWeights.length) { + return; + } + var shapeWeights = subMeshShapesWeights[subMeshIndex]; + if (shapeWeights.length !== weights.length) { + return; + } + subMeshShapesWeights[subMeshIndex] = weights.slice(0); + this._uploadSubMeshShapesWeights(subMeshIndex); + }; + _proto.setWeight = function setWeight(weight, subMeshIndex, shapeIndex) { + var subMeshShapesWeights = this._subMeshShapesWeights; + if (subMeshIndex >= subMeshShapesWeights.length) { + return; + } + var shapeWeights = subMeshShapesWeights[subMeshIndex]; + if (shapeIndex >= shapeWeights.length) { + return; + } + shapeWeights[shapeIndex] = weight; + this._uploadSubMeshShapesWeights(subMeshIndex); + }; + _proto.setInstancedAttribute = function setInstancedAttribute(name, value) { + if (!this.model) { + return; + } + { + var subModels = this.model.subModels; + for (var i = 0; i < subModels.length; i++) { + var subModel = subModels[i]; + var _subModel$instancedAt = subModel.instancedAttributeBlock, + attributes = _subModel$instancedAt.attributes, + views = _subModel$instancedAt.views; + for (var _i = 0; _i < attributes.length; _i++) { + if (attributes[_i].name === name) { + views[_i].set(value); + break; + } + } + } + } + }; + _proto._updateLightmap = function _updateLightmap(lightmap, uOff, vOff, scale, lum) { + this.bakeSettings.texture = lightmap; + this.bakeSettings.uvParam.x = uOff; + this.bakeSettings.uvParam.y = vOff; + this.bakeSettings.uvParam.z = scale; + this.bakeSettings.uvParam.w = lum; + this._onUpdateLightingmap(); + this._updateReceiveDirLight(); + }; + _proto.updateProbeCubemap = function updateProbeCubemap(cubeMap) { + if (this.bakeSettings.probeCubemap && this.bakeSettings.probeCubemap === cubeMap) { + return; + } + this.bakeSettings.probeCubemap = cubeMap; + if (this.model !== null) { + this.model.updateReflectionProbeCubemap(this.bakeSettings.probeCubemap); + } + }; + _proto.updateProbeBlendCubemap = function updateProbeBlendCubemap(cubeMap) { + if (this.bakeSettings.probeBlendCubemap && this.bakeSettings.probeBlendCubemap === cubeMap) { + return; + } + this.bakeSettings.probeBlendCubemap = cubeMap; + if (this.model !== null) { + this.model.updateReflectionProbeBlendCubemap(this.bakeSettings.probeBlendCubemap); + } + }; + _proto.updateProbePlanarMap = function updateProbePlanarMap(planarMap) { + if (this.bakeSettings.probePlanarmap === planarMap) { + return; + } + this.bakeSettings.probePlanarmap = planarMap; + if (this.model !== null) { + this.model.updateReflectionProbePlanarMap(this.bakeSettings.probePlanarmap); + } + }; + _proto.updateReflectionProbeDataMap = function updateReflectionProbeDataMap(dataMap) { + this._reflectionProbeDataMap = dataMap; + if (this.model !== null) { + this.model.updateReflectionProbeDataMap(dataMap); + } + }; + _proto.updateReflectionProbeId = function updateReflectionProbeId(probeId) { + this._reflectionProbeId = probeId; + if (this.model) { + this.model.reflectionProbeId = probeId; + } + this._onUpdateLocalShadowBiasAndProbeId(); + }; + _proto.updateReflectionProbeBlendId = function updateReflectionProbeBlendId(blendProbeId) { + this._reflectionProbeBlendId = blendProbeId; + if (this.model) { + this.model.reflectionProbeBlendId = blendProbeId; + } + this._onUpdateLocalShadowBiasAndProbeId(); + }; + _proto.updateReflectionProbeBlendWeight = function updateReflectionProbeBlendWeight(weight) { + this._reflectionProbeBlendWeight = weight; + if (this.model) { + this.model.reflectionProbeBlendWeight = weight; + } + this._onUpdateLocalReflectionProbeData(); + }; + _proto._updateReflectionProbeTexture = function _updateReflectionProbeTexture() { + if (!this.model) return; + var bakeSettings = this.bakeSettings; + var reflectionProbe = bakeSettings.reflectionProbe; + var probeBlendCubemap = bakeSettings.probeBlendCubemap; + var probePlanarMap = bakeSettings.probePlanarmap; + var probeCubeMap = bakeSettings.probeCubemap; + if (reflectionProbe === ReflectionProbeType.BAKED_CUBEMAP) { + this.model.updateReflectionProbeCubemap(probeCubeMap); + this.model.updateReflectionProbePlanarMap(null); + this.model.updateReflectionProbeBlendCubemap(null); + } else if (reflectionProbe === ReflectionProbeType.BLEND_PROBES || reflectionProbe === ReflectionProbeType.BLEND_PROBES_AND_SKYBOX) { + this.model.updateReflectionProbeCubemap(probeCubeMap); + this.model.updateReflectionProbeBlendCubemap(probeBlendCubemap); + this.model.updateReflectionProbePlanarMap(null); + } else if (reflectionProbe === ReflectionProbeType.PLANAR_REFLECTION) { + this.model.updateReflectionProbePlanarMap(probePlanarMap); + this.model.updateReflectionProbeCubemap(null); + this.model.updateReflectionProbeBlendCubemap(null); + } else { + this.model.updateReflectionProbeCubemap(null); + this.model.updateReflectionProbePlanarMap(null); + this.model.updateReflectionProbeBlendCubemap(null); + } + }; + _proto._updateModels = function _updateModels() { + if (!this.enabledInHierarchy) { + return; + } + var model = this._model; + if (model) { + model.destroy(); + model.initialize(); + model.node = model.transform = this.node; + } else { + this._createModel(); + } + if (this._model) { + if (this._mesh) { + var meshStruct = this._mesh.struct; + this._model.createBoundingShape(meshStruct.minPosition, meshStruct.maxPosition); + this._model.updateWorldBound(); + } + this._model.initLightingmap(this.bakeSettings.texture, this.bakeSettings.uvParam); + this._updateUseLightProbe(); + this._updateUseReflectionProbeType(); + this._updateModelParams(); + this._onUpdateLightingmap(); + this._onUpdateLocalShadowBiasAndProbeId(); + this._updateUseReflectionProbe(); + this._updateReceiveDirLight(); + this._onUpdateReflectionProbeDataMap(); + this._onUpdateLocalReflectionProbeData(); + } + }; + _proto._updateReceiveDirLight = function _updateReceiveDirLight() { + if (!this._model) { + return; + } + var scene = this.node.scene; + if (!scene || !scene.renderScene) { + return; + } + var mainLight = scene.renderScene.mainLight; + if (!mainLight) { + return; + } + var visibility = mainLight.visibility; + if (!mainLight.node) { + return; + } + if (mainLight.node.mobility === MobilityMode.Static) { + var forceClose = false; + if (this.bakeSettings.texture && !this.node.scene.globals.disableLightmap) { + forceClose = true; + } + if (this.node.scene.globals.lightProbeInfo.data && this.node.scene.globals.lightProbeInfo.data.hasCoefficients() && this._model.useLightProbe) { + forceClose = true; + } + this.onUpdateReceiveDirLight(visibility, forceClose); + } else { + this.onUpdateReceiveDirLight(visibility); + } + }; + _proto._createModel = function _createModel() { + var preferMorphOverPlain = !!this._morphInstance; + var modelType = preferMorphOverPlain && this._modelType === Model ? MorphModel : this._modelType; + var model = this._model = legacyCC.director.root.createModel(modelType); + model.visFlags = this.visibility; + model.node = model.transform = this.node; + this._models.length = 0; + this._models.push(this._model); + if (this._morphInstance && model instanceof MorphModel) { + model.setMorphRendering(this._morphInstance); + } + }; + _proto._attachToScene = function _attachToScene() { + if (!this.node.scene || !this._model) { + return; + } + var renderScene = this._getRenderScene(); + if (this._model.scene !== null) { + this._detachFromScene(); + } + renderScene.addModel(this._model); + }; + _proto._detachFromScene = function _detachFromScene() { + if (this._model && this._model.scene) { + this._model.scene.removeModel(this._model); + } + }; + _proto._updateModelParams = function _updateModelParams() { + if (!this._mesh || !this._model) { + return; + } + this.node.hasChangedFlags |= TransformBit.POSITION; + this._model.transform.hasChangedFlags |= TransformBit.POSITION; + this._model.isDynamicBatching = this._isBatchingEnabled(); + var meshCount = this._mesh ? this._mesh.renderingSubMeshes.length : 0; + var renderingMesh = this._mesh.renderingSubMeshes; + if (renderingMesh) { + for (var i = 0; i < meshCount; ++i) { + var material = this.getRenderMaterial(i); + if (material && !material.isValid) { + material = null; + } + var subMeshData = renderingMesh[i]; + if (subMeshData) { + this._model.initSubModel(i, subMeshData, material || this._getBuiltinMaterial()); + } + } + } + this._model.enabled = true; + }; + _proto._onUpdateLightingmap = function _onUpdateLightingmap() { + if (this.model !== null) { + this.model.updateLightingmap(this.bakeSettings.texture, this.bakeSettings.uvParam); + } + this.setInstancedAttribute('a_lightingMapUVParam', [this.bakeSettings.uvParam.x, this.bakeSettings.uvParam.y, this.bakeSettings.uvParam.z, this.bakeSettings.uvParam.w]); + }; + _proto._onUpdateLocalShadowBiasAndProbeId = function _onUpdateLocalShadowBiasAndProbeId() { + if (this.model !== null) { + this.model.updateLocalShadowBias(); + this.model.updateReflectionProbeId(); + } + this.setInstancedAttribute('a_localShadowBiasAndProbeId', [this._shadowBias, this._shadowNormalBias, this._reflectionProbeId, this._reflectionProbeBlendId]); + }; + _proto._onUpdateLocalReflectionProbeData = function _onUpdateLocalReflectionProbeData() { + if (this.bakeSettings.reflectionProbe === ReflectionProbeType.BAKED_CUBEMAP || this.bakeSettings.reflectionProbe === ReflectionProbeType.BLEND_PROBES || this.bakeSettings.reflectionProbe === ReflectionProbeType.BLEND_PROBES_AND_SKYBOX) { + if (this.model !== null) { + this.model.updateReflectionProbeId(); + } + this.setInstancedAttribute('a_reflectionProbeData', [this._reflectionProbeBlendWeight, 0.0, 0.0, 0.0]); + } + }; + _proto._onUpdateReflectionProbeDataMap = function _onUpdateReflectionProbeDataMap() { + if (this.model !== null) { + this.model.updateReflectionProbeDataMap(this._reflectionProbeDataMap); + } + }; + _proto._onMaterialModified = function _onMaterialModified(idx, material) { + if (!this._model || !this._model.inited) { + return; + } + this._onRebuildPSO(idx, material || this._getBuiltinMaterial()); + this._updateStandardSkin(); + }; + _proto._onRebuildPSO = function _onRebuildPSO(idx, material) { + if (!this._model || !this._model.inited) { + return; + } + this._model.isDynamicBatching = this._isBatchingEnabled(); + this._model.setSubModelMaterial(idx, material); + this._onUpdateLightingmap(); + this._onUpdateLocalShadowBiasAndProbeId(); + this._updateReflectionProbeTexture(); + this._onUpdateReflectionProbeDataMap(); + this._onUpdateLocalReflectionProbeData(); + }; + _proto._onMeshChanged = function _onMeshChanged(old) {}; + _proto._clearMaterials = function _clearMaterials() { + if (!this._model) { + return; + } + var subModels = this._model.subModels; + for (var i = 0; i < subModels.length; ++i) { + this._onMaterialModified(i, null); + } + }; + _proto._getBuiltinMaterial = function _getBuiltinMaterial() { + return builtinResMgr.get('missing-material'); + }; + _proto._onVisibilityChange = function _onVisibilityChange(val) { + if (!this._model) { + return; + } + this._model.visFlags = val; + }; + _proto._updateShadowBias = function _updateShadowBias() { + if (!this._model) { + return; + } + this._model.shadowBias = this._shadowBias; + }; + _proto._updateShadowNormalBias = function _updateShadowNormalBias() { + if (!this._model) { + return; + } + this._model.shadowNormalBias = this._shadowNormalBias; + }; + _proto._updateCastShadow = function _updateCastShadow() { + if (!this._model) { + return; + } + if (this._shadowCastingMode === ModelShadowCastingMode.OFF) { + this._model.castShadow = false; + } else { + assertIsTrue(this._shadowCastingMode === ModelShadowCastingMode.ON, "ShadowCastingMode " + this._shadowCastingMode + " is not supported."); + this._model.castShadow = true; + } + }; + _proto._updateReceiveShadow = function _updateReceiveShadow() { + if (!this._model) { + return; + } + if (this._shadowReceivingMode === ModelShadowReceivingMode.OFF) { + this._model.receiveShadow = false; + } else { + this._model.receiveShadow = true; + } + }; + _proto.onMobilityChanged = function onMobilityChanged() { + this._updateUseLightProbe(); + this._updateReceiveDirLight(); + }; + _proto.onLightProbeBakingChanged = function onLightProbeBakingChanged() { + this._updateReceiveDirLight(); + }; + _proto.onUseLightProbeChanged = function onUseLightProbeChanged() { + this._updateUseLightProbe(); + }; + _proto.onReflectionProbeChanged = function onReflectionProbeChanged() { + this._updateUseReflectionProbe(); + this._onUpdateLocalShadowBiasAndProbeId(); + if (this.bakeSettings.reflectionProbe === ReflectionProbeType.BAKED_CUBEMAP || this.bakeSettings.reflectionProbe === ReflectionProbeType.BLEND_PROBES || this.bakeSettings.reflectionProbe === ReflectionProbeType.BLEND_PROBES_AND_SKYBOX) { + legacyCC.internal.reflectionProbeManager.selectReflectionProbe(this._model); + if (!legacyCC.internal.reflectionProbeManager.getUsedReflectionProbe(this._model, false)) { + warnID(16302); + } + } else if (this.bakeSettings.reflectionProbe === ReflectionProbeType.PLANAR_REFLECTION) { + legacyCC.internal.reflectionProbeManager.selectPlanarReflectionProbe(this._model); + if (!legacyCC.internal.reflectionProbeManager.getUsedReflectionProbe(this._model, true)) { + warnID(16302); + } + } + }; + _proto.onBakeToReflectionProbeChanged = function onBakeToReflectionProbeChanged() { + this._updateBakeToReflectionProbe(); + }; + _proto._updateUseLightProbe = function _updateUseLightProbe() { + if (!this._model) { + return; + } + var node = this.node; + if (this._mesh && node && node.mobility === MobilityMode.Movable && this.bakeSettings.useLightProbe) { + this._model.useLightProbe = true; + } else { + this._model.useLightProbe = false; + } + }; + _proto._isBatchingEnabled = function _isBatchingEnabled() { + for (var i = 0; i < this._materials.length; ++i) { + var mat = this._materials[i]; + if (!mat) { + continue; + } + for (var p = 0; p < mat.passes.length; ++p) { + var pass = mat.passes[p]; + if (pass.batchingScheme) { + return true; + } + } + } + return false; + }; + _proto._updateUseReflectionProbe = function _updateUseReflectionProbe() { + if (!this._model) return; + this._model.reflectionProbeType = this.bakeSettings.reflectionProbe; + this._updateReflectionProbeTexture(); + }; + _proto._updateUseReflectionProbeType = function _updateUseReflectionProbeType() { + if (!this._model) return; + this._model.reflectionProbeType = this.bakeSettings.reflectionProbe; + }; + _proto._updateBakeToReflectionProbe = function _updateBakeToReflectionProbe() { + if (!this._model) { + return; + } + this._model.bakeToReflectionProbe = this.bakeSettings.bakeToReflectionProbe; + }; + _proto._watchMorphInMesh = function _watchMorphInMesh() { + if (this._morphInstance) { + this._morphInstance.destroy(); + this._morphInstance = null; + } + if (!this._enableMorph) { + return; + } + if (!this._mesh || !this._mesh.struct.morph || !this._mesh.morphRendering) { + return; + } + this._morphInstance = this._mesh.morphRendering.createInstance(); + var nSubMeshes = this._mesh.struct.primitives.length; + for (var iSubMesh = 0; iSubMesh < nSubMeshes; ++iSubMesh) { + this._uploadSubMeshShapesWeights(iSubMesh); + } + if (this._model && this._model instanceof MorphModel) { + this._model.setMorphRendering(this._morphInstance); + } + }; + _proto._initSubMeshShapesWeights = function _initSubMeshShapesWeights() { + var mesh = this._mesh; + this._subMeshShapesWeights.length = 0; + if (!mesh) { + return; + } + var morph = mesh.struct.morph; + if (!morph) { + return; + } + var commonWeights = morph.weights; + this._subMeshShapesWeights = morph.subMeshMorphs.map(function (subMeshMorph) { + if (!subMeshMorph) { + return []; + } else if (subMeshMorph.weights) { + return subMeshMorph.weights.slice(0); + } else if (commonWeights) { + assertIsTrue(commonWeights.length === subMeshMorph.targets.length); + return commonWeights.slice(0); + } else { + return new Array(subMeshMorph.targets.length).fill(0.0); + } + }); + }; + _proto._validateShapeWeights = function _validateShapeWeights() { + var mesh = this._mesh, + subMeshShapesWeights = this._subMeshShapesWeights; + if (!mesh || !mesh.struct.morph) { + return subMeshShapesWeights.length === 0; + } + var morph = mesh.struct.morph; + if (morph.subMeshMorphs.length !== subMeshShapesWeights.length) { + return false; + } + return subMeshShapesWeights.every(function (_ref, subMeshIndex) { + var _morph$subMeshMorphs$, _morph$subMeshMorphs$2; + var shapeCount = _ref.length; + return ((_morph$subMeshMorphs$ = (_morph$subMeshMorphs$2 = morph.subMeshMorphs[subMeshIndex]) === null || _morph$subMeshMorphs$2 === void 0 ? void 0 : _morph$subMeshMorphs$2.targets.length) !== null && _morph$subMeshMorphs$ !== void 0 ? _morph$subMeshMorphs$ : 0) === shapeCount; + }); + }; + _proto._uploadSubMeshShapesWeights = function _uploadSubMeshShapesWeights(subMeshIndex) { + var _this$_morphInstance; + (_this$_morphInstance = this._morphInstance) === null || _this$_morphInstance === void 0 ? void 0 : _this$_morphInstance.setWeights(subMeshIndex, this._subMeshShapesWeights[subMeshIndex]); + }; + _proto._updateStandardSkin = function _updateStandardSkin() { + var pipelineSceneData = legacyCC.director.root.pipeline.pipelineSceneData; + if (this._enabledGlobalStandardSkinObject) { + pipelineSceneData.standardSkinMeshRenderer = this; + pipelineSceneData.standardSkinModel = this.model; + } + if (!pipelineSceneData.skinMaterialModel && this._model) { + var subModels = this._model.subModels; + for (var j = 0; j < subModels.length; j++) { + var subModel = subModels[j]; + var skinPassIdx = getSkinPassIndex(subModel); + if (skinPassIdx < 0) { + continue; + } + pipelineSceneData.skinMaterialModel = this._model; + return; + } + } + }; + _createClass(MeshRenderer, [{ + key: "shadowBias", + get: function get() { + return this._shadowBias; + }, + set: function set(val) { + this._shadowBias = val; + this._updateShadowBias(); + this._onUpdateLocalShadowBiasAndProbeId(); + } + }, { + key: "shadowNormalBias", + get: function get() { + return this._shadowNormalBias; + }, + set: function set(val) { + this._shadowNormalBias = val; + this._updateShadowNormalBias(); + this._onUpdateLocalShadowBiasAndProbeId(); + } + }, { + key: "shadowCastingMode", + get: function get() { + return this._shadowCastingMode; + }, + set: function set(val) { + this._shadowCastingMode = val; + this._updateCastShadow(); + } + }, { + key: "shadowCastingModeForInspector", + get: function get() { + return this.shadowCastingMode === ModelShadowCastingMode.ON; + }, + set: function set(val) { + this.shadowCastingMode = val === true ? ModelShadowCastingMode.ON : ModelShadowCastingMode.OFF; + } + }, { + key: "receiveShadow", + get: function get() { + return this._shadowReceivingMode; + }, + set: function set(val) { + this._shadowReceivingMode = val; + this._updateReceiveShadow(); + } + }, { + key: "receiveShadowForInspector", + get: function get() { + return this._shadowReceivingMode === ModelShadowReceivingMode.ON; + }, + set: function set(val) { + this._shadowReceivingMode = val === true ? ModelShadowReceivingMode.ON : ModelShadowReceivingMode.OFF; + this._updateReceiveShadow(); + } + }, { + key: "mesh", + get: function get() { + return this._mesh; + }, + set: function set(val) { + var old = this._mesh; + var mesh = this._mesh = val; + mesh === null || mesh === void 0 ? void 0 : mesh.initialize(); + this._initSubMeshShapesWeights(); + this._watchMorphInMesh(); + this._onMeshChanged(old); + this._updateModels(); + if (this.enabledInHierarchy) { + this._attachToScene(); + } + this._updateCastShadow(); + this._updateReceiveShadow(); + this._updateUseLightProbe(); + this._updateUseReflectionProbe(); + this._updateReceiveDirLight(); + } + }, { + key: "model", + get: function get() { + return this._model; + } + }, { + key: "enableMorph", + get: function get() { + return this._enableMorph; + }, + set: function set(value) { + this._enableMorph = value; + } + }, { + key: "isGlobalStandardSkinObject", + get: function get() { + return this._enabledGlobalStandardSkinObject; + }, + set: function set(val) { + legacyCC.director.root.pipeline.pipelineSceneData.standardSkinMeshRenderer = val ? this : null; + this._enabledGlobalStandardSkinObject = val; + } + }]); + return MeshRenderer; + }(ModelRenderer), _class6$1.ShadowCastingMode = ModelShadowCastingMode, _class6$1.ShadowReceivingMode = ModelShadowReceivingMode, _class6$1), (_initializer11$8 = applyDecoratedInitializer(_class5$3.prototype, "bakeSettings", [serializable], function () { + return new ModelBakeSettings(this); + }), _initializer12$7 = applyDecoratedInitializer(_class5$3.prototype, "_mesh", [serializable], function () { + return null; + }), _initializer13$5 = applyDecoratedInitializer(_class5$3.prototype, "_shadowCastingMode", [serializable], function () { + return ModelShadowCastingMode.OFF; + }), _initializer14$4 = applyDecoratedInitializer(_class5$3.prototype, "_shadowReceivingMode", [serializable], function () { + return ModelShadowReceivingMode.ON; + }), _initializer15$3 = applyDecoratedInitializer(_class5$3.prototype, "_shadowBias", [serializable], function () { + return 0; + }), _initializer16$3 = applyDecoratedInitializer(_class5$3.prototype, "_shadowNormalBias", [serializable], function () { + return 0; + }), _initializer17$2 = applyDecoratedInitializer(_class5$3.prototype, "_reflectionProbeId", [serializable], function () { + return -1; + }), _initializer18$1 = applyDecoratedInitializer(_class5$3.prototype, "_reflectionProbeBlendId", [serializable], function () { + return -1; + }), _initializer19 = applyDecoratedInitializer(_class5$3.prototype, "_reflectionProbeBlendWeight", [serializable], function () { + return 0; + }), _initializer20 = applyDecoratedInitializer(_class5$3.prototype, "_enabledGlobalStandardSkinObject", [serializable], function () { + return false; + }), _applyDecoratedDescriptor(_class5$3.prototype, "shadowBias", [_dec10$2], Object.getOwnPropertyDescriptor(_class5$3.prototype, "shadowBias"), _class5$3.prototype), _applyDecoratedDescriptor(_class5$3.prototype, "shadowNormalBias", [_dec11$1], Object.getOwnPropertyDescriptor(_class5$3.prototype, "shadowNormalBias"), _class5$3.prototype), _applyDecoratedDescriptor(_class5$3.prototype, "shadowCastingMode", [_dec12$1], Object.getOwnPropertyDescriptor(_class5$3.prototype, "shadowCastingMode"), _class5$3.prototype), _applyDecoratedDescriptor(_class5$3.prototype, "receiveShadow", [_dec13$1], Object.getOwnPropertyDescriptor(_class5$3.prototype, "receiveShadow"), _class5$3.prototype), _applyDecoratedDescriptor(_class5$3.prototype, "mesh", [_dec14], Object.getOwnPropertyDescriptor(_class5$3.prototype, "mesh"), _class5$3.prototype), _applyDecoratedDescriptor(_class5$3.prototype, "isGlobalStandardSkinObject", [_dec15], Object.getOwnPropertyDescriptor(_class5$3.prototype, "isGlobalStandardSkinObject"), _class5$3.prototype), _initializer21 = applyDecoratedInitializer(_class5$3.prototype, "_enableMorph", [serializable], function () { + return true; + })), _class5$3)) || _class4$1) || _class4$1); + + var Counter = function () { + function Counter(id, opts, now) { + this._opts = void 0; + this._total = 0; + this._value = 0; + this._averageValue = 0; + this._accumValue = 0; + this._accumSamples = 0; + this._id = id; + this._opts = opts; + this._accumStart = now; + } + var _proto = Counter.prototype; + _proto.sample = function sample(now) { + this._average(this._value, now); + }; + _proto.human = function human() { + var _this$_opts = this._opts, + average = _this$_opts.average, + isInteger = _this$_opts.isInteger; + var v = average ? this._averageValue : this._value; + return isInteger ? Math.round(v) : Math.round(v * 100) / 100; + }; + _proto.alarm = function alarm() { + return this._opts.below && this._value < this._opts.below || this._opts.over && this._value > this._opts.over; + }; + _proto._average = function _average(v, now) { + if (now === void 0) { + now = 0; + } + if (this._opts.average) { + this._accumValue += v; + ++this._accumSamples; + var t = now; + if (t - this._accumStart >= this._opts.average) { + this._averageValue = this._accumValue / this._accumSamples; + this._accumValue = 0; + this._accumStart = t; + this._accumSamples = 0; + } + } + }; + _createClass(Counter, [{ + key: "value", + get: function get() { + return this._value; + }, + set: function set(val) { + this._value = val; + } + }]); + return Counter; + }(); + + var _dec$s, _class$s; + var PerfCounter = (_dec$s = ccclass$t('cc.PerfCounter'), _dec$s(_class$s = function (_Counter) { + _inheritsLoose(PerfCounter, _Counter); + function PerfCounter(id, opts, now) { + var _this; + _this = _Counter.call(this, id, opts, now) || this; + _this._time = now; + return _this; + } + var _proto = PerfCounter.prototype; + _proto.start = function start(now) { + if (now === void 0) { + now = 0; + } + this._time = now; + }; + _proto.end = function end(now) { + if (now === void 0) { + now = 0; + } + this._value = now - this._time; + this._average(this._value); + }; + _proto.tick = function tick() { + this.end(); + this.start(); + }; + _proto.frame = function frame(now) { + var t = now; + var e = t - this._time; + this._total++; + var avg = this._opts.average || 1000; + if (e > avg) { + this._value = this._total * 1000 / e; + this._total = 0; + this._time = t; + this._average(this._value); + } + }; + return PerfCounter; + }(Counter)) || _class$s); + + var _characters = '0123456789. '; + var _average = 500; + var _string2offset = { + 0: 0, + 1: 1, + 2: 2, + 3: 3, + 4: 4, + 5: 5, + 6: 6, + 7: 7, + 8: 8, + 9: 9, + '.': 10 + }; + var _profileInfo = { + fps: { + desc: "Framerate (FPS)", + below: 30, + average: _average, + isInteger: true + }, + draws: { + desc: 'Draw call', + isInteger: true + }, + frame: { + desc: 'Frame time (ms)', + min: 0, + max: 50, + average: _average + }, + instances: { + desc: 'Instance Count', + isInteger: true + }, + tricount: { + desc: 'Triangle', + isInteger: true + }, + logic: { + desc: 'Game Logic (ms)', + min: 0, + max: 50, + average: _average, + color: '#080' + }, + physics: { + desc: 'Physics (ms)', + min: 0, + max: 50, + average: _average + }, + render: { + desc: 'Renderer (ms)', + min: 0, + max: 50, + average: _average, + color: '#f90' + }, + present: { + desc: 'Present (ms)', + min: 0, + max: 50, + average: _average, + color: '#f90' + }, + textureMemory: { + desc: 'GFX Texture Mem(M)' + }, + bufferMemory: { + desc: 'GFX Buffer Mem(M)' + } + }; + var _constants = { + fontSize: 23, + quadHeight: 0.4, + segmentsPerLine: 8, + textureWidth: 280, + textureHeight: 280 + }; + var Profiler = exports('f2', function (_System) { + _inheritsLoose(Profiler, _System); + function Profiler() { + var _this; + _this = _System.call(this) || this; + _this._profilerStats = null; + _this._showFPS = false; + _this._rootNode = null; + _this._device = null; + _this._swapchain = null; + _this._meshRenderer = null; + _this._canvas = null; + _this._ctx = null; + _this._texture = null; + _this._region = new BufferTextureCopy(); + _this._canvasArr = []; + _this._regionArr = [_this._region]; + _this.digitsData = null; + _this.offsetData = null; + _this.pass = null; + _this._canvasDone = false; + _this._statsDone = false; + _this._inited = false; + _this._lineHeight = _constants.textureHeight / (Object.keys(_profileInfo).length + 1); + _this._wordHeight = 0; + _this._eachNumWidth = 0; + _this._totalLines = 0; + _this.lastTime = 0; + { + _this._canvas = ccwindow.document.createElement('canvas'); + _this._ctx = _this._canvas.getContext('2d'); + _this._canvasArr.push(_this._canvas); + } + return _this; + } + var _proto = Profiler.prototype; + _proto.init = function init() { + var showFPS = !!settings.querySettings(Settings.Category.PROFILING, 'showFPS'); + if (showFPS) { + this.showStats(); + } else { + this.hideStats(); + } + }; + _proto.isShowingStats = function isShowingStats() { + return this._showFPS; + }; + _proto.hideStats = function hideStats() { + if (this._showFPS) { + if (this._rootNode) { + this._rootNode.active = false; + } + legacyCC.director.off(legacyCC.Director.EVENT_BEFORE_UPDATE, this.beforeUpdate, this); + legacyCC.director.off(legacyCC.Director.EVENT_AFTER_UPDATE, this.afterUpdate, this); + legacyCC.director.off(legacyCC.Director.EVENT_BEFORE_PHYSICS, this.beforePhysics, this); + legacyCC.director.off(legacyCC.Director.EVENT_AFTER_PHYSICS, this.afterPhysics, this); + legacyCC.director.off(legacyCC.Director.EVENT_BEFORE_DRAW, this.beforeDraw, this); + legacyCC.director.off(legacyCC.Director.EVENT_AFTER_RENDER, this.afterRender, this); + legacyCC.director.off(legacyCC.Director.EVENT_AFTER_DRAW, this.afterPresent, this); + this._showFPS = false; + director.root.pipeline.profiler = null; + legacyCC.game.config.showFPS = false; + } + }; + _proto.showStats = function showStats() { + if (!this._showFPS) { + if (!this._device) { + var root = legacyCC.director.root; + this._device = deviceManager.gfxDevice; + this._swapchain = root.mainWindow.swapchain; + } + this.generateCanvas(); + this.generateStats(); + legacyCC.game.once(legacyCC.Game.EVENT_ENGINE_INITED, this.generateNode, this); + legacyCC.game.on(legacyCC.Game.EVENT_RESTART, this.generateNode, this); + if (this._rootNode) { + this._rootNode.active = true; + } + legacyCC.director.on(legacyCC.Director.EVENT_BEFORE_UPDATE, this.beforeUpdate, this); + legacyCC.director.on(legacyCC.Director.EVENT_AFTER_UPDATE, this.afterUpdate, this); + legacyCC.director.on(legacyCC.Director.EVENT_BEFORE_PHYSICS, this.beforePhysics, this); + legacyCC.director.on(legacyCC.Director.EVENT_AFTER_PHYSICS, this.afterPhysics, this); + legacyCC.director.on(legacyCC.Director.EVENT_BEFORE_DRAW, this.beforeDraw, this); + legacyCC.director.on(legacyCC.Director.EVENT_AFTER_RENDER, this.afterRender, this); + legacyCC.director.on(legacyCC.Director.EVENT_AFTER_DRAW, this.afterPresent, this); + this._showFPS = true; + this._canvasDone = true; + this._statsDone = true; + legacyCC.game.config.showFPS = true; + } + }; + _proto.generateCanvas = function generateCanvas() { + if (this._canvasDone) { + return; + } + var textureWidth = _constants.textureWidth, + textureHeight = _constants.textureHeight; + if (!this._ctx || !this._canvas) { + return; + } + this._canvas.width = textureWidth; + this._canvas.height = textureHeight; + this._canvas.style.width = "" + this._canvas.width; + this._canvas.style.height = "" + this._canvas.height; + this._ctx.font = _constants.fontSize + "px Arial"; + this._ctx.textBaseline = 'top'; + this._ctx.fillStyle = '#fff'; + this._texture = this._device.createTexture(new TextureInfo(TextureType.TEX2D, TextureUsageBit.SAMPLED | TextureUsageBit.TRANSFER_DST, Format.RGBA8, textureWidth, textureHeight)); + this._region.texExtent.width = textureWidth; + this._region.texExtent.height = textureHeight; + }; + _proto.generateStats = function generateStats() { + if (this._statsDone || !this._ctx || !this._canvas) { + return; + } + this._profilerStats = null; + var now = performance.now(); + this._ctx.textAlign = 'left'; + var i = 0; + for (var id in _profileInfo) { + var element = _profileInfo[id]; + this._ctx.fillText(element.desc, 0, i * this._lineHeight); + element.counter = new PerfCounter(id, element, now); + i++; + } + this._totalLines = i; + this._wordHeight = this._totalLines * this._lineHeight / this._canvas.height; + for (var j = 0; j < _characters.length; ++j) { + var offset = this._ctx.measureText(_characters[j]).width; + this._eachNumWidth = Math.max(this._eachNumWidth, offset); + } + for (var _j = 0; _j < _characters.length; ++_j) { + this._ctx.fillText(_characters[_j], _j * this._eachNumWidth, this._totalLines * this._lineHeight); + } + this._eachNumWidth /= this._canvas.width; + this._profilerStats = _profileInfo; + this._canvasArr[0] = this._canvas; + this._device.copyTexImagesToTexture(this._canvasArr, this._texture, this._regionArr); + }; + _proto.generateNode = function generateNode() { + if (this._rootNode && this._rootNode.isValid) { + return; + } + this._rootNode = new Node$1('PROFILER_NODE'); + this._rootNode._objFlags = legacyCC.Object.Flags.DontSave | legacyCC.Object.Flags.HideInHierarchy; + legacyCC.game.addPersistRootNode(this._rootNode); + var managerNode = new Node$1('Profiler_Root'); + managerNode.parent = this._rootNode; + var height = _constants.quadHeight; + var rowHeight = height / this._totalLines; + var lWidth = height / this._wordHeight; + var scale = rowHeight / _constants.fontSize; + var columnWidth = this._eachNumWidth * this._canvas.width * scale; + var vertexPos = [0, height, 0, lWidth, height, 0, lWidth, 0, 0, 0, 0, 0]; + var vertexindices = [0, 2, 1, 0, 3, 2]; + var vertexUV = [0, 0, -1, 0, 1, 0, -1, 0, 1, this._wordHeight, -1, 0, 0, this._wordHeight, -1, 0]; + var offset = 0; + for (var i = 0; i < this._totalLines; i++) { + for (var j = 0; j < _constants.segmentsPerLine; j++) { + vertexPos.push(lWidth + j * columnWidth, height - i * rowHeight, 0); + vertexPos.push(lWidth + (j + 1) * columnWidth, height - i * rowHeight, 0); + vertexPos.push(lWidth + (j + 1) * columnWidth, height - (i + 1) * rowHeight, 0); + vertexPos.push(lWidth + j * columnWidth, height - (i + 1) * rowHeight, 0); + offset = (i * _constants.segmentsPerLine + j + 1) * 4; + vertexindices.push(0 + offset, 2 + offset, 1 + offset, 0 + offset, 3 + offset, 2 + offset); + var idx = i * _constants.segmentsPerLine + j; + var z = Math.floor(idx / 4); + var w = idx - z * 4; + vertexUV.push(0, this._wordHeight, z, w); + vertexUV.push(this._eachNumWidth, this._wordHeight, z, w); + vertexUV.push(this._eachNumWidth, 1, z, w); + vertexUV.push(0, 1, z, w); + } + } + this._meshRenderer = managerNode.addComponent(MeshRenderer); + this._meshRenderer.mesh = _createMesh({ + positions: vertexPos, + indices: vertexindices, + colors: vertexUV + }); + var _material = new Material(); + _material.initialize({ + effectName: 'util/profiler' + }); + var pass = this.pass = _material.passes[0]; + var hTexture = pass.getBinding('mainTexture'); + var bDigits = pass.getBinding('digits'); + var bOffset = pass.getBinding('offset'); + pass.bindTexture(hTexture, this._texture); + this.digitsData = pass.blocks[bDigits]; + this.offsetData = pass.blocks[bOffset]; + this.offsetData[3] = -1; + this._meshRenderer.material = _material; + this._meshRenderer.node.layer = Layers.Enum.PROFILER; + this._inited = true; + }; + _proto.beforeUpdate = function beforeUpdate() { + if (!this._profilerStats) { + return; + } + var now = performance.now(); + this._profilerStats.frame.counter.start(now); + this._profilerStats.logic.counter.start(now); + }; + _proto.afterUpdate = function afterUpdate() { + if (!this._profilerStats) { + return; + } + var now = performance.now(); + if (legacyCC.director.isPaused()) { + this._profilerStats.frame.counter.start(now); + } else { + this._profilerStats.logic.counter.end(now); + } + }; + _proto.beforePhysics = function beforePhysics() { + if (!this._profilerStats) { + return; + } + var now = performance.now(); + this._profilerStats.physics.counter.start(now); + }; + _proto.afterPhysics = function afterPhysics() { + if (!this._profilerStats) { + return; + } + var now = performance.now(); + this._profilerStats.physics.counter.end(now); + }; + _proto.beforeDraw = function beforeDraw() { + if (!this._profilerStats || !this._inited) { + return; + } + var surfaceTransform = this._swapchain.surfaceTransform; + var clipSpaceSignY = this._device.capabilities.clipSpaceSignY; + if (surfaceTransform !== this.offsetData[3]) { + var preTransform = preTransforms[surfaceTransform]; + var x = -0.9; + var y = -0.9 * clipSpaceSignY; + if (sys.isXR) { + x = -0.5; + y = -0.5 * clipSpaceSignY; + } + this.offsetData[0] = x * preTransform[0] + y * preTransform[2]; + this.offsetData[1] = x * preTransform[1] + y * preTransform[3]; + this.offsetData[2] = this._eachNumWidth; + this.offsetData[3] = surfaceTransform; + } + this.pass.setRootBufferDirty(true); + if (this._meshRenderer.model) { + director.root.pipeline.profiler = this._meshRenderer.model; + } else { + director.root.pipeline.profiler = null; + } + var now = performance.now(); + this._profilerStats.render.counter.start(now); + }; + _proto.afterRender = function afterRender() { + if (!this._profilerStats || !this._inited) { + return; + } + var now = performance.now(); + this._profilerStats.render.counter.end(now); + this._profilerStats.present.counter.start(now); + }; + _proto.afterPresent = function afterPresent() { + if (!this._profilerStats || !this._inited) { + return; + } + var now = performance.now(); + this._profilerStats.frame.counter.end(now); + this._profilerStats.fps.counter.frame(now); + this._profilerStats.present.counter.end(now); + if (now - this.lastTime < _average) { + return; + } + this.lastTime = now; + var device = this._device; + this._profilerStats.draws.counter.value = device.numDrawCalls; + this._profilerStats.instances.counter.value = device.numInstances; + this._profilerStats.bufferMemory.counter.value = device.memoryStatus.bufferSize / (1024 * 1024); + this._profilerStats.textureMemory.counter.value = device.memoryStatus.textureSize / (1024 * 1024); + this._profilerStats.tricount.counter.value = device.numTris; + var i = 0; + var view = this.digitsData; + for (var id in this._profilerStats) { + var stat = this._profilerStats[id]; + stat.counter.sample(now); + var result = stat.counter.human().toString(); + for (var j = _constants.segmentsPerLine - 1; j >= 0; j--) { + var index = i * _constants.segmentsPerLine + j; + var character = result[result.length - (_constants.segmentsPerLine - j)]; + var offset = _string2offset[character]; + if (offset === undefined) { + offset = 11; + } + view[index] = offset; + } + i++; + } + }; + _createClass(Profiler, [{ + key: "_stats", + get: function get() { + warn('Profiler._stats is deprecated, please use Profiler.stats instead.'); + return this._profilerStats; + } + }, { + key: "stats", + get: function get() { + return this._profilerStats; + } + }]); + return Profiler; + }(System)); + var profiler = exports('f3', new Profiler()); + director.registerSystem('profiler', profiler, 0); + legacyCC.profiler = profiler; + + var spine; + (function (spine) { + (function (MixBlend) { + MixBlend[MixBlend["setup"] = 0] = "setup"; + MixBlend[MixBlend["first"] = 1] = "first"; + MixBlend[MixBlend["replace"] = 2] = "replace"; + MixBlend[MixBlend["add"] = 3] = "add"; + })(spine.MixBlend || (spine.MixBlend = {})); + (function (MixDirection) { + MixDirection[MixDirection["mixIn"] = 0] = "mixIn"; + MixDirection[MixDirection["mixOut"] = 1] = "mixOut"; + })(spine.MixDirection || (spine.MixDirection = {})); + (function (TimelineType) { + TimelineType[TimelineType["rotate"] = 0] = "rotate"; + TimelineType[TimelineType["translate"] = 1] = "translate"; + TimelineType[TimelineType["scale"] = 2] = "scale"; + TimelineType[TimelineType["shear"] = 3] = "shear"; + TimelineType[TimelineType["attachment"] = 4] = "attachment"; + TimelineType[TimelineType["color"] = 5] = "color"; + TimelineType[TimelineType["deform"] = 6] = "deform"; + TimelineType[TimelineType["event"] = 7] = "event"; + TimelineType[TimelineType["drawOrder"] = 8] = "drawOrder"; + TimelineType[TimelineType["ikConstraint"] = 9] = "ikConstraint"; + TimelineType[TimelineType["transformConstraint"] = 10] = "transformConstraint"; + TimelineType[TimelineType["pathConstraintPosition"] = 11] = "pathConstraintPosition"; + TimelineType[TimelineType["pathConstraintSpacing"] = 12] = "pathConstraintSpacing"; + TimelineType[TimelineType["pathConstraintMix"] = 13] = "pathConstraintMix"; + TimelineType[TimelineType["twoColor"] = 14] = "twoColor"; + })(spine.TimelineType || (spine.TimelineType = {})); + (function (EventType) { + EventType[EventType["start"] = 0] = "start"; + EventType[EventType["interrupt"] = 1] = "interrupt"; + EventType[EventType["end"] = 2] = "end"; + EventType[EventType["dispose"] = 3] = "dispose"; + EventType[EventType["complete"] = 4] = "complete"; + EventType[EventType["event"] = 5] = "event"; + })(spine.EventType || (spine.EventType = {})); + (function (BlendMode) { + BlendMode[BlendMode["Normal"] = 0] = "Normal"; + BlendMode[BlendMode["Additive"] = 1] = "Additive"; + BlendMode[BlendMode["Multiply"] = 2] = "Multiply"; + BlendMode[BlendMode["Screen"] = 3] = "Screen"; + })(spine.BlendMode || (spine.BlendMode = {})); + (function (TransformMode) { + TransformMode[TransformMode["Normal"] = 0] = "Normal"; + TransformMode[TransformMode["OnlyTranslation"] = 1] = "OnlyTranslation"; + TransformMode[TransformMode["NoRotationOrReflection"] = 2] = "NoRotationOrReflection"; + TransformMode[TransformMode["NoScale"] = 3] = "NoScale"; + TransformMode[TransformMode["NoScaleOrReflection"] = 4] = "NoScaleOrReflection"; + })(spine.TransformMode || (spine.TransformMode = {})); + (function (PositionMode) { + PositionMode[PositionMode["Fixed"] = 0] = "Fixed"; + PositionMode[PositionMode["Percent"] = 1] = "Percent"; + })(spine.PositionMode || (spine.PositionMode = {})); + (function (SpacingMode) { + SpacingMode[SpacingMode["Length"] = 0] = "Length"; + SpacingMode[SpacingMode["Fixed"] = 1] = "Fixed"; + SpacingMode[SpacingMode["Percent"] = 2] = "Percent"; + })(spine.SpacingMode || (spine.SpacingMode = {})); + (function (RotateMode) { + RotateMode[RotateMode["Tangent"] = 0] = "Tangent"; + RotateMode[RotateMode["Chain"] = 1] = "Chain"; + RotateMode[RotateMode["ChainScale"] = 2] = "ChainScale"; + })(spine.RotateMode || (spine.RotateMode = {})); + (function (TextureFilter) { + TextureFilter[TextureFilter["Nearest"] = 9728] = "Nearest"; + TextureFilter[TextureFilter["Linear"] = 9729] = "Linear"; + TextureFilter[TextureFilter["MipMap"] = 9987] = "MipMap"; + TextureFilter[TextureFilter["MipMapNearestNearest"] = 9984] = "MipMapNearestNearest"; + TextureFilter[TextureFilter["MipMapLinearNearest"] = 9985] = "MipMapLinearNearest"; + TextureFilter[TextureFilter["MipMapNearestLinear"] = 9986] = "MipMapNearestLinear"; + TextureFilter[TextureFilter["MipMapLinearLinear"] = 9987] = "MipMapLinearLinear"; + })(spine.TextureFilter || (spine.TextureFilter = {})); + (function (TextureWrap) { + TextureWrap[TextureWrap["MirroredRepeat"] = 33648] = "MirroredRepeat"; + TextureWrap[TextureWrap["ClampToEdge"] = 33071] = "ClampToEdge"; + TextureWrap[TextureWrap["Repeat"] = 10497] = "Repeat"; + })(spine.TextureWrap || (spine.TextureWrap = {})); + (function (AttachmentType) { + AttachmentType[AttachmentType["Region"] = 0] = "Region"; + AttachmentType[AttachmentType["BoundingBox"] = 1] = "BoundingBox"; + AttachmentType[AttachmentType["Mesh"] = 2] = "Mesh"; + AttachmentType[AttachmentType["LinkedMesh"] = 3] = "LinkedMesh"; + AttachmentType[AttachmentType["Path"] = 4] = "Path"; + AttachmentType[AttachmentType["Point"] = 5] = "Point"; + AttachmentType[AttachmentType["Clipping"] = 6] = "Clipping"; + })(spine.AttachmentType || (spine.AttachmentType = {})); + })(spine || (spine = {})); + var spine$1 = spine; + + var _listener_ID = 0; + var TrackEntryListeners = function () { + function TrackEntryListeners() { + this.start = void 0; + this.interrupt = void 0; + this.end = void 0; + this.dispose = void 0; + this.complete = void 0; + this.event = void 0; + } + TrackEntryListeners.getListeners = function getListeners(entry) { + if (!entry.listener) { + entry.listener = new TrackEntryListeners(); + } + return entry.listener; + }; + TrackEntryListeners.emitListener = function emitListener(id, entry, event) { + var listener = TrackEntryListeners._listenerSet.get(id); + if (!listener) return; + var listener2 = listener; + if (listener2) { + listener2(entry, event); + } + }; + TrackEntryListeners.addListener = function addListener(listener) { + var id = ++_listener_ID; + TrackEntryListeners._listenerSet.set(id, listener); + return id; + }; + return TrackEntryListeners; + }(); + TrackEntryListeners._listenerSet = new Map(); + globalThis.TrackEntryListeners = TrackEntryListeners; + + function overrideDefineArrayProp(prototype, getPropVector, name) { + Object.defineProperty(prototype, name, { + get: function get() { + var array = []; + var vectors = getPropVector.call(this); + var count = vectors.size(); + for (var i = 0; i < count; i++) { + var objPtr = vectors.get(i); + array.push(objPtr); + } + return array; + } + }); + } + function overrideDefineArrayArrayProp(prototype, getPropVector, name) { + Object.defineProperty(prototype, name, { + get: function get() { + var array = []; + var vectors = getPropVector.call(this); + var count = vectors.size(); + for (var i = 0; i < count; i++) { + var vectorI = vectors.get(i); + var countJ = vectorI.size(); + var arrayJ = []; + for (var j = 0; j < countJ; j++) { + arrayJ.push(vectorI.get(j)); + } + array.push(arrayJ); + } + return array; + } + }); + } + function overrideDefineArrayPropGetSet(prototype, getPropVector, setPropVector, Type, name) { + Object.defineProperty(prototype, name, { + get: function get() { + var array = []; + var vectors = getPropVector.call(this); + var count = vectors.size(); + for (var i = 0; i < count; i++) { + var objPtr = vectors.get(i); + array.push(objPtr); + } + return array; + }, + set: function set(value) { + var vectors = new Type(); + var count = value.length; + vectors.resize(count, 0); + for (var i = 0; i < count; i++) { + vectors.set(i, value[i]); + } + setPropVector.call(this, vectors); + } + }); + } + function overrideDefineArrayFunction(prototype, getPropVector, name) { + Object.defineProperty(prototype, name, { + value: function value() { + var array = []; + var vectors = getPropVector.call(this); + var count = vectors.size(); + for (var i = 0; i < count; i++) { + var objPtr = vectors.get(i); + array.push(objPtr); + } + return array; + } + }); + } + function overrideClass(wasm) { + spine$1.wasmUtil = wasm.SpineWasmUtil; + spine$1.wasmUtil.wasm = wasm; + spine$1.wasmUtil.spineWasmInit(); + spine$1.MathUtils = wasm.MathUtils; + spine$1.Color = wasm.Color; + spine$1.Interpolation = wasm.Interpolation; + spine$1.Triangulator = wasm.Triangulator; + spine$1.ConstraintData = wasm.ConstraintData; + spine$1.IkConstraintData = wasm.IkConstraintData; + spine$1.PathConstraintData = wasm.PathConstraintData; + spine$1.SkeletonBounds = wasm.SkeletonBounds; + spine$1.Event = wasm.Event; + spine$1.EventData = wasm.EventData; + spine$1.Attachment = wasm.Attachment; + spine$1.VertexAttachment = wasm.VertexAttachment; + spine$1.BoundingBoxAttachment = wasm.BoundingBoxAttachment; + spine$1.ClippingAttachment = wasm.ClippingAttachment; + spine$1.MeshAttachment = wasm.MeshAttachment; + spine$1.PathAttachment = wasm.PathAttachment; + spine$1.PointAttachment = wasm.PointAttachment; + spine$1.RegionAttachment = wasm.RegionAttachment; + spine$1.AtlasAttachmentLoader = wasm.AtlasAttachmentLoader; + spine$1.TextureAtlasPage = wasm.TextureAtlasPage; + spine$1.TextureAtlasRegion = wasm.TextureAtlasRegion; + spine$1.TextureAtlas = wasm.TextureAtlas; + spine$1.PowOut = wasm.PowOut; + spine$1.BoneData = wasm.BoneData; + spine$1.SlotData = wasm.SlotData; + spine$1.Updatable = wasm.Updatable; + spine$1.IkConstraint = wasm.IkConstraint; + spine$1.PathConstraint = wasm.PathConstraint; + spine$1.TransformConstraintData = wasm.TransformConstraintData; + spine$1.TransformConstraint = wasm.TransformConstraint; + spine$1.Bone = wasm.Bone; + spine$1.Slot = wasm.Slot; + spine$1.Skin = wasm.Skin; + spine$1.SkinEntry = wasm.SkinEntry; + spine$1.SkeletonClipping = wasm.SkeletonClipping; + spine$1.SkeletonData = wasm.SkeletonData; + spine$1.TranslateTimeline = wasm.TranslateTimeline; + spine$1.ScaleTimeline = wasm.ScaleTimeline; + spine$1.ShearTimeline = wasm.ShearTimeline; + spine$1.RotateTimeline = wasm.RotateTimeline; + spine$1.ColorTimeline = wasm.ColorTimeline; + spine$1.TwoColorTimeline = wasm.TwoColorTimeline; + spine$1.AttachmentTimeline = wasm.AttachmentTimeline; + spine$1.DeformTimeline = wasm.DeformTimeline; + spine$1.EventTimeline = wasm.EventTimeline; + spine$1.DrawOrderTimeline = wasm.DrawOrderTimeline; + spine$1.IkConstraintTimeline = wasm.IkConstraintTimeline; + spine$1.TransformConstraintTimeline = wasm.TransformConstraintTimeline; + spine$1.PathConstraintPositionTimeline = wasm.PathConstraintPositionTimeline; + spine$1.PathConstraintMixTimeline = wasm.PathConstraintMixTimeline; + spine$1.TrackEntry = wasm.TrackEntry; + spine$1.AnimationStateData = wasm.AnimationStateData; + spine$1.AnimationState = wasm.AnimationState; + spine$1.Animation = wasm.Animation; + spine$1.EventQueue = wasm.EventQueue; + spine$1.AnimationStateAdapter = wasm.AnimationStateAdapter; + spine$1.Skeleton = wasm.Skeleton; + spine$1.SkeletonBinary = wasm.SkeletonBinary; + spine$1.SkeletonJson = wasm.SkeletonJson; + spine$1.VertexEffect = wasm.VertexEffect; + spine$1.JitterEffect = wasm.JitterEffect; + spine$1.SwirlEffect = wasm.SwirlEffect; + spine$1.SkeletonInstance = wasm.SkeletonInstance; + } + function overrideProperty_BoneData() { + var prototype = spine$1.BoneData.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'index', + getter: prototype.getIndex + }, { + proto: prototype, + property: 'name', + getter: prototype.getName + }, { + proto: prototype, + property: 'parent', + getter: prototype.getParent + }, { + proto: prototype, + property: 'length', + getter: prototype.getLength, + setter: prototype.setLength + }, { + proto: prototype, + property: 'x', + getter: prototype.getX, + setter: prototype.setX + }, { + proto: prototype, + property: 'y', + getter: prototype.getY, + setter: prototype.setY + }, { + proto: prototype, + property: 'rotation', + getter: prototype.getRotation, + setter: prototype.setRotation + }, { + proto: prototype, + property: 'scaleX', + getter: prototype.getScaleX, + setter: prototype.setScaleX + }, { + proto: prototype, + property: 'scaleY', + getter: prototype.getScaleY, + setter: prototype.setScaleY + }, { + proto: prototype, + property: 'shearX', + getter: prototype.getShearX, + setter: prototype.setShearX + }, { + proto: prototype, + property: 'shearY', + getter: prototype.getShearY, + setter: prototype.setShearY + }, { + proto: prototype, + property: 'transformMode', + getter: prototype.getTransformMode, + setter: prototype.setTransformMode + }, { + proto: prototype, + property: 'skinRequired', + getter: prototype.getSkinRequired, + setter: prototype.setSkinRequired + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + } + function overrideProperty_Attachment() { + var prototype = spine$1.Attachment.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'name', + getter: prototype.getName + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter); + }); + } + function overrideProperty_ConstraintData() { + var prototype = spine$1.ConstraintData.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'name', + getter: prototype.getName + }, { + proto: prototype, + property: 'order', + getter: prototype.getOrder, + setter: prototype.setOder + }, { + proto: prototype, + property: 'skinRequired', + getter: prototype.getSkinRequired, + setter: prototype.setSkinRequired + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + } + function overrideProperty_IkConstraintData() { + var prototype = spine$1.IkConstraintData.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'target', + getter: prototype.getTarget, + setter: prototype.setTarget + }, { + proto: prototype, + property: 'bendDirection', + getter: prototype.getBendDirection, + setter: prototype.setBendDirection + }, { + proto: prototype, + property: 'compress', + getter: prototype.getCompress, + setter: prototype.setCompress + }, { + proto: prototype, + property: 'stretch', + getter: prototype.getStretch, + setter: prototype.setStretch + }, { + proto: prototype, + property: 'uniform', + getter: prototype.getUniform, + setter: prototype.setUniform + }, { + proto: prototype, + property: 'mix', + getter: prototype.getMix, + setter: prototype.setMix + }, { + proto: prototype, + property: 'softness', + getter: prototype.getSoftness, + setter: prototype.setSoftness + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + overrideDefineArrayProp(prototype, prototype.getBones, 'bones'); + } + function overrideProperty_PathConstraintData() { + var prototype = spine$1.PathConstraintData.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'target', + getter: prototype.getTarget, + setter: prototype.setTarget + }, { + proto: prototype, + property: 'positionMode', + getter: prototype.getPositionMode, + setter: prototype.setPositionMode + }, { + proto: prototype, + property: 'spacingMode', + getter: prototype.getSpacingMode, + setter: prototype.setSpacingMode + }, { + proto: prototype, + property: 'rotateMode', + getter: prototype.getRotateMode, + setter: prototype.setRotateMode + }, { + proto: prototype, + property: 'offsetRotation', + getter: prototype.getOffsetRotation, + setter: prototype.setOffsetRotation + }, { + proto: prototype, + property: 'position', + getter: prototype.getPosition, + setter: prototype.setPosition + }, { + proto: prototype, + property: 'spacing', + getter: prototype.getSpacing, + setter: prototype.setSpacing + }, { + proto: prototype, + property: 'rotateMix', + getter: prototype.getRotateMix, + setter: prototype.setRotateMix + }, { + proto: prototype, + property: 'translateMix', + getter: prototype.getTranslateMix, + setter: prototype.setTranslateMix + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + overrideDefineArrayProp(prototype, prototype.getBones, 'bones'); + } + function overrideProperty_Event() { + var prototype = spine$1.Event.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'data', + getter: prototype.getData + }, { + proto: prototype, + property: 'intValue', + getter: prototype.getIntValue, + setter: prototype.setIntValue + }, { + proto: prototype, + property: 'floatValue', + getter: prototype.getFloatValue, + setter: prototype.setFloatValue + }, { + proto: prototype, + property: 'stringValue', + getter: prototype.getStringValue, + setter: prototype.setStringValue + }, { + proto: prototype, + property: 'time', + getter: prototype.getTime + }, { + proto: prototype, + property: 'volume', + getter: prototype.getVolume, + setter: prototype.setVolume + }, { + proto: prototype, + property: 'balance', + getter: prototype.getBalance, + setter: prototype.setBalance + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + } + function overrideProperty_EventData() { + var prototype = spine$1.EventData.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'name', + getter: prototype.getName + }, { + proto: prototype, + property: 'intValue', + getter: prototype.getIntValue, + setter: prototype.setIntValue + }, { + proto: prototype, + property: 'floatValue', + getter: prototype.getFloatValue, + setter: prototype.setFloatValue + }, { + proto: prototype, + property: 'stringValue', + getter: prototype.getStringValue, + setter: prototype.setStringValue + }, { + proto: prototype, + property: 'audioPath', + getter: prototype.getAudioPath, + setter: prototype.setAudioPath + }, { + proto: prototype, + property: 'volume', + getter: prototype.getVolume, + setter: prototype.setVolume + }, { + proto: prototype, + property: 'balance', + getter: prototype.getBalance, + setter: prototype.setBalance + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + } + function overrideProperty_VertexAttachment() { + var prototype = spine$1.VertexAttachment.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'id', + getter: prototype.getId + }, { + proto: prototype, + property: 'worldVerticesLength', + getter: prototype.getWorldVerticesLength, + setter: prototype.setWorldVerticesLength + }, { + proto: prototype, + property: 'deformAttachment', + getter: prototype.getDeformAttachment, + setter: prototype.setDeformAttachment + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + overrideDefineArrayProp(prototype, prototype.getBones, 'bones'); + overrideDefineArrayProp(prototype, prototype.getVertices, 'vertices'); + } + function overrideProperty_BoundingBoxAttachment() { + var prototype = spine$1.BoundingBoxAttachment.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'name', + getter: prototype.getName + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter); + }); + } + function overrideProperty_ClippingAttachment() { + var prototype = spine$1.ClippingAttachment.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'endSlot', + getter: prototype.getEndSlot, + setter: prototype.setEndSlot + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + } + function overrideProperty_MeshAttachment() { + var prototype = spine$1.MeshAttachment.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'path', + getter: prototype.getPath, + setter: prototype.setPath + }, { + proto: prototype, + property: 'color', + getter: prototype.getColor + }, { + proto: prototype, + property: 'width', + getter: prototype.getWidth, + setter: prototype.setWidth + }, { + proto: prototype, + property: 'height', + getter: prototype.getHeight, + setter: prototype.setHeight + }, { + proto: prototype, + property: 'hullLength', + getter: prototype.getHullLength, + setter: prototype.setHullLength + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + overrideDefineArrayProp(prototype, prototype.getRegionUVs, 'regionUVs'); + overrideDefineArrayProp(prototype, prototype.getUVs, 'uvs'); + overrideDefineArrayProp(prototype, prototype.getTriangles, 'triangles'); + overrideDefineArrayProp(prototype, prototype.getEdges, 'edges'); + } + function overrideProperty_PathAttachment() { + var prototype = spine$1.PathAttachment.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'closed', + getter: prototype.getClosed, + setter: prototype.setClosed + }, { + proto: prototype, + property: 'constantSpeed', + getter: prototype.getConstantSpeed, + setter: prototype.setConstantSpeed + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter); + }); + overrideDefineArrayProp(prototype, prototype.getLengths, 'lengths'); + } + function overrideProperty_PointAttachment() { + var prototype = spine$1.PointAttachment.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'x', + getter: prototype.getX, + setter: prototype.setX + }, { + proto: prototype, + property: 'y', + getter: prototype.getY, + setter: prototype.setY + }, { + proto: prototype, + property: 'rotation', + getter: prototype.getRotation, + setter: prototype.setRotation + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + } + function overrideProperty_RegionAttachment() { + var prototype = spine$1.RegionAttachment.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'x', + getter: prototype.getX, + setter: prototype.setX + }, { + proto: prototype, + property: 'y', + getter: prototype.getY, + setter: prototype.setY + }, { + proto: prototype, + property: 'scaleX', + getter: prototype.getScaleX, + setter: prototype.setScaleX + }, { + proto: prototype, + property: 'scaleY', + getter: prototype.getScaleY, + setter: prototype.setScaleY + }, { + proto: prototype, + property: 'rotation', + getter: prototype.getRotation, + setter: prototype.setRotation + }, { + proto: prototype, + property: 'width', + getter: prototype.getWidth, + setter: prototype.setWidth + }, { + proto: prototype, + property: 'height', + getter: prototype.getHeight, + setter: prototype.setHeight + }, { + proto: prototype, + property: 'color', + getter: prototype.getColor + }, { + proto: prototype, + property: 'path', + getter: prototype.getPath, + setter: prototype.setPath + }, { + proto: prototype, + property: 'rendererObject', + getter: prototype.getRendererObject + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + overrideDefineArrayProp(prototype, prototype.getOffset, 'offset'); + overrideDefineArrayPropGetSet(prototype, prototype.getUVs, prototype.setUVs, spine$1.wasmUtil.wasm.VectorFloat, 'uvs'); + } + function overrideProperty_SlotData() { + var prototype = spine$1.SlotData.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'index', + getter: prototype.getIndex + }, { + proto: prototype, + property: 'boneData', + getter: prototype.getBoneData + }, { + proto: prototype, + property: 'name', + getter: prototype.getName + }, { + proto: prototype, + property: 'color', + getter: prototype.getColor + }, { + proto: prototype, + property: 'darkColor', + getter: prototype.getDarkColor + }, { + proto: prototype, + property: 'blendMode', + getter: prototype.getBlendMode, + setter: prototype.setBlendMode + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + } + function overrideProperty_IkConstraint() { + var prototype = spine$1.IkConstraint.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'data', + getter: prototype.getData + }, { + proto: prototype, + property: 'target', + getter: prototype.getTarget, + setter: prototype.setTarget + }, { + proto: prototype, + property: 'bendDirection', + getter: prototype.getBendDirection, + setter: prototype.setBendDirection + }, { + proto: prototype, + property: 'compress', + getter: prototype.getCompress, + setter: prototype.setCompress + }, { + proto: prototype, + property: 'stretch', + getter: prototype.getStretch, + setter: prototype.setStretch + }, { + proto: prototype, + property: 'mix', + getter: prototype.getMix, + setter: prototype.setMix + }, { + proto: prototype, + property: 'softness', + getter: prototype.getSoftness, + setter: prototype.setSoftness + }, { + proto: prototype, + property: 'active', + getter: prototype.getActive, + setter: prototype.setActive + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + overrideDefineArrayProp(prototype, prototype.getBones, 'bones'); + } + function overrideProperty_PathConstraint() { + var prototype = spine$1.PathConstraint.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'data', + getter: prototype.getData + }, { + proto: prototype, + property: 'target', + getter: prototype.getTarget, + setter: prototype.setTarget + }, { + proto: prototype, + property: 'position', + getter: prototype.getPosition, + setter: prototype.setPosition + }, { + proto: prototype, + property: 'spacing', + getter: prototype.getSpacing, + setter: prototype.setSpacing + }, { + proto: prototype, + property: 'rotateMix', + getter: prototype.getRotateMix, + setter: prototype.setRotateMix + }, { + proto: prototype, + property: 'translateMix', + getter: prototype.getTranslateMix, + setter: prototype.setTranslateMix + }, { + proto: prototype, + property: 'active', + getter: prototype.getActive, + setter: prototype.setActive + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + overrideDefineArrayProp(prototype, prototype.getBones, 'bones'); + } + function overrideProperty_TransformConstraintData() { + var prototype = spine$1.TransformConstraintData.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'target', + getter: prototype.getTarget + }, { + proto: prototype, + property: 'rotateMix', + getter: prototype.getRotateMix + }, { + proto: prototype, + property: 'translateMix', + getter: prototype.getTranslateMix + }, { + proto: prototype, + property: 'scaleMix', + getter: prototype.getScaleMix + }, { + proto: prototype, + property: 'shearMix', + getter: prototype.getShearMix + }, { + proto: prototype, + property: 'offsetRotation', + getter: prototype.getOffsetRotation + }, { + proto: prototype, + property: 'offsetX', + getter: prototype.getOffsetX + }, { + proto: prototype, + property: 'offsetY', + getter: prototype.getOffsetY + }, { + proto: prototype, + property: 'offsetScaleX', + getter: prototype.getOffsetScaleX + }, { + proto: prototype, + property: 'offsetScaleY', + getter: prototype.getOffsetScaleY + }, { + proto: prototype, + property: 'offsetShearY', + getter: prototype.getOffsetShearY + }, { + proto: prototype, + property: 'relative', + getter: prototype.getRelative + }, { + proto: prototype, + property: 'local', + getter: prototype.getLocal + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter); + }); + overrideDefineArrayProp(prototype, prototype.getBones, 'bones'); + } + function overrideProperty_TransformConstraint() { + var prototype = spine$1.TransformConstraint.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'data', + getter: prototype.getData + }, { + proto: prototype, + property: 'target', + getter: prototype.getTarget + }, { + proto: prototype, + property: 'rotateMix', + getter: prototype.getRotateMix, + setter: prototype.setRotateMix + }, { + proto: prototype, + property: 'translateMix', + getter: prototype.getTranslateMix, + setter: prototype.setTranslateMix + }, { + proto: prototype, + property: 'scaleMix', + getter: prototype.getScaleMix, + setter: prototype.setScaleMix + }, { + proto: prototype, + property: 'shearMix', + getter: prototype.getShearMix, + setter: prototype.setShearMix + }, { + proto: prototype, + property: 'active', + getter: prototype.getActive, + setter: prototype.setActive + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + overrideDefineArrayProp(prototype, prototype.getBones, 'bones'); + } + function overrideProperty_Bone() { + var prototype = spine$1.Bone.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'skeleton', + getter: prototype.getSkeleton + }, { + proto: prototype, + property: 'data', + getter: prototype.getData + }, { + proto: prototype, + property: 'parent', + getter: prototype.getParent + }, { + proto: prototype, + property: 'x', + getter: prototype.getX, + setter: prototype.setX + }, { + proto: prototype, + property: 'y', + getter: prototype.getY, + setter: prototype.setY + }, { + proto: prototype, + property: 'rotation', + getter: prototype.getRotation, + setter: prototype.setRotation + }, { + proto: prototype, + property: 'scaleX', + getter: prototype.getScaleX, + setter: prototype.setScaleX + }, { + proto: prototype, + property: 'scaleY', + getter: prototype.getScaleY, + setter: prototype.setScaleY + }, { + proto: prototype, + property: 'shearX', + getter: prototype.getShearX, + setter: prototype.setShearX + }, { + proto: prototype, + property: 'shearY', + getter: prototype.getShearY, + setter: prototype.setShearY + }, { + proto: prototype, + property: 'ax', + getter: prototype.getAX, + setter: prototype.setAX + }, { + proto: prototype, + property: 'ay', + getter: prototype.getAY, + setter: prototype.setAY + }, { + proto: prototype, + property: 'arotation', + getter: prototype.getARotation, + setter: prototype.setARotation + }, { + proto: prototype, + property: 'ascaleX', + getter: prototype.getAScaleX, + setter: prototype.setAScaleX + }, { + proto: prototype, + property: 'ascaleY', + getter: prototype.getAScaleY, + setter: prototype.setAScaleY + }, { + proto: prototype, + property: 'ashearX', + getter: prototype.getAShearX, + setter: prototype.setAShearX + }, { + proto: prototype, + property: 'ashearY', + getter: prototype.getAShearY, + setter: prototype.setAShearY + }, { + proto: prototype, + property: 'appliedValid', + getter: prototype.getAppliedValid, + setter: prototype.setAppliedValid + }, { + proto: prototype, + property: 'a', + getter: prototype.getA, + setter: prototype.setA + }, { + proto: prototype, + property: 'b', + getter: prototype.getB, + setter: prototype.setB + }, { + proto: prototype, + property: 'c', + getter: prototype.getC, + setter: prototype.setC + }, { + proto: prototype, + property: 'd', + getter: prototype.getD, + setter: prototype.setD + }, { + proto: prototype, + property: 'worldX', + getter: prototype.getWorldX, + setter: prototype.setWorldX + }, { + proto: prototype, + property: 'worldY', + getter: prototype.getWorldY, + setter: prototype.setWorldY + }, { + proto: prototype, + property: 'active', + getter: prototype.getActive, + setter: prototype.setActive + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + overrideDefineArrayProp(prototype, prototype.getChildren, 'children'); + var worldToLocal = prototype.worldToLocal; + Object.defineProperty(prototype, 'worldToLocal', { + value: function value(vec2) { + var vectors = worldToLocal.call(this, vec2.x, vec2.y); + vec2.x = vectors.get(0); + vec2.y = vectors.get(1); + } + }); + var localToWorld = prototype.localToWorld; + Object.defineProperty(prototype, 'localToWorld', { + value: function value(vec2) { + var vectors = localToWorld.call(this, vec2.x, vec2.y); + vec2.x = vectors.get(0); + vec2.y = vectors.get(1); + } + }); + } + function overrideProperty_Slot() { + var prototype = spine$1.Slot.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'data', + getter: prototype.getData + }, { + proto: prototype, + property: 'bone', + getter: prototype.getBone + }, { + proto: prototype, + property: 'color', + getter: prototype.getColor + }, { + proto: prototype, + property: 'darkColor', + getter: prototype.getDarkColor + }, { + proto: prototype, + property: 'skeleton', + getter: prototype.getSkeleton + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter); + }); + overrideDefineArrayProp(prototype, prototype.getDeform, 'deform'); + } + function overrideProperty_Skin() { + var prototype = spine$1.Skin.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'name', + getter: prototype.getName + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter); + }); + overrideDefineArrayProp(prototype, prototype.getBones, 'bones'); + overrideDefineArrayProp(prototype, prototype.getAttachments, 'attachments'); + overrideDefineArrayProp(prototype, prototype.getConstraints, 'constraints'); + overrideDefineArrayFunction(prototype, prototype.getAttachments, 'getAttachments'); + var originGetAttachmentsForSlot = prototype.getAttachmentsForSlot; + Object.defineProperty(prototype, 'getAttachmentsForSlot', { + value: function value(slotIndex, attachments) { + var vectors = originGetAttachmentsForSlot.call(this, slotIndex); + var count = vectors.size(); + for (var i = 0; i < count; i++) { + var objPtr = vectors.get(i); + attachments.push(objPtr); + } + } + }); + var originFindNamesForSlot = prototype.findNamesForSlot; + Object.defineProperty(prototype, 'findNamesForSlot', { + value: function value(slotIndex, names) { + var vectors = originFindNamesForSlot.call(this, slotIndex); + var count = vectors.size(); + for (var i = 0; i < count; i++) { + var objPtr = vectors.get(i); + names.push(objPtr); + } + } + }); + } + function overrideProperty_SkinEntry() { + var prototype = spine$1.SkinEntry.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'name', + getter: prototype.getName + }, { + proto: prototype, + property: 'attachment', + getter: prototype.getAttachment + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter); + }); + } + function overrideProperty_SkeletonClipping() { + var prototype = spine$1.SkeletonClipping.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'clippedVertices', + getter: prototype.getClippedVertices + }, { + proto: prototype, + property: 'clippedTriangles', + getter: prototype.getClippedTriangles + }, { + proto: prototype, + property: 'clippedUVs', + getter: prototype.getClippedUVs + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter); + }); + } + function overrideProperty_SkeletonData() { + var prototype = spine$1.SkeletonData.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'name', + getter: prototype.getName + }, { + proto: prototype, + property: 'defaultSkin', + getter: prototype.getDefaultSkin, + setter: prototype.setDefaultSkin + }, { + proto: prototype, + property: 'x', + getter: prototype.getX, + setter: prototype.setX + }, { + proto: prototype, + property: 'y', + getter: prototype.getY, + setter: prototype.setY + }, { + proto: prototype, + property: 'width', + getter: prototype.getWidth, + setter: prototype.setWidth + }, { + proto: prototype, + property: 'height', + getter: prototype.getHeight, + setter: prototype.setHeight + }, { + proto: prototype, + property: 'version', + getter: prototype.getVersion, + setter: prototype.setVersion + }, { + proto: prototype, + property: 'hash', + getter: prototype.getHash, + setter: prototype.setHash + }, { + proto: prototype, + property: 'fps', + getter: prototype.getFps, + setter: prototype.setFps + }, { + proto: prototype, + property: 'imagesPath', + getter: prototype.getImagesPath, + setter: prototype.setImagesPath + }, { + proto: prototype, + property: 'audioPath', + getter: prototype.getAudioPath, + setter: prototype.setAudioPath + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + overrideDefineArrayProp(prototype, prototype.getBones, 'bones'); + overrideDefineArrayProp(prototype, prototype.getSlots, 'slots'); + overrideDefineArrayProp(prototype, prototype.getSkins, 'skins'); + overrideDefineArrayProp(prototype, prototype.getAnimations, 'animations'); + overrideDefineArrayProp(prototype, prototype.getEvents, 'events'); + overrideDefineArrayProp(prototype, prototype.getIkConstraints, 'ikConstraints'); + overrideDefineArrayProp(prototype, prototype.getTransformConstraints, 'transformConstraints'); + overrideDefineArrayProp(prototype, prototype.getPathConstraints, 'pathConstraints'); + } + function overrideProperty_RotateTimeline() { + var prototype = spine$1.RotateTimeline.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'boneIndex', + getter: prototype.getBoneIndex + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter); + }); + overrideDefineArrayProp(prototype, prototype.getFrames, 'frames'); + } + function overrideProperty_ColorTimeline() { + var prototype = spine$1.ColorTimeline.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'slotIndex', + getter: prototype.getSlotIndex + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter); + }); + overrideDefineArrayProp(prototype, prototype.getFrames, 'frames'); + } + function overrideProperty_TwoColorTimeline() { + var prototype = spine$1.TwoColorTimeline.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'slotIndex', + getter: prototype.getSlotIndex + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter); + }); + } + function overrideProperty_AttachmentTimeline() { + var prototype = spine$1.AttachmentTimeline.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'slotIndex', + getter: prototype.getSlotIndex + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter); + }); + overrideDefineArrayProp(prototype, prototype.getFrames, 'frames'); + overrideDefineArrayProp(prototype, prototype.getAttachmentNames, 'attachmentNames'); + } + function overrideProperty_DeformTimeline() { + var prototype = spine$1.DeformTimeline.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'slotIndex', + getter: prototype.getSlotIndex + }, { + proto: prototype, + property: 'attachment', + getter: prototype.getAttachment + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter); + }); + overrideDefineArrayProp(prototype, prototype.getFrames, 'frames'); + overrideDefineArrayArrayProp(prototype, prototype.getFrameVertices, 'frameVertices'); + } + function overrideProperty_EventTimeline() { + var prototype = spine$1.EventTimeline.prototype; + overrideDefineArrayProp(prototype, prototype.getFrames, 'frames'); + overrideDefineArrayProp(prototype, prototype.getEvents, 'events'); + } + function overrideProperty_DrawOrderTimeline() { + var prototype = spine$1.DrawOrderTimeline.prototype; + overrideDefineArrayProp(prototype, prototype.getFrames, 'frames'); + } + function overrideProperty_TrackEntry() { + var prototype = spine$1.TrackEntry.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'animation', + getter: prototype.getAnimation + }, { + proto: prototype, + property: 'next', + getter: prototype.getNext + }, { + proto: prototype, + property: 'mixingFrom', + getter: prototype.getMixingFrom + }, { + proto: prototype, + property: 'mixingTo', + getter: prototype.getMixingTo + }, { + proto: prototype, + property: 'trackIndex', + getter: prototype.getTrackIndex + }, { + proto: prototype, + property: 'loop', + getter: prototype.getLoop, + setter: prototype.setLoop + }, { + proto: prototype, + property: 'holdPrevious', + getter: prototype.getHoldPrevious, + setter: prototype.setHoldPrevious + }, { + proto: prototype, + property: 'eventThreshold', + getter: prototype.getEventThreshold, + setter: prototype.setEventThreshold + }, { + proto: prototype, + property: 'attachmentThreshold', + getter: prototype.getAttachmentThreshold, + setter: prototype.setAttachmentThreshold + }, { + proto: prototype, + property: 'drawOrderThreshold', + getter: prototype.getDrawOrderThreshold, + setter: prototype.setDrawOrderThreshold + }, { + proto: prototype, + property: 'animationStart', + getter: prototype.getAnimationStart, + setter: prototype.setAnimationStart + }, { + proto: prototype, + property: 'animationEnd', + getter: prototype.getAnimationEnd, + setter: prototype.setAnimationEnd + }, { + proto: prototype, + property: 'animationLast', + getter: prototype.getAnimationLast, + setter: prototype.setAnimationLast + }, { + proto: prototype, + property: 'delay', + getter: prototype.getDelay, + setter: prototype.setDelay + }, { + proto: prototype, + property: 'trackTime', + getter: prototype.getTrackTime, + setter: prototype.setTrackTime + }, { + proto: prototype, + property: 'trackEnd', + getter: prototype.getTrackEnd, + setter: prototype.setTrackEnd + }, { + proto: prototype, + property: 'timeScale', + getter: prototype.getTimeScale, + setter: prototype.setTimeScale + }, { + proto: prototype, + property: 'alpha', + getter: prototype.getAlpha, + setter: prototype.setAlpha + }, { + proto: prototype, + property: 'mixTime', + getter: prototype.getMixTime, + setter: prototype.setMixTime + }, { + proto: prototype, + property: 'mixDuration', + getter: prototype.getMixDuration, + setter: prototype.setMixDuration + }, { + proto: prototype, + property: 'mixBlend', + getter: prototype.getMixBlend, + setter: prototype.setMixBlend + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + } + function overrideProperty_AnimationStateData() { + var prototype = spine$1.AnimationStateData.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'defaultMix', + getter: prototype.getDefaultMix + }, { + proto: prototype, + property: 'skeletonData', + getter: prototype.getSkeletonData + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter); + }); + } + function overrideProperty_AnimationState() { + var prototype = spine$1.AnimationState.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'data', + getter: prototype.getData + }, { + proto: prototype, + property: 'timeScale', + getter: prototype.getTimeScale, + setter: prototype.setTimeScale + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + overrideDefineArrayProp(prototype, prototype.getTracks, 'tracks'); + } + function overrideProperty_Animation() { + var prototype = spine$1.Animation.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'name', + getter: prototype.getName + }, { + proto: prototype, + property: 'duration', + getter: prototype.getDuration, + setter: prototype.setDuration + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + overrideDefineArrayProp(prototype, prototype.getTimelines, 'timelines'); + } + function overrideProperty_Skeleton() { + var prototype = spine$1.Skeleton.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'data', + getter: prototype.getData + }, { + proto: prototype, + property: '_updateCache', + getter: prototype.getUpdateCache + }, { + proto: prototype, + property: 'skin', + getter: prototype.getSkin + }, { + proto: prototype, + property: 'color', + getter: prototype.getColor + }, { + proto: prototype, + property: 'time', + getter: prototype.getTime + }, { + proto: prototype, + property: 'scaleX', + getter: prototype.getScaleX, + setter: prototype.setScaleX + }, { + proto: prototype, + property: 'scaleY', + getter: prototype.getScaleY, + setter: prototype.setScaleY + }, { + proto: prototype, + property: 'x', + getter: prototype.getX, + setter: prototype.setX + }, { + proto: prototype, + property: 'y', + getter: prototype.getY, + setter: prototype.setY + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + overrideDefineArrayProp(prototype, prototype.getBones, 'bones'); + overrideDefineArrayProp(prototype, prototype.getSlots, 'slots'); + overrideDefineArrayProp(prototype, prototype.getDrawOrder, 'drawOrder'); + overrideDefineArrayProp(prototype, prototype.getIkConstraints, 'ikConstraints'); + overrideDefineArrayProp(prototype, prototype.getTransformConstraints, 'transformConstraints'); + overrideDefineArrayProp(prototype, prototype.getPathConstraints, 'pathConstraints'); + } + function overrideProperty_JitterEffect() { + var prototype = spine$1.JitterEffect.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'jitterX', + getter: prototype.getJitterX, + setter: prototype.setJitterX + }, { + proto: prototype, + property: 'jitterY', + getter: prototype.getJitterY, + setter: prototype.setJitterY + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + } + function overrideProperty_SwirlEffect() { + var prototype = spine$1.SwirlEffect.prototype; + var propertyPolyfills = [{ + proto: prototype, + property: 'centerX', + getter: prototype.getCenterX, + setter: prototype.setCenterX + }, { + proto: prototype, + property: 'centerY', + getter: prototype.getCenterY, + setter: prototype.setCenterY + }, { + proto: prototype, + property: 'radius', + getter: prototype.getRadius, + setter: prototype.setRadius + }, { + proto: prototype, + property: 'angle', + getter: prototype.getAngle, + setter: prototype.setAngle + }]; + propertyPolyfills.forEach(function (prop) { + getset(prop.proto, prop.property, prop.getter, prop.setter); + }); + } + function overrideSpineDefine(wasm) { + overrideClass(wasm); + overrideProperty_BoneData(); + overrideProperty_ConstraintData(); + overrideProperty_IkConstraintData(); + overrideProperty_PathConstraintData(); + overrideProperty_Event(); + overrideProperty_EventData(); + overrideProperty_BoundingBoxAttachment(); + overrideProperty_ClippingAttachment(); + overrideProperty_MeshAttachment(); + overrideProperty_PathAttachment(); + overrideProperty_PointAttachment(); + overrideProperty_RegionAttachment(); + overrideProperty_VertexAttachment(); + overrideProperty_SlotData(); + overrideProperty_IkConstraint(); + overrideProperty_PathConstraint(); + overrideProperty_TransformConstraintData(); + overrideProperty_TransformConstraint(); + overrideProperty_Bone(); + overrideProperty_Slot(); + overrideProperty_Skin(); + overrideProperty_Attachment(); + overrideProperty_SkinEntry(); + overrideProperty_SkeletonClipping(); + overrideProperty_SkeletonData(); + overrideProperty_RotateTimeline(); + overrideProperty_ColorTimeline(); + overrideProperty_TwoColorTimeline(); + overrideProperty_AttachmentTimeline(); + overrideProperty_DeformTimeline(); + overrideProperty_EventTimeline(); + overrideProperty_DrawOrderTimeline(); + overrideProperty_TrackEntry(); + overrideProperty_AnimationStateData(); + overrideProperty_AnimationState(); + overrideProperty_Animation(); + overrideProperty_Skeleton(); + overrideProperty_JitterEffect(); + overrideProperty_SwirlEffect(); + } + + var PAGESIZE = 65536; + var PAGECOUNT = 32 * 16; + var MEMORYSIZE = PAGESIZE * PAGECOUNT; + var wasmInstance = null; + var registerList = []; + function initWasm(wasmFactory, wasmUrl) { + return new Promise(function (resolve, reject) { + var errorMessage = function errorMessage(err) { + return "[Spine]: Spine wasm load failed: " + err; + }; + wasmFactory({ + instantiateWasm: function instantiateWasm$1(importObject, receiveInstance) { + instantiateWasm(wasmUrl, importObject).then(function (result) { + receiveInstance(result.instance, result.module); + })["catch"](function (err) { + return reject(errorMessage(err)); + }); + } + }).then(function (Instance) { + wasmInstance = Instance; + registerList.forEach(function (cb) { + cb(wasmInstance); + }); + }).then(resolve)["catch"](function (err) { + return reject(errorMessage(err)); + }); + }); + } + function initAsmJS(asmFactory, asmJsMemUrl) { + return new Promise(function (resolve, reject) { + fetchBuffer(asmJsMemUrl).then(function (arrayBuffer) { + var wasmMemory = {}; + wasmMemory.buffer = new ArrayBuffer(MEMORYSIZE); + var module = { + wasmMemory: wasmMemory, + memoryInitializerRequest: { + response: arrayBuffer, + status: 200 + } + }; + return asmFactory(module).then(function (instance) { + wasmInstance = instance; + registerList.forEach(function (cb) { + cb(wasmInstance); + }); + }); + }).then(resolve)["catch"](reject); + }); + } + function shouldUseWasmModule() { + { + return sys.hasFeature(sys.Feature.WASM); + } + } + function waitForSpineWasmInstantiation() { + var errorReport = function errorReport(msg) { + error(msg); + }; + return ensureWasmModuleReady().then(function () { + return Promise.all([module.import('./spine.asm-0a7772b8.js'), module.import('./spine.js-f7f5ea79.js'), module.import('./spine.wasm-d2854650.js'), module.import('./spine-3e0daee9.js')]).then(function (_ref) { + var asmFactory = _ref[0]["default"], + asmJsMemUrl = _ref[1]["default"], + wasmFactory = _ref[2]["default"], + spineWasmUrl = _ref[3]["default"]; + if (shouldUseWasmModule()) { + return initWasm(wasmFactory, spineWasmUrl); + } else { + return initAsmJS(asmFactory, asmJsMemUrl); + } + }); + })["catch"](errorReport); + } + { + game.onPostInfrastructureInitDelegate.add(waitForSpineWasmInstantiation); + registerList.push(overrideSpineDefine); + } + + var _class5$2; + var MaxCacheTime = 30; + var FrameTime = 1 / 60; + var _useTint$1 = true; + getAttributeStride(vfmtPosUvColor4B); + var _byteStrideTwoColor$1 = getAttributeStride(vfmtPosUvTwoColor4B); + var FrameBoneInfo = function FrameBoneInfo() { + this.a = 0; + this.b = 0; + this.c = 0; + this.d = 0; + this.worldX = 0; + this.worldY = 0; + }; + var SpineModel = function SpineModel() { + this.vCount = 0; + this.iCount = 0; + this.vData = null; + this.iData = null; + this.meshes = []; + }; + var SpineDrawItem = function SpineDrawItem() { + this.iCount = 0; + this.blendMode = 0; + this.textureID = 0; + }; + var AnimationCache = function () { + function AnimationCache(data) { + this._instance = null; + this._state = null; + this._skeletonData = null; + this._skeleton = null; + this._privateMode = false; + this._curIndex = -1; + this._isCompleted = false; + this._maxFrameIdex = 0; + this._frameIdx = -1; + this._inited = false; + this._invalid = true; + this._enableCacheAttachedInfo = false; + this._skeletonInfo = null; + this._animationName = null; + this.isCompleted = false; + this.totalTime = 0; + this.frames = []; + this._privateMode = false; + this._inited = false; + this._invalid = true; + this._instance = new spine$1.SkeletonInstance(); + this._skeletonData = data; + this._skeleton = this._instance.initSkeleton(data); + this._instance.setUseTint(_useTint$1); + } + var _proto = AnimationCache.prototype; + _proto.init = function init(skeletonInfo, animationName) { + this._inited = true; + this._animationName = animationName; + this._skeletonInfo = skeletonInfo; + }; + _proto.setSkin = function setSkin(skinName) { + if (this._skeleton) this._skeleton.setSkinByName(skinName); + this._instance.setSkin(skinName); + }; + _proto.setAnimation = function setAnimation(animationName) { + var animations = this._skeletonData.animations; + var animation = null; + animations.forEach(function (element) { + if (element.name === animationName) { + animation = element; + } + }); + if (!animation) { + warn("find no animation named " + animationName + " !!!"); + return; + } + this._maxFrameIdex = Math.floor(animation.duration / FrameTime); + if (this._maxFrameIdex <= 0) this._maxFrameIdex = 1; + this._instance.setAnimation(0, animationName, false); + }; + _proto.updateToFrame = function updateToFrame(frameIdx) { + if (!this._inited) return; + this.begin(); + if (!this.needToUpdate(frameIdx)) return; + do { + this._frameIdx++; + this.totalTime += FrameTime; + this._instance.updateAnimation(FrameTime); + var model = this._instance.updateRenderData(); + this.updateRenderData(this._frameIdx, model); + if (this._frameIdx >= this._maxFrameIdex) { + this.isCompleted = true; + } + } while (this.needToUpdate(frameIdx)); + }; + _proto.getFrame = function getFrame(frameIdx) { + var index = frameIdx % this._maxFrameIdex; + return this.frames[index]; + }; + _proto.invalidAnimationFrames = function invalidAnimationFrames() { + this._curIndex = -1; + this._isCompleted = false; + this.frames.length = 0; + }; + _proto.updateRenderData = function updateRenderData(index, model) { + var vc = model.vCount; + var ic = model.iCount; + var floatStride = (_byteStrideTwoColor$1 ) / Float32Array.BYTES_PER_ELEMENT; + var vUint8Buf = new Uint8Array(Float32Array.BYTES_PER_ELEMENT * floatStride * vc); + var iUint16Buf = new Uint16Array(ic); + var vPtr = model.vPtr; + var vLength = vc * Float32Array.BYTES_PER_ELEMENT * floatStride; + var vData = spine$1.wasmUtil.wasm.HEAPU8.subarray(vPtr, vPtr + vLength); + vUint8Buf.set(vData); + var iPtr = model.iPtr; + var iLength = Uint16Array.BYTES_PER_ELEMENT * ic; + var iData = spine$1.wasmUtil.wasm.HEAPU8.subarray(iPtr, iPtr + iLength); + var iUint8Buf = new Uint8Array(iUint16Buf.buffer); + iUint8Buf.set(iData); + var modelData = new SpineModel(); + modelData.vCount = vc; + modelData.iCount = ic; + modelData.vData = vUint8Buf; + modelData.iData = iUint16Buf; + var meshes = model.getMeshes(); + var count = meshes.size(); + for (var i = 0; i < count; i++) { + var mesh = meshes.get(i); + var meshData = new SpineDrawItem(); + meshData.iCount = mesh.iCount; + meshData.blendMode = mesh.blendMode; + meshData.textureID = mesh.textureID; + modelData.meshes.push(meshData); + } + var bones = this._skeleton.bones; + var boneInfosArray = []; + bones.forEach(function (bone) { + var boneInfo = new FrameBoneInfo(); + boneInfo.a = bone.a; + boneInfo.b = bone.b; + boneInfo.c = bone.c; + boneInfo.d = bone.d; + boneInfo.worldX = bone.worldX; + boneInfo.worldY = bone.worldY; + boneInfosArray.push(boneInfo); + }); + this.frames[index] = { + model: modelData, + boneInfos: boneInfosArray + }; + }; + _proto.begin = function begin() { + if (!this._invalid) return; + var skeletonInfo = this._skeletonInfo; + var preAnimationCache = skeletonInfo === null || skeletonInfo === void 0 ? void 0 : skeletonInfo.curAnimationCache; + if (preAnimationCache && preAnimationCache !== this) { + if (this._privateMode) { + preAnimationCache.invalidAllFrame(); + } else { + preAnimationCache.updateToFrame(0); + } + } + var listener = skeletonInfo === null || skeletonInfo === void 0 ? void 0 : skeletonInfo.listener; + this._instance.setAnimation(0, this._animationName, false); + this.bind(listener); + skeletonInfo.curAnimationCache = this; + this._frameIdx = -1; + this.isCompleted = false; + this.totalTime = 0; + this._invalid = false; + }; + _proto.end = function end() { + if (!this.needToUpdate()) { + this._skeletonInfo.curAnimationCache = null; + this.frames.length = this._frameIdx + 1; + this.isCompleted = true; + this.unbind(this._skeletonInfo.listener); + } + }; + _proto.bind = function bind(listener) { + var _this = this; + var completeHandle = function completeHandle(entry) { + if (entry && entry.animation.name === _this._animationName) { + _this.isCompleted = true; + } + }; + listener.complete = completeHandle; + }; + _proto.unbind = function unbind(listener) { + listener.complete = null; + }; + _proto.needToUpdate = function needToUpdate(toFrameIdx) { + return !this.isCompleted && this.totalTime < MaxCacheTime && (toFrameIdx === undefined || this._frameIdx < toFrameIdx); + }; + _proto.isInited = function isInited() { + return this._inited; + }; + _proto.isInvalid = function isInvalid() { + return this._invalid; + }; + _proto.invalidAllFrame = function invalidAllFrame() { + this.isCompleted = false; + this._invalid = true; + }; + _proto.enableCacheAttachedInfo = function enableCacheAttachedInfo() { + if (!this._enableCacheAttachedInfo) { + this._enableCacheAttachedInfo = true; + this.invalidAllFrame(); + } + }; + _proto.clear = function clear() { + this._inited = false; + this.invalidAllFrame(); + }; + _proto.destory = function destory() { + spine$1.wasmUtil.destroySpineInstance(this._instance); + }; + _createClass(AnimationCache, [{ + key: "skeleton", + get: function get() { + return this._skeleton; + } + }]); + return AnimationCache; + }(); + var SkeletonCache = function () { + function SkeletonCache() { + this._privateMode = void 0; + this._skeletonCache = void 0; + this._animationPool = void 0; + this._privateMode = false; + this._animationPool = {}; + this._skeletonCache = {}; + } + var _proto2 = SkeletonCache.prototype; + _proto2.enablePrivateMode = function enablePrivateMode() { + this._privateMode = true; + }; + _proto2.clear = function clear() { + this._animationPool = {}; + this._skeletonCache = {}; + }; + _proto2.invalidAnimationCache = function invalidAnimationCache(uuid) { + var skeletonInfo = this._skeletonCache[uuid]; + var skeleton = skeletonInfo && skeletonInfo.skeleton; + if (!skeleton) return; + var animationsCache = skeletonInfo.animationsCache; + for (var aniKey in animationsCache) { + var animationCache = animationsCache[aniKey]; + animationCache.invalidAllFrame(); + } + }; + _proto2.removeSkeleton = function removeSkeleton(uuid) { + var skeletonInfo = this._skeletonCache[uuid]; + if (!skeletonInfo) return; + var animationsCache = skeletonInfo.animationsCache; + for (var aniKey in animationsCache) { + var animationCache = animationsCache[aniKey]; + if (!animationCache) continue; + this._animationPool[uuid + "#" + aniKey] = animationCache; + animationCache.clear(); + } + delete this._skeletonCache[uuid]; + }; + _proto2.getSkeletonCache = function getSkeletonCache(uuid, skeletonData) { + var skeletonInfo = this._skeletonCache[uuid]; + if (!skeletonInfo) { + var skeleton = new spine$1.Skeleton(skeletonData); + var clipper = new spine$1.SkeletonClipping(); + var stateData = new spine$1.AnimationStateData(skeleton.data); + var state = new spine$1.AnimationState(stateData); + var listener = new TrackEntryListeners(); + this._skeletonCache[uuid] = skeletonInfo = { + skeleton: skeleton, + clipper: clipper, + state: state, + listener: listener, + animationsCache: {}, + curAnimationCache: null + }; + } + return skeletonInfo; + }; + _proto2.getAnimationCache = function getAnimationCache(uuid, animationName) { + var skeletonInfo = this._skeletonCache[uuid]; + if (!skeletonInfo) return null; + var animationsCache = skeletonInfo.animationsCache; + return animationsCache[animationName]; + }; + _proto2.initAnimationCache = function initAnimationCache(uuid, data, animationName) { + var spData = data.getRuntimeData(); + if (!spData) return null; + var skeletonInfo = this._skeletonCache[uuid]; + var skeleton = skeletonInfo && skeletonInfo.skeleton; + if (!skeleton) return null; + var animationsCache = skeletonInfo.animationsCache; + var animationCache = animationsCache[animationName]; + if (!animationCache) { + var poolKey = uuid + "#" + animationName; + animationCache = this._animationPool[poolKey]; + if (animationCache) { + delete this._animationPool[poolKey]; + } else { + animationCache = new AnimationCache(spData); + animationCache._privateMode = this._privateMode; + } + animationCache.init(skeletonInfo, animationName); + animationsCache[animationName] = animationCache; + } + animationCache.init(skeletonInfo, animationName); + animationCache.setAnimation(animationName); + return animationCache; + }; + _proto2.destroyCachedAnimations = function destroyCachedAnimations(uuid) { + if (uuid) { + var animationPool = this._animationPool; + for (var _key in animationPool) { + if (_key.includes(uuid)) { + animationPool[_key].destory(); + delete animationPool[_key]; + } + } + } else { + var _animationPool = this._animationPool; + for (var _key2 in _animationPool) { + _animationPool[_key2].destory(); + delete _animationPool[_key2]; + } + } + }; + return SkeletonCache; + }(); + _class5$2 = SkeletonCache; + SkeletonCache.FrameTime = FrameTime; + SkeletonCache.sharedCache = new _class5$2(); + + var _dec$r, _dec2$o, _dec3$m, _class$r, _class2$n, _initializer$l, _initializer2$k, _initializer3$g, _initializer4$e, _initializer5$c; + var SkeletonData = (_dec$r = ccclass$t('sp.SkeletonData'), _dec2$o = type$8([Texture2D]), _dec3$m = type$8([CCString]), _dec$r(_class$r = (_class2$n = function (_Asset) { + _inheritsLoose(SkeletonData, _Asset); + function SkeletonData() { + var _this; + _this = _Asset.call(this) || this; + _this._skeletonJson = _initializer$l && _initializer$l(); + _this.textures = _initializer2$k && _initializer2$k(); + _this.textureNames = _initializer3$g && _initializer3$g(); + _this.scale = _initializer4$e && _initializer4$e(); + _this._atlasText = _initializer5$c && _initializer5$c(); + _this._buffer = void 0; + _this._skeletonCache = null; + _this._skinsEnum = null; + _this._animsEnum = null; + _this.reset(); + return _this; + } + var _proto = SkeletonData.prototype; + _proto.createNode = function createNode(callback) { + var node = new Node$1(this.name); + var skeleton = node.addComponent('cc.Skeleton'); + skeleton.skeletonData = this; + return callback(null, node); + }; + _proto.reset = function reset() { + this._skeletonCache = null; + }; + _proto.resetEnums = function resetEnums() { + }; + _proto.getRuntimeData = function getRuntimeData(quiet) { + if (this._skeletonCache) { + return this._skeletonCache; + } + if (!(this.textures && this.textures.length > 0) && this.textureNames && this.textureNames.length > 0) { + if (!quiet) { + error(this.name + " no textures found!"); + } + return null; + } + var spData = spine$1.wasmUtil.querySpineSkeletonDataByUUID(this._uuid); + if (spData) { + this._skeletonCache = spData; + } else if (this.skeletonJsonStr) { + this._skeletonCache = spine$1.wasmUtil.createSpineSkeletonDataWithJson(this.skeletonJsonStr, this._atlasText); + spine$1.wasmUtil.registerSpineSkeletonDataWithUUID(this._skeletonCache, this._uuid); + } else { + var rawData = new Uint8Array(this._nativeAsset); + var byteSize = rawData.length; + var ptr = spine$1.wasmUtil.queryStoreMemory(byteSize); + var wasmMem = spine$1.wasmUtil.wasm.HEAPU8.subarray(ptr, ptr + byteSize); + wasmMem.set(rawData); + this._skeletonCache = spine$1.wasmUtil.createSpineSkeletonDataWithBinary(byteSize, this._atlasText); + spine$1.wasmUtil.registerSpineSkeletonDataWithUUID(this._skeletonCache, this._uuid); + } + return this._skeletonCache; + }; + _proto.getSkinsEnum = function getSkinsEnum() { + if (this._skinsEnum) { + return this._skinsEnum; + } + var sd = this.getRuntimeData(true); + if (sd) { + var skins = sd.skins; + var enumDef = {}; + for (var i = 0; i < skins.length; i++) { + var name = skins[i].name; + enumDef[name] = i; + } + return this._skinsEnum = Enum(enumDef); + } + return null; + }; + _proto.getAnimsEnum = function getAnimsEnum() { + if (this._animsEnum && Object.keys(this._animsEnum).length > 1) { + return this._animsEnum; + } + var sd = this.getRuntimeData(true); + if (sd) { + var enumDef = { + '': 0 + }; + var anims = sd.animations; + for (var i = 0; i < anims.length; i++) { + var name = anims[i].name; + enumDef[name] = i + 1; + } + return this._animsEnum = Enum(enumDef); + } + return null; + }; + _proto.destroy = function destroy() { + SkeletonCache.sharedCache.destroyCachedAnimations(this._uuid); + if (this._skeletonCache) { + spine$1.wasmUtil.registerSpineSkeletonDataWithUUID(this._skeletonCache, this._uuid); + } + return _Asset.prototype.destroy.call(this); + }; + _createClass(SkeletonData, [{ + key: "skeletonJsonStr", + get: function get() { + if (this._skeletonJson) { + return JSON.stringify(this._skeletonJson); + } + return ''; + } + }, { + key: "skeletonJson", + get: function get() { + return this._skeletonJson; + }, + set: function set(value) { + this.reset(); + if (typeof value === 'string') { + this._skeletonJson = JSON.parse(value); + } else { + this._skeletonJson = value; + } + if (!this._uuid && value.skeleton) { + this._uuid = value.skeleton.hash; + } + } + }, { + key: "atlasText", + get: function get() { + return this._atlasText; + }, + set: function set(value) { + this._atlasText = value; + this.reset(); + } + }, { + key: "_nativeAsset", + get: function get() { + return this._buffer; + }, + set: function set(bin) { + this._buffer = bin; + this.reset(); + } + }]); + return SkeletonData; + }(Asset), (_initializer$l = applyDecoratedInitializer(_class2$n.prototype, "_skeletonJson", [serializable$9], function () { + return null; + }), _initializer2$k = applyDecoratedInitializer(_class2$n.prototype, "textures", [serializable$9, _dec2$o], function () { + return []; + }), _initializer3$g = applyDecoratedInitializer(_class2$n.prototype, "textureNames", [serializable$9, _dec3$m], function () { + return []; + }), _initializer4$e = applyDecoratedInitializer(_class2$n.prototype, "scale", [serializable$9], function () { + return 1; + }), _initializer5$c = applyDecoratedInitializer(_class2$n.prototype, "_atlasText", [serializable$9], function () { + return ''; + })), _class2$n)) || _class$r); + legacyCC.internal.SpineSkeletonData = SkeletonData; + + var SkeletonSystem = function (_System) { + _inheritsLoose(SkeletonSystem, _System); + function SkeletonSystem() { + var _this; + _this = _System.call(this) || this; + _this._skeletons = new Set(); + return _this; + } + SkeletonSystem.getInstance = function getInstance() { + if (!SkeletonSystem._instance) { + SkeletonSystem._instance = new SkeletonSystem(); + director.registerSystem(SkeletonSystem.ID, SkeletonSystem._instance, System.Priority.HIGH); + } + return SkeletonSystem._instance; + }; + var _proto = SkeletonSystem.prototype; + _proto.add = function add(skeleton) { + if (!skeleton) return; + if (!this._skeletons.has(skeleton)) { + this._skeletons.add(skeleton); + } + }; + _proto.remove = function remove(skeleton) { + if (!skeleton) return; + if (this._skeletons.has(skeleton)) { + this._skeletons["delete"](skeleton); + } + }; + _proto.postUpdate = function postUpdate(dt) { + if (!this._skeletons) { + return; + } + this._skeletons.forEach(function (skeleton) { + skeleton.updateAnimation(dt); + skeleton.syncAttachedNode(); + }); + }; + _proto.prepareRenderData = function prepareRenderData() { + if (!this._skeletons) { + return; + } + this._skeletons.forEach(function (skeleton) { + skeleton.markForUpdateRenderData(); + }); + }; + return SkeletonSystem; + }(System); + SkeletonSystem.ID = 'SKELETON'; + SkeletonSystem._instance = void 0; + legacyCC.internal.SpineSkeletonSystem = SkeletonSystem; + + var tempMat4 = new Mat4(); + var AttachUtil = function () { + function AttachUtil() { + this._inited = false; + this._skeleton = null; + this._skeletonNode = null; + this._skeletonComp = null; + this._inited = false; + this._skeleton = null; + this._skeletonNode = null; + this._skeletonComp = null; + } + var _proto = AttachUtil.prototype; + _proto.init = function init(skeletonComp) { + this._inited = true; + this._skeleton = skeletonComp._skeleton; + this._skeletonNode = skeletonComp.node; + this._skeletonComp = skeletonComp; + }; + _proto.reset = function reset() { + this._inited = false; + this._skeleton = null; + this._skeletonNode = null; + this._skeletonComp = null; + }; + _proto._syncAttachedNode = function _syncAttachedNode() { + if (!this._inited) return; + var socketNodes = this._skeletonComp.socketNodes; + if (socketNodes.size === 0) return; + var boneInfos; + var isCached = this._skeletonComp.isAnimationCached(); + if (isCached && this._skeletonComp._curFrame) { + boneInfos = this._skeletonComp._curFrame.boneInfos; + } else { + boneInfos = this._skeleton.bones; + } + if (!boneInfos || boneInfos.length < 1) return; + var matrixHandle = function matrixHandle(node, bone) { + var tm = tempMat4; + tm.m00 = bone.a; + tm.m01 = bone.c; + tm.m04 = bone.b; + tm.m05 = bone.d; + tm.m12 = bone.worldX; + tm.m13 = bone.worldY; + node.matrix = tempMat4; + }; + for (var _iterator = _createForOfIteratorHelperLoose(socketNodes.keys()), _step; !(_step = _iterator()).done;) { + var boneIdx = _step.value; + var boneNode = socketNodes.get(boneIdx); + if (!boneNode || !boneNode.isValid) { + socketNodes["delete"](boneIdx); + continue; + } + var bone = boneInfos[boneIdx]; + if (!bone) { + boneNode.removeFromParent(); + boneNode.destroy(); + socketNodes["delete"](boneIdx); + continue; + } + matrixHandle(boneNode, bone); + } + }; + return AttachUtil; + }(); + + var _dec$q, _dec2$n, _class$q, _class2$m, _initializer$k, _initializer2$j, _dec3$l, _dec4$f, _dec5$f, _dec6$9, _dec7$7, _dec8$5, _dec9$4, _class4, _class5$1, _initializer3$f, _initializer4$d, _initializer5$b, _initializer6$8, _initializer7$8, _initializer8$8, _initializer9$7, _initializer10$7, _initializer11$7, _initializer12$6, _initializer13$4, _initializer14$3, _initializer15$2, _initializer16$2, _initializer17$1, _class6; + var CUSTOM_SLOT_TEXTURE_BEGIN = 10000; + var _slotTextureID = CUSTOM_SLOT_TEXTURE_BEGIN; + var timeScale = 1.0; + var AnimationCacheMode; + (function (AnimationCacheMode) { + AnimationCacheMode[AnimationCacheMode["UNSET"] = -1] = "UNSET"; + AnimationCacheMode[AnimationCacheMode["REALTIME"] = 0] = "REALTIME"; + AnimationCacheMode[AnimationCacheMode["SHARED_CACHE"] = 1] = "SHARED_CACHE"; + AnimationCacheMode[AnimationCacheMode["PRIVATE_CACHE"] = 2] = "PRIVATE_CACHE"; + })(AnimationCacheMode || (AnimationCacheMode = {})); + ccenum(AnimationCacheMode); + var DefaultSkinsEnum; + (function (DefaultSkinsEnum) { + DefaultSkinsEnum[DefaultSkinsEnum["default"] = 0] = "default"; + })(DefaultSkinsEnum || (DefaultSkinsEnum = {})); + ccenum(DefaultSkinsEnum); + var DefaultAnimsEnum; + (function (DefaultAnimsEnum) { + DefaultAnimsEnum[DefaultAnimsEnum[""] = 0] = ""; + })(DefaultAnimsEnum || (DefaultAnimsEnum = {})); + ccenum(DefaultAnimsEnum); + var SpineMaterialType; + (function (SpineMaterialType) { + SpineMaterialType[SpineMaterialType["COLORED_TEXTURED"] = 0] = "COLORED_TEXTURED"; + SpineMaterialType[SpineMaterialType["TWO_COLORED"] = 1] = "TWO_COLORED"; + })(SpineMaterialType || (SpineMaterialType = {})); + var SpineSocket = (_dec$q = ccclass$t('sp.Skeleton.SpineSocket'), _dec2$n = type$8(Node$1), _dec$q(_class$q = (_class2$m = function SpineSocket(path, target) { + if (path === void 0) { + path = ''; + } + if (target === void 0) { + target = null; + } + this.path = _initializer$k && _initializer$k(); + this.target = _initializer2$j && _initializer2$j(); + this.path = path; + this.target = target; + }, (_initializer$k = applyDecoratedInitializer(_class2$m.prototype, "path", [serializable$9], function () { + return ''; + }), _initializer2$j = applyDecoratedInitializer(_class2$m.prototype, "target", [_dec2$n, serializable$9], function () { + return null; + })), _class2$m)) || _class$q); + setClassAlias(SpineSocket, 'sp.Skeleton.SpineSocket'); + var Skeleton = (_dec3$l = ccclass$t('sp.Skeleton'), _dec4$f = type$8(SkeletonData), _dec5$f = type$8(DefaultSkinsEnum), _dec6$9 = type$8(DefaultAnimsEnum), _dec7$7 = type$8(AnimationCacheMode), _dec8$5 = type$8([SpineSocket]), _dec9$4 = type$8(Material), _dec3$l(_class4 = (_class5$1 = (_class6 = function (_UIRenderer) { + _inheritsLoose(Skeleton, _UIRenderer); + function Skeleton() { + var _this; + _this = _UIRenderer.call(this) || this; + _this._skeletonData = _initializer3$f && _initializer3$f(); + _this.defaultSkin = _initializer4$d && _initializer4$d(); + _this.defaultAnimation = _initializer5$b && _initializer5$b(); + _this._premultipliedAlpha = _initializer6$8 && _initializer6$8(); + _this._timeScale = _initializer7$8 && _initializer7$8(); + _this._preCacheMode = _initializer8$8 && _initializer8$8(); + _this._cacheMode = _initializer9$7 && _initializer9$7(); + _this._defaultCacheMode = _initializer10$7 && _initializer10$7(); + _this._sockets = _initializer11$7 && _initializer11$7(); + _this._useTint = _initializer12$6 && _initializer12$6(); + _this._debugMesh = _initializer13$4 && _initializer13$4(); + _this._debugBones = _initializer14$3 && _initializer14$3(); + _this._debugSlots = _initializer15$2 && _initializer15$2(); + _this._enableBatch = _initializer16$2 && _initializer16$2(); + _this._runtimeData = null; + _this._skeleton = null; + _this._instance = null; + _this._state = null; + _this._textures = []; + _this._animationName = ''; + _this._skinName = ''; + _this._drawList = new RecyclePool(function () { + return { + material: null, + texture: null, + indexOffset: 0, + indexCount: 0 + }; + }, 1); + _this._materialCache = {}; + _this.paused = false; + _this._enumSkins = Enum({}); + _this._enumAnimations = Enum({}); + _this.attachUtil = void 0; + _this._socketNodes = new Map(); + _this._cachedSockets = new Map(); + _this._startEntry = void 0; + _this._endEntry = void 0; + _this._paused = false; + _this._accTime = 0; + _this._playCount = 0; + _this._skeletonCache = null; + _this._animCache = null; + _this._animationQueue = []; + _this._headAniInfo = null; + _this._isAniComplete = true; + _this._playTimes = 0; + _this._curFrame = null; + _this._needUpdateSkeltonData = true; + _this._listener = null; + _this._debugRenderer = null; + _this._startSlotIndex = void 0; + _this._endSlotIndex = void 0; + _this._slotTextures = null; + _this.loop = _initializer17$1 && _initializer17$1(); + _this._useVertexOpacity = true; + _this._startEntry = { + animation: { + name: '' + }, + trackIndex: 0 + }; + _this._endEntry = { + animation: { + name: '' + }, + trackIndex: 0 + }; + _this._startSlotIndex = -1; + _this._endSlotIndex = -1; + { + _this._instance = new spine$1.SkeletonInstance(); + } + _this.attachUtil = new AttachUtil(); + return _this; + } + var _proto = Skeleton.prototype; + _proto.__preload = function __preload() { + _UIRenderer.prototype.__preload.call(this); + this._updateSkeletonData(); + this._updateDebugDraw(); + }; + _proto.onRestore = function onRestore() { + this.updateMaterial(); + this.markForUpdateRenderData(); + }; + _proto.getState = function getState() { + return this._state; + }; + _proto.onEnable = function onEnable() { + _UIRenderer.prototype.onEnable.call(this); + this._flushAssembler(); + SkeletonSystem.getInstance().add(this); + }; + _proto.onDisable = function onDisable() { + _UIRenderer.prototype.onDisable.call(this); + SkeletonSystem.getInstance().remove(this); + }; + _proto.onDestroy = function onDestroy() { + this.destroyRenderData(); + this._cleanMaterialCache(); + { + spine$1.wasmUtil.destroySpineInstance(this._instance); + } + _UIRenderer.prototype.onDestroy.call(this); + }; + _proto.clearAnimation = function clearAnimation() { + if (!this.isAnimationCached()) { + this.clearTrack(0); + this.setToSetupPose(); + } + }; + _proto._updateSkeletonData = function _updateSkeletonData() { + var _this$skeletonData; + var skeletonData = this._skeletonData; + if (!skeletonData) { + this._runtimeData = null; + this._state = null; + this._skeleton = null; + this._textures = []; + this._refreshInspector(); + return; + } + this._needUpdateSkeltonData = false; + var data = (_this$skeletonData = this.skeletonData) === null || _this$skeletonData === void 0 ? void 0 : _this$skeletonData.getRuntimeData(); + if (!data) return; + this.setSkeletonData(data); + if (this.defaultSkin) this.setSkin(this.defaultSkin); + this._textures = skeletonData.textures; + this._runtimeData = skeletonData.getRuntimeData(); + if (!this._runtimeData) return; + this.setSkeletonData(this._runtimeData); + this._refreshInspector(); + if (this.defaultAnimation) this.animation = this.defaultAnimation.toString(); + if (this.defaultSkin) this.setSkin(this.defaultSkin); + this._updateUseTint(); + this._indexBoneSockets(); + this._updateSocketBindings(); + this.attachUtil.init(this); + this._preCacheMode = this._cacheMode; + }; + _proto.setSkeletonData = function setSkeletonData(skeletonData) { + { + if (this._cacheMode === AnimationCacheMode.SHARED_CACHE) { + this._skeletonCache = SkeletonCache.sharedCache; + } else if (this._cacheMode === AnimationCacheMode.PRIVATE_CACHE) { + this._skeletonCache = new SkeletonCache(); + this._skeletonCache.enablePrivateMode(); + } + } + if (this.isAnimationCached()) { + if (this.debugBones || this.debugSlots) { + warn('Debug bones or slots is invalid in cached mode'); + } + if (this.skeletonData) { + var skeletonInfo = this._skeletonCache.getSkeletonCache(this.skeletonData.uuid, skeletonData); + this._skeleton = skeletonInfo.skeleton; + } + } else { + this._skeleton = this._instance.initSkeleton(skeletonData); + this._state = this._instance.getAnimationState(); + this._instance.setPremultipliedAlpha(this._premultipliedAlpha); + } + this._flushAssembler(); + }; + _proto.setSlotsRange = function setSlotsRange(startSlotIndex, endSlotIndex) { + if (this.isAnimationCached()) { + warn('Slots visible range can not be modified in cached mode.'); + } else { + this._startSlotIndex = startSlotIndex; + this._endSlotIndex = endSlotIndex; + } + }; + _proto.getAttachment = function getAttachment(slotName, attachmentName) { + if (this._skeleton) { + return this._skeleton.getAttachmentByName(slotName, attachmentName); + } + return null; + }; + _proto.setAttachment = function setAttachment(slotName, attachmentName) { + if (this._skeleton) { + this._skeleton.setAttachment(slotName, attachmentName); + } + this.invalidAnimationCache(); + }; + _proto.getTextureAtlas = function getTextureAtlas(regionAttachment) { + return regionAttachment.region; + }; + _proto.setAnimation = function setAnimation(trackIndex, name, loop) { + if (!(typeof name === 'string')) { + logID(7511); + return null; + } + var animation = this._skeleton.data.findAnimation(name); + if (!animation) { + logID(7509, name); + return null; + } + var trackEntry = null; + if (loop === undefined) loop = true; + this._playTimes = loop ? 0 : 1; + if (this.isAnimationCached()) { + if (trackIndex !== 0) { + warn('Track index can not greater than 0 in cached mode.'); + } + if (!this._skeletonCache) return null; + var cache = this._skeletonCache.getAnimationCache(this._skeletonData.uuid, name); + if (!cache) { + cache = this._skeletonCache.initAnimationCache(this.skeletonData.uuid, this._skeletonData, name); + } + if (cache) { + this._animationName = name; + this._isAniComplete = false; + this._accTime = 0; + this._playCount = 0; + this._animCache = cache; + if (this._socketNodes.size > 0) { + this._animCache.enableCacheAttachedInfo(); + } + this._animCache.updateToFrame(0); + this._curFrame = this._animCache.frames[0]; + } + } else { + this._animationName = name; + trackEntry = this._instance.setAnimation(trackIndex, name, loop); + } + this.markForUpdateRenderData(); + return trackEntry; + }; + _proto.addAnimation = function addAnimation(trackIndex, name, loop, delay) { + delay = delay || 0; + if (this.isAnimationCached()) { + if (trackIndex !== 0) { + warn('Track index can not greater than 0 in cached mode.'); + } + this._animationQueue.push({ + animationName: name, + loop: loop, + delay: delay + }); + return null; + } else if (this._skeleton) { + var _this$_state; + var animation = this._skeleton.data.findAnimation(name); + if (!animation) { + logID(7510, name); + return null; + } + return (_this$_state = this._state) === null || _this$_state === void 0 ? void 0 : _this$_state.addAnimationWith(trackIndex, animation, loop, delay); + } + return null; + }; + _proto.findAnimation = function findAnimation(name) { + if (this._skeleton) { + return this._skeleton.data.findAnimation(name); + } + return null; + }; + _proto.getCurrent = function getCurrent(trackIndex) { + if (this.isAnimationCached()) { + warn('\'getCurrent\' interface can not be invoked in cached mode.'); + } else if (this._state) { + return this._state.getCurrent(trackIndex); + } + return null; + }; + _proto.setSkin = function setSkin(name) { + if (this._skeleton) this._skeleton.setSkinByName(name); + this._instance.setSkin(name); + if (this.isAnimationCached()) { + if (this._animCache) { + this._animCache.setSkin(name); + } + } + this.invalidAnimationCache(); + }; + _proto.updateAnimation = function updateAnimation(dt) { + this.markForUpdateRenderData(); + if (this.paused) return; + dt *= this._timeScale * timeScale; + if (this.isAnimationCached()) { + if (this._isAniComplete) { + var _this$_headAniInfo; + if (this._animationQueue.length === 0 && !this._headAniInfo) { + var frameCache = this._animCache; + if (frameCache && frameCache.isInvalid()) { + frameCache.updateToFrame(0); + var frames = frameCache.frames; + this._curFrame = frames[frames.length - 1]; + } + return; + } + if (!this._headAniInfo) { + this._headAniInfo = this._animationQueue.shift(); + } + this._accTime += dt; + if (this._accTime > ((_this$_headAniInfo = this._headAniInfo) === null || _this$_headAniInfo === void 0 ? void 0 : _this$_headAniInfo.delay)) { + var aniInfo = this._headAniInfo; + this._headAniInfo = null; + this.setAnimation(0, aniInfo === null || aniInfo === void 0 ? void 0 : aniInfo.animationName, aniInfo === null || aniInfo === void 0 ? void 0 : aniInfo.loop); + } + return; + } + this._updateCache(dt); + } else { + this._instance.updateAnimation(dt); + } + }; + _proto._updateCache = function _updateCache(dt) { + var frameCache = this._animCache; + if (!frameCache.isInited()) { + return; + } + var frames = frameCache.frames; + var frameTime = SkeletonCache.FrameTime; + if (this._accTime === 0 && this._playCount === 0) { + this._startEntry.animation.name = this._animationName; + if (this._listener && this._listener.start) this._listener.start(this._startEntry); + } + this._accTime += dt; + var frameIdx = Math.floor(this._accTime / frameTime); + if (!frameCache.isCompleted) { + frameCache.updateToFrame(frameIdx); + } + this._curFrame = frames[frameIdx]; + if (frameCache.isCompleted && frameIdx >= frames.length) { + this._playCount++; + if (this._playTimes > 0 && this._playCount >= this._playTimes) { + this._curFrame = frames[frames.length - 1]; + this._accTime = 0; + this._playCount = 0; + this._isAniComplete = true; + this._emitCacheCompleteEvent(); + return; + } + this._accTime = 0; + frameIdx = 0; + this._curFrame = frames[frameIdx]; + this._emitCacheCompleteEvent(); + } + }; + _proto._emitCacheCompleteEvent = function _emitCacheCompleteEvent() { + if (!this._listener) return; + this._endEntry.animation.name = this._animationName; + if (this._listener.complete) this._listener.complete(this._endEntry); + if (this._listener.end) this._listener.end(this._endEntry); + }; + _proto.updateRenderData = function updateRenderData() { + if (this.isAnimationCached()) { + if (!this._curFrame) return null; + var model = this._curFrame.model; + return model; + } else { + var _model = this._instance.updateRenderData(); + return _model; + } + }; + _proto._flushAssembler = function _flushAssembler() { + var assembler = Skeleton.Assembler.getAssembler(this); + if (this._assembler !== assembler) { + this._assembler = assembler; + } + if (this._skeleton && this._assembler) { + this._renderData = this._assembler.createData(this); + this.markForUpdateRenderData(); + this._updateColor(); + } + }; + _proto._render = function _render(batcher) { + var indicesCount = 0; + if (this.renderData && this._drawList.length > 0) { + var rd = this.renderData; + var chunk = rd.chunk; + var accessor = chunk.vertexAccessor; + var meshBuffer = rd.getMeshBuffer(); + var origin = meshBuffer.indexOffset; + for (var i = 0; i < this._drawList.length; i++) { + var dc = this._drawList.data[i]; + if (dc.texture) { + batcher.commitMiddleware(this, meshBuffer, origin + dc.indexOffset, dc.indexCount, dc.texture, dc.material, this._enableBatch); + } + indicesCount += dc.indexCount; + } + var subIndices = rd.indices.subarray(0, indicesCount); + accessor.appendIndices(chunk.bufferId, subIndices); + accessor.getMeshBuffer(chunk.bufferId).setDirty(); + } + }; + _proto.requestDrawData = function requestDrawData(material, textureID, indexOffset, indexCount) { + var draw = this._drawList.add(); + draw.material = material; + if (textureID < CUSTOM_SLOT_TEXTURE_BEGIN) { + draw.texture = this._textures[textureID]; + } else { + var _this$_slotTextures; + var texture = (_this$_slotTextures = this._slotTextures) === null || _this$_slotTextures === void 0 ? void 0 : _this$_slotTextures.get(textureID); + if (texture) draw.texture = texture; + } + draw.indexOffset = indexOffset; + draw.indexCount = indexCount; + return draw; + }; + _proto._updateBuiltinMaterial = function _updateBuiltinMaterial() { + var material = builtinResMgr.get('default-spine-material'); + return material; + }; + _proto.updateMaterial = function updateMaterial() { + var mat; + if (this._customMaterial) mat = this._customMaterial;else mat = this._updateBuiltinMaterial(); + this.setSharedMaterial(mat, 0); + this._cleanMaterialCache(); + }; + _proto.getMaterialTemplate = function getMaterialTemplate() { + if (this.customMaterial !== null) return this.customMaterial; + if (this.material) return this.material; + this.updateMaterial(); + return this.material; + }; + _proto._cleanMaterialCache = function _cleanMaterialCache() { + for (var val in this._materialCache) { + this._materialCache[val].destroy(); + } + this._materialCache = {}; + }; + _proto.getMaterialForBlendAndTint = function getMaterialForBlendAndTint(src, dst, type) { + var key = type + "/" + src + "/" + dst; + var inst = this._materialCache[key]; + if (inst) { + return inst; + } + var material = this.getMaterialTemplate(); + var matInfo = { + parent: material, + subModelIdx: 0, + owner: this + }; + inst = new MaterialInstance(matInfo); + this._materialCache[key] = inst; + inst.overridePipelineStates({ + blendState: { + blendColor: Color$1.WHITE, + targets: [{ + blendEq: BlendOp.ADD, + blendAlphaEq: BlendOp.ADD, + blendSrc: src, + blendDst: dst, + blendSrcAlpha: src, + blendDstAlpha: dst + }] + } + }); + var useTwoColor = false; + if (type === SpineMaterialType.TWO_COLORED) { + useTwoColor = true; + } + var useLocal = !this._enableBatch; + inst.recompileShaders({ + TWO_COLORED: useTwoColor, + USE_LOCAL: useLocal + }); + return inst; + }; + _proto._updateAnimEnum = function _updateAnimEnum() { + var animEnum; + if (this.skeletonData) { + animEnum = this.skeletonData.getAnimsEnum(); + } else { + animEnum = DefaultAnimsEnum; + } + this._enumAnimations = Enum({}); + Object.assign(this._enumAnimations, animEnum); + Enum.update(this._enumAnimations); + setPropertyEnumType(this, '_animationIndex', this._enumAnimations); + }; + _proto._updateSkinEnum = function _updateSkinEnum() { + var skinEnum; + if (this.skeletonData) { + skinEnum = this.skeletonData.getSkinsEnum(); + } else { + skinEnum = DefaultSkinsEnum; + } + this._enumSkins = Enum({}); + Object.assign(this._enumSkins, skinEnum); + Enum.update(this._enumSkins); + setPropertyEnumType(this, '_defaultSkinIndex', this._enumSkins); + }; + _proto._refreshInspector = function _refreshInspector() { + }; + _proto.destroyRenderData = function destroyRenderData() { + this._drawList.reset(); + _UIRenderer.prototype.destroyRenderData.call(this); + }; + _proto.createRenderEntity = function createRenderEntity() { + var renderEntity = new RenderEntity(RenderEntityType.DYNAMIC); + renderEntity.setUseLocal(true); + return renderEntity; + }; + _proto.markForUpdateRenderData = function markForUpdateRenderData(enable) { + if (enable === void 0) { + enable = true; + } + _UIRenderer.prototype.markForUpdateRenderData.call(this, enable); + if (this._debugRenderer) { + this._debugRenderer.markForUpdateRenderData(enable); + } + }; + _proto.syncAttachedNode = function syncAttachedNode() { + this.attachUtil._syncAttachedNode(); + }; + _proto.isAnimationCached = function isAnimationCached() { + return this._cacheMode !== AnimationCacheMode.REALTIME; + }; + _proto.setAnimationCacheMode = function setAnimationCacheMode(cacheMode) { + if (this._preCacheMode !== cacheMode) { + this._cacheMode = cacheMode; + this._updateSkeletonData(); + this.setSkin(this.defaultSkin); + this._updateUseTint(); + this._updateSocketBindings(); + this.markForUpdateRenderData(); + } + }; + _proto.setToSetupPose = function setToSetupPose() { + if (this._skeleton) { + this._skeleton.setToSetupPose(); + } + }; + _proto.setBonesToSetupPose = function setBonesToSetupPose() { + if (this._skeleton) { + this._skeleton.setBonesToSetupPose(); + } + }; + _proto.setSlotsToSetupPose = function setSlotsToSetupPose() { + if (this._skeleton) { + this._skeleton.setSlotsToSetupPose(); + } + }; + _proto.invalidAnimationCache = function invalidAnimationCache() { + if (!this.isAnimationCached()) return; + if (this._skeletonCache) { + this._skeletonCache.invalidAnimationCache(this._skeletonData.uuid); + } + }; + _proto.findBone = function findBone(boneName) { + if (this._skeleton) { + return this._skeleton.findBone(boneName); + } + return null; + }; + _proto.findSlot = function findSlot(slotName) { + if (this._skeleton) { + return this._skeleton.findSlot(slotName); + } + return null; + }; + _proto.setMix = function setMix(fromAnimation, toAnimation, duration) { + if (this.isAnimationCached()) { + warn('cached mode not support setMix!!!'); + return; + } + if (this._state) { + this._instance.setMix(fromAnimation, toAnimation, duration); + } + }; + _proto.clearTracks = function clearTracks() { + if (this.isAnimationCached()) { + warn('\'clearTracks\' interface can not be invoked in cached mode.'); + } else if (this._state) { + this._state.clearTracks(); + this.setToSetupPose(); + } + }; + _proto.clearTrack = function clearTrack(trackIndex) { + if (this.isAnimationCached()) { + warn('\'clearTrack\' interface can not be invoked in cached mode.'); + } else if (this._state) { + this._state.clearTrack(trackIndex); + } + }; + _proto.updateWorldTransform = function updateWorldTransform() { + if (!this.isAnimationCached()) return; + if (this._skeleton) { + this._skeleton.updateWorldTransform(); + } + }; + _proto._verifySockets = function _verifySockets(sockets) { + for (var i = 0, l = sockets.length; i < l; i++) { + var target = sockets[i].target; + if (target) { + if (!target.parent || target.parent !== this.node) { + error("Target node " + target.name + " is expected to be a direct child of " + this.node.name); + continue; + } + } + } + var uniqueSocketNode = new Map(); + sockets.forEach(function (x) { + if (x.target) { + if (uniqueSocketNode.get(x.target)) { + error("Target node " + x.target.name + " has existed."); + } else { + uniqueSocketNode.set(x.target, true); + } + } + }); + }; + _proto._updateSocketBindings = function _updateSocketBindings() { + if (!this._skeleton) return; + this._socketNodes.clear(); + for (var i = 0, l = this._sockets.length; i < l; i++) { + var socket = this._sockets[i]; + if (socket.path && socket.target) { + var boneIdx = this._cachedSockets.get(socket.path); + if (!boneIdx) { + error("Skeleton data does not contain path " + socket.path); + continue; + } + this._socketNodes.set(boneIdx, socket.target); + } + } + }; + _proto._indexBoneSockets = function _indexBoneSockets() { + if (!this._skeleton) { + return; + } + this._cachedSockets.clear(); + var bones = this._skeleton.bones; + var getBoneName = function getBoneName(bone) { + if (bone.parent == null) return bone.data.name || ''; + return getBoneName(bones[bone.parent.data.index]) + "/" + bone.data.name; + }; + for (var i = 0, l = bones.length; i < l; i++) { + var bd = bones[i].data; + var boneName = getBoneName(bones[i]); + this._cachedSockets.set(boneName, bd.index); + } + }; + _proto.querySockets = function querySockets() { + if (!this._skeleton) { + return []; + } + if (this._cachedSockets.size === 0) { + this._indexBoneSockets(); + } + if (this._cachedSockets.size > 0) { + return Array.from(this._cachedSockets.keys()).sort(); + } + return []; + }; + _proto._updateUseTint = function _updateUseTint() { + this._cleanMaterialCache(); + this.destroyRenderData(); + { + if (!this.isAnimationCached()) { + this._instance.setUseTint(this._useTint); + } + } + if (this._assembler && this._skeleton) { + this._renderData = this._assembler.createData(this); + this.markForUpdateRenderData(); + } + }; + _proto._updateBatch = function _updateBatch() { + this._cleanMaterialCache(); + this.markForUpdateRenderData(); + }; + _proto._updateDebugDraw = function _updateDebugDraw() { + if (this.debugBones || this.debugSlots || this.debugMesh) { + if (!this._debugRenderer) { + var debugDrawNode = new Node$1('DEBUG_DRAW_NODE'); + debugDrawNode.hideFlags |= CCObject.Flags.DontSave | CCObject.Flags.HideInHierarchy; + var debugDraw = debugDrawNode.addComponent(Graphics); + debugDraw.lineWidth = 1; + debugDraw.strokeColor = new Color$1(255, 0, 0, 255); + this._debugRenderer = debugDraw; + debugDrawNode.parent = this.node; + } + if (this.isAnimationCached()) { + warn('Debug bones or slots is invalid in cached mode'); + } else { + this._instance.setDebugMode(true); + } + } else if (this._debugRenderer) { + this._debugRenderer.node.destroy(); + this._debugRenderer = null; + if (!this.isAnimationCached()) { + if (this._instance) { + this._instance.setDebugMode(false); + } + } + } + }; + _proto._updateUITransform = function _updateUITransform() { + var uiTrans = this.node._uiProps.uiTransformComp; + var skeletonData = this._runtimeData; + if (!skeletonData) { + uiTrans.setContentSize(100, 100); + uiTrans.anchorX = 0.5; + uiTrans.anchorX = 0.5; + return; + } + var width = skeletonData.width; + var height = skeletonData.height; + if (width && height) { + uiTrans.setContentSize(width, height); + if (width !== 0) uiTrans.anchorX = Math.abs(skeletonData.x) / width; + if (height !== 0) uiTrans.anchorY = Math.abs(skeletonData.y) / height; + } + }; + _proto._updateColor = function _updateColor() { + this.node._uiProps.colorDirty = true; + var r = this._color.r / 255.0; + var g = this._color.g / 255.0; + var b = this._color.b / 255.0; + var a = this.node._uiProps.opacity; + this._instance.setColor(r, g, b, a); + }; + _proto.setVertexEffectDelegate = function setVertexEffectDelegate(effectDelegate) { + if (!effectDelegate) { + this._instance.clearEffect(); + return; + } + var effectType = effectDelegate === null || effectDelegate === void 0 ? void 0 : effectDelegate.getEffectType(); + if (effectType === 'jitter') { + var jitterEffect = effectDelegate === null || effectDelegate === void 0 ? void 0 : effectDelegate.getJitterVertexEffect(); + this._instance.setJitterEffect(jitterEffect); + } else if (effectType === 'swirl') { + var swirlEffect = effectDelegate === null || effectDelegate === void 0 ? void 0 : effectDelegate.getJitterVertexEffect(); + this._instance.setSwirlEffect(swirlEffect); + } + }; + _proto._ensureListener = function _ensureListener() { + if (!this._listener) { + this._listener = new TrackEntryListeners(); + } + }; + _proto.setStartListener = function setStartListener(listener) { + this._ensureListener(); + var listenerID = TrackEntryListeners.addListener(listener); + this._instance.setListener(listenerID, spine$1.EventType.start); + this._listener.start = listener; + }; + _proto.setInterruptListener = function setInterruptListener(listener) { + this._ensureListener(); + var listenerID = TrackEntryListeners.addListener(listener); + this._instance.setListener(listenerID, spine$1.EventType.interrupt); + this._listener.interrupt = listener; + }; + _proto.setEndListener = function setEndListener(listener) { + this._ensureListener(); + var listenerID = TrackEntryListeners.addListener(listener); + this._instance.setListener(listenerID, spine$1.EventType.end); + this._listener.end = listener; + }; + _proto.setDisposeListener = function setDisposeListener(listener) { + this._ensureListener(); + var listenerID = TrackEntryListeners.addListener(listener); + this._instance.setListener(listenerID, spine$1.EventType.dispose); + this._listener.dispose = listener; + }; + _proto.setCompleteListener = function setCompleteListener(listener) { + this._ensureListener(); + var listenerID = TrackEntryListeners.addListener(listener); + this._instance.setListener(listenerID, spine$1.EventType.complete); + this._listener.complete = listener; + }; + _proto.setEventListener = function setEventListener(listener) { + this._ensureListener(); + var listenerID = TrackEntryListeners.addListener(listener); + this._instance.setListener(listenerID, spine$1.EventType.event); + this._listener.event = listener; + }; + _proto.setTrackStartListener = function setTrackStartListener(entry, listener) { + TrackEntryListeners.getListeners(entry).start = listener; + }; + _proto.setTrackInterruptListener = function setTrackInterruptListener(entry, listener) { + TrackEntryListeners.getListeners(entry).interrupt = listener; + }; + _proto.setTrackEndListener = function setTrackEndListener(entry, listener) { + TrackEntryListeners.getListeners(entry).end = listener; + }; + _proto.setTrackDisposeListener = function setTrackDisposeListener(entry, listener) { + TrackEntryListeners.getListeners(entry).dispose = listener; + }; + _proto.setTrackCompleteListener = function setTrackCompleteListener(entry, listener) { + var _this2 = this; + var onComplete = function onComplete(trackEntry) { + var loopCount = Math.floor(trackEntry.trackTime / trackEntry.animationEnd); + var listenerID = TrackEntryListeners.addListener(listener); + listener(trackEntry, loopCount); + _this2._instance.setListener(listenerID, spine$1.EventType.event); + _this2._listener.event = listener; + }; + TrackEntryListeners.getListeners(entry).complete = onComplete; + }; + _proto.setTrackEventListener = function setTrackEventListener(entry, listener) { + TrackEntryListeners.getListeners(entry).event = listener; + }; + _proto.getDebugShapes = function getDebugShapes() { + return this._instance.getDebugShapes(); + }; + _proto.setSlotTexture = function setSlotTexture(slotName, tex2d, createNew) { + if (this.isAnimationCached()) { + error("Cached mode can't change texture of slot"); + return; + } + var slot = this.findSlot(slotName); + if (!slot) { + error("No slot named:" + slotName); + return; + } + var width = tex2d.width; + var height = tex2d.height; + var createNewAttachment = createNew || false; + this._instance.resizeSlotRegion(slotName, width, height, createNewAttachment); + if (!this._slotTextures) this._slotTextures = new Map(); + var textureID = 0; + this._slotTextures.forEach(function (value, key) { + if (value === tex2d) textureID = key; + }); + if (textureID === 0) { + textureID = ++_slotTextureID; + this._slotTextures.set(textureID, tex2d); + } + this._instance.setSlotTexture(slotName, textureID); + }; + _createClass(Skeleton, [{ + key: "drawList", + get: function get() { + return this._drawList; + } + }, { + key: "skeletonData", + get: function get() { + return this._skeletonData; + }, + set: function set(value) { + if (value) value.resetEnums(); + if (this._skeletonData !== value) { + this.destroyRenderData(); + this._skeletonData = value; + this.defaultSkin = ''; + this.defaultAnimation = ''; + this._animationName = ''; + this._skinName = ''; + this._updateSkeletonData(); + this._updateUITransform(); + } + } + }, { + key: "_defaultSkinIndex", + get: function get() { + if (this.skeletonData) { + var skinsEnum = this.skeletonData.getSkinsEnum(); + if (skinsEnum) { + if (this.defaultSkin === '') { + if (skinsEnum.hasOwnProperty(0)) { + this._defaultSkinIndex = 0; + return 0; + } + } else { + var skinIndex = skinsEnum[this.defaultSkin]; + if (skinIndex !== undefined) { + return skinIndex; + } + } + } + } + return 0; + }, + set: function set(value) { + var skinsEnum; + if (this.skeletonData) { + skinsEnum = this.skeletonData.getSkinsEnum(); + } + if (!skinsEnum) { + error(this.name + " skin enums are invalid"); + return; + } + var skinName = skinsEnum[value]; + if (skinName !== undefined) { + this.defaultSkin = String(skinName); + this.setSkin(this.defaultSkin); + this._refreshInspector(); + this.markForUpdateRenderData(); + } else { + error(this.name + " skin enums are invalid"); + } + } + }, { + key: "_animationIndex", + get: function get() { + var animationName = this.animation; + if (this.skeletonData) { + if (animationName) { + var animsEnum = this.skeletonData.getAnimsEnum(); + if (animsEnum) { + var animIndex = animsEnum[animationName]; + if (animIndex !== undefined) { + return animIndex; + } + } + } else { + this._refreshInspector(); + } + } + return 0; + }, + set: function set(value) { + var animsEnum; + if (this.skeletonData) { + animsEnum = this.skeletonData.getAnimsEnum(); + } + if (!animsEnum) { + error(this.name + " animation enums are invalid"); + return; + } + var animName = String(animsEnum[value]); + if (animName !== undefined) { + this.animation = animName; + { + this.animation = animName; + } + } else { + error(this.name + " animation enums are invalid"); + } + } + }, { + key: "defaultCacheMode", + get: function get() { + return this._defaultCacheMode; + }, + set: function set(mode) { + this._defaultCacheMode = mode; + this.setAnimationCacheMode(this._defaultCacheMode); + } + }, { + key: "premultipliedAlpha", + get: function get() { + return this._premultipliedAlpha; + }, + set: function set(v) { + if (v !== this._premultipliedAlpha) { + this._premultipliedAlpha = v; + this._instance.setPremultipliedAlpha(v); + this.markForUpdateRenderData(); + } + } + }, { + key: "timeScale", + get: function get() { + return this._timeScale; + }, + set: function set(value) { + if (value !== this._timeScale) { + this._timeScale = value; + } + } + }, { + key: "useTint", + get: function get() { + return this._useTint; + }, + set: function set(value) { + if (value !== this._useTint) { + this._useTint = value; + this._updateUseTint(); + } + } + }, { + key: "enableBatch", + get: function get() { + return this._enableBatch; + }, + set: function set(value) { + if (value !== this._enableBatch) { + this._enableBatch = value; + this._updateBatch(); + } + } + }, { + key: "sockets", + get: function get() { + return this._sockets; + }, + set: function set(val) { + this._sockets = val; + this._updateSocketBindings(); + this.syncAttachedNode(); + } + }, { + key: "debugSlots", + get: function get() { + return this._debugSlots; + }, + set: function set(v) { + if (v !== this._debugSlots) { + this._debugSlots = v; + this._updateDebugDraw(); + this.markForUpdateRenderData(); + } + } + }, { + key: "debugBones", + get: function get() { + return this._debugBones; + }, + set: function set(v) { + if (v !== this._debugBones) { + this._debugBones = v; + this._updateDebugDraw(); + this.markForUpdateRenderData(); + } + } + }, { + key: "debugMesh", + get: function get() { + return this._debugMesh; + }, + set: function set(value) { + if (value !== this._debugMesh) { + this._debugMesh = value; + this._updateDebugDraw(); + this.markForUpdateRenderData(); + } + } + }, { + key: "socketNodes", + get: function get() { + return this._socketNodes; + } + }, { + key: "animation", + get: function get() { + return this._animationName; + }, + set: function set(value) { + if (value) { + this.setAnimation(0, value, this.loop); + } else { + this.clearAnimation(); + } + } + }, { + key: "customMaterial", + get: function get() { + return this._customMaterial; + }, + set: function set(val) { + this._customMaterial = val; + this.updateMaterial(); + this.markForUpdateRenderData(); + } + }]); + return Skeleton; + }(UIRenderer), _class6.SpineSocket = SpineSocket, _class6.AnimationCacheMode = AnimationCacheMode, _class6), (_initializer3$f = applyDecoratedInitializer(_class5$1.prototype, "_skeletonData", [serializable$9], function () { + return null; + }), _initializer4$d = applyDecoratedInitializer(_class5$1.prototype, "defaultSkin", [serializable$9], function () { + return ''; + }), _initializer5$b = applyDecoratedInitializer(_class5$1.prototype, "defaultAnimation", [serializable$9], function () { + return ''; + }), _initializer6$8 = applyDecoratedInitializer(_class5$1.prototype, "_premultipliedAlpha", [serializable$9], function () { + return true; + }), _initializer7$8 = applyDecoratedInitializer(_class5$1.prototype, "_timeScale", [serializable$9], function () { + return 1; + }), _initializer8$8 = applyDecoratedInitializer(_class5$1.prototype, "_preCacheMode", [serializable$9], function () { + return AnimationCacheMode.UNSET; + }), _initializer9$7 = applyDecoratedInitializer(_class5$1.prototype, "_cacheMode", [serializable$9], function () { + return AnimationCacheMode.REALTIME; + }), _initializer10$7 = applyDecoratedInitializer(_class5$1.prototype, "_defaultCacheMode", [serializable$9], function () { + return AnimationCacheMode.REALTIME; + }), _initializer11$7 = applyDecoratedInitializer(_class5$1.prototype, "_sockets", [serializable$9], function () { + return []; + }), _initializer12$6 = applyDecoratedInitializer(_class5$1.prototype, "_useTint", [serializable$9], function () { + return false; + }), _initializer13$4 = applyDecoratedInitializer(_class5$1.prototype, "_debugMesh", [serializable$9], function () { + return false; + }), _initializer14$3 = applyDecoratedInitializer(_class5$1.prototype, "_debugBones", [serializable$9], function () { + return false; + }), _initializer15$2 = applyDecoratedInitializer(_class5$1.prototype, "_debugSlots", [serializable$9], function () { + return false; + }), _initializer16$2 = applyDecoratedInitializer(_class5$1.prototype, "_enableBatch", [serializable$9], function () { + return false; + }), _applyDecoratedDescriptor(_class5$1.prototype, "skeletonData", [_dec4$f], Object.getOwnPropertyDescriptor(_class5$1.prototype, "skeletonData"), _class5$1.prototype), _applyDecoratedDescriptor(_class5$1.prototype, "_defaultSkinIndex", [_dec5$f], Object.getOwnPropertyDescriptor(_class5$1.prototype, "_defaultSkinIndex"), _class5$1.prototype), _applyDecoratedDescriptor(_class5$1.prototype, "_animationIndex", [_dec6$9], Object.getOwnPropertyDescriptor(_class5$1.prototype, "_animationIndex"), _class5$1.prototype), _applyDecoratedDescriptor(_class5$1.prototype, "defaultCacheMode", [_dec7$7], Object.getOwnPropertyDescriptor(_class5$1.prototype, "defaultCacheMode"), _class5$1.prototype), _initializer17$1 = applyDecoratedInitializer(_class5$1.prototype, "loop", [serializable$9], function () { + return true; + }), _applyDecoratedDescriptor(_class5$1.prototype, "sockets", [_dec8$5], Object.getOwnPropertyDescriptor(_class5$1.prototype, "sockets"), _class5$1.prototype), _applyDecoratedDescriptor(_class5$1.prototype, "customMaterial", [override$1, _dec9$4], Object.getOwnPropertyDescriptor(_class5$1.prototype, "customMaterial"), _class5$1.prototype)), _class5$1)) || _class4); + legacyCC.internal.SpineSkeleton = Skeleton; + + var VertexEffectDelegate = function () { + function VertexEffectDelegate() { + this.name = 'sp.VertexEffectDelegate'; + this._vertexEffect = void 0; + this._interpolation = void 0; + this._effectType = void 0; + this._vertexEffect = null; + this._interpolation = null; + this._effectType = 'none'; + } + var _proto = VertexEffectDelegate.prototype; + _proto.clear = function clear() { + this._vertexEffect = null; + this._interpolation = null; + this._effectType = 'none'; + }; + _proto.initJitter = function initJitter(jitterX, jitterY) { + this._effectType = 'jitter'; + this._vertexEffect = new spine$1.JitterEffect(jitterX, jitterY); + return this._vertexEffect; + }; + _proto.initSwirlWithPow = function initSwirlWithPow(radius, power) { + this._effectType = 'swirl'; + this._interpolation = new spine$1.Pow(power); + this._vertexEffect = new spine$1.SwirlEffect(radius, this._interpolation); + return this._vertexEffect; + }; + _proto.initSwirlWithPowOut = function initSwirlWithPowOut(radius, power) { + this._effectType = 'swirl'; + this._interpolation = new spine$1.PowOut(power); + this._vertexEffect = new spine$1.SwirlEffect(radius, this._interpolation); + return this._vertexEffect; + }; + _proto.getJitterVertexEffect = function getJitterVertexEffect() { + return this._vertexEffect; + }; + _proto.getSwirlVertexEffect = function getSwirlVertexEffect() { + return this._vertexEffect; + }; + _proto.getVertexEffect = function getVertexEffect() { + return this._vertexEffect; + }; + _proto.getEffectType = function getEffectType() { + return this._effectType; + }; + return VertexEffectDelegate; + }(); + + var _slotColor = new Color$1(0, 0, 255, 255); + var _boneColor = new Color$1(255, 0, 0, 255); + var _originColor = new Color$1(0, 255, 0, 255); + var _meshColor = new Color$1(255, 255, 0, 255); + var _nodeR; + var _nodeG; + var _nodeB; + var _nodeA; + var _accessor$1 = null; + var _tintAccessor = null; + var _premultipliedAlpha = false; + var _useTint = false; + var _byteStrideOneColor = getAttributeStride(vfmtPosUvColor4B); + var _byteStrideTwoColor = getAttributeStride(vfmtPosUvTwoColor4B); + var DEBUG_TYPE_REGION = 0; + var DEBUG_TYPE_MESH = 1; + function _getSlotMaterial(blendMode, comp) { + var src; + var dst; + switch (blendMode) { + case 1: + src = _premultipliedAlpha ? BlendFactor.ONE : BlendFactor.SRC_ALPHA; + dst = BlendFactor.ONE; + break; + case 2: + src = BlendFactor.DST_COLOR; + dst = BlendFactor.ONE_MINUS_SRC_ALPHA; + break; + case 3: + src = BlendFactor.ONE; + dst = BlendFactor.ONE_MINUS_SRC_COLOR; + break; + case 0: + default: + src = _premultipliedAlpha ? BlendFactor.ONE : BlendFactor.SRC_ALPHA; + dst = BlendFactor.ONE_MINUS_SRC_ALPHA; + break; + } + return comp.getMaterialForBlendAndTint(src, dst, _useTint ? SpineMaterialType.TWO_COLORED : SpineMaterialType.COLORED_TEXTURED); + } + var simple$1 = { + fillBuffers: function fillBuffers(render, batcher) {}, + updateColor: function updateColor(render) {}, + vCount: 32767, + ensureAccessor: function ensureAccessor(useTint) { + var accessor = useTint ? _tintAccessor : _accessor$1; + if (!accessor) { + var device = director.root.device; + var batcher = director.root.batcher2D; + var attributes = useTint ? vfmtPosUvTwoColor4B : vfmtPosUvColor4B; + if (useTint) { + accessor = _tintAccessor = new StaticVBAccessor(device, attributes, this.vCount); + batcher.registerBufferAccessor(Number.parseInt('SPINETINT', 36), _tintAccessor); + } else { + accessor = _accessor$1 = new StaticVBAccessor(device, attributes, this.vCount); + batcher.registerBufferAccessor(Number.parseInt('SPINE', 36), _accessor$1); + } + } + return accessor; + }, + createData: function createData(comp) { + var rd = comp.renderData; + if (!rd) { + var useTint = comp.useTint || comp.isAnimationCached(); + var accessor = this.ensureAccessor(useTint); + rd = RenderData.add(useTint ? vfmtPosUvTwoColor4B : vfmtPosUvColor4B, accessor); + } + return rd; + }, + updateRenderData: function updateRenderData(comp, batcher) { + var skeleton = comp._skeleton; + if (skeleton) { + updateComponentRenderData(comp); + } + } + }; + function updateComponentRenderData(comp, batcher) { + comp.drawList.reset(); + if (comp.color.a === 0) return; + comp._updateColor(); + _premultipliedAlpha = comp.premultipliedAlpha; + _useTint = comp.useTint || comp.isAnimationCached(); + if (comp.isAnimationCached()) { + cacheTraverse(comp); + } else { + realTimeTraverse(comp); + } + var rd = comp.renderData; + var accessor = _useTint ? _tintAccessor : _accessor$1; + if (rd.vertexCount > 0 || rd.indexCount > 0) accessor.getMeshBuffer(rd.chunk.bufferId).setDirty(); + } + function realTimeTraverse(comp) { + var floatStride = (_useTint ? _byteStrideTwoColor : _byteStrideOneColor) / Float32Array.BYTES_PER_ELEMENT; + var model = comp.updateRenderData(); + if (!model) return; + var vc = model.vCount; + var ic = model.iCount; + var rd = comp.renderData; + if (rd.vertexCount !== vc || rd.indexCount !== ic) { + rd.resize(vc, ic); + rd.indices = new Uint16Array(ic); + } + if (vc < 1 || ic < 1) return; + var vbuf = rd.chunk.vb; + var vUint8Buf = new Uint8Array(vbuf.buffer, vbuf.byteOffset, Float32Array.BYTES_PER_ELEMENT * vbuf.length); + var vPtr = model.vPtr; + var vLength = vc * Float32Array.BYTES_PER_ELEMENT * floatStride; + var vData = spine$1.wasmUtil.wasm.HEAPU8.subarray(vPtr, vPtr + vLength); + vUint8Buf.set(vData); + var iPtr = model.iPtr; + var ibuf = rd.indices; + var iLength = Uint16Array.BYTES_PER_ELEMENT * ic; + var iData = spine$1.wasmUtil.wasm.HEAPU8.subarray(iPtr, iPtr + iLength); + var iUint8Buf = new Uint8Array(ibuf.buffer); + iUint8Buf.set(iData); + var chunkOffset = rd.chunk.vertexOffset; + for (var i = 0; i < ic; i++) { + ibuf[i] += chunkOffset; + } + var meshes = model.getMeshes(); + var count = meshes.size(); + var indexOffset = 0; + var indexCount = 0; + for (var _i = 0; _i < count; _i++) { + var mesh = meshes.get(_i); + var material = _getSlotMaterial(mesh.blendMode, comp); + var textureID = mesh.textureID; + indexCount = mesh.iCount; + comp.requestDrawData(material, textureID, indexOffset, indexCount); + indexOffset += indexCount; + } + if (comp.enableBatch) { + var worldMat = comp.node.worldMatrix; + var index = 0; + var tempVecPos = new Vec3(0, 0, 0); + for (var _i2 = 0; _i2 < vc; _i2++) { + index = _i2 * floatStride; + tempVecPos.x = vbuf[index]; + tempVecPos.y = vbuf[index + 1]; + tempVecPos.z = 0; + tempVecPos.transformMat4(worldMat); + vbuf[index] = tempVecPos.x; + vbuf[index + 1] = tempVecPos.y; + vbuf[index + 2] = tempVecPos.z; + } + } + var graphics = comp._debugRenderer; + var locSkeleton = comp._skeleton; + if (graphics && (comp.debugBones || comp.debugSlots || comp.debugMesh)) { + graphics.clear(); + graphics.lineWidth = 5; + var debugShapes = comp.getDebugShapes(); + var shapeCount = debugShapes.size(); + for (var _i3 = 0; _i3 < shapeCount; _i3++) { + var shape = debugShapes.get(_i3); + if (shape.type === DEBUG_TYPE_REGION && comp.debugSlots) { + graphics.strokeColor = _slotColor; + var vertexFloatOffset = shape.vOffset * floatStride; + var vertexFloatCount = shape.vCount * floatStride; + graphics.moveTo(vbuf[vertexFloatOffset], vbuf[vertexFloatOffset + 1]); + for (var ii = vertexFloatOffset + floatStride, nn = vertexFloatOffset + vertexFloatCount; ii < nn; ii += floatStride) { + graphics.lineTo(vbuf[ii], vbuf[ii + 1]); + } + graphics.close(); + graphics.stroke(); + } else if (shape.type === DEBUG_TYPE_MESH && comp.debugMesh) { + graphics.strokeColor = _meshColor; + var iCount = shape.iCount; + var iOffset = shape.iOffset; + for (var _ii = iOffset, _nn = iOffset + iCount; _ii < _nn; _ii += 3) { + var v1 = ibuf[_ii] * floatStride; + var v2 = ibuf[_ii + 1] * floatStride; + var v3 = ibuf[_ii + 2] * floatStride; + graphics.moveTo(vbuf[v1], vbuf[v1 + 1]); + graphics.lineTo(vbuf[v2], vbuf[v2 + 1]); + graphics.lineTo(vbuf[v3], vbuf[v3 + 1]); + graphics.close(); + graphics.stroke(); + } + } + } + if (comp.debugBones) { + graphics.strokeColor = _boneColor; + graphics.fillColor = _slotColor; + for (var _i4 = 0, n = locSkeleton.bones.length; _i4 < n; _i4++) { + var bone = locSkeleton.bones[_i4]; + var x = bone.data.length * bone.a + bone.worldX; + var y = bone.data.length * bone.c + bone.worldY; + graphics.moveTo(bone.worldX, bone.worldY); + graphics.lineTo(x, y); + graphics.stroke(); + graphics.circle(bone.worldX, bone.worldY, Math.PI * 1.5); + graphics.fill(); + if (_i4 === 0) { + graphics.fillColor = _originColor; + } + } + } + } + } + function cacheTraverse(comp) { + var model = comp.updateRenderData(); + if (!model) return; + var vc = model.vCount; + var ic = model.iCount; + var rd = comp.renderData; + if (rd.vertexCount !== vc || rd.indexCount !== ic) { + rd.resize(vc, ic); + rd.indices = new Uint16Array(ic); + } + if (vc < 1 || ic < 1) return; + var vbuf = rd.chunk.vb; + var vUint8Buf = new Uint8Array(vbuf.buffer, vbuf.byteOffset, Float32Array.BYTES_PER_ELEMENT * vbuf.length); + vUint8Buf.set(model.vData); + var nodeColor = comp.color; + if (nodeColor._val !== 0xffffffff || _premultipliedAlpha) { + _nodeR = nodeColor.r / 255; + _nodeG = nodeColor.g / 255; + _nodeB = nodeColor.b / 255; + _nodeA = nodeColor.a / 255; + for (var i = 0; i < vc; i++) { + var index = i * _byteStrideTwoColor + 5 * Float32Array.BYTES_PER_ELEMENT; + var R = vUint8Buf[index]; + var G = vUint8Buf[index + 1]; + var B = vUint8Buf[index + 2]; + var A = vUint8Buf[index + 3]; + var fA = A * _nodeA; + var multiplier = _premultipliedAlpha ? fA / 255 : 1; + vUint8Buf[index] = Math.floor(multiplier * R * _nodeR); + vUint8Buf[index + 1] = Math.floor(multiplier * G * _nodeG); + vUint8Buf[index + 2] = Math.floor(multiplier * B * _nodeB); + vUint8Buf[index + 3] = Math.floor(fA); + vUint8Buf[index + 4] = Math.floor(vUint8Buf[index + 4] * _nodeR); + vUint8Buf[index + 5] = Math.floor(vUint8Buf[index + 5] * _nodeG); + vUint8Buf[index + 6] = Math.floor(vUint8Buf[index + 6] * _nodeB); + vUint8Buf[index + 7] = _premultipliedAlpha ? 255 : 0; + } + } + var iUint16Buf = rd.indices; + iUint16Buf.set(model.iData); + var chunkOffset = rd.chunk.vertexOffset; + for (var _i5 = 0; _i5 < ic; _i5++) { + iUint16Buf[_i5] += chunkOffset; + } + var meshes = model.meshes; + var count = meshes.length; + var indexOffset = 0; + var indexCount = 0; + for (var _i6 = 0; _i6 < count; _i6++) { + var mesh = meshes[_i6]; + var material = _getSlotMaterial(mesh.blendMode, comp); + var textureID = mesh.textureID; + indexCount = mesh.iCount; + comp.requestDrawData(material, textureID, indexOffset, indexCount); + indexOffset += indexCount; + } + var floatStride = _byteStrideTwoColor / Float32Array.BYTES_PER_ELEMENT; + if (comp.enableBatch) { + var worldMat = comp.node.worldMatrix; + var _index = 0; + var tempVecPos = new Vec3(0, 0, 0); + for (var _i7 = 0; _i7 < vc; _i7++) { + _index = _i7 * floatStride; + tempVecPos.x = vbuf[_index]; + tempVecPos.y = vbuf[_index + 1]; + tempVecPos.z = 0; + tempVecPos.transformMat4(worldMat); + vbuf[_index] = tempVecPos.x; + vbuf[_index + 1] = tempVecPos.y; + vbuf[_index + 2] = tempVecPos.z; + } + } + } + legacyCC.internal.SpineAssembler = simple$1; + + var simpleSpineAssembler = { + getAssembler: function getAssembler() { + return simple$1; + } + }; + Skeleton.Assembler = simpleSpineAssembler; + + var ATTACHMENT_TYPE; + (function (ATTACHMENT_TYPE) { + ATTACHMENT_TYPE[ATTACHMENT_TYPE["REGION"] = 0] = "REGION"; + ATTACHMENT_TYPE[ATTACHMENT_TYPE["BOUNDING_BOX"] = 1] = "BOUNDING_BOX"; + ATTACHMENT_TYPE[ATTACHMENT_TYPE["MESH"] = 2] = "MESH"; + ATTACHMENT_TYPE[ATTACHMENT_TYPE["SKINNED_MESH"] = 3] = "SKINNED_MESH"; + })(ATTACHMENT_TYPE || (ATTACHMENT_TYPE = {})); + ccenum(ATTACHMENT_TYPE); + var AnimationEventType; + (function (AnimationEventType) { + AnimationEventType[AnimationEventType["START"] = 0] = "START"; + AnimationEventType[AnimationEventType["INTERRUPT"] = 1] = "INTERRUPT"; + AnimationEventType[AnimationEventType["END"] = 2] = "END"; + AnimationEventType[AnimationEventType["DISPOSE"] = 3] = "DISPOSE"; + AnimationEventType[AnimationEventType["COMPLETE"] = 4] = "COMPLETE"; + AnimationEventType[AnimationEventType["EVENT"] = 5] = "EVENT"; + })(AnimationEventType || (AnimationEventType = {})); + ccenum(AnimationEventType); + + var index = /*#__PURE__*/Object.freeze({ + __proto__: null, + spine: spine$1, + get ATTACHMENT_TYPE () { return ATTACHMENT_TYPE; }, + get AnimationEventType () { return AnimationEventType; }, + timeScale: timeScale, + get AnimationCacheMode () { return AnimationCacheMode; }, + get DefaultSkinsEnum () { return DefaultSkinsEnum; }, + get DefaultAnimsEnum () { return DefaultAnimsEnum; }, + get SpineMaterialType () { return SpineMaterialType; }, + SpineSocket: SpineSocket, + Skeleton: Skeleton, + SkeletonData: SkeletonData, + VertexEffectDelegate: VertexEffectDelegate, + simpleSpineAssembler: simpleSpineAssembler + }); + exports('f4', index); + + var Orientation; + (function (Orientation) { + Orientation[Orientation["ORTHO"] = 0] = "ORTHO"; + Orientation[Orientation["HEX"] = 1] = "HEX"; + Orientation[Orientation["ISO"] = 2] = "ISO"; + })(Orientation || (Orientation = {})); + ccenum(Orientation); + var Property; + (function (Property) { + Property[Property["NONE"] = 0] = "NONE"; + Property[Property["MAP"] = 1] = "MAP"; + Property[Property["LAYER"] = 2] = "LAYER"; + Property[Property["OBJECTGROUP"] = 3] = "OBJECTGROUP"; + Property[Property["OBJECT"] = 4] = "OBJECT"; + Property[Property["TILE"] = 5] = "TILE"; + })(Property || (Property = {})); + ccenum(Property); + var TileFlag; + (function (TileFlag) { + TileFlag[TileFlag["HORIZONTAL"] = 2147483648] = "HORIZONTAL"; + TileFlag[TileFlag["VERTICAL"] = 1073741824] = "VERTICAL"; + TileFlag[TileFlag["DIAGONAL"] = 536870912] = "DIAGONAL"; + TileFlag[TileFlag["FLIPPED_ALL"] = 4026531840] = "FLIPPED_ALL"; + TileFlag[TileFlag["FLIPPED_MASK"] = 268435455] = "FLIPPED_MASK"; + })(TileFlag || (TileFlag = {})); + ccenum(TileFlag); + var StaggerAxis; + (function (StaggerAxis) { + StaggerAxis[StaggerAxis["STAGGERAXIS_X"] = 0] = "STAGGERAXIS_X"; + StaggerAxis[StaggerAxis["STAGGERAXIS_Y"] = 1] = "STAGGERAXIS_Y"; + })(StaggerAxis || (StaggerAxis = {})); + ccenum(StaggerAxis); + var StaggerIndex; + (function (StaggerIndex) { + StaggerIndex[StaggerIndex["STAGGERINDEX_ODD"] = 0] = "STAGGERINDEX_ODD"; + StaggerIndex[StaggerIndex["STAGGERINDEX_EVEN"] = 1] = "STAGGERINDEX_EVEN"; + })(StaggerIndex || (StaggerIndex = {})); + ccenum(StaggerIndex); + var RenderOrder; + (function (RenderOrder) { + RenderOrder[RenderOrder["RightDown"] = 0] = "RightDown"; + RenderOrder[RenderOrder["RightUp"] = 1] = "RightUp"; + RenderOrder[RenderOrder["LeftDown"] = 2] = "LeftDown"; + RenderOrder[RenderOrder["LeftUp"] = 3] = "LeftUp"; + })(RenderOrder || (RenderOrder = {})); + ccenum(RenderOrder); + var TMXObjectType; + (function (TMXObjectType) { + TMXObjectType[TMXObjectType["RECT"] = 0] = "RECT"; + TMXObjectType[TMXObjectType["ELLIPSE"] = 1] = "ELLIPSE"; + TMXObjectType[TMXObjectType["POLYGON"] = 2] = "POLYGON"; + TMXObjectType[TMXObjectType["POLYLINE"] = 3] = "POLYLINE"; + TMXObjectType[TMXObjectType["IMAGE"] = 4] = "IMAGE"; + TMXObjectType[TMXObjectType["TEXT"] = 5] = "TEXT"; + })(TMXObjectType || (TMXObjectType = {})); + ccenum(TMXObjectType); + var TMXTilesetInfo = function () { + function TMXTilesetInfo() { + this.name = ''; + this.firstGid = 0; + this.spacing = 0; + this.margin = 0; + this.sourceImage = void 0; + this.imageName = null; + this.imageOffset = null; + this.imageSize = new Size$1(0, 0); + this.tileOffset = new Vec2(0, 0); + this._tileSize = new Size$1(0, 0); + this.collection = false; + } + var _proto = TMXTilesetInfo.prototype; + _proto.rectForGID = function rectForGID(gid_, result) { + var rect = result || new Rect$1(0, 0, 0, 0); + rect.width = this._tileSize.width; + rect.height = this._tileSize.height; + var gid = gid_; + gid &= TileFlag.FLIPPED_MASK; + gid -= this.firstGid; + if (this.imageOffset) { + rect.x = this.imageOffset.x; + rect.y = this.imageOffset.y; + } else { + var max_x = Math.floor((this.imageSize.width - this.margin * 2 + this.spacing) / (this._tileSize.width + this.spacing)); + rect.x = Math.round(gid % max_x * (this._tileSize.width + this.spacing) + this.margin); + rect.y = Math.round(Math.floor(gid / max_x) * (this._tileSize.height + this.spacing) + this.margin); + } + return rect; + }; + return TMXTilesetInfo; + }(); + var TMXObjectGroupInfo = function () { + function TMXObjectGroupInfo() { + this.properties = {}; + this.name = ''; + this.objects = []; + this.visible = true; + this.opacity = 0; + this.color = new Color$1(255, 255, 255, 255); + this.offset = new Vec2(0, 0); + this.draworder = 'topdown'; + this.tintColor = null; + } + var _proto2 = TMXObjectGroupInfo.prototype; + _proto2.getProperties = function getProperties() { + return this.properties; + }; + _proto2.setProperties = function setProperties(value) { + this.properties = value; + }; + return TMXObjectGroupInfo; + }(); + var TMXLayerInfo = function () { + function TMXLayerInfo() { + this.properties = {}; + this.name = ''; + this.layerSize = null; + this.tiles = []; + this.visible = true; + this.opacity = 0; + this.ownTiles = true; + this.minGID = 100000; + this.maxGID = 0; + this.offset = new Vec2(0, 0); + this.tintColor = null; + } + var _proto3 = TMXLayerInfo.prototype; + _proto3.getProperties = function getProperties() { + return this.properties; + }; + _proto3.setProperties = function setProperties(value) { + this.properties = value; + }; + return TMXLayerInfo; + }(); + TMXLayerInfo.ATTRIB_NONE = 1 << 0; + TMXLayerInfo.ATTRIB_BASE64 = 1 << 1; + TMXLayerInfo.ATTRIB_GZIP = 1 << 2; + TMXLayerInfo.ATTRIB_ZLIB = 1 << 3; + var TMXImageLayerInfo = function TMXImageLayerInfo() { + this.name = ''; + this.visible = true; + this.width = 0; + this.height = 0; + this.offset = new Vec2(0, 0); + this.opacity = 0; + this.trans = new Color$1(255, 255, 255, 255); + this.sourceImage = void 0; + this.tintColor = null; + }; + + function uint8ArrayToUint32Array(uint8Arr) { + if (uint8Arr.length % 4 !== 0) return null; + var arrLen = uint8Arr.length / 4; + var retArr = window.Uint32Array ? new Uint32Array(arrLen) : []; + for (var i = 0; i < arrLen; i++) { + var offset = i * 4; + retArr[i] = uint8Arr[offset] + uint8Arr[offset + 1] * (1 << 8) + uint8Arr[offset + 2] * (1 << 16) + uint8Arr[offset + 3] * (1 << 24); + } + return retArr; + } + function strToHAlign(value) { + var hAlign = Label.HorizontalAlign; + switch (value) { + case 'center': + return hAlign.CENTER; + case 'right': + return hAlign.RIGHT; + default: + return hAlign.LEFT; + } + } + function strToVAlign(value) { + var vAlign = Label.VerticalAlign; + switch (value) { + case 'center': + return vAlign.CENTER; + case 'bottom': + return vAlign.BOTTOM; + default: + return vAlign.TOP; + } + } + function strToColor(value) { + if (!value) { + return new Color$1(0, 0, 0, 255); + } + value = value.indexOf('#') !== -1 ? value.substring(1) : value; + if (value.length === 8) { + var a = parseInt(value.substr(0, 2), 16) || 255; + var r = parseInt(value.substr(2, 2), 16) || 0; + var g = parseInt(value.substr(4, 2), 16) || 0; + var b = parseInt(value.substr(6, 2), 16) || 0; + return new Color$1(r, g, b, a); + } else { + var _r = parseInt(value.substr(0, 2), 16) || 0; + var _g = parseInt(value.substr(2, 2), 16) || 0; + var _b = parseInt(value.substr(4, 2), 16) || 0; + return new Color$1(_r, _g, _b, 255); + } + } + function getPropertyList(node, map) { + var res = []; + var properties = node.getElementsByTagName('properties'); + for (var i = 0; i < properties.length; ++i) { + var property = properties[i].getElementsByTagName('property'); + for (var j = 0; j < property.length; ++j) { + res.push(property[j]); + } + } + map = map || {}; + for (var _i = 0; _i < res.length; _i++) { + var element = res[_i]; + var name = element.getAttribute('name'); + var type = element.getAttribute('type') || 'string'; + var value = element.getAttribute('value'); + if (type === 'int') { + value = parseInt(value); + } else if (type === 'float') { + value = parseFloat(value); + } else if (type === 'bool') { + value = value === 'true'; + } else if (type === 'color') { + value = strToColor(value); + } + map[name] = value; + } + return map; + } + var TMXMapInfo = function () { + function TMXMapInfo(tmxFile, tsxContentMap, spfTexturesMap, textureSizes, imageLayerTextures) { + this.properties = {}; + this.orientation = null; + this.parentElement = null; + this.parentGID = 0; + this.layerAttrs = 0; + this.storingCharacters = false; + this.currentString = null; + this.renderOrder = RenderOrder.RightDown; + this._supportVersion = [1, 4, 0]; + this._objectGroups = []; + this._allChildren = []; + this._mapSize = new Size$1(0, 0); + this._tileSize = new Size$1(0, 0); + this._layers = []; + this._tilesets = []; + this._imageLayers = []; + this._tileProperties = new Map(); + this._tileAnimations = {}; + this._tsxContentMap = null; + this._spriteFrameMap = null; + this._spfSizeMap = {}; + this._staggerAxis = null; + this._staggerIndex = null; + this._hexSideLength = 0; + this._imageLayerSPF = null; + this.initWithXML(tmxFile, tsxContentMap, spfTexturesMap, textureSizes, imageLayerTextures); + } + var _proto = TMXMapInfo.prototype; + _proto.getOrientation = function getOrientation() { + return this.orientation; + }; + _proto.setOrientation = function setOrientation(value) { + this.orientation = value; + }; + _proto.getStaggerAxis = function getStaggerAxis() { + return this._staggerAxis; + }; + _proto.setStaggerAxis = function setStaggerAxis(value) { + this._staggerAxis = value; + }; + _proto.getStaggerIndex = function getStaggerIndex() { + return this._staggerIndex; + }; + _proto.setStaggerIndex = function setStaggerIndex(value) { + this._staggerIndex = value; + }; + _proto.getHexSideLength = function getHexSideLength() { + return this._hexSideLength; + }; + _proto.setHexSideLength = function setHexSideLength(value) { + this._hexSideLength = value; + }; + _proto.getMapSize = function getMapSize() { + return new Size$1(this._mapSize.width, this._mapSize.height); + }; + _proto.setMapSize = function setMapSize(value) { + this._mapSize.width = value.width; + this._mapSize.height = value.height; + }; + _proto.getTileSize = function getTileSize() { + return new Size$1(this._tileSize.width, this._tileSize.height); + }; + _proto.setTileSize = function setTileSize(value) { + this._tileSize.width = value.width; + this._tileSize.height = value.height; + }; + _proto.getLayers = function getLayers() { + return this._layers; + }; + _proto.setLayers = function setLayers(value) { + this._allChildren.push(value); + this._layers.push(value); + }; + _proto.getImageLayers = function getImageLayers() { + return this._imageLayers; + }; + _proto.setImageLayers = function setImageLayers(value) { + this._allChildren.push(value); + this._imageLayers.push(value); + }; + _proto.getTilesets = function getTilesets() { + return this._tilesets; + }; + _proto.setTilesets = function setTilesets(value) { + this._tilesets.push(value); + }; + _proto.getObjectGroups = function getObjectGroups() { + return this._objectGroups; + }; + _proto.setObjectGroups = function setObjectGroups(value) { + this._allChildren.push(value); + this._objectGroups.push(value); + }; + _proto.getAllChildren = function getAllChildren() { + return this._allChildren; + }; + _proto.getParentElement = function getParentElement() { + return this.parentElement; + }; + _proto.setParentElement = function setParentElement(value) { + this.parentElement = value; + }; + _proto.getParentGID = function getParentGID() { + return this.parentGID; + }; + _proto.setParentGID = function setParentGID(value) { + this.parentGID = value; + }; + _proto.getLayerAttribs = function getLayerAttribs() { + return this.layerAttrs; + }; + _proto.setLayerAttribs = function setLayerAttribs(value) { + this.layerAttrs = value; + }; + _proto.getStoringCharacters = function getStoringCharacters() { + return this.storingCharacters; + }; + _proto.setStoringCharacters = function setStoringCharacters(value) { + this.storingCharacters = value; + }; + _proto.getProperties = function getProperties() { + return this.properties; + }; + _proto.setProperties = function setProperties(value) { + this.properties = value; + }; + _proto.initWithXML = function initWithXML(tmxString, tsxMap, spfTextureMap, textureSizes, imageLayerTextures) { + this._tilesets.length = 0; + this._layers.length = 0; + this._imageLayers.length = 0; + this._tsxContentMap = tsxMap; + this._spriteFrameMap = spfTextureMap; + this._imageLayerSPF = imageLayerTextures; + this._spfSizeMap = textureSizes; + this._objectGroups.length = 0; + this._allChildren.length = 0; + this.properties = {}; + this._tileProperties = new Map(); + this._tileAnimations = new Map(); + this.currentString = ''; + this.storingCharacters = false; + this.layerAttrs = TMXLayerInfo.ATTRIB_NONE; + this.parentElement = null; + return this.parseXMLString(tmxString); + }; + _proto.parseXMLString = function parseXMLString(xmlStr, tilesetFirstGid) { + var parser = new SAXParser(); + var mapXML = parser.parse(xmlStr); + var i; + var map = mapXML.documentElement; + var orientationStr = map.getAttribute('orientation'); + var staggerAxisStr = map.getAttribute('staggeraxis'); + var staggerIndexStr = map.getAttribute('staggerindex'); + var hexSideLengthStr = map.getAttribute('hexsidelength'); + var renderorderStr = map.getAttribute('renderorder'); + var version = map.getAttribute('version') || '1.0.0'; + if (map.nodeName === 'map') { + var versionArr = version.split('.'); + var supportVersion = this._supportVersion; + for (i = 0; i < supportVersion.length; i++) { + var v = parseInt(versionArr[i]) || 0; + var sv = supportVersion[i]; + if (sv < v) { + logID(7216, version); + break; + } + } + if (orientationStr === 'orthogonal') this.orientation = Orientation.ORTHO;else if (orientationStr === 'isometric') this.orientation = Orientation.ISO;else if (orientationStr === 'hexagonal') this.orientation = Orientation.HEX;else if (orientationStr !== null) logID(7217, orientationStr); + if (renderorderStr === 'right-up') { + this.renderOrder = RenderOrder.RightUp; + } else if (renderorderStr === 'left-up') { + this.renderOrder = RenderOrder.LeftUp; + } else if (renderorderStr === 'left-down') { + this.renderOrder = RenderOrder.LeftDown; + } else { + this.renderOrder = RenderOrder.RightDown; + } + if (staggerAxisStr === 'x') { + this.setStaggerAxis(StaggerAxis.STAGGERAXIS_X); + } else if (staggerAxisStr === 'y') { + this.setStaggerAxis(StaggerAxis.STAGGERAXIS_Y); + } + if (staggerIndexStr === 'odd') { + this.setStaggerIndex(StaggerIndex.STAGGERINDEX_ODD); + } else if (staggerIndexStr === 'even') { + this.setStaggerIndex(StaggerIndex.STAGGERINDEX_EVEN); + } + if (hexSideLengthStr) { + this.setHexSideLength(parseFloat(hexSideLengthStr)); + } + var mapSize = new Size$1(0, 0); + mapSize.width = parseFloat(map.getAttribute('width')); + mapSize.height = parseFloat(map.getAttribute('height')); + this.setMapSize(mapSize); + mapSize = new Size$1(0, 0); + mapSize.width = parseFloat(map.getAttribute('tilewidth')); + mapSize.height = parseFloat(map.getAttribute('tileheight')); + this.setTileSize(mapSize); + this.properties = getPropertyList(map); + } + var tilesets = map.getElementsByTagName('tileset'); + if (map.nodeName !== 'map') { + tilesets = []; + tilesets.push(map); + } + for (i = 0; i < tilesets.length; i++) { + var curTileset = tilesets[i]; + var tsxName = curTileset.getAttribute('source'); + if (tsxName) { + var currentFirstGID = parseInt(curTileset.getAttribute('firstgid')); + var tsxXmlString = this._tsxContentMap[tsxName]; + if (tsxXmlString) { + this.parseXMLString(tsxXmlString, currentFirstGID); + } + } else { + var images = curTileset.getElementsByTagName('image'); + var collection = images.length > 1; + var firstImage = images[0]; + var firstImageName = firstImage.getAttribute('source'); + firstImageName = firstImageName.replace(/\\/g, '/'); + var tiles = curTileset.getElementsByTagName('tile'); + var tileCount = tiles && tiles.length || 1; + var tile = null; + var tilesetName = curTileset.getAttribute('name') || ''; + var tilesetSpacing = parseInt(curTileset.getAttribute('spacing')) || 0; + var tilesetMargin = parseInt(curTileset.getAttribute('margin')) || 0; + var fgid = tilesetFirstGid || parseInt(curTileset.getAttribute('firstgid')) || 0; + var tilesetSize = new Size$1(0, 0); + tilesetSize.width = parseFloat(curTileset.getAttribute('tilewidth')); + tilesetSize.height = parseFloat(curTileset.getAttribute('tileheight')); + var curTileOffset = curTileset.getElementsByTagName('tileoffset')[0]; + var tileOffsetX = 0; + var tileOffsetY = 0; + if (curTileOffset) { + tileOffsetX = parseFloat(curTileOffset.getAttribute('x')) || 0; + tileOffsetY = parseFloat(curTileOffset.getAttribute('y')) || 0; + } + var tileset = null; + for (var tileIdx = 0; tileIdx < tileCount; tileIdx++) { + var curImage = images[tileIdx] ? images[tileIdx] : firstImage; + if (!curImage) continue; + var curImageName = curImage.getAttribute('source'); + curImageName = curImageName.replace(/\\/g, '/'); + if (!tileset || collection) { + tileset = new TMXTilesetInfo(); + tileset.name = tilesetName; + tileset.firstGid = fgid & TileFlag.FLIPPED_MASK; + tileset.tileOffset.x = tileOffsetX; + tileset.tileOffset.y = tileOffsetY; + tileset.collection = collection; + if (!collection) { + tileset.imageName = curImageName; + tileset.imageSize.width = parseFloat(curImage.getAttribute('width')) || 0; + tileset.imageSize.height = parseFloat(curImage.getAttribute('height')) || 0; + tileset.sourceImage = this._spriteFrameMap[curImageName]; + if (!tileset.sourceImage) { + var nameWithPostfix = TMXMapInfo.getNameWithPostfix(curImageName); + tileset.imageName = nameWithPostfix; + tileset.sourceImage = this._spriteFrameMap[nameWithPostfix]; + if (!tileset.sourceImage) { + var shortName = TMXMapInfo.getShortName(curImageName); + tileset.imageName = shortName; + tileset.sourceImage = this._spriteFrameMap[shortName]; + if (!tileset.sourceImage) { + console.error("[error]: " + shortName + " not find in [" + Object.keys(this._spriteFrameMap).join(', ') + "]"); + errorID(7221, curImageName); + console.warn("Please try asset type of " + curImageName + " to 'sprite-frame'"); + } + } + } + } + tileset.spacing = tilesetSpacing; + tileset.margin = tilesetMargin; + tileset._tileSize.width = tilesetSize.width; + tileset._tileSize.height = tilesetSize.height; + this.setTilesets(tileset); + } + tile = tiles && tiles[tileIdx]; + if (!tile) { + continue; + } + this.parentGID = fgid + (parseInt(tile.getAttribute('id')) || 0); + var tileImages = tile.getElementsByTagName('image'); + if (tile.hasAttribute('x') && tile.hasAttribute('y')) { + tileset.imageOffset = new Vec2(parseFloat(tile.getAttribute('x')) || 0, parseFloat(tile.getAttribute('y')) || 0); + } + var hastilesize = tile.hasAttribute('width') && tile.hasAttribute('height'); + if (hastilesize) { + tileset._tileSize.width = parseFloat(tile.getAttribute('width')) || 0; + tileset._tileSize.height = parseFloat(tile.getAttribute('height')) || 0; + } + if (tileImages && tileImages.length > 0) { + var image = tileImages[0]; + var imageName = image.getAttribute('source'); + imageName = imageName.replace(/\\/g, '/'); + tileset.imageName = imageName; + tileset.imageSize.width = parseFloat(image.getAttribute('width')) || 0; + tileset.imageSize.height = parseFloat(image.getAttribute('height')) || 0; + if (!hastilesize) { + tileset._tileSize.width = tileset.imageSize.width; + tileset._tileSize.height = tileset.imageSize.height; + } + tileset.sourceImage = this._spriteFrameMap[imageName]; + if (!tileset.sourceImage) { + var _nameWithPostfix = TMXMapInfo.getNameWithPostfix(imageName); + tileset.imageName = _nameWithPostfix; + tileset.sourceImage = this._spriteFrameMap[_nameWithPostfix]; + if (!tileset.sourceImage) { + var _shortName = TMXMapInfo.getShortName(imageName); + tileset.imageName = _shortName; + tileset.sourceImage = this._spriteFrameMap[_shortName]; + if (!tileset.sourceImage) { + errorID(7221, imageName); + console.warn("Please try asset type of " + imageName + " to 'sprite-frame'"); + } + } + } + tileset.firstGid = this.parentGID & TileFlag.FLIPPED_MASK; + } + var pid = (TileFlag.FLIPPED_MASK & this.parentGID) >>> 0; + this._tileProperties.set(pid, getPropertyList(tile)); + var animations = tile.getElementsByTagName('animation'); + if (animations && animations.length > 0) { + var animation = animations[0]; + var framesData = animation.getElementsByTagName('frame'); + var animationProp = { + frames: [], + dt: 0, + frameIdx: 0 + }; + this._tileAnimations.set(pid, animationProp); + var frames = animationProp.frames; + for (var frameIdx = 0; frameIdx < framesData.length; frameIdx++) { + var frame = framesData[frameIdx]; + var tileid = fgid + (parseInt(frame.getAttribute('tileid')) || 0); + var duration = parseFloat(frame.getAttribute('duration')) || 0; + frames.push({ + tileid: tileid, + duration: duration / 1000, + grid: null + }); + } + } + } + } + } + var childNodes = map.childNodes; + for (i = 0; i < childNodes.length; i++) { + var childNode = childNodes[i]; + if (this._shouldIgnoreNode(childNode)) { + continue; + } + if (childNode.nodeName === 'imagelayer') { + var imageLayer = this._parseImageLayer(childNode); + if (imageLayer) { + this.setImageLayers(imageLayer); + } + } + if (childNode.nodeName === 'layer') { + var layer = this._parseLayer(childNode); + this.setLayers(layer); + } + if (childNode.nodeName === 'objectgroup') { + var objectGroup = this._parseObjectGroup(childNode); + this.setObjectGroups(objectGroup); + } + } + return map; + }; + _proto._shouldIgnoreNode = function _shouldIgnoreNode(node) { + return node.nodeType === 3 || node.nodeType === 8 || node.nodeType === 4; + }; + _proto._parseImageLayer = function _parseImageLayer(selLayer) { + var datas = selLayer.getElementsByTagName('image'); + if (!datas || datas.length === 0) return null; + var imageLayer = new TMXImageLayerInfo(); + imageLayer.name = selLayer.getAttribute('name'); + imageLayer.offset.x = parseFloat(selLayer.getAttribute('offsetx')) || 0; + imageLayer.offset.y = parseFloat(selLayer.getAttribute('offsety')) || 0; + var visible = selLayer.getAttribute('visible'); + imageLayer.visible = !(visible === '0'); + var opacity = selLayer.getAttribute('opacity'); + imageLayer.opacity = opacity ? Math.round(255 * parseFloat(opacity)) : 255; + var tintColor = selLayer.getAttribute('tintcolor'); + imageLayer.tintColor = tintColor ? strToColor(tintColor) : null; + var data = datas[0]; + var source = data.getAttribute('source'); + imageLayer.sourceImage = this._imageLayerSPF[source]; + imageLayer.width = parseInt(data.getAttribute('width')) || 0; + imageLayer.height = parseInt(data.getAttribute('height')) || 0; + imageLayer.trans = strToColor(data.getAttribute('trans')); + if (!imageLayer.sourceImage) { + errorID(7221, source); + console.warn("Please try asset type of " + source + " to 'sprite-frame'"); + return null; + } + return imageLayer; + }; + _proto._parseLayer = function _parseLayer(selLayer) { + var data = selLayer.getElementsByTagName('data')[0]; + var layer = new TMXLayerInfo(); + layer.name = selLayer.getAttribute('name'); + var layerSize = new Size$1(0, 0); + layerSize.width = parseFloat(selLayer.getAttribute('width')); + layerSize.height = parseFloat(selLayer.getAttribute('height')); + layer.layerSize = layerSize; + var visible = selLayer.getAttribute('visible'); + layer.visible = !(visible === '0'); + var opacity = selLayer.getAttribute('opacity'); + if (opacity) layer.opacity = Math.round(255 * parseFloat(opacity));else layer.opacity = 255; + layer.offset = new Vec2(parseFloat(selLayer.getAttribute('offsetx')) || 0, parseFloat(selLayer.getAttribute('offsety')) || 0); + var tintColor = selLayer.getAttribute('tintcolor'); + layer.tintColor = tintColor ? strToColor(tintColor) : null; + var nodeValue = ''; + for (var j = 0; j < data.childNodes.length; j++) { + nodeValue += data.childNodes[j].nodeValue; + } + nodeValue = nodeValue.trim(); + var compression = data.getAttribute('compression'); + var encoding = data.getAttribute('encoding'); + if (compression && compression !== 'gzip' && compression !== 'zlib') { + logID(7218); + return null; + } + var tiles; + switch (compression) { + case 'gzip': + tiles = codec.unzipBase64AsArray(nodeValue, 4); + break; + case 'zlib': + { + var inflator = new _p.Inflate(codec.Base64.decodeAsArray(nodeValue, 1)); + tiles = uint8ArrayToUint32Array(inflator.decompress()); + break; + } + case null: + case '': + if (encoding === 'base64') tiles = codec.Base64.decodeAsArray(nodeValue, 4);else if (encoding === 'csv') { + tiles = []; + var csvTiles = nodeValue.split(','); + for (var csvIdx = 0; csvIdx < csvTiles.length; csvIdx++) tiles.push(parseInt(csvTiles[csvIdx])); + } else { + var selDataTiles = data.getElementsByTagName('tile'); + tiles = []; + for (var xmlIdx = 0; xmlIdx < selDataTiles.length; xmlIdx++) tiles.push(parseInt(selDataTiles[xmlIdx].getAttribute('gid'))); + } + break; + default: + if (this.layerAttrs === TMXLayerInfo.ATTRIB_NONE) logID(7219); + break; + } + if (tiles) { + layer.tiles = new Uint32Array(tiles); + } + layer.properties = getPropertyList(selLayer); + return layer; + }; + _proto._parseObjectGroup = function _parseObjectGroup(selGroup) { + var objectGroup = new TMXObjectGroupInfo(); + objectGroup.name = selGroup.getAttribute('name') || ''; + objectGroup.offset = new Vec2(parseFloat(selGroup.getAttribute('offsetx')), parseFloat(selGroup.getAttribute('offsety'))); + var opacity = selGroup.getAttribute('opacity'); + if (opacity) objectGroup.opacity = Math.round(255 * parseFloat(opacity));else objectGroup.opacity = 255; + var tintColor = selGroup.getAttribute('tintcolor'); + objectGroup.tintColor = tintColor ? strToColor(tintColor) : null; + var visible = selGroup.getAttribute('visible'); + if (visible && parseInt(visible) === 0) objectGroup.visible = false; + var color = selGroup.getAttribute('color'); + if (color) objectGroup.color.fromHEX(color); + var draworder = selGroup.getAttribute('draworder'); + if (draworder) objectGroup.draworder = draworder; + objectGroup.setProperties(getPropertyList(selGroup)); + var objects = selGroup.getElementsByTagName('object'); + if (objects) { + for (var j = 0; j < objects.length; j++) { + var selObj = objects[j]; + var objectProp = {}; + objectProp.id = selObj.getAttribute('id') || j; + objectProp.name = selObj.getAttribute('name') || ''; + objectProp.width = parseFloat(selObj.getAttribute('width')) || 0; + objectProp.height = parseFloat(selObj.getAttribute('height')) || 0; + objectProp.x = parseFloat(selObj.getAttribute('x')) || 0; + objectProp.y = parseFloat(selObj.getAttribute('y')) || 0; + objectProp.rotation = parseFloat(selObj.getAttribute('rotation')) || 0; + getPropertyList(selObj, objectProp); + var visibleAttr = selObj.getAttribute('visible'); + objectProp.visible = !(visibleAttr && parseInt(visibleAttr) === 0); + var texts = selObj.getElementsByTagName('text'); + if (texts && texts.length > 0) { + var text = texts[0]; + objectProp.type = TMXObjectType.TEXT; + objectProp.wrap = text.getAttribute('wrap') === '1'; + objectProp.color = strToColor(text.getAttribute('color')); + objectProp.halign = strToHAlign(text.getAttribute('halign')); + objectProp.valign = strToVAlign(text.getAttribute('valign')); + objectProp.pixelsize = parseInt(text.getAttribute('pixelsize')) || 16; + objectProp.text = text.childNodes[0].nodeValue; + } + var gid = selObj.getAttribute('gid'); + if (gid) { + objectProp.gid = parseInt(gid); + objectProp.type = TMXObjectType.IMAGE; + } + var ellipse = selObj.getElementsByTagName('ellipse'); + if (ellipse && ellipse.length > 0) { + objectProp.type = TMXObjectType.ELLIPSE; + } + var polygonProps = selObj.getElementsByTagName('polygon'); + if (polygonProps && polygonProps.length > 0) { + objectProp.type = TMXObjectType.POLYGON; + var selPgPointStr = polygonProps[0].getAttribute('points'); + if (selPgPointStr) objectProp.points = this._parsePointsString(selPgPointStr); + } + var polylineProps = selObj.getElementsByTagName('polyline'); + if (polylineProps && polylineProps.length > 0) { + objectProp.type = TMXObjectType.POLYLINE; + var selPlPointStr = polylineProps[0].getAttribute('points'); + if (selPlPointStr) objectProp.polylinePoints = this._parsePointsString(selPlPointStr); + } + if (!objectProp.type) { + objectProp.type = TMXObjectType.RECT; + } + objectGroup.objects.push(objectProp); + } + if (draworder !== 'index') { + objectGroup.objects.sort(function (a, b) { + return a.y - b.y; + }); + } + } + return objectGroup; + }; + _proto._parsePointsString = function _parsePointsString(pointsString) { + if (!pointsString) return null; + var points = []; + var pointsStr = pointsString.split(' '); + for (var i = 0; i < pointsStr.length; i++) { + var selPointStr = pointsStr[i].split(','); + points.push({ + x: parseFloat(selPointStr[0]), + y: parseFloat(selPointStr[1]) + }); + } + return points; + }; + _proto.setTileAnimations = function setTileAnimations(animations) { + this._tileAnimations = animations; + }; + _proto.getTileAnimations = function getTileAnimations() { + return this._tileAnimations; + }; + _proto.getTileProperties = function getTileProperties() { + return this._tileProperties; + }; + _proto.setTileProperties = function setTileProperties(tileProperties) { + this._tileProperties = tileProperties; + }; + _proto.getCurrentString = function getCurrentString() { + return this.currentString; + }; + _proto.setCurrentString = function setCurrentString(currentString) { + this.currentString = currentString; + }; + TMXMapInfo.getNameWithPostfix = function getNameWithPostfix(name) { + name = name.replace(/\\/g, '/'); + var slashIndex = name.lastIndexOf('/') + 1; + var strLen = name.length; + return name.substring(slashIndex, strLen); + }; + TMXMapInfo.getShortName = function getShortName(name) { + name = name.replace(/\\/g, '/'); + var slashIndex = name.lastIndexOf('/') + 1; + var dotIndex = name.lastIndexOf('.'); + dotIndex = dotIndex < 0 ? name.length : dotIndex; + return name.substring(slashIndex, dotIndex); + }; + _createClass(TMXMapInfo, [{ + key: "mapSize", + get: function get() { + return this._mapSize; + } + }, { + key: "tileSize", + get: function get() { + return this._tileSize; + } + }, { + key: "mapWidth", + get: function get() { + return this._mapSize.width; + }, + set: function set(width) { + this._mapSize.width = width; + } + }, { + key: "mapHeight", + get: function get() { + return this._mapSize.height; + }, + set: function set(height) { + this._mapSize.height = height; + } + }, { + key: "tileWidth", + get: function get() { + return this._tileSize.width; + }, + set: function set(width) { + this._tileSize.width = width; + } + }, { + key: "tileHeight", + get: function get() { + return this._tileSize.height; + }, + set: function set(height) { + this._tileSize.height = height; + } + }]); + return TMXMapInfo; + }(); + + var _dec$p, _dec2$m, _dec3$k, _dec4$e, _dec5$e, _dec6$8, _dec7$6, _class$p, _class2$l, _initializer$j, _initializer2$i; + var TiledTile = exports('fa', (_dec$p = ccclass$t('cc.TiledTile'), _dec2$m = requireComponent(UITransform), _dec3$k = type$8(CCInteger), _dec4$e = type$8(CCInteger), _dec5$e = type$8(CCInteger), _dec6$8 = type$8(CCInteger), _dec7$6 = type$8(CCInteger), _dec$p(_class$p = _dec2$m(_class$p = (_class2$l = function (_Component) { + _inheritsLoose(TiledTile, _Component); + function TiledTile() { + var _this; + _this = _Component.call(this) || this; + _this._layer = null; + _this._x = _initializer$j && _initializer$j(); + _this._y = _initializer2$i && _initializer2$i(); + return _this; + } + var _proto = TiledTile.prototype; + _proto.onEnable = function onEnable() { + var parent = this.node.parent; + this._layer = parent.getComponent('cc.TiledLayer'); + this.node.on(NodeEventType.TRANSFORM_CHANGED, this._updatePosition, this); + this.node.on(NodeEventType.SIZE_CHANGED, this._updatePosition, this); + this._resetTile(); + this.updateInfo(); + }; + _proto.onDisable = function onDisable() { + this._resetTile(); + this.node.off(NodeEventType.TRANSFORM_CHANGED, this._updatePosition, this); + this.node.off(NodeEventType.SIZE_CHANGED, this._updatePosition, this); + }; + _proto._resetTile = function _resetTile() { + if (this._layer && this._layer.getTiledTileAt(this._x, this._y) === this) { + this._layer.setTiledTileAt(this._x, this._y, null); + } + }; + _proto.updateInfo = function updateInfo() { + if (!this._layer) return; + var x = this._x; + var y = this._y; + if (this._layer.getTiledTileAt(x, y)) { + warn('There is already a TiledTile at [%s, %s]', x, y); + return; + } + var p = this._layer.getPositionAt(x, y); + this.node.setPosition(p.x, p.y); + this._layer.setTiledTileAt(x, y, this); + this._layer.markForUpdateRenderData(); + }; + _proto._updatePosition = function _updatePosition() { + this._layer.markForUpdateRenderData(); + }; + _createClass(TiledTile, [{ + key: "x", + get: function get() { + return this._x; + }, + set: function set(value) { + if (value === this._x) return; + if (this._layer && this._layer.isInvalidPosition(value, this._y)) { + warn("Invalid x, the valid value is between [%s] ~ [%s]", 0, this._layer.layerSize.width); + return; + } + this._resetTile(); + this._x = value; + this.updateInfo(); + } + }, { + key: "y", + get: function get() { + return this._y; + }, + set: function set(value) { + if (value === this._y) return; + if (this._layer && this._layer.isInvalidPosition(this._x, value)) { + warn("Invalid y, the valid value is between [%s] ~ [%s]", 0, this._layer.layerSize.height); + return; + } + this._resetTile(); + this._y = value; + this.updateInfo(); + } + }, { + key: "grid", + get: function get() { + if (this._layer) { + return this._layer.getTileGIDAt(this._x, this._y); + } + return 0; + }, + set: function set(value) { + if (this._layer) { + this._layer.setTileGIDAt(value, this._x, this._y); + } + } + }]); + return TiledTile; + }(Component), (_initializer$j = applyDecoratedInitializer(_class2$l.prototype, "_x", [_dec3$k], function () { + return 0; + }), _initializer2$i = applyDecoratedInitializer(_class2$l.prototype, "_y", [_dec4$e], function () { + return 0; + }), _applyDecoratedDescriptor(_class2$l.prototype, "x", [_dec5$e], Object.getOwnPropertyDescriptor(_class2$l.prototype, "x"), _class2$l.prototype), _applyDecoratedDescriptor(_class2$l.prototype, "y", [_dec6$8], Object.getOwnPropertyDescriptor(_class2$l.prototype, "y"), _class2$l.prototype), _applyDecoratedDescriptor(_class2$l.prototype, "grid", [_dec7$6], Object.getOwnPropertyDescriptor(_class2$l.prototype, "grid"), _class2$l.prototype)), _class2$l)) || _class$p) || _class$p)); + + function fillTextureGrids(tileset, texGrids, spFrame) { + var spf = spFrame || tileset.sourceImage; + var tex = spf.texture; + var collection = tileset.collection; + if (!tileset.imageSize.width || !tileset.imageSize.height) { + var sourceImage = tileset.sourceImage; + tileset.imageSize.width = sourceImage.width; + tileset.imageSize.height = sourceImage.height; + } + var imageWidth = tileset.imageSize.width; + var imageHeight = tileset.imageSize.height; + var tw = tileset._tileSize.width; + var th = tileset._tileSize.height; + var texWidth = spf.width; + var texHeight = spf.height; + var spacing = tileset.spacing; + var margin = tileset.margin; + var count = 1; + if (!collection) { + var cols = Math.floor((imageWidth - margin * 2 + spacing) / (tw + spacing)); + var rows = Math.floor((imageHeight - margin * 2 + spacing) / (th + spacing)); + count = Math.max(1, rows * cols); + } + var firstGid = tileset.firstGid; + var grid = null; + var override = !!texGrids.get(firstGid); + var maxGid = tileset.firstGid + count; + var gid = firstGid; + for (; gid < maxGid; ++gid) { + if (override && !texGrids.get(gid)) { + override = false; + } + if (!override && texGrids.get(gid)) { + break; + } + grid = { + tileset: tileset, + x: 0, + y: 0, + width: tw, + height: th, + t: 0, + l: 0, + r: 0, + b: 0, + cx: 0, + cy: 0, + offsetX: 0, + offsetY: 0, + rotated: false, + gid: gid, + spriteFrame: spf, + texture: tex + }; + tileset.rectForGID(gid, grid); + if (!spFrame || count > 1 || tileset.imageOffset) { + if (spFrame) { + grid._name = spFrame.name; + var lm = spFrame.unbiasUV[0]; + var bm = spFrame.rotated ? spFrame.unbiasUV[1] : spFrame.unbiasUV[5]; + grid.l = lm + (grid.x + 0.5) / texWidth; + grid.t = bm + (grid.y + 0.5) / texHeight; + grid.r = lm + (grid.x + grid.width - 0.5) / texWidth; + grid.b = bm + (grid.y + grid.height - 0.5) / texHeight; + grid._rect = new Rect$1(grid.x, grid.y, grid.width, grid.height); + } else { + grid.l = grid.x / texWidth; + grid.t = grid.y / texHeight; + grid.r = (grid.x + grid.width) / texWidth; + grid.b = (grid.y + grid.height) / texHeight; + grid._rect = new Rect$1(grid.x, grid.y, grid.width, grid.height); + } + } else if (spFrame.rotated) { + grid._rotated = true; + grid._name = spFrame.name; + grid._rect = spFrame.getRect(); + grid.l = spFrame.unbiasUV[0]; + grid.t = spFrame.unbiasUV[1]; + grid.r = spFrame.unbiasUV[4]; + grid.b = spFrame.unbiasUV[3]; + } else { + grid._name = spFrame.name; + grid._rect = spFrame.getRect(); + grid.l = spFrame.unbiasUV[0]; + grid.t = spFrame.unbiasUV[5]; + grid.r = spFrame.unbiasUV[2]; + grid.b = spFrame.unbiasUV[1]; + } + grid.cx = (grid.l + grid.r) / 2; + grid.cy = (grid.t + grid.b) / 2; + texGrids.set(gid, grid); + } + } + + var _dec$o, _class$o, _dec2$l, _class3$e; + var _mat4_temp$3 = new Mat4(); + var _vec2_temp = new Vec2(); + var _vec3_temp = new Vec3(); + var _vec3_temp2 = new Vec3(); + var _tempRowCol = { + row: 0, + col: 0 + }; + var TiledUserNodeData = exports('f7', (_dec$o = ccclass$t('cc.TiledUserNodeData'), _dec$o(_class$o = function (_Component) { + _inheritsLoose(TiledUserNodeData, _Component); + function TiledUserNodeData() { + var _this; + _this = _Component.call(this) || this; + _this._index = -1; + _this._row = -1; + _this._col = -1; + _this._tiledLayer = null; + return _this; + } + return TiledUserNodeData; + }(Component)) || _class$o)); + var TiledLayer = exports('f8', (_dec2$l = ccclass$t('cc.TiledLayer'), _dec2$l(_class3$e = function (_UIRenderer) { + _inheritsLoose(TiledLayer, _UIRenderer); + var _proto = TiledLayer.prototype; + _proto.requestDrawInfo = function requestDrawInfo(idx) { + if (!this._drawInfoList[idx]) { + this._drawInfoList[idx] = new RenderDrawInfo(); + this._drawInfoList[idx].setDrawInfoType(RenderDrawInfoType.MIDDLEWARE); + } + return this._drawInfoList[idx]; + }; + function TiledLayer() { + var _this2; + _this2 = _UIRenderer.call(this) || this; + _this2._userNodeGrid = {}; + _this2._userNodeMap = {}; + _this2._userNodeDirty = false; + _this2.tiledTiles = []; + _this2._viewPort = { + x: -1, + y: -1, + width: -1, + height: -1 + }; + _this2._cullingRect = { + leftDown: { + row: -1, + col: -1 + }, + rightTop: { + row: -1, + col: -1 + } + }; + _this2._cullingDirty = true; + _this2._rightTop = { + row: -1, + col: -1 + }; + _this2._layerInfo = null; + _this2._mapInfo = null; + _this2._topOffset = 0; + _this2._downOffset = 0; + _this2._leftOffset = 0; + _this2._rightOffset = 0; + _this2.tiles = []; + _this2.vertices = []; + _this2._verticesDirty = true; + _this2._layerName = ''; + _this2._layerSize = void 0; + _this2._minGID = void 0; + _this2._maxGID = void 0; + _this2._layerOrientation = null; + _this2._opacity = void 0; + _this2._tintColor = void 0; + _this2.texGrids = null; + _this2._textures = []; + _this2._tilesets = []; + _this2._leftDownToCenterX = 0; + _this2._leftDownToCenterY = 0; + _this2._hasTiledNodeGrid = false; + _this2._hasAniGrid = false; + _this2._animations = null; + _this2._enableCulling = void 0; + _this2.colorChanged = false; + _this2._properties = void 0; + _this2.renderOrder = void 0; + _this2._staggerAxis = void 0; + _this2._staggerIndex = void 0; + _this2._hexSideLength = void 0; + _this2._mapTileSize = void 0; + _this2._odd_even = void 0; + _this2._diffX1 = void 0; + _this2._diffY1 = void 0; + _this2._useAutomaticVertexZ = void 0; + _this2._vertexZvalue = void 0; + _this2._offset = void 0; + _this2._tiledDataArray = []; + _this2._cameraNode = void 0; + _this2._drawInfoList = []; + _this2._tiledDataArrayIdx = 0; + return _this2; + } + _proto.hasTiledNode = function hasTiledNode() { + return this._hasTiledNodeGrid; + }; + _proto.hasAnimation = function hasAnimation() { + return this._hasAniGrid; + }; + _proto.addUserNode = function addUserNode(node) { + var dataComp = node.getComponent(TiledUserNodeData); + if (dataComp) { + warn('CCTiledLayer:addUserNode node has been added'); + return false; + } + dataComp = node.addComponent(TiledUserNodeData); + node.parent = this.node; + this._userNodeMap[node.uuid] = dataComp; + dataComp._row = -1; + dataComp._col = -1; + dataComp._tiledLayer = this; + this._nodeLocalPosToLayerPos(node.getPosition(), _vec2_temp); + this._positionToRowCol(_vec2_temp.x, _vec2_temp.y, _tempRowCol); + this._addUserNodeToGrid(dataComp, _tempRowCol); + this._updateCullingOffsetByUserNode(node); + node.on(NodeEventType.TRANSFORM_CHANGED, this._userNodePosChange, dataComp); + node.on(NodeEventType.SIZE_CHANGED, this._userNodeSizeChange, dataComp); + return true; + }; + _proto.removeUserNode = function removeUserNode(node) { + var dataComp = node.getComponent(TiledUserNodeData); + if (!dataComp) { + warn('CCTiledLayer:removeUserNode node is not exist'); + return false; + } + node.off(NodeEventType.TRANSFORM_CHANGED, this._userNodePosChange, dataComp); + node.off(NodeEventType.SIZE_CHANGED, this._userNodeSizeChange, dataComp); + this._removeUserNodeFromGrid(dataComp); + delete this._userNodeMap[node.uuid]; + node._removeComponent(dataComp); + dataComp.destroy(); + node.removeFromParent(); + return true; + }; + _proto.destroyUserNode = function destroyUserNode(node) { + this.removeUserNode(node); + node.destroy(); + }; + _proto._nodeLocalPosToLayerPos = function _nodeLocalPosToLayerPos(nodePos, out) { + out.x = nodePos.x + this._leftDownToCenterX; + out.y = nodePos.y + this._leftDownToCenterY; + }; + _proto.getNodesByRowCol = function getNodesByRowCol(row, col) { + var rowData = this._userNodeGrid[row]; + if (!rowData) return null; + return rowData[col]; + }; + _proto.getNodesCountByRow = function getNodesCountByRow(row) { + var rowData = this._userNodeGrid[row]; + if (!rowData) return 0; + return rowData.count; + }; + _proto._updateAllUserNode = function _updateAllUserNode() { + this._userNodeGrid = {}; + for (var dataId in this._userNodeMap) { + var dataComp = this._userNodeMap[dataId]; + this._nodeLocalPosToLayerPos(dataComp.node.getPosition(), _vec2_temp); + this._positionToRowCol(_vec2_temp.x, _vec2_temp.y, _tempRowCol); + this._addUserNodeToGrid(dataComp, _tempRowCol); + this._updateCullingOffsetByUserNode(dataComp.node); + } + }; + _proto._updateCullingOffsetByUserNode = function _updateCullingOffsetByUserNode(node_) { + var node = node_._uiProps.uiTransformComp.contentSize; + if (this._topOffset < node.height) { + this._topOffset = node.height; + } + if (this._downOffset < node.height) { + this._downOffset = node.height; + } + if (this._leftOffset < node.width) { + this._leftOffset = node.width; + } + if (this._rightOffset < node.width) { + this._rightOffset = node.width; + } + }; + _proto._userNodeSizeChange = function _userNodeSizeChange() { + var dataComp = this; + var node = dataComp.node; + var self = dataComp._tiledLayer; + self._updateCullingOffsetByUserNode(node); + self._userNodeDirty = true; + self.markForUpdateRenderData(); + }; + _proto._userNodePosChange = function _userNodePosChange() { + var dataComp = this; + var node = dataComp.node; + var self = dataComp._tiledLayer; + self._nodeLocalPosToLayerPos(node.getPosition(), _vec2_temp); + self._positionToRowCol(_vec2_temp.x, _vec2_temp.y, _tempRowCol); + self._limitInLayer(_tempRowCol); + if (_tempRowCol.row === dataComp._row && _tempRowCol.col === dataComp._col) return; + self._removeUserNodeFromGrid(dataComp); + self._addUserNodeToGrid(dataComp, _tempRowCol); + }; + _proto._removeUserNodeFromGrid = function _removeUserNodeFromGrid(dataComp) { + var row = dataComp._row; + var col = dataComp._col; + var index = dataComp._index; + var rowData = this._userNodeGrid[row]; + var colData = rowData && rowData[col]; + if (colData) { + rowData.count--; + colData.count--; + colData.list[index] = null; + if (colData.count <= 0) { + colData.list.length = 0; + colData.count = 0; + } + } + dataComp._row = -1; + dataComp._col = -1; + dataComp._index = -1; + this._userNodeDirty = true; + this.markForUpdateRenderData(); + }; + _proto._limitInLayer = function _limitInLayer(rowCol) { + var row = rowCol.row; + var col = rowCol.col; + if (row < 0) rowCol.row = 0; + if (row > this._rightTop.row) rowCol.row = this._rightTop.row; + if (col < 0) rowCol.col = 0; + if (col > this._rightTop.col) rowCol.col = this._rightTop.col; + }; + _proto._addUserNodeToGrid = function _addUserNodeToGrid(dataComp, tempRowCol) { + var row = tempRowCol.row; + var col = tempRowCol.col; + var rowData = this._userNodeGrid[row] = this._userNodeGrid[row] || { + count: 0 + }; + var colData = rowData[col] = rowData[col] || { + count: 0, + list: [] + }; + dataComp._row = row; + dataComp._col = col; + dataComp._index = colData.list.length; + rowData.count++; + colData.count++; + colData.list.push(dataComp); + this._userNodeDirty = true; + }; + _proto.isUserNodeDirty = function isUserNodeDirty() { + return this._userNodeDirty; + }; + _proto.setUserNodeDirty = function setUserNodeDirty(value) { + this._userNodeDirty = value; + }; + _proto._reinstallCamera = function _reinstallCamera() { + var camera = director.root.batcher2D.getFirstRenderCamera(this.node); + var cameraNode = camera === null || camera === void 0 ? void 0 : camera.node; + if (this._cameraNode !== cameraNode) { + this._uninstallCamera(); + if (cameraNode) { + cameraNode.on(NodeEventType.TRANSFORM_CHANGED, this.updateCulling, this); + cameraNode.on(NodeEventType.SIZE_CHANGED, this.updateCulling, this); + this._cameraNode = cameraNode; + } + } + return camera; + }; + _proto._uninstallCamera = function _uninstallCamera() { + if (this._cameraNode) { + this._cameraNode.off(NodeEventType.TRANSFORM_CHANGED, this.updateCulling, this); + this._cameraNode.off(NodeEventType.SIZE_CHANGED, this.updateCulling, this); + delete this._cameraNode; + } + }; + _proto.onEnable = function onEnable() { + _UIRenderer.prototype.onEnable.call(this); + this.node.on(NodeEventType.ANCHOR_CHANGED, this._syncAnchorPoint, this); + this.node.on(NodeEventType.TRANSFORM_CHANGED, this.updateCulling, this); + this.node.on(NodeEventType.SIZE_CHANGED, this.updateCulling, this); + this.node.parent.on(NodeEventType.TRANSFORM_CHANGED, this.updateCulling, this); + this.node.parent.on(NodeEventType.SIZE_CHANGED, this.updateCulling, this); + this.markForUpdateRenderData(); + this.scheduleOnce(this.updateCulling.bind(this)); + }; + _proto.onDisable = function onDisable() { + var _this$node$parent, _this$node$parent2; + _UIRenderer.prototype.onDisable.call(this); + (_this$node$parent = this.node.parent) === null || _this$node$parent === void 0 ? void 0 : _this$node$parent.off(NodeEventType.SIZE_CHANGED, this.updateCulling, this); + (_this$node$parent2 = this.node.parent) === null || _this$node$parent2 === void 0 ? void 0 : _this$node$parent2.off(NodeEventType.TRANSFORM_CHANGED, this.updateCulling, this); + this.node.off(NodeEventType.SIZE_CHANGED, this.updateCulling, this); + this.node.off(NodeEventType.TRANSFORM_CHANGED, this.updateCulling, this); + this.node.off(NodeEventType.ANCHOR_CHANGED, this._syncAnchorPoint, this); + this._uninstallCamera(); + }; + _proto._syncAnchorPoint = function _syncAnchorPoint() { + var node = this.node; + var trans = node._uiProps.uiTransformComp; + var scale = node.getScale(); + this._leftDownToCenterX = trans.width * trans.anchorX * scale.x; + this._leftDownToCenterY = trans.height * trans.anchorY * scale.y; + this._cullingDirty = true; + this.markForUpdateRenderData(); + }; + _proto.getLayerName = function getLayerName() { + return this._layerName; + }; + _proto.setLayerName = function setLayerName(layerName) { + this._layerName = layerName; + }; + _proto.getProperty = function getProperty(propertyName) { + return this._properties[propertyName]; + }; + _proto.getPositionAt = function getPositionAt(pos, y) { + var x; + if (y !== undefined) { + x = Math.floor(pos); + y = Math.floor(y); + } else { + x = Math.floor(pos.x); + y = Math.floor(pos.y); + } + switch (this._layerOrientation) { + case Orientation.ORTHO: + return this._positionForOrthoAt(x, y); + case Orientation.ISO: + return this._positionForIsoAt(x, y); + case Orientation.HEX: + return this._positionForHexAt(x, y); + } + return null; + }; + _proto.isInvalidPosition = function isInvalidPosition(x, y) { + return x >= this._layerSize.width || y >= this._layerSize.height || x < 0 || y < 0; + }; + _proto._positionForIsoAt = function _positionForIsoAt(x, y) { + var offsetX = 0; + var offsetY = 0; + var index = Math.floor(x) + Math.floor(y) * this._layerSize.width; + var gidAndFlags = this.tiles[index]; + if (gidAndFlags) { + var gid = (gidAndFlags & TileFlag.FLIPPED_MASK) >>> 0; + var tileset = this.texGrids.get(gid).tileset; + var offset = tileset.tileOffset; + offsetX = offset.x; + offsetY = offset.y; + } + return new Vec2(this._mapTileSize.width * 0.5 * (this._layerSize.height + x - y - 1) + offsetX, this._mapTileSize.height * 0.5 * (this._layerSize.width - x + this._layerSize.height - y - 2) - offsetY); + }; + _proto._positionForOrthoAt = function _positionForOrthoAt(x, y) { + var offsetX = 0; + var offsetY = 0; + var index = Math.floor(x) + Math.floor(y) * this._layerSize.width; + var gidAndFlags = this.tiles[index]; + if (gidAndFlags) { + var gid = (gidAndFlags & TileFlag.FLIPPED_MASK) >>> 0; + var tileset = this.texGrids.get(gid).tileset; + var offset = tileset.tileOffset; + offsetX = offset.x; + offsetY = offset.y; + } + return new Vec2(x * this._mapTileSize.width + offsetX, (this._layerSize.height - y - 1) * this._mapTileSize.height - offsetY); + }; + _proto._positionForHexAt = function _positionForHexAt(col, row) { + var tileWidth = this._mapTileSize.width; + var tileHeight = this._mapTileSize.height; + var rows = this._layerSize.height; + var index = Math.floor(col) + Math.floor(row) * this._layerSize.width; + var gid = (this.tiles[index] & TileFlag.FLIPPED_MASK) >>> 0; + var offset; + if (this.texGrids.get(gid)) { + offset = this.texGrids.get(gid).tileset.tileOffset; + } else { + offset = { + x: 0, + y: 0 + }; + } + var odd_even = this._staggerIndex === StaggerIndex.STAGGERINDEX_ODD ? 1 : -1; + var x = 0; + var y = 0; + var diffX = 0; + var diffY = 0; + switch (this._staggerAxis) { + case StaggerAxis.STAGGERAXIS_Y: + diffX = 0; + if (row % 2 === 1) { + diffX = tileWidth / 2 * odd_even; + } + x = col * tileWidth + diffX + offset.x; + y = (rows - row - 1) * (tileHeight - (tileHeight - this._hexSideLength) / 2) - offset.y; + break; + case StaggerAxis.STAGGERAXIS_X: + diffY = 0; + if (col % 2 === 1) { + diffY = tileHeight / 2 * -odd_even; + } + x = col * (tileWidth - (tileWidth - this._hexSideLength) / 2) + offset.x; + y = (rows - row - 1) * tileHeight + diffY - offset.y; + break; + } + return new Vec2(x, y); + }; + _proto.setTilesGIDAt = function setTilesGIDAt(gids, beginCol, beginRow, totalCols) { + if (!gids || gids.length === 0 || totalCols <= 0) return; + if (beginRow < 0) beginRow = 0; + if (beginCol < 0) beginCol = 0; + var gidsIdx = 0; + var endCol = beginCol + totalCols; + for (var row = beginRow;; row++) { + for (var col = beginCol; col < endCol; col++) { + if (gidsIdx >= gids.length) return; + this._updateTileForGID(gids[gidsIdx], col, row); + gidsIdx++; + } + } + }; + _proto.setTileGIDAt = function setTileGIDAt(gid, x, y, flags) { + var ugid = (gid & TileFlag.FLIPPED_MASK) >>> 0; + x = Math.floor(x); + y = Math.floor(y); + if (this.isInvalidPosition(x, y)) { + throw new Error('cc.TiledLayer.setTileGIDAt(): invalid position'); + } + if (!this.tiles || !this._tilesets || this._tilesets.length === 0) { + logID(7238); + return; + } + if (ugid !== 0 && ugid < this._tilesets[0].firstGid) { + logID(7239, gid); + return; + } + flags = flags || 0; + this._updateTileForGID((ugid | flags) >>> 0, x, y); + }; + _proto._updateTileForGID = function _updateTileForGID(gidAndFlags, x, y) { + var idx = 0 | x + y * this._layerSize.width; + if (idx >= this.tiles.length) return; + var oldGIDAndFlags = this.tiles[idx]; + if (gidAndFlags === oldGIDAndFlags) return; + var gid = (gidAndFlags & TileFlag.FLIPPED_MASK) >>> 0; + var grid = this.texGrids.get(gid); + if (grid) { + this.tiles[idx] = gidAndFlags; + this._updateVertex(x, y); + } else { + this.tiles[idx] = 0; + } + this._cullingDirty = true; + }; + _proto.getTileGIDAt = function getTileGIDAt(x, y) { + if (this.isInvalidPosition(x, y)) { + throw new Error('cc.TiledLayer.getTileGIDAt(): invalid position'); + } + if (!this.tiles) { + logID(7237); + return null; + } + var index = Math.floor(x) + Math.floor(y) * this._layerSize.width; + var tile = this.tiles[index]; + return (tile & TileFlag.FLIPPED_MASK) >>> 0; + }; + _proto.getTileFlagsAt = function getTileFlagsAt(x, y) { + if (this.isInvalidPosition(x, y)) { + throw new Error('TiledLayer.getTileFlagsAt: invalid position'); + } + if (!this.tiles) { + logID(7240); + return null; + } + var idx = Math.floor(x) + Math.floor(y) * this._layerSize.width; + var tile = this.tiles[idx]; + return (tile & TileFlag.FLIPPED_ALL) >>> 0; + }; + _proto.setCullingDirty = function setCullingDirty(value) { + this._cullingDirty = value; + }; + _proto.isCullingDirty = function isCullingDirty() { + return this._cullingDirty; + }; + _proto.updateViewPort = function updateViewPort(x, y, width, height) { + if (this._viewPort.width === width && this._viewPort.height === height && this._viewPort.x === x && this._viewPort.y === y) { + return; + } + this._viewPort.x = x; + this._viewPort.y = y; + this._viewPort.width = width; + this._viewPort.height = height; + var reserveLine = 1; + if (this._layerOrientation === Orientation.ISO) { + reserveLine = 2; + } + var vpx = this._viewPort.x - this._offset.x + this._leftDownToCenterX; + var vpy = this._viewPort.y - this._offset.y + this._leftDownToCenterY; + var leftDownX = vpx - this._leftOffset; + var leftDownY = vpy - this._downOffset; + var rightTopX = vpx + width + this._rightOffset; + var rightTopY = vpy + height + this._topOffset; + var leftDown = this._cullingRect.leftDown; + var rightTop = this._cullingRect.rightTop; + if (leftDownX < 0) leftDownX = 0; + if (leftDownY < 0) leftDownY = 0; + this._positionToRowCol(leftDownX, leftDownY, _tempRowCol); + _tempRowCol.row -= reserveLine; + _tempRowCol.col -= reserveLine; + _tempRowCol.row = _tempRowCol.row > 0 ? _tempRowCol.row : 0; + _tempRowCol.col = _tempRowCol.col > 0 ? _tempRowCol.col : 0; + if (_tempRowCol.row !== leftDown.row || _tempRowCol.col !== leftDown.col) { + leftDown.row = _tempRowCol.row; + leftDown.col = _tempRowCol.col; + this._cullingDirty = true; + } + if (rightTopX < 0 || rightTopY < 0) { + _tempRowCol.row = -1; + _tempRowCol.col = -1; + } else { + this._positionToRowCol(rightTopX, rightTopY, _tempRowCol); + _tempRowCol.row++; + _tempRowCol.col++; + } + if (_tempRowCol.row !== rightTop.row || _tempRowCol.col !== rightTop.col) { + rightTop.row = _tempRowCol.row; + rightTop.col = _tempRowCol.col; + this._cullingDirty = true; + } + if (this._cullingDirty) this.markForUpdateRenderData(); + }; + _proto._positionToRowCol = function _positionToRowCol(x, y, result) { + var maptw = this._mapTileSize.width; + var mapth = this._mapTileSize.height; + var maptw2 = maptw * 0.5; + var mapth2 = mapth * 0.5; + var row = 0; + var col = 0; + var diffX2 = 0; + var diffY2 = 0; + var axis = this._staggerAxis; + switch (this._layerOrientation) { + case Orientation.ORTHO: + col = Math.floor(x / maptw); + row = Math.floor(y / mapth); + break; + case Orientation.ISO: + col = Math.floor(x / maptw2); + row = Math.floor(y / mapth2); + break; + case Orientation.HEX: + if (axis === StaggerAxis.STAGGERAXIS_Y) { + row = Math.floor(y / (mapth - this._diffY1)); + diffX2 = row % 2 === 1 ? maptw2 * this._odd_even : 0; + col = Math.floor((x - diffX2) / maptw); + } else { + col = Math.floor(x / (maptw - this._diffX1)); + diffY2 = col % 2 === 1 ? mapth2 * -this._odd_even : 0; + row = Math.floor((y - diffY2) / mapth); + } + break; + } + result.row = row; + result.col = col; + return result; + }; + _proto.updateCulling = function updateCulling() { + if (this._enableCulling) { + this.node.updateWorldTransform(); + Mat4.invert(_mat4_temp$3, this.node.getWorldMatrix()); + var camera = this._reinstallCamera(); + if (camera) { + _vec3_temp.x = 0; + _vec3_temp.y = 0; + _vec3_temp.z = 0; + _vec3_temp2.x = camera.width; + _vec3_temp2.y = camera.height; + _vec3_temp2.z = 0; + camera.screenToWorld(_vec3_temp, _vec3_temp); + camera.screenToWorld(_vec3_temp2, _vec3_temp2); + Vec3.transformMat4(_vec3_temp, _vec3_temp, _mat4_temp$3); + Vec3.transformMat4(_vec3_temp2, _vec3_temp2, _mat4_temp$3); + this.updateViewPort(_vec3_temp.x, _vec3_temp.y, _vec3_temp2.x - _vec3_temp.x, _vec3_temp2.y - _vec3_temp.y); + } + } + }; + _proto.getLayerOrientation = function getLayerOrientation() { + return this._layerOrientation; + }; + _proto.getProperties = function getProperties() { + return this._properties; + }; + _proto._updateVertex = function _updateVertex(col, row) { + var FLIPPED_MASK = TileFlag.FLIPPED_MASK; + var vertices = this.vertices; + var layerOrientation = this._layerOrientation; + var tiles = this.tiles; + if (!tiles) { + return; + } + var rightTop = this._rightTop; + var maptw = this._mapTileSize.width; + var mapth = this._mapTileSize.height; + var maptw2 = maptw * 0.5; + var mapth2 = mapth * 0.5; + var rows = this._layerSize.height; + var cols = this._layerSize.width; + var grids = this.texGrids; + var left = 0; + var bottom = 0; + var axis; + var diffX1; + var diffY1; + var odd_even; + var diffX2; + var diffY2; + if (layerOrientation === Orientation.HEX) { + axis = this._staggerAxis; + diffX1 = this._diffX1; + diffY1 = this._diffY1; + odd_even = this._odd_even; + } + var cullingCol = 0; + var cullingRow = 0; + var gridGID = 0; + var topBorder = 0; + var downBorder = 0; + var leftBorder = 0; + var rightBorder = 0; + var index = row * cols + col; + var gid = tiles[index]; + gridGID = (gid & FLIPPED_MASK) >>> 0; + var grid = grids.get(gridGID); + if (!grid) { + return; + } + if (this._animations.get(gridGID)) { + this._hasAniGrid = this._hasAniGrid || true; + } + switch (layerOrientation) { + case Orientation.ORTHO: + cullingCol = col; + cullingRow = rows - row - 1; + left = cullingCol * maptw; + bottom = cullingRow * mapth; + break; + case Orientation.ISO: + cullingCol = rows + col - row - 1; + cullingRow = rows + cols - col - row - 2; + left = maptw2 * cullingCol; + bottom = mapth2 * cullingRow; + break; + case Orientation.HEX: + diffX2 = axis === StaggerAxis.STAGGERAXIS_Y && row % 2 === 1 ? maptw2 * odd_even : 0; + diffY2 = axis === StaggerAxis.STAGGERAXIS_X && col % 2 === 1 ? mapth2 * -odd_even : 0; + left = col * (maptw - diffX1) + diffX2; + bottom = (rows - row - 1) * (mapth - diffY1) + diffY2; + cullingCol = col; + cullingRow = rows - row - 1; + break; + } + var rowData = vertices[cullingRow] = vertices[cullingRow] || { + minCol: 0, + maxCol: 0 + }; + var colData = rowData[cullingCol] = rowData[cullingCol] || { + left: 0, + bottom: 0, + index: 0 + }; + if (rowData.minCol > cullingCol) { + rowData.minCol = cullingCol; + } + if (rowData.maxCol < cullingCol) { + rowData.maxCol = cullingCol; + } + if (rightTop.row < cullingRow) { + rightTop.row = cullingRow; + if (layerOrientation === Orientation.ISO) { + rightTop.row += 1; + } + } + if (rightTop.col < cullingCol) { + rightTop.col = cullingCol; + if (layerOrientation === Orientation.ISO) { + rightTop.col += 1; + } + } + var tileOffset = grid.tileset.tileOffset; + left += this._offset.x + tileOffset.x + grid.offsetX; + bottom += this._offset.y - tileOffset.y - grid.offsetY; + topBorder = -tileOffset.y + grid.tileset._tileSize.height - mapth; + topBorder = topBorder < 0 ? 0 : topBorder; + downBorder = tileOffset.y < 0 ? 0 : tileOffset.y; + leftBorder = -tileOffset.x < 0 ? 0 : -tileOffset.x; + rightBorder = tileOffset.x + grid.tileset._tileSize.width - maptw; + rightBorder = rightBorder < 0 ? 0 : rightBorder; + if (this._rightOffset < leftBorder) { + this._rightOffset = leftBorder; + } + if (this._leftOffset < rightBorder) { + this._leftOffset = rightBorder; + } + if (this._topOffset < downBorder) { + this._topOffset = downBorder; + } + if (this._downOffset < topBorder) { + this._downOffset = topBorder; + } + colData.left = left; + colData.bottom = bottom; + colData.index = index; + this._cullingDirty = true; + }; + _proto._updateVertices = function _updateVertices() { + var vertices = this.vertices; + vertices.length = 0; + var tiles = this.tiles; + if (!tiles) { + return; + } + var rightTop = this._rightTop; + rightTop.row = -1; + rightTop.col = -1; + var rows = this._layerSize.height; + var cols = this._layerSize.width; + this._topOffset = 0; + this._downOffset = 0; + this._leftOffset = 0; + this._rightOffset = 0; + this._hasAniGrid = false; + for (var row = 0; row < rows; ++row) { + for (var col = 0; col < cols; ++col) { + this._updateVertex(col, row); + } + } + this._verticesDirty = false; + }; + _proto.getTiledTileAt = function getTiledTileAt(x, y, forceCreate) { + if (this.isInvalidPosition(x, y)) { + throw new Error('TiledLayer.getTiledTileAt: invalid position'); + } + if (!this.tiles) { + logID(7236); + return null; + } + var index = Math.floor(x) + Math.floor(y) * this._layerSize.width; + var tile = this.tiledTiles[index]; + if (!tile && forceCreate) { + var node = new Node$1(); + tile = node.addComponent(TiledTile); + tile._x = x; + tile._y = y; + tile._layer = this; + tile.updateInfo(); + node.parent = this.node; + return tile; + } + return tile; + }; + _proto.setTiledTileAt = function setTiledTileAt(x, y, tiledTile) { + if (this.isInvalidPosition(x, y)) { + throw new Error('TiledLayer.setTiledTileAt: invalid position'); + } + if (!this.tiles) { + logID(7236); + return null; + } + var index = Math.floor(x) + Math.floor(y) * this._layerSize.width; + this.tiledTiles[index] = tiledTile; + this._cullingDirty = true; + if (tiledTile) { + this._hasTiledNodeGrid = true; + } else { + this._hasTiledNodeGrid = this.tiledTiles.some(function (tiledNode) { + return !!tiledNode; + }); + } + return tiledTile; + }; + _proto.getTexture = function getTexture(index) { + index = index || 0; + if (this._textures && index >= 0 && this._textures.length > index) { + return this._textures[index]; + } + return null; + }; + _proto.getTextures = function getTextures() { + return this._textures; + }; + _proto.setTexture = function setTexture(texture) { + this.setTextures([texture]); + }; + _proto.setTextures = function setTextures(textures) { + this._textures = textures; + this.markForUpdateRenderData(); + }; + _proto.getLayerSize = function getLayerSize() { + return this._layerSize; + }; + _proto.getMapTileSize = function getMapTileSize() { + return this._mapTileSize; + }; + _proto.getTileSet = function getTileSet(index) { + index = index || 0; + if (this._tilesets && index >= 0 && this._tilesets.length > index) { + return this._tilesets[index]; + } + return null; + }; + _proto.getTileSets = function getTileSets() { + return this._tilesets; + }; + _proto.setTileSet = function setTileSet(tileset) { + this.setTileSets([tileset]); + }; + _proto.setTileSets = function setTileSets(tilesets) { + this._tilesets = tilesets; + var textures = this._textures = []; + var texGrids = this.texGrids; + texGrids.clear(); + for (var i = 0; i < tilesets.length; i++) { + var tileset = tilesets[i]; + if (tileset) { + textures[i] = tileset.sourceImage; + } + } + for (var _i = 0, l = tilesets.length; _i < l; ++_i) { + var tilesetInfo = tilesets[_i]; + if (!tilesetInfo) continue; + fillTextureGrids(tilesetInfo, texGrids, tilesetInfo.sourceImage); + } + this._prepareToRender(); + }; + _proto.init = function init(layerInfo, mapInfo, tilesets, textures, texGrids) { + this._cullingDirty = true; + this._layerInfo = layerInfo; + this._mapInfo = mapInfo; + var size = layerInfo.layerSize; + this._layerName = layerInfo.name; + this.tiles = layerInfo.tiles; + this._properties = layerInfo.properties; + this._layerSize = size; + this._minGID = layerInfo.minGID; + this._maxGID = layerInfo.maxGID; + this._opacity = layerInfo.opacity; + if (layerInfo.tintColor) { + this._tintColor = layerInfo.tintColor; + } + this.renderOrder = mapInfo.renderOrder; + this._staggerAxis = mapInfo.getStaggerAxis(); + this._staggerIndex = mapInfo.getStaggerIndex(); + this._hexSideLength = mapInfo.getHexSideLength(); + this._animations = mapInfo.getTileAnimations(); + this._tilesets = tilesets; + this._textures = textures; + this.texGrids = texGrids; + this._layerOrientation = mapInfo.orientation; + this._mapTileSize = mapInfo.getTileSize(); + var maptw = this._mapTileSize.width; + var mapth = this._mapTileSize.height; + var layerW = this._layerSize.width; + var layerH = this._layerSize.height; + if (this._layerOrientation === Orientation.HEX) { + var width = 0; + var height = 0; + var tileWidth = maptw & ~1; + var tileHeight = mapth & ~1; + this._odd_even = this._staggerIndex === StaggerIndex.STAGGERINDEX_ODD ? 1 : -1; + if (this._staggerAxis === StaggerAxis.STAGGERAXIS_X) { + this._diffX1 = (tileWidth - this._hexSideLength) / 2; + this._diffY1 = 0; + width = (this._diffX1 + this._hexSideLength) * layerW + this._diffX1; + height = tileHeight * layerH + tileHeight / 2; + } else { + this._diffX1 = 0; + this._diffY1 = (tileHeight - this._hexSideLength) / 2; + width = tileWidth * layerW + tileWidth / 2; + height = (this._diffY1 + this._hexSideLength) * layerH + this._diffY1; + } + this.node._uiProps.uiTransformComp.setContentSize(width, height); + } else if (this._layerOrientation === Orientation.ISO) { + var wh = layerW + layerH; + this.node._uiProps.uiTransformComp.setContentSize(maptw * 0.5 * wh, mapth * 0.5 * wh); + } else { + this.node._uiProps.uiTransformComp.setContentSize(layerW * maptw, layerH * mapth); + } + this._offset = new Vec2(layerInfo.offset.x, -layerInfo.offset.y); + this._useAutomaticVertexZ = false; + this._vertexZvalue = 0; + this._syncAnchorPoint(); + this._prepareToRender(); + }; + _proto._prepareToRender = function _prepareToRender() { + this._updateVertices(); + this._updateAllUserNode(); + }; + _proto.requestTiledRenderData = function requestTiledRenderData() { + var arr = this._tiledDataArray; + while (arr.length > 0 && arr[arr.length - 1].subNodes && arr[arr.length - 1].subNodes.length === 0) { + arr.pop(); + } + if (arr.length > 0) { + var last = arr[arr.length - 1]; + if (last.renderData && last.renderData.vertexCount === 0) { + return last; + } + } + var comb = { + renderData: null, + texture: null + }; + this._tiledDataArray.push(comb); + return comb; + }; + _proto.requestSubNodesData = function requestSubNodesData() { + var arr = this._tiledDataArray; + if (arr.length > 0) { + if (arr[arr.length - 1].subNodes && arr[arr.length - 1].subNodes.length === 0) { + return arr[arr.length - 1]; + } + } + var renderData = []; + var comb = { + subNodes: renderData + }; + this._tiledDataArray.push(comb); + return comb; + }; + _proto.destroyRenderData = function destroyRenderData() { + this._tiledDataArray.forEach(function (rd) { + var renderData = rd.renderData; + if (renderData) RenderData.remove(renderData); + }); + this._tiledDataArray.length = 0; + _UIRenderer.prototype.destroyRenderData.call(this); + }; + _proto._flushAssembler = function _flushAssembler() { + var assembler = TiledLayer.Assembler.getAssembler(this); + if (this._assembler !== assembler) { + this._assembler = assembler; + this._assembler.createData(this); + } + if (this._tiledDataArray.length === 0) { + this.markForUpdateRenderData(); + this._updateColor(); + } + }; + _proto._render = function _render(ui) { + for (var i = 0; i < this._tiledDataArray.length; i++) { + this._tiledDataArrayIdx = i; + var m = this._tiledDataArray[i]; + if (m.subNodes) { + m.subNodes.forEach(function (c) { + if (c) ui.walk(c.node); + }); + } else { + var td = m; + if (td.texture) { + ui.commitComp(this, td.renderData, td.texture, this._assembler, null); + } + } + } + this.node._static = true; + }; + _proto.createRenderEntity = function createRenderEntity() { + return new RenderEntity(RenderEntityType.CROSSED); + }; + _proto.fillIndicesBuffer = function fillIndicesBuffer(renderData, drawInfo) { + var iBuf = renderData.chunk.meshBuffer.iData; + var indexOffset = renderData.chunk.meshBuffer.indexOffset; + drawInfo.setIndexOffset(indexOffset); + var vertexId = renderData.chunk.vertexOffset; + var quadCount = renderData.vertexCount / 4; + for (var i = 0; i < quadCount; i += 1) { + iBuf[indexOffset] = vertexId; + iBuf[indexOffset + 1] = vertexId + 1; + iBuf[indexOffset + 2] = vertexId + 2; + iBuf[indexOffset + 3] = vertexId + 2; + iBuf[indexOffset + 4] = vertexId + 1; + iBuf[indexOffset + 5] = vertexId + 3; + indexOffset += 6; + vertexId += 4; + } + renderData.chunk.meshBuffer.indexOffset = indexOffset; + drawInfo.setIBCount(quadCount * 6); + }; + _proto.prepareDrawData = function prepareDrawData() { + var _this3 = this; + this._drawInfoList.length = 0; + var entity = this.renderEntity; + entity.clearDynamicRenderDrawInfos(); + var tiledDataArray = this._tiledDataArray; + var idx = 0; + tiledDataArray.forEach(function (m) { + if (m.subNodes) { + m.subNodes.forEach(function (c) { + if (c) { + if (!_this3._drawInfoList[idx]) { + _this3._drawInfoList[idx] = new RenderDrawInfo(); + } + var drawInfo = _this3._drawInfoList[idx]; + drawInfo.setDrawInfoType(RenderDrawInfoType.SUB_NODE); + drawInfo.setSubNode(c.node); + entity.setDynamicRenderDrawInfo(drawInfo, idx); + idx++; + } + }); + } else { + var td = m; + if (td.texture) { + if (!_this3._drawInfoList[idx]) { + _this3._drawInfoList[idx] = new RenderDrawInfo(); + } + var drawInfo = _this3._drawInfoList[idx]; + td.renderData.fillDrawInfoAttributes(drawInfo); + drawInfo.setTexture(td.texture.getGFXTexture()); + drawInfo.setSampler(td.texture.getGFXSampler()); + drawInfo.setMaterial(_this3.getRenderMaterial(0)); + _this3.fillIndicesBuffer(td.renderData, drawInfo); + entity.setDynamicRenderDrawInfo(drawInfo, idx); + idx++; + } + } + }); + }; + _createClass(TiledLayer, [{ + key: "cullingRect", + get: function get() { + return this._cullingRect; + } + }, { + key: "rightTop", + get: function get() { + return this._rightTop; + } + }, { + key: "layerSize", + get: function get() { + return this._layerSize; + } + }, { + key: "tiledDataArray", + get: function get() { + return this._tiledDataArray; + } + }, { + key: "leftDownToCenterX", + get: function get() { + return this._leftDownToCenterX; + } + }, { + key: "leftDownToCenterY", + get: function get() { + return this._leftDownToCenterY; + } + }, { + key: "enableCulling", + get: function get() { + return this._enableCulling; + }, + set: function set(value) { + if (this._enableCulling !== value) { + this._enableCulling = value; + this._cullingDirty = true; + this.markForUpdateRenderData(); + } + } + }]); + return TiledLayer; + }(UIRenderer)) || _class3$e)); + + var _dec$n, _dec2$k, _dec3$j, _class$n, _class2$k; + var TiledObjectGroup = exports('f9', (_dec$n = ccclass$t('cc.TiledObjectGroup'), _dec2$k = requireComponent(UITransform), _dec3$j = type$8(CCBoolean), _dec$n(_class$n = _dec2$k(_class$n = (_class2$k = function (_Component) { + _inheritsLoose(TiledObjectGroup, _Component); + function TiledObjectGroup() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this._premultiplyAlpha = false; + _this._groupName = void 0; + _this._positionOffset = void 0; + _this._mapInfo = void 0; + _this._properties = void 0; + _this._offset = void 0; + _this._opacity = void 0; + _this._tintColor = null; + _this._animations = void 0; + _this._hasAniObj = void 0; + _this._texGrids = void 0; + _this.aniObjects = void 0; + _this._objects = []; + return _this; + } + var _proto = TiledObjectGroup.prototype; + _proto.getPositionOffset = function getPositionOffset() { + return this._positionOffset; + }; + _proto.getProperties = function getProperties() { + return this._properties; + }; + _proto.getGroupName = function getGroupName() { + return this._groupName; + }; + _proto.getProperty = function getProperty(propertyName) { + return this._properties[propertyName.toString()]; + }; + _proto.getObject = function getObject(objectName) { + for (var i = 0, len = this._objects.length; i < len; i++) { + var obj = this._objects[i]; + if (obj && obj.name === objectName) { + return obj; + } + } + return null; + }; + _proto.getObjects = function getObjects() { + return this._objects; + }; + _proto._init = function _init(groupInfo, mapInfo, texGrids) { + var FLIPPED_MASK = TileFlag.FLIPPED_MASK; + var FLAG_HORIZONTAL = TileFlag.HORIZONTAL; + var FLAG_VERTICAL = TileFlag.VERTICAL; + this._groupName = groupInfo.name; + this._positionOffset = groupInfo.offset; + this._mapInfo = mapInfo; + this._properties = groupInfo.getProperties(); + this._offset = new Vec2(groupInfo.offset.x, -groupInfo.offset.y); + this._opacity = groupInfo.opacity; + if (groupInfo.tintColor) { + this._tintColor = groupInfo.tintColor; + } + this._texGrids = texGrids; + this._animations = mapInfo.getTileAnimations(); + this.aniObjects = []; + this._hasAniObj = false; + var mapSize = mapInfo.mapSize; + var tileSize = mapInfo.tileSize; + var width = 0; + var height = 0; + var colorVal = new Color$1(); + var iso = Orientation.ISO === mapInfo.orientation; + if (mapInfo.orientation === Orientation.HEX) { + if (mapInfo.getStaggerAxis() === StaggerAxis.STAGGERAXIS_X) { + height = tileSize.height * (mapSize.height + 0.5); + width = (tileSize.width + mapInfo.getHexSideLength()) * Math.floor(mapSize.width / 2) + tileSize.width * (mapSize.width % 2); + } else { + width = tileSize.width * (mapSize.width + 0.5); + height = (tileSize.height + mapInfo.getHexSideLength()) * Math.floor(mapSize.height / 2) + tileSize.height * (mapSize.height % 2); + } + } else if (iso) { + var wh = mapSize.width + mapSize.height; + width = tileSize.width * 0.5 * wh; + height = tileSize.height * 0.5 * wh; + } else { + width = mapSize.width * tileSize.width; + height = mapSize.height * tileSize.height; + } + var transComp = this.node._uiProps.uiTransformComp; + transComp.setContentSize(width, height); + var leftTopX = width * transComp.anchorX; + var leftTopY = height * (1 - transComp.anchorY); + var objects = groupInfo.objects; + var aliveNodes = {}; + for (var i = 0, l = objects.length; i < l; i++) { + var object = objects[i]; + var objType = object.type; + object.offset = new Vec2(object.x, object.y); + var points = object.points || object.polylinePoints; + if (points) { + for (var pi = 0; pi < points.length; pi++) { + points[pi].y *= -1; + } + } + if (iso) { + var posIdxX = object.x / tileSize.height; + var posIdxY = object.y / tileSize.height; + object.x = tileSize.width * 0.5 * (mapSize.height + posIdxX - posIdxY); + object.y = tileSize.height * 0.5 * (mapSize.width + mapSize.height - posIdxX - posIdxY); + } else { + object.y = height - object.y; + } + if (objType === TMXObjectType.TEXT) { + var textName = "text" + object.id; + aliveNodes[textName] = true; + var textNode = this.node.getChildByName(textName); + if (!textNode) { + textNode = new Node$1(); + } + textNode.setRotationFromEuler(0, 0, -object.rotation); + textNode.setPosition(object.x - leftTopX, object.y - leftTopY); + textNode.name = textName; + textNode.parent = this.node; + textNode.setSiblingIndex(i); + textNode.layer = this.node.layer; + var label = textNode.getComponent(Label); + if (!label) { + label = textNode.addComponent(Label); + } + var textTransComp = textNode._uiProps.uiTransformComp; + textNode.active = object.visible; + textTransComp.anchorX = 0; + textTransComp.anchorY = 1; + if (this._tintColor) { + colorVal.set(this._tintColor); + colorVal.a *= this._opacity / 255; + label.color.set(colorVal); + } else { + var c = label.color; + c.a *= this._opacity / 255; + } + label.overflow = Label.Overflow.SHRINK; + label.lineHeight = object.height; + label.string = object.text; + label.horizontalAlign = object.halign; + label.verticalAlign = object.valign; + label.fontSize = object.pixelsize; + textTransComp.setContentSize(object.width, object.height); + } else if (objType === TMXObjectType.IMAGE) { + var gid = object.gid; + var gridGID = (gid & FLIPPED_MASK) >>> 0; + var grid = texGrids.get(gridGID); + if (!grid) continue; + var tileset = grid.tileset; + var imgName = "img" + object.id; + aliveNodes[imgName] = true; + var imgNode = this.node.getChildByName(imgName); + object.width = object.width || grid.width; + object.height = object.height || grid.height; + if (imgNode && imgNode._objFlags & CCObject.Flags.HideInHierarchy) { + imgNode.removeFromParent(); + imgNode.hideFlags |= CCObject.Flags.DontSave; + imgNode.destroy(); + imgNode = null; + } + if (!imgNode) { + imgNode = new Node$1(); + } + if (this._animations.get(gridGID)) { + this.aniObjects.push({ + object: object, + imgNode: imgNode, + gridGID: gridGID + }); + this._hasAniObj = true; + } + var tileOffsetX = tileset.tileOffset.x; + var tileOffsetY = tileset.tileOffset.y; + imgNode.active = object.visible; + imgNode.setRotationFromEuler(0, 0, -object.rotation); + imgNode.setPosition(object.x - leftTopX, object.y - leftTopY); + imgNode.name = imgName; + imgNode.parent = this.node; + imgNode.setSiblingIndex(i); + imgNode.layer = this.node.layer; + var sprite = imgNode.getComponent(Sprite); + if (!sprite) { + sprite = imgNode.addComponent(Sprite); + } + var imgTrans = imgNode._uiProps.uiTransformComp; + if (iso) { + imgTrans.anchorX = 0.5 + tileOffsetX / object.width; + imgTrans.anchorY = tileOffsetY / object.height; + } else { + imgTrans.anchorX = tileOffsetX / object.width; + imgTrans.anchorY = tileOffsetY / object.height; + } + if (this._tintColor) { + colorVal.set(this._tintColor); + colorVal.a *= this._opacity / 255; + sprite.color.set(colorVal); + } else { + var _c = sprite.color; + _c.a *= this._opacity / 255; + } + sprite.sizeMode = Sprite.SizeMode.CUSTOM; + var srcBlendFactor = this._premultiplyAlpha ? BlendFactor.ONE : BlendFactor.SRC_ALPHA; + if (sprite.srcBlendFactor !== srcBlendFactor) { + sprite.srcBlendFactor = srcBlendFactor; + if (sprite.material) { + sprite._updateBlendFunc(); + } + } + var spf = grid.spriteFrame; + if (!spf) { + spf = new SpriteFrame(); + } else { + spf = spf.clone(); + } + if ((gid & FLAG_HORIZONTAL) >>> 0) { + spf.flipUVX = !spf.flipUVX; + } + if ((gid & FLAG_VERTICAL) >>> 0) { + spf.flipUVY = !spf.flipUVY; + } + spf.rotated = grid._rotated; + spf.rect = grid._rect; + sprite.spriteFrame = spf; + imgTrans.setContentSize(object.width, object.height); + sprite.markForUpdateRenderData(); + } + } + this._objects = objects; + var children = this.node.children; + var uselessExp = /^(?:img|text)\d+$/; + for (var _i = 0, n = children.length; _i < n; _i++) { + var _c2 = children[_i]; + var cName = _c2.name; + var isUseless = uselessExp.test(cName); + if (isUseless && !aliveNodes[cName]) _c2.destroy(); + } + }; + _proto.update = function update(dt) { + if (!this._hasAniObj) { + return; + } + var aniObjects = this.aniObjects; + var _texGrids = this._texGrids; + var iso = Orientation.ISO === this._mapInfo.orientation; + for (var i = 0, len = aniObjects.length; i < len; i++) { + var aniObj = aniObjects[i]; + var gridGID = aniObj.gridGID; + var grid = _texGrids.get(gridGID); + if (!grid) { + continue; + } + var tileset = grid.tileset; + var object = aniObj.object; + var imgNode = aniObj.imgNode; + var tileOffsetX = tileset.tileOffset.x; + var tileOffsetY = tileset.tileOffset.y; + var imgTrans = imgNode._uiProps.uiTransformComp; + if (iso) { + imgTrans.anchorX = 0.5 + tileOffsetX / object.width; + imgTrans.anchorY = tileOffsetY / object.height; + } else { + imgTrans.anchorX = tileOffsetX / object.width; + imgTrans.anchorY = tileOffsetY / object.height; + } + var sp = imgNode.getComponent(Sprite); + var spf = sp.spriteFrame; + spf.rotated = grid._rotated; + spf.rect = grid._rect; + sp.spriteFrame = spf; + sp.markForUpdateRenderData(); + } + }; + _createClass(TiledObjectGroup, [{ + key: "premultiplyAlpha", + get: function get() { + return this._premultiplyAlpha; + }, + set: function set(value) { + this._premultiplyAlpha = value; + } + }, { + key: "offset", + get: function get() { + return this._offset; + } + }]); + return TiledObjectGroup; + }(Component), (_applyDecoratedDescriptor(_class2$k.prototype, "premultiplyAlpha", [_dec3$j], Object.getOwnPropertyDescriptor(_class2$k.prototype, "premultiplyAlpha"), _class2$k.prototype)), _class2$k)) || _class$n) || _class$n)); + + var _dec$m, _dec2$j, _dec3$i, _dec4$d, _dec5$d, _dec6$7, _dec7$5, _dec8$4, _class$m, _class2$j, _initializer$i, _initializer2$h, _initializer3$e, _initializer4$c, _initializer5$a, _initializer6$7, _initializer7$7, _initializer8$7; + var TiledMapAsset = exports('f6', (_dec$m = ccclass$t('cc.TiledMapAsset'), _dec2$j = type$8([TextAsset]), _dec3$i = type$8([CCString]), _dec4$d = type$8([SpriteFrame]), _dec5$d = type$8([SpriteFrame]), _dec6$7 = type$8([CCString]), _dec7$5 = type$8([CCString]), _dec8$4 = type$8([Size$1]), _dec$m(_class$m = (_class2$j = function (_Asset) { + _inheritsLoose(TiledMapAsset, _Asset); + function TiledMapAsset() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Asset.call.apply(_Asset, [this].concat(args)) || this; + _this.tmxXmlStr = _initializer$i && _initializer$i(); + _this.tsxFiles = _initializer2$h && _initializer2$h(); + _this.tsxFileNames = _initializer3$e && _initializer3$e(); + _this.spriteFrames = _initializer4$c && _initializer4$c(); + _this.imageLayerSpriteFrame = _initializer5$a && _initializer5$a(); + _this.imageLayerSpriteFrameNames = _initializer6$7 && _initializer6$7(); + _this.spriteFrameNames = _initializer7$7 && _initializer7$7(); + _this.spriteFrameSizes = _initializer8$7 && _initializer8$7(); + return _this; + } + return TiledMapAsset; + }(Asset), (_initializer$i = applyDecoratedInitializer(_class2$j.prototype, "tmxXmlStr", [serializable$9], function () { + return ''; + }), _initializer2$h = applyDecoratedInitializer(_class2$j.prototype, "tsxFiles", [serializable$9, _dec2$j], function () { + return []; + }), _initializer3$e = applyDecoratedInitializer(_class2$j.prototype, "tsxFileNames", [serializable$9, _dec3$i], function () { + return []; + }), _initializer4$c = applyDecoratedInitializer(_class2$j.prototype, "spriteFrames", [serializable$9, _dec4$d], function () { + return []; + }), _initializer5$a = applyDecoratedInitializer(_class2$j.prototype, "imageLayerSpriteFrame", [serializable$9, _dec5$d], function () { + return []; + }), _initializer6$7 = applyDecoratedInitializer(_class2$j.prototype, "imageLayerSpriteFrameNames", [serializable$9, _dec6$7], function () { + return []; + }), _initializer7$7 = applyDecoratedInitializer(_class2$j.prototype, "spriteFrameNames", [serializable$9, _dec7$5], function () { + return []; + }), _initializer8$7 = applyDecoratedInitializer(_class2$j.prototype, "spriteFrameSizes", [serializable$9, _dec8$4], function () { + return []; + })), _class2$j)) || _class$m)); + + var _dec$l, _dec2$i, _dec3$h, _class$l, _class2$i, _initializer$h, _initializer2$g, _initializer3$d, _class3$d; + var TiledMap = exports('f5', (_dec$l = ccclass$t('cc.TiledMap'), _dec2$i = requireComponent(UITransform), _dec3$h = type$8(TiledMapAsset), _dec$l(_class$l = _dec2$i(_class$l = (_class2$i = (_class3$d = function (_Component) { + _inheritsLoose(TiledMap, _Component); + function TiledMap() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this._texGrids = new Map(); + _this._textures = []; + _this._tilesets = []; + _this._animations = new Map(); + _this._imageLayers = []; + _this._layers = []; + _this._groups = []; + _this._images = []; + _this._properties = {}; + _this._tileProperties = new Map(); + _this._mapInfo = null; + _this._mapSize = new Size$1(0, 0); + _this._tileSize = new Size$1(0, 0); + _this._mapOrientation = Orientation.ORTHO; + _this._isApplied = false; + _this._tmxFile = _initializer$h && _initializer$h(); + _this._enableCulling = _initializer2$g && _initializer2$g(); + _this.cleanupImageCache = _initializer3$d && _initializer3$d(); + return _this; + } + var _proto = TiledMap.prototype; + _proto.getMapSize = function getMapSize() { + return this._mapSize; + }; + _proto.getTileSize = function getTileSize() { + return this._tileSize; + }; + _proto.getMapOrientation = function getMapOrientation() { + return this._mapOrientation; + }; + _proto.getObjectGroups = function getObjectGroups() { + return this._groups; + }; + _proto.getObjectGroup = function getObjectGroup(groupName) { + var groups = this._groups; + for (var i = 0, l = groups.length; i < l; i++) { + var group = groups[i]; + if (group && group.getGroupName() === groupName) { + return group; + } + } + return null; + }; + _proto.getProperties = function getProperties() { + return this._properties; + }; + _proto.getLayers = function getLayers() { + return this._layers; + }; + _proto.getLayer = function getLayer(layerName) { + var layers = this._layers; + for (var i = 0, l = layers.length; i < l; i++) { + var layer = layers[i]; + if (layer && layer.getLayerName() === layerName) { + return layer; + } + } + return null; + }; + _proto._changeLayer = function _changeLayer(layerName, replaceLayer) { + var layers = this._layers; + for (var i = 0, l = layers.length; i < l; i++) { + var layer = layers[i]; + if (layer && layer.getLayerName() === layerName) { + layers[i] = replaceLayer; + return; + } + } + }; + _proto.getProperty = function getProperty(propertyName) { + return this._properties[propertyName.toString()]; + }; + _proto.getPropertiesForGID = function getPropertiesForGID(gid) { + return this._tileProperties.get(gid); + }; + _proto.__preload = function __preload() { + if (!this._tmxFile) { + return; + } + if (this._isApplied === false) { + this._applyFile(); + this._isApplied = true; + } + }; + _proto.onEnable = function onEnable() { + this.node.on(NodeEventType.ANCHOR_CHANGED, this._syncAnchorPoint, this); + }; + _proto.onDisable = function onDisable() { + this.node.off(NodeEventType.ANCHOR_CHANGED, this._syncAnchorPoint, this); + }; + _proto._applyFile = function _applyFile() { + var spriteFrames = []; + var spriteFramesCache = {}; + var file = this._tmxFile; + if (file) { + var spfNames = file.spriteFrameNames; + var spfSizes = file.spriteFrameSizes; + var fSpriteFrames = file.spriteFrames; + var spfTexturesMap = {}; + var spfTextureSizeMap = {}; + for (var i = 0; i < spfNames.length; ++i) { + var texName = spfNames[i]; + spfTextureSizeMap[texName] = spfSizes[i]; + spriteFrames[i] = fSpriteFrames[i]; + var frame = spriteFrames[i]; + if (frame) { + spriteFramesCache[frame.name] = frame; + spfTexturesMap[texName] = frame; + } + } + var imageLayerTextures = {}; + var texValues = file.imageLayerSpriteFrame; + spfNames = file.imageLayerSpriteFrameNames; + for (var _i = 0; _i < texValues.length; ++_i) { + imageLayerTextures[spfNames[_i]] = texValues[_i]; + } + var tsxFileNames = file.tsxFileNames; + var tsxFiles = file.tsxFiles; + var tsxContentMap = {}; + for (var _i2 = 0; _i2 < tsxFileNames.length; ++_i2) { + if (tsxFileNames[_i2].length > 0) { + tsxContentMap[tsxFileNames[_i2]] = tsxFiles[_i2].text; + } + } + var mapInfo = new TMXMapInfo(file.tmxXmlStr, tsxContentMap, spfTexturesMap, spfTextureSizeMap, imageLayerTextures); + var tilesets = mapInfo.getTilesets(); + if (!tilesets || tilesets.length === 0) { + logID(7241); + } + this._buildWithMapInfo(mapInfo); + } else { + this._releaseMapInfo(); + } + }; + _proto._releaseMapInfo = function _releaseMapInfo() { + var layers = this._layers; + for (var i = 0, l = layers.length; i < l; i++) { + var _layers$i$node$parent, _layers$i$node$parent2; + (_layers$i$node$parent = layers[i].node.parent) === null || _layers$i$node$parent === void 0 ? void 0 : _layers$i$node$parent.off(NodeEventType.SIZE_CHANGED, layers[i].updateCulling, layers[i]); + (_layers$i$node$parent2 = layers[i].node.parent) === null || _layers$i$node$parent2 === void 0 ? void 0 : _layers$i$node$parent2.off(NodeEventType.TRANSFORM_CHANGED, layers[i].updateCulling, layers[i]); + layers[i].node.removeFromParent(); + layers[i].node.destroy(); + } + layers.length = 0; + var groups = this._groups; + for (var _i3 = 0, _l = groups.length; _i3 < _l; _i3++) { + groups[_i3].node.removeFromParent(); + groups[_i3].node.destroy(); + } + groups.length = 0; + var images = this._images; + for (var _i4 = 0, _l2 = images.length; _i4 < _l2; _i4++) { + images[_i4].removeFromParent(); + images[_i4].destroy(); + } + images.length = 0; + }; + _proto._syncAnchorPoint = function _syncAnchorPoint() { + var anchor = this.node._uiProps.uiTransformComp.anchorPoint; + var leftTopX = this.node._uiProps.uiTransformComp.width * anchor.x; + var leftTopY = this.node._uiProps.uiTransformComp.height * (1 - anchor.y); + var i; + var l; + for (i = 0, l = this._layers.length; i < l; i++) { + var layerInfo = this._layers[i]; + var layerNode = layerInfo.node; + layerNode._uiProps.uiTransformComp.setAnchorPoint(anchor); + } + for (i = 0, l = this._groups.length; i < l; i++) { + var groupInfo = this._groups[i]; + var groupNode = groupInfo.node._uiProps.uiTransformComp; + groupNode.anchorX = 0.5; + groupNode.anchorY = 0.5; + var x = groupInfo.offset.x - leftTopX + groupNode.width * groupNode.anchorX; + var y = groupInfo.offset.y + leftTopY - groupNode.height * groupNode.anchorY; + groupInfo.node.setPosition(x, y); + } + for (i = 0, l = this._images.length; i < l; i++) { + var image = this._images[i]._uiProps.uiTransformComp; + image.anchorX = 0.5; + image.anchorY = 0.5; + var _x = this._images[i]._offset.x - leftTopX + image.width * image.anchorX; + var _y = this._images[i]._offset.y + leftTopY - image.height * image.anchorY; + this._images[i].setPosition(_x, _y); + } + }; + _proto._fillAniGrids = function _fillAniGrids(texGrids, animations) { + for (var _iterator = _createForOfIteratorHelperLoose(animations.keys()), _step; !(_step = _iterator()).done;) { + var i = _step.value; + var animation = animations.get(i); + if (!animation) continue; + var frames = animation.frames; + for (var j = 0; j < frames.length; j++) { + var frame = frames[j]; + frame.grid = texGrids.get(frame.tileid); + } + } + }; + _proto._buildLayerAndGroup = function _buildLayerAndGroup() { + var tilesets = this._tilesets; + var texGrids = this._texGrids; + var animations = this._animations; + texGrids.clear(); + for (var i = 0, l = tilesets.length; i < l; ++i) { + var tilesetInfo = tilesets[i]; + if (!tilesetInfo) continue; + if (!tilesetInfo.sourceImage) { + console.warn("Can't find the spriteFrame of tilesets " + i); + continue; + } + fillTextureGrids(tilesetInfo, texGrids, tilesetInfo.sourceImage); + } + this._fillAniGrids(texGrids, animations); + var layers = this._layers; + var groups = this._groups; + var images = this._images; + var oldNodeNames = {}; + for (var _i5 = 0, n = layers.length; _i5 < n; _i5++) { + oldNodeNames[layers[_i5].node.name] = true; + } + for (var _i6 = 0, _n = groups.length; _i6 < _n; _i6++) { + oldNodeNames[groups[_i6].node.name] = true; + } + for (var _i7 = 0, _n2 = images.length; _i7 < _n2; _i7++) { + oldNodeNames[images[_i7].name] = true; + } + layers = this._layers = []; + groups = this._groups = []; + images = this._images = []; + var mapInfo = this._mapInfo; + var node = this.node; + var layerInfos = mapInfo.getAllChildren(); + var textures = this._textures; + var maxWidth = 0; + var maxHeight = 0; + if (layerInfos && layerInfos.length > 0) { + for (var _i8 = 0, len = layerInfos.length; _i8 < len; _i8++) { + var layerInfo = layerInfos[_i8]; + var name = layerInfo.name; + var child = this.node.getChildByName(name); + oldNodeNames[name] = false; + if (!child) { + child = new Node$1(); + child.name = name; + child.layer = node.layer; + node.addChild(child); + } + child.setSiblingIndex(_i8); + child.active = layerInfo.visible; + if (layerInfo instanceof TMXLayerInfo) { + var layer = child.getComponent(TiledLayer); + if (!layer) { + layer = child.addComponent(TiledLayer); + } + layer.init(layerInfo, mapInfo, tilesets, textures, texGrids); + layer.enableCulling = this._enableCulling; + layerInfo.ownTiles = false; + layers.push(layer); + } else if (layerInfo instanceof TMXObjectGroupInfo) { + var group = child.getComponent(TiledObjectGroup); + if (!group) { + group = child.addComponent(TiledObjectGroup); + } + group._init(layerInfo, mapInfo, texGrids); + groups.push(group); + } else if (layerInfo instanceof TMXImageLayerInfo) { + var spriteFrame = layerInfo.sourceImage; + child.layerInfo = layerInfo; + child._offset = new Vec2(layerInfo.offset.x, -layerInfo.offset.y); + var image = child.getComponent(Sprite); + if (!image) { + image = child.addComponent(Sprite); + } + var color = image.color; + color.a *= layerInfo.opacity; + image.spriteFrame = spriteFrame; + var width = spriteFrame.width; + var height = spriteFrame.height; + if (spriteFrame.original) { + width = spriteFrame.originalSize.width; + height = spriteFrame.originalSize.height; + } + child._uiProps.uiTransformComp.setContentSize(width, height); + images.push(child); + } + maxWidth = Math.max(maxWidth, child._uiProps.uiTransformComp.width); + maxHeight = Math.max(maxHeight, child._uiProps.uiTransformComp.height); + } + } + var children = node.children; + for (var _i9 = 0, _n3 = children.length; _i9 < _n3; _i9++) { + var c = children[_i9]; + if (oldNodeNames[c.name]) { + c.destroy(); + } + } + this.node._uiProps.uiTransformComp.setContentSize(maxWidth, maxHeight); + this._syncAnchorPoint(); + }; + _proto._buildWithMapInfo = function _buildWithMapInfo(mapInfo) { + var _this2 = this; + this._mapInfo = mapInfo; + this._mapSize = mapInfo.getMapSize(); + this._tileSize = mapInfo.getTileSize(); + this._mapOrientation = mapInfo.orientation; + this._properties = mapInfo.properties; + this._tileProperties = mapInfo.getTileProperties(); + this._imageLayers = mapInfo.getImageLayers(); + this._animations = mapInfo.getTileAnimations(); + this._tilesets = mapInfo.getTilesets(); + var tilesets = this._tilesets; + this._textures.length = 0; + var totalTextures = []; + for (var i = 0, l = tilesets.length; i < l; ++i) { + var tilesetInfo = tilesets[i]; + if (!tilesetInfo || !tilesetInfo.sourceImage) continue; + this._textures[i] = tilesetInfo.sourceImage; + totalTextures.push(tilesetInfo.sourceImage); + } + for (var _i10 = 0; _i10 < this._imageLayers.length; _i10++) { + var imageLayer = this._imageLayers[_i10]; + if (!imageLayer || !imageLayer.sourceImage) continue; + totalTextures.push(imageLayer.sourceImage); + } + this._buildLayerAndGroup(); + if (this.cleanupImageCache) { + this._textures.forEach(function (tex) { + _this2.doCleanupImageCache(tex); + }); + } + }; + _proto.doCleanupImageCache = function doCleanupImageCache(texture) { + if (texture._image instanceof HTMLImageElement) { + texture._image.src = ''; + } else if (sys.hasFeature(sys.Feature.IMAGE_BITMAP) && texture._image instanceof ImageBitmap) { + if (texture._image.close) texture._image.close(); + } + texture._image = null; + }; + _proto.lateUpdate = function lateUpdate(dt) { + var animations = this._animations; + var texGrids = this._texGrids; + for (var _iterator2 = _createForOfIteratorHelperLoose(animations.keys()), _step2; !(_step2 = _iterator2()).done;) { + var aniGID = _step2.value; + var animation = animations.get(aniGID); + var frames = animation.frames; + var frame = frames[animation.frameIdx]; + animation.dt += dt; + if (frame.duration < animation.dt) { + animation.dt = 0; + animation.frameIdx++; + if (animation.frameIdx >= frames.length) { + animation.frameIdx = 0; + } + frame = frames[animation.frameIdx]; + } + texGrids.set(aniGID, frame.grid); + } + var layers = this.getLayers(); + for (var i = 0, l = layers.length; i < l; i++) { + var layer = layers[i]; + if (layer.hasAnimation() || layer.node.hasChangedFlags) { + layer.markForUpdateRenderData(); + } + } + }; + _createClass(TiledMap, [{ + key: "tmxAsset", + get: function get() { + return this._tmxFile; + }, + set: function set(value) { + if (this._tmxFile !== value || EDITOR) { + this._tmxFile = value; + this._applyFile(); + this._isApplied = true; + } + } + }, { + key: "enableCulling", + get: function get() { + return this._enableCulling; + }, + set: function set(value) { + this._enableCulling = value; + var layers = this._layers; + for (var i = 0; i < layers.length; ++i) { + layers[i].enableCulling = value; + } + } + }]); + return TiledMap; + }(Component), _class3$d.Orientation = Orientation, _class3$d.Property = Property, _class3$d.TileFlag = TileFlag, _class3$d.StaggerAxis = StaggerAxis, _class3$d.StaggerIndex = StaggerIndex, _class3$d.TMXObjectType = TMXObjectType, _class3$d.RenderOrder = RenderOrder, _class3$d), (_initializer$h = applyDecoratedInitializer(_class2$i.prototype, "_tmxFile", [serializable$9], function () { + return null; + }), _applyDecoratedDescriptor(_class2$i.prototype, "tmxAsset", [_dec3$h], Object.getOwnPropertyDescriptor(_class2$i.prototype, "tmxAsset"), _class2$i.prototype), _initializer2$g = applyDecoratedInitializer(_class2$i.prototype, "_enableCulling", [serializable$9], function () { + return true; + }), _initializer3$d = applyDecoratedInitializer(_class2$i.prototype, "cleanupImageCache", [serializable$9], function () { + return true; + })), _class2$i)) || _class$l) || _class$l)); + + var MaxGridsLimit = Math.ceil(65535 / 6); + var vec3_temps = []; + for (var i = 0; i < 4; i++) { + vec3_temps.push(new Vec3()); + } + var _mat4_temp$2 = new Mat4(); + var _vec3u_temp = new Vec3(); + var _leftDown = { + row: 0, + col: 0 + }; + var _uva = { + x: 0, + y: 0 + }; + var _uvb = { + x: 0, + y: 0 + }; + var _uvc = { + x: 0, + y: 0 + }; + var _uvd = { + x: 0, + y: 0 + }; + var _vfOffset = 0; + var _moveX = 0; + var _moveY = 0; + var _fillCount = 0; + var _curTexture = null; + var _tempBuffers; + var _curLayer; + var flipTexture; + var _accessor = null; + var simple = { + ensureAccessor: function ensureAccessor() { + if (!_accessor) { + var device = director.root.device; + director.root.batcher2D; + _accessor = new StaticVBAccessor(device, vfmtPosUvColor, this.vCount); + director.on(Director.EVENT_BEFORE_DRAW, function () { + _accessor.reset(); + }); + } + }, + createData: function createData(layer) { + }, + fillBuffers: function fillBuffers(layer, renderer) { + if (!layer || layer.tiledDataArray.length === 0) return; + var dataArray = layer.tiledDataArray; + var data = dataArray[layer._tiledDataArrayIdx]; + var renderData = data.renderData; + var iBuf = renderData.chunk.meshBuffer.iData; + var indexOffset = renderData.chunk.meshBuffer.indexOffset; + var vertexId = renderData.chunk.vertexOffset; + var quadCount = renderData.vertexCount / 4; + for (var _i = 0; _i < quadCount; _i += 1) { + iBuf[indexOffset] = vertexId; + iBuf[indexOffset + 1] = vertexId + 1; + iBuf[indexOffset + 2] = vertexId + 2; + iBuf[indexOffset + 3] = vertexId + 2; + iBuf[indexOffset + 4] = vertexId + 1; + iBuf[indexOffset + 5] = vertexId + 3; + indexOffset += 6; + vertexId += 4; + } + renderData.chunk.meshBuffer.indexOffset = indexOffset; + }, + updateRenderData: function updateRenderData(comp) { + comp.updateCulling(); + _moveX = comp.leftDownToCenterX; + _moveY = comp.leftDownToCenterY; + if (comp.colorChanged || comp.isCullingDirty() || comp.isUserNodeDirty() || comp.hasAnimation() || comp.hasTiledNode() || comp.node.hasChangedFlags) { + comp.colorChanged = false; + comp.destroyRenderData(); + var leftDown; + var rightTop; + if (comp.enableCulling) { + var cullingRect = comp.cullingRect; + leftDown = cullingRect.leftDown; + rightTop = cullingRect.rightTop; + } else { + leftDown = _leftDown; + rightTop = comp.rightTop; + } + switch (comp.renderOrder) { + case RenderOrder.RightDown: + traverseGrids(leftDown, rightTop, -1, 1, comp); + break; + case RenderOrder.LeftDown: + traverseGrids(leftDown, rightTop, -1, -1, comp); + break; + case RenderOrder.RightUp: + traverseGrids(leftDown, rightTop, 1, 1, comp); + break; + case RenderOrder.LeftUp: + default: + traverseGrids(leftDown, rightTop, 1, -1, comp); + break; + } + comp.setCullingDirty(false); + comp.setUserNodeDirty(false); + } + }, + updateColor: function updateColor(tiled) { + var color = tiled.color; + var colorV = new Float32Array(4); + colorV[0] = color.r / 255; + colorV[1] = color.g / 255; + colorV[2] = color.b / 255; + colorV[3] = color.a / 255; + var rs = tiled.tiledDataArray; + for (var _iterator = _createForOfIteratorHelperLoose(rs), _step; !(_step = _iterator()).done;) { + var r = _step.value; + if (!r.renderData) continue; + var renderData = r.renderData; + var vs = renderData.vData; + for (var _i2 = renderData.vertexStart, l = renderData.vertexCount; _i2 < l; _i2++) { + vs.set(colorV, _i2 * 9 + 5); + } + } + } + }; + function _flipTexture(inGrid, gid) { + if (inGrid._rotated) { + _uva.x = inGrid.r; + _uva.y = inGrid.t; + _uvb.x = inGrid.l; + _uvb.y = inGrid.t; + _uvc.x = inGrid.r; + _uvc.y = inGrid.b; + _uvd.x = inGrid.l; + _uvd.y = inGrid.b; + } else { + _uva.x = inGrid.l; + _uva.y = inGrid.t; + _uvb.x = inGrid.l; + _uvb.y = inGrid.b; + _uvc.x = inGrid.r; + _uvc.y = inGrid.t; + _uvd.x = inGrid.r; + _uvd.y = inGrid.b; + } + var tempVal; + if ((gid & TileFlag.DIAGONAL) >>> 0) { + tempVal = _uvb; + _uvb = _uvc; + _uvc = tempVal; + } + if ((gid & TileFlag.HORIZONTAL) >>> 0) { + tempVal = _uva; + _uva = _uvc; + _uvc = tempVal; + tempVal = _uvb; + _uvb = _uvd; + _uvd = tempVal; + } + if ((gid & TileFlag.VERTICAL) >>> 0) { + tempVal = _uva; + _uva = _uvb; + _uvb = tempVal; + tempVal = _uvc; + _uvc = _uvd; + _uvd = tempVal; + } + } + function packRenderData() { + if (_fillCount < 1 || !_curTexture) return; + var vbCount = 4 * _fillCount; + var ibCount = 6 * _fillCount; + var tiledData = _curLayer.requestTiledRenderData(); + { + tiledData.renderData = RenderData.add(vfmtPosUvColor); + } + tiledData.texture = _curTexture; + var rd = tiledData.renderData; + rd.resize(vbCount, ibCount); + var vb = rd.chunk.vb; + vb.set(_tempBuffers.subarray(0, vbCount * 9), 0); + _fillCount = 0; + _curTexture = null; + } + function traverseGrids(leftDown, rightTop, rowMoveDir, colMoveDir, comp) { + if (rightTop.row < 0 || rightTop.col < 0) return; + _curLayer = comp; + var matrix = comp.node.worldMatrix; + _vfOffset = 0; + var tiledTiles = comp.tiledTiles; + var texGrids = comp.texGrids; + var tiles = comp.tiles; + var vertStep = 9; + var vertStep2 = vertStep * 2; + var vertStep3 = vertStep * 3; + var vertices = comp.vertices; + var rowData; + var col; + var cols; + var row; + var rows; + var colData; + var tileSize; + var grid; + var gid = 0; + var left = 0; + var bottom = 0; + var right = 0; + var top = 0; + var tiledNode; + var colNodesCount = 0; + var isCheckColRange = true; + var diamondTile = false; + flipTexture = _flipTexture; + var color = new Float32Array(4); + color[0] = comp.color.r / 255; + color[1] = comp.color.g / 255; + color[2] = comp.color.b / 255; + color[3] = comp.color.a / 255; + if (rowMoveDir === -1) { + row = rightTop.row; + rows = leftDown.row; + } else { + row = leftDown.row; + rows = rightTop.row; + } + var _tempRows = Math.abs(leftDown.row - rightTop.row) + 1; + var _tempClos = Math.abs(rightTop.col - leftDown.col) + 1; + _tempBuffers = new Float32Array(_tempRows * _tempClos * 9 * 4); + _fillCount = 0; + var vertexBuf = _tempBuffers; + for (; (rows - row) * rowMoveDir >= 0; row += rowMoveDir) { + rowData = vertices[row]; + colNodesCount = comp.getNodesCountByRow(row); + isCheckColRange = rowData && colNodesCount === 0; + if (colMoveDir === 1) { + col = isCheckColRange && leftDown.col < rowData.minCol ? rowData.minCol : leftDown.col; + cols = isCheckColRange && rightTop.col > rowData.maxCol ? rowData.maxCol : rightTop.col; + } else { + col = isCheckColRange && rightTop.col > rowData.maxCol ? rowData.maxCol : rightTop.col; + cols = isCheckColRange && leftDown.col < rowData.minCol ? rowData.minCol : leftDown.col; + } + for (; (cols - col) * colMoveDir >= 0; col += colMoveDir) { + colData = rowData && rowData[col]; + if (colNodesCount > 0) { + packRenderData(); + var nodes = comp.requestSubNodesData(); + var celData = comp.getNodesByRowCol(row, col); + if (celData && celData.count > 0) { + nodes.subNodes = celData.list; + } + } + if (!colData) { + continue; + } + gid = tiles[colData.index]; + grid = texGrids.get((gid & TileFlag.FLIPPED_MASK) >>> 0); + if (!grid) continue; + if (_curTexture !== grid.texture) { + packRenderData(); + _curTexture = grid.texture; + } + tileSize = grid.tileset._tileSize; + left = colData.left - _moveX; + bottom = colData.bottom - _moveY; + right = left + tileSize.width; + top = bottom + tileSize.height; + tiledNode = tiledTiles[colData.index]; + _vfOffset = _fillCount * 4 * 9; + if (!tiledNode) { + { + vec3_temps[0].x = left; + vec3_temps[0].y = top; + vec3_temps[1].x = left; + vec3_temps[1].y = bottom; + vec3_temps[2].x = right; + vec3_temps[2].y = top; + vec3_temps[3].x = right; + vec3_temps[3].y = bottom; + } + vec3_temps[0].transformMat4(matrix); + vertexBuf[_vfOffset] = vec3_temps[0].x; + vertexBuf[_vfOffset + 1] = vec3_temps[0].y; + vertexBuf[_vfOffset + 2] = vec3_temps[0].z; + vec3_temps[1].transformMat4(matrix); + vertexBuf[_vfOffset + vertStep] = vec3_temps[1].x; + vertexBuf[_vfOffset + vertStep + 1] = vec3_temps[1].y; + vertexBuf[_vfOffset + vertStep + 2] = vec3_temps[1].z; + vec3_temps[2].transformMat4(matrix); + vertexBuf[_vfOffset + vertStep2] = vec3_temps[2].x; + vertexBuf[_vfOffset + vertStep2 + 1] = vec3_temps[2].y; + vertexBuf[_vfOffset + vertStep2 + 2] = vec3_temps[2].z; + vec3_temps[3].transformMat4(matrix); + vertexBuf[_vfOffset + vertStep3] = vec3_temps[3].x; + vertexBuf[_vfOffset + vertStep3 + 1] = vec3_temps[3].y; + vertexBuf[_vfOffset + vertStep3 + 2] = vec3_temps[3].z; + vertexBuf.set(color, _vfOffset + 5); + vertexBuf.set(color, _vfOffset + vertStep + 5); + vertexBuf.set(color, _vfOffset + vertStep2 + 5); + vertexBuf.set(color, _vfOffset + vertStep3 + 5); + } else if (tiledNode.node.active) { + fillByTiledNode(tiledNode.node, color, vertexBuf, left, right, top, bottom, diamondTile); + } + flipTexture(grid, gid); + vertexBuf[_vfOffset + 3] = _uva.x; + vertexBuf[_vfOffset + 4] = _uva.y; + vertexBuf[_vfOffset + vertStep + 3] = _uvb.x; + vertexBuf[_vfOffset + vertStep + 4] = _uvb.y; + vertexBuf[_vfOffset + vertStep2 + 3] = _uvc.x; + vertexBuf[_vfOffset + vertStep2 + 4] = _uvc.y; + vertexBuf[_vfOffset + vertStep3 + 3] = _uvd.x; + vertexBuf[_vfOffset + vertStep3 + 4] = _uvd.y; + _fillCount++; + if (_fillCount >= MaxGridsLimit) { + packRenderData(); + } + } + } + packRenderData(); + } + function fillByTiledNode(tiledNode, color, vbuf, left, right, top, bottom, diamondTile) { + var vertStep = 9; + var vertStep2 = vertStep * 2; + var vertStep3 = vertStep * 3; + tiledNode.updateWorldTransform(); + Mat4.fromRTS(_mat4_temp$2, tiledNode.rotation, tiledNode.position, tiledNode.scale); + Vec3.set(_vec3u_temp, -(left + _moveX), -(bottom + _moveY), 0); + Mat4.transform(_mat4_temp$2, _mat4_temp$2, _vec3u_temp); + Mat4.multiply(_mat4_temp$2, tiledNode.parent.worldMatrix, _mat4_temp$2); + var m = _mat4_temp$2; + var tx = m.m12; + var ty = m.m13; + var a = m.m00; + var b = m.m01; + var c = m.m04; + var d = m.m05; + var justTranslate = a === 1 && b === 0 && c === 0 && d === 1; + if (diamondTile) { + var centerX = (left + right) / 2; + var centerY = (top + bottom) / 2; + if (justTranslate) { + vbuf[_vfOffset] = centerX + tx; + vbuf[_vfOffset + 1] = top + ty; + vbuf[_vfOffset + vertStep] = left + tx; + vbuf[_vfOffset + vertStep + 1] = centerY + ty; + vbuf[_vfOffset + vertStep2] = right + tx; + vbuf[_vfOffset + vertStep2 + 1] = centerY + ty; + vbuf[_vfOffset + vertStep3] = centerX + tx; + vbuf[_vfOffset + vertStep3 + 1] = bottom + ty; + } else { + vbuf[_vfOffset] = centerX * a + top * c + tx; + vbuf[_vfOffset + 1] = centerX * b + top * d + ty; + vbuf[_vfOffset + vertStep] = left * a + centerY * c + tx; + vbuf[_vfOffset + vertStep + 1] = left * b + centerY * d + ty; + vbuf[_vfOffset + vertStep2] = right * a + centerY * c + tx; + vbuf[_vfOffset + vertStep2 + 1] = right * b + centerY * d + ty; + vbuf[_vfOffset + vertStep3] = centerX * a + bottom * c + tx; + vbuf[_vfOffset + vertStep3 + 1] = centerX * b + bottom * d + ty; + } + } else if (justTranslate) { + vbuf[_vfOffset] = left + tx; + vbuf[_vfOffset + 1] = top + ty; + vbuf[_vfOffset + vertStep] = left + tx; + vbuf[_vfOffset + vertStep + 1] = bottom + ty; + vbuf[_vfOffset + vertStep2] = right + tx; + vbuf[_vfOffset + vertStep2 + 1] = top + ty; + vbuf[_vfOffset + vertStep3] = right + tx; + vbuf[_vfOffset + vertStep3 + 1] = bottom + ty; + } else { + vbuf[_vfOffset] = left * a + top * c + tx; + vbuf[_vfOffset + 1] = left * b + top * d + ty; + vbuf[_vfOffset + vertStep] = left * a + bottom * c + tx; + vbuf[_vfOffset + vertStep + 1] = left * b + bottom * d + ty; + vbuf[_vfOffset + vertStep2] = right * a + top * c + tx; + vbuf[_vfOffset + vertStep2 + 1] = right * b + top * d + ty; + vbuf[_vfOffset + vertStep3] = right * a + bottom * c + tx; + vbuf[_vfOffset + vertStep3 + 1] = right * b + bottom * d + ty; + } + vbuf.set(color, _vfOffset + 5); + vbuf.set(color, _vfOffset + vertStep + 5); + vbuf.set(color, _vfOffset + vertStep2 + 5); + vbuf.set(color, _vfOffset + vertStep3 + 5); + } + + var tiledLayerAssembler = exports('fb', { + getAssembler: function getAssembler() { + return simple; + } + }); + TiledLayer.Assembler = tiledLayerAssembler; + + var Action = function () { + function Action() { + this.originalTarget = null; + this.target = null; + this.tag = Action.TAG_INVALID; + } + var _proto = Action.prototype; + _proto.clone = function clone() { + var action = new Action(); + action.originalTarget = null; + action.target = null; + action.tag = this.tag; + return action; + }; + _proto.isDone = function isDone() { + return true; + }; + _proto.startWithTarget = function startWithTarget(target) { + this.originalTarget = target; + this.target = target; + }; + _proto.stop = function stop() { + this.target = null; + }; + _proto.step = function step(dt) { + logID(1006); + }; + _proto.update = function update(dt) { + logID(1007); + }; + _proto.getTarget = function getTarget() { + return this.target; + }; + _proto.setTarget = function setTarget(target) { + this.target = target; + }; + _proto.getOriginalTarget = function getOriginalTarget() { + return this.originalTarget; + }; + _proto.setOriginalTarget = function setOriginalTarget(originalTarget) { + this.originalTarget = originalTarget; + }; + _proto.getTag = function getTag() { + return this.tag; + }; + _proto.setTag = function setTag(tag) { + this.tag = tag; + }; + _proto.reverse = function reverse() { + logID(1008); + return null; + }; + _proto.retain = function retain() {}; + _proto.release = function release() {}; + return Action; + }(); + Action.TAG_INVALID = -1; + var FiniteTimeAction = function (_Action) { + _inheritsLoose(FiniteTimeAction, _Action); + function FiniteTimeAction() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Action.call.apply(_Action, [this].concat(args)) || this; + _this._duration = 0; + _this._timesForRepeat = 1; + return _this; + } + var _proto2 = FiniteTimeAction.prototype; + _proto2.getDuration = function getDuration() { + return this._duration * (this._timesForRepeat || 1); + }; + _proto2.setDuration = function setDuration(duration) { + this._duration = duration; + }; + _proto2.clone = function clone() { + return new FiniteTimeAction(); + }; + return FiniteTimeAction; + }(Action); + (function (_Action2) { + _inheritsLoose(Speed, _Action2); + function Speed(action, speed) { + var _this2; + if (speed === void 0) { + speed = 1; + } + _this2 = _Action2.call(this) || this; + _this2._speed = 0; + _this2._innerAction = null; + action && _this2.initWithAction(action, speed); + return _this2; + } + var _proto3 = Speed.prototype; + _proto3.getSpeed = function getSpeed() { + return this._speed; + }; + _proto3.setSpeed = function setSpeed(speed) { + this._speed = speed; + }; + _proto3.initWithAction = function initWithAction(action, speed) { + if (!action) { + errorID(1021); + return false; + } + this._innerAction = action; + this._speed = speed; + return true; + }; + _proto3.clone = function clone() { + var action = new Speed(); + action.initWithAction(this._innerAction.clone(), this._speed); + return action; + }; + _proto3.startWithTarget = function startWithTarget(target) { + Action.prototype.startWithTarget.call(this, target); + this._innerAction.startWithTarget(target); + }; + _proto3.stop = function stop() { + this._innerAction.stop(); + Action.prototype.stop.call(this); + }; + _proto3.step = function step(dt) { + this._innerAction.step(dt * this._speed); + }; + _proto3.isDone = function isDone() { + return this._innerAction.isDone(); + }; + _proto3.reverse = function reverse() { + return new Speed(this._innerAction.reverse(), this._speed); + }; + _proto3.setInnerAction = function setInnerAction(action) { + if (this._innerAction !== action) { + this._innerAction = action; + } + }; + _proto3.getInnerAction = function getInnerAction() { + return this._innerAction; + }; + return Speed; + })(Action); + + var ID_COUNTER = 0; + var HashElement = function HashElement() { + this.actions = []; + this.target = null; + this.actionIndex = 0; + this.currentAction = null; + this.paused = false; + this.lock = false; + }; + var ActionManager = function () { + function ActionManager() { + this._hashTargets = new Map(); + this._arrayTargets = []; + this._currentTarget = void 0; + this._elementPool = []; + } + var _proto = ActionManager.prototype; + _proto._searchElementByTarget = function _searchElementByTarget(arr, target) { + for (var k = 0; k < arr.length; k++) { + if (target === arr[k].target) return arr[k]; + } + return null; + }; + _proto._getElement = function _getElement(target, paused) { + var element = this._elementPool.pop(); + if (!element) { + element = new HashElement(); + } + element.target = target; + element.paused = !!paused; + return element; + }; + _proto._putElement = function _putElement(element) { + element.actions.length = 0; + element.actionIndex = 0; + element.currentAction = null; + element.paused = false; + element.target = null; + element.lock = false; + this._elementPool.push(element); + }; + _proto.addAction = function addAction(action, target, paused) { + if (!action || !target) { + errorID(1000); + return; + } + if (target.uuid == null) { + target.uuid = "_TWEEN_UUID_" + ID_COUNTER++; + } + var element = this._hashTargets.get(target); + if (!element) { + element = this._getElement(target, paused); + this._hashTargets.set(target, element); + this._arrayTargets.push(element); + } else if (!element.actions) { + element.actions = []; + } + element.target = target; + element.actions.push(action); + action.startWithTarget(target); + }; + _proto.removeAllActions = function removeAllActions() { + var locTargets = this._arrayTargets; + for (var i = 0; i < locTargets.length; i++) { + var element = locTargets[i]; + if (element) this._putElement(element); + } + this._arrayTargets.length = 0; + this._hashTargets = new Map(); + }; + _proto.removeAllActionsFromTarget = function removeAllActionsFromTarget(target) { + if (target == null) return; + var element = this._hashTargets.get(target); + if (element) { + element.actions.length = 0; + this._deleteHashElement(element); + } + }; + _proto.removeAction = function removeAction(action) { + if (action == null) return; + var target = action.getOriginalTarget(); + var element = this._hashTargets.get(target); + if (element) { + for (var i = 0; i < element.actions.length; i++) { + if (element.actions[i] === action) { + element.actions.splice(i, 1); + if (element.actionIndex >= i) element.actionIndex--; + break; + } + } + } + }; + _proto._removeActionByTag = function _removeActionByTag(tag, element, target) { + for (var i = 0, l = element.actions.length; i < l; ++i) { + var action = element.actions[i]; + if (action && action.getTag() === tag) { + if (target && action.getOriginalTarget() !== target) { + continue; + } + this._removeActionAtIndex(i, element); + break; + } + } + }; + _proto._removeAllActionsByTag = function _removeAllActionsByTag(tag, element, target) { + for (var i = element.actions.length - 1; i >= 0; --i) { + var action = element.actions[i]; + if (action && action.getTag() === tag) { + if (target && action.getOriginalTarget() !== target) { + continue; + } + this._removeActionAtIndex(i, element); + } + } + }; + _proto.removeActionByTag = function removeActionByTag(tag, target) { + var _this = this; + if (tag === Action.TAG_INVALID) logID(1002); + var hashTargets = this._hashTargets; + if (target) { + var element = hashTargets.get(target); + if (element) { + this._removeActionByTag(tag, element, target); + } + } else { + hashTargets.forEach(function (element) { + _this._removeActionByTag(tag, element); + }); + } + }; + _proto.removeAllActionsByTag = function removeAllActionsByTag(tag, target) { + var _this2 = this; + if (tag === Action.TAG_INVALID) logID(1002); + var hashTargets = this._hashTargets; + if (target) { + var element = hashTargets.get(target); + if (element) { + this._removeAllActionsByTag(tag, element, target); + } + } else { + hashTargets.forEach(function (element) { + _this2._removeAllActionsByTag(tag, element); + }); + } + }; + _proto.getActionByTag = function getActionByTag(tag, target) { + if (tag === Action.TAG_INVALID) logID(1004); + var element = this._hashTargets.get(target); + if (element) { + if (element.actions != null) { + for (var i = 0; i < element.actions.length; ++i) { + var action = element.actions[i]; + if (action && action.getTag() === tag) { + return action; + } + } + } + logID(1005, tag); + } + return null; + }; + _proto.getNumberOfRunningActionsInTarget = function getNumberOfRunningActionsInTarget(target) { + var element = this._hashTargets.get(target); + if (element) { + return element.actions ? element.actions.length : 0; + } + return 0; + }; + _proto.pauseTarget = function pauseTarget(target) { + var element = this._hashTargets.get(target); + if (element) element.paused = true; + }; + _proto.resumeTarget = function resumeTarget(target) { + var element = this._hashTargets.get(target); + if (element) element.paused = false; + }; + _proto.pauseAllRunningActions = function pauseAllRunningActions() { + var idsWithActions = []; + var locTargets = this._arrayTargets; + for (var i = 0; i < locTargets.length; i++) { + var element = locTargets[i]; + if (element && !element.paused) { + element.paused = true; + idsWithActions.push(element.target); + } + } + return idsWithActions; + }; + _proto.resumeTargets = function resumeTargets(targetsToResume) { + if (!targetsToResume) return; + for (var i = 0; i < targetsToResume.length; i++) { + if (targetsToResume[i]) this.resumeTarget(targetsToResume[i]); + } + }; + _proto.pauseTargets = function pauseTargets(targetsToPause) { + if (!targetsToPause) return; + for (var i = 0; i < targetsToPause.length; i++) { + if (targetsToPause[i]) this.pauseTarget(targetsToPause[i]); + } + }; + _proto.purgeSharedManager = function purgeSharedManager() { + legacyCC.director.getScheduler().unscheduleUpdate(this); + }; + _proto._removeActionAtIndex = function _removeActionAtIndex(index, element) { + element.actions[index]; + element.actions.splice(index, 1); + if (element.actionIndex >= index) element.actionIndex--; + if (element.actions.length === 0) { + this._deleteHashElement(element); + } + }; + _proto._deleteHashElement = function _deleteHashElement(element) { + var ret = false; + if (element && !element.lock) { + if (this._hashTargets.get(element.target)) { + this._hashTargets["delete"](element.target); + var targets = this._arrayTargets; + for (var i = 0, l = targets.length; i < l; i++) { + if (targets[i] === element) { + targets.splice(i, 1); + break; + } + } + this._putElement(element); + ret = true; + } + } + return ret; + }; + _proto.update = function update(dt) { + var locTargets = this._arrayTargets; + var locCurrTarget; + for (var elt = 0; elt < locTargets.length; elt++) { + this._currentTarget = locTargets[elt]; + locCurrTarget = this._currentTarget; + var target = locCurrTarget.target; + if (isCCObject(target) && !target.isValid) { + this.removeAllActionsFromTarget(target); + elt--; + continue; + } + if (!locCurrTarget.paused && locCurrTarget.actions) { + locCurrTarget.lock = true; + for (locCurrTarget.actionIndex = 0; locCurrTarget.actionIndex < locCurrTarget.actions.length; locCurrTarget.actionIndex++) { + locCurrTarget.currentAction = locCurrTarget.actions[locCurrTarget.actionIndex]; + if (!locCurrTarget.currentAction) continue; + locCurrTarget.currentAction.step(dt * (this._isActionInternal(locCurrTarget.currentAction) ? locCurrTarget.currentAction.getSpeed() : 1)); + if (locCurrTarget.currentAction && locCurrTarget.currentAction.isDone()) { + locCurrTarget.currentAction.stop(); + var action = locCurrTarget.currentAction; + locCurrTarget.currentAction = null; + this.removeAction(action); + } + locCurrTarget.currentAction = null; + } + locCurrTarget.lock = false; + } + if (locCurrTarget.actions.length === 0) { + if (this._deleteHashElement(locCurrTarget)) { + elt--; + } + } + } + }; + _proto._isActionInternal = function _isActionInternal(action) { + return typeof action._speedMethod !== 'undefined'; + }; + return ActionManager; + }(); + + var TweenSystem = exports('fc', function (_System) { + _inheritsLoose(TweenSystem, _System); + function TweenSystem() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _System.call.apply(_System, [this].concat(args)) || this; + _this.actionMgr = new ActionManager(); + return _this; + } + var _proto = TweenSystem.prototype; + _proto.update = function update(dt) { + { + this.actionMgr.update(dt); + } + }; + _createClass(TweenSystem, [{ + key: "ActionManager", + get: function get() { + return this.actionMgr; + } + }]); + return TweenSystem; + }(System)); + TweenSystem.ID = 'TWEEN'; + TweenSystem.instance = void 0; + director.on(Director.EVENT_INIT, function () { + var sys = new TweenSystem(); + TweenSystem.instance = sys; + director.registerSystem(TweenSystem.ID, sys, System.Priority.MEDIUM); + }); + + var ActionInstant = function (_FiniteTimeAction) { + _inheritsLoose(ActionInstant, _FiniteTimeAction); + function ActionInstant() { + return _FiniteTimeAction.apply(this, arguments) || this; + } + var _proto = ActionInstant.prototype; + _proto.isDone = function isDone() { + return true; + }; + _proto.step = function step(dt) { + this.update(1); + }; + _proto.update = function update(dt) {}; + _proto.reverse = function reverse() { + return this.clone(); + }; + _proto.clone = function clone() { + return new ActionInstant(); + }; + return ActionInstant; + }(FiniteTimeAction); + var Show = function (_ActionInstant) { + _inheritsLoose(Show, _ActionInstant); + function Show() { + return _ActionInstant.apply(this, arguments) || this; + } + var _proto2 = Show.prototype; + _proto2.update = function update(dt) { + var _renderComps = this.target.getComponentsInChildren(Renderer); + for (var i = 0; i < _renderComps.length; ++i) { + var render = _renderComps[i]; + render.enabled = true; + } + }; + _proto2.reverse = function reverse() { + return new Hide(); + }; + _proto2.clone = function clone() { + return new Show(); + }; + return Show; + }(ActionInstant); + function show() { + return new Show(); + } + var Hide = function (_ActionInstant2) { + _inheritsLoose(Hide, _ActionInstant2); + function Hide() { + return _ActionInstant2.apply(this, arguments) || this; + } + var _proto3 = Hide.prototype; + _proto3.update = function update(dt) { + var _renderComps = this.target.getComponentsInChildren(Renderer); + for (var i = 0; i < _renderComps.length; ++i) { + var render = _renderComps[i]; + render.enabled = false; + } + }; + _proto3.reverse = function reverse() { + return new Show(); + }; + _proto3.clone = function clone() { + return new Hide(); + }; + return Hide; + }(ActionInstant); + function hide() { + return new Hide(); + } + (function (_ActionInstant3) { + _inheritsLoose(ToggleVisibility, _ActionInstant3); + function ToggleVisibility() { + return _ActionInstant3.apply(this, arguments) || this; + } + var _proto4 = ToggleVisibility.prototype; + _proto4.update = function update(dt) { + var _renderComps = this.target.getComponentsInChildren(Renderer); + for (var i = 0; i < _renderComps.length; ++i) { + var render = _renderComps[i]; + render.enabled = !render.enabled; + } + }; + _proto4.reverse = function reverse() { + return new ToggleVisibility(); + }; + _proto4.clone = function clone() { + return new ToggleVisibility(); + }; + return ToggleVisibility; + })(ActionInstant); + var RemoveSelf = function (_ActionInstant4) { + _inheritsLoose(RemoveSelf, _ActionInstant4); + function RemoveSelf(isNeedCleanUp) { + var _this; + _this = _ActionInstant4.call(this) || this; + _this._isNeedCleanUp = true; + isNeedCleanUp !== undefined && _this.init(isNeedCleanUp); + return _this; + } + var _proto5 = RemoveSelf.prototype; + _proto5.update = function update(dt) { + this.target.removeFromParent(); + if (this._isNeedCleanUp) { + this.target.destroy(); + } + }; + _proto5.init = function init(isNeedCleanUp) { + this._isNeedCleanUp = isNeedCleanUp; + return true; + }; + _proto5.reverse = function reverse() { + return new RemoveSelf(this._isNeedCleanUp); + }; + _proto5.clone = function clone() { + return new RemoveSelf(this._isNeedCleanUp); + }; + return RemoveSelf; + }(ActionInstant); + function removeSelf(isNeedCleanUp) { + return new RemoveSelf(isNeedCleanUp); + } + var CallFunc = function (_ActionInstant5) { + _inheritsLoose(CallFunc, _ActionInstant5); + function CallFunc(selector, selectorTarget, data) { + var _this2; + _this2 = _ActionInstant5.call(this) || this; + _this2._selectorTarget = null; + _this2._function = null; + _this2._data = null; + _this2.initWithFunction(selector, selectorTarget, data); + return _this2; + } + var _proto6 = CallFunc.prototype; + _proto6.initWithFunction = function initWithFunction(selector, selectorTarget, data) { + if (selector) { + this._function = selector; + } + if (selectorTarget) { + this._selectorTarget = selectorTarget; + } + if (data !== undefined) { + this._data = data; + } + return true; + }; + _proto6.execute = function execute() { + if (this._function) { + this._function.call(this._selectorTarget, this.target, this._data); + } + }; + _proto6.update = function update(dt) { + this.execute(); + }; + _proto6.getTargetCallback = function getTargetCallback() { + return this._selectorTarget; + }; + _proto6.setTargetCallback = function setTargetCallback(sel) { + if (sel !== this._selectorTarget) { + if (this._selectorTarget) { + this._selectorTarget = null; + } + this._selectorTarget = sel; + } + }; + _proto6.clone = function clone() { + var action = new CallFunc(); + action.initWithFunction(this._function, this._selectorTarget, this._data); + return action; + }; + return CallFunc; + }(ActionInstant); + function callFunc(selector, selectorTarget, data) { + return new CallFunc(selector, selectorTarget, data); + } + + var _class2$h, _class5; + var ActionInterval = function (_FiniteTimeAction) { + _inheritsLoose(ActionInterval, _FiniteTimeAction); + function ActionInterval(d) { + var _this; + _this = _FiniteTimeAction.call(this) || this; + _this.MAX_VALUE = 2; + _this._elapsed = 0; + _this._firstTick = false; + _this._easeList = []; + _this._speed = 1; + _this._repeatForever = false; + _this._repeatMethod = false; + _this._speedMethod = false; + if (d !== undefined && !isNaN(d)) { + _this.initWithDuration(d); + } + return _this; + } + var _proto = ActionInterval.prototype; + _proto.getElapsed = function getElapsed() { + return this._elapsed; + }; + _proto.initWithDuration = function initWithDuration(d) { + this._duration = d === 0 ? macro.FLT_EPSILON : d; + this._elapsed = 0; + this._firstTick = true; + return true; + }; + _proto.isDone = function isDone() { + return this._elapsed >= this._duration; + }; + _proto._cloneDecoration = function _cloneDecoration(action) { + action._repeatForever = this._repeatForever; + action._speed = this._speed; + action._timesForRepeat = this._timesForRepeat; + action._easeList = this._easeList; + action._speedMethod = this._speedMethod; + action._repeatMethod = this._repeatMethod; + }; + _proto._reverseEaseList = function _reverseEaseList(action) { + if (this._easeList) { + action._easeList = []; + for (var i = 0; i < this._easeList.length; i++) { + action._easeList.push(this._easeList[i]); + } + } + }; + _proto.clone = function clone() { + var action = new ActionInterval(this._duration); + this._cloneDecoration(action); + return action; + }; + _proto.easing = function easing(easeObj) { + if (this._easeList) this._easeList.length = 0;else this._easeList = []; + for (var i = 0; i < arguments.length; i++) this._easeList.push(arguments[i]); + return this; + }; + _proto._computeEaseTime = function _computeEaseTime(dt) { + return dt; + }; + _proto.step = function step(dt) { + if (this._firstTick) { + this._firstTick = false; + this._elapsed = 0; + } else this._elapsed += dt; + var t = this._elapsed / (this._duration > 0.0000001192092896 ? this._duration : 0.0000001192092896); + t = t < 1 ? t : 1; + this.update(t > 0 ? t : 0); + if (this._repeatMethod && this._timesForRepeat > 1 && this.isDone()) { + if (!this._repeatForever) { + this._timesForRepeat--; + } + this.startWithTarget(this.target); + this.step(this._elapsed - this._duration); + } + }; + _proto.startWithTarget = function startWithTarget(target) { + Action.prototype.startWithTarget.call(this, target); + this._elapsed = 0; + this._firstTick = true; + }; + _proto.reverse = function reverse() { + logID(1010); + return this; + }; + _proto.setAmplitudeRate = function setAmplitudeRate(amp) { + logID(1011); + }; + _proto.getAmplitudeRate = function getAmplitudeRate() { + logID(1012); + return 0; + }; + _proto.speed = function speed(_speed) { + if (_speed <= 0) { + logID(1013); + return this; + } + this._speedMethod = true; + this._speed *= _speed; + return this; + }; + _proto.getSpeed = function getSpeed() { + return this._speed; + }; + _proto.setSpeed = function setSpeed(speed) { + this._speed = speed; + return this; + }; + _proto.repeat = function repeat(times) { + times = Math.round(times); + if (isNaN(times) || times < 1) { + logID(1014); + return this; + } + this._repeatMethod = true; + this._timesForRepeat *= times; + return this; + }; + _proto.repeatForever = function repeatForever() { + this._repeatMethod = true; + this._timesForRepeat = this.MAX_VALUE; + this._repeatForever = true; + return this; + }; + return ActionInterval; + }(FiniteTimeAction); + var Sequence = function (_ActionInterval) { + _inheritsLoose(Sequence, _ActionInterval); + function Sequence(tempArray) { + var _this2; + _this2 = _ActionInterval.call(this) || this; + _this2._actions = []; + _this2._split = 0; + _this2._last = 0; + _this2._reversed = false; + var paramArray = tempArray instanceof Array ? tempArray : arguments; + if (paramArray.length === 1) { + errorID(1019); + return _assertThisInitialized(_this2); + } + var last = paramArray.length - 1; + if (last >= 0 && paramArray[last] == null) logID(1015); + if (last >= 0) { + var prev = paramArray[0]; + var action1; + for (var i = 1; i < last; i++) { + if (paramArray[i]) { + action1 = prev; + prev = Sequence._actionOneTwo(action1, paramArray[i]); + } + } + _this2.initWithTwoActions(prev, paramArray[last]); + } + return _this2; + } + var _proto2 = Sequence.prototype; + _proto2.initWithTwoActions = function initWithTwoActions(actionOne, actionTwo) { + if (!actionOne || !actionTwo) { + errorID(1025); + return false; + } + var durationOne = actionOne._duration; + var durationTwo = actionTwo._duration; + durationOne *= actionOne._repeatMethod ? actionOne._timesForRepeat : 1; + durationTwo *= actionTwo._repeatMethod ? actionTwo._timesForRepeat : 1; + var d = durationOne + durationTwo; + this.initWithDuration(d); + this._actions[0] = actionOne; + this._actions[1] = actionTwo; + return true; + }; + _proto2.clone = function clone() { + var action = new Sequence(); + this._cloneDecoration(action); + action.initWithTwoActions(this._actions[0].clone(), this._actions[1].clone()); + return action; + }; + _proto2.startWithTarget = function startWithTarget(target) { + ActionInterval.prototype.startWithTarget.call(this, target); + this._split = this._actions[0]._duration / this._duration; + this._split *= this._actions[0]._repeatMethod ? this._actions[0]._timesForRepeat : 1; + this._last = -1; + }; + _proto2.stop = function stop() { + if (this._last !== -1) this._actions[this._last].stop(); + Action.prototype.stop.call(this); + }; + _proto2.update = function update(dt) { + var new_t; + var found = 0; + var locSplit = this._split; + var locActions = this._actions; + var locLast = this._last; + var actionFound; + dt = this._computeEaseTime(dt); + if (dt < locSplit) { + new_t = locSplit !== 0 ? dt / locSplit : 1; + if (found === 0 && locLast === 1 && this._reversed) { + locActions[1].update(0); + locActions[1].stop(); + } + } else { + found = 1; + new_t = locSplit === 1 ? 1 : (dt - locSplit) / (1 - locSplit); + if (locLast === -1) { + locActions[0].startWithTarget(this.target); + locActions[0].update(1); + locActions[0].stop(); + } + if (locLast === 0) { + locActions[0].update(1); + locActions[0].stop(); + } + } + actionFound = locActions[found]; + if (locLast === found && actionFound.isDone()) return; + if (locLast !== found) actionFound.startWithTarget(this.target); + new_t *= actionFound._timesForRepeat; + actionFound.update(new_t > 1 ? new_t % 1 : new_t); + this._last = found; + }; + _proto2.reverse = function reverse() { + var action = Sequence._actionOneTwo(this._actions[1].reverse(), this._actions[0].reverse()); + this._cloneDecoration(action); + this._reverseEaseList(action); + action._reversed = true; + return action; + }; + return Sequence; + }(ActionInterval); + _class2$h = Sequence; + Sequence._actionOneTwo = function (actionOne, actionTwo) { + var sequence = new _class2$h(); + sequence.initWithTwoActions(actionOne, actionTwo); + return sequence; + }; + function sequence(tempArray) { + var paramArray = tempArray instanceof Array ? tempArray : arguments; + if (paramArray.length === 1) { + errorID(1019); + return null; + } + var last = paramArray.length - 1; + if (last >= 0 && paramArray[last] == null) logID(1015); + var result = null; + if (last >= 0) { + result = paramArray[0]; + for (var i = 1; i <= last; i++) { + if (paramArray[i]) { + result = Sequence._actionOneTwo(result, paramArray[i]); + } + } + } + return result; + } + var Repeat = function (_ActionInterval2) { + _inheritsLoose(Repeat, _ActionInterval2); + function Repeat(action, times) { + var _this3; + _this3 = _ActionInterval2.call(this) || this; + _this3._times = 0; + _this3._total = 0; + _this3._nextDt = 0; + _this3._actionInstant = false; + _this3._innerAction = null; + times !== undefined && _this3.initWithAction(action, times); + return _this3; + } + var _proto3 = Repeat.prototype; + _proto3.initWithAction = function initWithAction(action, times) { + var duration = action._duration * times; + if (this.initWithDuration(duration)) { + this._times = times; + this._innerAction = action; + if (action instanceof ActionInstant) { + this._actionInstant = true; + this._times -= 1; + } + this._total = 0; + return true; + } + return false; + }; + _proto3.clone = function clone() { + var action = new Repeat(); + this._cloneDecoration(action); + action.initWithAction(this._innerAction.clone(), this._times); + return action; + }; + _proto3.startWithTarget = function startWithTarget(target) { + this._total = 0; + this._nextDt = this._innerAction._duration / this._duration; + ActionInterval.prototype.startWithTarget.call(this, target); + this._innerAction.startWithTarget(target); + }; + _proto3.stop = function stop() { + this._innerAction.stop(); + Action.prototype.stop.call(this); + }; + _proto3.update = function update(dt) { + dt = this._computeEaseTime(dt); + var locInnerAction = this._innerAction; + var locDuration = this._duration; + var locTimes = this._times; + var locNextDt = this._nextDt; + if (dt >= locNextDt) { + while (dt > locNextDt && this._total < locTimes) { + locInnerAction.update(1); + this._total++; + locInnerAction.stop(); + locInnerAction.startWithTarget(this.target); + locNextDt += locInnerAction._duration / locDuration; + this._nextDt = locNextDt > 1 ? 1 : locNextDt; + } + if (dt >= 1.0 && this._total < locTimes) { + locInnerAction.update(1); + this._total++; + } + if (!this._actionInstant) { + if (this._total === locTimes) { + locInnerAction.stop(); + } else { + locInnerAction.update(dt - (locNextDt - locInnerAction._duration / locDuration)); + } + } + } else { + locInnerAction.update(dt * locTimes % 1.0); + } + }; + _proto3.isDone = function isDone() { + return this._total === this._times; + }; + _proto3.reverse = function reverse() { + var action = new Repeat(this._innerAction.reverse(), this._times); + this._cloneDecoration(action); + this._reverseEaseList(action); + return action; + }; + _proto3.setInnerAction = function setInnerAction(action) { + if (this._innerAction !== action) { + this._innerAction = action; + } + }; + _proto3.getInnerAction = function getInnerAction() { + return this._innerAction; + }; + return Repeat; + }(ActionInterval); + function repeat(action, times) { + return new Repeat(action, times); + } + var RepeatForever = function (_ActionInterval3) { + _inheritsLoose(RepeatForever, _ActionInterval3); + function RepeatForever(action) { + var _this4; + _this4 = _ActionInterval3.call(this) || this; + _this4._innerAction = null; + action && _this4.initWithAction(action); + return _this4; + } + var _proto4 = RepeatForever.prototype; + _proto4.initWithAction = function initWithAction(action) { + if (!action) { + errorID(1026); + return false; + } + this._innerAction = action; + return true; + }; + _proto4.clone = function clone() { + var action = new RepeatForever(); + this._cloneDecoration(action); + action.initWithAction(this._innerAction.clone()); + return action; + }; + _proto4.startWithTarget = function startWithTarget(target) { + ActionInterval.prototype.startWithTarget.call(this, target); + this._innerAction.startWithTarget(target); + }; + _proto4.step = function step(dt) { + var locInnerAction = this._innerAction; + locInnerAction.step(dt); + if (locInnerAction.isDone()) { + locInnerAction.startWithTarget(this.target); + locInnerAction.step(locInnerAction.getElapsed() - locInnerAction._duration); + } + }; + _proto4.isDone = function isDone() { + return false; + }; + _proto4.reverse = function reverse() { + var action = new RepeatForever(this._innerAction.reverse()); + this._cloneDecoration(action); + this._reverseEaseList(action); + return action; + }; + _proto4.setInnerAction = function setInnerAction(action) { + if (this._innerAction !== action) { + this._innerAction = action; + } + }; + _proto4.getInnerAction = function getInnerAction() { + return this._innerAction; + }; + return RepeatForever; + }(ActionInterval); + function repeatForever(action) { + return new RepeatForever(action); + } + var Spawn = function (_ActionInterval4) { + _inheritsLoose(Spawn, _ActionInterval4); + function Spawn(tempArray) { + var _this5; + _this5 = _ActionInterval4.call(this) || this; + _this5._one = null; + _this5._two = null; + var paramArray = tempArray instanceof Array ? tempArray : arguments; + if (paramArray.length === 1) { + errorID(1020); + return _assertThisInitialized(_this5); + } + var last = paramArray.length - 1; + if (last >= 0 && paramArray[last] == null) logID(1015); + if (last >= 0) { + var prev = paramArray[0]; + var action1; + for (var i = 1; i < last; i++) { + if (paramArray[i]) { + action1 = prev; + prev = Spawn._actionOneTwo(action1, paramArray[i]); + } + } + _this5.initWithTwoActions(prev, paramArray[last]); + } + return _this5; + } + var _proto5 = Spawn.prototype; + _proto5.initWithTwoActions = function initWithTwoActions(action1, action2) { + if (!action1 || !action2) { + errorID(1027); + return false; + } + var ret = false; + var d1 = action1._duration; + var d2 = action2._duration; + if (this.initWithDuration(Math.max(d1, d2))) { + this._one = action1; + this._two = action2; + if (d1 > d2) { + this._two = Sequence._actionOneTwo(action2, delayTime(d1 - d2)); + } else if (d1 < d2) { + this._one = Sequence._actionOneTwo(action1, delayTime(d2 - d1)); + } + ret = true; + } + return ret; + }; + _proto5.clone = function clone() { + var action = new Spawn(); + this._cloneDecoration(action); + action.initWithTwoActions(this._one.clone(), this._two.clone()); + return action; + }; + _proto5.startWithTarget = function startWithTarget(target) { + ActionInterval.prototype.startWithTarget.call(this, target); + this._one.startWithTarget(target); + this._two.startWithTarget(target); + }; + _proto5.stop = function stop() { + this._one.stop(); + this._two.stop(); + Action.prototype.stop.call(this); + }; + _proto5.update = function update(dt) { + dt = this._computeEaseTime(dt); + if (this._one) this._one.update(dt); + if (this._two) this._two.update(dt); + }; + _proto5.reverse = function reverse() { + var action = Spawn._actionOneTwo(this._one.reverse(), this._two.reverse()); + this._cloneDecoration(action); + this._reverseEaseList(action); + return action; + }; + return Spawn; + }(ActionInterval); + _class5 = Spawn; + Spawn._actionOneTwo = function (action1, action2) { + var pSpawn = new _class5(); + pSpawn.initWithTwoActions(action1, action2); + return pSpawn; + }; + function spawn(tempArray) { + var paramArray = tempArray instanceof Array ? tempArray : arguments; + if (paramArray.length === 1) { + errorID(1020); + return null; + } + if (paramArray.length > 0 && paramArray[paramArray.length - 1] == null) logID(1015); + var prev = paramArray[0]; + for (var i = 1; i < paramArray.length; i++) { + if (paramArray[i] != null) prev = Spawn._actionOneTwo(prev, paramArray[i]); + } + return prev; + } + var DelayTime = function (_ActionInterval5) { + _inheritsLoose(DelayTime, _ActionInterval5); + function DelayTime() { + return _ActionInterval5.apply(this, arguments) || this; + } + var _proto6 = DelayTime.prototype; + _proto6.update = function update(dt) {}; + _proto6.reverse = function reverse() { + var action = new DelayTime(this._duration); + this._cloneDecoration(action); + this._reverseEaseList(action); + return action; + }; + _proto6.clone = function clone() { + var action = new DelayTime(); + this._cloneDecoration(action); + action.initWithDuration(this._duration); + return action; + }; + return DelayTime; + }(ActionInterval); + function delayTime(d) { + return new DelayTime(d); + } + var ReverseTime = function (_ActionInterval6) { + _inheritsLoose(ReverseTime, _ActionInterval6); + function ReverseTime(action) { + var _this6; + _this6 = _ActionInterval6.call(this) || this; + _this6._other = null; + action && _this6.initWithAction(action); + return _this6; + } + var _proto7 = ReverseTime.prototype; + _proto7.initWithAction = function initWithAction(action) { + if (!action) { + errorID(1028); + return false; + } + if (action === this._other) { + errorID(1029); + return false; + } + if (ActionInterval.prototype.initWithDuration.call(this, action._duration)) { + this._other = action; + return true; + } + return false; + }; + _proto7.clone = function clone() { + var action = new ReverseTime(); + this._cloneDecoration(action); + action.initWithAction(this._other.clone()); + return action; + }; + _proto7.startWithTarget = function startWithTarget(target) { + ActionInterval.prototype.startWithTarget.call(this, target); + this._other.startWithTarget(target); + }; + _proto7.update = function update(dt) { + dt = this._computeEaseTime(dt); + if (this._other) this._other.update(1 - dt); + }; + _proto7.reverse = function reverse() { + return this._other.clone(); + }; + _proto7.stop = function stop() { + this._other.stop(); + Action.prototype.stop.call(this); + }; + return ReverseTime; + }(ActionInterval); + function reverseTime(action) { + return new ReverseTime(action); + } + + function TweenEasingAdapter(easingName) { + var initialChar = easingName.charAt(0); + if (/[A-Z]/.test(initialChar)) { + easingName = easingName.replace(initialChar, initialChar.toLowerCase()); + var arr = easingName.split('-'); + if (arr.length === 2) { + var str0 = arr[0]; + if (str0 === 'linear') { + easingName = 'linear'; + } else { + var str1 = arr[1]; + switch (str0) { + case 'quadratic': + easingName = "quad" + str1; + break; + case 'quartic': + easingName = "quart" + str1; + break; + case 'quintic': + easingName = "quint" + str1; + break; + case 'sinusoidal': + easingName = "sine" + str1; + break; + case 'exponential': + easingName = "expo" + str1; + break; + case 'circular': + easingName = "circ" + str1; + break; + default: + easingName = str0 + str1; + break; + } + } + } + } + return easingName; + } + function TweenOptionChecker(opts) { + var header = ' [Tween:] '; + var message = " option is not support in v + " + engineVersion; + var _opts = opts; + if (_opts.delay) { + warn(header + "delay" + message); + } + if (_opts.repeat) { + warn(header + "repeat" + message); + } + if (_opts.repeatDelay) { + warn(header + "repeatDelay" + message); + } + if (_opts.interpolation) { + warn(header + "interpolation" + message); + } + if (_opts.onStop) { + warn(header + "onStop" + message); + } + } + var TweenAction = exports('fg', function (_ActionInterval) { + _inheritsLoose(TweenAction, _ActionInterval); + function TweenAction(duration, props, opts) { + var _this; + _this = _ActionInterval.call(this) || this; + _this._opts = void 0; + _this._props = void 0; + _this._originProps = void 0; + if (opts == null) { + opts = Object.create(null); + } else { + TweenOptionChecker(opts); + if (opts.easing && typeof opts.easing === 'string') { + opts.easing = TweenEasingAdapter(opts.easing); + } + if (!opts.progress) { + opts.progress = _this.progress; + } + if (opts.easing && typeof opts.easing === 'string') { + var easingName = opts.easing; + opts.easing = easing[easingName]; + if (!opts.easing) { + warnID(1031, easingName); + } + } + } + _this._opts = opts; + _this._props = Object.create(null); + for (var name in props) { + if (!props.hasOwnProperty(name)) continue; + var value = props[name]; + if (typeof value === 'function') { + value = value(); + } + if (value == null || typeof value === 'string') continue; + var customEasing = void 0; + var progress = void 0; + if (value.value !== undefined && (value.easing || value.progress)) { + if (typeof value.easing === 'string') { + customEasing = easing[value.easing]; + if (!customEasing) warnID(1031, value.easing); + } else { + customEasing = value.easing; + } + progress = value.progress; + value = value.value; + } + var prop = Object.create(null); + prop.value = value; + prop.easing = customEasing; + prop.progress = progress; + _this._props[name] = prop; + } + _this._originProps = props; + _this.initWithDuration(duration); + return _this; + } + var _proto = TweenAction.prototype; + _proto.clone = function clone() { + var action = new TweenAction(this._duration, this._originProps, this._opts); + this._cloneDecoration(action); + return action; + }; + _proto.startWithTarget = function startWithTarget(target) { + ActionInterval.prototype.startWithTarget.call(this, target); + var relative = !!this._opts.relative; + var props = this._props; + for (var property in props) { + var _t = target[property]; + if (_t === undefined) { + continue; + } + var prop = props[property]; + var value = prop.value; + if (typeof _t === 'number') { + prop.start = _t; + prop.current = _t; + prop.end = relative ? _t + value : value; + } else if (typeof _t === 'object') { + if (prop.start == null) { + prop.start = {}; + prop.current = {}; + prop.end = {}; + } + for (var k in value) { + if (isNaN(_t[k])) continue; + prop.start[k] = _t[k]; + prop.current[k] = _t[k]; + prop.end[k] = relative ? _t[k] + value[k] : value[k]; + } + } + } + if (this._opts.onStart) { + this._opts.onStart(this.target); + } + }; + _proto.update = function update(t) { + var target = this.target; + if (!target) return; + var props = this._props; + var opts = this._opts; + var easingTime = t; + if (opts.easing) easingTime = opts.easing(t); + var progress = opts.progress; + for (var name in props) { + var prop = props[name]; + var time = prop.easing ? prop.easing(t) : easingTime; + var interpolation = prop.progress ? prop.progress : progress; + var start = prop.start; + var end = prop.end; + if (typeof start === 'number') { + prop.current = interpolation(start, end, prop.current, time); + } else if (typeof start === 'object') { + for (var k in start) { + prop.current[k] = interpolation(start[k], end[k], prop.current[k], time); + } + } + target[name] = prop.current; + } + if (opts.onUpdate) { + opts.onUpdate(this.target, t); + } + if (t === 1 && opts.onComplete) { + opts.onComplete(this.target); + } + }; + _proto.progress = function progress(start, end, current, t) { + return start + (end - start) * t; + }; + return TweenAction; + }(ActionInterval)); + + var SetAction = function (_ActionInstant) { + _inheritsLoose(SetAction, _ActionInstant); + function SetAction(props) { + var _this; + _this = _ActionInstant.call(this) || this; + _this._props = void 0; + _this._props = {}; + props !== undefined && _this.init(props); + return _this; + } + var _proto = SetAction.prototype; + _proto.init = function init(props) { + for (var name in props) { + this._props[name] = props[name]; + } + return true; + }; + _proto.update = function update() { + var props = this._props; + var target = this.target; + for (var name in props) { + target[name] = props[name]; + } + }; + _proto.clone = function clone() { + var action = new SetAction(); + action.init(this._props); + return action; + }; + return SetAction; + }(ActionInstant); + + var Tween = exports('ff', function () { + function Tween(target) { + this._actions = []; + this._finalAction = null; + this._target = null; + this._tag = Action.TAG_INVALID; + this._target = target === undefined ? null : target; + } + var _proto = Tween.prototype; + _proto.tag = function tag(_tag) { + this._tag = _tag; + return this; + }; + _proto.then = function then(other) { + if (other instanceof Action) { + this._actions.push(other.clone()); + } else { + this._actions.push(other._union()); + } + return this; + }; + _proto.target = function target(_target) { + this._target = _target; + return this; + }; + _proto.start = function start() { + if (!this._target) { + warn('Please set target to tween first'); + return this; + } + if (this._finalAction) { + TweenSystem.instance.ActionManager.removeAction(this._finalAction); + } + this._finalAction = this._union(); + this._finalAction.setTag(this._tag); + TweenSystem.instance.ActionManager.addAction(this._finalAction, this._target, false); + return this; + }; + _proto.stop = function stop() { + if (this._finalAction) { + TweenSystem.instance.ActionManager.removeAction(this._finalAction); + } + return this; + }; + _proto.clone = function clone(target) { + var action = this._union(); + return tween(target).then(action.clone()); + }; + _proto.union = function union() { + var action = this._union(); + this._actions.length = 0; + this._actions.push(action); + return this; + }; + _proto.to = function to(duration, props, opts) { + opts = opts || Object.create(null); + opts.relative = false; + var action = new TweenAction(duration, props, opts); + this._actions.push(action); + return this; + }; + _proto.by = function by(duration, props, opts) { + opts = opts || Object.create(null); + opts.relative = true; + var action = new TweenAction(duration, props, opts); + this._actions.push(action); + return this; + }; + _proto.set = function set(props) { + var action = new SetAction(props); + this._actions.push(action); + return this; + }; + _proto.delay = function delay(duration) { + var action = delayTime(duration); + this._actions.push(action); + return this; + }; + _proto.call = function call(callback) { + var action = callFunc(callback); + this._actions.push(action); + return this; + }; + _proto.sequence = function sequence() { + var action = Tween._wrappedSequence.apply(Tween, arguments); + this._actions.push(action); + return this; + }; + _proto.parallel = function parallel() { + var action = Tween._wrappedParallel.apply(Tween, arguments); + this._actions.push(action); + return this; + }; + _proto.repeat = function repeat$1(repeatTimes, embedTween) { + if (repeatTimes === Infinity) { + return this.repeatForever(embedTween); + } + var actions = this._actions; + var action; + if (embedTween instanceof Tween) { + action = embedTween._union(); + } else { + action = actions.pop(); + } + actions.push(repeat(action, repeatTimes)); + return this; + }; + _proto.repeatForever = function repeatForever$1(embedTween) { + var actions = this._actions; + var action; + if (embedTween instanceof Tween) { + action = embedTween._union(); + } else { + action = actions.pop(); + } + actions.push(repeatForever(action)); + return this; + }; + _proto.reverseTime = function reverseTime$1(embedTween) { + var actions = this._actions; + var action; + if (embedTween instanceof Tween) { + action = embedTween._union(); + } else { + action = actions.pop(); + } + actions.push(reverseTime(action)); + return this; + }; + _proto.hide = function hide$1() { + var action = hide(); + this._actions.push(action); + return this; + }; + _proto.show = function show$1() { + var action = show(); + this._actions.push(action); + return this; + }; + _proto.removeSelf = function removeSelf$1() { + var action = removeSelf(false); + this._actions.push(action); + return this; + }; + _proto.destroySelf = function destroySelf() { + var action = removeSelf(true); + this._actions.push(action); + return this; + }; + Tween.stopAll = function stopAll() { + TweenSystem.instance.ActionManager.removeAllActions(); + }; + Tween.stopAllByTag = function stopAllByTag(tag, target) { + TweenSystem.instance.ActionManager.removeAllActionsByTag(tag, target); + }; + Tween.stopAllByTarget = function stopAllByTarget(target) { + TweenSystem.instance.ActionManager.removeAllActionsFromTarget(target); + }; + _proto._union = function _union() { + var actions = this._actions; + var action; + if (actions.length === 1) { + action = actions[0]; + } else { + action = sequence(actions); + } + return action; + }; + _proto._destroy = function _destroy() { + this.stop(); + }; + Tween._wrappedSequence = function _wrappedSequence() { + var tmp_args = Tween._tmp_args; + tmp_args.length = 0; + for (var l = arguments.length, i = 0; i < l; i++) { + var arg = tmp_args[i] = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (arg instanceof Tween) { + tmp_args[i] = arg._union(); + } + } + return sequence.apply(sequence, tmp_args); + }; + Tween._wrappedParallel = function _wrappedParallel() { + var tmp_args = Tween._tmp_args; + tmp_args.length = 0; + for (var l = arguments.length, i = 0; i < l; i++) { + var arg = tmp_args[i] = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (arg instanceof Tween) { + tmp_args[i] = arg._union(); + } + } + return spawn.apply(spawn, tmp_args); + }; + return Tween; + }()); + Tween._tmp_args = []; + legacyCC.Tween = Tween; + function tween(target) { + return new Tween(target); + } + legacyCC.tween = tween; + function tweenUtil(target) { + warn('tweenUtil\' is deprecated, please use \'tween\' instead '); + return new Tween(target); + } + legacyCC.tweenUtil = tweenUtil; + + var DeviceType; + (function (DeviceType) { + DeviceType[DeviceType["Other"] = 0] = "Other"; + DeviceType[DeviceType["Left"] = 1] = "Left"; + DeviceType[DeviceType["Right"] = 2] = "Right"; + })(DeviceType || (DeviceType = {})); + var XrUIPressEventType; + (function (XrUIPressEventType) { + XrUIPressEventType["XRUI_HOVER_ENTERED"] = "xrui-hover-entered"; + XrUIPressEventType["XRUI_HOVER_EXITED"] = "xrui-hover-exited"; + XrUIPressEventType["XRUI_HOVER_STAY"] = "xrui-hover-stay"; + XrUIPressEventType["XRUI_CLICK"] = "xrui-click"; + XrUIPressEventType["XRUI_UNCLICK"] = "xrui-unclick"; + })(XrUIPressEventType || (XrUIPressEventType = {})); + var XrKeyboardEventType; + (function (XrKeyboardEventType) { + XrKeyboardEventType["XR_CAPS_LOCK"] = "xr-caps-lock"; + XrKeyboardEventType["XR_KEYBOARD_INIT"] = "xr-keyboard-init"; + XrKeyboardEventType["XR_KEYBOARD_INPUT"] = "xr-keyboard-input"; + XrKeyboardEventType["TO_LATIN"] = "to-latin"; + XrKeyboardEventType["TO_SYMBOL"] = "to-symbol"; + XrKeyboardEventType["TO_MATH_SYMBOL"] = "to-math-symbol"; + })(XrKeyboardEventType || (XrKeyboardEventType = {})); + (function (_Event) { + _inheritsLoose(XrUIPressEvent, _Event); + function XrUIPressEvent() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Event.call.apply(_Event, [this].concat(args)) || this; + _this.deviceType = DeviceType.Other; + _this.hitPoint = new Vec3(); + return _this; + } + return XrUIPressEvent; + })(Event); + + var _dec$k, _dec2$h, _dec3$g, _dec4$c, _dec5$c, _dec6$6, _dec7$4, _dec8$3, _dec9$3, _dec10$1, _class$k, _class2$g, _initializer$g, _initializer2$f, _initializer3$c, _initializer4$b, _initializer5$9, _initializer6$6, _initializer7$6, _initializer8$6, _initializer9$6, _initializer10$6, _initializer11$6, _initializer12$5, _initializer13$3, _initializer14$2, _class3$c; + var _tempColor$1 = new Color$1(); + var Transition; + (function (Transition) { + Transition[Transition["NONE"] = 0] = "NONE"; + Transition[Transition["COLOR"] = 1] = "COLOR"; + Transition[Transition["SPRITE"] = 2] = "SPRITE"; + Transition[Transition["SCALE"] = 3] = "SCALE"; + })(Transition || (Transition = {})); + ccenum(Transition); + var State; + (function (State) { + State["NORMAL"] = "normal"; + State["HOVER"] = "hover"; + State["PRESSED"] = "pressed"; + State["DISABLED"] = "disabled"; + })(State || (State = {})); + var EventType$6; + (function (EventType) { + EventType["CLICK"] = "click"; + })(EventType$6 || (EventType$6 = {})); + var Button = exports('fh', (_dec$k = ccclass$t('cc.Button'), _dec2$h = executionOrder$1(110), _dec3$g = requireComponent(UITransform), _dec4$c = type$8(Node$1), _dec5$c = type$8(Transition), _dec6$6 = type$8(SpriteFrame), _dec7$4 = type$8(SpriteFrame), _dec8$3 = type$8(SpriteFrame), _dec9$3 = type$8(SpriteFrame), _dec10$1 = type$8([EventHandler]), _dec$k(_class$k = _dec2$h(_class$k = _dec3$g(_class$k = (_class2$g = (_class3$c = function (_Component) { + _inheritsLoose(Button, _Component); + function Button() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this.clickEvents = _initializer$g && _initializer$g(); + _this._interactable = _initializer2$f && _initializer2$f(); + _this._transition = _initializer3$c && _initializer3$c(); + _this._normalColor = _initializer4$b && _initializer4$b(); + _this._hoverColor = _initializer5$9 && _initializer5$9(); + _this._pressedColor = _initializer6$6 && _initializer6$6(); + _this._disabledColor = _initializer7$6 && _initializer7$6(); + _this._normalSprite = _initializer8$6 && _initializer8$6(); + _this._hoverSprite = _initializer9$6 && _initializer9$6(); + _this._pressedSprite = _initializer10$6 && _initializer10$6(); + _this._disabledSprite = _initializer11$6 && _initializer11$6(); + _this._duration = _initializer12$5 && _initializer12$5(); + _this._zoomScale = _initializer13$3 && _initializer13$3(); + _this._target = _initializer14$2 && _initializer14$2(); + _this._pressed = false; + _this._hovered = false; + _this._fromColor = new Color$1(); + _this._toColor = new Color$1(); + _this._time = 0; + _this._transitionFinished = true; + _this._fromScale = new Vec3(); + _this._toScale = new Vec3(); + _this._originalScale = null; + _this._sprite = null; + _this._targetScale = new Vec3(); + return _this; + } + var _proto = Button.prototype; + _proto.__preload = function __preload() { + if (!this.target) { + this.target = this.node; + } + this._applyTarget(); + this._resetState(); + }; + _proto.onEnable = function onEnable() { + { + this._registerNodeEvent(); + } + }; + _proto.onDisable = function onDisable() { + this._resetState(); + { + this._unregisterNodeEvent(); + } + }; + _proto.onDestroy = function onDestroy() { + if (this.target.isValid) { + this._unregisterTargetEvent(this.target); + } + }; + _proto.update = function update(dt) { + var target = this.target; + if (this._transitionFinished || !target) { + return; + } + if (this._transition !== Transition.COLOR && this._transition !== Transition.SCALE) { + return; + } + this._time += dt; + var ratio = 1.0; + if (this._duration > 0) { + ratio = this._time / this._duration; + } + if (ratio >= 1) { + ratio = 1; + } + if (this._transition === Transition.COLOR) { + var renderComp = target._uiProps.uiComp; + Color$1.lerp(_tempColor$1, this._fromColor, this._toColor, ratio); + if (renderComp) { + renderComp.color = _tempColor$1; + } + } else if (this.transition === Transition.SCALE) { + target.getScale(this._targetScale); + this._targetScale.x = lerp(this._fromScale.x, this._toScale.x, ratio); + this._targetScale.y = lerp(this._fromScale.y, this._toScale.y, ratio); + target.setScale(this._targetScale); + } + if (ratio === 1) { + this._transitionFinished = true; + } + }; + _proto._resizeNodeToTargetNode = function _resizeNodeToTargetNode() { + if (!this.target) { + return; + } + this.target._uiProps.uiTransformComp; + }; + _proto._resetState = function _resetState() { + this._pressed = false; + this._hovered = false; + var target = this.target; + if (!target) { + return; + } + var transition = this._transition; + if (transition === Transition.COLOR && this._interactable) { + var renderComp = target.getComponent(UIRenderer); + if (renderComp) { + renderComp.color = this._normalColor; + } + } else if (transition === Transition.SCALE && this._originalScale) { + target.setScale(this._originalScale); + } + this._transitionFinished = true; + }; + _proto._registerNodeEvent = function _registerNodeEvent() { + this.node.on(NodeEventType.TOUCH_START, this._onTouchBegan, this); + this.node.on(NodeEventType.TOUCH_MOVE, this._onTouchMove, this); + this.node.on(NodeEventType.TOUCH_END, this._onTouchEnded, this); + this.node.on(NodeEventType.TOUCH_CANCEL, this._onTouchCancel, this); + this.node.on(NodeEventType.MOUSE_ENTER, this._onMouseMoveIn, this); + this.node.on(NodeEventType.MOUSE_LEAVE, this._onMouseMoveOut, this); + this.node.on(XrUIPressEventType.XRUI_HOVER_ENTERED, this._xrHoverEnter, this); + this.node.on(XrUIPressEventType.XRUI_HOVER_EXITED, this._xrHoverExit, this); + this.node.on(XrUIPressEventType.XRUI_CLICK, this._xrClick, this); + this.node.on(XrUIPressEventType.XRUI_UNCLICK, this._xrUnClick, this); + }; + _proto._registerTargetEvent = function _registerTargetEvent(target) { + target.on(NodeEventType.TRANSFORM_CHANGED, this._onTargetTransformChanged, this); + }; + _proto._unregisterNodeEvent = function _unregisterNodeEvent() { + this.node.off(NodeEventType.TOUCH_START, this._onTouchBegan, this); + this.node.off(NodeEventType.TOUCH_MOVE, this._onTouchMove, this); + this.node.off(NodeEventType.TOUCH_END, this._onTouchEnded, this); + this.node.off(NodeEventType.TOUCH_CANCEL, this._onTouchCancel, this); + this.node.off(NodeEventType.MOUSE_ENTER, this._onMouseMoveIn, this); + this.node.off(NodeEventType.MOUSE_LEAVE, this._onMouseMoveOut, this); + this.node.off(XrUIPressEventType.XRUI_HOVER_ENTERED, this._xrHoverEnter, this); + this.node.off(XrUIPressEventType.XRUI_HOVER_EXITED, this._xrHoverExit, this); + this.node.off(XrUIPressEventType.XRUI_CLICK, this._xrClick, this); + this.node.off(XrUIPressEventType.XRUI_UNCLICK, this._xrUnClick, this); + }; + _proto._unregisterTargetEvent = function _unregisterTargetEvent(target) { + target.off(NodeEventType.TRANSFORM_CHANGED); + }; + _proto._getTargetSprite = function _getTargetSprite(target) { + var sprite = null; + if (target) { + sprite = target.getComponent(Sprite); + } + return sprite; + }; + _proto._applyTarget = function _applyTarget() { + if (this.target) { + this._sprite = this._getTargetSprite(this.target); + if (!this._originalScale) { + this._originalScale = new Vec3(); + } + Vec3.copy(this._originalScale, this.target.getScale()); + this._registerTargetEvent(this.target); + } + }; + _proto._onTargetSpriteFrameChanged = function _onTargetSpriteFrameChanged(comp) { + if (this._transition === Transition.SPRITE) { + this._setCurrentStateSpriteFrame(comp.spriteFrame); + } + }; + _proto._setCurrentStateSpriteFrame = function _setCurrentStateSpriteFrame(spriteFrame) { + if (!spriteFrame) { + return; + } + switch (this._getButtonState()) { + case State.NORMAL: + this._normalSprite = spriteFrame; + break; + case State.HOVER: + this._hoverSprite = spriteFrame; + break; + case State.PRESSED: + this._pressedSprite = spriteFrame; + break; + case State.DISABLED: + this._disabledSprite = spriteFrame; + break; + } + }; + _proto._onTargetColorChanged = function _onTargetColorChanged(color) { + if (this._transition === Transition.COLOR) { + this._setCurrentStateColor(color); + } + }; + _proto._setCurrentStateColor = function _setCurrentStateColor(color) { + switch (this._getButtonState()) { + case State.NORMAL: + this._normalColor = color; + break; + case State.HOVER: + this._hoverColor = color; + break; + case State.PRESSED: + this._pressedColor = color; + break; + case State.DISABLED: + this._disabledColor = color; + break; + } + }; + _proto._onTargetTransformChanged = function _onTargetTransformChanged(transformBit) { + if (transformBit & TransformBit.SCALE && this._originalScale && this._transition === Transition.SCALE && this._transitionFinished) { + Vec3.copy(this._originalScale, this.target.getScale()); + } + }; + _proto._onTouchBegan = function _onTouchBegan(event) { + if (!this._interactable || !this.enabledInHierarchy) { + return; + } + this._pressed = true; + this._updateState(); + if (event) { + event.propagationStopped = true; + } + }; + _proto._onTouchMove = function _onTouchMove(event) { + if (!this._interactable || !this.enabledInHierarchy || !this._pressed) { + return; + } + if (!event) { + return; + } + var touch = event.touch; + if (!touch) { + return; + } + var hit = this.node._uiProps.uiTransformComp.hitTest(touch.getLocation(), event.windowId); + if (this._transition === Transition.SCALE && this.target && this._originalScale) { + if (hit) { + Vec3.copy(this._fromScale, this._originalScale); + Vec3.multiplyScalar(this._toScale, this._originalScale, this._zoomScale); + this._transitionFinished = false; + } else { + this._time = 0; + this._transitionFinished = true; + this.target.setScale(this._originalScale); + } + } else { + var state; + if (hit) { + state = State.PRESSED; + } else { + state = State.NORMAL; + } + this._applyTransition(state); + } + if (event) { + event.propagationStopped = true; + } + }; + _proto._onTouchEnded = function _onTouchEnded(event) { + if (!this._interactable || !this.enabledInHierarchy) { + return; + } + if (this._pressed) { + EventHandler.emitEvents(this.clickEvents, event); + this.node.emit(EventType$6.CLICK, this); + } + this._pressed = false; + this._updateState(); + if (event) { + event.propagationStopped = true; + } + }; + _proto._onTouchCancel = function _onTouchCancel(event) { + if (!this._interactable || !this.enabledInHierarchy) { + return; + } + this._pressed = false; + this._updateState(); + }; + _proto._onMouseMoveIn = function _onMouseMoveIn(event) { + if (this._pressed || !this.interactable || !this.enabledInHierarchy) { + return; + } + if (this._transition === Transition.SPRITE && !this._hoverSprite) { + return; + } + if (!this._hovered) { + this._hovered = true; + this._updateState(); + } + }; + _proto._onMouseMoveOut = function _onMouseMoveOut(event) { + if (this._hovered) { + this._hovered = false; + this._updateState(); + } + }; + _proto._updateState = function _updateState() { + var state = this._getButtonState(); + this._applyTransition(state); + }; + _proto._getButtonState = function _getButtonState() { + var state = State.NORMAL; + if (!this._interactable) { + state = State.DISABLED; + } else if (this._pressed) { + state = State.PRESSED; + } else if (this._hovered) { + state = State.HOVER; + } + return state.toString(); + }; + _proto._updateColorTransition = function _updateColorTransition(state) { + var _this$target; + var color = this[state + "Color"]; + var renderComp = (_this$target = this.target) === null || _this$target === void 0 ? void 0 : _this$target.getComponent(UIRenderer); + if (!renderComp) { + return; + } + if (state === State.DISABLED.toString()) { + renderComp.color = color; + } else { + this._fromColor = renderComp.color.clone(); + this._toColor = color; + this._time = 0; + this._transitionFinished = false; + } + }; + _proto._updateSpriteTransition = function _updateSpriteTransition(state) { + var sprite = this[state + "Sprite"]; + if (this._sprite && sprite) { + this._sprite.spriteFrame = sprite; + } + }; + _proto._updateScaleTransition = function _updateScaleTransition(state) { + if (!this._interactable) { + return; + } + if (state === State.PRESSED.toString()) { + this._zoomUp(); + } else { + this._zoomBack(); + } + }; + _proto._zoomUp = function _zoomUp() { + if (!this._originalScale) { + return; + } + Vec3.copy(this._fromScale, this._originalScale); + Vec3.multiplyScalar(this._toScale, this._originalScale, this._zoomScale); + this._time = 0; + this._transitionFinished = false; + }; + _proto._zoomBack = function _zoomBack() { + if (!this.target || !this._originalScale) { + return; + } + Vec3.copy(this._fromScale, this.target.getScale()); + Vec3.copy(this._toScale, this._originalScale); + this._time = 0; + this._transitionFinished = false; + }; + _proto._applyTransition = function _applyTransition(state) { + var transition = this._transition; + if (transition === Transition.COLOR) { + this._updateColorTransition(state); + } else if (transition === Transition.SPRITE) { + this._updateSpriteTransition(state); + } else if (transition === Transition.SCALE) { + this._updateScaleTransition(state); + } + }; + _proto._xrHoverEnter = function _xrHoverEnter() { + this._onMouseMoveIn(); + this._updateState(); + }; + _proto._xrHoverExit = function _xrHoverExit() { + this._onMouseMoveOut(); + if (this._pressed) { + this._pressed = false; + this._updateState(); + } + }; + _proto._xrClick = function _xrClick() { + if (!this._interactable || !this.enabledInHierarchy) { + return; + } + this._pressed = true; + this._updateState(); + }; + _proto._xrUnClick = function _xrUnClick() { + if (!this._interactable || !this.enabledInHierarchy) { + return; + } + if (this._pressed) { + EventHandler.emitEvents(this.clickEvents, this); + this.node.emit(EventType$6.CLICK, this); + } + this._pressed = false; + this._updateState(); + }; + _createClass(Button, [{ + key: "target", + get: function get() { + return this._target || this.node; + }, + set: function set(value) { + if (this._target === value) { + return; + } + if (this._target) { + this._unregisterTargetEvent(this._target); + } + this._target = value; + this._applyTarget(); + } + }, { + key: "interactable", + get: function get() { + return this._interactable; + }, + set: function set(value) { + if (this._interactable === value) { + return; + } + this._interactable = value; + this._updateState(); + if (!this._interactable) { + this._resetState(); + } + } + }, { + key: "_resizeToTarget", + set: function set(value) { + if (value) { + this._resizeNodeToTargetNode(); + } + } + }, { + key: "transition", + get: function get() { + return this._transition; + }, + set: function set(value) { + if (this._transition === value) { + return; + } + if (this._transition === Transition.COLOR) { + this._updateColorTransition(State.NORMAL); + } else if (this._transition === Transition.SPRITE) { + this._updateSpriteTransition(State.NORMAL); + } + this._transition = value; + this._updateState(); + } + }, { + key: "normalColor", + get: function get() { + return this._normalColor; + }, + set: function set(value) { + if (this._normalColor === value) { + return; + } + this._normalColor.set(value); + this._updateState(); + } + }, { + key: "pressedColor", + get: function get() { + return this._pressedColor; + }, + set: function set(value) { + if (this._pressedColor === value) { + return; + } + this._pressedColor.set(value); + } + }, { + key: "hoverColor", + get: function get() { + return this._hoverColor; + }, + set: function set(value) { + if (this._hoverColor === value) { + return; + } + this._hoverColor.set(value); + } + }, { + key: "disabledColor", + get: function get() { + return this._disabledColor; + }, + set: function set(value) { + if (this._disabledColor === value) { + return; + } + this._disabledColor.set(value); + this._updateState(); + } + }, { + key: "duration", + get: function get() { + return this._duration; + }, + set: function set(value) { + if (this._duration === value) { + return; + } + this._duration = value; + } + }, { + key: "zoomScale", + get: function get() { + return this._zoomScale; + }, + set: function set(value) { + if (this._zoomScale === value) { + return; + } + this._zoomScale = value; + } + }, { + key: "normalSprite", + get: function get() { + return this._normalSprite; + }, + set: function set(value) { + if (this._normalSprite === value) { + return; + } + this._normalSprite = value; + var sprite = this.node.getComponent(Sprite); + if (sprite) { + sprite.spriteFrame = value; + } + this._updateState(); + } + }, { + key: "pressedSprite", + get: function get() { + return this._pressedSprite; + }, + set: function set(value) { + if (this._pressedSprite === value) { + return; + } + this._pressedSprite = value; + this._updateState(); + } + }, { + key: "hoverSprite", + get: function get() { + return this._hoverSprite; + }, + set: function set(value) { + if (this._hoverSprite === value) { + return; + } + this._hoverSprite = value; + this._updateState(); + } + }, { + key: "disabledSprite", + get: function get() { + return this._disabledSprite; + }, + set: function set(value) { + if (this._disabledSprite === value) { + return; + } + this._disabledSprite = value; + this._updateState(); + } + }]); + return Button; + }(Component), _class3$c.Transition = Transition, _class3$c.EventType = EventType$6, _class3$c), (_applyDecoratedDescriptor(_class2$g.prototype, "target", [_dec4$c], Object.getOwnPropertyDescriptor(_class2$g.prototype, "target"), _class2$g.prototype), _applyDecoratedDescriptor(_class2$g.prototype, "transition", [_dec5$c], Object.getOwnPropertyDescriptor(_class2$g.prototype, "transition"), _class2$g.prototype), _applyDecoratedDescriptor(_class2$g.prototype, "normalSprite", [_dec6$6], Object.getOwnPropertyDescriptor(_class2$g.prototype, "normalSprite"), _class2$g.prototype), _applyDecoratedDescriptor(_class2$g.prototype, "pressedSprite", [_dec7$4], Object.getOwnPropertyDescriptor(_class2$g.prototype, "pressedSprite"), _class2$g.prototype), _applyDecoratedDescriptor(_class2$g.prototype, "hoverSprite", [_dec8$3], Object.getOwnPropertyDescriptor(_class2$g.prototype, "hoverSprite"), _class2$g.prototype), _applyDecoratedDescriptor(_class2$g.prototype, "disabledSprite", [_dec9$3], Object.getOwnPropertyDescriptor(_class2$g.prototype, "disabledSprite"), _class2$g.prototype), _initializer$g = applyDecoratedInitializer(_class2$g.prototype, "clickEvents", [_dec10$1, serializable$9], function () { + return []; + }), _initializer2$f = applyDecoratedInitializer(_class2$g.prototype, "_interactable", [serializable$9], function () { + return true; + }), _initializer3$c = applyDecoratedInitializer(_class2$g.prototype, "_transition", [serializable$9], function () { + return Transition.NONE; + }), _initializer4$b = applyDecoratedInitializer(_class2$g.prototype, "_normalColor", [serializable$9], function () { + return Color$1.WHITE.clone(); + }), _initializer5$9 = applyDecoratedInitializer(_class2$g.prototype, "_hoverColor", [serializable$9], function () { + return new Color$1(211, 211, 211, 255); + }), _initializer6$6 = applyDecoratedInitializer(_class2$g.prototype, "_pressedColor", [serializable$9], function () { + return Color$1.WHITE.clone(); + }), _initializer7$6 = applyDecoratedInitializer(_class2$g.prototype, "_disabledColor", [serializable$9], function () { + return new Color$1(124, 124, 124, 255); + }), _initializer8$6 = applyDecoratedInitializer(_class2$g.prototype, "_normalSprite", [serializable$9], function () { + return null; + }), _initializer9$6 = applyDecoratedInitializer(_class2$g.prototype, "_hoverSprite", [serializable$9], function () { + return null; + }), _initializer10$6 = applyDecoratedInitializer(_class2$g.prototype, "_pressedSprite", [serializable$9], function () { + return null; + }), _initializer11$6 = applyDecoratedInitializer(_class2$g.prototype, "_disabledSprite", [serializable$9], function () { + return null; + }), _initializer12$5 = applyDecoratedInitializer(_class2$g.prototype, "_duration", [serializable$9], function () { + return 0.1; + }), _initializer13$3 = applyDecoratedInitializer(_class2$g.prototype, "_zoomScale", [serializable$9], function () { + return 1.2; + }), _initializer14$2 = applyDecoratedInitializer(_class2$g.prototype, "_target", [serializable$9], function () { + return null; + })), _class2$g)) || _class$k) || _class$k) || _class$k)); + legacyCC.Button = Button; + + var tabIndexUtil = function () { + function tabIndexUtil() {} + tabIndexUtil.add = function add(editBoxImpl) { + var list = this._tabIndexList; + var index = list.indexOf(editBoxImpl); + if (index === -1) { + list.push(editBoxImpl); + } + }; + tabIndexUtil.remove = function remove(editBoxImpl) { + var list = this._tabIndexList; + var index = list.indexOf(editBoxImpl); + if (index !== -1) { + list.splice(index, 1); + } + }; + tabIndexUtil.resort = function resort() { + this._tabIndexList.sort(function (a, b) { + return a._delegate.tabIndex - b._delegate.tabIndex; + }); + }; + tabIndexUtil.next = function next(editBoxImpl) { + var list = this._tabIndexList; + var index = list.indexOf(editBoxImpl); + editBoxImpl.setFocus(false); + if (index !== -1) { + var nextImpl = list[index + 1]; + if (nextImpl && nextImpl._delegate.tabIndex >= 0) { + nextImpl.setFocus(true); + } + } + }; + return tabIndexUtil; + }(); + tabIndexUtil._tabIndexList = []; + + var KeyboardReturnType; + (function (KeyboardReturnType) { + KeyboardReturnType[KeyboardReturnType["DEFAULT"] = 0] = "DEFAULT"; + KeyboardReturnType[KeyboardReturnType["DONE"] = 1] = "DONE"; + KeyboardReturnType[KeyboardReturnType["SEND"] = 2] = "SEND"; + KeyboardReturnType[KeyboardReturnType["SEARCH"] = 3] = "SEARCH"; + KeyboardReturnType[KeyboardReturnType["GO"] = 4] = "GO"; + KeyboardReturnType[KeyboardReturnType["NEXT"] = 5] = "NEXT"; + })(KeyboardReturnType || (KeyboardReturnType = {})); + Enum(KeyboardReturnType); + var InputMode; + (function (InputMode) { + InputMode[InputMode["ANY"] = 0] = "ANY"; + InputMode[InputMode["EMAIL_ADDR"] = 1] = "EMAIL_ADDR"; + InputMode[InputMode["NUMERIC"] = 2] = "NUMERIC"; + InputMode[InputMode["PHONE_NUMBER"] = 3] = "PHONE_NUMBER"; + InputMode[InputMode["URL"] = 4] = "URL"; + InputMode[InputMode["DECIMAL"] = 5] = "DECIMAL"; + InputMode[InputMode["SINGLE_LINE"] = 6] = "SINGLE_LINE"; + })(InputMode || (InputMode = {})); + Enum(InputMode); + var InputFlag; + (function (InputFlag) { + InputFlag[InputFlag["PASSWORD"] = 0] = "PASSWORD"; + InputFlag[InputFlag["SENSITIVE"] = 1] = "SENSITIVE"; + InputFlag[InputFlag["INITIAL_CAPS_WORD"] = 2] = "INITIAL_CAPS_WORD"; + InputFlag[InputFlag["INITIAL_CAPS_SENTENCE"] = 3] = "INITIAL_CAPS_SENTENCE"; + InputFlag[InputFlag["INITIAL_CAPS_ALL_CHARACTERS"] = 4] = "INITIAL_CAPS_ALL_CHARACTERS"; + InputFlag[InputFlag["DEFAULT"] = 5] = "DEFAULT"; + })(InputFlag || (InputFlag = {})); + Enum(InputFlag); + + var EditBoxImplBase = function () { + function EditBoxImplBase() { + this._editing = false; + this._delegate = null; + this._dirtyFlag = false; + } + var _proto = EditBoxImplBase.prototype; + _proto.init = function init(delegate) {}; + _proto.onEnable = function onEnable() {}; + _proto.update = function update() {}; + _proto.onDisable = function onDisable() { + if (this._editing) { + this.endEditing(); + } + }; + _proto.clear = function clear() { + this._delegate = null; + }; + _proto.setTabIndex = function setTabIndex(index) {}; + _proto.setSize = function setSize(width, height) {}; + _proto.setFocus = function setFocus(value) { + if (value) { + this.beginEditing(); + } else { + this.endEditing(); + } + }; + _proto.isFocused = function isFocused() { + return this._editing; + }; + _proto.beginEditing = function beginEditing() {}; + _proto.endEditing = function endEditing() {}; + return EditBoxImplBase; + }(); + + var ccdocument$3 = ccwindow.document; + var SCROLLY = 40; + var LEFT_PADDING$1 = 2; + var DELAY_TIME = 400; + var _matrix = new Mat4(); + var _matrix_temp = new Mat4(); + var _vec3 = new Vec3(); + var _currentEditBoxImpl = null; + var _domCount = 0; + var EditBoxImpl = function (_EditBoxImplBase) { + _inheritsLoose(EditBoxImpl, _EditBoxImplBase); + function EditBoxImpl() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _EditBoxImplBase.call.apply(_EditBoxImplBase, [this].concat(args)) || this; + _this._delegate = null; + _this._inputMode = -1; + _this._inputFlag = -1; + _this._returnType = -1; + _this.__eventListeners = {}; + _this.__autoResize = false; + _this.__orientationChanged = void 0; + _this._edTxt = null; + _this._isTextArea = false; + _this._textLabelFont = null; + _this._textLabelFontSize = null; + _this._textLabelFontColor = null; + _this._textLabelAlign = null; + _this._placeholderLabelFont = null; + _this._placeholderLabelFontSize = null; + _this._placeholderLabelFontColor = null; + _this._placeholderLabelAlign = null; + _this._placeholderLineHeight = null; + _this._placeholderStyleSheet = null; + _this._domId = "EditBoxId_" + ++_domCount; + return _this; + } + var _proto = EditBoxImpl.prototype; + _proto.init = function init(delegate) { + if (!delegate) { + return; + } + this._delegate = delegate; + if (delegate.inputMode === InputMode.ANY) { + this._createTextArea(); + } else { + this._createInput(); + } + tabIndexUtil.add(this); + this.setTabIndex(delegate.tabIndex); + this._initStyleSheet(); + this._registerEventListeners(); + this._addDomToGameContainer(); + }; + _proto.clear = function clear() { + this._removeEventListeners(); + this._removeDomFromGameContainer(); + tabIndexUtil.remove(this); + if (_currentEditBoxImpl === this) { + _currentEditBoxImpl = null; + } + this._delegate = null; + }; + _proto.update = function update() { + if (!this._dirtyFlag) return; + this._updateMatrix(); + }; + _proto.setTabIndex = function setTabIndex(index) { + this._edTxt.tabIndex = index; + tabIndexUtil.resort(); + }; + _proto.setSize = function setSize(width, height) { + var elem = this._edTxt; + if (elem) { + elem.style.width = width + "px"; + elem.style.height = height + "px"; + } + }; + _proto.beginEditing = function beginEditing() { + if (_currentEditBoxImpl && _currentEditBoxImpl !== this) { + _currentEditBoxImpl.setFocus(false); + } + this._editing = true; + _currentEditBoxImpl = this; + this._delegate._editBoxEditingDidBegan(); + this._showDom(); + this._edTxt.focus(); + }; + _proto.endEditing = function endEditing() { + this._edTxt.blur(); + }; + _proto._createInput = function _createInput() { + this._isTextArea = false; + this._edTxt = ccdocument$3.createElement('input'); + }; + _proto._createTextArea = function _createTextArea() { + this._isTextArea = true; + this._edTxt = ccdocument$3.createElement('textarea'); + }; + _proto._addDomToGameContainer = function _addDomToGameContainer() { + if (game.container && this._edTxt) { + game.container.appendChild(this._edTxt); + ccdocument$3.head.appendChild(this._placeholderStyleSheet); + } + }; + _proto._removeDomFromGameContainer = function _removeDomFromGameContainer() { + var hasElem = contains$1(game.container, this._edTxt); + if (hasElem && this._edTxt) { + game.container.removeChild(this._edTxt); + } + var hasStyleSheet = contains$1(ccdocument$3.head, this._placeholderStyleSheet); + if (hasStyleSheet) { + ccdocument$3.head.removeChild(this._placeholderStyleSheet); + } + this._edTxt = null; + this._placeholderStyleSheet = null; + }; + _proto._showDom = function _showDom() { + this._updateMaxLength(); + this._updateInputType(); + this._updateStyleSheet(); + if (this._edTxt && this._delegate) { + this._edTxt.style.display = ''; + this._delegate._hideLabels(); + } + if (sys.isMobile) { + this._showDomOnMobile(); + } + }; + _proto._hideDom = function _hideDom() { + var elem = this._edTxt; + if (elem && this._delegate) { + elem.style.display = 'none'; + this._delegate._showLabels(); + } + if (sys.isMobile) { + this._hideDomOnMobile(); + } + }; + _proto._showDomOnMobile = function _showDomOnMobile() { + if (sys.os !== OS.ANDROID && sys.os !== OS.OHOS) { + return; + } + screenAdapter.handleResizeEvent = false; + this._adjustWindowScroll(); + }; + _proto._hideDomOnMobile = function _hideDomOnMobile() { + if (sys.os === OS.ANDROID || sys.os === OS.OHOS) { + screenAdapter.handleResizeEvent = true; + } + this._scrollBackWindow(); + }; + _proto._adjustWindowScroll = function _adjustWindowScroll() { + var _this2 = this; + setTimeout(function () { + if (ccwindow.scrollY < SCROLLY) { + _this2._edTxt.scrollIntoView({ + block: 'start', + inline: 'nearest', + behavior: 'smooth' + }); + } + }, DELAY_TIME); + }; + _proto._scrollBackWindow = function _scrollBackWindow() { + setTimeout(function () { + if (sys.browserType === BrowserType.WECHAT && sys.os === OS.IOS) { + if (ccwindow.top) { + ccwindow.top.scrollTo(0, 0); + } + return; + } + ccwindow.scrollTo(0, 0); + }, DELAY_TIME); + }; + _proto._updateMatrix = function _updateMatrix() { + if (!this._edTxt) { + return; + } + var node = this._delegate.node; + var scaleX = view.getScaleX(); + var scaleY = view.getScaleY(); + var viewport = view.getViewportRect(); + var dpr = screenAdapter.devicePixelRatio; + node.getWorldMatrix(_matrix); + var transform = node._uiProps.uiTransformComp; + if (transform) { + Vec3.set(_vec3, -transform.anchorX * transform.width, -transform.anchorY * transform.height, _vec3.z); + Mat4.transform(_matrix, _matrix, _vec3); + } + if (!node._uiProps.uiTransformComp) { + return; + } + var camera = director.root.batcher2D.getFirstRenderCamera(node); + if (!camera) return; + camera.node.getWorldRT(_matrix_temp); + var m12 = _matrix_temp.m12; + var m13 = _matrix_temp.m13; + var center = visibleRect.center; + _matrix_temp.m12 = center.x - (_matrix_temp.m00 * m12 + _matrix_temp.m04 * m13); + _matrix_temp.m13 = center.y - (_matrix_temp.m01 * m12 + _matrix_temp.m05 * m13); + scaleX /= dpr; + scaleY /= dpr; + Vec3.set(_vec3, scaleX, scaleY, 1); + Mat4.scale(_matrix_temp, _matrix_temp, _vec3); + var container = game.container; + var offsetX = parseInt(container && container.style.paddingLeft || '0'); + offsetX += viewport.x / dpr; + var offsetY = parseInt(container && container.style.paddingBottom || '0'); + offsetY += viewport.y / dpr; + _matrix_temp.m12 += offsetX; + _matrix_temp.m13 += offsetY; + Mat4.multiply(_matrix_temp, _matrix_temp, _matrix); + var a = _matrix_temp.m00; + var b = _matrix_temp.m01; + var c = _matrix_temp.m04; + var d = _matrix_temp.m05; + var tx = _matrix_temp.m12; + var ty = _matrix_temp.m13; + var matrix = "matrix(" + a + "," + -b + "," + -c + "," + d + "," + tx + "," + -ty + ")"; + this._edTxt.style.transform = matrix; + this._edTxt.style['-webkit-transform'] = matrix; + this._edTxt.style['transform-origin'] = '0px 100% 0px'; + this._edTxt.style['-webkit-transform-origin'] = '0px 100% 0px'; + }; + _proto._updateInputType = function _updateInputType() { + var delegate = this._delegate; + var inputMode = delegate.inputMode; + var inputFlag = delegate.inputFlag; + var returnType = delegate.returnType; + var elem = this._edTxt; + if (this._inputMode === inputMode && this._inputFlag === inputFlag && this._returnType === returnType) { + return; + } + this._inputMode = inputMode; + this._inputFlag = inputFlag; + this._returnType = returnType; + if (this._isTextArea) { + var transform = 'none'; + if (inputFlag === InputFlag.INITIAL_CAPS_ALL_CHARACTERS) { + transform = 'uppercase'; + } else if (inputFlag === InputFlag.INITIAL_CAPS_WORD) { + transform = 'capitalize'; + } + elem.style.textTransform = transform; + return; + } + elem = elem; + if (inputFlag === InputFlag.PASSWORD) { + elem.type = 'password'; + elem.style.textTransform = 'none'; + return; + } + var type = elem.type; + if (inputMode === InputMode.EMAIL_ADDR) { + type = 'email'; + } else if (inputMode === InputMode.NUMERIC || inputMode === InputMode.DECIMAL) { + type = 'number'; + } else if (inputMode === InputMode.PHONE_NUMBER) { + type = 'number'; + elem.pattern = '[0-9]*'; + elem.addEventListener('wheel', function () { + return false; + }); + } else if (inputMode === InputMode.URL) { + type = 'url'; + } else { + type = 'text'; + if (returnType === KeyboardReturnType.SEARCH) { + type = 'search'; + } + } + elem.type = type; + var textTransform = 'none'; + if (inputFlag === InputFlag.INITIAL_CAPS_ALL_CHARACTERS) { + textTransform = 'uppercase'; + } else if (inputFlag === InputFlag.INITIAL_CAPS_WORD) { + textTransform = 'capitalize'; + } + elem.style.textTransform = textTransform; + }; + _proto._updateMaxLength = function _updateMaxLength() { + var maxLength = this._delegate.maxLength; + if (maxLength < 0) { + maxLength = 65535; + } + this._edTxt.maxLength = maxLength; + }; + _proto._initStyleSheet = function _initStyleSheet() { + if (!this._edTxt) { + return; + } + var elem = this._edTxt; + elem.style.color = '#000000'; + elem.style.border = '0px'; + elem.style.background = 'transparent'; + elem.style.width = '100%'; + elem.style.height = '100%'; + elem.style.outline = 'medium'; + elem.style.padding = '0'; + elem.style.textTransform = 'none'; + elem.style.display = 'none'; + elem.style.position = 'absolute'; + elem.style.bottom = '0px'; + elem.style.left = LEFT_PADDING$1 + "px"; + elem.className = 'cocosEditBox'; + elem.style.fontFamily = 'Arial'; + elem.id = this._domId; + if (!this._isTextArea) { + elem = elem; + elem.type = 'text'; + elem.style['-moz-appearance'] = 'textfield'; + } else { + elem.style.resize = 'none'; + elem.style.overflowY = 'scroll'; + } + this._placeholderStyleSheet = ccdocument$3.createElement('style'); + }; + _proto._updateStyleSheet = function _updateStyleSheet() { + var delegate = this._delegate; + var elem = this._edTxt; + if (elem && delegate) { + elem.value = delegate.string; + this._updateTextLabel(delegate.textLabel); + } + }; + _proto._updateTextLabel = function _updateTextLabel(textLabel) { + if (!textLabel) { + return; + } + var font = textLabel.font; + if (font && !(font instanceof BitmapFont)) { + font = font._fontFamily; + } else { + font = textLabel.fontFamily; + } + var fontSize = textLabel.fontSize * textLabel.node.scale.y; + if (this._textLabelFont === font && this._textLabelFontSize === fontSize && this._textLabelFontColor === textLabel.fontColor && this._textLabelAlign === textLabel.horizontalAlign) { + return; + } + this._textLabelFont = font; + this._textLabelFontSize = fontSize; + this._textLabelFontColor = textLabel.fontColor; + this._textLabelAlign = textLabel.horizontalAlign; + if (!this._edTxt) { + return; + } + var elem = this._edTxt; + elem.style.fontSize = fontSize + "px"; + elem.style.color = textLabel.color.toCSS(); + elem.style.fontFamily = font; + switch (textLabel.horizontalAlign) { + case Label.HorizontalAlign.LEFT: + elem.style.textAlign = 'left'; + break; + case Label.HorizontalAlign.CENTER: + elem.style.textAlign = 'center'; + break; + case Label.HorizontalAlign.RIGHT: + elem.style.textAlign = 'right'; + break; + } + }; + _proto._updatePlaceholderLabel = function _updatePlaceholderLabel(placeholderLabel) { + if (!placeholderLabel) { + return; + } + var font = placeholderLabel.font; + if (font && !(font instanceof BitmapFont)) { + font = placeholderLabel.font._fontFamily; + } else { + font = placeholderLabel.fontFamily; + } + var fontSize = placeholderLabel.fontSize * placeholderLabel.node.scale.y; + if (this._placeholderLabelFont === font && this._placeholderLabelFontSize === fontSize && this._placeholderLabelFontColor === placeholderLabel.fontColor && this._placeholderLabelAlign === placeholderLabel.horizontalAlign && this._placeholderLineHeight === placeholderLabel.fontSize) { + return; + } + this._placeholderLabelFont = font; + this._placeholderLabelFontSize = fontSize; + this._placeholderLabelFontColor = placeholderLabel.fontColor; + this._placeholderLabelAlign = placeholderLabel.horizontalAlign; + this._placeholderLineHeight = placeholderLabel.fontSize; + var styleEl = this._placeholderStyleSheet; + var fontColor = placeholderLabel.color.toCSS(); + var lineHeight = placeholderLabel.fontSize; + var horizontalAlign = ''; + switch (placeholderLabel.horizontalAlign) { + case Label.HorizontalAlign.LEFT: + horizontalAlign = 'left'; + break; + case Label.HorizontalAlign.CENTER: + horizontalAlign = 'center'; + break; + case Label.HorizontalAlign.RIGHT: + horizontalAlign = 'right'; + break; + } + styleEl.innerHTML = "#" + this._domId + "::-webkit-input-placeholder{text-transform: initial;-family: " + font + ";font-size: " + fontSize + "px;color: " + fontColor + ";line-height: " + lineHeight + "px;text-align: " + horizontalAlign + ";}" + ("#" + this._domId + "::-moz-placeholder{text-transform: initial;-family: " + font + ";font-size: " + fontSize + "px;color: " + fontColor + ";line-height: " + lineHeight + "px;text-align: " + horizontalAlign + ";}") + ("#" + this._domId + "::-ms-input-placeholder{text-transform: initial;-family: " + font + ";font-size: " + fontSize + "px;color: " + fontColor + ";line-height: " + lineHeight + "px;text-align: " + horizontalAlign + ";}"); + if (sys.browserType === BrowserType.EDGE) { + styleEl.innerHTML += "#" + this._domId + "::-ms-clear{display: none;}"; + } + }; + _proto._registerEventListeners = function _registerEventListeners() { + var _this3 = this; + if (!this._edTxt) { + return; + } + var elem = this._edTxt; + var inputLock = false; + var cbs = this.__eventListeners; + cbs.compositionStart = function () { + inputLock = true; + }; + cbs.compositionEnd = function () { + inputLock = false; + _this3._delegate._editBoxTextChanged(elem.value); + }; + cbs.onInput = function () { + if (inputLock) { + return; + } + var delegate = _this3._delegate; + var maxLength = delegate.maxLength; + if (maxLength >= 0) { + elem.value = elem.value.slice(0, maxLength); + } + delegate._editBoxTextChanged(elem.value); + }; + cbs.onClick = function () { + if (_this3._editing) { + if (sys.isMobile) { + _this3._adjustWindowScroll(); + } + } + }; + cbs.onKeydown = function (e) { + if (e.keyCode === KeyCode.ENTER) { + e.propagationStopped = true; + _this3._delegate._editBoxEditingReturn(); + if (!_this3._isTextArea) { + elem.blur(); + } + } else if (e.keyCode === KeyCode.TAB) { + e.propagationStopped = true; + e.preventDefault(); + tabIndexUtil.next(_this3); + } + }; + cbs.onBlur = function () { + if (sys.isMobile && inputLock) { + cbs.compositionEnd(); + } + _this3._editing = false; + _currentEditBoxImpl = null; + _this3._hideDom(); + _this3._delegate._editBoxEditingDidEnded(); + }; + elem.addEventListener('compositionstart', cbs.compositionStart); + elem.addEventListener('compositionend', cbs.compositionEnd); + elem.addEventListener('input', cbs.onInput); + elem.addEventListener('keydown', cbs.onKeydown); + elem.addEventListener('blur', cbs.onBlur); + elem.addEventListener('touchstart', cbs.onClick); + }; + _proto._removeEventListeners = function _removeEventListeners() { + if (!this._edTxt) { + return; + } + var elem = this._edTxt; + var cbs = this.__eventListeners; + elem.removeEventListener('compositionstart', cbs.compositionStart); + elem.removeEventListener('compositionend', cbs.compositionEnd); + elem.removeEventListener('input', cbs.onInput); + elem.removeEventListener('keydown', cbs.onKeydown); + elem.removeEventListener('blur', cbs.onBlur); + elem.removeEventListener('touchstart', cbs.onClick); + cbs.compositionStart = null; + cbs.compositionEnd = null; + cbs.onInput = null; + cbs.onKeydown = null; + cbs.onBlur = null; + cbs.onClick = null; + }; + return EditBoxImpl; + }(EditBoxImplBase); + + var _dec$j, _dec2$g, _dec3$f, _dec4$b, _dec5$b, _dec6$5, _dec7$3, _dec8$2, _dec9$2, _dec10, _dec11, _dec12, _dec13, _class$j, _class2$f, _initializer$f, _initializer2$e, _initializer3$b, _initializer4$a, _initializer5$8, _initializer6$5, _initializer7$5, _initializer8$5, _initializer9$5, _initializer10$5, _initializer11$5, _initializer12$4, _initializer13$2, _class3$b; + var LEFT_PADDING = 2; + function capitalize(str) { + return str.replace(/(?:^|\s)\S/g, function (a) { + return a.toUpperCase(); + }); + } + function capitalizeFirstLetter(str) { + return str.charAt(0).toUpperCase() + str.slice(1); + } + var EventType$5; + (function (EventType) { + EventType["EDITING_DID_BEGAN"] = "editing-did-began"; + EventType["EDITING_DID_ENDED"] = "editing-did-ended"; + EventType["TEXT_CHANGED"] = "text-changed"; + EventType["EDITING_RETURN"] = "editing-return"; + EventType["XR_EDITING_DID_BEGAN"] = "xr-editing-did-began"; + EventType["XR_EDITING_DID_ENDED"] = "xr-editing-did-ended"; + })(EventType$5 || (EventType$5 = {})); + var EditBox = exports('fi', (_dec$j = ccclass$t('cc.EditBox'), _dec2$g = executionOrder$1(110), _dec3$f = requireComponent(UITransform), _dec4$b = type$8(Label), _dec5$b = type$8(Label), _dec6$5 = type$8(SpriteFrame), _dec7$3 = type$8(InputFlag), _dec8$2 = type$8(InputMode), _dec9$2 = type$8(KeyboardReturnType), _dec10 = type$8([EventHandler]), _dec11 = type$8([EventHandler]), _dec12 = type$8([EventHandler]), _dec13 = type$8([EventHandler]), _dec$j(_class$j = _dec2$g(_class$j = _dec3$f(_class$j = (_class2$f = (_class3$b = function (_Component) { + _inheritsLoose(EditBox, _Component); + function EditBox() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this.editingDidBegan = _initializer$f && _initializer$f(); + _this.textChanged = _initializer2$e && _initializer2$e(); + _this.editingDidEnded = _initializer3$b && _initializer3$b(); + _this.editingReturn = _initializer4$a && _initializer4$a(); + _this._impl = null; + _this._background = null; + _this._textLabel = _initializer5$8 && _initializer5$8(); + _this._placeholderLabel = _initializer6$5 && _initializer6$5(); + _this._returnType = _initializer7$5 && _initializer7$5(); + _this._string = _initializer8$5 && _initializer8$5(); + _this._tabIndex = _initializer9$5 && _initializer9$5(); + _this._backgroundImage = _initializer10$5 && _initializer10$5(); + _this._inputFlag = _initializer11$5 && _initializer11$5(); + _this._inputMode = _initializer12$4 && _initializer12$4(); + _this._maxLength = _initializer13$2 && _initializer13$2(); + _this._isLabelVisible = false; + return _this; + } + var _proto = EditBox.prototype; + _proto.__preload = function __preload() { + this._init(); + }; + _proto.onEnable = function onEnable() { + { + this._registerEvent(); + } + this._ensureBackgroundSprite(); + if (this._impl) { + this._impl.onEnable(); + } + }; + _proto.update = function update() { + if (this._impl) { + this._impl.update(); + } + }; + _proto.onDisable = function onDisable() { + { + this._unregisterEvent(); + } + this._unregisterBackgroundEvent(); + if (this._impl) { + this._impl.onDisable(); + } + }; + _proto.onDestroy = function onDestroy() { + if (this._impl) { + this._impl.clear(); + } + }; + _proto.setFocus = function setFocus() { + if (this._impl) { + this._impl.setFocus(true); + } + }; + _proto.focus = function focus() { + if (this._impl) { + this._impl.setFocus(true); + } + }; + _proto.blur = function blur() { + if (this._impl) { + this._impl.setFocus(false); + } + }; + _proto.isFocused = function isFocused() { + if (this._impl) { + return this._impl.isFocused(); + } + return false; + }; + _proto._editBoxEditingDidBegan = function _editBoxEditingDidBegan() { + EventHandler.emitEvents(this.editingDidBegan, this); + this.node.emit(EventType$5.EDITING_DID_BEGAN, this); + if (this._impl) { + this._impl._dirtyFlag = true; + } + }; + _proto._editBoxEditingDidEnded = function _editBoxEditingDidEnded(text) { + EventHandler.emitEvents(this.editingDidEnded, this); + this.node.emit(EventType$5.EDITING_DID_ENDED, this, text); + if (this._impl) { + this._impl._dirtyFlag = false; + } + }; + _proto._editBoxTextChanged = function _editBoxTextChanged(text) { + text = this._updateLabelStringStyle(text, true); + this.string = text; + EventHandler.emitEvents(this.textChanged, text, this); + this.node.emit(EventType$5.TEXT_CHANGED, this); + }; + _proto._editBoxEditingReturn = function _editBoxEditingReturn(text) { + EventHandler.emitEvents(this.editingReturn, this); + this.node.emit(EventType$5.EDITING_RETURN, this, text); + }; + _proto._showLabels = function _showLabels() { + this._isLabelVisible = true; + this._updateLabels(); + }; + _proto._hideLabels = function _hideLabels() { + this._isLabelVisible = false; + if (this._textLabel) { + this._textLabel.node.active = false; + } + if (this._placeholderLabel) { + this._placeholderLabel.node.active = false; + } + }; + _proto._onTouchBegan = function _onTouchBegan(event) { + event.propagationStopped = true; + }; + _proto._onTouchCancel = function _onTouchCancel(event) { + event.propagationStopped = true; + }; + _proto._onTouchEnded = function _onTouchEnded(event) { + if (this._impl) { + this._impl.beginEditing(); + } + event.propagationStopped = true; + }; + _proto._init = function _init() { + this._updatePlaceholderLabel(); + this._updateTextLabel(); + this._isLabelVisible = true; + this.node.on(NodeEventType.SIZE_CHANGED, this._resizeChildNodes, this); + var impl = this._impl = new EditBox._EditBoxImpl(); + impl.init(this); + this._updateString(this._string); + this._syncSize(); + }; + _proto._ensureBackgroundSprite = function _ensureBackgroundSprite() { + if (!this._background) { + var background = this.node.getComponent(Sprite); + if (!background) { + background = this.node.addComponent(Sprite); + } + if (background !== this._background) { + background.type = Sprite.Type.SLICED; + background.spriteFrame = this._backgroundImage; + this._background = background; + this._registerBackgroundEvent(); + } + } + }; + _proto._updateTextLabel = function _updateTextLabel() { + var textLabel = this._textLabel; + if (!textLabel) { + var node = this.node.getChildByName('TEXT_LABEL'); + if (!node) { + node = new Node$1('TEXT_LABEL'); + node.layer = this.node.layer; + } + textLabel = node.getComponent(Label); + if (!textLabel) { + textLabel = node.addComponent(Label); + } + node.parent = this.node; + this._textLabel = textLabel; + } + if (this._inputMode === InputMode.ANY) { + textLabel.verticalAlign = VerticalTextAlignment.TOP; + textLabel.enableWrapText = true; + } else { + textLabel.enableWrapText = false; + } + textLabel.string = this._updateLabelStringStyle(this._string); + }; + _proto._updatePlaceholderLabel = function _updatePlaceholderLabel() { + var placeholderLabel = this._placeholderLabel; + if (!placeholderLabel) { + var node = this.node.getChildByName('PLACEHOLDER_LABEL'); + if (!node) { + node = new Node$1('PLACEHOLDER_LABEL'); + node.layer = this.node.layer; + } + placeholderLabel = node.getComponent(Label); + if (!placeholderLabel) { + placeholderLabel = node.addComponent(Label); + } + node.parent = this.node; + this._placeholderLabel = placeholderLabel; + } + if (this._inputMode === InputMode.ANY) { + placeholderLabel.enableWrapText = true; + } else { + placeholderLabel.enableWrapText = false; + } + placeholderLabel.string = this.placeholder; + }; + _proto._syncSize = function _syncSize() { + var trans = this.node._uiProps.uiTransformComp; + var size = trans.contentSize; + if (this._background) { + var bgTrans = this._background.node._uiProps.uiTransformComp; + bgTrans.anchorPoint = trans.anchorPoint; + bgTrans.setContentSize(size); + } + this._updateLabelPosition(size); + if (this._impl) { + this._impl.setSize(size.width, size.height); + } + }; + _proto._updateLabels = function _updateLabels() { + if (this._isLabelVisible) { + var content = this._string; + if (this._textLabel) { + this._textLabel.node.active = content !== ''; + } + if (this._placeholderLabel) { + this._placeholderLabel.node.active = content === ''; + } + } + }; + _proto._updateString = function _updateString(text) { + var textLabel = this._textLabel; + if (!textLabel) { + return; + } + var displayText = text; + if (displayText) { + displayText = this._updateLabelStringStyle(displayText); + } + textLabel.string = displayText; + this._updateLabels(); + }; + _proto._updateLabelStringStyle = function _updateLabelStringStyle(text, ignorePassword) { + if (ignorePassword === void 0) { + ignorePassword = false; + } + var inputFlag = this._inputFlag; + if (!ignorePassword && inputFlag === InputFlag.PASSWORD) { + var passwordString = ''; + var len = text.length; + for (var i = 0; i < len; ++i) { + passwordString += "\u25CF"; + } + text = passwordString; + } else if (inputFlag === InputFlag.INITIAL_CAPS_ALL_CHARACTERS) { + text = text.toUpperCase(); + } else if (inputFlag === InputFlag.INITIAL_CAPS_WORD) { + text = capitalize(text); + } else if (inputFlag === InputFlag.INITIAL_CAPS_SENTENCE) { + text = capitalizeFirstLetter(text); + } + return text; + }; + _proto._registerEvent = function _registerEvent() { + this.node.on(NodeEventType.TOUCH_START, this._onTouchBegan, this); + this.node.on(NodeEventType.TOUCH_END, this._onTouchEnded, this); + this.node.on(XrUIPressEventType.XRUI_UNCLICK, this._xrUnClick, this); + this.node.on(XrKeyboardEventType.XR_KEYBOARD_INPUT, this._xrKeyBoardInput, this); + }; + _proto._unregisterEvent = function _unregisterEvent() { + this.node.off(NodeEventType.TOUCH_START, this._onTouchBegan, this); + this.node.off(NodeEventType.TOUCH_END, this._onTouchEnded, this); + this.node.off(XrUIPressEventType.XRUI_UNCLICK, this._xrUnClick, this); + this.node.off(XrKeyboardEventType.XR_KEYBOARD_INPUT, this._xrKeyBoardInput, this); + }; + _proto._onBackgroundSpriteFrameChanged = function _onBackgroundSpriteFrameChanged() { + if (!this._background) { + return; + } + this.backgroundImage = this._background.spriteFrame; + }; + _proto._registerBackgroundEvent = function _registerBackgroundEvent() { + var node = this._background && this._background.node; + node === null || node === void 0 ? void 0 : node.on(Sprite.EventType.SPRITE_FRAME_CHANGED, this._onBackgroundSpriteFrameChanged, this); + }; + _proto._unregisterBackgroundEvent = function _unregisterBackgroundEvent() { + var node = this._background && this._background.node; + node === null || node === void 0 ? void 0 : node.off(Sprite.EventType.SPRITE_FRAME_CHANGED, this._onBackgroundSpriteFrameChanged, this); + }; + _proto._updateLabelPosition = function _updateLabelPosition(size) { + var trans = this.node._uiProps.uiTransformComp; + var offX = -trans.anchorX * trans.width; + var offY = -trans.anchorY * trans.height; + var placeholderLabel = this._placeholderLabel; + var textLabel = this._textLabel; + if (textLabel) { + textLabel.node._uiProps.uiTransformComp.setContentSize(size.width - LEFT_PADDING, size.height); + textLabel.node.setPosition(offX + LEFT_PADDING, offY + size.height, textLabel.node.position.z); + if (this._inputMode === InputMode.ANY) { + textLabel.verticalAlign = VerticalTextAlignment.TOP; + } + textLabel.enableWrapText = this._inputMode === InputMode.ANY; + } + if (placeholderLabel) { + placeholderLabel.node._uiProps.uiTransformComp.setContentSize(size.width - LEFT_PADDING, size.height); + placeholderLabel.lineHeight = size.height; + placeholderLabel.node.setPosition(offX + LEFT_PADDING, offY + size.height, placeholderLabel.node.position.z); + placeholderLabel.enableWrapText = this._inputMode === InputMode.ANY; + } + }; + _proto._resizeChildNodes = function _resizeChildNodes() { + var trans = this.node._uiProps.uiTransformComp; + var textLabelNode = this._textLabel && this._textLabel.node; + if (textLabelNode) { + textLabelNode.setPosition(-trans.width / 2, trans.height / 2, textLabelNode.position.z); + textLabelNode._uiProps.uiTransformComp.setContentSize(trans.contentSize); + } + var placeholderLabelNode = this._placeholderLabel && this._placeholderLabel.node; + if (placeholderLabelNode) { + placeholderLabelNode.setPosition(-trans.width / 2, trans.height / 2, placeholderLabelNode.position.z); + placeholderLabelNode._uiProps.uiTransformComp.setContentSize(trans.contentSize); + } + var backgroundNode = this._background && this._background.node; + if (backgroundNode) { + backgroundNode._uiProps.uiTransformComp.setContentSize(trans.contentSize); + } + this._syncSize(); + }; + _proto._xrUnClick = function _xrUnClick() { + this.node.emit(EventType$5.XR_EDITING_DID_BEGAN, this._maxLength, this.string); + }; + _proto._xrKeyBoardInput = function _xrKeyBoardInput(str) { + this.string = str; + }; + _createClass(EditBox, [{ + key: "string", + get: function get() { + return this._string; + }, + set: function set(value) { + if (this._maxLength >= 0 && value.length >= this._maxLength) { + value = value.slice(0, this._maxLength); + } + if (this._string === value) { + return; + } + this._string = value; + this._updateString(value); + } + }, { + key: "placeholder", + get: function get() { + if (!this._placeholderLabel) { + return ''; + } + return this._placeholderLabel.string; + }, + set: function set(value) { + if (this._placeholderLabel) { + this._placeholderLabel.string = value; + } + } + }, { + key: "textLabel", + get: function get() { + return this._textLabel; + }, + set: function set(oldValue) { + if (this._textLabel !== oldValue) { + this._textLabel = oldValue; + if (this._textLabel) { + this._updateTextLabel(); + this._updateLabels(); + } + } + } + }, { + key: "placeholderLabel", + get: function get() { + return this._placeholderLabel; + }, + set: function set(oldValue) { + if (this._placeholderLabel !== oldValue) { + this._placeholderLabel = oldValue; + if (this._placeholderLabel) { + this._updatePlaceholderLabel(); + this._updateLabels(); + } + } + } + }, { + key: "backgroundImage", + get: function get() { + return this._backgroundImage; + }, + set: function set(value) { + if (this._backgroundImage === value) { + return; + } + this._backgroundImage = value; + this._ensureBackgroundSprite(); + this._background.spriteFrame = value; + } + }, { + key: "inputFlag", + get: function get() { + return this._inputFlag; + }, + set: function set(value) { + if (this._inputFlag === value) { + return; + } + this._inputFlag = value; + this._updateString(this._string); + } + }, { + key: "inputMode", + get: function get() { + return this._inputMode; + }, + set: function set(oldValue) { + if (this._inputMode !== oldValue) { + this._inputMode = oldValue; + this._updateTextLabel(); + this._updatePlaceholderLabel(); + } + } + }, { + key: "returnType", + get: function get() { + return this._returnType; + }, + set: function set(value) { + this._returnType = value; + } + }, { + key: "maxLength", + get: function get() { + return this._maxLength; + }, + set: function set(value) { + this._maxLength = value; + } + }, { + key: "tabIndex", + get: function get() { + return this._tabIndex; + }, + set: function set(value) { + if (this._tabIndex !== value) { + this._tabIndex = value; + if (this._impl) { + this._impl.setTabIndex(value); + } + } + } + }]); + return EditBox; + }(Component), _class3$b._EditBoxImpl = EditBoxImplBase, _class3$b.KeyboardReturnType = KeyboardReturnType, _class3$b.InputFlag = InputFlag, _class3$b.InputMode = InputMode, _class3$b.EventType = EventType$5, _class3$b), (_applyDecoratedDescriptor(_class2$f.prototype, "textLabel", [_dec4$b], Object.getOwnPropertyDescriptor(_class2$f.prototype, "textLabel"), _class2$f.prototype), _applyDecoratedDescriptor(_class2$f.prototype, "placeholderLabel", [_dec5$b], Object.getOwnPropertyDescriptor(_class2$f.prototype, "placeholderLabel"), _class2$f.prototype), _applyDecoratedDescriptor(_class2$f.prototype, "backgroundImage", [_dec6$5], Object.getOwnPropertyDescriptor(_class2$f.prototype, "backgroundImage"), _class2$f.prototype), _applyDecoratedDescriptor(_class2$f.prototype, "inputFlag", [_dec7$3], Object.getOwnPropertyDescriptor(_class2$f.prototype, "inputFlag"), _class2$f.prototype), _applyDecoratedDescriptor(_class2$f.prototype, "inputMode", [_dec8$2], Object.getOwnPropertyDescriptor(_class2$f.prototype, "inputMode"), _class2$f.prototype), _applyDecoratedDescriptor(_class2$f.prototype, "returnType", [_dec9$2], Object.getOwnPropertyDescriptor(_class2$f.prototype, "returnType"), _class2$f.prototype), _initializer$f = applyDecoratedInitializer(_class2$f.prototype, "editingDidBegan", [_dec10, serializable$9], function () { + return []; + }), _initializer2$e = applyDecoratedInitializer(_class2$f.prototype, "textChanged", [_dec11, serializable$9], function () { + return []; + }), _initializer3$b = applyDecoratedInitializer(_class2$f.prototype, "editingDidEnded", [_dec12, serializable$9], function () { + return []; + }), _initializer4$a = applyDecoratedInitializer(_class2$f.prototype, "editingReturn", [_dec13, serializable$9], function () { + return []; + }), _initializer5$8 = applyDecoratedInitializer(_class2$f.prototype, "_textLabel", [serializable$9], function () { + return null; + }), _initializer6$5 = applyDecoratedInitializer(_class2$f.prototype, "_placeholderLabel", [serializable$9], function () { + return null; + }), _initializer7$5 = applyDecoratedInitializer(_class2$f.prototype, "_returnType", [serializable$9], function () { + return KeyboardReturnType.DEFAULT; + }), _initializer8$5 = applyDecoratedInitializer(_class2$f.prototype, "_string", [serializable$9], function () { + return ''; + }), _initializer9$5 = applyDecoratedInitializer(_class2$f.prototype, "_tabIndex", [serializable$9], function () { + return 0; + }), _initializer10$5 = applyDecoratedInitializer(_class2$f.prototype, "_backgroundImage", [serializable$9], function () { + return null; + }), _initializer11$5 = applyDecoratedInitializer(_class2$f.prototype, "_inputFlag", [serializable$9], function () { + return InputFlag.DEFAULT; + }), _initializer12$4 = applyDecoratedInitializer(_class2$f.prototype, "_inputMode", [serializable$9], function () { + return InputMode.ANY; + }), _initializer13$2 = applyDecoratedInitializer(_class2$f.prototype, "_maxLength", [serializable$9], function () { + return 20; + })), _class2$f)) || _class$j) || _class$j) || _class$j)); + if (typeof window === 'object' && typeof document === 'object' && !MINIGAME && !JSB && !RUNTIME_BASED) { + EditBox._EditBoxImpl = EditBoxImpl; + } + legacyCC.internal.EditBox = EditBox; + + var _dec$i, _dec2$f, _dec3$e, _dec4$a, _dec5$a, _dec6$4, _dec7$2, _dec8$1, _dec9$1, _class$i, _class2$e, _initializer$e, _initializer2$d, _initializer3$a, _initializer4$9, _initializer5$7, _initializer6$4, _initializer7$4, _initializer8$4, _initializer9$4, _initializer10$4, _initializer11$4, _initializer12$3, _initializer13$1, _initializer14$1, _initializer15$1, _initializer16$1, _class3$a; + var Type; + (function (Type) { + Type[Type["NONE"] = 0] = "NONE"; + Type[Type["HORIZONTAL"] = 1] = "HORIZONTAL"; + Type[Type["VERTICAL"] = 2] = "VERTICAL"; + Type[Type["GRID"] = 3] = "GRID"; + })(Type || (Type = {})); + ccenum(Type); + var ResizeMode; + (function (ResizeMode) { + ResizeMode[ResizeMode["NONE"] = 0] = "NONE"; + ResizeMode[ResizeMode["CONTAINER"] = 1] = "CONTAINER"; + ResizeMode[ResizeMode["CHILDREN"] = 2] = "CHILDREN"; + })(ResizeMode || (ResizeMode = {})); + ccenum(ResizeMode); + var AxisDirection; + (function (AxisDirection) { + AxisDirection[AxisDirection["HORIZONTAL"] = 0] = "HORIZONTAL"; + AxisDirection[AxisDirection["VERTICAL"] = 1] = "VERTICAL"; + })(AxisDirection || (AxisDirection = {})); + ccenum(AxisDirection); + var VerticalDirection; + (function (VerticalDirection) { + VerticalDirection[VerticalDirection["BOTTOM_TO_TOP"] = 0] = "BOTTOM_TO_TOP"; + VerticalDirection[VerticalDirection["TOP_TO_BOTTOM"] = 1] = "TOP_TO_BOTTOM"; + })(VerticalDirection || (VerticalDirection = {})); + ccenum(VerticalDirection); + var HorizontalDirection; + (function (HorizontalDirection) { + HorizontalDirection[HorizontalDirection["LEFT_TO_RIGHT"] = 0] = "LEFT_TO_RIGHT"; + HorizontalDirection[HorizontalDirection["RIGHT_TO_LEFT"] = 1] = "RIGHT_TO_LEFT"; + })(HorizontalDirection || (HorizontalDirection = {})); + ccenum(HorizontalDirection); + var Constraint; + (function (Constraint) { + Constraint[Constraint["NONE"] = 0] = "NONE"; + Constraint[Constraint["FIXED_ROW"] = 1] = "FIXED_ROW"; + Constraint[Constraint["FIXED_COL"] = 2] = "FIXED_COL"; + })(Constraint || (Constraint = {})); + ccenum(Constraint); + var _tempVec3$2 = new Vec3(); + var Layout = exports('fj', (_dec$i = ccclass$t('cc.Layout'), _dec2$f = executionOrder$1(110), _dec3$e = requireComponent(UITransform), _dec4$a = type$8(Type), _dec5$a = type$8(ResizeMode), _dec6$4 = type$8(AxisDirection), _dec7$2 = type$8(VerticalDirection), _dec8$1 = type$8(HorizontalDirection), _dec9$1 = type$8(Constraint), _dec$i(_class$i = _dec2$f(_class$i = _dec3$e(_class$i = (_class2$e = (_class3$a = function (_Component) { + _inheritsLoose(Layout, _Component); + function Layout() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this._resizeMode = _initializer$e && _initializer$e(); + _this._layoutType = _initializer2$d && _initializer2$d(); + _this._cellSize = _initializer3$a && _initializer3$a(); + _this._startAxis = _initializer4$9 && _initializer4$9(); + _this._paddingLeft = _initializer5$7 && _initializer5$7(); + _this._paddingRight = _initializer6$4 && _initializer6$4(); + _this._paddingTop = _initializer7$4 && _initializer7$4(); + _this._paddingBottom = _initializer8$4 && _initializer8$4(); + _this._spacingX = _initializer9$4 && _initializer9$4(); + _this._spacingY = _initializer10$4 && _initializer10$4(); + _this._verticalDirection = _initializer11$4 && _initializer11$4(); + _this._horizontalDirection = _initializer12$3 && _initializer12$3(); + _this._constraint = _initializer13$1 && _initializer13$1(); + _this._constraintNum = _initializer14$1 && _initializer14$1(); + _this._affectedByScale = _initializer15$1 && _initializer15$1(); + _this._isAlign = _initializer16$1 && _initializer16$1(); + _this._layoutSize = new Size$1(300, 200); + _this._layoutDirty = true; + _this._childrenDirty = false; + _this._usefulLayoutObj = []; + _this._init = false; + return _this; + } + var _proto = Layout.prototype; + _proto.updateLayout = function updateLayout(force) { + if (force === void 0) { + force = false; + } + if (this._layoutDirty || force) { + this._doLayout(); + this._layoutDirty = false; + } + }; + _proto.onEnable = function onEnable() { + this._addEventListeners(); + var trans = this.node._uiProps.uiTransformComp; + if (trans.contentSize.equals(Size$1.ZERO)) { + trans.setContentSize(this._layoutSize); + } + this._childrenChanged(); + }; + _proto.onDisable = function onDisable() { + this._usefulLayoutObj.length = 0; + this._removeEventListeners(); + }; + _proto._checkUsefulObj = function _checkUsefulObj() { + this._usefulLayoutObj.length = 0; + var children = this.node.children; + for (var i = 0; i < children.length; ++i) { + var child = children[i]; + var uiTrans = child._uiProps.uiTransformComp; + if (child.activeInHierarchy && uiTrans) { + this._usefulLayoutObj.push(uiTrans); + } + } + }; + _proto._addEventListeners = function _addEventListeners() { + director.on(Director.EVENT_AFTER_UPDATE, this.updateLayout, this); + this.node.on(NodeEventType.SIZE_CHANGED, this._resized, this); + this.node.on(NodeEventType.ANCHOR_CHANGED, this._doLayoutDirty, this); + this.node.on(NodeEventType.CHILD_ADDED, this._childAdded, this); + this.node.on(NodeEventType.CHILD_REMOVED, this._childRemoved, this); + this.node.on(NodeEventType.SIBLING_ORDER_CHANGED, this._childrenChanged, this); + this.node.on('childrenSiblingOrderChanged', this.updateLayout, this); + this._addChildrenEventListeners(); + }; + _proto._removeEventListeners = function _removeEventListeners() { + director.off(Director.EVENT_AFTER_UPDATE, this.updateLayout, this); + this.node.off(NodeEventType.SIZE_CHANGED, this._resized, this); + this.node.off(NodeEventType.ANCHOR_CHANGED, this._doLayoutDirty, this); + this.node.off(NodeEventType.CHILD_ADDED, this._childAdded, this); + this.node.off(NodeEventType.CHILD_REMOVED, this._childRemoved, this); + this.node.off(NodeEventType.SIBLING_ORDER_CHANGED, this._childrenChanged, this); + this.node.off('childrenSiblingOrderChanged', this.updateLayout, this); + this._removeChildrenEventListeners(); + }; + _proto._addChildrenEventListeners = function _addChildrenEventListeners() { + var children = this.node.children; + for (var i = 0; i < children.length; ++i) { + var child = children[i]; + child.on(NodeEventType.SIZE_CHANGED, this._doLayoutDirty, this); + child.on(NodeEventType.TRANSFORM_CHANGED, this._transformDirty, this); + child.on(NodeEventType.ANCHOR_CHANGED, this._doLayoutDirty, this); + child.on(NodeEventType.ACTIVE_IN_HIERARCHY_CHANGED, this._childrenChanged, this); + } + }; + _proto._removeChildrenEventListeners = function _removeChildrenEventListeners() { + var children = this.node.children; + for (var i = 0; i < children.length; ++i) { + var child = children[i]; + child.off(NodeEventType.SIZE_CHANGED, this._doLayoutDirty, this); + child.off(NodeEventType.TRANSFORM_CHANGED, this._transformDirty, this); + child.off(NodeEventType.ANCHOR_CHANGED, this._doLayoutDirty, this); + child.off(NodeEventType.ACTIVE_IN_HIERARCHY_CHANGED, this._childrenChanged, this); + } + }; + _proto._childAdded = function _childAdded(child) { + child.on(NodeEventType.SIZE_CHANGED, this._doLayoutDirty, this); + child.on(NodeEventType.TRANSFORM_CHANGED, this._transformDirty, this); + child.on(NodeEventType.ANCHOR_CHANGED, this._doLayoutDirty, this); + child.on(NodeEventType.ACTIVE_IN_HIERARCHY_CHANGED, this._childrenChanged, this); + this._childrenChanged(); + }; + _proto._childRemoved = function _childRemoved(child) { + child.off(NodeEventType.SIZE_CHANGED, this._doLayoutDirty, this); + child.off(NodeEventType.TRANSFORM_CHANGED, this._transformDirty, this); + child.off(NodeEventType.ANCHOR_CHANGED, this._doLayoutDirty, this); + child.off(NodeEventType.ACTIVE_IN_HIERARCHY_CHANGED, this._childrenChanged, this); + this._childrenChanged(); + }; + _proto._resized = function _resized() { + this._layoutSize.set(this.node._uiProps.uiTransformComp.contentSize); + this._doLayoutDirty(); + }; + _proto._doLayoutHorizontally = function _doLayoutHorizontally(baseWidth, rowBreak, fnPositionY, applyChildren) { + var trans = this.node._uiProps.uiTransformComp; + var layoutAnchor = trans.anchorPoint; + var limit = this._getFixedBreakingNum(); + var sign = 1; + var paddingX = this._paddingLeft; + if (this._horizontalDirection === HorizontalDirection.RIGHT_TO_LEFT) { + sign = -1; + paddingX = this._paddingRight; + } + var startPos = (this._horizontalDirection - layoutAnchor.x) * baseWidth + sign * paddingX; + var nextX = startPos - sign * this._spacingX; + var totalHeight = 0; + var rowMaxHeight = 0; + var tempMaxHeight = 0; + var maxHeight = 0; + var isBreak = false; + var activeChildCount = this._usefulLayoutObj.length; + var newChildWidth = this._cellSize.width; + var paddingH = this._getPaddingH(); + if (this._layoutType !== Type.GRID && this._resizeMode === ResizeMode.CHILDREN) { + newChildWidth = (baseWidth - paddingH - (activeChildCount - 1) * this._spacingX) / activeChildCount; + } + var children = this._usefulLayoutObj; + for (var i = 0; i < children.length; ++i) { + var childTrans = children[i]; + var child = childTrans.node; + var scale = child.scale; + var childScaleX = this._getUsedScaleValue(scale.x); + var childScaleY = this._getUsedScaleValue(scale.y); + if (this._resizeMode === ResizeMode.CHILDREN) { + childTrans.width = newChildWidth / childScaleX; + if (this._layoutType === Type.GRID) { + childTrans.height = this._cellSize.height / childScaleY; + } + } + var anchorX = Math.abs(this._horizontalDirection - childTrans.anchorX); + var childBoundingBoxWidth = childTrans.width * childScaleX; + var childBoundingBoxHeight = childTrans.height * childScaleY; + if (childBoundingBoxHeight > tempMaxHeight) { + maxHeight = Math.max(tempMaxHeight, maxHeight); + rowMaxHeight = tempMaxHeight || childBoundingBoxHeight; + tempMaxHeight = childBoundingBoxHeight; + } + nextX += sign * (anchorX * childBoundingBoxWidth + this._spacingX); + var rightBoundaryOfChild = sign * (1 - anchorX) * childBoundingBoxWidth; + if (rowBreak) { + if (limit > 0) { + isBreak = i / limit > 0 && i % limit === 0; + if (isBreak) { + rowMaxHeight = tempMaxHeight > childBoundingBoxHeight ? tempMaxHeight : rowMaxHeight; + } + } else if (childBoundingBoxWidth > baseWidth - paddingH) { + if (nextX > startPos + sign * (anchorX * childBoundingBoxWidth)) { + isBreak = true; + } + } else { + var boundary = (1 - this._horizontalDirection - layoutAnchor.x) * baseWidth; + var rowBreakBoundary = nextX + rightBoundaryOfChild + sign * (sign > 0 ? this._paddingRight : this._paddingLeft); + isBreak = Math.abs(rowBreakBoundary) > Math.abs(boundary); + } + if (isBreak) { + nextX = startPos + sign * (anchorX * childBoundingBoxWidth); + if (childBoundingBoxHeight !== tempMaxHeight) { + rowMaxHeight = tempMaxHeight; + } + totalHeight += rowMaxHeight + this._spacingY; + rowMaxHeight = tempMaxHeight = childBoundingBoxHeight; + } + } + var finalPositionY = fnPositionY(child, childTrans, totalHeight); + if (applyChildren) { + child.setPosition(nextX, finalPositionY); + } + nextX += rightBoundaryOfChild; + } + rowMaxHeight = Math.max(rowMaxHeight, tempMaxHeight); + var containerResizeBoundary = Math.max(maxHeight, totalHeight + rowMaxHeight) + this._getPaddingV(); + return containerResizeBoundary; + }; + _proto._doLayoutVertically = function _doLayoutVertically(baseHeight, columnBreak, fnPositionX, applyChildren) { + var trans = this.node._uiProps.uiTransformComp; + var layoutAnchor = trans.anchorPoint; + var limit = this._getFixedBreakingNum(); + var sign = 1; + var paddingY = this._paddingBottom; + if (this._verticalDirection === VerticalDirection.TOP_TO_BOTTOM) { + sign = -1; + paddingY = this._paddingTop; + } + var startPos = (this._verticalDirection - layoutAnchor.y) * baseHeight + sign * paddingY; + var nextY = startPos - sign * this._spacingY; + var tempMaxWidth = 0; + var maxWidth = 0; + var colMaxWidth = 0; + var totalWidth = 0; + var isBreak = false; + var activeChildCount = this._usefulLayoutObj.length; + var newChildHeight = this._cellSize.height; + var paddingV = this._getPaddingV(); + if (this._layoutType !== Type.GRID && this._resizeMode === ResizeMode.CHILDREN) { + newChildHeight = (baseHeight - paddingV - (activeChildCount - 1) * this._spacingY) / activeChildCount; + } + var children = this._usefulLayoutObj; + for (var i = 0; i < children.length; ++i) { + var childTrans = children[i]; + var child = childTrans.node; + var scale = child.scale; + var childScaleX = this._getUsedScaleValue(scale.x); + var childScaleY = this._getUsedScaleValue(scale.y); + if (this._resizeMode === ResizeMode.CHILDREN) { + childTrans.height = newChildHeight / childScaleY; + if (this._layoutType === Type.GRID) { + childTrans.width = this._cellSize.width / childScaleX; + } + } + var anchorY = Math.abs(this._verticalDirection - childTrans.anchorY); + var childBoundingBoxWidth = childTrans.width * childScaleX; + var childBoundingBoxHeight = childTrans.height * childScaleY; + if (childBoundingBoxWidth > tempMaxWidth) { + maxWidth = Math.max(tempMaxWidth, maxWidth); + colMaxWidth = tempMaxWidth || childBoundingBoxWidth; + tempMaxWidth = childBoundingBoxWidth; + } + nextY += sign * (anchorY * childBoundingBoxHeight + this._spacingY); + var topBoundaryOfChild = sign * (1 - anchorY) * childBoundingBoxHeight; + if (columnBreak) { + if (limit > 0) { + isBreak = i / limit > 0 && i % limit === 0; + if (isBreak) { + colMaxWidth = tempMaxWidth > childBoundingBoxHeight ? tempMaxWidth : colMaxWidth; + } + } else if (childBoundingBoxHeight > baseHeight - paddingV) { + if (nextY > startPos + sign * (anchorY * childBoundingBoxHeight)) { + isBreak = true; + } + } else { + var boundary = (1 - this._verticalDirection - layoutAnchor.y) * baseHeight; + var columnBreakBoundary = nextY + topBoundaryOfChild + sign * (sign > 0 ? this._paddingTop : this._paddingBottom); + isBreak = Math.abs(columnBreakBoundary) > Math.abs(boundary); + } + if (isBreak) { + nextY = startPos + sign * (anchorY * childBoundingBoxHeight); + if (childBoundingBoxWidth !== tempMaxWidth) { + colMaxWidth = tempMaxWidth; + } + totalWidth += colMaxWidth + this._spacingX; + colMaxWidth = tempMaxWidth = childBoundingBoxWidth; + } + } + var finalPositionX = fnPositionX(child, childTrans, totalWidth); + if (applyChildren) { + child.getPosition(_tempVec3$2); + child.setPosition(finalPositionX, nextY, _tempVec3$2.z); + } + nextY += topBoundaryOfChild; + } + colMaxWidth = Math.max(colMaxWidth, tempMaxWidth); + var containerResizeBoundary = Math.max(maxWidth, totalWidth + colMaxWidth) + this._getPaddingH(); + return containerResizeBoundary; + }; + _proto._doLayoutGridAxisHorizontal = function _doLayoutGridAxisHorizontal(layoutAnchor, layoutSize) { + var _this2 = this; + var baseWidth = layoutSize.width; + var sign = 1; + var bottomBoundaryOfLayout = -layoutAnchor.y * layoutSize.height; + var paddingY = this._paddingBottom; + if (this._verticalDirection === VerticalDirection.TOP_TO_BOTTOM) { + sign = -1; + bottomBoundaryOfLayout = (1 - layoutAnchor.y) * layoutSize.height; + paddingY = this._paddingTop; + } + var fnPositionY = function fnPositionY(child, childTrans, topOffset) { + return bottomBoundaryOfLayout + sign * (topOffset + (1 - childTrans.anchorY) * childTrans.height * _this2._getUsedScaleValue(child.scale.y) + paddingY); + }; + var newHeight = 0; + if (this._resizeMode === ResizeMode.CONTAINER) { + newHeight = this._doLayoutHorizontally(baseWidth, true, fnPositionY, false); + bottomBoundaryOfLayout = -layoutAnchor.y * newHeight; + if (this._verticalDirection === VerticalDirection.TOP_TO_BOTTOM) { + sign = -1; + bottomBoundaryOfLayout = (1 - layoutAnchor.y) * newHeight; + } + } + this._doLayoutHorizontally(baseWidth, true, fnPositionY, true); + if (this._resizeMode === ResizeMode.CONTAINER) { + this.node._uiProps.uiTransformComp.setContentSize(baseWidth, newHeight); + } + }; + _proto._doLayoutGridAxisVertical = function _doLayoutGridAxisVertical(layoutAnchor, layoutSize) { + var _this3 = this; + var baseHeight = layoutSize.height; + var sign = 1; + var leftBoundaryOfLayout = -layoutAnchor.x * layoutSize.width; + var paddingX = this._paddingLeft; + if (this._horizontalDirection === HorizontalDirection.RIGHT_TO_LEFT) { + sign = -1; + leftBoundaryOfLayout = (1 - layoutAnchor.x) * layoutSize.width; + paddingX = this._paddingRight; + } + var fnPositionX = function fnPositionX(child, childTrans, leftOffset) { + return leftBoundaryOfLayout + sign * (leftOffset + (1 - childTrans.anchorX) * childTrans.width * _this3._getUsedScaleValue(child.scale.x) + paddingX); + }; + var newWidth = 0; + if (this._resizeMode === ResizeMode.CONTAINER) { + newWidth = this._doLayoutVertically(baseHeight, true, fnPositionX, false); + leftBoundaryOfLayout = -layoutAnchor.x * newWidth; + if (this._horizontalDirection === HorizontalDirection.RIGHT_TO_LEFT) { + sign = -1; + leftBoundaryOfLayout = (1 - layoutAnchor.x) * newWidth; + } + } + this._doLayoutVertically(baseHeight, true, fnPositionX, true); + if (this._resizeMode === ResizeMode.CONTAINER) { + this.node._uiProps.uiTransformComp.setContentSize(newWidth, baseHeight); + } + }; + _proto._doLayoutGrid = function _doLayoutGrid() { + var trans = this.node._uiProps.uiTransformComp; + var layoutAnchor = trans.anchorPoint; + var layoutSize = trans.contentSize; + if (this.startAxis === AxisDirection.HORIZONTAL) { + this._doLayoutGridAxisHorizontal(layoutAnchor, layoutSize); + } else if (this.startAxis === AxisDirection.VERTICAL) { + this._doLayoutGridAxisVertical(layoutAnchor, layoutSize); + } + }; + _proto._getHorizontalBaseWidth = function _getHorizontalBaseWidth(horizontal) { + var children = this._usefulLayoutObj; + var baseSize = 0; + var activeChildCount = children.length; + if (this._resizeMode === ResizeMode.CONTAINER) { + for (var i = 0; i < children.length; ++i) { + var childTrans = children[i]; + var child = childTrans.node; + var scale = child.scale; + baseSize += childTrans.width * this._getUsedScaleValue(scale.x); + } + baseSize += (activeChildCount - 1) * this._spacingX + this._getPaddingH(); + } else { + baseSize = this.node._uiProps.uiTransformComp.width; + } + return baseSize; + }; + _proto._getVerticalBaseHeight = function _getVerticalBaseHeight() { + var children = this._usefulLayoutObj; + var baseSize = 0; + var activeChildCount = children.length; + if (this._resizeMode === ResizeMode.CONTAINER) { + for (var i = 0; i < children.length; ++i) { + var childTrans = children[i]; + var child = childTrans.node; + var scale = child.scale; + baseSize += childTrans.height * this._getUsedScaleValue(scale.y); + } + baseSize += (activeChildCount - 1) * this._spacingY + this._getPaddingV(); + } else { + baseSize = this.node._uiProps.uiTransformComp.height; + } + return baseSize; + }; + _proto._doLayout = function _doLayout() { + var _this4 = this; + if (!this._init || this._childrenDirty) { + this._checkUsefulObj(); + this._init = true; + this._childrenDirty = false; + } + if (this._layoutType === Type.HORIZONTAL) { + var newWidth = this._getHorizontalBaseWidth(); + var fnPositionY = function fnPositionY(child) { + var pos = _this4._isAlign ? Vec3.ZERO : child.position; + return pos.y; + }; + this._doLayoutHorizontally(newWidth, false, fnPositionY, true); + this.node._uiProps.uiTransformComp.width = newWidth; + } else if (this._layoutType === Type.VERTICAL) { + var newHeight = this._getVerticalBaseHeight(); + var fnPositionX = function fnPositionX(child) { + var pos = _this4._isAlign ? Vec3.ZERO : child.position; + return pos.x; + }; + this._doLayoutVertically(newHeight, false, fnPositionX, true); + this.node._uiProps.uiTransformComp.height = newHeight; + } else if (this._layoutType === Type.GRID) { + this._doLayoutGrid(); + } + }; + _proto._getUsedScaleValue = function _getUsedScaleValue(value) { + return this._affectedByScale ? Math.abs(value) : 1; + }; + _proto._transformDirty = function _transformDirty(type) { + if (!(type & TransformBit.SCALE) || !(type & TransformBit.POSITION) || !this._affectedByScale) { + return; + } + this._doLayoutDirty(); + }; + _proto._doLayoutDirty = function _doLayoutDirty() { + this._layoutDirty = true; + }; + _proto._childrenChanged = function _childrenChanged() { + this._childrenDirty = true; + this._doLayoutDirty(); + }; + _proto._getPaddingH = function _getPaddingH() { + return this._paddingLeft + this._paddingRight; + }; + _proto._getPaddingV = function _getPaddingV() { + return this._paddingTop + this._paddingBottom; + }; + _proto._getFixedBreakingNum = function _getFixedBreakingNum() { + if (this._layoutType !== Type.GRID || this._constraint === Constraint.NONE || this._constraintNum <= 0) { + return 0; + } + var num = this._constraint === Constraint.FIXED_ROW ? Math.ceil(this._usefulLayoutObj.length / this._constraintNum) : this._constraintNum; + if (this._startAxis === AxisDirection.VERTICAL) { + num = this._constraint === Constraint.FIXED_COL ? Math.ceil(this._usefulLayoutObj.length / this._constraintNum) : this._constraintNum; + } + return num; + }; + _createClass(Layout, [{ + key: "alignHorizontal", + get: function get() { + return this._isAlign; + }, + set: function set(value) { + if (this._layoutType !== Type.HORIZONTAL) { + return; + } + this._isAlign = value; + this._doLayoutDirty(); + } + }, { + key: "alignVertical", + get: function get() { + return this._isAlign; + }, + set: function set(value) { + if (this._layoutType !== Type.VERTICAL) { + return; + } + this._isAlign = value; + this._doLayoutDirty(); + } + }, { + key: "type", + get: function get() { + return this._layoutType; + }, + set: function set(value) { + this._layoutType = value; + this._doLayoutDirty(); + } + }, { + key: "resizeMode", + get: function get() { + return this._resizeMode; + }, + set: function set(value) { + if (this._layoutType === Type.NONE) { + return; + } + this._resizeMode = value; + this._doLayoutDirty(); + } + }, { + key: "cellSize", + get: function get() { + return this._cellSize; + }, + set: function set(value) { + if (this._cellSize === value) { + return; + } + this._cellSize.set(value); + this._doLayoutDirty(); + } + }, { + key: "startAxis", + get: function get() { + return this._startAxis; + }, + set: function set(value) { + if (this._startAxis === value) { + return; + } + this._startAxis = value; + this._doLayoutDirty(); + } + }, { + key: "paddingLeft", + get: function get() { + return this._paddingLeft; + }, + set: function set(value) { + if (this._paddingLeft === value) { + return; + } + this._paddingLeft = value; + this._doLayoutDirty(); + } + }, { + key: "paddingRight", + get: function get() { + return this._paddingRight; + }, + set: function set(value) { + if (this._paddingRight === value) { + return; + } + this._paddingRight = value; + this._doLayoutDirty(); + } + }, { + key: "paddingTop", + get: function get() { + return this._paddingTop; + }, + set: function set(value) { + if (this._paddingTop === value) { + return; + } + this._paddingTop = value; + this._doLayoutDirty(); + } + }, { + key: "paddingBottom", + get: function get() { + return this._paddingBottom; + }, + set: function set(value) { + if (this._paddingBottom === value) { + return; + } + this._paddingBottom = value; + this._doLayoutDirty(); + } + }, { + key: "spacingX", + get: function get() { + return this._spacingX; + }, + set: function set(value) { + if (this._spacingX === value) { + return; + } + this._spacingX = value; + this._doLayoutDirty(); + } + }, { + key: "spacingY", + get: function get() { + return this._spacingY; + }, + set: function set(value) { + if (this._spacingY === value) { + return; + } + this._spacingY = value; + this._doLayoutDirty(); + } + }, { + key: "verticalDirection", + get: function get() { + return this._verticalDirection; + }, + set: function set(value) { + if (this._verticalDirection === value) { + return; + } + this._verticalDirection = value; + this._doLayoutDirty(); + } + }, { + key: "horizontalDirection", + get: function get() { + return this._horizontalDirection; + }, + set: function set(value) { + if (this._horizontalDirection === value) { + return; + } + this._horizontalDirection = value; + this._doLayoutDirty(); + } + }, { + key: "padding", + get: function get() { + return this._paddingLeft; + }, + set: function set(value) { + if (this.paddingLeft !== value || this._paddingRight !== value || this._paddingTop !== value || this._paddingBottom !== value) { + this._paddingLeft = this._paddingRight = this._paddingTop = this._paddingBottom = value; + this._doLayoutDirty(); + } + } + }, { + key: "constraint", + get: function get() { + return this._constraint; + }, + set: function set(value) { + if (this._layoutType === Type.NONE || this._constraint === value) { + return; + } + this._constraint = value; + this._doLayoutDirty(); + } + }, { + key: "constraintNum", + get: function get() { + return this._constraintNum; + }, + set: function set(value) { + if (this._constraint === Constraint.NONE || this._constraintNum === value) { + return; + } + if (value <= 0) { + warn('Limit values to be greater than 0'); + } + this._constraintNum = value; + this._doLayoutDirty(); + } + }, { + key: "affectedByScale", + get: function get() { + return this._affectedByScale; + }, + set: function set(value) { + this._affectedByScale = value; + this._doLayoutDirty(); + } + }]); + return Layout; + }(Component), _class3$a.Type = Type, _class3$a.VerticalDirection = VerticalDirection, _class3$a.HorizontalDirection = HorizontalDirection, _class3$a.ResizeMode = ResizeMode, _class3$a.AxisDirection = AxisDirection, _class3$a.Constraint = Constraint, _class3$a), (_applyDecoratedDescriptor(_class2$e.prototype, "type", [_dec4$a], Object.getOwnPropertyDescriptor(_class2$e.prototype, "type"), _class2$e.prototype), _applyDecoratedDescriptor(_class2$e.prototype, "resizeMode", [_dec5$a], Object.getOwnPropertyDescriptor(_class2$e.prototype, "resizeMode"), _class2$e.prototype), _applyDecoratedDescriptor(_class2$e.prototype, "startAxis", [_dec6$4], Object.getOwnPropertyDescriptor(_class2$e.prototype, "startAxis"), _class2$e.prototype), _applyDecoratedDescriptor(_class2$e.prototype, "verticalDirection", [_dec7$2], Object.getOwnPropertyDescriptor(_class2$e.prototype, "verticalDirection"), _class2$e.prototype), _applyDecoratedDescriptor(_class2$e.prototype, "horizontalDirection", [_dec8$1], Object.getOwnPropertyDescriptor(_class2$e.prototype, "horizontalDirection"), _class2$e.prototype), _applyDecoratedDescriptor(_class2$e.prototype, "constraint", [_dec9$1], Object.getOwnPropertyDescriptor(_class2$e.prototype, "constraint"), _class2$e.prototype), _initializer$e = applyDecoratedInitializer(_class2$e.prototype, "_resizeMode", [serializable$9], function () { + return ResizeMode.NONE; + }), _initializer2$d = applyDecoratedInitializer(_class2$e.prototype, "_layoutType", [serializable$9], function () { + return Type.NONE; + }), _initializer3$a = applyDecoratedInitializer(_class2$e.prototype, "_cellSize", [serializable$9], function () { + return new Size$1(40, 40); + }), _initializer4$9 = applyDecoratedInitializer(_class2$e.prototype, "_startAxis", [serializable$9], function () { + return AxisDirection.HORIZONTAL; + }), _initializer5$7 = applyDecoratedInitializer(_class2$e.prototype, "_paddingLeft", [serializable$9], function () { + return 0; + }), _initializer6$4 = applyDecoratedInitializer(_class2$e.prototype, "_paddingRight", [serializable$9], function () { + return 0; + }), _initializer7$4 = applyDecoratedInitializer(_class2$e.prototype, "_paddingTop", [serializable$9], function () { + return 0; + }), _initializer8$4 = applyDecoratedInitializer(_class2$e.prototype, "_paddingBottom", [serializable$9], function () { + return 0; + }), _initializer9$4 = applyDecoratedInitializer(_class2$e.prototype, "_spacingX", [serializable$9], function () { + return 0; + }), _initializer10$4 = applyDecoratedInitializer(_class2$e.prototype, "_spacingY", [serializable$9], function () { + return 0; + }), _initializer11$4 = applyDecoratedInitializer(_class2$e.prototype, "_verticalDirection", [serializable$9], function () { + return VerticalDirection.TOP_TO_BOTTOM; + }), _initializer12$3 = applyDecoratedInitializer(_class2$e.prototype, "_horizontalDirection", [serializable$9], function () { + return HorizontalDirection.LEFT_TO_RIGHT; + }), _initializer13$1 = applyDecoratedInitializer(_class2$e.prototype, "_constraint", [serializable$9], function () { + return Constraint.NONE; + }), _initializer14$1 = applyDecoratedInitializer(_class2$e.prototype, "_constraintNum", [serializable$9], function () { + return 2; + }), _initializer15$1 = applyDecoratedInitializer(_class2$e.prototype, "_affectedByScale", [serializable$9], function () { + return false; + }), _initializer16$1 = applyDecoratedInitializer(_class2$e.prototype, "_isAlign", [serializable$9], function () { + return false; + })), _class2$e)) || _class$i) || _class$i) || _class$i)); + legacyCC.Layout = Layout; + + var _dec$h, _dec2$e, _dec3$d, _dec4$9, _dec5$9, _class$h, _class2$d, _initializer$d, _initializer2$c, _initializer3$9, _initializer4$8, _initializer5$6, _class3$9; + var Mode; + (function (Mode) { + Mode[Mode["HORIZONTAL"] = 0] = "HORIZONTAL"; + Mode[Mode["VERTICAL"] = 1] = "VERTICAL"; + Mode[Mode["FILLED"] = 2] = "FILLED"; + })(Mode || (Mode = {})); + Enum(Mode); + var ProgressBar = exports('fk', (_dec$h = ccclass$t('cc.ProgressBar'), _dec2$e = executionOrder$1(110), _dec3$d = requireComponent(UITransform), _dec4$9 = type$8(Sprite), _dec5$9 = type$8(Mode), _dec$h(_class$h = _dec2$e(_class$h = _dec3$d(_class$h = (_class2$d = (_class3$9 = function (_Component) { + _inheritsLoose(ProgressBar, _Component); + function ProgressBar() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this._barSprite = _initializer$d && _initializer$d(); + _this._mode = _initializer2$c && _initializer2$c(); + _this._totalLength = _initializer3$9 && _initializer3$9(); + _this._progress = _initializer4$8 && _initializer4$8(); + _this._reverse = _initializer5$6 && _initializer5$6(); + return _this; + } + var _proto = ProgressBar.prototype; + _proto._initBarSprite = function _initBarSprite() { + if (this._barSprite) { + var entity = this._barSprite.node; + if (!entity) { + return; + } + var trans = this.node._uiProps.uiTransformComp; + var nodeSize = trans.contentSize; + var nodeAnchor = trans.anchorPoint; + var barSpriteSize = entity._uiProps.uiTransformComp.contentSize; + if (this._barSprite.fillType === Sprite.FillType.RADIAL) { + this._mode = Mode.FILLED; + } + if (this._mode === Mode.HORIZONTAL) { + this.totalLength = barSpriteSize.width; + } else if (this._mode === Mode.VERTICAL) { + this.totalLength = barSpriteSize.height; + } else { + this.totalLength = this._barSprite.fillRange; + } + if (entity.parent === this.node) { + var x = -nodeSize.width * nodeAnchor.x; + entity.setPosition(x, 0, 0); + } + } + }; + _proto._updateBarStatus = function _updateBarStatus() { + if (this._barSprite) { + var entity = this._barSprite.node; + if (!entity) { + return; + } + var entTrans = entity._uiProps.uiTransformComp; + var entityAnchorPoint = entTrans.anchorPoint; + var entitySize = entTrans.contentSize; + var entityPosition = entity.getPosition(); + var anchorPoint = new Vec2(0, 0.5); + var progress = clamp01(this._progress); + var actualLenth = this._totalLength * progress; + var finalContentSize = entitySize; + var totalWidth = 0; + var totalHeight = 0; + switch (this._mode) { + case Mode.HORIZONTAL: + if (this._reverse) { + anchorPoint = new Vec2(1, 0.5); + } + finalContentSize = new Size$1(actualLenth, entitySize.height); + totalWidth = this._totalLength; + totalHeight = entitySize.height; + break; + case Mode.VERTICAL: + if (this._reverse) { + anchorPoint = new Vec2(0.5, 1); + } else { + anchorPoint = new Vec2(0.5, 0); + } + finalContentSize = new Size$1(entitySize.width, actualLenth); + totalWidth = entitySize.width; + totalHeight = this._totalLength; + break; + } + if (this._mode === Mode.FILLED) { + if (this._barSprite.type !== Sprite.Type.FILLED) { + warn('ProgressBar FILLED mode only works when barSprite\'s Type is FILLED!'); + } else { + if (this._reverse) { + actualLenth *= -1; + } + this._barSprite.fillRange = actualLenth; + } + } else if (this._barSprite.type !== Sprite.Type.FILLED) { + var anchorOffsetX = anchorPoint.x - entityAnchorPoint.x; + var anchorOffsetY = anchorPoint.y - entityAnchorPoint.y; + var finalPosition = new Vec3(totalWidth * anchorOffsetX, totalHeight * anchorOffsetY, 0); + entity.setPosition(entityPosition.x + finalPosition.x, entityPosition.y + finalPosition.y, entityPosition.z); + entTrans.setAnchorPoint(anchorPoint); + entTrans.setContentSize(finalContentSize); + } else { + warn('ProgressBar non-FILLED mode only works when barSprite\'s Type is non-FILLED!'); + } + } + }; + _createClass(ProgressBar, [{ + key: "barSprite", + get: function get() { + return this._barSprite; + }, + set: function set(value) { + if (this._barSprite === value) { + return; + } + this._barSprite = value; + this._initBarSprite(); + } + }, { + key: "mode", + get: function get() { + return this._mode; + }, + set: function set(value) { + if (this._mode === value) { + return; + } + this._mode = value; + if (this._barSprite) { + var entity = this._barSprite.node; + if (!entity) { + return; + } + var entitySize = entity._uiProps.uiTransformComp.contentSize; + if (this._mode === Mode.HORIZONTAL) { + this.totalLength = entitySize.width; + } else if (this._mode === Mode.VERTICAL) { + this.totalLength = entitySize.height; + } else if (this._mode === Mode.FILLED) { + this.totalLength = this._barSprite.fillRange; + } + } + } + }, { + key: "totalLength", + get: function get() { + return this._totalLength; + }, + set: function set(value) { + if (this._mode === Mode.FILLED) { + value = clamp01(value); + } + if (this._totalLength === value) { + return; + } + this._totalLength = value; + this._updateBarStatus(); + } + }, { + key: "progress", + get: function get() { + return this._progress; + }, + set: function set(value) { + if (this._progress === value) { + return; + } + this._progress = value; + this._updateBarStatus(); + } + }, { + key: "reverse", + get: function get() { + return this._reverse; + }, + set: function set(value) { + if (this._reverse === value) { + return; + } + this._reverse = value; + if (this._barSprite) { + this._barSprite.fillStart = 1 - this._barSprite.fillStart; + } + this._updateBarStatus(); + } + }]); + return ProgressBar; + }(Component), _class3$9.Mode = Mode, _class3$9), (_applyDecoratedDescriptor(_class2$d.prototype, "barSprite", [_dec4$9], Object.getOwnPropertyDescriptor(_class2$d.prototype, "barSprite"), _class2$d.prototype), _applyDecoratedDescriptor(_class2$d.prototype, "mode", [_dec5$9], Object.getOwnPropertyDescriptor(_class2$d.prototype, "mode"), _class2$d.prototype), _initializer$d = applyDecoratedInitializer(_class2$d.prototype, "_barSprite", [serializable$9], function () { + return null; + }), _initializer2$c = applyDecoratedInitializer(_class2$d.prototype, "_mode", [serializable$9], function () { + return Mode.HORIZONTAL; + }), _initializer3$9 = applyDecoratedInitializer(_class2$d.prototype, "_totalLength", [serializable$9], function () { + return 1; + }), _initializer4$8 = applyDecoratedInitializer(_class2$d.prototype, "_progress", [serializable$9], function () { + return 0.1; + }), _initializer5$6 = applyDecoratedInitializer(_class2$d.prototype, "_reverse", [serializable$9], function () { + return false; + })), _class2$d)) || _class$h) || _class$h) || _class$h)); + legacyCC.ProgressBar = ProgressBar; + + var _dec$g, _dec2$d, _dec3$c, _dec4$8, _dec5$8, _class$g, _class2$c, _initializer$c, _initializer2$b, _initializer3$8, _initializer4$7, _initializer5$5, _class3$8; + var GETTING_SHORTER_FACTOR = 20; + var _tempPos_1 = new Vec3(); + var _tempPos_2 = new Vec3(); + var _tempVec3$1 = new Vec3(); + var defaultAnchor = new Vec2(); + var _tempColor = new Color$1(); + var _tempVec2$2 = new Vec2(); + var Direction$3; + (function (Direction) { + Direction[Direction["HORIZONTAL"] = 0] = "HORIZONTAL"; + Direction[Direction["VERTICAL"] = 1] = "VERTICAL"; + })(Direction$3 || (Direction$3 = {})); + ccenum(Direction$3); + var ScrollBar = exports('fl', (_dec$g = ccclass$t('cc.ScrollBar'), _dec2$d = executionOrder$1(110), _dec3$c = requireComponent(UITransform), _dec4$8 = type$8(Sprite), _dec5$8 = type$8(Direction$3), _dec$g(_class$g = _dec2$d(_class$g = _dec3$c(_class$g = (_class2$c = (_class3$8 = function (_Component) { + _inheritsLoose(ScrollBar, _Component); + function ScrollBar() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this._scrollView = _initializer$c && _initializer$c(); + _this._handle = _initializer2$b && _initializer2$b(); + _this._direction = _initializer3$8 && _initializer3$8(); + _this._enableAutoHide = _initializer4$7 && _initializer4$7(); + _this._autoHideTime = _initializer5$5 && _initializer5$5(); + _this._touching = false; + _this._opacity = 255; + _this._autoHideRemainingTime = 0; + return _this; + } + var _proto = ScrollBar.prototype; + _proto.hide = function hide() { + this._autoHideRemainingTime = 0; + this._setOpacity(0); + }; + _proto.show = function show() { + this._autoHideRemainingTime = this._autoHideTime; + this._opacity = 255; + this._setOpacity(this._opacity); + }; + _proto.onScroll = function onScroll(outOfBoundary) { + if (!this._scrollView) { + return; + } + var content = this._scrollView.content; + if (!content) { + return; + } + var contentSize = content._uiProps.uiTransformComp.contentSize; + var scrollViewSize = this._scrollView.node._uiProps.uiTransformComp.contentSize; + var barSize = this.node._uiProps.uiTransformComp.contentSize; + if (this._conditionalDisableScrollBar(contentSize, scrollViewSize)) { + return; + } + if (this._enableAutoHide) { + this._autoHideRemainingTime = this._autoHideTime; + this._setOpacity(this._opacity); + } + var contentMeasure = 0; + var scrollViewMeasure = 0; + var outOfBoundaryValue = 0; + var contentPosition = 0; + var handleNodeMeasure = 0; + var outOfContentPosition = _tempVec2$2; + outOfContentPosition.set(0, 0); + if (this._direction === Direction$3.HORIZONTAL) { + contentMeasure = contentSize.width; + scrollViewMeasure = scrollViewSize.width; + handleNodeMeasure = barSize.width; + outOfBoundaryValue = outOfBoundary.x; + this._convertToScrollViewSpace(outOfContentPosition, content); + contentPosition = -outOfContentPosition.x; + } else if (this._direction === Direction$3.VERTICAL) { + contentMeasure = contentSize.height; + scrollViewMeasure = scrollViewSize.height; + handleNodeMeasure = barSize.height; + outOfBoundaryValue = outOfBoundary.y; + this._convertToScrollViewSpace(outOfContentPosition, content); + contentPosition = -outOfContentPosition.y; + } + var length = this._calculateLength(contentMeasure, scrollViewMeasure, handleNodeMeasure, outOfBoundaryValue); + var position = _tempVec2$2; + this._calculatePosition(position, contentMeasure, scrollViewMeasure, handleNodeMeasure, contentPosition, outOfBoundaryValue, length); + this._updateLength(length); + this._updateHandlerPosition(position); + }; + _proto.setScrollView = function setScrollView(scrollView) { + this._scrollView = scrollView; + }; + _proto.onTouchBegan = function onTouchBegan() { + if (!this._enableAutoHide) { + return; + } + this._touching = true; + }; + _proto.onTouchEnded = function onTouchEnded() { + if (!this._enableAutoHide) { + return; + } + this._touching = false; + if (this._autoHideTime <= 0) { + return; + } + if (this._scrollView) { + var content = this._scrollView.content; + if (content) { + var contentSize = content._uiProps.uiTransformComp.contentSize; + var scrollViewSize = this._scrollView.node._uiProps.uiTransformComp.contentSize; + if (this._conditionalDisableScrollBar(contentSize, scrollViewSize)) { + return; + } + } + } + this._autoHideRemainingTime = this._autoHideTime; + }; + _proto.onEnable = function onEnable() { + var renderComp = this.node.getComponent(Sprite); + if (renderComp) { + this._opacity = renderComp.color.a; + } + }; + _proto.start = function start() { + if (this._enableAutoHide) { + this._setOpacity(0); + } + }; + _proto.update = function update(dt) { + this._processAutoHide(dt); + }; + _proto._convertToScrollViewSpace = function _convertToScrollViewSpace(out, content) { + var scrollTrans = this._scrollView && this._scrollView.node._uiProps.uiTransformComp; + var contentTrans = content._uiProps.uiTransformComp; + if (!scrollTrans || !contentTrans) { + out.set(Vec2.ZERO); + } else { + _tempPos_1.set(-contentTrans.anchorX * contentTrans.width, -contentTrans.anchorY * contentTrans.height, 0); + contentTrans.convertToWorldSpaceAR(_tempPos_1, _tempPos_2); + var scrollViewSpacePos = scrollTrans.convertToNodeSpaceAR(_tempPos_2); + scrollViewSpacePos.x += scrollTrans.anchorX * scrollTrans.width; + scrollViewSpacePos.y += scrollTrans.anchorY * scrollTrans.height; + out.set(scrollViewSpacePos.x, scrollViewSpacePos.y); + } + }; + _proto._setOpacity = function _setOpacity(opacity) { + if (this._handle) { + var renderComp = this.node.getComponent(Sprite); + if (renderComp) { + _tempColor.set(renderComp.color); + _tempColor.a = opacity; + renderComp.color = _tempColor; + } + renderComp = this._handle.getComponent(Sprite); + if (renderComp) { + _tempColor.set(renderComp.color); + _tempColor.a = opacity; + renderComp.color = _tempColor; + } + } + }; + _proto._updateHandlerPosition = function _updateHandlerPosition(position) { + if (this._handle) { + var oldPosition = _tempVec3$1; + this._fixupHandlerPosition(oldPosition); + this._handle.node.setPosition(position.x + oldPosition.x, position.y + oldPosition.y, oldPosition.z); + } + }; + _proto._fixupHandlerPosition = function _fixupHandlerPosition(out) { + var uiTrans = this.node._uiProps.uiTransformComp; + var barSize = uiTrans.contentSize; + var barAnchor = uiTrans.anchorPoint; + var handleSize = this.handle.node._uiProps.uiTransformComp.contentSize; + var handleParent = this.handle.node.parent; + Vec3.set(_tempPos_1, -barSize.width * barAnchor.x, -barSize.height * barAnchor.y, 0); + var leftBottomWorldPosition = this.node._uiProps.uiTransformComp.convertToWorldSpaceAR(_tempPos_1, _tempPos_2); + var fixupPosition = out; + fixupPosition.set(0, 0, 0); + handleParent._uiProps.uiTransformComp.convertToNodeSpaceAR(leftBottomWorldPosition, fixupPosition); + if (this.direction === Direction$3.HORIZONTAL) { + fixupPosition.set(fixupPosition.x, fixupPosition.y + (barSize.height - handleSize.height) / 2, fixupPosition.z); + } else if (this.direction === Direction$3.VERTICAL) { + fixupPosition.set(fixupPosition.x + (barSize.width - handleSize.width) / 2, fixupPosition.y, fixupPosition.z); + } + this.handle.node.setPosition(fixupPosition); + }; + _proto._conditionalDisableScrollBar = function _conditionalDisableScrollBar(contentSize, scrollViewSize) { + if (contentSize.width <= scrollViewSize.width && this._direction === Direction$3.HORIZONTAL) { + return true; + } + if (contentSize.height <= scrollViewSize.height && this._direction === Direction$3.VERTICAL) { + return true; + } + return false; + }; + _proto._calculateLength = function _calculateLength(contentMeasure, scrollViewMeasure, handleNodeMeasure, outOfBoundary) { + var denominatorValue = contentMeasure; + if (outOfBoundary) { + denominatorValue += (outOfBoundary > 0 ? outOfBoundary : -outOfBoundary) * GETTING_SHORTER_FACTOR; + } + var lengthRation = scrollViewMeasure / denominatorValue; + return handleNodeMeasure * lengthRation; + }; + _proto._calculatePosition = function _calculatePosition(out, contentMeasure, scrollViewMeasure, handleNodeMeasure, contentPosition, outOfBoundary, actualLenth) { + var denominatorValue = contentMeasure - scrollViewMeasure; + if (outOfBoundary) { + denominatorValue += Math.abs(outOfBoundary); + } + var positionRatio = 0; + if (denominatorValue) { + positionRatio = contentPosition / denominatorValue; + positionRatio = clamp01(positionRatio); + } + var position = (handleNodeMeasure - actualLenth) * positionRatio; + if (this._direction === Direction$3.VERTICAL) { + out.set(0, position); + } else { + out.set(position, 0); + } + }; + _proto._updateLength = function _updateLength(length) { + if (this._handle) { + var handleNode = this._handle.node; + var handleTrans = handleNode._uiProps.uiTransformComp; + var handleNodeSize = handleTrans.contentSize; + var anchor = handleTrans.anchorPoint; + if (anchor.x !== defaultAnchor.x || anchor.y !== defaultAnchor.y) { + handleTrans.setAnchorPoint(defaultAnchor); + } + if (this._direction === Direction$3.HORIZONTAL) { + handleTrans.setContentSize(length, handleNodeSize.height); + } else { + handleTrans.setContentSize(handleNodeSize.width, length); + } + } + }; + _proto._processAutoHide = function _processAutoHide(deltaTime) { + if (!this._enableAutoHide || this._autoHideRemainingTime <= 0) { + return; + } else if (this._touching) { + return; + } + this._autoHideRemainingTime -= deltaTime; + if (this._autoHideRemainingTime <= this._autoHideTime) { + this._autoHideRemainingTime = Math.max(0, this._autoHideRemainingTime); + var opacity = this._opacity * (this._autoHideRemainingTime / this._autoHideTime); + this._setOpacity(opacity); + } + }; + _createClass(ScrollBar, [{ + key: "handle", + get: function get() { + return this._handle; + }, + set: function set(value) { + if (this._handle === value) { + return; + } + this._handle = value; + this.onScroll(Vec2.ZERO); + } + }, { + key: "direction", + get: function get() { + return this._direction; + }, + set: function set(value) { + if (this._direction === value) { + return; + } + this._direction = value; + this.onScroll(Vec2.ZERO); + } + }, { + key: "enableAutoHide", + get: function get() { + return this._enableAutoHide; + }, + set: function set(value) { + if (this._enableAutoHide === value) { + return; + } + this._enableAutoHide = value; + if (this._enableAutoHide) { + this._setOpacity(0); + } + } + }, { + key: "autoHideTime", + get: function get() { + return this._autoHideTime; + }, + set: function set(value) { + if (this._autoHideTime === value) { + return; + } + this._autoHideTime = value; + } + }]); + return ScrollBar; + }(Component), _class3$8.Direction = Direction$3, _class3$8), (_applyDecoratedDescriptor(_class2$c.prototype, "handle", [_dec4$8], Object.getOwnPropertyDescriptor(_class2$c.prototype, "handle"), _class2$c.prototype), _applyDecoratedDescriptor(_class2$c.prototype, "direction", [_dec5$8], Object.getOwnPropertyDescriptor(_class2$c.prototype, "direction"), _class2$c.prototype), _initializer$c = applyDecoratedInitializer(_class2$c.prototype, "_scrollView", [serializable$9], function () { + return null; + }), _initializer2$b = applyDecoratedInitializer(_class2$c.prototype, "_handle", [serializable$9], function () { + return null; + }), _initializer3$8 = applyDecoratedInitializer(_class2$c.prototype, "_direction", [serializable$9], function () { + return Direction$3.HORIZONTAL; + }), _initializer4$7 = applyDecoratedInitializer(_class2$c.prototype, "_enableAutoHide", [serializable$9], function () { + return false; + }), _initializer5$5 = applyDecoratedInitializer(_class2$c.prototype, "_autoHideTime", [serializable$9], function () { + return 1.0; + })), _class2$c)) || _class$g) || _class$g) || _class$g)); + legacyCC.ScrollBar = ScrollBar; + + var _dec$f, _dec2$c, _class$f; + var ViewGroup = exports('fq', (_dec$f = ccclass$t('cc.ViewGroup'), _dec2$c = executionOrder$1(110), _dec$f(_class$f = _dec2$c(_class$f = function (_Component) { + _inheritsLoose(ViewGroup, _Component); + function ViewGroup() { + return _Component.apply(this, arguments) || this; + } + return ViewGroup; + }(Component)) || _class$f) || _class$f)); + legacyCC.ViewGroup = ViewGroup; + + var _dec$e, _dec2$b, _dec3$b, _dec4$7, _dec5$7, _dec6$3, _dec7$1, _class$e, _class2$b, _initializer$b, _initializer2$a, _initializer3$7, _initializer4$6, _initializer5$4, _initializer6$3, _initializer7$3, _initializer8$3, _initializer9$3, _initializer10$3, _initializer11$3, _class3$7; + var NUMBER_OF_GATHERED_TOUCHES_FOR_MOVE_SPEED = 5; + var OUT_OF_BOUNDARY_BREAKING_FACTOR = 0.05; + var EPSILON = 1e-4; + var TOLERANCE = 1e4; + var MOVEMENT_FACTOR = 0.7; + var _tempVec3 = new Vec3(); + var _tempVec3_1 = new Vec3(); + var _tempVec2$1 = new Vec2(); + var _tempVec2_1$1 = new Vec2(); + var quintEaseOut = function quintEaseOut(time) { + time -= 1; + return time * time * time * time * time + 1; + }; + var getTimeInMilliseconds = function getTimeInMilliseconds() { + var currentTime = new Date(); + return currentTime.getMilliseconds(); + }; + var eventMap = { + 'scroll-to-top': 0, + 'scroll-to-bottom': 1, + 'scroll-to-left': 2, + 'scroll-to-right': 3, + scrolling: 4, + 'bounce-bottom': 6, + 'bounce-left': 7, + 'bounce-right': 8, + 'bounce-top': 5, + 'scroll-ended': 9, + 'touch-up': 10, + 'scroll-ended-with-threshold': 11, + 'scroll-began': 12 + }; + var EventType$4; + (function (EventType) { + EventType["SCROLL_TO_TOP"] = "scroll-to-top"; + EventType["SCROLL_TO_BOTTOM"] = "scroll-to-bottom"; + EventType["SCROLL_TO_LEFT"] = "scroll-to-left"; + EventType["SCROLL_TO_RIGHT"] = "scroll-to-right"; + EventType["SCROLL_BEGAN"] = "scroll-began"; + EventType["SCROLL_ENDED"] = "scroll-ended"; + EventType["BOUNCE_TOP"] = "bounce-top"; + EventType["BOUNCE_BOTTOM"] = "bounce-bottom"; + EventType["BOUNCE_LEFT"] = "bounce-left"; + EventType["BOUNCE_RIGHT"] = "bounce-right"; + EventType["SCROLLING"] = "scrolling"; + EventType["SCROLL_ENG_WITH_THRESHOLD"] = "scroll-ended-with-threshold"; + EventType["TOUCH_UP"] = "touch-up"; + })(EventType$4 || (EventType$4 = {})); + var XrhoverType; + (function (XrhoverType) { + XrhoverType[XrhoverType["NONE"] = 0] = "NONE"; + XrhoverType[XrhoverType["LEFT"] = 1] = "LEFT"; + XrhoverType[XrhoverType["RIGHT"] = 2] = "RIGHT"; + })(XrhoverType || (XrhoverType = {})); + var ScrollView = exports('fm', (_dec$e = ccclass$t('cc.ScrollView'), _dec2$b = executionOrder$1(110), _dec3$b = requireComponent(UITransform), _dec4$7 = type$8(Node$1), _dec5$7 = type$8(ScrollBar), _dec6$3 = type$8(ScrollBar), _dec7$1 = type$8([EventHandler]), _dec$e(_class$e = _dec2$b(_class$e = _dec3$b(_class$e = (_class2$b = (_class3$7 = function (_ViewGroup) { + _inheritsLoose(ScrollView, _ViewGroup); + function ScrollView() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _ViewGroup.call.apply(_ViewGroup, [this].concat(args)) || this; + _this.bounceDuration = _initializer$b && _initializer$b(); + _this.brake = _initializer2$a && _initializer2$a(); + _this.elastic = _initializer3$7 && _initializer3$7(); + _this.inertia = _initializer4$6 && _initializer4$6(); + _this.horizontal = _initializer5$4 && _initializer5$4(); + _this.vertical = _initializer6$3 && _initializer6$3(); + _this.cancelInnerEvents = _initializer7$3 && _initializer7$3(); + _this.scrollEvents = _initializer8$3 && _initializer8$3(); + _this._autoScrolling = false; + _this._scrolling = false; + _this._content = _initializer9$3 && _initializer9$3(); + _this._horizontalScrollBar = _initializer10$3 && _initializer10$3(); + _this._verticalScrollBar = _initializer11$3 && _initializer11$3(); + _this._topBoundary = 0; + _this._bottomBoundary = 0; + _this._leftBoundary = 0; + _this._rightBoundary = 0; + _this._touchMoveDisplacements = []; + _this._touchMoveTimeDeltas = []; + _this._touchMovePreviousTimestamp = 0; + _this._touchMoved = false; + _this._autoScrollAttenuate = false; + _this._autoScrollStartPosition = new Vec3(); + _this._autoScrollTargetDelta = new Vec3(); + _this._autoScrollTotalTime = 0; + _this._autoScrollAccumulatedTime = 0; + _this._autoScrollCurrentlyOutOfBoundary = false; + _this._autoScrollBraking = false; + _this._autoScrollBrakingStartPosition = new Vec3(); + _this._outOfBoundaryAmount = new Vec3(); + _this._outOfBoundaryAmountDirty = true; + _this._stopMouseWheel = false; + _this._mouseWheelEventElapsedTime = 0.0; + _this._isScrollEndedWithThresholdEventFired = false; + _this._scrollEventEmitMask = 0; + _this._isBouncing = false; + _this._contentPos = new Vec3(); + _this._deltaPos = new Vec3(); + _this._hoverIn = XrhoverType.NONE; + return _this; + } + var _proto = ScrollView.prototype; + _proto.scrollToBottom = function scrollToBottom(timeInSecond, attenuated) { + if (attenuated === void 0) { + attenuated = true; + } + var moveDelta = this._calculateMovePercentDelta({ + anchor: new Vec2(0, 0), + applyToHorizontal: false, + applyToVertical: true + }); + if (timeInSecond) { + this._startAutoScroll(moveDelta, timeInSecond, attenuated !== false); + } else { + this._moveContent(moveDelta, true); + } + }; + _proto.scrollToTop = function scrollToTop(timeInSecond, attenuated) { + if (attenuated === void 0) { + attenuated = true; + } + var moveDelta = this._calculateMovePercentDelta({ + anchor: new Vec2(0, 1), + applyToHorizontal: false, + applyToVertical: true + }); + if (timeInSecond) { + this._startAutoScroll(moveDelta, timeInSecond, attenuated !== false); + } else { + this._moveContent(moveDelta); + } + }; + _proto.scrollToLeft = function scrollToLeft(timeInSecond, attenuated) { + if (attenuated === void 0) { + attenuated = true; + } + var moveDelta = this._calculateMovePercentDelta({ + anchor: new Vec2(0, 0), + applyToHorizontal: true, + applyToVertical: false + }); + if (timeInSecond) { + this._startAutoScroll(moveDelta, timeInSecond, attenuated !== false); + } else { + this._moveContent(moveDelta); + } + }; + _proto.scrollToRight = function scrollToRight(timeInSecond, attenuated) { + if (attenuated === void 0) { + attenuated = true; + } + var moveDelta = this._calculateMovePercentDelta({ + anchor: new Vec2(1, 0), + applyToHorizontal: true, + applyToVertical: false + }); + if (timeInSecond) { + this._startAutoScroll(moveDelta, timeInSecond, attenuated !== false); + } else { + this._moveContent(moveDelta); + } + }; + _proto.scrollToTopLeft = function scrollToTopLeft(timeInSecond, attenuated) { + if (attenuated === void 0) { + attenuated = true; + } + var moveDelta = this._calculateMovePercentDelta({ + anchor: new Vec2(0, 1), + applyToHorizontal: true, + applyToVertical: true + }); + if (timeInSecond) { + this._startAutoScroll(moveDelta, timeInSecond, attenuated !== false); + } else { + this._moveContent(moveDelta); + } + }; + _proto.scrollToTopRight = function scrollToTopRight(timeInSecond, attenuated) { + if (attenuated === void 0) { + attenuated = true; + } + var moveDelta = this._calculateMovePercentDelta({ + anchor: new Vec2(1, 1), + applyToHorizontal: true, + applyToVertical: true + }); + if (timeInSecond) { + this._startAutoScroll(moveDelta, timeInSecond, attenuated !== false); + } else { + this._moveContent(moveDelta); + } + }; + _proto.scrollToBottomLeft = function scrollToBottomLeft(timeInSecond, attenuated) { + if (attenuated === void 0) { + attenuated = true; + } + var moveDelta = this._calculateMovePercentDelta({ + anchor: new Vec2(0, 0), + applyToHorizontal: true, + applyToVertical: true + }); + if (timeInSecond) { + this._startAutoScroll(moveDelta, timeInSecond, attenuated !== false); + } else { + this._moveContent(moveDelta); + } + }; + _proto.scrollToBottomRight = function scrollToBottomRight(timeInSecond, attenuated) { + if (attenuated === void 0) { + attenuated = true; + } + var moveDelta = this._calculateMovePercentDelta({ + anchor: new Vec2(1, 0), + applyToHorizontal: true, + applyToVertical: true + }); + if (timeInSecond) { + this._startAutoScroll(moveDelta, timeInSecond, attenuated !== false); + } else { + this._moveContent(moveDelta); + } + }; + _proto.scrollToOffset = function scrollToOffset(offset, timeInSecond, attenuated) { + if (attenuated === void 0) { + attenuated = true; + } + var maxScrollOffset = this.getMaxScrollOffset(); + var anchor = new Vec2(0, 0); + if (maxScrollOffset.x === 0) { + anchor.x = 0; + } else { + anchor.x = offset.x / maxScrollOffset.x; + } + if (maxScrollOffset.y === 0) { + anchor.y = 1; + } else { + anchor.y = (maxScrollOffset.y - offset.y) / maxScrollOffset.y; + } + this.scrollTo(anchor, timeInSecond, attenuated); + }; + _proto.getScrollOffset = function getScrollOffset() { + var topDelta = this._getContentTopBoundary() - this._topBoundary; + var leftDelta = this._getContentLeftBoundary() - this._leftBoundary; + return new Vec2(leftDelta, topDelta); + }; + _proto.getMaxScrollOffset = function getMaxScrollOffset() { + if (!this._content || !this.view) { + return Vec2.ZERO; + } + var contentSize = this._content._uiProps.uiTransformComp.contentSize; + var horizontalMaximizeOffset = contentSize.width - this.view.width; + var verticalMaximizeOffset = contentSize.height - this.view.height; + horizontalMaximizeOffset = horizontalMaximizeOffset >= 0 ? horizontalMaximizeOffset : 0; + verticalMaximizeOffset = verticalMaximizeOffset >= 0 ? verticalMaximizeOffset : 0; + return new Vec2(horizontalMaximizeOffset, verticalMaximizeOffset); + }; + _proto.scrollToPercentHorizontal = function scrollToPercentHorizontal(percent, timeInSecond, attenuated) { + var moveDelta = this._calculateMovePercentDelta({ + anchor: new Vec2(percent, 0), + applyToHorizontal: true, + applyToVertical: false + }); + if (timeInSecond) { + this._startAutoScroll(moveDelta, timeInSecond, attenuated !== false); + } else { + this._moveContent(moveDelta); + } + }; + _proto.scrollTo = function scrollTo(anchor, timeInSecond, attenuated) { + var moveDelta = this._calculateMovePercentDelta({ + anchor: new Vec2(anchor), + applyToHorizontal: true, + applyToVertical: true + }); + if (timeInSecond) { + this._startAutoScroll(moveDelta, timeInSecond, attenuated); + } else { + this._moveContent(moveDelta); + } + }; + _proto.scrollToPercentVertical = function scrollToPercentVertical(percent, timeInSecond, attenuated) { + var moveDelta = this._calculateMovePercentDelta({ + anchor: new Vec2(0, percent), + applyToHorizontal: false, + applyToVertical: true + }); + if (timeInSecond) { + this._startAutoScroll(moveDelta, timeInSecond, attenuated); + } else { + this._moveContent(moveDelta); + } + }; + _proto.stopAutoScroll = function stopAutoScroll() { + this._autoScrolling = false; + this._autoScrollAccumulatedTime = this._autoScrollTotalTime; + }; + _proto.setContentPosition = function setContentPosition(position) { + this._setContentPosition(position); + }; + _proto._setContentPosition = function _setContentPosition(position) { + if (!this._content) { + return; + } + var contentPos = this._getContentPosition(); + if (Math.abs(position.x - contentPos.x) < EPSILON && Math.abs(position.y - contentPos.y) < EPSILON) { + return; + } + this._content.setPosition(position); + this._outOfBoundaryAmountDirty = true; + }; + _proto.getContentPosition = function getContentPosition() { + return this._getContentPosition(); + }; + _proto._getContentPosition = function _getContentPosition() { + if (!this._content) { + return Vec3.ZERO.clone(); + } + this._contentPos.set(this._content.position); + return this._contentPos; + }; + _proto.isScrolling = function isScrolling() { + return this._scrolling; + }; + _proto.isAutoScrolling = function isAutoScrolling() { + return this._autoScrolling; + }; + _proto.getScrollEndedEventTiming = function getScrollEndedEventTiming() { + return EPSILON; + }; + _proto.start = function start() { + this._calculateBoundary(); + if (this._content) { + director.once(Director.EVENT_BEFORE_DRAW, this._adjustContentOutOfBoundary, this); + } + }; + _proto.onEnable = function onEnable() { + { + this._registerEvent(); + if (this._content) { + this._content.on(NodeEventType.SIZE_CHANGED, this._calculateBoundary, this); + this._content.on(NodeEventType.TRANSFORM_CHANGED, this._scaleChanged, this); + if (this.view) { + this.view.node.on(NodeEventType.TRANSFORM_CHANGED, this._scaleChanged, this); + this.view.node.on(NodeEventType.SIZE_CHANGED, this._calculateBoundary, this); + } + } + this._calculateBoundary(); + } + this._updateScrollBarState(); + }; + _proto.update = function update(dt) { + if (this._autoScrolling) { + this._processAutoScrolling(dt); + } + }; + _proto.onDisable = function onDisable() { + { + this._unregisterEvent(); + if (this._content) { + this._content.off(NodeEventType.SIZE_CHANGED, this._calculateBoundary, this); + this._content.off(NodeEventType.TRANSFORM_CHANGED, this._scaleChanged, this); + if (this.view) { + this.view.node.off(NodeEventType.TRANSFORM_CHANGED, this._scaleChanged, this); + this.view.node.off(NodeEventType.SIZE_CHANGED, this._calculateBoundary, this); + } + } + } + this._hideScrollBar(); + this.stopAutoScroll(); + }; + _proto._registerEvent = function _registerEvent() { + this.node.on(NodeEventType.TOUCH_START, this._onTouchBegan, this, true); + this.node.on(NodeEventType.TOUCH_MOVE, this._onTouchMoved, this, true); + this.node.on(NodeEventType.TOUCH_END, this._onTouchEnded, this, true); + this.node.on(NodeEventType.TOUCH_CANCEL, this._onTouchCancelled, this, true); + this.node.on(NodeEventType.MOUSE_WHEEL, this._onMouseWheel, this, true); + this.node.on(XrUIPressEventType.XRUI_HOVER_ENTERED, this._xrHoverEnter, this); + this.node.on(XrUIPressEventType.XRUI_HOVER_EXITED, this._xrHoverExit, this); + input.on(Input.EventType.HANDLE_INPUT, this._dispatchEventHandleInput, this); + input.on(Input.EventType.GAMEPAD_INPUT, this._dispatchEventHandleInput, this); + }; + _proto._unregisterEvent = function _unregisterEvent() { + this.node.off(NodeEventType.TOUCH_START, this._onTouchBegan, this, true); + this.node.off(NodeEventType.TOUCH_MOVE, this._onTouchMoved, this, true); + this.node.off(NodeEventType.TOUCH_END, this._onTouchEnded, this, true); + this.node.off(NodeEventType.TOUCH_CANCEL, this._onTouchCancelled, this, true); + this.node.off(NodeEventType.MOUSE_WHEEL, this._onMouseWheel, this, true); + this.node.off(XrUIPressEventType.XRUI_HOVER_ENTERED, this._xrHoverEnter, this); + this.node.off(XrUIPressEventType.XRUI_HOVER_EXITED, this._xrHoverExit, this); + input.off(Input.EventType.HANDLE_INPUT, this._dispatchEventHandleInput, this); + input.off(Input.EventType.GAMEPAD_INPUT, this._dispatchEventHandleInput, this); + }; + _proto._onMouseWheel = function _onMouseWheel(event, captureListeners) { + if (!this.enabledInHierarchy) { + return; + } + if (this._hasNestedViewGroup(event, captureListeners)) { + return; + } + var deltaMove = new Vec3(); + var wheelPrecision = -0.1; + var scrollY = event.getScrollY(); + if (this.vertical) { + deltaMove.set(0, scrollY * wheelPrecision, 0); + } else if (this.horizontal) { + deltaMove.set(scrollY * wheelPrecision, 0, 0); + } + this._mouseWheelEventElapsedTime = 0; + this._processDeltaMove(deltaMove); + if (!this._stopMouseWheel) { + this._handlePressLogic(); + this.schedule(this._checkMouseWheel, 1.0 / 60); + this._stopMouseWheel = true; + } + this._stopPropagationIfTargetIsMe(event); + }; + _proto._onTouchBegan = function _onTouchBegan(event, captureListeners) { + if (!this.enabledInHierarchy || !this._content) { + return; + } + if (this._hasNestedViewGroup(event, captureListeners)) { + return; + } + this._handlePressLogic(); + this._touchMoved = false; + this._stopPropagationIfTargetIsMe(event); + }; + _proto._onTouchMoved = function _onTouchMoved(event, captureListeners) { + if (!this.enabledInHierarchy || !this._content) { + return; + } + if (this._hasNestedViewGroup(event, captureListeners)) { + return; + } + var touch = event.touch; + this._handleMoveLogic(touch); + if (!this.cancelInnerEvents) { + return; + } + var deltaMove = touch.getUILocation(_tempVec2$1); + deltaMove.subtract(touch.getUIStartLocation(_tempVec2_1$1)); + if (deltaMove.length() > 7) { + if (!this._touchMoved && event.target !== this.node) { + var cancelEvent = new EventTouch(event.getTouches(), event.bubbles, SystemEventType.TOUCH_CANCEL); + cancelEvent.touch = event.touch; + cancelEvent.simulate = true; + event.target.dispatchEvent(cancelEvent); + this._touchMoved = true; + } + } + this._stopPropagationIfTargetIsMe(event); + }; + _proto._onTouchEnded = function _onTouchEnded(event, captureListeners) { + if (!this.enabledInHierarchy || !this._content || !event) { + return; + } + if (this._hasNestedViewGroup(event, captureListeners)) { + return; + } + this._dispatchEvent(EventType$4.TOUCH_UP); + var touch = event.touch; + this._handleReleaseLogic(touch); + if (this._touchMoved) { + event.propagationStopped = true; + } else { + this._stopPropagationIfTargetIsMe(event); + } + }; + _proto._onTouchCancelled = function _onTouchCancelled(event, captureListeners) { + if (!this.enabledInHierarchy || !this._content) { + return; + } + if (this._hasNestedViewGroup(event, captureListeners)) { + return; + } + if (event && !event.simulate) { + var touch = event.touch; + this._handleReleaseLogic(touch); + } + this._stopPropagationIfTargetIsMe(event); + }; + _proto._calculateBoundary = function _calculateBoundary() { + if (this._content && this.view) { + var layout = this._content.getComponent(Layout); + if (layout && layout.enabledInHierarchy) { + layout.updateLayout(); + } + var viewTrans = this.view; + var anchorX = viewTrans.width * viewTrans.anchorX; + var anchorY = viewTrans.height * viewTrans.anchorY; + this._leftBoundary = -anchorX; + this._bottomBoundary = -anchorY; + this._rightBoundary = this._leftBoundary + viewTrans.width; + this._topBoundary = this._bottomBoundary + viewTrans.height; + this._moveContentToTopLeft(viewTrans.contentSize); + } + }; + _proto._hasNestedViewGroup = function _hasNestedViewGroup(event, captureListeners) { + if (!event || event.eventPhase !== Event.CAPTURING_PHASE) { + return false; + } + if (captureListeners) { + for (var _iterator = _createForOfIteratorHelperLoose(captureListeners), _step; !(_step = _iterator()).done;) { + var listener = _step.value; + var item = listener; + if (this.node === item) { + if (event.target && event.target.getComponent(ViewGroup)) { + return true; + } + return false; + } + if (item.getComponent(ViewGroup)) { + return true; + } + } + } + return false; + }; + _proto._startInertiaScroll = function _startInertiaScroll(touchMoveVelocity) { + var inertiaTotalMovement = new Vec3(touchMoveVelocity); + inertiaTotalMovement.multiplyScalar(MOVEMENT_FACTOR); + this._startAttenuatingAutoScroll(inertiaTotalMovement, touchMoveVelocity); + }; + _proto._calculateAttenuatedFactor = function _calculateAttenuatedFactor(distance) { + if (this.brake <= 0) { + return 1 - this.brake; + } + return (1 - this.brake) * (1 / (1 + distance * 0.000014 + distance * distance * 0.000000008)); + }; + _proto._startAttenuatingAutoScroll = function _startAttenuatingAutoScroll(deltaMove, initialVelocity) { + var targetDelta = deltaMove.clone(); + targetDelta.normalize(); + if (this._content && this.view) { + var contentSize = this._content._uiProps.uiTransformComp.contentSize; + var scrollViewSize = this.view.contentSize; + var totalMoveWidth = contentSize.width - scrollViewSize.width; + var totalMoveHeight = contentSize.height - scrollViewSize.height; + var attenuatedFactorX = this._calculateAttenuatedFactor(totalMoveWidth); + var attenuatedFactorY = this._calculateAttenuatedFactor(totalMoveHeight); + targetDelta.x = targetDelta.x * totalMoveWidth * (1 - this.brake) * attenuatedFactorX; + targetDelta.y = targetDelta.y * totalMoveHeight * attenuatedFactorY * (1 - this.brake); + targetDelta.z = 0; + } + var originalMoveLength = deltaMove.length(); + var factor = targetDelta.length() / originalMoveLength; + targetDelta.add(deltaMove); + if (this.brake > 0 && factor > 7) { + factor = Math.sqrt(factor); + var clonedDeltaMove = deltaMove.clone(); + clonedDeltaMove.multiplyScalar(factor); + targetDelta.set(clonedDeltaMove); + targetDelta.add(deltaMove); + } + var time = this._calculateAutoScrollTimeByInitialSpeed(initialVelocity.length()); + if (this.brake > 0 && factor > 3) { + factor = 3; + time *= factor; + } + if (this.brake === 0 && factor > 1) { + time *= factor; + } + this._startAutoScroll(targetDelta, time, true); + }; + _proto._calculateAutoScrollTimeByInitialSpeed = function _calculateAutoScrollTimeByInitialSpeed(initialSpeed) { + return Math.sqrt(Math.sqrt(initialSpeed / 5)); + }; + _proto._startAutoScroll = function _startAutoScroll(deltaMove, timeInSecond, attenuated) { + if (attenuated === void 0) { + attenuated = false; + } + var adjustedDeltaMove = this._flattenVectorByDirection(deltaMove); + this._autoScrolling = true; + this._autoScrollTargetDelta = adjustedDeltaMove; + this._autoScrollAttenuate = attenuated; + Vec3.copy(this._autoScrollStartPosition, this._getContentPosition()); + this._autoScrollTotalTime = timeInSecond; + this._autoScrollAccumulatedTime = 0; + this._autoScrollBraking = false; + this._isScrollEndedWithThresholdEventFired = false; + this._autoScrollBrakingStartPosition.set(0, 0, 0); + var currentOutOfBoundary = this._getHowMuchOutOfBoundary(); + if (!currentOutOfBoundary.equals(Vec3.ZERO, EPSILON)) { + this._autoScrollCurrentlyOutOfBoundary = true; + } + }; + _proto._calculateTouchMoveVelocity = function _calculateTouchMoveVelocity() { + var out = new Vec3(); + var totalTime = 0; + totalTime = this._touchMoveTimeDeltas.reduce(function (a, b) { + return a + b; + }, totalTime); + if (totalTime <= 0 || totalTime >= 0.5) { + out.set(Vec3.ZERO); + } else { + var totalMovement = new Vec3(); + totalMovement = this._touchMoveDisplacements.reduce(function (a, b) { + a.add(b); + return a; + }, totalMovement); + out.set(totalMovement.x * (1 - this.brake) / totalTime, totalMovement.y * (1 - this.brake) / totalTime, totalMovement.z); + } + return out; + }; + _proto._flattenVectorByDirection = function _flattenVectorByDirection(vector) { + var result = vector; + result.x = this.horizontal ? result.x : 0; + result.y = this.vertical ? result.y : 0; + return result; + }; + _proto._moveContent = function _moveContent(deltaMove, canStartBounceBack) { + var adjustedMove = this._flattenVectorByDirection(deltaMove); + _tempVec3.set(this._getContentPosition()); + _tempVec3.add(adjustedMove); + _tempVec3.set(Math.round(_tempVec3.x * TOLERANCE) * EPSILON, Math.round(_tempVec3.y * TOLERANCE) * EPSILON, _tempVec3.z); + this._setContentPosition(_tempVec3); + var outOfBoundary = this._getHowMuchOutOfBoundary(); + _tempVec2$1.set(outOfBoundary.x, outOfBoundary.y); + this._updateScrollBar(_tempVec2$1); + if (this.elastic && canStartBounceBack) { + this._startBounceBackIfNeeded(); + } + }; + _proto._getContentLeftBoundary = function _getContentLeftBoundary() { + if (!this._content) { + return -1; + } + var contentPos = this._getContentPosition(); + var uiTrans = this._content._uiProps.uiTransformComp; + return contentPos.x - uiTrans.anchorX * uiTrans.width; + }; + _proto._getContentRightBoundary = function _getContentRightBoundary() { + if (!this._content) { + return -1; + } + var uiTrans = this._content._uiProps.uiTransformComp; + return this._getContentLeftBoundary() + uiTrans.width; + }; + _proto._getContentTopBoundary = function _getContentTopBoundary() { + if (!this._content) { + return -1; + } + var uiTrans = this._content._uiProps.uiTransformComp; + return this._getContentBottomBoundary() + uiTrans.height; + }; + _proto._getContentBottomBoundary = function _getContentBottomBoundary() { + if (!this._content) { + return -1; + } + var contentPos = this._getContentPosition(); + var uiTrans = this._content._uiProps.uiTransformComp; + return contentPos.y - uiTrans.anchorY * uiTrans.height; + }; + _proto._getHowMuchOutOfBoundary = function _getHowMuchOutOfBoundary(addition) { + addition = addition || new Vec3(); + if (addition.equals(Vec3.ZERO, EPSILON) && !this._outOfBoundaryAmountDirty) { + return this._outOfBoundaryAmount; + } + var outOfBoundaryAmount = new Vec3(); + var tempLeftBoundary = this._getContentLeftBoundary(); + var tempRightBoundary = this._getContentRightBoundary(); + if (tempLeftBoundary + addition.x > this._leftBoundary) { + outOfBoundaryAmount.x = this._leftBoundary - (tempLeftBoundary + addition.x); + } else if (tempRightBoundary + addition.x < this._rightBoundary) { + outOfBoundaryAmount.x = this._rightBoundary - (tempRightBoundary + addition.x); + } + var tempTopBoundary = this._getContentTopBoundary(); + var tempBottomBoundary = this._getContentBottomBoundary(); + if (tempTopBoundary + addition.y < this._topBoundary) { + outOfBoundaryAmount.y = this._topBoundary - (tempTopBoundary + addition.y); + } else if (tempBottomBoundary + addition.y > this._bottomBoundary) { + outOfBoundaryAmount.y = this._bottomBoundary - (tempBottomBoundary + addition.y); + } + if (addition.equals(Vec3.ZERO, EPSILON)) { + this._outOfBoundaryAmount = outOfBoundaryAmount; + this._outOfBoundaryAmountDirty = false; + } + this._clampDelta(outOfBoundaryAmount); + return outOfBoundaryAmount; + }; + _proto._updateScrollBar = function _updateScrollBar(outOfBoundary) { + if (this._horizontalScrollBar && this._horizontalScrollBar.isValid) { + this._horizontalScrollBar.onScroll(outOfBoundary); + } + if (this._verticalScrollBar && this._verticalScrollBar.isValid) { + this._verticalScrollBar.onScroll(outOfBoundary); + } + }; + _proto._onScrollBarTouchBegan = function _onScrollBarTouchBegan() { + if (this._horizontalScrollBar && this._horizontalScrollBar.isValid) { + this._horizontalScrollBar.onTouchBegan(); + } + if (this._verticalScrollBar && this._verticalScrollBar.isValid) { + this._verticalScrollBar.onTouchBegan(); + } + }; + _proto._onScrollBarTouchEnded = function _onScrollBarTouchEnded() { + if (this._horizontalScrollBar && this._horizontalScrollBar.isValid) { + this._horizontalScrollBar.onTouchEnded(); + } + if (this._verticalScrollBar && this._verticalScrollBar.isValid) { + this._verticalScrollBar.onTouchEnded(); + } + }; + _proto._dispatchEvent = function _dispatchEvent(event) { + if (event === EventType$4.SCROLL_ENDED) { + this._scrollEventEmitMask = 0; + } else if (event === EventType$4.SCROLL_TO_TOP || event === EventType$4.SCROLL_TO_BOTTOM || event === EventType$4.SCROLL_TO_LEFT || event === EventType$4.SCROLL_TO_RIGHT) { + var flag = 1 << eventMap[event]; + if (this._scrollEventEmitMask & flag) { + return; + } else { + this._scrollEventEmitMask |= flag; + } + } + EventHandler.emitEvents(this.scrollEvents, this, eventMap[event]); + this.node.emit(event, this); + }; + _proto._adjustContentOutOfBoundary = function _adjustContentOutOfBoundary() { + if (!this._content) { + return; + } + this._outOfBoundaryAmountDirty = true; + var outOfBoundary = this._getHowMuchOutOfBoundary(); + var _isOutOfBoundary = !outOfBoundary.equals(Vec3.ZERO, EPSILON); + if (_isOutOfBoundary) { + _tempVec3.set(this._getContentPosition()); + _tempVec3.add(outOfBoundary); + this._setContentPosition(_tempVec3); + this._updateScrollBar(Vec2.ZERO); + } + }; + _proto._hideScrollBar = function _hideScrollBar() { + if (this._horizontalScrollBar && this._horizontalScrollBar.isValid) { + this._horizontalScrollBar.hide(); + } + if (this._verticalScrollBar && this._verticalScrollBar.isValid) { + this._verticalScrollBar.hide(); + } + }; + _proto._updateScrollBarState = function _updateScrollBarState() { + if (!this._content || !this.view) { + return; + } + var viewTrans = this.view; + var uiTrans = this._content._uiProps.uiTransformComp; + if (this._verticalScrollBar && this._verticalScrollBar.isValid) { + if (uiTrans.height < viewTrans.height || approx(uiTrans.height, viewTrans.height)) { + this._verticalScrollBar.hide(); + } else { + this._verticalScrollBar.show(); + } + } + if (this._horizontalScrollBar && this._horizontalScrollBar.isValid) { + if (uiTrans.width < viewTrans.width || approx(uiTrans.width, viewTrans.width)) { + this._horizontalScrollBar.hide(); + } else { + this._horizontalScrollBar.show(); + } + } + }; + _proto._stopPropagationIfTargetIsMe = function _stopPropagationIfTargetIsMe(event) { + if (event.eventPhase === Event.AT_TARGET && event.target === this.node) { + event.propagationStopped = true; + } + }; + _proto._processDeltaMove = function _processDeltaMove(deltaMove) { + this._scrollChildren(deltaMove); + this._gatherTouchMove(deltaMove); + }; + _proto._handleMoveLogic = function _handleMoveLogic(touch) { + this._getLocalAxisAlignDelta(this._deltaPos, touch); + this._processDeltaMove(this._deltaPos); + }; + _proto._handleReleaseLogic = function _handleReleaseLogic(touch) { + this._getLocalAxisAlignDelta(this._deltaPos, touch); + this._gatherTouchMove(this._deltaPos); + this._processInertiaScroll(); + if (this._scrolling) { + this._scrolling = false; + if (!this._autoScrolling) { + this._dispatchEvent(EventType$4.SCROLL_ENDED); + } + } + }; + _proto._getLocalAxisAlignDelta = function _getLocalAxisAlignDelta(out, touch) { + var uiTransformComp = this.node._uiProps.uiTransformComp; + var vec = new Vec3(); + if (uiTransformComp) { + touch.getUILocation(_tempVec2$1); + touch.getUIPreviousLocation(_tempVec2_1$1); + _tempVec3.set(_tempVec2$1.x, _tempVec2$1.y, 0); + _tempVec3_1.set(_tempVec2_1$1.x, _tempVec2_1$1.y, 0); + uiTransformComp.convertToNodeSpaceAR(_tempVec3, _tempVec3); + uiTransformComp.convertToNodeSpaceAR(_tempVec3_1, _tempVec3_1); + Vec3.subtract(vec, _tempVec3, _tempVec3_1); + } + out.set(vec); + }; + _proto._scrollChildren = function _scrollChildren(deltaMove) { + this._clampDelta(deltaMove); + var realMove = deltaMove; + var outOfBoundary; + if (this.elastic) { + outOfBoundary = this._getHowMuchOutOfBoundary(); + realMove.x *= outOfBoundary.x === 0 ? 1 : 0.5; + realMove.y *= outOfBoundary.y === 0 ? 1 : 0.5; + } + if (!this.elastic) { + outOfBoundary = this._getHowMuchOutOfBoundary(realMove); + realMove.add(outOfBoundary); + } + var verticalScrollEventType = ''; + var horizontalScrollEventType = ''; + if (this._content) { + var _ref = this._content._uiProps.uiTransformComp, + anchorX = _ref.anchorX, + anchorY = _ref.anchorY, + width = _ref.width, + height = _ref.height; + var pos = this._content.position || Vec3.ZERO; + if (this.vertical) { + if (realMove.y > 0) { + var icBottomPos = pos.y - anchorY * height; + if (icBottomPos + realMove.y >= this._bottomBoundary) { + verticalScrollEventType = EventType$4.SCROLL_TO_BOTTOM; + } + } else if (realMove.y < 0) { + var icTopPos = pos.y - anchorY * height + height; + if (icTopPos + realMove.y <= this._topBoundary) { + verticalScrollEventType = EventType$4.SCROLL_TO_TOP; + } + } + } + if (this.horizontal) { + if (realMove.x < 0) { + var icRightPos = pos.x - anchorX * width + width; + if (icRightPos + realMove.x <= this._rightBoundary) { + horizontalScrollEventType = EventType$4.SCROLL_TO_RIGHT; + } + } else if (realMove.x > 0) { + var icLeftPos = pos.x - anchorX * width; + if (icLeftPos + realMove.x >= this._leftBoundary) { + horizontalScrollEventType = EventType$4.SCROLL_TO_LEFT; + } + } + } + } + this._moveContent(realMove, false); + if (this.horizontal && realMove.x !== 0 || this.vertical && realMove.y !== 0) { + if (!this._scrolling) { + this._scrolling = true; + this._dispatchEvent(EventType$4.SCROLL_BEGAN); + } + this._dispatchEvent(EventType$4.SCROLLING); + } + if (verticalScrollEventType !== '') { + this._dispatchEvent(verticalScrollEventType); + } + if (horizontalScrollEventType !== '') { + this._dispatchEvent(horizontalScrollEventType); + } + }; + _proto._handlePressLogic = function _handlePressLogic() { + if (this._autoScrolling) { + this._dispatchEvent(EventType$4.SCROLL_ENDED); + } + this._autoScrolling = false; + this._isBouncing = false; + this._touchMovePreviousTimestamp = getTimeInMilliseconds(); + this._touchMoveDisplacements.length = 0; + this._touchMoveTimeDeltas.length = 0; + this._onScrollBarTouchBegan(); + }; + _proto._clampDelta = function _clampDelta(out) { + if (this._content && this.view) { + var scrollViewSize = this.view.contentSize; + var uiTrans = this._content._uiProps.uiTransformComp; + if (uiTrans.width < scrollViewSize.width) { + out.x = 0; + } + if (uiTrans.height < scrollViewSize.height) { + out.y = 0; + } + } + }; + _proto._gatherTouchMove = function _gatherTouchMove(delta) { + var clampDt = delta.clone(); + this._clampDelta(clampDt); + while (this._touchMoveDisplacements.length >= NUMBER_OF_GATHERED_TOUCHES_FOR_MOVE_SPEED) { + this._touchMoveDisplacements.shift(); + this._touchMoveTimeDeltas.shift(); + } + this._touchMoveDisplacements.push(clampDt); + var timeStamp = getTimeInMilliseconds(); + this._touchMoveTimeDeltas.push((timeStamp - this._touchMovePreviousTimestamp) / 1000); + this._touchMovePreviousTimestamp = timeStamp; + }; + _proto._startBounceBackIfNeeded = function _startBounceBackIfNeeded() { + if (!this.elastic) { + return false; + } + var bounceBackAmount = this._getHowMuchOutOfBoundary(); + this._clampDelta(bounceBackAmount); + if (bounceBackAmount.equals(Vec3.ZERO, EPSILON)) { + return false; + } + var bounceBackTime = Math.max(this.bounceDuration, 0); + this._startAutoScroll(bounceBackAmount, bounceBackTime, true); + if (!this._isBouncing) { + if (bounceBackAmount.y > 0) { + this._dispatchEvent(EventType$4.BOUNCE_TOP); + } + if (bounceBackAmount.y < 0) { + this._dispatchEvent(EventType$4.BOUNCE_BOTTOM); + } + if (bounceBackAmount.x > 0) { + this._dispatchEvent(EventType$4.BOUNCE_RIGHT); + } + if (bounceBackAmount.x < 0) { + this._dispatchEvent(EventType$4.BOUNCE_LEFT); + } + this._isBouncing = true; + } + return true; + }; + _proto._processInertiaScroll = function _processInertiaScroll() { + var bounceBackStarted = this._startBounceBackIfNeeded(); + if (!bounceBackStarted && this.inertia) { + var touchMoveVelocity = this._calculateTouchMoveVelocity(); + if (!touchMoveVelocity.equals(_tempVec3, EPSILON) && this.brake < 1) { + this._startInertiaScroll(touchMoveVelocity); + } + } + this._onScrollBarTouchEnded(); + }; + _proto._isOutOfBoundary = function _isOutOfBoundary() { + var outOfBoundary = this._getHowMuchOutOfBoundary(); + return !outOfBoundary.equals(Vec3.ZERO, EPSILON); + }; + _proto._isNecessaryAutoScrollBrake = function _isNecessaryAutoScrollBrake() { + if (this._autoScrollBraking) { + return true; + } + if (this._isOutOfBoundary()) { + if (!this._autoScrollCurrentlyOutOfBoundary) { + this._autoScrollCurrentlyOutOfBoundary = true; + this._autoScrollBraking = true; + Vec3.copy(this._autoScrollBrakingStartPosition, this._getContentPosition()); + return true; + } + } else { + this._autoScrollCurrentlyOutOfBoundary = false; + } + return false; + }; + _proto._processAutoScrolling = function _processAutoScrolling(dt) { + var isAutoScrollBrake = this._isNecessaryAutoScrollBrake(); + var brakingFactor = isAutoScrollBrake ? OUT_OF_BOUNDARY_BREAKING_FACTOR : 1; + this._autoScrollAccumulatedTime += dt * (1 / brakingFactor); + var percentage = Math.min(1, this._autoScrollAccumulatedTime / this._autoScrollTotalTime); + if (this._autoScrollAttenuate) { + percentage = quintEaseOut(percentage); + } + var clonedAutoScrollTargetDelta = this._autoScrollTargetDelta.clone(); + clonedAutoScrollTargetDelta.multiplyScalar(percentage); + var clonedAutoScrollStartPosition = this._autoScrollStartPosition.clone(); + clonedAutoScrollStartPosition.add(clonedAutoScrollTargetDelta); + var reachedEnd = Math.abs(percentage - 1) <= EPSILON; + var fireEvent = Math.abs(percentage - 1) <= this.getScrollEndedEventTiming(); + if (fireEvent && !this._isScrollEndedWithThresholdEventFired) { + this._dispatchEvent(EventType$4.SCROLL_ENG_WITH_THRESHOLD); + this._isScrollEndedWithThresholdEventFired = true; + } + if (this.elastic) { + var brakeOffsetPosition = clonedAutoScrollStartPosition.clone(); + brakeOffsetPosition.subtract(this._autoScrollBrakingStartPosition); + if (isAutoScrollBrake) { + brakeOffsetPosition.multiplyScalar(brakingFactor); + } + clonedAutoScrollStartPosition.set(this._autoScrollBrakingStartPosition); + clonedAutoScrollStartPosition.add(brakeOffsetPosition); + } else { + var moveDelta = clonedAutoScrollStartPosition.clone(); + moveDelta.subtract(this.getContentPosition()); + var outOfBoundary = this._getHowMuchOutOfBoundary(moveDelta); + if (!outOfBoundary.equals(Vec3.ZERO, EPSILON)) { + clonedAutoScrollStartPosition.add(outOfBoundary); + reachedEnd = true; + } + } + if (reachedEnd) { + this._autoScrolling = false; + } + var deltaMove = clonedAutoScrollStartPosition.clone(); + deltaMove.subtract(this._getContentPosition()); + this._clampDelta(deltaMove); + this._moveContent(deltaMove, reachedEnd); + this._dispatchEvent(EventType$4.SCROLLING); + if (!this._autoScrolling) { + this._isBouncing = false; + this._scrolling = false; + this._dispatchEvent(EventType$4.SCROLL_ENDED); + } + }; + _proto._checkMouseWheel = function _checkMouseWheel(dt) { + var currentOutOfBoundary = this._getHowMuchOutOfBoundary(); + var maxElapsedTime = 0.1; + if (!currentOutOfBoundary.equals(Vec3.ZERO, EPSILON)) { + this._processInertiaScroll(); + if (this._scrolling) { + this._scrolling = false; + if (!this._autoScrolling) { + this._dispatchEvent(EventType$4.SCROLL_ENDED); + } + } + this.unschedule(this._checkMouseWheel); + this._stopMouseWheel = false; + return; + } + this._mouseWheelEventElapsedTime += dt; + if (this._mouseWheelEventElapsedTime > maxElapsedTime) { + this._onScrollBarTouchEnded(); + if (this._scrolling) { + this._scrolling = false; + if (!this._autoScrolling) { + this._dispatchEvent(EventType$4.SCROLL_ENDED); + } + } + this.unschedule(this._checkMouseWheel); + this._stopMouseWheel = false; + } + }; + _proto._calculateMovePercentDelta = function _calculateMovePercentDelta(options) { + var anchor = options.anchor; + var applyToHorizontal = options.applyToHorizontal; + var applyToVertical = options.applyToVertical; + this._calculateBoundary(); + anchor.clampf(Vec2.ZERO, Vec2.ONE); + var bottomDelta = this._getContentBottomBoundary() - this._bottomBoundary; + bottomDelta = -bottomDelta; + var leftDelta = this._getContentLeftBoundary() - this._leftBoundary; + leftDelta = -leftDelta; + var moveDelta = new Vec3(); + if (this._content && this.view) { + var totalScrollDelta = 0; + var uiTrans = this._content._uiProps.uiTransformComp; + var contentSize = uiTrans.contentSize; + var scrollSize = this.view.contentSize; + if (applyToHorizontal) { + totalScrollDelta = contentSize.width - scrollSize.width; + moveDelta.x = leftDelta - totalScrollDelta * anchor.x; + } + if (applyToVertical) { + totalScrollDelta = contentSize.height - scrollSize.height; + moveDelta.y = bottomDelta - totalScrollDelta * anchor.y; + } + } + return moveDelta; + }; + _proto._moveContentToTopLeft = function _moveContentToTopLeft(scrollViewSize) { + var bottomDelta = this._getContentBottomBoundary() - this._bottomBoundary; + bottomDelta = -bottomDelta; + var moveDelta = new Vec3(); + var totalScrollDelta = 0; + var leftDelta = this._getContentLeftBoundary() - this._leftBoundary; + leftDelta = -leftDelta; + if (this._content) { + var uiTrans = this._content._uiProps.uiTransformComp; + var contentSize = uiTrans.contentSize; + if (contentSize.height < scrollViewSize.height) { + totalScrollDelta = contentSize.height - scrollViewSize.height; + moveDelta.y = bottomDelta - totalScrollDelta; + } + if (contentSize.width < scrollViewSize.width) { + totalScrollDelta = contentSize.width - scrollViewSize.width; + moveDelta.x = leftDelta; + } + } + this._updateScrollBarState(); + this._moveContent(moveDelta); + this._adjustContentOutOfBoundary(); + }; + _proto._scaleChanged = function _scaleChanged(value) { + if (value === TransformBit.SCALE) { + this._calculateBoundary(); + } + }; + _proto._xrHoverEnter = function _xrHoverEnter(event) { + if (event.deviceType === DeviceType.Left) { + this._hoverIn = XrhoverType.LEFT; + } else if (event.deviceType === DeviceType.Right) { + this._hoverIn = XrhoverType.RIGHT; + } + }; + _proto._xrHoverExit = function _xrHoverExit(event) { + this._hoverIn = XrhoverType.NONE; + }; + _proto._dispatchEventHandleInput = function _dispatchEventHandleInput(event) { + var handleInputDevice; + if (event instanceof EventGamepad) { + handleInputDevice = event.gamepad; + } else if (event instanceof EventHandle) { + handleInputDevice = event.handleInputDevice; + } + var value; + if (!this.enabledInHierarchy || this._hoverIn === XrhoverType.NONE) { + return; + } + if (this._hoverIn === XrhoverType.LEFT) { + value = handleInputDevice.leftStick.getValue(); + if (!value.equals(Vec2.ZERO)) { + this._xrThumbStickMove(value); + } + } else if (this._hoverIn === XrhoverType.RIGHT) { + value = handleInputDevice.rightStick.getValue(); + if (!value.equals(Vec2.ZERO)) { + this._xrThumbStickMove(value); + } + } + }; + _proto._xrThumbStickMove = function _xrThumbStickMove(event) { + if (!this.enabledInHierarchy) { + return; + } + var deltaMove = new Vec3(); + var wheelPrecision = -62.5; + var scrollY = event.y; + if (this.vertical) { + deltaMove.set(0, scrollY * wheelPrecision, 0); + } else if (this.horizontal) { + deltaMove.set(scrollY * wheelPrecision, 0, 0); + } + this._mouseWheelEventElapsedTime = 0; + this._processDeltaMove(deltaMove); + if (!this._stopMouseWheel) { + this._handlePressLogic(); + this.schedule(this._checkMouseWheel, 1.0 / 60, NaN, 0); + this._stopMouseWheel = true; + } + }; + _createClass(ScrollView, [{ + key: "content", + get: function get() { + return this._content; + }, + set: function set(value) { + if (this._content === value) { + return; + } + var viewTrans = value && value.parent && value.parent._uiProps.uiTransformComp; + if (value && (!value || !viewTrans)) { + logID(4302); + return; + } + this._content = value; + this._calculateBoundary(); + } + }, { + key: "horizontalScrollBar", + get: function get() { + if (this._horizontalScrollBar && !this._horizontalScrollBar.isValid) { + errorID(4303, 'horizontal', this.node.name); + } + return this._horizontalScrollBar; + }, + set: function set(value) { + if (this._horizontalScrollBar === value) { + return; + } + this._horizontalScrollBar = value; + if (this._horizontalScrollBar) { + this._horizontalScrollBar.setScrollView(this); + this._updateScrollBar(Vec2.ZERO); + } + } + }, { + key: "verticalScrollBar", + get: function get() { + if (this._verticalScrollBar && !this._verticalScrollBar.isValid) { + errorID(4303, 'vertical', this.node.name); + } + return this._verticalScrollBar; + }, + set: function set(value) { + if (this._verticalScrollBar === value) { + return; + } + this._verticalScrollBar = value; + if (this._verticalScrollBar) { + this._verticalScrollBar.setScrollView(this); + this._updateScrollBar(Vec2.ZERO); + } + } + }, { + key: "view", + get: function get() { + var parent = this._content && this._content.parent; + if (!parent) { + return null; + } + return parent._uiProps.uiTransformComp; + } + }]); + return ScrollView; + }(ViewGroup), _class3$7.EventType = EventType$4, _class3$7), (_initializer$b = applyDecoratedInitializer(_class2$b.prototype, "bounceDuration", [serializable$9], function () { + return 1; + }), _initializer2$a = applyDecoratedInitializer(_class2$b.prototype, "brake", [serializable$9], function () { + return 0.5; + }), _initializer3$7 = applyDecoratedInitializer(_class2$b.prototype, "elastic", [serializable$9], function () { + return true; + }), _initializer4$6 = applyDecoratedInitializer(_class2$b.prototype, "inertia", [serializable$9], function () { + return true; + }), _applyDecoratedDescriptor(_class2$b.prototype, "content", [_dec4$7], Object.getOwnPropertyDescriptor(_class2$b.prototype, "content"), _class2$b.prototype), _initializer5$4 = applyDecoratedInitializer(_class2$b.prototype, "horizontal", [serializable$9], function () { + return true; + }), _applyDecoratedDescriptor(_class2$b.prototype, "horizontalScrollBar", [_dec5$7], Object.getOwnPropertyDescriptor(_class2$b.prototype, "horizontalScrollBar"), _class2$b.prototype), _initializer6$3 = applyDecoratedInitializer(_class2$b.prototype, "vertical", [serializable$9], function () { + return true; + }), _applyDecoratedDescriptor(_class2$b.prototype, "verticalScrollBar", [_dec6$3], Object.getOwnPropertyDescriptor(_class2$b.prototype, "verticalScrollBar"), _class2$b.prototype), _initializer7$3 = applyDecoratedInitializer(_class2$b.prototype, "cancelInnerEvents", [serializable$9], function () { + return true; + }), _initializer8$3 = applyDecoratedInitializer(_class2$b.prototype, "scrollEvents", [_dec7$1, serializable$9], function () { + return []; + }), _initializer9$3 = applyDecoratedInitializer(_class2$b.prototype, "_content", [serializable$9], function () { + return null; + }), _initializer10$3 = applyDecoratedInitializer(_class2$b.prototype, "_horizontalScrollBar", [serializable$9], function () { + return null; + }), _initializer11$3 = applyDecoratedInitializer(_class2$b.prototype, "_verticalScrollBar", [serializable$9], function () { + return null; + })), _class2$b)) || _class$e) || _class$e) || _class$e)); + legacyCC.ScrollView = ScrollView; + + var _dec$d, _dec2$a, _dec3$a, _dec4$6, _dec5$6, _dec6$2, _class$d, _class2$a, _initializer$a, _initializer2$9, _initializer3$6, _initializer4$5, _class3$6; + var _tempPos$1 = new Vec3(); + var Direction$2; + (function (Direction) { + Direction[Direction["Horizontal"] = 0] = "Horizontal"; + Direction[Direction["Vertical"] = 1] = "Vertical"; + })(Direction$2 || (Direction$2 = {})); + ccenum(Direction$2); + var Slider = exports('fn', (_dec$d = ccclass$t('cc.Slider'), _dec2$a = executionOrder$1(110), _dec3$a = requireComponent(UITransform), _dec4$6 = type$8(Sprite), _dec5$6 = type$8(Direction$2), _dec6$2 = type$8([EventHandler]), _dec$d(_class$d = _dec2$a(_class$d = _dec3$a(_class$d = (_class2$a = (_class3$6 = function (_Component) { + _inheritsLoose(Slider, _Component); + function Slider() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this.slideEvents = _initializer$a && _initializer$a(); + _this._handle = _initializer2$9 && _initializer2$9(); + _this._direction = _initializer3$6 && _initializer3$6(); + _this._progress = _initializer4$5 && _initializer4$5(); + _this._offset = new Vec3(); + _this._dragging = false; + _this._touchHandle = false; + _this._handleLocalPos = new Vec3(); + _this._touchPos = new Vec3(); + return _this; + } + var _proto = Slider.prototype; + _proto.__preload = function __preload() { + this._updateHandlePosition(); + }; + _proto.onEnable = function onEnable() { + this._updateHandlePosition(); + this.node.on(NodeEventType.TOUCH_START, this._onTouchBegan, this); + this.node.on(NodeEventType.TOUCH_MOVE, this._onTouchMoved, this); + this.node.on(NodeEventType.TOUCH_END, this._onTouchEnded, this); + this.node.on(NodeEventType.TOUCH_CANCEL, this._onTouchCancelled, this); + this.node.on(XrUIPressEventType.XRUI_HOVER_STAY, this._xrHoverStay, this); + this.node.on(XrUIPressEventType.XRUI_CLICK, this._xrClick, this); + this.node.on(XrUIPressEventType.XRUI_UNCLICK, this._xrUnClick, this); + if (this._handle && this._handle.isValid) { + this._handle.node.on(NodeEventType.TOUCH_START, this._onHandleDragStart, this); + this._handle.node.on(NodeEventType.TOUCH_MOVE, this._onTouchMoved, this); + this._handle.node.on(NodeEventType.TOUCH_END, this._onTouchEnded, this); + } + }; + _proto.onDisable = function onDisable() { + this.node.off(NodeEventType.TOUCH_START, this._onTouchBegan, this); + this.node.off(NodeEventType.TOUCH_MOVE, this._onTouchMoved, this); + this.node.off(NodeEventType.TOUCH_END, this._onTouchEnded, this); + this.node.off(NodeEventType.TOUCH_CANCEL, this._onTouchCancelled, this); + this.node.off(XrUIPressEventType.XRUI_HOVER_STAY, this._xrHoverStay, this); + this.node.off(XrUIPressEventType.XRUI_CLICK, this._xrClick, this); + this.node.off(XrUIPressEventType.XRUI_UNCLICK, this._xrUnClick, this); + if (this._handle && this._handle.isValid) { + this._handle.node.off(NodeEventType.TOUCH_START, this._onHandleDragStart, this); + this._handle.node.off(NodeEventType.TOUCH_MOVE, this._onTouchMoved, this); + this._handle.node.off(NodeEventType.TOUCH_END, this._onTouchEnded, this); + } + }; + _proto._onHandleDragStart = function _onHandleDragStart(event) { + if (!event || !this._handle || !this._handle.node._uiProps.uiTransformComp) { + return; + } + this._dragging = true; + this._touchHandle = true; + var touhPos = event.touch.getUILocation(); + Vec3.set(this._touchPos, touhPos.x, touhPos.y, 0); + this._handle.node._uiProps.uiTransformComp.convertToNodeSpaceAR(this._touchPos, this._offset); + event.propagationStopped = true; + }; + _proto._onTouchBegan = function _onTouchBegan(event) { + if (!this._handle || !event) { + return; + } + this._dragging = true; + if (!this._touchHandle) { + this._handleSliderLogic(event.touch); + } + event.propagationStopped = true; + }; + _proto._onTouchMoved = function _onTouchMoved(event) { + if (!this._dragging || !event) { + return; + } + this._handleSliderLogic(event.touch); + event.propagationStopped = true; + }; + _proto._onTouchEnded = function _onTouchEnded(event) { + this._dragging = false; + this._touchHandle = false; + this._offset = new Vec3(); + if (event) { + event.propagationStopped = true; + } + }; + _proto._onTouchCancelled = function _onTouchCancelled(event) { + this._dragging = false; + if (event) { + event.propagationStopped = true; + } + }; + _proto._handleSliderLogic = function _handleSliderLogic(touch) { + this._updateProgress(touch); + this._emitSlideEvent(); + }; + _proto._emitSlideEvent = function _emitSlideEvent() { + EventHandler.emitEvents(this.slideEvents, this); + this.node.emit('slide', this); + }; + _proto._updateProgress = function _updateProgress(touch) { + if (!this._handle || !touch) { + return; + } + var touchPos = touch.getUILocation(); + Vec3.set(this._touchPos, touchPos.x, touchPos.y, 0); + var uiTrans = this.node._uiProps.uiTransformComp; + var localTouchPos = uiTrans.convertToNodeSpaceAR(this._touchPos, _tempPos$1); + if (this.direction === Direction$2.Horizontal) { + this.progress = clamp01(0.5 + (localTouchPos.x - this._offset.x) / uiTrans.width); + } else { + this.progress = clamp01(0.5 + (localTouchPos.y - this._offset.y) / uiTrans.height); + } + }; + _proto._updateHandlePosition = function _updateHandlePosition() { + if (!this._handle) { + return; + } + this._handleLocalPos.set(this._handle.node.getPosition()); + var uiTrans = this.node._uiProps.uiTransformComp; + if (this._direction === Direction$2.Horizontal) { + this._handleLocalPos.x = -uiTrans.width * uiTrans.anchorX + this.progress * uiTrans.width; + } else { + this._handleLocalPos.y = -uiTrans.height * uiTrans.anchorY + this.progress * uiTrans.height; + } + this._handle.node.setPosition(this._handleLocalPos); + }; + _proto._changeLayout = function _changeLayout() { + var uiTrans = this.node._uiProps.uiTransformComp; + var contentSize = uiTrans.contentSize; + uiTrans.setContentSize(contentSize.height, contentSize.width); + if (this._handle) { + var pos = this._handle.node.position; + if (this._direction === Direction$2.Horizontal) { + this._handle.node.setPosition(pos.x, 0, pos.z); + } else { + this._handle.node.setPosition(0, pos.y, pos.z); + } + this._updateHandlePosition(); + } + }; + _proto._xrHandleProgress = function _xrHandleProgress(point) { + if (!this._touchHandle) { + var uiTrans = this.node._uiProps.uiTransformComp; + uiTrans.convertToNodeSpaceAR(point, _tempPos$1); + if (this.direction === Direction$2.Horizontal) { + this.progress = clamp01(0.5 + (_tempPos$1.x - this.node.position.x) / uiTrans.width); + } else { + this.progress = clamp01(0.5 + (_tempPos$1.y - this.node.position.y) / uiTrans.height); + } + } + }; + _proto._xrClick = function _xrClick(event) { + if (!this._handle) { + return; + } + this._dragging = true; + this._xrHandleProgress(event.hitPoint); + this._emitSlideEvent(); + }; + _proto._xrUnClick = function _xrUnClick() { + this._dragging = false; + this._touchHandle = false; + }; + _proto._xrHoverStay = function _xrHoverStay(event) { + if (!this._dragging) { + return; + } + this._xrHandleProgress(event.hitPoint); + this._emitSlideEvent(); + }; + _createClass(Slider, [{ + key: "handle", + get: function get() { + return this._handle; + }, + set: function set(value) { + if (this._handle === value) { + return; + } + this._handle = value; + } + }, { + key: "direction", + get: function get() { + return this._direction; + }, + set: function set(value) { + if (this._direction === value) { + return; + } + this._direction = value; + this._changeLayout(); + } + }, { + key: "progress", + get: function get() { + return this._progress; + }, + set: function set(value) { + if (this._progress === value) { + return; + } + this._progress = value; + this._updateHandlePosition(); + } + }]); + return Slider; + }(Component), _class3$6.Direction = Direction$2, _class3$6), (_applyDecoratedDescriptor(_class2$a.prototype, "handle", [_dec4$6], Object.getOwnPropertyDescriptor(_class2$a.prototype, "handle"), _class2$a.prototype), _applyDecoratedDescriptor(_class2$a.prototype, "direction", [_dec5$6], Object.getOwnPropertyDescriptor(_class2$a.prototype, "direction"), _class2$a.prototype), _initializer$a = applyDecoratedInitializer(_class2$a.prototype, "slideEvents", [_dec6$2, serializable$9], function () { + return []; + }), _initializer2$9 = applyDecoratedInitializer(_class2$a.prototype, "_handle", [serializable$9], function () { + return null; + }), _initializer3$6 = applyDecoratedInitializer(_class2$a.prototype, "_direction", [serializable$9], function () { + return Direction$2.Horizontal; + }), _initializer4$5 = applyDecoratedInitializer(_class2$a.prototype, "_progress", [serializable$9], function () { + return 0.1; + })), _class2$a)) || _class$d) || _class$d) || _class$d)); + legacyCC.Slider = Slider; + + function extendsEnum() { + for (var _len = arguments.length, enums = new Array(_len), _key = 0; _key < _len; _key++) { + enums[_key] = arguments[_key]; + } + return Object.assign.apply(Object, [{}].concat(enums)); + } + + var _dec$c, _dec2$9, _dec3$9, _dec4$5, _dec5$5, _class$c, _class2$9, _initializer$9, _initializer2$8, _initializer3$5, _class3$5; + var EventType$3; + (function (EventType) { + EventType["TOGGLE"] = "toggle"; + })(EventType$3 || (EventType$3 = {})); + var Toggle = exports('fo', (_dec$c = ccclass$t('cc.Toggle'), _dec2$9 = executionOrder$1(110), _dec3$9 = requireComponent(UITransform), _dec4$5 = type$8(Sprite), _dec5$5 = type$8([EventHandler]), _dec$c(_class$c = _dec2$9(_class$c = _dec3$9(_class$c = (_class2$9 = (_class3$5 = function (_Button) { + _inheritsLoose(Toggle, _Button); + function Toggle() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Button.call.apply(_Button, [this].concat(args)) || this; + _this.checkEvents = _initializer$9 && _initializer$9(); + _this._isChecked = _initializer2$8 && _initializer2$8(); + _this._checkMark = _initializer3$5 && _initializer3$5(); + return _this; + } + var _proto = Toggle.prototype; + _proto._internalToggle = function _internalToggle() { + this.isChecked = !this.isChecked; + }; + _proto._set = function _set(value, emitEvent) { + if (emitEvent === void 0) { + emitEvent = true; + } + if (this._isChecked == value) return; + this._isChecked = value; + var group = this._toggleContainer; + if (group && group.enabled && this.enabled) { + if (value || !group.anyTogglesChecked() && !group.allowSwitchOff) { + this._isChecked = true; + group.notifyToggleCheck(this, emitEvent); + } + } + this.playEffect(); + if (emitEvent) { + this._emitToggleEvents(); + } + }; + _proto.playEffect = function playEffect() { + if (this._checkMark) { + this._checkMark.node.active = this._isChecked; + } + }; + _proto.setIsCheckedWithoutNotify = function setIsCheckedWithoutNotify(value) { + this._set(value, false); + }; + _proto.onEnable = function onEnable() { + _Button.prototype.onEnable.call(this); + this.playEffect(); + { + this.node.on(Toggle.EventType.CLICK, this._internalToggle, this); + } + }; + _proto.onDisable = function onDisable() { + _Button.prototype.onDisable.call(this); + { + this.node.off(Toggle.EventType.CLICK, this._internalToggle, this); + } + }; + _proto._emitToggleEvents = function _emitToggleEvents() { + this.node.emit(Toggle.EventType.TOGGLE, this); + if (this.checkEvents) { + EventHandler.emitEvents(this.checkEvents, this); + } + }; + _createClass(Toggle, [{ + key: "isChecked", + get: function get() { + return this._isChecked; + }, + set: function set(value) { + this._set(value); + } + }, { + key: "checkMark", + get: function get() { + return this._checkMark; + }, + set: function set(value) { + if (this._checkMark === value) { + return; + } + this._checkMark = value; + } + }, { + key: "_resizeToTarget", + set: function set(value) { + if (value) { + this._resizeNodeToTargetNode(); + } + } + }, { + key: "_toggleContainer", + get: function get() { + var parent = this.node.parent; + if (legacyCC.Node.isNode(parent)) { + return parent.getComponent('cc.ToggleContainer'); + } + return null; + } + }]); + return Toggle; + }(Button), _class3$5.EventType = extendsEnum(EventType$3, EventType$6), _class3$5), (_applyDecoratedDescriptor(_class2$9.prototype, "checkMark", [_dec4$5], Object.getOwnPropertyDescriptor(_class2$9.prototype, "checkMark"), _class2$9.prototype), _initializer$9 = applyDecoratedInitializer(_class2$9.prototype, "checkEvents", [_dec5$5, serializable$9], function () { + return []; + }), _initializer2$8 = applyDecoratedInitializer(_class2$9.prototype, "_isChecked", [serializable$9], function () { + return true; + }), _initializer3$5 = applyDecoratedInitializer(_class2$9.prototype, "_checkMark", [serializable$9], function () { + return null; + })), _class2$9)) || _class$c) || _class$c) || _class$c)); + legacyCC.Toggle = Toggle; + + var _dec$b, _dec2$8, _dec3$8, _class$b, _class2$8, _initializer$8, _initializer2$7; + var ToggleContainer = exports('fp', (_dec$b = ccclass$t('cc.ToggleContainer'), _dec2$8 = executionOrder$1(110), _dec3$8 = type$8([EventHandler]), _dec$b(_class$b = _dec2$8(_class$b = (_class2$8 = function (_Component) { + _inheritsLoose(ToggleContainer, _Component); + function ToggleContainer() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this._allowSwitchOff = _initializer$8 && _initializer$8(); + _this.checkEvents = _initializer2$7 && _initializer2$7(); + return _this; + } + var _proto = ToggleContainer.prototype; + _proto.onEnable = function onEnable() { + this.ensureValidState(); + this.node.on(NodeEventType.CHILD_ADDED, this.ensureValidState, this); + this.node.on(NodeEventType.CHILD_REMOVED, this.ensureValidState, this); + }; + _proto.onDisable = function onDisable() { + this.node.off(NodeEventType.CHILD_ADDED, this.ensureValidState, this); + this.node.off(NodeEventType.CHILD_REMOVED, this.ensureValidState, this); + }; + _proto.activeToggles = function activeToggles() { + return this.toggleItems.filter(function (x) { + return x.isChecked; + }); + }; + _proto.anyTogglesChecked = function anyTogglesChecked() { + return !!this.toggleItems.find(function (x) { + return x.isChecked; + }); + }; + _proto.notifyToggleCheck = function notifyToggleCheck(toggle, emitEvent) { + if (emitEvent === void 0) { + emitEvent = true; + } + if (!this.enabledInHierarchy) { + return; + } + for (var i = 0; i < this.toggleItems.length; i++) { + var item = this.toggleItems[i]; + if (item === toggle) { + continue; + } + if (emitEvent) { + item.isChecked = false; + } else { + item.setIsCheckedWithoutNotify(false); + } + } + if (this.checkEvents) { + legacyCC.Component.EventHandler.emitEvents(this.checkEvents, toggle); + } + }; + _proto.ensureValidState = function ensureValidState() { + var toggles = this.toggleItems; + if (!this._allowSwitchOff && !this.anyTogglesChecked() && toggles.length !== 0) { + var toggle = toggles[0]; + toggle.isChecked = true; + this.notifyToggleCheck(toggle); + } + var activeToggles = this.activeToggles(); + if (activeToggles.length > 1) { + var firstToggle = activeToggles[0]; + for (var i = 0; i < activeToggles.length; ++i) { + var _toggle = activeToggles[i]; + if (_toggle === firstToggle) { + continue; + } + _toggle.isChecked = false; + } + } + }; + _createClass(ToggleContainer, [{ + key: "allowSwitchOff", + get: function get() { + return this._allowSwitchOff; + }, + set: function set(value) { + this._allowSwitchOff = value; + } + }, { + key: "toggleItems", + get: function get() { + return this.node.children.map(function (item) { + var toggle = item.getComponent('cc.Toggle'); + if (toggle && toggle.enabled) { + return toggle; + } + return null; + }).filter(Boolean); + } + }]); + return ToggleContainer; + }(Component), (_initializer$8 = applyDecoratedInitializer(_class2$8.prototype, "_allowSwitchOff", [serializable$9], function () { + return false; + }), _initializer2$7 = applyDecoratedInitializer(_class2$8.prototype, "checkEvents", [_dec3$8, serializable$9], function () { + return []; + })), _class2$8)) || _class$b) || _class$b)); + legacyCC.ToggleContainer = ToggleContainer; + + var _dec$a, _dec2$7, _dec3$7, _dec4$4, _dec5$4, _class$a, _class2$7, _initializer$7, _initializer2$6, _initializer3$4, _initializer4$4, _initializer5$3, _initializer6$2, _initializer7$2, _initializer8$2, _initializer9$2, _initializer10$2, _initializer11$2, _initializer12$2, _initializer13, _initializer14, _initializer15, _initializer16, _initializer17, _initializer18, _class3$4; + var _tempScale = new Vec2(); + function getReadonlyNodeSize(parent) { + if (parent instanceof Scene) { + return visibleRect; + } else if (parent._uiProps.uiTransformComp) { + return parent._uiProps.uiTransformComp.contentSize; + } else { + return Size$1.ZERO; + } + } + function computeInverseTransForTarget(widgetNode, target, out_inverseTranslate, out_inverseScale) { + if (widgetNode.parent) { + _tempScale.set(widgetNode.parent.getScale().x, widgetNode.parent.getScale().y); + } else { + _tempScale.set(0, 0); + } + var scaleX = _tempScale.x; + var scaleY = _tempScale.y; + var translateX = 0; + var translateY = 0; + for (var node = widgetNode.parent;;) { + if (!node) { + out_inverseTranslate.x = out_inverseTranslate.y = 0; + out_inverseScale.x = out_inverseScale.y = 1; + return; + } + var pos = node.getPosition(); + translateX += pos.x; + translateY += pos.y; + node = node.parent; + if (node !== target) { + if (node) { + _tempScale.set(node.getScale().x, node.getScale().y); + } else { + _tempScale.set(0, 0); + } + var sx = _tempScale.x; + var sy = _tempScale.y; + translateX *= sx; + translateY *= sy; + scaleX *= sx; + scaleY *= sy; + } else { + break; + } + } + out_inverseScale.x = scaleX !== 0 ? 1 / scaleX : 1; + out_inverseScale.y = scaleY !== 0 ? 1 / scaleY : 1; + out_inverseTranslate.x = -translateX; + out_inverseTranslate.y = -translateY; + } + var AlignMode; + (function (AlignMode) { + AlignMode[AlignMode["ONCE"] = 0] = "ONCE"; + AlignMode[AlignMode["ALWAYS"] = 1] = "ALWAYS"; + AlignMode[AlignMode["ON_WINDOW_RESIZE"] = 2] = "ON_WINDOW_RESIZE"; + })(AlignMode || (AlignMode = {})); + ccenum(AlignMode); + var AlignFlags; + (function (AlignFlags) { + AlignFlags[AlignFlags["TOP"] = 1] = "TOP"; + AlignFlags[AlignFlags["MID"] = 2] = "MID"; + AlignFlags[AlignFlags["BOT"] = 4] = "BOT"; + AlignFlags[AlignFlags["LEFT"] = 8] = "LEFT"; + AlignFlags[AlignFlags["CENTER"] = 16] = "CENTER"; + AlignFlags[AlignFlags["RIGHT"] = 32] = "RIGHT"; + AlignFlags[AlignFlags["HORIZONTAL"] = 56] = "HORIZONTAL"; + AlignFlags[AlignFlags["VERTICAL"] = 7] = "VERTICAL"; + })(AlignFlags || (AlignFlags = {})); + var TOP_BOT = AlignFlags.TOP | AlignFlags.BOT; + var LEFT_RIGHT = AlignFlags.LEFT | AlignFlags.RIGHT; + var Widget = exports('fr', (_dec$a = ccclass$t('cc.Widget'), _dec2$7 = executionOrder$1(110), _dec3$7 = requireComponent(UITransform), _dec4$4 = type$8(Node$1), _dec5$4 = type$8(AlignMode), _dec$a(_class$a = _dec2$7(_class$a = _dec3$7(_class$a = (_class2$7 = (_class3$4 = function (_Component) { + _inheritsLoose(Widget, _Component); + function Widget() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this._lastPos = new Vec3(); + _this._lastSize = new Size$1(); + _this._dirty = true; + _this._hadAlignOnce = false; + _this._alignFlags = _initializer$7 && _initializer$7(); + _this._target = _initializer2$6 && _initializer2$6(); + _this._left = _initializer3$4 && _initializer3$4(); + _this._right = _initializer4$4 && _initializer4$4(); + _this._top = _initializer5$3 && _initializer5$3(); + _this._bottom = _initializer6$2 && _initializer6$2(); + _this._horizontalCenter = _initializer7$2 && _initializer7$2(); + _this._verticalCenter = _initializer8$2 && _initializer8$2(); + _this._isAbsLeft = _initializer9$2 && _initializer9$2(); + _this._isAbsRight = _initializer10$2 && _initializer10$2(); + _this._isAbsTop = _initializer11$2 && _initializer11$2(); + _this._isAbsBottom = _initializer12$2 && _initializer12$2(); + _this._isAbsHorizontalCenter = _initializer13 && _initializer13(); + _this._isAbsVerticalCenter = _initializer14 && _initializer14(); + _this._originalWidth = _initializer15 && _initializer15(); + _this._originalHeight = _initializer16 && _initializer16(); + _this._alignMode = _initializer17 && _initializer17(); + _this._lockFlags = _initializer18 && _initializer18(); + return _this; + } + var _proto = Widget.prototype; + _proto.updateAlignment = function updateAlignment() { + legacyCC._widgetManager.updateAlignment(this.node); + }; + _proto._validateTargetInDEV = function _validateTargetInDEV() { + { + return; + } + }; + _proto.setDirty = function setDirty() { + this._recursiveDirty(); + }; + _proto.onEnable = function onEnable() { + this.node.getPosition(this._lastPos); + this._lastSize.set(this.node._uiProps.uiTransformComp.contentSize); + legacyCC._widgetManager.add(this); + this._hadAlignOnce = false; + this._registerEvent(); + this._registerTargetEvents(); + }; + _proto.onDisable = function onDisable() { + legacyCC._widgetManager.remove(this); + this._unregisterEvent(); + this._unregisterTargetEvents(); + }; + _proto.onDestroy = function onDestroy() { + this._removeParentEvent(); + }; + _proto._adjustWidgetToAllowMovingInEditor = function _adjustWidgetToAllowMovingInEditor(eventType) {}; + _proto._adjustWidgetToAllowResizingInEditor = function _adjustWidgetToAllowResizingInEditor() {}; + _proto._adjustWidgetToAnchorChanged = function _adjustWidgetToAnchorChanged() { + this.setDirty(); + }; + _proto._adjustTargetToParentChanged = function _adjustTargetToParentChanged(oldParent) { + if (oldParent) { + this._unregisterOldParentEvents(oldParent); + } + if (this.node.getParent()) { + this._registerTargetEvents(); + } + this._setDirtyByMode(); + }; + _proto._registerEvent = function _registerEvent() { + { + this.node.on(NodeEventType.TRANSFORM_CHANGED, this._setDirtyByMode, this); + this.node.on(NodeEventType.SIZE_CHANGED, this._setDirtyByMode, this); + } + this.node.on(NodeEventType.ANCHOR_CHANGED, this._adjustWidgetToAnchorChanged, this); + this.node.on(NodeEventType.PARENT_CHANGED, this._adjustTargetToParentChanged, this); + }; + _proto._unregisterEvent = function _unregisterEvent() { + { + this.node.off(NodeEventType.TRANSFORM_CHANGED, this._setDirtyByMode, this); + this.node.off(NodeEventType.SIZE_CHANGED, this._setDirtyByMode, this); + } + this.node.off(NodeEventType.ANCHOR_CHANGED, this._adjustWidgetToAnchorChanged, this); + }; + _proto._removeParentEvent = function _removeParentEvent() { + this.node.off(NodeEventType.PARENT_CHANGED, this._adjustTargetToParentChanged, this); + }; + _proto._autoChangedValue = function _autoChangedValue(flag, isAbs) { + var current = (this._alignFlags & flag) > 0; + if (!current) { + return; + } + var parentUiProps = this.node.parent && this.node.parent._uiProps; + var parentTrans = parentUiProps && parentUiProps.uiTransformComp; + var size = parentTrans ? parentTrans.contentSize : visibleRect; + if (this.isAlignLeft && flag === AlignFlags.LEFT) { + this._left = isAbs ? this._left * size.width : this._left / size.width; + } else if (this.isAlignRight && flag === AlignFlags.RIGHT) { + this._right = isAbs ? this._right * size.width : this._right / size.width; + } else if (this.isAlignHorizontalCenter && flag === AlignFlags.CENTER) { + this._horizontalCenter = isAbs ? this._horizontalCenter * size.width : this._horizontalCenter / size.width; + } else if (this.isAlignTop && flag === AlignFlags.TOP) { + this._top = isAbs ? this._top * size.height : this._top / size.height; + } else if (this.isAlignBottom && flag === AlignFlags.BOT) { + this._bottom = isAbs ? this._bottom * size.height : this._bottom / size.height; + } else if (this.isAbsoluteVerticalCenter && flag === AlignFlags.MID) { + this._verticalCenter = isAbs ? this._verticalCenter / size.height : this._verticalCenter / size.height; + } + this._recursiveDirty(); + }; + _proto._registerTargetEvents = function _registerTargetEvents() { + var target = this._target || this.node.parent; + if (target) { + if (target.getComponent(UITransform)) { + target.on(NodeEventType.TRANSFORM_CHANGED, this._setDirtyByMode, this); + target.on(NodeEventType.SIZE_CHANGED, this._setDirtyByMode, this); + target.on(NodeEventType.ANCHOR_CHANGED, this._setDirtyByMode, this); + } + } + }; + _proto._unregisterTargetEvents = function _unregisterTargetEvents() { + var target = this._target || this.node.parent; + if (target) { + target.off(NodeEventType.TRANSFORM_CHANGED, this._setDirtyByMode, this); + target.off(NodeEventType.SIZE_CHANGED, this._setDirtyByMode, this); + target.off(NodeEventType.ANCHOR_CHANGED, this._setDirtyByMode, this); + } + }; + _proto._unregisterOldParentEvents = function _unregisterOldParentEvents(oldParent) { + var target = this._target || oldParent; + if (target) { + target.off(NodeEventType.TRANSFORM_CHANGED, this._setDirtyByMode, this); + target.off(NodeEventType.SIZE_CHANGED, this._setDirtyByMode, this); + } + }; + _proto._setDirtyByMode = function _setDirtyByMode() { + if (this.alignMode === AlignMode.ALWAYS || EDITOR_NOT_IN_PREVIEW) { + this._recursiveDirty(); + } + }; + _proto._setAlign = function _setAlign(flag, isAlign) { + var current = (this._alignFlags & flag) > 0; + if (isAlign === current) { + return; + } + var isHorizontal = (flag & LEFT_RIGHT) > 0; + var trans = this.node._uiProps.uiTransformComp; + if (isAlign) { + this._alignFlags |= flag; + if (isHorizontal) { + this.isAlignHorizontalCenter = false; + if (this.isStretchWidth) { + this._originalWidth = trans.width; + } + } else { + this.isAlignVerticalCenter = false; + if (this.isStretchHeight) { + this._originalHeight = trans.height; + } + } + } else { + if (isHorizontal) { + if (this.isStretchWidth) { + trans.width = this._originalWidth; + } + } else if (this.isStretchHeight) { + trans.height = this._originalHeight; + } + this._alignFlags &= ~flag; + } + }; + _proto._recursiveDirty = function _recursiveDirty() { + if (this._dirty) { + return; + } + this._dirty = true; + }; + _createClass(Widget, [{ + key: "target", + get: function get() { + return this._target; + }, + set: function set(value) { + if (this._target === value) { + return; + } + this._unregisterTargetEvents(); + this._target = value; + this._registerTargetEvents(); + this._validateTargetInDEV(); + this._recursiveDirty(); + } + }, { + key: "isAlignTop", + get: function get() { + return (this._alignFlags & AlignFlags.TOP) > 0; + }, + set: function set(value) { + this._setAlign(AlignFlags.TOP, value); + this._recursiveDirty(); + } + }, { + key: "isAlignBottom", + get: function get() { + return (this._alignFlags & AlignFlags.BOT) > 0; + }, + set: function set(value) { + this._setAlign(AlignFlags.BOT, value); + this._recursiveDirty(); + } + }, { + key: "isAlignLeft", + get: function get() { + return (this._alignFlags & AlignFlags.LEFT) > 0; + }, + set: function set(value) { + this._setAlign(AlignFlags.LEFT, value); + this._recursiveDirty(); + } + }, { + key: "isAlignRight", + get: function get() { + return (this._alignFlags & AlignFlags.RIGHT) > 0; + }, + set: function set(value) { + this._setAlign(AlignFlags.RIGHT, value); + this._recursiveDirty(); + } + }, { + key: "isAlignVerticalCenter", + get: function get() { + return (this._alignFlags & AlignFlags.MID) > 0; + }, + set: function set(value) { + if (value) { + this.isAlignTop = false; + this.isAlignBottom = false; + this._alignFlags |= AlignFlags.MID; + } else { + this._alignFlags &= ~AlignFlags.MID; + } + this._recursiveDirty(); + } + }, { + key: "isAlignHorizontalCenter", + get: function get() { + return (this._alignFlags & AlignFlags.CENTER) > 0; + }, + set: function set(value) { + if (value) { + this.isAlignLeft = false; + this.isAlignRight = false; + this._alignFlags |= AlignFlags.CENTER; + } else { + this._alignFlags &= ~AlignFlags.CENTER; + } + this._recursiveDirty(); + } + }, { + key: "isStretchWidth", + get: function get() { + return (this._alignFlags & LEFT_RIGHT) === LEFT_RIGHT; + } + }, { + key: "isStretchHeight", + get: function get() { + return (this._alignFlags & TOP_BOT) === TOP_BOT; + } + }, { + key: "top", + get: function get() { + return this._top; + }, + set: function set(value) { + this._top = value; + this._recursiveDirty(); + } + }, { + key: "editorTop", + get: function get() { + return this._isAbsTop ? this._top : this._top * 100; + }, + set: function set(value) { + this._top = this._isAbsTop ? value : value / 100; + this._recursiveDirty(); + } + }, { + key: "bottom", + get: function get() { + return this._bottom; + }, + set: function set(value) { + this._bottom = value; + this._recursiveDirty(); + } + }, { + key: "editorBottom", + get: function get() { + return this._isAbsBottom ? this._bottom : this._bottom * 100; + }, + set: function set(value) { + this._bottom = this._isAbsBottom ? value : value / 100; + this._recursiveDirty(); + } + }, { + key: "left", + get: function get() { + return this._left; + }, + set: function set(value) { + this._left = value; + this._recursiveDirty(); + } + }, { + key: "editorLeft", + get: function get() { + return this._isAbsLeft ? this._left : this._left * 100; + }, + set: function set(value) { + this._left = this._isAbsLeft ? value : value / 100; + this._recursiveDirty(); + } + }, { + key: "right", + get: function get() { + return this._right; + }, + set: function set(value) { + this._right = value; + this._recursiveDirty(); + } + }, { + key: "editorRight", + get: function get() { + return this._isAbsRight ? this._right : this._right * 100; + }, + set: function set(value) { + this._right = this._isAbsRight ? value : value / 100; + this._recursiveDirty(); + } + }, { + key: "horizontalCenter", + get: function get() { + return this._horizontalCenter; + }, + set: function set(value) { + this._horizontalCenter = value; + this._recursiveDirty(); + } + }, { + key: "editorHorizontalCenter", + get: function get() { + return this._isAbsHorizontalCenter ? this._horizontalCenter : this._horizontalCenter * 100; + }, + set: function set(value) { + this._horizontalCenter = this._isAbsHorizontalCenter ? value : value / 100; + this._recursiveDirty(); + } + }, { + key: "verticalCenter", + get: function get() { + return this._verticalCenter; + }, + set: function set(value) { + this._verticalCenter = value; + this._recursiveDirty(); + } + }, { + key: "editorVerticalCenter", + get: function get() { + return this._isAbsVerticalCenter ? this._verticalCenter : this._verticalCenter * 100; + }, + set: function set(value) { + this._verticalCenter = this._isAbsVerticalCenter ? value : value / 100; + this._recursiveDirty(); + } + }, { + key: "isAbsoluteTop", + get: function get() { + return this._isAbsTop; + }, + set: function set(value) { + if (this._isAbsTop === value) { + return; + } + this._isAbsTop = value; + this._autoChangedValue(AlignFlags.TOP, this._isAbsTop); + } + }, { + key: "isAbsoluteBottom", + get: function get() { + return this._isAbsBottom; + }, + set: function set(value) { + if (this._isAbsBottom === value) { + return; + } + this._isAbsBottom = value; + this._autoChangedValue(AlignFlags.BOT, this._isAbsBottom); + } + }, { + key: "isAbsoluteLeft", + get: function get() { + return this._isAbsLeft; + }, + set: function set(value) { + if (this._isAbsLeft === value) { + return; + } + this._isAbsLeft = value; + this._autoChangedValue(AlignFlags.LEFT, this._isAbsLeft); + } + }, { + key: "isAbsoluteRight", + get: function get() { + return this._isAbsRight; + }, + set: function set(value) { + if (this._isAbsRight === value) { + return; + } + this._isAbsRight = value; + this._autoChangedValue(AlignFlags.RIGHT, this._isAbsRight); + } + }, { + key: "isAbsoluteHorizontalCenter", + get: function get() { + return this._isAbsHorizontalCenter; + }, + set: function set(value) { + if (this._isAbsHorizontalCenter === value) { + return; + } + this._isAbsHorizontalCenter = value; + this._autoChangedValue(AlignFlags.CENTER, this._isAbsHorizontalCenter); + } + }, { + key: "isAbsoluteVerticalCenter", + get: function get() { + return this._isAbsVerticalCenter; + }, + set: function set(value) { + if (this._isAbsVerticalCenter === value) { + return; + } + this._isAbsVerticalCenter = value; + this._autoChangedValue(AlignFlags.MID, this._isAbsVerticalCenter); + } + }, { + key: "alignMode", + get: function get() { + return this._alignMode; + }, + set: function set(value) { + this._alignMode = value; + this._recursiveDirty(); + } + }, { + key: "alignFlags", + get: function get() { + return this._alignFlags; + }, + set: function set(value) { + if (this._alignFlags === value) { + return; + } + this._alignFlags = value; + this._recursiveDirty(); + } + }]); + return Widget; + }(Component), _class3$4.AlignMode = AlignMode, _class3$4), (_applyDecoratedDescriptor(_class2$7.prototype, "target", [_dec4$4], Object.getOwnPropertyDescriptor(_class2$7.prototype, "target"), _class2$7.prototype), _applyDecoratedDescriptor(_class2$7.prototype, "alignMode", [_dec5$4], Object.getOwnPropertyDescriptor(_class2$7.prototype, "alignMode"), _class2$7.prototype), _initializer$7 = applyDecoratedInitializer(_class2$7.prototype, "_alignFlags", [serializable$9], function () { + return 0; + }), _initializer2$6 = applyDecoratedInitializer(_class2$7.prototype, "_target", [serializable$9], function () { + return null; + }), _initializer3$4 = applyDecoratedInitializer(_class2$7.prototype, "_left", [serializable$9], function () { + return 0; + }), _initializer4$4 = applyDecoratedInitializer(_class2$7.prototype, "_right", [serializable$9], function () { + return 0; + }), _initializer5$3 = applyDecoratedInitializer(_class2$7.prototype, "_top", [serializable$9], function () { + return 0; + }), _initializer6$2 = applyDecoratedInitializer(_class2$7.prototype, "_bottom", [serializable$9], function () { + return 0; + }), _initializer7$2 = applyDecoratedInitializer(_class2$7.prototype, "_horizontalCenter", [serializable$9], function () { + return 0; + }), _initializer8$2 = applyDecoratedInitializer(_class2$7.prototype, "_verticalCenter", [serializable$9], function () { + return 0; + }), _initializer9$2 = applyDecoratedInitializer(_class2$7.prototype, "_isAbsLeft", [serializable$9], function () { + return true; + }), _initializer10$2 = applyDecoratedInitializer(_class2$7.prototype, "_isAbsRight", [serializable$9], function () { + return true; + }), _initializer11$2 = applyDecoratedInitializer(_class2$7.prototype, "_isAbsTop", [serializable$9], function () { + return true; + }), _initializer12$2 = applyDecoratedInitializer(_class2$7.prototype, "_isAbsBottom", [serializable$9], function () { + return true; + }), _initializer13 = applyDecoratedInitializer(_class2$7.prototype, "_isAbsHorizontalCenter", [serializable$9], function () { + return true; + }), _initializer14 = applyDecoratedInitializer(_class2$7.prototype, "_isAbsVerticalCenter", [serializable$9], function () { + return true; + }), _initializer15 = applyDecoratedInitializer(_class2$7.prototype, "_originalWidth", [serializable$9], function () { + return 0; + }), _initializer16 = applyDecoratedInitializer(_class2$7.prototype, "_originalHeight", [serializable$9], function () { + return 0; + }), _initializer17 = applyDecoratedInitializer(_class2$7.prototype, "_alignMode", [serializable$9], function () { + return AlignMode.ON_WINDOW_RESIZE; + }), _initializer18 = applyDecoratedInitializer(_class2$7.prototype, "_lockFlags", [serializable$9, editorOnly], function () { + return 0; + })), _class2$7)) || _class$a) || _class$a) || _class$a)); + legacyCC.internal.computeInverseTransForTarget = computeInverseTransForTarget; + legacyCC.internal.getReadonlyNodeSize = getReadonlyNodeSize; + legacyCC.Widget = Widget; + + var _dec$9, _dec2$6, _dec3$6, _dec4$3, _dec5$3, _class$9, _class2$6, _initializer$6, _initializer2$5, _initializer3$3, _initializer4$3, _class3$3; + var _color = new Color$1(); + var Direction$1; + (function (Direction) { + Direction[Direction["HORIZONTAL"] = 0] = "HORIZONTAL"; + Direction[Direction["VERTICAL"] = 1] = "VERTICAL"; + })(Direction$1 || (Direction$1 = {})); + ccenum(Direction$1); + var PageViewIndicator = exports('ft', (_dec$9 = ccclass$t('cc.PageViewIndicator'), _dec2$6 = executionOrder$1(110), _dec3$6 = type$8(SpriteFrame), _dec4$3 = type$8(Direction$1), _dec5$3 = type$8(Size$1), _dec$9(_class$9 = _dec2$6(_class$9 = (_class2$6 = (_class3$3 = function (_Component) { + _inheritsLoose(PageViewIndicator, _Component); + function PageViewIndicator() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this.spacing = _initializer$6 && _initializer$6(); + _this._spriteFrame = _initializer2$5 && _initializer2$5(); + _this._direction = _initializer3$3 && _initializer3$3(); + _this._cellSize = _initializer4$3 && _initializer4$3(); + _this._layout = null; + _this._pageView = null; + _this._indicators = []; + return _this; + } + var _proto = PageViewIndicator.prototype; + _proto.onLoad = function onLoad() { + this._updateLayout(); + }; + _proto.setPageView = function setPageView(target) { + this._pageView = target; + this._refresh(); + }; + _proto._updateLayout = function _updateLayout() { + this._layout = this.getComponent(Layout); + if (!this._layout) { + this._layout = this.addComponent(Layout); + } + var layout = this._layout; + if (this.direction === Direction$1.HORIZONTAL) { + layout.type = Layout.Type.HORIZONTAL; + layout.spacingX = this.spacing; + } else if (this.direction === Direction$1.VERTICAL) { + layout.type = Layout.Type.VERTICAL; + layout.spacingY = this.spacing; + } + layout.resizeMode = Layout.ResizeMode.CONTAINER; + }; + _proto._createIndicator = function _createIndicator() { + var node = new Node$1(); + node.layer = this.node.layer; + var sprite = node.addComponent(Sprite); + sprite.spriteFrame = this.spriteFrame; + sprite.sizeMode = Sprite.SizeMode.CUSTOM; + node.parent = this.node; + node._uiProps.uiTransformComp.setContentSize(this._cellSize); + return node; + }; + _proto._changedState = function _changedState() { + var indicators = this._indicators; + if (indicators.length === 0 || !this._pageView) { + return; + } + var idx = this._pageView.curPageIdx; + if (idx >= indicators.length) { + return; + } + for (var i = 0; i < indicators.length; ++i) { + var node = indicators[i]; + if (!node._uiProps.uiComp) { + continue; + } + var uiComp = node._uiProps.uiComp; + _color.set(uiComp.color); + _color.a = 255 / 2; + uiComp.color = _color; + } + if (indicators[idx]._uiProps.uiComp) { + var comp = indicators[idx]._uiProps.uiComp; + _color.set(comp.color); + _color.a = 255; + comp.color = _color; + } + }; + _proto._refresh = function _refresh() { + if (!this._pageView) { + return; + } + var indicators = this._indicators; + var pages = this._pageView.getPages(); + if (pages.length === indicators.length) { + return; + } + var i = 0; + if (pages.length > indicators.length) { + for (i = 0; i < pages.length; ++i) { + if (!indicators[i]) { + indicators[i] = this._createIndicator(); + } + } + } else { + var count = indicators.length - pages.length; + for (i = count; i > 0; --i) { + var node = indicators[i - 1]; + this.node.removeChild(node); + indicators.splice(i - 1, 1); + } + } + if (this._layout && this._layout.enabledInHierarchy) { + this._layout.updateLayout(); + } + this._changedState(); + }; + _createClass(PageViewIndicator, [{ + key: "spriteFrame", + get: function get() { + return this._spriteFrame; + }, + set: function set(value) { + if (this._spriteFrame === value) { + return; + } + this._spriteFrame = value; + } + }, { + key: "direction", + get: function get() { + return this._direction; + }, + set: function set(value) { + if (this._direction === value) { + return; + } + this._direction = value; + } + }, { + key: "cellSize", + get: function get() { + return this._cellSize; + }, + set: function set(value) { + if (this._cellSize === value) { + return; + } + this._cellSize = value; + } + }]); + return PageViewIndicator; + }(Component), _class3$3.Direction = Direction$1, _class3$3), (_applyDecoratedDescriptor(_class2$6.prototype, "spriteFrame", [_dec3$6], Object.getOwnPropertyDescriptor(_class2$6.prototype, "spriteFrame"), _class2$6.prototype), _applyDecoratedDescriptor(_class2$6.prototype, "direction", [_dec4$3], Object.getOwnPropertyDescriptor(_class2$6.prototype, "direction"), _class2$6.prototype), _applyDecoratedDescriptor(_class2$6.prototype, "cellSize", [_dec5$3], Object.getOwnPropertyDescriptor(_class2$6.prototype, "cellSize"), _class2$6.prototype), _initializer$6 = applyDecoratedInitializer(_class2$6.prototype, "spacing", [serializable$9], function () { + return 0; + }), _initializer2$5 = applyDecoratedInitializer(_class2$6.prototype, "_spriteFrame", [serializable$9], function () { + return null; + }), _initializer3$3 = applyDecoratedInitializer(_class2$6.prototype, "_direction", [serializable$9], function () { + return Direction$1.HORIZONTAL; + }), _initializer4$3 = applyDecoratedInitializer(_class2$6.prototype, "_cellSize", [serializable$9], function () { + return new Size$1(20, 20); + })), _class2$6)) || _class$9) || _class$9)); + legacyCC.PageViewIndicator = PageViewIndicator; + + var _dec$8, _dec2$5, _dec3$5, _dec4$2, _dec5$2, _dec6$1, _dec7, _dec8, _dec9, _class$8, _class2$5, _initializer$5, _initializer2$4, _initializer3$2, _initializer4$2, _initializer5$2, _initializer6$1, _initializer7$1, _initializer8$1, _initializer9$1, _initializer10$1, _initializer11$1, _initializer12$1, _class3$2; + var _tempVec2 = new Vec2(); + var SizeMode; + (function (SizeMode) { + SizeMode[SizeMode["Unified"] = 0] = "Unified"; + SizeMode[SizeMode["Free"] = 1] = "Free"; + })(SizeMode || (SizeMode = {})); + ccenum(SizeMode); + var Direction; + (function (Direction) { + Direction[Direction["Horizontal"] = 0] = "Horizontal"; + Direction[Direction["Vertical"] = 1] = "Vertical"; + })(Direction || (Direction = {})); + ccenum(Direction); + var EventType$2; + (function (EventType) { + EventType["PAGE_TURNING"] = "page-turning"; + })(EventType$2 || (EventType$2 = {})); + var PageView = exports('fs', (_dec$8 = ccclass$t('cc.PageView'), _dec2$5 = executionOrder$1(110), _dec3$5 = type$8(SizeMode), _dec4$2 = type$8(Direction), _dec5$2 = type$8(PageViewIndicator), _dec6$1 = type$8(ScrollBar), _dec7 = type$8(ScrollBar), _dec8 = type$8([EventHandler]), _dec9 = type$8([EventHandler]), _dec$8(_class$8 = _dec2$5(_class$8 = (_class2$5 = (_class3$2 = function (_ScrollView) { + _inheritsLoose(PageView, _ScrollView); + function PageView() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _ScrollView.call.apply(_ScrollView, [this].concat(args)) || this; + _this.autoPageTurningThreshold = _initializer$5 && _initializer$5(); + _this.horizontal = _initializer2$4 && _initializer2$4(); + _this.vertical = _initializer3$2 && _initializer3$2(); + _this.cancelInnerEvents = _initializer4$2 && _initializer4$2(); + _this.scrollEvents = _initializer5$2 && _initializer5$2(); + _this.pageTurningSpeed = _initializer6$1 && _initializer6$1(); + _this.pageEvents = _initializer7$1 && _initializer7$1(); + _this._sizeMode = _initializer8$1 && _initializer8$1(); + _this._direction = _initializer9$1 && _initializer9$1(); + _this._scrollThreshold = _initializer10$1 && _initializer10$1(); + _this._pageTurningEventTiming = _initializer11$1 && _initializer11$1(); + _this._indicator = _initializer12$1 && _initializer12$1(); + _this._curPageIdx = 0; + _this._lastPageIdx = 0; + _this._pages = []; + _this._initContentPos = new Vec3(); + _this._scrollCenterOffsetX = []; + _this._scrollCenterOffsetY = []; + _this._touchBeganPosition = new Vec2(); + _this._touchEndPosition = new Vec2(); + return _this; + } + var _proto = PageView.prototype; + _proto.onEnable = function onEnable() { + _ScrollView.prototype.onEnable.call(this); + this.node.on(NodeEventType.SIZE_CHANGED, this._updateAllPagesSize, this); + { + this.node.on(PageView.EventType.SCROLL_ENG_WITH_THRESHOLD, this._dispatchPageTurningEvent, this); + } + }; + _proto.onDisable = function onDisable() { + _ScrollView.prototype.onDisable.call(this); + this.node.off(NodeEventType.SIZE_CHANGED, this._updateAllPagesSize, this); + { + this.node.off(PageView.EventType.SCROLL_ENG_WITH_THRESHOLD, this._dispatchPageTurningEvent, this); + } + }; + _proto.onLoad = function onLoad() { + this._initPages(); + if (this.indicator) { + this.indicator.setPageView(this); + } + }; + _proto.getCurrentPageIndex = function getCurrentPageIndex() { + return this._curPageIdx; + }; + _proto.setCurrentPageIndex = function setCurrentPageIndex(index) { + this.scrollToPage(index, 1); + }; + _proto.getPages = function getPages() { + return this._pages; + }; + _proto.addPage = function addPage(page) { + if (!page || this._pages.indexOf(page) !== -1 || !this.content) { + return; + } + if (!page._uiProps.uiTransformComp) { + logID(4301); + return; + } + this.content.addChild(page); + this._pages.push(page); + this._updatePageView(); + }; + _proto.insertPage = function insertPage(page, index) { + if (index < 0 || !page || this._pages.indexOf(page) !== -1 || !this.content) { + return; + } + var pageCount = this._pages.length; + if (index >= pageCount) { + this.addPage(page); + } else { + if (!page._uiProps.uiTransformComp) { + logID(4301); + return; + } + this._pages.splice(index, 0, page); + this.content.insertChild(page, index); + this._updatePageView(); + } + }; + _proto.removePage = function removePage(page) { + if (!page || !this.content) { + return; + } + var index = this._pages.indexOf(page); + if (index === -1) { + warnID(4300, page.name); + return; + } + this.removePageAtIndex(index); + }; + _proto.removePageAtIndex = function removePageAtIndex(index) { + var pageList = this._pages; + if (index < 0 || index >= pageList.length) { + return; + } + var page = pageList[index]; + if (!page || !this.content) { + return; + } + this.content.removeChild(page); + pageList.splice(index, 1); + this._updatePageView(); + }; + _proto.removeAllPages = function removeAllPages() { + if (!this.content) { + return; + } + var locPages = this._pages; + for (var i = 0, len = locPages.length; i < len; i++) { + this.content.removeChild(locPages[i]); + } + this._pages.length = 0; + this._updatePageView(); + }; + _proto.scrollToPage = function scrollToPage(idx, timeInSecond) { + if (timeInSecond === void 0) { + timeInSecond = 0.3; + } + if (idx < 0 || idx >= this._pages.length) { + return; + } + this._curPageIdx = idx; + this.scrollToOffset(this._moveOffsetValue(idx), timeInSecond, true); + if (this.indicator) { + this.indicator._changedState(); + } + }; + _proto.getScrollEndedEventTiming = function getScrollEndedEventTiming() { + return this.pageTurningEventTiming; + }; + _proto._updatePageView = function _updatePageView() { + if (!this.content) { + return; + } + var layout = this.content.getComponent(Layout); + if (layout && layout.enabled) { + layout.updateLayout(); + } + var pageCount = this._pages.length; + if (this._curPageIdx >= pageCount) { + this._curPageIdx = pageCount === 0 ? 0 : pageCount - 1; + this._lastPageIdx = this._curPageIdx; + } + var contentPos = this._initContentPos; + for (var i = 0; i < pageCount; ++i) { + var page = this._pages[i]; + var pos = page.position; + if (this.direction === Direction.Horizontal) { + this._scrollCenterOffsetX[i] = Math.abs(contentPos.x + pos.x); + } else { + this._scrollCenterOffsetY[i] = Math.abs(contentPos.y + pos.y); + } + } + if (this.indicator) { + this.indicator._refresh(); + } + }; + _proto._updateAllPagesSize = function _updateAllPagesSize() { + var viewTrans = this.view; + if (!this.content || !viewTrans) { + return; + } + if (this._sizeMode !== SizeMode.Unified) { + return; + } + var locPages = this._pages; + var selfSize = viewTrans.contentSize; + for (var i = 0, len = locPages.length; i < len; i++) { + locPages[i]._uiProps.uiTransformComp.setContentSize(selfSize); + } + }; + _proto._handleReleaseLogic = function _handleReleaseLogic() { + this._autoScrollToPage(); + if (this._scrolling) { + this._scrolling = false; + if (!this._autoScrolling) { + this._dispatchEvent(PageView.EventType.SCROLL_ENDED); + } + } + }; + _proto._onTouchBegan = function _onTouchBegan(event, captureListeners) { + event.touch.getUILocation(_tempVec2); + Vec2.set(this._touchBeganPosition, _tempVec2.x, _tempVec2.y); + _ScrollView.prototype._onTouchBegan.call(this, event, captureListeners); + }; + _proto._onTouchMoved = function _onTouchMoved(event, captureListeners) { + _ScrollView.prototype._onTouchMoved.call(this, event, captureListeners); + }; + _proto._onTouchEnded = function _onTouchEnded(event, captureListeners) { + event.touch.getUILocation(_tempVec2); + Vec2.set(this._touchEndPosition, _tempVec2.x, _tempVec2.y); + _ScrollView.prototype._onTouchEnded.call(this, event, captureListeners); + }; + _proto._onTouchCancelled = function _onTouchCancelled(event, captureListeners) { + event.touch.getUILocation(_tempVec2); + Vec2.set(this._touchEndPosition, _tempVec2.x, _tempVec2.y); + _ScrollView.prototype._onTouchCancelled.call(this, event, captureListeners); + }; + _proto._onMouseWheel = function _onMouseWheel() {}; + _proto._syncScrollDirection = function _syncScrollDirection() { + this.horizontal = this.direction === Direction.Horizontal; + this.vertical = this.direction === Direction.Vertical; + }; + _proto._syncSizeMode = function _syncSizeMode() { + var viewTrans = this.view; + if (!this.content || !viewTrans) { + return; + } + var layout = this.content.getComponent(Layout); + if (layout) { + if (this._sizeMode === SizeMode.Free && this._pages.length > 0) { + var firstPageTrans = this._pages[0]._uiProps.uiTransformComp; + var lastPageTrans = this._pages[this._pages.length - 1]._uiProps.uiTransformComp; + if (this.direction === Direction.Horizontal) { + layout.paddingLeft = (viewTrans.width - firstPageTrans.width) / 2; + layout.paddingRight = (viewTrans.width - lastPageTrans.width) / 2; + } else if (this.direction === Direction.Vertical) { + layout.paddingTop = (viewTrans.height - firstPageTrans.height) / 2; + layout.paddingBottom = (viewTrans.height - lastPageTrans.height) / 2; + } + } + layout.updateLayout(); + } + }; + _proto._initPages = function _initPages() { + if (!this.content) { + return; + } + this._initContentPos = this.content.position; + var children = this.content.children; + for (var i = 0; i < children.length; ++i) { + var page = children[i]; + if (this._pages.indexOf(page) >= 0) { + continue; + } + this._pages.push(page); + } + this._syncScrollDirection(); + this._syncSizeMode(); + this._updatePageView(); + }; + _proto._dispatchPageTurningEvent = function _dispatchPageTurningEvent() { + if (this._lastPageIdx === this._curPageIdx) { + return; + } + this._lastPageIdx = this._curPageIdx; + EventHandler.emitEvents(this.pageEvents, this, EventType$2.PAGE_TURNING); + this.node.emit(EventType$2.PAGE_TURNING, this); + }; + _proto._isQuicklyScrollable = function _isQuicklyScrollable(touchMoveVelocity) { + if (this.direction === Direction.Horizontal) { + if (Math.abs(touchMoveVelocity.x) > this.autoPageTurningThreshold) { + return true; + } + } else if (this.direction === Direction.Vertical) { + if (Math.abs(touchMoveVelocity.y) > this.autoPageTurningThreshold) { + return true; + } + } + return false; + }; + _proto._moveOffsetValue = function _moveOffsetValue(idx) { + var offset = new Vec2(); + if (this._sizeMode === SizeMode.Free) { + if (this.direction === Direction.Horizontal) { + offset.x = this._scrollCenterOffsetX[idx]; + } else if (this.direction === Direction.Vertical) { + offset.y = this._scrollCenterOffsetY[idx]; + } + } else { + var viewTrans = this.view; + if (!viewTrans) { + return offset; + } + if (this.direction === Direction.Horizontal) { + offset.x = idx * viewTrans.width; + } else if (this.direction === Direction.Vertical) { + offset.y = idx * viewTrans.height; + } + } + return offset; + }; + _proto._getDragDirection = function _getDragDirection(moveOffset) { + if (this._direction === Direction.Horizontal) { + if (moveOffset.x === 0) { + return 0; + } + return moveOffset.x > 0 ? 1 : -1; + } else { + if (moveOffset.y === 0) { + return 0; + } + return moveOffset.y < 0 ? 1 : -1; + } + }; + _proto._isScrollable = function _isScrollable(offset, index, nextIndex) { + if (this._sizeMode === SizeMode.Free) { + var curPageCenter = 0; + var nextPageCenter = 0; + if (this.direction === Direction.Horizontal) { + curPageCenter = this._scrollCenterOffsetX[index]; + nextPageCenter = this._scrollCenterOffsetX[nextIndex]; + return Math.abs(offset.x) >= Math.abs(curPageCenter - nextPageCenter) * this.scrollThreshold; + } else if (this.direction === Direction.Vertical) { + curPageCenter = this._scrollCenterOffsetY[index]; + nextPageCenter = this._scrollCenterOffsetY[nextIndex]; + return Math.abs(offset.y) >= Math.abs(curPageCenter - nextPageCenter) * this.scrollThreshold; + } + } else { + var viewTrans = this.view; + if (!viewTrans) { + return false; + } + if (this.direction === Direction.Horizontal) { + return Math.abs(offset.x) >= viewTrans.width * this.scrollThreshold; + } else if (this.direction === Direction.Vertical) { + return Math.abs(offset.y) >= viewTrans.height * this.scrollThreshold; + } + } + return false; + }; + _proto._autoScrollToPage = function _autoScrollToPage() { + var bounceBackStarted = this._startBounceBackIfNeeded(); + if (bounceBackStarted) { + var bounceBackAmount = this._getHowMuchOutOfBoundary(); + this._clampDelta(bounceBackAmount); + if (bounceBackAmount.x > 0 || bounceBackAmount.y < 0) { + this._curPageIdx = this._pages.length === 0 ? 0 : this._pages.length - 1; + } + if (bounceBackAmount.x < 0 || bounceBackAmount.y > 0) { + this._curPageIdx = 0; + } + if (this.indicator) { + this.indicator._changedState(); + } + } else { + var moveOffset = new Vec2(); + Vec2.subtract(moveOffset, this._touchBeganPosition, this._touchEndPosition); + var index = this._curPageIdx; + var nextIndex = index + this._getDragDirection(moveOffset); + var timeInSecond = this.pageTurningSpeed * Math.abs(index - nextIndex); + if (nextIndex < this._pages.length) { + if (this._isScrollable(moveOffset, index, nextIndex)) { + this.scrollToPage(nextIndex, timeInSecond); + return; + } else { + var touchMoveVelocity = this._calculateTouchMoveVelocity(); + if (this._isQuicklyScrollable(touchMoveVelocity)) { + this.scrollToPage(nextIndex, timeInSecond); + return; + } + } + } + this.scrollToPage(index, timeInSecond); + } + }; + _createClass(PageView, [{ + key: "sizeMode", + get: function get() { + return this._sizeMode; + }, + set: function set(value) { + if (this._sizeMode === value) { + return; + } + this._sizeMode = value; + this._syncSizeMode(); + } + }, { + key: "direction", + get: function get() { + return this._direction; + }, + set: function set(value) { + if (this._direction === value) { + return; + } + this._direction = value; + this._syncScrollDirection(); + } + }, { + key: "scrollThreshold", + get: function get() { + return this._scrollThreshold; + }, + set: function set(value) { + if (this._scrollThreshold === value) { + return; + } + this._scrollThreshold = value; + } + }, { + key: "pageTurningEventTiming", + get: function get() { + return this._pageTurningEventTiming; + }, + set: function set(value) { + if (this._pageTurningEventTiming === value) { + return; + } + this._pageTurningEventTiming = value; + } + }, { + key: "indicator", + get: function get() { + return this._indicator; + }, + set: function set(value) { + if (this._indicator === value) { + return; + } + this._indicator = value; + if (this.indicator) { + this.indicator.setPageView(this); + } + } + }, { + key: "curPageIdx", + get: function get() { + return this._curPageIdx; + } + }, { + key: "verticalScrollBar", + get: function get() { + return _ScrollView.prototype.verticalScrollBar; + }, + set: function set(value) { + this.verticalScrollBar = value; + } + }, { + key: "horizontalScrollBar", + get: function get() { + return _ScrollView.prototype.horizontalScrollBar; + }, + set: function set(value) { + this.horizontalScrollBar = value; + } + }]); + return PageView; + }(ScrollView), _class3$2.SizeMode = SizeMode, _class3$2.Direction = Direction, _class3$2.EventType = extendsEnum(EventType$2, EventType$4), _class3$2), (_applyDecoratedDescriptor(_class2$5.prototype, "sizeMode", [_dec3$5], Object.getOwnPropertyDescriptor(_class2$5.prototype, "sizeMode"), _class2$5.prototype), _applyDecoratedDescriptor(_class2$5.prototype, "direction", [_dec4$2], Object.getOwnPropertyDescriptor(_class2$5.prototype, "direction"), _class2$5.prototype), _applyDecoratedDescriptor(_class2$5.prototype, "indicator", [_dec5$2], Object.getOwnPropertyDescriptor(_class2$5.prototype, "indicator"), _class2$5.prototype), _initializer$5 = applyDecoratedInitializer(_class2$5.prototype, "autoPageTurningThreshold", [serializable$9], function () { + return 100; + }), _applyDecoratedDescriptor(_class2$5.prototype, "verticalScrollBar", [_dec6$1, override$1], Object.getOwnPropertyDescriptor(_class2$5.prototype, "verticalScrollBar"), _class2$5.prototype), _applyDecoratedDescriptor(_class2$5.prototype, "horizontalScrollBar", [_dec7, override$1], Object.getOwnPropertyDescriptor(_class2$5.prototype, "horizontalScrollBar"), _class2$5.prototype), _initializer2$4 = applyDecoratedInitializer(_class2$5.prototype, "horizontal", [override$1, serializable$9], function () { + return true; + }), _initializer3$2 = applyDecoratedInitializer(_class2$5.prototype, "vertical", [override$1, serializable$9], function () { + return true; + }), _initializer4$2 = applyDecoratedInitializer(_class2$5.prototype, "cancelInnerEvents", [override$1, serializable$9], function () { + return true; + }), _initializer5$2 = applyDecoratedInitializer(_class2$5.prototype, "scrollEvents", [_dec8, serializable$9, override$1], function () { + return []; + }), _initializer6$1 = applyDecoratedInitializer(_class2$5.prototype, "pageTurningSpeed", [serializable$9], function () { + return 0.3; + }), _initializer7$1 = applyDecoratedInitializer(_class2$5.prototype, "pageEvents", [_dec9, serializable$9], function () { + return []; + }), _initializer8$1 = applyDecoratedInitializer(_class2$5.prototype, "_sizeMode", [serializable$9], function () { + return SizeMode.Unified; + }), _initializer9$1 = applyDecoratedInitializer(_class2$5.prototype, "_direction", [serializable$9], function () { + return Direction.Horizontal; + }), _initializer10$1 = applyDecoratedInitializer(_class2$5.prototype, "_scrollThreshold", [serializable$9], function () { + return 0.5; + }), _initializer11$1 = applyDecoratedInitializer(_class2$5.prototype, "_pageTurningEventTiming", [serializable$9], function () { + return 0.1; + }), _initializer12$1 = applyDecoratedInitializer(_class2$5.prototype, "_indicator", [serializable$9], function () { + return null; + })), _class2$5)) || _class$8) || _class$8)); + legacyCC.PageView = PageView; + + var _tempPos = new Vec3(); + var _defaultAnchor = new Vec2(); + var tInverseTranslate = new Vec2(); + var tInverseScale = new Vec2(1, 1); + var _tempVec2_1 = new Vec2(); + var _tempVec2_2 = new Vec2(); + function align(node, widget) { + if (widget._hadAlignOnce) return; + if (widget.alignMode === AlignMode.ONCE) { + widget._hadAlignOnce = true; + } + var hasTarget = widget.target; + var target; + var inverseTranslate = tInverseTranslate; + var inverseScale = tInverseScale; + if (hasTarget) { + target = hasTarget; + computeInverseTransForTarget(node, target, inverseTranslate, inverseScale); + } else { + target = node.parent; + } + var targetSize = getReadonlyNodeSize(target); + var useGlobal = target instanceof Scene || !target.getComponent(UITransform); + var targetAnchor = useGlobal ? _defaultAnchor : target.getComponent(UITransform).anchorPoint; + var isRoot = useGlobal; + node.getPosition(_tempPos); + var uiTrans = node._uiProps.uiTransformComp; + var x = _tempPos.x; + var y = _tempPos.y; + var anchor = uiTrans.anchorPoint; + var scale = node.getScale(); + if (widget.alignFlags & AlignFlags.HORIZONTAL) { + var localLeft = 0; + var localRight = 0; + var targetWidth = targetSize.width; + if (isRoot) { + localLeft = visibleRect.left.x; + localRight = visibleRect.right.x; + } else { + localLeft = -targetAnchor.x * targetWidth; + localRight = localLeft + targetWidth; + } + localLeft += widget.isAbsoluteLeft ? widget.left : widget.left * targetWidth; + localRight -= widget.isAbsoluteRight ? widget.right : widget.right * targetWidth; + if (hasTarget) { + localLeft += inverseTranslate.x; + localLeft *= inverseScale.x; + localRight += inverseTranslate.x; + localRight *= inverseScale.x; + } + var width = 0; + var anchorX = anchor.x; + var scaleX = scale.x; + if (scaleX < 0) { + anchorX = 1.0 - anchorX; + scaleX = -scaleX; + } + if (widget.isStretchWidth) { + width = localRight - localLeft; + if (scaleX !== 0) { + uiTrans.width = width / scaleX; + } + x = localLeft + anchorX * width; + } else { + width = uiTrans.width * scaleX; + if (widget.isAlignHorizontalCenter) { + var localHorizontalCenter = widget.isAbsoluteHorizontalCenter ? widget.horizontalCenter : widget.horizontalCenter * targetWidth; + var targetCenter = (0.5 - targetAnchor.x) * targetSize.width; + if (hasTarget) { + localHorizontalCenter *= inverseScale.x; + targetCenter += inverseTranslate.x; + targetCenter *= inverseScale.x; + } + x = targetCenter + (anchorX - 0.5) * width + localHorizontalCenter; + } else if (widget.isAlignLeft) { + x = localLeft + anchorX * width; + } else { + x = localRight + (anchorX - 1) * width; + } + if (!approx(scaleX, 0, EPSILON$3)) { + width /= scaleX; + } else { + width = uiTrans.width; + } + } + widget._lastSize.width = width; + } + if (widget.alignFlags & AlignFlags.VERTICAL) { + var localTop = 0; + var localBottom = 0; + var targetHeight = targetSize.height; + if (isRoot) { + localBottom = visibleRect.bottom.y; + localTop = visibleRect.top.y; + } else { + localBottom = -targetAnchor.y * targetHeight; + localTop = localBottom + targetHeight; + } + localBottom += widget.isAbsoluteBottom ? widget.bottom : widget.bottom * targetHeight; + localTop -= widget.isAbsoluteTop ? widget.top : widget.top * targetHeight; + if (hasTarget) { + localBottom += inverseTranslate.y; + localBottom *= inverseScale.y; + localTop += inverseTranslate.y; + localTop *= inverseScale.y; + } + var height = 0; + var anchorY = anchor.y; + var scaleY = scale.y; + if (scaleY < 0) { + anchorY = 1.0 - anchorY; + scaleY = -scaleY; + } + if (widget.isStretchHeight) { + height = localTop - localBottom; + if (scaleY !== 0) { + uiTrans.height = height / scaleY; + } + y = localBottom + anchorY * height; + } else { + height = uiTrans.height * scaleY; + if (widget.isAlignVerticalCenter) { + var localVerticalCenter = widget.isAbsoluteVerticalCenter ? widget.verticalCenter : widget.verticalCenter * targetHeight; + var targetMiddle = (0.5 - targetAnchor.y) * targetSize.height; + if (hasTarget) { + localVerticalCenter *= inverseScale.y; + targetMiddle += inverseTranslate.y; + targetMiddle *= inverseScale.y; + } + y = targetMiddle + (anchorY - 0.5) * height + localVerticalCenter; + } else if (widget.isAlignBottom) { + y = localBottom + anchorY * height; + } else { + y = localTop + (anchorY - 1) * height; + } + if (!approx(scaleY, 0, EPSILON$3)) { + height /= scaleY; + } else { + height = uiTrans.height; + } + } + widget._lastSize.height = height; + } + node.setPosition(x, y, _tempPos.z); + Vec3.set(widget._lastPos, x, y, _tempPos.z); + } + function visitNode(node) { + var widget = node.getComponent(Widget); + if (widget && widget.enabled) { + if (!legacyCC.isValid(node, true)) { + return; + } + activeWidgets.push(widget); + } + var children = node.children; + for (var _iterator = _createForOfIteratorHelperLoose(children), _step; !(_step = _iterator()).done;) { + var child = _step.value; + if (child.active) { + visitNode(child); + } + } + } + function refreshScene() { + var scene = director.getScene(); + if (scene) { + widgetManager.isAligning = true; + if (widgetManager._nodesOrderDirty) { + activeWidgets.length = 0; + visitNode(scene); + widgetManager._nodesOrderDirty = false; + } + var widget = null; + var iterator = widgetManager._activeWidgetsIterator; + for (iterator.i = 0; iterator.i < activeWidgets.length; ++iterator.i) { + widget = activeWidgets[iterator.i]; + if (widget._dirty) { + align(widget.node, widget); + widget._dirty = false; + } + } + widgetManager.isAligning = false; + } + } + var activeWidgets = []; + function updateAlignment(node) { + var parent = node.parent; + if (parent && Node$1.isNode(parent)) { + updateAlignment(parent); + } + var widget = node.getComponent(Widget); + if (widget && parent) { + align(node, widget); + } + } + var widgetManager = exports('fy', legacyCC._widgetManager = { + isAligning: false, + _nodesOrderDirty: false, + _activeWidgetsIterator: new MutableForwardIterator(activeWidgets), + animationState: null, + init: function init() { + director.on(Director.EVENT_AFTER_SCENE_LAUNCH, refreshScene); + director.on(Director.EVENT_AFTER_UPDATE, refreshScene); + View.instance.on('design-resolution-changed', this.onResized, this); + { + var thisOnResized = this.onResized.bind(this); + View.instance.on('canvas-resize', thisOnResized); + screenAdapter.on('window-resize', thisOnResized); + } + }, + add: function add(widget) { + this._nodesOrderDirty = true; + }, + remove: function remove(widget) { + this._activeWidgetsIterator.remove(widget); + }, + onResized: function onResized() { + var scene = director.getScene(); + if (scene) { + this.refreshWidgetOnResized(scene); + } + }, + refreshWidgetOnResized: function refreshWidgetOnResized(node) { + var widget = Node$1.isNode(node) && node.getComponent(Widget); + if (widget && widget.enabled && (widget.alignMode === AlignMode.ON_WINDOW_RESIZE || widget.alignMode === AlignMode.ALWAYS)) { + widget.setDirty(); + } + var children = node.children; + for (var _iterator2 = _createForOfIteratorHelperLoose(children), _step2; !(_step2 = _iterator2()).done;) { + var child = _step2.value; + this.refreshWidgetOnResized(child); + } + }, + updateOffsetsToStayPut: function updateOffsetsToStayPut(widget, e) { + function i(t, c) { + return Math.abs(t - c) > 1e-10 ? c : t; + } + var widgetNode = widget.node; + var widgetParent = widgetNode.parent; + if (widgetParent) { + var zero = _tempVec2_1; + zero.set(0, 0); + var one = _tempVec2_2; + one.set(1, 1); + if (widget.target) { + widgetParent = widget.target; + computeInverseTransForTarget(widgetNode, widgetParent, zero, one); + } + if (!e) { + return; + } + var parentTrans = widgetParent._uiProps && widgetParent._uiProps.uiTransformComp; + var parentAP = parentTrans ? parentTrans.anchorPoint : _defaultAnchor; + var trans = widgetNode._uiProps.uiTransformComp; + var matchSize = getReadonlyNodeSize(widgetParent); + var myAP = trans.anchorPoint; + var pos = widgetNode.getPosition(); + var alignFlags = AlignFlags; + var widgetNodeScale = widgetNode.getScale(); + var temp = 0; + if (e & alignFlags.LEFT) { + var l = -parentAP.x * matchSize.width; + l += zero.x; + l *= one.x; + temp = pos.x - myAP.x * trans.width * Math.abs(widgetNodeScale.x) - l; + if (!widget.isAbsoluteLeft) { + temp /= matchSize.width; + } + temp /= one.x; + widget.left = i(widget.left, temp); + } + if (e & alignFlags.RIGHT) { + var r = (1 - parentAP.x) * matchSize.width; + r += zero.x; + temp = (r *= one.x) - (pos.x + (1 - myAP.x) * trans.width * Math.abs(widgetNodeScale.x)); + if (!widget.isAbsoluteRight) { + temp /= matchSize.width; + } + temp /= one.x; + widget.right = i(widget.right, temp); + } + if (e & alignFlags.TOP) { + var t = (1 - parentAP.y) * matchSize.height; + t += zero.y; + temp = (t *= one.y) - (pos.y + (1 - myAP.y) * trans.height * Math.abs(widgetNodeScale.y)); + if (!widget.isAbsoluteTop) { + temp /= matchSize.height; + } + temp /= one.y; + widget.top = i(widget.top, temp); + } + if (e & alignFlags.BOT) { + var b = -parentAP.y * matchSize.height; + b += zero.y; + b *= one.y; + temp = pos.y - myAP.y * trans.height * Math.abs(widgetNodeScale.y) - b; + if (!widget.isAbsoluteBottom) { + temp /= matchSize.height; + } + temp /= one.y; + widget.bottom = i(widget.bottom, temp); + } + } + }, + updateAlignment: updateAlignment, + AlignMode: AlignMode, + AlignFlags: AlignFlags + }); + director.on(Director.EVENT_INIT, function () { + widgetManager.init(); + }); + + var _dec$7, _dec2$4, _dec3$4, _class$7; + var SafeArea = exports('fu', (_dec$7 = ccclass$t('cc.SafeArea'), _dec2$4 = executionOrder$1(110), _dec3$4 = requireComponent(Widget), _dec$7(_class$7 = _dec2$4(_class$7 = _dec3$4(_class$7 = function (_Component) { + _inheritsLoose(SafeArea, _Component); + function SafeArea() { + return _Component.apply(this, arguments) || this; + } + var _proto = SafeArea.prototype; + _proto.onEnable = function onEnable() { + this.updateArea(); + screenAdapter.on('window-resize', this.updateArea, this); + screenAdapter.on('orientation-change', this.updateArea, this); + }; + _proto.onDisable = function onDisable() { + screenAdapter.off('window-resize', this.updateArea, this); + screenAdapter.off('orientation-change', this.updateArea, this); + }; + _proto.updateArea = function updateArea() { + var widget = this.node.getComponent(Widget); + var uiTransComp = this.node.getComponent(UITransform); + if (!widget || !uiTransComp) { + return; + } + widget.updateAlignment(); + var lastPos = this.node.position.clone(); + var lastAnchorPoint = uiTransComp.anchorPoint.clone(); + widget.isAlignTop = widget.isAlignBottom = widget.isAlignLeft = widget.isAlignRight = true; + var visibleSize = view.getVisibleSize(); + var screenWidth = visibleSize.width; + var screenHeight = visibleSize.height; + var safeArea = sys.getSafeAreaRect(); + widget.top = screenHeight - safeArea.y - safeArea.height; + widget.bottom = safeArea.y; + widget.left = safeArea.x; + widget.right = screenWidth - safeArea.x - safeArea.width; + widget.updateAlignment(); + var curPos = this.node.position.clone(); + var anchorX = lastAnchorPoint.x - (curPos.x - lastPos.x) / uiTransComp.width; + var anchorY = lastAnchorPoint.y - (curPos.y - lastPos.y) / uiTransComp.height; + uiTransComp.setAnchorPoint(anchorX, anchorY); + widgetManager.add(widget); + }; + return SafeArea; + }(Component)) || _class$7) || _class$7) || _class$7)); + legacyCC.SafeArea = SafeArea; + + var _dec$6, _dec2$3, _dec3$3, _dec4$1, _dec5$1, _class$6, _class2$4, _initializer$4, _initializer2$3, _initializer3$1, _initializer4$1, _initializer5$1; + var UICoordinateTracker = exports('fv', (_dec$6 = ccclass$t('cc.UICoordinateTracker'), _dec2$3 = executionOrder$1(110), _dec3$3 = type$8(Node$1), _dec4$1 = type$8(Camera), _dec5$1 = type$8([EventHandler]), _dec$6(_class$6 = _dec2$3(_class$6 = (_class2$4 = function (_Component) { + _inheritsLoose(UICoordinateTracker, _Component); + function UICoordinateTracker() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this.syncEvents = _initializer$4 && _initializer$4(); + _this._target = _initializer2$3 && _initializer2$3(); + _this._camera = _initializer3$1 && _initializer3$1(); + _this._useScale = _initializer4$1 && _initializer4$1(); + _this._distance = _initializer5$1 && _initializer5$1(); + _this._transformPos = new Vec3(); + _this._viewPos = new Vec3(); + _this._canMove = true; + _this._lastWPos = new Vec3(); + _this._lastCameraPos = new Vec3(); + return _this; + } + var _proto = UICoordinateTracker.prototype; + _proto.onEnable = function onEnable() { + this._checkCanMove(); + }; + _proto.update = function update() { + var wPos = this.node.worldPosition; + var camera = this._camera; + if (!this._canMove || !camera || !camera.camera || this._lastWPos.equals(wPos) && this._lastCameraPos.equals(camera.node.worldPosition)) { + return; + } + this._lastWPos.set(wPos); + this._lastCameraPos.set(camera.node.worldPosition); + camera.camera.update(); + camera.convertToUINode(wPos, this._target, this._transformPos); + if (this._useScale) { + Vec3.transformMat4(this._viewPos, this.node.worldPosition, camera.camera.matView); + } + if (this.syncEvents.length > 0) { + var data = this._distance / Math.abs(this._viewPos.z); + EventHandler.emitEvents(this.syncEvents, this._transformPos, data); + } + }; + _proto._checkCanMove = function _checkCanMove() { + this._canMove = !!(this._camera && this._target); + }; + _createClass(UICoordinateTracker, [{ + key: "target", + get: function get() { + return this._target; + }, + set: function set(value) { + if (this._target === value) { + return; + } + this._target = value; + this._checkCanMove(); + } + }, { + key: "camera", + get: function get() { + return this._camera; + }, + set: function set(value) { + if (this._camera === value) { + return; + } + this._camera = value; + this._checkCanMove(); + } + }, { + key: "useScale", + get: function get() { + return this._useScale; + }, + set: function set(value) { + if (this._useScale === value) { + return; + } + this._useScale = value; + } + }, { + key: "distance", + get: function get() { + return this._distance; + }, + set: function set(value) { + if (this._distance === value) { + return; + } + this._distance = value; + } + }]); + return UICoordinateTracker; + }(Component), (_applyDecoratedDescriptor(_class2$4.prototype, "target", [_dec3$3], Object.getOwnPropertyDescriptor(_class2$4.prototype, "target"), _class2$4.prototype), _applyDecoratedDescriptor(_class2$4.prototype, "camera", [_dec4$1], Object.getOwnPropertyDescriptor(_class2$4.prototype, "camera"), _class2$4.prototype), _initializer$4 = applyDecoratedInitializer(_class2$4.prototype, "syncEvents", [_dec5$1, serializable$9], function () { + return []; + }), _initializer2$3 = applyDecoratedInitializer(_class2$4.prototype, "_target", [serializable$9], function () { + return null; + }), _initializer3$1 = applyDecoratedInitializer(_class2$4.prototype, "_camera", [serializable$9], function () { + return null; + }), _initializer4$1 = applyDecoratedInitializer(_class2$4.prototype, "_useScale", [serializable$9], function () { + return true; + }), _initializer5$1 = applyDecoratedInitializer(_class2$4.prototype, "_distance", [serializable$9], function () { + return 1; + })), _class2$4)) || _class$6) || _class$6)); + + var _dec$5, _class$5; + var BlockEvents = [NodeEventType.TOUCH_START, NodeEventType.TOUCH_END, NodeEventType.TOUCH_MOVE, NodeEventType.MOUSE_DOWN, NodeEventType.MOUSE_MOVE, NodeEventType.MOUSE_UP, NodeEventType.MOUSE_ENTER, NodeEventType.MOUSE_LEAVE, NodeEventType.MOUSE_WHEEL]; + function stopPropagation(event) { + event.propagationStopped = true; + } + var BlockInputEvents = exports('fw', (_dec$5 = ccclass$t('cc.BlockInputEvents'), _dec$5(_class$5 = function (_Component) { + _inheritsLoose(BlockInputEvents, _Component); + function BlockInputEvents() { + return _Component.apply(this, arguments) || this; + } + var _proto = BlockInputEvents.prototype; + _proto.onEnable = function onEnable() { + for (var i = 0; i < BlockEvents.length; i++) { + this.node.on(BlockEvents[i], stopPropagation, this); + } + }; + _proto.onDisable = function onDisable() { + for (var i = 0; i < BlockEvents.length; i++) { + this.node.off(BlockEvents[i], stopPropagation, this); + } + }; + return BlockInputEvents; + }(Component)) || _class$5)); + + var _dec$4, _dec2$2, _dec3$2, _class$4, _class2$3, _initializer$3, _initializer2$2; + var SubContextView = exports('fx', (_dec$4 = ccclass$t('cc.SubContextView'), _dec2$2 = executionOrder$1(110), _dec3$2 = requireComponent(UITransform), _dec$4(_class$4 = _dec2$2(_class$4 = _dec3$2(_class$4 = (_class2$3 = function (_Component) { + _inheritsLoose(SubContextView, _Component); + function SubContextView() { + var _this; + _this = _Component.call(this) || this; + _this._fps = _initializer$3 && _initializer$3(); + _this._sprite = void 0; + _this._imageAsset = void 0; + _this._texture = void 0; + _this._updatedTime = 0; + _this._updateInterval = 0; + _this._openDataContext = void 0; + _this._content = void 0; + _this._designResolutionSize = _initializer2$2 && _initializer2$2(); + _this._content = new Node$1('content'); + _this._content.hideFlags |= CCObject.Flags.DontSave | CCObject.Flags.HideInHierarchy; + _this._sprite = null; + _this._imageAsset = new ImageAsset(); + _this._openDataContext = null; + _this._updatedTime = performance.now(); + _this._texture = new Texture2D(); + return _this; + } + var _proto = SubContextView.prototype; + _proto.onLoad = function onLoad() { + if (minigame.getOpenDataContext) { + this._updateInterval = 1000 / this._fps; + this._openDataContext = minigame.getOpenDataContext(); + this._initSharedCanvas(); + this._initContentNode(); + this._updateSubContextView(); + this._updateContentLayer(); + } else { + this.enabled = false; + } + }; + _proto.onEnable = function onEnable() { + this._registerNodeEvent(); + }; + _proto.onDisable = function onDisable() { + this._unregisterNodeEvent(); + }; + _proto._initSharedCanvas = function _initSharedCanvas() { + if (this._openDataContext) { + var sharedCanvas = this._openDataContext.canvas; + var designWidth = this._designResolutionSize.width; + var designHeight = this._designResolutionSize.height; + sharedCanvas.width = designWidth; + sharedCanvas.height = designHeight; + } + }; + _proto._initContentNode = function _initContentNode() { + if (this._openDataContext) { + var sharedCanvas = this._openDataContext.canvas; + var image = this._imageAsset; + image.reset(sharedCanvas); + this._texture.image = image; + this._texture.create(sharedCanvas.width, sharedCanvas.height); + this._sprite = this._content.getComponent(Sprite); + if (!this._sprite) { + this._sprite = this._content.addComponent(Sprite); + } + if (this._sprite.spriteFrame) { + this._sprite.spriteFrame.texture = this._texture; + } else { + var sp = new SpriteFrame(); + sp.texture = this._texture; + this._sprite.spriteFrame = sp; + } + this._content.parent = this.node; + } + }; + _proto._updateSubContextView = function _updateSubContextView() { + if (!this._openDataContext) { + return; + } + var nodeTrans = this.node.getComponent(UITransform); + var contentTrans = this._content.getComponent(UITransform); + var scaleX = nodeTrans.width / contentTrans.width; + var scaleY = nodeTrans.height / contentTrans.height; + var scale = scaleX > scaleY ? scaleY : scaleX; + contentTrans.width *= scale; + contentTrans.height *= scale; + var viewportRect = view.getViewportRect(); + var box = contentTrans.getBoundingBoxToWorld(); + var visibleSize = view.getVisibleSize(); + var dpr = screenAdapter.devicePixelRatio; + var x = (viewportRect.width * (box.x / visibleSize.width) + viewportRect.x) / dpr; + var y = (viewportRect.height * (box.y / visibleSize.height) + viewportRect.y) / dpr; + var width = viewportRect.width * (box.width / visibleSize.width) / dpr; + var height = viewportRect.height * (box.height / visibleSize.height) / dpr; + this._openDataContext.postMessage({ + fromEngine: true, + type: 'engine', + event: 'viewport', + x: x, + y: y, + width: width, + height: height + }); + }; + _proto._updateSubContextTexture = function _updateSubContextTexture() { + var img = this._imageAsset; + if (!img || !this._openDataContext) { + return; + } + if (img.width <= 0 || img.height <= 0) { + return; + } + var sharedCanvas = this._openDataContext.canvas; + img.reset(sharedCanvas); + if (sharedCanvas.width > img.width || sharedCanvas.height > img.height) { + this._texture.create(sharedCanvas.width, sharedCanvas.height); + } + this._texture.uploadData(sharedCanvas); + }; + _proto._registerNodeEvent = function _registerNodeEvent() { + this.node.on(NodeEventType.TRANSFORM_CHANGED, this._updateSubContextView, this); + this.node.on(NodeEventType.SIZE_CHANGED, this._updateSubContextView, this); + this.node.on(NodeEventType.LAYER_CHANGED, this._updateContentLayer, this); + }; + _proto._unregisterNodeEvent = function _unregisterNodeEvent() { + this.node.off(NodeEventType.TRANSFORM_CHANGED, this._updateSubContextView, this); + this.node.off(NodeEventType.SIZE_CHANGED, this._updateSubContextView, this); + this.node.off(NodeEventType.LAYER_CHANGED, this._updateContentLayer, this); + }; + _proto._updateContentLayer = function _updateContentLayer() { + this._content.layer = this.node.layer; + }; + _proto.update = function update(dt) { + var calledUpdateManually = dt === undefined; + if (calledUpdateManually) { + this._updateSubContextTexture(); + return; + } + var now = performance.now(); + var deltaTime = now - this._updatedTime; + if (deltaTime >= this._updateInterval) { + this._updatedTime += this._updateInterval; + this._updateSubContextTexture(); + } + }; + _proto.onDestroy = function onDestroy() { + this._content.destroy(); + this._texture.destroy(); + if (this._sprite) { + this._sprite.destroy(); + } + this._imageAsset.destroy(); + this._openDataContext = null; + }; + _createClass(SubContextView, [{ + key: "designResolutionSize", + get: function get() { + return this._designResolutionSize; + }, + set: function set(value) { + { + return; + } + } + }, { + key: "fps", + get: function get() { + return this._fps; + }, + set: function set(value) { + if (this._fps === value) { + return; + } + this._fps = value; + this._updateInterval = 1000 / value; + } + }]); + return SubContextView; + }(Component), (_initializer$3 = applyDecoratedInitializer(_class2$3.prototype, "_fps", [serializable$9], function () { + return 60; + }), _initializer2$2 = applyDecoratedInitializer(_class2$3.prototype, "_designResolutionSize", [serializable$9], function () { + return new Size$1(640, 960); + })), _class2$3)) || _class$4) || _class$4) || _class$4)); + legacyCC.SubContextView = SubContextView; + + deprecateModuleExportedName({ + ButtonComponent: { + newName: 'Button', + since: '1.2.0', + removed: false + }, + EditBoxComponent: { + newName: 'EditBox', + since: '1.2.0', + removed: false + }, + LayoutComponent: { + newName: 'Layout', + since: '1.2.0', + removed: false + }, + ProgressBarComponent: { + newName: 'ProgressBar', + since: '1.2.0', + removed: false + }, + ScrollViewComponent: { + newName: 'ScrollView', + since: '1.2.0', + removed: false + }, + ScrollBarComponent: { + newName: 'ScrollBar', + since: '1.2.0', + removed: false + }, + SliderComponent: { + newName: 'Slider', + since: '1.2.0', + removed: false + }, + ToggleComponent: { + newName: 'Toggle', + since: '1.2.0', + removed: false + }, + ToggleContainerComponent: { + newName: 'ToggleContainer', + since: '1.2.0', + removed: false + }, + WidgetComponent: { + newName: 'Widget', + since: '1.2.0', + removed: false + }, + PageViewComponent: { + newName: 'PageView', + since: '1.2.0', + removed: false + }, + PageViewIndicatorComponent: { + newName: 'PageViewIndicator', + since: '1.2.0', + removed: false + }, + SafeAreaComponent: { + newName: 'SafeArea', + since: '1.2.0', + removed: false + }, + UICoordinateTrackerComponent: { + newName: 'UICoordinateTracker', + since: '1.2.0', + removed: false + }, + BlockInputEventsComponent: { + newName: 'BlockInputEvents', + since: '1.2.0', + removed: false + } + }); + + var _dec$3, _class$3; + var UIReorderComponent = exports('fC', (_dec$3 = ccclass$t('cc.UIReorderComponent'), _dec$3(_class$3 = function UIReorderComponent() { + warnID(1408, 'UIReorderComponent'); + }) || _class$3)); + legacyCC.UIReorderComponent = UIReorderComponent; + legacyCC.ButtonComponent = Button; + setClassAlias(Button, 'cc.ButtonComponent'); + legacyCC.EditBoxComponent = EditBox; + setClassAlias(EditBox, 'cc.EditBoxComponent'); + legacyCC.LayoutComponent = Layout; + setClassAlias(Layout, 'cc.LayoutComponent'); + legacyCC.ProgressBarComponent = ProgressBar; + setClassAlias(ProgressBar, 'cc.ProgressBarComponent'); + legacyCC.ScrollViewComponent = ScrollView; + setClassAlias(ScrollView, 'cc.ScrollViewComponent'); + legacyCC.ScrollBarComponent = ScrollBar; + setClassAlias(ScrollBar, 'cc.ScrollBarComponent'); + legacyCC.SliderComponent = Slider; + setClassAlias(Slider, 'cc.SliderComponent'); + legacyCC.ToggleComponent = Toggle; + setClassAlias(Toggle, 'cc.ToggleComponent'); + legacyCC.ToggleContainerComponent = ToggleContainer; + setClassAlias(ToggleContainer, 'cc.ToggleContainerComponent'); + legacyCC.WidgetComponent = Widget; + setClassAlias(Widget, 'cc.WidgetComponent'); + legacyCC.PageViewComponent = PageView; + setClassAlias(PageView, 'cc.PageViewComponent'); + legacyCC.PageViewIndicatorComponent = PageViewIndicator; + setClassAlias(PageViewIndicator, 'cc.PageViewIndicatorComponent'); + legacyCC.SafeAreaComponent = SafeArea; + setClassAlias(SafeArea, 'cc.SafeAreaComponent'); + setClassAlias(UICoordinateTracker, 'cc.UICoordinateTrackerComponent'); + legacyCC.BlockInputEventsComponent = BlockInputEvents; + setClassAlias(BlockInputEvents, 'cc.BlockInputEventsComponent'); + removeProperty(View.prototype, 'View.prototype', [{ + name: 'isAntiAliasEnabled', + suggest: 'The API of Texture2d have been largely modified, no alternative' + }, { + name: 'enableAntiAlias', + suggest: 'The API of Texture2d have been largely modified, no alternative' + }]); + markAsWarning(View.prototype, 'View.prototype', [{ + name: 'adjustViewportMeta' + }, { + name: 'enableAutoFullScreen', + suggest: 'use screen.requestFullScreen() instead.' + }, { + name: 'isAutoFullScreenEnabled' + }, { + name: 'setCanvasSize', + suggest: 'setting size in CSS pixels is not recommended, please use screen.windowSize instead.' + }, { + name: 'getCanvasSize', + suggest: 'please use screen.windowSize instead.' + }, { + name: 'getFrameSize', + suggest: 'getting size in CSS pixels is not recommended, please use screen.windowSize instead.' + }, { + name: 'setFrameSize', + suggest: 'setting size in CSS pixels is not recommended, please use screen.windowSize instead.' + }, { + name: 'getDevicePixelRatio', + suggest: 'use screen.devicePixelRatio instead.' + }, { + name: 'convertToLocationInView' + }, { + name: 'enableRetina' + }, { + name: 'isRetinaEnabled' + }, { + name: 'setRealPixelResolution' + }]); + + var _dec$2, _class$2, _class2$2, _initializer$2; + var VideoClip = exports('fD', (_dec$2 = ccclass$t('cc.VideoClip'), _dec$2(_class$2 = (_class2$2 = function (_Asset) { + _inheritsLoose(VideoClip, _Asset); + function VideoClip() { + var _this; + _this = _Asset.call(this) || this; + _this._duration = _initializer$2 && _initializer$2(); + _this._video = null; + return _this; + } + _createClass(VideoClip, [{ + key: "_nativeAsset", + get: function get() { + return this._video; + }, + set: function set(clip) { + this._video = clip; + if (clip) { + this._duration = clip.duration; + } else { + this._duration = 0; + } + } + }]); + return VideoClip; + }(Asset), (_initializer$2 = applyDecoratedInitializer(_class2$2.prototype, "_duration", [serializable$9], function () { + return 0; + })), _class2$2)) || _class$2)); + + var ccdocument$2 = ccwindow.document; + function downloadVideo(url, options, onComplete) { + var video = ccdocument$2.createElement('video'); + var source = ccdocument$2.createElement('source'); + video.appendChild(source); + var req = new XMLHttpRequest(); + req.open('GET', url, true); + req.responseType = 'blob'; + req.onload = function onload() { + if (this.status === 200 || this.status === 0) { + source.src = URL.createObjectURL(this.response); + onComplete(null, video); + } else { + onComplete(new Error(req.status + "(no response)")); + } + }; + req.onerror = function onerror() { + var message = "load video failure - " + url; + log(message); + onComplete(new Error(message)); + }; + req.send(); + } + function createVideoClip(id, data, options, onComplete) { + var out = new VideoClip(); + out._nativeUrl = id; + out._nativeAsset = data; + onComplete(null, out); + } + downloader$1.register({ + '.mp4': downloadVideo, + '.avi': downloadVideo, + '.mov': downloadVideo, + '.mpg': downloadVideo, + '.mpeg': downloadVideo, + '.rm': downloadVideo, + '.rmvb': downloadVideo + }); + factory.register({ + '.mp4': createVideoClip, + '.avi': createVideoClip, + '.mov': createVideoClip, + '.mpg': createVideoClip, + '.mpeg': createVideoClip, + '.rm': createVideoClip, + '.rmvb': createVideoClip + }); + + var ResourceType = Enum({ + REMOTE: 0, + LOCAL: 1 + }); + var EventType$1; + (function (EventType) { + EventType["NONE"] = "none"; + EventType["PLAYING"] = "playing"; + EventType["PAUSED"] = "paused"; + EventType["STOPPED"] = "stopped"; + EventType["COMPLETED"] = "completed"; + EventType["META_LOADED"] = "meta-loaded"; + EventType["READY_TO_PLAY"] = "ready-to-play"; + EventType["ERROR"] = "error"; + EventType["CLICKED"] = "clicked"; + })(EventType$1 || (EventType$1 = {})); + var READY_STATE; + (function (READY_STATE) { + READY_STATE[READY_STATE["HAVE_NOTHING"] = 0] = "HAVE_NOTHING"; + READY_STATE[READY_STATE["HAVE_METADATA"] = 1] = "HAVE_METADATA"; + READY_STATE[READY_STATE["HAVE_CURRENT_DATA"] = 2] = "HAVE_CURRENT_DATA"; + READY_STATE[READY_STATE["HAVE_FUTURE_DATA"] = 3] = "HAVE_FUTURE_DATA"; + READY_STATE[READY_STATE["HAVE_ENOUGH_DATA"] = 4] = "HAVE_ENOUGH_DATA"; + })(READY_STATE || (READY_STATE = {})); + + var VideoPlayerImpl = function () { + function VideoPlayerImpl(component) { + var _this = this; + this._componentEventList = new Map(); + this._state = EventType$1.NONE; + this._video = null; + this._onInterruptedBegin = void 0; + this._onInterruptedEnd = void 0; + this._interrupted = false; + this._loaded = false; + this._loadedMeta = false; + this._ignorePause = false; + this._fullScreenOnAwake = false; + this._visible = true; + this._playing = false; + this._cachedCurrentTime = -1; + this._waitingFullscreen = false; + this._waitingPlay = false; + this._keepAspectRatio = false; + this._component = null; + this._uiTrans = null; + this._node = null; + this._stayOnBottom = false; + this._dirty = false; + this._forceUpdate = false; + this._w = 0; + this._h = 0; + this._m00 = 0; + this._m01 = 0; + this._m04 = 0; + this._m05 = 0; + this._m12 = 0; + this._m13 = 0; + this._component = component; + this._node = component.node; + this._uiTrans = component.node.getComponent(UITransform); + this._onInterruptedBegin = function () { + if (!_this.video || _this._state !== EventType$1.PLAYING) { + return; + } + _this.video.pause(); + _this._interrupted = true; + }; + this._onInterruptedEnd = function () { + if (!_this._interrupted || !_this.video) { + return; + } + _this.video.play(); + _this._interrupted = false; + }; + legacyCC.game.on(legacyCC.Game.EVENT_PAUSE, this._onInterruptedBegin); + legacyCC.game.on(legacyCC.Game.EVENT_RESUME, this._onInterruptedEnd); + } + var _proto = VideoPlayerImpl.prototype; + _proto.onLoadedMetadata = function onLoadedMetadata(e) { + this._loadedMeta = true; + this._forceUpdate = true; + if (this._visible) { + this.enable(); + } else { + this.disable(); + } + this.dispatchEvent(EventType$1.META_LOADED); + var video = e.target; + if (this._keepAspectRatio && video) { + this.syncUITransform(video.videoWidth, video.videoHeight); + } + this.delayedFullScreen(); + this.delayedPlay(); + }; + _proto.onCanPlay = function onCanPlay(e) { + this._loaded = true; + this.dispatchEvent(EventType$1.READY_TO_PLAY); + }; + _proto.onPlay = function onPlay(e) { + this._playing = true; + this.dispatchEvent(EventType$1.PLAYING); + }; + _proto.onPlaying = function onPlaying(e) { + this.dispatchEvent(EventType$1.PLAYING); + }; + _proto.onPause = function onPause(e) { + this._playing = false; + if (this._ignorePause) { + this._ignorePause = false; + return; + } + this.dispatchEvent(EventType$1.PAUSED); + }; + _proto.onStoped = function onStoped(e) { + this._playing = false; + this._ignorePause = false; + this.dispatchEvent(EventType$1.STOPPED); + }; + _proto.onEnded = function onEnded(e) { + this._playing = false; + this.dispatchEvent(EventType$1.COMPLETED); + }; + _proto.onClick = function onClick(e) { + this.dispatchEvent(EventType$1.CLICKED); + }; + _proto.onError = function onError(e) { + this.dispatchEvent(EventType$1.ERROR); + var video = e.target; + if (video && video.error) { + error("Error " + video.error.code + "; details: " + video.error.message); + } + }; + _proto.play = function play() { + if (this._loadedMeta || this._loaded) { + this.canPlay(); + } else { + this._waitingPlay = true; + } + }; + _proto.delayedPlay = function delayedPlay() { + if (this._waitingPlay) { + this.canPlay(); + this._waitingPlay = false; + } + }; + _proto.syncFullScreenOnAwake = function syncFullScreenOnAwake(enabled) { + this._fullScreenOnAwake = enabled; + if (this._loadedMeta || this._loaded) { + this.canFullScreen(enabled); + } else { + this._waitingFullscreen = true; + } + }; + _proto.delayedFullScreen = function delayedFullScreen() { + if (this._waitingFullscreen) { + this.canFullScreen(this._fullScreenOnAwake); + this._waitingFullscreen = false; + } + }; + _proto.dispatchEvent = function dispatchEvent(key) { + var callback = this._componentEventList.get(key); + if (callback) { + this._state = key; + callback.call(this); + } + }; + _proto.syncUITransform = function syncUITransform(width, height) { + if (this._uiTrans) { + this._uiTrans.width = width; + this._uiTrans.height = height; + } + }; + _proto.syncCurrentTime = function syncCurrentTime() { + if (!this.video) { + return; + } + if (this._cachedCurrentTime !== -1 && this.video.currentTime !== this._cachedCurrentTime) { + this.seekTo(this._cachedCurrentTime); + this._cachedCurrentTime = -1; + } + }; + _proto.destroy = function destroy() { + this.removeVideoPlayer(); + this._componentEventList.clear(); + legacyCC.game.off(legacyCC.Game.EVENT_PAUSE, this._onInterruptedBegin); + legacyCC.game.off(legacyCC.Game.EVENT_RESUME, this._onInterruptedEnd); + }; + _createClass(VideoPlayerImpl, [{ + key: "fullScreenOnAwake", + get: function get() { + return this._fullScreenOnAwake; + } + }, { + key: "loaded", + get: function get() { + return this._loaded; + } + }, { + key: "componentEventList", + get: function get() { + return this._componentEventList; + } + }, { + key: "video", + get: function get() { + return this._video; + } + }, { + key: "state", + get: function get() { + return this._state; + } + }, { + key: "isPlaying", + get: function get() { + return this._playing; + } + }, { + key: "UICamera", + get: function get() { + return director.root.batcher2D.getFirstRenderCamera(this._node); + } + }]); + return VideoPlayerImpl; + }(); + legacyCC.internal.VideoPlayerImpl = VideoPlayerImpl; + + var ccdocument$1 = ccwindow.document; + var MIN_ZINDEX = -Math.pow(2, 15); + var _mat4_temp$1 = mat4(); + var VideoPlayerImplWeb = function (_VideoPlayerImpl) { + _inheritsLoose(VideoPlayerImplWeb, _VideoPlayerImpl); + function VideoPlayerImplWeb(component) { + var _this; + _this = _VideoPlayerImpl.call(this, component) || this; + _this._eventList = new Map(); + _this._clearColorA = -1; + _this._clearFlag = void 0; + return _this; + } + var _proto = VideoPlayerImplWeb.prototype; + _proto.addListener = function addListener(type, handler) { + if (!this._video) { + return; + } + this._eventList.set(type, handler); + this._video.addEventListener(type, handler); + }; + _proto.removeAllListeners = function removeAllListeners() { + var _this2 = this; + this._eventList.forEach(function (handler, type) { + if (!_this2._video) { + return; + } + _this2._video.removeEventListener(type, handler); + }); + this._eventList.clear(); + }; + _proto.canPlay = function canPlay() { + var _this3 = this; + if (this.video) { + var promise = this.video.play(); + if (ccwindow.Promise && promise instanceof Promise) { + promise["catch"](function (error) {}).then(function () { + _this3.syncCurrentTime(); + }); + } + } + }; + _proto.pause = function pause() { + if (this.video) { + this.video.pause(); + this._cachedCurrentTime = this.video.currentTime; + } + }; + _proto.resume = function resume() { + this.play(); + }; + _proto.stop = function stop() { + var _this4 = this; + if (this.video) { + this._ignorePause = true; + this.video.currentTime = 0; + this.video.pause(); + this._cachedCurrentTime = 0; + setTimeout(function () { + _this4._ignorePause = false; + _this4.dispatchEvent(EventType$1.STOPPED); + }, 0); + } + }; + _proto.syncClip = function syncClip(clip) { + this.removeVideoPlayer(); + if (!clip) { + return; + } + this.createVideoPlayer(clip.nativeUrl); + }; + _proto.syncURL = function syncURL(url) { + this.removeVideoPlayer(); + if (!url) { + return; + } + this.createVideoPlayer(url); + }; + _proto.syncPlaybackRate = function syncPlaybackRate(val) { + if (sys.browserType === BrowserType.UC) { + warn('playbackRate is not supported by the uc mobile browser.'); + return; + } + if (this.video) { + this.video.playbackRate = val; + } + }; + _proto.syncVolume = function syncVolume(val) { + if (this.video) { + this.video.volume = val; + } + }; + _proto.syncMute = function syncMute(enabled) { + if (this.video) { + this.video.muted = enabled; + } + }; + _proto.syncLoop = function syncLoop(enabled) { + if (this.video) { + this.video.loop = enabled; + } + }; + _proto.getDuration = function getDuration() { + if (!this.video) { + return 0; + } + return this.video.duration; + }; + _proto.getCurrentTime = function getCurrentTime() { + if (this.video) { + return this.video.currentTime; + } + return -1; + }; + _proto.seekTo = function seekTo(val) { + if (this.video) { + this.video.currentTime = val; + this._cachedCurrentTime = this.video.currentTime; + } + }; + _proto.canFullScreen = function canFullScreen(enabled) { + var _this5 = this; + var video = this._video; + if (!video || video.readyState !== READY_STATE.HAVE_ENOUGH_DATA) { + return; + } + if (sys.os === OS.IOS && sys.isBrowser) { + if (enabled) { + if (video.webkitEnterFullscreen) { + video.webkitEnterFullscreen(); + } + } else if (video.webkitExitFullscreen) { + video.webkitExitFullscreen(); + } + this._fullScreenOnAwake = video.webkitDisplayingFullscreen; + return; + } + if (!screen.supportsFullScreen) { + this._fullScreenOnAwake = enabled; + this._forceUpdate = true; + this.syncMatrix(); + return; + } + if (enabled) { + if (sys.browserType === BrowserType.IE) { + video.style.transform = ''; + } + video.setAttribute('x5-video-player-fullscreen', 'true'); + screen.requestFullScreen(video, function (document) { + var fullscreenElement = sys.browserType === BrowserType.IE ? document.msFullscreenElement : document.fullscreenElement; + _this5._fullScreenOnAwake = fullscreenElement === video; + }, function () { + _this5._fullScreenOnAwake = false; + }); + } else { + video.removeAttribute('x5-video-player-fullscreen'); + screen.exitFullScreen(); + } + }; + _proto.syncStayOnBottom = function syncStayOnBottom(enabled) { + if (this._video) { + this._video.style['z-index'] = enabled ? MIN_ZINDEX : 0; + this._stayOnBottom = enabled; + } + this._dirty = true; + }; + _proto.syncKeepAspectRatio = function syncKeepAspectRatio(enabled) { + this._keepAspectRatio = enabled; + if (enabled && this._loadedMeta && this._video) { + this.syncUITransform(this._video.videoWidth, this._video.videoHeight); + } + }; + _proto.removeVideoPlayer = function removeVideoPlayer() { + var video = this._video; + if (video) { + if (contains$1(game.container, video)) { + game.container.removeChild(video); + this.removeAllListeners(); + } + } + this._cachedCurrentTime = 0; + this._playing = false; + this._loaded = false; + this._loadedMeta = false; + this._video = null; + }; + _proto.createVideoPlayer = function createVideoPlayer(url) { + var video = this._video = ccdocument$1.createElement('video'); + video.className = 'cocosVideo'; + video.style.visibility = 'hidden'; + video.style.position = 'absolute'; + video.style.bottom = '0px'; + video.style.left = '0px'; + video.style['transform-origin'] = '0px 100% 0px'; + video.style['-webkit-transform-origin'] = '0px 100% 0px'; + video.setAttribute('preload', 'auto'); + video.setAttribute('webkit-playsinline', ''); + video.setAttribute('x5-playsinline', ''); + video.setAttribute('playsinline', ''); + this._bindDomEvent(); + game.container.appendChild(video); + var source = ccdocument$1.createElement('source'); + video.appendChild(source); + source.src = url; + }; + _proto._bindDomEvent = function _bindDomEvent() { + this._video; + this.addListener('loadedmetadata', this.onLoadedMetadata.bind(this)); + this.addListener('canplay', this.onCanPlay.bind(this)); + this.addListener('canplaythrough', this.onCanPlay.bind(this)); + this.addListener('play', this.onPlay.bind(this)); + this.addListener('playing', this.onPlaying.bind(this)); + this.addListener('pause', this.onPause.bind(this)); + this.addListener('click', this.onClick.bind(this)); + this.addListener('ended', this.onEnded.bind(this)); + this.addListener('error', this.onError.bind(this)); + }; + _proto.onCanPlay = function onCanPlay(e) { + var video = e.target; + if (this._loaded && video) { + return; + } + switch (video.readyState) { + case READY_STATE.HAVE_METADATA: + case READY_STATE.HAVE_ENOUGH_DATA: + { + _VideoPlayerImpl.prototype.onCanPlay.call(this, e); + break; + } + } + }; + _proto.enable = function enable() { + if (this._video) { + this._visible = true; + if (this._video.style.visibility === 'visible') { + return; + } + this._video.style.visibility = 'visible'; + } + }; + _proto.disable = function disable(noPause) { + if (this._video) { + if (!noPause && this._playing) { + this._video.pause(); + } + this._visible = false; + if (this._video.style.visibility === 'hidden') { + return; + } + this._video.style.visibility = 'hidden'; + } + }; + _proto.syncMatrix = function syncMatrix() { + if (!this._video || !this._visible || !this._component) return; + var camera = this.UICamera; + if (!camera) { + return; + } + if (screen.fullScreen()) { + return; + } + if (this._dirty) { + this._dirty = false; + if (this._stayOnBottom) { + this._clearColorA = camera.clearColor.w; + this._clearFlag = camera.clearFlag; + camera.clearColor.w = 0; + camera.clearFlag = ClearFlagBit.ALL; + } else if (this._clearFlag) { + camera.clearColor.w = this._clearColorA; + camera.clearFlag = this._clearFlag; + this._clearColorA = -1; + this._clearFlag = null; + } + } + this._component.node.getWorldMatrix(_mat4_temp$1); + camera.update(true); + camera.worldMatrixToScreen(_mat4_temp$1, _mat4_temp$1, game.canvas.width, game.canvas.height); + var width = 0; + var height = 0; + if (this._fullScreenOnAwake) { + width = visibleRect.width; + height = visibleRect.height; + } else { + width = this._uiTrans.contentSize.width; + height = this._uiTrans.contentSize.height; + } + if (!this._forceUpdate && this._m00 === _mat4_temp$1.m00 && this._m01 === _mat4_temp$1.m01 && this._m04 === _mat4_temp$1.m04 && this._m05 === _mat4_temp$1.m05 && this._m12 === _mat4_temp$1.m12 && this._m13 === _mat4_temp$1.m13 && this._w === width && this._h === height) { + return; + } + this._m00 = _mat4_temp$1.m00; + this._m01 = _mat4_temp$1.m01; + this._m04 = _mat4_temp$1.m04; + this._m05 = _mat4_temp$1.m05; + this._m12 = _mat4_temp$1.m12; + this._m13 = _mat4_temp$1.m13; + this._w = width; + this._h = height; + var dpr = screenAdapter.devicePixelRatio; + var scaleX = 1 / dpr; + var scaleY = 1 / dpr; + var container = game.container; + var sx = _mat4_temp$1.m00 * scaleX; + var b = _mat4_temp$1.m01; + var c = _mat4_temp$1.m04; + var sy = _mat4_temp$1.m05 * scaleY; + this._video.style.width = this._w + "px"; + this._video.style.height = this._h + "px"; + if (sys.browserType !== BrowserType.MOBILE_QQ) { + this._video.style.objectFit = this._keepAspectRatio ? 'none' : 'fill'; + } else { + warn('keepAspectRatio is not supported by the qq mobile browser.'); + } + var w = this._w * scaleX; + var h = this._h * scaleY; + var _anchorPoint = this._uiTrans.anchorPoint, + x = _anchorPoint.x, + y = _anchorPoint.y; + var appx = w * _mat4_temp$1.m00 * x; + var appy = h * _mat4_temp$1.m05 * y; + var offsetX = container && container.style.paddingLeft ? parseInt(container.style.paddingLeft) : 0; + var offsetY = container && container.style.paddingBottom ? parseInt(container.style.paddingBottom) : 0; + var tx = _mat4_temp$1.m12 * scaleX - appx + offsetX; + var ty = _mat4_temp$1.m13 * scaleY - appy + offsetY; + var matrix = "matrix(" + sx + "," + -b + "," + -c + "," + sy + "," + tx + "," + -ty + ")"; + this._video.style.transform = matrix; + this._video.style['-webkit-transform'] = matrix; + if (sys.browserType !== BrowserType.IE) { + this._forceUpdate = false; + } + }; + return VideoPlayerImplWeb; + }(VideoPlayerImpl); + + var VideoPlayerImplManager = function () { + function VideoPlayerImplManager() {} + VideoPlayerImplManager.getImpl = function getImpl(component) { + return new VideoPlayerImplWeb(component); + }; + return VideoPlayerImplManager; + }(); + legacyCC.internal.VideoPlayerImplManager = VideoPlayerImplManager; + + var _dec$1, _dec2$1, _dec3$1, _dec4, _dec5, _dec6, _class$1, _class2$1, _initializer$1, _initializer2$1, _initializer3, _initializer4, _initializer5, _initializer6, _initializer7, _initializer8, _initializer9, _initializer10, _initializer11, _initializer12, _class3$1; + var VideoPlayer = exports('fE', (_dec$1 = ccclass$t('cc.VideoPlayer'), _dec2$1 = requireComponent(UITransform), _dec3$1 = type$8(VideoClip), _dec4 = type$8(ResourceType), _dec5 = type$8(VideoClip), _dec6 = type$8([EventHandler]), _dec$1(_class$1 = _dec2$1(_class$1 = (_class2$1 = (_class3$1 = function (_Component) { + _inheritsLoose(VideoPlayer, _Component); + function VideoPlayer() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this._resourceType = _initializer$1 && _initializer$1(); + _this._remoteURL = _initializer2$1 && _initializer2$1(); + _this._clip = _initializer3 && _initializer3(); + _this._playOnAwake = _initializer4 && _initializer4(); + _this._volume = _initializer5 && _initializer5(); + _this._mute = _initializer6 && _initializer6(); + _this._playbackRate = _initializer7 && _initializer7(); + _this._loop = _initializer8 && _initializer8(); + _this._fullScreenOnAwake = _initializer9 && _initializer9(); + _this._stayOnBottom = _initializer10 && _initializer10(); + _this._keepAspectRatio = _initializer11 && _initializer11(); + _this._impl = null; + _this._cachedCurrentTime = 0; + _this.videoPlayerEvent = _initializer12 && _initializer12(); + return _this; + } + var _proto = VideoPlayer.prototype; + _proto.syncSource = function syncSource() { + if (!this._impl) { + return; + } + if (this._resourceType === ResourceType.REMOTE) { + this._impl.syncURL(this._remoteURL); + } else { + this._impl.syncClip(this._clip); + } + this._cachedCurrentTime = 0; + this._impl.syncLoop(this._loop); + this._impl.syncVolume(this._volume); + this._impl.syncMute(this._mute); + this._impl.seekTo(this._cachedCurrentTime); + this._impl.syncPlaybackRate(this._playbackRate); + this._impl.syncStayOnBottom(this._stayOnBottom); + this._impl.syncKeepAspectRatio(this._keepAspectRatio); + this._impl.syncFullScreenOnAwake(this._fullScreenOnAwake); + }; + _proto.__preload = function __preload() { + this._impl = VideoPlayerImplManager.getImpl(this); + this.syncSource(); + this._impl.componentEventList.set(EventType$1.META_LOADED, this.onMetaLoaded.bind(this)); + this._impl.componentEventList.set(EventType$1.READY_TO_PLAY, this.onReadyToPlay.bind(this)); + this._impl.componentEventList.set(EventType$1.PLAYING, this.onPlaying.bind(this)); + this._impl.componentEventList.set(EventType$1.PAUSED, this.onPaused.bind(this)); + this._impl.componentEventList.set(EventType$1.STOPPED, this.onStopped.bind(this)); + this._impl.componentEventList.set(EventType$1.COMPLETED, this.onCompleted.bind(this)); + this._impl.componentEventList.set(EventType$1.ERROR, this.onError.bind(this)); + this._impl.componentEventList.set(EventType$1.CLICKED, this.onClicked.bind(this)); + if (this._playOnAwake && this._impl.loaded) { + this.play(); + } + }; + _proto.onEnable = function onEnable() { + if (this._impl) { + this._impl.enable(); + } + }; + _proto.onDisable = function onDisable() { + if (this._impl) { + this._impl.disable(); + } + }; + _proto.onDestroy = function onDestroy() { + if (this._impl) { + this._impl.destroy(); + this._impl = null; + } + }; + _proto.update = function update(dt) { + if (this._impl) { + this._impl.syncMatrix(); + } + }; + _proto.onMetaLoaded = function onMetaLoaded() { + EventHandler.emitEvents(this.videoPlayerEvent, this, EventType$1.META_LOADED); + this.node.emit('meta-loaded', this); + }; + _proto.onReadyToPlay = function onReadyToPlay() { + if (this._playOnAwake && !this.isPlaying) { + this.play(); + } + EventHandler.emitEvents(this.videoPlayerEvent, this, EventType$1.READY_TO_PLAY); + this.node.emit(EventType$1.READY_TO_PLAY, this); + }; + _proto.onPlaying = function onPlaying() { + EventHandler.emitEvents(this.videoPlayerEvent, this, EventType$1.PLAYING); + this.node.emit(EventType$1.PLAYING, this); + }; + _proto.onPaused = function onPaused() { + EventHandler.emitEvents(this.videoPlayerEvent, this, EventType$1.PAUSED); + this.node.emit(EventType$1.PAUSED, this); + }; + _proto.onStopped = function onStopped() { + EventHandler.emitEvents(this.videoPlayerEvent, this, EventType$1.STOPPED); + this.node.emit(EventType$1.STOPPED, this); + }; + _proto.onCompleted = function onCompleted() { + EventHandler.emitEvents(this.videoPlayerEvent, this, EventType$1.COMPLETED); + this.node.emit(EventType$1.COMPLETED, this); + }; + _proto.onError = function onError() { + EventHandler.emitEvents(this.videoPlayerEvent, this, EventType$1.ERROR); + this.node.emit(EventType$1.ERROR, this); + }; + _proto.onClicked = function onClicked() { + EventHandler.emitEvents(this.videoPlayerEvent, this, EventType$1.CLICKED); + this.node.emit(EventType$1.CLICKED, this); + }; + _proto.play = function play() { + if (this._impl) { + this._impl.play(); + } + }; + _proto.resume = function resume() { + if (this._impl) { + this._impl.resume(); + } + }; + _proto.pause = function pause() { + if (this._impl) { + this._impl.pause(); + } + }; + _proto.stop = function stop() { + if (this._impl) { + this._impl.stop(); + } + }; + _createClass(VideoPlayer, [{ + key: "resourceType", + get: function get() { + return this._resourceType; + }, + set: function set(val) { + if (this._resourceType !== val) { + this._resourceType = val; + this.syncSource(); + } + } + }, { + key: "remoteURL", + get: function get() { + return this._remoteURL; + }, + set: function set(val) { + if (this._remoteURL !== val) { + this._remoteURL = val; + this.syncSource(); + } + } + }, { + key: "clip", + get: function get() { + return this._clip; + }, + set: function set(val) { + if (this._clip !== val) { + this._clip = val; + this.syncSource(); + } + } + }, { + key: "playOnAwake", + get: function get() { + return this._playOnAwake; + }, + set: function set(value) { + this._playOnAwake = value; + } + }, { + key: "playbackRate", + get: function get() { + return this._playbackRate; + }, + set: function set(value) { + this._playbackRate = value; + if (this._impl) { + this._impl.syncPlaybackRate(value); + } + } + }, { + key: "volume", + get: function get() { + return this._volume; + }, + set: function set(value) { + this._volume = value; + if (this._impl) { + this._impl.syncVolume(value); + } + } + }, { + key: "mute", + get: function get() { + return this._mute; + }, + set: function set(value) { + this._mute = value; + if (this._impl) { + this._impl.syncMute(value); + } + } + }, { + key: "loop", + get: function get() { + return this._loop; + }, + set: function set(value) { + this._loop = value; + if (this._impl) { + this._impl.syncLoop(value); + } + } + }, { + key: "keepAspectRatio", + get: function get() { + return this._keepAspectRatio; + }, + set: function set(value) { + if (this._keepAspectRatio !== value) { + this._keepAspectRatio = value; + if (this._impl) { + this._impl.syncKeepAspectRatio(value); + } + } + } + }, { + key: "fullScreenOnAwake", + get: function get() { + { + if (this._impl) { + this._fullScreenOnAwake = this._impl.fullScreenOnAwake; + return this._fullScreenOnAwake; + } + } + return this._fullScreenOnAwake; + }, + set: function set(value) { + if (this._fullScreenOnAwake !== value) { + this._fullScreenOnAwake = value; + if (this._impl) { + this._impl.syncFullScreenOnAwake(value); + } + } + } + }, { + key: "stayOnBottom", + get: function get() { + return this._stayOnBottom; + }, + set: function set(value) { + if (this._stayOnBottom !== value) { + this._stayOnBottom = value; + if (this._impl) { + this._impl.syncStayOnBottom(value); + } + } + } + }, { + key: "nativeVideo", + get: function get() { + return this._impl && this._impl.video || null; + } + }, { + key: "currentTime", + get: function get() { + if (!this._impl) { + return this._cachedCurrentTime; + } + return this._impl.getCurrentTime(); + }, + set: function set(val) { + if (Number.isNaN(val)) { + warn("illegal video time! value:" + val); + return; + } + val = clamp$1(val, 0, this.duration); + this._cachedCurrentTime = val; + if (this._impl) { + this._impl.seekTo(val); + } + } + }, { + key: "duration", + get: function get() { + if (!this._impl) { + return 0; + } + return this._impl.getDuration(); + } + }, { + key: "state", + get: function get() { + if (!this._impl) { + return EventType$1.NONE; + } + return this._impl.state; + } + }, { + key: "isPlaying", + get: function get() { + if (!this._impl) { + return false; + } + return this._impl.isPlaying; + } + }]); + return VideoPlayer; + }(Component), _class3$1.EventType = EventType$1, _class3$1.ResourceType = ResourceType, _class3$1), (_initializer$1 = applyDecoratedInitializer(_class2$1.prototype, "_resourceType", [serializable$9], function () { + return ResourceType.LOCAL; + }), _initializer2$1 = applyDecoratedInitializer(_class2$1.prototype, "_remoteURL", [serializable$9], function () { + return ''; + }), _initializer3 = applyDecoratedInitializer(_class2$1.prototype, "_clip", [_dec3$1, serializable$9], function () { + return null; + }), _initializer4 = applyDecoratedInitializer(_class2$1.prototype, "_playOnAwake", [serializable$9], function () { + return true; + }), _initializer5 = applyDecoratedInitializer(_class2$1.prototype, "_volume", [serializable$9], function () { + return 1.0; + }), _initializer6 = applyDecoratedInitializer(_class2$1.prototype, "_mute", [serializable$9], function () { + return false; + }), _initializer7 = applyDecoratedInitializer(_class2$1.prototype, "_playbackRate", [serializable$9], function () { + return 1; + }), _initializer8 = applyDecoratedInitializer(_class2$1.prototype, "_loop", [serializable$9], function () { + return false; + }), _initializer9 = applyDecoratedInitializer(_class2$1.prototype, "_fullScreenOnAwake", [serializable$9], function () { + return false; + }), _initializer10 = applyDecoratedInitializer(_class2$1.prototype, "_stayOnBottom", [serializable$9], function () { + return false; + }), _initializer11 = applyDecoratedInitializer(_class2$1.prototype, "_keepAspectRatio", [serializable$9], function () { + return true; + }), _applyDecoratedDescriptor(_class2$1.prototype, "resourceType", [_dec4], Object.getOwnPropertyDescriptor(_class2$1.prototype, "resourceType"), _class2$1.prototype), _applyDecoratedDescriptor(_class2$1.prototype, "clip", [_dec5], Object.getOwnPropertyDescriptor(_class2$1.prototype, "clip"), _class2$1.prototype), _initializer12 = applyDecoratedInitializer(_class2$1.prototype, "videoPlayerEvent", [serializable$9, _dec6], function () { + return []; + })), _class2$1)) || _class$1) || _class$1)); + legacyCC.internal.VideoPlayer = VideoPlayer; + + replaceProperty(VideoPlayer.prototype, 'VideoPlayer.prototype', [{ + name: 'onPasued', + newName: 'onPaused' + }]); + + var EventType; + (function (EventType) { + EventType["NONE"] = "none"; + EventType["LOADING"] = "loading"; + EventType["LOADED"] = "loaded"; + EventType["ERROR"] = "error"; + })(EventType || (EventType = {})); + + var WebViewImpl = function () { + function WebViewImpl(component) { + this._componentEventList = new Map(); + this._state = EventType.NONE; + this._wrapper = void 0; + this._webview = null; + this._loaded = false; + this._forceUpdate = false; + this._component = null; + this._uiTrans = null; + this._node = null; + this._w = 0; + this._h = 0; + this._m00 = 0; + this._m01 = 0; + this._m04 = 0; + this._m05 = 0; + this._m12 = 0; + this._m13 = 0; + this._component = component; + this._node = component.node; + this._uiTrans = component.node.getComponent(UITransform); + this.reset(); + this.createWebView(); + } + var _proto = WebViewImpl.prototype; + _proto.reset = function reset() { + this._wrapper = null; + this._webview = null; + this._loaded = false; + this._w = 0; + this._h = 0; + this._m00 = 0; + this._m01 = 0; + this._m04 = 0; + this._m05 = 0; + this._m12 = 0; + this._m13 = 0; + this._state = EventType.NONE; + this._forceUpdate = false; + }; + _proto.dispatchEvent = function dispatchEvent(key) { + var callback = this._componentEventList.get(key); + if (callback) { + this._state = key; + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + callback.call(this, args); + } + }; + _proto.destroy = function destroy() { + this.removeWebView(); + this._wrapper = null; + this._webview = null; + this._loaded = false; + this._component = null; + this._uiTrans = null; + this._forceUpdate = false; + this._componentEventList.clear(); + }; + _createClass(WebViewImpl, [{ + key: "loaded", + get: function get() { + return this._loaded; + } + }, { + key: "componentEventList", + get: function get() { + return this._componentEventList; + } + }, { + key: "webview", + get: function get() { + return this._webview; + } + }, { + key: "state", + get: function get() { + return this._state; + } + }, { + key: "UICamera", + get: function get() { + return director.root.batcher2D.getFirstRenderCamera(this._node); + } + }]); + return WebViewImpl; + }(); + legacyCC.internal.WebViewImpl = WebViewImpl; + + var ccdocument = ccwindow.document; + var _mat4_temp = mat4(); + var WebViewImplWeb = function (_WebViewImpl) { + _inheritsLoose(WebViewImplWeb, _WebViewImpl); + function WebViewImplWeb(component) { + return _WebViewImpl.call(this, component) || this; + } + var _proto = WebViewImplWeb.prototype; + _proto._bindDomEvent = function _bindDomEvent() { + var _this = this; + if (!this.webview) { + return; + } + var onLoaded = function onLoaded(e) { + _this._forceUpdate = true; + _this.dispatchEvent(EventType.LOADED); + var iframe = e.target; + var body = iframe.contentDocument && iframe.contentDocument.body; + if (body && body.innerHTML.includes('404')) { + _this.dispatchEvent(EventType.ERROR, body.innerHTML); + } + }; + this.webview.addEventListener('load', onLoaded); + }; + _proto.loadURL = function loadURL(url) { + if (this.webview) { + this.webview.src = url; + this.dispatchEvent(EventType.LOADING); + } + }; + _proto.createWebView = function createWebView() { + var wrapper = ccdocument.createElement('div'); + this._wrapper = wrapper; + wrapper.id = 'webview-wrapper'; + wrapper.style['-webkit-overflow'] = 'auto'; + wrapper.style['-webkit-overflow-scrolling'] = 'touch'; + wrapper.style.position = 'absolute'; + wrapper.style.bottom = '0px'; + wrapper.style.left = '0px'; + wrapper.style.transformOrigin = '0px 100% 0px'; + wrapper.style['-webkit-transform-origin'] = '0px 100% 0px'; + game.container.appendChild(wrapper); + var webview = ccdocument.createElement('iframe'); + this._webview = webview; + webview.id = 'webview'; + webview.style.border = 'none'; + webview.style.width = '100%'; + webview.style.height = '100%'; + wrapper.appendChild(webview); + this._bindDomEvent(); + }; + _proto.removeWebView = function removeWebView() { + var wrapper = this._wrapper; + if (contains$1(game.container, wrapper)) { + game.container.removeChild(wrapper); + } + this.reset(); + }; + _proto.enable = function enable() { + if (this._wrapper) { + this._wrapper.style.visibility = 'visible'; + } + }; + _proto.disable = function disable() { + if (this._wrapper) { + this._wrapper.style.visibility = 'hidden'; + } + }; + _proto.evaluateJS = function evaluateJS(str) { + if (this.webview) { + var win = this.webview.contentWindow; + if (win) { + try { + win.eval(str); + } catch (e) { + this.dispatchEvent(EventType.ERROR, e); + error(e); + } + } + } + }; + _proto.setOnJSCallback = function setOnJSCallback(callback) { + warn('The platform does not support'); + }; + _proto.setJavascriptInterfaceScheme = function setJavascriptInterfaceScheme(scheme) { + warn('The platform does not support'); + }; + _proto.syncMatrix = function syncMatrix() { + if (!this._wrapper || !this._uiTrans || !this._component || this._wrapper.style.visibility === 'hidden') return; + var camera = this.UICamera; + if (!camera) { + return; + } + this._component.node.getWorldMatrix(_mat4_temp); + camera.update(true); + camera.worldMatrixToScreen(_mat4_temp, _mat4_temp, game.canvas.width, game.canvas.height); + var _this$_uiTrans$conten = this._uiTrans.contentSize, + width = _this$_uiTrans$conten.width, + height = _this$_uiTrans$conten.height; + if (!this._forceUpdate && this._m00 === _mat4_temp.m00 && this._m01 === _mat4_temp.m01 && this._m04 === _mat4_temp.m04 && this._m05 === _mat4_temp.m05 && this._m12 === _mat4_temp.m12 && this._m13 === _mat4_temp.m13 && this._w === width && this._h === height) { + return; + } + this._m00 = _mat4_temp.m00; + this._m01 = _mat4_temp.m01; + this._m04 = _mat4_temp.m04; + this._m05 = _mat4_temp.m05; + this._m12 = _mat4_temp.m12; + this._m13 = _mat4_temp.m13; + this._w = width; + this._h = height; + var dpr = screenAdapter.devicePixelRatio; + var scaleX = 1 / dpr; + var scaleY = 1 / dpr; + var container = game.container; + var sx = _mat4_temp.m00 * scaleX; + var b = _mat4_temp.m01; + var c = _mat4_temp.m04; + var sy = _mat4_temp.m05 * scaleY; + this._wrapper.style.width = width + "px"; + this._wrapper.style.height = height + "px"; + var w = this._w * scaleX; + var h = this._h * scaleY; + var appx = w * _mat4_temp.m00 * this._uiTrans.anchorX; + var appy = h * _mat4_temp.m05 * this._uiTrans.anchorY; + var offsetX = container && container.style.paddingLeft ? parseInt(container.style.paddingLeft) : 0; + var offsetY = container && container.style.paddingBottom ? parseInt(container.style.paddingBottom) : 0; + var tx = _mat4_temp.m12 * scaleX - appx + offsetX; + var ty = _mat4_temp.m13 * scaleY - appy + offsetY; + var matrix = "matrix(" + sx + "," + -b + "," + -c + "," + sy + "," + tx + "," + -ty + ")"; + this._wrapper.style.transform = matrix; + this._wrapper.style['-webkit-transform'] = matrix; + this._forceUpdate = false; + }; + return WebViewImplWeb; + }(WebViewImpl); + + var WebViewImplManager = function () { + function WebViewImplManager() {} + WebViewImplManager.getImpl = function getImpl(component) { + return new WebViewImplWeb(component); + }; + return WebViewImplManager; + }(); + legacyCC.internal.WebViewImplManager = WebViewImplManager; + + var _dec, _dec2, _dec3, _class, _class2, _initializer, _initializer2, _class3; + var WebView = exports('fF', (_dec = ccclass$t('cc.WebView'), _dec2 = requireComponent(UITransform), _dec3 = type$8([EventHandler]), _dec(_class = _dec2(_class = (_class2 = (_class3 = function (_Component) { + _inheritsLoose(WebView, _Component); + function WebView() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this._url = _initializer && _initializer(); + _this._impl = null; + _this.webviewEvents = _initializer2 && _initializer2(); + return _this; + } + var _proto = WebView.prototype; + _proto.setJavascriptInterfaceScheme = function setJavascriptInterfaceScheme(scheme) { + if (this._impl) { + this._impl.setJavascriptInterfaceScheme(scheme); + } + }; + _proto.setOnJSCallback = function setOnJSCallback(callback) { + if (this._impl) { + this._impl.setOnJSCallback(callback); + } + }; + _proto.evaluateJS = function evaluateJS(str) { + if (this._impl) { + this._impl.evaluateJS(str); + } + }; + _proto.__preload = function __preload() { + this._impl = WebViewImplManager.getImpl(this); + this._impl.componentEventList.set(EventType.LOADING, this.onLoading.bind(this)); + this._impl.componentEventList.set(EventType.LOADED, this.onLoaded.bind(this)); + this._impl.componentEventList.set(EventType.ERROR, this.onError.bind(this)); + this._impl.loadURL(this._url); + }; + _proto.onLoading = function onLoading() { + EventHandler.emitEvents(this.webviewEvents, this, EventType.LOADING); + this.node.emit(EventType.LOADING, this); + }; + _proto.onLoaded = function onLoaded() { + EventHandler.emitEvents(this.webviewEvents, this, EventType.LOADED); + this.node.emit(EventType.LOADED, this); + }; + _proto.onError = function onError() { + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + EventHandler.emitEvents(this.webviewEvents, this, EventType.ERROR, args); + this.node.emit(EventType.ERROR, this, args); + }; + _proto.onEnable = function onEnable() { + if (this._impl) { + this._impl.enable(); + } + }; + _proto.onDisable = function onDisable() { + if (this._impl) { + this._impl.disable(); + } + }; + _proto.onDestroy = function onDestroy() { + if (this._impl) { + this._impl.destroy(); + this._impl = null; + } + }; + _proto.update = function update(dt) { + if (this._impl) { + this._impl.syncMatrix(); + } + }; + _createClass(WebView, [{ + key: "url", + get: function get() { + return this._url; + }, + set: function set(val) { + this._url = val; + if (this._impl) { + this._impl.loadURL(val); + } + } + }, { + key: "nativeWebView", + get: function get() { + return this._impl && this._impl.webview || null; + } + }, { + key: "state", + get: function get() { + if (!this._impl) { + return EventType.NONE; + } + return this._impl.state; + } + }]); + return WebView; + }(Component), _class3.EventType = EventType, _class3), (_initializer = applyDecoratedInitializer(_class2.prototype, "_url", [serializable$9], function () { + return 'https://cocos.com'; + }), _initializer2 = applyDecoratedInitializer(_class2.prototype, "webviewEvents", [serializable$9, _dec3], function () { + return []; + })), _class2)) || _class) || _class)); + legacyCC.internal.WebView = WebView; + + }) + }; +})); diff --git a/headless/static/cocos-js/assets/spine-a0005c42.wasm b/headless/static/cocos-js/assets/spine-a0005c42.wasm new file mode 100644 index 0000000000000000000000000000000000000000..4ac10028bba8c7a977957d24cf1d8aa9bdf0cb61 GIT binary patch literal 449470 zcmeFadz>9rmG@n{?x#<8asm+|$w-|uu_rJ|Y@cZ$gBjBmB7%a%F)+;NIQXa|c4y`# z5RsWrZkQ0GMunt0b~o~C@T#VWin-8IRW%?gn=aNaPa6fF{|oAzdbeQ%O;SO( zgX;x~>Y=FBQz6Dc=Z%5PTh;F`ZXNfzFXKz;cc7}pDl*)F8VajhzDnits9rAuY@kDA zwnVaaGx?rTwkl^?8me8;P$T#Lfuf!WJc|fat1^1;|AI4y>RY=SlyyqCBC9mqXe3w% zh$08ogzGlCbq1pvO$}CVGHY863c>0?9~itJv?TrT+EA|ssjmXH!h$Fcy7?7KHW;am zCcbfSthUwRsz-H&O|sWb`09D`wTMRIE4}tz?Z;VFsKSB0Ayl$xw47to@hsSB0xzxEhPt(I(7P~`&EX{`IW?5XMGg9~0hotkP zEXeaDojLQk!7Onz)0u~)hbQilS(3WL;zf%d7O!|*l&0B0BTwDp*ttd=4>X$dkAHj` zBxxhb2O25Y0h&l$o+XJ(({!K_4{&ixN!wAHWT8uvhovqJ(t#k2T}&Z&m}@kgBeOff zwKCTjPNVoy^OA^e9v&yn5di<2l(b;L1r1f}^q0kPki54anfiOB@2>);pCBN zK7%gM%K-EUl%T_ki zW|lnc$w$pUB+Xrv{-XdoDoLI)bH*X7l0)37Ls>q1M&dH?4@%lR^SBA)Grfc>A`k@nghd2phC zi9210bN}qzzdSX0+GDb|Dyjacss0;E)1d?=$%8z}@@Ak)Xg`}ZXV$-F5v?wL`ak>| zP-T%)BM8pxxYbnonA^XbrThYnKQ-8Sn7>Vu^o&P5;-DpS=KNLmh&jB7vY}#b>JECu zLD4}&jsNwGzl{%V&E#+4%$b(Os8!8NQVl%rNK-zw+Capt-?Tk2aOk0WfzF@@F5@qXBcVaLDHpa{&A6Fi zGc;ou9!_{T$q&ymH^T{#A^yNG{5N9;E$3MVe;ykD?V(xj05Z#A9VFiVi~U8v)7_Gm z!DcZXiYSc+a%ifv+?!f&Y9*O-o8nEI!gMIy=*kP&eCeKNl-e{J-M{ImJT^UviU%SVrR?ydPp^IP(p z^AG1A%0HODCK~;eyU^W~zdIbg(A}7izB+nO{(=1c`3?E?`MdMc*X6tOcjbG+*XNh# zugzbRzcRlhAHCGQB6>xBaX$KrXjeX&kG?#AS-vB`D8Dd&?&#X>`RHjEx)@KAVkxGP^DNO!n#QQ`sl7k7uJFayMi* zW^d2lpS>^pK=!t5^qTCA*;}(WWuq^MuE?&=uF9^=-jMAIUzhF9Mqib^GJ9?In(Wot z=+^L(?9%KN*~QuDMcHJwGux4kZqF{vUYb33^!;vI_LA(y*$cC+RFj>bU65_boF6KB`_uc<->3J5zfA837oKrr%CSf9vi{pZl%! zj`TO~OX(NWFQlJOKbL+s{Y?6k@Z;&n(p%GyrXNXfNpDVn?LM6T%6%yParmC}z3DaS z`_eb2H>6jm?@zBvKagIT-k822y(zsS{b2g~^d5J4`nq&?`r7n0>1F99>G#7|rLRbL zr9W|#>8sP7>C4lXrY}xkl#U*8q1%>@Zb>(%Thj|tkHAgo-emOm$?uXsB=;xxC8NJi zew+L%xi`7X{W2N-N%G_57s=0)dlHrXQ350UFnR84qPvsP=YBu=UNXAqo8h;TBc6L_ z^37!7qR%9sPCl01ntd|)Xm(rjtVe$&yCu6h`*8N;m7hpHlzlw;VD^&mrtHIR;i98H zmfV_rH2Fw!OLBAa;p9Wf2a}tUg?G4b>fMdWcft=O-wxkTl~27P+2T&W!VOPGi(irt zzc^pK@Q5Q8J@tLb+uX=UNevgjC>q`tE&fV2{N-%%*Rro>U&_9i{nyf$yRnzK-Oe(< zci+sf&xSA07M~vtZ;BSb%q`vR#%^@4iry5yGWv+SD7?jO4;L=_M!MPEp1vpfdU}2G zwe;P|yOMV%*Cp>r-k!WId28~PO7GD%Cy*C@% zlbn8SvdewWtvPG`Iy&*DUMF4|F1<7yyC!)f@4pycoosclcK`Kqx=l9)?RUfBtCEo` z6A#^$;qV*6#cxQiNG|bxxm-03Ten`9TpSJWiWd8)-N|c{(_cfSuTDlTOJ0?XyfQiE zUD?uiW@Fc7@5tVp4ZkN_d};FEr@lKI{-9et{Nm8+ctvt?GV+#e_|4hkJ=wLHuWDD~ zfxJ4rD*S}|xSLFNCNIyv5c;<}k~K@u8e6~aHSRr5z`xkNNF5NiFG^0iFgg8Y0P)P> zmnI|IliS@(k`K63U!1%s8D6+(HGgk$Z?TS)FHCf+B=EB}xga_HoU`>Gh|ulkEa91v5V5BKXj);(eK9a z>0R;2cjA$6$KQ%ynJ&IGy)*t)ct`v-_sw|Z8}aS&*LnO}{MGo=;aB2w&i-J9bi{G5y8t+Lz8n60D zyy}*C)y?sT<5eGuSA8&EbyK|R#(32S;#Kd5!ET7(7r!@tPyEI3^y}l1Yr>12NVIU# zQ~uF7jLWus_=Wl6t@-2L9Y5_|@s|7xCR61*P|Km1PjvUG1Y{PS%1N7>@ zBfcp9yt@!Ol`mJTw}c}n?U54^RDAxcFu9OXKbFOX3&B+u|3-TjP&} z7sS7cw!}Y*z8zicHpjQS7x3?^(Pty7IUlT|Fc9ur!cFnW-e}~H(a81LAEKY7!}mw0 z{3={}Z#eeD^attP>G#v0rawu4oc<{NqdWDr?mqXs@b~WL>F|Bgs^3SeeiyC!ZS&e*HlHso=i@%V3CAlMl?fC!8$*BxjUrN3ieKFbWKA+r^ek1x^ za(ndIOEhn=Qs48uh8@Bd(W5a`E|YL-Fkja@A=hw zzO48BDm}ll_k5|IFVXWW8jCM(Y<9aE!#f+t?r40`U8K|t8;f5~>dP9#FKryVozxdL zzT~zx{+RzEf9h}Y3mW(5TN?M}n;XB+U(onnetzS(`KAWU@az1jU*-4aNBuJYYItk( zlE#Z0M?8C5{O9>S`OorOqW4EX$bXpsD8D=ZcK*HmySy76y()V4Ezz_2 zy)*w}{+0Y|`Ln;8Kl=;$m-4UY&%Pu7Mt*xf@QU9Y`u4`*&TTBWT@@_|gHG_ccue=L zo1;!}bQm;?p!o*<|f2v3x~-oy-QV-c2{;!|SY6|M+dbBbUl zMT>B}9jQR!&MBic)U5}9R|M^F&^3#Y)cT&JXsieew4Yja#6uCC zI21IS)D)HL)^y_Xrho*}<8o}glRR-K@O97~I-uGXgz?c~?Czl)9yBA}VlN)1g!8waLG5k20Z4x0ZB1B6D}jx#C+ zMF0iGO0WSnh>q1OXTQIL+ZOjl<;HX9%lR+Zl25EDH*q}=ng^;Pq&&>vdBfUu zMKIC)MHn(g-vBd&WGrAA@eNcTr!qI;A7LGFh`kK`#nDVuy^hMTn=$KVj0~xD1r19t zsbqp4cA$o^w%4sOU{`mXSS=C-CyXh@uQ9bMIWDa<1;l%Hff>uZdL5R7-HZ=cGnQkH zzs&ZRmcPKSWvg3kcK2>h_ikQYm7rf!&N;gSV}xa)dflGo=Wp7yskNb8m_4oYM~B|K_inE`ybdz=#QoV0v1bP}QzHZ%ro{ZzsHm7uKjp zU7ZkG4uN^k8>PrjL{sp-0h@Za(5)LMaoX9r_Y9gpO7z6DBpiUvVuR&G&N~UCt$XL!E@5BNylCC3Di@PBT zmaXx2EbhkjT151)o6$O_x6)o@2Tw&-N}++)B0-~>Je9~`Sl<0ca4t?u=-dVXmaaox zpRK#ZUd?QlK^w)9f>`he3{avB*OnJv8+qW0kj@vhr;706mUn>%{&_q^9uKsgmaTGj zkpdMZ=8jkS(acS7lbY5vh=pO{s$$(ahOpV{IMwS##oBsNB&U#C^~y=)#aN!X%24A* z`CCuHL=@t_2m!PFF(C2}5Q|{k#;d-LhZWTyKa>hXhCC(N4fv>d!fNE+*QkvAo4&>X zwNhadM4z{YM%#2|DnHQ+@e`Lnk)J3beo9o78sMjjmk+Bd+n2AB9=nLIC|2=R@@Mna zH2l-;^k6iVhiGp<9uhMDG#*N(=ON#j{dtJ=1MyJJ@LhnBFHd8}sjiI3EU5?4+*pacMh!AV=dSGp#&>7}6iI|AL1_)W$Yb6V*~Kt9@3^3sJ#i2_5@D{x+Y~GJ z?%kV7)db}*|MGL6({U5$qPjq{TRTxc7VAjdk1$|iEDw&6u+%~cP$mJD3}WXXHETPW zL4{m`=FCH7oa-T&BM5`?;Z)K7+Y>e z7`Ui;+}CHGIL0`w>rLn`YN;~&7BUnp?>@Gy2riNF7#-Gqf=dO{<0-<;-NASfodSH( zVe}@URKOo?SMNe>jl(qAal2juz~}}+B3Ndya_kr~gY6g)22T+jxA^_<`@0=GWk6K- z2H*}sShagR{6;_4mbcy)jvpy0Ag>9U60i4(&F1zn#O&TcL%|WzS)F)!@Q=tZ_veXP z*ax~S?1U57uInWKB(>3{YPnI`1^iwgibLt=%<i6Co(VMZrv23>7_*gEDxM ztSahm`?_Vb1KVt zLaBe|nZ93zolnhDCB91Q2(Ns-YD`m2WOAZl{sMZU{{f?v;Z$IR%_wlJNfyB@ME=7A zVX|@N1~7SNFwse1^mw`0YVY1WK@deA_3;(xqb9S5-e&fm1*iDqA|?AAtu!RAi0YU?JRRu%nEPo4|C$?X9t zwzLOiH%2SF;Q9*c48DT?CtpF_S3wcAohort8oFT1N;OnOx>mXG1f2H3a>g5R^*|qx zz+uUPr3;-J_tjAKmNo++{1xt7-85BI&{)fAOw_6XsUDj(@=piIr2Gt`?1~}#H?*>o z&iyaU*>vrmbys!La^^(qgtAqn6Eeb%h)%D`#r;YXgu1TN;L?QoJ6#yGe}gMKIaTFV zRk>AFq(wd5BR}tE7c-02sy$Ry zP~WyKR7)*0piI1_Gq|C12uM*KGm3+FZ3N4=2sF}Uz{gy9vvpnP&~*?eD;ncPIu3UR zU@H{;fqxF@P$h9O2Owkqi;5vVpSEWmIR-bZv&31&!+1Tbm`!r^5=3rbLQTKO4hcP^ zp+QO+ZfKb{R#`=1(JBr)ZBH?yIE0F36fISxt_gO!7W(!=`aGKqGmAs5B_*RJy+qs; zY(`(g6sbn^RNA$lay z+(7lgNsPG6j3zLu_6D*BlX7Idu-Os`9$Nl=*4k+L6iZKcM?@p~ zS+WJl_vo(BPixB-fZ}F>e&zs|t^w8ymmHa>1+J&4igeHNk*!-0P2{m?uB1c3Kl4+m ztxcOYdg+()a_c&7<(_ru520vErV9iJ{Rt60UXok+H&dVpp;UW7I@}!-1zZM>iHIyh zX<{2Re;T^9GBILl(DHh-AvAkdbsAt&47B?#OAYQA@;0xkp z*SlK|FQe`S|W(3(ev%623~YooU{HIc|YN~!+OnJF~> zCp=b=-5UoB!Iu#o?vv#oA8(Fthy7YQ-PY-?BOll7n9c6liOH32WH(Vz)C&0d^QHp> zLGy^IR(mxa6~Y7NN|3Fxlj{AyOUUB6{tQH6sw4%;L89q-IX1t!65(%x&0Hi&5 zHM6#GEuzGqp8>!VvNX$s@xRC=ElV!kvGcf>f9O|BCp&48?jRxFiOoDVHp%a%Wjl_$ z@>MrKX0ns-K*7or8FjN~MYe;4WV-B)9hi}g7`t=9XmP^zO%ea z53BT)^st>qXlB3$Vn)tz2{RVhb_rcfDA~c~wga|C0Tl6$PPzk?iN+9As0_76N$VWW z(`K{zJm)ruUJP}Vi5Sfy#v2Wix-dfWT#efrBDzC(C*eK4(io}|>m&jjx|vazN|b&? z{;FcCbL$pVXLDvn6tR|AXeCgD2ra7~Ye2VV?qlP7wzfl4^Qd8SumRtmPR!6nwj!F? z!(axSMZ8s`7JcwaIi%6%XqR!Mi$!~wg`wL!JE5KDq0EwN`8?F;^td%WD0iG|u3}>C z14*2t=S^N^nc`6)En}rNEdPiohEA zI;r(I!)uQOn)D%T9w=A~;{xEHhq!^#B0X^~eYqcivs31(!;GU=wPB>5S*r;c<;2$h`N5!`jp$;X&atlxZEawH#5CO_oTBNdQc3P@viT$1YQA5Obcv z=zYJdhR6Mx8r|Zh$Ob<7PoRs9$iF6j+4L&@F4dRI#y~>5{gB&*#%;Lv<0UKrkzsq8 zCwK$*WdhMZ0dADr6#B>bc&gl@zu3BkB^ETvT`@qnU2rOfhfAj57+^36D%kWAE;T{a z5Qx&UN)5-LM>wXR!f~ihf#aE76c1MT)0oucAvo@+-@k0>Wb2>%AO5L%n6jb6)ETrh z`rVqFH5fGSjKT(ca=elmfF4>{X*YCuTN`n$K&(|BW&~d2Xj6P8z`Y%FBQx{4pW zZ`d;$#dom#JyK^Tn>^bZU|bGpHU*O$8_Yzov>qvn#^ubj1!IbugAps`cOJfS&DISj z%0Nf)uH=kaLL0?e`j7*wsYqs}fl4n7W|qMTYDVKPMp|v6dY=9>9M|}K$K-wvD$BOK z=lcdzP)`2JXe>UGZ3v#w2o;`$h03>$6}(rjKex^!$;}VoF!PLRkYbDr%dfrmir+`V zPACSxjpc7p{=U|~dklr;XRrFn=2-88_i2_}e&-cm-(=5`?`^zd&Y~5o?rZ;U+3wbJ zwo?kXMK|q6(nt!MRi?&G^$lpkNjSHNcfYdN))&9C?S)o%Sl;pV8!zZJ+imM}?Z4Z& z?yCol`FgFXD(R-G`EFYeAFJAW_)Ti-gt_!!cdsovdw=G`P=cM-*>KGN2d!P1kGI|z zA$c>Rz=gEq{x-_3aDDIlW$E1>SSBHX{I&gaj!P;Qt$pMe4xkt+Ny|em=BGGNJE*vF z&f0R$^I+lNgibP-;X58Deum6842l299y4}h_|hHbv#_x7Tq=gE>~`1u!M;StwJvw~ zendxuZCchx`NKr|=SVdA2p^VriRR#{OT7A~AG6QdZu3`hNtawb*7)}x6Z~#j5x=hW z@4l5jlHVzk_ga~re$P=OzWx<8-kpA3nQ;@!l0)2$6;&ynM7l4zA}1Xv22Rt@lNmkd;E0rd@vw4w00 zp84fq;nwTTX?s}EspTa)4ceznZ;Upg&s5|P{M5|*qIoV8OrnHHblc>jYSsmisLk{|L1UWJwsv?*tiUoI z(`q9&Sw@Gkke>jvB<)O0NYIP#0EL5bp;X-|scgcdlvx+9SpCfLxC9O!asd!trHN-! z#!tj6zWg5qX|xURI_>~DN=b{hbs4J2%r{%OE$g(%2^=xjs`!eIGHOIB<>X#9>A+#< z6qHp&eo7z9kC39aoH6t9KfMdjmvtJX}B9C%Pu z9lgWvs=;tVE1WD466~crBm$*cL_6y|M`A-JJ12#Kox65ujwY`R7Pq`IJh*WR%UZU! zz^L~&F#<+Ay~BxwT{{x%M6tI6WDS~qG^r+jR~+G*mF3Ws-FD#rz{tId zQ>z10U_p|a;}*G5Hcy-jM@8p$f^#hp%zHuzpJX12R|SZP6>%2b02dVXCXCgkekd7A$7?cq6q8dg=(C0R@sUD=G%S0Ss%gcOr`HKarJDhRWM6 z0)J|?W#QPmo6VhU0T5K>lqvwN(TN?W5eYOG+<;75j6vxrnoI*CH-nuRq3cGIk&?p{ zK*uVBh2{*-kZnltAx#CoQ8KA{qB&)N;!KGEi3zsmV%?1BU-{@zs!YGhE{SAftZolA z2{Mpa-?)*uQLar%`*~~HNsW%2=_bffrz0Tsbv<>A~ivS*ZLpeu)kVFIWE zA3%lXu>h(j?vOrAN|I6FVi#Q~_i$+IL!mMs3KiDatr3agt>{CiVMl?M6a=$=&O@@0 zj~g3YhlENgI?Co}tP`R0iH9ed&?&HQt~(HNwub>nOOc7o#q(zuIqWZN`sXS1*UZAm z8;$i77|uEo%*qW?kr?9+OUo;1=E#Kuzkt^?#3LVabaulRlL_?-y3E1mVAK^GDE_s} z2Be4$DrSag`QRXx^r$Pl#?w`RdqR6Qkb3Xq7uxYmB4(@DAoXk@Z)U9=H1n$kFMz|* z>$vX9mY=U7!m?R>&?doD+A&|rCqwa|%a>_UH=q3PtLJ$Yydyb^Cdgxg6KEeaT875r1lSRF}gg?I0X zY``|23OY7(W;h3_sLdx1F&1+VlZds;pf%~B`o`m72G>s2C({22g`}|la3e13KG%uu6gi$vQ@1TrUaI!%W zR6ixeSGtJFX-qoJUyAT#JyA6ZA}JS)^Vn4HsveqwBf?HvorTuNbZ;|%k;lh0v#dN; z)|Bv_gw7%Y+YA(<*`EH z$G2?oS~(Gyj;`?ZkOe1tpg}ahVsq3)n-QW&W&bINKB0P%veJq&91T_cMAb&??loB?&2V+twxAex0jbFfGloa?d8*JC+knUOy?HPRi^Yy$?_El?hY>N9O1K;M{# z9RRA$w6QUbXN`?!+8~7*IUbPx%?1>T``JJ5j&9SkKa`2fztIjNlP2zUH+Q^z6buYf zHHErWX0U*;Lf(1 z0lfm9x!6GKx0a|+5p$!eGlp#;%M%p-tb*zT#zeo529U{RCbr+qp}7YsW@4LZFBR8p zJ9QG8sR5B1Iq?@GBm#6e>}z4X7F8dX!#qu66l!3wvP6{lsQREb65B2uL-YE5Ets-2 zxwez`#ne}Jzb#H0EJCmE6ijdY z7K?#ke@B2yw+b<3qbfNRbK5G!(in~r zZS(N?Z6br~PTexpFkke-s{Lo=VUGdnvpY`qtV!|g?h70~nv|wogx6U90x1>Gn$xHt zh~XJ?+T9*7F&XyV?co`-Z|)~rqV|~m=t3l?S4A}E3HPUL_aNd$+dUG`m{E<`sf;PO z7?I6z6SGPn{e;xiui3%}+~pBQ;Iqq^L3fu2qn_X8Az>6_nsFbRW>d8=rgdx%m#UlU zbRT0{YK00MWTM~{RA`TyoCXjd&dEFj(aJo`gqndQJB9hQjMz}vGZ5TDcn#BisZMbZ zdr;VDmWg}f{kR96HK&@K8212+#aI~k(4tM4#XY>RkPE#4rl_2$WiOPyOngXh_5c9M zr6ilH8ut)JrYF^F?qo-Ry{`2jA|j|2Z)s5TJBjvDdK$pic6xpVs5+g}(}?C-T*DS1 zcSo;E>DeleDZL1#hsCr1Ojt_K%67LBb#d-_3k1XL{o0NQ<%+2!nWA%aKy8=6R7sbq z7!@>DpzScCYi*YrQ<+F7UfWSEOl2ah%|JY=W9n@mQ(3C{8i!OYMV@-^B9nA# zu35@n^jHf1n95S-rJTxA@=be=}2<}%AEdxJ`vgGPE*|J#v=1r_56Of`9 z*tPPQpxY={M;x7f?wAgAmNxG4`km(gMknBD7SQ`g(ksts}G-7VZC{2T1@ zUBq#T2i=?+#|8XNf*b6B`91BLd~OW^=S8&f(xk? z^L?%A(Dot)HOeh@cGH~US|Oz-)QW0~DP%RVq^8w5Mn|7$HOXeDzqwjvEsQae|qQgoxh`^zj?&WyI*+IY0B?bEI&5+)>BS>!!l(# z|LKE&*t_?R8!ul02k>{#vfZlh5LE+ff@nlv7HQgghx3sC4O=*+ZxrT>&X7Pa)DP3} ziEG)Hr~4dgqpP%nN*xo|7Ve+8WmeX|_pbRnblZkHqBoguYh~~6_%LT%b!QJ+STC>U z>+3b&pY08_-zr?bbSnxZTps%!MMD14bz;13ncwaW{)L>8&l&Y{+M29o)jlw@O-un5 z(N)i}#bjcpuX;{ZQEL@puH~b(E^Av~u-B$8)NTJQdfpc5SmO>s3CpBHAYHGa*Wxe% z*9-+V2sZy-q596F4F>6t^>iNX({9Yog64m^q#Dv@o9uvXl%^E1SFE|sTv+Gw)4c>! z3Q}k?qXdnS-ji>8G3biMBvUyIZorOhYw_rkcMP`Xn_bA6-oyfxpSjp;_WdKuq__v^ zuhwApfCi=erggI0wf!!3c$a{2^*2Ue<;Aj$EfASegq*M%iDrkiDikedDAyn0B< z#1d$6JQQn8l*x%&cPUa^7FQibDnnn-3k7-EF^}&M6mG1xPbrYAoP*!ITBagT5X|w%}(ywm4EfYv}WsGmfC310E1Z$-d%M zU$i(FjnM#u3-wnG(n*#8=tb3Ug&DwpxSn*?#IRJQN!!sjrluX9BHgXlMYT3q>hB6^ z)|Ek85;FJiiVE98BU~@yRh7wV_Dq0u`mTV&X}SXSrt6B_CewF?^)A%5*cIGZHzH4w zke-pGu7D7;Ui-UJBWX5W!S0);D{!0d3Ru(#u4ki)0v0-8k0yOrK;ZseDI)*?3vgMN zGL$s@&DIN4z&@0r8?%itJvKOMcu9By7q$ki;KD|sF)o0&)Hg9G&0-2|@W}8AhtHYo)vnXnPMr4@ zR|>at@oBS&B}B57sKq|($;l<*(|p=-L2%vj9oljf@g~umGk8OMS?kF@V&%hB0TQeTmI&lr_ZH6 z^b5tH`y^I7WiNsUDz+)@=nlhXuT4YLzfRMFe{oJ9A*z(QTFT#T2v^E7_WXggNAKw5 zt$#+=^433T=?7d66d4(W*^DQKdN9kD5q??8rVxRmlO3omdFoV%j%%(Yc2RE{!lWgN zH9>b5$1JQ>Onim_5WYZ26HXOls)N!9QejW4c(Xt4j7rjd+CIotp)<)KG9NI*YBH>D zzBdaqv+))M^Gp{>o6QTytlZ;Jm6V@t3liMmY&Z7_iZJ({KS?#2Nni>vBMp%2Ac{4| z!r%ld3yYOQLGx~su5h!0%H*z7{r2meIX33a0`!Wlq%pvl*-9}IpQci1ct+b^y4EQG zgn~@>x-I(BB@(btix?AIRZs!H|ahV>9It&dYm)g7d{ zX$!Gs)33$pGROB6N06ukO69TQ4i?g(KLX=uFwd1uN$`)Ag|(D?iITZ)tFGr!7bu+5 z0V6rIV!{l&5JwL-4yI?hLxR!9b`>XU#Wv~t|U z$_XY?6<2#0>4x-PSs6HNB$}s-{H>LTXm;~aJrl;{m9`$xa`A@IX!8#_vY#@)>$(rw zF)Tk7gvWgcY`i&3evqIPJ-aix1JRQX)HAuWD08o!sij#8G!>fqCUqW5n$*dsC|JMFVZ%~D1djOr zq@f5MD}9RT!sVo$`d!r-*oh|R?j~2{J9l;RT|3eI*j%!426b6!89B9OCuf=Pd;@Bo zj14jlq0sYPK*GMfT{6_9z4PZma%3_ed zaQlGJ?*k&>dk|&Q)2V3RJ`6FW?cWEcDn<*KiyrI?T632yO)#$?tm!VY4Q2!Oq@roS z8VWq*4~BOSc|Y=@Rvp(+A zm5RSkGQ4AzGP_~PLjuoKmO$32ltA7QB4UtjBE^DqJ0m4B&eEn^0{JAe##9&`b+=gR zIJ?6MBuq){RkNmtq=7A+eXpjJVpnHhh22uI;x~jt7!tcvUIdI84LusP9vF&g>T5RN z9*52T36!Q>em*25Kg;Gwx;x8Hnz%btk5B8G!kD3cTBTI8C-t5faI-9J;w56~Q7=|k zFWRu4G^l22%*0OOf`qCHyHLQgpGhyR6xN%%C^OMb?rc4pMpyaS(OHPP=06aO3mQz9 zr-39cXJRUHIRlHl+ZvjX?iAt9PFC+95Nz1-ljsvnK<3uU@+`I`beOJTnU4ubEJYcJ z2wIU@>Qd!8LwurUWsRaGWoh!v6wNH!?H#OA6Q(meO(rL@re!|K!iK1<(8_3S@POk&dKy4Ll>?Jl15!8wj zF}@Hfj=|+*2VTO89R+UJ)=Y@D)?rP5FJqK}Q-^ZuJ+ofgAwfP`?YIs8T!()iG@q~I zmC)n1eS#IP-d=SX{_<%Tq2H?xeU9}9xO3v7ZBmcfqz)hw1pc&1ox!WSLaUBA3v))P zV0ahA4QiLV-+bO%XkfL4afa@kK}+3*hWUT#Lc{4(78<-kI%4O8hSu7hSaLSBEZ~{G z+S-MY<4*b{<#BU$y`s8aS6#Q@5xk>XcD_)Oti@CoUZCGQ<=fTzIVu5S3ahP-9mEoH z;0e=ooS-zSadlC^`T@}!1$qyxKm+qSi|FV@NJ~~z57-5~XP#J{G{)3}sxhB&*j3I$ zMs?U2@$O_IiOV! zui88xtn}Cuv=wSe(;t3tv->m7y1;7)4!Y+kQ2t|Jz{-2CC-LW|0&6Ghf=Uf9Kn>SR zQ-d|f%Fp;m>LA2<^4#Gx&f(2rWH+V8_ z0wAqtkU&?d6wh`Sm{UbD8i!x36^0d2p_VC1`Bwc(l!&TPgv^Qstuo8XvXwr?nzWul z-SlpCC$nWPY!|Hej!p|D_Vy~W8Cf&V!F$C|6=?|mnj5L~xKJ_K^pq#!c>Rap-pUN-Z;8|X)e z>zIP857-W7aC>AlT(00L#==^Bk|p@s9R`3TAm}YmKocreu1E!7equ#6nX@i|%PL zCF>`z<+WVI`Uh>1SyqH!WaDTTw!nD8d!#U51T1mcTKF%)te^Uv@AEv^_e?mZ*H~yf zt*MyOiinvvuMx0Tc<(kKIDv-dH1G6S$6zx(x3Iau)~?0cjwq2BKbTKa)o!S%i7Y zfip7cYb4>+uaTgv{P#&#S5v#_oays9!@JQ4*cteJJzO`Q)BkA`t-jHefD)KSSlaNA zS31C!AsGY%FNaN5P6O+Q&vpFV<}(!opz|uKQ@f|`Y6fN6$n2iO5a%~Chg0Jtw2|5Q zjm$#x5mCK$nO)`5Np@zHj=?JLzFdZs<}hV8PSk6MFZ=``EEGgU@X68*mI23Fa}l); zR&b?CY2}y<7^U4{^Nr0bosT>NYFPjpd5IMIzkbvYC$=2updW8({aI(Ur$O^NJF-QG zRTXTQP!DAk$)qsbBP`8S4a?i^5_Ui%e1~69mqF=x=33nO?+=AXgzO#EaBaC;P+*F? z??3^B4kppbRkS#$iV0gZ^^daVO*~BiAvvkt!xEukWF{f0-uqd>N&*1Qmf_7E5iZp3 zjT{+aX2sH!H6X*vchDE27gZsBfr$|rahBRVovsy{y4@9riA7WjS)7t5-?vHqyeDeY ztKx^}N#YB7;uy%(6HsYA`6f01TtwUEv@EPN213&hzY;bIT6X*-V4QmJtm`sQ7*}Bi z9Z<#~7S*ottT(u3{evsBb;B)T9Th}UiihJ&MmJRu{g9Eq3y~sO3c6sediS^Xc9>h- zqH={p;aWH(B37`fBAk-c0gs@zrSs9mz-^Wmu<~Mo5*BzgE$pIcp=ua;a5RlrX^$oq zStQ%wR>BZQm3pCXrTpCg*1;Cp+e|`rou>tBHi1!xSa0vEw1KTKaupf z^C467k*RI3g8hy8NBZo0e^{CH6U;hGQwdbCF=u(*4hqaxwfz%pxNBcJ>#A%WaqXW^M7vPif(kGFsi%5e0r*yO%HHe)H9%a$PyNT9||FrI#zr8I$oa zPv#SR(rnXh+gYO_)D&|$#dtiB?&u?$pR@Ff8mHd%M9nj{8k6S)V#s441q0oH6Y=dW z5A;RIjn>nUrJkPjp@X9NODC?QQ|2J!%zA`}`JJS04ki|4G}oQ*m=5r#Pw1QzRKt{z zJaZRWL@&lj>qv$<9fnc~qr%78A-%C{NR3pc)xzez^+}JM+X6}e0|Q*s1<&?2Q?R+o z>0r$f2_ugxcSnTtj{yd|TX+m!IJ+A?28U?XXk}|#ovY1IL}pEQXlX@TqHJv=q%DyF zNu%*vh3{(;ZC_~e<&40hn$<%CD%b4dVM+7V zkyCIY{C=J5m~Y@D*!?s2BRyl>T(29-itktG8Nbfej+@K=zzdc_tGjKwGif1w)!&@y zOW~MQVI269$Y=S>6=YZHWhzGUWc9qgdS)VH@7MX)YyHz|f4RAO$$Y>v$!Vd=uH{<3 zRiQ_>DFuJc{hM*{EjuRs%s$Uw;rY0LwW1~Virf0w9bCU(aNshu*L{cYEFrxLjJ8(= zIlpp%oL})_D&2gyPn*wdPk_CfdgcGP%dSUSQdQjCS;Ss>m5h(Nq;Q#S106PR$Pi8trJyzrctpFqnZNFH{ZORAG7Az%sRRMgwd-4@mUD zfJlcAdQ?Q_7;lzWTt#VGDK*7wa(b&_kQ36n7z_a*^nD9G2B!ibW&)-^n8T(Ye9WSU zfJIa>l+z?F6!248n$l6a$*{-gJK5y{yGP;?Oji+xh+9Y52SQUHl7!I*Bo;lUOIS$z z6YCE>VsZR~dK*{7Vx)K|#FC)|x#%%`Bh(%k5;8(Bb(nc`e`hgodt_tJ`-62|4SN1~ zkOt)?5qkimMd#Y);BH&U3RX$?vD6{T;uh~yqa(5SIxQC+&n!TA z`SdL+{-0`K{0D5fNZzf(@^mn9qxIqF^?=HDnpcvbzRqpuFiTh#XIodk3xfnmYB+A< z>fuYsM_Ye;JnOie+th{54xb}$={W31UJ3g@)gQ5 z00y%H0A+(0@b&FnrX_cm>s)ZmI&VNAs`$qtXMSk~-ks$$Rpc7c+}10IUYd;<%jPM}EJOSpoXFGB ztd6AvU7E+wO-haf!3BRcN>Rc`Bo`g>_k&YbZ8Sg>kzcOy_-|dUk;B|4I1=8?Jmq?a zZ_R_3%n!K1F@Wo%3$Vrmb7bNB*T|sRp)|CYc-x+d#>2>#;={i81s$#hrw&q_)s(RH zek=@Tkg5b?*e5uxlG$)WT}cZhoBrgZ$JLg0xL@^ZUQXvV8HY`(J)y4>zG$TuVovy;e45H70(`Ls-)Y2LImBZw#t^wp6mVfVu#3^5cA z$WYg2?d_X7(Y!C#CjvO&<~t}w*#p~beULhFeu|B`auy>mywVg_1_9p;dQGPAFk>TY zDs>BsNf@+Xfwe*#PDFFCkpR4&?~|_rmwIH@Mvg~MD((E6=!l4E6Sq=#(eiRFj) zy#O;Zz2|pDv%E>DoDGhcZRg#UtOe2(Fq@%ufn9~x3WI*J^`o`N!`9Hi^g?kpwODq^ zl0MlZ%9J`|Q)mTl!<)WN;HN~&D}?IfC5eeKPjlFbJf=R%rLB!qCL4Z{ubf@J=pV{o z1g!;pPy>ZB2$S8bJ^-!UOSG4yC?WON_En#iLle!k!TbZ-?a{XSkO7<-9JaCi=^*vQT~IbU6IV9OY#1 zRKVtP9dOHH8w7_g+QU*L#MWu5aidNE1r4Cj6ySpJ1eQ_1j`;e!SAbuw0eBKwV%&N= zEm@*XkfAgZA-=L|s`?+eP*tGv%Fk2vYH_}Lqr-1K!-xs>eFu@Oyw;UlA6x!CoDjFJ z4fS~_F~kB&Fb#Snec+>kl$SBr;sO^GJ_}wYX5hrw*>e2-DEc#bL4e17FZ2_=RXl3m z_Yxj&n-k?p4p1peu&g4lkO1IY|1MctaP=!2r1VHkS8RG(MEl;mI7ndy}S z_oHm{uiXGv2?Zn(DWzaq6U2G;)ew@;Dz#M}VHI1P$EX8?0(@tNbRw*Go*w66O>lCe zZr91GgN5PswC43z&w1K9fb*0O!)aL)vr8ZBvQY>arH!Y2TH$E&DCc?X0Ho9UJiRZ- za6^|$O?$$wpNWjytV%6b;y<9D%DvtF2{39Plk*%-*=|i=$VylRByCL(|9f#ByfldGA50#f^L0oPn+D%l2@ zl^tR=tPWgT0!(U|lc{lN!KYIYG-TVDq%k@I~ONv*eh@`9eB+^HkcF=PFmMt1o0g+?gu*al$guQx&+u+szG zPUEY@8ml_Z*kdEqw4Lr^OogS-IqOZdtUHl2hL+o}j9Qw8Oi8?Fy2Sgd#7ugj#m7#r zQIJnGR)$ne(mYMfF;eT7bWLvfXE8ld; zA*tL5>s6vOCSx!Jo+=7G%&OaZ%_)1TYyk4NF)(2k8tYTnM4e7$io&v1;?&jZl^FeL zyweky4BjEQ!wU?_2jCs>Pk)gReKpa>5Uf?`AmQjTm6xOn_qkU^lw#3LJgre!hc?I% z5{{d+9F$A=K2%h7ezX{>Q7k^v2)n|w3J*h?b}`JL@R|(ayn9-EmL!Y@sA*O~{sMK{ z`eZoSo@H&z{?!1=L4|qiwXrk>S$z!K!CbFrRvOUQ)Dnb`G-a zPZjs7nuA);vJyMmEmdvhPT0}0>ypkvBpk%4=sLlu<_g;+KJ++ichj<`u6Z2&j~=fe ziCS|uydG@X$ALU!(Sd`hE2BGci3HkMZJ)?#h@;sCDy#y5@AxIIGax+4)Lg5t3E>5A z2!zXQCceLuoJ{{ zFw80&i;C7XFAweea#{(Z0|d?ZikO;dXbMbAyzjBOsb|81MokNcpuhJk;sKkz{IP{Tc;(?eK#-=IyhxMU*e`WcxreyL40YA?&@A4t z<4hGHShIWC_&($fWbCI#g>C;bRd#}Enom2kOH&ETi?Lf#M0RJgxJu=ok4$u zBE_qtIB3qc9|m2XpY#9oJbD31nTF@Dd9dgm%o~LJ|HIKcl4o1AfidhvwK@<7m03ma zaEFh#|ruAov^f+ovZS&xiMca1N__~U9CgD@bbZU z{Lel%SKb^j_wj7W$j*&6*P;L;{@FeN433Fvd(|L%N;}LH;v*%g8Hx0volmZ>>e<*6 zqQx>Klz+8>F=Jdxeo7KEB$8&5Yi6BmrX{uN$60(KT%OPwh141}a;>I00C1$C%%BTNRZk1Ql;gpeyy z__xIq?Ki6|Q}hSl5I57M?Jb!0!9`TfkU zTD8fE*{G5`8DTUX7ErY#z2G6{tMWXop4`E)6-S~z4w)w|W*527|OqCSFi5aY*MJRjCbP#mOHV<^6RqzU_t3Q?*)zS5#}$OUg^$$TtQ2Dac-DS-oX* zZMo^5y~{X(m;tw16q=)BCgqK-c7L$vSutBdIA&OqY}!a|t6+vXOgitZ27I|+rF^=+ z?b?2iSj|LlVioP@+ujH8^0u9{r}%`s)NqTNu?g?Ev4$}T${$biW|SLxM<;6p-2Qu> zK~eMV2cuv^g_3eiBP(0p@rZ}fV{rs97>-8Or}9&CTaQwp_F$)>&e_qXqY?nSTSA9$ z!W#eLKlRaL*y#wFf+q1N`T|^VoGoPru=}+ZylNHd`rt-?{}9s%=StwQZ_e zZaZ`x-{|wYE<}ppY=|ZsjDBIbNqyyVI>K9GEFNVtR*YqRtEk{v%ZIMofUJN3Ge5SnvTMVx^%6kq;oY&cyJK z2tN}Nm|mqrJzntfn4TRpA%cyBBG?LSn6?)u3Pr37iO=QA=ZTO8JB3O^Hlps{?g}k1<$BfW~)(E%pXX)sbeGI-LV`#8z%I%&`t)&J+=$n}n}{em;2O zvcL`vgek=6S?vfp5Tg^&SVIICNcR=21@utc(|i^AF&_<~;%;dguX6waX@jaJ?vl5M zxXe+vk0ki^6&@>+?T-<$Uj-cIvm~op6=>rG)s7dOp8y3Mcz9*;**W}xI4Jx~CD4J; z(MKQ;j@Cu{(9y?f6*yC6-Dk#9pjBWIC$jnsC(eiYFqflZ$VcX&`Rfp!K9vaUMo2fU zQp6Kt1j2Nz5JX^ek3iKd1*HgT5b`NXaiR6%|FlxvA0ni&2hsl#r8vLF)9l{R;qin! zV_G~t`>3nlQd`&>PjT(&PR<~H0DPW)x$ylg+fXsnpeE*@tV@W5S)pP?( zeY+l{yNkd`){%#U50%{yA*z{ZG$<0HfQs0Kfs(t0h6 z{A!DRwH2;que5_AUK9k<@~l}F_}nB~XkOMxpd8S3%n&de2B^`xT^^ay8~$eW4Sy7X znHbO@63cNic;F6XTL-WOm2B^`w#%TZcD1(SHz}wXsDuv~;Yq7kcEhn^=5aD5pC*X4 zsKX50iu#ryu#YIArHZ5Io~^vnv@xFr9tV_@ZMMW`TNK3QJg7}m3TLH@9P3~mm$t;hA+fvt=|CdD`h$r;4@+>A4R3N9cE|s| z!GxTHpw*h|3aFO=u@wlfP$ryP9h{{ma|wnYgg2++*Hk7|Vk!#59QF=|H7j9S14tv^S*1yWY~V^&Bb5wyi^Hmg}{MVZE0})>%!EPzpw4T9;`T z1zLw!LdBq7!6?D=B5Ju$u@EF$E0)Rj3^0M>!19@O5Sihu`{w+HR{|7549?=mqasFrCv{E)a` z_Om|s+NWUpf(7^Mu+&P`No*{QAD*((2@3n~pjNzNqgp=oo6h*gO^E6(SL#qRo?KVU^BGREhuK=z4j&ojB0J@_mYIIFL~0T%R# z-17xislXWzQoz>nW_v}z_t#i^P$@P->#nqoK#il$NM1aT-wh6^}H7k!|cC!@o-DHvW1<{9$l zia(2?U3OkEx5ouRaO0%TD$@aGA?NV&2CiZ6=$_U*mnBEF4FnaWERkiRHXTHS0h$<&JqY-7(oocpF$@I9~N~Ae;6f%m5S% zdm}BT$ZS$vp}Jb!(GY2a)dtO_&9}Jf`w4iZr)VdQE z;@T+>rEI4>rR4JBv8V=ts82IY*)nXq(qS)5Vj_5uxlneRcAuNpw-qVsA^zHGmpaBe zXWl{6>U}q``2c&tDTjZ8`2ZTIf(XU}35>30;8e~KhFF?0B#;v%cr^I21&2~KL@TaL zs*6d1jm<0$2v(ab7+}2bNEcFI%4cFG%?7V2^2!O=8gr9GNdWI-D; z+J0VYWoD=`vc}fJ;-T-9mseTRS1LXH$8H=zy0htLy;B|^t$6~#)H?7B2Qg=~bAVL;CPI){NKx`8r-Uu; z!Ev_5Sq(j;t?Ne`Z>M05djC?ibwPUwh@*MKTy@YHJvO6eA*_fV<$40y zwG$5{kbPX%1uf}{Bpg!nS)WK^Aka9u6h#fE0Yni!#?@;8ysOfHgk;HQ&1&GKhp_Ec zm<@b&CtdUEizqeYt2?dxmsJ?t-NWE+!{8MU0fSdmRrD};*%S=&ehLPu`7gs@7qo|f zK^iBQqWSj6Any){LGaVV;AM57l2(0g#^-Z0$kF|++~3Nk-RnbdA*5` zYAj@^B=E0mPOaG2oVwICzn1W|!*HEj?>6w=2)^YeR*}DeZ)u;;?}>7t`v3G@w@9z< z&n9%)cAn1u4T)^l{seicF@QEL!wmDe?5mloPR+vhSUJ#}O3yoy97Ts5EwQmt<~TJp7QOOLvicfWYpGF z^JhM3DD+zgRr#i6*k;&73YZ-9Ra!xn0aRb%&JMNivh)4*vA4b18b*J(^?0UhTATQP z*?a#WyNWB%^ZlsbPd^Gw`|LpSnC?Pjki6!{=>WB*!B;0mx=Hi zw#RsEk7L%;E!5FkLH5=bCGKnV#DAV7cs0RjpTAV9!=zUSo2 z`|hi{dgY#;@oYp3UcG$xe)HtXlP6DRp8UmOtXw9?ajbrd!QT(A4lwbyt-wWeJ|8Sm zY<$0b407eg?~gm?j@!u0^xr09oYYlHhUS-l@t5Vok|UI7t~*;Z)Z2DM(fy60&C8{WO+$nSpUB>?Su@t3Q< z{O`W|nfJI#t&}Wt(xmohzqy%P)P}0X+aPhf_UQ0$JLk5Z_?_b|JaX+w;fG|U{fOfp z*+jm6Hs|P;IjO)3V=9tgR$FJ*q-MVdCA)U#eB}Qe`FC{H>*5Ru!{(n%oNirGl5E&r zBF}hSMl3+DsC|gMwOw*aZ`+b&)E;_{mn2&q+ZH9ng>cpO+nLgCUGe+xeD&mN=M~A9 zj^h%bWaO>VFaDxj`2CtCH>uP)i~iTP2bWQIPeB??ACKx#=;dD1qC$)_Xx)p+hhOWy zvdDIo3X}MH-mS{T^JRAyxQvV=yox#W2i>y!M=;bf){(V#yEXoY+sV)bY?hd25O!u*NrTt?03F3~N&~0jLwRtfZAk9;jK8 zsv>M&`Xr(C`DC?t$WVwsxVn5yZ(bI}Wd}W(Vbc;2M33~sHc1l|;uAqThSsQ%I8=x! zlZrY+K;u*;O-CA}CvA5mi7pS*q%GCjX8LhSONlGohAX;MVzh?SH7gY|W?J%ZDt3f* zT`6cTa0*b)`oR%|_}GJ`Nk@wdNBec?p=4Sa(-vl30S0v_AKcrT*}`n=i+rRXo$+~R zxYpJ?FfVb4Xqi)q5f4iin4*|y_{yS}S-kXgHGH+9Ju!W>Pqxj{@QcAJV-T&8XsvBu zwj^XWd>2>P1kcrtDzMhD3JuZ+^tMV&+BgiIx{brwnh7=zxBAB6R%!e}#ITLSsGv3u zGptb4fp=dn3WG4nmY0k+Se+W*INX}uINaK>aoFM=L3Bl^?I%7As-4<6?2m2Zur0rV z13TPGSx<^}yM%F{=z4`#bjhqHw?ENf+wNj*E5^TKyREA&R?mLMZsIm=hT_kx1-)JN zP}8XVK2q${nuyU_+W8gV2_$R$Kk*0k(>n3(Oo_W<%U-g8J}gA{zp7 zmRm)RU&z=H`xR}7524+L=m-SURyUtV)NA?sk>D6O;3uu5f$5W~(yv^JzEd-NpKv6SD6Qc@cGiKtGZ5lM-)q-u^ zpj+W+ZSKgpt@Dba&QHXm983$NzVy)5iH?tjH>e9s>xh*Qt6Eo}4JftEGCY7GJ3f{W z*15K{3julzC8gRpE|P6Pu}HoF1z!Cm)Rgy)`W@#T!@Zs$&8Wcd`tJ?EbJ8Qlw{PJ`Q~0% zJUS6Rib3Z@yTzu+hZ14;_9Cwd zwJ21?5^>_Ut{M0z7~H*>>PY0Io2{9wcxp))(XRN;{{PfF<%;SQ-5NdT zCh3#?kL~SD_CKb#E7|`a$$8R#oHjBedTVw$tR&fAXMzP29k!5mCClW6qvz7e)~0$e zrLkJ=G~Y|ZH$E}@{cHdFv47DJ3Un}EBkJ4KCR-^f)f(IY$_pbUUl>9eA$skj@2LE( z38)J5tyB@pTjMv{2+fcI@h%_N+saySXAqrtxwfhQI+%p{5_K~U$Ul#E?)ff8^?yL? zOKFw4H;sP5KF*_U9q-bPXT$#YdLHfR?QSAAhC_HKG7;ryBB&daHWB5DTNDaVCW7Ik z&H|B%u~9Kbsv(Wnl~8NagsxI1N#$6 zuFAA?#<=E4u1Ye#NWzRO=~88zNsa+RQ^_Se3%}@o$F}coA@r_=unR|G#>@wFgp8q` zgTg>cT_88OzCN#RO~Py$z|*O@vk3ULDfCwM9p|80A_ppwL$thN-w`ke$!aBHK8kAd z2x>RxDgu^C?Z!S+sC>uWfn;9^*$NBwT51PmGtZ04h(#LGAcxG_jPC!fa!9m|GmfpZ zjlm2CqZmx23}*fsfT2aH8Kf5_V~v+zhj_ z*)XfGgZ&Gw(67V%>j?k)zOwbL;tz3!zEmzT?VuOev*2jAOr2~j9L`i0>lzw|pOU_vy-ZFI zS7%uZM-(dfPdO_&i^0aZ>Pd$I?@#cyR~vB$PK-M+OO4aR##3XQYBI#N;p`wZDib=X8GF((!MfirU?zjUY{1+5X?9OsnMuiR0p z6*LvHh0aYcgAz6bcn5)S=pztflLvCvpoK#tNAR{d|F16-zo&rBiGn&UlLp!1#V~qttddyULs}CA|d&N{= zj7GzV+Z+QfEi0~W=+>Gk-%zUbsrFVA)y#xVfH0@Jc26Pf=c=_(=F3qA6$6m9P;|QR zqo9^$KCSMNDITain7qxL*phV=Nqb$qZmY4Q62ThkrRpY~^&1DvY4W6_qS~*Fch8W9 z^OTKz4{jz#4DM#KmeOW04(LVku#ZW`k&{;~>l`^9qKax*wbUurY!I=U@(RO3W5!nC zVHafzEQ9LptJbmJQ_4fPLoEvi$Zmo|3_3B?%_P*lPEut1yCc%tciT}<_AOPOK(V(R zN`N%Pl0;zDnG)A<0+gQ>>#1t510wZemY0CKhUA0AbTOL6G;3~VGgyi#N|po=u<}~Z zKk`&Ds)Q^Hv1-$?Rx%UK%O?0cYnf{4r8m?5yq4ZC|3&ln^GtGgqh{9qrZb)NpGi5;`<4wl*dHIr zuhBDjOnK@tHdD2nuBs27=zdtO=XbDb$zs6+Rr-&~)&YLcRTU*Zva<-k<7dBK{Mw)Y z(jWhvU+d1|@zMVHD1ZDTe$Cb6ANu1T_~Rpm7SBicC9Syr7e2;|h?csY1-)8(@vagx;*mhS1(GJ*CFezqa?>Wu}HQlu`5c z9)SZ^r-o+#pytg!MXHkg7jE{o4o)oCUDujKR@bT2eG~`jGC<)meZe_&L46^m|8#^m z;-{5LZMN@6nK{@gv8sjaxO3q^Z((b@PY$WtHPP0+qW6?&kPx@+=j{q8QvbrKKs2FR zyn~XWo!ZYu&75FQ0IokyMi7>DRqDZ5uP?Y$Y7^^Xg3=s(x;HWeT;k`+fTU-5(Syt6S*a_>im>|AsBB*`E$#F`2=b zWd@SM1*xq|d~u?N#({0j)RGDh4q%-vkEm4iv>8A1R*n(PYC5AD4sumD-e%i8%_t_o zjDkjb!fB-*0LJjO*Lac`P~%L{Z6=VzQjj+itCBbax|rUS9-9qpRYMf%ZG#3OJrJR`v$A{lr{S08uYO4kul-_fn1|xRCsPfm8SR5sY*&Y*!%X< zc3V3s>DmSLObnNNQ6{-Qw9v22N?YNYOz0R6LLEMQomb@E2f62oj1=}3CB=EH)Mk04 zX0-Xmo^h;*`+x9>*=kTmN-3OO?Kl*v*}CEZg)G%dgVfSXIBO9?9rYW@NdaCCV@Ci3 zr`m9-K_BuSOHGuY-qx6^WJ10|5?Y`DAgGD1cBnCi!-nTkgsGZ@m^L3-EnB{-tywie zA@Ji_!dTpx-3&n#uAY+JUuM_IOP;^9bu>xF!;*J-OPz;>k$`Tm$7yGEQC@(Fj3+J~ z76b^38%!AscJtSsTU5c?IOFf@ti{&aP%=?KG?s;0oxvBa+v^L`ID95%QEeTmP48WYWS@U%4W*HktvVcqTY`klSK9tULI`+_YvgGnt$$=qHqO@UWW z!s@ssAU@$Hcnsa7vwpFtSqdt^*&W3WxzK4ce(zt$N<>!6p+-=*V0(q?waVD?l>!qY z;vFSQivQuz!f#Awu;XWtqPj#={W0C;&>P#Nt~xA%mTF{as8UTsT|+9?Bw<@h-zp*= zV?~WtP#eD&)sy%!#(1VVtdoc~qKi9?Q74i_Elh`Wkq1Y8-*duto{P>x;IE z-FtQNgze8L(dJQ$i)IsT6%S;O;8(~#Ynv%!-Rz*owS$-xGFqU%1tycrZ%D^-sbnp| zA5M^9zuGEarjHHVy~cXS#ZyCZI`H5HdMeBvAzh4b9@ zy{Tp0q=9+q{s>E`$1Jka3Vstvl`feQsJ3eHKawny6xzidAj(vYJk6shz?@o=9vv@i z!eld(=dPs35|Lt3j6s-gb8EtEO$nH_Rxd5IOz>IMPAJ-Pvp1Mj`eEp=G)WA4*@=8z z?olo)E9+i3C0YaPBv3WUa803%JdPW&sTvh*TFkM|?sMMrb3NHSGv!dHK<%|WQ#5L! zxW-f)0aQOM!J|`QWpd-3DmP_HGvr2Dtn?QD?NmEQB^8|t9LY@4B}Nh!#0z>bBPvST z2MGN=Eed14`}`t~=UpedRkW32wTH`V4=3EtuQ3|dL=K;w;j9O_QmP`VeRmK%phOl` zQ5$;7li1D=84chP5pyd)Zae>h%Aa>|0im1#!*>3~rBa6`-B}EJG?QL@{g`PaEe-8K z1E>NhC-)Zc;Fs7IzJ5+`9BN1P;t$@R!xr@H*j_yKUnYf)a2)ScT(<4iuE8oD&9J%0 zT3G6w5p)MCQ8*ZAkmDB!wZzC;zBn#2hGAS}R!)Y<^q)h@xsfehb#-B%+2r2V5EXB7 zh^l)oSk)w^{ZXMZuSki|4EGe!d5j7r#!5FFc$$f&ST*-fvFca1zr*lq6&we9srjY( zrzZFt#o~=(L8C4fG?0L3FeRs0SRP+a7f$=(M`eABEpHZ1rx)8DbF(N+tx>?y&2UT0 z74%OxLLbCW)39RV$BZN$J;Y4ry878mMi$n)|25y?B#{vKp~vPTa1p`W>+Ac#P~utO$ypWfk!_} zo9k4VM_NZwp(A>&UyUu*(2CxsO-NhCJhDogDK|buzKolGwp{fVUPX9S2(KngSKXeE z5FWAcSGb+sZfNKELEPAGx3(MR`?FQ?Mezq*W#geA&ZgI5&weypRYY%pJX>``p`&J( zj)HBpOf14P`}}EXgZ?r;{s6|Uw)ps%1c$Yt*GM)on_6<&mR4Q5I)*PgG$RfApAjP4wIGbbWJ#;jkH0t@x?zOz?{!i5M zUzb`qKOot@qO1>_u)nk7<41OEIq9QiTMPg6o#O9%+rCj|>ij!B^RBpFsU9+DB#QI( z*HDT7S{78x!27;kEiK^1g189jNDdyQwS+}{ zCuPdjEfU>0xI2T*l`NUB(t?>M0u=t9=z_lCFOyR!$gFy3U%2!~Mj62A4S>pq)?!<5 zz?BbFLtXqzp^)@yG~>NKbs$m65|7Pc$7ck$YI>abN3^tJI>1*%GnYuvUKvQ4>^bU<^8g{COPXr+{NDa3f7luT8~y6&9{ z(IhZHO%Bj97&y?H6^+$zV(gJ{MM}Hs5LcS&Gzcb_e|H?I_pQ<~5yqRwh&&j!-J)dE zGC36&;#Ugo$vbR$CO!oBhk5~m?CdN%=}I8Y+PkE0q|D(I%+DH_?9phykLhDNo*wRIT$gBE4bTPz2(~5p_Hm$ob!Y(wEE7rFZ;eRO zQXyJBLj6ugKy7iE+x?2o5HR1wYo^(%+9NVsZ!O(t)u zt=ETb6*q)^6@1UgZ*muZn6^H&V(P;k2$iCprurvray!YZ`n*R}{@y|jtBIHD<_TWd zB3w42($-3}f32@?6%XNy=HXy(dDF(Z@<^Dk3KwwWyBs%#+@{L`NxQwboM^oX{UljG z43S(!*cy#)X}4s+XkPV(-BxXtUd#m-Hd3G^>P59(TPfOm(AS3LDGV)8m~^+5+_Sk` zDavv$b2-3-yRCFgDSXI8F($Eno#S>}phNR`2~6c4v8C0v`zjJLWelZ>NkTPfVH zYRml?`XLQlo`Pt@UEG>f!EcEvq?!cRwhJaS-QkvQiKy;|G_7{ZNU$7kNVC3E7z}F~ za&EXTU2Q;`j&Cl=q!Zc}PEV_JS#ISss7xoQr1{^rX{~K3wcGywFVl6RGfbbQzh{aN zQ*=+xv5af^`Z;EgucOE@Uq99%h1_qf4oIQ<|E*M~R4WU5D%y*#{}h?DW>fOhN`<1j z*vS}INpX%JWQt1T=mj#f9sI}0kqs$>3wk^IQHf5qr3LmR^GYw;2j{byc@QQT-S!WX zJiAl6|0-F&7a|1)o%4HSKg8587cic-NJafTdO`2h!3FgRbSxzG0#1JznW}UT#94=Pvy#w9_I3nD!}Fga2_aVAHQ&!)HTYdWF)yN? zAI@`=?)Q5-Ne0vWE8Y<*x;Ri~Nv(IfA z$*`ZCcY~;5*CeAq5=`5mLPyMpLZ?DM(4QZ6{|576cc~-W(Q|w_gk#0-&6Cg9di3fq zEZbwosU%}st(G(-*x$c!-`eImi9-@AC7FrOylt+qXA_^$gM#|Xh(aT{al=b3P-JpU zhRucom_xHK=FZ_UOCFtt{V5NAa}?v8$#PM|W`yZiwi442QIW+A(>JmvHD+XEsDC!r zCHG2G9?mM}Tsu%v1G{RvMIpOty44(Qze^2X8EQn&NTwSsY;_D~F)~ zwZ;#b=`|TMFA-mic<2)7q3o&RXn4KRazW&cCFZ164XxX!z2)XmLXddxe4%!WB#IDK zRq0#6uol@vR5|766g*K{s;pD2YnsSWfjDeq;ZL#Ha#*2bfi8=WiQIx$qhP&%=ua`_ zVFxSXRXWvzy5{OoD+#M0h1xYLrF2z)seV;I!l+e{aOOL;817iK9=Usk8HmW8wnekd z-I!r8jxWUa&dD36>0pb*Bk+{Fn&5(T&_tpRx>`K4A=h`M@_MB-HJ&h2VUEAfJd~3` z37w^)HSOqW5w*jF1OBRiEiDOw~O9iw{_;FcA-i;e|!nY#trV&%Z z+5%cr4Sdc%L~^@eT;p?;Hi*lxjCQ;K5msq@WS%-XIEo$Eu19K5bb`k;J)BnmkP|${ zKjZ|DY;?_GlGIe0uc@_*AGzP=IBrriix?7}D*97v^ks>N73MQLYg1ZkcqFM>)ygZ~ zx_RTER`ghr5chhK#dyR*UDd+)R8c4^2Bj*4rS$!@1S>&?NU|e{O@&bkB}Ccz4bG-K zbp_z6V+CLv7SQ1q%QK=!%TyBWRtkt$>ti}q3R8K~K}m%5-}Gx)G+q-5W=JK$nM3VW zo7Gp1)I&;Q{6k728$Fanhf1QOI@M*`sgmgMl9({jY)OQp%S{F8;zundH^Cz&0eg4X z1z_E3nJ8~wBv*u7wPIi_P@}+T0Qp2M7nLA%#+ekGv{&u6pYxy;(DAxeI9U<9qD#E4 z=>NYIv7H2C)+03=ma!n|t|)1giMn1Jz{uv;`Uw?3Po`XXuq5*g>OgO~V(ZDO6|=NB zEF|$iUF#|TTCHB^G?_gZWCj)(26Vn!XTn4K$&eNmsc+qBKhxG-CtY!?UVZziK15^t zNeY^sqUP!G9k)R9pO8Yuj!ThKberJa^_7za=x>ekJ~bLao7ubY`ki%KhI zGrh1j2OgIN9&0Ou?A?yHobl+woE=Uco*lgs`vc0zLF`4=mV25HbOPMs6^ z=U?D?!KMV~1S9U+*oNVz%|d7lt{yg^;GA$jg4WI>Y_+d)Q?Qn#wqOH4g`OgLz6xJs z#IKod4Z{j8bIKHfe%R5qG&SF4hEPe`S+VrVLiXlVo+%PZbb|MTZi#*c;y*@&N)jf1 zM36o2OChTs!7_c1JN#Ht(Gb3hUvxsjw=x^_oMZGlBzL60{(*lT&6n26RKLNJR+0>- z94nzdB{W<+DOpbj^u#K|ph7$u;#;(T=U=ROv7f9)DOCP~1m#Ms>d%4tL*BUGMt@+A zLofAbHjc)tC5mK2IOZzZ`zDl;ib_CU9!6LQr=|xZdMo@4++fN20=_=+qSc^YO3aUt z6>$|Zx7UvDgaC`O?A#26s%^{`Hc5xEg}YSga56;dX?M3x>w$%m(K&#GB@=T12Is5Xaiqc*yGNY0 z)OtB%<`}@?2hwm}$f9(BHYc%pJPcN(45h?8AGJ86X30z1%pf`o4fVD+NV-8JeGy3FER67Ks zE~Dma_Q=$(b~Dkn?Iyk{OmTguiARfm1I;BnW5|XPgz@GFQ{eqTd^WkFk}|GrYYZMQ z|Hj)d`NJMG#WXG}yR`wwN4-_86J{Dv zK3bWqw(=Z$_ZhHOllT!PAkbnWxT8j1c0a!=!O|>$rBFz^SbjnaVdbdP4`nxeR|Y50V^4^u-By?;iXPf6L_&kBe@BeY zW0KbI{mRsYGLs8Wn}SP#FM>6AYKy*08#EaGG>qtb1P-WHx94ebGBUCunRwQG*)j7g~&|rv052TDEvQ|hA zm8*^f#UCk49{2{}tx(IFIZ{z|<%vbQo+l+Gmj^;qo*+qW$i%ZeA&N9l%$sOMfH;?o zm@67ELP^F82$-r6XKKlG1%XXYgewS`QN;m?k>#bXAYhR)f{>r8yHNRw^$O8A zru<-Lqkf*907;EW=8){S!12VX7mszq(`ETJv?jLKGkens5)SRL(CJ z{QcJ;!3*Rp<+LcX{82X>SLzc+xV40(WZ%^}R=8NWjU`OdR{d~$t5AuDRU&wJdNhY_ zSj8&EC?uHjVanYYwj*-4E z3@KC1rB%#(*@3u-xC#MgDJ2=bJ6L}XVSMPF3BJ@5nfdGFOTVc+UE;7Z`P+2aj^8}P zIMO<*(x4DT?uQrnclZ<2zlU0JGs4X26?>u-7A&NE{xewOzgK28F|d1CIF}sX*Eh&y zXYuog|Ga0(-w4XpIlV0Zc`e_?@<(xN;P<#cSPTyTUKU^!pmY>^c0iO90{ppYdiW^R~2->%$&ve8mXb<`$J zi&TrNlfI*lyQ5cmTOdB>FPzUG{hnWmqo9t;5vY0WFVLvd*`czuSZ7@w_P#%y)cwC# zTmPb5=z)j=9p5NhH(9G0y&0;U)?o+KNL`EFKSeCXWDez&Y`e0Y9HK(!+Jn*`63vTN zev$l6%g`#{n`x$_gSw3R)3*PP%Y{lz@!;==5PC&BR?_|=0#s9#U{y20Sh8c1krir$ z*~h_76U?^k30!mIH534tnE{8=u#`>9h3GpRS8e@OQbGyMa%jI4YuxN7$CtrFA`O?N zEOn3AT_1a{R3hvIhMip=<_H|fljy`GojY{aNGX!p!~{yV{s-Hh?5?A_vz{t>b?%LA zWnn_Lb#zmWQzlBBFkHiHOY%?0kp=aALez3C$C3`tM;Z0N9A0W;#ts}#;H1W(34=aT ziR)IFfup#{HM=w`%V6x5y7(Qu-UWkYG`qYo@6*K*BU`O|K|31ryu zwSye;@f?<7_PUbpWQL~AxQ>A}tpRUqW;oefcG!3=AvDVmLjz&94ucllHim8vOAV*Szr z8r2>M(nzU2xu^J zFCE~mb|(U3p;Q1FwR&15B`?9&NRd*APm?Hq*_f*hiJm|mNu`@+PT2uP3tY=%uSg?` z%28p$j2)}TSSKYZN}^Oq8wR3HS}jci#owC08HAd#U;eb-uT0->P|$O? zj^GQ3|%xyLw!WG#=o6!a8!61?64J5sE4LlAIJi~bGClrckNI_>|F~PH)z@ii|Ot28>E;5_7FtxO#KKxVTv%8zMs1+zV9P=s%2qs`hI|ifyI7;uXzIV^wjlyF~Oa# ztBVMpxxos0Fa<120ZR#<M_ z{EhC?5UfY0+wMq_-<1<1?HTPP-@RBz25ar~0c5)UhNE(oMt-`tme#W^gd2|9xYI+8 z4ZCId_dELT>L{9HfH?FQ)d{9`{RJJ9o@xOvzV?-9V}RNVu8FCZzT?#8&asKx`|C1qz`6%WR0XJ5Ox* z?XAq$OW(I;Y4yiDsL>kYRc*MbU+p_!Gcn(c6kkI9FNk3i4{YIQHyq_{In0y7tk zP9{Pi-G5GB10iV~M2XZo5;U3%+@TG)u?u4A(bKu!9xW8D~{|$^lkMI znOhzIkm>7ebh?GN_X|){@g=9HFWkN7{ZVHuTM=b)1fwx;eYIl{&m&^(uIarGzctS$*G)C*E_-MPK?xfm(T)oZc*1DE95ylHHKb&n{{SVv6(K9`b*u{ri(?5wxT-X*IE{Aq zZ!47_hWRwySsVmQUza}hp#{8EVaH8U=qZX7__)_z+InQ~4a1&1!&bw{TD7EzMX1ha z`^z6%xik99s+>$S_S!iPvwEj4=&f`g-7}?Rnd49xhIgLPBd}OOAZ1S7@10hi@)PPN z`(%D%BOMb3RdFk$hc@XnVxB-F(O69NcB ztg51DVM$BimG>}Y7mE>M01tH^5u?BsgXr95GeIP~Sj-~%#bRYYA52w*MrgwFs!rW^ zF;yy0wwKE|FN?p|0YF-y&CEkoN7@*yK;O6jfmf)SSp5l zE6+4QX8(coPEV2p?c|I~a*$oX3eE^0K+?3-_;NdrA%&v?TC?r640>cYLKfJSN>)nU zKci@98m1Uiie?x#Uuhg({0&2I&n>l#xVg&3-!BzL=Trk3 z4lAj4F0hSLD-U0I+aQUW2b*u1{JqISpZEFF9O z0(MqcJLk{uEy2qq2$He-*f@+9c+|TV-WHP@+BZ|ARABWqg_9-L>)Y0(64DloyXgzE z@f(OcF;?d6N_DB1B@K|$$_De__%1?WWr8$!F8vXgUJ*z6Kg#!1ac;F{9 z8v(_caR=Q$V7*KIlz$y|<#&E2CzahTU)#V2iCKrUeXWs{zbCCa;L5`Xs~z)oFL_Zj z-PC$EgAsA%;oV0sAdl1sJb;s>RGKfxRlUG$#gmLC>PjDq+s<0hZkoNpYF8-eKccj# zIoV=j{YIs-qrFu5Lk9+5Z4P!tNBo;t1&jTFj^6T9eR`*pjY5GURd&AJv!Bc@pW=6C zqNest%70XK`oiAnRe^QhLC<~(&6=iX3ZIwF`z2@m(df*U2WY=4751Q?(2eGMRu5JY z+urkOeI3%nd3h`*>G=$*)#8lOtVa&5Um-WpL_s@igc#R%Xa))7g5v^Xr3G3M0bu!{!ItXWj`VuuX5sAwm! zO5ZIW;!tL^l6A02y8bfx_BJP{+?~)A3nglHJSLj)`95)qb*nZU+n0)z4 zGqLb@C{{@?KHD=L!B#(OD(Sih6Rff_CVD%ihx|EuA?jkfs4cXEa?iG)5ET5e+!TLo zmj1kD(5EDD9a5}}&#KeNeeu`TsejwOQO7wXMc=79VRne9tg79qiNkXQ$C7WS_*KsS zHk+#Dio^bXrR}9k+I33FGc#c_lTO8sQ&`K2+8%A0*FIaytJ>XtKQg!O++q4TTUw`_ z9;pLY_N#m^&Wd?Y$vuo}&kEe2olIc>g+9!TM1C}=zeiGu805&2P3S1JoZ8#M5*+T1 z(m@_t-ojC?(FLMxaR@A$S#nPZ4f3IW9&RbPKw5Bt6s6GK@4*FPGqbLgKB4YQ$|R8< zCOXUq;$!3YT1%aOX!*}R9%$8CJ&l7pRY8yi^WGW_kvNaJsat74BYH%&($6k@Mf&Lp7A zhrEtp7rn)|kxbd4MLhO~=9 zWZ<|71_<$tro^Pc?4TZ58V3Y|*n1`&WH1=C+sH>tNf^SXgEUfOV5CHCkQUzPqIz|V zv>1a>9Ia`P)>3OU^DYg-4qBsWz6=O!kS2cz_gwKN4$`{J+G_QpydE_5Vxl9g(E~}# z-7rXlk1$Asx7r|$CM^uol$0fq8QD4W@DwsMg(6168oK{T&G!DiZ7%D&;`YN~dN~)u zd_h(zyMK$=>{gwB)+NO=3$==R;D76i`j@cKrv07rY|8(;4hK3IPPueoBg2JzuI?OontRHw|I3%_w+cKOokKPA2)j z^M542A@?KR%Dc-yov?TmPg$b=V|-OtmF#H7I(LSq&g(}`fWw-w=Q;SL%!rdCf$TO%qp4Jq4IC`m?;w2+&M{gnM zJv>=W3AePX0Bi0H>rd2b3gsGNh?*t90`Qs-#3GqH!y;we85eIZ;h0N?E-EIYeCAzD zktB=wd-l}i0{h{A*MBy-ke~CXc9#rHS@BcA1yhs3soiv@)$vhzN&^;7l>&(B%bYoq zECn~r=bWi3JKU5=u^xVIgs)voj*}6vqkI$ zrY1|qN$65bQ9zT>Jg|d&mZm9YBy?GXyM%_o4)eJ@2Y*GxyM$JOm4ue1c$d(X5oi(` z0VfGv)rh+~;!HxLqQ_@>itE3$n5^crn~zIqMOH!=PBR_4MiLSj2`zOAT{|@y9w(ve zEJXobLSQAK>(dl761pM6gM`3KLMwCdH%7cmXc)XCbW@6V3EdolCZSc}B%xJ}xLYF5 zB_w*Je`|_cbs5>cyqNS|QIpVZSqa@eQZNy%mWYHdCIetq&2FEX+%Zl>Yb;3tO+oIy1Nl~PsDjO6Ft)3 zkm7doXxWu05g%8gd$S^X=wTPpeG-w-Xwg+JqWh;N8^?+00ZURq*CMbI(SvD{84*1c z;lUDtmxxAl@S7suMKlUtTJ&&=cM)xlKoikca1zm$M%*J2XCfLCJ<@+P#jU)WV}bds zT3!>;V_6ZcUGE~=DiH~dguzOS9-o>#F-}BJT9N{qh&FNHUdpVi@-@l&o$znk2n+2u;{_>jubcV8rbKv>e`x!UdW2* z(GII;FG@lJBO#!Y&`VR3o#Q0*vZW}XO9-qa^h%myMnbPfcu=BYm(Z>p{A&>(lnA^e z^m>YS3B3`4u0-G@p|M8Xn-S+qBzo}sR*GA7T`}3iXWjKR3B8?_&`FzIiFTVQ0*S7I zm5AP%n!GzsMDJOWB5NYr3RWW8lO~xF(fbkZA{w~CMf5=q{=NnTSS24}SZm#U9Gsl~__f^KPt(==f=wKGAM(&rXP1Db>ugO!9%PE*WC=#&U|35|l6C7PFmKQ-cALfgShLZ_v8m(b}E zXcF29P7>;G#GMgwCZWEYTta82xD7n&zqy!f<>SWstgM7ion_T*KoSzTnCt{937tJH znLkcK3oJzeO+vfCNbOM33~ZN^v`QG_)Gc;Nwbkbyh?-f8CU5xg;boMg^!Ov|?Iv%{U2NYbgq7650z^ z5*kiZ%t+|E2zLn$-|iB+J_mn8#Jhw>z)Oi%rg)dojS*-P+5k=xx~UO&bHtg1wu>J8 zu1ays?kFa^_^et}lh7?$3B9+;mFQN9NNAcfuoBU2(~{NWM0C3)DWHjHBUp*(jx@=P zh}J~7i>PnJMKqFwUmNi*q5<#{(VZ#YMRZpLnur#GlZe(e;?_r;iD+2#;P>tnx0^>R z*U}vDaV5GZE26ReOo=u~LIRW0oi3q!rzQ7|lhFN^qJSo$0kD$L#x%u@gdT`+m(U1! zRkH_k@DD}2OK23lBs7}hT|%28&?K}KoFw#cBW`oVnS{nfkMy^sxRJYPI@V#0__%}~ z$x3K2DAA)5klrwSXnP~>*@*LcCVKGuT#8$MH{%XI>+Y$E==rRO-t9Ie+93%E zjDUekLN829UK}T(mn=mAO+s72NMcH+Lhon9s5YY7+V+E1{cRhx(=?A%T$)P)X?c>B$Mx8#|3B+M-=x7QjkGXH8EA#);@`OHx1+(Mqrq(fl;Y zjEELQxQl2EylnMg4t`<8yNLQWxrok5@h+lsBhW-N51d4_s1bKw#F>bOM33~(PjP#A zwBccTX`5>zx*#i}D}#s@OGHA``hk^*E}WiRG)_bpTap5rh*p7>h=$T6Ga|Yq!h;rV zaS<)a!CxBjL5sjkiRaVhJA|kL7(bdzF<>N%O!jcqO7ZF&A=$bUijEJs{@F1ecTtve;`0FA*hzPty zbbX3<5#11hE+TLe(aJ{LjS=S}5(Ea&PLo_5oZz_c)}&LF2$|l(L3uj;ZW%AO7v^_U7DTXfDXc&2p2>6{QH<@2;noo zl$1ko$)}Q*5IpY-Noxph{zlRkf=}$1w1?m)UtrF|DZkvEbcW!i-APvn-g-z<3BkU# zT1evH3%Zi2A$Z*vl4%6D!raG)1g`bt)NdHm3Z6UFc-~EL!w*$1?eLx zrh@B3vI;+kn3b%;iwH}g3L`oRbR)t0?yqs9Ux6D1x6Cq<3a(}x_je7-!uYtfzXv=wgb;Rq}?K3>L1fTi3 z=a%4YL3uV3e)0>U-1KAgs|Hu_87~tBPx+GPgy8U3JtG9~;1FWviQwj`E*XMPebH1+ zPe1&ksoE}rOTQWt(T`1^wL}!$1tZFX!jFH}3-2j{vBU=Wb@SH@ui)uj23PQrZ$Zn2D2Ed0Luw)ez^^^Z5nLCS zlcBwZr0?ls@?ME}h3-y!`QB6ha_K}bZ$&K?lgk^%$9(y7`R|@b=@oI=J|a%|?rK&( zCv#!4pU<9B@;Vk&*YlmVI@6`s&na*;gl|ug-2Dcw+kM2E?4n_1yH`^2T>3rSDFZ zL{^inb$m`PC#R&Z-uedZ&ITT!!d_B!HdJAl; zoPe}BZOI6@t$YTxBTA~=Fz>xE!exA$X*oYznmgR{e1S^SO32oVbaOCCqPUN6ba=9Zz!;y!5(jiB zon7Zq?9bAv;p22K%+l?5ExAZ^1;)Ywm6jl(p>g_fi4~ZD>($I9qkz>}S(27mMt?4i z_*c{vCfmWQTemdD_q|g{2Ib^O8}{-MkXpDyADa<(jXR{&izHc_4`ECad_wz`#B4;<}lw zc&WH?hP!{-6@2hgo)dKqcm7U7#e1AH*RSLeWQkMMi7Qe`o4N$ZXr_?ie`Ovfi# z7O0Qpz}H6j>3;?F;XwV)9Qa)kzK)ZtlGTCwx*YiW2w$~7)Yk>-cjv(GiSQE+n*{X@ z5&j-MkEYb`jqnZD>NMf~z6ihl8A!TTuGW!*OBWc7gvzqbqOTY<~wK9~c4 zD8gTm+?!D!jqt}M_X()?eZu-YhO%>aq%~lZtNz3OwHZ4YYQPpV7{owZ!OLJgQcfOC zYrtcco@iPPSR6oGb8_=|gj)?*8sJalz@Ln8s{zY_s|IY#fj<@Dm(#IlxlADcbPoQR zh(8BB+u8&D?K${oBfgJ5eu>3&E|TYR@Xts5n?`?2puZyr|3btsGy2;D{TFlaFGc+M z;AxHn{hc}Zmm~h7zlQzYz@@3LLncA}^$6c|$Rw!0 z5#g86`Do7kSj3+LzB%`AM*LZoNsxal!cXALq^7cYJHl_74E5a+eq|2zzEkM|yuf&o zPZ&sLoBYKG_&`b(IMWEd=d_9cr1vMFFifS|lT)nkNBr5{bU(&`_q~Y2JO}<^gkL;^ z?&|#txccQo$0Vgi{w6fHD(T+RbI=7O}9bcno zKJXGF2|gz@;!cdXGsNa77_m9G5qDC=ZT?!)&RN9px03-&ipvQ1lnCGTHL|k^sIoIJ z2YzaV-+3rXw-mT4 zLlmxUmu9u?qtK05Ds>Z@4or~mWi83&sk&WZi3#E3j;#T;EJwIkM!c)r_JF@C2Y+?M zySnWJufkiNgI^Kxu5P=*t7cx4gTFT7UETJAm%0t7cvrXUBGA=sf{Z%w`UrG&oA-)y zd_yC}l@WL<4!I{BDyrx|CNNRYi2Y+d)*-{@YV2ue<>J{VH>^d<4`` z@s1YzTH{|MEgZ&Vl-G)KCYyI!0-~`8&j)TKs3?KE(gd87brEPC>Cu2&--x?A;vSo+ z>NFmgN&lV*?^6r2HNZEdWHa!4BmCuWq9ogatD4-G1HV7QulY38cLnMjbKnm|`1zlf z%@5QcOyMqzhaztGOdXrE3+E`G(G-_qdQ*hou0F&BWC!2oSUkE58=<1IP#He#g}2$i zwzP11ot5DuW~+!$O11%4VLjTCJeJz3t(Kff2Av70#~ayW`;H!&?@RDCOpYYG0{V#* zy_I)^ui**hQ{(PQXKR~(J=Mb5dB)w-;!Y7t$rj+^?iqYS;w~eTXN^e#@0+fi1nhHZ zsu}q65x!XhC3!U!_%35kh^?l>0rXm$oU6_25jQFew;h}^@kS$VEaL8y$9`9!_huvR zt%$p8pSZUp?j%*o-GScjMtbi=+_Eo#+Z%B2rnpR*ycgltIh^~3H$i)H;O|HHEy{gA zaJ4`m8il=NjdP7BYap+sFA?*DUI;@ zIwRJt&TI_C=QX0kZn;w<@r^mW?D>fE@1U}HEUjXvwVG)=-M{)Ej@c`nuS{p*5OPPsJUE|zc= zfx{MoOSl)dCKpM#8TGo@m=y5zMd0p2!ByzcLCkQ z=c-0{eMw8^R?>ZMdHGzOqDM}^k;3CGd}`ghS8ua0=r)Mo789^s~`&A7iK!mV9yMtx0$ zTf5wh`bdOZyWEWW+6cFHc>?NQ%kGRg>wEOQ?G@p!RKpy%F5;}OH80@SH{$M&IO}T- zfRjPLC>ne1pMPy--M=lILo1AbW2L_vG)3WG@wNOTgXVh}#%(s}DdSwuR&$Xv94j zan^;KfL?~pha&t&CBGB0>M)EplHC+>3{cv*`H&&vZiW;o&dJsrA(;a+LIWVxNNi5g z%f>kQlgB&w_y}`LYsPK2;)`a09+3gckglpjr06ex8n%K(p$a2nukbMyU_e?8sG;pryCXCy>LU|0lPMX|j#c{a7; z^`$19B|7k)v-q46b&qqVAS^>dTZV=M`uQBR2}@`b)+lHd+m0Nx6@<`M5ZeR#g&edM zvd~t@V*&kQ4%!q*Xjh;;&dEzDdTduAS<2&$d|a?Qv%0y5C1g4X;$_KIXyhs~JbI-y zc{S~1?y_1VL>M>+)N5&CZUqjO;we~6ET|~=e8CpFiR$aZZ)CxmjqW&ADXvvHB#mf6 zMcg!*h_lj&7F5KGzG|!Dl;W6D)Dk(R_-1{Iv(tzcRK!J-iFjBV(SnM2!=XtZYetmf zTS`$sl;Yd?FYV8p%sE8kRP9oyEIuUqSQD5Oa&mg`0 zH2vInPt?PTsx`i=E^^6#Ab#~jlK-%t-;H(2dRTGqp1IFthbf%hn3=6n@_VzAzt$(} zK9b}GW{ORcCh?D3lTXsx)5n=k9I+!c(bUrN4}5Crc&;G}_Gk-__VQW&Aro0FVv-R& zq0PQd^sl*X$>~$ApigQeIYnUb23!Sua$9mrTO70mBWPI`&Xz}Q1FGdw^U_4;?WK+6 zvx849(NjIO)BNl7HV#d(MEjMfBFNw4iJsAxocYHmx@RH1{_8RIAJx?PthP*hdHN=| zNdrnzXr>IoN~&kKCG*o1$)9`@3rx5I-Z};DMukNrgK0j!QY?%(uM}GY@SH~Axe<7m z&7W-#z(tL~^CHkXW;+A!{6^db5qGPcM-$*OJ(@o~oCg{2x z`1KKP%e__y>Nn)TS4Oxk_gWXI-L1r*k`JrE13Yd23PQR*Gj*0CDTaVD^@P`U={C-ykq^bqew>8_O3?B1nO4H#f;bT z3E+D9;Zt1m$qAIKU*NN@Em_YghAflUyO(&^l??NIE1$dDl6(B!x{q12b{`Jm<7qi$ zhA5v6UeE9Kulw4#_r|LG{i^PYz!GiXT7I#yEqNfV?hjh7gz)OV7?i5}Lut0Wx{pSn zRrjRB2vb=3%PDfMGH@U0PUtE)Bu zmr_5T1AijIeRWkc@=r#*udZrFe_O<#rS(tE$Uha~wz{er^`|4;R#!En{!BfbRl<3) zsjoCr7q60AfJdkx+Ob*aI#jnqSxd@k~CRdOeARmtZY;q_Hg z)V)eh0H3!A>$sVw<^*3EuBx@e>(mSW^z^OU#(<0o==rZ7H1WwO^_eZ$ZmuA$@h;Un^+Kl>{5pLD18TGRw z{9!GDZAN_{!mTzoqkeXTZ`UIHTeee0b#DSDfbV>hDi_o9k8O!jwO+Di=lI>)N?CFW@e2#0^E< zqECTa8E}_0;+90*3tyK(4!BEGT&C(Rjc}i&TL)g1>9QRBNX7pD^{4>@*H=}=J#6NCR zu+8Y-6!9Ned)|!x%@M!breK@VUlsB5{zmO{lgf2Vgny`6{btl}jqqD1C7s(M{@O`N zXLZCsGAZfY9`W~0N;-E${Bx7i&NUJL*rc>`B;r4slyLosHCkd%6jA>wt;6cffW5SAXr{9Npg>^E#x>s?FeABK*d0 z%CB}3Lvuclp941& z8iLWcSd?)Uy>(LdX_)8ef721=Y6JWGNH`AtdG*wVrl$^8J@p;!$qVYKXIOmE(iG6< zzWPq~{`yO4j$BeZBhKf(<^|x(DKJC#m58@~`#^xdngibz;m>>%yLnMP3x>&2OZ)AmYrSF%)ovDK29l7e@FV`8AdW_&GW7b0hqfPa(`<;41P(Iq>r$ z{9)T3x*EI;=eR&s8ZdQ=(T#`28Gym#hY=B3hmUUlHMbIdIR_H4(Q^o3l1R zR@La*l&s^1BMyaPQy4fk`qwq$u8+7yI#OgzIAnf9BW`8H?X|_Fr=mg7yRi{>Q^aww zEwirR#NW*+ZfKabI(*jg$~9qCRui`Qxs$g@69k5PpyK}4j^wsf6R>CWXKZDl1%(}} zaG8{^-CC_A^+RI6y`yer;2p-J;I2YrB2T8*q)fUHM2SRoj%dgB5G{q)BGr8zOwZHbLzS z@OyLM_eJ=#lc9cpgx@?(Jx5VTm>YAbKM>)UOE>#Yca?uI2mVlm-}``Uct3bqjnN$Z zrikB$P@xT8vUxbguReoS33|-Oi(_-PI4%wS;Vmi-p-~yIDvn1wl1EeJddw0N!gXYK zNNj7GSf(HzkN9UfEQ_fl@KU@dQoQTblM(1E6vnZoxHSU85e{0shD%^(=_mXx`HY2+?!k^Jj&I#&qMpHhD@YAHw z&1CU$grE31sOQS!lZbm=duE$4-PftMP}XX@_RLPew2S!oh_mw{nvp#r!tI!dT(T!d z+(vriPy;6CY{7IAmV zj12~Qr#I5;kGQ@2fg1|AGa7McM%@B>k&cFAD{4D9`Q8jM#4V12PwN(oTY9gV33nG|Ke6 z&gA^gIAFWL5(2>Vb5}A1W&@wajr?3#gLz}R1&mtmiyCnk*KnJ(^LSf;4W+P5-MgfQ zzK2_qs7%16bxU&Km)78GGz&EbS|)vI4*Ieh`i8%O_8!nO=$EJHJ?F5H|5ipdXVpY_ zMOK6h7&~b%%reQ)>)(||R56iPXEIFGEqty@sd@(Moy$VM!pIwu0hQRU7TlLgkG#WP zjsbY%BcM7m%RB9Bg@0YsnLKlkGjeUp$gnY@*v7~R(Z$Gh`(i|BXJiL(F>-y%NTy(J zh}7TEffKs|d}Sl`;E}j7!r#Y7U8J_*D`A;MxM`cJ-Z&hVr>3 zhyJY*|G*3se;DWppWAZat0R2pI`fZ!)h^`QQ~av)sA)W2Iv-LCKIJJ> zV0T*{gujm7D@UM#-^u5m6z>YWAp%Wr#=uB#?oDx9Ph`pT0xB;b5fqR2c_#1ouZ^9_ znW1Vtpu8#uN&;SaeXuimNO>Kf9pOAXy90JKP1f1lWb6rO?DY*gdk?3$MRO50k9YB@ zvA5az+TvftJSh~#qhe1nIG_W(*n6xq**YCWV}z}_>)o=LC&98Yq4XYy>yUZ`Ksd9nbX)`phBfPFqq zHlqwXB7Bn?kHx@M9bZV{o|_jV?rB-;Wr6HVDQv8N7m|T<8Ex>X33ZoC^ELl^y)$_s+_d+GgsK>fCcvxA$2yZY zB~(4FRlgl?do^yTenH}I8BfBWB8hJagx*eh%1C^7gnyv*ZQFoL;_swz&+5AoXA<8T z$iA22#!FmGxWt=ru_scO#5+M&%;bK+k`>T|)gQ2Dr^#mE z^CR4ZH3(e7T9Cp$H-iyp>Nyn1E^Ne|6LCAua0J}BDQ>(Pi&+=`aDXprgonC!UZifF zj|np8+@2qCZeT{ByM@mMDP0FHjzBA7y9al(8Em;Arkah&@WofdRLb^P{t&nyBS0P=I178;5?%E90 zugrm872!7F(08FzzdD7xtd>WdsX#wCWpG6!?wW{uUVh8LfV(!ujaLDQ!c|}bS$Oip zk*t^L5Oh_h*QInFczpy~nT`lYnck4%w(OywbrEMI@u^k3m0p-P`qxce$>pKq-K;WI z3>q2m%JQnN#ydrsufT5odn1jRALiiW@H%Q4JP8!0%{;hpMqA zQn#wHEx<=|;Arz}FhsUnt@oqjfX|8uM-tAxa zbR};GX>O1-6@z**;5MbWOa*;7!d*AVz)Lqbr+BBkB?3*F1DCioA4zeeA9Az=kLN8( z?aiYu#>f0?Ygcl1kmlo(ree^Q1uxxvqAPh)($v!z9`*6W0O2O%3Bg^2LxIq?l&4Hy zpRz0nue>tQ1;2&Q(<$Eb`b-46Z557sxIM*fW1O@6Qu=;;YPR)R&*XFd^?X`L~U4)e5@*M7pybQp-|b#Wl{QOc9^{;}~c{=A&P zshmDZaU(Ba%^qhv5wASOzDmY>c6_I)P{<#r<_oV1AiuluPrFJv^&x`oolcIlq#BZK9 z3GrMI;cK;2pqX?QNBFZgUEGZO3nP9L_~!I4iugUMRn5p>9N{nNMzLnx4@LO9+CJZm z`Xv#LhoU+4B@w=qHmEuIOC$bV@XhHjjrflyCHu=F{>@3r{_=?5%()@W`M)CK?*`wT z|78*X5(@yD)4wv}p9bHY{#6lwk1d#LR=ih7{A%#c=`WA?rD`CWkzWzv3pIJsOgFEI z@Y}6)M}kqlHpfm4NBnhGx*LL3zAguUeZ-$UDeb%=;xDmv>CGC6l@WiA=3uwLj@FUf zn6fkY3Qa4ImtR?Huy4vX*u!C6$jxf8g{Bh*RvnF1mE@LjE%vRJq=2_+!}mI{Y6)&j zlgu>mt0R1cwwP`Nu7=?D9QYj(K4j{;HL$WK#d}v}Bmx;AaTp%B-F((I;_i&Nw`YUv zyUKBQrML{c>mr;(Q#kDp_%NUKDSYU~LNdyuy?nd}baz&uH&Jrxk>4YM3eDWy)h^Ht zmE_)W0=>_Y6wp_G4hHc3X_}tpjS)Ck&ZETv_dtrvWaYsKcgwOAyh`e!9QVKR+Y^i z_Dt_>#C;TTwyLZ@;66@qnIilo!mm~jbMXIT@BQQKzUn&v&yV|S=H8jPNhUv$;T8z4v_H=bZO>pZD+c z;}gK=I!lLnZ}6w}A?MF%tKQuK{EdBZPt7-#aJI$$Jpu0aKHLBnZ!W?8yNK=sUK;T& z%fNqc3I9d!s{k*Jc*ipE-&ex>^CPRZ|NSMrKR@#RRoZ`R3GdI3tk(XC65gL5S*`uI zmGFM=-)il@y@dCB|5j`N9VNWq`?p&ACrfz0_iwfK-&w*xiEm8)0eZ@2oLXkS=1X`x zW4IdlLJ98o`mY9mX9@oUY>!wSo&Qq8ziCbIKTyKoPqGL-#c-ve?&=TMi^;o6K)*@t zF#u(H-@O>{2TMTPr1nIByL&O*e=Xr`liE`O?!PUD`=JufHmNP!-suwVlNOYHfd*wc zez@P@fFS=!34f0^waxvk2mjGNxF7g?O1KZxE<3pZe3Ev5Y%$=Emw)v?%K|^K815%aINSYp1~?J?rxwHASHjuuw?_lq{fps#x`eacZ;uDKpXtL5 z(C2{?+`DE=2+nMSL!HIx$6qoe1^9!%EfM+*fU*c5T8w3}j8wv( z1fKUU056MhW*PX8l<*JO4Fs#T|H~!(kJ$|b%eEh=W^*C*Z7#k9Hkyl%_ObDE@o?Gf z+UG*8`nkCM{eCV!)^GMn9^Oas6Z|XY;#d46{Hp(Wq?6z8=i=j<3srzzs=_M{Khep5 ztv?slu?WtO1yGIU(SE0XEWd7J5!~9xBIq!dpYvn+jefHOlJnoo)_>L*;so$wh{u+J z|IHHq$BiKtfEPpj)-v#)Ea88}7-F^dKUKni&=_L1_J6yC{{ijxU#9PDoIKB19VjcYu`#;&K zoZd2Qd`0`JzMoo4MY~$dSG2FH`14$Fyn2^*hnKHuUsdxRzq@kHyMLZonSTo(C`j_L zu>sTa!=5C+G6qQmOe_Yd^!cxj<&TUlR?;6I(;ATg|3abty}*hzpBP&@c=)vv{39Qc z(LV$H1JWeR!2fy)|54ysFa}<3)Nl0RMSv*(?_P_qqDsNPT#16J`GXtRP;oH@Rk1Q>%lEjLf~t7` zT6$b8=&D$m?4^4AGBkYX7g>$|U_r}I4od4A11&!#aTPSTqyj5({q3>*cg_;m-!=9Z zpo!~Uz)D;n@3a5FZ2w*f?#1;1;3clVzYP2zl<;0$&j2s>c%l#Q#q|$MKoi$TfRniX z(PFqiF5ygEpHzGF|70KTj)(Aa`1d&fJi8GdRqq=4eRQeV?Q>!`LBo0c6^Z_;lmB(! z)d_Co-`E5T@Y7n`{TyF}+S7dwA0W}^OK{6s&ixV;<=_8Y2K@gk!7VzvTi^`n3(J82 zuM+%SI?;14;PPO;xD5E;mf-KO4E_6o7yZAq4E*1f@Xy$S(nA5Azh4IaA4>RN)3Db`1g;?wEmS6{OwxzemWrY%rf9}BT~DXsGk)0mjn14MwT``Z!E$8 zn-<~k_>gxt-?R+)?Irm8EKzw9c#-nW%fP>-gts-1(|~Ku<9n9@zoP^v9g7_VT!Qs| z%Yc7>3I4dd0=T+)j>aog9dWi%IMCc1Q1JMJQvyeMf|t96%>+VtPE$VEW9 zw&MggIJ-2D>_g4f)C;YELF7_u2nFCVBrW^QLKms; zBD4);&83Fan8r~ZSll1jRn>tprqJ878&j=1re1pXaE!#FM`rO|Oy_YJ6Jx86DHdHQ z^JDT95F|y8Uo9rb)$-0v4`K$Ii9A<|Y(_+WWQ^jfk*M8n|74P+$KzX{6Xk9;OLjv0 zoJKkYy0jo_k^29PdV*Tu*i!YWq+?UBi9kzCQX{z_sa=wc7tmd#zLmgo@4GyTp1f=! ztG|^m(JQWHZ1sC#81D0*o4dJ9Yq<8`HldNDSf-M0FLhCON2XcgR)?GNx9!XS65eCj zJY45#MC%?G@+dRLEp%7AX$H^JR$8hshGM;IAXy--A7UGTbX|p{QC&%*+j&C9e69Qx4nr6#J)#`ql8EJnD zfMEKCyQv-M8AK)#!*$OO^{*HK*U)&Ap^{t$KidoUCXr8d?@dN=m zgxU`d)Q`V*#^?f-jeya*INC~iJmYa?HeV`MpcS!?Rn!2P0OU}#{|ztc418S_X|Sg* zPR5Rp-0Hh)ixyMKHN9HVEBjV%nxU^=J(*6teC3hmbSk+nYl?a6SB}I$r$QoiHGa7! zzkD@U7i%*2wUjvD4M!7VIz-k>W!I@XTy%7C~M^@Plql<05-Z|*RY=r{anvaKx!GTni^2q zxC64*+w6d-^)@*QYrQRIa(fMvpQdZkNj3}t@syA2Q75a@u8`n3=Pb>@OI>|t8|Jg~ z_|dT+TNm7Ve$)(N>wL!VP42vf`BQF#+qy6>Z5$n$a3e*_LddP3&o;PC3qqu2*tku! zX}>#egDS6A8`a9pfJ{`@at%o-!iSVL3Mt*#m(q<@DQz$WNh!N%G1rJ^!_^&|WD4+q0HYEYbUyY+iPRh{-)609LBkkVj6W-{*iuL%X$>f_TY@L5i4{8R7|4q-~# zZj<3=n0P#}T;MGOX869ZO>48Enho!+pk8JXasmB{3~6PbjTYI9uwrB)q zJcYp^6HcCKS=d>kWQN_V+Hw*%^e1t{Qj=&iMBQ$W+vg0)=JH5(p%t)_o`9rk7D$>e z69pvA9&Pb>P4-Q|s(4jQz@++eJ-Rd#02}p*H)sN!S8a4Bys%hpIa8|bakCO5T2MK4 zDTb(LR12mp^`_0Up&2?%o3$r}o=OXfQ(j&%ZT0@R>IIXof!;@i*>$VZn_B{}0|j8O z@k&ulp_(>7n6^Ogx-rEya)71qvxXm=8O58W?BJX$M-p^kFxw58ZBI>EdsnluA%QO) zNrKtF$t#34@=|5af;n2loR#LN%1bu~USh&V+sr(^gg9RkD$b9@_i{~)C@D6&Z)+Br z1aAoxceG|O@f_2d>D5aLE^TRi9l08nI$lH8tG$+3 z(rql&p7|4I3K~`l8xsH2Wh-VfrP3H)&FepG1oB;aP0O*CEUWafk;-F*&RSAd0%F13 z39-#WYzQ{+jt-jF@Ky0Q5UcT}u~P9j5UVXqW2NG6AXa8k&z?aQ4`Kx?eXaNk*6YxE zpRXioftP|^^&D>eZ6a*Csy-mXi~L0ICep6Nkq|&4+z29kGfJ@PEXw`Fl-=m-m_+pJ zm;uk~5@FgZt#aM0GQLtN!Y$+=ILw@Y@8F%7N%kUvyMwNj=VE$9=9w@;rCx;B$)g;x zQTHX8QOig)O_EnN5_NEqBr_7aLcg>?q2e-}jh}oi99K!QGD%K$(c?E1Bw59NE()xU zOWXWYuxbusRk6k9O`xqytTbH#liQ0Pdx56&S&FpvmD+nZu5M$Uas!Ayw#0v zed(=2*Wq5XjRT*~WF6O4;A`p?TeqqUw3?sRPhXG&farB4QTpmrOdXg4ND>dSK5KG; zJZ4*nl&Mj1g3`iSSPrwopweG(f;?s$eTaZ}<)%39$qqZ`o(*W~f6H@`ZTEMaqF7bI5^;-0odtn(?_ef-4sl(g}kL8 zyqUOcV{a4oQmF_Kt@Todt=}5Tutw;I!W7nWxo~Qr<5L+e{e*S#s`YKFkBg9K*l#|Y zaNsWDx?vmma2PnBotbQ;95!4#pG_{fk#c+!en^uA?_O~wtq&2n!RQlW^zH6EF*=pD zIRoD4O5oReoLZ>6VT)uTTnK1IdN_%XR%VVTxi=WBp13EPF=6%Q#Dk8^v!a{xkF8F)X#-+AuT$ z^oJs(>8pu<-FlJ*n|kAdTu&BZQ*Wb}PUg7n^LjpKB6}#cMYc>cS+Xq^MqGOqSps~vM_}d~v-}Nnt;ARChF$?&3|{yMGkJUza;X)t zX`*o@i(`)AKtp=ysBsNRAg(jxal{FRM>?&xCqP!4$;Q+~*QpU1a*C==)MlL4 zbg6CCcwTlXcRV56xO~5<8&U*gv4QH739N)b*JbjJ-0<0%%fP|*R1HXte6=%|co4<| zft7^{BvUFJQMryDJ-!9c@T<&Rn!f=_Ok7i<_L?SE`hH5y?8<5wf%x@V^Q96->5yG2-;I#UO+lTQ ztrTnh5i?h^){BzeR-YIZ@Ts0sA*wy)nwZzx%hg&g+tDoikg>k)7^~Wj!XJfKL)TH)%>~&DJZxnL8SvdFB}axDU_lf5SKHmmc*aJ{DYI<3oFVR!MqRN$sqX z`dKB7vr3u+C5b{5!&K`co|T=FOen$uG(l2;VhN_#7EG`X8u7l&&x~ej9}_f9a$WL9 zt595?Uo*^f-|Y+HyRTO>#@j2-Q2o8ndZt-w4V{~?v~JXkNu$ zDO;qnOnh63Zx2!_?Z~+t^W|=6#x=jES|`!d?)-w|3ofyKt#f1irds5>Zr%LCsZ-t? zyyDV`PLVWAkx5|T@Pj#1A;~)=RPY3u9MC^xa;2o)A^kke#7R`Z9?tcmf|ORtci787 z3mLHa)@;`qx7@3OBrI0-66k>z%}@rjS<{xG8q9R!ml+Zy!_{XliXxivDPnv9^nn|` zY9dSI_oRf)C;-LYq`;bz=TLT`iOaO6fn#h_Fvj}D0x=&hLWTZR-6T(ZBaQ>} zLa4C*?C1E@<2=`tZUC1`ee#)73o~x`#$pnU80hJSU&st7mP9gAry_J}DjJH(HV)q? zEW3!zqVF=eim;{ur!r$0jLsDNL4HH7w8p@s44JfxV4Tu=3AHb@Ws|TO4gibKa{?02yRqihZLyvfEzVc+Bbb2-z&{jha*sp<>DxQ2{r9o`jUuZ2&5s*6io)KZQ*g2 zV77spXK9=LNQ~ZVsdu1wWPtud^s`yqB=D_m4e|5(Y$Fsvl&!d z%4R?-R4}Ro6%1zTO)D5@x9Tw&(8|`j$E0yKCTW2QU*L^CCN`|ItyeQoUp|s_h|Fwd zD=934{0dV3QCt6E%~I(DF|AFxNr5+OUda)Iw|a3=D;29zLn=&1b<<&Yp?Q{`nG#7L9Bh-vp3nP zlD%38)#kumlsEVK*r&!u9Ob*5x4YFLuSnBOH0%S`5g8d zM;-X?ghpWMaf2`Nv=GSVL#V>nX8glwd}=6aH%&P9wSOdyHBWx4CiVQ}Ja8vpjA>gE zpZ)CD`|_LS=FVJpi6)}@lc~!e_yTjNeR;49b9i|a&0V%vlghWq|I|JH#rEUw8UAh$&V5z5deFvc7j!EJfmXbT5H6(WU#qiOEtGwVe25= z?xo?1mI0o-OoQFCG~6B+UldK7yh5|X9$WkXzY*zx|4jtt*z}4C?fxYk+O}ECEPyVqhApV@wJ3uKwRJUA zQi+^V$aXbKrs(wJWOz~S#jZw6hTz}Vb!gi@IVD`1WK&1a@U$V z^q|yMAJ9{$Iw-a$umctzEViH?G0kyda-{v;as9Yw!Gp$5w1op4R3k>%C;VD?`I>vy z97YnrvDsFjh}iGIR+@u3u6HlIVgxrMa3!rBv@t;oO4IfX-3j0EtX_1--s8R|R(6ry z>%KFKP7>SYJB)6vGd|KedTw*jagyv>a>+dFN3wU_DGhE zQCX->^1yq%G6~2Tpp)|0*+;7__nwksNNa>ZpbcSgkTIL%5JN%=4kY2hhwXl|{ml8K zBL5(2$S=O2c8zAXj24iZba;fQTpY?CRyk#pVRN=jo=;}lY)+L13P7$5V(jF_nHx+& z*$PfEqGu?EUL_ysePRVQ0TyZ})xZikQZ&BnxX5jglF^De{(neLP9-}Bsm4q)#^ouu zYgx+e9H89Jl_|Gtb;|8pk#f7%NV#21P)WJa>#CI7wI<5#IXBAfTb6Qr1}L{@Wy#77iyea`jwO0*NZ8f1ivMl9ZH9)yntxUNit5fdCij+IDM#>$j zQZDqmD&>x>iE`JU8|7|XmU7n*Q11GbDR<-Ql)G_7%H6m|%H3F{T2x@Z=h3cyeVL(!|u1JW{RW!;!O_f51Q=tb#6w$$Jd+zSTg%-(9rIww}EQ=932Cf-Us{7bu&jmI6Cv#A6* z-%M1?%BK0AMkDaCG4T0*X;2G1dC3?t(pWl8!A9jth{)En>zAD|7sn`;8x&?WXGqNV zcJYuxd`&BCTj52%kkt$;Y*^v*DQqgJ>)6kW`PtUb5&OAYRrGV%e!jrxr()Ix=p~zS zu`{?Vo6laz59>U84&SWDZ0CITq6N2;-_}`n!F+ZJKdh_le3!A*dS~yOUFOc8@9jl- zj(g?#p13zE$B};$wEtNscFe2h+IO0gsv@0TY{vcAm;*3-AHxR1}mc~lO z-$1OUmc~lO-$1N(E{&Cnzkyg~OJk+t5-S#J#qI3J_}X*3oo!w$g2R@)nh7$^$WV0qPJz=u|NJHPc!yTePh}d%W=;RdV5c z?^_(tI@$AhHk{XvS@E{{-Z!}m-NbzFxoqTq-u#K)9{TF?uYnT%7DrE=3_YX9hi0;^ zYG4O&3lNGzGxxDEag%Pbp<{brA#SfK#NyyAJ22T8DoxD?Q^A1^!#n83%BEG@P%vcM=CiKwca!2@ z_3f3lTA_abnRd64==Vo^pRj~|F>N0JB{5UU)A!Ps=bn(m8(#ydc) z!@f9QW5(HUGSNHS_IW1axeM-_+@$NxXKsPb_$T=87pShCxcrwcdCLn$-sd{U)NW_W zCIECh7UtdLo!Jh4p6Y2S!}n&R&nn|8&$xbV=q>^*NB90S(cM=3ncNyf1?z2Kz03^k z=+D58ui6ZVHMH@dm;w8pXw%zjgj*X!oGZh6;;>@51jF{94HE9_$gtZ)uB1;c`^{|% zF+Nxj^eb!$#yI%J6%M`>4t6JCRu4A7!IxG!_{DIryEE$<2X9|A5oTPx<|sMX_4&dr z&lhW%h_eNBdpQw9Qs|~Ryxy5{dNw!_-{im=4&Dw2S1=tabX>2GX>WN;qElWT4Gog=vd#|G;$6+?7{+^%&qc`P4Lvw$clHwYG#nH+MeU7wpX-K&ek0g; zVGw9(W*&C+zUr{~s_ake75EJovieoV&mVskejYLZTi3D##QcHN8XGFNXdeZ;BV-dt zdL7r)si-6@8z>Q;%JlEu`FRXhQI&49D* zmm24ou(n3nTQ0INaE75RS04NFkjR?CYIPs5m(N~A*Blb*JM?nZ)Ts{i63=V5tg3me zb2#1hgxVnyw*ix<9L++Ujerv0$W4%Y<-p}_N8PBomG2?Dk=YrFdt=)wHc0g~;C*kb zmhX$<2yNdQhEpn-50|0Hi+~9@fP2%mtvl7U&_$;nC}cycN1iqxj){}VW?1UYt{Zve zTyU_^E2d(=h`jusIG(OpE{M-7sm8@3IOD!PoKDO~-ygeL_ho+F$x5>br=M##J4 z-f)OybP}Y75aWHYP9q8hMBxEn~f@m=SDTY2P?!ME!5E(800}C=|h7I5*O#6stn?D z`|l@#CgvUuC!i?B8RuAY1Rm^oj*BBuAUT`g`f@}7>}a1e9*l@m-D23zzhWnzI9qIo zo|-9VrhG%p|GJmNNR>W_SZQ`05v&5O?n_8JqLy9~C;EUmFNwv`l(#f_o@5Q~Qed`* zu9Oy3Vbh`5bSjO&_oxg`(Nn|s#9-7#Q_WJ7p6G`tp2FU`Hfce+<}|t((qN6*%3xqk=eekd{#0m4fEBMS%k`DRxz13x2wvm(krH4&?waL zGCQDKNUFEJG_u9qlBO~jXH)>q0Z!pD-W2Y~yEM}GriVMD)(#Ny})d&9-(pNPs zRq68rB{G^6iu7kmAQE7us0$M(K1^Ony7Nsep75E%;UxMCmPSb0?`|hU$CFz%&?jT% zyV;5MBEG8N_E={awPSpbHj3TO7Ay9(@!*b%_9<`m>GYkoPSsgscdR*UZ0*u|-BfY{ zg>K{5khGy&SrFI=AC0H}^yP^H0d2W+^fIb)Le~A<@m{BuD|ubPSRx~T;k9P8LYZjV7m2z&1doJ zr5relag+oTtFmYXR%37TCpl~25vMXuBVeO58CjZle2%TdAw7obGhz0%@7IK4}+vG7cfk7{Eoh@_~W|MJtwGD0I_9%R?!Pf&g$^steU6K?KI3PC$0u(m0irM&uTJl=U6gSjv@yU9;V@9 z6;kSD)cj(3f03McPfoFp5IoGMUok$TZ#3HMD+ZWm->e@ekNPkw2ufF*ow%$rF6J!MBOp6&gqQb-SKl!$}C5N8d$jvJAx*13^3yhW9BAZw`RF_yXUdf%3VUED}d?{I+RtkwmGf-Okf^jdp_{vB!LQjUH3#A9IVDqc!3VTBo)8 zYpB}tZSf_vHKa6dut50LH?-+-`lb`=8)oUHkWHNy`qD zi5s|+K1gwGSHwkA@WxR)Tb<<5w<{Eq8(>n-^O)z&oANneTzX6{OCKmLfG~skC_qa> z)e0z1^5+``wIo>GgIyHW^2wX5D+mX&c9I4!jAJrbP@RR4Teax+rQyDU9rOnKYYSp354(j5a#SD{E53bzy!ma(1Xq6pr_0aIuxkT47I4v*qvMX{&5eCGtm zhJy|lMTzRw3IKUxq8Rs3>S1a%<%ji<15i{{%4%M?|6)k&BWEY5cEd==p3;C%?Aw($ zq*fWC9vMFE_TASd&plobH{p-&jBE*&Gcf>(kj%MnHW9DYjn~E?47W^(*KqfWR>f=e zlGnzLapO@1$d8#u5`aoxTMXrS4X6~TKCdkX^SlOSjMwy(OdP2$4qxW)-jV-u+MR+* zqd6J5EqrL7*ti>oZ&)vBFW+?fnfLN zl`Sf(bG9X%6~YG%C#fns4&_Ao?jKh7^@4tgyivU^`ZbJx3G^dY@bqg3`te*LUm>f> zF-A}U^7I2J0jQ+kVkl2Ppi-dv^ji$(>DLbQ(^K-V`p+d&fMLjTA@G3E_{?#6r<`cx z37SYZj>@cU5$Gtld}Z2@0LdY>GDtWb3?$5lFC?Q#m!#fDmNLauD23W7+!BEQp<9n_*F`qSVAT6@3NU6cAOlX0u!Y zgKY}10mZf$4z?-a236Z)K-k6uF2Od~q;>x+S%t>$zv2xaZv2W}ljv zUJKhWr=dF`5I6?MQNQpIwD-4Qm%U4{%dnh3ag&$jVQCp}0|(fJ=K2uJv&(R)WoT#x zc43oLzqyszWjHUi%<%t7>@pWD&ObkX!R!3L>ZRhhe0?kv8{Yr9>lYa#(=I-m8)HDh zKa_3>Pvc4~XD)FC$a?^$S1PgGVkqwc05urPEe7)*K%rBDe{HeSp!q3Xp~AEM-`e-` zlDWw24=*+3wP#K1C zwU`gX1|037!7!`>RB^P27KLFIsEVUKv^Wf_fGy!@C)4`Rldx%V)`8{1u<#gI;&7HP z2)>}m!LS9{LZcB+Gw(@Tu*(kQL*%~_H`49lu{U*Hk**vjFTy{XQg$W8w|^g14*Lm< zrY49Eib@peoQdYnKQbV{(;U~zqoT(Ayd?HMKj90CtDU^R*f4D%Jz4v0eC)1?2` z@+_mxC{EH^y}?eBm@YzU!w1nyh*7N{-z6bJviw6o$gUqFPA`K%U6B?9TLDrTWG{va z61ywXT2Md8UJTaoja?Mgl@Qa@5M)c^7|m>c_x9&k!H?DieKh6gcP}riEJ(l4(>KiY zKAUNUOt`1@v!sJC8v;P#I&z^^&VAMne)C`!V_=q z`g3sU3AM??bFa)9sVK5!bQmjrDhLxo3e0lA3I49l5Z*4gVGE*9W%l{1pjkjP zxPwy#t)igG5j7PI6$LHcJEnr+qF{&{I91Rt3Wj^UcGt_s!_1>N2bD_CC?tm`=|*iaO#@Aa%;yeQbv%dB8yQ83!N6`WTTZ0SAM3bqyn=k;_%F3Bf~f~~y^tY8w3 z3llNXyD&dJo0Jv6D#-|rvVePWe|#x3edHSLDF%0uIv{2~9)ZrlqGl|VPmrzF-cWMqKjcY6^t zj%S3sO~&*_hVsUy^;2ag3xGWsAT=<+@m_MBZ+klP!Y;DxEL-1~t=A<~Qs)IqyvZu>-gL~39Mkufl9H49HesdPtaSS^ZI|aZk z?3I9E#wz;?wT2qB`>rlbcJ_AB8kSW#D%7ri?Q**p_Oh6$Zx{1Te6q_upKm+u+eLhH zuoZlNK>|vwgx1B%_Jc*gdiO)IU+Y1ETWX8@gx1x`ZWU%h2!$C$%ZI7%~50ioaqQE7|+SP!+>i&E78t>#J-TMm@C!z`j)O z^`u_f4k2_^%NL}kl3xaZ0cyeqrP7Pf-a>N5*EMy^+gi!#Od+{e_ZL~fgpp!XV%|V` z^tC^vGE*Jy^sA49z$7dUIAoSA|6JUC9+e0jxon)m_o6sC%UUP2XD^pa`PQWf84Z%_}q7=?PDRG(e@9xN_FLq)cMcmSa~ zTN`_EEEg;5`Jr<23T-ebRG~fUyAvIIN^wO1FdL1FW_A$ zQVA-8y4w}i2^R_l+dYQ=S^)}P>#nF#jXV}Z1y^=g)EtOB7K8O2Tq#&R)wa7YMeJpj z^Mi%dnNk+5<-&0fwT|xFsyr`ds&1QFZULuQm1j0+3nv8EdxTjVXV(P=r&yIAH&4dz zV_|!u`CVF-_g!gK-geRDk;=67%U*W?QFPOwU&Ifs69u*`^Aw^&A4GWfKG-(}5#GJ8 z1QFi7Cz*~BuYsKPr^+e!;%}5&F)p`4PQ@`T1&rX{gcBZms}jz1F1ItDfrrh?} z*4cRLO;|m@%a3jGU=W+LV>BO_QiPe;`DCl@QK%;rZU$=7hxAZJR%*-CPgHwlTH6msM+KVaW7M$U5jAN~IG7EVaML zUY~7VoiaaYH#oGs(nivA2;}e_nRCD~gsPne9+3AmU|7)+$%TX((BqWOiPzXf9oW zWUX>VycJf&mm!&3nq)efrNofa8*VTOm8?wzl7WJE)JdU>WF~blwiiH$-DIQzrXU$| zR+6k-6t*e%rq$cuGCDu^6lm4nG7a7)4wc?a#okuTtIx7l%&Rx)l?ew{fow_he>zjeNE_jLV~RA2@#47E5{wVd!V68j@a>d<(>% zq{ktxP;mRXZ&ogqsk?r&9ZjG$yHm|}R&TajX;!g%lcgd@Ju<}d*RJY*ul81k4%J;Z zYgim3`S5X*myK#FZCrrd8@)Ur9<>sBL?e9I{W8(o-0aHfRl5#vTzgb;vq!{V!Ob4L zcMIkl=b`UTiXiwp;|5=Bcp)5v_C~V6>qgpvnC;_5*i{|t>Xsx>j~A$65C@~c!4`F~ z321(ub3R+nG3SHBYL23ji%o_Wcfcu^Mu#gNpcS)&pW=UQ#RJZ~tclpS;_MH&@r5l} z#)RU=+;uBq;UU2t@SC-VtSe>h?3OAE3x~?E5X`<^sQ6}mbhva_ z=%eyVSm@VXuYDC527azS4$0~ZUymcA9L~iJ;=x}X`K=l9DpVcS- zX{@fq$=MO$imP-c1}Wt1FB^ow+AoN$6!)!Yn5w3(d3O6Ub$&+sd5?g4Wns_vP+8dX zrq3_z1xv@_?ZwEe@hu@*4oi4TMvqdoJ|+wcWBsUbk?^x)lysjto7$|qocP0?1=zr1 z^kT_o17HC+xE#G05Es@1h6QOo_xTOkf`J{>|6A@rmb#J{u{%Ltf%Yw+3@CAMy0$D> zVn$x@E-%nL)JnjbWVG-z4#;pFTFG$H^<$CV2~tNJ`JM2ZV78!4${)Aw@aCF~+O`yV zjNC3TkkZ888BA$*Nr0(=fsHKe6{mf@!n6BXu3s=q%>@MVO1!0J$iXY|bTCW3_VWtG zZdZHrZ`(aj?%4CVwZ+n2qpUD8#&&yHCrjeJ$?3S=;_HR_@(Z=3qr*rxA9t`(ij%F7 zz}`$Fszkgvs%L3oz0XD4Q^?(cqsut$RJ@+2spD+n-F%6EJx}orI#QwkOt0rDp9wwm zKKor+P_RT>?UK!*MLE2Fo zHj;CdADx&S$aT|MSSq)A9T00#K^-XZiBrdWl?_h2aFj>2-RAiJ!-Fq$@yDl=cE16t z>lm4jBg*5|{EiONROrQ~TTOGChau<;F^7q?1jbKZA$nT(U8G8V9pu3%D`zAv!@Ee3 zX`28$Nftc8Npkp_56Fh-?1Zj;0@Wl`MhA7sG8Zy+#OCjudJhv94kyu&KY`!<3bzEU z6FW(YImPvZarcW!`C^@G+CSEaTftREW}y>s==FeL_wH2Znsj{IzfIPUfVXD|SwIii zi*IpT^VpxX=BSoVan)#v!#FgQ0DJio=UE^cR+L0%M--Tt`!7nEI|;?+uMug2#vyv=Ik3}*a;aZqn9Zd zdodZ-R&U9{gPINAqcbr0fQ${#-g;LIS-V;oypRb)_Ajj0;IHc?%s9{eknNHLRRFDTy zvmtwQY{;QeUgj5&;afn4Zvh#;37K|y|I{_@pC9vYX}a%r1k9S?zSP{-PPBxmi=)hE{k>%dfG_EB!L=v&WH%9i%bsu<36B6uC>)<{sNu@Kp{kJrY zXSg7m7Q7Rk-?1w-!c{7Xa128mryKvSA=Y8^J}Tf5VD-BETbg)NVCWi-@X{7EWA!af zlY>-)TULBa)6QinH#tDL$(1R$b9KtW=qpfe=Nc)8>{cm9ziXh}&NWeP-?>rlz_OIv zH$b_4D^u>k>XbXMBIOROk#YwHDM!C+pxl8qQSQ*WQSRzxDR*dqa)(x?+|{d7?&=jO zcl8=6cl99U=ywg2yLwHOyXM>|cipm-yJmoL*Q`vr>sF`Sbt_Wtx;0Ynx3r!I;Qyw+=8J{npb^{J-cc%N031r7+ zN>F}oG`Tm4XN-B;?Kf^n>i#Mb+MtV4B}jg`T}LZkRk>I3b-uVN-72nJsZ+?XiVt|` zs-&v8a-~iok1F2jp{r7-;>wjeg>2=8t1A?lB}4TVMqn>sKB0oji<(a^`mLLG*c_r) zGwYG<6S3cptOoa^vXo>$c{#Jb_?I*5f}%mlyOx2x%kMlXTjcdSOSEWr+Aumcv3X?E zOSs&}e+PGa!}Mu>>rLKw^NGwcvywdfan`H66XPSe$h>Ir5tsN7I0im~j6PfG8&On^ zB$us{H4&cxE*E~BybGJe@?X1v*L-!S96jby_oowoy%m*k<@qC&d?kV{5B}=`oP2@6 zkz=Jw)uuMt@L{+6`zv2cSzhj?;1yYBF%m_it29iKmGCNsr6S3sHDP+enu7AeqMC)U zm>f&0Ez=p~_^a~1a!-E{E9uXIoVSXmWXRMIx`^U*C$a@O4tb4I#VE6(QKZt6rjx?F zTkgisnCtU_(^3gqI=onGXHa$uhSW>o0|iuGpCDy{4=Ro9E*sgc4)(0x$ewB=cDr+0 zq-kiNM$S+~AK*Vn1%^6q#i^mhiGigQxZU~n$r z0`gsgrMt>p5NGLExD7zIPjfNpG27)a+x_e?3xuUp7!f zu7PL=JkjW`LNtQEC8m>nX+^aB@G4aMLWOFFOR60fvs}G8)vgXy^Q{b0&C1TE+Fun^ z`%F?$?U1M1;b%v+fa@BlcD1J(-BqYY;I{Mv53fSC+w~gFV49AUR68Q7UAH>b zt_xK2tqfAl$_A)*G8VIau^`*+C9_@Q$#&$~ku4y*2C`k}$wqe-vJv$yLAGlK$mYiv z$VL{NYw?C6G{T?7-RHK)`G$Er6K7HWh%N-=cgTt3FJ^R@6|PZ*>sPM;8+zmpsluyPsW3e&R}b`koqeiv zaFse#*j-fEr3!mjuh5}F;YBJ!i!F|o(e`nyx0HUXOVoZSNt(CDTw16LiZ8$KW6!@qS;A-M>a2GJl}nREPe%?P3X*c zw7@PN{&W{yBe;z7oLr-1l%Lbn3mGUcWa}1i9<=|ewZMIa*?PVFs~x|9Vt<7OWeRQX(;Tr|XLM>)sKQ=J)Zk-SCIZvW=)8Ef+U@)10yy zBollZ;*Qv3lmqPIawk!tU-u?ghsBhu+n6TKGkTk}&(NFnSJ@lQGJAGnmEIg=P-_P6dn=nO&C9M}UUr2NC4rjE+(mrKLWvq% z+CQ1DD$h^+oyY{e_~^&&l4e`Lq@l2YY2R!ClW$=G)4tgXYhV81Xb5Tv3y%g8CbF$0 zQQm|rrBbjhp>UN+icokNiL%QVAYzaxMX@62S3{y;aAS^sbT%ka#smOacS}hWGjH?3 zOj@kVC*ee&BtfFucXX2Vw>CWDy7U2C5=H+WX^6Y`Ct{bOUry%`>$rf&>#~xCYtvlh?xpmg~wb=wOp;R$z8Yg6_Lh<6sX>9rbhb%9Z@{#9 z@axJt_TUH)+K%@;UN_H0!hGJK8-Dpb!cB86eYp{I7Un^3?lS$nhJA@1;`(gd4KK{! z$%XB1%Y1g8J5P2No60^w-uOo8W*O(!!l`#=tq&f!=<>h8Bnhiw@;Oil%{A+f9 z01n1>ZZZ-W_4MbE{;*&4!sP1i>&Do;k{{1w2idmGauLMP2{!Bw1)}Yk0Qb&952Yd$ z8Oo4w97ccn0i+%uup~{gK(S%T-Npe+n&L&6!wK6}tjT{*vbOCu*q~1>sOU00js;Q- z!|%icY0b0AsLjRvnFoKhQqQDJ4c;2iFPEOWGqbV}p9;@jJwX#7voL?cjqp&&B&Q0b zh8En=DNr|D+HO0qteKqXZKc6Im-|*HCO9(44yOgXw>a=cZCd?)*v?*P&X_HA&R@RM z^TM53+aRtTiS&6HEm*;2uZ9cR@;4#$wZFxlQot=r@1!#LTfI}RDH_aOc4|TITp6PE z22*_szR=h1FR-WRy$e~R`)@^|gpTpP7zb{^i3|~?`irCl6{(nle+r8!1%O~6D zHZEi~k7pJZJR#IR?oyYFtJUinwWLukxGwz0Rnc}Sb%QIY$E;Z{iWc?pz}}fPPUxEz zUpsM1pC6{xI~fyirMZ*#`Er8q1&Ff>eipBtxOT!YAp1RRcT2&d*V*LUvHhC;n|e)`MEUex2_UmJ0HLSq<0WYquMhYfT4 zdYSd7b^Zi$W=Z$oc>;@$8!3ab#ur(tH-skK5uEmz2`Jjq`D_~ zf!nHj+0cA`pA9c-FSre-q*e|f?^aDn>f8H2iq`MEZVUHx@KQKa zXj7+PJX$#fY$RTcqVDVHmfaDjkTz2XSp(jd%;?vFEIG#xP0jcYeG>=O&LO(+YNmZp z>UW3S`z3FhwGph95AF_W+6y-@lH48?&t}To!8TYG<&;PXFR?ph3#TU98UBmC?Q9E! zO8pziQVcfHk891&u)#$pM*IC>(t+I}vatiZLtMFPTG#Fn?!a?H{oNsM@v5m3-An8a zadhJsYdrc|HB}NE4$>Xk_yb^}u4@{Y*;24`wQ_ez*o&ptF>4!q9>2`?W|>1n9Fm{@ z3-8(39>%Z+nugfXXM02JC=W=Eqs1h6B-*~mqL^j>maNeJ{@6$Mayjw!@-O{uf#9x6 znCefTcptCmN;N=EIQ8S%>z8!`=2z2b>m!3l3fW*cS_=wy25JPp?x- z{rGEHXCe&7*M_$Ie_b4HrCh6hLXHZ-I}vTp!gq=Idnp?B@m``r`+9@C>``bV7rz?Nx>4KJ%{kh*+(z3%&*yZM)3Kd#HBQ2+|IF+I$nGa7( z1ZnkTO&Z1RcZd0>GG3v7y~h#0-1S!l>Nl+3?bSui!|IkaUnwd}&3T9rCEtC(rDSTp zBH!YYPkj!YkjDIBePMzJX|hBU793h^Zo-EyQQ)@};M0Guwv%Z!imb~>@vT*C;f*-} zkFA2S-rn@q;V#3$SJ+vC+m71mHrlYt!&V53t?-3uR?CuVT_L9W<8mTD7*jQzwF`SD z7lB9__gJWwPUdwqgPUM!XQvNr2$vNIg)Y2~RTto|5pkGGmqdW1Haa#k-ZCK}cXf;$ zw#n>_sUO3VDLM|rdIhCx0IZRL4M5t%Kd{k}BX$*2)@3obYRcFmxY(3|aj++?Vxwcl zlywVJ#t~tuagrYX?iStjT(L?V1qj>q7-#5JK`f>WOItBz=|H8lG-Y9ONj1xtUQe}o4 zSn6C*$JI9Ve5c;}SJys(g!j=Qr5v+3hOb}G_s;azBdw%9S>k|uxIQD(d9$pUbC@FH zkSy~I*UiQ8!KUm{{G;fd&(yKWCK|E4BfjF=IUGqeJ8iQ|U6Z2S6p)ozRUhN%I)O-~2kX@;tXIo3WXlGk z!G_#te+-$Dh%k+98RL)krt4(9e)nRUgt3XS_Q#hno2~tCV3DPJ3BE~d|6BamDZaw> zE?~ipzXifZKe_kb7J52(@3@}tn}LhOe%-irH{I2D{Iq*BppC)77hfng4 zLfW$WJ3d)FP|Kw)S ziz`2q93=Wr>E8c<$$#`?HdTADHQ>YP^Vw{JApp~$ZNz4K zxD`5?X1+K0H##*@IBZ{<9ZixrZRckQ-W_$=Z;53$;kOq+b9e)jBKbw-d;bQ14`fVe zD7MS4?N&+451=Oe%^ENnLZNp&d7*f*P8MQ2EJKe}X}OIYMJW(kxS$Rf3OX-5t#ur@ zD|j6^9J=KhUawCzrzsWsr{RmX3b5>-eEnOQVG+?V&7MqNV_&Xu=cX4dB_Q1OSR9)L4ZW_PaMC zW8sk=LF{aZc45TFt3yQfnoDTzUZ=kcpxkJ->8+PXQS^#y!E;k}( z=jk=xr8b&@EM8vdPVT8gE%NsD@Q!ADw`w6`_OvP5ACJ3JSu7={B{F;Y;F03XVZLaH zNLLZA#8QbQjaA`*|Jdh0h+tK?%YQ&O{X+Uw;RgTfI{)h$|Lbc1(E(}ccqk~Q8#Ff+ z^MOV(gCk$p8=QjvO&K1n0%lRn0?*(udv=+1wo|v5do#IkFsD@goYA8c^uQ&6How?U z8vqUZSr!?M6^K~WkKgrYmXQYFn+mD`=+x|4d=vP^R}|HP;Go$-@UvoR1bl6LhUOrjSlwP^`^%L6ig4( zFN}lf*|HKSvs!}cLI%fgs5+h{@0DckdvCUhOOhozly1qIRyzIOY%`@(PAMgvoP)4D z_|7nOKuz+3Y3T#|iVvq8a&xBrUZ*;{X^E!Q=q{Vriv7$LQ>fb2J$yL%PdR=+yu}8O zJk???f~3`S3a&w?Xx^mwoHAtCJ+JuuJ%BK#+Tqf6xlpP~9f*f8<>v2{%d`;6$mWp; zMxs_wuTn_tp=92=?&Xz2Q$JH&)>kbQqb)Toof<5Mg#fY9r82DRRdB;9!$SJB=V@SA zH>_b;z??lSD_lG*D_lG*D_k@z?#!w3+&=$nz}-P2`o2*g_`S*m_1TV}@V`L@5fP>L zi0j$o4TqsKIo_?0$#YPKs)Db`HWGq8v@_R|^y%51QTq^?GFaQvB5{7-e@(mp(dS5*I?HIZNM;`OITMr* z7Kvc$TSHa^y$?UCK>mHwJ`g!{0Xl==NiLy8;B{sw?RX~{P+NOekj`QS+3DPj%FziS zE{b8C+rw%E?cM#>_7-x7@B>7)I^UO1d;H+(upe^88 z*5x&O@zK2b`UyOGPODd$#_XQB;xcj`;6ZM>zlf*Oi{BMLryL&G=395s1-K!d$o_k|BkY)H;=9Le* z5-cfIe=qk~?$)`SYRQnt*%xbWqD_S%ayAAW_8ckg%g{lmB2 zvVZrj#TKD+X!GR+#r6F^{f;;P?yvsxXMZ&QPFoY9ZPa!;y;ckv6*c^F$_43-`=ftn zbQQf|EJ)kl&rILSWY;F_Zcd%y@c%o`&i}~j(6!^gvQ7ntT@Cg2hZDpHA<;WuYC9un zoWe=5E)3GHbWwSKR8)HAnW+0BSGypcg6e#@p3cZW^Gqyrq%YAdZ+k_`wFQ5Ps`)=Y zqhwsF&u^c|zw%5Byc*i#+w1!2PV+a+9VhulGt;w!&Aiz6f6&8ETmN5}yG=W2StNQU zn(=R&t>wEH^-sn8sW;qez4Li!B7gT+$Y@yadwpxW{W_YB*pFuB{{6e(LXTi_LE5?` zm1yxTg8jkGE;DJrQ1p#eg2?PgxcT2@Z*sN$yYILMN+w4s)mNx=^qAVaop##$0LT5$ zk*CB|D_1Alts42<@uT_Nhf^I&d*Ub3{5-UBe%#cy(+ePS5+?6Yn5U)wL!^dgN7qNK zq2bn0%sXC&hlcrPZ+byYq@-{_r09h+Kluh1oc-vVV~ugiN8hsiqutT6wO%mzh*yo| zHy;HV-JfU3JTHx2tRAEGlD+OpmTmflgOAQ`+D};f+Bh{WMM4(+oFX`!ZDe@wPE6s;vFV4atV%$!+=HO!kI@I5kKQ zHYkvn+sH3bim#!Vx?4;gXbh7Ntnq5o&?ahwUo-3%viWsGSq<%(VIoi){D(n?jj~}y zjy2m=!3NUv$?x$?X?))15%Zg;b)K3a!sIwa7exu)r!5@}+tvN&!(haJEIcFkB?8%| zmyI-CWCQ`R?mJP_wGnnQxM7WA7#j6z`SIQesPHN@vV%rJRHoyVXGy+O?yla|NS}Jd zOUHR@x3YS;y@$x)Svp{shLpS6Y&hQ`$;E>dgY%KcZulmOzwb9|y6S-uQBxB`^hEcr ztu&~;nmg2YuVCy=aH>?)z>HKE;#-+?HH9iV0evb|Nniw2bsh^JBR|6)M@Gma;m#^H z30PIi)0-5~&82#=kZ@cFF~AZSlV8wd%ccglj(?+eB-8|p-b~K)#FlxK1NOjNNW{w_ z@Lk;KEQPoqXCj8B)*JbwTn+y~ngMcf#9r=nh->0$L_{Zlq=}63=Z6W-4JDiNa;Utb zHi3Y}PunIQ znJmAU-VaA$x_l1yXtx zGmIDrCa5J_7&ImK$RMuFDMB2#Xe?H1`n!YkUM<>|G!``L*A3MEq*X=dcJ^yK=`{Hl*+l6tx z<|zHt^0A|NdL^4}+=dB;@;IrpUTr-5Z*+XDF*-Ur-q7!)o{oix;1FHWfcGJe`fj54AwZ;G45b8+Z>bd8?L^LQFQlU}#c=Jsiod zG+geEvf?3(v(5XX?=b(3b+%b{G;O{|qs{wMH9h2&AO*fz zQkdGEMJ4!<`Dz_xJmQ<8-S33Q8vDWU)@<`7=`@N$Od+<1QM&Bjv68Q-B!8yEBg#?O zBNJ_7oH{eG*}SRl)wHy^ryE|Sw}q$%JUo|e+5g4(Hn;hfdrFLD9DXQ%CBxeS&Nah% z%RSkUkug*q%7?!jtiKrF;D%;G&7pkg<&eF`@W!lCT|2?nBhsuL9Gn=D@)4uM=Ih~b za4UxS9calG|Cl^jtJUH4+by^Gu+c_0Fcp-+f`|?1_!BxkJCSh(H2>30^DY1F6%(ZX z-Ny%2=?v4Ss7?FKfH>Smxs&!}HR3j#6lL#} z4HnwpO5kJHzJec%6VjKi*0!6i5Dn2->Wf>-VvQ3m=7zdIoubd8gBff9ZotpJoNuNW zxzLkQvT$0%m!~sU&qhYt`M(15nv^pUl8^xgWKco2K2_7S>lPd#?G19#X{AeEFoHpI zYS=|Z`8x?1q>y#gu?ZG*Sau*4^jdmRZ#6dxPu4nYo$F6z%kXMEFP+|M8dCJw7hM7` zw%kT$AIf$RMSKa)JAl8ecqhWwauMc!9akj)T7yOsE5COjlM{fGFZBtQ(v`q;tTNMW zYl=hMC+EvBtIdJx3{Bm5$f(_Ewx#fegjNd>ura=jy=(%eAMuRx+LwWa$U90vGs5NF z05DY81)n4}V(7AFQ9IIZMtlC}xB($Q9fy1>`4Xlg=CqWxel$=~qC+gr0l0DRtjltv>lg~86^E~lO|=o;K* z{bf^LXtxpCxH2{xcMDj}CH{OPDaUfVdXTo5UK~sYh)I#B`^O}19*>kkgKg!RcBK|Pe?v=_@FzqG z@&tTqXT$gRNKA=d$#j0$;(dHcE!E>LVJ$7%&VNF|b0hyWE{V#vGDrDKtq5CeMdu;8 zs4L}IaDVg?RL+)R6o|*WSAw0ie2ah)OUEH+l>9QNu`Z z?+S$LHg5zIj0f>?oDiE3SNa)2!HE11D`vw5ja<4vepA*tEP}BS*k;_dU&&SM`xv-~z<^vh>X^1qM;IjFC&*FGdWMwdiJIC2=~G>BZQ; z$idd}R&Ygykc8m~KGVc97%Wf4_HRpqYydD(mcAC*(ddBjObSa=kV^BYP?xJ%lS&fM zmBK9qNl+$3=7KIMDUr3|<2RBWAel;X)BqoGAz6HqsSM(U5Ta(;PGp^GOq3M3#KJ}C zjS>yDVl|@nXJ3_09Bz^CiWwfDpToZ6TmeT#GatT2Mjk zVNiV(+0$I2D4`dM(h}liLvi@*QHq~@mdQrBToXRFrjZ_Qh`M%`cCC(0_2GFN9AVP8 zk4U#P+?El%CHm*7{tS+o=^mEZAy$NRiPG^5tsj}v6RH>C@q9Jxc#kEgW!WJw7)Ha| zYHc#S_Gmw~?LUODd<2)iroL{UMjUy3+*$^pr$KcpH&TIY$x*&?OX8zZa z!p&y>rx6(!>MFF056K&YPe(BV&*}c8MU-EEQG(%I?Y?YVcLq$2vrXOx0`?rfIHRt+114TCrfdmnE<@ z8?;MUvOwaR`LDNT@H337l#)^rq>0wv4i%IH%UfY9Uv*;C+-NOM(@5GfB>k28=qo5* zXli&o^P&nq!QH@#+QTL_-KwbR z{58RgW7eCpfhoMhRO2^z3Ne^c&udeV8fegfr436rxWSAU{}qc;_M#uOxTczXB;p&E zGR{16nQ@`AdC$Lc1SXUkF~RY@=>oQx;8{B$`aQOlqU5|6K?4t|QjD=)LD8qbEa}=e zMfC2QWW!Ut*8?GDWQUxw9W+%h+F6ZO@Br=Ly3;+B){q&2J0`7VUl9{h0r;#M*j2c2 zpT=pezx?Qk60*-{R`9|T_2{1vJ{P3yiMSwTM<+`}S*DMvY`Y%oE9=25 z_&Dc!-S5)ZRuqPUMNRyJ?ckMd-`^rMurzg3?EjbrF-iBQQXUnHcyq_U zV}xx!J?H!6+cta$KDL))9u0^&p{p=Q2`-7-%^tTKJ#ITVT3VmjpS;Cwzh%F>HQSa) zZqw}j|7IZ0h}jdzFm1w5@{OULwn@A<-hVtSc752d3bH-R1DrH~yUqr21x-#%<7K(|xz@cg)Z|+UKX{UN*t; z%k6IC{ohHp0z;;(6@#T;qYI--d+fcuAe~El7%MR`+>y)#)_D3dq5xN)?Yu`jq{BEb-#et$%>wFy3Yd{~V+ zU*ojZxYz!kw7+*HR`Y2;@pD#ohi~zN_T%X|1Lq6UFU8porc;>0q5VMCNJZ`K;JNLd z?tM1mrvjHe>A9p24U&%m?5TIgclsDZy&!!YIVm)|mZ%xMe|*LsKeG7o1?hvKlLyp^ zxr92!%L0#cm!P87xowxAq-ZDA+Z@(uiF%tpy1nga|78V`R3;YeMSyD$bD=LRH7o#sjVddfh>_pqk{TBkpEc`q7w_R}~^CFN$mj0EkJK=_i*D zm=&f^&;Espi7Te6+LRbqwQ;Bl6GLtyRgU!}JJS>zbP{h^!QcN!@$;|D6rFb1NHHSj zPc=CFV#WFP%CYUHg@>dM>sR0_V`rrUVdh5uN8v~$a3kuKdCbljKAw1o z8P2uGxEghJlwm{0HduCOqPLB)>eM_CXz`B`7chm=;yVgWH76~e>W$_aJa9PQB6PVq zqw1%T3Q~TqNVAy7}HrLHw-cTySA?T(L#DxkD||Iohy6OdE_YGb~g z6-r36@%0n@WJTNC@YMEqNLi#Z+f?7JKYR7Z>CY6B#K#ujw&m7ve_nsT+r~0TMJ!V@ zhH?v1GuqTSqKelqwh^fo-gt0We_nOg(+kprzAIa*D~!XSMS?w$Y~Pm*4h^AR`HR6B zPyrkqzzXtU&K}>f_%T@s-`R~Ka~HaH^Om@=%7Dr@^_qwf=WA{t(PsSC&24ua1hu5G zbTK@KwZEq~1o6l6miDfYeAdfIhVpgx3l6omrM5iw(oi<5eg;na!JIK{AF;m=*xv_Z zKMnWB9^cb;^Du9U3do|I13CCsY4GVl9Wr51$Nr+B`F@A&0CN^=-zbN8$SH)V$f;+BmdrJy1prU&49MKVXP-zRUcE}Ztnr^L zcvTum!ELSVzG=#g>q*=Odgq>!#&>7u&171Nm8P7@pBd9SapwyDG_O3GbrfTQo!oN1 z!%19K)^O+DFna^a$cKU<#makdqA*BuAS~5bqf+ZVvE1CooH3ya{jydscAfhR>I#1X6KU)^ zyK(k!d&@1^w*7Aqk*@aV;=@8pYbf8ZBQJ?u7Q^`F@D;$p0g( z5pT}^&Ori{Ndp&<&!_5M@SdzQuYFu0DK>%1UPYbp?W@9L*2v>^uiPG?x<;cXXX-u2 z+s7&JzGtV zyUtCd{d?z$R<2%=Or3U~$++&xZ58>q0&jbb2IR6SxvV3X&5B&|eaM~XwjOmGWEd3l z8#|F3HQsDu$f;)MFbhtRe9C0F25N-$l`$`Ea!uqpX)Pi@S+4{RpQecrIB?#}Pr*r} z+g)|%+;)Ws5bVKvFVp7(^J_p5&KDyE1cN%E_W2>Gdor{**KhHp zwRl%(@s7~qTxgN$t5h!#I^D1SfK`7mRKGV=KTUP55B^OgCxT&lV)Q*70%1)c;$(jx zCy`}QmO-Cc0@{T2kwCgLkWNfTkYm#iaYWl(0XS_wU~N8_YW9s46jKNLO8m_HPUZyoFRQIO7N1>{dv4<0*8%7>HK2&G@ew#85l z{b@W3aei09C%qAFn|wTNYv?GL?hHx>l-r8`-1bY-DIXjkF|eC! zn&JJa92ES@(kE|q7NB?-!wlVu%a_SSyPQF*UTx$ySk$J$&#RRR>lCx2AvdwV@|wG- z+8d*U_?KTjH;VS|nSTJrtf?PWY%jJNd{x|i#ZD}Y@7{LGP1OV++PX_L+iH{@qPzR( zEuTFzN|@%lZ43(0&W7ilZ@Kw*RQkIFNU~E*_CoAeaZ_6$I8q(Hg2u)eXXO20hLrgUU!2(sW-e~k@3Shm&tH9w}Iw4b{ z{=u)e`*o9TMMkl);>z;NX2Hu?QsF7MKIy(>9Z@OlJkNRjW!8lwep~v_KiALM@#z@m zxyo^F;o4$!e}eC-J@`4Pa(Rq+5yp=Me<_6}{Av9Tj0DAad8U}&c=^X50tybboR1-N zL?T887H*65mC?Tvz#I41Dbgk0k@dz+2c!q`3tCkyX{P{@>eJTT@=SCu>tV=mq6c_H z`MS3TE?HOMBS!`o=vnrGtdT zUpMahc7!sksX=~AnL-)pt#S0j$U+Bb2p(NyGF|RdmCaW0K1kV?^Poj11PwEH3^>Z^ zS29P9tpU%E)B$;Z*4Xr;rGWrLse#7l(t+07clS=C4eW@l zE2^5~#yklZHT7mz>rcJctVq05x4oNgscWbFsNIfVhwZX`H>R9DH@*S9Fl2O`RO3Hj zVS%~mE#4_(R}C)~9oi5>ceu#gWO-_rzw_r`nmv{g2hdwpHf#n6XTrQiyRbvk_tDg^ zE66=?_qJ~k3Y1%PQG%+JYi)HL$Wl-_3ZDct;E1}fl0fWS$k>ICae4A(W&0Y1(*6qT z6C9do!2LnPqh+W8X{_5JIM+XQSzjj7*}c4zbZeK{di*X3OzVAgdXrH&NH)9>!;H@EpVYV+IB}E z4tz7W043@h(A8M72T^)x>u%;h+&p+F+O1gS7jHY|<_{tVPP@=Qo4Ub2=v?IQc3!() z#z~|XA1dSu{>`0gu>dS)O;vVo+^4WOaF~bj6?zZcqSCrS)PPVWuS+TLimiQV6U5~4 z;2%e?blJf5GoxsVr&jJLI!utAm=0y^yn_1P@sE+Mq-EwjtseE(8>%rz`&jeP^M8zX zqFl7(j3}>1nZRqa$F_bkRE-||K=IH&7>O{9YAAQ_E3EhQY#ES<^@L##zyNUw1addk zAcdr55EexL$TehuyY>oO8m3{=ViR_Qla^Ow*t=zSUf+Dr08oL~BA z|IyLYEC~p}+uQk3rY)~;4@Gbf&0SU5-o0~jp7kx-xGqIAIbnu+)u*p|TN8Fs{cUsl zs-9H6NGtH~eFnwPDhgxS`?M*pc{QVqh8dLtK*gHTR{4&v*o>OLdD$6lmDhj8W;FI0 zCF2ikVH^rl8|e6CjqS!F7BX2r4PmF(6qD@NMloG?H9_E4mI{R@%x7<`vJsOi=7422 zXP?&9k?0}RMBIX|ZHGX3O%4^`NSS4@gX_><0ox=bzvoqov zyt!hv(7lX0C7~a@h&K+$F&-uGkokBZQHV4#e+rtL%rX2r1o2!^*&PWQYi4S+rckqm z1JmYk1Odae^;OjsPny+3fH3=B(75Oyivv@y>9jPr;hpuKMts1gm8cg@jH$=u!v{7Ed$m>EajXH3WYkB5?~%R^zfrq?9~d&bdA62 zqE@Y}x4_A!{s}&#T7uCgR<8w@d_9KK{zB7Vpt#pwsfc{h44K)PPic&zEUjBwl%fb~ zx($oiJO)auNmFycJImn0>Qv#4>Og2fy$GSJWGz-i~CEuXYhYi2-muj$>NgruOi|gmk0%F9c78|dKLo`n5yj> zfWWT6Qg3f7VHYoLP|gAfAX$A1f!o_6Z6r_ifYd~ww)Q2o?LFI5!2R?N(4Dq+-nFZT zQo{dmB)x(2QR!58)cvmtzYJGdc3YgpbcweJ@cu!jpmuy(SS-WPO2V2X%3OVAFiZza zZ?(Xs_f)Ij2msi-8&{8FGSD*_dsJ>YW?_~HZ4DvT!%d9J$HdP$%&>hMmH&r0QkH#v zDoJ-uhvX5fHrhZQC|*?AHrnMMz3=ufv}DJmwvQB8j?TN`;g7#{^P3*udN7y>XU|=z zu6}EwNOXPS*Lz=m@Zdt8ocHE`v+gJE>%R752N#MK+n)259$)hH-d{cVW?TjE@OOo8 z50`JIk>o={CJB&h+0m4bTDvUk!b?v+c!UO2y(or7IjC1RwDm1w{TSH#wQN0lErdn|YM>a5d`ZJ*}MuTTSe>bZ0s9 z*1m-wkjk<7asB3#`R{%p4Y2OC!lUtv$ zyr934Y3%Nuh4^8O*y+U@U%XzRiEgl6(XVE7RlL0+;&_cz|(OMI0= zb!&YUfy1h!31gq}W9-tyL$l^;e%4%tKj>_VD45(Kg(E-dYN6x=*xY9F`AT1uCtsZv zQ$TD|cHC0g@+%k}-uiD%{7>nD8wEY*I=mc3KLI~=@xvZ(`5(dD>;hZWI`)LA zMGA^-k1NmUXrAF`K%%MoiQX6xF-jphy&;_V2qf*F2%C}eyfXrZ&|gjwu(z;?$}g^J z^$zWhvf{IP-ec4<4xg{QNN#aH4{?XLOx8~7pI@nIjX$)d;g=a=zvtA+D%&Vmc`Fo{z(-svy zd?Y1L#X1S#=i) z=`JuYwBy#fFTHEm_s*X?`FE?okJE4N{LqK^LAUP@O?5Eyt^M-{h_Fr}WAx6$Ur%PH)Ie?OIponhaNy0>|mu4MhceY5={NA)&_#aVseR)4uUuDxWf1)m_cDen` zi@Djm2X(iLS&f3LiuLCeDdWxc-Q<2zkO2OXurR5*2 zE`vkJ=a1rBDE_31qjC?ow{iP3htP2~d3&#|U%Q?1>#f}1yNCNfJE^g}uZ$a5LAoDE z%LjOV_#|AEdvy0OcmMZEWve??eu~SteS%ETTp#{mT)qc~XSaO#?~?N8AJf&Xf1l9! z&r>>4KE`!Y-eK2wd`0EIVb}W>_-?j)O8F>-QTd7g8Ff1xf}!hss04a@8a=;!!pa}! zIw^nQGb(?Q>$LoJyT0wKs_;+j`ViOc^6Pf}gq45V>bdo6D*v)wd;Nd*|MlxXWY=E* z2RNa)s{eYs_WJL%K6w2poBvGO6izWM7(Ia0pg>b!^R(emAYOr6=C zQ=Gj%rH#suvPH5DdA9zlW3Y|P0GNK#M7B;#SvcS`h=G8OV)$2-fP z+IyYITX_q(yPl*{T0g`W)^$Vb5j$=}&2H#w-npGJ3D5I=tS2Ge^uoHQUP1MOSJ1rk z3R;Z{@)W}%l@M*!X!gc^7t&EQ_r+z~qFx-z4%1m%h3Auvx9F4Jv3?EzJhY}38a1(H z8OOjrHXGO9+dbV_ruvC$LbPq9ZJKk8s-(Z;7ZxMy{{zBd^gSzfv=bzRs z3LvZ;+=npxuGuzqQ=V>n#m)PQB!ng0^VtV}>hEAvyNj0jK-%T4$&PKbt?0ttTvWw- zsf)tfl5O!#y0|sjwv~E#OsC~NX_tz@%FCVVIl;EUWYWM!?>wD~LHb-di)-wzbfMe>W<`@X06>J;=XxT4I z7vh4jJ;mJaLV!$MboVYs8NdGST~#;t#yhsfc}vjpnsEu`9B?E%qCUL5SjzwkmWsr8 z#Klw?&0g!zuA;l`FFzmcE~YVrv#uDg5SaOTkv=;~<*n~vLVokUT~-~Jgg@FBs(reuhl9lQVUlOnhl>9quybPD zKYIJC^?;V@uUq-_b;S$=(-VwP)Uc}<2l3bP+oef$gVB-~hOux0ls;C3gWg_cvqB3A zp94kAPJET=D{fwIkr2BmpW@Rbr?#7R;QEV%GrBoaO;KY5>>QJ`H}ypeO> z7#I_8dxhct8%RS)T(@#HzwYkcy>TX&wVEzrR_mH3RFe{ojKG_t9T_YG9*rtGl=+}qU&otv%86zYdIt$$Db;|;&WFpC zM10hk@q&6cQvUoN;;AdwY*Neo=75CeZBUyTtYK_?kzfQ6C&={#y^u>5klj!~ zQM-!tB4eW|b4|gT*TYiRymmb|iAsbe0<6>)_nuwE*Yu;S7x|qjTDoezcKsF2Z-#sk zg)cfqs;kt$hz&{dNhApxT$T86Qt>iv?QPl^Wrt$SdZfbJ(@T>%nHXQks2!DrO*ep9 z{qDVfptG;l28D{_`^)Wtmz#I5!@@}yfZsleE9Fw8pUDlLD3dGN&69tv*g`s*C+2zN z9q&<|{E!N*#r|WrT>g3%>nPBiMJ)yy4Fanpi-A}zqB|*$Ol1)>&pWZ+(OWsH2}j@F zNdUZU6=(Ti5ixvn4fD(w08>8`1q=J6Jd9t0zr0-%L-p@vdsH+lFU%kc8Jxe#*q*ev z%&w^_$a5jgNZI>u9)NP1%`)nbCw(E`u2Ry_6qtn-okbMM_41S<)Gyjd^i;-eUS}PJ zB$cgPE@hG>X}~Eine!*p@`*cBPZi7}th|nX%3zA3j(ZaD+aoOk2Kt4WBa%r%W-kE; zlX9VDLV4?5srNRwm?=6STT_BZ>2ct}Ux!EP@K6n9x8x8By2%&oVL$f1nRi*ehNIE! zv^a-J*L#9#o<^qy399$=f~|`)TBiAwg>fc2n!J44nkLlOug!5#ex5$@mp(Do%F55Q z)I+Z)dvZiDa;FsYZxZsr~a_u$hMgA^RBdt{MOvsUG_yy1h5Q$!cL7F6xLA_lD zkp?FOe+gd*vsn2p!7Q(AU|9*#6rJ``yvABr^1d9OMQg#~iQ&{t83_)wUzm?rg?=3+Xki zm<{iky&MKBUw`glr%Wun_&{3dvBNWdCTQNs9$--ja-GIP-qzzDURnM#?mE}}yCT_n zjp7PmS6A&UzmFU^V$`q-a)!&-0d-VV=w{bIa(FZ8#8t(p^$9Wr$fMpT!&`4(3F~O* z6e@|Y*;!I?dD{8wuc9k5*qg~b5i4pL?!HR?xboC%Fx2qA-eTg)))mTS;OC1a#&^_! zyfb8O6V+DZ)#w2x)!}sVLKu%g5{be%GU$RRo>-g2d1^DhfNY-VuV}VS_vw5R&8iexPK`_W5epmsU|J`Rn$^ zy5W1#mF;&^EgC89YJ;0KaJe_oA0_=CZC#hg^3xnfoufKF3Nra4*cR;TON()X3n#rG zJE-mw=_=;nN7C~dJs9%Y8;Y^|GdK-Op%8E^jHDTJgHks>taw~YI6Q{w9Eu$3u97yl zUVry)Dz+5ZM4ja+t20{#n<6$aYP_3jHfPkx(lO~_Xq`9j6XKdaXm^CYQXJpJklYZS zkC^FugaiNy!L)KPK0@Eg%3K3Xu0?=}-mz&^X|PdjOQR~roxI_;V(FxizyA7yQF7O_3(_O_esV;yC( z_{Mc|vPw%2u-V()RmI{cg=XIzu6Ia>rr?swW3q8>fz{RZ4%Ewklt;CFStC10z0tom z!mb*szI<})038@;z9RTY=Zr%B4iPF-*i>9y#k?&6oa2cgxB@sh9q z_Yy4A;p@)a!SepUQNcpFV82Bi9z9jNl+DkZSLIQ3uxKqX7f=80qKfYEiqI2b=nF;q z{)GidCN6Kb7K_%w0wJ99(^@#V;8)^Su<(T<(aVUZyp1REpp|mWj(vEryvKeQ4pP@0 zp=iO2tn9W>c578e@2DP*XY~peW_y{t;Xy4_KB_6zb$YM|g5<6D=d{=XqR8Og~yoe2|18<&#DXPyc3OzLscV0g!;2d;eRatj3`CnKzM3(AY9q*zd7gLyFC%HX0JXq7>lMjZb@m5wyA4PBGv~@xtKr{NM85cH!fneqP1+}WX(NC;z z<1Yxev}6&q#(1}e$SHyURztSSya9tD}w!pSjG@Kkq31NCERaAdiV)4Y%q^$># zY5yw%>5yU!wDszuLn09-$Z8?xQ2GLo5tiLYV=~n8h}YQjsfE}WJ~#7Ws|bR5o#jC!Q#9rz6i_MeP?iN*kP08ITjmsq@?{As zBDAPSI$TSDup6d^y1F0ap4pNPmP(tH0*ET6y;rE1-1Xw}0fVQyn4n2<=gK;Ib%aGX zfEzXFkCO5s)JYuMkj%|s%pNb19O|6$D9Rw@#s(k#MgP$)?5i)IQagP0*{Sj``;XrBhY`=73D2IGD*vkg>>ZoSwA^R|L6~?F~z@?l=BDU@(WYt7yHkC-CDbYXZL-PaZHt8 z>OcGIN7R#>KjzQ=cB=ex|Jm3607NP8;XA?Tsj2es`pqzVPhtr^>JNpM92i z+VYtX`e#3tl~4B{9bV0&`@>gXohrX(kFv+(xDBH)D$-AfwSn;e<#9xUbfG8Pv%oZY zektb-Hc{y?n%&dWYbw>?kF_-ZY$v>zRd#cS46BBSpp*|F_VLHG(QC0@Hq=f6f; zVc=TjRyk0r##%Jh17nFUab2>++yqO}PZ~O;ho(Eq1FQPz9IGYaoruZO;*0mRi8tgZ zpg79NvzLwFhW$XCeJ0UhS#&ZA5MAe!%Z$ayMEV6vgN8?I1QlEjI}<$UfDIa#S#q^> zHSXxL<*HP`PKxFPeZkhdAC+pxQ^p|u!*&H@2eYy827cpNYd7R;)$z{#(P#i#=Fl;L zkjgZ04Npn8bJ27dWvp;YC)UU~RH;Bx1~DQi%MXkvSirp+rXj(TG9Rt-nJ^#buix9! zIS~Q^Zf)WQYr9XL27sz-gh5(ol#+AT72-lsx0gr6MaJZ)QNIM>tcNd#&O@5MAsoL*Pk)CE^)N&J^WF)7EG50A(?8rxh}(@#v?#9ND$(>ydd z|C0k+ot+ZN9>BrlTE`PRtv7`zG-?1$HNIY?&IT6ia>a1YMNg4x#C#yMViG|x@Ci9a z@70R2X-3lu19wCh)B~(@#gxy0A2^z5)Rlc{f)EXhNi% z+(2qULnb;SKvaz=?4EP+(|`?PRXq|n(C8GIWo!iU8Uma4FxZHl9RW6^o76gV5o|^b zHa3}n+<=0ehiVY9*uTAp6$NTQAOUY_k|HIjfeD#lcLjqN2Jzi;OETG@pe42yzrgOG zkJK15$Jb%T$=pc0K#F$N5y@N@r}%F4LSl!ciOSVuw5f{U)wPFetv>V`0g`WY1Q8#J zb1|hhG4L-3RZDHT`o&{tWoOWP)K&~RC}Izo(Yi=0`_oq3Q6ft*zQ8hVz6J-ahsF?~ z6+Nc8fa+S93Ds2_mo_eb`lxPwfeMVaypKE$sE(}-%Ofv?>b&D!vsyrPCIe)rUJF~A z6VW!h85JzFplK6ZNrki(sxus7&Flpt+Jx;|=Ly@}HMX0asXl~XI<|9g0n_S0bs!{; zF*X9=t$8#cz%XP20H9;-MUa6&6?aJXu)A=7sltYaxJYZ_=$%}ad3PUZ9$T`gG_|UYfU2Q^H!B;FEzYzW>_NR`Hezyb}G7>+wrr!T5&)N&zqaPZF6!U2Jb zZgDF!mH>m)wlb52i-ypt29W)&h&fbdl@v&RRH3%XJs!Y>>3YFRCph{{-kD;Q%qh7W zT`_o&AYlY~4>wEaG}b_`M4TZC83U>!Lfz>Vz3(b_13`*0?nvNrK(fZMO#6MS+uOfJGeUP!CN6v=#HBfr&#P;YGt?mCW3u zvb{7zqpf6;$(*)ij>yOeM4T&oU5&_)M!-EW5!N@{3%GO!1|9m=SP^J}6o3m{1Y8Cv4zP56Q!y?MP~0G9hMJo_GN6)I zfOQUm?j~*k#yenfJ=2772-u@(T~Ya@77WZ+!i<&UuF=97Id4hWYFlBVa_UOKYgAeu zu)%J}e>$X9xoONoL9am%cZ-q@$QKZPg181q5$L7!>^Z4~C8;)2N%InGZtCQZ_D3_) zM-wIsG%@j{(Qqp?(T2_yj0PZRG^8zt#(XW{qd^iwbVPJDM#F4s2KdHC!=hJRZ;r;& zNozC~Ft9p9H?Btnd~HNH`s-E3e~)!uW9*DO8N_$V0Bu-nux^V;GkOk>t1j_{D#h_VirBgl2y zZQ|x21C=H65;Qn7y=}wY0+)F7r@V?Xd2Y zj|nWPFdOog`XG)+JEX^vZnX#(w3%sI+Zs667+$w}8lpWTTI=X7;VJZ{g!2G|@RUqj z39_kLgnqBwQv*P>8xVj}nlv;sa4x};v!m?y`sC8?lgkPwLyBPyq5{@LdxcL%2D&o4aAdemBBY^-p=L#oFnZ^*_DG$ z)YkFA`$rS3i>kRgLpmI|ewGV3U@2>tSn|yeB>H*k{v`WmQvS>$%Kxyf%!g6_%uvdI zS<)4}z_pt4XPok9mZkhvfD9~-x{ql=s!`s`DEYbT*OIIxRxaKR^u7~1ijZ1 zS=NFTQUnWUPl;tmR_`UO;%?DvcTc06$Z*qGwwB**jFiZy)hVU|eb(*SiR$mPhT0WrJcpP1y)SiuINu+w}6vLx3K1h>lR`L=oYFj z9|?+c&@51#O|w9i4w?lerdhNan#C`VawKBB8^(jG2B@6zz{SLPAZBAc)4+)$`XxkzY+~e ziyFq`MvPmaxv+fpW}IWxJdP6!;Bf{wk`_tt&>^0{dW7C4&R)@hk~x|I1vV5N2BS5` zhMs(}X(-=V%K{m5Tg8}MoGiWdh2>nOfQpGPC8s6XUHM06P3AbcyQkxrrZMqVY5KB) z&=UJTV0JdNk?ti0Dd_AaJ))Yq@RlwaJa5P{g)MDUvPDWez&|_LVm$NoWFaOr0r)6D ziDD5K6y~rJ;YQfB!EkWbn{J?Voz>!FWJI~;sqzE|f{JA?N!$5Tx;wS@)dY$HwI)uj z<~O7-J&_QEArgYsh*Iez-7ylf&w`qO%~WavB!sFgTtp4%el_k%i8)pg{^9>E+3{!u zuwcI{WXL+cR`#)wbuM zGe=hQOid`Lhx%A{2dtLaC}6d^;GGfXsIn5Q$rGz7_X^*%{y_ILaRCa?CKvG4 zV8kpM41ox_tq}-Vcz^qR($+=I{ywYaR6^b=pVAGQz;q61FvN|uax7h9gn8F;ijit8 zHW8 z$&Zi3HJTnvpI_kFWYOE7P2wG8i8ti^-+VUTetffueIK2RWZa)k6qsr>g2{TZ)tiFh zR&Oi=-S5P({rFAN-uNEmH=nV{2mCUNocyu~MzL-s=7Eul8AeQ9`LkQf->z&8QhUU3 zU}yx-@FEl}_05u>D8i=KNvVO)#7ZGDRA5o6<=j&1FsLgFwC(<*ws6BAb(ViLapf`< zMsPg3Agc>Yj-bxB*qm61D^#69^7UJkea2dhV6S{@+8q{e_sqrF2OQ33?}UN2#G|A& zz+g?Gu;q|;3jsQ%N3ln=K&_RCJ~X?rWEVP9^FGW<~C4SBEV z?CK3sHf5bf|DsX!^X#6!wjft4ypK?++8b=2^~7U2GEPomJfpQ6)y!z5DKV$8+^8_7 zMQ&7pAUCR3DITGP3kaoL8MZK!dH>{+6#()M{Zk#aXK2uoS}mV`tKVZRJ-$MQ7fSP! zC(hJJI;WxUz9uf^`qzfLPO?CYz*`1iSSlbw3<8RdWs4rU;WvaM=44 zjcUX`Mf6)!WUf1#B2v=W6v>N9Um<(R0QcLQ&rZOX8K9n`5vFLQF-5_3H;OD(4fO;K zcisJFe}ZIigx4Y@e1a4NP)!g;bh$A>W^B|1jWR)sA%%tGiCtoBl>N-DfHHZ3I<^RI zPLNi%HbH=o4i7AAk2F2?@)Qz(BC1II50m31!haSmnce9q`((Um`-i&AfP01q|cOx&O;eldauH~&!(RBnEFh}`@jXx|jyL{OuL=fTY{OGMwz zKYBcFe#wERaR-Bs8+Wks2xxu#AS&#CkEH^_5^PDIeLO69n`V5}Qn9^?s$?;tC{R_~ z4TG|n80%{Xi;04Or5rhB4X{3VL!d06J=Ba}c?>FxiF*vfiIVl&S_B-<_zN~j;RGsV z<*LM$(lp~kz!SOXv~qQ%-QR(^8mq9V>F3tQ`btg13?61<>0)WNqCi~~vY~mqkD3I4 zpW|Mer5>|=S8RlUZ{LON@7|SUt7J_NTEI^a-X4kvp8jQ=o!gM&W6Nj&5|o7Y@_2|Q z@QP@l%3G7;S1Q&<+5Z}iCmYV_w4DD6BSp3_)@f9ATWx`T8!*Zlipo+6}nFr;-WY1SKeELjpMQm)4v_0IUxKwKd3Zhf`Rdd`WO`jqKI#q}|xXjJOWd#8q{S80b-euLxw@bF?f0|bk?r!!3=s{P1lEzd@wSJ5Y8khStlfFraHRF^PQUa&OTZuKmP z5J~e+1r+T_sF-OzR241(iVBwiB@o&$pcpd^Z4SaD&>34qcN9dtI&~Tn;8F~DA{n)) zC?};En@dj<&l|$int|a>dc7@KvbaLCc{okRJl+M*P-W3z`DqdqTZB|Q1#bteMRnFT z7dAGq82}(NMHIXWXKV<5!JC6GZ}i@Cqv-I~`C{_zTtq+k<1Ml^-eF-2T1t~qf$8e} z0GSXpbLN6)_LS&c1NuGFNkH=MY6OWbS~a;HBqHG$8EvAikj%bB?rGV3flh=@u}rJi z%rSidsVbATZSB26=Ujp;smQ_XC!^KOOGRhqIrM!rA8Qse^Ggev`N7XqkwcniVzCHc zpTv$+!qE0oQ9_D_XF5x;XM?hk=t%c{w#FAv=z|<$mo#O+-9Th3J z2~|i0#Y%9HpnPjYQ{U09xI!`SL2A*5pzkEW+c#EHOGDq`grfm{r<2o`Qghb&4$1@k zMHUmR=0V>9fuVizuwtCnn7w=)N|nNdsPu_Sr0;O5PA^O60EX#1sYtXIW)^aBWicx2 zS3P?wWTKW9GEsw{2NDevwaO<-Ne+X)GqlY>qT*gCsg(l(9ZdQT=TDfv1EvyD%D5Sf zrp|Ys$_^$~z?hT$Xi}*M726tjGdm=@r4p$NN%o<>F{q6(2-aBJ25fhbAvhH9oEWcU zNRe@9z<4F6G{vK<*FurYn6A9*4bQ0zS4MoGd~=B{20;u%>yYc46NMuB~ukqNXr?NXf4`&5hm4( zM_q|dS;5N7HIfJ&sf#a92E? zElSAvN&+phd*EgLF#T16QENF2I^d3M5WmB;)J-}AwJ(hOVcg!~FcYSkAFAUjF^zZV z$|9a%qcVzhIH-M650ixpJeHZ+!TwHRM4sNlzP&#YNLrvu?z;jFUBHMEV1TVU{CYIBw^`-C$P}y(YTw+ z0T`)g3dKpA)37$kk~3j*)b~o z8d!x0%+)F+asI0h8>qRIfhT2uXG^70bNtPTRmd_bb<>h`Pm-PAuoa<8HMd6g{W-x_ zghtFOL+nMH2kk|FK4_6TIB2iBe(?4igD>w*vS+bB>6KA73Za3n0|u;j$H!|_KP}3( zHXww)v@C>%Lgpn=z0O0$0hy0^O&nN@+g=vY4PTDGO3%t~q56P1>|rmtnM zX=>RV-D6s|41>8=4C4U4vI(MPkDDAZEt^*+c%*Z4YAqXkpljI^(pJ&3$E9VP|sO6BNoL(5U$ur?0XgHdz`O?UYz zy7`oAaFecTFW0uzY`!7C(+=|QPue$t(~PogxXOz)TA)Nfh83c3^=P+7T=o@qeb#Xo2LG5HnW)6N~@*Qp_A3d;EAq^G=z2GzE5Ze6yoDK|U>Z zyMOy_*yk^Q8}|9eZ^J%+F8TJu=U@Cbgfp@6-*$ZC{%^xR|Ml_V^RM)+IL|+Se(Q0e z#e#8{_m=2OT*2WgphCF7KB2z&ULZ!%2)kf0!T*((nBYJv^Hi%@`K#HN$;Fs@Nqy zGr69_ZZos*P))UQsu_r=AViFDN;Vt3x-a(}>{yM;q~0IZD8%3xHcd4OM{1{VC=5z~xpvN>9T~;VVDNibvr9 z^@;}|26wf^bJ&8(Jk_8*|1S+n{OMR}-KJ@bzRAjGga#SbHQ~~AZ?eYhA?yhjdfO;K zQLC2#1XgSeGI)=@Eejws)1mphYsWDT4EeFG+8QEhb~gRUi9&$}eFP%Z;z*lAs@%Z~ z_r%!~Da^)g)rv7n~ZsmVtk^YsXBwI0OE0jXLYlBE_Da<&~<9U*fz z6H0soYIzFPF@`e6ISQHqjk+K*MXzWx zm0>w(ND-iIY`d}y4%&95^dZ6#gh1G}q0xew3eB|7EE0nm5pN+|61}EE-k8bb9{_8( z%0YUCPH8o6aqsE}_y!^-yh~C!JR*+0)F`Z@3wxaxVwl_PxryNZa ziZy!GWK2yKB}!4pf~`Sk(kM_*ohHd5>D{EGY(_qCZ_iGXWhyn9-7?;3?14*0U}X%W zwYnwqPCcGp46(EGCX#bPY#Jz$ctW!WS%L^qBc_g;OwQF!xjRuX~5z; z;u6#9A&+>V)2z z7KP}8!IUmvqf1t=ap?qhVoVj?Y5Fn^0NLWg$e9~c$N|1`sQ!T^R|1K`2^hGDSB}hvKuUoRUnxtZa6dc=Bwar< zx~QI+Kq97#34sqtEYOljwfbDa;=bWiD5ITY0L=oa*v#gF2(}J`5qD_{qK*k7i)Ks~ z3nC<(PMxq+-qmpq{ey7^Qh5tCYC)teJQ757Lv4x>C5VXmk|1IZ;W$R{-0Q3by0lXU z*C2@M09d0BG$I#7C}OPgKvr`03FH`{0f3~l1ku1OIQIBfVK*sD5Z&7sL^8oMGZCG6 z-V%dd(t{uaQW{|%NmZ&-d%k<5PV=-3TF%sH$?ip%5TMbyviwZjzOW(%DN`%oAg1Ve zX+j2+^+XgPB++g{NOHneNas9R2x-q0PFFt*2#G>7145#x<+K7q)~`rI@(4wb%u~Rp z=$Mg5gsm9og{Z?8SL3p*^5}kC?ZGBhSI98!8IpoyK^dmK>PpR4hG|iT-~jd;dnB1j zkDTTf_(!D>J3E2&({W;GTe@C}BH#okHRl9e6I6piGo(1^ocdDVaR!NnA1tZ`6!&3EIDY3TdO|)#PU^Dfs|58?64nDS0TgnRg5I`%8=Q5RWTkhX2lxX zK`A|;OpOgmy!Ua+fz6CFdSX!EU)kVoJ5X&4Gh~fZC|r1g#Gm z`T%J~cr@KVwS);ELUQLBQRJbNnpA~SrohE2NcZ zTD1ssX_%iGQML()S|qd^k&%lcqt%OQ*R*C?vt}&tIf;yhPcMy(wzz1Zh#)z($Y^6e zY?oUa8U37Z={M~+?f$ip$3>#CfFp^-5E)(B7|%LkKZ6UxzK6IyDj01%0i$JMG!c~# zSuTj~ulF-8$+|E7PWnLLJI<6MV^Jo`j*xK4v;lEU2ofMUas^l8*M=_J`oyxHxi%dyqe1XnH6;M1;zQQjEqlW7VrrOTqe=lck}S(z^w-q32w&DhRQf-NzHo%_7g3>gzsXapJdH zE+nRQUz)v0qShxT1Pyn8F3nC^QVIZ~)mzlJ!S}nrkmyvcMRoA*_bMq)-HV@19k$TA;H<*|ws}=;VuS>1EYo+uD=;S@u)*>7oMdENO@wQ}nd_qP%)m7|-P=9)MtITd zFk67WN44hrL)LcaHf>qRbSpb&kWU)WG{-m@0HKk7tITwk#bBuQ6s=p2=&~{p1JQ5~ zzAWR%=$c{1E#Zu+@5j(u|EPWp77M@-n0~AJF@`&D+!{4x(9Uc`BKTqI*$3+%1yf7So zM?V=61&yunqop?Kj8vO+ruv(7rka~{2DZX$M=TI9XHM7(?-t_0t?=XhO*(Ap@l84$ z8g83(#%z;L=rw|Z7qA_WwL!+8v1-4Lc3R7+E~^dBShyHFg!;SR*(H5tL2g&}cQ*_1 z052`X13dV-;O(()m4 zk;PQn069+@Q4;C2b!1wZT!XNHJV-2{jorPp9)7*aT#hxKAd7AIO8&+0NsximtGc7A z7(NbaCZbu$@Rt@c{K3x$haXZDVFm}9EIoAG>9E-2aR#%Db-ttM%PPZ>sbthH%Zp7h&ti zd3So!W!)G>7iSVs`6@CoOypCD#~YTW&q!QRgrt3M9kP-C-5C@zXH+zzIL#9@vW)5L zza*Zv5(<$&Mc5#X#NFkC2MD;kd~uRPxy!X+2EBs2yh$rLws~`xqx*|)VEPi$LS@X% z91R%lz>5UgF?qX`Y=he5fJG0&%L$3rlSbLKWYGJ#({ELCO7|h*GZ_bhIsqW3O^RjD=C~R_2Oga5~9(PxCB7k=*x#clK+-{bK z?!KjofL2GA9?=<~;x+)Sc9XK$nPnCL(CN}bPnRzpUj+Yf==LYI1~PAI7L~bKIBx9c z1e-G_-wAm$%#6%jxbda?wuBU!(qMOjD%tyju)Yl%Ss^1bWf=sw$VfD1h==;b;e#nK zDOo0vYzIBrtbr&#dOf%TkwQwB)J7;sktV#-a)q_3NJp*fmxNcUupb~8Vj@*Yc;(>d zQq5^jjuRID%jBP1(kT5{h6x!qKLR#akh=KuMyo>qw$CCNM z754%2LmYBH#O(>DO>-XE8Z)ZWj-Uli6#Y0A*Owax(>%&BX|+NiZwEC&dQ(qHbg5_} z?^Ko@ocWv)DW87imL1#|vXq#xB7-n;${bS);*cpLSavW#hXs%X29_6z4-_?9!C)`& zuuoR!(hg}&}=|9IfuK!)pkvlH9s8R#|sQ zRhf_PBsFh8(IEwH-RTIk$gBbg>qLjE`_`S+P3sQvmX?AA!x{z;^iH5aQJv^;+%!+K z?(hmQ>32jTCb7ZI>HhVxIE7)>rR)_ES+Nvqgv=q?jWJeWVO2N zkmCjMP1=?5d{wiM)#cJcR+odHE61fbsdZx4)`|I)FDyfQn1e`aQ&p{)em)2Z4@24( zh|J~@EMXCSX|8D1UX;uwb2c$Hz!g|`eE7qxI~qO)Bn^MiJo7BAJA=btWZfCk+~DYg zb!W`2I~BG$J{d7qMMtsjjJe|7h(}nVzNj!Nq6uShIl(4<);gmDn3Y{M--GI5plB6> zUxWKcROsfj#^)>28J9G=y!_(mV;!nhPOn&}{$|1my1iHa>p>tjOZ!l2miEC^l^!FU z`kyVQT>o-X^Y#~Fg}<>c=g(NVnBUZt@^~`D)Q`HrKjS%(@h>pEX8Q1A*|$=I$c84o zaP_PRUiotZuYd0uCT5;*l_-nKS+h?3Vv@bUb2iWA@o~thIekmDphS!=XdmV@;b$3&;$&O>- zVzXre51Xc_tE!wjuv+s%ZZ0@>+eA8O)B-DL*OZ+S!}#Jus5p4+KNAVHo9$YV)UAsuQb!NLbne%lA$>A(p&tBclw`MkA1Pk!9I5@r08y%C(C1V|*1Ti#(y565EQ zX}UtEtvSdHhNmhZf#ihAZb7KP$+oE&qvu>~R?cj?JC2!;h<-q!cy1dTI%zdFin={4 zzILK~iqd5RVUtQG&w#eeaq`2P_=m7~(EGgZwI*WxcC$w|$t!89KEDczH}AVbx$#O17UndP z8(*gF+G*6^1Y~jFR6($h?JWV1s0ELroVRu)h@3{|y|GBju0_R=h)|uA>5mvcvSAy> zg-7+#AQ)|ze}sN9yh2&v=|V8!1!qz--Tx6f1Nii9Fi(XHh#aZ;GXRTYV+E`k3tM30 zPz9{qfwiFtEKsKpEUhX5E&)SlGs#TN%n^VE_{_E`ytDD;1{IKFDZr{nLjX49Q3bH- zQC;CN0Bp#&Ljh)Jw$TB$>Fi{a0Cz?OFd{jGU1zKaV7zQxa9QkH0fSNZcJf|YJkf=e)Q^6BsHooT?H$o?M z)=%&rD29(n91t%=;7elqxBwcD>SKW|vA}YVz?$I|hUHHTcK>=UtK$({kxk^YBo0TnOh>)Um45f=us^SF3QSbA1fvXP4iRD##BGz12i zg60?01{|F84dO zx9ZKV-(gqOVX!v05!lTlz7g1onv(q}1NG-plowO#P~3?l4#Ai<(A@Ks_bQKHmb3_v z%W3On$;3Gjk#x&ACdS@^9{6W30k2XM<2<&zH?FsfDEjgBv-)!IJ@U~HdyfGPzK891 z*n6};_+EGTd%!9CbPQarZ+X1Gh^;faC8x%IIg;%eT!9;^)e}?~Zuqv*#?WrOki+^n zjhTgM4B^4DVh)|*H7lIqj~L`y1`5yQ90|t+G6&;jxqvmbA)%|Ek$AkCS!COhJ@{DbAEe z=&L=IhjiRMaYdtibDF?vDh8l?(Y$sAt^U3!8#AV}dMk?-T_u#R3#>=$;b=7>IHVbm zbT~5qen<7elvg3n^l@!n@QxFYo6JcrMTO2OkwCV|QXG#K8W!fy8w?JmTWK$peu4*Z zC-ZwKb3|b$Zn28d0!J<`-*V7b6$$}@O}WG$vj^Gy8dSmVqmRVkLTE+l6edD`05#_O z2h^b|KFfmVqLRJA=OlCLHals2Q?d6d?U|D=1?k$oIGqEV;2kVT*^FCs)+^RgPNF#P ztk-~J?S5q?O&}2~a9k)|?PBJ$ww!dNxyVOf!=qT5wcc+}#uMyvrdT33=13Closc5d zR!yp#-4vXR$_^}Teiv>dpujxMq0}RQHmw$IW!8%Y_lvA%>H`@h0tK`l3ws{D0g(L> z^Q-HNfvb)}r%FOPrmINh?0-%qqb$~aG6_-^RIJ8>A(($&@QblZg!L=`HQrW;Mx# zDlm(O^v%-Kuvlb5b;pEaS zhDZ#dHLpAtT$u#4tIjN2sqBjRW67(h-C2+#L50)Jv>2@w&&)zdcC}#^DstTB$0PLt zBm-U&{^>?lK+6AyM0W^@45$H%&`$#vp+yRd&?<#Dm-yX73{tlb^9#~MNVog?m-qYS z-mSCA1O3ZGT#BDP4mu0>gd|V!+xDb(_mWg3s|-|&f|kW|z%v}e zoO#j5GdossX(4zv81o$B0PycBzeqS-&(El3qWX;vx)p_BbTSnuV}<3B%ySHwQJf{S zJ17+IEaPkJ1=KdPUA7np_*AB1_Gx*YZy#vWh+sLRd|!-FrcfNp0cBO9SUA7$+MDr} z^~(thuEAF)>Q}WHS1bSnEzJTtMaYGv=mM@B9s z1ej^qEP$#(<*$s+mJVT8XJxO85WRaOeycxuvT7uXleEb|%X;p9$K6+o-Ljk<2j_RL8Y5TvQRNcz(`l*Q5zD(-~t!7?>OsvqUph z0eb2de$ZNH>k0m@>`R-HHG4X&F3*h4X1u((DcOE@asfxw+?kf|xl;;?)QCH{yS=*8 zOUOOfbJ%l(#wJ6qO3Mu;7iUIit!MP;Da>*eDx|Y1*N7#t-jgT6NKu#cjeo?4+fn9t zmUq<|DSSFxD4EOoQ0MprPXxzK>c|-XtcwmH#!cZC%^5Xy^NH?HdkEO+@YS_imCW_% z*y+iZ-YNQ-?VW5N)V1_A33#Qd>WzT-j{19Y^%aGcK{Eh3LM96GC|yP95ZB=pI|fbj zf|T&f0LX=S5Z`E&qp*fjY*C_^KqWYXbyOwW5I{ zBN!* z7VsOke%aQOa5(Uh`X`D4Hdr~E2PO@LR0^aBcY%8KM( zYeekwyVe(L^ON)G`Qqe8Ct9KT);#S`hxYZW_Tfm=cM4@#j3(vGRXcFuuFX%$Uo>C5 zs8I)dIBf`>qtsD$NZUp>59*l7Pns`IYSf_<-~@(=qt(&93YO&zs-5g%#wN~;X5r22 ztlq^#+enp18yX8Pb!qX4^y$$?gnqR)Upx$bXv0`Moq&_sG;pFbvyKBAHZv$Ek|>*! z!_evZEZFeZc3f9*j-Ru;(_YEZcO|Cy2ZnRIw!_bl`a{UEdsMaxJz ztP>J8nn+tu30SO*5`ji=mi1voiw0!031Xl;&F)Jr;k9<~>^tGaMH{Xgb~GE+dtv3U z?5lOBY^@M>)5z?sgs@hR;O^~d{qo(8jnGjEi2jLf<=D@Qjq#_WK?x@%hk= z_pE=P*czvQpDwy@ExKvG} zIji`MoBu*vtdvlOU|)Z zzf~GKyz~JCu8}N#0HrT|5NsLZIL!gE;XL@_s~%wcR}V;(s~(7G>2k0Ky6wXjoi6`u z&ibp#%dm(0D%96kdQA40t5nR|NXu8P0fC>d(Wn{C4!GEhF6jaaT!3Yj_bzlxGhI@I zmWfdoRT87DVC24Mokrz3qKOqeOJZ@BSYK{0#&?#}Z!MrcMqGaKUH5)A`oT$3I_Uyk zEGD*3Sf7uP%{?hU`^dZg#SgB>)vYYivGk!Qa-596$U@P~YRhJ(e#^!jyI03qQO_X)cu^}0vS?|r?03N6Zj7wH=8kCKk zdD$*w5kppb6jVoBxn9VuB?jYj^lVCs5&jB09$kH)J8ChXcy*Dk=V5TWq}g-sH4N=A1~>#0A1hz%=}f$5@eeO6mJTa`Pdr|k zpi)&$qd|tI?aG?w9ouq))(Et@W2)5~CO*tKx7JM|GFLX^z)Yr318EO-4C8R9Xt9IW zL6pdHT$Jbz3}zfqi>xf7PFE8>xVNaN6*!C%EDYLyN7W^I!_YHvj4?I@6D{^V{0sfC zdw5787Sp9~j!>B8S^smHeLmTLjlWwq49Lf zpfeHLA6t1X&i=#jq77givAi#cq&;+_Vt6-8jmW{8}XC7O<>3`Z{dX z(gRsD4#z@x+3yZ(@)!l~4Ew!3{Nl^7`+YDyzN)Nse5*Rl$JN2;yD@6C8_b2kl6Pi` zsoG$u^c?UOTgJ?I#2s%$!2(E(z(P#K$gF-SXT{L{eXCl0`~0UeQ}okVeCn= z$wZO3`IvOgjK&PeAhf5XNNQI$MIyG!cx;0*S2lbKgRU$^W;{-vnd7+pZri#jRR?Dq zBx>37gb8qGX-GoM?pNR?-iGm%0)SGD_>;RnUG;X?r}h17VQfoAL_L;9;a3#v=bl~S z3ljLPK%}*z(9_gfxG|DUbAU2q`GoPrdM|jV#WxfOKX0N%CIe@D`WAJC(Zc67S{bFG zkKpIUbxTt=S_T*Vytq6yTJa1g@xp(pq#mzUn%09>_Y*di zQTOXcW;PC%^cK2=HATOXTQlO?ngPT=tQOU+r6@p`EQ}(_4!~u2r_&=i>`qgOaIYRT zu10J(CCo069Q>2VO$UZtx$$Isf_Qmq%DHZtLt|62k?S;=Z8mXD`Z0Uw46ZFQfcG~` z24XXKn6~8I=)O41{%fM0E`Ffab34(lT%iL6xCH1ld5)7>R> zT06jCt~9pJJtIRP@a%Fi53OK7b7XXu2~LnnAn{yTY7iAKQ9 z3uqbzA!w`rhIy`=ZbE|p$`IhCD=ACh4;A#L$PO-RdD zp}JC%#H|`|X3Eq$`jR+a#NWgw4pj$T&ZiI76}x9UWTq2~s!F6Q)E-vk zv{~@9%wmG=mRifco z?N@n%frTfW#n4v?NM@66!+YQadwz0<&YnP%b>xho^L3O9<(!mbKiMM^n=rHGL=duK zZNst?j6~%vccvLXd-*x9&T)X-&tpLtV7c$z;?rsYUT-pNnd-W)Czx*Av#ul{0f~Vv zqz|z|f^RjyQFf^(!LSEbC!^qogp^>h(H{m!Cj~kN&9#Zj(Fu;I`$RQHpox7rvMPyU zptrA#vLENP-s<_MME5Zn- zX~=sBl15d$rvq_@yax{*d=Ftc>^(`WjrEAmaF0$kA`mc)h^sInu2wiAH!B;s=qF&R zpvKJsBTi5m#54SFKJC;`8Lggbi~-`@)K4WRc&d@rPrLQgdSq(cUpPbl5PLyojn?~* zy=@+gKC9;YkG*joPw;qRDob`l{2*zUz~-fU za*_J|biPXW*xvlUn~&?BoE3gQk!QNkWUjEu&)IsozlYtx?^!u=uNX@YJpM7D8R%}@ zh$+vUxZ<>`2>q8j zmOrfa^N0}VAH?|G^5!1H4$i5z(spgG`W*1+}tP}1ohCdzHqZU z1s`tA1o-%TiDzkBPu-Ea{`G-yp)iUb9xvm^Ut%JvX8n8PGxqqQfMc5`NQwJq38 zXbe|qY7%7qBaC%cvXLS8sS~7KirRWn+p;lFsge74_Z3)i~7TwP>nbJYl|oM7hUsV&Wx{Vh7YlR<)uy zPNdxN3OFid!nkXoVN>rlTJ9Y#u5kD}!$5;hpx1{$r*6Zm6Tq!{!BN$Rh0tGwnI31R zrJvsx3lW|G5tdQA7jAnF)b3-bq^V@H(>J@mZ3{3*!ixrxPyl5%R-#?kus@@gVVi5T zL@sOuUVs+4uxS86VJS=5EHA=U0CWRE1BSz{79nn^Smk{dX3Z?s@l4AaiqM#aDjiRX znJHlnByU$pj`R;mzF1GwXNwUZ?t`Az9*+3dnF{g8kS#UhcU{jC;zK&5sJ_~ zYLfIW60i9^K_*5RxFu!VG|nAJ;f!L;*!LJXDhUR8iG91aELB->O;m`4ti_sU%Sd6i zQRowALSe&_T5Yx#*E(dX7Ks|>DHDM_27$;puqnB`K`0xbp~t=k6=|XR*e_Isg8lJ` z>(i?S)~Cl?iS_5q=!e4ZMU5pdQ&m3mCHe(4%UkMxO&_IS-;vGLtLEdYBKyYL^rYP* zd*WRJRjWAV%;+M5clr4t=6#00OynjMdVV%ysp2QcM#awtkB^wqCvOmvoYMWjz)p+~ zmGxmdKRMW@ika}vjNX}1oG=(>V)SBtNr5$wa<@MpSAG>88O(cgEFJjSf(?G8`8wTF zZ`bkRejR3&YK=iPTXKr#tY~z9kEnS*zMvQDXL}DWAGSCC7-BOy_paamj&t5f^NGIP zPW5{q#A-vm-0g?^t7Pl`d3p3=f7widdi#Qbw=ZbE%|eaVE@Dk1_dD{9`mF;O=3`+9 zyH$m8Mw+^Ce?B&!XZzcEmUXWNWSC_vdT+vvGSW91Ghm?40mrkS0TyMUKQaQ-qw{3) z^6_tBPcaYg`>l6=3vi}a3Zw79seh7Z1wangYGh*Lx$Lx*s zbvw%^lFNSefTmHi5~i{3(@5Av)uvixKD@;+lcV!_dp}slqb)hhbDvB~YlIk>Oh<{q z$>h`RFt`3Zf*lFzdfvHc8hP)6Jg(kj26-<=Outjs^Du$cdd~h-s&xSy<+*kVWA_V$cCumO%zc(j8ap+#?6Im2Ms_P||Ku|7MEyI^`|N`QgCq zdHr5mwDfaHF*1L^X5fu%Pqe`l^x?w!-Wr=AOspQkzsXT-qf>q^T9;Iv@Y(B~QZATD zw#Zblb-p)^6%+`{(z>76ZEyoN>1o-XtDg>I{q8$cmbvoY=ScCQkc%@*}$#fWF z0za2>vH?Gruz`V}i+iiVm5dlusHyu3kW)5WB+3Ebmm23&ma2%7{hB{kRr5s$b8SqZ zZ>RgiMJMmhYoRd@urE_tzIq-Th23AueeBOWI`ZxkySL|d&(_dWV2L%c$C@XUC7javaohS=ugMrLVItaK8ld7R&+TH9(@y1C|zdk0Xj0mjn@_H%$Bv)BC*+EfQv>2`lu?PoAP z&fkE_Xgi{6e2_W zDaTN@vk-ML4_jvxpu7;gLiq~IM=Hvgyrs8l2(pK&Dr7hGzNEKWz`GQEjGv2pDKjt$ zvdj4Y3TP?qzT!ZQ^CLCRuL?LnVmQyK9P`CQ!1)Pqo;^JCdAE=AWP^YeHgVpbPxNu# zp4)xEdGR<7|Ddxg!g)IXmI9vI5i4yVKINA;%A43PT=R)>h+Hf#W^{6?U4cD8_VWBi z@91-EBy`r`*dk%U4qRGH4Z_N*(#w`sI^C!g8W~dQCG!P#xdy!`-^OKuAwaCMZaa5S zRyB3wGBF-;FI!16eU_eW62uu}LTy@=ca2w|R(j3+9w-v=G$J1kcmzU{`}|U}U$X0D zgaZ?#kq9Ud6k-jQGO@o%YI;KRc6!oEV@AY$G`fR{PhYNrhbVZnYnF;b zKshTPduOFA6Vq2K%N~%RD2X~C!D1wA%}x4}BfW@D{S)8pHtJzr7#0H;Hk9t|49hky zYkc?Ac~}m@XU-g+RSC>z?f`LGq@;=Up6%GT zY1&eM2GcOR0A0|&!?~%+Ci93o@kAVpZx_=XMb&b!=BL}LFp9ilZ%?@Tu z-}mQ?!2xvSImv<(^m*-Wwx?E?7QjxL}u1&u}!ne}oJb zLXAec%}wUWr(`q615AIGM1g1*Jp34!6k%bZ*{s*Oew9V}BVQzPQw3&vvP8l!urizv z_mG<=)j3hgoDlAeJW)W0>d_*wRAP49S#@~pd@XDy6ekKGNA<0xVig4yAI#DtYh2Q-v4I0P!C5R)pGP>snJ(f8SRm(-&J=UBVYFaU_FSKbL#OBy<9uj zM(I+k`!gQCSMSGBoaPr~d-Bm4LS)ah8Qw~O#DrZQ8asq&6dnvF`s4hT)2^;}PP0Be2 zAZ;O(?b!e+P|gZ~1bsN=ECG^G*Er5nAO*@<45W&3JQ`1w(*jPSoWxC+(|;y|K=s`KN{o|SH^}wUT7-RxzxCDQ z;R61O=ete!Ej}4MPTyTOFLt}|j!L^ZI*si(IjRsI#D*1rxu``;v3y)DuK3GEEm~6M z<7#omUj}Zq4Xl=9ow^l&xu``u6X3X7T=AC;qoj01GfGP5n%Aip*7VVp#kpErJH9G> zGQT2Xkp%$DqjAUs;f}SHSY`IZVaFA#3DzrRB(98cKs(}C?cko%>Iq?=$5@xRvrPuJ zS5i-v&)?(cM`X)~!!0!RT1^Y)*Hx|37>09%t8e z)p?$CZ@q7obY+#LlB#5%dsR*XkU(=Z4nkCd6$ zqdU*M{uVg^6w|L~z|;0X;*^uTnL6ojCQtHaQV(U$5vZ~%bEb?D;qJF16~TVEAf zWCesyEJcsCLxyhekLEgacTAZva7Bl<+C^w8GNH*Z!jGAlEd|?}>Fz9<%1Nv&ty^&q zm1$x!nkE)%quxSl)KlgK8TE+Xhsnw$1FR7lNd;z>fnb`Dm64Y+>RG%!l@w)Rwu96( zp&)IuR!~2fCfpDqrKu|wVPlQZ+A5U88sKvo?FfwvB5U+Cqwtsq zC3ARZgL0!18KnNDqVN%d85u~eKP!TVTQ@5k%{V|L*3A`t%T5S38kxN+>t)0d^kpH;NW`84WeqzV!&|R`GO-nQV7N2v zU|{R|_He+CIj}<`57;qR^(O2%%uDLhT>_L~#wMoTfg)u=<|@!Z@oRLTq$rpS=YSJh z3itUG+`5RyVo(9j6wbc}*kOcbJ{L1|;3LGQZ@@&PLN)YXu>^>WH2}&wmd6tD;oqRX zc|-I*OIrfcV(K(M`v*zUO=1~JG;-x9;!4f3(^q!2V0804e_sBjFWqs+KuOWgX6E;x z;9h@P@OL{|>}G)j&a-$MxY--nxPgfSToif8Hd!2YEwdre$YWksI*0IR6ZJ!Qe%Dj8 zPAXRm12)5`pJR}U%5R9;!I6IdwaY^lLkTPtaCjNV&6mAy8J~?^yxvjl;m&ZC@|rUjN*U~Y#{W{lr1_OPK^LdLy*trfMm7HiCY_xWI?X^N-YZl=}! z};gY|6^v&DvGpexf$$NY4Qjn`V@5zVxIUL>I^<&*b zS+-nhx$lZvESN^Is?Atv0Tl$>rGDkA<)ct+j-Gzs zx{TjMM{_);)DxVp{6e#W#R6hPRImkaKi_=2&CrX(;Jn}$Lobf-?BKRj4F|ZzSET;t z{)HCDUZq~=@neN|=zY?>)Co0j9_07o1S8oygxB;>^?rA*)8+O?^V$@I?xa-9P z*bt3JoPv;t=!U}$`7flH zRM%iwYr~lf2}aG=7$pw50i#stSQ@*L>m0Jre2P)3Rb!N%Mq(7srZ&c&;9%FokHs)W zEoc&(pqOs9)NFci)Zhm`?Ll%S~FK1v1W*J!&$=kpnRyT>jB+|yC%{Z7d zh!Z?zOM3TEP-_Kc%rt{CX40UHOq9if4zd`Q0o71IvO=%i*1_;RU4ey~xxnG+3c9{; zoX+K)PR8vM8i=R!2^=|$(3?abGDjOQup0CEiyw4z$iazL^e&E^^h?Tw(1|g0*t_7; z3KaE`cM7y@GCZT?3g2JKs2CECWeN|qc?RJHSL-_z@usgm9CWC?eNiBuYXVqK)Wp5C zVJ9Au!cHFvTo=__vWN}1kAQlB+7s=@Aa3H&ooq)b9^|O#|BS4}QfmCcO~+RFKj+9K z61xUDc#|EVg8bmBh9#i?W^^F?;uX4q!+xDOO3U_(JOLO@)!uQb@b>FkT~KAe zuCqI;F!@IOc}rZ zxZKTXRfe|PQR#|YCb`=rQ_=rg=Qg`olfMJzDl;4(=Oj?J({lgbPRr@-c80*O;_>nkWqoI&Oec`OPl%SyTh> zZo*-ZTDqjr#?bH~ovzKz)2X>R@q`Owg3d4|iCL_^n3YJdW@$d8ni9ZP zk>8Yv4=J;i*@r3L$Y{*~BzOcTIKk<9P33wA&r()oYy#+p zCkUW0rfmS|qyvaqwE=W;JbuiK(7f*nzwhPuz2WzL{JxLh zMhW-_+Dzb>{XhosfIi)=s&gYJ&z%N+XQV-kRsI$7$t^h;NTdMC==C!g5;KPs>d!Hq_ZgX7>0ihG z2YM_0Z!$H8iQXt-i@!IKLyY~XpcXGUdEtEj1?Bw~O?N@V`)nNEcj*W=$#wM@Vfc@9 z{1^!Yh0IEcjdF-^mV$URVq(CU6j!PW=Y)V3Cf$Wcjj9n!-&93s%16IM2YAdjRnf<- zw3vxHVxnM9*9xY>-o0k5$F36{o=$a1)nY<{tLy18YdwAw7`$d)@bWXwmu`FD#Lg(Q zZv)LUkz0Mjwi1o08Z&$x$h$09jFbhFwcuW*-j6bA1y?o8Q7O~K8+24J=Po`o5KLx72$+VRtF-`4TjlUB!sE@Ze}l{+HTF4`E-OvD))DC6fO{owq67fLsXJ zdq|93pb?*+%4erY2>HyVHacGg)yxRE6h) z1*8i>GAVSh7}ad#qKOEHUR*Wcc_JQa;FuJ{DnG;{e;sjbEA4WV{16w>NHAG*5*i}R z4m-DG5nd(&2fk2LZPR54(ND3G9+%})k7V-S#XZHAEmF6bYC`t8TQm7+@4f~ zgQeP;Fd91&sD+@|LAlO^b4aR(!-_%6cg4JpE=#<7?sqkVlQ^E%5;js z-p+AA(JKi^K@==?9i@~+f-vBtJIQCLgY!A=HxbLV0hGB!x3Y7(w2O!5bT!Ldw>mUs zl6$4#+aLJ2p2XPsv*>?x>d4c)|C#YWcKWUR7G|&lU``47$92aUQgL3l@2yMTv|%82 zGE$v8LY{plngT(vX8{5{HO zdc%d`zGB}6f4ET>W9=c>b+D({JJ<(I3|$BN><{nk(;QvM2FJ~$d$d^ldeo-`jZ=cW z1`*zXFvzRq&O_ig6lba9FbyMon7|<&rk%ZK8I5{>-dl&GeHajfVz5)`$a!Gong%1^ zXXvO+BKUPq75f+>F}a$;S-zZGK5z4V`(TevW89#7HsW<`&*m7waP}1$V*ByaLs}N( zL3Qrq?2l`02Kemi@#b<^E@`Ir4G~d~F?Y)vL6T+3jJmWcr_Xd9+;sQ!Sqz`4+aZ+#I z9XraYe`*1Y6n>M?Wm*&FP!yM?@{aP`ie1axZlDF0GP#en#OdM$*g7wY#(hoP-cWXL z(a5#kada4{nC)&?&*tUrw+wK?F#iU~of=|y?Gw|?2qb63{xHDST&QU(B?1!bLdVF)GP zTuv+8u2b&NHRcptuh(WX$jhUFZl<0)*LyoU5G?Yq)2F)f+~!wmQWyinLJ;G3E#z^z z(56Bc>n~pzTv6=6jE3g~;6FXsK_co2!HEB~#})r|g&I7{e1iaf;QZi<&T+uMi@vTP z5zrghowiNEaoer0T~;EH%(Hb|;YHM)D8Eg<^>T~BEu&Z{8DsxO0|Qr{D2)dHObqwl zt-k=Bbr~MGyZ?gW9`YPqDGa(*Boj0{RUDw_D|Kj)6?;h0e1Lh{3o1Ytj5Jf@fNIb! zSIlE+-&b5=WQc(kR}A)OH&2vr3_}taMhuDMJQ|b_X-GE=YV44%6gci4TCYB?D@Tp% zfRCKM85e^PiVx<2bUrjRVG5)Ra0IiGV2ZE2`IL zh3qYR3<3rd{bQ?S>jrNmi>3ZqVqkOZ0&wWn#Q~@Ow-me2^uL3%n8}js|MU)GjowhR zKOqw<$bNu*?+{(X+v~alCmR)ib4|-CpRR2%z_5QfF=YSf=AeWD`mI}T(c1nNGUV0x zP7lfE>KGhA+QGBPFj@n?p4Zee5`(ysIep<5DugY1GS`XI&&;_(K~J+*KIP`-IBCm- zJLt(`(pTsW^$Jz)q}y1bHwaia${4cw3f-uBCnciPMDE6sM9zT^pdku^JV?uB9bZ3j zyv%TT>(JE!7csg{DTNoJEC_F^KD=c7C| z;LX8;8nF`8y5MzPW6c)9d3UIMet57rDA7z+V^hUiF(|GqR?hQ(!z+c--EvCT1R}5% z2ZjfMYhZBU+J`GC>5B+mY0TVNIh(?1n8cvYI4+L$R9u|9pa&bc_%ut|?fPBrzQv%k ztetV%oX&WNT-+Wa7q^E|Ts-*y>5>bfNz!(g=43b?!NtQQjjLvG)jb#BdUtSotb-{~ zYG6J!_Di|IyY@@zxJ@(~^wkspsmBTaleysRLjTU-5#N!C>bQ3ktm0i4XWod=#7IJX3=$a#%IP`v{Jg~ zW4KhYv*ltwu(Rd6X?0obY`Iv1on0-dwV2h}0iEBOBh=cp()OStNjSQ_f~B5e&+?~V z?^&MUn#Q!rSa|;BKlXzUe)Wana`L>}rx?4dPbkQ;DSh%>W1u)tGj)NKC;8)YgtR!a!qMrr5)>+S#Hua=Cz93~77o z+Wm{Fy?9ZzmoBO{7tCG6xC^g6oC)(31eXikYXm{TPY>tc1}T;8Era%CJ$BmF5Z1x6 z;j^e4CBkRZG*f)e5zjW_bCG|5T#ts+FaM>79{L)goMhM4;;Q0V5Z8lC7)?P$Y&&lbL9pr&Agc71mv7QQb#Z2P;t0wbmkv(e%M1-oh(*kZbEX>;WT1a zsu_KFgFd_Ig8n_Je{QVuvt1ah3d&Q(PLbY_J8(H>Roj1VuwvA)YxLg8l*xmxyQBWA zwKr(1KL^M{k=_8+utDCO6mm2u0yk-H_~?)V=K&b|;9$XT(xAd{O@QvX8HthKR_LyB zh=?tU$Kt538(1;pi!xOpcmn}t>U(xf(6<*p!E9}kg&uAciwmYVal(DT@POGjROhBa zVO3GXcse<_N`Gz`TnVA?sdgB$6G@?j&HgAun{aHY>p%yM_7?~HFX(|`SCVE7BiS2^ zDeCNn%s-2N{~@UjF(H`61Db#$Ld|F4RR;u^1cC#@8-SViV(9__P6zG90b?wyz!-VT z=Fl@0oMeYes=622J=m-M_ZBM_utf<~d&RSX!temyljXEHK%%+>#Z}sId&NI)QknN< z&q#DMVDArjqB=d>SnQcZb#O}(2eP2xsT^a$(}`lI;c1UUgaNLz3<5JX5wMMvBG8 z51da_2hJySB6ltOaf=iAYwhd$!1)z}j6}z!Zwd*Pzo{zm>~DM`guo)+ihj7a!h`uO@Zj0KFZMc9IHL%RZvbc+ z35Ry}%HPk+FB~ktFL6zIhvG9B@Sqcb?6)zMeF z7E51Hul9BML_VB8+WAD7)5FaB;qdzrem@d^Kg#b%`E7hir1+(1t4gbS_NDk2=!ai) zqIQxxh;I+m{-~PjrCF1l6eDYD49%L4j;YBA0c*9@Z`XA3A`+y}VmZB|Ff=$zduyFH z+ZhFb+r)8~(5bgOZ|$r+?swX)H@q%+Yi#(L`ut`lJ-(*4!jz4ay!E{p!Cfp!3 z!U!dNget0dDL@Ki+6IVjbqF!5HiT{+51^Y80Ns=T=$xU#Irghya#xK_cNsQaXkt@7 z%9{({8-RQ+uie%l#JdTyA|8pUl&mz0x zgFY#bpWO6-nXD0}}KaVz<^m5;rztN)(U&0hAtzy8(7AO6lSzUPtb+g_I6 zKAd`S7n{n<26w*u1EOGu$#^SLtg91&#ofb+x4$0hPU2cp&|Y|3k;!G#z=cCCA3$Zh zck|-z-r;=HelqowCH4))BJ^R!1ZaM1!$_=dC8mQ#$5e5|`A?qlxA z?cMLoI|*(FPq0vqoysp$u})Bq(%7;>?fZo;aw|_`%U0!f4%^^fV_j{W>tM^=>#O!g z3^g>>9&IsAYH1X3K9#fkROKP(e2OXfg)u~2_+XXxfp=4>$JUHgR@~lae5RG#dz`Pq zKKRlNIl7)uWDzdxvxLnFzBctb*ho{S7Pcg-MF#3|0Fb}CEOw~;0s%gM=4LeP)Z#@a z5ihhAY1*ChZKK|BO(vI%Dc5vk(E%eo8g+mI3!RQx;B5|<3dwLs02xZ6fo^AfoXqMn z#yA*_kAt(c=zvGTFu--666(oep9#NSa82eD;IuZppQzsRE53g+#{&zvXM@ILK2DHC znQ^wtLfDKj-}aXYfm#7dl~>ifbp4KX{RF(KE~1f234CEt3tw23xStgZP?fwO)OkUY zk!POKS9kL~`WJEZmwY$RwwtI%wGu|PQk7g){W=id9q7F&H-}%*U0YZV6?9WAG>>Ig zB)R_Lwv2g9lo6l(L+mjAIiMF{-wQ=Gi~jea(Ap$VSWg#;mM@1$AmjJoHL-U)tMd~;))BHSh|BJgE#+OP+(?8YUA&)7oXeJm+rj{!~ zd4~?yDMBhb%zG5~W2#o(ql7E#;1p>-l;}taZG%GS5H|-Y4H7bLxw>O-6nXW3D`A1;^ zzs6QiuczMKv;Kgc8evo*>z(hm;Tc-;yZ>N!2uMt&=$7wT2Xlnh^fj}q%Pi1)>_adC zeL_Q!HIKh12ujOO7ZYb*gq@9NSgQWa3_Dso)9LYJq)_7Y#A}v^6PP^wQ~U@4J*&oF z=~dJ-WHSdl_K)VJ+%VMETUsr4O=rUikV?}^J|p)CiPQjukE{R7QaAK8Z&!ia#>x$2 zC_5sK;O!k{aqKH(9Li9Xv_veTFCK!9Ef-3YP>AFB{#6X>Dx5kbwdedgfV3W0$t*;j z{_Bi|clsah^sYl&C=A4`A`{BrH=KAkvX@T!CSF$D`R-+KEI-2zocKC6xOR+0M)6$H zg6=K;q^^`+C+qFxXVqQ*b-H;yNBkHXbo!^{6gQ*8HpW_D&zHKFRisqchSSyAqrD&R zlI4u?n4ylkGlN;4$XPDSHcb{COT>dZ#EA$7CaUoN^Sh+JDUFU9oIdLJc&Gq-k-4e4 ztWb1b&vF#g63sA|a`p+*Oj`$&ul4CMvi?UpIP_ilt;N(W10O!eR5-7>vsC`aV;+N~azda49GuWjV7Jl@oEp={q)(6<-Sq6eYSh9n zBZvCjCu@T+{34MO20?8Irg=&rbsN9w%x~?2(b(vx;MG4Cf_Cnb-?S8Qq7Zx6)JoqX z2=vgOM?Sui2tXs0KAJdsiJu0<;-2d8i|NLTH7->B!p(VZgE~U}fFP^{^l*^DydsvbGhGo8>sNNH2wo#4N zxN|~yt@BH#ZR!>tCybyg+Y*hgCYoJw5alO$^)^yUI0{An6ZD^e*7F$9A7aadz@m#K z^OubNZ0KmSjp(mIj9W(c#S(4*EVMmbO?1znslFEMX{De~Yq!R|z(}X0cZ-sGlCYx$ z`)KNm9HgB+d-zoE&jvKwt)9oUbAfzDsN_q3%daR%j~R)8I=<)aLcggbbxKdh8GJda9o?0C}|!*k!BY?lSzuX zQg?0CwP9JYe*A?v6UsD1e~SR17=paWyqQ^eCLk7}nk`oqE`UTz{w__AN|LdFq>7z9 z;n?mO8>i@+3Zfdbr;xx9mgKxr%<)eW0>|iS81l4vCE8KnqEJjEWL>07NE0f7cazz$ z-T6r7g+@18d`7O*(X%h*&R0|ZcbNNA(h z#9DUgR(+ch>+%#pls!q zJ`QEYxRpZ}p*Nr`5P_`F#tmtDvS-J(|Y1p$wY8GzTBjXpwZYp+VO2Hm-)iqllx^^el+FhH*~lxL z>N>9&TWM2X5xRj_)aWWKZHymY(Lli`K9k7{HW}OSqb8BQzv%JvakbHG=*(exvo863xxZlNkMJ!2s`xMe|>GtSqY3 z8NU7Q{tfW{2InzctngLj%hWHEZFqo0>fCrUYAXzvCU&YK6M@$1;FEjEyH4pNwcWJV zCeXt85~0Po%*&d;Mqbj6B{eAi^sif?RUDJ3*E9aY9YNxoS4o4WfXcGqtGrkAZ88fJe1ue zQsK^ZoUCR2hk|q6-bNi6PQIX9CF~aN`dir}vXJ6H5V7?em6&CGo zqyDXa^kC-@v9DM7nE`Fd`N1L%go`)Kgyn*54ZNty3|I(JQg+CwNt%c z>sbP8Kd7DPXoEV4OODbNU*l0y$DLuNwr zld&v>MZ-hd^Cg>Sb_Wr{J+p}zx8E*PU`bd4Mta?@DmJQKA;!(* zCr}3`%J+Ycg_`GpFMCdB^~KD^eyzM16hqo0X{7%26>p+68|dr$!O%6_+W$x(V1Zi+ zx+vs>jgDX(;wrWfp$V+#b|HsmGWe0>{+ojrT=$KfGK0)3$X^HuoJX41+)31nX+P_f zrN^D7@J^d{A1hhc+;>g(6BjGXNpiUoY<25!-gbxDa`!f!YMSeqeP;ew)|9zjv6LC1 zW|QpF(*O$N609C170U>N2`+Cqw8oY}N&*(i9M0gB0)Xdv+}?P`e&Ej}?a{N2F6}+J ze0c6@p&>h9NG-y0z|9FC!Z0L`3hkS%4hDvHI-e^bWW(hTmCtawF`%sv4(wV0( zxA}E9o8QQKBjz`<-h9%bhRv#~vqrBy^IbN%1#YF43Gl)OsI5hz=0KrJHxFdx`J!B}zj;^kjcUG!n#pN8lPW*>$C0h2 z_tcF(O>eprp8cKp!~v5OZ?a$K-`1MCNkZG2dTjEBs>vH;lR5(#ASZatHY28?ANtKAqgip{a&IMil-_U!1%^2zg94Yu%ss{zU@r zfdqtO*f&?GIPw@)$ui@iO^~i9BwZJ$djFzRW!zmA zakX$V#Av^f5O2Ozq{jP29%i-oONq?DH$!Tjz#O(8(*9s(cLRcKob(QZ@QsF#(?@rF zb&RaoS9IuO13(&*rxzj_2c!xl$osFCv%>_=0;;*nDc6LOn(Cl&0aYnH_T&;^)4+@C zFY?}i+8W_88SJ3I@(<;agUkDJaB9X*dBr)8c8=p~2$q}!OZaov|9tL8yS>XYv80FA z%0DCU85g%7>7b^Sg-ZU&OTM$CN<>Ff^!r})-B$E~75$DEy{prEG`G>?9ohdtXBeIS zI>!}?%eTMm72lD|jpKyJ-tvpcW4R21{0eMkr&(%uwyK{wa}xIo5ew5=KFI9#ljP|{ z-r7%ctA9BBB)R$n_VZA7!oqH;!113&-CErvN;Pl42wAyKzmStZps-u}S@83E|9Om` zH~7!v{5**t<4c`rKX6G`%Ymjp-GELOTq1!EIrM?fR~z)-4BQw~6_|{oW&V^+;BaW* zdGGlXRXU>w`e$AL9F~XOiT-y$Sd2tedH0$4ah3VRU*SJB@e}@26TjAfYU0Ak~~vSCbdnB8lyf%3?T?$JCh0iA&e|c2C-YeKo{SAexKbtf(K_)RND3e zw&aX$ql|=Je2|OI`-<-SURHe9o2BXR+J|SZ{Et^*-tV?d-`c)2#bp0$p?>0>X#V}5 z>hyZ=?BvsOS04FVp3aA|ukr&E`NOiAuF1Yig-2vD)6)?^-zN_e%)#&@woYFk#QVS+ z7|xxM&THQdduPmjQF=3^8-Fvqi)O}sd};Yb3pwc1(>N7;MF>9(LB zbx?_Ua4^P_XjvSwGz9(;-M0z)5Htg9b+a0R1}?)ZLx2x)a?O!$2tLLd`lb99($?4n z(Z1u;k>0ySjT}M~0wBXY1`N!85Z$}0TdKtP1zFK6Vg%)_?c$q8SAYcy;4np7xgAg35 z0`o#p4#ydCIATNS5o9tYDWX?)394Av65X;O!A@_xE9P%bjQN7PLHfZ@2$XhO7!OWC7UVs?0|1f9(Kj z(1lW{DT`kbo6+V6jABEAMQG*2)`~qS(8aE!hDhkA?yIJr_?3yO+`)_!-7O^Arpqor z31KK7%ltBRs4EytMe5HJ>cNbx*12kSHUv!N>hP5|#ZvC6T}_}{hH)@gHy> zD}U_|+LAsh4Tt30wj8pY*$}*M1a0A{P22v7Jt)Cyr@SAj|DQPL0_FNY+BMg5WMhG* z8(-I>0l;3%-#_|;)#r?f1t`759wy6qytc|C_-lcI&@koqBT8zKy~`7KqD#s~)HeKt zqS7|-hFw!BG}=j$CKCrU(fdD*x*13UA{m|U|6~aG zn+M8HRcK6IX}_|@{U7Vno9#D-g0i6frc1WjRT_}~2|R)~KF) zy%&yo<1~O|VLpgt>b*PFr?vJpkX)t?5grlx44U31EQqh1Bs_C zmH~PST8ZrjCZp+GG%1X|L9aqzOS_;mig(J&5BLv@oT5Io+87@U|1zmsxhA<=)37_|l+< zylTN&Q>867&0rCun6;wpg5ZF16+$|2M0MQ9r;%KyFnEQe5_@)sWETC;Mq0q8cr$;h zzc`!-BT~$Ok4Ux*S{MJAeiiHrFXF$y(9sryd~%t9yeS#Xy81%HQTL1bqr$_iH-|sA zA0<$0p=Vw*oOPN;33iNPcKP(s!qPHo^I=I&QVOFbtC&&bFGHACGUTaZmdKG}!g8DI zIEw|NS8jXj0txjAjEMf^1uRQ;hy9?sIzH_v?g6g7|B>et0iK-9vd7)8mpn5>Y;hsQCOFX?x76bMl4iOHGWD_ zO!Z#%q@Z_i6_hSN;Q_>1jGoJO`K?Rn%8GlWlD3i-IO`7?-ca$Q;I|-(2^9QOEq;nx z6RO%9!ajqg1lv>r!az9&bp`A)m-7^>=o~K}wkOe>@)7%4WZwu{YfNnA0uOnLMNd)I`2k)?-0J=1Ts|X&VMkAaFj@bj z9kAqq_jaWnAUSKXq@yug9I;OI|0C-L-_kAxW|V5Z0gsgM&T;K0XrA^~*Zi`;P`D0N ziu~200RzC{;&JzQk=q->iUA>O|6v<8L|ngYq`mS%V)^-x2EYf6ossb{P>?o#49ODC zqsfs7GG^e&X*u&^TSDKS-37MJpj%p2Ii}CJKs`~WX&N%ZJR_@VHq69EY-2EJtXPaE z8-SaBVJTHO+c)Ia-cf>*LzyY%#iS{g5~yfNc+IvlP_fHjE%!wOI&D%)fHkwB2J0Zs zW`m~)`>yq_Vwx@{Y5bbZLOQ{?NfHal*SeT7DNX-OJK|~#U0&FFpm5TIM$^?w06J?z zb^^7;OU`A(7@8ecfH45U2L%z9&PK1@?{rvz;YmUzM~{XAfQ_-)P8kRj{D1z+_68$F zgfaR+?;4wxh|b!;7`%NBx)>jKAfuGbFDRnU<}eRTY%e0lOLEprW^6Khu&yAfRqNb^lHe?$u+~Qu|9_MG+?!)-30W|U{){MelB-53NIS>F z)aX)J?(64hWY7~pN_EnC^)gy*SR_&wRqM-_S{|*kHV%t6Vws*e+~{Om%Vczcv-u~8 z6=M7b07DD_@G5N(1L%CFi-8<95GB^LWzQnP2Jc%=1N}2)G7uIJla?X99Y}8u=@of1 z?AHQ=Ng})~SRlNpXRM*DTNIh!+Qa|8)4BSN$u~m451$@hwVIV{{pSi9XiiJk`*pQ zuH0%}**?L052~tJ{3+vNmEd=F5(thCe>m)S;`C@#~;%4w~}OTzNnjm*Mc7U`G%d$yKkFUpX2%KsdGXH1Rd zQSRDd{;J_57|X+Z@=|Hj-IB(i{?)G>Kxsoi^_u?z8^2m}TABnY40A+)k$Xk(^>yc@P1%+%k~~Z2siAjHqD{TEPV_)Y>-2llrU{8-wUABA*Q4=;F(+5 zQ2kraoZ%O0fs$)dt=Q!dA@EL(!8-{QhKVPh4|fkXn990SO_iej0HPF%l*3LougX5&s*N5YFhL| z=okwo+R@)-v9(>HzumFmve4gREZ80TyW9#4MvJ5Rd&v9Syrv zOhV4yno4$s_9R{2l1ifNVy&#HBwX&1u)iPvJ5MEn;p4y%O+nuiF(TW5vL+^`2u-tR2R6Cc1&H ze%VMHfHiPT>96BBCgKr{!sQO^8%9~IB${TXg4}^!1Z;R9$41KE2km&OS1QdyHzs*n zuhVp{CuuqnPpX*p2SJK8vLe%uh9sszm`P0YBz*?Kc^9e`;@`*kF7_#bTUxk%%xHOp z?nzEH=^J|T00OKGHWMDsZPSvLfH^lvhh0gBnMsFJ04IxrAFUZZ;yt)tNrzKs7-Uk( znIDxpRH`UoyH?1)Ch0IsC}6vqb3`;+lMeOP=C+7H3R99SJ;h9z?b2&t=nm&9$L;&23m$3?s?In5~dyG1kYokWg4FmrPODj1}(}=8q6;8KnIZjinORZYtX;*WcMh!Kb)?34A`3psLxmP}riL1Xe@2`QJ zQEE;#m2PpFG?jV&K)7WrL#hTJuvNZS*Y3q{xQv&h;FKjbMBz%msURh}7HTJYv!MqUZz-4yJ-B$=Ev#{rzV_hNcwvpZgv+P% zp>daRDOd=NyM#-@j?lPExG2qsvYi{7Rtisz+5}wH>4%10wxwWKXxL?23N8x`yKHL> z?;h3gx;5+qFP|-jhF!F!;PTM0%d!;g2@Sj4Y7KLPV;dOC5vLKm+{$N5p<$O$DcBbp zUXCcTKQz2z1=jHLsD_VN!w2GLE1}^lV!?sX@RhOPiqLQo8ny-GzS{PfwSe4j#;6CJ zl}l7&XOh6$h=7Et*_sFp>ly=UM8k*4K1sEMb+sYYDnih%w_4XbNWGdAv@2c}E0RS~ zBEAb#-C|Csz0$6ndZ7lhE6x4uSg~N#EhvkDa+ou+=m5-!Z{TF%F0r=KDl#}>5XgbR zM1(-4!-};}RP)czKzx!)zW*`lbf{F#zFo_Sf*F1$lDW65)yl4BuD3RsRb%alHLC?f z5w}~bS$n>f2$cadrTt;O*Yxc=I-yuQ`YUg$v_JC3i>!TJ^;WlF?NcdhUxzh7sYkK) z0QM2AeLZFE{t#HZKLpn94{g?tg6ZOQ)~#5ZEwst(6I#_NTh&Qc6*<7od0<5l)~S(G zBjUB`nMt*%Bv4IxQLB}0*NaL5^*Fpt*0xng@Gh4krHZc27zuc3C}@8rhGb6wOtWILeb< zg={0h;kK9!?}kJckd2YqW*PsSeJMPD-F|SBiGFyvXtN5L$&Mg+jHpM`NmJB2I=UVM zYSue8x*pTei5dGEyq8az{0p4!+s1Z=)deOMC(_0iC~aHU?8@x)NhK%Owy6_l)vo0T zZCg5JRqbj{uH%N*ThoQWR>&tRsFTEr(@<7f(jnat*=vVgSwvi_*UitM=3B_?V&vCR z(-QDa>6qk%6jum!e<)MLiDC+L);E5k+1ui0W+$e?wNk{?$q8!Ug;Yth5zE=5Sz!0V zs0uI<)p?&M%zokwydtUO&@*z7K(AdZAqOe++SMF-ksRo)O;t(f#HEZkac7_DeoSYG zCEJz6FFyu;V`ShrMh1SgEjw?l+WPBm=)WW#Il07`Q(K z2JR1I8Tf3?z@v1Bq!fiR?eaw4@?FmRR4B8JnN%7rl(lP(5z5-tnnIcHax7P}I3E+U zdZ@vyP}v#CCRVe+%-NBCTBp+xWAE{_E->>^jkEuUI*_YaATpg;pp@MH`7tW4q&#PT zE>bkuUjyJSCx|dqf>1*WuH^*V%SojK;E9~ju9W~hm6Y1mngDmg09`XjIs+Bvu?3riWZOZ9Xe-{-uKGQA;IQpwkpMmkigB>HwOUsGyzsa5N#?P|WJcwL#vDqyJq zCfJ`6{qi?__bZm?Kai=L_=A%ATpFe@mS*k{CEJYMb|K}ksZpa1K`w9CM(Ef zP#Oegvw}A3*5HdB=It8VWuLj#vU)6%>%KrQ-ts<CfE zcR`8?@BS8wF^`zi{pqJjjv3YZrh?38a+pj*k9S+W*xHx9AOrgxA;`e}qBZl&PLRQ0 zaYZ|=7Gx+fK?YKM(Si)$N|2e{N|3Q$gCNs&LB`J>A%<5tYJU>?r4L@g8!$)0C3&J+~3ej|5=EC-!N`^r6!;3n1;>83bLJ~cfUz)sq&cx`uwjpre zWi{#hB5a0ya|sgnT@8slJOzn6JOzn6JXMU5$Zpc>8_DbXeIJzhXK>QhhQ^hv8h$jG{UdHv^3hxZSur!pBy& zL^}dkjhsyy&AVo0&uSYm7SPzxCVsYNZI1Oe^R$)iF*FzyhhVsuqAL;1)JKd>!FW4a zc~NoLn|PbV8aWOOap>mslvHErv08^}m2J9Rj}?gZh-gl%)9s23-7AKnCtg$%@^paW z)?K4@GnGl5IOjUunTVW`g}> z8ND_s+C56JKOwOf0duSseQ(hzky(oc)bakGu;H1r`Sl;i=ES#0F#Gc7sN7}T3Eo^` zbffe*CwRo|ctM`&6~`ESv{NUc2DPW0LJf`;COOlc?EN9o;21#R$;N{z*{GadWj^YV z(xXo0eu-pT?>+&Z&5|dPRkq8MO3syR=OvLyAH7K4arBYwag9^U111ii_ifU z305@3^Ko9g6off$jYA=4PW68gVUdPuR1F0^qL#n&Q@B|wa61G?T8udb zs=YoB3XErbwDmC-`bALk$#hby;q(JobM!SBDe*|3gzDlZHKofX>xjla<$N zS4STXf(fo~$Mr~j%g%fGIh?YK6!#Xhpcx(s+HS)IgN^~lLfmv%tG*NyDp+E->VfW5 zhZD{NU>wV2f}J%pFs+^@CyUa<3CILvEN}%QEs&3L0XnFiG+c4}`PTzDtu2-39RmO}u+zrOWx#c>;S2x(S>L!-gh10l#m-ifO1^Pv zq~SH(uH_q-TI88Z7-qYgZ(JPCo52$&%#6U`PZSJQsBM>pIxVd3x7`LUyjI^{H-Z+T zBGj}n_-&mSX+TgUh8yG?PDj^mX+I#qA_)jGN_$;6uuC2krKB;2F8%Vc*rKFWO5dq31qS9 zc}O~+QC}EYyR7=`GAPPW((a7Kq026fnTFH0mxLuY7en69vyw#Lka~a$=3=N(;C}Rj z3hZv2+7bK3DGt@gpV|rZ9%N}7%KbX!+EFZQ=sLpH-Wu4&q>zLqf z!rTk9Apl+nfz|oJdM4VV>=c4dB?83b1P*z~Z`730lS;v&M6`rx5DFA@b5YG#8Ffvpe;u#`L%Nwivszy@xlWy6hKB4;CBbb|eBNxUG&O4Mf; z-8Qi3w*fxX8}hy@gR7+h*kX{ZS0U!;iBH@g?8|I-b9l)%X5YxRx&efM3_i@80K%~W ze_9a%k)(7Ifcdp%Yg0Hl#f912fYVuf@H9>tM?3XYq45fdy@5dySsV>%5lVjZ$TOJjp#?>)rY zDnJ&w(60p>tkc;6PYX4@N}4z=*?KW8(O{J)%k^KF^fdW*=!pmsS{JpL!Jjcl;H{QUQeCk^(M`Jmqv0^MY0l8DDeU(V;<5=pBY@9R*S|w8fwHwx9de?o=GBUbacC7H0DJSU+-nn8G+k7x3LO4&kS~My$bDG zV^*PEt+@(%OY$-yv!&JAX=_nKy_!K3oEk*d#X%{UmHbvE5)y3dFrWD|1FqDID;1Lq znaLv&1>3d4SS4Gff?&Ivvmli3NeMi9+bha02f8GRSlno>%{QX*@~yq zBoLTDQ&j8>MQtf^VQ#xtUgek z7)W8L7FPbzd#oTVqWq(mt-#kS$BeS0SYQ?)4Tjzzh<&733^9Vmp7>)q{-B%b@Vozx zjux(%b-RanPdq<0s!LTi_i0_)N=ip4ZoinZyK-ZwqGDuhILV|ppu9sNL3!T;HIW%O z6zVM+ppZ=3p%9Q%{!iuU1NL7@aD^3wj0fXZW2sm!_GpO~lO-yOD~lBs?oSG7vtL|M3{^g; z%lohF0eLWWrkFQejU?(3$JPIlJBeC#T+N?}xXRR~FLISG1-+Ldp6`!8R^ksv(2JP= z>HI60|7D5!5FE(*>Ts@<1Ci110SAxJkhx*k?BFPnC<)OHKCkNQen5a~oXNz_|C=3L z4dF=F8!o6ihKE&<0>#$t;2DIKR-+wU%?z_*-mhIk`kJRPlxA)pjuvcHp+d3K?cf+U z7DN()9o!n=BYlEhd#8BeVxe{xbSht2)2$V(>5FP*!G=#4ZhhZLfi=O=u(v}isuw@9 zuCWNXR=fk60c3ziw1fZhZ<=1VUR=)S8n>T!z&v!HiA21t=r7F7PwS2t8eL_|{8^I$ zf=ihxtgOz5>U3X+(sW;dxXx9faUsJ5er}VOYWjOv_`P!_`+}vf!_vJwjZ17rUs`=m z;4lU;44$M1t`_@@zTJeJlXI0V>4u-dW8IyMbyX9429MPw907Il6uNr`%V909W`PbB z>&2nhEf3aFk>EnzV&@4&TmCqj9Z=zcV%Ld5zt~kA@WQrytiu-9-TUmaL@ghwyZ6t~ zR#IuSmf5Z~M!#uSt3?k4Ge z4Q-@)X&P2iZJc`9t~XY_Y*%cnm!`CtY_h?0vU?lg-+gAVdu#BwYmEVayIK?cdMou3 z=nTY^cWas~Wou8*12N?~puPk9@Gt z3KFT?m62NNE*6V@l1wkJCDXwnivosJ=z^z=?Y}`A5$(>3L)?naDs5NUz@+^YDH{%l zWZDjgWZDjgdfGu9Nt6v&N0MB_u6-oAhF$welnvKD5|PWbk3`vU?ITe(T>D6r4c9(G z)CHg%0qlOq2#>3_!67gU*zG%1%L4aI#76CPq-p9Uv)IkpQ&gbbnaxmFHX5UB*^wgK>Whs z`PwZ7yG3_gZ?apSf0RR9HqFS@#QW?kTPaP@{pGWjqV|FZmb4f24&-wf-)ylk#9D}~ zK|V-y8`KdwpAC1L7`&PGf_D>^0lOnh+6#BcNPC$aAiW_{FSN9m-KU1Tk?gSG?*_ee znl{|s&|Y?*Dt3ur&kev}8JA{L?S+r@3F)kMsg=v2K)XR^q?DOPE8Js&!Bj(#6i*lK z^|OltYa(bb8$PnGvlwG9^B<4_8c}=so==+gvQq4nWa&Dy8GjDQl7@*E%Hdy6%wnb$ZA`_X>g~&u^ zJYb(BGK5Q&iOlHIbs{smROvFK9LCLadvs z#k%4^0lik?&ZO{=Ow-t(dcmm>MO*!X&c0FHEuyzA(u;_`)RX;0u$igD*_74!$sn?CuMb$nJjnkSu_& zNFuxYiX^hT%m20PzQgQ(+gYMf3nYm5M@X27?A|wW`y^VMxVzF4I!u}n5UhA}&V*&f zBXD;e92sxLYcUp#Ns@(UZ42KdhTb$aMV6v@n5Tq95~o^2D1bTEk2NV(HFAtj@o3bD zO~a^ERcl-#(XJ=?CUn@Px!MfSt_Y>|ih(Wzql7WotU0|j@^k}%&aj+7Ed}^c|s_74hQMInt;85*) zk)+dHlS8#DMv^`gNV>V$$-Pdh4L*eBqhB)hX0klzKUy&s)#*mOcH|j-{=q30;fK*! zfGwe=^f>Q&CLV}HZ8IC>wXBdTZ04ff(9jl4=hRUM)}S?YIoi4)4_g>VOcq}50{;P1F#l zw)I3echWK~ZhC|ZP+|`D!;^hzXnnE9`HBnr;R)toxA-n>%TsHc3Ydc;nYn`^nYn`^ znYn`^nYn`^VQk6RSB2>DCvKqA;86j{u%v1}0wvPGEh z6b?)>Ewnv~M%yChY&&k0^qyP`{Zlmf$uWahvMmJC$|@hdb!w@#va7VLD$hivp1tn@ z2)K-30v_zH#iN!f#Vy+Ne9(>ZP|K83UyNtr0!g(fcjq#tBv$Qqy(o86uX#CMyJD2P zqbbEB5Rgxg!R-AkE9~UNChy|uK4y>@trDAjZQ0s)2JeleQX=*x!J_S2iQJc3wc6Ec z{x6A6Z^@C3ReGOk4O_r}aa-_TJcE7X7WqAz2Jh&=W}hzReOij2c+Y|&MSNP%CB1&EwPTptl3qP9FUwYOy9w2XLKJG7#D=Aet8 zvUOb@+A9|rzM()P9@_uGV=M)y^jg0?xDwM$_n&d7%v^X}8tz{n=twS&K2gk5H0@8a z1_@;wN&f7fwxrT%^4G34W;?d4HMgT(dFJ=J{O~lE<;nhio#9fkM=4#Fk4OrqDy zQ+h$c2Fg{mm8bLya2;HU+RmSWT(M6NhG4ufs|}Y!SvJT`z)MtEw`(Md+=h@F95ECU zx)Qb%PoMoAo?YSd3C<8gWfz_1mGVhXEQA8<6nv)SM%5`oja;rF?{W6wK5_;g6VzKbb1;W6J6%hhSidmTz zSB98q*|&n2=pa#|8RDMVCSWmZ&_BqfTY4Dq3nw>+-C{uAS1#nV%$MFWSZDi7jpJMI zw8Lc3dBNKdevWTgPxFT1>e4Pm1uF-3LKwgKyt0)bSn{#YIRnE>tmSHdxOTNaJjT^N zjK;TWl!)7-G0L>)5^;f1!FJ%$mGGas}X z$!1=)0!9S4n9!+;(585vw7+h#S{#(Y=!$C3DmNWyI3Q9*t4D;Rtdm(gQT&;rVqOmN;k=H8i-Y`g zUNh7DC(aBHo*J(5@}Rw3O<&Gz_HzErm}V7j%!riY0!`@(!K}xqy0?(@Ye7J(2Zc{u z7}So~uQm!_hm;f{H^LHT%0ujAVp4xt?i1Z&sQcBM6y40CK#~@s`vhFNk1YI9b`!~a z&Yt~(R8_5?5GTPC=K=|yI2Q;^O>QjC1#0#M0a6=@_0BDTiS^D;s}k#-qi0Qd2acYJ z8OYHyF#|ozda2DogJ)YoayYeS1&PVxIaZLEEUvbK#ANYYEAZ1u0d@qp`bcq*(8(Q5 z`{_rDwc^>uvsAcR?-6&Ocy4jE%AZr0%YDKar9{QRAt6&MA&6KaB4qyKc_8y4fsOVV zcV`&R!1npzNr{?*&A_?jPN(etruX{D&hrI zk+s3yI<5!Fj9nNl11HS0^T4YXIyBiUE@ubWe(mF9NtkpI&b{{eF4?X5?^Z}qpJ=w= z`Zt<%k8m;@tCE{pII_a)@OqS#PpBY&Zb3me0nc<92uhO<2qU3>hULj7SGt@^ zyF8Tn{q$981Z{G+w+Dp_Os0)4Sj}mPiEe(;nz%G1Hy#QF3Lw#~zMo|FjQQGDl@ie{ zxu2w6D-qq&i`LrJY62qBO>ePE6{M`{SU(5R6oPEjUhC)L@ySG85;aj5^v_>=N!wVI}9Z#Beak`Qp^{Tp84T7E}|u&8v#JPR@~TF zZV+v;{9q-q$6Y;1*TomHH3IlBMGLS z)jHR}BTQMmx<*co=xAnl!Y9>$X>6#G)w*4e0mOP;nyVen+7*GRR}3)qYvv_?40LEh zI*d~Wu{l9ZD!H<0IE?lb%WOY`|AOR^oq#$(-4KgZp8@!jeu3ncz<16Es>L*q{>7yL zf5FE{N|EO=!mxjBSjOmdN7X)}xaE-nLJXzKm3J5xF=vZ|Fidd^MX%UN)=-@n?{pas zng~4}S~_COE9&1)j{H`YJEvI%b);bB%_?K=c#VmSyRkYw57L3q_d`lVVjQNXGwj?= zWr<4oa4Kj!e$x*Sp-&BW6z1%?rR*_|gk?;1<{Oq}S6fq;>w_mOd+ZkCrLqTMCw&gL zYuV#@#d`5Pizzk=H|`8Vm|9UM-@6-9DjT;+Dg~jqWsPmu8e{%xSF7dcnss5}kiU${ z37?moFx$VUW9fKv$kiy$?u>JXg$OhKn>?1P+b!%aDfC?zw*SeA1j- z{DkZHz)@_MB%=JQB%-cNh2tAZa~m8;eMJ+M%|CHOgx*M@pJ&D>CAG(7!%8Q0QU6oj zi6J-q8qy^4oClr=a7n0hvd(opw9PW9lq_=+58bX6R+)=d8+oGI)oT4vo5le)FO!^S zW|F2tHtAv@DJ$fHT9Bd5azP;hWSHG#wga}FKU0*Re6_o}Fk(-e2h<6YBW<35C=ycm zPMt(K_q2JTX|rT;YJh*bpBl^?N0hPuCB?k8Yl)?Jzl8OjA=Re_z_H5^CuC2T=fcVm zrpUn51mFK91GENQ6Xe4sq_?80X)I}yd@L)MHLZJ{>#pBKlAcE2EABgQ;$3xU5uu}& zn_d4x{NB3;6=5KYVd{~>kRiTCwRNzRh?dA3_>o0fp8V?)twocfp{v4EL_bS&bLj#iA>Psg(Pjs zmU4V{(M%9>weIM$iU15}s}yj1!s6ykP{UKi(z?yT4sfCZUNOO5c~~p=wi!}FSDOOt zBT2I*wfCK29a!RK=_-!R7zk)z*!Z6eMcF2X&Qy>fs0Qo{Dp{&DwGJSs2|O&;`~Nzx zyA!T14I9a2!7|rh49kLXB*`er7i6b3+|xMRIFfupH-}HHW=zBm{%oT%Ku^Ihl{!3V zVmzHJEStXx?Y%1PrKXT{;)ir;CmGnST-QU=qvC zMX&dkAMA97cg()=U{)SJJuFtUa;^VdGw}dFtOLDar(C+VT>92BJ2C7o>x~lTc9;9_ z><&8ReE+#D|KooMI-t`P9kVHv5B)*?tduHm{vj45BhFqjzUb2mq@E%)HqX*IZ-lVm z5u=~}?}3++7ti0$LkI7@liIR=e&TJ`(tI=ya&iD1K}4hhjOZtp2RSn-AdXBG8lwZZ zPkuUkH9!JTPzlKy0P!u1HK7s=N=Q0S1*BwEcv~KlB^f^Pc8w3M$yFhfPD$*e`I6{P zl9T>Oj#m1ay!@G~%d^~y*8f~Sm}2F3m5)5X|NLQw3@$tFQdR^CQq*v$fuCnWop?sOS{w9MQ-fY&-dWPOD+8JU zD6+PT%m*uvXO+~spN_VyH!Gn&@Sz2Jz>rx#$h=X#nWqOcZFHm$ZnJ;P~*Tvgc&kiwTX)%7?=58Gb()e#dDc zAKA2kIT9IdvMK_((Z!dfC!xaILynWt$w1W`@9l2l28$7 z3II-pX;RaG!zLA3im7>$J3f$!ioVnDmdwh3{|iR12Ef+=!EzZ{oU9~GpO7U-)r5$I zs@BQ`zk+=;T_*{ty8nq;P50m1sr&H3Znj#Q!pC0{2vRYBb!UmgM+qGXb&JI- zR$P&|SPb8w_IJE6G;$OUq=GN~YDUS~mx`*bS;-GPT$kwBBP%~_b)148wvu1|ud3rE zN2u|=FD~yt+W&h{0*nJVXbAIFaP54bjM~ zK6U?4O!_DNe$_v>!=#kW`d_7EX2l>=$|fYLD4Qrsm$_AkQJYY=ZZsPjbu*&99;jRL zfDzW3vp1y8s2^I?&7?CEHW)b*th?3|-&flsq?&p0~w;Xu!JFuR{h=-mI+rgN-QJyWE} z(ez8wH^vGeP!U8hJRyiqp(4*EF`pJ&1Q9^=!M`!>BJ?k0%tVcCAazY>ZG$F0Y&7v# zL=$IeFw(>=R~2Uy=Utvd*J0|aht0^GQKXHgt7yXFovE9WQ@-?`UU*6;`VgwCas^LZc)@-K^2Ny{fqZ%66xK;ua$ZK2;BVBJ?r2 zc^{h%Tz-!l_)InMsnF;&^tysZw+#*6ML-nY0EcSeTyc_>|Ly402>-)R1^kZ$_=mOy zcwgHZ?w16js4*V%Wj+d-hlw2*(B63&97+eMu$#UufXs5{yxpdhtePib-&)SF#R~Eu zxP`)vo5aL%=7ki0ZBr7&mX=C_tn!L_?nuHpAqwRiR9B&CqcX;hGpiuyyoq}z8v^OI za0#_y)u|-yPq#SQ#OzIT07zoV09;Z0@n6aW7jf>6%L{;K*exIb*&rI2)bJa#m7MTL zFETlyi=1$sv1eozlMdjrC_$1ApoUH9;5UvY(!os|rGuNq>~4n4ZXq4qta>*!rGp#w znM8~mf!`%c2cds>t^<6WbYT78crnt!&0rp))5S>#H>c8pKLqK(AA)q?4IuSsQ%+M!LAogbb)F(oDSDv0q-H#Y_ZA+P;vQVnDEj#h zYtlf&hHeZRre+xuo|S(gj`B6qM0hg6bCFV0at)b^AsUJ#%C00zL`Geq1(G4D!KS4Q zNVaud6^XKrlakPAq9ih>%<)K+{9OTstPxGYn=GX(SGR(W)0Gp6GW1Wo)_+5yZ1!&* z`ptO7v~t(U;4V)9j&vA5Pv!|QXZkXgWqqu0Mv5|{)fxZ;zbupklyDHOiWKXkfHTR1 zOnB8BGe*a1_-II9o(@^G!2w`2G3+?jbh}2q`hzW%u}bimV@MH6JYh~Mcr=xAZaO zQ(6Dp^P#8@;$^PiIaZ9kf7^cc>23S5Jh1V5<@e3K9FfzMZ`5cCJ|P=phOIKH?MGSe zyu>N4{I#FuSO06c(stdd{+lJyDsqNhlO48#Ka{!G3tnIaKl$RS;DyH7{6xe(b!4?b zsFZj<>{a^n_r5sckhgE-khiOyv-#F6@~oM~Zg29)+aiy=?b3N<9Kn`M(noOH#c)YJ zxdb+O7K&pwMbnkTQ(%8>J!iA^fl4rwRRs-@LoJp7E-bo<+YVWqq>5439ocL(XB75 z_92uM>iU%NN;Ag=UXAso**_iQ0wvKDwwUrtZS+gxmAxmOR|4FPyb=>>Ww^A9qEdls z1|&gVc7bXRnlge{@_waIM%olfBCW)E&v>OtFYrnjZwqVucwBsV46p2+g5r$jm2I-h zYzUQWGtA|24D%gQA_@UL1A= ztCnqWm{+X&7q3ZJ^|^c_uRdoi_^y0wW=-lQIz5*+x%Hj)rBvEGWrn;&owgdqmJHiR zL9Z8K_2!#P;MjLHICgjn96LOL!GcM68p*K}<@O=t*q?e@wc9(tqTTB7GD-|%Irdky z+ox2!9l^0L=78lV0yowH%li^8{iA;exb)Md;(iDRk0)Qp{kNaoQpfFxyY|ZO{>7~P z`9*mFl|TPqFy|6iz^_HK-{u@ZAabso6}WRpsrtV~{g1!I>hniu$otD&pXg&f)t`6x z_Hg>`TOq|i>3#91{`UXDTpT`qzfPMuV%E1@cdi~2IRS;6f`5BB=;1?HKcWNYt5W+j z!hpl+`!WCW^ABW6O=>8sUj7Zux-$IJXd)O$zUZZb!3pO!BiMdRL;v-C3EMxqk?WiM zaBORyZzt+Un;id$J`=+~a_Rg&^uHyyxBib@46kPypkxKDeMD|G+$HfoaoIRAuujfJI{P%awn>46iIzz!mxIzH-sMp1;PMOS~L<+y3 z3D2UMu}xhylhz+qGdEGk6Ja@baN3yY@6x}}-+wAcH*4tcn;i7oRAkk*<9p$(2g-F( zcT-ljRb%Fr;%k2JP1(Tm|R-=6T8FMO&tqkb;@#uA>+ z`fraJbyAt&(7@yf!=H7daheXLE96c$(4iPjZM}W8+*BK3=iWN^#{l zE5*Z)IS$H7@k`;itQ0>Ve#^xFGvW8&dfXHX151uw8g3rbx5u}Go5vkD=`O*|<0EnN zXd5@pD*iWsn}7V|;O12uar0T@aP#w@blkiG9Q@<(8^8DR_rh=C>8HbQ;pwl3-(SJg zZ+tD(b(}}@(}SmG68am!(?5E0@HF^~ltq+-vT`sEPw#t-z&sqe3UKhAKr4l(cO~@n z&V-(x{R%xDj`JpvZl$PXIQUbJr&4o{S$>XidN5o5cj;;DohcnBpeoIk=awXzDmTHh zL{s#qJ>&8)lSye5ThYfM%XMZdh#~S5?>*ot(gG#Sts^$giXrlTh?E23|VLk+1P|^fe|(uJSd`jVTcnBwu44z6D=ne1)67#vN-$ zs}+5XJGHOzg&er6+2CwUYvyds-|ptE)(sZ1J^AcT%h~vzeB{uhw=s>I*DHS~H}7P# zq2C*a9^8#-&D@RoJ3U~7M1bH9+XRSh9*0GdC+@~J^!tQR{f}5A_5{diaT)Bs)m@XB z@?`xj*v5S#?w_h{Jn7r`{rSc1QJc=z{n2!`8Pgx?DRr^vR_GhP z<0-Y;APQuk>A|_p;r#3m>U)_7jhouRUJ!?mXGQVAC-R~*4h@u%@MF5#a& zI~SK3ITv1e>l*xGWz>LVd9hyW!FW&BXYnE$dduD?dANZur_I@Usue9r@Xvi9H7Q{| zr3OLh_t4OuhI4}-xh^(R1Gj!J)+G|WiMCiE>y5ZBqxeWcdd+N)Bd&dU!Pd?mH+Mr^ zJ#d$jS=7T(s2(nHsq8OfWubDkv=GT-K$I4IbKw@`0k9u8N@Vgz ziFj$H`z;nK<7w*9C8C!9k+X}#y*t<_tkBwiqK{Y|gxFRlP{WlXrd39uZK&ZYw;HZA za$Ny_l^Wvx@9(XKHW%%xA-F(EkZY70A~v}ia%~hiC}YRDw!I;yQ(p?7-7SuGe^w0aaKPEFA;7%f9l^NQ4etrVFD?prC?b8dOlvX7e;iqU#( zvmDWuGudaNLTJ@YNwN8@%8DjDmfd71WnQ-G?b!K^Wz!xHMWsE4G ze;><>&8pX_{aELM<+E)jC#@ZQWy{?+Kq7i~m}ga71i6~lhBbjoL^U$q#1e=TABUzf zG2IS#wtZZ5bRUoQb)0$Jf#%xT<|QD~?R3fbtDOTO+F>3uSW8`AATLB_<6r<9HtsN< zlZEg3GO?T9A4Q4K)yOToA$jHBTcA21=otF|Ap{s%M;+iTU=Pt5T87Ir?!Y%tXNKk#I6_ZU>oM_WiH+w$XcE4X*f%JT6#RWY0R0t+IfPh^4d_7_|OIf^&OQ_9zsa-vn~0vQ{)as8RL>Wtn6Z`*7e4<8gN@YfpjPh1=^Mx4B}=Vj6R$a zVW~E{NPc$ovd4ikb9o15hz!^lVIlv4*(tmMO}z-vUj75rn{Yb+0qx~K(BwZriPI;-FUx`$~qdM#h)Nt;J32%YuVT%luLgg*EBgp zl+_a+9@xPB?P=US8zi5;f&US%V`0xH4U=E^`oOdIC-58s4~;LrB5(-%&$Q4#BwCc4 zdD(}Oc)N9I`!`T>E9;=p&M(E&E41e}*b^)3;Lr}0)IFtub75K$pGzahb zGk89hm1czwOti7e?V|VpppGXn!!54kGOyalWug?sAEh8TV;rLD;1UlXE)T_v!zy!s zl;Y&L6bB$;yKs!cXm=fwOz}&WRRoDl1h25(wj9*vL6^2zZ)U{XdkwVS9F2Q9T#Xh+y z>qxU*3cIJbOOgL^`V0@ZOH(0ZY?o$(uhbD%7DBil7(VAV^nJT<+AI>48^?sG7#0xiwC_Z585<7<9qm8H-`{^M48cGegp7|p$YdW( zL24pXz`hN}1oGKOQy`;DVE?~l3JzALz(0q3ASgIGPJXN4j}NHiu;E+T88mFN z*_GWxPa64-5Etw)?%@<+*K(N<^fD8IgHj5J`d^+9{MCyOpmlVxhVT09`-I>Cs`QUI zAviz}<+=Z?CjaJ=c4#Z`$vV zUgTj`GatBtU#dY$ddAPan1w*_9A0`E<(#o~b*cR!#V=kpRw?U9&Q~}ZNx>JSQvCgS z${@vmWWLu&G3vn(?-oQ5qn=d%K^zQm{9_M>Kmgmx@fHw$xuRe!pyeJ6S?|9Hn6KfgF)(LO0Mx1>_X)XlK3>geFyEjZlc}R?0w7z)7=P#qK#r0itAIib zrOH<;ZNmp_k>u@sbrxF(z}vzK#1Wwy_-{NMUTaKE_QAda+1A5oAMg00dLgy?U{-%M zoVv%Z<$5)DQvjA_09M%mxAW+kh#YB_-{LF4a#G=b8)Pr{HK-~%wwg$8=>NR^vW}$w z!0cM?kr=*Diij(_W1O6`EQ>>CZqKRE(UgE6Dv(}59Xd+s(9!wOmK6Vh|6i40`S(GU z{L-2+rNr<$t{c_57`+h12A^yps_&27@ARFM-IqN^KYw4p?sxh|^*ep%_^}s;B()HQ zgBI?EC?M&62d^ja!_uUaxZlBRf%ZZaa+Q9kANn03k*wd5tlQ{!vSmR-tt{$=s3X*> z25k+RFpiS))IArXZv2DH8};HLYsDFb#B?%JEu2Yn`M|xpq-d+<1+y$Ecg3?>$f50-UeE4{OP)XK{4E+a8#PzD>-lOr*F#|FnqI1+16E3&C( zB-RZk0qxw8LDHpJSWvZU1S1P0sbrumtjGZA+$(iUms_r~UV(Q?V-|{3`BP9Kap&xn zU2CRY183LYP*ukiWB*;wjhbh!biM78auL3SsATJ z?+J3I_f$QF(}M!qzIzb{+#zBlz^o@f6urC{g-@a!s<0dZ{HT^4jMGzZC*kfh? z3ZK)zva?OpzbeLDGmQVG{#AYG+wNc0URcNa*O&#i9F8_HX=MKjqnH|R6q)8+@07`k z$5*7a8ZT25iv6s{c>Q!=)%aaojX%TDMy19JZ8fg<{1^1tzEuO7Xy3F2zkSIT{Pz7? z8J~Lof0a$rkN-fGJ%B2Uof!=E;R|iw%g!jPM`(%i^fV^;09vsQnP7B7$^`Qyp)tYH z-B8lqu`fJ$m#?FfVWYwqE2WX5BY*bh;gFJSlUHT4s5j_lA{D^%yrLrbIlpi<#w%_dF&#)GWUAb zI`QC;cN}0RH5225Y^QVpHuDBfkf4=B>O*F?LVNG#@1hS zwTlEzwfBgxc5HE&ZaU#CCKDCa72E0P{9rb44k8vTYit&NbaNax@kzmY^P(E1M40& zi#aseEasjas3v=NHoE)pLsG7#vj6>AOa_;|EVWmTUPDh~P>Me6DEiRua~5Oz%YLXZ zOlUeVW%(ifKf~I2>r9IYU(5y}$M6IYMo#=fp zsT~I0m#JQH7LJ*8kT+CuH`F~fS=K(rclY?)J%sbWz2@GhjWzc^F01jQthuvk!}jnq zt0|Q@>g|V7!s*KFUj4FC)b~YRU=4bVVgR>Jypq+LNy@40ivT*W($JPS+ zC<;QmKSP)*C~vUzq7tyP&%;d$7*6{9u(0`hDaZ2n<^Tq-U#Qg_8NeuNuz+0F;3x-% z6`bI;J5K$TPaUG8aX@1@i$6}dkX2pMghLuB%dMf8d}DiuTQqiWD7bQ=Sxr;zQSna zjjKp74C6{Vj(po&vnrG7jcs;C3Fs zaRNh%7Rd5IxI7rZ0$Tb_NHPybk()Xq#L~)XL*^2P;k+;ti9 z0!2XvM}$%)iLnO5U?98CoNQhs*oV8D{zLKSW{wq8{e42dn(Ra8WFL;iLnZNWcVcQ= ziRm>-$nxZM7RM(zsE5PJYBcRv1?j>*Wbr+X>{iOJ4)I(0YXi{2TM_iD_Z zIQm{IJ5v^AF=DZ@dy4lE40m#P!2Szb=R;_n@A774dM`(vi8+z^GU74rk&zKs2t=kX z16nTz6yFtpfOiAo>7VX$P*LzoNTBavcrLRf#+FQXq+A)VojeW zWPr5)HjU*#p#oJzvxH5elLJD`0qs?&WNwv2AM8@7l_PeMAYF zrMwJ~%3L^ZU}ZqJF)e^s-oFM=KCGN7xfmFeHbVNjtPx$xgkp zPjl0Q+JPs9s+EFAAJ^dMOR%xNG69z=abd}P0ZXcPAm=E2moa62b~iDZe1m~D8`Xd< zV>VpKkPh=?FXZ|d)}-zpzR%Dj)OrB=Af5?RL&M%+z?q`R3%HOfHd?TWkg4TDo35rm zN+@QNL4Dl}#moeN+^E4#2Hg0HVX;}A?M)Gz&mDIKUuu&<5mF|{i{l>IeOP|jS-zj~ zV;9{mEC@x!1t*lkSCXMUs7UzG{6u;<@C#w0rYKBw3}i}-g_k!C^e~;c)Cu}qKV)N9 zf|fpJOI{u~M$t!O+AP|D+4CHn%(t-i*9}M7yV8*OyQ;Uz^q}}W9 z$~ibT0{r;xFJEEnO)6r0#v=>$%G<$+5E6PPF%C(xh7nY<&7gELIOQ;Na2#ca z{>k(OI)rghk|XVSF(`zi>lB_=!+0gI**^4I)<4i+P?zQP!O-O#pKxpp%c7QvwD#a+d&r|!YuKQvkS;74kSD|Nz$JIC_?@dEvr=}#x&?9@!v~!AomzH1$nV)E_UzmnGtRMSu zeWtX2)|woy&*4U1h75dIh4CY(pO^vCJzX(C`UwX}%VE6e!`r!Pr~@tay1oRav^?pW zhDypw*2AS=K{_tERZTATy`sNh{}}@1l?zgH=Di}0)m6Wu2&v{KHvvjz zxlM2eYNabou(J#bqobEW+h5SYGN_nf^dT|Jpxx1gVoh-LAwn_1i4PHK6Pyvf45|+i z!UVex5hgal@>Y>H!N`^KM4Y(n9(9N?&IId2gwe~OE)#s9nmTB4iwW+j>WkAt=z{Ao z$Mzl4BFtfqc!lu8<~TMuM~`&>XHRsn?c(~jkZgplq4K*A&f}}qE4*l*I9Gq59Mze_ zYxrf}jqA;`v$0~7iIEu>1UQx;+ERliH35J_vGOgM*dsEG)(61KlQZ`_sD6oYzk`bT z0td9%I>guvZ@Xb3AeB>Zg#7*#glReS_=e`{fA1xVL>pxpVzUz3w$NZs{CTS;*uRZOKST5XI_#cZt!N{4Y5vm zkq%ht8M{4)`2A=r2y{;C3pyE1FtDNK2h{>e53FXOiKbO}JeRX05|f4){FlpxLt7tY zD^v*?{TXBlthCTJ?F+4lhCon5tcp%RP$i_5c)XW~d>MZ5v1^Z%1P98R(Ry%E@&g#6 z(4(kgAWdIr_NH}( zjrCi+F8NN6$9Fm2HqXHD8baY3U3LnH?%mr3>nGjV{?^}0L!^s+UP#FJmdJ7!PcTvkQ=ssLUmXQSu&leooO(22{_`L%ytW}I< z77#Kk%Nxo-{q#u7@K|YgJM5)^J?Rm!%IL7?Q|w{9M)qVv-AOcGv)38y;l5~pXBT@Z z{!TLcCYN9jFL9F_AK3G0_Bb0620NiswHbu;guxUSgZKR(GuYY6O3tEROYvT>s$@R~ zpg9&QRjOIb5jV>q#x2LgQTpCSt)&2Blm>nlE=UdSgE%Si6} zqB=qPE_KR42#U=^=*TCXy=kzXMOoiY-^4i~iwm6l4aLNy+4$MlvMWfZiG?r|#e z|DYjwSdGb=f~m$XuvZ5jV5N0NYj5(V9f#&R3g=^*Zl=-lJ(2OE1cMUCmw$bjd-q$$ zVDRR&6Jcf0zrdPcO(L}N&&tqnZP*zd#M@gd^*^`QQJ)GF=PK?jyU7=oz1?+cIJoAu(>c?VFMX2}O?9QRy*xQ}M1=ue3)VEDRphD4JDKi*k zkH3pr>>@oFT*#zzD1hC;lmZGTxj30B(#TP85HVK0GzM$z>Fby<;zmCR@&UE2*ba&Rx?p{(%0-kEvy=->2=|!Kn8WVtdPh)e zJbYT?b-hSM@Or~e5FCXltJR%UUk>BWHo*G~Q(!!??8NRlW2BYFHm)u$##K+M*`jjO z(jN1AI>F+gDPq$TPO4sW*NjLjmG%su%?O$&a`p9~W(bzij1-FB7pobFjbwvE{Obgb zNHH4W!?kJ}m>R*B!0%dEX#j>eJ(T+HisI@|wL|ZFR^=^|$wGay+-Jtly)HqfFBIAy)%Op~SFo|$fvq0~l z>y<-x)h2jsI+01#lI(yxH~j#@ zJAap)aKo!Vfbh4kBqzM)wZ94 z_dJoD@cPGp0O8eZlM}w?(H}r~*P7&n*F79tJ92FAzg;`4A4<;BuGOBjUwAz!m!o6V z(+^$)VacTJI8K~GnUPRt9fknbK&*FL6ET0m0W&&gTnzp>(Z#komS!+5gkKJz(Su$` zt<<8+A0a2)&{t=yMkl3~T)75lg}Q-cx4B#s!p)@C{A^ML&lwMq+hsmhS(p=Nq4<;|R$ufyj6^u|!g_Rko|vEEb!5!v=c0!s0$vz*az(aj zOFZ`QBk3YjI_Fr@{ZeXbWJ0NV(eaAh$g$Ngn=6+Y7joPrvuQ3ebDav9RzFM!c~7NU ze%kQ>Sc)3C=;fzP&N?NyAtG7E8dcq#EUb-Cf{WJZ zBA^x#&gvpLvn0q&ma;wS!cPyTZ!BymeQtKwP`a5QW2Zl4Wp$EOK2v5XA{U?-tXmc z2cU55%gKqlzF%oGD;aMvK({-KilfSTz*Mb#0q4~2DU=lmqlsBC8v`v%*9<_prQkuK z<)|T!)tU7%-BfI9xs=Bm!Pj-Ll-D_A+KmXx zX*Z}>wwq4UW-DOwuv*FHljV(KU1rd#s>!HfU1p6o>%t)S3|Q|tNZZNZS?0KGE8H~n zDUDL91e*qp^4Zpe#)vv3_mgq;UNj0w%7(C-(dNWfg`srRtx-Ca~{pB-E&4cH?4hD1XY2Y_QYG_UwaVDR$W}i+-W& zBtOgmE0ybi{iAQV4x@7e5W0V2&TXI_arPD{}Ya;83KZdQJ(DPu+8hf?Lva zVz3flCU$IUJLpfo*xetFB$XvC!Q-~?X&!*K@=5dZAF)HpT>xIF(Kj?>T= zra~ui;AkxRK@1fmXwO}FHW)^N*Vh?obTPX#rZh?tdg;;L<$@%z%Z1$ClCYN{4X!TD zk0J@3HM)G$oN(Y6Rxt#}qcdb;cP_JZLcv%_y>y6AsBnZTdjPU=g$5P7o6?EB0h^LE z60z-*ZQaEZ7_>@s7bV81PXd+*O-6mux{Fq?+GC1pjXcqyH21iD=`PaJzFU^^H?-8n zscCC}>B;d~mdCOzFP@3RYOBjD!zYF+%jcCu%Bw2JSXTZP%gO-Ep=SU9zv^7eN`Z?g zYvIM#xXMVlvbH>Ou~lAKR$fWZS>c(Hs+uWt%PYrJMrtm$W`!f8>S}7jm64*Fl9_W= zqyln9%&!aATs#Gc;R)e+RY03r6E2B_r;wp3bHf$kNLA(Nl1Rzf<&oJV%PUI=QB{4h zB^;k!Qaf*SxHeK#b+J`aU0rdpHLtEBQclkV~KkqMww##K(PHa zRS^_TLrk^<0C57yxU#mw0fVTVFd(DCwKGd9481AF&m4`vys|WmB2-jG#wj1t>;M7n z04lLGI#d`X3WX08+XGH!&b7&otf~y#Nlt)dolyV0h1PM$`u+aF(*{GctCVw zcwvO{pHvrN6rHm2n%W4{rdF3i9HUBR&JK?+N7RJ!>Io&)6CrEVymoZtcqmOtjfq3; z*cv^)L=lUQsGVOEvFf15vns=-{@U492r3Posw1aJTy3NTDKjg|tEY(1O8P6 z#=9U~6A3RI1$~ZK3zSo?8~~kK1Ij8?T?Nk2hAJb_@Y+HNm6Xhw0j+n%h#Hnv)y#7m zgD!$7U`z^mPZVE1Hx7NAJBoNw5lZ;cnkSNpiGm2G)`p8%61(~s2rqz0DPV1R#zTu0WN7xI(g*sfS%%fwV$DwzyD#~Zgj##t9;-Hjcl@DdpzN)e^ zL|Y3cDHjRaSFYVUF#|e)RtN~%<|5@o$ni}M!`Rh?YbMQ@gK`myh9g{Q$Ed0sQ&y&v zPcM(4xH>$u0ye}+n{rWkO@$7YRaBK23!#+iREe2TUQ>e}taNg?8l9I_2bm7fn-0%{ zTIN2ss-m>8CcL1$s;-tw78OSN0+Usft?Iih0$rwNjK(#*bpy{@SXtNTmjtV*CJb`$yN5Tr{Z$ z)lzGfRST(8;Q)wE$;_%+3t8xn5N%>~c@63Y9weGkiC~SHR~@<7Hnoap7XU^d631ak ztyLPHRTB=^7FAKM=tr#yXf#tJ7SB$7^pjP$Xh>ct+i< zDYHwe!?o57^mY=-zD*G;pBJt`_agx@x8if;DYo5;)PRp!6&lAKkhU6z8Fc}$MFTWk zI!hsp5f27w4C}&KH2mc=6#y06_=O2Of|Xbo37=h6Q&DP1vJz<`!cLSKbBWD^@MqLo zMd+OCYG5-eN~8*=o+U-ojX{;R)N1zgHhrU9b-)7qAELPbV&`m5XR0cuROK90u9%KK(tTuszab;TE0~Z1+1b1 ziceIL>SyaEv$bQDM@sC};P|Q%qGLc-S~bt+yT<8(X3j3Di5{M)0g19e9GXOpQ%oX< ziUg^vwg#bBtEn9{v!rrCN$nt1*4*0al9}N_Gpo=-rk92nDBp46(sIaa5SmO?9n5g; zprNIMps&!sL6sQ6FVGl+6x?yOb=B1v+YFLH^B}v5WjKBO%>@X-o|BG*cwf zbpmP*>x9(^-U)ND#0i126R4`JxL9VP7`ao9lVZZMfKXkfQ^5iz9km1m1IAk;%O9Nh zm0uF(EJ2Nwq9z~YR=9a)RbM= zlgT^d1i?&r9e_m9fF29kI6$t@MdhVno%F;52`CR&2N=zfHZv9%;c+rYH?gh|(n7T3 zCdmn4^udX@+4llQ7GSI_wCpWiXFwG!|z; zbBc~d%P?N5r;f$C$LKKFDzBtdQ&K99^cdF6x|#)HwhpZJ!!rW|2{p<<0QLhz7I;F& z!svaG>>=)QVhOEwXTLvJ^4SnW9M$;*y$?K#^V` zm4MP6XGK-@K(25l)>UPdl_j5CRTUv;^oy&|#mk;pJhHZB(X2YEg)YZri-ktry*kNu zntR#Yj+6y*JLD>wE{FwVYbPs?>|l{zu(TuWWkx$jc7^RwG~Y^#t19he3`@`f+remP z-Bj#UC3C~2j5e`Vrk1Cb7^o_Cj0}$L(1NOpx_P1>XDJ_Ku6+^EpdM+dvNnttvC#q& zg|)X9NL@6LF3=y%frV}tGe;iIwlvK{70YYz4b+L3mcI1qb3P}XNBej=Qw6`W) zU4b=kt889XsU?|GG|)83hLvag+3Sp{ELAm&Z4o)Uf-qog)zayrO!Ono_Pgh8mJ)*u z3`tNm|Jj(F%*OT|(PCl%FRIVV21qE-POc zF11dTzcVXf(*Lm8<{Swslrxq!rz)1R?S5vt}!lGMRd@y&8|pW$rGl!ZMO?4 z+C;h%q!uL%=EPOaRc#uZ1f$3jwslE*UIW5jNBmB2Btb|nR8c*Nc33Q%qzH-*3SAo}Tc-$?pG^o63P{`2H8-t-0K;fn%tF6xw|$@XNT9XKq}bbv^k zP;&mF4I)6!pWa3;?WObJM(*%-D6|b=&VD545_#}&NOAy@7&@dah;{)mVyS5(19Rd{ zfyw-DMoDe?%;{=s7qF|eZ94kgT-!jLVs?O)w!zdu?G$VBX(RLV^XY`(=37IL&p-Zz zVGIu&KFpe#Cn!c?0`}4V2*!h0#tHi) zm<{2$Lk&=Cv93A7Z`SDjCHA0LfRNG_@(lDb08vMqgp~UrMcl~>Ou5S|{Sh-t^h?hz zCt0J>2vv=lQZfK`p2^ZAi*aWpOP206DmP~|6csIWT&F@Xb>pIzp9^5ofIL1zK}5xB z=(u<-sdtr! ztQtg&E1WoGdOoKWRHHFt6z&oi?hg37058?SJwdN&jVqr41pIh*d!q{{bBJYiMSQo! zIK#&9ytY2`{jCeH8F&W(rw5*Iaqyqv4EPVk!{7Ns72TdHXzf9IFZg@wupj9M!QTfD z@fkiC{!Bc&+_{7GU|cvbkt~rKkC`KTQm#FlE$cSqQ4e=9T>f}|opPnS9&uhAP&Z@- zi!#bOi!GNOfFZnr$%`J`2^{JBz$<@k(I4ibuSF=bF95EoYx2|=bPf?}mbC(D{op?o zkLF>xuKRM<9_#KJ7yfqme*)OU;^C<)QSvkR>s|Qid6soJaQ*T4Wd?qa3%(HWS%A%s zhi7(iMK&}B0MC?p3H(O@KgXew$EDA42^eO1D_po6;qMQ;BOP2LAC_0;&xU~?aaX%= zdk?d$qY#ffTIDw$Ve0+ScualgN7pw;>^7~hG_5vZbBEgag(c-Rs(t#Ak16{q_>Vz; z$2xi1?UTh%kbf*qyIy9y==z3Rcx~Ili`8~n_MNWX(v|F*UGxWo{_&ta$e}+>PI+jZ z^dsGru^RrtfXl_hcFi!GBh<*q`9#6xA_wr7ZrGTMhq2(3ym%5YL%-CgU+Q@*Ns>7lve^ zQwZFJWC*`C@K1qTgh%6=dP5U2-KJA#OI$qcg8wYwosDN2o^$Y=i|0H%npPe=WTP+J z03VrvMEv}y==0%TfF~wj+7^YU>)8ibQ|?0eF9gnX2QQy_7~?^`2)N*v!CwN{8F*&m zDRuCMol+1G>tOg&cZX>p^=+!c2pdBJ9?mLbOJnohvKr{IdJFVslYQ2 zPbD5xXG7&Ity5hr3vS}In(^>A7H(I#Rd_VcFhN0%gw02~kyAbV^8r`mz~<&fFWT6A zmb&nmR|Gh9coyI>dg}1V{heqYR|CiBlMl+i5O^2kxdhLpcrL?Z@bjXV&ut!dfrcq( z05pCIoS!*(j!q7qJ`P4%6q0531J*7x{Pn>3Ii5v$uE4VxkIDN4XMN9%>O^j(z%%@> zhyP08T;yEBpT z+l=t9;NFkt0X(bmJc!50VX&JANA#jkYk^B$_5$9A2caFi_k1h9-sqSfg70BGMh1hO zQv)J%mgQT`&+mJTEBJknR||&y`^LbIacgBagImbY;w501tlak^XDA>+rHG{qrSl z{yf0vFR#F|UW2;{&+B;J!1E>^O?&9zXxe7i$)#aR_NfIb51?9$;U`Uq)Orig+jzF( zG5nqwO;hhTIV4#Z=NBm6fM#ug|5Ui|;&~6xHatfD!(xu^vjT{}x4C$K*X+4L_qaiMpHvSpKNP z9IM&7+*_ip{1*6I@$AO)1s(^V`v%eY9JCtzvGD&L@LxJO`DW$W z$TbfzMy~bne+AfoIPh-!m&X$a?8(SysS9rd{Qm^b*NO3RqwO^8dr%|!9aoau+xP<7WiJ^ra1WS z`pb3q8LS23=K#l)yB>ZYa638pxenia`K#9EyVQlZ7XHq_>Ehs>pbu@@@GD&KpTnOD z*scz|n@=0p@VLo^n-7ZJfR~mSH`(}Hl#b<11->b7HT>zI)7_z!JKWTh8KVP+cttL} z)$ktxoE{FIi+^XZNxUU4ydCi4QX<|5YV;x+PY)D{x50&%0mIr8IKATWWW|v1-@4$( z1HLz44|3q`^&69+dptZ4@J1%rz~2XW2e*Oi9?#Bp;Womb3B0}zZtf5xPuG}hl?!JN z{D%O(pMzsqlra}=j-cwczRiU@_%!ehyq_e-h3eui3ys&CuxGGQ;w}vM4+GBOiSbmosC&gOI*srT0F9#)(3z?0Vzmo?H~hx{_E-nr z(HXwHp!3+~!tsy8xE=7vIXL;|h%mr~r*y!WvSAC?Iv%jN7$&ye%`;^PxZu~rKNzsN zc=%g_@DTWiI`~SrkjC;~rg62cmozL2+B-!!uS&KAcDXB`^wTkZ0?lC#U8DOGr@)MG zO@lfdLrbp$LbIr+ROXLgw7lhjwn#hw4L* zW>Jjwm4kFsM$UJG$gcoT2oFRlkH&ZQa&-QsF5Hdqj{?qUJY(>jisv*uWATi`V|Yk7 zcG2`!gNB)dq+;B6I`GbLaFe%TjlUE4oQHHmn7{KuV*>HmgE-SZKzp6>#(7FE#lSIovkv|ez?K3xtnuyqX^h-gi|G891BY`B{_-cPv0fQ) zXW^NRryLJ|#X4;c!gKLd;F*WV(9c&#Y*a4lYKt*;;*jWQ>ia>UN51Lb10Dt^Wm?-gC&Qg>*lpc$A*b*2bqi9ZU7v%(>0(o6pP`w zm%sti4b{9{$o$CnCctvNe&UqK(CO2M3}1lv$f|0_mB9|3SW>}*fD#m=NZQ{59!9Et zV9?(V_yLoc6Z&_BmRq5fD?Mp{Pss-?Suk`# z2XteKA)QJhiA|i6JAK@gq0?2DLi)qOL#+5Zh%Vxc0H41K(uoyk2MJNUjlidPNoNfn z%8xF~3bB?;Cir9GS$>noM25ctJY`B64D&~MnK0oguku)VMWU69b6<#G? zi#(PAp1&o;ijho3nK9{G1rbloHB~m*M1Gs3BAc9eO(4OI1dqh0NljFrhYClE> z6iYMc^S7S)#ESDr%82<4n4-kbd@|vuwCV1^qviKK%cRt30WZZ?cTEYybG+2D$km8ahe{ z_@uQSG^pvMwHgmaO?SXl@~B2HPN5V|Z=~^u4ZcwGLt2bPqWFkN_bY@cMiQnNcLVS$ z5u=U~$e7k(a#VYYZHTa5*o*FGI)cn1H){6Rkw!A{waI}J12SCsJ*CWhoBU7xl-2hZZL&peYl4^5iTQRld9vak3@e)^4djwdF zX5jO;o^+CFeS3s}Pg<$xX!{IWd+@Ld=q^OO(R_!L!YM@>f0%8C8h)+CNF<7nh;&E8 z72B)gL(KqGMuTh{$RuJ^6WlgLxLMdsEW);sS>*I{75hH8NyXO|5ulS!A@Hfaq*H*0 zqNBSWj}e`jsS|!R;`zgbKD7BsEjA)h7(}9b4P1(iL=g_v<0~jHh^^Hz0+~c?uKQ~f z%Z^4O<2cN<_RNz$bxH?KGCSjPxt5e>JHl*>#vpM`397>RQ zbl1bBBuST&T#IjSJs}oR#|UH+N$S%;iG@HZ78EC!Vw=d|mJ+-S`20nR+mK*8gh*!t z@F_jgS%-&`pgXX{k)Ao)MEFAy&mT`f@n_&EG2+nuwpdAyG%2~=FBr+`7=cV8xwy6I z#4=O^ta{-xaWn2HA(m>RE>$z>C2P_hBuILhGn7A}9un zls8jKWDSIyT)Z9OO3_;kIv$WDy$BwPm+rTCZ1F~u6Fzn#oj)E|%oBaq2N zoN!MjiJU3sW??&tjo1fbEM7WSeDU+aO)lzvAPQQfTMT*>xzL55A}@ryi}{!Z|Ab@} z{zky@hkdP3{To{BBtUVK2;J3iDRyQeVh7;IYKZTGOeXgDt?k4zm(Fb#*-j$zjuJv~ zD4J_Pi@$o(Osd@-CrX;zL5t!h%}sbHZo22sc8NQlr0`P!82)%vl|O?^2@{{LA1)+_#pk?Ko1So0}p_>DjB4;Kdasb{dny+I7GMSXzuOzl5>Skd%iKsh3gvIey zsN#G}T1iFRJ~7fN1TBh|vCMIeL=tyZw=Di%>*4IkfxIuVvYpxwx=tv>Hb*1B^h+JQ0l9~RM zD}AtYSB|jF^xl}Jap&GtzZ-y6zaHuQt$_>m)4L=N6~b&s8r6z0Ww2%3cIH!t4PxUrF5=42i$}#X zj(Jd52*-_Ox`rq7IuY|4Uqwh5;t?)>3;^N@Qvn$ALzwfc(5?N!llG_1@I~dSb5iU$ z&>INr2UtuHYhBlh)kJQ9p@z!UQ+ny+gc104=*m=E{eIPl>P z9pjh}U54wm-^4M@yxed`6Wwv5k){PC>43=3PR$SB_h5Hp_+glf|BPeabQ%5}7Q!9J za5`F&JC5OjF>wr&CpVn%Xp|F6d+O_G>h5>8c=C5m4Qmr}810sCJTPI`0hYQ)Sn|9I zVV?P?eE2ZTJo(^w16oO_;ZyVvv1taz#DiX_8Gs}4?HVC&08GP4cFLNJld(eJ@rM^F zLk*vK(#|4fa=9J}vBd1--asJoDviujl4d}rV-i=;)}W`qHc0g6qE&H?vx3s zF`a%}ht2Yo=3-z($(AcrT#+I?*ZIH?Y^Yk_V;c37>6AZRh6(GAW0-A=@Pwnwu${Mi zVNvJ5TIbI^xt3_!C&SExaim4pE`>x(t&C`fVN(yue3#djP{9-}!U$j|V1f&PA%sgzXK# zDKo>&n=W;La;2Xqi|Dc+rz`CRc%p-F8D@QwmWgB7_)#a4=1!-dWuxnqjVn;jP|DcN zt$^W=?-aVq76;6-@nvJ`F=2NDk7Z*y7^W>@9QmTlFnOTg<{`lgZKOL5botv*;N~G7 zn6QgA4}^`tPaY^E`k6OfhWTTdaC~>3aeS!5v}y*2X&7^eZ4#XXzRhofm*B`l>cv9d zDhRpxO#loq!sh{=awB{W{Dx=x$s=9zLmeOt^@A?cOgIz%4S=(GOLA8X^IHWt{`ih5 z>&H!tVUwq!PZ=6aEMulb^X>gm9&Z=MT4#gc`o~r1d1DL@)I)lJUKe_r^+Uo(qdYyt{*fn zIA{uT83OzP%pMnm8YoGwrXa)dnbw%;k<2*rL0{%QZ2+>=#en0l2(DA=L{yb@mjI5^ zCH!T0X#4qN_`5Ea^&dQY@$is8Z3toL8a7T;pOuYeS$N(B*eITp0F&?DKa*^&RJab` zi4h1t8gS&B@OgL)-wb=etKr)VzfI3||UtU<71yT8>LJ-pDm(-4#xZ#t8q#Bwaqf=EyFHtX-=(4qO6!&Ucnbmdq&S153^?Os z9A!Y4XQP--p6N2o{M>Pde|H?qVsLC;+E~#hPrEfwe3OXl*VHf0wi%{QF^+lBC4IU! z?cBs$L!>+Y=c=rHjtn*}j zkuKW_^Q2$Og7}<8$Pcb*3+~t3Nh1U4{24sLl2@Yxq(vFiHFe;QGdvNyLgbZO5|ai=7EC?EqpQ0=f}-R+d!jul1%)j-{#-C6{Qn6ThfQ1!QqnELI}r`Q05Le6PtV_Ze zScZA5ifKG1Ntb)2bh%kampe#wsf2D^(}0*p9@sS)Kb7A2nTPRn!NvG_aMSqN4H`d9 zr17(BFn(Ju?$e=KCfl!4GQk1SP{WNdJ04P}BzW~GIc14?e3XXGG$+Gf1V;6Gbk1uW7+#~=dSG})MToIQ1&~1w!mf8m#>O5WIn6TS# zq-$IyQJD77+NIvKn>~y-c=U4;UIw1s@pfBD^j0ij$^TaHz#lJfamtz)f$+X-Re1^j z6>wP|KJbS&-|WRZfh>hdG2GMDC6E#myDcf%oX6f(15U}sGH}5kuex!#jt3@ev*wtv zYvDH>)6XCIWm*UMiN5;=_{<~cIw2)j=eYTa1tx4EU}<@H%}xRQh9CO*BR@>*5I+g- z17aTQG_B=P@`(o~><-NjVK=+@p`W~%ICiy!amVTU4Q;;FoA#-XDTL?{=dm{kqU7Wz za=i#aE+BMCGUmEL1-lZk9)R<*!Up(_Bl$IGJ+_Q;Jy(QmP1#E1L_f(CyqzoE@K#1?s| z;T{=TA;jD}B8eeMZg6DD*6Ex!V_CwML^1?$M4X+#p)`oI6@E&95B#CE_j=Rb5)Csc zZi_-Fj^Frbiz18vEGMaTs5I@|1wsxNFQxP_%^UA7RojTfYXlxkM!Yrfo07pFYFOn> z`&dfG6xO!8WX8{u5W6EK>BtR;T$U)W0HuN7l!$)*$ghdl zWeC;ZZ>$8dI#QB0?}5BixeU4|KN;t0zgj}Oz>8f5|iI>cc* z<)CL(p_LDL)1H!9gHX^ZoHgL$5VP7H_f-ROH~bf>H2e&MQ<^wXDM>M4SrUPTpLy{q zgr5ig7*B2)CYN*>X3fw~4KVS>MN19sc-WiPlT|_jO90Gb11VI$CMJR9Wx`4%3{QX| z*|F4=mOEV|GCi~d$RBrNDw#5-A~sCM-Em}?{N?=;c&9E%DpmF&&WS^ux{dxE10(dQ zkTKSeM8?_)-ge%q)NKV^{sw|i!}DtLtkqyhjB1;2PMO=TItV5m;X=@*5*5PbZzc0F zP1&_xITo9Jil%%!@xRrI|F+Fk#YS*p16DcNq*kSEG%etMSHf z>LfSjekICl=W?CzM3+os0RckT^xKqddAAbz_!hXxBeeMmXu3??m_n)WfidACvJGi- zk?;yAl|wah;Ey*<*)^P-7=awE)Ep7M0e+LW&RW8ZC$}cu_$eLZw|Pr+r4;y)(%&wu z$qiQyZ;25I9{@ZxkvC!ugrB@|r;m9uZ1Oj0bWIvzWg||$tgVKFE0JF4iew(^5Xavd zrk&v=GHo;Bm_O5EhM_iK^hgvpDe+Dm;Bff)Ice@ABJ<6;gB)Sf3m0;VKBL}F&crVT z9{DDI5gy8fF3J&Ve%h-}-7|tFm4&0b3}IiPLP9vS8-P#9jUOaqAae)Hje9&r4YRC@ z$(z~>V-mM5=rMWr12La%o*`O zgjtC+=0%tofyN=URizu4$M+;aK74lytJb%|>-Qr>I^#iy| zk^>Vq02mg7umkbXj?+bd6RLmCn|3NYc1Ex{(^!*Pjv2U)EKMD0#;6-O>Jj}Wo#T+r zBxWLvjWe#;Sy)<=ZtNY23`FxV@f?L9F0}Hu810xy=FSJiLd{6%V-l8tRX&t0v39r< ziD3Z9UwxA|?OB->F;kP8J5*Z3*(J5}rbfyu#Hcjf4Y9^1Xwk1m8hIHAw3mLnEl}*g%W^We$< zYzMuIw_Rm{`TgtA^xa7iy#w#zc+;z|=t-)UZoHcCnTT23wD-U{m z?fb34f8Y48BkJF{zVV}fet7iU&8@+bjh~iG{JJ=>@s7I8F|V`+Z+m;_c{}fG2wd^y z%fCD2x2?f>mtJwf{kQ)z(Bs;FRZM%bHTZ4ocQ+sMg*4aOz(sE@`bV zY}}Mv(fr(Xt-(HDz4OcwuP$xeaomHC-oB_c_}J9*|NP0@^?@^Q{ME+gm$U}Q-tw!z z9MrGA@zOJY8dzV`8a#Q(M^kqnepBOLZdj84uQ{#3rYXIGORl{>Q1@EZU(cJ_8a(o^ z2QFCg{;iE$&-X3fab9b%c+iMbzW)67z(dc>&b_**HF#(KRj)1j?54(_y#H->;e^)U z4KLn5I#hLC;N2xNt~u${*5FTlJJ)u)q&{%#_Ma{t7i|?{2&`kUyiY@{)X{ zkB$62^TMkG!TX<>^hR!L@b8};zWmtJ>H{BM_HlU3v8}-iQ|AXSU4Lui&u9MQkAKK% z4dy=Fb>1JpUKIG_M~DC8&ch)8rm92k$U3>P;r$ObU!K_-T-PnVX3+`P2hvh@-hXA! z*5FOAy>ac$y(v+wDJ{TZ7{xYd-djyeg2pZTz>@ zp4Q;$d)~g_#1C%@?Cn$fMC!LKLEm{do>YI|RgGWVee?8}{@D_oU3kW(zny+_<7*F& zIN^aWT7owocV@pmU2bbE+tz8`qo20~-x|K`lwDiqH-3HhpYneHSxfMsesBD`Z{OP* z|FpW-i^qM^5}Y^wm~Zr2zgzV< z@Zb9`v(vC!0v{ap6)2E(u-H{Kr1cx=39{cH#Wr49-j~rC>KuhrM1-F%)zH>=q*X;|Q z`Qxuzf~zOAp7hetC5=~39kKRjt6GAO{`uHz7fxB+=znoj-l_Ms1gA|qYvG4)+|t-T zd+MV6ds~8~eScQ}P{!GT+6TvPoqA78a6tBjO|8GarSbKXE-$-lWlM0;GkI4((sNE@ z(+6pFJrQnsaNhdXSu-049TE;aad%7b%xiWOoxHuiaq+S<|MgRZ-#q2qpOqfIurV_I z^Idfaul?!u&8N3q)foBtug2bv@O7U~J#0wds~TUOHS(;#BK-E&t{1+xq9G8x;G;?9 zp#PI!O?YPekV_k{_WZTBH~5*`Jgext&zA*;JU`g;H-x8Fy!-GU{~8X=nE2-KFTwxF zH-A0orF*Vv?0Lv3MMt5$c_*Co#Z%?CH1>L9{B74l9*6DiJ7V#L^^K3ba>S{JKwgz+ z*K8}?x~%bUH;=yK{naf&>$(HZoApRT;I^{s-hbtxmf*U-?0$aG(>DZuzw(%oe_GQL z-22%}D~g{AH!d0dWS=3ZuhG-LJm-pkUK$vF(LuL8iu%0b9OBFHb2m?`@Tg>H?#zQQ`_y2!`_+~IO2#; z`p(?g5}cVmBir}V)s5jlU2tjHrk3D4xgURW)uGo1h8}nN=XY#Id-_e|+gpCKwDE%e zr#zAJ4%%C8%Zl7h4S{LD9^C7$_gjL$KDV}Varxpv({~q7os0Ih?#>&3`T8FgHD2=N z+f8%P{;nSS+RYaovLx`x+vnbP_pX-Uzu(_-`c0QMG?qPe!_i$@T7u6$y8W#8U!28mvk6V^D zp5FPM!D~CU24DYhdbjuXMgng=e@4S$us3U#-~8`yo?F`3^|1HOdja<7*XfT9ezdYS zuwwF+AKuXy_VByA&mZ#1je$!x@16dzAModN-Ez~8#ep-noPGQkN3{lL9WpWhvDaq? zp8TxyvU!7AgR}eITrqI&tU!4~>vsPMt--gR+;m0eb@h$^e({2-X|S(V|K1zC;E|ge zFT1wO>BpVc8XWgvUH+rp8yf$9ZTHlxC$$D2=yLM?SKb#1T)pa>?U~bBgFUhf{C6!~ z)VTbLSNnWYjQnqY{++^eZwy>HpOV&G! z8mHfJ>Cj(Z)*5`Z`)MaVbIi4kN8j_0-ltyG8hrbj5yifzB7uJfum9}$hSuQxnmf<@ z{G}@bSB!tU2WAHAXRi&-}wH}1^4Ym39Q#shu;t1vxeu0J7bqB0dENr_w}1QO zq@B;6aARZd->!J%yWgWfdVT4Hldioeu&v>)pFjUuYw+4l#i8drO$mH4|E6PK__8%< z<*O0G;90NSa`uJDQ3)u$cO%rp^+vBRFyDIk(+*+n+`UO){r!_sd z<(($~*E_bQ{_4=@B(<2SOW#K7v@r)?wBVhld4*5Cvuef>Dz$*Ak27`8aaTWb$U9B% z%vyWb&c&ZL3a(%BW$MC4?98iPe%!BcS2A@A zQ|p)C{^4nFH{D$S($)#*^jE3%O#OnX{y#qZ@vgU;wjKNQZHHZYq)IK8eBVLpH6Qgl z_u99bf@|M=s`u{>a-}|=EVV%LW$MB=zX=`vR?~tHrVPkAx6gA*8j>$lmzO`keB+iT zU(si?8y`DdrCO5jyGULA@WbcN+S0Up^`fCKAAY#XcgI&OFH^@p`mgIdZD}eyx6^kU zRv)Qwo0+4224e%3NKU8SyM>K9Diylz?lg3V2rANSQ=>xb`FbtI`v z-%FBOFZnXH;KF&C&%D`mb>Oy#k2$-$;;LBkWoq&E*B;sZMpMpXSFL#Z$YWJ%f#l27 z-N#gRIqHq3jJ?64NrMhnT=|*0bQ@BeC(X?||MjMRvw!!SrO#$5Tubt0>dM<+`TC|! zO?iv&o;~T}qg<(5lBMqWlI3M;!*P+TUU;qPrl+sZT|2R_!fj^i()XEf{lr(l{9RL7 z!|TDB6Q5OjwUViiGj;99hc_PayQaT9f9m$qCH)o8lDZ{XYQ5yk)WWY;oICl|rcbs$ z?|XmCF$%X>^8Em*oBiRHmv3z9`tRRg-t?T2mE_CR9U0zhAAY52+UZkj8h-Ci-I6TT zFZl}PzMu7Y_vNOtkDs`2&dv;#uO<2Z9+Vp%s2;rcrKS@LGwvRB*I};I$CIV*_&cPr zg{f=r`Q%SWzSMNnd0iT=|H!X!o0<9rQ|n)=ICjE@roh5sCC{fHe6nb}q%Pf_By}Zm zA7^UAVg7IDzt}XQ=%@)-E&M{&LcQe6)ZK^gnf!|vno>8+KX~vBIV#^`$(O0cgWfsj z>F1knz3;%xRrSZaQkQ<1B(*^DWopCb%YOD=bJJJn?YidH@@|S}N&Wv?I}@;)wy=-? zE6r)rNKv|)hz3%kT||bPxgt`jG%01MC>$a}ZY7eb5RnX#De5GNia1H7Nrsdm8e}Ye zYn|af+F@o(Ae4zr^R=dR)( z8=y3yf!t*eB?o&Rdo0=vhmADkWz2==e*qiYX)6<`n!n($xr?r|#q!+dIm>AB>XT1t zJEe_N#{?$iud+BDz(j`G}WYX;>{~;U#Afc29f+8mPMT2c zr+L(&`9?ob&aY@A`Cn<<&ZX)h_2W;m{|v5dTC-7uXUnDW%3p!w7`i_(14kMmZh zv)>)=7&)nXST65Opp^3~n#%RdrQfe^Idqhr@m;s;vTzr_KcY1LInDV$D2vkbgsOzg z?%$Zgej&LoQkP}GbIXP0zku#suQXrQBk=)Olh~HWzwVkFtIspFp)}zI$+!F5iTuCV z2aZ4d7&-6>?;i#ip8o~ZqL$?p$_E%Wu4linsp-o+Q|D#Ng&n_upq9s*gr$Y4aEk~c z`Q$Rlwwy>RF{_m2Sxn2&gUJE6`TZJ;!gc~xS-a*rX~i++pPq>=s1sb5P@3?Pm=@~~ znX;D|DdS?AlgjUkL17kwsy59ruC}SnoT~PP`3gegc)N?-jM$b_)8Q3omZUNIJ-Mq^ zsPOkCi^6tlnxCSSk$8extLyS$_iBCxZ77XzrnLUviqcF*T)*1B!?!=b`jlpIsaU?r z>oZJ*Rq+gK1z8?#Y$cRKsrw|3RZ=@bccV= zxKkS6LTGA|gUhRn%s@@ov0{GwGTTs^MQQ$PsfW1Cn6@4~89VST?+63eFQqo~T^E^M zWoqnm$1GIP;Wx%x>X%aY)3JB_uQ5%&pN6vH`tiz~N@@HnYI|L1-q!2P!%UYV&LqK= z6s1{|YDq;|-p*qhC%!!En{ULkwV{+lX=ANrd<&cDkvcr1a-^U)<@)7Py^T9nZ!jI= zMrGmewRxp#d_(=dCbn%l>xO3BU`8fe*zHW`w?- zawv^cKG*GilZjbAP3OdjB3^6QP})xEIkTv7@r6wIrJlK~qxik87T50^N)Nwi(!0gn zUhCJ?V#cp;<7?`dQu!Tu)18Z$@Zn>JZND$L?x2)IY4ED;ifu*AQ|$vyu?m9yOKCf$ zGwn9V#@uE^C&UNKFA-dWQ=0IW9FmrA&gR`=IKy6L%pE7rZ%7KyQ~0UQ#if{8)|)y{ zzeAi?TX4M+sM@$~Z0oKP#!uU6=7i<^^StpD^-Af31GFe*)TY{c>%adu8X8F~%Qk-Srd;c>6$$(u8-ULiI0Bca<>;JFj^wYnSjc2G=ct zs^=~&)kwb27(bCId0RSwSKa&;>Xy=Z4(=8q519Drttzz#=p4LcNu{)%Qg;s@qrwNw ztJh;ywyW_kDp{1qzbCYX9&#K;qwScdtTz87a;G$l($ATt3j;XJ29;xg(c}%;qqcbM0rf9_JsBT3o-BUXcx)s8r6p&Y6_cu!Voo(b!D=whuMNR@{F~Uum$bee zgg&@4=TpQZ=Dm&UyVleEONV?)vj{yt$bJ5k+((a?I`1?ILun~~)@_U+qAiF_3nI*d zNUf=HYoq9%xp2_jsANR=SsB#0ad zB0z#jjvyi+NCqPxk&XJ%}$IWb)ITD!%`mQ-y4x&yVTDwyimTKdbyl zK4JgLC+wg3kPU)-9{e&NyA}V+$Zo|ybD~@Rex$8-?N?>8qk}SkuAChim`OJNFhdjF z@^@ZdG_N0LI5IH_^bTCMe6?GspLZCYZid$m=YFr}A<(P-y&h><{_|?m$^FJJsV+}X z|Mz-iLLi>r%-`#gD)aQhf3N2+&`bTj-co_yo!{$mCpY9iwEewaxFA0@a`ykGT~-V9 zY<{mt<`(7E*Z22&UIM*1qDLkzXGmhdC{?i`DW7+qfyJB5e2U;ZEIeDSYl!Zmy%9`} zTruM}I@82gd$3uyoRXQZ_7O7?Vn}}6#7#7M7xm=`?4}2y+dvr{XFb%9?84&Oe2h)r zO@^XQfak35xYlqAmpyJ_Owb=FcNmW;VvUe|JscVd9K6x|4udQWv{Bi8)c0IPk#|+ub%n|4S}D53)i-ZxZD8ib7$;dq}x#N8q49++Sx7 z$x=N`nsFJ2mM}1S?S>q^RcLy18{;C{@ySvg3A4B1Tfl1!%5sB*Yb=aKoDk7H32mnW zpmqH|%s=eI^OKrbuFT97P=8|w_DxlI(g?UyDXxN{C^1=Ghk8Z)Uc@8KlF@?l)6*R6b zg=+pxbZVwUt#JW{_Zx{Q#l?ssGdgzdT!7Q()??tS4osdp0rEZ%kx^fbGj8MI?@<$+!tICDZaZh|;mm+q3R75NiyVya4Hmo!F{)0H?GfF#KW)>=OzQVLAdbj)7R7 z9*2PDK`<%ZgVieJ%>=8T;lq;{v?M0s*~?8xHc7(P)&RJqrLJGSS=6J$);HF z=PFDOslY_?PDN?S8!+r5FAQ4p2zufN;Y!A|WLwqZb?7Z@`J##`0c)YDmxDci1}M6l ziPK7R5%}z^ic_lIo*ylu5#b#2)mG z-T@Qa1|(P>L_PUIkm}`TNIbEE^5~&h$V!C^YZv4d5+K)7jis!!sO_Bwi#R#VR}01B zW6JO-y@uN{S0PV2%<_&tn6gR_Z!UdA?ci&WQp!M#?g)5Ag+kKG46=#+F>6c)G>;bG zZ0i{;)Kx@afdh=z93V3zB|(IVf@IrA47J&TK$B!xW{X2cOBvNS7oaPl5Jjh_VS33i zq>sLbmnY3}Dj^Z|<9(s-*?`a;@8P?BHo9v^tHcFexZqR7t-K7;4hfplf?A#uh1_q z4Q4tQ(U#F4GrUir{KhdzGjdoEeh)fdLJ_gO4`Ni8qv-e?EDL&u_iupxQ|FFYcJvG zkTJm7eKK*E0^hC8Z44~|%`)P|?x(NL21!XDdL zY{_dtO^+c0hFn5K%t(lKe#cezA^7^wz*NH%m{I5gqtDk-<+2waZtq54hgfKhIgT`E zHz+Y#U|Hb6y6Qm{GMA*Cv_&vXcwwiv(88a4>)F#1k zl^e=)yAYI6gv{ZtkhN=thV^)O6mEe*&nq-nc4Ba336{l=f<)sj^j5_p$p0D6^%P;3 z#0^Bcu0+7;^SBpu5Z22hP^93GPxnv4V8s($EY87Y%)+zteX%m<4>YZH$I9w$=&L*o z8`Na5Zb>493{;S^CKNqAd2pKe9*@cY?zfNoVSCP16ee}U3WRc3K7ES@bZxs@R0? z?2~x^j)UQ&iZQ~{0~XqL81VQGHgrqj+f;vy(5S|o>`j=SyaRIw--V%L9rBARA+5d# z{e!Q-Z?_k8UEIOUeuwo6a`y^H!q?(o^U9|>mfQLK6e9`p9& zsq=NriYh|2wLI!WCc{Xh9%t1KLz~P9KfkjIkJs$Qp}F~(5&acTV%=z3eFiau&0%qR zFno5^!LcO+8+9#E(!3wD`lcb-EDI;AWZ@?|8Q$mHuzqVgw*HxfFC24dCtN_p#;MqQ zUmG?lb*Qs<#M6~y;PYlYz8`#oMHOy{@JT~X<{CJDJc6NHbzqz0i1|Sh&^C;QrF|4) zp1(xXp$bg-W`ka*SJ03v!L9k*koa{d9^SYGxm)*9>v9J6x1zCm!eVGgTVdGhM96z= zf#IJKU=8b!32a4d)r~{=*chBBe1WFg2o#PffbNIa_~b*5fdn?Zj}FDSU0KMDlt$XD zI_TAV!tZH4_9d$0gu!n3mgz&XH5+y*TA04K1i>3Uu`W^va#u}}-nA1-PR-D6m%v4G zO|xvB1CFWB!o@GAu<=PH_SAbo#ax*9OhMFSyb}}ZHIy(1jK47Qrl#Up@ zsDo)+V>LiCvY5?`>_2ttwRR?D?Acw@OW$mcgdwB11~~_ta!0vi-iE9q#X#ab16;lvrF~QvHPoT}XS&E-`l(m3>vPhVO5JW??tILfY_HtR9(u))j63}FcX`wy z1$A|GT1Zj4BBL1TN}8_dq7DTq!bPOS$$&~pX*I&d2$Y5xwV{@_hj)ueYs+%Axdu{w z>E^zGFeK?_NszTHY-@?0kPK{_$)|EZs?S|X%21J9NRvO?-Ft|RJjs)MD$9}0edr33 zByD@hfu5?PZ!V-r)ek)zBhLP(2$_QtD! zB;Oxxk8UFOBcqX(NKz(Ag(Ovyel81{X`GbB%OlV`Xr;%}AB#iFU%@X+D9JCM$P#2s z^i1-Fj`K_qFB^ix?(P2Ai<1OGE~x-V0I$a^fm-r6J&LA?hPnJ&~n zt+&n(jQah9q#-2fk~C+f<=-bCwV@F>HR6LVOZny2BYJ|osl7f)1|%6uz_#Xyh_tE@ z`3E5k8qA{Ig?z0LwI;G{H=)7`L@n_s>Ad?A8%2^nR}xCz7L-Xg3JJmXI{6f(J(v{v zWkH&Vv}7>903?S*@?BVtQMC5;rs1);5>A?(~61<6?<&se}Zaj61vsvPjthVuF zjf=F#0T^Hjx5X#+A8n266lY5uPf-?I$K=FBOPnn@(HuTnN9s%pVob6naeRLkwDhvX z#qQz{p^oK$HM_Xbnw)nU}v&}rvYK!h*jWdHIK4ClwiwByMVgoHnw#4}HWKKwk z8BejvF*YlJUJ^*M*a9svW?_#GjEql?i?GH;jf@{h9Spbw!?D(Jlwh_+cZ`o?m1b+4 ztrug2e59Gxp~g-HTAVee8A!nyZ80YrBK;-I0!}zF-o~yO9Q~XXW^q-x;kcw27aNDl zRcB7OdQ!MKM(XP?VYDb=Yg~kdU5JUdb<-iHIV)gvR=5)*+-pH@q0r@7#0jt^;iH{u zJH*FXoFrETYF)LL{l-z_hF)G?%?35&SjUg0AkM6`w`H6S@$Zvt0}4f?H8IHsT1Y|! zhohr8JlfLJ%BWt}gkI)^-W+T0d806pJ$cZW6D5v&$2p>VnssIFh@>%zHcIAk92IAY z@Jfn~=c+zJLkwhpflIQPnGzmjP3SKmRkMy^JDsX^3=bbmVq$WFO@v=w9UO1?)ZS)e ze`5LCNb1bj46uk)Z*#20i9mCm;vz8coeTot))_BARwcm{OQOv(t|O0U8>Q%lRWF#S zb0TZjYYFje8DB$jHXh+gL84|hj~vOPUcrcA7#W`!>$(^W7sLR}L4oa_@Yd0}#Ji~| z$hjf(;Jc4J5t$q)4natgB^aJKyAKsh3WpQ{HfEkqqONPzVKk{jE-t?6F-<`(NQcbM z{-HR_SY?uMbsUES0ap;rDZ;6sFi>2oSie$Z_I{Qqo^2Hz^Yiq=VOMZ0l?#Wa`0`Y^ z7}Lv=lmpX|hY(MsQ3_uo&$1~N1tG?163^X9{Vh=#k%ZCE4Wri$Yct11ff{U-36{ig zSFlqoK}J17pB`NkbT_^`P>eMy+D6e9QLvX?b%=d4p!mp0MpH^3y<~y`S&cGTOan%R zuR`X)+#IY!TysJFEIipIS`zz=9L0Wt3loPW&WX{xu2W>BLGEs~vAae+Jcj2G7p?zT zYhsL1jf{ym%Nar+RGkH;mo+hw?_d%AED3z`qGXO~3%^hXQj*Ym*Z7!-phQcGH9k2B zgUqeY^nT_Dt4=YXB%TliCoXaUxUM5n^>DEXym~PSg!^@qq+cL{A})d?GCPN-z`6!T z62*(INaDF7Hi73_;Yvpdvl~u0DL&E`XE5}aFf*udV4`_!pG5AKB#KNBsycJQOeoCZ z@kzu@7&k(`CIYRA+&2s`QLajaRHxVk+j!?xtJ|zF@ajY0unb9}2uoC=#gY^pkGS%E zlzQ<+6JoQ*2p$e%_-J+y{cXT8mbfTew4nAhzyuZ%h(OE8`vUv*?15 z0m3z-(C08z^efar8+uX0Aohym9ErtNYp<7+C?&|2NLKu#`Z z5MvA&+t_#~CeWP7w-8`st#O^LF?`_?2gHC3Ta6lPl2<-O@Boa*02GiIiWq**afxP~ zSRD`^yLzx^ycy!WAd85Pb=sZix&wtrn-kraC;Ea!pMkJ6aa*TIB9@9^Nlu`qd{;|M zY8q~iOED)k<<1(Nlwc0GG!2jEDl#kbX@${I7%{R1KyLf+GLyHbiz3v?IeFb zdu|vLyi>zleY_aYu{{>B=H{HRy6AKw*=*bn<`D$%0Uqa{F?BLI$xC`Ym@tT>wY)TpEQmz8ylw#G#8&Jrc@1;#~xy@)fjy-B_K zU*7TT##G*ZOpfJ8Lw-WV-jDGhB}S77v5t(hijr*(F+grYg1qYjN!Y@}a!d?~)e5%H@ieU0dc{XrV#pH9##$42YHr;+#T-L%tc;7^dLafnS`p)) z)Qf>4_`!^`;oDXvJCMeLsGVWI;iTHtXzNQ8J?_`DKR1 z7B1BEH$Wyy@V|KEY&@1nTGJ*?j0aHtLTVEIpFHm7Xd4mX*9ZT98V};@@BdHB;(F&U z=LG{B;M_BhiI0n-BwIx5)?;~;Fj23laI$v`x2ms?Q8lJRT`b(#Y37MdK7^56bvO~& z%Rn0me6hGTH2WJ^zA_|;;b~xb-y_h%W?ADEv(WK=Yp|f;1`}21W|&C;x(Z#S>D6N;?>wm#KxILzjX*m zpCyT#NQh6e@E##_0%DVbcmldA(i;uU#GQgtL#RZ5vu>i#07GYX- z4K2Rq$Yyz?(YU?3$WEHNZSF*h4RU8qam{dqc(Qepb&H(UU}MA5iEwT+Ix*s{u(RfF zw?2yFonZ7-(hXF&yi4luqXDuZ@COKA&j{!Qw zF*hI^>%cfNqKe*-AYo8YMV7UoViY<5Ww8!4NP#}Pa_+-8iDFm;Ua2fJKjbEtqnn%Qh7d?6@ zmUTKP)^<9`>R_o}F`UvX`b8+-SW`zl*#*aA=iY5y8^n9~&gUvDy_vc+h`4S}}Y5Pa*!%PD^62BU)#v$URckxmyu(pCT24=tWUy<3y=nuKG)3Nst3s)SY8V z+<7Gn?m7Z?-Hk+*BiBAAA=)f@OaMKT`BfE0ypCrEej99@RO0@1a_id;gCRH=9iYFK z7Ig_Swj)0XSP}(Rg8Y`ytYdT);@%=S3WZ8cmy@C`-7`b4&cv+=CRYnOr_MBpI`t0j*R4~33hD;`0^zCn$5=GU z_mbTL$)>+wWk^2^m-Fabhw&jHOjM^*b$H?-STJBag)iSkeXXD4?400WLps8cjxebM zpbmiA18VQ~=pQQ%~_V zOY_%boSVy^36GdhVM_jN`a-Q8_3P5X-`^iadoKOSw~2p~md#Ob-l92$`w5C4Ckpq~ zPlWpL2^Vvm4~6^imBu}303Mrid-iv_>tQh=VgSi6u0-SJmd%q%6!H1|A7$ zzrC9oi*aFrM8YF|JtmLr3BMj3C0fF5q;ffxOC+3MM_f^EX52G;KwYY7CI+L}XK}_Q zlX<`|dHmcLcY+W43$m?9`RQ-2=r=+rVjsY=vaexNMb=YEXd_z2w8{)u;cVE@!svS| zdJla!Ly^D0a8>55mYW}A#VvkPezPK9!jGsr%X;OOkCglm6#gLQufe=EbMvFQTrNu; z^;k~&Je%QKEMMED!w*}Z-8>i!e`6Hc{S3d%a&=s?GCuHEZyy&1C&;c=WXm=us>}F# zAad%-b&UJ^oMnIeyZ1L%>`q;G4PE*0diy%%gUr@M{rdFccBJns8E(MsHFUMGE?xrsN&BZAXV@!H6UHX{7a5Luf z=8WqabzF`-jAWc!30Z7%usp7(Va$W%>3RZwGt)Wz#3o4{-rhoq{@M?ng#J!vK554T zhM~5lOGX_liVd#ua#E4^XF-3KZRJ_sy?s`J_RF%2Y=05MZCKXCxh>~*oHfn?oZEBm zz_}ymK+eXP^3i>A-4pdgg}QDV>#GNYI2~oUGnZXBcjerTvmBSrT;k5LyIHXdI$#%m zy3^B;g}kRMb+&NnlqLy(ORz5KZvw-;Sx+C%L7e+??#Ef`@OSBO-oltH^aQc&I2gof zEyMk}4CZXe%6{WZMBX-CeKuRM;X1RGjXG51CZpd=HoMnDnFD7#G z;*K81<#5h9+QrO|ZkSWeo%nc+8B zW|~XRt!-WyINM&Pw0(u)=`1tDC1>0p^}ac&@RsFCY9{l&>EdnW+zK=L5)+y9E12Qg z%sYqkT+Z`2r*W2k`3hn8J~6S3^l3lC^O=7E=Y^aXaej;Q+nnFwEcN(_Cn@JyFwr+y z=S^jKgU82Pp31<^h{B4#Sj~LtoRLcLB)o*ncR4TRyo~dEoZsiXoU?4xN8K|te1E_? zz#9kF~>wOKjK{&!kmtB z{Ua_v=DdpYYR;c#~=u^%z2F+Zj z21Lx^%R|GS^Ci0loG*DGp!r{OO_@zB9iW8wD`*{;pK)H#c?0JRzV`$FIm2IYmb(3L z79q#ngf+k*=0$>ynCDQ6HG2R9oHjH4OD;EZ&JjNwE&$lLl6mA9eZcV7%)1G)oVU2- zy#4SDo5KdkUtk$I#|HAv`Wu$9bKb^zJ7)*y49+_^JNL~<_C*8qHdvIVG7Oy@QaaB01m}~S zrM<1(bsF!RTq@BQ!vb{MSd4Zv+?mVMoX>DR%UQ<1d5)v|=m5yC4$#+0T%}tK7vu7K z&W4;{zu@3*k~fp-a@+*8Cpyo37dT(!e2Mc7ju-GhFr3L*w%tNse!7h$jOE(Qi-a+Z zwVHD*mlbGQ%=F6){>1qT=c}B5<}CI4>2KCt0bv?^n#6MGN2Ie1U+3}{&cAa0jq?r8 zQireDZ+EGHdj=T?t$Ase=2Dtdxg&tI(L?>zK~dBt6Y@TVTj$vC7jjG6b5XC1Aa@0<18x{!}i z1%)USa8dCRrJB-AaAe+tGL&<|G>`K~Pg49h<2 zl2`lBTfJwX7a(7oWu)J!3>ReCLN0l4m)-dBSCZ522t{rK!-ZLLjGhBh?D!OF7ePle9HP=c- z<^jW%n7^`1Mw%$rT$po&sBx{IRb-oWVY^wbs%Kdqy8JB*L#`}%d*GtvZ(%T8jb*BP zmQ&W%V%UiO@2SXdVAzXgYvdvC++tGZhuMn!1BPp|Y%S07-nrMRE;|k@dIG!h^~*Y5 z_N>Rp*TbBt#sgn#r?n8Q!q^K_^w=4$$2#hJ&=YR-#cGBB7Q+pg zx1o#QHD>VR1*46#ii}q`Ubi!UW0#D-JR;2O!ln|;BYopnxYUGso4WYr7>kuYm=yla z3^!w5Z_Y@wx$eWTuS;GZTTFxhlMGp7t`{`k6m-5R;`6F7OYkmM+9}bU*H5goxl6CK zt9O5%MzE)WF`Pq}u?xt9%ZSZMMdu*a*@E@8^rSO?b;7=SEHC4>jA4J)(<-+vT${P} z2BbYUMaO=ITeEx{mkxa$VZ>vz!ux<>6Z5ro@%lTje}n&u!7uNt-s1UF|J@#fjAze+ ze4R_WuW{&6Zi=D5YBOE>i0566+Y8{_o->D1WJBKdF2`s;LXq9ia7UI2&|jLT(Wsz!-o77mdA5QA+940V;#L9&$$ohAkKYJ zZ=QswZ=aSP<^p}(Ca@am*boH&|gK3w*C0oa|p`}pVR!VJsuZ%|?dJ%p1Y77DL|IJ|-je(;`Ou zi&+NG8c6=V^|f9k%SLgI=4|DR6lTyyaeXxB7|yYrrG9_?h>hNg{%MO&PNI)H8sohj z>x12ZAFvILxGr_I6yL|lEfdH*;6vKYWjwc^z!~Wl*T*oN$eFhs^4vF1VmiMtan6Hi zMSR_WWpJIYWj(&U8P4A&a4{Jds{C;w+JoJPnHT%@z5CmILqmO9r10;^;uE_?@;uba z9D{>^qADgu=zhrjJV`y7ne|^_{(61T65rRk4C?W8f{+VieuM>bRx59RrdTP6;S%4m z9xnHDnPRm@3gyN>lD3j*23;_qK7(bftf*j+t`oT4-pyP;>+$8I3Ot_R<1L-ns_F*p z&oZz_>SukdKZj4^4&y0&z59EIcI)pOs^4GGP7AgrXDpvmT*TJK@<=hzlQXtYsR*&Q zvpixAJ!?55jws>z$_=(bH_#u??KN1iBKofp5AN+=_^jq@7 ze~AZwu8|Vz?W3MA>K2Z>zcUXaec_9_4kkY#4=Ub z>3&ao8e#ZuH~iQL9eKquUkmhj;N>e~2tBtrBNiy58Sie3&OeCpNO*56laxW6AcxYQ zOT-U)J;hJr!Jk+B@_yFI5!B}TjDmYp2J6dtZ*uzaZxynGh;^xfx~E0C%sbZqUO9Bf zuujAux`%N_EK$}Qq{KgO)pFgI&vT(Ze>`NJXzwhSNM5X8CfO$X3GJfX%zWrS*yXAJ zBp&>E^q=clEk}2$Yl&3hr{`j7uP1?4!# z%Q56qrOQMx4GGVxGD$ha4YDW$xfJs=>+=*(*f06>h^PLXoKGx|3OhZ=GCyJXUSf!D zeL*hsjAMRESR8tSSRUgUdIC5j7AQA!mNAqM{NP{BcqHr#$RuSD56GdM!6o7cy`JJH z@!-!Re#-Z7JqHo1?U7;(lG5HkAplccHKs=#qHfO{}l*3%{ zR8)!fA21&hz6p#ZWe~R#EQj(e^B|tk>nWZR5B@yD;o1xF98P_GC+zeb&nGE>|LH7` zv>1Bwish3Ou{?BLXB~(obe-jlxS$*~+!afgDqSX!X-M)M1YjwLxIq?WZ7vZ{==Ky( zi3fik@znPa^NHmKmd$Hy<|ho_Z?G)V73jz-j`=BJS?FmtLXRQzcrlDvpj^z^b$w%_ zUFV;{cqHtZ$|PkFC&;0U<`VIPUQh9pc<|>DKV_fZa}aTT-(vZ^V)#S_?0|?tsP0KU zF7u4#Qz(P3Nvs2761rkIBQ_{+aF+2@REhS_G7Sl5fRLmN;s!aCo4G_hq1RJ9B_8~F z#M3x?ly@ux!t#z~zQSy?@SWw6Y+?Dt@d=8cXE)0uhS0N-Gva}=k=YePd5{YHRTz(i z^HxZbA8~>V%7g%&qVXNnP@@W;pxBZ518PJ#4b^eqJ zp|8S7J+{zSlwrgQzm4Y3b0D(vvEe8P(I}BjJ3Nu zVaFAwBjLOpl9WRnA&YW1mxwQPdy22bgFmnM<~%ErS8x#Hpon~8{FI6ihcVNqh7(>~^hY**$%!Z|ZFNgaqQ^q{QACE|^C zJjGk$!Jk*WJ-#Q(Bj|{E2J6amT>lGY@U?`oLtT)|yyN~alybnJH;nZm{z5Oqh+Pnu z*U^rA3E@$#F2A4oknpZeCaD8)h8~owxkUWYj;HubJoxj9fA070o`a9r2Snu)`=?dJ z4k1P}SQk<%bmlqcpI#|+USM5_J9HlAjF_Pu7OliRw@P780P`T>94(TRMO-0|(u+&P z8~Q!PTjIf=N4)cXx9K_T;`w3&>&t7*|67HK6B%y}9zbtivH!PH!PFXgSbN%%9UKAKhTz^{*ZX^=g}V?&v@j~6{0T!M&;cX z|3(>NHJf!IO@+?9`r%(Fh0aXYh4@3~QO<}P%81df_$i~18zSk%tHx$D;T4D^bor8jQ5i*g03Leg*Zc3 z0KbGd zO|Mvm&Zn@QUoJK10WP|~{7wx>kPUOuS~kU;dQ_$m8ApVy5BzfgB4e1IEE-rX#K8lE{jEm&kyc-@kw1Ib>;KLhnl+q^oqbRi1Gaj5gSMzg>(;msd zc<{t959|TYFoPd5NT^F&WXbL6MloH=NSZA9t+QZ~^hmsg)}!I=+YMihNiaUh+DXj6 zH@F>Xe=Y`Y2X>Z7fJJ=maOw2L12cI2nFl_B7dF*1O12}?)lkk8I(j?&#}7opnI2a= zo_W)acEFp)Fn&{w62Emu!ueWR2hF7~_pi}l_bo#oo;&fph`)7)_nxR@t^f{mihTCO z7*KJjyV~%uC}Nw?PVg9`&v{*hbq(6VdqJ#|@Lmu&w1X1$R0Ebc)X|p8C�TL+oAl zcshBh+jGUR2lpr3SEN0t<2?j$Xd5N!H+Y^q*6--Y5qSb=aix2^;0$2% zs}b|E$?%A8Q!N#nyxkeWXJS5#LGVGR;Fo&&WNywweUOPUbmKgr(_e27%&Zsui;XtG z55Hz`-K!6ef39P$LLGjglywy+VesP}8hDVs`nX`6g%ZhSQJzB^HZ@4m{l>V)*pYpK zdLy<2IC+ia_2Xsev9TT`{Px)u3(voH2LDQ)E&cG}?K2a3@5 zfO(Mcn?_grxtYORd#vs=c*`;@eMTK^qr@0MTmj>J6iVFNQHtw@<-{1|5_R+^bV(fQ z66QV;G?fk*zM*vahOI5vB1_JtCz%HcznN5g%f$@e@MCI>WANT$Irs)YP{&*X9PC1g zI&1*!w86s<_MmqV>qXifpxTg|8N5>s8^CL07&ahAfYCNe)R9mJAI_Knhm0|dSxw4- z#_JFh%!h>E(4v1-U8u`8rGCT!_?6rSvT>b@{)27KHa&a{0_|0p zpto0#^|;262WDmie<1TC9^h9Ku0=nl;T<1hguYbk7)xp$^M_i;cvtJtVN6(}8TgWu zE`7`M0~{;~o9`Mv;;gXK$9#k!Q*WZ~CuAxxY~w83lOIt5Uj*Zk@U0a!!CuJ8c)%Yu z!QcGoh>uD~{M0()tJV>JwJvQ{KA0k6QEHNI1-|d%jD^a?WccOBeCTKJ)n*v>V{8jK zdH?fv|CkHpVhsKG_KQ=$`&Uvc@TW4%Q2w-NCWK^d`y@;2Zd$w*uF3FGT5- z%kgp$njsrz$m0DQ-k;(556>!ih64^~9Z}+}Bk0hN5_R~h;!sDsDh_q@zluX$>Ol$p zxE}zI3>leG*YBUWiRyBaUzL$9xt(6ZFVxYeSbHJ9vMynaA>f?0<@n*d@R#XG z_?^7Vt{jX^2k&m?#rOyBMurgsz-SM3Iky3av&1NIW)3C#7Ce#{b)5eK4d*;j;{7a2 zyca}?_fse_E>&51O@Rg*aL!$ z56s{#J43e%yzm2Me)hocf-Hlvj}kJnuEH|DveaX$??>v^>G6`X;KOr#BohHkyz{#8 z^uuB1g%2m$4kUcv#^tYP0q_@`srwB6yDSTzkO8X+{z$s?1Et}M@EtnxioFDb! zhG5Ggwgm~_1ajG)n;E;HldzNfN3=LZ*A1#Gg-(ski`jY>Roe4SC}O=sQ$%nsf(hGjef!xo8y{oqk? z(tfp+*Bq`XB=AG-sr>QqV|n-!I9u1{*Gu)s12eOMKY{t-6ZpdzmOcT7JrW14YF+ii z6YTU&tRx|=%cGsA@=y8wxjYVl2^2Qho+H!|zKiPWGtUCx4`zP&2>w8Z;Unfp!0-tr z>gYG{V10!We4xn$UWtd#xc3M@tvZLKKb3zTK8^`n3(nPb6>OvWmYW&8&6pQ{f!B*+ z*>`|pi^SpGgNhUNKDr!!KMi>#$N+{O_=k9?Nz$LnznmYcWJR#~is4_dN%b!`Gk8nQ z)BOW4K7P7b8`RHKd%e9y+*793I0pn=uf

>>0)|0)|0;b=(c-P|0)+32|0;l=b>>>0<32?l+1|0:l;f=b>>>0>>0&(l|0)<=0|(l|0)<0?(b|0)>0?b:0:Q;ga:{if((f|0)>=113){Lb(i+384|0,g);l=x[i+392>>2];z=x[i+396>>2];K=x[i+384>>2];L=x[i+388>>2];h=0;b=0;break ga}Zb(i+352|0,tc(1,144-f|0));Lb(i+336|0,g);K=x[i+336>>2];L=x[i+340>>2];l=x[i+344>>2];z=x[i+348>>2];Xh(i+368|0,x[i+352>>2],x[i+356>>2],x[i+360>>2],x[i+364>>2],K,L,l,z);d=x[i+376>>2];R=x[i+380>>2];h=x[i+372>>2];b=x[i+368>>2];}g=!(p&1)&((sc(m,u,C,J,0,0,0,0)|0)!=0&(f|0)<32);Lc(i+320|0,g+p|0);_a(i+304|0,K,L,l,z,x[i+320>>2],x[i+324>>2],x[i+328>>2],x[i+332>>2]);f=b;Ib(i+272|0,x[i+304>>2],x[i+308>>2],x[i+312>>2],x[i+316>>2],b,h,d,R);b=g;_a(i+288|0,K,L,l,z,b?0:m,b?0:u,b?0:C,b?0:J);Ib(i+256|0,x[i+288>>2],x[i+292>>2],x[i+296>>2],x[i+300>>2],x[i+272>>2],x[i+276>>2],x[i+280>>2],x[i+284>>2]);Sf(i+240|0,x[i+256>>2],x[i+260>>2],x[i+264>>2],x[i+268>>2],f,h,d,R);b=x[i+240>>2];g=x[i+244>>2];f=x[i+248>>2];h=x[i+252>>2];if(!sc(b,g,f,h,0,0,0,0)){x[13623]=68;}Wh(i+224|0,b,g,f,h,c);c=x[i+232>>2];h=x[i+236>>2];m=x[i+224>>2];u=x[i+228>>2];break S}x[13623]=68;Lb(i+208|0,g);_a(i+192|0,x[i+208>>2],x[i+212>>2],x[i+216>>2],x[i+220>>2],0,0,0,65536);_a(i+176|0,x[i+192>>2],x[i+196>>2],x[i+200>>2],x[i+204>>2],0,0,0,65536);c=x[i+184>>2];h=x[i+188>>2];m=x[i+176>>2];u=x[i+180>>2];break S}p=0;continue}break}x[B+16>>2]=m;x[B+20>>2]=u;x[B+24>>2]=c;x[B+28>>2]=h;qa=i+432|0;c=x[B+24>>2];h=x[B+28>>2];f=x[B+16>>2];o=x[B+20>>2];break A}if(x[e+116>>2]<0){break O}x[e+4>>2]=x[e+4>>2]-1;}i=g;d=qa-8976|0;qa=d;n=0-P|0;R=n-Q|0;ha:{ia:{while(1){if((b|0)!=48){ja:{if((b|0)!=46){break ha}b=x[e+4>>2];if((b|0)==x[e+104>>2]){break ja}x[e+4>>2]=b+1;b=y[b|0];break ia}}else {b=x[e+4>>2];if((b|0)!=x[e+104>>2]){x[e+4>>2]=b+1;b=y[b|0];}else {b=Wa(e);}k=1;continue}break}b=Wa(e);}m=1;if((b|0)!=48){break ha}while(1){b=c;c=b-1|0;h=h-!b|0;b=x[e+4>>2];ka:{if((b|0)!=x[e+104>>2]){x[e+4>>2]=b+1;b=y[b|0];break ka}b=Wa(e);}if((b|0)==48){continue}break}k=1;}x[d+784>>2]=0;la:{ma:{na:{oa:{g=(b|0)==46;l=b-48|0;pa:{qa:{if(g|l>>>0<=9){while(1){ra:{if(g&1){if(!m){c=f;h=o;m=1;break ra}g=!k;break qa}f=f+1|0;o=f?o:o+1|0;if((p|0)<=2044){H=(b|0)==48?H:f;g=(d+784|0)+(p<<2)|0;if(t){l=(D(x[g>>2],10)+b|0)-48|0;}x[g>>2]=l;k=1;g=t+1|0;b=(g|0)==9;t=b?0:g;p=b+p|0;break ra}if((b|0)==48){break ra}x[d+8960>>2]=x[d+8960>>2]|1;H=18396;}b=x[e+4>>2];sa:{if((b|0)!=x[e+104>>2]){x[e+4>>2]=b+1;b=y[b|0];break sa}b=Wa(e);}g=(b|0)==46;l=b-48|0;if(g|l>>>0<10){continue}break}}c=m?c:f;h=m?h:o;if(!(!k|(b&-33)!=69)){b=Vh(e);g=ra;if(b|(g|0)!=-2147483648){break oa}break ma}g=!k;if((b|0)<0){break pa}}if(x[e+116>>2]<0){break pa}x[e+4>>2]=x[e+4>>2]-1;}if(!g){break na}x[13623]=28;break ma}h=h+g|0;c=b+c|0;h=c>>>0>>0?h+1|0:h;}b=x[d+784>>2];if(!b){Zb(d,+(i|0)*0);f=x[d+8>>2];o=x[d+12>>2];c=x[d+4>>2];b=x[d>>2];break la}if(!(f>>>0>9&(o|0)>=0|(o|0)>0|((c|0)!=(f|0)|(h|0)!=(o|0))|(b>>>Q|0?(Q|0)<=30:0))){Lb(d+48|0,i);Lc(d+32|0,b);_a(d+16|0,x[d+48>>2],x[d+52>>2],x[d+56>>2],x[d+60>>2],x[d+32>>2],x[d+36>>2],x[d+40>>2],x[d+44>>2]);f=x[d+24>>2];o=x[d+28>>2];c=x[d+20>>2];b=x[d+16>>2];break la}if(c>>>0>n>>>1>>>0&(h|0)>=0|(h|0)>0){x[13623]=68;Lb(d+96|0,i);_a(d+80|0,x[d+96>>2],x[d+100>>2],x[d+104>>2],x[d+108>>2],-1,-1,-1,2147418111);_a(d- -64|0,x[d+80>>2],x[d+84>>2],x[d+88>>2],x[d+92>>2],-1,-1,-1,2147418111);f=x[d+72>>2];o=x[d+76>>2];c=x[d+68>>2];b=x[d+64>>2];break la}b=P-226|0;g=c>>>0>>0;b=b>>31;if(g&(h|0)<=(b|0)|(b|0)>(h|0)){x[13623]=68;Lb(d+144|0,i);_a(d+128|0,x[d+144>>2],x[d+148>>2],x[d+152>>2],x[d+156>>2],0,0,0,65536);_a(d+112|0,x[d+128>>2],x[d+132>>2],x[d+136>>2],x[d+140>>2],0,0,0,65536);f=x[d+120>>2];o=x[d+124>>2];c=x[d+116>>2];b=x[d+112>>2];break la}if(t){if((t|0)<=8){b=(d+784|0)+(p<<2)|0;n=x[b>>2];while(1){n=D(n,10);t=t+1|0;if((t|0)!=9){continue}break}x[b>>2]=n;}p=p+1|0;}ta:{m=c;if((H|0)>8|(H|0)>(c|0)|(c|0)>17){break ta}if((m|0)==9){Lb(d+192|0,i);Lc(d+176|0,x[d+784>>2]);_a(d+160|0,x[d+192>>2],x[d+196>>2],x[d+200>>2],x[d+204>>2],x[d+176>>2],x[d+180>>2],x[d+184>>2],x[d+188>>2]);f=x[d+168>>2];o=x[d+172>>2];c=x[d+164>>2];b=x[d+160>>2];break la}if((m|0)<=8){Lb(d+272|0,i);Lc(d+256|0,x[d+784>>2]);_a(d+240|0,x[d+272>>2],x[d+276>>2],x[d+280>>2],x[d+284>>2],x[d+256>>2],x[d+260>>2],x[d+264>>2],x[d+268>>2]);Lb(d+224|0,x[(0-m<<2)+52592>>2]);li(d+208|0,x[d+240>>2],x[d+244>>2],x[d+248>>2],x[d+252>>2],x[d+224>>2],x[d+228>>2],x[d+232>>2],x[d+236>>2]);f=x[d+216>>2];o=x[d+220>>2];c=x[d+212>>2];b=x[d+208>>2];break la}b=(D(m,-3)+Q|0)+27|0;c=x[d+784>>2];if(c>>>b|0?(b|0)<=30:0){break ta}Lb(d+352|0,i);Lc(d+336|0,c);_a(d+320|0,x[d+352>>2],x[d+356>>2],x[d+360>>2],x[d+364>>2],x[d+336>>2],x[d+340>>2],x[d+344>>2],x[d+348>>2]);Lb(d+304|0,x[(m<<2)+52520>>2]);_a(d+288|0,x[d+320>>2],x[d+324>>2],x[d+328>>2],x[d+332>>2],x[d+304>>2],x[d+308>>2],x[d+312>>2],x[d+316>>2]);f=x[d+296>>2];o=x[d+300>>2];c=x[d+292>>2];b=x[d+288>>2];break la}while(1){b=p;p=b-1|0;if(!x[(d+784|0)+(p<<2)>>2]){continue}break}c=(m|0)%9|0;ua:{if(!c){t=0;g=0;break ua}t=0;c=(m|0)<0?c+9|0:c;va:{if(!b){g=0;b=0;break va}f=x[(0-c<<2)+52592>>2];k=1e9/(f|0)|0;l=0;n=0;g=0;while(1){h=l;l=(d+784|0)+(n<<2)|0;o=x[l>>2];p=(o>>>0)/(f>>>0)|0;h=h+p|0;x[l>>2]=h;h=!h&(g|0)==(n|0);g=h?g+1&2047:g;m=h?m-9|0:m;l=D(k,o-D(f,p)|0);n=n+1|0;if((n|0)!=(b|0)){continue}break}if(!l){break va}x[(d+784|0)+(b<<2)>>2]=l;b=b+1|0;}m=(m-c|0)+9|0;}while(1){n=(d+784|0)+(g<<2)|0;z=(m|0)<36;wa:{while(1){xa:{if(z){break xa}if((m|0)!=36){break wa}if(A[n>>2]<=10384592){break xa}m=36;break wa}p=b+2047|0;l=0;k=b;while(1){b=k;f=p&2047;k=(d+784|0)+(f<<2)|0;c=x[k>>2];h=c>>>3|0;o=c<<29;c=o+l|0;h=c>>>0>>0?h+1|0:h;if(!h&c>>>0<1000000001){l=0;}else {l=Vw(c,h,1e9);p=Uw(l,ra,-1e9,-1);c=c+p|0;}x[k>>2]=c;k=(f|0)!=(b-1&2047)?b:(f|0)==(g|0)?b:c?b:f;p=f-1|0;if((f|0)!=(g|0)){continue}break}t=t-29|0;if(!l){continue}break}g=g-1&2047;if((k|0)==(g|0)){c=d+784|0;b=c+((k+2046&2047)<<2)|0;h=b;f=x[b>>2];b=k-1&2047;x[h>>2]=f|x[c+(b<<2)>>2];}m=m+9|0;x[(d+784|0)+(g<<2)>>2]=l;continue}break}ya:{za:while(1){c=b+1&2047;h=(d+784|0)+((b-1&2047)<<2)|0;while(1){f=(m|0)>45?9:1;Aa:{while(1){k=g;n=0;Ba:{while(1){Ca:{g=k+n&2047;if((g|0)==(b|0)){break Ca}g=x[(d+784|0)+(g<<2)>>2];l=x[(n<<2)+52544>>2];if(g>>>0>>0){break Ca}if(g>>>0>l>>>0){break Ba}n=n+1|0;if((n|0)!=4){continue}}break}if((m|0)!=36){break Ba}c=0;h=0;n=0;f=0;o=0;while(1){g=k+n&2047;if((g|0)==(b|0)){b=b+1&2047;x[(d+(b<<2)|0)+780>>2]=0;}Lc(d+768|0,x[(d+784|0)+(g<<2)>>2]);_a(d+752|0,c,h,f,o,0,0,1342177280,1075633366);Ib(d+736|0,x[d+752>>2],x[d+756>>2],x[d+760>>2],x[d+764>>2],x[d+768>>2],x[d+772>>2],x[d+776>>2],x[d+780>>2]);f=x[d+744>>2];o=x[d+748>>2];c=x[d+736>>2];h=x[d+740>>2];n=n+1|0;if((n|0)!=4){continue}break}Lb(d+720|0,i);_a(d+704|0,c,h,f,o,x[d+720>>2],x[d+724>>2],x[d+728>>2],x[d+732>>2]);f=x[d+712>>2];o=x[d+716>>2];c=0;h=0;m=x[d+704>>2];u=x[d+708>>2];T=t+113|0;p=T-P|0;n=(p|0)<(Q|0);g=n?(p|0)>0?p:0:Q;if((g|0)<=112){break Aa}l=0;z=0;break ya}t=f+t|0;g=b;if((b|0)==(k|0)){continue}break}o=1e9>>>f|0;p=-1<>2];l=l+(z>>>f|0)|0;x[n>>2]=l;l=!l&(g|0)==(k|0);g=l?g+1&2047:g;m=l?m-9|0:m;n=D(o,p&z);k=k+1&2047;if((k|0)!=(b|0)){continue}break}if(!n){continue}if((c|0)!=(g|0)){x[(d+784|0)+(b<<2)>>2]=n;b=c;continue za}x[h>>2]=x[h>>2]|1;continue}break}break}Zb(d+656|0,tc(1,225-g|0));Xh(d+688|0,x[d+656>>2],x[d+660>>2],x[d+664>>2],x[d+668>>2],m,u,f,o);K=x[d+696>>2];L=x[d+700>>2];C=x[d+688>>2];J=x[d+692>>2];Zb(d+640|0,tc(1,113-g|0));oi(d+672|0,m,u,f,o,x[d+640>>2],x[d+644>>2],x[d+648>>2],x[d+652>>2]);c=x[d+672>>2];h=x[d+676>>2];l=x[d+680>>2];z=x[d+684>>2];Sf(d+624|0,m,u,f,o,c,h,l,z);Ib(d+608|0,C,J,K,L,x[d+624>>2],x[d+628>>2],x[d+632>>2],x[d+636>>2]);f=x[d+616>>2];o=x[d+620>>2];m=x[d+608>>2];u=x[d+612>>2];}H=k+4&2047;Da:{if((H|0)==(b|0)){break Da}H=x[(d+784|0)+(H<<2)>>2];Ea:{if(H>>>0<=499999999){if(!H&(k+5&2047)==(b|0)){break Ea}Zb(d+496|0,+(i|0)*.25);Ib(d+480|0,c,h,l,z,x[d+496>>2],x[d+500>>2],x[d+504>>2],x[d+508>>2]);l=x[d+488>>2];z=x[d+492>>2];c=x[d+480>>2];h=x[d+484>>2];break Ea}if((H|0)!=5e8){Zb(d+592|0,+(i|0)*.75);Ib(d+576|0,c,h,l,z,x[d+592>>2],x[d+596>>2],x[d+600>>2],x[d+604>>2]);l=x[d+584>>2];z=x[d+588>>2];c=x[d+576>>2];h=x[d+580>>2];break Ea}X=+(i|0);if((k+5&2047)==(b|0)){Zb(d+528|0,X*.5);Ib(d+512|0,c,h,l,z,x[d+528>>2],x[d+532>>2],x[d+536>>2],x[d+540>>2]);l=x[d+520>>2];z=x[d+524>>2];c=x[d+512>>2];h=x[d+516>>2];break Ea}Zb(d+560|0,X*.75);Ib(d+544|0,c,h,l,z,x[d+560>>2],x[d+564>>2],x[d+568>>2],x[d+572>>2]);l=x[d+552>>2];z=x[d+556>>2];c=x[d+544>>2];h=x[d+548>>2];}if((g|0)>111){break Da}oi(d+464|0,c,h,l,z,0,0,0,1073676288);if(sc(x[d+464>>2],x[d+468>>2],x[d+472>>2],x[d+476>>2],0,0,0,0)){break Da}Ib(d+448|0,c,h,l,z,0,0,0,1073676288);l=x[d+456>>2];z=x[d+460>>2];c=x[d+448>>2];h=x[d+452>>2];}Ib(d+432|0,m,u,f,o,c,h,l,z);Sf(d+416|0,x[d+432>>2],x[d+436>>2],x[d+440>>2],x[d+444>>2],C,J,K,L);f=x[d+424>>2];o=x[d+428>>2];m=x[d+416>>2];u=x[d+420>>2];Fa:{if((R-2|0)>=(T&2147483647)){break Fa}x[d+408>>2]=f;x[d+412>>2]=o&2147483647;x[d+400>>2]=m;x[d+404>>2]=u;_a(d+384|0,m,u,f,o,0,0,0,1073610752);k=mi(x[d+400>>2],x[d+404>>2],x[d+408>>2],x[d+412>>2],1081081856);b=(k|0)>=0;f=b?x[d+392>>2]:f;o=b?x[d+396>>2]:o;m=b?x[d+384>>2]:m;u=b?x[d+388>>2]:u;t=b+t|0;if(!(n&((g|0)!=(p|0)|(k|0)<0)&(sc(c,h,l,z,0,0,0,0)|0)!=0)&(t+110|0)<=(R|0)){break Fa}x[13623]=68;}Wh(d+368|0,m,u,f,o,t);f=x[d+376>>2];o=x[d+380>>2];c=x[d+372>>2];b=x[d+368>>2];break la}Yb(e,0,0);f=0;o=0;c=0;b=0;}x[B+40>>2]=f;x[B+44>>2]=o;x[B+32>>2]=b;x[B+36>>2]=c;qa=d+8976|0;c=x[B+40>>2];h=x[B+44>>2];f=x[B+32>>2];o=x[B+36>>2];break A}b=x[e+4>>2];Ga:{if((b|0)!=x[e+104>>2]){x[e+4>>2]=b+1;b=y[b|0];break Ga}b=Wa(e);}if((b|0)!=40){break H}while(1){b=x[e+4>>2];Ha:{if((b|0)!=x[e+104>>2]){x[e+4>>2]=b+1;b=y[b|0];break Ha}b=Wa(e);}if(b-48>>>0<10|b-65>>>0<26|((b|0)==95|b-97>>>0<26)){continue}break}h=2147450880;if((b|0)==41){break A}}b=x[e+116>>2];if((b|0)>0|(b|0)>=0){x[e+4>>2]=x[e+4>>2]-1;}x[13623]=28;Yb(e,0,0);break B}h=2147450880;if(x[e+116>>2]<0){break A}x[e+4>>2]=x[e+4>>2]-1;break A}k=qa-16|0;qa=k;m=(q(E(E(g|0)*E(Infinity))),j(2));b=m&2147483647;Ia:{if(b-8388608>>>0<=2130706431){g=b<<25;f=(b>>>7|0)+1065353216|0;break Ia}g=m<<25;f=m>>>7|2147418112;if(b>>>0>=2139095040){break Ia}g=0;f=0;if(!b){break Ia}c=b;b=G(b);qb(k,c,0,0,0,b+81|0);c=x[k>>2];h=x[k+4>>2];g=x[k+8>>2];f=x[k+12>>2]^65536|16265-b<<16;}x[B>>2]=c;x[B+4>>2]=h;x[B+8>>2]=g;x[B+12>>2]=m&-2147483648|f;qa=k+16|0;c=x[B+8>>2];h=x[B+12>>2];f=x[B>>2];o=x[B+4>>2];break A}h=0;}x[s+8>>2]=f;x[s+12>>2]=o;x[s+16>>2]=c;x[s+20>>2]=h;qa=B+48|0;b=x[e+4>>2]-x[e+44>>2]|0;if(x[e+120>>2]!=(0-b|0)|x[e+124>>2]!=(0-((b>>31)+((b|0)!=0)|0)|0)){break x}break f;case 3:case 11:case 27:if((n|16)==115){Ha(s+32|0,-1,257);v[s+32|0]=0;if((n|0)!=115){break w}v[s+65|0]=0;v[s+46|0]=0;w[s+42>>1]=0;w[s+44>>1]=0;break w}c=y[r+1|0];f=(c|0)==94;Ha(s+32|0,f,257);v[s+32|0]=0;b=f?r+2|0:r+1|0;Ja:{Ka:{La:{f=y[(f?2:1)+r|0];if((f|0)!=45){if((f|0)==93){break La}t=(c|0)!=94;break Ja}t=(c|0)!=94;v[s+78|0]=t;break Ka}t=(c|0)!=94;v[s+126|0]=t;}b=b+1|0;}r=b;while(1){k=y[r|0];Ma:{if((k|0)!=45){if(!k){break e}if((k|0)==93){break w}break Ma}k=45;c=y[r+1|0];if(!c|(c|0)==93){break Ma}f=r+1|0;b=y[r-1|0];Na:{if(c>>>0<=b>>>0){k=c;break Na}while(1){b=b+1|0;v[b+(s+32|0)|0]=t;k=y[f|0];if(k>>>0>b>>>0){continue}break}}r=f;}v[(k+s|0)+33|0]=t;r=r+1|0;continue}case 23:b=8;break y;case 12:case 29:b=10;break y;case 1:case 2:case 4:case 5:case 6:case 7:case 8:case 10:case 16:case 18:case 19:case 20:case 21:case 22:case 25:case 26:case 28:case 30:case 31:break v;case 0:case 24:case 32:break y;case 17:break z}}b=0;}c=0;h=0;k=0;p=0;m=0;C=qa-16|0;qa=C;Oa:{if((b|0)==1){x[13623]=28;break Oa}while(1){f=x[e+4>>2];Pa:{if((f|0)!=x[e+104>>2]){x[e+4>>2]=f+1;g=y[f|0];break Pa}g=Wa(e);}if((g|0)==32|g-9>>>0<5){continue}break}Qa:{Ra:{switch(g-43|0){case 0:case 2:break Ra;default:break Qa}}m=(g|0)==45?-1:0;f=x[e+4>>2];if((f|0)!=x[e+104>>2]){x[e+4>>2]=f+1;g=y[f|0];break Qa}g=Wa(e);}Sa:{Ta:{Ua:{Va:{if(!((b|0)!=0&(b|0)!=16|(g|0)!=48)){f=x[e+4>>2];Wa:{if((f|0)!=x[e+104>>2]){x[e+4>>2]=f+1;g=y[f|0];break Wa}g=Wa(e);}if((g&-33)==88){b=16;f=x[e+4>>2];Xa:{if((f|0)!=x[e+104>>2]){x[e+4>>2]=f+1;g=y[f|0];break Xa}g=Wa(e);}if(y[g+52273|0]<16){break Ua}b=x[e+116>>2];if((b|0)>0|(b|0)>=0){x[e+4>>2]=x[e+4>>2]-1;}Yb(e,0,0);break Oa}if(b){break Va}b=8;break Ua}b=b?b:10;if(b>>>0>y[g+52273|0]){break Va}b=x[e+116>>2];if((b|0)>0|(b|0)>=0){x[e+4>>2]=x[e+4>>2]-1;}Yb(e,0,0);x[13623]=28;break Oa}if((b|0)!=10){break Ua}k=g-48|0;if(k>>>0<=9){b=0;while(1){b=D(b,10)+k|0;f=b>>>0<429496729;c=x[e+4>>2];Ya:{if((c|0)!=x[e+104>>2]){x[e+4>>2]=c+1;g=y[c|0];break Ya}g=Wa(e);}k=g-48|0;if(f&k>>>0<=9){continue}break}c=b;}Za:{if(k>>>0>9){break Za}f=Uw(c,0,10,0);o=ra;l=k;while(1){h=o;c=f+l|0;h=c>>>0>>0?h+1|0:h;f=(h|0)==429496729&c>>>0>=2576980378|h>>>0>429496729;b=x[e+4>>2];_a:{if((b|0)!=x[e+104>>2]){x[e+4>>2]=b+1;g=y[b|0];break _a}g=Wa(e);}k=g-48|0;if(f|k>>>0>9){break Za}f=Uw(c,h,10,0);o=ra;b=o;l=k;if((b|0)==-1&(k^-1)>>>0>=f>>>0|(b|0)!=-1){continue}break}b=10;break Ta}b=10;if(k>>>0<=9){break Ta}break Sa}if(b-1&b){p=y[g+52273|0];if(p>>>0>>0){while(1){k=D(b,k)+p|0;f=k>>>0<119304647;c=x[e+4>>2];$a:{if((c|0)!=x[e+104>>2]){x[e+4>>2]=c+1;g=y[c|0];break $a}g=Wa(e);}p=y[g+52273|0];if(f&p>>>0>>0){continue}break}c=k;}if(b>>>0<=p>>>0){break Ta}while(1){f=Uw(c,h,b,0);l=ra;k=p&255;if((l|0)==-1&(k^-1)>>>0>>0){break Ta}c=f+k|0;h=c>>>0>>0?l+1|0:l;g=x[e+4>>2];ab:{if((g|0)!=x[e+104>>2]){x[e+4>>2]=g+1;g=y[g|0];break ab}g=Wa(e);}p=y[g+52273|0];if(b>>>0<=p>>>0){break Ta}ob(C,b,0,0,0,c,h,0,0);if(!(x[C+8>>2]|x[C+12>>2])){continue}break}break Ta}f=v[(D(b,23)>>>5&7)+52529|0];k=y[g+52273|0];if(k>>>0>>0){while(1){p=p<>>0<134217728;c=x[e+4>>2];bb:{if((c|0)!=x[e+104>>2]){x[e+4>>2]=c+1;g=y[c|0];break bb}g=Wa(e);}k=y[g+52273|0];if(o&k>>>0>>0){continue}break}c=p;}if(b>>>0<=k>>>0){break Ta}o=f;l=f&31;if((f&63)>>>0>=32){f=0;p=-1>>>l|0;}else {f=-1>>>l|0;p=f|(1<>>0>p>>>0){break Ta}while(1){g=c;c=o&31;if((o&63)>>>0>=32){l=g<>>32-c|h<>2];cb:{if((g|0)!=x[e+104>>2]){x[e+4>>2]=g+1;g=y[g|0];break cb}g=Wa(e);}k=y[g+52273|0];if(b>>>0<=k>>>0){break Ta}if((f|0)==(h|0)&c>>>0<=p>>>0|f>>>0>h>>>0){continue}break}}if(y[g+52273|0]>=b>>>0){break Sa}while(1){c=x[e+4>>2];db:{if((c|0)!=x[e+104>>2]){x[e+4>>2]=c+1;c=y[c|0];break db}c=Wa(e);}if(y[c+52273|0]>>0){continue}break}x[13623]=68;c=-1;h=-1;m=0;}b=x[e+116>>2];if((b|0)>0|(b|0)>=0){x[e+4>>2]=x[e+4>>2]-1;}b=c^m;c=b-m|0;f=m>>31;h=(f^h)-((b>>>0>>0)+f|0)|0;}qa=C+16|0;b=x[e+4>>2]-x[e+44>>2]|0;if(x[e+120>>2]==(0-b|0)&x[e+124>>2]==(0-((b>>31)+((b|0)!=0)|0)|0)){break f}if(!(!F|(n|0)!=112)){x[F>>2]=c;break v}Uh(F,i,c,h);break v}if(!F){break v}f=x[s+16>>2];g=x[s+20>>2];m=x[s+8>>2];l=x[s+12>>2];eb:{switch(W|0){case 0:h=qa-32|0;qa=h;b=g&2147483647;c=b;k=b-1065418752|0;b=b-1082064896|0;fb:{if((k|0)==(b|0)&0|b>>>0>k>>>0){c=(g&33554431)<<7|f>>>25;b=0;k=b;f=f&33554431;if(!(!b&(f|0)==16777216?!(l|m):!b&f>>>0<16777216)){b=c+1073741825|0;break fb}b=c+1073741824|0;if(f^16777216|m|(l|k)){break fb}b=(c&1)+b|0;break fb}if(!(!f&(c|0)==2147418112?!(l|m):c>>>0<2147418112)){b=((g&33554431)<<7|f>>>25)&4194303|2143289344;break fb}b=2139095040;if(c>>>0>1082064895){break fb}b=0;c=c>>>16|0;if(c>>>0<16145){break fb}b=g&65535|65536;qb(h+16|0,m,l,f,b,c-16129|0);rc(h,m,l,f,b,16257-c|0);b=x[h+8>>2];c=b;b=(x[h+12>>2]&33554431)<<7|b>>>25;l=x[h>>2]|(x[h+16>>2]|x[h+24>>2]|(x[h+20>>2]|x[h+28>>2]))!=0;m=x[h+4>>2];f=0;c=c&33554431;if(!(!f&(c|0)==16777216?!(l|m):!f&c>>>0<16777216)){b=b+1|0;break fb}if(c^16777216|l|(f|m)){break fb}b=(b&1)+b|0;}qa=h+32|0;x[F>>2]=g&-2147483648|b;break v;case 1:k=qa-32|0;qa=k;b=g&2147483647;c=b-1006698496|0;h=b-1140785152|0;gb:{if((c|0)==(h|0)&0|c>>>0>>0){c=f<<4|l>>>28;b=g<<4|f>>>28;f=l&268435455;if((f|0)==134217728&(m|0)!=0|f>>>0>134217728){o=b+1073741824|0;c=c+1|0;h=c?o:o+1|0;break gb}h=b+1073741824|0;if(m|(f|0)!=134217728){break gb}b=c&1;c=b+c|0;h=b>>>0>c>>>0?h+1|0:h;break gb}if(!(!f&(b|0)==2147418112?!(l|m):b>>>0<2147418112)){c=f<<4|l>>>28;h=(g<<4|f>>>28)&524287|2146959360;break gb}c=0;h=2146435072;if(b>>>0>1140785151){break gb}h=0;b=b>>>16|0;if(b>>>0<15249){break gb}c=g&65535|65536;qb(k+16|0,m,l,f,c,b-15233|0);rc(k,m,l,f,c,15361-b|0);b=x[k+8>>2];l=b<<4;b=x[k+12>>2]<<4|b>>>28;f=x[k>>2];c=x[k+4>>2];m=c;c=c>>>28|l;h=b;b=m&268435455;f=f|(x[k+16>>2]|x[k+24>>2]|(x[k+20>>2]|x[k+28>>2]))!=0;if((b|0)==134217728&(f|0)!=0|b>>>0>134217728){f=h;c=c+1|0;h=c?f:f+1|0;break gb}if(f|(b|0)!=134217728){break gb}b=c;c=c+(c&1)|0;h=b>>>0>c>>>0?h+1|0:h;}qa=k+32|0;x[F>>2]=c;x[F+4>>2]=g&-2147483648|h;break v;case 2:break eb;default:break v}}x[F>>2]=m;x[F+4>>2]=l;x[F+8>>2]=f;x[F+12>>2]=g;break v}C=(n|0)!=99;g=C?31:g+1|0;hb:{if((i|0)==1){k=F;if(O){k=Mb(g<<2);if(!k){break g}}x[s+296>>2]=0;x[s+300>>2]=0;b=0;while(1){a=k;ib:{while(1){c=x[e+4>>2];jb:{if((c|0)!=x[e+104>>2]){x[e+4>>2]=c+1;c=y[c|0];break jb}c=Wa(e);}if(!y[(c+s|0)+33|0]){break ib}v[s+27|0]=c;f=s+28|0;c=s+296|0;m=c?c:56056;c=x[m>>2];kb:{lb:{mb:{l=s+27|0;if(!l){if(c){break mb}c=0;break kb}k=y[l|0];l=k<<24>>24;if(!c){if((l|0)>=0){if(f){x[f>>2]=k;}c=(l|0)!=0;break kb}c=1;if(!f){break lb}x[f>>2]=l&57343;c=1;break kb}l=(l&248)>>>3|0;if((l-16|l+(c>>26))>>>0>7){break mb}l=k-128|c<<6;if((l|0)>=0){x[m>>2]=0;c=1;if(!f){break lb}x[f>>2]=l;c=1;break kb}x[m>>2]=l;c=-2;break kb}x[m>>2]=0;x[13623]=25;c=-1;}}if((c|0)==-2){continue}M=0;if((c|0)==-1){break e}if(a){x[(b<<2)+a>>2]=x[s+28>>2];b=b+1|0;}if(!O|(b|0)!=(g|0)){continue}break}p=1;b=g;g=b<<1|1;k=Tf(a,g<<2);if(k){continue}break d}break}M=0;g=a;if(s+296|0?x[s+296>>2]:0){break e}break hb}if(O){b=0;k=Mb(g);if(!k){break g}while(1){a=k;while(1){c=x[e+4>>2];nb:{if((c|0)!=x[e+104>>2]){x[e+4>>2]=c+1;c=y[c|0];break nb}c=Wa(e);}if(!y[(c+s|0)+33|0]){g=0;M=a;break hb}v[a+b|0]=c;b=b+1|0;if((g|0)!=(b|0)){continue}break}p=1;b=g;g=b<<1|1;k=Tf(a,g);if(k){continue}break}M=a;a=0;break d}b=0;if(F){while(1){a=x[e+4>>2];ob:{if((a|0)!=x[e+104>>2]){x[e+4>>2]=a+1;a=y[a|0];break ob}a=Wa(e);}if(y[(a+s|0)+33|0]){v[b+F|0]=a;b=b+1|0;continue}else {g=0;a=F;M=a;break hb}}}while(1){a=x[e+4>>2];pb:{if((a|0)!=x[e+104>>2]){x[e+4>>2]=a+1;a=y[a|0];break pb}a=Wa(e);}if(y[(a+s|0)+33|0]){continue}break}a=0;M=0;g=0;}k=x[e+4>>2];c=x[e+116>>2];if((c|0)>0|(c|0)>=0){k=k-1|0;x[e+4>>2]=k;}f=k-x[e+44>>2]|0;c=f+x[e+120>>2]|0;l=x[e+124>>2]+(f>>31)|0;l=c>>>0>>0?l+1|0:l;if(!(l|c)|!(C|(c|0)==(h|0)&(l|0)==(o|0))){break h}if(O){x[F>>2]=a;}qb:{if((n|0)==99){break qb}if(g){x[(b<<2)+g>>2]=0;}if(!M){M=0;break qb}v[b+M|0]=0;}a=g;}b=x[e+4>>2]-x[e+44>>2]|0;c=b;o=N+x[e+124>>2]|0;g=b>>31;b=I+x[e+120>>2]|0;o=g+(b>>>0>>0?o+1|0:o)|0;I=b+c|0;N=I>>>0>>0?o+1|0:o;V=((F|0)!=0)+V|0;}b=r+1|0;r=y[r+1|0];if(r){continue}break a}break}a=g;break f}p=1;M=0;a=0;break d}p=O;break b}p=O;}if(V){break b}}if(!p){break a}Ja(M);Ja(a);}qa=s+304|0;qa=e+144|0;qa=U+16|0;}function Tg(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=E(0),s=0,t=0,u=0,w=0,z=0,C=0,D=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=E(0),ba=E(0),ca=E(0),da=E(0),ea=0,fa=0;p=qa-32|0;qa=p;a:{b:{if(c){c=x[b+4>>2];x[b+4>>2]=c+1;f=v[c|0];s=f&127;c:{if((f|0)>=0){break c}x[b+4>>2]=c+2;f=v[c+1|0];s=f<<7&16256|s;if((f|0)>=0){break c}x[b+4>>2]=c+3;f=v[c+2|0];s=f<<14&2080768|s;if((f|0)>=0){break c}x[b+4>>2]=c+4;f=v[c+3|0];s=f<<21&266338304|s;if((f|0)>=0){break c}x[b+4>>2]=c+5;s=y[c+4|0]<<28|s;}if(!s){break a}m=Ma(68,3994,450);x[p+24>>2]=7;x[p+20>>2]=1080;c=Da();c=sa[x[x[c>>2]+12>>2]](c,8,8064,57)|0;x[p+28>>2]=c;v[c|0]=100;v[c+1|0]=101;v[c+2|0]=102;v[c+3|0]=97;v[c+4|0]=117;v[c+5|0]=108;v[c+6|0]=116;v[c+7|0]=0;m=sd(m,p+20|0);x[p+20>>2]=1080;c=x[p+28>>2];if(c){f=Da();sa[x[x[f>>2]+20>>2]](f,c,8064,201);}break b}f=Ma(68,3994,452);m=x[b+4>>2];x[b+4>>2]=m+1;g=v[m|0];c=g&127;d:{if((g|0)>=0){break d}x[b+4>>2]=m+2;g=v[m+1|0];c=g<<7&16256|c;if((g|0)>=0){break d}x[b+4>>2]=m+3;g=v[m+2|0];c=g<<14&2080768|c;if((g|0)>=0){break d}x[b+4>>2]=m+4;g=v[m+3|0];c=g<<21&266338304|c;if((g|0)>=0){break d}x[b+4>>2]=m+5;c=y[m+4|0]<<28|c;}e:{f:{g:{if(!c){x[p+20>>2]=1080;break g}c=x[(x[d+200>>2]+(c<<2)|0)-4>>2];x[p+20>>2]=1080;if(c){break f}}x[p+24>>2]=0;x[p+28>>2]=0;break e}m=Ga(c);x[p+24>>2]=m;g=Da();m=m+1|0;g=sa[x[x[g>>2]+12>>2]](g,m,8064,57)|0;x[p+28>>2]=g;Fa(g,c,m);}m=sd(f,p+20|0);x[p+20>>2]=1080;c=x[p+28>>2];if(c){f=Da();sa[x[x[f>>2]+20>>2]](f,c,8064,201);}f=x[b+4>>2];c=f+1|0;x[b+4>>2]=c;g=v[f|0];n=g&127;h:{if((g|0)>=0){break h}c=f+2|0;x[b+4>>2]=c;g=v[f+1|0];n=g<<7&16256|n;if((g|0)>=0){break h}c=f+3|0;x[b+4>>2]=c;g=v[f+2|0];n=g<<14&2080768|n;if((g|0)>=0){break h}c=f+4|0;x[b+4>>2]=c;g=v[f+3|0];n=g<<21&266338304|n;if((g|0)>=0){break h}c=f+5|0;x[b+4>>2]=c;n=y[f+4|0]<<28|n;}if((n|0)>0){while(1){f=x[b+4>>2];x[b+4>>2]=f+1;g=v[f|0];c=g&127;i:{if((g|0)>=0){break i}x[b+4>>2]=f+2;g=v[f+1|0];c=g<<7&16256|c;if((g|0)>=0){break i}x[b+4>>2]=f+3;g=v[f+2|0];c=g<<14&2080768|c;if((g|0)>=0){break i}x[b+4>>2]=f+4;g=v[f+3|0];c=g<<21&266338304|c;if((g|0)>=0){break i}x[b+4>>2]=f+5;c=y[f+4|0]<<28|c;}c=x[d+28>>2]+(c<<2)|0;k=x[m+40>>2];j:{if((k|0)==x[m+44>>2]){f=x[c>>2];q=E(E(k>>>0)*E(1.75));k:{if(E(F(q))>>0<=8?8:c;x[m+44>>2]=c;g=x[m+48>>2];i=Da();c=sa[x[x[i>>2]+16>>2]](i,g,c<<2,7693,106)|0;x[m+48>>2]=c;k=x[m+40>>2];x[c+(k<<2)>>2]=f;break j}x[x[m+48>>2]+(k<<2)>>2]=x[c>>2];}x[m+40>>2]=k+1;t=t+1|0;if((t|0)!=(n|0)){continue}break}c=x[b+4>>2];}k=c+1|0;x[b+4>>2]=k;f=v[c|0];n=f&127;l:{if((f|0)>=0){break l}k=c+2|0;x[b+4>>2]=k;f=v[c+1|0];n=f<<7&16256|n;if((f|0)>=0){break l}k=c+3|0;x[b+4>>2]=k;f=v[c+2|0];n=f<<14&2080768|n;if((f|0)>=0){break l}k=c+4|0;x[b+4>>2]=k;f=v[c+3|0];n=f<<21&266338304|n;if((f|0)>=0){break l}k=c+5|0;x[b+4>>2]=k;n=y[c+4|0]<<28|n;}if((n|0)>0){t=0;while(1){f=x[b+4>>2];x[b+4>>2]=f+1;g=v[f|0];c=g&127;m:{if((g|0)>=0){break m}x[b+4>>2]=f+2;g=v[f+1|0];c=g<<7&16256|c;if((g|0)>=0){break m}x[b+4>>2]=f+3;g=v[f+2|0];c=g<<14&2080768|c;if((g|0)>=0){break m}x[b+4>>2]=f+4;g=v[f+3|0];c=g<<21&266338304|c;if((g|0)>=0){break m}x[b+4>>2]=f+5;c=y[f+4|0]<<28|c;}f=x[x[d+112>>2]+(c<<2)>>2];k=x[m+56>>2];n:{if((k|0)==x[m+60>>2]){q=E(E(k>>>0)*E(1.75));o:{if(E(F(q))>>0<=8?8:c;x[m+60>>2]=c;g=x[m+64>>2];i=Da();c=sa[x[x[i>>2]+16>>2]](i,g,c<<2,7693,106)|0;x[m+64>>2]=c;k=x[m+56>>2];c=c+(k<<2)|0;break n}c=x[m+64>>2]+(k<<2)|0;}x[c>>2]=f;x[m+56>>2]=k+1;t=t+1|0;if((t|0)!=(n|0)){continue}break}k=x[b+4>>2];}c=k+1|0;x[b+4>>2]=c;f=v[k|0];n=f&127;p:{if((f|0)>=0){break p}c=k+2|0;x[b+4>>2]=c;f=v[k+1|0];n=f<<7&16256|n;if((f|0)>=0){break p}c=k+3|0;x[b+4>>2]=c;f=v[k+2|0];n=f<<14&2080768|n;if((f|0)>=0){break p}c=k+4|0;x[b+4>>2]=c;f=v[k+3|0];n=f<<21&266338304|n;if((f|0)>=0){break p}c=k+5|0;x[b+4>>2]=c;n=y[k+4|0]<<28|n;}if((n|0)>0){t=0;while(1){f=x[b+4>>2];x[b+4>>2]=f+1;g=v[f|0];c=g&127;q:{if((g|0)>=0){break q}x[b+4>>2]=f+2;g=v[f+1|0];c=g<<7&16256|c;if((g|0)>=0){break q}x[b+4>>2]=f+3;g=v[f+2|0];c=g<<14&2080768|c;if((g|0)>=0){break q}x[b+4>>2]=f+4;g=v[f+3|0];c=g<<21&266338304|c;if((g|0)>=0){break q}x[b+4>>2]=f+5;c=y[f+4|0]<<28|c;}f=x[x[d+128>>2]+(c<<2)>>2];k=x[m+56>>2];r:{if((k|0)==x[m+60>>2]){q=E(E(k>>>0)*E(1.75));s:{if(E(F(q))>>0<=8?8:c;x[m+60>>2]=c;g=x[m+64>>2];i=Da();c=sa[x[x[i>>2]+16>>2]](i,g,c<<2,7693,106)|0;x[m+64>>2]=c;k=x[m+56>>2];c=c+(k<<2)|0;break r}c=x[m+64>>2]+(k<<2)|0;}x[c>>2]=f;x[m+56>>2]=k+1;t=t+1|0;if((t|0)!=(n|0)){continue}break}c=x[b+4>>2];}k=c+1|0;x[b+4>>2]=k;f=v[c|0];n=f&127;t:{if((f|0)>=0){break t}k=c+2|0;x[b+4>>2]=k;f=v[c+1|0];n=f<<7&16256|n;if((f|0)>=0){break t}k=c+3|0;x[b+4>>2]=k;f=v[c+2|0];n=f<<14&2080768|n;if((f|0)>=0){break t}k=c+4|0;x[b+4>>2]=k;f=v[c+3|0];n=f<<21&266338304|n;if((f|0)>=0){break t}k=c+5|0;x[b+4>>2]=k;n=y[c+4|0]<<28|n;}if((n|0)>0){t=0;while(1){f=x[b+4>>2];x[b+4>>2]=f+1;g=v[f|0];c=g&127;u:{if((g|0)>=0){break u}x[b+4>>2]=f+2;g=v[f+1|0];c=g<<7&16256|c;if((g|0)>=0){break u}x[b+4>>2]=f+3;g=v[f+2|0];c=g<<14&2080768|c;if((g|0)>=0){break u}x[b+4>>2]=f+4;g=v[f+3|0];c=g<<21&266338304|c;if((g|0)>=0){break u}x[b+4>>2]=f+5;c=y[f+4|0]<<28|c;}f=x[x[d+144>>2]+(c<<2)>>2];k=x[m+56>>2];v:{if((k|0)==x[m+60>>2]){q=E(E(k>>>0)*E(1.75));w:{if(E(F(q))>>0<=8?8:c;x[m+60>>2]=c;g=x[m+64>>2];i=Da();c=sa[x[x[i>>2]+16>>2]](i,g,c<<2,7693,106)|0;x[m+64>>2]=c;k=x[m+56>>2];c=c+(k<<2)|0;break v}c=x[m+64>>2]+(k<<2)|0;}x[c>>2]=f;x[m+56>>2]=k+1;t=t+1|0;if((t|0)!=(n|0)){continue}break}k=x[b+4>>2];}x[b+4>>2]=k+1;c=v[k|0];s=c&127;if((c|0)>=0){break b}x[b+4>>2]=k+2;c=v[k+1|0];s=c<<7&16256|s;if((c|0)>=0){break b}x[b+4>>2]=k+3;c=v[k+2|0];s=c<<14&2080768|s;if((c|0)>=0){break b}x[b+4>>2]=k+4;c=v[k+3|0];s=c<<21&266338304|s;if((c|0)>=0){break b}x[b+4>>2]=k+5;s=y[k+4|0]<<28|s;}if((s|0)<=0){break a}while(1){f=x[b+4>>2];c=f+1|0;x[b+4>>2]=c;g=v[f|0];n=g&127;x:{if((g|0)>=0){break x}c=f+2|0;x[b+4>>2]=c;g=v[f+1|0];n=g<<7&16256|n;if((g|0)>=0){break x}c=f+3|0;x[b+4>>2]=c;g=v[f+2|0];n=g<<14&2080768|n;if((g|0)>=0){break x}c=f+4|0;x[b+4>>2]=c;g=v[f+3|0];n=g<<21&266338304|n;if((g|0)>=0){break x}c=f+5|0;x[b+4>>2]=c;n=y[f+4|0]<<28|n;}x[b+4>>2]=c+1;f=v[c|0];k=f&127;y:{if((f|0)>=0){break y}x[b+4>>2]=c+2;f=v[c+1|0];k=f<<7&16256|k;if((f|0)>=0){break y}x[b+4>>2]=c+3;f=v[c+2|0];k=f<<14&2080768|k;if((f|0)>=0){break y}x[b+4>>2]=c+4;f=v[c+3|0];k=f<<21&266338304|k;if((f|0)>=0){break y}x[b+4>>2]=c+5;k=y[c+4|0]<<28|k;}t=0;if((k|0)>0){while(1){f=x[b+4>>2];x[b+4>>2]=f+1;g=v[f|0];c=g&127;z:{if((g|0)>=0){break z}x[b+4>>2]=f+2;g=v[f+1|0];c=g<<7&16256|c;if((g|0)>=0){break z}x[b+4>>2]=f+3;g=v[f+2|0];c=g<<14&2080768|c;if((g|0)>=0){break z}x[b+4>>2]=f+4;g=v[f+3|0];c=g<<21&266338304|c;if((g|0)>=0){break z}x[b+4>>2]=f+5;c=y[f+4|0]<<28|c;}A:{if(!c){x[p+20>>2]=1080;x[p+24>>2]=0;x[p+28>>2]=0;break A}c=x[(x[d+200>>2]+(c<<2)|0)-4>>2];x[p+20>>2]=1080;if(!c){x[p+24>>2]=0;x[p+28>>2]=0;break A}f=Ga(c);x[p+24>>2]=f;g=Da();f=sa[x[x[g>>2]+12>>2]](g,f+1|0,8064,57)|0;x[p+28>>2]=f;Fa(f,c,x[p+24>>2]+1|0);}g=p+20|0;h=qa-80|0;qa=h;f=x[b+4>>2];x[b+4>>2]=f+1;i=v[f|0];c=i&127;B:{if((i|0)>=0){break B}x[b+4>>2]=f+2;i=v[f+1|0];c=i<<7&16256|c;if((i|0)>=0){break B}x[b+4>>2]=f+3;i=v[f+2|0];c=i<<14&2080768|c;if((i|0)>=0){break B}x[b+4>>2]=f+4;i=v[f+3|0];c=i<<21&266338304|c;if((i|0)>=0){break B}x[b+4>>2]=f+5;c=y[f+4|0]<<28|c;}C:{D:{E:{if(!c){x[h+68>>2]=1080;break E}c=x[(x[d+200>>2]+(c<<2)|0)-4>>2];x[h+68>>2]=1080;if(!c){break E}f=Ga(c);x[h+72>>2]=f;i=Da();o=f+1|0;i=sa[x[x[i>>2]+12>>2]](i,o,8064,57)|0;x[h+76>>2]=i;c=Fa(i,c,o);if(f|(g|0)==(h+68|0)){break C}if(!c){break D}f=Da();sa[x[x[f>>2]+20>>2]](f,c,8064,122);break D}x[h+72>>2]=0;x[h+76>>2]=0;if((g|0)==(h+68|0)){break C}}if(!x[g+8>>2]){x[h+72>>2]=0;x[h+76>>2]=0;break C}c=x[g+4>>2];x[h+72>>2]=c;f=Da();c=sa[x[x[f>>2]+12>>2]](f,c+1|0,8064,129)|0;x[h+76>>2]=c;Fa(c,x[g+8>>2],x[g+4>>2]+1|0);}c=x[b+4>>2];x[b+4>>2]=c+1;f=0;F:{G:{switch(y[c|0]){case 0:x[b+4>>2]=c+2;g=v[c+1|0];f=g&127;H:{if((g|0)>=0){break H}x[b+4>>2]=c+3;g=v[c+2|0];f=g<<7&16256|f;if((g|0)>=0){break H}x[b+4>>2]=c+4;g=v[c+3|0];f=g<<14&2080768|f;if((g|0)>=0){break H}x[b+4>>2]=c+5;g=v[c+4|0];f=g<<21&266338304|f;if((g|0)>=0){break H}x[b+4>>2]=c+6;f=y[c+5|0]<<28|f;}I:{J:{K:{L:{if(!f){x[h+56>>2]=1080;break L}c=x[(x[d+200>>2]+(f<<2)|0)-4>>2];x[h+56>>2]=1080;if(c){break K}}x[h+60>>2]=0;x[h+64>>2]=0;break J}f=Ga(c);x[h+60>>2]=f;g=Da();f=f+1|0;g=sa[x[x[g>>2]+12>>2]](g,f,8064,57)|0;x[h+64>>2]=g;Fa(g,c,f);if(x[h+60>>2]){break I}}c=x[h+64>>2];if(c){f=Da();sa[x[x[f>>2]+20>>2]](f,c,8064,122);}if(!x[h+76>>2]){x[h+60>>2]=0;x[h+64>>2]=0;break I}c=x[h+72>>2];x[h+60>>2]=c;f=Da();c=sa[x[x[f>>2]+12>>2]](f,c+1|0,8064,129)|0;x[h+64>>2]=c;Fa(c,x[h+76>>2],x[h+72>>2]+1|0);}c=x[b+4>>2];x[b+4>>2]=c+1;g=y[c|0];x[b+4>>2]=c+2;i=y[c+1|0];x[b+4>>2]=c+3;o=y[c+2|0];x[b+4>>2]=c+4;j=y[c+3|0];x[b+4>>2]=c+5;u=y[c+4|0];x[b+4>>2]=c+6;C=y[c+5|0];x[b+4>>2]=c+7;z=y[c+6|0];x[b+4>>2]=c+8;G=y[c+7|0];x[b+4>>2]=c+9;H=y[c+8|0];x[b+4>>2]=c+10;J=y[c+9|0];x[b+4>>2]=c+11;K=y[c+10|0];x[b+4>>2]=c+12;L=y[c+11|0];x[b+4>>2]=c+13;M=y[c+12|0];x[b+4>>2]=c+14;N=y[c+13|0];x[b+4>>2]=c+15;O=y[c+14|0];x[b+4>>2]=c+16;P=y[c+15|0];x[b+4>>2]=c+17;Q=y[c+16|0];x[b+4>>2]=c+18;R=y[c+17|0];x[b+4>>2]=c+19;S=y[c+18|0];x[b+4>>2]=c+20;T=y[c+19|0];x[b+4>>2]=c+21;U=y[c+20|0];x[b+4>>2]=c+22;V=y[c+21|0];x[b+4>>2]=c+23;W=y[c+22|0];x[b+4>>2]=c+24;X=y[c+23|0];x[b+4>>2]=c+25;Y=y[c+24|0];x[b+4>>2]=c+26;Z=y[c+25|0];x[b+4>>2]=c+27;_=y[c+26|0];f=c+28|0;x[b+4>>2]=f;$=y[c+27|0];if(!y[54336]){x[13580]=0;x[13581]=0;x[13582]=0;x[13583]=0;x[13579]=14896;v[54336]=1;f=x[b+4>>2];}x[b+4>>2]=f+1;B[13580]=E(y[f|0])/E(255);x[b+4>>2]=f+2;B[13581]=E(y[f+1|0])/E(255);x[b+4>>2]=f+3;B[13582]=E(y[f+2|0])/E(255);x[b+4>>2]=f+4;B[13583]=E(y[f+3|0])/E(255);c=x[a+4>>2];x[h+44>>2]=1080;M:{if(!x[h+76>>2]){x[h+48>>2]=0;x[h+52>>2]=0;break M}f=x[h+72>>2];x[h+48>>2]=f;w=Da();f=sa[x[x[w>>2]+12>>2]](w,f+1|0,8064,71)|0;x[h+52>>2]=f;Fa(f,x[h+76>>2],x[h+72>>2]+1|0);}x[h+32>>2]=1080;f=x[h+64>>2];N:{if(!f){x[h+36>>2]=0;x[h+40>>2]=0;break N}w=x[h+60>>2];x[h+36>>2]=w;D=Da();w=w+1|0;D=sa[x[x[D>>2]+12>>2]](D,w,8064,71)|0;x[h+40>>2]=D;Fa(D,f,w);}f=sa[x[x[c>>2]+12>>2]](c,m,h+44|0,h+32|0)|0;x[h+32>>2]=1080;c=x[h+40>>2];if(c){w=Da();sa[x[x[w>>2]+20>>2]](w,c,8064,201);}x[h+44>>2]=1080;c=x[h+52>>2];if(c){w=Da();sa[x[x[w>>2]+20>>2]](w,c,8064,201);}if(f){c=j|(o|(i<<8|g<<16))<<8;g=(N<<8|M<<16|O)<<8|P;i=(R<<8|Q<<16|S)<<8|T;aa=(l(2,G|(z|(C<<8|u<<16))<<8),r());ba=(l(2,(J<<8|H<<16|K)<<8|L),r());ca=(l(2,(V<<8|U<<16|W)<<8|X),r());da=(l(2,(Z<<8|Y<<16|_)<<8|$),r());O:{if((h-60|0)==(f|0)){break O}o=x[f+124>>2];if(o){j=Da();sa[x[x[j>>2]+20>>2]](j,o,8064,122);}if(!x[h+64>>2]){x[f+120>>2]=0;x[f+124>>2]=0;break O}o=x[h+60>>2];x[f+120>>2]=o;j=Da();o=sa[x[x[j>>2]+12>>2]](j,o+1|0,8064,129)|0;x[f+124>>2]=o;Fa(o,x[h+64>>2],x[h+60>>2]+1|0);}x[f+40>>2]=c;q=B[a+36>>2];x[f+48>>2]=i;x[f+44>>2]=g;B[f+56>>2]=q*da;B[f+52>>2]=q*ca;B[f+36>>2]=q*ba;B[f+32>>2]=q*aa;c=x[13581];x[f+148>>2]=x[13580];x[f+152>>2]=c;c=x[13583];x[f+156>>2]=x[13582];x[f+160>>2]=c;Ad(f);c=x[a+4>>2];sa[x[x[c>>2]+36>>2]](c,f);}x[h+56>>2]=1080;c=x[h+64>>2];if(c){g=Da();sa[x[x[g>>2]+20>>2]](g,c,8064,201);}break F;case 1:x[b+4>>2]=c+2;f=v[c+1|0];j=f&127;P:{if((f|0)>=0){break P}x[b+4>>2]=c+3;f=v[c+2|0];j=f<<7&16256|j;if((f|0)>=0){break P}x[b+4>>2]=c+4;f=v[c+3|0];j=f<<14&2080768|j;if((f|0)>=0){break P}x[b+4>>2]=c+5;f=v[c+4|0];j=f<<21&266338304|j;if((f|0)>=0){break P}x[b+4>>2]=c+6;j=y[c+5|0]<<28|j;}c=x[a+4>>2];x[h+56>>2]=1080;Q:{if(!x[h+76>>2]){x[h+60>>2]=0;x[h+64>>2]=0;break Q}f=x[h+72>>2];x[h+60>>2]=f;g=Da();f=sa[x[x[g>>2]+12>>2]](g,f+1|0,8064,71)|0;x[h+64>>2]=f;Fa(f,x[h+76>>2],x[h+72>>2]+1|0);}f=sa[x[x[c>>2]+20>>2]](c,m,h+56|0)|0;x[h+56>>2]=1080;c=x[h+64>>2];if(c){g=Da();sa[x[x[g>>2]+20>>2]](g,c,8064,201);}wd(a,b,f,j);if(e){x[b+4>>2]=x[b+4>>2]+4;}c=x[a+4>>2];sa[x[x[c>>2]+36>>2]](c,f);break F;case 2:x[b+4>>2]=c+2;g=v[c+1|0];f=g&127;R:{if((g|0)>=0){break R}x[b+4>>2]=c+3;g=v[c+2|0];f=g<<7&16256|f;if((g|0)>=0){break R}x[b+4>>2]=c+4;g=v[c+3|0];f=g<<14&2080768|f;if((g|0)>=0){break R}x[b+4>>2]=c+5;g=v[c+4|0];f=g<<21&266338304|f;if((g|0)>=0){break R}x[b+4>>2]=c+6;f=y[c+5|0]<<28|f;}S:{T:{U:{V:{if(!f){x[h+56>>2]=1080;break V}c=x[(x[d+200>>2]+(f<<2)|0)-4>>2];x[h+56>>2]=1080;if(c){break U}}x[h+60>>2]=0;x[h+64>>2]=0;break T}f=Ga(c);x[h+60>>2]=f;g=Da();f=sa[x[x[g>>2]+12>>2]](g,f+1|0,8064,57)|0;x[h+64>>2]=f;Fa(f,c,x[h+60>>2]+1|0);if(x[h+60>>2]){break S}}c=x[h+64>>2];if(c){f=Da();sa[x[x[f>>2]+20>>2]](f,c,8064,122);}if(!x[h+76>>2]){x[h+60>>2]=0;x[h+64>>2]=0;break S}c=x[h+72>>2];x[h+60>>2]=c;f=Da();c=sa[x[x[f>>2]+12>>2]](f,c+1|0,8064,129)|0;x[h+64>>2]=c;Fa(c,x[h+76>>2],x[h+72>>2]+1|0);}c=x[a+4>>2];x[h+44>>2]=1080;W:{if(!x[h+76>>2]){x[h+48>>2]=0;x[h+52>>2]=0;break W}f=x[h+72>>2];x[h+48>>2]=f;g=Da();f=sa[x[x[g>>2]+12>>2]](g,f+1|0,8064,71)|0;x[h+52>>2]=f;Fa(f,x[h+76>>2],x[h+72>>2]+1|0);}x[h+32>>2]=1080;X:{if(!x[h+64>>2]){x[h+36>>2]=0;x[h+40>>2]=0;break X}f=x[h+60>>2];x[h+36>>2]=f;g=Da();f=sa[x[x[g>>2]+12>>2]](g,f+1|0,8064,71)|0;x[h+40>>2]=f;Fa(f,x[h+64>>2],x[h+60>>2]+1|0);}o=sa[x[x[c>>2]+16>>2]](c,m,h+44|0,h+32|0)|0;x[h+32>>2]=1080;c=x[h+40>>2];if(c){f=Da();sa[x[x[f>>2]+20>>2]](f,c,8064,201);}x[h+44>>2]=1080;c=x[h+52>>2];if(c){f=Da();sa[x[x[f>>2]+20>>2]](f,c,8064,201);}f=o;if(!f){f=Zc(Pa(236),h+68|0);}Y:{if((h-112|0)==(f|0)){break Y}c=x[f+176>>2];if(c){g=Da();sa[x[x[g>>2]+20>>2]](g,c,8064,122);}if(!x[h+64>>2]){x[f+172>>2]=0;x[f+176>>2]=0;break Y}c=x[h+60>>2];x[f+172>>2]=c;g=Da();c=sa[x[x[g>>2]+12>>2]](g,c+1|0,8064,129)|0;x[f+176>>2]=c;Fa(c,x[h+64>>2],x[h+60>>2]+1|0);}c=x[b+4>>2];x[b+4>>2]=c+1;g=f+204|0;B[g+4>>2]=E(y[c|0])/E(255);x[b+4>>2]=c+2;B[g+8>>2]=E(y[c+1|0])/E(255);x[b+4>>2]=c+3;B[g+12>>2]=E(y[c+2|0])/E(255);x[b+4>>2]=c+4;B[g+16>>2]=E(y[c+3|0])/E(255);x[b+4>>2]=c+5;g=v[c+4|0];u=g&127;Z:{if((g|0)>=0){break Z}x[b+4>>2]=c+6;g=v[c+5|0];u=g<<7&16256|u;if((g|0)>=0){break Z}x[b+4>>2]=c+7;g=v[c+6|0];u=g<<14&2080768|u;if((g|0)>=0){break Z}x[b+4>>2]=c+8;g=v[c+7|0];u=g<<21&266338304|u;if((g|0)>=0){break Z}x[b+4>>2]=c+9;u=y[c+8|0]<<28|u;}g=f+120|0;j=x[g+4>>2];i=u<<1;x[g+4>>2]=i;c=i;if(c>>>0>A[g+8>>2]){q=E(E(i>>>0)*E(1.75));_:{if(E(F(q))>>0<=8?8:c;x[g+8>>2]=c;C=x[g+12>>2];z=Da();ea=g,fa=sa[x[x[z>>2]+16>>2]](z,C,c<<2,7693,82)|0,x[ea+12>>2]=fa;c=x[g+4>>2];}if(c>>>0>j>>>0){Ha(x[g+12>>2]+(j<<2)|0,0,c-j<<2);}if((i|0)>0){c=x[b+4>>2];C=x[g+12>>2];j=0;while(1){x[b+4>>2]=c+1;z=y[c|0];x[b+4>>2]=c+2;G=y[c+1|0];x[b+4>>2]=c+3;H=y[c+2|0];g=c+4|0;x[b+4>>2]=g;x[C+(j<<2)>>2]=y[c+3|0]|(H|(G<<8|z<<16))<<8;c=g;j=j+1|0;if((i|0)!=(j|0)){continue}break}}Sg(b,f+136|0);wd(a,b,f,u);mc(f);c=x[b+4>>2];x[b+4>>2]=c+1;g=v[c|0];j=g&127;$:{if((g|0)>=0){break $}x[b+4>>2]=c+2;g=v[c+1|0];j=g<<7&16256|j;if((g|0)>=0){break $}x[b+4>>2]=c+3;g=v[c+2|0];j=g<<14&2080768|j;if((g|0)>=0){break $}x[b+4>>2]=c+4;g=v[c+3|0];j=g<<21&266338304|j;if((g|0)>=0){break $}x[b+4>>2]=c+5;j=y[c+4|0]<<28|j;}x[f+224>>2]=j<<1;aa:{if(e){Sg(b,f+152|0);c=x[b+4>>2];x[b+4>>2]=c+1;g=y[c|0];x[b+4>>2]=c+2;i=y[c+1|0];x[b+4>>2]=c+3;j=y[c+2|0];x[b+4>>2]=c+4;q=B[a+36>>2];B[f+196>>2]=q*(l(2,y[c+3|0]|(j|(i<<8|g<<16))<<8),r());x[b+4>>2]=c+5;g=y[c+4|0];x[b+4>>2]=c+6;i=y[c+5|0];x[b+4>>2]=c+7;j=y[c+6|0];x[b+4>>2]=c+8;q=E(q*(l(2,y[c+7|0]|(j|(i<<8|g<<16))<<8),r()));break aa}x[f+196>>2]=0;q=E(0);}B[f+200>>2]=q;ba:{if(!o){sa[x[x[f>>2]+4>>2]](f);f=0;break ba}c=x[a+4>>2];sa[x[x[c>>2]+36>>2]](c,f);}x[h+56>>2]=1080;c=x[h+64>>2];if(c){g=Da();sa[x[x[g>>2]+20>>2]](g,c,8064,201);}break F;case 3:x[b+4>>2]=c+2;g=v[c+1|0];f=g&127;ca:{if((g|0)>=0){break ca}x[b+4>>2]=c+3;g=v[c+2|0];f=g<<7&16256|f;if((g|0)>=0){break ca}x[b+4>>2]=c+4;g=v[c+3|0];f=g<<14&2080768|f;if((g|0)>=0){break ca}x[b+4>>2]=c+5;g=v[c+4|0];f=g<<21&266338304|f;if((g|0)>=0){break ca}x[b+4>>2]=c+6;f=y[c+5|0]<<28|f;}da:{ea:{fa:{ga:{if(!f){x[h+56>>2]=1080;break ga}c=x[(x[d+200>>2]+(f<<2)|0)-4>>2];x[h+56>>2]=1080;if(c){break fa}}x[h+60>>2]=0;x[h+64>>2]=0;break ea}f=Ga(c);x[h+60>>2]=f;g=Da();f=sa[x[x[g>>2]+12>>2]](g,f+1|0,8064,57)|0;x[h+64>>2]=f;Fa(f,c,x[h+60>>2]+1|0);if(x[h+60>>2]){break da}}c=x[h+64>>2];if(c){f=Da();sa[x[x[f>>2]+20>>2]](f,c,8064,122);}if(!x[h+76>>2]){x[h+60>>2]=0;x[h+64>>2]=0;break da}c=x[h+72>>2];x[h+60>>2]=c;f=Da();c=sa[x[x[f>>2]+12>>2]](f,c+1|0,8064,129)|0;x[h+64>>2]=c;Fa(c,x[h+76>>2],x[h+72>>2]+1|0);}c=x[a+4>>2];x[h+44>>2]=1080;ha:{if(!x[h+76>>2]){x[h+48>>2]=0;x[h+52>>2]=0;break ha}f=x[h+72>>2];x[h+48>>2]=f;g=Da();f=sa[x[x[g>>2]+12>>2]](g,f+1|0,8064,71)|0;x[h+52>>2]=f;Fa(f,x[h+76>>2],x[h+72>>2]+1|0);}x[h+32>>2]=1080;ia:{if(!x[h+64>>2]){x[h+36>>2]=0;x[h+40>>2]=0;break ia}f=x[h+60>>2];x[h+36>>2]=f;g=Da();f=sa[x[x[g>>2]+12>>2]](g,f+1|0,8064,71)|0;x[h+40>>2]=f;Fa(f,x[h+64>>2],x[h+60>>2]+1|0);}f=sa[x[x[c>>2]+16>>2]](c,m,h+44|0,h+32|0)|0;x[h+32>>2]=1080;c=x[h+40>>2];if(c){g=Da();sa[x[x[g>>2]+20>>2]](g,c,8064,201);}x[h+44>>2]=1080;c=x[h+52>>2];if(c){g=Da();sa[x[x[g>>2]+20>>2]](g,c,8064,201);}ja:{if((h-112|0)==(f|0)){break ja}c=x[f+176>>2];if(c){g=Da();sa[x[x[g>>2]+20>>2]](g,c,8064,122);}if(!x[h+64>>2]){x[f+172>>2]=0;x[f+176>>2]=0;break ja}c=x[h+60>>2];x[f+172>>2]=c;g=Da();c=sa[x[x[g>>2]+12>>2]](g,c+1|0,8064,129)|0;x[f+176>>2]=c;Fa(c,x[h+64>>2],x[h+60>>2]+1|0);}c=x[b+4>>2];x[b+4>>2]=c+1;g=f+204|0;B[g+4>>2]=E(y[c|0])/E(255);x[b+4>>2]=c+2;B[g+8>>2]=E(y[c+1|0])/E(255);x[b+4>>2]=c+3;B[g+12>>2]=E(y[c+2|0])/E(255);x[b+4>>2]=c+4;B[g+16>>2]=E(y[c+3|0])/E(255);j=c+5|0;x[b+4>>2]=j;i=v[c+4|0];g=i&127;ka:{if((i|0)>=0){break ka}j=c+6|0;x[b+4>>2]=j;i=v[c+5|0];g=i<<7&16256|g;if((i|0)>=0){break ka}j=c+7|0;x[b+4>>2]=j;i=v[c+6|0];g=i<<14&2080768|g;if((i|0)>=0){break ka}j=c+8|0;x[b+4>>2]=j;i=v[c+7|0];g=i<<21&266338304|g;if((i|0)>=0){break ka}j=c+9|0;x[b+4>>2]=j;g=y[c+8|0]<<28|g;}la:{ma:{na:{if(!g){x[h+44>>2]=1080;break na}c=x[(x[d+200>>2]+(g<<2)|0)-4>>2];x[h+44>>2]=1080;if(c){break ma}}x[h+48>>2]=0;x[h+52>>2]=0;break la}g=Ga(c);x[h+48>>2]=g;i=Da();g=g+1|0;i=sa[x[x[i>>2]+12>>2]](i,g,8064,57)|0;x[h+52>>2]=i;Fa(i,c,g);j=x[b+4>>2];}c=j+1|0;x[b+4>>2]=c;i=v[j|0];g=i&127;oa:{if((i|0)>=0){break oa}c=j+2|0;x[b+4>>2]=c;i=v[j+1|0];g=i<<7&16256|g;if((i|0)>=0){break oa}c=j+3|0;x[b+4>>2]=c;i=v[j+2|0];g=i<<14&2080768|g;if((i|0)>=0){break oa}c=j+4|0;x[b+4>>2]=c;i=v[j+3|0];g=i<<21&266338304|g;if((i|0)>=0){break oa}c=j+5|0;x[b+4>>2]=c;g=y[j+4|0]<<28|g;}pa:{qa:{ra:{if(!g){x[h+32>>2]=1080;break ra}g=x[(x[d+200>>2]+(g<<2)|0)-4>>2];x[h+32>>2]=1080;if(g){break qa}}x[h+36>>2]=0;x[h+40>>2]=0;break pa}c=Ga(g);x[h+36>>2]=c;i=Da();c=c+1|0;i=sa[x[x[i>>2]+12>>2]](i,c,8064,57)|0;x[h+40>>2]=i;Fa(i,g,c);c=x[b+4>>2];}x[b+4>>2]=c+1;g=y[c|0];if(e){x[b+4>>2]=c+2;i=y[c+1|0];x[b+4>>2]=c+3;o=y[c+2|0];x[b+4>>2]=c+4;j=y[c+3|0];x[b+4>>2]=c+5;q=B[a+36>>2];B[f+196>>2]=q*(l(2,y[c+4|0]|(j|(o<<8|i<<16))<<8),r());x[b+4>>2]=c+6;i=y[c+5|0];x[b+4>>2]=c+7;o=y[c+6|0];x[b+4>>2]=c+8;j=y[c+7|0];x[b+4>>2]=c+9;B[f+200>>2]=q*(l(2,y[c+8|0]|(j|(o<<8|i<<16))<<8),r());}c=Ma(40,3994,580);x[h+20>>2]=1080;i=x[h+52>>2];sa:{if(!i){x[h+24>>2]=0;x[h+28>>2]=0;break sa}o=x[h+48>>2];x[h+24>>2]=o;j=Da();o=o+1|0;j=sa[x[x[j>>2]+12>>2]](j,o,8064,71)|0;x[h+28>>2]=j;Fa(j,i,o);}x[h+8>>2]=1080;i=x[h+40>>2];ta:{if(!i){x[h+12>>2]=0;x[h+16>>2]=0;break ta}o=x[h+36>>2];x[h+12>>2]=o;j=Da();o=o+1|0;j=sa[x[x[j>>2]+12>>2]](j,o,8064,71)|0;x[h+16>>2]=j;Fa(j,i,o);}i=lh(c,f,h+20|0,n,h+8|0,(g|0)!=0);x[h+8>>2]=1080;c=x[h+16>>2];if(c){g=Da();sa[x[x[g>>2]+20>>2]](g,c,8064,201);}x[h+20>>2]=1080;c=x[h+28>>2];if(c){g=Da();sa[x[x[g>>2]+20>>2]](g,c,8064,201);}g=x[a+12>>2];ua:{if((g|0)==x[a+16>>2]){q=E(E(g>>>0)*E(1.75));va:{if(E(F(q))>>0<=8?8:c;x[a+16>>2]=c;g=x[a+20>>2];o=Da();c=sa[x[x[o>>2]+16>>2]](o,g,c<<2,7693,106)|0;x[a+20>>2]=c;g=x[a+12>>2];c=c+(g<<2)|0;break ua}c=x[a+20>>2]+(g<<2)|0;}x[c>>2]=i;x[a+12>>2]=g+1;x[h+32>>2]=1080;c=x[h+40>>2];if(c){g=Da();sa[x[x[g>>2]+20>>2]](g,c,8064,201);}x[h+44>>2]=1080;c=x[h+52>>2];if(c){g=Da();sa[x[x[g>>2]+20>>2]](g,c,8064,201);}x[h+56>>2]=1080;c=x[h+64>>2];if(c){g=Da();sa[x[x[g>>2]+20>>2]](g,c,8064,201);}break F;case 4:c=x[a+4>>2];x[h+56>>2]=1080;wa:{if(!x[h+76>>2]){x[h+60>>2]=0;x[h+64>>2]=0;break wa}f=x[h+72>>2];x[h+60>>2]=f;g=Da();f=sa[x[x[g>>2]+12>>2]](g,f+1|0,8064,71)|0;x[h+64>>2]=f;Fa(f,x[h+76>>2],x[h+72>>2]+1|0);}f=sa[x[x[c>>2]+24>>2]](c,m,h+56|0)|0;x[h+56>>2]=1080;c=x[h+64>>2];if(c){g=Da();sa[x[x[g>>2]+20>>2]](g,c,8064,201);}c=x[b+4>>2];x[b+4>>2]=c+1;v[f+80|0]=y[c|0]!=0;x[b+4>>2]=c+2;v[f+81|0]=y[c+1|0]!=0;x[b+4>>2]=c+3;g=v[c+2|0];j=g&127;xa:{if((g|0)>=0){break xa}x[b+4>>2]=c+4;g=v[c+3|0];j=g<<7&16256|j;if((g|0)>=0){break xa}x[b+4>>2]=c+5;g=v[c+4|0];j=g<<14&2080768|j;if((g|0)>=0){break xa}x[b+4>>2]=c+6;g=v[c+5|0];j=g<<21&266338304|j;if((g|0)>=0){break xa}x[b+4>>2]=c+7;j=y[c+6|0]<<28|j;}wd(a,b,f,j);i=x[f+68>>2];g=(j|0)/3|0;x[f+68>>2]=g;c=g;if(c>>>0>A[f+72>>2]){q=E(E(g>>>0)*E(1.75));ya:{if(E(F(q))>>0<=8?8:c;x[f+72>>2]=c;o=x[f+76>>2];u=Da();ea=f,fa=sa[x[x[u>>2]+16>>2]](u,o,c<<2,7693,82)|0,x[ea+76>>2]=fa;c=x[f+68>>2];}if(c>>>0>i>>>0){Ha(x[f+76>>2]+(i<<2)|0,0,c-i<<2);}if((j|0)>=3){o=x[f+76>>2];c=x[b+4>>2];j=0;while(1){x[b+4>>2]=c+1;u=y[c|0];x[b+4>>2]=c+2;C=y[c+1|0];x[b+4>>2]=c+3;z=y[c+2|0];i=c+4|0;x[b+4>>2]=i;B[o+(j<<2)>>2]=B[a+36>>2]*(l(2,y[c+3|0]|(z|(C<<8|u<<16))<<8),r());c=i;j=j+1|0;if((g|0)!=(j|0)){continue}break}}if(e){x[b+4>>2]=x[b+4>>2]+4;}c=x[a+4>>2];sa[x[x[c>>2]+36>>2]](c,f);break F;case 5:c=x[a+4>>2];x[h+56>>2]=1080;za:{if(!x[h+76>>2]){x[h+60>>2]=0;x[h+64>>2]=0;break za}f=x[h+72>>2];x[h+60>>2]=f;g=Da();f=sa[x[x[g>>2]+12>>2]](g,f+1|0,8064,71)|0;x[h+64>>2]=f;Fa(f,x[h+76>>2],x[h+72>>2]+1|0);}f=sa[x[x[c>>2]+28>>2]](c,m,h+56|0)|0;x[h+56>>2]=1080;c=x[h+64>>2];if(c){g=Da();sa[x[x[g>>2]+20>>2]](g,c,8064,201);}c=x[b+4>>2];x[b+4>>2]=c+1;g=y[c|0];x[b+4>>2]=c+2;i=y[c+1|0];x[b+4>>2]=c+3;o=y[c+2|0];x[b+4>>2]=c+4;x[f+28>>2]=y[c+3|0]|(o|(i<<8|g<<16))<<8;x[b+4>>2]=c+5;g=y[c+4|0];x[b+4>>2]=c+6;i=y[c+5|0];x[b+4>>2]=c+7;o=y[c+6|0];x[b+4>>2]=c+8;q=B[a+36>>2];B[f+20>>2]=q*(l(2,y[c+7|0]|(o|(i<<8|g<<16))<<8),r());x[b+4>>2]=c+9;g=y[c+8|0];x[b+4>>2]=c+10;i=y[c+9|0];x[b+4>>2]=c+11;o=y[c+10|0];x[b+4>>2]=c+12;B[f+24>>2]=q*(l(2,y[c+11|0]|(o|(i<<8|g<<16))<<8),r());if(e){x[b+4>>2]=c+16;}c=x[a+4>>2];sa[x[x[c>>2]+36>>2]](c,f);break F;case 6:break G;default:break F}}f=c+2|0;x[b+4>>2]=f;g=v[c+1|0];j=g&127;Aa:{if((g|0)>=0){break Aa}f=c+3|0;x[b+4>>2]=f;g=v[c+2|0];j=g<<7&16256|j;if((g|0)>=0){break Aa}f=c+4|0;x[b+4>>2]=f;g=v[c+3|0];j=g<<14&2080768|j;if((g|0)>=0){break Aa}f=c+5|0;x[b+4>>2]=f;g=v[c+4|0];j=g<<21&266338304|j;if((g|0)>=0){break Aa}f=c+6|0;x[b+4>>2]=f;j=y[c+5|0]<<28|j;}x[b+4>>2]=f+1;g=v[f|0];c=g&127;Ba:{if((g|0)>=0){break Ba}x[b+4>>2]=f+2;g=v[f+1|0];c=g<<7&16256|c;if((g|0)>=0){break Ba}x[b+4>>2]=f+3;g=v[f+2|0];c=g<<14&2080768|c;if((g|0)>=0){break Ba}x[b+4>>2]=f+4;g=v[f+3|0];c=g<<21&266338304|c;if((g|0)>=0){break Ba}x[b+4>>2]=f+5;c=y[f+4|0]<<28|c;}f=x[a+4>>2];f=sa[x[x[f>>2]+32>>2]](f,m,h+68|0)|0;wd(a,b,f,c);x[f+64>>2]=x[x[d+44>>2]+(j<<2)>>2];if(e){x[b+4>>2]=x[b+4>>2]+4;}c=x[a+4>>2];sa[x[x[c>>2]+36>>2]](c,f);}x[h+68>>2]=1080;c=x[h+76>>2];if(c){g=Da();sa[x[x[g>>2]+20>>2]](g,c,8064,201);}qa=h+80|0;if(f){x[p+8>>2]=1080;Ca:{if(!x[p+28>>2]){x[p+12>>2]=0;x[p+16>>2]=0;break Ca}c=x[p+24>>2];x[p+12>>2]=c;g=Da();c=sa[x[x[g>>2]+12>>2]](g,c+1|0,8064,71)|0;x[p+16>>2]=c;Fa(c,x[p+28>>2],x[p+24>>2]+1|0);}re(m,n,p+8|0,f);x[p+8>>2]=1080;c=x[p+16>>2];if(c){f=Da();sa[x[x[f>>2]+20>>2]](f,c,8064,201);}}x[p+20>>2]=1080;c=x[p+28>>2];if(c){f=Da();sa[x[x[f>>2]+20>>2]](f,c,8064,201);}t=t+1|0;if((t|0)!=(k|0)){continue}break}}I=I+1|0;if((I|0)!=(s|0)){continue}break}}qa=p+32|0;return m}function Cg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=E(0),m=E(0),n=0,o=E(0),p=E(0),q=0,r=0,s=E(0),t=E(0),u=0,v=0,w=E(0),y=E(0),z=0,A=E(0),C=E(0),D=0,G=E(0),H=E(0),I=E(0);n=x[a+8>>2];if(n){f=x[a+92>>2];while(1){i=x[x[a+16>>2]+(e<<2)>>2];a:{b:{if(!f){break b}d=0;r=x[a+100>>2];if((i|0)==x[r>>2]){break a}while(1){d=d+1|0;if((f|0)==(d|0)){break b}if((i|0)!=x[r+(d<<2)>>2]){continue}break}if(d>>>0>>0){break a}}c:{if(x[a+96>>2]==(f|0)){m=E(E(f>>>0)*E(1.75));d:{if(E(F(m))>>0<=8?8:d;x[a+96>>2]=d;f=x[a+100>>2];r=Da();d=sa[x[x[r>>2]+16>>2]](r,f,d<<2,7693,106)|0;x[a+100>>2]=d;f=x[a+92>>2];d=d+(f<<2)|0;break c}d=x[a+100>>2]+(f<<2)|0;}x[d>>2]=i;f=f+1|0;x[a+92>>2]=f;}e=e+1|0;if((n|0)!=(e|0)){continue}break}}e=0;x[a+8>>2]=0;n=a+24|0;r=x[n>>2];e:{if(!r){f=x[a+112>>2];break e}f=x[a+112>>2];while(1){i=x[x[a+32>>2]+(e<<2)>>2];f:{g:{if(!f){break g}d=0;k=x[a+120>>2];if((i|0)==x[k>>2]){break f}while(1){d=d+1|0;if((f|0)==(d|0)){break g}if((i|0)!=x[k+(d<<2)>>2]){continue}break}if(d>>>0>>0){break f}}h:{if(x[a+116>>2]==(f|0)){m=E(E(f>>>0)*E(1.75));i:{if(E(F(m))>>0<=8?8:d;x[a+116>>2]=d;f=x[a+120>>2];k=Da();d=sa[x[x[k>>2]+16>>2]](k,f,d<<2,7693,106)|0;x[a+120>>2]=d;f=x[a+112>>2];d=d+(f<<2)|0;break h}d=x[a+120>>2]+(f<<2)|0;}x[d>>2]=i;f=f+1|0;x[a+112>>2]=f;}e=e+1|0;if((r|0)!=(e|0)){continue}break}}x[a+24>>2]=0;j:{if(f){d=f-1|0;f=x[x[a+120>>2]+(d<<2)>>2];x[a+112>>2]=d;break j}f=Ma(16,7942,57);x[f+12>>2]=0;x[f+4>>2]=0;x[f+8>>2]=0;x[f>>2]=13184;}x[f+4>>2]=0;d=x[a+92>>2];k:{if(d){e=d-1|0;d=x[x[a+100>>2]+(e<<2)>>2];x[a+92>>2]=e;break k}d=Ma(16,7942,57);x[d+12>>2]=0;x[d+4>>2]=0;x[d+8>>2]=0;x[d>>2]=13296;}r=a+112|0;x[d+4>>2]=0;D=x[c+4>>2];l:{if(!D){break l}i=-1;while(1){e=x[c+12>>2]+(z<<2)|0;g=x[e+8>>2];v=g<<1;k=x[b+12>>2];h=x[e>>2];j=k+(h<<3)|0;p=B[j>>2];g=k+(g<<3)|0;m=B[g>>2];q=x[e+4>>2];e=k+(q<<3)|0;o=B[e>>2];s=B[j+4>>2];t=B[g+4>>2];w=B[e+4>>2];g=x[d+4>>2];m:{n:{k=h<<1;if((k|0)!=(i|0)){break n}j=x[d+12>>2];e=j+(g<<2)|0;l=B[e-16>>2];G=B[e-12>>2];y=E(B[e-4>>2]-G);H=E(B[e-8>>2]-l);if(((E(E(E(H*G)+E(E(m*y)-E(t*H)))-E(l*y))>=E(0)?1:-1)|0)!=(u|0)){break n}l=E(B[j>>2]-m);y=E(B[j+4>>2]-t);if(((E(E(E(l*t)+E(E(B[j+8>>2]*y)-E(B[j+12>>2]*l)))-E(m*y))>=E(0)?1:-1)|0)!=(u|0)){break n}h=x[d+8>>2];o:{if((h|0)==(g|0)){p=E(E(g>>>0)*E(1.75));p:{if(E(F(p))>>0<=8?8:e;x[d+8>>2]=e;k=Da();j=sa[x[x[k>>2]+16>>2]](k,j,e<<2,7693,106)|0;x[d+12>>2]=j;g=x[d+4>>2];B[(g<<2)+j>>2]=m;h=x[d+8>>2];break o}B[e>>2]=m;}g=g+1|0;x[d+4>>2]=g;q:{if((g|0)==(h|0)){m=E(E(h>>>0)*E(1.75));r:{if(E(F(m))>>0<=8?8:e;x[d+8>>2]=e;k=Da();e=sa[x[x[k>>2]+16>>2]](k,j,e<<2,7693,106)|0;x[d+12>>2]=e;g=x[d+4>>2];e=e+(g<<2)|0;break q}e=(g<<2)+j|0;}B[e>>2]=t;x[d+4>>2]=g+1;g=x[f+4>>2];s:{if((g|0)==x[f+8>>2]){m=E(E(g>>>0)*E(1.75));t:{if(E(F(m))>>0<=8?8:e;x[f+8>>2]=e;k=x[f+12>>2];g=Da();e=sa[x[x[g>>2]+16>>2]](g,k,e<<2,7693,106)|0;x[f+12>>2]=e;g=x[f+4>>2];e=e+(g<<2)|0;break s}e=x[f+12>>2]+(g<<2)|0;}x[e>>2]=v;x[f+4>>2]=g+1;break m}u:{v:{if(g){g=x[a+8>>2];w:{if((g|0)==x[a+12>>2]){l=E(E(g>>>0)*E(1.75));x:{if(E(F(l))>>0<=8?8:e;x[a+12>>2]=e;i=x[a+16>>2];g=Da();e=sa[x[x[g>>2]+16>>2]](g,i,e<<2,7693,106)|0;x[a+16>>2]=e;g=x[a+8>>2];e=e+(g<<2)|0;break w}e=x[a+16>>2]+(g<<2)|0;}x[e>>2]=d;x[a+8>>2]=g+1;g=x[a+24>>2];if((g|0)==x[a+28>>2]){l=E(E(g>>>0)*E(1.75));y:{if(E(F(l))>>0<=8?8:d;x[a+28>>2]=d;e=x[a+32>>2];i=Da();d=sa[x[x[i>>2]+16>>2]](i,e,d<<2,7693,106)|0;x[a+32>>2]=d;g=x[a+24>>2];d=d+(g<<2)|0;e=n;break v}d=x[a+32>>2]+(g<<2)|0;e=n;break v}j=x[a+92>>2];z:{A:{if(!j){break A}g=0;e=x[a+100>>2];if(x[e>>2]==(d|0)){break z}while(1){g=g+1|0;if((g|0)==(j|0)){break A}if(x[e+(g<<2)>>2]!=(d|0)){continue}break}if(g>>>0>>0){break z}}B:{if(x[a+96>>2]==(j|0)){l=E(E(j>>>0)*E(1.75));C:{if(E(F(l))>>0<=8?8:e;x[a+96>>2]=e;i=x[a+100>>2];g=Da();e=sa[x[x[g>>2]+16>>2]](g,i,e<<2,7693,106)|0;x[a+100>>2]=e;j=x[a+92>>2];e=e+(j<<2)|0;break B}e=x[a+100>>2]+(j<<2)|0;}x[e>>2]=d;x[a+92>>2]=j+1;}g=x[r>>2];D:{if(!g){break D}d=0;e=x[a+120>>2];if(x[e>>2]==(f|0)){break u}while(1){d=d+1|0;if((g|0)==(d|0)){break D}if(x[e+(d<<2)>>2]!=(f|0)){continue}break}if(d>>>0>>0){break u}}E:{if(x[a+116>>2]==(g|0)){l=E(E(g>>>0)*E(1.75));F:{if(E(F(l))>>0<=8?8:d;x[a+116>>2]=d;e=x[a+120>>2];i=Da();d=sa[x[x[i>>2]+16>>2]](i,e,d<<2,7693,106)|0;x[a+120>>2]=d;g=x[a+112>>2];d=d+(g<<2)|0;break E}d=x[a+120>>2]+(g<<2)|0;}e=r;}x[d>>2]=f;x[e>>2]=g+1;}G:{H:{d=x[a+92>>2];I:{if(!d){d=Ma(16,7942,57);x[d+4>>2]=0;x[d+8>>2]=0;x[d>>2]=13296;x[d+12>>2]=0;e=d+8|0;j=d+4|0;break I}e=d-1|0;d=x[x[a+100>>2]+(e<<2)>>2];x[a+92>>2]=e;x[d+4>>2]=0;e=d+8|0;j=d+4|0;f=x[d+8>>2];if(f){break H}}x[d+8>>2]=8;i=x[d+12>>2];f=Da();g=sa[x[x[f>>2]+16>>2]](f,i,32,7693,106)|0;x[d+12>>2]=g;h=x[d+4>>2];B[(h<<2)+g>>2]=p;f=x[d+8>>2];break G}g=x[d+12>>2];B[g>>2]=p;h=0;}h=h+1|0;x[j>>2]=h;J:{if((f|0)==(h|0)){l=E(E(f>>>0)*E(1.75));K:{if(E(F(l))>>0<=8?8:i;x[e>>2]=i;f=Da();g=sa[x[x[f>>2]+16>>2]](f,g,i<<2,7693,106)|0;x[d+12>>2]=g;h=x[j>>2];B[(h<<2)+g>>2]=s;f=x[e>>2];break J}B[(h<<2)+g>>2]=s;}h=h+1|0;x[j>>2]=h;L:{if((f|0)==(h|0)){l=E(E(f>>>0)*E(1.75));M:{if(E(F(l))>>0<=8?8:i;x[e>>2]=i;f=Da();g=sa[x[x[f>>2]+16>>2]](f,g,i<<2,7693,106)|0;x[d+12>>2]=g;h=x[j>>2];B[(h<<2)+g>>2]=o;f=x[e>>2];break L}B[(h<<2)+g>>2]=o;}h=h+1|0;x[j>>2]=h;N:{if((f|0)==(h|0)){l=E(E(f>>>0)*E(1.75));O:{if(E(F(l))>>0<=8?8:i;x[e>>2]=i;f=Da();g=sa[x[x[f>>2]+16>>2]](f,g,i<<2,7693,106)|0;x[d+12>>2]=g;h=x[j>>2];B[(h<<2)+g>>2]=w;f=x[e>>2];break N}B[(h<<2)+g>>2]=w;}h=h+1|0;x[j>>2]=h;P:{if((f|0)==(h|0)){l=E(E(f>>>0)*E(1.75));Q:{if(E(F(l))>>0<=8?8:i;x[e>>2]=i;f=Da();g=sa[x[x[f>>2]+16>>2]](f,g,i<<2,7693,106)|0;x[d+12>>2]=g;h=x[j>>2];B[(h<<2)+g>>2]=m;f=x[e>>2];break P}B[(h<<2)+g>>2]=m;}h=h+1|0;x[j>>2]=h;R:{if((f|0)==(h|0)){h=e;l=E(E(f>>>0)*E(1.75));S:{if(E(F(l))>>0<=8?8:i;x[h>>2]=e;i=Da();e=sa[x[x[i>>2]+16>>2]](i,g,e<<2,7693,106)|0;x[d+12>>2]=e;h=x[j>>2];e=e+(h<<2)|0;break R}e=(h<<2)+g|0;}B[e>>2]=t;x[j>>2]=h+1;T:{U:{e=x[r>>2];V:{if(!e){f=Ma(16,7942,57);x[f+4>>2]=0;x[f+8>>2]=0;x[f>>2]=13184;x[f+12>>2]=0;i=f+8|0;g=f+4|0;break V}e=e-1|0;f=x[x[a+120>>2]+(e<<2)>>2];x[a+112>>2]=e;x[f+4>>2]=0;i=f+8|0;g=f+4|0;j=x[f+8>>2];if(j){break U}}x[f+8>>2]=8;e=x[f+12>>2];h=Da();e=sa[x[x[h>>2]+16>>2]](h,e,32,7693,106)|0;x[f+12>>2]=e;h=x[f+4>>2];x[(h<<2)+e>>2]=k;j=x[f+8>>2];break T}e=x[f+12>>2];x[e>>2]=k;h=0;}u=q<<1;h=h+1|0;x[g>>2]=h;W:{if((h|0)==(j|0)){l=E(E(j>>>0)*E(1.75));X:{if(E(F(l))>>0<=8?8:h;x[i>>2]=h;j=Da();e=sa[x[x[j>>2]+16>>2]](j,e,h<<2,7693,106)|0;x[f+12>>2]=e;h=x[g>>2];x[(h<<2)+e>>2]=u;j=x[i>>2];break W}x[(h<<2)+e>>2]=u;}h=h+1|0;x[g>>2]=h;Y:{if((h|0)==(j|0)){q=i;l=E(E(j>>>0)*E(1.75));Z:{if(E(F(l))>>0<=8?8:h;x[q>>2]=i;h=Da();e=sa[x[x[h>>2]+16>>2]](h,e,i<<2,7693,106)|0;x[f+12>>2]=e;h=x[g>>2];e=e+(h<<2)|0;break Y}e=(h<<2)+e|0;}x[e>>2]=v;x[g>>2]=h+1;o=E(o-p);l=m;m=E(w-s);u=E(E(E(o*s)+E(E(l*m)-E(t*o)))-E(p*m))>=E(0)?1:-1;i=k;}z=z+3|0;if(D>>>0>z>>>0){continue}break}if(!x[d+4>>2]){break l}g=x[a+8>>2];_:{if((g|0)==x[a+12>>2]){m=E(E(g>>>0)*E(1.75));$:{if(E(F(m))>>0<=8?8:b;x[a+12>>2]=b;c=x[a+16>>2];e=Da();b=sa[x[x[e>>2]+16>>2]](e,c,b<<2,7693,106)|0;x[a+16>>2]=b;g=x[a+8>>2];b=b+(g<<2)|0;break _}b=x[a+16>>2]+(g<<2)|0;}x[b>>2]=d;x[a+8>>2]=g+1;d=x[a+24>>2];aa:{if((d|0)==x[a+28>>2]){m=E(E(d>>>0)*E(1.75));ba:{if(E(F(m))>>0<=8?8:b;x[a+28>>2]=b;c=x[a+32>>2];d=Da();b=sa[x[x[d>>2]+16>>2]](d,c,b<<2,7693,106)|0;x[a+32>>2]=b;d=x[a+24>>2];b=b+(d<<2)|0;break aa}b=x[a+32>>2]+(d<<2)|0;}x[b>>2]=f;x[n>>2]=d+1;}i=x[a+8>>2];ca:{if(!i){break ca}f=0;while(1){b=f<<2;c=x[b+x[a+32>>2]>>2];n=x[c+4>>2];if(n){b=x[b+x[a+16>>2]>>2];d=x[b+12>>2];e=d+(x[b+4>>2]<<2)|0;p=B[e-8>>2];s=B[e-4>>2];o=B[e-12>>2];m=E(s-o);w=B[e-16>>2];t=E(p-w);l=B[d>>2];y=B[d+4>>2];G=E(E(E(t*o)+E(E(l*m)-E(y*t)))-E(w*m));e=x[c+12>>2];g=x[(e+(n<<2)|0)-4>>2];H=B[d+12>>2];I=B[d+8>>2];h=x[e>>2];d=0;while(1){m=s;t=p;da:{if((d|0)==(f|0)){d=f;break da}ea:{k=d<<2;e=x[k+x[a+32>>2]>>2];if(x[e+4>>2]!=3){break ea}n=x[e+12>>2];if((h|0)!=x[n>>2]|(g|0)!=x[n+4>>2]){break ea}A=E(t-w);k=x[k+x[a+16>>2]>>2];j=(x[k+4>>2]<<2)+x[k+12>>2]|0;p=B[j-8>>2];C=E(m-o);s=B[j-4>>2];j=G>=E(0);if((!(E(E(E(A*o)+E(E(p*C)-E(s*A)))-E(w*C))>=E(0))|0)==(j|0)){break ea}A=E(l-p);C=E(y-s);if(j^E(E(E(A*s)+E(E(I*C)-E(H*A)))-E(p*C))>=E(0)){break ea}n=x[n+8>>2];x[k+4>>2]=0;x[e+4>>2]=0;d=x[b+4>>2];j=x[b+8>>2];fa:{if((d|0)==(j|0)){o=E(E(d>>>0)*E(1.75));ga:{if(E(F(o))>>0<=8?8:d;x[b+8>>2]=d;e=x[b+12>>2];k=Da();e=sa[x[x[k>>2]+16>>2]](k,e,d<<2,7693,106)|0;x[b+12>>2]=e;d=x[b+4>>2];B[(d<<2)+e>>2]=p;j=x[b+8>>2];break fa}e=x[b+12>>2];B[e+(d<<2)>>2]=p;}d=d+1|0;x[b+4>>2]=d;ha:{if((d|0)==(j|0)){o=E(E(j>>>0)*E(1.75));ia:{if(E(F(o))>>0<=8?8:d;x[b+8>>2]=d;k=Da();e=sa[x[x[k>>2]+16>>2]](k,e,d<<2,7693,106)|0;x[b+12>>2]=e;d=x[b+4>>2];e=e+(d<<2)|0;break ha}e=(d<<2)+e|0;}B[e>>2]=s;x[b+4>>2]=d+1;d=x[c+4>>2];ja:{if((d|0)==x[c+8>>2]){o=E(E(d>>>0)*E(1.75));ka:{if(E(F(o))>>0<=8?8:d;x[c+8>>2]=d;e=x[c+12>>2];k=Da();e=sa[x[x[k>>2]+16>>2]](k,e,d<<2,7693,106)|0;x[c+12>>2]=e;d=x[c+4>>2];e=e+(d<<2)|0;break ja}e=x[c+12>>2]+(d<<2)|0;}x[e>>2]=n;x[c+4>>2]=d+1;d=0;o=m;w=t;break da}s=m;p=t;}d=d+1|0;if(i>>>0>d>>>0){continue}break}}f=f+1|0;if((i|0)!=(f|0)){continue}break}e=x[a+8>>2];if((e|0)<=0){break ca}z=e+1|0;i=0;b=e;while(1){c=b;b=b-1|0;n=b<<2;k=x[n+x[a+16>>2]>>2];la:{if(x[k+4>>2]){break la}g=z-i|0;h=i-e|0;f=x[a+8>>2];j=f-1|0;x[a+8>>2]=j;ma:{if(b>>>0>=j>>>0){break ma}d=b;if(f+h&1){d=x[a+16>>2];v=d+n|0;u=x[v>>2];q=d;d=c<<2;x[v>>2]=x[q+d>>2];x[d+x[a+16>>2]>>2]=u;d=c;}if((f|0)==(g|0)){break ma}while(1){f=x[a+16>>2];v=d<<2;u=f+v|0;D=x[u>>2];q=f;f=v+4|0;x[u>>2]=x[q+f>>2];x[f+x[a+16>>2]>>2]=D;q=f;f=x[a+16>>2];v=q+f|0;u=x[v>>2];q=f;d=d+2|0;f=d<<2;x[v>>2]=x[q+f>>2];x[f+x[a+16>>2]>>2]=u;if((d|0)!=(j|0)){continue}break}}f=x[a+92>>2];na:{oa:{if(!f){break oa}d=0;j=x[a+100>>2];if((k|0)==x[j>>2]){break na}while(1){d=d+1|0;if((f|0)==(d|0)){break oa}if((k|0)!=x[j+(d<<2)>>2]){continue}break}if(d>>>0>>0){break na}}pa:{if(x[a+96>>2]==(f|0)){m=E(E(f>>>0)*E(1.75));qa:{if(E(F(m))>>0<=8?8:d;x[a+96>>2]=d;f=x[a+100>>2];j=Da();d=sa[x[x[j>>2]+16>>2]](j,f,d<<2,7693,106)|0;x[a+100>>2]=d;f=x[a+92>>2];d=d+(f<<2)|0;break pa}d=x[a+100>>2]+(f<<2)|0;}x[d>>2]=k;x[a+92>>2]=f+1;}k=x[n+x[a+32>>2]>>2];f=x[a+24>>2];j=f-1|0;x[a+24>>2]=j;ra:{if(b>>>0>=j>>>0){break ra}d=b;if(f+h&1){d=x[a+32>>2];n=d+n|0;h=x[n>>2];q=d;d=c<<2;x[n>>2]=x[q+d>>2];x[d+x[a+32>>2]>>2]=h;d=c;}if((f|0)==(g|0)){break ra}while(1){f=x[a+32>>2];n=d<<2;g=f+n|0;h=x[g>>2];q=f;f=n+4|0;x[g>>2]=x[q+f>>2];x[f+x[a+32>>2]>>2]=h;h=f;f=x[a+32>>2];n=h+f|0;g=x[n>>2];h=f;d=d+2|0;f=d<<2;x[n>>2]=x[h+f>>2];x[f+x[a+32>>2]>>2]=g;if((d|0)!=(j|0)){continue}break}}f=x[r>>2];sa:{if(!f){break sa}d=0;n=x[a+120>>2];if((k|0)==x[n>>2]){break la}while(1){d=d+1|0;if((f|0)==(d|0)){break sa}if((k|0)!=x[n+(d<<2)>>2]){continue}break}if(d>>>0>>0){break la}}ta:{if(x[a+116>>2]==(f|0)){m=E(E(f>>>0)*E(1.75));ua:{if(E(F(m))>>0<=8?8:d;x[a+116>>2]=d;f=x[a+120>>2];n=Da();d=sa[x[x[n>>2]+16>>2]](n,f,d<<2,7693,106)|0;x[a+120>>2]=d;f=x[a+112>>2];d=d+(f<<2)|0;break ta}d=x[a+120>>2]+(f<<2)|0;}x[d>>2]=k;x[r>>2]=f+1;}i=i+1|0;if((c|0)>1){continue}break}}return a+4|0}function Og(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0,m=E(0),n=0,o=0,p=E(0),q=E(0),r=E(0),s=0,t=0,u=0,v=E(0),y=E(0),C=E(0),G=0,H=E(0),I=0,J=E(0),K=E(0),L=E(0),M=E(0),N=E(0),O=0,P=0,Q=E(0),R=E(0),S=E(0),T=E(0),U=0,V=0,W=0,X=E(0),Y=E(0),Z=E(0),_=E(0),$=E(0),aa=E(0),ba=E(0),ca=E(0),da=E(0),ea=E(0),fa=0,ga=E(0),ha=E(0),ia=0,ja=E(0),ka=E(0),la=E(0),ma=0,na=0,oa=0;V=x[a+228>>2];W=x[V+4>>2];x[a+196>>2]=0;x[a+164>>2]=0;x[a+180>>2]=0;a:{if(!d){break a}u=a+144|0;while(1){b:{if(W){h=(I<<1)+c|0;g=D(z[h>>1],f)<<2;X=B[g+e>>2];l=D(z[h+4>>1],f)<<2;Y=B[l+e>>2];h=D(z[h+2>>1],f)<<2;Z=B[h+e>>2];n=g+4|0;_=B[n+e>>2];o=l+4|0;$=B[o+e>>2];k=h+4|0;aa=B[k+e>>2];M=B[b+k>>2];H=B[b+o>>2];ba=E(M-H);J=B[b+g>>2];K=B[b+l>>2];ca=E(J-K);N=B[b+h>>2];da=E(K-N);L=B[b+n>>2];ea=E(E(1)/E(E(ba*ca)+E(da*E(L-H))));la=E(H-L);O=0;while(1){s=x[a+164>>2];h=0;P=0;l=a+208|0;U=x[x[V+12>>2]+(O<<2)>>2];n=x[U+4>>2]&2;g=n?u:l;x[g+4>>2]=0;i=x[g+8>>2];c:{if(!i){x[g+8>>2]=8;h=x[g+12>>2];o=Da();k=sa[x[x[o>>2]+16>>2]](o,h,32,7693,106)|0;x[g+12>>2]=k;h=x[g+4>>2];B[(h<<2)+k>>2]=J;i=x[g+8>>2];break c}k=x[g+12>>2];B[k>>2]=J;}h=h+1|0;x[g+4>>2]=h;d:{if((h|0)==(i|0)){m=E(E(i>>>0)*E(1.75));e:{if(E(F(m))>>0<=8?8:h;x[g+8>>2]=h;o=Da();k=sa[x[x[o>>2]+16>>2]](o,k,h<<2,7693,106)|0;x[g+12>>2]=k;h=x[g+4>>2];B[(h<<2)+k>>2]=L;i=x[g+8>>2];break d}B[(h<<2)+k>>2]=L;}h=h+1|0;x[g+4>>2]=h;f:{if((h|0)==(i|0)){m=E(E(i>>>0)*E(1.75));g:{if(E(F(m))>>0<=8?8:h;x[g+8>>2]=h;o=Da();k=sa[x[x[o>>2]+16>>2]](o,k,h<<2,7693,106)|0;x[g+12>>2]=k;h=x[g+4>>2];B[(h<<2)+k>>2]=N;i=x[g+8>>2];break f}B[(h<<2)+k>>2]=N;}h=h+1|0;x[g+4>>2]=h;h:{if((h|0)==(i|0)){m=E(E(i>>>0)*E(1.75));i:{if(E(F(m))>>0<=8?8:h;x[g+8>>2]=h;o=Da();k=sa[x[x[o>>2]+16>>2]](o,k,h<<2,7693,106)|0;x[g+12>>2]=k;h=x[g+4>>2];B[(h<<2)+k>>2]=M;i=x[g+8>>2];break h}B[(h<<2)+k>>2]=M;}h=h+1|0;x[g+4>>2]=h;j:{if((h|0)==(i|0)){m=E(E(i>>>0)*E(1.75));k:{if(E(F(m))>>0<=8?8:h;x[g+8>>2]=h;o=Da();k=sa[x[x[o>>2]+16>>2]](o,k,h<<2,7693,106)|0;x[g+12>>2]=k;h=x[g+4>>2];B[(h<<2)+k>>2]=K;i=x[g+8>>2];break j}B[(h<<2)+k>>2]=K;}h=h+1|0;x[g+4>>2]=h;l:{if((h|0)==(i|0)){m=E(E(i>>>0)*E(1.75));m:{if(E(F(m))>>0<=8?8:h;x[g+8>>2]=h;o=Da();k=sa[x[x[o>>2]+16>>2]](o,k,h<<2,7693,106)|0;x[g+12>>2]=k;h=x[g+4>>2];B[(h<<2)+k>>2]=H;i=x[g+8>>2];break l}B[(h<<2)+k>>2]=H;}j=h+1|0;x[g+4>>2]=j;n:{if((i|0)==(j|0)){m=E(E(i>>>0)*E(1.75));o:{if(E(F(m))>>0<=8?8:h;x[g+8>>2]=h;o=Da();k=sa[x[x[o>>2]+16>>2]](o,k,h<<2,7693,106)|0;x[g+12>>2]=k;j=x[g+4>>2];B[(j<<2)+k>>2]=J;i=x[g+8>>2];break n}B[(j<<2)+k>>2]=J;}h=n?l:u;j=j+1|0;x[g+4>>2]=j;p:{if((i|0)==(j|0)){m=E(E(i>>>0)*E(1.75));q:{if(E(F(m))>>0<=8?8:l;x[g+8>>2]=l;n=Da();l=sa[x[x[n>>2]+16>>2]](n,k,l<<2,7693,106)|0;x[g+12>>2]=l;j=x[g+4>>2];l=l+(j<<2)|0;break p}l=(j<<2)+k|0;}B[l>>2]=L;x[g+4>>2]=j+1;x[h+4>>2]=0;ma=x[U+4>>2]-4|0;n=0;r:{s:{while(1){t:{fa=x[g+4>>2]-2|0;if(!fa){break t}l=g;g=x[U+12>>2];k=n<<2;i=g+k|0;m=B[i>>2];o=n+2|0;Q=B[g+(o<<2)>>2];ga=E(m-Q);R=B[i+12>>2];q=B[g+(k|4)>>2];S=E(R-q);T=E(Q-m);ha=E(-E(q-R));t=0;g=0;while(1){i=x[l+12>>2];j=g<<2;ia=i+j|0;v=B[ia+12>>2];k=g+2|0;p=B[i+(k<<2)>>2];y=E(E(ga*E(v-R))+E(E(p-Q)*ha));r=B[i+(j|4)>>2];C=B[ia>>2];u:{v:{w:{if(E(E(ga*E(r-R))+E(E(C-Q)*ha))>E(0)){if(y>E(0)){i=x[h+8>>2];x:{if((t|0)==(i|0)){r=E(E(t>>>0)*E(1.75));y:{if(E(F(r))>>0<=8?8:g;x[h+8>>2]=g;i=x[h+12>>2];j=Da();j=sa[x[x[j>>2]+16>>2]](j,i,g<<2,7693,106)|0;x[h+12>>2]=j;t=x[h+4>>2];B[(t<<2)+j>>2]=p;i=x[h+8>>2];break x}j=x[h+12>>2];B[j+(t<<2)>>2]=p;}g=t+1|0;x[h+4>>2]=g;if((g|0)==(i|0)){p=E(E(i>>>0)*E(1.75));z:{if(E(F(p))>>0<=8?8:g;x[h+8>>2]=g;i=Da();i=sa[x[x[i>>2]+16>>2]](i,j,g<<2,7693,106)|0;x[h+12>>2]=i;g=x[h+4>>2];B[i+(g<<2)>>2]=v;break v}B[(g<<2)+j>>2]=v;break v}v=E(v-r);y=E(p-C);p=E(E(v*T)-E(S*y));if((pE(9.999999974752427e-7)){v=E(E(E(y*E(q-r))-E(E(m-C)*v))/p);p=E(E(T*v)+m);g=x[h+4>>2];i=x[h+8>>2];A:{if((g|0)==(i|0)){r=E(E(g>>>0)*E(1.75));B:{if(E(F(r))>>0<=8?8:g;x[h+8>>2]=g;i=x[h+12>>2];j=Da();j=sa[x[x[j>>2]+16>>2]](j,i,g<<2,7693,106)|0;x[h+12>>2]=j;g=x[h+4>>2];B[(g<<2)+j>>2]=p;i=x[h+8>>2];break A}j=x[h+12>>2];B[j+(g<<2)>>2]=p;}g=g+1|0;x[h+4>>2]=g;p=E(E(S*v)+q);if((g|0)==(i|0)){v=E(E(i>>>0)*E(1.75));C:{if(E(F(v))>>0<=8?8:g;x[h+8>>2]=g;i=Da();i=sa[x[x[i>>2]+16>>2]](i,j,g<<2,7693,106)|0;x[h+12>>2]=i;g=x[h+4>>2];B[i+(g<<2)>>2]=p;break w}B[(g<<2)+j>>2]=p;break w}g=x[h+4>>2];i=x[h+8>>2];D:{if((g|0)==(i|0)){p=E(E(g>>>0)*E(1.75));E:{if(E(F(p))>>0<=8?8:g;x[h+8>>2]=g;i=x[h+12>>2];j=Da();j=sa[x[x[j>>2]+16>>2]](j,i,g<<2,7693,106)|0;x[h+12>>2]=j;g=x[h+4>>2];B[(g<<2)+j>>2]=m;i=x[h+8>>2];break D}j=x[h+12>>2];B[j+(g<<2)>>2]=m;}g=g+1|0;x[h+4>>2]=g;if((g|0)==(i|0)){p=E(E(i>>>0)*E(1.75));F:{if(E(F(p))>>0<=8?8:g;x[h+8>>2]=g;i=Da();i=sa[x[x[i>>2]+16>>2]](i,j,g<<2,7693,106)|0;x[h+12>>2]=i;g=x[h+4>>2];B[i+(g<<2)>>2]=q;break w}B[(g<<2)+j>>2]=q;break w}P=1;if(!(y>E(0))){break u}ja=E(v-r);ka=E(p-C);y=E(E(ja*T)-E(S*ka));G:{if((yE(9.999999974752427e-7)){C=E(E(E(ka*E(q-r))-E(E(m-C)*ja))/y);r=E(E(T*C)+m);g=x[h+4>>2];j=x[h+8>>2];H:{if((g|0)==(j|0)){y=E(E(g>>>0)*E(1.75));I:{if(E(F(y))>>0<=8?8:g;x[h+8>>2]=g;i=x[h+12>>2];j=Da();i=sa[x[x[j>>2]+16>>2]](j,i,g<<2,7693,106)|0;x[h+12>>2]=i;g=x[h+4>>2];B[(g<<2)+i>>2]=r;j=x[h+8>>2];break H}i=x[h+12>>2];B[i+(g<<2)>>2]=r;}g=g+1|0;x[h+4>>2]=g;r=E(E(S*C)+q);if((g|0)==(j|0)){C=E(E(j>>>0)*E(1.75));J:{if(E(F(C))>>0<=8?8:g;x[h+8>>2]=g;j=Da();i=sa[x[x[j>>2]+16>>2]](j,i,g<<2,7693,106)|0;x[h+12>>2]=i;g=x[h+4>>2];B[(g<<2)+i>>2]=r;break G}B[(g<<2)+i>>2]=r;break G}g=x[h+4>>2];j=x[h+8>>2];K:{if((g|0)==(j|0)){r=E(E(g>>>0)*E(1.75));L:{if(E(F(r))>>0<=8?8:g;x[h+8>>2]=g;i=x[h+12>>2];j=Da();i=sa[x[x[j>>2]+16>>2]](j,i,g<<2,7693,106)|0;x[h+12>>2]=i;g=x[h+4>>2];B[(g<<2)+i>>2]=m;j=x[h+8>>2];break K}i=x[h+12>>2];B[i+(g<<2)>>2]=m;}g=g+1|0;x[h+4>>2]=g;if((g|0)==(j|0)){r=E(E(j>>>0)*E(1.75));M:{if(E(F(r))>>0<=8?8:g;x[h+8>>2]=g;j=Da();i=sa[x[x[j>>2]+16>>2]](j,i,g<<2,7693,106)|0;x[h+12>>2]=i;g=x[h+4>>2];B[(g<<2)+i>>2]=q;break G}B[(g<<2)+i>>2]=q;}g=g+1|0;x[h+4>>2]=g;j=x[h+8>>2];N:{if((j|0)==(g|0)){r=E(E(g>>>0)*E(1.75));O:{if(E(F(r))>>0<=8?8:g;x[h+8>>2]=g;j=Da();i=sa[x[x[j>>2]+16>>2]](j,i,g<<2,7693,106)|0;x[h+12>>2]=i;g=x[h+4>>2];B[(g<<2)+i>>2]=p;j=x[h+8>>2];break N}B[(g<<2)+i>>2]=p;}g=g+1|0;x[h+4>>2]=g;P:{if((g|0)==(j|0)){p=E(E(j>>>0)*E(1.75));Q:{if(E(F(p))>>0<=8?8:g;x[h+8>>2]=g;j=Da();i=sa[x[x[j>>2]+16>>2]](j,i,g<<2,7693,106)|0;x[h+12>>2]=i;g=x[h+4>>2];j=i+(g<<2)|0;break P}j=(g<<2)+i|0;}B[j>>2]=v;}P=1;}t=g+1|0;x[h+4>>2]=t;}g=k;if(fa>>>0>g>>>0){continue}break}if(!t){break t}g=x[h+12>>2];k=x[h+8>>2];R:{if((t|0)==(k|0)){m=B[g>>2];q=E(E(t>>>0)*E(1.75));S:{if(E(F(q))>>0<=8?8:k;x[h+8>>2]=k;i=Da();g=sa[x[x[i>>2]+16>>2]](i,g,k<<2,7693,106)|0;x[h+12>>2]=g;t=x[h+4>>2];B[(t<<2)+g>>2]=m;k=x[h+8>>2];break R}B[(t<<2)+g>>2]=B[g>>2];}i=t+1|0;x[h+4>>2]=i;T:{if((i|0)==(k|0)){m=B[g+4>>2];q=E(E(k>>>0)*E(1.75));U:{if(E(F(q))>>0<=8?8:k;x[h+8>>2]=k;i=Da();g=sa[x[x[i>>2]+16>>2]](i,g,k<<2,7693,106)|0;x[h+12>>2]=g;i=x[h+4>>2];B[g+(i<<2)>>2]=m;break T}B[(i<<2)+g>>2]=B[g+4>>2];}x[h+4>>2]=i+1;if((n|0)==(ma|0)){break s}x[l+4>>2]=0;n=o;g=h;h=l;continue}break}x[u+4>>2]=0;P=1;break r}if((h|0)!=(u|0)){g=0;x[u+4>>2]=0;n=x[h+4>>2]-2|0;if(!n){break r}i=0;while(1){l=x[h+12>>2]+(i<<2)|0;V:{if(x[u+8>>2]==(g|0)){m=B[l>>2];q=E(E(g>>>0)*E(1.75));W:{if(E(F(q))>>0<=8?8:g;x[u+8>>2]=g;l=x[u+12>>2];o=Da();l=sa[x[x[o>>2]+16>>2]](o,l,g<<2,7693,106)|0;x[u+12>>2]=l;g=x[u+4>>2];B[l+(g<<2)>>2]=m;break V}B[x[u+12>>2]+(g<<2)>>2]=B[l>>2];}g=g+1|0;x[u+4>>2]=g;i=i+1|0;if((n|0)!=(i|0)){continue}break}break r}g=x[u+4>>2];h=g-2|0;x[u+4>>2]=h;if(A[u+8>>2]>>0){m=E(E(h>>>0)*E(1.75));X:{if(E(F(m))>>0<=8?8:h;x[u+8>>2]=h;l=x[u+12>>2];n=Da();na=u,oa=sa[x[x[n>>2]+16>>2]](n,l,h<<2,7693,82)|0,x[na+12>>2]=oa;h=x[u+4>>2];}if(g>>>0>=h>>>0){break r}Ha(x[u+12>>2]+(g<<2)|0,0,h-g<<2);}if(!P){break b}o=x[a+148>>2];if(o){l=x[a+164>>2];g=(o&-2)+s|0;x[a+164>>2]=g;h=g;if(A[a+168>>2]>>0){m=E(E(g>>>0)*E(1.75));Y:{if(E(F(m))>>0<=8?8:h;x[a+168>>2]=h;n=x[a+172>>2];k=Da();na=a,oa=sa[x[x[k>>2]+16>>2]](k,n,h<<2,7693,82)|0,x[na+172>>2]=oa;h=x[a+164>>2];}if(h>>>0>l>>>0){Ha(x[a+172>>2]+(l<<2)|0,0,h-l<<2);}h=x[a+196>>2];x[a+196>>2]=g;if(A[a+200>>2]>>0){m=E(E(g>>>0)*E(1.75));Z:{if(E(F(m))>>0<=8?8:g;x[a+200>>2]=g;l=x[a+204>>2];n=Da();na=a,oa=sa[x[x[n>>2]+16>>2]](n,l,g<<2,7693,82)|0,x[na+204>>2]=oa;g=x[a+196>>2];}n=x[a+204>>2];if(g>>>0>h>>>0){Ha(n+(h<<2)|0,0,g-h<<2);}l=o>>>1|0;h=x[a+172>>2];k=x[a+156>>2];g=0;while(1){j=g<<2;m=B[j+k>>2];i=s<<2;t=i+4|0;q=B[k+(j|4)>>2];B[t+h>>2]=q;B[h+i>>2]=m;p=E(m-K);q=E(q-H);m=E(ea*E(E(ba*p)+E(da*q)));q=E(ea*E(E(la*p)+E(ca*q)));p=E(E(E(1)-m)-q);B[n+t>>2]=E($*p)+E(E(_*m)+E(aa*q));B[i+n>>2]=E(Y*p)+E(E(X*m)+E(Z*q));s=s+2|0;g=g+2|0;if(o>>>0>g>>>0){continue}break}g=x[a+180>>2];s=(g+D(l,3)|0)-6|0;x[a+180>>2]=s;if(A[a+184>>2]>>0){m=E(E(s>>>0)*E(1.75));_:{if(E(F(m))>>0<=8?8:h;x[a+184>>2]=h;n=x[a+188>>2];k=Da();na=a,oa=sa[x[x[k>>2]+16>>2]](k,n,h<<1,7693,82)|0,x[na+188>>2]=oa;s=x[a+180>>2];}if(g>>>0>>0){Ha(x[a+188>>2]+(g<<1)|0,0,s-g<<1);}$:{if(l-3>>>0>4294967293){break $}k=x[a+188>>2];s=1;if((l|0)!=3){j=(l&2147483646)-4|0;h=0;while(1){n=k+(g<<1)|0;w[n>>1]=G;w[n+6>>1]=G;i=s+G|0;t=i+1|0;w[n+4>>1]=t;w[n+2>>1]=i;w[n+10>>1]=i+2;w[n+8>>1]=t;s=s+2|0;g=g+6|0;n=(h|0)==(j|0);h=h+2|0;if(!n){continue}break}}if(!(o&2)){break $}h=k+(g<<1)|0;w[h>>1]=G;g=s+G|0;w[h+2>>1]=g;w[h+4>>1]=g+1;}G=l+G|0;}O=O+1|0;if((W|0)!=(O|0)){continue}break}}I=I+3|0;if(I>>>0>>0){continue}break a}l=x[a+164>>2];g=s+6|0;x[a+164>>2]=g;h=g;if(A[a+168>>2]>>0){m=E(E(g>>>0)*E(1.75));aa:{if(E(F(m))>>0<=8?8:h;x[a+168>>2]=h;n=x[a+172>>2];o=Da();na=a,oa=sa[x[x[o>>2]+16>>2]](o,n,h<<2,7693,82)|0,x[na+172>>2]=oa;h=x[a+164>>2];}if(h>>>0>l>>>0){Ha(x[a+172>>2]+(l<<2)|0,0,h-l<<2);}l=x[a+196>>2];x[a+196>>2]=g;if(A[a+200>>2]>>0){m=E(E(g>>>0)*E(1.75));ba:{if(E(F(m))>>0<=8?8:h;x[a+200>>2]=h;g=x[a+204>>2];n=Da();na=a,oa=sa[x[x[n>>2]+16>>2]](n,g,h<<2,7693,82)|0,x[na+204>>2]=oa;g=x[a+196>>2];}h=x[a+204>>2];if(g>>>0>l>>>0){Ha(h+(l<<2)|0,0,g-l<<2);}l=x[a+172>>2];g=s<<2;B[l+g>>2]=J;n=g+20|0;B[n+l>>2]=H;o=g+16|0;B[o+l>>2]=K;k=g+12|0;B[k+l>>2]=M;i=g+8|0;B[i+l>>2]=N;j=l;l=g+4|0;B[j+l>>2]=L;B[h+n>>2]=$;B[h+o>>2]=Y;B[h+k>>2]=aa;B[h+i>>2]=Z;B[h+l>>2]=_;B[g+h>>2]=X;h=x[a+180>>2];s=h+3|0;x[a+180>>2]=s;if(A[a+184>>2]>>0){m=E(E(s>>>0)*E(1.75));ca:{if(E(F(m))>>0<=8?8:g;x[a+184>>2]=g;l=x[a+188>>2];n=Da();na=a,oa=sa[x[x[n>>2]+16>>2]](n,l,g<<1,7693,82)|0,x[na+188>>2]=oa;s=x[a+180>>2];}g=x[a+188>>2];if(h>>>0>>0){Ha(g+(h<<1)|0,0,s-h<<1);}h=g+(h<<1)|0;w[h>>1]=G;w[h+4>>1]=G+2;w[h+2>>1]=G+1;G=G+3|0;I=I+3|0;if(I>>>0>>0){continue}break}}}function Bn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=E(0),r=E(0),s=0,t=0,u=E(0),v=E(0),C=E(0),F=0,G=0,H=0,I=0,J=E(0),K=E(0),L=E(0);if(y[a+54|0]){x[a+76>>2]=x[a+72>>2];}x[13608]=x[13607];x[13610]=x[13609];b=x[a+24>>2];x[b>>2]=0;x[b+4>>2]=0;x[b+24>>2]=x[b+20>>2];x[x[a+24>>2]+16>>2]=y[a+52|0]?28:24;i=qa-32|0;qa=i;G=x[a>>2]+40|0;H=x[G+4>>2];b=x[a+20>>2];if(b){sa[x[x[b>>2]+8>>2]](b,x[a>>2]);}a:{b:{c:{if(H){I=a+88|0;while(1){n=x[x[G+12>>2]+(F<<2)>>2];b=x[n+8>>2];d:{if(!(sa[x[x[b>>2]+16>>2]](b)|0)){break d}if(!x[n+60>>2]){zc(x[a+16>>2],n);break d}r=B[a+68>>2];J=B[a+64>>2];K=B[a+60>>2];C=B[a+56>>2];b=x[n+60>>2];b=pb(sa[x[x[b>>2]+8>>2]](b)|0,54268);g=x[n+60>>2];e:{f:{g:{h:{if(b){c=x[g+24>>2];b=x[c+4>>2];k=x[b+12>>2];l=k<<1;h=x[b+8>>2];i:{if(!y[a+52|0]){m=x[13610];e=x[13608];b=Fa(e,x[x[c+4>>2]>>2],D(h,24));Fa(m,x[x[c+4>>2]+4>>2],l);Oe(g,x[n+8>>2],b,0,6);break i}e=x[13608];m=x[13610];j:{if((h|0)<=0){break j}f=0;d=0;if(h>>>0>=4){s=h&-4;b=0;while(1){o=x[x[c+4>>2]>>2]+D(d,24)|0;t=x[o+16>>2];j=D(d,28)+e|0;x[j+12>>2]=x[o+12>>2];x[j+16>>2]=t;j=d|1;o=D(j,28)+e|0;j=x[x[c+4>>2]>>2]+D(j,24)|0;t=x[j+16>>2];x[o+12>>2]=x[j+12>>2];x[o+16>>2]=t;j=d|2;o=D(j,28)+e|0;j=x[x[c+4>>2]>>2]+D(j,24)|0;t=x[j+16>>2];x[o+12>>2]=x[j+12>>2];x[o+16>>2]=t;j=d|3;o=D(j,28)+e|0;j=x[x[c+4>>2]>>2]+D(j,24)|0;t=x[j+16>>2];x[o+12>>2]=x[j+12>>2];x[o+16>>2]=t;d=d+4|0;b=b+4|0;if((s|0)!=(b|0)){continue}break}}b=h&3;if(!b){break j}while(1){j=x[x[c+4>>2]>>2]+D(d,24)|0;o=x[j+16>>2];s=D(d,28)+e|0;x[s+12>>2]=x[j+12>>2];x[s+16>>2]=o;d=d+1|0;f=f+1|0;if((b|0)!=(f|0)){continue}break}}Fa(m,x[x[c+4>>2]+4>>2],l);Oe(g,x[n+8>>2],e,0,7);}x[i+20>>2]=k;x[i+16>>2]=h;x[i+12>>2]=m;x[i+8>>2]=e;b=g+144|0;q=B[b+4>>2];u=B[b+8>>2];v=B[b+12>>2];m=0;break h}b=pb(sa[x[x[g>>2]+8>>2]](g)|0,54184);g=x[n+60>>2];if(!b){break g}c=x[g+68>>2];b=x[c+4>>2];k=x[b+12>>2];l=k<<1;h=x[b+8>>2];k:{if(!y[a+52|0]){m=x[13610];e=x[13608];b=Fa(e,x[x[c+4>>2]>>2],D(h,24));Fa(m,x[x[c+4>>2]+4>>2],l);pd(g,n,0,x[g+52>>2],b,0,6);break k}e=x[13608];m=x[13610];l:{if((h|0)<=0){break l}f=0;d=0;if(h>>>0>=4){s=h&-4;b=0;while(1){o=x[x[c+4>>2]>>2]+D(d,24)|0;t=x[o+16>>2];j=D(d,28)+e|0;x[j+12>>2]=x[o+12>>2];x[j+16>>2]=t;j=d|1;o=D(j,28)+e|0;j=x[x[c+4>>2]>>2]+D(j,24)|0;t=x[j+16>>2];x[o+12>>2]=x[j+12>>2];x[o+16>>2]=t;j=d|2;o=D(j,28)+e|0;j=x[x[c+4>>2]>>2]+D(j,24)|0;t=x[j+16>>2];x[o+12>>2]=x[j+12>>2];x[o+16>>2]=t;j=d|3;o=D(j,28)+e|0;j=x[x[c+4>>2]>>2]+D(j,24)|0;t=x[j+16>>2];x[o+12>>2]=x[j+12>>2];x[o+16>>2]=t;d=d+4|0;b=b+4|0;if((s|0)!=(b|0)){continue}break}}b=h&3;if(!b){break l}while(1){j=x[x[c+4>>2]>>2]+D(d,24)|0;o=x[j+16>>2];s=D(d,28)+e|0;x[s+12>>2]=x[j+12>>2];x[s+16>>2]=o;d=d+1|0;f=f+1|0;if((b|0)!=(f|0)){continue}break}}Fa(m,x[x[c+4>>2]+4>>2],l);pd(g,n,0,x[g+52>>2],e,0,7);}x[i+20>>2]=k;x[i+16>>2]=h;x[i+12>>2]=m;x[i+8>>2]=e;b=g+204|0;q=B[b+4>>2];u=B[b+8>>2];v=B[b+12>>2];m=1;}L=B[b+16>>2];x[i+28>>2]=x[c+8>>2];r=E(E(r*L)*E(E(B[(x[a>>2]+140|0)+16>>2]*E(255))*B[(n+16|0)+16>>2]));if(!(r=E(0))){break f}b=~~r>>>0;break e}if(pb(sa[x[x[g>>2]+8>>2]](g)|0,54068)){Pg(x[a+16>>2],n,x[n+60>>2]);break d}zc(x[a+16>>2],n);break d}b=0;}r=y[a+53|0]?E(b>>>0):E(255);C=E(C*q);q=E(r*E(C*E(B[(x[a>>2]+140|0)+4>>2]*B[(n+16|0)+4>>2])));m:{if(q=E(0)){c=~~q>>>0;break m}c=0;}c=c+(b<<24)|0;u=E(K*u);q=E(r*E(u*E(B[(x[a>>2]+140|0)+8>>2]*B[(n+16|0)+8>>2])));n:{if(q=E(0)){b=~~q>>>0;break n}b=0;}d=c+(b<<8)|0;v=E(J*v);q=E(r*E(v*E(B[(x[a>>2]+140|0)+12>>2]*B[(n+16|0)+12>>2])));o:{if(q=E(0)){b=~~q>>>0;break o}b=0;}e=b<<16;f=0;b=0;c=0;p:{if(!y[n+56|0]){break p}q=E(r*E(C*E(B[(x[a>>2]+140|0)+4>>2]*B[(n+36|0)+4>>2])));q:{if(q=E(0)){b=~~q>>>0;break q}b=0;}q=E(r*E(u*E(B[(x[a>>2]+140|0)+8>>2]*B[(n+36|0)+8>>2])));r:{if(q=E(0)){f=~~q>>>0;break r}f=0;}r=E(r*E(v*E(B[(x[a>>2]+140|0)+12>>2]*B[(n+36|0)+12>>2])));if(r=E(0)){c=~~r>>>0;break p}c=0;}g=d+e|0;h=y[a+53|0];e=x[x[a+16>>2]+224>>2]!=0;d=x[i+8>>2];s:{if(!y[a+52|0]){if(e){Og(x[a+16>>2],d,x[i+12>>2],x[i+20>>2],d+12|0,6);b=x[a+16>>2];if(!x[(x[a+16>>2]+176|0)+4>>2]){zc(b,n);break d}c=x[(b+160|0)+4>>2];b=c>>1;d=x[13608];f=x[13610];e=x[(x[a+16>>2]+176|0)+4>>2];x[i+20>>2]=e;x[i+16>>2]=b;x[i+12>>2]=f;x[i+8>>2]=d;Fa(f,x[(x[a+16>>2]+176|0)+12>>2],e<<1);f=x[(x[a+16>>2]+160|0)+12>>2];d=x[(x[a+16>>2]+192|0)+12>>2];h=x[i+8>>2];if(x[a+20>>2]){if((c|0)<2){break s}k=(b|0)<=1?1:b;b=0;e=0;while(1){c=h+D(b,24)|0;l=e<<2;B[c>>2]=B[l+f>>2];s=l|4;B[c+4>>2]=B[s+f>>2];B[c+12>>2]=B[d+l>>2];B[c+16>>2]=B[d+s>>2];l=x[a+20>>2];sa[x[x[l>>2]+12>>2]](l,c,c+4|0);x[c+20>>2]=g;e=e+2|0;b=b+1|0;if((k|0)!=(b|0)){continue}break}break s}if((c|0)<2){break s}k=(b|0)<=1?1:b;b=0;e=0;while(1){c=h+D(b,24)|0;l=e<<2;B[c>>2]=B[l+f>>2];s=l|4;B[c+4>>2]=B[s+f>>2];B[c+12>>2]=B[d+l>>2];r=B[d+s>>2];x[c+20>>2]=g;B[c+16>>2]=r;e=e+2|0;b=b+1|0;if((k|0)!=(b|0)){continue}break}break s}c=x[i+16>>2];if(x[a+20>>2]){if(!c){break s}e=0;if((c|0)!=1){h=c&-2;b=0;while(1){l=x[a+20>>2];f=d+D(e,24)|0;sa[x[x[l>>2]+12>>2]](l,f,f+4|0);x[f+20>>2]=g;l=x[a+20>>2];f=d+D(e|1,24)|0;sa[x[x[l>>2]+12>>2]](l,f,f+4|0);x[f+20>>2]=g;e=e+2|0;b=b+2|0;if((h|0)!=(b|0)){continue}break}}if(!(c&1)){break s}c=x[a+20>>2];b=d+D(e,24)|0;sa[x[x[c>>2]+12>>2]](c,b,b+4|0);x[b+20>>2]=g;break s}if(!c){break s}f=0;e=0;if(c>>>0>=8){h=c&-8;b=0;while(1){x[(d+D(e,24)|0)+20>>2]=g;x[(d+D(e|1,24)|0)+20>>2]=g;x[(d+D(e|2,24)|0)+20>>2]=g;x[(d+D(e|3,24)|0)+20>>2]=g;x[(d+D(e|4,24)|0)+20>>2]=g;x[(d+D(e|5,24)|0)+20>>2]=g;x[(d+D(e|6,24)|0)+20>>2]=g;x[(d+D(e|7,24)|0)+20>>2]=g;e=e+8|0;b=b+8|0;if((h|0)!=(b|0)){continue}break}}b=c&7;if(!b){break s}while(1){x[(d+D(e,24)|0)+20>>2]=g;e=e+1|0;f=f+1|0;if((b|0)!=(f|0)){continue}break}break s}c=(((f<<8)+(c<<16)|0)+b|0)+(h?-16777216:0)|0;if(e){Og(x[a+16>>2],d,x[i+12>>2],x[i+20>>2],d+12|0,7);b=x[a+16>>2];if(!x[(x[a+16>>2]+176|0)+4>>2]){zc(b,n);break d}d=x[(b+160|0)+4>>2];b=d>>1;e=x[13608];f=x[13610];h=x[(x[a+16>>2]+176|0)+4>>2];x[i+20>>2]=h;x[i+16>>2]=b;x[i+12>>2]=f;x[i+8>>2]=e;Fa(f,x[(x[a+16>>2]+176|0)+12>>2],h<<1);f=x[(x[a+16>>2]+160|0)+12>>2];h=x[(x[a+16>>2]+192|0)+12>>2];l=x[i+8>>2];if(x[a+20>>2]){if((d|0)<2){break s}s=(b|0)<=1?1:b;e=0;d=0;while(1){b=l+D(d,28)|0;k=e<<2;B[b>>2]=B[k+f>>2];j=k|4;B[b+4>>2]=B[j+f>>2];B[b+12>>2]=B[h+k>>2];B[b+16>>2]=B[h+j>>2];k=x[a+20>>2];sa[x[x[k>>2]+12>>2]](k,b,b+4|0);x[b+24>>2]=c;x[b+20>>2]=g;e=e+2|0;d=d+1|0;if((s|0)!=(d|0)){continue}break}break s}if((d|0)<2){break s}s=(b|0)<=1?1:b;e=0;d=0;while(1){b=l+D(d,28)|0;k=e<<2;B[b>>2]=B[k+f>>2];j=k|4;B[b+4>>2]=B[j+f>>2];B[b+12>>2]=B[h+k>>2];r=B[h+j>>2];x[b+24>>2]=c;x[b+20>>2]=g;B[b+16>>2]=r;e=e+2|0;d=d+1|0;if((s|0)!=(d|0)){continue}break}break s}h=x[i+16>>2];if(x[a+20>>2]){if(!h){break s}f=0;if((h|0)!=1){l=h&-2;e=0;while(1){k=x[a+20>>2];b=d+D(f,28)|0;sa[x[x[k>>2]+12>>2]](k,b,b+4|0);x[b+24>>2]=c;x[b+20>>2]=g;k=x[a+20>>2];b=d+D(f|1,28)|0;sa[x[x[k>>2]+12>>2]](k,b,b+4|0);x[b+24>>2]=c;x[b+20>>2]=g;f=f+2|0;e=e+2|0;if((l|0)!=(e|0)){continue}break}}if(!(h&1)){break s}e=x[a+20>>2];b=d+D(f,28)|0;sa[x[x[e>>2]+12>>2]](e,b,b+4|0);x[b+24>>2]=c;x[b+20>>2]=g;break s}if(!h){break s}b=0;f=0;if(h>>>0>=4){l=h&-4;e=0;while(1){k=d+D(f,28)|0;x[k+24>>2]=c;x[k+20>>2]=g;k=d+D(f|1,28)|0;x[k+24>>2]=c;x[k+20>>2]=g;k=d+D(f|2,28)|0;x[k+24>>2]=c;x[k+20>>2]=g;k=d+D(f|3,28)|0;x[k+24>>2]=c;x[k+20>>2]=g;f=f+4|0;e=e+4|0;if((l|0)!=(e|0)){continue}break}}e=h&3;if(!e){break s}while(1){h=d+D(f,28)|0;x[h+24>>2]=c;x[h+20>>2]=g;f=f+1|0;b=b+1|0;if((e|0)!=(b|0)){continue}break}}x[13608]=x[13608]+D(x[i+16>>2],y[a+52|0]?28:24);x[13610]=x[13610]+(x[i+20>>2]<<1);t:{if(!y[a+54|0]){break t}b=x[a+24>>2];e=x[b+4>>2];g=x[b>>2];h=x[i+20>>2];l=x[i+16>>2];d=x[a+76>>2];if((d|0)!=x[a+80>>2]){x[d+16>>2]=h;x[d+12>>2]=e;x[d+8>>2]=l;x[d+4>>2]=g;x[d>>2]=m;x[a+76>>2]=d+20;break t}k=x[a+72>>2];c=(d-k|0)/20|0;b=c+1|0;if(b>>>0>=214748365){break c}f=c<<1;f=c>>>0>=107374182?214748364:b>>>0>>0?f:b;if(f){if(f>>>0>=214748365){break b}b=Ea(D(f,20));}else {b=0;}c=b+D(c,20)|0;x[c+16>>2]=h;x[c+12>>2]=e;x[c+8>>2]=l;x[c+4>>2]=g;x[c>>2]=m;e=c+20|0;if((d|0)!=(k|0)){while(1){d=d-20|0;g=x[d+4>>2];c=c-20|0;x[c>>2]=x[d>>2];x[c+4>>2]=g;x[c+16>>2]=x[d+16>>2];g=x[d+12>>2];x[c+8>>2]=x[d+8>>2];x[c+12>>2]=g;if((d|0)!=(k|0)){continue}break}d=x[a+72>>2];}x[a+80>>2]=b+D(f,20);x[a+76>>2]=e;x[a+72>>2]=c;if(!d){break t}Ja(d);}x[i+24>>2]=x[x[n+4>>2]+80>>2];u:{if(!y[a+55|0]){break u}c=I;d=x[a+88>>2];if(!d){break u}while(1){b=A[d+16>>2]>>0;c=b?c:d;d=x[(b?d+4|0:d)>>2];if(d){continue}break}if((c|0)==(I|0)|A[c+16>>2]>n>>>0){break u}x[i+28>>2]=x[c+20>>2];}f=x[a+24>>2];c=x[f+24>>2];e=x[f+20>>2];d=(c-e|0)/24|0;v:{w:{x:{y:{z:{m=(c|0)==(e|0);if(m){break z}b=d-1|0;g=e+D(b,24)|0;if(x[g+16>>2]!=x[i+24>>2]|x[g+20>>2]!=x[i+28>>2]){break z}b=e+D(b,24)|0;x[b+8>>2]=x[b+8>>2]+x[i+16>>2];x[b+12>>2]=x[b+12>>2]+x[i+20>>2];break y}if(x[f+28>>2]!=(c|0)){b=x[i+12>>2];x[c>>2]=x[i+8>>2];x[c+4>>2]=b;b=x[i+28>>2];x[c+16>>2]=x[i+24>>2];x[c+20>>2]=b;b=x[i+20>>2];x[c+8>>2]=x[i+16>>2];x[c+12>>2]=b;x[f+24>>2]=c+24;break y}b=d+1|0;if(b>>>0>=178956971){break x}g=d<<1;g=d>>>0>=89478485?178956970:b>>>0>>0?g:b;if(g){if(g>>>0>=178956971){break w}b=Ea(D(g,24));}else {b=0;}d=b+D(d,24)|0;h=x[i+12>>2];x[d>>2]=x[i+8>>2];x[d+4>>2]=h;h=x[i+28>>2];x[d+16>>2]=x[i+24>>2];x[d+20>>2]=h;h=x[i+20>>2];x[d+8>>2]=x[i+16>>2];x[d+12>>2]=h;h=d+24|0;if(!m){while(1){c=c-24|0;m=x[c+4>>2];d=d-24|0;x[d>>2]=x[c>>2];x[d+4>>2]=m;m=x[c+20>>2];x[d+16>>2]=x[c+16>>2];x[d+20>>2]=m;m=x[c+12>>2];x[d+8>>2]=x[c+8>>2];x[d+12>>2]=m;if((c|0)!=(e|0)){continue}break}c=x[f+20>>2];}x[f+28>>2]=b+D(g,24);x[f+24>>2]=h;x[f+20>>2]=d;if(!c){break y}Ja(c);}m=x[i+20>>2];A:{if(!m){break A}d=x[i+12>>2];e=x[f>>2];b=0;c=0;if(m>>>0>=4){l=m&-4;h=0;while(1){g=c<<1;k=g+d|0;w[k>>1]=e+z[k>>1];k=d+(g|2)|0;w[k>>1]=e+z[k>>1];k=d+(g|4)|0;w[k>>1]=e+z[k>>1];g=d+(g|6)|0;w[g>>1]=e+z[g>>1];c=c+4|0;h=h+4|0;if((l|0)!=(h|0)){continue}break}}g=m&3;if(!g){break A}while(1){h=d+(c<<1)|0;w[h>>1]=e+z[h>>1];c=c+1|0;b=b+1|0;if((g|0)!=(b|0)){continue}break}}h=x[i+16>>2];B:{if(!h){break B}e=x[f+16>>2]>>>2|0;g=x[i+8>>2];d=0;c=0;if(h>>>0>=4){l=h&-4;b=0;while(1){x[g+(D(c,e)<<2|8)>>2]=0;x[(g+(D(e,c|1)<<2)|0)+8>>2]=0;x[(g+(D(e,c|2)<<2)|0)+8>>2]=0;x[(g+(D(e,c|3)<<2)|0)+8>>2]=0;c=c+4|0;b=b+4|0;if((l|0)!=(b|0)){continue}break}}b=h&3;if(!b){break B}while(1){x[(g+(D(c,e)<<2)|0)+8>>2]=0;c=c+1|0;d=d+1|0;if((b|0)!=(d|0)){continue}break}}x[f>>2]=h+x[f>>2];x[f+4>>2]=m+x[f+4>>2];break v}O();p();}kb();p();}zc(x[a+16>>2],n);}F=F+1|0;if((F|0)!=(H|0)){continue}break}}b=x[a+16>>2];if(x[b+224>>2]){x[b+224>>2]=0;x[b+228>>2]=0;x[b+196>>2]=0;x[b+164>>2]=0;x[b+180>>2]=0;x[b+132>>2]=0;}b=x[a+20>>2];if(b){sa[x[x[b>>2]+16>>2]](b);}qa=i+32|0;break a}O();p();}kb();p();}b=x[13607];c=x[a+24>>2];x[c+12>>2]=x[13609];x[c+8>>2]=b;return x[a+24>>2]}function rr(a){a=a|0;var b=0,c=E(0),d=0,e=0,f=E(0),g=E(0),h=0,i=E(0),j=E(0),k=E(0),l=E(0),m=0,n=0,o=E(0),p=E(0),q=E(0),r=0,s=E(0),t=E(0),u=E(0),w=0,z=0,C=E(0),G=E(0),H=0,I=0,J=0,K=0,L=E(0),N=E(0),O=E(0),P=0,Q=E(0),R=0,S=0,T=0,U=0,V=E(0),W=E(0),X=0,Y=0,Z=0,_=E(0),$=0,aa=0;a:{w=x[x[a+24>>2]+60>>2];if(!w){break a}if(!Fc(sa[x[x[w>>2]+8>>2]](w)|0,54196)){break a}V=B[a+40>>2];Q=B[a+36>>2];if(!(V>E(0)|Q>E(0))){break a}d=x[a+48>>2];T=x[a+4>>2];m=x[T+48>>2];P=x[a+12>>2];I=x[T+52>>2];h=(I|0)!=0;e=P+h|0;x[a+48>>2]=e;b=e;if(b>>>0>A[a+52>>2]){c=E(E(e>>>0)*E(1.75));b:{if(E(F(c))>>0<=8?8:b;x[a+52>>2]=b;r=x[a+56>>2];n=Da();$=a,aa=sa[x[x[n>>2]+16>>2]](n,r,b<<2,7693,82)|0,x[$+56>>2]=aa;b=x[a+48>>2];}if(b>>>0>d>>>0){Ha(x[a+56>>2]+(d<<2)|0,0,b-d<<2);}i=B[a+32>>2];c:{if(!((I|0)==2|(m|0)!=2)){if(e>>>0<2){break c}b=h+P|0;n=b-1|0;d=n&7;r=x[a+56>>2];h=1;if(b-2>>>0>=7){n=n&-8;while(1){b=r+(h<<2)|0;B[b>>2]=i;B[b+28>>2]=i;B[b+24>>2]=i;B[b+20>>2]=i;B[b+16>>2]=i;B[b+12>>2]=i;B[b+8>>2]=i;B[b+4>>2]=i;h=h+8|0;z=z+8|0;if((n|0)!=(z|0)){continue}break}}if(!d){break c}b=0;while(1){B[r+(h<<2)>>2]=i;h=h+1|0;b=b+1|0;if((d|0)!=(b|0)){continue}break}break c}d:{if((I|0)!=2){break d}d=x[a+112>>2];x[a+112>>2]=P;b=P;if(b>>>0>A[a+116>>2]){c=E(E(P>>>0)*E(1.75));e:{if(E(F(c))>>0<=8?8:b;x[a+116>>2]=b;h=x[a+120>>2];r=Da();$=a,aa=sa[x[x[r>>2]+16>>2]](r,h,b<<2,7693,82)|0,x[$+120>>2]=aa;b=x[a+112>>2];}if(b>>>0<=d>>>0){break d}Ha(x[a+120>>2]+(d<<2)|0,0,b-d<<2);}d=e-1|0;if(!d){break c}b=0;if((m|0)==2){while(1){r=b<<2;h=x[r+x[a+20>>2]>>2];c=B[x[h+4>>2]+24>>2];f:{g:{if(!(c>2]);c=E(c*B[h+104>>2]);c=E(M(E(E(f*f)+E(c*c))));f=i;break g}c=E(0);f=E(0);if((I|0)!=2){break f}}B[r+x[a+120>>2]>>2]=c;}b=b+1|0;B[x[a+56>>2]+(b<<2)>>2]=f;if(b>>>0>>0){continue}break c}}n=x[T+48>>2];while(1){h=b<<2;r=x[h+x[a+20>>2]>>2];c=B[x[r+4>>2]+24>>2];h:{if(c>2]>>2]=0;break h}f=E(c*B[r+92>>2]);l=E(f*f);f=E(c*B[r+104>>2]);f=E(M(E(l+E(f*f))));if((I|0)==2){B[h+x[a+120>>2]>>2]=f;}c=E(E(E(i+(n?E(-0):c))*f)/c);}b=b+1|0;B[x[a+56>>2]+(b<<2)>>2]=c;if(b>>>0>>0){continue}break}}R=x[T+44>>2]==1;f=E(0);d=a;a=a- -64|0;b=x[a>>2];h=a;r=e;a=D(e,3)+2|0;x[h>>2]=a;l=B[d+28>>2];z=x[d+24>>2];if(A[d+68>>2]>>0){c=E(E(a>>>0)*E(1.75));i:{if(E(F(c))>>0<=8?8:a;x[d+68>>2]=a;h=x[d+72>>2];e=Da();$=d,aa=sa[x[x[e>>2]+16>>2]](e,h,a<<2,7693,82)|0,x[$+72>>2]=aa;a=x[d+64>>2];}if(a>>>0>b>>>0){Ha(x[d+72>>2]+(b<<2)|0,0,a-b<<2);}X=!I;H=(m|0)==2;S=d+60|0;K=d+76|0;U=y[w+80|0];J=x[w+52>>2];m=(J|0)/6|0;j:{if(!y[w+81|0]){Y=w- -64|0;n=(U?-1:-2)+m|0;f=B[x[Y+12>>2]+(n<<2)>>2];k:{if(!H|(r|0)<2){break k}b=r-1|0;h=b&3;m=x[d+56>>2];a=1;if(r-2>>>0>=3){H=b&-4;e=0;while(1){b=m+(a<<2)|0;B[b>>2]=f*B[b>>2];B[b+4>>2]=f*B[b+4>>2];B[b+8>>2]=f*B[b+8>>2];B[b+12>>2]=f*B[b+12>>2];a=a+4|0;e=e+4|0;if((H|0)!=(e|0)){continue}break}}if(!h){break k}b=0;while(1){e=m+(a<<2)|0;B[e>>2]=f*B[e>>2];a=a+1|0;b=b+1|0;if((h|0)!=(b|0)){continue}break}}a=x[d+80>>2];b=8;x[d+80>>2]=8;if(A[d+84>>2]<=7){x[d+84>>2]=14;b=x[d+88>>2];h=Da();$=d,aa=sa[x[x[h>>2]+16>>2]](h,b,56,7693,82)|0,x[$+88>>2]=aa;b=x[d+80>>2];}if(a>>>0>>0){Ha(x[d+88>>2]+(a<<2)|0,0,b-a<<2);}if((r|0)<=0){break j}t=E(l*(R?f:E(1)));R=J-4|0;J=J-6|0;h=-1;e=0;a=0;m=0;while(1){j=B[x[d+56>>2]+(e<<2)>>2];t=E(t+j);l:{m:{if(U){c=Sb(t,f);c=E(c+(c>2];c=B[b+4>>2];j=B[b>>2];i=Va(E(B[b+12>>2]-c),E(B[b+8>>2]-j));l=Hb(i);b=m<<2;B[b+x[d+72>>2]>>2]=j+E(t*l);j=Fb(i);b=b+x[d+72>>2]|0;B[b+8>>2]=i;B[b+4>>2]=c+E(t*j);h=-2;break l}if(!(f>2];i=B[b+12>>2];j=B[b+8>>2];c=Va(E(i-B[b+4>>2]),E(j-B[b>>2]));l=Hb(c);b=m<<2;g=j;j=E(t-f);B[b+x[d+72>>2]>>2]=g+E(l*j);l=Fb(c);b=b+x[d+72>>2]|0;B[b+8>>2]=c;B[b+4>>2]=i+E(j*l);h=-3;break l}H=x[Y+12>>2];while(1){a=b;b=b+1|0;Z=H+(a<<2)|0;i=B[Z>>2];if(i>2];c=E(E(l-c)/E(i-c));}else {c=E(c/i);}n:{if((a|0)==(h|0)){break n}if(!(U^1|(a|0)!=(n|0))){Wb(w,z,R,4,K,0,2);Wb(w,z,0,4,K,4,2);h=n;break n}Wb(w,z,D(a,6)+2|0,8,K,0,2);h=a;}b=x[d+88>>2];hh(c,B[b>>2],B[b+4>>2],B[b+8>>2],B[b+12>>2],B[b+16>>2],B[b+20>>2],B[b+24>>2],B[b+28>>2],S,m,(e|0)!=0&j>2];h=J+2|0;x[d+80>>2]=h;b=h;if(b>>>0>A[d+84>>2]){c=E(E(h>>>0)*E(1.75));p:{if(E(F(c))>>0<=8?8:b;x[d+84>>2]=b;e=x[d+88>>2];n=Da();$=d,aa=sa[x[x[n>>2]+16>>2]](n,e,b<<2,7693,82)|0,x[$+88>>2]=aa;b=x[d+80>>2];}if(a>>>0>>0){Ha(x[d+88>>2]+(a<<2)|0,0,b-a<<2);}a=J-2|0;Wb(w,z,2,a,K,0,2);Wb(w,z,0,2,K,a,2);a=x[d+88>>2];b=a+(J<<2)|0;B[b>>2]=B[a>>2];B[b+4>>2]=B[a+4>>2];break o}a=x[d+80>>2];h=J-4|0;x[d+80>>2]=h;b=h;if(b>>>0>A[d+84>>2]){c=E(E(h>>>0)*E(1.75));q:{if(E(F(c))>>0<=8?8:b;x[d+84>>2]=b;e=x[d+88>>2];n=Da();$=d,aa=sa[x[x[n>>2]+16>>2]](n,e,b<<2,7693,82)|0,x[$+88>>2]=aa;b=x[d+80>>2];}if(a>>>0>>0){Ha(x[d+88>>2]+(a<<2)|0,0,b-a<<2);}m=m-1|0;Wb(w,z,2,h,K,0,2);}a=x[d+96>>2];x[d+96>>2]=m;b=m;if(b>>>0>A[d+100>>2]){c=E(E(m>>>0)*E(1.75));r:{if(E(F(c))>>0<=8?8:b;x[d+100>>2]=b;e=x[d+104>>2];n=Da();$=d,aa=sa[x[x[n>>2]+16>>2]](n,e,b<<2,7693,82)|0,x[$+104>>2]=aa;b=x[d+96>>2];}if(a>>>0>>0){Ha(x[d+104>>2]+(a<<2)|0,0,b-a<<2);}a=x[d+88>>2];i=B[a+4>>2];j=B[a>>2];if((m|0)>0){b=0;e=2;c=i;f=j;while(1){n=x[d+88>>2];z=e<<2;a=n+z|0;t=B[a>>2];N=B[a+8>>2];j=B[a+16>>2];i=E(E(E(E(E(t-N)*E(3))-f)+j)*E(.09375));g=E(E(t-f)*E(.75));f=E(E(E(f-E(t+t))+N)*E(.1875));L=E(E(i*E(.1666666716337204))+E(g+f));f=E(E(f+f)+i);s=E(L+f);f=E(i+f);p=E(s+f);f=E(p+E(i+f));q=E(f*f);G=B[n+(z|4)>>2];O=B[a+12>>2];i=B[a+20>>2];f=E(E(E(E(E(G-O)*E(3))-c)+i)*E(.09375));g=E(E(G-c)*E(.75));c=E(E(E(c-E(G+G))+O)*E(.1875));g=E(E(f*E(.1666666716337204))+E(g+c));k=E(E(c+c)+f);c=E(g+k);o=E(f+k);k=E(c+o);f=E(k+E(f+o));C=E(E(M(E(q+E(f*f))))+E(E(M(E(E(p*p)+E(k*k))))+E(E(M(E(E(s*s)+E(c*c))))+E(C+E(M(E(E(L*L)+E(g*g))))))));B[x[d+104>>2]+(b<<2)>>2]=C;e=e+6|0;f=j;L=i;c=i;b=b+1|0;if((m|0)!=(b|0)){continue}break}}c=C;c=R?c:E(c/B[(x[(w- -64|0)+12>>2]+(m<<2)|0)-4>>2]);s:{if(!H|(r|0)<2){break s}b=r-1|0;m=b&3;n=x[d+56>>2];a=1;if(r-2>>>0>=3){w=b&-4;e=0;while(1){b=n+(a<<2)|0;B[b>>2]=C*B[b>>2];B[b+4>>2]=C*B[b+4>>2];B[b+8>>2]=C*B[b+8>>2];B[b+12>>2]=C*B[b+12>>2];a=a+4|0;e=e+4|0;if((w|0)!=(e|0)){continue}break}}if(!m){break s}b=0;while(1){e=n+(a<<2)|0;B[e>>2]=C*B[e>>2];a=a+1|0;b=b+1|0;if((m|0)!=(b|0)){continue}break}}if((r|0)<=0){break j}c=E(l*c);n=-1;w=h-4<<2;K=h-2<<2;J=h-3<<2;R=h-1<<2;b=0;a=0;h=0;m=0;s=E(0);while(1){_=B[x[d+56>>2]+(m<<2)>>2];c=E(c+_);t:{u:{v:{if(U){l=Sb(c,C);l=E(l+(l>2];l=B[e+4>>2];g=B[e>>2];p=Va(E(B[e+12>>2]-l),E(B[e+8>>2]-g));k=Hb(p);e=h<<2;B[e+x[d+72>>2]>>2]=g+E(c*k);g=Fb(p);e=e+x[d+72>>2]|0;B[e+8>>2]=p;B[e+4>>2]=l+E(c*g);break t}if(c>C){break u}l=c;}e=a;z=x[d+104>>2];while(1){a=e;e=a+1|0;H=z+(a<<2)|0;p=B[H>>2];if(p>2];l=E(E(g-l)/E(p-l));}else {l=E(l/p);}w:{if((a|0)==(n|0)){z=x[d+136>>2];break w}b=x[d+88>>2]+D(a,24)|0;t=B[b+8>>2];N=B[b+16>>2];j=B[b>>2];f=B[b+24>>2];s=E(E(E(E(E(t-N)*E(3))-j)+f)*E(.006000000052154064));g=E(E(E(j-E(t+t))+N)*E(.029999999329447746));k=E(E(s*E(.1666666716337204))+E(E(E(t-j)*E(.30000001192092896))+g));G=B[b+12>>2];O=B[b+20>>2];i=B[b+4>>2];L=B[b+28>>2];p=E(E(E(E(E(G-O)*E(3))-i)+L)*E(.006000000052154064));o=E(E(E(i-E(G+G))+O)*E(.029999999329447746));q=E(E(p*E(.1666666716337204))+E(E(E(G-i)*E(.30000001192092896))+o));u=E(M(E(E(k*k)+E(q*q))));B[x[d+136>>2]>>2]=u;W=u;u=E(E(g+g)+s);g=E(u+k);o=E(E(o+o)+p);k=E(o+q);q=E(W+E(M(E(E(g*g)+E(k*k)))));B[x[d+136>>2]+4>>2]=q;W=q;q=E(s+u);g=E(q+g);o=E(p+o);k=E(o+k);u=E(W+E(M(E(E(g*g)+E(k*k)))));B[x[d+136>>2]+8>>2]=u;q=E(s+q);g=E(q+g);o=E(p+o);k=E(o+k);u=E(u+E(M(E(E(g*g)+E(k*k)))));B[x[d+136>>2]+12>>2]=u;q=E(s+q);g=E(q+g);o=E(p+o);k=E(o+k);u=E(u+E(M(E(E(g*g)+E(k*k)))));B[x[d+136>>2]+16>>2]=u;q=E(s+q);g=E(q+g);o=E(p+o);k=E(o+k);u=E(u+E(M(E(E(g*g)+E(k*k)))));B[x[d+136>>2]+20>>2]=u;q=E(s+q);g=E(q+g);o=E(p+o);k=E(o+k);u=E(u+E(M(E(E(g*g)+E(k*k)))));B[x[d+136>>2]+24>>2]=u;q=E(s+q);g=E(q+g);o=E(p+o);k=E(o+k);u=E(u+E(M(E(E(g*g)+E(k*k)))));B[x[d+136>>2]+28>>2]=u;q=E(s+q);g=E(q+g);o=E(p+o);k=E(o+k);u=E(u+E(M(E(E(g*g)+E(k*k)))));B[x[d+136>>2]+32>>2]=u;z=x[d+136>>2];s=E(E(s+q)+g);g=E(s*s);s=E(E(p+o)+k);s=E(u+E(M(E(g+E(s*s)))));B[z+36>>2]=s;n=a;b=0;}e=b;l=E(l*s);while(1){b=e;e=b+1|0;H=(b<<2)+z|0;p=B[H>>2];if(p>2];l=E(E(E(g-l)/E(p-l))+E(b|0));}else {l=E(l/p);}hh(E(l*E(.10000000149011612)),j,i,t,G,N,O,f,L,S,h,(m|0)!=0&_>2];p=B[e+R>>2];g=B[e+K>>2];l=Va(E(p-B[e+J>>2]),E(g-B[e+w>>2]));k=Hb(l);e=h<<2;q=g;g=E(c-C);B[e+x[d+72>>2]>>2]=q+E(k*g);k=Fb(l);e=e+x[d+72>>2]|0;B[e+8>>2]=l;B[e+4>>2]=p+E(g*k);}h=h+3|0;m=m+1|0;if((r|0)!=(m|0)){continue}break}}a=x[S+12>>2];c=B[a+4>>2];f=B[a>>2];G=B[T+56>>2];if(G==E(0)){a=(I|0)==1;}else {i=B[3978];a=x[x[d+24>>2]+8>>2];G=E(G*(E(E(B[a+92>>2]*B[a+108>>2])-E(B[a+96>>2]*B[a+104>>2]))>E(0)?i:E(-i)));a=0;}if(!P){break a}L=B[3977];g=B[3976];k=E(-g);h=0;e=3;while(1){m=h<<2;b=x[m+x[d+20>>2]>>2];i=B[b+100>>2];B[b+100>>2]=E(E(f-i)*V)+i;i=B[b+112>>2];B[b+112>>2]=E(E(c-i)*V)+i;r=e<<2;n=r+x[S+12>>2]|0;i=B[n>>2];C=E(i-f);f=B[n+4>>2];c=E(f-c);x:{if((I|0)!=2){break x}j=B[m+x[d+120>>2]>>2];if(!(j>=E(9999999747378752e-21))){break x}j=E(E(E(E(E(M(E(E(C*C)+E(c*c))))/j)+E(-1))*Q)+E(1));B[b+92>>2]=B[b+92>>2]*j;B[b+104>>2]=B[b+104>>2]*j;}y:{if(!(Q>E(0))){c=f;f=i;break y}s=B[b+108>>2];l=B[b+104>>2];p=B[b+96>>2];t=B[b+92>>2];j=B[(r+x[S+12>>2]|0)-4>>2];z:{if(!I){break z}j=B[(r+x[S+12>>2]|0)+8>>2];if(B[(m+x[d+56>>2]|0)+4>>2]>2]+24>>2];c=E(E(E(E(o*E(E(O*t)+E(l*N)))-c)*Q)+f);f=E(E(E(E(o*E(E(N*t)-E(l*O)))-C)*Q)+i);break A}j=E(G+j);c=f;f=i;}B:{if(j>g){j=E(j-L);break B}if(!(j>2]=E(j*p)+E(s*i);B[b+104>>2]=E(j*t)+E(l*i);B[b+96>>2]=E(i*p)-E(s*j);B[b+92>>2]=E(i*t)-E(l*j);}v[b+88|0]=0;e=e+3|0;h=h+1|0;if((P|0)!=(h|0)){continue}break}}}function Mb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=qa-16|0;qa=l;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{if(a>>>0<=244){g=x[13624];h=a>>>0<11?16:a+11&-8;c=h>>>3|0;b=g>>>c|0;if(b&3){c=c+((b^-1)&1)|0;a=c<<3;b=a+54536|0;d=x[a+54544>>2];a=x[d+8>>2];o:{if((b|0)==(a|0)){m=54496,n=Ww(c)&g,x[m>>2]=n;break o}x[a+12>>2]=b;x[b+8>>2]=a;}a=d+8|0;b=c<<3;x[d+4>>2]=b|3;b=b+d|0;x[b+4>>2]=x[b+4>>2]|1;break a}k=x[13626];if(k>>>0>=h>>>0){break n}if(b){a=2<>2];a=x[e+8>>2];p:{if((b|0)==(a|0)){g=Ww(d)&g;x[13624]=g;break p}x[a+12>>2]=b;x[b+8>>2]=a;}x[e+4>>2]=h|3;c=e+h|0;a=d<<3;d=a-h|0;x[c+4>>2]=d|1;x[a+e>>2]=d;if(k){b=(k&-8)+54536|0;f=x[13629];a=1<<(k>>>3);q:{if(!(a&g)){x[13624]=a|g;a=b;break q}a=x[b+8>>2];}x[b+8>>2]=f;x[a+12>>2]=f;x[f+12>>2]=b;x[f+8>>2]=a;}a=e+8|0;x[13629]=c;x[13626]=d;break a}j=x[13625];if(!j){break n}c=x[(Tw(0-j&j)<<2)+54800>>2];f=(x[c+4>>2]&-8)-h|0;b=c;while(1){r:{a=x[b+16>>2];if(!a){a=x[b+20>>2];if(!a){break r}}b=(x[a+4>>2]&-8)-h|0;d=b>>>0>>0;f=d?b:f;c=d?a:c;b=a;continue}break}i=x[c+24>>2];d=x[c+12>>2];if((d|0)!=(c|0)){a=x[c+8>>2];x[a+12>>2]=d;x[d+8>>2]=a;break b}b=c+20|0;a=x[b>>2];if(!a){a=x[c+16>>2];if(!a){break m}b=c+16|0;}while(1){e=b;d=a;b=a+20|0;a=x[b>>2];if(a){continue}b=d+16|0;a=x[d+16>>2];if(a){continue}break}x[e>>2]=0;break b}h=-1;if(a>>>0>4294967231){break n}a=a+11|0;h=a&-8;j=x[13625];if(!j){break n}f=0-h|0;g=0;s:{if(h>>>0<256){break s}g=31;if(h>>>0>16777215){break s}a=G(a>>>8|0);g=((h>>>38-a&1)-(a<<1)|0)+62|0;}b=x[(g<<2)+54800>>2];t:{u:{v:{if(!b){a=0;break v}a=0;c=h<<((g|0)!=31?25-(g>>>1|0)|0:0);while(1){w:{e=(x[b+4>>2]&-8)-h|0;if(e>>>0>=f>>>0){break w}d=b;f=e;if(e){break w}f=0;a=b;break u}e=x[b+20>>2];b=x[((c>>>29&4)+b|0)+16>>2];a=e?(e|0)==(b|0)?a:e:a;c=c<<1;if(b){continue}break}}if(!(a|d)){d=0;a=2<>2];}if(!a){break t}}while(1){b=(x[a+4>>2]&-8)-h|0;c=b>>>0>>0;f=c?b:f;d=c?a:d;b=x[a+16>>2];if(b){a=b;}else {a=x[a+20>>2];}if(a){continue}break}}if(!d|x[13626]-h>>>0<=f>>>0){break n}g=x[d+24>>2];c=x[d+12>>2];if((d|0)!=(c|0)){a=x[d+8>>2];x[a+12>>2]=c;x[c+8>>2]=a;break c}b=d+20|0;a=x[b>>2];if(!a){a=x[d+16>>2];if(!a){break l}b=d+16|0;}while(1){e=b;c=a;b=a+20|0;a=x[b>>2];if(a){continue}b=c+16|0;a=x[c+16>>2];if(a){continue}break}x[e>>2]=0;break c}a=x[13626];if(a>>>0>=h>>>0){d=x[13629];b=a-h|0;x:{if(b>>>0>=16){c=d+h|0;x[c+4>>2]=b|1;x[a+d>>2]=b;x[d+4>>2]=h|3;break x}x[d+4>>2]=a|3;a=a+d|0;x[a+4>>2]=x[a+4>>2]|1;c=0;b=0;}x[13626]=b;x[13629]=c;a=d+8|0;break a}i=x[13627];if(i>>>0>h>>>0){b=i-h|0;x[13627]=b;c=x[13630];a=c+h|0;x[13630]=a;x[a+4>>2]=b|1;x[c+4>>2]=h|3;a=c+8|0;break a}a=0;j=h+47|0;if(x[13742]){c=x[13744];}else {x[13745]=-1;x[13746]=-1;x[13743]=4096;x[13744]=4096;x[13742]=l+12&-16^1431655768;x[13747]=0;x[13735]=0;c=4096;}e=j+c|0;f=0-c|0;b=e&f;if(b>>>0<=h>>>0){break a}d=x[13734];if(d){c=x[13732];g=c+b|0;if(d>>>0>>0|c>>>0>=g>>>0){break a}}y:{if(!(y[54940]&4)){z:{A:{B:{C:{d=x[13630];if(d){a=54944;while(1){c=x[a>>2];if(c>>>0<=d>>>0&d>>>0>2]>>>0){break C}a=x[a+8>>2];if(a){continue}break}}c=Mc(0);if((c|0)==-1){break z}g=b;d=x[13743];a=d-1|0;if(a&c){g=(b-c|0)+(a+c&0-d)|0;}if(g>>>0<=h>>>0){break z}d=x[13734];if(d){a=x[13732];f=a+g|0;if(d>>>0>>0|a>>>0>=f>>>0){break z}}a=Mc(g);if((c|0)!=(a|0)){break B}break y}g=f&e-i;c=Mc(g);if((c|0)==(x[a>>2]+x[a+4>>2]|0)){break A}a=c;}if((a|0)==-1){break z}if(h+48>>>0<=g>>>0){c=a;break y}c=x[13744];c=c+(j-g|0)&0-c;if((Mc(c)|0)==-1){break z}g=c+g|0;c=a;break y}if((c|0)!=-1){break y}}x[13735]=x[13735]|4;}c=Mc(b);a=Mc(0);if((c|0)==-1|(a|0)==-1|a>>>0<=c>>>0){break i}g=a-c|0;if(g>>>0<=h+40>>>0){break i}}a=x[13732]+g|0;x[13732]=a;if(a>>>0>A[13733]){x[13733]=a;}D:{e=x[13630];if(e){a=54944;while(1){d=x[a>>2];b=x[a+4>>2];if((d+b|0)==(c|0)){break D}a=x[a+8>>2];if(a){continue}break}break k}a=x[13628];if(!(a>>>0<=c>>>0?a:0)){x[13628]=c;}a=0;x[13737]=g;x[13736]=c;x[13632]=-1;x[13633]=x[13742];x[13739]=0;while(1){d=a<<3;b=d+54536|0;x[d+54544>>2]=b;x[d+54548>>2]=b;a=a+1|0;if((a|0)!=32){continue}break}d=g-40|0;a=c+8&7?-8-c&7:0;b=d-a|0;x[13627]=b;a=a+c|0;x[13630]=a;x[a+4>>2]=b|1;x[(c+d|0)+4>>2]=40;x[13631]=x[13746];break j}if(x[a+12>>2]&8|(c>>>0<=e>>>0|d>>>0>e>>>0)){break k}x[a+4>>2]=b+g;a=e+8&7?-8-e&7:0;c=a+e|0;x[13630]=c;b=x[13627]+g|0;a=b-a|0;x[13627]=a;x[c+4>>2]=a|1;x[(b+e|0)+4>>2]=40;x[13631]=x[13746];break j}d=0;break b}c=0;break c}if(A[13628]>c>>>0){x[13628]=c;}b=c+g|0;a=54944;E:{F:{G:{while(1){if((b|0)!=x[a>>2]){a=x[a+8>>2];if(a){continue}break G}break}if(!(y[a+12|0]&8)){break F}}a=54944;while(1){b=x[a>>2];if(b>>>0<=e>>>0){f=b+x[a+4>>2]|0;if(f>>>0>e>>>0){break E}}a=x[a+8>>2];continue}}x[a>>2]=c;x[a+4>>2]=x[a+4>>2]+g;j=(c+8&7?-8-c&7:0)+c|0;x[j+4>>2]=h|3;g=b+(b+8&7?-8-b&7:0)|0;i=h+j|0;a=g-i|0;if((e|0)==(g|0)){x[13630]=i;a=x[13627]+a|0;x[13627]=a;x[i+4>>2]=a|1;break d}if(x[13629]==(g|0)){x[13629]=i;a=x[13626]+a|0;x[13626]=a;x[i+4>>2]=a|1;x[a+i>>2]=a;break d}f=x[g+4>>2];if((f&3)!=1){break e}e=f&-8;if(f>>>0<=255){c=x[g+12>>2];b=x[g+8>>2];if((c|0)==(b|0)){m=54496,n=x[13624]&Ww(f>>>3|0),x[m>>2]=n;break f}x[b+12>>2]=c;x[c+8>>2]=b;break f}h=x[g+24>>2];c=x[g+12>>2];if((g|0)!=(c|0)){b=x[g+8>>2];x[b+12>>2]=c;x[c+8>>2]=b;break g}b=g+20|0;f=x[b>>2];if(!f){f=x[g+16>>2];if(!f){break h}b=g+16|0;}while(1){d=b;c=f;b=c+20|0;f=x[b>>2];if(f){continue}b=c+16|0;f=x[c+16>>2];if(f){continue}break}x[d>>2]=0;break g}d=g-40|0;a=c+8&7?-8-c&7:0;b=d-a|0;x[13627]=b;a=a+c|0;x[13630]=a;x[a+4>>2]=b|1;x[(c+d|0)+4>>2]=40;x[13631]=x[13746];a=(f+(f-39&7?39-f&7:0)|0)-47|0;d=a>>>0>>0?e:a;x[d+4>>2]=27;a=x[13739];x[d+16>>2]=x[13738];x[d+20>>2]=a;a=x[13737];x[d+8>>2]=x[13736];x[d+12>>2]=a;x[13738]=d+8;x[13737]=g;x[13736]=c;x[13739]=0;a=d+24|0;while(1){x[a+4>>2]=7;b=a+8|0;a=a+4|0;if(b>>>0>>0){continue}break}if((d|0)==(e|0)){break j}x[d+4>>2]=x[d+4>>2]&-2;f=d-e|0;x[e+4>>2]=f|1;x[d>>2]=f;if(f>>>0<=255){b=(f&-8)+54536|0;c=x[13624];a=1<<(f>>>3);H:{if(!(c&a)){x[13624]=a|c;a=b;break H}a=x[b+8>>2];}x[b+8>>2]=e;x[a+12>>2]=e;x[e+12>>2]=b;x[e+8>>2]=a;break j}a=31;if(f>>>0<=16777215){a=G(f>>>8|0);a=((f>>>38-a&1)-(a<<1)|0)+62|0;}x[e+28>>2]=a;x[e+16>>2]=0;x[e+20>>2]=0;b=(a<<2)+54800|0;I:{d=x[13625];c=1<>2]=e;break J}a=f<<((a|0)!=31?25-(a>>>1|0)|0:0);d=x[b>>2];while(1){b=d;if((f|0)==(x[b+4>>2]&-8)){break I}c=a>>>29|0;a=a<<1;c=(c&4)+b|0;d=x[c+16>>2];if(d){continue}break}x[c+16>>2]=e;}x[e+24>>2]=b;x[e+12>>2]=e;x[e+8>>2]=e;break j}a=x[b+8>>2];x[a+12>>2]=e;x[b+8>>2]=e;x[e+24>>2]=0;x[e+12>>2]=b;x[e+8>>2]=a;}a=x[13627];if(a>>>0<=h>>>0){break i}b=a-h|0;x[13627]=b;c=x[13630];a=c+h|0;x[13630]=a;x[a+4>>2]=b|1;x[c+4>>2]=h|3;a=c+8|0;break a}x[13623]=48;a=0;break a}c=0;}if(!h){break f}d=x[g+28>>2];b=(d<<2)+54800|0;K:{if(x[b>>2]==(g|0)){x[b>>2]=c;if(c){break K}m=54500,n=x[13625]&Ww(d),x[m>>2]=n;break f}x[h+(x[h+16>>2]==(g|0)?16:20)>>2]=c;if(!c){break f}}x[c+24>>2]=h;b=x[g+16>>2];if(b){x[c+16>>2]=b;x[b+24>>2]=c;}b=x[g+20>>2];if(!b){break f}x[c+20>>2]=b;x[b+24>>2]=c;}a=a+e|0;g=e+g|0;f=x[g+4>>2];}x[g+4>>2]=f&-2;x[i+4>>2]=a|1;x[a+i>>2]=a;if(a>>>0<=255){b=(a&-8)+54536|0;c=x[13624];a=1<<(a>>>3);L:{if(!(c&a)){x[13624]=a|c;a=b;break L}a=x[b+8>>2];}x[b+8>>2]=i;x[a+12>>2]=i;x[i+12>>2]=b;x[i+8>>2]=a;break d}f=31;if(a>>>0<=16777215){b=G(a>>>8|0);f=((a>>>38-b&1)-(b<<1)|0)+62|0;}x[i+28>>2]=f;x[i+16>>2]=0;x[i+20>>2]=0;b=(f<<2)+54800|0;M:{d=x[13625];c=1<>2]=i;break N}f=a<<((f|0)!=31?25-(f>>>1|0)|0:0);c=x[b>>2];while(1){b=c;if((x[c+4>>2]&-8)==(a|0)){break M}c=f>>>29|0;f=f<<1;d=(c&4)+b|0;c=x[d+16>>2];if(c){continue}break}x[d+16>>2]=i;}x[i+24>>2]=b;x[i+12>>2]=i;x[i+8>>2]=i;break d}a=x[b+8>>2];x[a+12>>2]=i;x[b+8>>2]=i;x[i+24>>2]=0;x[i+12>>2]=b;x[i+8>>2]=a;}a=j+8|0;break a}O:{if(!g){break O}b=x[d+28>>2];a=(b<<2)+54800|0;P:{if(x[a>>2]==(d|0)){x[a>>2]=c;if(c){break P}j=Ww(b)&j;x[13625]=j;break O}x[g+(x[g+16>>2]==(d|0)?16:20)>>2]=c;if(!c){break O}}x[c+24>>2]=g;a=x[d+16>>2];if(a){x[c+16>>2]=a;x[a+24>>2]=c;}a=x[d+20>>2];if(!a){break O}x[c+20>>2]=a;x[a+24>>2]=c;}Q:{if(f>>>0<=15){a=f+h|0;x[d+4>>2]=a|3;a=a+d|0;x[a+4>>2]=x[a+4>>2]|1;break Q}x[d+4>>2]=h|3;e=d+h|0;x[e+4>>2]=f|1;x[e+f>>2]=f;if(f>>>0<=255){b=(f&-8)+54536|0;c=x[13624];a=1<<(f>>>3);R:{if(!(c&a)){x[13624]=a|c;a=b;break R}a=x[b+8>>2];}x[b+8>>2]=e;x[a+12>>2]=e;x[e+12>>2]=b;x[e+8>>2]=a;break Q}a=31;if(f>>>0<=16777215){a=G(f>>>8|0);a=((f>>>38-a&1)-(a<<1)|0)+62|0;}x[e+28>>2]=a;x[e+16>>2]=0;x[e+20>>2]=0;b=(a<<2)+54800|0;S:{c=1<>2]=e;break T}a=f<<((a|0)!=31?25-(a>>>1|0)|0:0);h=x[b>>2];while(1){b=h;if((x[b+4>>2]&-8)==(f|0)){break S}c=a>>>29|0;a=a<<1;c=(c&4)+b|0;h=x[c+16>>2];if(h){continue}break}x[c+16>>2]=e;}x[e+24>>2]=b;x[e+12>>2]=e;x[e+8>>2]=e;break Q}a=x[b+8>>2];x[a+12>>2]=e;x[b+8>>2]=e;x[e+24>>2]=0;x[e+12>>2]=b;x[e+8>>2]=a;}a=d+8|0;break a}U:{if(!i){break U}b=x[c+28>>2];a=(b<<2)+54800|0;V:{if(x[a>>2]==(c|0)){x[a>>2]=d;if(d){break V}m=54500,n=Ww(b)&j,x[m>>2]=n;break U}x[i+(x[i+16>>2]==(c|0)?16:20)>>2]=d;if(!d){break U}}x[d+24>>2]=i;a=x[c+16>>2];if(a){x[d+16>>2]=a;x[a+24>>2]=d;}a=x[c+20>>2];if(!a){break U}x[d+20>>2]=a;x[a+24>>2]=d;}W:{if(f>>>0<=15){a=f+h|0;x[c+4>>2]=a|3;a=a+c|0;x[a+4>>2]=x[a+4>>2]|1;break W}x[c+4>>2]=h|3;d=c+h|0;x[d+4>>2]=f|1;x[d+f>>2]=f;if(k){b=(k&-8)+54536|0;e=x[13629];a=1<<(k>>>3);X:{if(!(a&g)){x[13624]=a|g;a=b;break X}a=x[b+8>>2];}x[b+8>>2]=e;x[a+12>>2]=e;x[e+12>>2]=b;x[e+8>>2]=a;}x[13629]=d;x[13626]=f;}a=c+8|0;}qa=l+16|0;return a|0}function at(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=E(c);d=E(d);e=e|0;f=E(f);g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=E(0),p=0,q=0;m=qa-16|0;qa=m;h=x[x[b+36>>2]+(x[a+20>>2]<<2)>>2];b=x[h+8>>2];a:{if(!(sa[x[x[b>>2]+16>>2]](b)|0)){break a}j=x[h+60>>2];if(!j){break a}if(!Fc(sa[x[x[j>>2]+8>>2]](j)|0,54412)|x[j+56>>2]!=x[a+56>>2]){break a}b=g;g=x[h+72>>2];k=g?b:0;e=x[x[a+52>>2]+4>>2];b:{if(!(B[x[a+36>>2]>>2]>d)){break b}c:{switch(k|0){case 0:x[h+72>>2]=0;break a;case 2:case 3:break a;case 1:break c;default:break b}}if(f==E(1)){x[h+72>>2]=0;break a}x[m+12>>2]=0;b=x[h+72>>2];a=e;x[h+72>>2]=a;if(A[h+76>>2]>>0){c=E(E(a>>>0)*E(1.75));d:{if(E(F(c))>>0<=8?8:a;x[h+76>>2]=a;g=x[h+80>>2];i=Da();p=h,q=sa[x[x[i>>2]+16>>2]](i,g,a<<2,7693,82)|0,x[p+80>>2]=q;a=x[h+72>>2];}e:{if(a>>>0<=b>>>0){break e}k=(b^-1)+a|0;i=x[h+80>>2];l=a-b&3;if(l){g=0;while(1){B[i+(b<<2)>>2]=B[m+12>>2];b=b+1|0;g=g+1|0;if((l|0)!=(g|0)){continue}break}}if(k>>>0<3){break e}while(1){g=i+(b<<2)|0;B[g>>2]=B[m+12>>2];B[g+4>>2]=B[m+12>>2];B[g+8>>2]=B[m+12>>2];B[g+12>>2]=B[m+12>>2];b=b+4|0;if((b|0)!=(a|0)){continue}break}}if(!x[(j+20|0)+4>>2]){if(!e){break a}b=x[h+80>>2];h=x[(j+36|0)+12>>2];a=0;if((e|0)!=1){i=e&-2;g=0;while(1){j=a<<2;k=j+b|0;c=B[k>>2];B[k>>2]=E(E(B[h+j>>2]-c)*f)+c;j=j|4;k=j+b|0;c=B[k>>2];B[k>>2]=E(E(B[h+j>>2]-c)*f)+c;a=a+2|0;g=g+2|0;if((i|0)!=(g|0)){continue}break}}if(!(e&1)){break a}a=a<<2;b=a+b|0;c=B[b>>2];B[b>>2]=E(E(B[a+h>>2]-c)*f)+c;break a}if(!e){break a}c=E(E(1)-f);h=x[h+80>>2];b=0;a=0;if(e-1>>>0>=3){i=e&-4;g=0;while(1){j=a<<2;k=j+h|0;B[k>>2]=c*B[k>>2];k=h+(j|4)|0;B[k>>2]=c*B[k>>2];k=h+(j|8)|0;B[k>>2]=c*B[k>>2];j=h+(j|12)|0;B[j>>2]=c*B[j>>2];a=a+4|0;g=g+4|0;if((i|0)!=(g|0)){continue}break}}e=e&3;if(!e){break a}while(1){g=h+(a<<2)|0;B[g>>2]=c*B[g>>2];a=a+1|0;b=b+1|0;if((e|0)!=(b|0)){continue}break}break a}x[h+72>>2]=e;b=e;if(b>>>0>A[h+76>>2]){c=E(E(e>>>0)*E(1.75));f:{if(E(F(c))>>0<=8?8:b;x[h+76>>2]=b;i=x[h+80>>2];l=Da();p=h,q=sa[x[x[l>>2]+16>>2]](l,i,b<<2,7693,82)|0,x[p+80>>2]=q;b=x[h+72>>2];}if(b>>>0>g>>>0){Ha(x[h+80>>2]+(g<<2)|0,0,b-g<<2);}b=x[a+28>>2]-1|0;if(B[x[a+36>>2]+(b<<2)>>2]<=d){a=x[a+52>>2];if(f==E(1)){if((k|0)==3){if(x[(j+20|0)+4>>2]){if(!e){break a}g=x[h+80>>2];h=x[(a+(b<<4)|0)+12>>2];b=0;a=0;if(e-1>>>0>=3){k=e&-4;j=0;while(1){i=a<<2;l=i+g|0;B[l>>2]=B[h+i>>2]+B[l>>2];l=i|4;n=l+g|0;B[n>>2]=B[h+l>>2]+B[n>>2];l=i|8;n=l+g|0;B[n>>2]=B[h+l>>2]+B[n>>2];i=i|12;l=i+g|0;B[l>>2]=B[h+i>>2]+B[l>>2];a=a+4|0;j=j+4|0;if((k|0)!=(j|0)){continue}break}}e=e&3;if(!e){break a}while(1){j=a<<2;i=j+g|0;B[i>>2]=B[h+j>>2]+B[i>>2];a=a+1|0;b=b+1|0;if((e|0)!=(b|0)){continue}break}break a}if(!e){break a}h=x[h+80>>2];a=x[(a+(b<<4)|0)+12>>2];j=x[(j+36|0)+12>>2];b=0;if((e|0)!=1){k=e&-2;g=0;while(1){i=b<<2;l=i+h|0;B[l>>2]=E(B[a+i>>2]-B[i+j>>2])+B[l>>2];i=i|4;l=i+h|0;B[l>>2]=E(B[a+i>>2]-B[i+j>>2])+B[l>>2];b=b+2|0;g=g+2|0;if((k|0)!=(g|0)){continue}break}}if(!(e&1)){break a}b=b<<2;e=b+h|0;B[e>>2]=E(B[a+b>>2]-B[b+j>>2])+B[e>>2];break a}Fa(x[h+80>>2],x[(a+(b<<4)|0)+12>>2],e<<2);break a}g:{switch(k|0){case 0:if(x[(j+20|0)+4>>2]){if(!e){break a}g=x[h+80>>2];h=x[(a+(b<<4)|0)+12>>2];b=0;a=0;if(e-1>>>0>=3){k=e&-4;j=0;while(1){i=a<<2;B[i+g>>2]=B[h+i>>2]*f;l=i|4;B[l+g>>2]=B[h+l>>2]*f;l=i|8;B[l+g>>2]=B[h+l>>2]*f;i=i|12;B[i+g>>2]=B[h+i>>2]*f;a=a+4|0;j=j+4|0;if((k|0)!=(j|0)){continue}break}}e=e&3;if(!e){break a}while(1){j=a<<2;B[j+g>>2]=B[h+j>>2]*f;a=a+1|0;b=b+1|0;if((e|0)!=(b|0)){continue}break}break a}if(!e){break a}h=x[h+80>>2];a=x[(a+(b<<4)|0)+12>>2];j=x[(j+36|0)+12>>2];b=0;if((e|0)!=1){k=e&-2;g=0;while(1){i=b<<2;c=B[i+j>>2];B[h+i>>2]=E(E(B[a+i>>2]-c)*f)+c;i=i|4;c=B[i+j>>2];B[h+i>>2]=E(E(B[a+i>>2]-c)*f)+c;b=b+2|0;g=g+2|0;if((k|0)!=(g|0)){continue}break}}if(!(e&1)){break a}b=b<<2;c=B[b+j>>2];B[b+h>>2]=E(E(B[a+b>>2]-c)*f)+c;break a;case 1:case 2:if(!e){break a}h=x[h+80>>2];b=x[(a+(b<<4)|0)+12>>2];a=0;if((e|0)!=1){i=e&-2;g=0;while(1){j=a<<2;k=j+h|0;c=B[k>>2];B[k>>2]=E(E(B[b+j>>2]-c)*f)+c;j=j|4;k=j+h|0;c=B[k>>2];B[k>>2]=E(E(B[b+j>>2]-c)*f)+c;a=a+2|0;g=g+2|0;if((i|0)!=(g|0)){continue}break}}if(!(e&1)){break a}a=a<<2;e=a+h|0;c=B[e>>2];B[e>>2]=E(E(B[a+b>>2]-c)*f)+c;break a;case 3:break g;default:break a}}if(x[(j+20|0)+4>>2]){if(!e){break a}h=x[h+80>>2];b=x[(a+(b<<4)|0)+12>>2];a=0;if((e|0)!=1){i=e&-2;g=0;while(1){j=a<<2;k=j+h|0;B[k>>2]=E(B[b+j>>2]*f)+B[k>>2];j=j|4;k=j+h|0;B[k>>2]=E(B[b+j>>2]*f)+B[k>>2];a=a+2|0;g=g+2|0;if((i|0)!=(g|0)){continue}break}}if(!(e&1)){break a}a=a<<2;e=a+h|0;B[e>>2]=E(B[a+b>>2]*f)+B[e>>2];break a}if(!e){break a}h=x[h+80>>2];a=x[(a+(b<<4)|0)+12>>2];j=x[(j+36|0)+12>>2];b=0;if((e|0)!=1){k=e&-2;g=0;while(1){i=b<<2;l=i+h|0;B[l>>2]=E(E(B[a+i>>2]-B[i+j>>2])*f)+B[l>>2];i=i|4;l=i+h|0;B[l>>2]=E(E(B[a+i>>2]-B[i+j>>2])*f)+B[l>>2];b=b+2|0;g=g+2|0;if((k|0)!=(g|0)){continue}break}}if(!(e&1)){break a}b=b<<2;e=b+h|0;B[e>>2]=E(E(B[a+b>>2]-B[b+j>>2])*f)+B[e>>2];break a}g=Vf(a+24|0,d);b=x[a+52>>2];l=a;i=g-1|0;a=x[a+36>>2];c=B[a+(g<<2)>>2];c=Kb(l,i,E(E(1)-E(E(d-c)/E(B[a+(i<<2)>>2]-c))));if(f==E(1)){if((k|0)!=3){if(!e){break a}a=x[h+80>>2];h=x[(b+(g<<4)|0)+12>>2];j=x[(b+(i<<4)|0)+12>>2];b=0;if((e|0)!=1){k=e&-2;g=0;while(1){i=b<<2;d=B[i+j>>2];B[a+i>>2]=E(E(B[h+i>>2]-d)*c)+d;i=i|4;d=B[i+j>>2];B[a+i>>2]=E(E(B[h+i>>2]-d)*c)+d;b=b+2|0;g=g+2|0;if((k|0)!=(g|0)){continue}break}}if(!(e&1)){break a}b=b<<2;d=B[b+j>>2];B[a+b>>2]=E(E(B[b+h>>2]-d)*c)+d;break a}if(x[(j+20|0)+4>>2]){if(!e){break a}a=x[h+80>>2];h=x[(b+(g<<4)|0)+12>>2];j=x[(b+(i<<4)|0)+12>>2];b=0;if((e|0)!=1){k=e&-2;g=0;while(1){i=b<<2;l=i+a|0;d=B[i+j>>2];B[l>>2]=B[l>>2]+E(E(E(B[h+i>>2]-d)*c)+d);i=i|4;l=i+a|0;d=B[i+j>>2];B[l>>2]=B[l>>2]+E(E(E(B[h+i>>2]-d)*c)+d);b=b+2|0;g=g+2|0;if((k|0)!=(g|0)){continue}break}}if(!(e&1)){break a}e=a;a=b<<2;b=e+a|0;d=B[a+j>>2];B[b>>2]=B[b>>2]+E(E(E(B[a+h>>2]-d)*c)+d);break a}if(!e){break a}h=x[h+80>>2];g=x[(b+(g<<4)|0)+12>>2];i=x[(b+(i<<4)|0)+12>>2];j=x[(j+36|0)+12>>2];b=0;while(1){a=b<<2;k=a+h|0;d=B[a+i>>2];B[k>>2]=E(E(E(E(B[a+g>>2]-d)*c)+d)-B[a+j>>2])+B[k>>2];b=b+1|0;if((e|0)!=(b|0)){continue}break}break a}h:{switch(k|0){case 0:if(x[(j+20|0)+4>>2]){if(!e){break a}a=x[h+80>>2];h=x[(b+(g<<4)|0)+12>>2];j=x[(b+(i<<4)|0)+12>>2];b=0;if((e|0)!=1){k=e&-2;g=0;while(1){i=b<<2;d=B[i+j>>2];B[a+i>>2]=E(E(E(B[h+i>>2]-d)*c)+d)*f;i=i|4;d=B[i+j>>2];B[a+i>>2]=E(E(E(B[h+i>>2]-d)*c)+d)*f;b=b+2|0;g=g+2|0;if((k|0)!=(g|0)){continue}break}}if(!(e&1)){break a}b=b<<2;d=B[b+j>>2];B[a+b>>2]=E(E(E(B[b+h>>2]-d)*c)+d)*f;break a}if(!e){break a}h=x[h+80>>2];g=x[(b+(g<<4)|0)+12>>2];i=x[(b+(i<<4)|0)+12>>2];j=x[(j+36|0)+12>>2];b=0;while(1){a=b<<2;d=B[a+i>>2];o=E(E(E(B[a+g>>2]-d)*c)+d);d=B[a+j>>2];B[a+h>>2]=E(E(o-d)*f)+d;b=b+1|0;if((e|0)!=(b|0)){continue}break}break a;case 1:case 2:if(!e){break a}a=x[h+80>>2];h=x[(b+(g<<4)|0)+12>>2];j=x[(b+(i<<4)|0)+12>>2];b=0;if((e|0)!=1){k=e&-2;g=0;while(1){i=b<<2;l=i+a|0;d=B[i+j>>2];o=E(E(E(B[h+i>>2]-d)*c)+d);d=B[l>>2];B[l>>2]=E(E(o-d)*f)+d;i=i|4;l=i+a|0;d=B[i+j>>2];o=E(E(E(B[h+i>>2]-d)*c)+d);d=B[l>>2];B[l>>2]=E(E(o-d)*f)+d;b=b+2|0;g=g+2|0;if((k|0)!=(g|0)){continue}break}}if(!(e&1)){break a}e=a;a=b<<2;b=e+a|0;d=B[a+j>>2];d=E(E(E(B[a+h>>2]-d)*c)+d);c=B[b>>2];B[b>>2]=E(E(d-c)*f)+c;break a;case 3:break h;default:break a}}if(x[(j+20|0)+4>>2]){if(!e){break a}a=x[h+80>>2];h=x[(b+(g<<4)|0)+12>>2];j=x[(b+(i<<4)|0)+12>>2];b=0;if((e|0)!=1){k=e&-2;g=0;while(1){i=b<<2;l=i+a|0;d=B[i+j>>2];B[l>>2]=E(E(E(E(B[h+i>>2]-d)*c)+d)*f)+B[l>>2];i=i|4;l=i+a|0;d=B[i+j>>2];B[l>>2]=E(E(E(E(B[h+i>>2]-d)*c)+d)*f)+B[l>>2];b=b+2|0;g=g+2|0;if((k|0)!=(g|0)){continue}break}}if(!(e&1)){break a}e=a;a=b<<2;b=e+a|0;d=B[a+j>>2];B[b>>2]=E(E(E(E(B[a+h>>2]-d)*c)+d)*f)+B[b>>2];break a}if(!e){break a}h=x[h+80>>2];g=x[(b+(g<<4)|0)+12>>2];i=x[(b+(i<<4)|0)+12>>2];j=x[(j+36|0)+12>>2];b=0;while(1){a=b<<2;k=a+h|0;d=B[a+i>>2];B[k>>2]=E(E(E(E(E(B[a+g>>2]-d)*c)+d)-B[a+j>>2])*f)+B[k>>2];b=b+1|0;if((e|0)!=(b|0)){continue}break}}qa=m+16|0;}function li(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;k=qa-336|0;qa=k;n=h;p=i&65535;o=d;m=e&65535;u=(e^i)&-2147483648;s=i>>>16&32767;q=e>>>16&32767;a:{b:{if(s-32767>>>0>4294934529&q-32767>>>0>=4294934530){break b}j=e&2147483647;if(!(!d&(j|0)==2147418112?!(b|c):j>>>0<2147418112)){r=d;u=e|32768;break a}e=i&2147483647;if(!(!h&(e|0)==2147418112?!(f|g):e>>>0<2147418112)){r=h;u=i|32768;b=f;c=g;break a}if(!(b|d|(j^2147418112|c))){if(!(f|h|(e^2147418112|g))){b=0;c=0;u=2147450880;break a}u=u|2147418112;b=0;c=0;break a}if(!(f|h|(e^2147418112|g))){b=0;c=0;break a}if(!(b|d|(c|j))){b=!(f|h|(e|g));r=b?0:r;u=b?2147450880:u;b=0;c=0;break a}if(!(f|h|(e|g))){u=u|2147418112;b=0;c=0;break a}if((j|0)==65535|j>>>0<65535){d=!(m|o);i=d;j=d?b:o;d=d<<6;i=G(i?c:m);d=d+((i|0)==32?G(j)+32|0:i)|0;qb(k+320|0,b,c,o,m,d-15|0);v=16-d|0;o=x[k+328>>2];m=x[k+332>>2];c=x[k+324>>2];b=x[k+320>>2];}if(e>>>0>65535){break b}d=!(n|p);h=d;i=d?f:n;d=d<<6;h=G(h?g:p);d=d+((h|0)==32?G(i)+32|0:h)|0;qb(k+304|0,f,g,n,p,d-15|0);v=(d+v|0)-16|0;n=x[k+312>>2];p=x[k+316>>2];f=x[k+304>>2];g=x[k+308>>2];}e=p|65536;C=e;D=n;d=n;j=e<<15|d>>>17;e=d<<15|g>>>17;d=e;i=0-d|0;h=j;j=1963258675-(j+((d|0)!=0)|0)|0;ob(k+288|0,d,h,0,0,i,j,0,0);d=x[k+296>>2];ob(k+272|0,0-d|0,0-(x[k+300>>2]+((d|0)!=0)|0)|0,0,0,i,j,0,0);d=x[k+280>>2];i=d<<1|x[k+276>>2]>>>31;d=x[k+284>>2]<<1|d>>>31;ob(k+256|0,i,d,0,0,e,h,0,0);j=x[k+264>>2];ob(k+240|0,i,d,0,0,0-j|0,0-(x[k+268>>2]+((j|0)!=0)|0)|0,0,0);i=x[k+248>>2];j=i<<1|x[k+244>>2]>>>31;d=x[k+252>>2]<<1|i>>>31;ob(k+224|0,j,d,0,0,e,h,0,0);i=x[k+232>>2];ob(k+208|0,j,d,0,0,0-i|0,0-(x[k+236>>2]+((i|0)!=0)|0)|0,0,0);d=x[k+216>>2];i=d<<1|x[k+212>>2]>>>31;d=x[k+220>>2]<<1|d>>>31;ob(k+192|0,i,d,0,0,e,h,0,0);j=x[k+200>>2];ob(k+176|0,i,d,0,0,0-j|0,0-(x[k+204>>2]+((j|0)!=0)|0)|0,0,0);i=e;e=x[k+184>>2];d=h;n=e<<1|x[k+180>>2]>>>31;h=n-1|0;e=(x[k+188>>2]<<1|e>>>31)-!n|0;ob(k+160|0,i,d,0,0,h,e,0,0);d=h;ob(k+144|0,f<<15,g<<15|f>>>17,0,0,d,e,0,0);t=k+112|0;z=x[k+168>>2];h=x[k+172>>2];n=x[k+160>>2];i=x[k+152>>2];l=n+i|0;p=x[k+164>>2];j=p+x[k+156>>2]|0;j=i>>>0>l>>>0?j+1|0:j;i=j;j=(p|0)==(j|0)&l>>>0>>0|j>>>0

>>0;p=j+z|0;j=j>>>0>p>>>0?h+1|0:h;n=!i&l>>>0>1|(i|0)!=0;h=n+p|0;j=n>>>0>h>>>0?j+1|0:j;ob(t,d,e,0,0,0-h|0,0-(((h|0)!=0)+j|0)|0,0,0);ob(k+128|0,1-l|0,0-((l>>>0>1)+i|0)|0,0,0,d,e,0,0);K=(q-s|0)+v|0;e=x[k+116>>2];t=e;d=x[k+112>>2];j=e<<1|d>>>31;n=d<<1;q=j;d=j;h=x[k+140>>2];B=h;e=x[k+136>>2];j=h<<1|e>>>31;i=e<<1|x[k+132>>2]>>>31;h=i+n|0;d=d+j|0;d=h>>>0>>0?d+1|0:d;e=d;d=d-(h>>>0<13927)|0;y=d;z=d;l=0;j=m|65536;L=j;M=o;d=o;j=j<<1|d>>>31;O=d<<1;P=j;F=j;d=Uw(y,l,j,0);j=ra;H=d;w=j;v=b<<1;d=c<<1|b>>>31;s=d;j=0;p=j;i=h-13927|0;y=(e|0)==(y|0)&i>>>0>>0|e>>>0>y>>>0;e=(e|0)==(q|0)&h>>>0>>0|e>>>0>>0;d=x[k+120>>2];h=x[k+124>>2]<<1|d>>>31;d=d<<1|t>>>31;j=h;l=B>>>31|0;d=l+d|0;j=d>>>0>>0?j+1|0:j;h=d;d=d+e|0;l=h>>>0>d>>>0?j+1|0:j;e=d;d=d+y|0;l=e>>>0>d>>>0?l+1|0:l;e=d-1|0;y=l-!d|0;q=0;j=Uw(s,p,y,q);d=j+H|0;h=ra+w|0;h=d>>>0>>0?h+1|0:h;t=(w|0)==(h|0)&d>>>0>>0|h>>>0>>0;j=0;B=e;N=c>>>31|0;E=N|o<<1;w=0;e=Uw(e,j,E,w);o=e+d|0;j=ra+h|0;l=0;j=e>>>0>o>>>0?j+1|0:j;n=j;d=(j|0)==(h|0)&d>>>0>o>>>0|h>>>0>j>>>0;e=d;d=d+t|0;l=e>>>0>d>>>0?1:l;e=Uw(F,p,y,q);d=e+d|0;j=ra+l|0;t=d;d=d>>>0>>0?j+1|0:j;e=Uw(F,p,B,w);m=ra;h=e;e=Uw(E,w,y,q);l=h+e|0;j=ra+m|0;j=e>>>0>l>>>0?j+1|0:j;e=j;j=(m|0)==(j|0)&h>>>0>l>>>0|j>>>0>>0;m=t+e|0;d=d+j|0;d=m>>>0>>0?d+1|0:d;t=m;m=d;e=0;d=e+o|0;j=l+n|0;j=d>>>0>>0?j+1|0:j;e=j;h=(j|0)==(n|0)&d>>>0>>0|j>>>0>>0;j=m;l=h;h=h+t|0;j=l>>>0>h>>>0?j+1|0:j;I=h;l=j;t=d;m=d;o=e;H=i;d=Uw(i,0,E,w);h=ra;e=d;i=Uw(z,r,s,r);d=d+i|0;j=ra+h|0;j=d>>>0>>0?j+1|0:j;i=(h|0)==(j|0)&d>>>0>>0|h>>>0>j>>>0;h=j;J=v&-2;e=Uw(B,w,J,0);n=e+d|0;j=ra+j|0;j=e>>>0>n>>>0?j+1|0:j;e=j;d=(j|0)==(h|0)&d>>>0>n>>>0|h>>>0>j>>>0;h=0;i=d+i|0;d=(i>>>0>>0?1:h)+o|0;j=l;m=i+m|0;d=m>>>0>>0?d+1|0:d;i=d;d=(d|0)==(o|0)&m>>>0>>0|d>>>0>>0;h=d;d=d+I|0;j=h>>>0>d>>>0?j+1|0:j;Q=d;t=j;d=Uw(F,p,H,r);I=ra;F=d;h=Uw(y,q,J,r);d=d+h|0;j=ra+I|0;o=d;p=Uw(z,r,E,w);l=d+p|0;h=d>>>0>>0?j+1|0:j;d=h+ra|0;d=l>>>0

>>0?d+1|0:d;q=l;j=Uw(s,r,B,w);p=l+j|0;l=ra+d|0;l=j>>>0>p>>>0?l+1|0:l;B=0;E=(d|0)==(l|0)&p>>>0>>0|d>>>0>l>>>0;j=(h|0)==(I|0)&o>>>0>>0|h>>>0>>0;d=(d|0)==(h|0)&o>>>0>q>>>0|d>>>0>>0;d=d+j|0;d=d+E|0;h=l;q=h+m|0;j=(d|B)+i|0;j=h>>>0>q>>>0?j+1|0:j;o=j;d=(i|0)==(j|0)&m>>>0>q>>>0|i>>>0>j>>>0;j=t;h=d;d=d+Q|0;j=h>>>0>d>>>0?j+1|0:j;B=d;i=j;d=Uw(z,r,J,r);z=ra;m=d;h=Uw(s,r,H,r);d=d+h|0;j=ra+z|0;j=d>>>0>>0?j+1|0:j;t=0;h=(j|0)==(z|0)&d>>>0>>0|j>>>0>>0;m=j;d=j+n|0;j=(h|t)+e|0;j=d>>>0>>0?j+1|0:j;h=j;m=(e|0)==(j|0)&d>>>0>>0|e>>>0>j>>>0;j=p;p=0;n=p+d|0;l=h+j|0;j=0;l=n>>>0

>>0?l+1|0:l;d=(h|0)==(l|0)&d>>>0>n>>>0|h>>>0>l>>>0;e=d;d=d+m|0;j=(e>>>0>d>>>0?1:j)+o|0;l=i;e=d;d=d+q|0;j=e>>>0>d>>>0?j+1|0:j;e=j;h=(o|0)==(j|0)&d>>>0>>0|j>>>0>>0;i=h;h=h+B|0;l=i>>>0>h>>>0?l+1|0:l;i=l;c:{if((l|0)==131071|l>>>0<131071){M=O|N;L=w|P;ob(k+80|0,d,e,h,i,f,g,D,C);l=x[k+84>>2];p=l;j=b<<17;n=0;m=x[k+88>>2];c=n-m|0;b=x[k+80>>2];l=(l|b)!=0;o=c-l|0;m=(j-(x[k+92>>2]+(m>>>0>n>>>0)|0)|0)-(c>>>0>>0)|0;n=0-b|0;p=0-(((b|0)!=0)+p|0)|0;b=K+16382|0;break c}d=(e&1)<<31|d>>>1;e=h<<31|e>>>1;h=(i&1)<<31|h>>>1;i=i>>>1|0;ob(k+96|0,d,e,h,i,f,g,D,C);o=x[k+100>>2];s=o;v=x[k+104>>2];n=0-v|0;l=x[k+96>>2];m=(o|l)!=0;o=n-m|0;m=((b<<16)-(x[k+108>>2]+(p>>>0>>0)|0)|0)-(m>>>0>n>>>0)|0;n=0-l|0;p=0-(((l|0)!=0)+s|0)|0;v=b;s=c;b=K+16383|0;}if((b|0)>=32767){u=u|2147418112;b=0;c=0;break a}d:{if((b|0)>0){l=m<<1|o>>>31;o=o<<1|p>>>31;m=l;v=h;s=i&65535|b<<16;l=p<<1|n>>>31;i=n<<1;break d}if((b|0)<=-113){b=0;c=0;break a}rc(k- -64|0,d,e,h,i,1-b|0);qb(k+48|0,v,s,M,L,b+112|0);d=x[k+64>>2];e=x[k+68>>2];v=x[k+72>>2];s=x[k+76>>2];ob(k+32|0,f,g,D,C,d,e,v,s);b=x[k+40>>2];c=x[k+56>>2];l=x[k+36>>2];o=b<<1|l>>>31;n=c-o|0;m=x[k+60>>2]-((x[k+44>>2]<<1|b>>>31)+(c>>>0>>0)|0)|0;b=x[k+32>>2];h=l<<1|b>>>31;j=b<<1;i=x[k+52>>2];c=x[k+48>>2];b=(h|0)==(i|0)&j>>>0>c>>>0|h>>>0>i>>>0;o=n-b|0;m=m-(b>>>0>n>>>0)|0;l=i-((c>>>0>>0)+h|0)|0;i=c-j|0;}b=i;ob(k+16|0,f,g,D,C,3,0,0,0);ob(k,f,g,D,C,5,0,0,0);c=0;h=l+c|0;j=d&1;b=b+j|0;h=i>>>0>b>>>0?h+1|0:h;i=b;g=(g|0)==(h|0)&b>>>0>f>>>0|g>>>0>>0;l=m;b=(c|0)==(h|0)&b>>>0>>0|c>>>0>h>>>0;f=b+o|0;l=b>>>0>f>>>0?l+1|0:l;j=e;b=(l|0)==(C|0);b=b&(f|0)==(D|0)?g:b&f>>>0>D>>>0|l>>>0>C>>>0;c=b;b=b+d|0;j=c>>>0>b>>>0?j+1|0:j;c=j;d=(e|0)==(j|0)&b>>>0>>0|e>>>0>j>>>0;j=s;e=d;d=d+v|0;j=e>>>0>d>>>0?j+1|0:j;g=d;e=x[k+20>>2];m=(e|0)==(h|0)&A[k+16>>2]>>0|e>>>0>>0;e=x[k+28>>2];d=x[k+24>>2];e=j>>>0<2147418112&((d|0)==(f|0)&(e|0)==(l|0)?m:(e|0)==(l|0)&d>>>0>>0|e>>>0>>0);d=c;m=e;e=b+e|0;d=m>>>0>e>>>0?d+1|0:d;b=(c|0)==(d|0)&b>>>0>e>>>0|c>>>0>d>>>0;c=b;b=b+g|0;j=c>>>0>b>>>0?j+1|0:j;g=b;c=x[k+4>>2];h=(c|0)==(h|0)&A[k>>2]>>0|c>>>0>>0;c=x[k+12>>2];b=x[k+8>>2];b=j>>>0<2147418112&((b|0)==(f|0)&(c|0)==(l|0)?h:(c|0)==(l|0)&b>>>0>>0|c>>>0>>0);c=b;b=b+e|0;l=c>>>0>b>>>0?d+1|0:d;c=l;e=(d|0)==(l|0)&b>>>0>>0|d>>>0>l>>>0;d=j;f=e;e=e+g|0;d=f>>>0>e>>>0?d+1|0:d;r=e|r;u=d|u;}x[a>>2]=b;x[a+4>>2]=c;x[a+8>>2]=r;x[a+12>>2]=u;qa=k+336|0;}function Oh(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=E(0),n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=E(0),z=0,C=0,D=0,G=0,H=E(0);f=qa+-64|0;qa=f;p=Ga(d);if((p|0)<=0){q=0;}else {g=y[(d+p|0)-1|0];q=(g|0)!=47&(g|0)!=92;}if(c){l=b+c|0;r=a+8|0;z=a+24|0;C=(p+q|0)+1|0;s=f+44|0;t=f+36|0;c=f+16|0;n=c|12;o=c|4;u=f+56|0;while(1){x[f+52>>2]=b;g=b;c=b;h=y[b|0];a:{if((h|0)==10){break a}while(1){g=g+1|0;if((l|0)!=(g|0)){c=g;if(y[c|0]!=10){continue}break a}break}g=l;c=g;}x[f+56>>2]=c;x[f+60>>2]=g;b:{if(!((h|0)==32|h-9>>>0<5)){h=b;break b}h=b;c:{if(c>>>0<=b>>>0){break c}while(1){h=b+1|0;b=y[b+1|0];if(!((b|0)==32|b-9>>>0<5)){break c}b=h;if(c>>>0>b>>>0){continue}break}}x[f+52>>2]=h;}if((c|0)!=(h|0)){while(1){d:{b=c;c=b-1|0;x[f+56>>2]=c;if(c>>>0>>0){break d}if(y[c|0]==13){continue}}break}x[f+56>>2]=b;c=b;}if((g|0)!=(l|0)){x[f+60>>2]=g+1;}e:{if((c|0)==(h|0)){i=0;break e}f:{if(!i){b=Da();c=c-h|0;b=Fa(sa[x[x[b>>2]+12>>2]](b,c+1|0,5085,312)|0,h,c);v[b+c|0]=0;c=Ga(b);g=Da();c=sa[x[x[g>>2]+12>>2]](g,c+C|0,5085,120)|0;h=Fa(c,d,p);if(q){v[h+p|0]=47;}di((h+p|0)+q|0,b);i=Ma(68,5085,125);x[f+4>>2]=1080;g=Ga(b);x[f+12>>2]=b;x[f+8>>2]=g;x[i+20>>2]=g;x[i+16>>2]=1080;x[i+4>>2]=13908;x[i>>2]=13892;x[i+8>>2]=0;x[i+12>>2]=0;b=Da();b=sa[x[x[b>>2]+12>>2]](b,g+1|0,8064,71)|0;x[i+24>>2]=b;Fa(b,x[f+12>>2],x[f+8>>2]+1|0);b=x[f+12>>2];x[i+64>>2]=0;x[i+56>>2]=1;x[i+60>>2]=0;x[i+48>>2]=1;x[i+52>>2]=1;x[i+40>>2]=6;x[i+44>>2]=1;x[i+32>>2]=0;x[i+36>>2]=0;x[i+28>>2]=1080;x[f+4>>2]=1080;if(b){g=Da();sa[x[x[g>>2]+20>>2]](g,b,8064,201);}bc(f+60|0,l,f+16|0);D=i,G=lb(x[f+16>>2],o),x[D+60>>2]=G;D=i,G=lb(x[f+24>>2],n),x[D+64>>2]=G;bc(f+60|0,l,f+16|0);b=7;g=x[f+16>>2];j=x[f+20>>2]-g|0;k=7;g:{if(!ab(11969,g,j)){break g}k=6;if(!ab(11962,g,j)){break g}k=5;if(!ab(11995,g,j)){break g}k=4;if(!ab(11985,g,j)){break g}k=3;if(!ab(10608,g,j)){break g}k=2;if(!ab(1091,g,j)){break g}k=!ab(10639,g,j);}x[i+40>>2]=k;bc(f+60|0,l,f+16|0);g=x[f+16>>2];j=x[f+20>>2]-g|0;h:{if(!ab(3963,g,j)){break h}if(!ab(3933,g,j)){b=6;break h}if(!ab(1747,g,j)){b=5;break h}if(!ab(1726,g,j)){b=4;break h}if(!ab(6064,g,j)){b=3;break h}if(!ab(3975,g,j)){b=2;break h}b=!ab(1759,g,j);}x[i+44>>2]=b;b=x[f+24>>2];g=x[f+28>>2]-b|0;j=7;i:{if(!ab(3963,b,g)){break i}j=6;if(!ab(3933,b,g)){break i}j=5;if(!ab(1747,b,g)){break i}j=4;if(!ab(1726,b,g)){break i}j=3;if(!ab(6064,b,g)){break i}j=2;if(!ab(3975,b,g)){break i}j=!ab(1759,b,g);}x[i+48>>2]=j;Kf(f+60|0,l,f+52|0);x[i+52>>2]=1;x[i+56>>2]=1;j=x[f+52>>2];k=x[f+56>>2]-j|0;j:{if(!ab(8867,j,k)){break j}b=i+56|0;g=i+52|0;k:{l:{if((k|0)==1){switch(y[j|0]-120|0){case 0:break k;case 1:break l;default:break j}}if(ab(1088,j,k)){break j}x[i+52>>2]=2;}g=b;}x[g>>2]=2;}m:{if(e){b=x[a+36>>2];if(b){x[f+4>>2]=1080;n:{if(!h){x[f+8>>2]=0;x[f+12>>2]=0;break n}c=Ga(h);x[f+8>>2]=c;g=Da();c=sa[x[x[g>>2]+12>>2]](g,c+1|0,8064,57)|0;x[f+12>>2]=c;Fa(c,h,x[f+8>>2]+1|0);}sa[x[x[b>>2]+8>>2]](b,i,f+4|0);x[f+4>>2]=1080;b=x[f+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}}b=Da();sa[x[x[b>>2]+20>>2]](b,h,5085,160);break m}g=i+28|0;x[f+4>>2]=1080;if(h){b=Ga(h);}else {b=0;}x[f+12>>2]=h;x[f+8>>2]=b;o:{if((g|0)!=(f+4|0)){b=x[i+36>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,122);c=x[f+12>>2];}if(!c){x[i+32>>2]=0;x[i+36>>2]=0;x[f+4>>2]=1080;break o}b=x[f+8>>2];x[i+32>>2]=b;c=Da();b=sa[x[x[c>>2]+12>>2]](c,b+1|0,8064,129)|0;x[i+36>>2]=b;Fa(b,x[f+12>>2],x[f+8>>2]+1|0);c=x[f+12>>2];}x[f+4>>2]=1080;if(!c){break o}b=Da();sa[x[x[b>>2]+20>>2]](b,c,8064,201);}}c=x[a+8>>2];if((c|0)==x[a+12>>2]){m=E(E(c>>>0)*E(1.75));p:{if(E(F(m))>>0<=8?8:b;x[a+12>>2]=b;c=x[a+16>>2];g=Da();b=sa[x[x[g>>2]+16>>2]](g,c,b<<2,7693,106)|0;x[a+16>>2]=b;c=x[a+8>>2];x[b+(c<<2)>>2]=i;b=r;break f}x[x[a+16>>2]+(c<<2)>>2]=i;b=r;break f}b=Ma(112,5085,166);x[b+20>>2]=0;x[b+24>>2]=0;x[b+96>>2]=13184;x[b+80>>2]=13184;x[b+8>>2]=1080;x[b>>2]=13976;x[b+76>>2]=0;x[b+68>>2]=0;x[b+72>>2]=0;x[b+60>>2]=0;x[b+64>>2]=0;x[b+52>>2]=0;x[b+56>>2]=0;x[b+44>>2]=0;x[b+48>>2]=0;x[b+36>>2]=0;x[b+40>>2]=0;x[b+28>>2]=0;x[b+32>>2]=0;x[b+108>>2]=0;x[b+100>>2]=0;x[b+104>>2]=0;x[b+92>>2]=0;x[b+84>>2]=0;x[b+88>>2]=0;x[b+12>>2]=0;x[b+16>>2]=0;x[b+4>>2]=i;g=Da();j=c-h|0;g=sa[x[x[g>>2]+12>>2]](g,j+1|0,5085,312)|0;c=Fa(g,h,j);v[c+j|0]=0;x[f+4>>2]=1080;h=Ga(c);x[f+12>>2]=c;x[f+8>>2]=h;q:{r:{if((b|0)==(f-4|0)){x[f+4>>2]=1080;break r}s:{c=x[b+16>>2];if(!c){break s}g=Da();sa[x[x[g>>2]+20>>2]](g,c,8064,122);if(x[f+12>>2]){break s}x[b+12>>2]=0;x[b+16>>2]=0;x[f+4>>2]=1080;break q}c=x[f+8>>2];x[b+12>>2]=c;g=Da();c=sa[x[x[g>>2]+12>>2]](g,c+1|0,8064,129)|0;x[b+16>>2]=c;Fa(c,x[f+12>>2],x[f+8>>2]+1|0);x[f+4>>2]=1080;g=x[f+12>>2];if(!g){break q}}c=Da();sa[x[x[c>>2]+20>>2]](c,g,8064,201);}Kf(f+60|0,l,f+52|0);g=x[f+52>>2];h=x[f+56>>2]-g|0;c=90;t:{if(!ab(8488,g,h)){break t}c=0;if(!ab(8747,g,h)){break t}c=lb(g,u);}x[b+76>>2]=c;v[b+72|0]=(c|0)==90;bc(f+60|0,l,f+16|0);D=b,G=lb(x[f+16>>2],o),x[D+20>>2]=G;D=b,G=lb(x[f+24>>2],n),x[D+24>>2]=G;bc(f+60|0,l,f+16|0);D=b,G=lb(x[f+16>>2],o),x[D+28>>2]=G;g=lb(x[f+24>>2],n);x[b+32>>2]=g;c=x[b+20>>2];m=E(x[i+60>>2]);B[b+36>>2]=E(c|0)/m;h=x[b+24>>2];w=E(x[i+64>>2]);B[b+40>>2]=E(h|0)/w;u:{if(y[b+72|0]){c=c+g|0;g=h+x[b+28>>2]|0;break u}c=c+x[b+28>>2]|0;g=g+h|0;}B[b+48>>2]=E(g|0)/w;B[b+44>>2]=E(c|0)/m;v:{if((bc(f+60|0,l,f+16|0)|0)!=4){break v}c=x[b+84>>2];h=4;x[b+84>>2]=4;if(A[b+88>>2]<=3){x[b+88>>2]=8;g=x[b+92>>2];h=Da();D=b,G=sa[x[x[h>>2]+16>>2]](h,g,32,7693,82)|0,x[D+92>>2]=G;h=x[b+84>>2];}if(c>>>0>>0){Ha(x[b+92>>2]+(c<<2)|0,0,h-c<<2);}c=lb(x[f+16>>2],o);x[x[b+92>>2]>>2]=c;c=lb(x[f+24>>2],n);x[x[b+92>>2]+4>>2]=c;c=lb(x[f+32>>2],t);x[x[b+92>>2]+8>>2]=c;c=lb(x[f+40>>2],s);x[x[b+92>>2]+12>>2]=c;if((bc(f+60|0,l,f+16|0)|0)!=4){break v}c=x[b+100>>2];h=4;x[b+100>>2]=4;if(A[b+104>>2]<=3){x[b+104>>2]=8;g=x[b+108>>2];h=Da();D=b,G=sa[x[x[h>>2]+16>>2]](h,g,32,7693,82)|0,x[D+108>>2]=G;h=x[b+100>>2];}if(c>>>0>>0){Ha(x[b+108>>2]+(c<<2)|0,0,h-c<<2);}c=lb(x[f+16>>2],o);x[x[b+108>>2]>>2]=c;c=lb(x[f+24>>2],n);x[x[b+108>>2]+4>>2]=c;c=lb(x[f+32>>2],t);x[x[b+108>>2]+8>>2]=c;c=lb(x[f+40>>2],s);x[x[b+108>>2]+12>>2]=c;bc(f+60|0,l,f+16|0);}D=b,G=lb(x[f+16>>2],o),x[D+60>>2]=G;D=b,G=lb(x[f+24>>2],n),x[D+64>>2]=G;c=f+60|0;bc(c,l,f+16|0);D=b,H=E(lb(x[f+16>>2],o)|0),B[D+52>>2]=H;D=b,H=E(lb(x[f+24>>2],n)|0),B[D+56>>2]=H;Kf(c,l,f+52|0);D=b,G=lb(x[f+52>>2],u),x[D+68>>2]=G;c=x[a+24>>2];w:{if((c|0)==x[a+28>>2]){m=E(E(c>>>0)*E(1.75));x:{if(E(F(m))>>0<=8?8:c;x[a+28>>2]=c;g=x[a+32>>2];h=Da();g=sa[x[x[h>>2]+16>>2]](h,g,c<<2,7693,106)|0;x[a+32>>2]=g;c=x[a+24>>2];g=g+(c<<2)|0;break w}g=x[a+32>>2]+(c<<2)|0;}x[g>>2]=b;b=z;}x[b>>2]=c+1;}b=x[f+60>>2];if((l|0)!=(b|0)){continue}break}}qa=f- -64|0;}function Dg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=E(0),j=0,k=0,l=0,m=0,n=E(0),o=E(0),p=0,q=0,r=E(0),s=E(0),t=E(0),u=E(0),w=E(0),z=E(0),C=E(0),D=E(0),G=0,H=0,I=0;m=x[b+4>>2];x[a+40>>2]=0;e=x[a+44>>2];j=m>>>1|0;if(e>>>0>>0){x[a+44>>2]=j;f=x[a+48>>2];c=Da();H=a,I=sa[x[x[c>>2]+16>>2]](c,f,j<<2,7693,94)|0,x[H+48>>2]=I;e=x[a+44>>2];d=x[a+40>>2];}x[a+40>>2]=j;g=j;if(g>>>0>e>>>0){i=E(E(j>>>0)*E(1.75));a:{if(E(F(i))>>0<=8?8:f;x[a+44>>2]=f;c=x[a+48>>2];g=Da();H=a,I=sa[x[x[g>>2]+16>>2]](g,c,f<<2,7693,82)|0,x[H+48>>2]=I;g=x[a+40>>2];}if(d>>>0>>0){Ha(x[a+48>>2]+(d<<2)|0,0,g-d<<2);}b:{if(m>>>0<2){break b}c=j>>>0<=1?1:j;g=c&7;f=x[a+48>>2];e=0;d=0;if(c>>>0>=8){k=c&2147483640;c=0;while(1){x[f+(d<<2)>>2]=d;h=d|1;x[f+(h<<2)>>2]=h;h=d|2;x[f+(h<<2)>>2]=h;h=d|3;x[f+(h<<2)>>2]=h;h=d|4;x[f+(h<<2)>>2]=h;h=d|5;x[f+(h<<2)>>2]=h;h=d|6;x[f+(h<<2)>>2]=h;h=d|7;x[f+(h<<2)>>2]=h;d=d+8|0;c=c+8|0;if((k|0)!=(c|0)){continue}break}}if(!g){break b}while(1){x[f+(d<<2)>>2]=d;d=d+1|0;e=e+1|0;if((g|0)!=(e|0)){continue}break}}e=x[a+60>>2];if(j>>>0>e>>>0){x[a+60>>2]=j;f=a- -64|0;c=x[f>>2];d=f;f=Da();H=d,I=sa[x[x[f>>2]+16>>2]](f,c,j,7693,94)|0,x[H>>2]=I;e=x[a+60>>2];}f=x[a+56>>2];x[a+56>>2]=j;g=j;if(g>>>0>e>>>0){i=E(E(j>>>0)*E(1.75));c:{if(E(F(i))>>0<=8?8:c;x[a+60>>2]=c;d=a- -64|0;g=x[d>>2];e=d;d=Da();H=e,I=sa[x[x[d>>2]+16>>2]](d,g,c,7693,82)|0,x[H>>2]=I;g=x[a+56>>2];}if(f>>>0>>0){Ha(f+x[a- -64>>2]|0,0,g-f|0);}if(m>>>0>=2){e=j>>>0<=1?1:j;k=j-1|0;h=x[a- -64>>2];c=x[a+48>>2];g=x[b+12>>2];d=0;while(1){f=d+1|0;l=g+(x[c+(((f|0)!=(j|0)?f:0)<<2)>>2]<<3)|0;i=B[l+4>>2];p=d+h|0;r=B[l>>2];l=g+(x[c+(d<<2)>>2]<<3)|0;n=B[l+4>>2];d=g+(x[c+((d+k|0)%(j|0)<<2)>>2]<<3)|0;o=B[d+4>>2];v[p|0]=!(E(E(r*E(n-o))+E(E(B[d>>2]*E(i-n))+E(B[l>>2]*E(o-i))))>=E(0));d=f;if((e|0)!=(d|0)){continue}break}}x[a+72>>2]=0;f=(((j|0)<=2?2:j)<<2)-8|0;if(f>>>0>A[a+76>>2]){x[a+76>>2]=f;c=x[a+80>>2];d=Da();H=a,I=sa[x[x[d>>2]+16>>2]](d,c,f<<2,7693,94)|0,x[H+80>>2]=I;}d:{if(m>>>0<8){break d}g=x[a- -64>>2];e:while(1){h=x[b+12>>2];k=x[a+48>>2];d=1;f=0;m=j;j=j-1|0;e=j;while(1){c=f;f=d;f:{g:{h:{if(y[c+g|0]){break h}d=f+1|0;d=(d|0)!=(m|0)?d:0;if((e|0)==(d|0)){f=c;break g}l=h+(x[k+(f<<2)>>2]<<3)|0;t=B[l>>2];p=h+(x[k+(c<<2)>>2]<<3)|0;u=B[p>>2];q=h+(x[k+(e<<2)>>2]<<3)|0;w=B[q>>2];n=B[l+4>>2];o=B[p+4>>2];z=E(n-o);r=B[q+4>>2];C=E(o-r);D=E(r-n);while(1){i:{if(!y[d+g|0]){break i}l=h+(x[k+(d<<2)>>2]<<3)|0;s=B[l>>2];i=B[l+4>>2];if(!(E(E(s*D)+E(E(t*E(i-r))+E(w*E(n-i))))>=E(0))|!(E(E(s*C)+E(E(w*E(i-o))+E(u*E(r-i))))>=E(0))){break i}if(E(E(s*z)+E(E(u*E(i-n))+E(t*E(o-i))))>=E(0)){break h}}d=(d+1>>>0)%(m>>>0)|0;if((e|0)!=(d|0)){continue}break}f=c;break g}if(f){break f}while(1){if(!y[c+g|0]){f=c;break g}f=0;c=c-1|0;if(c){continue}break}}c=k+((f+j>>>0)%(m>>>0)<<2)|0;d=x[a+76>>2];e=x[a+72>>2];j:{if((d|0)==(e|0)){d=x[c>>2];i=E(E(e>>>0)*E(1.75));k:{if(E(F(i))>>0<=8?8:c;x[a+76>>2]=c;g=x[a+80>>2];e=Da();g=sa[x[x[e>>2]+16>>2]](e,g,c<<2,7693,106)|0;x[a+80>>2]=g;e=x[a+72>>2];x[(e<<2)+g>>2]=d;d=x[a+76>>2];break j}g=x[a+80>>2];x[g+(e<<2)>>2]=x[c>>2];}e=e+1|0;x[a+72>>2]=e;k=f<<2;c=k+x[a+48>>2]|0;l:{if((d|0)==(e|0)){h=x[c>>2];i=E(E(d>>>0)*E(1.75));m:{if(E(F(i))>>0<=8?8:c;x[a+76>>2]=c;d=Da();g=sa[x[x[d>>2]+16>>2]](d,g,c<<2,7693,106)|0;x[a+80>>2]=g;e=x[a+72>>2];x[(e<<2)+g>>2]=h;d=x[a+76>>2];break l}x[(e<<2)+g>>2]=x[c>>2];}e=e+1|0;x[a+72>>2]=e;c=x[a+48>>2]+((f+1>>>0)%(m>>>0)<<2)|0;n:{if((d|0)==(e|0)){h=x[c>>2];i=E(E(d>>>0)*E(1.75));o:{if(E(F(i))>>0<=8?8:c;x[a+76>>2]=c;d=Da();c=sa[x[x[d>>2]+16>>2]](d,g,c<<2,7693,106)|0;x[a+80>>2]=c;e=x[a+72>>2];x[c+(e<<2)>>2]=h;break n}x[(e<<2)+g>>2]=x[c>>2];}x[a+72>>2]=e+1;c=x[a+40>>2];h=c-1|0;x[a+40>>2]=h;p:{if(f>>>0>=h>>>0){break p}g=x[a+48>>2];k=x[g+k>>2];e=0;d=f;l=c+(d^-1)&3;if(l){while(1){q=g+(d<<2)|0;d=d+1|0;p=g+(d<<2)|0;x[q>>2]=x[p>>2];x[p>>2]=k;e=e+1|0;if((l|0)!=(e|0)){continue}break}}if((c-f|0)-2>>>0<3){break p}while(1){c=g+(d<<2)|0;e=x[c+8>>2];x[c>>2]=x[c+4>>2];x[c+4>>2]=e;x[c+8>>2]=x[c+12>>2];x[c+12>>2]=k;e=c;d=d+4|0;c=g+(d<<2)|0;x[e+12>>2]=x[c>>2];x[c>>2]=k;if((d|0)!=(h|0)){continue}break}}k=x[a+56>>2];h=k-1|0;x[a+56>>2]=h;g=x[a+64>>2];q:{if(f>>>0>=h>>>0){break q}l=y[f+g|0];e=0;d=f;p=k+(d^-1)&3;if(p){while(1){c=d+1|0;q=c+g|0;G=y[q|0];v[q|0]=l;v[d+g|0]=G;d=c;e=e+1|0;if((p|0)!=(e|0)){continue}break}}if((k-f|0)-2>>>0<3){break q}while(1){c=d+g|0;e=y[c+1|0]|y[c+2|0]<<8;v[c|0]=e;v[c+1|0]=e>>>8;e=y[c+3|0]|y[c+4|0]<<8;v[c+2|0]=e;v[c+3|0]=e>>>8;d=d+4|0;v[g+d|0]=l;if((d|0)!=(h|0)){continue}break}}d=x[b+12>>2];c=x[a+48>>2];m=m-2|0;e=(m+f>>>0)%(j>>>0)|0;k=d+(x[c+((e+1|0)%(j|0)<<2)>>2]<<3)|0;l=e+g|0;h=d+(x[c+(e<<2)>>2]<<3)|0;i=B[h+4>>2];e=d+(x[c+((e+m|0)%(j|0)<<2)>>2]<<3)|0;n=B[e+4>>2];o=B[k+4>>2];v[l|0]=!(E(E(B[k>>2]*E(i-n))+E(E(B[e>>2]*E(o-i))+E(B[h>>2]*E(n-o))))>=E(0));f=(f|0)!=(j|0)?f:0;e=d+(x[c+((f+1|0)%(j|0)<<2)>>2]<<3)|0;h=f+g|0;k=d+(x[c+(f<<2)>>2]<<3)|0;i=B[k+4>>2];f=d+(x[c+((f+m|0)%(j|0)<<2)>>2]<<3)|0;n=B[f+4>>2];o=B[e+4>>2];v[h|0]=!(E(E(B[e>>2]*E(i-n))+E(E(B[f>>2]*E(o-i))+E(B[k>>2]*E(n-o))))>=E(0));if(j>>>0>3){continue e}break d}d=f+1|0;d=(d|0)!=(m|0)?d:0;e=c;continue}}}if((j|0)==3){g=x[a+48>>2];d=x[a+76>>2];c=x[a+72>>2];r:{if((d|0)==(c|0)){f=x[g+8>>2];i=E(E(c>>>0)*E(1.75));s:{if(E(F(i))>>0<=8?8:b;x[a+76>>2]=b;c=x[a+80>>2];d=Da();e=sa[x[x[d>>2]+16>>2]](d,c,b<<2,7693,106)|0;x[a+80>>2]=e;c=x[a+72>>2];x[(c<<2)+e>>2]=f;d=x[a+76>>2];g=x[a+48>>2];break r}e=x[a+80>>2];x[e+(c<<2)>>2]=x[g+8>>2];}c=c+1|0;x[a+72>>2]=c;t:{if((c|0)==(d|0)){f=x[g>>2];i=E(E(d>>>0)*E(1.75));u:{if(E(F(i))>>0<=8?8:b;x[a+76>>2]=b;c=Da();e=sa[x[x[c>>2]+16>>2]](c,e,b<<2,7693,106)|0;x[a+80>>2]=e;c=x[a+72>>2];x[(c<<2)+e>>2]=f;d=x[a+76>>2];g=x[a+48>>2];break t}x[(c<<2)+e>>2]=x[g>>2];}c=c+1|0;x[a+72>>2]=c;v:{if((c|0)==(d|0)){f=x[g+4>>2];i=E(E(d>>>0)*E(1.75));w:{if(E(F(i))>>0<=8?8:b;x[a+76>>2]=b;c=Da();b=sa[x[x[c>>2]+16>>2]](c,e,b<<2,7693,106)|0;x[a+80>>2]=b;c=x[a+72>>2];x[b+(c<<2)>>2]=f;break v}x[(c<<2)+e>>2]=x[g+4>>2];}x[a+72>>2]=c+1;}return a+68|0}function Mg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;x[a>>2]=18076;i=x[a+20>>2];if((i|0)>0){l=i+1|0;f=i;d=f;while(1){k=d;d=d-1|0;e=d<<2;b=x[e+x[a+28>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);f=x[a+20>>2];}c=f;f=c-1|0;x[a+20>>2]=f;a:{if(d>>>0>=f>>>0){break a}b=d;if(c+(j-i|0)&1){b=x[a+28>>2];e=b+e|0;h=x[e>>2];g=b;b=k<<2;x[e>>2]=x[g+b>>2];x[b+x[a+28>>2]>>2]=h;b=k;}if((c|0)==(l-j|0)){break a}while(1){c=x[a+28>>2];e=b<<2;h=c+e|0;m=x[h>>2];g=c;c=e+4|0;x[h>>2]=x[g+c>>2];x[c+x[a+28>>2]>>2]=m;g=c;c=x[a+28>>2];e=g+c|0;h=x[e>>2];g=c;b=b+2|0;c=b<<2;x[e>>2]=x[g+c>>2];x[c+x[a+28>>2]>>2]=h;if((b|0)!=(f|0)){continue}break}}j=j+1|0;if((k|0)>1){continue}break}}i=x[a+36>>2];if((i|0)>0){l=i+1|0;j=0;f=i;d=f;while(1){k=d;d=d-1|0;e=d<<2;b=x[e+x[a+44>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);f=x[a+36>>2];}c=f;f=c-1|0;x[a+36>>2]=f;b:{if(d>>>0>=f>>>0){break b}b=d;if(c+(j-i|0)&1){b=x[a+44>>2];e=b+e|0;h=x[e>>2];g=b;b=k<<2;x[e>>2]=x[g+b>>2];x[b+x[a+44>>2]>>2]=h;b=k;}if((c|0)==(l-j|0)){break b}while(1){c=x[a+44>>2];e=b<<2;h=c+e|0;m=x[h>>2];g=c;c=e+4|0;x[h>>2]=x[g+c>>2];x[c+x[a+44>>2]>>2]=m;g=c;c=x[a+44>>2];e=g+c|0;h=x[e>>2];g=c;b=b+2|0;c=b<<2;x[e>>2]=x[g+c>>2];x[c+x[a+44>>2]>>2]=h;if((b|0)!=(f|0)){continue}break}}j=j+1|0;if((k|0)>1){continue}break}}i=x[a+52>>2];if((i|0)>0){l=i+1|0;j=0;f=i;d=f;while(1){k=d;d=d-1|0;e=d<<2;b=x[e+x[a+60>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);f=x[a+52>>2];}c=f;f=c-1|0;x[a+52>>2]=f;c:{if(d>>>0>=f>>>0){break c}b=d;if(c+(j-i|0)&1){b=x[a+60>>2];e=b+e|0;h=x[e>>2];g=b;b=k<<2;x[e>>2]=x[g+b>>2];x[b+x[a+60>>2]>>2]=h;b=k;}if((c|0)==(l-j|0)){break c}while(1){c=x[a+60>>2];e=b<<2;h=c+e|0;m=x[h>>2];g=c;c=e+4|0;x[h>>2]=x[g+c>>2];x[c+x[a+60>>2]>>2]=m;g=c;c=x[a+60>>2];e=g+c|0;h=x[e>>2];g=c;b=b+2|0;c=b<<2;x[e>>2]=x[g+c>>2];x[c+x[a+60>>2]>>2]=h;if((b|0)!=(f|0)){continue}break}}j=j+1|0;if((k|0)>1){continue}break}}j=0;x[a+64>>2]=0;i=x[a+72>>2];if((i|0)>0){l=i+1|0;f=i;d=f;while(1){k=d;d=d-1|0;e=d<<2;b=x[e+x[a+80>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);f=x[a+72>>2];}c=f;f=c-1|0;x[a+72>>2]=f;d:{if(d>>>0>=f>>>0){break d}b=d;if(c+(j-i|0)&1){b=x[a+80>>2];e=b+e|0;h=x[e>>2];g=b;b=k<<2;x[e>>2]=x[g+b>>2];x[b+x[a+80>>2]>>2]=h;b=k;}if((c|0)==(l-j|0)){break d}while(1){c=x[a+80>>2];e=b<<2;h=c+e|0;m=x[h>>2];g=c;c=e+4|0;x[h>>2]=x[g+c>>2];x[c+x[a+80>>2]>>2]=m;g=c;c=x[a+80>>2];e=g+c|0;h=x[e>>2];g=c;b=b+2|0;c=b<<2;x[e>>2]=x[g+c>>2];x[c+x[a+80>>2]>>2]=h;if((b|0)!=(f|0)){continue}break}}j=j+1|0;if((k|0)>1){continue}break}}i=x[a+88>>2];if((i|0)>0){l=i+1|0;j=0;f=i;d=f;while(1){k=d;d=d-1|0;e=d<<2;b=x[e+x[a+96>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);f=x[a+88>>2];}c=f;f=c-1|0;x[a+88>>2]=f;e:{if(d>>>0>=f>>>0){break e}b=d;if(c+(j-i|0)&1){b=x[a+96>>2];e=b+e|0;h=x[e>>2];g=b;b=k<<2;x[e>>2]=x[g+b>>2];x[b+x[a+96>>2]>>2]=h;b=k;}if((c|0)==(l-j|0)){break e}while(1){c=x[a+96>>2];e=b<<2;h=c+e|0;m=x[h>>2];g=c;c=e+4|0;x[h>>2]=x[g+c>>2];x[c+x[a+96>>2]>>2]=m;g=c;c=x[a+96>>2];e=g+c|0;h=x[e>>2];g=c;b=b+2|0;c=b<<2;x[e>>2]=x[g+c>>2];x[c+x[a+96>>2]>>2]=h;if((b|0)!=(f|0)){continue}break}}j=j+1|0;if((k|0)>1){continue}break}}i=x[a+104>>2];if((i|0)>0){l=i+1|0;j=0;f=i;d=f;while(1){k=d;d=d-1|0;e=d<<2;b=x[e+x[a+112>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);f=x[a+104>>2];}c=f;f=c-1|0;x[a+104>>2]=f;f:{if(d>>>0>=f>>>0){break f}b=d;if(c+(j-i|0)&1){b=x[a+112>>2];e=b+e|0;h=x[e>>2];g=b;b=k<<2;x[e>>2]=x[g+b>>2];x[b+x[a+112>>2]>>2]=h;b=k;}if((c|0)==(l-j|0)){break f}while(1){c=x[a+112>>2];e=b<<2;h=c+e|0;m=x[h>>2];g=c;c=e+4|0;x[h>>2]=x[g+c>>2];x[c+x[a+112>>2]>>2]=m;g=c;c=x[a+112>>2];e=g+c|0;h=x[e>>2];g=c;b=b+2|0;c=b<<2;x[e>>2]=x[g+c>>2];x[c+x[a+112>>2]>>2]=h;if((b|0)!=(f|0)){continue}break}}j=j+1|0;if((k|0)>1){continue}break}}i=x[a+120>>2];if((i|0)>0){l=i+1|0;j=0;f=i;d=f;while(1){k=d;d=d-1|0;e=d<<2;b=x[e+x[a+128>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);f=x[a+120>>2];}c=f;f=c-1|0;x[a+120>>2]=f;g:{if(d>>>0>=f>>>0){break g}b=d;if(c+(j-i|0)&1){b=x[a+128>>2];e=b+e|0;h=x[e>>2];g=b;b=k<<2;x[e>>2]=x[g+b>>2];x[b+x[a+128>>2]>>2]=h;b=k;}if((c|0)==(l-j|0)){break g}while(1){c=x[a+128>>2];e=b<<2;h=c+e|0;m=x[h>>2];g=c;c=e+4|0;x[h>>2]=x[g+c>>2];x[c+x[a+128>>2]>>2]=m;g=c;c=x[a+128>>2];e=g+c|0;h=x[e>>2];g=c;b=b+2|0;c=b<<2;x[e>>2]=x[g+c>>2];x[c+x[a+128>>2]>>2]=h;if((b|0)!=(f|0)){continue}break}}j=j+1|0;if((k|0)>1){continue}break}}i=x[a+136>>2];if((i|0)>0){l=i+1|0;j=0;f=i;d=f;while(1){k=d;d=d-1|0;e=d<<2;b=x[e+x[a+144>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);f=x[a+136>>2];}c=f;f=c-1|0;x[a+136>>2]=f;h:{if(d>>>0>=f>>>0){break h}b=d;if(c+(j-i|0)&1){b=x[a+144>>2];e=b+e|0;h=x[e>>2];g=b;b=k<<2;x[e>>2]=x[g+b>>2];x[b+x[a+144>>2]>>2]=h;b=k;}if((c|0)==(l-j|0)){break h}while(1){c=x[a+144>>2];e=b<<2;h=c+e|0;m=x[h>>2];g=c;c=e+4|0;x[h>>2]=x[g+c>>2];x[c+x[a+144>>2]>>2]=m;g=c;c=x[a+144>>2];e=g+c|0;h=x[e>>2];g=c;b=b+2|0;c=b<<2;x[e>>2]=x[g+c>>2];x[c+x[a+144>>2]>>2]=h;if((b|0)!=(f|0)){continue}break}}j=j+1|0;if((k|0)>1){continue}break}}if(x[a+192>>2]){b=0;while(1){d=x[x[a+200>>2]+(b<<2)>>2];f=Da();sa[x[x[f>>2]+20>>2]](f,d,5900,74);b=b+1|0;if(b>>>0>2]){continue}break}}x[a+220>>2]=1080;b=x[a+228>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,8064,201);}x[a+208>>2]=1080;b=x[a+216>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,8064,201);}x[a+192>>2]=0;x[a+188>>2]=18592;b=x[a+200>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,7693,206);}x[a+176>>2]=1080;b=x[a+184>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,8064,201);}x[a+164>>2]=1080;b=x[a+172>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,8064,201);}x[a+136>>2]=0;x[a+132>>2]=18520;b=x[a+144>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,7693,206);}x[a+120>>2]=0;x[a+116>>2]=18444;b=x[a+128>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,7693,206);}x[a+104>>2]=0;x[a+100>>2]=18372;b=x[a+112>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,7693,206);}x[a+88>>2]=0;x[a+84>>2]=18308;b=x[a+96>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,7693,206);}x[a+72>>2]=0;x[a+68>>2]=18244;b=x[a+80>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,7693,206);}x[a+52>>2]=0;x[a+48>>2]=18188;b=x[a+60>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,7693,206);}x[a+36>>2]=0;x[a+32>>2]=18128;b=x[a+44>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,7693,206);}x[a+20>>2]=0;x[a+16>>2]=15708;b=x[a+28>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,7693,206);}x[a+4>>2]=1080;b=x[a+12>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,8064,201);}return a|0}function $h(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,z=0,A=0,B=0,C=0,E=0;n=3695;i=qa-80|0;qa=i;x[i+76>>2]=3695;C=i+55|0;s=i+56|0;a:{b:{c:{d:{e:while(1){h=n;if((o^2147483647)<(e|0)){break d}o=e+o|0;f:{g:{h:{e=h;g=y[e|0];if(g){while(1){i:{f=g&255;j:{if(!f){n=e;break j}if((f|0)!=37){break i}g=e;while(1){if(y[g+1|0]!=37){n=g;break j}e=e+1|0;f=y[g+2|0];n=g+2|0;g=n;if((f|0)==37){continue}break}}e=e-h|0;B=o^2147483647;if((e|0)>(B|0)){break d}if(a){Jc(a,h,e);}if(e){continue e}x[i+76>>2]=n;e=n+1|0;q=-1;f=v[n+1|0];if(!(y[n+2|0]!=36|f-48>>>0>=10)){q=f-48|0;t=1;e=n+3|0;}x[i+76>>2]=e;l=0;g=v[e|0];f=g-32|0;k:{if(f>>>0>31){m=e;break k}m=e;n=1<>2]=m;l=l|n;g=v[e+1|0];f=g-32|0;if(f>>>0>=32){break k}e=m;n=1<>>0>=10)){x[((e<<2)+d|0)-192>>2]=10;g=m+3|0;t=1;e=x[((v[m+1|0]<<3)+c|0)-384>>2];break m}if(t){break h}g=m+1|0;if(!a){x[i+76>>2]=g;t=0;r=0;break l}e=x[b>>2];x[b>>2]=e+4;t=0;e=x[e>>2];}x[i+76>>2]=g;r=e;if((e|0)>=0){break l}r=0-r|0;l=l|8192;break l}r=_h(i+76|0);if((r|0)<0){break d}g=x[i+76>>2];}e=0;j=-1;n:{if(y[g|0]!=46){n=g;z=0;break n}if(y[g+1|0]==42){f=v[g+2|0];o:{if(!(y[g+3|0]!=36|f-48>>>0>=10)){x[((f<<2)+d|0)-192>>2]=10;n=g+4|0;j=x[((v[g+2|0]<<3)+c|0)-384>>2];break o}if(t){break h}n=g+2|0;j=0;if(!a){break o}f=x[b>>2];x[b>>2]=f+4;j=x[f>>2];}x[i+76>>2]=n;z=(j^-1)>>>31|0;break n}x[i+76>>2]=g+1;j=_h(i+76|0);n=x[i+76>>2];z=1;}while(1){g=e;m=28;k=n;e=v[k|0];if(e-123>>>0<4294967238){break c}n=k+1|0;e=y[(e+D(g,58)|0)+51727|0];if(e-1>>>0<8){continue}break}x[i+76>>2]=n;p:{q:{if((e|0)!=27){if(!e){break c}if((q|0)>=0){x[(q<<2)+d>>2]=e;f=(q<<3)+c|0;e=x[f+4>>2];x[i+64>>2]=x[f>>2];x[i+68>>2]=e;break q}if(!a){break f}Zh(i- -64|0,e,b);break p}if((q|0)>=0){break c}}e=0;if(!a){continue e}}f=l&-65537;l=l&8192?f:l;q=0;u=1661;m=s;r:{s:{t:{u:{v:{w:{x:{y:{z:{A:{B:{C:{D:{E:{F:{G:{e=v[k|0];e=g?(e&15)==3?e&-33:e:e;switch(e-88|0){case 11:break r;case 9:case 13:case 14:case 15:break s;case 27:break x;case 12:case 17:break A;case 23:break B;case 0:case 32:break C;case 24:break D;case 22:break E;case 29:break F;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 10:case 16:case 18:case 19:case 20:case 21:case 25:case 26:case 28:case 30:case 31:break g;default:break G}}H:{switch(e-65|0){case 0:case 4:case 5:case 6:break s;case 2:break v;case 1:case 3:break g;default:break H}}if((e|0)==83){break w}break g}f=x[i+64>>2];k=x[i+68>>2];u=1661;break z}e=0;I:{switch(g&255){case 0:x[x[i+64>>2]>>2]=o;continue e;case 1:x[x[i+64>>2]>>2]=o;continue e;case 2:h=x[i+64>>2];x[h>>2]=o;x[h+4>>2]=o>>31;continue e;case 3:w[x[i+64>>2]>>1]=o;continue e;case 4:v[x[i+64>>2]]=o;continue e;case 6:x[x[i+64>>2]>>2]=o;continue e;case 7:break I;default:continue e}}h=x[i+64>>2];x[h>>2]=o;x[h+4>>2]=o>>31;continue e}j=j>>>0<=8?8:j;l=l|8;e=120;}h=s;E=e&32;f=x[i+64>>2];k=x[i+68>>2];if(f|k){while(1){h=h-1|0;v[h|0]=E|y[(f&15)+52256|0];A=!k&f>>>0>15|(k|0)!=0;g=k;k=g>>>4|0;f=(g&15)<<28|f>>>4;if(A){continue}break}}if(!(x[i+64>>2]|x[i+68>>2])|!(l&8)){break y}u=(e>>>4|0)+1661|0;q=2;break y}e=s;h=x[i+68>>2];k=h;f=x[i+64>>2];if(h|f){while(1){e=e-1|0;v[e|0]=f&7|48;g=!k&f>>>0>7|(k|0)!=0;h=k;k=h>>>3|0;f=(h&7)<<29|f>>>3;if(g){continue}break}}h=e;if(!(l&8)){break y}e=s-h|0;j=(e|0)<(j|0)?j:e+1|0;break y}f=x[i+64>>2];h=x[i+68>>2];k=h;if((h|0)<0){e=0-(k+((f|0)!=0)|0)|0;k=e;f=0-f|0;x[i+64>>2]=f;x[i+68>>2]=e;q=1;u=1661;break z}if(l&2048){q=1;u=1662;break z}q=l&1;u=q?1663:1661;}g=s;J:{if(!k){h=f;break J}while(1){h=Vw(f,k,10);e=ra;f=Uw(h,e,246,0)+f|0;g=g-1|0;v[g|0]=f|48;A=k>>>0>9;f=h;k=e;if(A){continue}break}}if(h){while(1){g=g-1|0;e=(h>>>0)/10|0;v[g|0]=D(e,246)+h|48;f=h>>>0>9;h=e;if(f){continue}break}}h=g;}if((j|0)<0?z:0){break d}l=z?l&-65537:l;e=x[i+64>>2];f=x[i+68>>2];if(!(j|(e|f)!=0)){h=s;j=0;break g}e=!(e|f)+(s-h|0)|0;j=(e|0)<(j|0)?j:e;break g}h=x[i+64>>2];h=h?h:12106;k=j>>>0>=2147483647?2147483647:j;e=ai(h,k);e=e?e-h|0:k;m=e+h|0;if((j|0)>=0){l=f;j=e;break g}l=f;j=e;if(y[m|0]){break d}break g}if(j){g=x[i+64>>2];break u}e=0;qc(a,32,r,0,l);break t}x[i+12>>2]=0;x[i+8>>2]=x[i+64>>2];g=i+8|0;x[i+64>>2]=g;j=-1;}e=0;K:{while(1){h=x[g>>2];if(!h){break K}f=Yh(i+4|0,h);h=(f|0)<0;if(!(h|f>>>0>j-e>>>0)){g=g+4|0;e=e+f|0;if(j>>>0>e>>>0){continue}break K}break}if(h){break b}}m=61;if((e|0)<0){break c}qc(a,32,r,e,l);if(!e){e=0;break t}m=0;g=x[i+64>>2];while(1){h=x[g>>2];if(!h){break t}h=Yh(i+4|0,h);m=h+m|0;if(m>>>0>e>>>0){break t}Jc(a,i+4|0,h);g=g+4|0;if(e>>>0>m>>>0){continue}break}}qc(a,32,r,e,l^8192);e=(e|0)<(r|0)?r:e;continue e}if((j|0)<0?z:0){break d}p();}v[i+55|0]=x[i+64>>2];j=1;h=C;l=f;break g}g=y[e+1|0];e=e+1|0;continue}}if(a){break a}if(!t){break f}e=1;while(1){a=x[(e<<2)+d>>2];if(a){Zh((e<<3)+c|0,a,b);o=1;e=e+1|0;if((e|0)!=10){continue}break a}break}o=1;if(e>>>0>=10){break a}while(1){if(x[(e<<2)+d>>2]){break h}e=e+1|0;if((e|0)!=10){continue}break}break a}m=28;break c}k=m-h|0;f=(j|0)>(k|0)?j:k;if((f|0)>(q^2147483647)){break d}m=61;g=f+q|0;e=(g|0)<(r|0)?r:g;if((B|0)<(e|0)){break c}qc(a,32,e,g,l);Jc(a,u,q);qc(a,48,e,g,l^65536);qc(a,48,f,k,0);Jc(a,h,k);qc(a,32,e,g,l^8192);continue}break}o=0;break a}m=61;}x[13623]=m;}o=-1;}qa=i+80|0;return o}function id(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=E(0),l=0,m=0,n=0,o=E(0),p=E(0),q=0,r=0,s=0,t=E(0),u=0,w=0;if(y[a+88|0]){v[a+88|0]=0;c=x[a+80>>2];if(c){while(1){e=x[c+12>>2];sa[x[x[c>>2]+4>>2]](c);c=e;if(c){continue}break}}x[a+80>>2]=0;x[a+84>>2]=0;s=x[a+44>>2];a:{if(!s){break a}while(1){e=x[x[a+52>>2]+(m<<2)>>2];if(e){while(1){c=e;e=x[c+24>>2];if(e){continue}break}while(1){e=x[c+28>>2];if(x[c+112>>2]==3?e:0){c=e;}else {f=x[c+120>>2];e=c;r=x[c+16>>2];j=x[r+8>>2];x[c+120>>2]=j;h=x[c+28>>2];d=j;if(d>>>0>A[c+124>>2]){k=E(E(j>>>0)*E(1.75));b:{if(E(F(k))>>0<=8?8:c;x[e+124>>2]=c;d=x[e+128>>2];g=Da();u=e,w=sa[x[x[g>>2]+16>>2]](g,d,c<<2,7693,82)|0,x[u+128>>2]=w;d=x[e+120>>2];}if(d>>>0>f>>>0){Ha(x[e+128>>2]+(f<<2)|0,0,d-f<<2);}f=x[e+136>>2];x[e+136>>2]=j;c=j;if(c>>>0>A[e+140>>2]){k=E(E(j>>>0)*E(1.75));c:{if(E(F(k))>>0<=8?8:c;x[e+140>>2]=c;d=x[e+144>>2];g=Da();u=e,w=sa[x[x[g>>2]+16>>2]](g,d,c<<2,7693,82)|0,x[u+144>>2]=w;c=x[e+136>>2];}d:{if(c>>>0<=f>>>0){break d}g=(f^-1)+c|0;l=c-f&3;if(l){d=0;while(1){x[x[e+144>>2]+(f<<2)>>2]=0;f=f+1|0;d=d+1|0;if((l|0)!=(d|0)){continue}break}}if(g>>>0<3){break d}while(1){d=f<<2;x[d+x[e+144>>2]>>2]=0;x[(d+x[e+144>>2]|0)+4>>2]=0;x[(d+x[e+144>>2]|0)+8>>2]=0;x[(d+x[e+144>>2]|0)+12>>2]=0;f=f+4|0;if((f|0)!=(c|0)){continue}break}}e:{if(!(!h|!y[h+37|0])){if(!j){break e}g=0;while(1){l=g<<2;c=x[l+x[r+16>>2]>>2];h=sa[x[x[c>>2]+16>>2]](c)|0;d=x[a+80>>2];f=d;f:{g:{if(d){while(1){if((h|0)==x[f+4>>2]){break f}f=x[f+12>>2];if(f){continue}break}while(1){if((h|0)==x[d+4>>2]){break g}d=x[d+12>>2];if(d){continue}break}}c=Ma(20,7817,114);x[c+12>>2]=0;x[c+16>>2]=0;x[c>>2]=12788;v[c+8|0]=1;x[c+4>>2]=h;d=x[a+80>>2];if(d){x[d+16>>2]=c;x[c+12>>2]=d;}x[a+80>>2]=c;x[a+84>>2]=x[a+84>>2]+1;break f}v[d+8|0]=1;x[d+4>>2]=h;}x[l+x[e+128>>2]>>2]=2;g=g+1|0;if((j|0)!=(g|0)){continue}break}break e}if(!j){break e}g=0;while(1){n=g<<2;d=x[n+x[r+16>>2]>>2];l=sa[x[x[d>>2]+16>>2]](d)|0;c=x[a+80>>2];f=c;h:{i:{j:{if(c){while(1){if((l|0)==x[f+4>>2]){f=0;break h}f=x[f+12>>2];if(f){continue}break}while(1){if((l|0)==x[c+4>>2]){break j}c=x[c+12>>2];if(c){continue}break}}c=Ma(20,7817,114);x[c+12>>2]=0;x[c+16>>2]=0;x[c>>2]=12788;v[c+8|0]=1;x[c+4>>2]=l;f=x[a+80>>2];if(f){x[f+16>>2]=c;x[c+12>>2]=f;}x[a+80>>2]=c;x[a+84>>2]=x[a+84>>2]+1;break i}v[c+8|0]=1;x[c+4>>2]=l;}f=1;if(!h){break h}if(pb(sa[x[x[d>>2]+8>>2]](d)|0,54028)){break h}if(pb(sa[x[x[d>>2]+8>>2]](d)|0,54128)){break h}if(pb(sa[x[x[d>>2]+8>>2]](d)|0,54140)){break h}c=h;if(!Bf(x[c+16>>2],l)){break h}while(1){f=2;c=x[c+28>>2];if(!c){break h}if(Bf(x[c+16>>2],l)){continue}break}if(!(B[e+100>>2]>E(0))){break h}x[n+x[e+128>>2]>>2]=3;x[n+x[e+144>>2]>>2]=e;g=g+1|0;if(j>>>0>g>>>0){continue}break e}x[n+x[e+128>>2]>>2]=f;g=g+1|0;if(j>>>0>g>>>0){continue}break}}c=x[e+28>>2];}if(c){continue}break}}m=m+1|0;if((s|0)!=(m|0)){continue}break}c=x[a+80>>2];if(c){while(1){e=x[c+12>>2];sa[x[x[c>>2]+4>>2]](c);c=e;if(c){continue}break}}x[a+80>>2]=0;x[a+84>>2]=0;e=x[a+44>>2];if((e|0)<=0){break a}while(1){j=e;e=e-1|0;d=x[x[a+52>>2]+(e<<2)>>2];if(d){while(1){f=x[d+16>>2];g=x[f+8>>2];if(g){m=0;while(1){h=m<<2;c=x[h+x[f+16>>2]>>2];k:{if(!pb(sa[x[x[c>>2]+8>>2]](c)|0,54028)){break k}l=x[h+x[f+16>>2]>>2];n=x[l+4>>2];l:{m:{c=x[a+80>>2];if(c){while(1){if((n|0)==x[c+4>>2]){break m}c=x[c+12>>2];if(c){continue}break}}h=x[l+4>>2];c=x[a+80>>2];if(c){while(1){if((h|0)==x[c+4>>2]){break l}c=x[c+12>>2];if(c){continue}break}}c=Ma(20,7817,114);x[c+12>>2]=0;x[c+16>>2]=0;x[c>>2]=12788;v[c+8|0]=1;x[c+4>>2]=h;h=x[a+80>>2];if(h){x[h+16>>2]=c;x[c+12>>2]=h;}x[a+80>>2]=c;x[a+84>>2]=x[a+84>>2]+1;break k}c=h+x[d+128>>2]|0;x[c>>2]=x[c>>2]|4;break k}v[c+8|0]=1;x[c+4>>2]=h;}m=m+1|0;if((g|0)!=(m|0)){continue}break}}d=x[d+24>>2];if(d){continue}break}}if((j|0)>1){continue}break}}}m=x[a+44>>2];if(m){h=a+56|0;while(1){c=x[x[a+52>>2]+(q<<2)>>2];if(!(!c|B[c+68>>2]>E(0))){e=q?x[c+112>>2]:1;o=B[c+92>>2];n:{if(x[c+24>>2]){o=E(o*hg(a,c,b,e));break n}if(!(B[c+72>>2]>=B[c+84>>2])){break n}o=x[c+20>>2]?o:E(0);}k=B[c+52>>2];t=B[c+60>>2];o:{if(y[c+36|0]){p=E(B[c+56>>2]-k);if(p==E(0)){break o}k=E(Sb(B[c+72>>2],p)+B[c+52>>2]);break o}k=E(k+B[c+72>>2]);p=B[c+56>>2];k=k>2];j=x[f+8>>2];p:{if(!(!(!q&o==E(1))&(e|0)!=3)){if(!j){break p}i=0;while(1){d=x[x[f+16>>2]+(i<<2)>>2];sa[x[x[d>>2]+12>>2]](d,b,t,k,h,o,e,0);i=i+1|0;if((j|0)!=(i|0)){continue}break}break p}l=x[c+152>>2];q:{if(l){break q}i=j<<1;x[c+152>>2]=i;if(A[c+156>>2]>>0){p=E(E(i>>>0)*E(1.75));r:{if(E(F(p))>>0<=8?8:d;x[c+156>>2]=d;i=x[c+160>>2];g=Da();u=c,w=sa[x[x[g>>2]+16>>2]](g,i,d<<2,7693,82)|0,x[u+160>>2]=w;i=x[c+152>>2];}if(!i){break q}Ha(x[c+160>>2],0,i<<2);}if(!j){break p}n=c+148|0;i=0;while(1){d=i<<2;g=x[d+x[c+128>>2]>>2]&3?0:e;d=x[d+x[f+16>>2]>>2];s:{if(pb(sa[x[x[d>>2]+8>>2]](d)|0,54280)){gg(d,b,k,o,g,n,i<<1,!l);break s}sa[x[x[d>>2]+12>>2]](d,b,t,k,h,o,g,0);}i=i+1|0;if((j|0)!=(i|0)){continue}break}}fg(a,c,k);x[a+60>>2]=0;B[c+64>>2]=k;B[c+80>>2]=B[c+72>>2];i=1;}q=q+1|0;if((m|0)!=(q|0)){continue}break}}ic(x[a+72>>2]);return i&1}function ro(a){a=a|0;var b=E(0),c=0,d=0,e=0,f=E(0),g=E(0),h=E(0),i=0,j=0,k=E(0),l=E(0),m=E(0),n=E(0),o=E(0),p=E(0),q=E(0),r=E(0),s=E(0),t=E(0),u=E(0),w=E(0),z=E(0),C=E(0),G=E(0),H=E(0),I=E(0),J=0,K=0,L=E(0),N=0,O=E(0);d=x[a+4>>2];j=y[d+84|0];if(y[d+85|0]){if(j){g=B[a+40>>2];l=B[a+36>>2];n=B[a+32>>2];m=B[a+28>>2];e=x[a+24>>2];if(!y[e+88|0]){nc(e);}if(x[a+12>>2]){while(1){d=x[x[a+20>>2]+(i<<2)>>2];if(!y[d+88|0]){nc(d);}k=B[d+68>>2];k=m!=E(0)?E(E(E(B[e+68>>2]+B[x[a+4>>2]+60>>2])*m)+k):k;h=B[d+64>>2];p=B[d+60>>2];if(n!=E(0)){j=x[a+4>>2];h=E(E(E(B[e+64>>2]+B[j+68>>2])*n)+h);p=E(E(E(B[e+60>>2]+B[j+64>>2])*n)+p);}b=B[d+76>>2];f=B[d+72>>2];a:{if(l==E(0)){break a}f=f>E(9999999747378752e-21)?E(f*E(E(E(E(B[e+72>>2]+E(-1))+B[x[a+4>>2]+72>>2])*l)+E(1))):f;if(!(b>E(9999999747378752e-21))){break a}b=E(b*E(E(E(E(B[e+76>>2]+E(-1))+B[x[a+4>>2]+76>>2])*l)+E(1)));}q=B[d+84>>2];w=B[d+80>>2];if(g!=E(0)){q=E(E(E(B[e+84>>2]+B[x[a+4>>2]+80>>2])*g)+q);}hc(d,p,h,k,f,b,w,q);i=i+1|0;if(i>>>0>2]){continue}break}}return}m=B[a+40>>2];n=B[a+36>>2];g=B[a+32>>2];w=B[a+28>>2];j=x[a+24>>2];if(!y[j+88|0]){nc(j);}if(x[a+12>>2]){while(1){e=x[x[a+20>>2]+(i<<2)>>2];if(!y[e+88|0]){nc(e);}h=B[e+68>>2];if(w!=E(0)){b=E(E(B[j+68>>2]-h)+B[x[a+4>>2]+60>>2]);K=+E(b/E(-360))+16384.499999999996;b:{if(F(K)<2147483648){d=~~K;break b}d=-2147483648;}h=E(E(E(b-E(D(16384-d|0,360)|0))*w)+h);}l=B[e+64>>2];k=B[e+60>>2];if(g!=E(0)){d=x[a+4>>2];l=E(E(E(E(B[j+64>>2]-l)+B[d+68>>2])*g)+l);k=E(E(E(E(B[j+60>>2]-k)+B[d+64>>2])*g)+k);}b=B[e+76>>2];f=B[e+72>>2];c:{if(n==E(0)){break c}f=f>E(9999999747378752e-21)?E(E(E(E(E(B[j+72>>2]-f)+B[x[a+4>>2]+72>>2])*n)+f)/f):f;if(!(b>E(9999999747378752e-21))){break c}b=E(E(E(E(E(B[j+76>>2]-b)+B[x[a+4>>2]+76>>2])*n)+b)/b);}q=B[e+84>>2];if(m!=E(0)){p=E(E(B[j+84>>2]-q)+B[x[a+4>>2]+80>>2]);K=+E(p/E(-360))+16384.499999999996;d:{if(F(K)<2147483648){d=~~K;break d}d=-2147483648;}B[e+56>>2]=E(E(p-E(D(16384-d|0,360)|0))*m)+B[e+56>>2];}hc(e,k,l,h,f,b,B[e+80>>2],q);i=i+1|0;if(i>>>0>2]){continue}break}}return}if(j){e=qa-16|0;qa=e;if(x[a+12>>2]){b=B[3978];i=x[a+24>>2];L=B[i+92>>2];s=B[i+108>>2];o=B[i+104>>2];t=B[i+96>>2];b=E(E(L*s)-E(o*t))>E(0)?b:E(-b);d=x[a+4>>2];w=E(b*B[d+80>>2]);q=E(B[d+60>>2]*b);z=B[a+40>>2];G=B[a+36>>2];H=B[a+32>>2];I=B[a+28>>2];j=I!=E(0);C=B[3976];p=E(C*E(.5));h=E(E(t*t)+E(s*s));k=E(E(L*L)+E(o*o));r=B[3977];l=E(-C);while(1){c=x[x[a+20>>2]+(J<<2)>>2];if(I!=E(0)){n=B[c+108>>2];g=B[c+104>>2];m=B[c+96>>2];f=B[c+92>>2];b=E(q+Va(o,L));e:{if(C>2]=E(b*m)+E(n*u);B[c+104>>2]=E(b*f)+E(g*u);B[c+96>>2]=E(u*m)-E(n*b);B[c+92>>2]=E(u*f)-E(g*b);}d=j;if(H!=E(0)){d=x[a+4>>2];Pd(i,B[d+64>>2],B[d+68>>2],e+12|0,e+8|0);B[c+100>>2]=E(B[e+12>>2]*H)+B[c+100>>2];B[c+112>>2]=E(B[e+8>>2]*H)+B[c+112>>2];d=1;}f:{g:{h:{if(!(G>E(0))){if(z>E(0)){break h}if(d){break g}break f}b=E(E(E(E(E(M(k))+E(-1))+B[x[a+4>>2]+72>>2])*G)+E(1));B[c+92>>2]=B[c+92>>2]*b;B[c+104>>2]=b*B[c+104>>2];b=E(E(E(E(E(M(h))+E(-1))+B[x[a+4>>2]+76>>2])*G)+E(1));B[c+96>>2]=B[c+96>>2]*b;B[c+108>>2]=b*B[c+108>>2];if(!(z>E(0))){break g}}b=E(Va(s,t)-Va(o,L));i:{if(C>2];m=B[c+108>>2];f=E(M(E(E(g*g)+E(m*m))));b=E(Va(m,g)+E(E(w+E(b-p))*z));N=c,O=E(f*Hb(b)),B[N+96>>2]=O;N=c,O=E(f*Fb(b)),B[N+108>>2]=O;}v[c+88|0]=0;}J=J+1|0;if(J>>>0>2]){continue}break}}qa=e+16|0;return}e=qa-16|0;qa=e;if(x[a+12>>2]){b=B[3978];i=x[a+24>>2];o=B[i+92>>2];t=B[i+108>>2];r=B[i+104>>2];z=B[i+96>>2];b=E(E(o*t)-E(r*z))>E(0)?b:E(-b);d=x[a+4>>2];m=E(b*B[d+80>>2]);w=E(B[d+60>>2]*b);G=B[a+40>>2];H=B[a+36>>2];C=B[a+32>>2];I=B[a+28>>2];j=I!=E(0);q=E(E(z*z)+E(t*t));p=E(E(o*o)+E(r*r));u=B[3977];l=B[3976];n=E(-l);while(1){c=x[x[a+20>>2]+(J<<2)>>2];if(I!=E(0)){k=B[c+108>>2];f=B[c+96>>2];g=B[c+104>>2];h=B[c+92>>2];b=E(w+E(Va(r,o)-Va(g,h)));j:{if(l>2]=E(b*f)+E(k*s);B[c+104>>2]=E(b*h)+E(g*s);B[c+96>>2]=E(s*f)-E(k*b);B[c+92>>2]=E(s*h)-E(g*b);}d=j;if(C!=E(0)){d=x[a+4>>2];Pd(i,B[d+64>>2],B[d+68>>2],e+12|0,e+8|0);b=B[c+100>>2];B[c+100>>2]=E(E(B[e+12>>2]-b)*C)+b;b=B[c+112>>2];B[c+112>>2]=E(E(B[e+8>>2]-b)*C)+b;d=1;}k:{l:{m:{n:{if(H>E(0)){b=B[c+92>>2];f=E(b*b);b=B[c+104>>2];b=E(M(E(f+E(b*b))));if(b>E(9999999747378752e-21)){b=E(E(E(E(E(E(M(p))-b)+B[x[a+4>>2]+72>>2])*H)+b)/b);}B[c+92>>2]=b*B[c+92>>2];B[c+104>>2]=b*B[c+104>>2];b=B[c+96>>2];f=E(b*b);b=B[c+108>>2];b=E(M(E(f+E(b*b))));if(b>E(9999999747378752e-21)){b=E(E(E(E(E(E(M(q))-b)+B[x[a+4>>2]+76>>2])*H)+b)/b);}h=E(b*B[c+96>>2]);B[c+96>>2]=h;b=E(b*B[c+108>>2]);B[c+108>>2]=b;if(G>E(0)){break n}break l}if(!(G>E(0))){break m}b=B[c+108>>2];h=B[c+96>>2];}g=Va(b,h);f=E(E(Va(t,z)-Va(r,o))-E(g-Va(B[c+104>>2],B[c+92>>2])));o:{if(l>2]=O;N=c,O=E(k*Fb(b)),B[N+108>>2]=O;break l}if(!d){break k}}v[c+88|0]=0;}J=J+1|0;if(J>>>0>2]){continue}break}}qa=e+16|0;}function bh(a,b){var c=0,d=0,e=E(0),f=0,g=0,h=0,i=0,j=0;x[a+4>>2]=b;x[a+120>>2]=14588;x[a+116>>2]=0;x[a+108>>2]=0;x[a+112>>2]=0;x[a+104>>2]=17252;x[a+100>>2]=0;x[a+92>>2]=0;x[a+96>>2]=0;x[a+88>>2]=17184;x[a+84>>2]=0;x[a+76>>2]=0;x[a+80>>2]=0;x[a+72>>2]=17112;x[a+68>>2]=0;x[a+60>>2]=0;x[a+64>>2]=0;x[a+56>>2]=17044;x[a+52>>2]=0;x[a+44>>2]=0;x[a+48>>2]=0;x[a+40>>2]=16988;x[a+36>>2]=0;x[a+28>>2]=0;x[a+32>>2]=0;x[a+24>>2]=16988;x[a+20>>2]=0;x[a+12>>2]=0;x[a+16>>2]=0;x[a+8>>2]=14588;x[a>>2]=16940;x[a+132>>2]=0;x[a+136>>2]=0;x[a+124>>2]=0;x[a+128>>2]=0;x[a+140>>2]=14896;x[a+144>>2]=1065353216;x[a+148>>2]=1065353216;x[a+152>>2]=1065353216;x[a+156>>2]=1065353216;B[a+144>>2]=1;e=B[a+148>>2];B[a+148>>2]=eE(1)?E(1):e;e=B[a+152>>2];B[a+152>>2]=eE(1)?E(1):e;e=B[a+156>>2];x[a+176>>2]=0;x[a+168>>2]=1065353216;x[a+172>>2]=0;x[a+160>>2]=0;x[a+164>>2]=1065353216;B[a+156>>2]=eE(1)?E(1):e;b=x[(x[a+4>>2]+16|0)+4>>2];if(b>>>0>A[a+16>>2]){x[a+16>>2]=b;c=x[a+20>>2];f=Da();i=a,j=sa[x[x[f>>2]+16>>2]](f,c,b<<2,7693,94)|0,x[i+20>>2]=j;}if(x[(x[a+4>>2]+16|0)+4>>2]){while(1){b=x[x[(x[a+4>>2]+16|0)+12>>2]+(d<<2)>>2];a:{if(!x[b+20>>2]){f=Ff(Ma(120,5323,74),b,a,0);break a}c=x[x[a+20>>2]+(x[x[b+20>>2]+4>>2]<<2)>>2];f=Ff(Ma(120,5323,77),b,a,c);b=c+16|0;c=x[b+4>>2];b:{if((c|0)==x[b+8>>2]){e=E(E(c>>>0)*E(1.75));c:{if(E(F(e))>>0<=8?8:c;x[b+8>>2]=c;g=x[b+12>>2];h=Da();g=sa[x[x[h>>2]+16>>2]](h,g,c<<2,7693,106)|0;x[b+12>>2]=g;c=x[b+4>>2];h=g+(c<<2)|0;break b}h=x[b+12>>2]+(c<<2)|0;}x[h>>2]=f;x[b+4>>2]=c+1;}b=x[a+12>>2];d:{if((b|0)==x[a+16>>2]){e=E(E(b>>>0)*E(1.75));e:{if(E(F(e))>>0<=8?8:b;x[a+16>>2]=b;c=x[a+20>>2];g=Da();c=sa[x[x[g>>2]+16>>2]](g,c,b<<2,7693,106)|0;x[a+20>>2]=c;b=x[a+12>>2];c=c+(b<<2)|0;break d}c=x[a+20>>2]+(b<<2)|0;}x[c>>2]=f;x[a+12>>2]=b+1;d=d+1|0;if(d>>>0>2]+16|0)+4>>2]){continue}break}}b=x[(x[a+4>>2]+32|0)+4>>2];if(b>>>0>A[a+32>>2]){x[a+32>>2]=b;d=x[a+36>>2];c=Da();i=a,j=sa[x[x[c>>2]+16>>2]](c,d,b<<2,7693,94)|0,x[i+36>>2]=j;}b=x[(x[a+4>>2]+32|0)+4>>2];if(b>>>0>A[a+48>>2]){x[a+48>>2]=b;d=x[a+52>>2];c=Da();i=a,j=sa[x[x[c>>2]+16>>2]](c,d,b<<2,7693,94)|0,x[i+52>>2]=j;}if(x[(x[a+4>>2]+32|0)+4>>2]){d=0;while(1){b=x[x[(x[a+4>>2]+32|0)+12>>2]+(d<<2)>>2];c=x[x[a+20>>2]+(x[x[b+20>>2]+4>>2]<<2)>>2];c=Gg(Ma(84,5323,90),b,c);b=x[a+28>>2];f:{if((b|0)==x[a+32>>2]){e=E(E(b>>>0)*E(1.75));g:{if(E(F(e))>>0<=8?8:b;x[a+32>>2]=b;f=x[a+36>>2];g=Da();f=sa[x[x[g>>2]+16>>2]](g,f,b<<2,7693,106)|0;x[a+36>>2]=f;b=x[a+28>>2];h=f+(b<<2)|0;break f}h=x[a+36>>2]+(b<<2)|0;}x[h>>2]=c;x[a+28>>2]=b+1;b=x[a+44>>2];h:{if((b|0)==x[a+48>>2]){e=E(E(b>>>0)*E(1.75));i:{if(E(F(e))>>0<=8?8:b;x[a+48>>2]=b;f=x[a+52>>2];g=Da();f=sa[x[x[g>>2]+16>>2]](g,f,b<<2,7693,106)|0;x[a+52>>2]=f;b=x[a+44>>2];h=f+(b<<2)|0;break h}h=x[a+52>>2]+(b<<2)|0;}x[h>>2]=c;x[a+44>>2]=b+1;d=d+1|0;if(d>>>0>2]+32|0)+4>>2]){continue}break}}b=x[(x[a+4>>2]+100|0)+4>>2];if(b>>>0>A[a+64>>2]){x[a+64>>2]=b;d=x[a+68>>2];c=Da();i=a,j=sa[x[x[c>>2]+16>>2]](c,d,b<<2,7693,94)|0,x[i+68>>2]=j;}if(x[(x[a+4>>2]+100|0)+4>>2]){d=0;while(1){b=x[x[(x[a+4>>2]+100|0)+12>>2]+(d<<2)>>2];f=rh(Ma(48,5323,100),b,a);b=x[a+60>>2];j:{if((b|0)==x[a+64>>2]){e=E(E(b>>>0)*E(1.75));k:{if(E(F(e))>>0<=8?8:b;x[a+64>>2]=b;c=x[a+68>>2];g=Da();c=sa[x[x[g>>2]+16>>2]](g,c,b<<2,7693,106)|0;x[a+68>>2]=c;b=x[a+60>>2];c=c+(b<<2)|0;break j}c=x[a+68>>2]+(b<<2)|0;}x[c>>2]=f;x[a+60>>2]=b+1;d=d+1|0;if(d>>>0>2]+100|0)+4>>2]){continue}break}}b=x[(x[a+4>>2]+116|0)+4>>2];if(b>>>0>A[a+80>>2]){x[a+80>>2]=b;d=x[a+84>>2];c=Da();i=a,j=sa[x[x[c>>2]+16>>2]](c,d,b<<2,7693,94)|0,x[i+84>>2]=j;}if(x[(x[a+4>>2]+116|0)+4>>2]){d=0;while(1){b=x[x[(x[a+4>>2]+116|0)+12>>2]+(d<<2)>>2];f=Eg(Ma(48,5323,109),b,a);b=x[a+76>>2];l:{if((b|0)==x[a+80>>2]){e=E(E(b>>>0)*E(1.75));m:{if(E(F(e))>>0<=8?8:b;x[a+80>>2]=b;c=x[a+84>>2];g=Da();c=sa[x[x[g>>2]+16>>2]](g,c,b<<2,7693,106)|0;x[a+84>>2]=c;b=x[a+76>>2];c=c+(b<<2)|0;break l}c=x[a+84>>2]+(b<<2)|0;}x[c>>2]=f;x[a+76>>2]=b+1;d=d+1|0;if(d>>>0>2]+116|0)+4>>2]){continue}break}}b=x[(x[a+4>>2]+132|0)+4>>2];if(b>>>0>A[a+96>>2]){x[a+96>>2]=b;d=x[a+100>>2];c=Da();i=a,j=sa[x[x[c>>2]+16>>2]](c,d,b<<2,7693,94)|0,x[i+100>>2]=j;}if(x[(x[a+4>>2]+132|0)+4>>2]){d=0;while(1){b=x[x[(x[a+4>>2]+132|0)+12>>2]+(d<<2)>>2];f=ih(Ma(144,5323,118),b,a);b=x[a+92>>2];n:{if((b|0)==x[a+96>>2]){e=E(E(b>>>0)*E(1.75));o:{if(E(F(e))>>0<=8?8:b;x[a+96>>2]=b;c=x[a+100>>2];g=Da();c=sa[x[x[g>>2]+16>>2]](g,c,b<<2,7693,106)|0;x[a+100>>2]=c;b=x[a+92>>2];c=c+(b<<2)|0;break n}c=x[a+100>>2]+(b<<2)|0;}x[c>>2]=f;x[a+92>>2]=b+1;d=d+1|0;if(d>>>0>2]+132|0)+4>>2]){continue}break}}Ke(a);return a}function td(a,b,c,d){var e=0,f=0,g=0,h=E(0),i=0,j=0,k=0,l=E(0),m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=qa+-64|0;qa=g;x[g+56>>2]=0;x[g+60>>2]=0;x[g+48>>2]=13296;x[c+52>>2]=d;e=Ta(b,3534);n=x[e+12>>2];a:{if(!n){x[g+52>>2]=n;break a}x[g+56>>2]=n;f=Da();b=n<<2;f=sa[x[x[f>>2]+16>>2]](f,0,b,7693,94)|0;x[g+52>>2]=n;x[g+60>>2]=f;Ha(f,0,b);}b=x[e+4>>2];if(b){e=0;while(1){B[(e<<2)+f>>2]=B[b+24>>2];e=e+1|0;b=x[b>>2];if(b){continue}break}}b:{if((d|0)==(n|0)){c:{if(!d|B[a+24>>2]==E(1)){break c}j=d&3;e=0;o=x[g+60>>2];b=0;if(d>>>0>=4){i=d&-4;d=0;while(1){p=b<<2;f=p+o|0;B[f>>2]=B[a+24>>2]*B[f>>2];f=o+(p|4)|0;B[f>>2]=B[a+24>>2]*B[f>>2];f=o+(p|8)|0;B[f>>2]=B[a+24>>2]*B[f>>2];f=o+(p|12)|0;B[f>>2]=B[a+24>>2]*B[f>>2];b=b+4|0;d=d+4|0;if((i|0)!=(d|0)){continue}break}}if(!j){break c}while(1){d=o+(b<<2)|0;B[d>>2]=B[a+24>>2]*B[d>>2];b=b+1|0;e=e+1|0;if((j|0)!=(e|0)){continue}break}}a=c+36|0;x[a+4>>2]=0;d=x[g+52>>2];d:{if(d>>>0>A[a+8>>2]){x[a+8>>2]=d;c=x[a+12>>2];b=Da();r=a,s=sa[x[x[b>>2]+16>>2]](b,c,d<<2,7693,94)|0,x[r+12>>2]=s;break d}if(!d){break b}}e=x[a+4>>2];f=0;while(1){b=x[g+60>>2]+(f<<2)|0;e:{if(x[a+8>>2]==(e|0)){l=B[b>>2];h=E(E(e>>>0)*E(1.75));f:{if(E(F(h))>>0<=8?8:b;x[a+8>>2]=d;c=x[a+12>>2];b=Da();b=sa[x[x[b>>2]+16>>2]](b,c,d<<2,7693,106)|0;x[a+12>>2]=b;e=x[a+4>>2];B[b+(e<<2)>>2]=l;break e}B[x[a+12>>2]+(e<<2)>>2]=B[b>>2];}e=e+1|0;x[a+4>>2]=e;f=f+1|0;if(f>>>0>2]){continue}break}break b}x[g+44>>2]=0;x[g+36>>2]=0;x[g+40>>2]=0;x[g+28>>2]=0;x[g+20>>2]=0;x[g+24>>2]=0;x[g+32>>2]=13296;x[g+16>>2]=18740;x[g+12>>2]=18692;b=0;if(d){x[g+24>>2]=D(d,3);b=Da();m=sa[x[x[b>>2]+16>>2]](b,0,D(d,12),7693,94)|0;x[g+40>>2]=D(d,9);x[g+28>>2]=m;b=Da();b=sa[x[x[b>>2]+16>>2]](b,0,D(d,36),7693,94)|0;x[g+44>>2]=b;}if(n){d=0;q=x[g+60>>2];while(1){j=x[g+20>>2];e=(j|0)!=x[g+24>>2];h=B[(d<<2)+q>>2];g:{if(E(F(h))>>0)*E(1.75));h:{if(E(F(h))>>0<=8?8:e;x[g+24>>2]=i;e=Da();m=sa[x[x[e>>2]+16>>2]](e,m,i<<2,7693,106)|0;x[g+28>>2]=m;}x[g+20>>2]=j+1;x[(j<<2)+m>>2]=f;d=d+1|0;o=d+(f<<2)|0;if(d>>>0>>0){p=x[g+60>>2];while(1){k=x[g+20>>2];e=(k|0)!=x[g+24>>2];j=d<<2;h=B[j+q>>2];i:{if(E(F(h))>>0)*E(1.75));j:{if(E(F(h))>>0<=8?8:e;x[g+24>>2]=i;e=Da();m=sa[x[x[e>>2]+16>>2]](e,m,i<<2,7693,106)|0;x[g+28>>2]=m;}x[g+20>>2]=k+1;x[(k<<2)+m>>2]=f;j=j+p|0;l=E(B[j+4>>2]*B[a+24>>2]);f=x[g+40>>2];k=x[g+36>>2];if((f|0)==(k|0)){h=E(E(k>>>0)*E(1.75));k:{if(E(F(h))>>0<=8?8:f;x[g+40>>2]=f;e=Da();b=sa[x[x[e>>2]+16>>2]](e,b,f<<2,7693,106)|0;x[g+44>>2]=b;}B[(k<<2)+b>>2]=l;l=E(B[j+8>>2]*B[a+24>>2]);e=k+1|0;l:{if((e|0)==(f|0)){h=E(E(f>>>0)*E(1.75));m:{if(E(F(h))>>0<=8?8:e;x[g+40>>2]=e;i=Da();b=sa[x[x[i>>2]+16>>2]](i,b,e<<2,7693,106)|0;x[g+44>>2]=b;i=(f<<2)+b|0;break l}i=(e<<2)+b|0;e=f;}B[i>>2]=l;f=k+2|0;n:{if((f|0)==(e|0)){l=B[j+12>>2];h=E(E(e>>>0)*E(1.75));o:{if(E(F(h))>>0<=8?8:f;x[g+40>>2]=i;f=Da();b=sa[x[x[f>>2]+16>>2]](f,b,i<<2,7693,106)|0;x[g+44>>2]=b;B[(e<<2)+b>>2]=l;break n}B[(f<<2)+b>>2]=B[j+12>>2];}x[g+36>>2]=k+3;d=d+4|0;if(o>>>0>d>>>0){continue}break}}if(d>>>0>>0){continue}break}}a=c+36|0;x[a+4>>2]=0;f=x[g+36>>2];p:{q:{if(f>>>0>A[a+8>>2]){x[a+8>>2]=f;d=x[a+12>>2];b=Da();r=a,s=sa[x[x[b>>2]+16>>2]](b,d,f<<2,7693,94)|0,x[r+12>>2]=s;break q}if(!f){break p}}e=x[a+4>>2];f=0;while(1){b=x[g+44>>2]+(f<<2)|0;r:{if(x[a+8>>2]==(e|0)){l=B[b>>2];h=E(E(e>>>0)*E(1.75));s:{if(E(F(h))>>0<=8?8:b;x[a+8>>2]=e;d=x[a+12>>2];b=Da();b=sa[x[x[b>>2]+16>>2]](b,d,e<<2,7693,106)|0;x[a+12>>2]=b;e=x[a+4>>2];B[b+(e<<2)>>2]=l;break r}B[x[a+12>>2]+(e<<2)>>2]=B[b>>2];}e=e+1|0;x[a+4>>2]=e;f=f+1|0;if(f>>>0>2]){continue}break}}a=c+20|0;x[a+4>>2]=0;d=x[g+20>>2];t:{u:{if(d>>>0>A[a+8>>2]){x[a+8>>2]=d;c=x[a+12>>2];b=Da();r=a,s=sa[x[x[b>>2]+16>>2]](b,c,d<<2,7693,94)|0,x[r+12>>2]=s;break u}if(!d){break t}}e=0;while(1){b=x[g+28>>2]+(e<<2)|0;c=x[a+4>>2];v:{if((c|0)==x[a+8>>2]){f=x[b>>2];h=E(E(c>>>0)*E(1.75));w:{if(E(F(h))>>0<=8?8:b;x[a+8>>2]=d;c=x[a+12>>2];b=Da();c=sa[x[x[b>>2]+16>>2]](b,c,d<<2,7693,106)|0;x[a+12>>2]=c;b=x[a+4>>2];x[a+4>>2]=b+1;x[c+(b<<2)>>2]=f;break v}x[a+4>>2]=c+1;x[x[a+12>>2]+(c<<2)>>2]=x[b>>2];}e=e+1|0;if(e>>>0>2]){continue}break}}x[g+36>>2]=0;x[g+32>>2]=13296;x[g+12>>2]=18692;b=x[g+44>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,7693,206);}x[g+20>>2]=0;x[g+16>>2]=18740;b=x[g+28>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,7693,206);}}x[g+52>>2]=0;x[g+48>>2]=13296;b=x[g+60>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,7693,206);}qa=g- -64|0;}function _a(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;k=qa-96|0;qa=k;u=i&65535;o=(e^i)&-2147483648;r=e&65535;A=r;R=i>>>16&32767;S=e>>>16&32767;a:{b:{if(R-32767>>>0>4294934529&S-32767>>>0>=4294934530){break b}s=e&2147483647;q=s;j=d;if(!(!d&(q|0)==2147418112?!(b|c):q>>>0<2147418112)){m=d;o=e|32768;break a}s=i&2147483647;p=s;e=h;if(!(!e&(p|0)==2147418112?!(f|g):p>>>0<2147418112)){m=h;o=i|32768;b=f;c=g;break a}if(!(b|j|(q^2147418112|c))){if(!(e|f|(g|p))){o=2147450880;b=0;c=0;break a}o=o|2147418112;b=0;c=0;break a}if(!(e|f|(p^2147418112|g))){e=b|j;d=c|q;b=0;c=0;if(!(d|e)){o=2147450880;break a}o=o|2147418112;break a}if(!(b|j|(c|q))){b=0;c=0;break a}if(!(e|f|(g|p))){b=0;c=0;break a}if((q|0)==65535|q>>>0<65535){j=!(d|r);i=j?b:d;s=j<<6;e=G(i)+32|0;i=G(j?c:r);i=s+((i|0)==32?e:i)|0;qb(k+80|0,b,c,d,r,i-15|0);t=16-i|0;d=x[k+88>>2];A=x[k+92>>2];c=x[k+84>>2];b=x[k+80>>2];}if(p>>>0>65535){break b}i=!(h|u);e=i?f:h;r=i<<6;j=G(e)+32|0;e=G(i?g:u);e=r+((e|0)==32?j:e)|0;qb(k- -64|0,f,g,h,u,e-15|0);t=(t-e|0)+16|0;h=x[k+72>>2];u=x[k+76>>2];f=x[k+64>>2];g=x[k+68>>2];}e=f;f=g<<15|f>>>17;i=e<<15;e=0;v=i&-32768;L=c;s=Uw(v,e,c,0);e=ra;z=e;M=f;q=b;b=Uw(f,0,b,0);i=b+s|0;f=ra+e|0;c=b>>>0>i>>>0?f+1|0:f;j=0;b=Uw(q,l,v,l);p=j+b|0;f=i;e=f+ra|0;e=b>>>0>p>>>0?e+1|0:e;r=e;N=(f|0)==(e|0)&j>>>0>p>>>0|e>>>0>>0;O=d;w=Uw(v,l,d,0);P=ra;b=Uw(L,l,M,l);y=b+w|0;j=ra+P|0;j=b>>>0>y>>>0?j+1|0:j;b=u<<15|h>>>17;B=h<<15|g>>>17;d=Uw(B,0,q,l);C=d+y|0;f=ra+j|0;f=d>>>0>C>>>0?f+1|0:f;D=f;d=(c|0)==(z|0)&i>>>0>>0|c>>>0>>0;E=c+C|0;f=d+f|0;f=c>>>0>E>>>0?f+1|0:f;u=f;g=E;c=f;F=A|65536;A=Uw(v,l,F,n);Q=ra;d=Uw(O,m,M,l);H=d+A|0;e=ra+Q|0;e=d>>>0>H>>>0?e+1|0:e;i=e;I=b|-2147483648;b=Uw(I,0,q,l);J=b+H|0;f=ra+e|0;f=b>>>0>J>>>0?f+1|0:f;b=Uw(B,m,L,l);z=b+J|0;K=f;f=f+ra|0;s=b>>>0>z>>>0?f+1|0:f;b=0;q=b+g|0;e=c+z|0;v=b>>>0>q>>>0?e+1|0:e;f=v;b=q+N|0;c=b>>>0>>0?f+1|0:f;t=((S+R|0)+t|0)-16383|0;d=Uw(I,m,L,l);h=ra;e=Uw(F,m,M,l);g=e+d|0;f=ra+h|0;f=e>>>0>g>>>0?f+1|0:f;n=(h|0)==(f|0)&d>>>0>g>>>0|f>>>0>>0;h=f;e=Uw(B,m,O,m);d=e+g|0;f=ra+f|0;f=d>>>0>>0?f+1|0:f;e=f;g=(f|0)==(h|0)&d>>>0>>0|f>>>0>>0;f=0;h=g;g=g+n|0;f=h>>>0>g>>>0?1:f;h=g;g=Uw(I,m,F,m);h=h+g|0;f=ra+f|0;N=h;g=g>>>0>h>>>0?f+1|0:f;h=d;l=e;e=(j|0)==(P|0)&w>>>0>y>>>0|j>>>0

>>0;f=0;j=(j|0)==(D|0)&y>>>0>C>>>0|j>>>0>D>>>0;n=j;j=e+j|0;e=(n>>>0>j>>>0?1:f)+l|0;f=g;d=d+j|0;e=d>>>0>>0?e+1|0:e;n=e;w=d;d=(e|0)==(l|0)&d>>>0>>0|e>>>0>>0;e=d;d=d+N|0;f=e>>>0>d>>>0?f+1|0:f;j=d;g=f;e=Uw(B,m,F,m);l=ra;d=Uw(I,m,O,m);h=d+e|0;f=ra+l|0;f=d>>>0>h>>>0?f+1|0:f;d=f;f=(l|0)==(f|0)&e>>>0>h>>>0|f>>>0>>0;y=d+j|0;e=f+g|0;e=d>>>0>y>>>0?e+1|0:e;l=y;g=e;e=0;d=e+w|0;f=h+n|0;f=d>>>0>>0?f+1|0:f;e=f;h=(n|0)==(f|0)&d>>>0>>0|f>>>0>>0;f=g;g=h+l|0;f=g>>>0>>0?f+1|0:f;w=g;g=f;h=d;j=e;e=(s|0)==(K|0)&z>>>0>>0|s>>>0>>0;d=(i|0)==(Q|0)&A>>>0>H>>>0|i>>>0>>0;i=(i|0)==(K|0)&H>>>0>J>>>0|i>>>0>K>>>0;d=d+i|0;d=d+e|0;n=s;i=n+h|0;e=d+j|0;f=g;d=i;e=d>>>0>>0?e+1|0:e;h=(e|0)==(j|0)&h>>>0>d>>>0|e>>>0>>0;g=h+w|0;f=h>>>0>g>>>0?f+1|0:f;j=g;g=f;h=d;f=0;i=e;n=(u|0)==(v|0)&q>>>0>>0|u>>>0>v>>>0;l=n;n=n+((u|0)==(D|0)&C>>>0>E>>>0|u>>>0>>0)|0;e=e+(l>>>0>n>>>0?1:f)|0;f=g;d=d+n|0;e=d>>>0>>0?e+1|0:e;h=(e|0)==(i|0)&d>>>0>>0|e>>>0>>0;g=h;h=h+j|0;f=g>>>0>h>>>0?f+1|0:f;i=f;c:{if(f&65536){t=t+1|0;break c}j=r>>>31|0;g=0;f=i<<1|h>>>31;h=h<<1|e>>>31;i=f;f=e<<1|d>>>31;d=d<<1|c>>>31;e=f;f=r<<1|p>>>31;p=p<<1;r=f;f=c<<1|b>>>31;b=b<<1|j;c=f|g;}if((t|0)>=32767){o=o|2147418112;b=0;c=0;break a}d:{if((t|0)<=0){g=1-t|0;if(g>>>0<=127){f=t+127|0;qb(k+48|0,p,r,b,c,f);qb(k+32|0,d,e,h,i,f);rc(k+16|0,p,r,b,c,g);rc(k,d,e,h,i,g);p=x[k+32>>2]|x[k+16>>2]|(x[k+48>>2]|x[k+56>>2]|(x[k+52>>2]|x[k+60>>2]))!=0;r=x[k+36>>2]|x[k+20>>2];b=x[k+40>>2]|x[k+24>>2];c=x[k+44>>2]|x[k+28>>2];d=x[k>>2];e=x[k+4>>2];g=x[k+8>>2];f=x[k+12>>2];break d}b=0;c=0;break a}g=h;f=i&65535|t<<16;}m=g|m;o=f|o;if(!(!b&(c|0)==-2147483648?!(p|r):(c|0)>0|(c|0)>=0)){b=d+1|0;j=b?e:e+1|0;e=o;c=j;d=!(j|b);m=d+m|0;o=d>>>0>m>>>0?e+1|0:e;break a}if(b|p|(c^-2147483648|r)){b=d;c=e;break a}f=e;b=d&1;c=b;b=b+d|0;c=c>>>0>b>>>0?f+1|0:f;d=(f|0)==(c|0)&b>>>0>>0|c>>>0>>0;f=o;m=d+m|0;o=m>>>0>>0?f+1|0:f;}x[a>>2]=b;x[a+4>>2]=c;x[a+8>>2]=m;x[a+12>>2]=o;qa=k+96|0;}function wd(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=E(0),k=E(0),m=E(0),n=0,o=0,p=0,q=0,s=0,t=0,u=0;m=B[a+36>>2];a=d<<1;x[c+52>>2]=a;e=x[b+4>>2];x[b+4>>2]=e+1;g=c+36|0;if(!y[e|0]){c=b;d=x[g+4>>2];b=a;x[g+4>>2]=a;if(A[g+8>>2]>>0){j=E(E(b>>>0)*E(1.75));a:{if(E(F(j))>>0<=8?8:a;x[g+8>>2]=a;e=x[g+12>>2];i=Da();t=g,u=sa[x[x[i>>2]+16>>2]](i,e,a<<2,7693,82)|0,x[t+12>>2]=u;a=x[g+4>>2];}if(a>>>0>d>>>0){Ha(x[g+12>>2]+(d<<2)|0,0,a-d<<2);}b:{if(m!=E(1)){if((b|0)<=0){break b}a=x[c+4>>2];e=x[g+12>>2];g=0;while(1){x[c+4>>2]=a+1;i=y[a|0];x[c+4>>2]=a+2;f=y[a+1|0];x[c+4>>2]=a+3;h=y[a+2|0];d=a+4|0;x[c+4>>2]=d;B[e+(g<<2)>>2]=(l(2,y[a+3|0]|(h|(f<<8|i<<16))<<8),r())*m;a=d;g=g+1|0;if((b|0)!=(g|0)){continue}break}break b}if((b|0)<=0){break b}a=x[c+4>>2];e=x[g+12>>2];g=0;while(1){x[c+4>>2]=a+1;i=y[a|0];x[c+4>>2]=a+2;f=y[a+1|0];x[c+4>>2]=a+3;h=y[a+2|0];d=a+4|0;x[c+4>>2]=d;x[e+(g<<2)>>2]=y[a+3|0]|(h|(f<<8|i<<16))<<8;a=d;g=g+1|0;if((b|0)!=(g|0)){continue}break}}return}a=c+20|0;c=D(d,18);if(c>>>0>A[g+8>>2]){x[g+8>>2]=c;c=x[g+12>>2];e=Da();t=g,u=sa[x[x[e>>2]+16>>2]](e,c,D(d,72),7693,94)|0,x[t+12>>2]=u;}c=D(d,6);if(c>>>0>A[a+8>>2]){x[a+8>>2]=c;c=x[a+12>>2];e=Da();t=a,u=sa[x[x[e>>2]+16>>2]](e,c,D(d,24),7693,94)|0,x[t+12>>2]=u;}if((d|0)>0){while(1){c=x[b+4>>2];x[b+4>>2]=c+1;e=v[c|0];i=e&127;c:{if((e|0)>=0){break c}x[b+4>>2]=c+2;e=v[c+1|0];i=e<<7&16256|i;if((e|0)>=0){break c}x[b+4>>2]=c+3;e=v[c+2|0];i=e<<14&2080768|i;if((e|0)>=0){break c}x[b+4>>2]=c+4;e=v[c+3|0];i=e<<21&266338304|i;if((e|0)>=0){break c}x[b+4>>2]=c+5;i=y[c+4|0]<<28|i;}c=x[a+4>>2];d:{if((c|0)==x[a+8>>2]){j=E(E(c>>>0)*E(1.75));e:{if(E(F(j))>>0<=8?8:c;x[a+8>>2]=c;e=x[a+12>>2];f=Da();c=sa[x[x[f>>2]+16>>2]](f,e,c<<2,7693,106)|0;x[a+12>>2]=c;e=x[a+4>>2];x[a+4>>2]=e+1;c=c+(e<<2)|0;break d}x[a+4>>2]=c+1;c=x[a+12>>2]+(c<<2)|0;}x[c>>2]=i;n=0;if((i|0)>0){while(1){f=x[b+4>>2];c=f+1|0;x[b+4>>2]=c;h=v[f|0];e=h&127;f:{if((h|0)>=0){break f}c=f+2|0;x[b+4>>2]=c;h=v[f+1|0];e=h<<7&16256|e;if((h|0)>=0){break f}c=f+3|0;x[b+4>>2]=c;h=v[f+2|0];e=h<<14&2080768|e;if((h|0)>=0){break f}c=f+4|0;x[b+4>>2]=c;h=v[f+3|0];e=h<<21&266338304|e;if((h|0)>=0){break f}c=f+5|0;x[b+4>>2]=c;e=y[f+4|0]<<28|e;}f=x[a+4>>2];g:{if((f|0)==x[a+8>>2]){j=E(E(f>>>0)*E(1.75));h:{if(E(F(j))>>0<=8?8:c;x[a+8>>2]=c;f=x[a+12>>2];h=Da();c=sa[x[x[h>>2]+16>>2]](h,f,c<<2,7693,106)|0;x[a+12>>2]=c;f=x[a+4>>2];x[a+4>>2]=f+1;x[c+(f<<2)>>2]=e;c=x[b+4>>2];break g}x[a+4>>2]=f+1;x[x[a+12>>2]+(f<<2)>>2]=e;}x[b+4>>2]=c+1;e=y[c|0];x[b+4>>2]=c+2;f=y[c+1|0];x[b+4>>2]=c+3;h=y[c+2|0];x[b+4>>2]=c+4;j=E(m*(l(2,y[c+3|0]|(h|(f<<8|e<<16))<<8),r()));c=x[g+4>>2];h=x[g+8>>2];i:{if((c|0)==(h|0)){k=E(E(c>>>0)*E(1.75));j:{if(E(F(k))>>0<=8?8:c;x[g+8>>2]=c;e=x[g+12>>2];f=Da();e=sa[x[x[f>>2]+16>>2]](f,e,c<<2,7693,106)|0;x[g+12>>2]=e;c=x[g+4>>2];B[(c<<2)+e>>2]=j;h=x[g+8>>2];break i}e=x[g+12>>2];B[e+(c<<2)>>2]=j;}c=c+1|0;x[g+4>>2]=c;f=x[b+4>>2];x[b+4>>2]=f+1;o=y[f|0];x[b+4>>2]=f+2;p=y[f+1|0];x[b+4>>2]=f+3;q=y[f+2|0];x[b+4>>2]=f+4;j=E(m*(l(2,y[f+3|0]|(q|(p<<8|o<<16))<<8),r()));k:{if((c|0)==(h|0)){k=E(E(h>>>0)*E(1.75));l:{if(E(F(k))>>0<=8?8:c;x[g+8>>2]=c;f=Da();e=sa[x[x[f>>2]+16>>2]](f,e,c<<2,7693,106)|0;x[g+12>>2]=e;c=x[g+4>>2];B[(c<<2)+e>>2]=j;h=x[g+8>>2];break k}B[(c<<2)+e>>2]=j;}c=c+1|0;x[g+4>>2]=c;f=x[b+4>>2];x[b+4>>2]=f+1;o=y[f|0];x[b+4>>2]=f+2;p=y[f+1|0];x[b+4>>2]=f+3;q=y[f+2|0];x[b+4>>2]=f+4;f=y[f+3|0]|(q|(p<<8|o<<16))<<8;m:{if((c|0)==(h|0)){j=E(E(h>>>0)*E(1.75));n:{if(E(F(j))>>0<=8?8:c;x[g+8>>2]=c;h=Da();e=sa[x[x[h>>2]+16>>2]](h,e,c<<2,7693,106)|0;x[g+12>>2]=e;c=x[g+4>>2];e=e+(c<<2)|0;break m}e=(c<<2)+e|0;}x[e>>2]=f;x[g+4>>2]=c+1;n=n+1|0;if((n|0)!=(i|0)){continue}break}}s=s+1|0;if((s|0)!=(d|0)){continue}break}}}function $g(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;x[a>>2]=16940;i=x[a+12>>2];if((i|0)>0){l=i+1|0;f=i;e=f;while(1){k=e;e=e-1|0;d=e<<2;b=x[d+x[a+20>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);f=x[a+12>>2];}c=f;f=c-1|0;x[a+12>>2]=f;a:{if(e>>>0>=f>>>0){break a}b=e;if(c+(j-i|0)&1){b=x[a+20>>2];d=b+d|0;h=x[d>>2];g=b;b=k<<2;x[d>>2]=x[g+b>>2];x[b+x[a+20>>2]>>2]=h;b=k;}if((c|0)==(l-j|0)){break a}while(1){c=x[a+20>>2];d=b<<2;h=c+d|0;m=x[h>>2];g=c;c=d+4|0;x[h>>2]=x[g+c>>2];x[c+x[a+20>>2]>>2]=m;g=c;c=x[a+20>>2];d=g+c|0;h=x[d>>2];g=c;b=b+2|0;c=b<<2;x[d>>2]=x[g+c>>2];x[c+x[a+20>>2]>>2]=h;if((b|0)!=(f|0)){continue}break}}j=j+1|0;if((k|0)>1){continue}break}}i=x[a+28>>2];if((i|0)>0){l=i+1|0;j=0;f=i;e=f;while(1){k=e;e=e-1|0;d=e<<2;b=x[d+x[a+36>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);f=x[a+28>>2];}c=f;f=c-1|0;x[a+28>>2]=f;b:{if(e>>>0>=f>>>0){break b}b=e;if(c+(j-i|0)&1){b=x[a+36>>2];d=b+d|0;h=x[d>>2];g=b;b=k<<2;x[d>>2]=x[g+b>>2];x[b+x[a+36>>2]>>2]=h;b=k;}if((c|0)==(l-j|0)){break b}while(1){c=x[a+36>>2];d=b<<2;h=c+d|0;m=x[h>>2];g=c;c=d+4|0;x[h>>2]=x[g+c>>2];x[c+x[a+36>>2]>>2]=m;g=c;c=x[a+36>>2];d=g+c|0;h=x[d>>2];g=c;b=b+2|0;c=b<<2;x[d>>2]=x[g+c>>2];x[c+x[a+36>>2]>>2]=h;if((b|0)!=(f|0)){continue}break}}j=j+1|0;if((k|0)>1){continue}break}}i=x[a+60>>2];if((i|0)>0){l=i+1|0;j=0;f=i;e=f;while(1){k=e;e=e-1|0;d=e<<2;b=x[d+x[a+68>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);f=x[a+60>>2];}c=f;f=c-1|0;x[a+60>>2]=f;c:{if(e>>>0>=f>>>0){break c}b=e;if(c+(j-i|0)&1){b=x[a+68>>2];d=b+d|0;h=x[d>>2];g=b;b=k<<2;x[d>>2]=x[g+b>>2];x[b+x[a+68>>2]>>2]=h;b=k;}if((c|0)==(l-j|0)){break c}while(1){c=x[a+68>>2];d=b<<2;h=c+d|0;m=x[h>>2];g=c;c=d+4|0;x[h>>2]=x[g+c>>2];x[c+x[a+68>>2]>>2]=m;g=c;c=x[a+68>>2];d=g+c|0;h=x[d>>2];g=c;b=b+2|0;c=b<<2;x[d>>2]=x[g+c>>2];x[c+x[a+68>>2]>>2]=h;if((b|0)!=(f|0)){continue}break}}j=j+1|0;if((k|0)>1){continue}break}}i=x[a+76>>2];if((i|0)>0){l=i+1|0;j=0;f=i;e=f;while(1){k=e;e=e-1|0;d=e<<2;b=x[d+x[a+84>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);f=x[a+76>>2];}c=f;f=c-1|0;x[a+76>>2]=f;d:{if(e>>>0>=f>>>0){break d}b=e;if(c+(j-i|0)&1){b=x[a+84>>2];d=b+d|0;h=x[d>>2];g=b;b=k<<2;x[d>>2]=x[g+b>>2];x[b+x[a+84>>2]>>2]=h;b=k;}if((c|0)==(l-j|0)){break d}while(1){c=x[a+84>>2];d=b<<2;h=c+d|0;m=x[h>>2];g=c;c=d+4|0;x[h>>2]=x[g+c>>2];x[c+x[a+84>>2]>>2]=m;g=c;c=x[a+84>>2];d=g+c|0;h=x[d>>2];g=c;b=b+2|0;c=b<<2;x[d>>2]=x[g+c>>2];x[c+x[a+84>>2]>>2]=h;if((b|0)!=(f|0)){continue}break}}j=j+1|0;if((k|0)>1){continue}break}}i=x[a+92>>2];if((i|0)>0){l=i+1|0;j=0;f=i;e=f;while(1){k=e;e=e-1|0;d=e<<2;b=x[d+x[a+100>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);f=x[a+92>>2];}c=f;f=c-1|0;x[a+92>>2]=f;e:{if(e>>>0>=f>>>0){break e}b=e;if(c+(j-i|0)&1){b=x[a+100>>2];d=b+d|0;h=x[d>>2];g=b;b=k<<2;x[d>>2]=x[g+b>>2];x[b+x[a+100>>2]>>2]=h;b=k;}if((c|0)==(l-j|0)){break e}while(1){c=x[a+100>>2];d=b<<2;h=c+d|0;m=x[h>>2];g=c;c=d+4|0;x[h>>2]=x[g+c>>2];x[c+x[a+100>>2]>>2]=m;g=c;c=x[a+100>>2];d=g+c|0;h=x[d>>2];g=c;b=b+2|0;c=b<<2;x[d>>2]=x[g+c>>2];x[c+x[a+100>>2]>>2]=h;if((b|0)!=(f|0)){continue}break}}j=j+1|0;if((k|0)>1){continue}break}}x[a+124>>2]=0;x[a+120>>2]=14588;e=x[a+132>>2];if(e){b=Da();sa[x[x[b>>2]+20>>2]](b,e,7693,206);}x[a+108>>2]=0;x[a+104>>2]=17252;e=x[a+116>>2];if(e){b=Da();sa[x[x[b>>2]+20>>2]](b,e,7693,206);}x[a+92>>2]=0;x[a+88>>2]=17184;e=x[a+100>>2];if(e){b=Da();sa[x[x[b>>2]+20>>2]](b,e,7693,206);}x[a+76>>2]=0;x[a+72>>2]=17112;e=x[a+84>>2];if(e){b=Da();sa[x[x[b>>2]+20>>2]](b,e,7693,206);}x[a+60>>2]=0;x[a+56>>2]=17044;e=x[a+68>>2];if(e){b=Da();sa[x[x[b>>2]+20>>2]](b,e,7693,206);}x[a+44>>2]=0;x[a+40>>2]=16988;e=x[a+52>>2];if(e){b=Da();sa[x[x[b>>2]+20>>2]](b,e,7693,206);}x[a+28>>2]=0;x[a+24>>2]=16988;e=x[a+36>>2];if(e){b=Da();sa[x[x[b>>2]+20>>2]](b,e,7693,206);}x[a+12>>2]=0;x[a+8>>2]=14588;e=x[a+20>>2];if(e){b=Da();sa[x[x[b>>2]+20>>2]](b,e,7693,206);}return a|0}function Yn(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=E(c);d=E(d);e=e|0;f=E(f);g=g|0;h=h|0;var i=E(0),j=E(0),k=E(0),l=E(0),m=E(0),n=E(0),o=0,p=E(0);a:{b=x[x[b+36>>2]+(x[a+36>>2]<<2)>>2];e=x[b+8>>2];b:{if(!(sa[x[x[e>>2]+16>>2]](e)|0)){break b}e=x[a+32>>2];if(B[e>>2]>d){c:{switch(g|0){case 0:a=b+16|0;e=x[b+4>>2]+24|0;c=B[e+4>>2];B[a+4>>2]=c;B[a+8>>2]=B[e+8>>2];B[a+12>>2]=B[e+12>>2];B[a+16>>2]=B[e+16>>2];B[a+4>>2]=cE(1)?E(1):c;c=B[a+8>>2];B[a+8>>2]=cE(1)?E(1):c;c=B[a+12>>2];B[a+12>>2]=cE(1)?E(1):c;c=B[a+16>>2];B[a+16>>2]=cE(1)?E(1):c;a=b+36|0;b=x[b+4>>2]+44|0;c=B[b+4>>2];B[a+4>>2]=c;B[a+8>>2]=B[b+8>>2];B[a+12>>2]=B[b+12>>2];B[a+16>>2]=B[b+16>>2];B[a+4>>2]=cE(1)?E(1):c;break a;case 1:break c;default:break b}}a=b+16|0;c=B[a+4>>2];B[a+4>>2]=E(E(c-B[(x[b+4>>2]+24|0)+4>>2])*f)+c;c=B[a+8>>2];B[a+8>>2]=E(E(c-B[(x[b+4>>2]+24|0)+8>>2])*f)+c;c=B[a+12>>2];B[a+12>>2]=E(E(c-B[(x[b+4>>2]+24|0)+12>>2])*f)+c;c=B[a+16>>2];B[a+16>>2]=E(E(c-B[(x[b+4>>2]+24|0)+16>>2])*f)+c;a=b+36|0;B[a+4>>2]=E(E(B[a+4>>2]-B[(x[b+4>>2]+44|0)+4>>2])*f)+B[a+4>>2];B[a+8>>2]=E(E(B[a+8>>2]-B[(x[b+4>>2]+44|0)+8>>2])*f)+B[a+8>>2];B[a+12>>2]=E(E(B[a+12>>2]-B[(x[b+4>>2]+44|0)+12>>2])*f)+B[a+12>>2];return}e=e+(x[a+24>>2]<<2)|0;d:{if(B[e-32>>2]<=d){k=B[e-4>>2];l=B[e-8>>2];d=B[e-12>>2];j=B[e-16>>2];m=B[e-20>>2];n=B[e-24>>2];c=B[e-28>>2];break d}h=Nb(a+20|0,d,8);o=h<<2;e=o+x[a+32>>2]|0;i=B[e-28>>2];n=B[e-24>>2];m=B[e-20>>2];j=B[e-16>>2];p=B[e-12>>2];l=B[e-8>>2];k=B[e-4>>2];c=B[e>>2];c=Kb(a,(h>>>3|0)-1|0,E(E(1)-E(E(d-c)/E(B[e-32>>2]-c))));a=x[a+32>>2]+o|0;k=E(k+E(c*E(B[a+28>>2]-k)));l=E(l+E(c*E(B[a+24>>2]-l)));d=E(p+E(c*E(B[a+20>>2]-p)));j=E(j+E(c*E(B[a+16>>2]-j)));m=E(m+E(c*E(B[a+12>>2]-m)));n=E(n+E(c*E(B[a+8>>2]-n)));c=E(i+E(c*E(B[a+4>>2]-i)));}if(f==E(1)){a=b+16|0;B[a+16>>2]=j;B[a+12>>2]=m;B[a+8>>2]=n;B[a+4>>2]=c;B[a+4>>2]=cE(1)?E(1):c;c=B[a+8>>2];B[a+8>>2]=cE(1)?E(1):c;c=B[a+12>>2];B[a+12>>2]=cE(1)?E(1):c;c=B[a+16>>2];B[a+16>>2]=cE(1)?E(1):c;a=b+36|0;x[a+16>>2]=1065353216;B[a+12>>2]=k;B[a+8>>2]=l;B[a+4>>2]=d;B[a+4>>2]=dE(1)?E(1):d;break a}if(!g){a=x[b+4>>2];i=B[a+28>>2];B[b+20>>2]=i;B[b+24>>2]=B[a+32>>2];B[b+28>>2]=B[a+36>>2];B[b+32>>2]=B[a+40>>2];B[b+20>>2]=iE(1)?E(1):i;i=B[b+24>>2];B[b+24>>2]=iE(1)?E(1):i;i=B[b+28>>2];B[b+28>>2]=iE(1)?E(1):i;i=B[b+32>>2];B[b+32>>2]=iE(1)?E(1):i;a=x[b+4>>2];i=B[a+48>>2];B[b+40>>2]=i;B[b+44>>2]=B[a+52>>2];B[b+48>>2]=B[a+56>>2];B[b+52>>2]=B[a+60>>2];B[b+40>>2]=iE(1)?E(1):i;i=B[b+44>>2];B[b+44>>2]=iE(1)?E(1):i;i=B[b+48>>2];B[b+48>>2]=iE(1)?E(1):i;i=B[b+52>>2];B[b+52>>2]=iE(1)?E(1):i;}i=j;j=B[b+32>>2];B[b+32>>2]=E(E(i-j)*f)+j;j=B[b+28>>2];B[b+28>>2]=E(E(m-j)*f)+j;j=B[b+24>>2];B[b+24>>2]=E(E(n-j)*f)+j;j=c;c=B[b+20>>2];c=E(E(E(j-c)*f)+c);B[b+20>>2]=c;B[b+20>>2]=cE(1)?E(1):c;c=B[b+24>>2];B[b+24>>2]=cE(1)?E(1):c;c=B[b+28>>2];B[b+28>>2]=cE(1)?E(1):c;c=B[b+32>>2];B[b+32>>2]=cE(1)?E(1):c;B[b+52>>2]=B[b+52>>2]+E(0);c=B[b+40>>2];c=E(E(E(d-c)*f)+c);B[b+40>>2]=c;d=B[b+44>>2];B[b+44>>2]=E(E(l-d)*f)+d;d=B[b+48>>2];B[b+48>>2]=E(E(k-d)*f)+d;B[b+40>>2]=cE(1)?E(1):c;c=B[b+44>>2];B[b+44>>2]=cE(1)?E(1):c;c=B[b+48>>2];B[b+48>>2]=cE(1)?E(1):c;c=B[b+52>>2];B[b+52>>2]=cE(1)?E(1):c;}return}c=B[a+8>>2];B[a+8>>2]=cE(1)?E(1):c;c=B[a+12>>2];B[a+12>>2]=cE(1)?E(1):c;c=B[a+16>>2];B[a+16>>2]=cE(1)?E(1):c;}function ii(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,k=0,m=0,n=0,o=0,p=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,G=0,H=0;s=qa-16|0;qa=s;w=(q(a),j(2));e=w&2147483647;a:{if(e>>>0<=1305022426){k=+a;c=k*.6366197723675814+6755399441055744+-6755399441055744;v=k+c*-1.5707963109016418+c*-1.5893254773528196e-8;C[b>>3]=v;f=v<-.7853981852531433;if(F(c)<2147483648){e=~~c;}else {e=-2147483648;}if(f){c=c+-1;C[b>>3]=k+c*-1.5707963109016418+c*-1.5893254773528196e-8;e=e-1|0;break a}if(!(v>.7853981852531433)){break a}c=c+1;C[b>>3]=k+c*-1.5707963109016418+c*-1.5893254773528196e-8;e=e+1|0;break a}if(e>>>0>=2139095040){C[b>>3]=E(a-a);e=0;break a}d=e;e=(e>>>23|0)-150|0;C[s+8>>3]=(l(2,d-(e<<23)|0),r());y=s+8|0;g=qa-560|0;qa=g;d=(e-3|0)/24|0;t=(d|0)>0?d:0;i=e+D(t,-24)|0;n=x[12160];if((n|0)>=0){e=n+1|0;d=t;while(1){C[(g+320|0)+(f<<3)>>3]=(d|0)<0?0:+x[(d<<2)+48656>>2];d=d+1|0;f=f+1|0;if((e|0)!=(f|0)){continue}break}}o=i-24|0;e=0;f=(n|0)>0?n:0;while(1){d=0;c=0;while(1){c=C[(d<<3)+y>>3]*C[(g+320|0)+(e-d<<3)>>3]+c;d=d+1|0;if((d|0)!=1){continue}break}C[(e<<3)+g>>3]=c;d=(e|0)==(f|0);e=e+1|0;if(!d){continue}break}G=47-i|0;z=48-i|0;A=(i|0)<25;H=i-25|0;e=n;b:{while(1){c=C[(e<<3)+g>>3];d=0;f=e;m=(e|0)<=0;if(!m){while(1){p=(g+480|0)+(d<<2)|0;k=c*5.960464477539063e-8;c:{if(F(k)<2147483648){h=~~k;break c}h=-2147483648;}k=+(h|0);c=k*-16777216+c;d:{if(F(c)<2147483648){h=~~c;break d}h=-2147483648;}x[p>>2]=h;f=f-1|0;c=C[(f<<3)+g>>3]+k;d=d+1|0;if((d|0)!=(e|0)){continue}break}}c=tc(c,o);c=c+J(c*.125)*-8;e:{if(F(c)<2147483648){p=~~c;break e}p=-2147483648;}c=c-+(p|0);f:{g:{h:{i:{if(!A){d=(e<<2)+g|0;h=x[d+476>>2];f=h>>z;u=d;d=h-(f<>2]=d;p=f+p|0;h=d>>G;break i}if(o){break h}h=x[((e<<2)+g|0)+476>>2]>>23;}if((h|0)<=0){break f}break g}h=2;if(c>=.5){break g}h=0;break f}d=0;f=0;if(!m){while(1){u=(g+480|0)+(d<<2)|0;B=x[u>>2];m=16777215;j:{k:{if(f){break k}m=16777216;if(B){break k}f=0;break j}x[u>>2]=m-B;f=1;}d=d+1|0;if((d|0)!=(e|0)){continue}break}}l:{if(A){break l}d=8388607;m:{switch(H|0){case 1:d=4194303;break;case 0:break m;default:break l}}m=(e<<2)+g|0;x[m+476>>2]=x[m+476>>2]&d;}p=p+1|0;if((h|0)!=2){break f}c=1-c;h=2;if(!f){break f}c=c-tc(1,o);}if(c==0){d=1;m=0;f=e;n:{if((e|0)<=(n|0)){break n}while(1){f=f-1|0;m=x[(g+480|0)+(f<<2)>>2]|m;if((f|0)>(n|0)){continue}break}if(!m){break n}i=o;while(1){i=i-24|0;e=e-1|0;if(!x[(g+480|0)+(e<<2)>>2]){continue}break}break b}while(1){f=d;d=d+1|0;if(!x[(g+480|0)+(n-f<<2)>>2]){continue}break}f=e+f|0;while(1){e=e+1|0;C[(g+320|0)+(e<<3)>>3]=x[(e+t<<2)+48656>>2];d=0;c=0;while(1){c=C[(d<<3)+y>>3]*C[(g+320|0)+(e-d<<3)>>3]+c;d=d+1|0;if((d|0)!=1){continue}break}C[(e<<3)+g>>3]=c;if((e|0)<(f|0)){continue}break}e=f;continue}break}c=tc(c,24-i|0);o:{if(c>=16777216){o=(g+480|0)+(e<<2)|0;k=c*5.960464477539063e-8;p:{if(F(k)<2147483648){d=~~k;break p}d=-2147483648;}c=+(d|0)*-16777216+c;q:{if(F(c)<2147483648){f=~~c;break q}f=-2147483648;}x[o>>2]=f;e=e+1|0;break o}if(F(c)<2147483648){d=~~c;}else {d=-2147483648;}i=o;}x[(g+480|0)+(e<<2)>>2]=d;}c=tc(1,i);if((e|0)>=0){f=e;while(1){d=f;C[(d<<3)+g>>3]=c*+x[(g+480|0)+(d<<2)>>2];f=d-1|0;c=c*5.960464477539063e-8;if(d){continue}break}f=e;while(1){c=0;d=0;i=e-f|0;o=(i|0)>(n|0)?n:i;if((o|0)>=0){while(1){c=C[(d<<3)+51424>>3]*C[(d+f<<3)+g>>3]+c;t=(d|0)!=(o|0);d=d+1|0;if(t){continue}break}}C[(g+160|0)+(i<<3)>>3]=c;d=(f|0)>0;f=f-1|0;if(d){continue}break}}c=0;if((e|0)>=0){while(1){f=e;e=e-1|0;c=c+C[(g+160|0)+(f<<3)>>3];if(f){continue}break}}C[s>>3]=h?-c:c;qa=g+560|0;e=p&7;c=C[s>>3];if((w|0)<0){C[b>>3]=-c;e=0-e|0;break a}C[b>>3]=c;}qa=s+16|0;return e}function Dd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=E(0),h=0,i=0,j=0;x[a+100>>2]=b;if(b){x[a+24>>2]=0;c=x[b+24>>2];if(c>>>0>A[a+28>>2]){x[a+28>>2]=c;e=x[a+32>>2];d=Da();i=a,j=sa[x[x[d>>2]+16>>2]](d,e,c<<2,7693,94)|0,x[i+32>>2]=j;c=x[b+24>>2];}if(c){c=0;while(1){d=x[b+32>>2]+(c<<2)|0;e=x[a+24>>2];a:{if((e|0)==x[a+28>>2]){d=x[d>>2];g=E(E(e>>>0)*E(1.75));b:{if(E(F(g))>>0<=8?8:e;x[a+28>>2]=e;f=x[a+32>>2];h=Da();e=sa[x[x[h>>2]+16>>2]](h,f,e<<2,7693,106)|0;x[a+32>>2]=e;f=x[a+24>>2];x[a+24>>2]=f+1;x[e+(f<<2)>>2]=d;break a}x[a+24>>2]=e+1;x[x[a+32>>2]+(e<<2)>>2]=x[d>>2];}c=c+1|0;if(c>>>0>2]){continue}break}}x[a+40>>2]=0;c=x[b+40>>2];if(c>>>0>A[a+44>>2]){x[a+44>>2]=c;e=x[a+48>>2];d=Da();i=a,j=sa[x[x[d>>2]+16>>2]](d,e,c<<2,7693,94)|0,x[i+48>>2]=j;c=x[b+40>>2];}if(c){c=x[a+40>>2];e=0;while(1){d=x[b+48>>2]+(e<<2)|0;c:{if(x[a+44>>2]==(c|0)){g=E(E(c>>>0)*E(1.75));d:{if(E(F(g))>2];c=c>>>0<=8?8:c;x[a+44>>2]=c;d=x[a+48>>2];f=Da();d=sa[x[x[f>>2]+16>>2]](f,d,c<<2,7693,106)|0;x[a+48>>2]=d;c=x[a+40>>2];B[d+(c<<2)>>2]=g;break c}B[x[a+48>>2]+(c<<2)>>2]=B[d>>2];}c=c+1|0;x[a+40>>2]=c;e=e+1|0;if(e>>>0>2]){continue}break}}c=x[b+52>>2];x[a+124>>2]=0;x[a+52>>2]=c;c=x[b+124>>2];if(c>>>0>A[a+128>>2]){x[a+128>>2]=c;e=x[a+132>>2];d=Da();i=a,j=sa[x[x[d>>2]+16>>2]](d,e,c<<2,7693,94)|0,x[i+132>>2]=j;c=x[b+124>>2];}if(c){c=x[a+124>>2];e=0;while(1){d=x[b+132>>2]+(e<<2)|0;e:{if(x[a+128>>2]==(c|0)){g=E(E(c>>>0)*E(1.75));f:{if(E(F(g))>2];c=c>>>0<=8?8:c;x[a+128>>2]=c;d=x[a+132>>2];f=Da();d=sa[x[x[f>>2]+16>>2]](f,d,c<<2,7693,106)|0;x[a+132>>2]=d;c=x[a+124>>2];B[d+(c<<2)>>2]=g;break e}B[x[a+132>>2]+(c<<2)>>2]=B[d>>2];}c=c+1|0;x[a+124>>2]=c;e=e+1|0;if(e>>>0>2]){continue}break}}x[a+140>>2]=0;c=x[b+140>>2];if(c>>>0>A[a+144>>2]){x[a+144>>2]=c;e=x[a+148>>2];d=Da();i=a,j=sa[x[x[d>>2]+16>>2]](d,e,c<<1,7693,94)|0,x[i+148>>2]=j;c=x[b+140>>2];}if(c){c=x[a+140>>2];e=0;while(1){d=x[b+148>>2]+(e<<1)|0;g:{if(x[a+144>>2]==(c|0)){d=z[d>>1];g=E(E(c>>>0)*E(1.75));h:{if(E(F(g))>>0<=8?8:c;x[a+144>>2]=c;f=x[a+148>>2];h=Da();f=sa[x[x[h>>2]+16>>2]](h,f,c<<1,7693,106)|0;x[a+148>>2]=f;c=x[a+140>>2];w[f+(c<<1)>>1]=d;break g}w[x[a+148>>2]+(c<<1)>>1]=z[d>>1];}c=c+1|0;x[a+140>>2]=c;e=e+1|0;if(e>>>0>2]){continue}break}}c=x[b+224>>2];x[a+156>>2]=0;x[a+224>>2]=c;c=x[b+156>>2];if(c>>>0>A[a+160>>2]){x[a+160>>2]=c;e=x[a+164>>2];d=Da();i=a,j=sa[x[x[d>>2]+16>>2]](d,e,c<<1,7693,94)|0,x[i+164>>2]=j;c=x[b+156>>2];}if(c){c=x[a+156>>2];e=0;while(1){d=x[b+164>>2]+(e<<1)|0;i:{if(x[a+160>>2]==(c|0)){d=z[d>>1];g=E(E(c>>>0)*E(1.75));j:{if(E(F(g))>>0<=8?8:c;x[a+160>>2]=c;f=x[a+164>>2];h=Da();f=sa[x[x[h>>2]+16>>2]](h,f,c<<1,7693,106)|0;x[a+164>>2]=f;c=x[a+156>>2];w[f+(c<<1)>>1]=d;break i}w[x[a+164>>2]+(c<<1)>>1]=z[d>>1];}c=c+1|0;x[a+156>>2]=c;e=e+1|0;if(e>>>0>2]){continue}break}}B[a+196>>2]=B[b+196>>2];B[a+200>>2]=B[b+200>>2];}}function ue(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=E(0),n=0,o=0;f=qa-32|0;qa=f;h=x[a+8>>2];if(h>>>0<=b>>>0){x[f+24>>2]=0;x[f+16>>2]=0;x[f+20>>2]=0;x[f+12>>2]=18976;e=b+1|0;x[a+8>>2]=e;if(e>>>0>A[a+12>>2]){m=E(E(e>>>0)*E(1.75));a:{if(E(F(m))>>0<=8?8:e;x[a+12>>2]=e;i=x[a+16>>2];g=Da();n=a,o=sa[x[x[g>>2]+16>>2]](g,i,e<<4,7693,82)|0,x[n+16>>2]=o;e=x[a+8>>2];}if(e>>>0>h>>>0){while(1){j=0;e=x[a+16>>2]+(h<<4)|0;x[e>>2]=18976;x[e+4>>2]=x[f+16>>2];i=x[f+20>>2];x[e+12>>2]=0;x[e+8>>2]=i;b:{if(!i){break b}g=Da();n=e,o=sa[x[x[g>>2]+12>>2]](g,D(i,20),7693,197)|0,x[n+12>>2]=o;k=x[e+4>>2];if(!k){break b}while(1){g=D(j,20);i=g+x[f+24>>2]|0;l=x[i>>2];g=g+x[e+12>>2]|0;x[g+4>>2]=1080;x[g>>2]=l;c:{if(!x[i+12>>2]){x[g+8>>2]=0;x[g+12>>2]=0;break c}x[g+8>>2]=x[i+8>>2];k=x[i+8>>2];l=Da();k=sa[x[x[l>>2]+12>>2]](l,k+1|0,8064,71)|0;x[g+12>>2]=k;Fa(k,x[i+12>>2],x[i+8>>2]+1|0);k=x[e+4>>2];}x[g+16>>2]=x[i+16>>2];j=j+1|0;if(k>>>0>j>>>0){continue}break}}h=h+1|0;if(h>>>0>2]){continue}break}}te(f+12|0);}d:{e:{f:{a=x[a+16>>2]+(b<<4)|0;e=x[a+4>>2];g:{if(!e){break g}i=x[a+12>>2];h=0;g=x[c+8>>2];if(!g){while(1){if(!x[(i+D(h,20)|0)+12>>2]){break f}h=h+1|0;if((e|0)!=(h|0)){continue}break g}}k=x[c+4>>2];while(1){l=i+D(h,20)|0;j=x[l+12>>2];if((j|0)==(g|0)){break f}if(!(!j|(k|0)!=x[l+8>>2])){if(!Oa(j,g)){break f}}h=h+1|0;if((e|0)!=(h|0)){continue}break}}x[d+16>>2]=x[d+16>>2]+1;break e}x[d+16>>2]=x[d+16>>2]+1;if((h|0)<0){break e}c=D(h,20);b=x[(c+x[a+12>>2]|0)+16>>2];h:{if(!b){break h}x[b+16>>2]=x[b+16>>2]-1;if(x[b+16>>2]){break h}sa[x[x[b>>2]+4>>2]](b);}x[(c+x[a+12>>2]|0)+16>>2]=d;break d}x[f+12>>2]=b;x[f+16>>2]=1080;i:{if(!x[c+8>>2]){x[f+20>>2]=0;x[f+24>>2]=0;break i}b=x[c+4>>2];x[f+20>>2]=b;e=Da();b=sa[x[x[e>>2]+12>>2]](e,b+1|0,8064,71)|0;x[f+24>>2]=b;Fa(b,x[c+8>>2],x[c+4>>2]+1|0);}x[f+28>>2]=d;d=0;h=0;b=qa-32|0;qa=b;c=x[a+4>>2];j:{if((c|0)==x[a+8>>2]){e=x[f+12>>2];x[b+16>>2]=1080;x[b+12>>2]=e;if(x[f+24>>2]){d=x[f+20>>2];c=Da();h=sa[x[x[c>>2]+12>>2]](c,d+1|0,8064,71)|0;Fa(h,x[f+24>>2],x[f+20>>2]+1|0);c=x[a+4>>2];}x[b+24>>2]=h;x[b+20>>2]=d;g=x[f+28>>2];x[b+28>>2]=g;m=E(E(c>>>0)*E(1.75));k:{if(E(F(m))>>0<=8?8:c;x[a+8>>2]=c;i=x[a+12>>2];j=Da();c=sa[x[x[j>>2]+16>>2]](j,i,D(c,20),7693,106)|0;x[a+12>>2]=c;i=x[a+4>>2];x[a+4>>2]=i+1;a=c+D(i,20)|0;x[a+4>>2]=1080;x[a>>2]=e;l:{if(!h){x[a+8>>2]=0;x[a+12>>2]=0;a=x[b+24>>2];break l}x[a+8>>2]=d;d=x[b+20>>2];e=a;a=Da();d=d+1|0;a=sa[x[x[a>>2]+12>>2]](a,d,8064,71)|0;x[e+12>>2]=a;e=a;a=x[b+24>>2];Fa(e,a,d);}x[(c+D(i,20)|0)+16>>2]=g;x[b+16>>2]=1080;if(a){c=Da();sa[x[x[c>>2]+20>>2]](c,a,8064,201);}break j}x[a+4>>2]=c+1;d=x[f+12>>2];e=x[a+12>>2];a=e+D(c,20)|0;x[a+4>>2]=1080;x[a>>2]=d;m:{if(!x[f+24>>2]){x[a+8>>2]=0;x[a+12>>2]=0;break m}x[a+8>>2]=x[f+20>>2];d=x[f+20>>2];g=a;a=Da();a=sa[x[x[a>>2]+12>>2]](a,d+1|0,8064,71)|0;x[g+12>>2]=a;Fa(a,x[f+24>>2],x[f+20>>2]+1|0);}x[(e+D(c,20)|0)+16>>2]=x[f+28>>2];}qa=b+32|0;x[f+16>>2]=1080;a=x[f+24>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}}qa=f+32|0;}function _c(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{b:{switch(v[b|0]-34|0){case 76:if(ab(b+1|0,7167,3)){break a}x[a+8>>2]=2;return b+4|0;case 68:if(ab(b+1|0,8748,4)){break a}x[a+8>>2]=0;return b+5|0;case 82:if(ab(b+1|0,8489,3)){break a}x[a+20>>2]=1;x[a+8>>2]=1;return b+4|0;case 0:return _e(a,b);case 57:e=a;x[a+8>>2]=5;b=b+1|0;while(1){a=b;b=a+1|0;c=y[a|0];if((c-1&255)>>>0<32){continue}break}c:{if((c|0)!=93){c=Ea(32);$c(c,0);x[e+4>>2]=c;while(1){b=a;a=a+1|0;if((y[b|0]-1&255)>>>0<32){continue}break}b=_c(c,b);a=0;if(!b){break c}while(1){a=b;b=a+1|0;if((y[a|0]-1&255)>>>0<32){continue}break}b=1;while(1){d:{x[e+12>>2]=b;b=y[a|0];if((b|0)!=44){if((b|0)!=93){break d}a=a+1|0;break c}d=Ea(32);$c(d,0);x[c>>2]=d;while(1){b=y[a+1|0];a=a+1|0;if((b-1&255)>>>0<32){continue}break}b=_c(d,a);a=0;if(!b){break c}while(1){a=b;b=a+1|0;if((y[a|0]-1&255)>>>0<32){continue}break}b=x[e+12>>2]+1|0;c=d;continue}break}x[13545]=a;b=0;}a=b;}return a;case 89:e=a;x[a+8>>2]=6;c=b+1|0;while(1){a=c;c=a+1|0;b=y[a|0];if((b-1&255)>>>0<32){continue}break}e:{f:{g:{if((b|0)==125){break g}d=Ea(32);$c(d,0);x[e+4>>2]=d;while(1){b=a;a=a+1|0;if((y[b|0]-1&255)>>>0<32){continue}break}c=_e(d,b);a=0;if(!c){break e}while(1){a=c;c=a+1|0;if((y[a|0]-1&255)>>>0<32){continue}break}x[d+28>>2]=x[d+16>>2];c=0;x[d+16>>2]=0;if(y[a|0]!=58){break f}while(1){b=y[a+1|0];a=a+1|0;if((b-1&255)>>>0<32){continue}break}b=_c(d,a);if(!b){break g}while(1){a=b;b=a+1|0;if((y[a|0]-1&255)>>>0<32){continue}break}c=1;while(1){h:{x[e+12>>2]=c;b=y[a|0];if((b|0)!=44){if((b|0)!=125){break h}a=a+1|0;break e}g=Ea(32);$c(g,0);x[d>>2]=g;while(1){b=y[a+1|0];a=a+1|0;if((b-1&255)>>>0<32){continue}break}c=0;b=_e(g,a);if(!b){break g}while(1){a=b;b=a+1|0;if((y[a|0]-1&255)>>>0<32){continue}break}x[g+28>>2]=x[g+16>>2];x[g+16>>2]=0;if(y[a|0]!=58){x[13545]=a;a=0;break e}while(1){b=y[a+1|0];a=a+1|0;if((b-1&255)>>>0<32){continue}break}b=_c(g,a);if(!b){break g}while(1){a=b;b=a+1|0;if((y[a|0]-1&255)>>>0<32){continue}break}c=x[e+12>>2]+1|0;d=g;continue}break}c=0;x[13545]=a;}a=c;break e}x[13545]=a;a=0;}return a;case 11:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:break b;default:break a}}d=a;g=b;i=y[b|0];b=((i|0)==45)+b|0;c=y[b|0];i:{if((c-48&255)>>>0>9){a=b;break i}while(1){f=f*10+ +((c&255)-48|0);c=y[b+1|0];a=b+1|0;b=a;if((c-48&255)>>>0<10){continue}break}}if((c&255)==46){b=a+1|0;c=y[a+1|0];j:{if((c-48&255)>>>0>9){a=b;j=0;break j}while(1){h=h*10+ +((c&255)-48|0);e=e+1|0;c=y[b+1|0];a=b+1|0;b=a;if((c-48&255)>>>0<10){continue}break}j=+(e|0);}f=f+h/qi(j);}h=(i|0)==45?-f:f;k:{if(((c|32)&255)!=101){break k}e=y[a+1|0];b=(e|0)==45|(e|0)==43;c=b?a+2|0:a+1|0;f=0;b=y[(b?2:1)+a|0];l:{if((b-48&255)>>>0>9){a=c;break l}while(1){f=f*10+ +((b&255)-48|0);b=y[c+1|0];a=c+1|0;c=a;if((b-48&255)>>>0<10){continue}break}}f=qi(f);if((e|0)==45){h=h/f;break k}h=h*f;}m:{if((a|0)!=(g|0)){x[d+8>>2]=3;if(F(h)<2147483648){b=~~h;}else {b=-2147483648;}x[d+20>>2]=b;B[d+24>>2]=h;break m}x[13545]=g;a=0;}return a}x[13545]=b;return 0}function tn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=E(0),k=E(0),l=0,m=0,n=0;i=qa-16|0;qa=i;f=x[a>>2];a:{if(!f){break a}g=x[b>>2];h=v[b+11|0];x[i>>2]=1080;a=0;b=(h|0)<0?g:b;b:{if(!b){x[i+4>>2]=0;break b}a=Ga(b);x[i+4>>2]=a;g=Da();h=a+1|0;a=sa[x[x[g>>2]+12>>2]](g,h,8064,57)|0;Fa(a,b,h);}x[i+8>>2]=a;b=xd(f,i);x[i>>2]=1080;a=x[i+8>>2];if(a){f=Da();sa[x[x[f>>2]+20>>2]](f,a,8064,201);}if(!b){break a}a=x[b+60>>2];if(!a){break a}if(e){a=sa[x[x[a>>2]+12>>2]](a)|0;if((a|0)!=x[b+60>>2]){x[b+60>>2]=a;j=B[x[b+12>>2]+160>>2];x[b+72>>2]=0;B[b+64>>2]=j;}}if(pb(sa[x[x[a>>2]+8>>2]](a)|0,54268)){j=E(c>>>0);B[a+68>>2]=j;k=E(d>>>0);B[a+72>>2]=k;B[a+76>>2]=j;B[a+80>>2]=k;B[a+52>>2]=j;B[a+56>>2]=k;b=0;Pe(a,E(0),E(0),E(1),E(1),0);Ad(a);f=x[a+24>>2];if(e){f=xg(f);d=x[a+28>>2];c:{if(!d){break c}c=x[a+24>>2];if(!c|(c|0)==(f|0)){break c}sa[d|0](c);}x[a+28>>2]=0;x[a+24>>2]=f;}c=x[x[f+4>>2]>>2];e=x[(a+100|0)+4>>2];d=x[a+108>>2];x[i+12>>2]=0;x[i+8>>2]=d;d:{if(!d){break d}b=Da();b=sa[x[x[b>>2]+12>>2]](b,d<<2,7693,197)|0;x[i+12>>2]=b;if(!e){break d}d=x[a+112>>2];f=0;a=0;if(e>>>0>=4){m=e&-4;h=0;while(1){g=a<<2;B[g+b>>2]=B[d+g>>2];l=g|4;B[l+b>>2]=B[d+l>>2];l=g|8;B[l+b>>2]=B[d+l>>2];g=g|12;B[g+b>>2]=B[d+g>>2];a=a+4|0;h=h+4|0;if((m|0)!=(h|0)){continue}break}}e=e&3;if(!e){break d}while(1){g=a<<2;B[g+b>>2]=B[d+g>>2];a=a+1|0;f=f+1|0;if((e|0)!=(f|0)){continue}break}}B[c+12>>2]=B[b>>2];B[c+16>>2]=B[b+4>>2];B[c+36>>2]=B[b+8>>2];B[c+40>>2]=B[b+12>>2];B[c+60>>2]=B[b+16>>2];B[c- -64>>2]=B[b+20>>2];B[c+84>>2]=B[b+24>>2];B[c+88>>2]=B[b+28>>2];x[i+4>>2]=0;x[i>>2]=13296;a=Da();sa[x[x[a>>2]+20>>2]](a,b,7693,206);break a}if(!pb(sa[x[x[a>>2]+8>>2]](a)|0,54184)){break a}j=E(c>>>0);B[a+84>>2]=j;k=E(d>>>0);B[a+88>>2]=k;B[a+92>>2]=j;B[a+96>>2]=k;B[a+196>>2]=j;B[a+200>>2]=k;B[a+180>>2]=0;B[a+184>>2]=0;B[a+188>>2]=1;B[a+192>>2]=1;v[a+228|0]=1;b=0;x[a+232>>2]=0;mc(a);f=x[a+68>>2];if(e){f=xg(f);d=x[a+72>>2];e:{if(!d){break e}c=x[a+68>>2];if(!c|(c|0)==(f|0)){break e}sa[d|0](c);}x[a+72>>2]=0;x[a+68>>2]=f;}m=x[x[f+4>>2]>>2];g=x[(a+104|0)+4>>2];c=x[a+112>>2];x[i+12>>2]=0;x[i+8>>2]=c;f:{if(!c){break f}b=Da();b=sa[x[x[b>>2]+12>>2]](b,c<<2,7693,197)|0;x[i+12>>2]=b;if(!g){break f}e=x[a+116>>2];d=0;f=0;if(g>>>0>=4){l=g&-4;c=0;while(1){h=f<<2;B[h+b>>2]=B[e+h>>2];n=h|4;B[n+b>>2]=B[e+n>>2];n=h|8;B[n+b>>2]=B[e+n>>2];h=h|12;B[h+b>>2]=B[e+h>>2];f=f+4|0;c=c+4|0;if((l|0)!=(c|0)){continue}break}}c=g&3;if(!c){break f}while(1){g=f<<2;B[g+b>>2]=B[e+g>>2];f=f+1|0;d=d+1|0;if((c|0)!=(d|0)){continue}break}}c=x[a+52>>2];g:{h:{if(c){d=(c-1>>>1|0)+1|0;g=d&1;e=0;a=0;if(c>>>0>=3){d=d&-2;f=0;while(1){h=m+D(a,24)|0;c=e<<2;B[h+12>>2]=B[c+b>>2];B[h+16>>2]=B[(c|4)+b>>2];h=m+D(a|1,24)|0;B[h+12>>2]=B[(c|8)+b>>2];B[h+16>>2]=B[(c|12)+b>>2];e=e+4|0;a=a+2|0;f=f+2|0;if((d|0)!=(f|0)){continue}break}}if(g){a=m+D(a,24)|0;c=e<<2;B[a+12>>2]=B[c+b>>2];B[a+16>>2]=B[(c|4)+b>>2];}x[i+4>>2]=0;x[i>>2]=13296;break h}x[i+4>>2]=0;x[i>>2]=13296;if(!b){break g}}a=Da();sa[x[x[a>>2]+20>>2]](a,b,7693,206);}}qa=i+16|0;}function Cr(a){a=a|0;var b=0,c=0,d=0,e=0,f=E(0),g=0,h=E(0),i=0,j=0,k=0;if(x[a+100>>2]){return We(a)|0}b=Ma(236,4604,279);Zc(b,a+4|0);c=x[a+68>>2];d=x[b+72>>2];a:{if(!d){break a}e=x[b+68>>2];if(!e|(c|0)==(e|0)){break a}sa[d|0](e);}x[b+72>>2]=0;x[b+68>>2]=c;B[b+180>>2]=B[a+180>>2];B[b+184>>2]=B[a+184>>2];B[b+188>>2]=B[a+188>>2];B[b+192>>2]=B[a+192>>2];v[b+228|0]=y[a+228|0];x[b+232>>2]=x[a+232>>2];B[b+76>>2]=B[a+76>>2];B[b+80>>2]=B[a+80>>2];B[b+84>>2]=B[a+84>>2];B[b+88>>2]=B[a+88>>2];B[b+92>>2]=B[a+92>>2];B[b+96>>2]=B[a+96>>2];b:{if((a|0)==(b|0)){break b}c=x[b+176>>2];if(c){e=Da();sa[x[x[e>>2]+20>>2]](e,c,8064,122);}if(!x[a+176>>2]){x[b+172>>2]=0;x[b+176>>2]=0;break b}x[b+172>>2]=x[a+172>>2];c=x[a+172>>2];e=Da();c=sa[x[x[e>>2]+12>>2]](e,c+1|0,8064,129)|0;x[b+176>>2]=c;Fa(c,x[a+176>>2],x[a+172>>2]+1|0);}f=B[a+208>>2];B[b+208>>2]=f;B[b+212>>2]=B[a+212>>2];B[b+216>>2]=B[a+216>>2];B[b+220>>2]=B[a+220>>2];B[b+208>>2]=fE(1)?E(1):f;f=B[b+212>>2];B[b+212>>2]=fE(1)?E(1):f;f=B[b+216>>2];B[b+216>>2]=fE(1)?E(1):f;f=B[b+220>>2];B[b+220>>2]=fE(1)?E(1):f;Qc(a,b);x[b+124>>2]=0;c=x[a+124>>2];if(c>>>0>A[b+128>>2]){x[b+128>>2]=c;e=x[b+132>>2];d=Da();j=b,k=sa[x[x[d>>2]+16>>2]](d,e,c<<2,7693,94)|0,x[j+132>>2]=k;c=x[a+124>>2];}if(c){c=x[b+124>>2];e=0;while(1){d=x[a+132>>2]+(e<<2)|0;c:{if(x[b+128>>2]==(c|0)){f=B[d>>2];h=E(E(c>>>0)*E(1.75));d:{if(E(F(h))>>0<=8?8:c;x[b+128>>2]=c;d=x[b+132>>2];g=Da();d=sa[x[x[g>>2]+16>>2]](g,d,c<<2,7693,106)|0;x[b+132>>2]=d;c=x[b+124>>2];B[d+(c<<2)>>2]=f;break c}B[x[b+132>>2]+(c<<2)>>2]=B[d>>2];}c=c+1|0;x[b+124>>2]=c;e=e+1|0;if(e>>>0>2]){continue}break}}x[b+108>>2]=0;c=x[a+108>>2];if(c>>>0>A[b+112>>2]){x[b+112>>2]=c;e=x[b+116>>2];d=Da();j=b,k=sa[x[x[d>>2]+16>>2]](d,e,c<<2,7693,94)|0,x[j+116>>2]=k;c=x[a+108>>2];}if(c){c=x[b+108>>2];e=0;while(1){d=x[a+116>>2]+(e<<2)|0;e:{if(x[b+112>>2]==(c|0)){f=B[d>>2];h=E(E(c>>>0)*E(1.75));f:{if(E(F(h))>>0<=8?8:c;x[b+112>>2]=c;d=x[b+116>>2];g=Da();d=sa[x[x[g>>2]+16>>2]](g,d,c<<2,7693,106)|0;x[b+116>>2]=d;c=x[b+108>>2];B[d+(c<<2)>>2]=f;break e}B[x[b+116>>2]+(c<<2)>>2]=B[d>>2];}c=c+1|0;x[b+108>>2]=c;e=e+1|0;if(e>>>0>2]){continue}break}}x[b+140>>2]=0;c=x[a+140>>2];if(c>>>0>A[b+144>>2]){x[b+144>>2]=c;e=x[b+148>>2];d=Da();j=b,k=sa[x[x[d>>2]+16>>2]](d,e,c<<1,7693,94)|0,x[j+148>>2]=k;c=x[a+140>>2];}if(c){c=x[b+140>>2];e=0;while(1){d=x[a+148>>2]+(e<<1)|0;g:{if(x[b+144>>2]==(c|0)){d=z[d>>1];f=E(E(c>>>0)*E(1.75));h:{if(E(F(f))>>0<=8?8:c;x[b+144>>2]=c;g=x[b+148>>2];i=Da();g=sa[x[x[i>>2]+16>>2]](i,g,c<<1,7693,106)|0;x[b+148>>2]=g;c=x[b+140>>2];w[g+(c<<1)>>1]=d;break g}w[x[b+148>>2]+(c<<1)>>1]=z[d>>1];}c=c+1|0;x[b+140>>2]=c;e=e+1|0;if(e>>>0>2]){continue}break}}c=x[a+224>>2];x[b+156>>2]=0;x[b+224>>2]=c;B[b+196>>2]=B[a+196>>2];B[b+200>>2]=B[a+200>>2];return b|0}function Ib(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;j=qa-112|0;qa=j;k=i&2147483647;a:{b:{l=e&2147483647;m=!(b|c);if(!(d|l?l-2147418112>>>0<2147549184:m)){o=k-2147418112|0;if(!h&(o|0)==-2147418112?f|g:(o|0)==-2147418112&(h|0)!=0|o>>>0>2147549184){break b}}if(!(!d&(l|0)==2147418112?m:l>>>0<2147418112)){h=d;i=e|32768;f=b;g=c;break a}if(!(!h&(k|0)==2147418112?!(f|g):k>>>0<2147418112)){i=i|32768;break a}if(!(b|d|(l^2147418112|c))){n=d;d=!(b^f|d^h|(c^g|e^i^-2147483648));h=d?0:n;i=d?2147450880:e;f=d?0:b;g=d?0:c;break a}if(!(f|h|(k^2147418112|g))){break a}if(!(b|d|(c|l))){if(f|h|(g|k)){break a}f=b&f;g=c&g;h=d&h;i=e&i;break a}if(f|h|(g|k)){break b}f=b;g=c;h=d;i=e;break a}n=(k|0)==(l|0);r=n&(d|0)==(h|0)?(c|0)==(g|0)&b>>>0>>0|c>>>0>>0:n&d>>>0>>0|k>>>0>l>>>0;m=r;l=m?f:b;o=m?g:c;n=m?i:e;s=n;m=m?h:d;q=n&65535;d=r?d:h;e=r?e:i;t=e;n=e>>>16&32767;p=s>>>16&32767;if(!p){e=!(m|q);i=e;k=e?l:m;e=e<<6;i=G(i?o:q);e=e+((i|0)==32?G(k)+32|0:i)|0;qb(j+96|0,l,o,m,q,e-15|0);m=x[j+104>>2];q=x[j+108>>2];o=x[j+100>>2];p=16-e|0;l=x[j+96>>2];}f=r?b:f;g=r?c:g;h=d;i=t&65535;if(!n){b=!(h|i);e=b;k=b?f:h;b=b<<6;e=G(e?g:i);b=b+((e|0)==32?G(k)+32|0:e)|0;qb(j+80|0,f,g,h,i,b-15|0);n=16-b|0;h=x[j+88>>2];i=x[j+92>>2];g=x[j+84>>2];f=x[j+80>>2];}c=i<<3|h>>>29;b=h<<3|g>>>29;c=c|524288;h=m<<3|o>>>29;i=q<<3|m>>>29;r=s^t;e=g<<3|f>>>29;d=f<<3;c:{if((n|0)==(p|0)){break c}f=p-n|0;if(f>>>0>127){b=0;c=0;e=0;d=1;break c}qb(j- -64|0,d,e,b,c,128-f|0);rc(j+48|0,d,e,b,c,f);b=x[j+56>>2];c=x[j+60>>2];e=x[j+52>>2];d=x[j+48>>2]|(x[j+64>>2]|x[j+72>>2]|(x[j+68>>2]|x[j+76>>2]))!=0;}m=d;k=e;n=h;q=i|524288;e=o<<3|l>>>29;o=l<<3;l=e;d:{if((r|0)<0){f=0;g=0;h=0;i=0;if(!(m^o|b^n|(k^l|c^q))){break a}d=o-m|0;e=l-((m>>>0>o>>>0)+k|0)|0;f=n-b|0;g=(k|0)==(l|0)&m>>>0>o>>>0|k>>>0>l>>>0;h=f-g|0;b=(q-((b>>>0>n>>>0)+c|0)|0)-(f>>>0>>0)|0;i=b;if(b>>>0>524287){break d}b=!(h|i);f=b;g=b?d:h;b=b<<6;f=G(f?e:i);b=b+((f|0)==32?G(g)+32|0:f)|0;b=b-12|0;qb(j+32|0,d,e,h,i,b);p=p-b|0;h=x[j+40>>2];i=x[j+44>>2];d=x[j+32>>2];e=x[j+36>>2];break d}e=k+l|0;d=m+o|0;e=d>>>0>>0?e+1|0:e;f=(k|0)==(e|0)&d>>>0>>0|e>>>0>>0;k=c+q|0;b=b+n|0;k=b>>>0>>0?k+1|0:k;h=b+f|0;i=h>>>0>>0?k+1|0:k;if(!(i&1048576)){break d}d=m&1|((e&1)<<31|d>>>1);e=h<<31|e>>>1;p=p+1|0;h=(i&1)<<31|h>>>1;i=i>>>1|0;}c=0;l=s&-2147483648;if((p|0)>=32767){h=c;i=l|2147418112;f=0;g=0;break a}n=0;e:{if((p|0)>0){n=p;break e}qb(j+16|0,d,e,h,i,p+127|0);rc(j,d,e,h,i,1-p|0);d=x[j>>2]|(x[j+16>>2]|x[j+24>>2]|(x[j+20>>2]|x[j+28>>2]))!=0;e=x[j+4>>2];h=x[j+8>>2];i=x[j+12>>2];}o=d&7;d=(e&7)<<29|d>>>3;f=(o>>>0>4)+d|0;b=h<<29|e>>>3;g=d>>>0>f>>>0?b+1|0:b;d=(b|0)==(g|0)&d>>>0>f>>>0|b>>>0>g>>>0;b=c|((i&7)<<29|h>>>3);h=d+b|0;i=l|(i>>>3&65535|n<<16);i=b>>>0>h>>>0?i+1|0:i;f:{if((o|0)==4){b=0;k=g+b|0;d=f;c=f&1;f=f+c|0;g=d>>>0>f>>>0?k+1|0:k;b=(b|0)==(g|0)&c>>>0>f>>>0|b>>>0>g>>>0;h=b+h|0;i=b>>>0>h>>>0?i+1|0:i;break f}if(!o){break a}}}x[a>>2]=f;x[a+4>>2]=g;x[a+8>>2]=h;x[a+12>>2]=i;qa=j+112|0;}function rf(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=E(0),p=0,q=0,r=0;l=qa-16|0;qa=l;d=ac(a,b);x[d+40>>2]=15128;x[d+24>>2]=13296;x[d+20>>2]=0;x[d>>2]=15060;x[d+44>>2]=0;x[d+48>>2]=0;x[d+36>>2]=0;x[d+28>>2]=0;x[d+32>>2]=0;x[d+52>>2]=0;x[d+56>>2]=0;if(b){x[d+32>>2]=b;a=Da();q=d,r=sa[x[x[a>>2]+16>>2]](a,0,b<<2,7693,94)|0,x[q+36>>2]=r;a=x[d+48>>2];}else {a=0;}if(a>>>0>>0){x[d+48>>2]=b;a=x[d+52>>2];c=Da();q=d,r=sa[x[x[c>>2]+16>>2]](c,a,b<<4,7693,94)|0,x[q+52>>2]=r;}c=x[d+28>>2];x[d+28>>2]=b;a=b;if(A[d+32>>2]>>0){o=E(E(b>>>0)*E(1.75));a:{if(E(F(o))>>0<=8?8:a;x[d+32>>2]=a;k=x[d+36>>2];e=Da();q=d,r=sa[x[x[e>>2]+16>>2]](e,k,a<<2,7693,82)|0,x[q+36>>2]=r;a=x[d+28>>2];}if(a>>>0>c>>>0){Ha(x[d+36>>2]+(c<<2)|0,0,a-c<<2);}if((b|0)>0){a=0;while(1){x[l+12>>2]=0;x[l+4>>2]=0;x[l+8>>2]=0;x[l>>2]=13296;n=0;k=qa-16|0;qa=k;c=x[d+44>>2];b:{if((c|0)==x[d+48>>2]){x[k>>2]=13296;j=x[l+4>>2];x[k+4>>2]=j;g=x[l+8>>2];x[k+12>>2]=0;x[k+8>>2]=g;c:{if(!g){break c}c=Da();h=sa[x[x[c>>2]+12>>2]](c,g<<2,7693,197)|0;x[k+12>>2]=h;if(!j){break c}f=x[l+12>>2];e=0;c=0;if(j>>>0>=4){m=j&-4;while(1){i=c<<2;B[i+h>>2]=B[f+i>>2];p=i|4;B[p+h>>2]=B[f+p>>2];p=i|8;B[p+h>>2]=B[f+p>>2];i=i|12;B[i+h>>2]=B[f+i>>2];c=c+4|0;n=n+4|0;if((m|0)!=(n|0)){continue}break}}i=j&3;if(!i){break c}while(1){n=c<<2;B[n+h>>2]=B[f+n>>2];c=c+1|0;e=e+1|0;if((i|0)!=(e|0)){continue}break}}o=E(E(A[d+44>>2])*E(1.75));d:{if(E(F(o))>>0<=8?8:c;x[d+48>>2]=c;e=x[d+52>>2];h=Da();c=sa[x[x[h>>2]+16>>2]](h,e,c<<4,7693,106)|0;x[d+52>>2]=c;e=x[d+44>>2];x[d+44>>2]=e+1;c=c+(e<<4)|0;x[c+12>>2]=0;x[c+8>>2]=g;x[c+4>>2]=j;x[c>>2]=13296;e:{if(!g){break e}e=Da();g=sa[x[x[e>>2]+12>>2]](e,g<<2,7693,197)|0;x[c+12>>2]=g;i=x[c+4>>2];if(!i){break e}e=0;j=x[k+12>>2];c=0;if(i>>>0>=4){n=i&-4;h=0;while(1){f=c<<2;B[f+g>>2]=B[f+j>>2];m=f|4;B[m+g>>2]=B[j+m>>2];m=f|8;B[m+g>>2]=B[j+m>>2];f=f|12;B[f+g>>2]=B[f+j>>2];c=c+4|0;h=h+4|0;if((n|0)!=(h|0)){continue}break}}h=i&3;if(!h){break e}while(1){f=c<<2;B[f+g>>2]=B[f+j>>2];c=c+1|0;e=e+1|0;if((h|0)!=(e|0)){continue}break}}x[k+4>>2]=0;x[k>>2]=13296;c=x[k+12>>2];if(c){e=Da();sa[x[x[e>>2]+20>>2]](e,c,7693,206);}break b}x[d+44>>2]=c+1;c=x[d+52>>2]+(c<<4)|0;x[c>>2]=13296;x[c+4>>2]=x[l+4>>2];e=x[l+8>>2];x[c+12>>2]=0;x[c+8>>2]=e;if(!e){break b}g=Da();g=sa[x[x[g>>2]+12>>2]](g,e<<2,7693,197)|0;x[c+12>>2]=g;i=x[c+4>>2];if(!i){break b}j=x[l+12>>2];e=0;c=0;if(i>>>0>=4){n=i&-4;h=0;while(1){f=c<<2;B[f+g>>2]=B[f+j>>2];m=f|4;B[m+g>>2]=B[j+m>>2];m=f|8;B[m+g>>2]=B[j+m>>2];f=f|12;B[f+g>>2]=B[f+j>>2];c=c+4|0;h=h+4|0;if((n|0)!=(h|0)){continue}break}}h=i&3;if(!h){break b}while(1){f=c<<2;B[f+g>>2]=B[f+j>>2];c=c+1|0;e=e+1|0;if((h|0)!=(e|0)){continue}break}}qa=k+16|0;x[l+4>>2]=0;x[l>>2]=13296;c=x[l+12>>2];if(c){k=Da();sa[x[x[k>>2]+20>>2]](k,c,7693,206);}a=a+1|0;if((b|0)!=(a|0)){continue}break}}qa=l+16|0;return d}function Ja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{if(!a){break a}d=a-8|0;b=x[a-4>>2];a=b&-8;f=d+a|0;b:{if(b&1){break b}if(!(b&3)){break a}b=x[d>>2];d=d-b|0;if(d>>>0>>0<=255){e=b>>>3|0;b=x[d+12>>2];c=x[d+8>>2];if((b|0)==(c|0)){i=54496,j=x[13624]&Ww(e),x[i>>2]=j;break b}x[c+12>>2]=b;x[b+8>>2]=c;break b}g=x[d+24>>2];b=x[d+12>>2];if((d|0)!=(b|0)){c=x[d+8>>2];x[c+12>>2]=b;x[b+8>>2]=c;break c}e=d+20|0;c=x[e>>2];if(!c){c=x[d+16>>2];if(!c){break d}e=d+16|0;}while(1){h=e;b=c;e=b+20|0;c=x[e>>2];if(c){continue}e=b+16|0;c=x[b+16>>2];if(c){continue}break}x[h>>2]=0;break c}b=x[f+4>>2];if((b&3)!=3){break b}x[13626]=a;x[f+4>>2]=b&-2;x[d+4>>2]=a|1;x[f>>2]=a;return}b=0;}if(!g){break b}c=x[d+28>>2];e=(c<<2)+54800|0;e:{if(x[e>>2]==(d|0)){x[e>>2]=b;if(b){break e}i=54500,j=x[13625]&Ww(c),x[i>>2]=j;break b}x[g+(x[g+16>>2]==(d|0)?16:20)>>2]=b;if(!b){break b}}x[b+24>>2]=g;c=x[d+16>>2];if(c){x[b+16>>2]=c;x[c+24>>2]=b;}c=x[d+20>>2];if(!c){break b}x[b+20>>2]=c;x[c+24>>2]=b;}if(d>>>0>=f>>>0){break a}b=x[f+4>>2];if(!(b&1)){break a}f:{g:{h:{i:{if(!(b&2)){if(x[13630]==(f|0)){x[13630]=d;a=x[13627]+a|0;x[13627]=a;x[d+4>>2]=a|1;if(x[13629]!=(d|0)){break a}x[13626]=0;x[13629]=0;return}if(x[13629]==(f|0)){x[13629]=d;a=x[13626]+a|0;x[13626]=a;x[d+4>>2]=a|1;x[a+d>>2]=a;return}a=(b&-8)+a|0;if(b>>>0<=255){e=b>>>3|0;b=x[f+12>>2];c=x[f+8>>2];if((b|0)==(c|0)){i=54496,j=x[13624]&Ww(e),x[i>>2]=j;break g}x[c+12>>2]=b;x[b+8>>2]=c;break g}g=x[f+24>>2];b=x[f+12>>2];if((f|0)!=(b|0)){c=x[f+8>>2];x[c+12>>2]=b;x[b+8>>2]=c;break h}e=f+20|0;c=x[e>>2];if(!c){c=x[f+16>>2];if(!c){break i}e=f+16|0;}while(1){h=e;b=c;e=b+20|0;c=x[e>>2];if(c){continue}e=b+16|0;c=x[b+16>>2];if(c){continue}break}x[h>>2]=0;break h}x[f+4>>2]=b&-2;x[d+4>>2]=a|1;x[a+d>>2]=a;break f}b=0;}if(!g){break g}c=x[f+28>>2];e=(c<<2)+54800|0;j:{if(x[e>>2]==(f|0)){x[e>>2]=b;if(b){break j}i=54500,j=x[13625]&Ww(c),x[i>>2]=j;break g}x[g+(x[g+16>>2]==(f|0)?16:20)>>2]=b;if(!b){break g}}x[b+24>>2]=g;c=x[f+16>>2];if(c){x[b+16>>2]=c;x[c+24>>2]=b;}c=x[f+20>>2];if(!c){break g}x[b+20>>2]=c;x[c+24>>2]=b;}x[d+4>>2]=a|1;x[a+d>>2]=a;if(x[13629]!=(d|0)){break f}x[13626]=a;return}if(a>>>0<=255){b=(a&-8)+54536|0;c=x[13624];a=1<<(a>>>3);k:{if(!(c&a)){x[13624]=a|c;a=b;break k}a=x[b+8>>2];}x[b+8>>2]=d;x[a+12>>2]=d;x[d+12>>2]=b;x[d+8>>2]=a;return}c=31;if(a>>>0<=16777215){b=G(a>>>8|0);c=((a>>>38-b&1)-(b<<1)|0)+62|0;}x[d+28>>2]=c;x[d+16>>2]=0;x[d+20>>2]=0;b=(c<<2)+54800|0;l:{m:{e=x[13625];h=1<>2]=d;x[d+24>>2]=b;break n}c=a<<((c|0)!=31?25-(c>>>1|0)|0:0);b=x[b>>2];while(1){e=b;if((x[b+4>>2]&-8)==(a|0)){break m}b=c>>>29|0;c=c<<1;h=e+(b&4)|0;b=x[h+16>>2];if(b){continue}break}x[h+16>>2]=d;x[d+24>>2]=e;}x[d+12>>2]=d;x[d+8>>2]=d;break l}a=x[e+8>>2];x[a+12>>2]=d;x[e+8>>2]=d;x[d+24>>2]=0;x[d+12>>2]=e;x[d+8>>2]=a;}a=x[13632]-1|0;x[13632]=a?a:-1;}}function pf(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=E(0),p=0,q=0,r=0;l=qa-16|0;qa=l;x[a>>2]=19280;d=a;x[d+20>>2]=15252;x[d+4>>2]=13296;x[d>>2]=15184;x[d+32>>2]=0;x[d+24>>2]=0;x[d+28>>2]=0;x[d+16>>2]=0;x[d+8>>2]=0;x[d+12>>2]=0;if(b){x[d+12>>2]=b;a=Da();q=d,r=sa[x[x[a>>2]+16>>2]](a,0,b<<2,7693,94)|0,x[q+16>>2]=r;a=x[d+28>>2];}else {a=0;}if(a>>>0>>0){x[d+28>>2]=b;a=x[d+32>>2];c=Da();q=d,r=sa[x[x[c>>2]+16>>2]](c,a,b<<4,7693,94)|0,x[q+32>>2]=r;}c=x[d+8>>2];x[d+8>>2]=b;a=b;if(a>>>0>A[d+12>>2]){o=E(E(b>>>0)*E(1.75));a:{if(E(F(o))>>0<=8?8:a;x[d+12>>2]=a;k=x[d+16>>2];e=Da();q=d,r=sa[x[x[e>>2]+16>>2]](e,k,a<<2,7693,82)|0,x[q+16>>2]=r;a=x[d+8>>2];}if(a>>>0>c>>>0){Ha(x[d+16>>2]+(c<<2)|0,0,a-c<<2);}if((b|0)>0){a=0;while(1){x[l+12>>2]=0;x[l+4>>2]=0;x[l+8>>2]=0;x[l>>2]=13184;n=0;k=qa-16|0;qa=k;c=x[d+24>>2];b:{if((c|0)==x[d+28>>2]){x[k>>2]=13184;j=x[l+4>>2];x[k+4>>2]=j;g=x[l+8>>2];x[k+12>>2]=0;x[k+8>>2]=g;c:{if(!g){break c}c=Da();h=sa[x[x[c>>2]+12>>2]](c,g<<2,7693,197)|0;x[k+12>>2]=h;if(!j){break c}f=x[l+12>>2];e=0;c=0;if(j>>>0>=4){m=j&-4;while(1){i=c<<2;x[i+h>>2]=x[f+i>>2];p=i|4;x[p+h>>2]=x[f+p>>2];p=i|8;x[p+h>>2]=x[f+p>>2];i=i|12;x[i+h>>2]=x[f+i>>2];c=c+4|0;n=n+4|0;if((m|0)!=(n|0)){continue}break}}i=j&3;if(!i){break c}while(1){n=c<<2;x[n+h>>2]=x[f+n>>2];c=c+1|0;e=e+1|0;if((i|0)!=(e|0)){continue}break}}o=E(E(A[d+24>>2])*E(1.75));d:{if(E(F(o))>>0<=8?8:c;x[d+28>>2]=c;e=x[d+32>>2];h=Da();c=sa[x[x[h>>2]+16>>2]](h,e,c<<4,7693,106)|0;x[d+32>>2]=c;e=x[d+24>>2];x[d+24>>2]=e+1;c=c+(e<<4)|0;x[c+12>>2]=0;x[c+8>>2]=g;x[c+4>>2]=j;x[c>>2]=13184;e:{if(!g){break e}e=Da();g=sa[x[x[e>>2]+12>>2]](e,g<<2,7693,197)|0;x[c+12>>2]=g;i=x[c+4>>2];if(!i){break e}e=0;j=x[k+12>>2];c=0;if(i>>>0>=4){n=i&-4;h=0;while(1){f=c<<2;x[f+g>>2]=x[f+j>>2];m=f|4;x[m+g>>2]=x[j+m>>2];m=f|8;x[m+g>>2]=x[j+m>>2];f=f|12;x[f+g>>2]=x[f+j>>2];c=c+4|0;h=h+4|0;if((n|0)!=(h|0)){continue}break}}h=i&3;if(!h){break e}while(1){f=c<<2;x[f+g>>2]=x[f+j>>2];c=c+1|0;e=e+1|0;if((h|0)!=(e|0)){continue}break}}x[k+4>>2]=0;x[k>>2]=13184;c=x[k+12>>2];if(c){e=Da();sa[x[x[e>>2]+20>>2]](e,c,7693,206);}break b}x[d+24>>2]=c+1;c=x[d+32>>2]+(c<<4)|0;x[c>>2]=13184;x[c+4>>2]=x[l+4>>2];e=x[l+8>>2];x[c+12>>2]=0;x[c+8>>2]=e;if(!e){break b}g=Da();g=sa[x[x[g>>2]+12>>2]](g,e<<2,7693,197)|0;x[c+12>>2]=g;i=x[c+4>>2];if(!i){break b}j=x[l+12>>2];e=0;c=0;if(i>>>0>=4){n=i&-4;h=0;while(1){f=c<<2;x[f+g>>2]=x[f+j>>2];m=f|4;x[m+g>>2]=x[j+m>>2];m=f|8;x[m+g>>2]=x[j+m>>2];f=f|12;x[f+g>>2]=x[f+j>>2];c=c+4|0;h=h+4|0;if((n|0)!=(h|0)){continue}break}}h=i&3;if(!h){break b}while(1){f=c<<2;x[f+g>>2]=x[f+j>>2];c=c+1|0;e=e+1|0;if((h|0)!=(e|0)){continue}break}}qa=k+16|0;x[l+4>>2]=0;x[l>>2]=13184;c=x[l+12>>2];if(c){k=Da();sa[x[x[k>>2]+20>>2]](k,c,7693,206);}a=a+1|0;if((b|0)!=(a|0)){continue}break}}qa=l+16|0;return d}function Zp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=E(0),g=0,h=0,i=0,j=0,k=0,l=E(0),m=E(0),n=0,o=E(0),p=E(0),q=0,r=E(0),s=E(0),t=0,u=0,v=0,w=0;u=x[b+28>>2];x[a+24>>2]=0;h=x[a+40>>2];if(h){i=x[a+8>>2];while(1){e=x[a+48>>2]+(d<<2)|0;a:{if(x[a+12>>2]==(i|0)){n=x[e>>2];f=E(E(i>>>0)*E(1.75));b:{if(E(F(f))>>0<=8?8:e;x[a+12>>2]=j;k=x[a+16>>2];e=Da();e=sa[x[x[e>>2]+16>>2]](e,k,j<<2,7693,106)|0;x[a+16>>2]=e;i=x[a+8>>2];x[e+(i<<2)>>2]=n;break a}x[x[a+16>>2]+(i<<2)>>2]=x[e>>2];}i=i+1|0;x[a+8>>2]=i;d=d+1|0;if((h|0)!=(d|0)){continue}break}}x[a+40>>2]=0;if(u){i=0;while(1){h=x[x[b+36>>2]+(i<<2)>>2];d=x[h+8>>2];c:{if(!(sa[x[x[d>>2]+16>>2]](d)|0)){break c}q=x[h+60>>2];if(!q){break c}if(!Fc(sa[x[x[q>>2]+8>>2]](q)|0,54056)){break c}d=x[a+24>>2];d:{if((d|0)==x[a+28>>2]){f=E(E(d>>>0)*E(1.75));e:{if(E(F(f))>>0<=8?8:d;x[a+28>>2]=k;e=x[a+32>>2];d=Da();e=sa[x[x[d>>2]+16>>2]](d,e,k<<2,7693,106)|0;x[a+32>>2]=e;d=x[a+24>>2];e=e+(d<<2)|0;break d}e=x[a+32>>2]+(d<<2)|0;}x[e>>2]=q;x[a+24>>2]=d+1;d=x[a+8>>2];f:{if(d){e=d-1|0;d=x[x[a+16>>2]+(e<<2)>>2];x[a+8>>2]=e;break f}d=Ma(24,4965,75);x[d+8>>2]=0;x[d+12>>2]=0;x[d+4>>2]=13296;x[d>>2]=17556;x[d+16>>2]=0;x[d+20>>2]=0;x[d+12>>2]=16;e=Da();v=d,w=sa[x[x[e>>2]+16>>2]](e,0,64,7693,94)|0,x[v+16>>2]=w;}g=x[a+40>>2];g:{if((g|0)==x[a+44>>2]){f=E(E(g>>>0)*E(1.75));h:{if(E(F(f))>>0<=8?8:e;x[a+44>>2]=j;k=x[a+48>>2];e=Da();e=sa[x[x[e>>2]+16>>2]](e,k,j<<2,7693,106)|0;x[a+48>>2]=e;g=x[a+40>>2];e=e+(g<<2)|0;break g}e=x[a+48>>2]+(g<<2)|0;}x[e>>2]=d;x[a+40>>2]=g+1;g=x[q+52>>2];x[d+20>>2]=g;n=d+4|0;t=x[d+8>>2];i:{if(t>>>0>=g>>>0){break i}x[d+8>>2]=g;if(A[d+12>>2]>>0){f=E(E(g>>>0)*E(1.75));j:{if(E(F(f))>>0<=8?8:e;x[d+12>>2]=j;k=x[d+16>>2];e=Da();v=d,w=sa[x[x[e>>2]+16>>2]](e,k,j<<2,7693,82)|0,x[v+16>>2]=w;g=x[d+8>>2];}if(g>>>0<=t>>>0){break i}Ha(x[d+16>>2]+(t<<2)|0,0,g-t<<2);}pd(q,h,0,x[q+52>>2],x[n+12>>2],0,2);}i=i+1|0;if((u|0)!=(i|0)){continue}break}}r=E(34028234663852886e22);s=E(11754943508222875e-54);k:{if(!c){o=E(11754943508222875e-54);p=E(34028234663852886e22);break k}o=E(11754943508222875e-54);p=E(34028234663852886e22);j=x[a+40>>2];if(!j){break k}k=x[a+48>>2];g=0;while(1){c=x[k+(g<<2)>>2];d=x[c+20>>2];l:{if((d|0)<=0){break l}b=(d-1>>>1|0)+1|0;e=b&1;h=x[c+16>>2];c=0;if(d>>>0>=3){b=b&-2;d=0;while(1){n=c<<2;l=B[n+h>>2];f=r>l?r:l;m=B[h+(n|8)>>2];r=f>m?f:m;f=s>2];f=p>l?p:l;m=B[h+(n|12)>>2];p=f>m?f:m;f=o>2];r=fs?s:f;f=B[h+(b|4)>>2];p=fo?o:f;}g=g+1|0;if((j|0)!=(g|0)){continue}break}}B[a+64>>2]=p;B[a+60>>2]=r;B[a+56>>2]=o;B[a+52>>2]=s;}function sh(a,b,c,d,e,f,g,h){var i=E(0),j=E(0),k=E(0),l=E(0),m=E(0),n=E(0),o=E(0),p=0,q=E(0),r=E(0),s=E(0),t=E(0),u=E(0),v=0,w=E(0),z=E(0),A=E(0),C=E(0),D=E(0),F=E(0),G=0,H=0,I=0,J=0;p=x[a+12>>2];if(h==E(0)){Ef(b);return}if(!y[a+88|0]){nc(a);}if(!y[b+88|0]){nc(b);}q=B[b+60>>2];D=B[a+64>>2];F=B[a+60>>2];o=B[b+72>>2];s=B[x[b+4>>2]+24>>2];l=B[p+92>>2];m=B[p+108>>2];t=B[p+104>>2];r=B[p+96>>2];j=E(E(1)/E(E(l*m)-E(t*r)));u=B[a+72>>2];v=u>2];G=i>2]*q)+B[a+112>>2]);k=E(E(B[a+92>>2]*q)+B[a+100>>2]);break a}A=B[b+64>>2];i=E(B[a+112>>2]+E(E(B[a+104>>2]*q)+E(A*B[a+108>>2])));k=E(B[a+100>>2]+E(E(B[a+92>>2]*q)+E(A*B[a+96>>2])));}k=E(k-B[p+100>>2]);i=E(i-B[p+112>>2]);C=E(E(E(E(k*m)-E(r*i))*j)-F);i=E(E(E(E(i*l)-E(t*k))*j)-D);i=E(M(E(E(C*C)+E(i*i))));if(+i<1e-4){hf(a,c,d,0,f,0,h);hc(b,q,A,E(0),B[b+72>>2],B[b+76>>2],B[b+80>>2],B[b+84>>2]);return}H=v?-1:1;J=0-H|0;I=o>2]);d=E(d-B[p+112>>2]);c=E(E(E(E(s*m)-E(r*d))*j)-F);j=E(E(E(E(d*l)-E(t*s))*j)-D);m=E(E(c*c)+E(j*j));b:{if(g==E(0)){break b}d=E(E(E(n*E(o+E(1)))*E(.5))*g);o=E(M(m));g=E(d+E(E(o-i)-E(k*n)));if(!(g>E(0))){break b}l=d;d=E(g/E(d+d));d=d>E(1)?E(0):E(d+E(-1));d=E(E(-E(g-E(l*E(E(1)-E(d*d)))))/o);c=E(E(d*c)+c);j=E(E(d*j)+j);m=E(E(c*c)+E(j*j));}p=G?J:H;s=v?E(180):E(0);d=E(n*k);c:{if(z<=E(9999999747378752e-20)){g=E(-1);n=E(E(E(m-E(i*i))-E(d*d))/E(E(i+i)*d));d:{if(nE(1);g=v?E(1):n;if(!v|!f){break d}g=E(1);u=E(u*E(E(E(E(E(M(m))/E(i+d))+E(-1))*h)+E(1)));}i=E(E(d*g)+i);g=E(Qf(g)*E(e|0));d=E(d*Fb(g));m=Va(E(E(j*i)-E(d*c)),E(E(c*i)+E(j*d)));break c}o=E(0);t=Va(j,c);e:{r=E(w*k);c=E(r*r);g=E(i*E(c*E(-2)));j=E(d*d);k=E(c-j);l=E(E(E(c*E(i*i))+E(j*m))-E(j*c));z=E(E(g*g)+E(E(k*E(-4))*l));if(!(z>=E(0))){break e}C=l;l=E(M(z));l=E(E(g+(g=E(-1))|!(c<=E(1)))){c=Qf(c);i=E(E(d*Hb(c))+i);j=E(r*Fb(c));d=E(E(i*i)+E(j*j));if(n>d){l=c;n=d;o=j;g=i;}if(d>w){break f}}c=E(0);i=k;d=w;j=E(0);}f=E(E(n+d)*E(.5))>=m;d=E(e|0);m=E(t-Va(E((f?o:j)*d),f?g:i));g=E((f?l:c)*d);}c=I?E(180):E(0);d=E(p|0);j=E(Va(A,q)*d);n=B[3979];i=E(E(E(E(m-j)*n)+s)-B[a+68>>2]);g:{if(i>E(180)){i=E(i+E(-360));break g}if(!(i>2]),u,B[a+76>>2],E(0),E(0));i=E(E(g+j)*n);g=B[b+80>>2];d=E(E(E(i-g)*d)+c);c=B[b+68>>2];i=E(d-c);h:{if(i>E(180)){i=E(i+E(-360));break h}if(!(i>2],B[b+76>>2],g,B[b+84>>2]);}function ni(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+b|0;c=x[a+4>>2];a:{b:{if(c&1){break b}if(!(c&3)){break a}c=x[a>>2];b=c+b|0;c:{d:{e:{a=a-c|0;if((a|0)!=x[13629]){if(c>>>0<=255){d=x[a+8>>2];e=x[a+12>>2];if((d|0)!=(e|0)){break e}i=54496,j=x[13624]&Ww(c>>>3|0),x[i>>2]=j;break b}g=x[a+24>>2];c=x[a+12>>2];if((c|0)!=(a|0)){d=x[a+8>>2];x[d+12>>2]=c;x[c+8>>2]=d;break c}e=a+20|0;d=x[e>>2];if(!d){d=x[a+16>>2];if(!d){break d}e=a+16|0;}while(1){h=e;c=d;e=c+20|0;d=x[e>>2];if(d){continue}e=c+16|0;d=x[c+16>>2];if(d){continue}break}x[h>>2]=0;break c}c=x[f+4>>2];if((c&3)!=3){break b}x[13626]=b;x[f+4>>2]=c&-2;x[a+4>>2]=b|1;x[f>>2]=b;return}x[d+12>>2]=e;x[e+8>>2]=d;break b}c=0;}if(!g){break b}d=x[a+28>>2];e=(d<<2)+54800|0;f:{if(x[e>>2]==(a|0)){x[e>>2]=c;if(c){break f}i=54500,j=x[13625]&Ww(d),x[i>>2]=j;break b}x[g+(x[g+16>>2]==(a|0)?16:20)>>2]=c;if(!c){break b}}x[c+24>>2]=g;d=x[a+16>>2];if(d){x[c+16>>2]=d;x[d+24>>2]=c;}d=x[a+20>>2];if(!d){break b}x[c+20>>2]=d;x[d+24>>2]=c;}g:{h:{i:{j:{c=x[f+4>>2];if(!(c&2)){if(x[13630]==(f|0)){x[13630]=a;b=x[13627]+b|0;x[13627]=b;x[a+4>>2]=b|1;if(x[13629]!=(a|0)){break a}x[13626]=0;x[13629]=0;return}if(x[13629]==(f|0)){x[13629]=a;b=x[13626]+b|0;x[13626]=b;x[a+4>>2]=b|1;x[a+b>>2]=b;return}b=(c&-8)+b|0;if(c>>>0<=255){e=c>>>3|0;c=x[f+12>>2];d=x[f+8>>2];if((c|0)==(d|0)){i=54496,j=x[13624]&Ww(e),x[i>>2]=j;break h}x[d+12>>2]=c;x[c+8>>2]=d;break h}g=x[f+24>>2];c=x[f+12>>2];if((f|0)!=(c|0)){d=x[f+8>>2];x[d+12>>2]=c;x[c+8>>2]=d;break i}e=f+20|0;d=x[e>>2];if(!d){d=x[f+16>>2];if(!d){break j}e=f+16|0;}while(1){h=e;c=d;e=c+20|0;d=x[e>>2];if(d){continue}e=c+16|0;d=x[c+16>>2];if(d){continue}break}x[h>>2]=0;break i}x[f+4>>2]=c&-2;x[a+4>>2]=b|1;x[a+b>>2]=b;break g}c=0;}if(!g){break h}d=x[f+28>>2];e=(d<<2)+54800|0;k:{if(x[e>>2]==(f|0)){x[e>>2]=c;if(c){break k}i=54500,j=x[13625]&Ww(d),x[i>>2]=j;break h}x[g+(x[g+16>>2]==(f|0)?16:20)>>2]=c;if(!c){break h}}x[c+24>>2]=g;d=x[f+16>>2];if(d){x[c+16>>2]=d;x[d+24>>2]=c;}d=x[f+20>>2];if(!d){break h}x[c+20>>2]=d;x[d+24>>2]=c;}x[a+4>>2]=b|1;x[a+b>>2]=b;if(x[13629]!=(a|0)){break g}x[13626]=b;return}if(b>>>0<=255){c=(b&-8)+54536|0;d=x[13624];b=1<<(b>>>3);l:{if(!(d&b)){x[13624]=b|d;b=c;break l}b=x[c+8>>2];}x[c+8>>2]=a;x[b+12>>2]=a;x[a+12>>2]=c;x[a+8>>2]=b;return}d=31;if(b>>>0<=16777215){c=G(b>>>8|0);d=((b>>>38-c&1)-(c<<1)|0)+62|0;}x[a+28>>2]=d;x[a+16>>2]=0;x[a+20>>2]=0;c=(d<<2)+54800|0;m:{e=x[13625];h=1<>2]=a;x[a+24>>2]=c;break n}d=b<<((d|0)!=31?25-(d>>>1|0)|0:0);c=x[c>>2];while(1){e=c;if((x[c+4>>2]&-8)==(b|0)){break m}c=d>>>29|0;d=d<<1;h=e+(c&4)|0;c=x[h+16>>2];if(c){continue}break}x[h+16>>2]=a;x[a+24>>2]=e;}x[a+12>>2]=a;x[a+8>>2]=a;return}b=x[e+8>>2];x[b+12>>2]=a;x[e+8>>2]=a;x[a+24>>2]=0;x[a+12>>2]=e;x[a+8>>2]=b;}}function Pg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=E(0),g=E(0),h=0,i=0,j=0,k=0,l=E(0),m=E(0),n=0,o=0,p=0,q=0,r=0;if(!x[a+224>>2]){x[a+224>>2]=c;h=x[a+132>>2];e=x[c+52>>2];x[a+132>>2]=e;d=e;if(d>>>0>A[a+136>>2]){f=E(E(e>>>0)*E(1.75));a:{if(E(F(f))>>0<=8?8:d;x[a+136>>2]=d;i=x[a+140>>2];j=Da();q=a,r=sa[x[x[j>>2]+16>>2]](j,i,d<<2,7693,82)|0,x[q+140>>2]=r;d=x[a+132>>2];}if(d>>>0>h>>>0){Ha(x[a+140>>2]+(h<<2)|0,0,d-h<<2);}d=0;i=a+128|0;Wb(c,b,0,e,i,0,2);c=x[a+140>>2];g=B[c>>2];h=x[a+132>>2];j=h-2|0;f=E(E(B[c+(j<<2)>>2]*B[c+4>>2])-E(B[(c+(h<<2)|0)-4>>2]*g));b:{c:{d:{if((h|0)!=3){b=h-4|0;e=(b>>>1|0)+1|0;k=e&1;if(b>>>0<2){break d}n=e&-2;e=0;b=0;while(1){l=f;d=e<<2;f=B[c+(d|12)>>2];m=E(g*f);g=B[c+(d|8)>>2];m=E(l+E(m-E(B[c+(d|4)>>2]*g)));l=E(g*B[(c+d|0)+20>>2]);d=e+4|0;g=B[c+(d<<2)>>2];f=E(m+E(l-E(f*g)));e=d;b=b+2|0;if((n|0)!=(b|0)){continue}break}break d}b=1;if(f>>0<2;if(k){b=d<<2;d=b+c|0;f=E(f+E(E(g*B[d+12>>2])-E(B[c+(b|4)>>2]*B[d+8>>2])));}if(e|f>>1|0;}d=0;while(1){e=d<<2;h=e+c|0;f=B[h>>2];k=c+(e|4)|0;g=B[k>>2];e=c+(j-d<<2)|0;B[h>>2]=B[e>>2];B[k>>2]=B[e+4>>2];B[e+4>>2]=g;B[e>>2]=f;d=d+2|0;if(d>>>0>>0){continue}break}}b=a+4|0;c=Cg(b,i,Dg(b,i));x[a+228>>2]=c;j=0;if(!x[c+4>>2]){return 0}while(1){h=x[x[c+12>>2]+(j<<2)>>2];c=x[h+12>>2];i=x[h+4>>2];k=i-2|0;n=(i<<2)+c|0;g=B[c>>2];f=E(E(B[c+(k<<2)>>2]*B[c+4>>2])-E(B[n-4>>2]*g));e:{f:{g:{if((i|0)!=3){b=i-4|0;e=(b>>>1|0)+1|0;o=e&1;d=0;if(b>>>0<2){break g}p=e&-2;e=0;b=0;while(1){l=f;d=e<<2;f=B[(d|12)+c>>2];m=E(g*f);g=B[(d|8)+c>>2];m=E(l+E(m-E(B[(d|4)+c>>2]*g)));l=E(g*B[(c+d|0)+20>>2]);d=e+4|0;g=B[(d<<2)+c>>2];f=E(m+E(l-E(f*g)));e=d;b=b+2|0;if((p|0)!=(b|0)){continue}break}break g}b=1;if(f>>0<2;if(o){b=d<<2;d=b+c|0;f=E(f+E(E(g*B[d+12>>2])-E(B[(b|4)+c>>2]*B[d+8>>2])));}if(e|f>>1|0;}d=0;while(1){e=d<<2;o=e+c|0;f=B[o>>2];p=(e|4)+c|0;g=B[p>>2];e=(k-d<<2)+c|0;B[o>>2]=B[e>>2];B[p>>2]=B[e+4>>2];B[e+4>>2]=g;B[e>>2]=f;d=d+2|0;if(d>>>0>>0){continue}break}}e=x[h+8>>2];h:{if((i|0)==(e|0)){f=B[c>>2];g=E(E(i>>>0)*E(1.75));i:{if(E(F(g))>>0<=8?8:b;x[h+8>>2]=b;d=Da();c=sa[x[x[d>>2]+16>>2]](d,c,b<<2,7693,106)|0;x[h+12>>2]=c;i=x[h+4>>2];B[(i<<2)+c>>2]=f;e=x[h+8>>2];break h}B[n>>2]=B[c>>2];}d=i+1|0;x[h+4>>2]=d;j:{if((d|0)==(e|0)){f=B[c+4>>2];g=E(E(e>>>0)*E(1.75));k:{if(E(F(g))>>0<=8?8:b;x[h+8>>2]=b;d=Da();b=sa[x[x[d>>2]+16>>2]](d,c,b<<2,7693,106)|0;x[h+12>>2]=b;d=x[h+4>>2];B[b+(d<<2)>>2]=f;break j}B[(d<<2)+c>>2]=B[c+4>>2];}x[h+4>>2]=d+1;c=x[a+228>>2];d=x[c+4>>2];j=j+1|0;if(d>>>0>j>>>0){continue}break}}return d|0}function kv(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=qa-16|0;qa=h;c=Wf(a);if((c|0)!=54464){x[h+4>>2]=a;ti(h+8|0,a,h+4|0);a=x[x[h+8>>2]+28>>2];if(a){sa[x[x[a>>2]+4>>2]](a);}b=x[c+4>>2];a:{if(!b){b=c;while(1){a=x[b+8>>2];d=x[a>>2]!=(b|0);b=a;if(d){continue}break}break a}while(1){a=b;b=x[a>>2];if(b){continue}break}}if((c|0)==x[13615]){x[13615]=a;}x[13617]=x[13617]-1;d=x[13616];b:{c:{g=c;b=c;c=x[b>>2];if(c){a=x[g+4>>2];if(!a){break c}while(1){b=a;a=x[a>>2];if(a){continue}break}}c=x[b+4>>2];if(c){break c}c=0;e=1;break b}x[c+8>>2]=x[b+8>>2];e=0;}f=x[b+8>>2];a=x[f>>2];d:{if((b|0)==(a|0)){x[f>>2]=c;if((b|0)==(d|0)){a=0;d=c;break d}a=x[f+4>>2];break d}x[f+4>>2]=c;}i=!y[b+12|0];if((b|0)!=(g|0)){f=x[g+8>>2];x[b+8>>2]=f;x[f+((x[x[g+8>>2]>>2]!=(g|0))<<2)>>2]=b;f=x[g>>2];x[b>>2]=f;x[f+8>>2]=b;f=x[g+4>>2];x[b+4>>2]=f;if(f){x[f+8>>2]=b;}v[b+12|0]=y[g+12|0];d=(d|0)==(g|0)?b:d;}e:{if(i|!d){break e}if(e){while(1){b=y[a+12|0];f:{e=x[a+8>>2];if(x[e>>2]!=(a|0)){if(!b){v[a+12|0]=1;v[e+12|0]=0;c=x[e+4>>2];b=x[c>>2];x[e+4>>2]=b;if(b){x[b+8>>2]=e;}x[c+8>>2]=x[e+8>>2];b=x[e+8>>2];x[(((e|0)!=x[b>>2])<<2)+b>>2]=c;x[c>>2]=e;x[e+8>>2]=c;b=a;a=x[a>>2];d=(a|0)==(d|0)?b:d;a=x[a+4>>2];}g:{h:{b=x[a>>2];i:{if(!(y[b+12|0]?0:b)){c=x[a+4>>2];if(y[c+12|0]?0:c){break i}v[a+12|0]=0;a=x[a+8>>2];j:{if((d|0)==(a|0)){a=d;break j}if(y[a+12|0]){break f}}v[a+12|0]=1;break e}c=x[a+4>>2];if(!c){break h}}if(y[c+12|0]){break h}b=a;break g}v[b+12|0]=1;v[a+12|0]=0;c=x[b+4>>2];x[a>>2]=c;if(c){x[c+8>>2]=a;}x[b+8>>2]=x[a+8>>2];c=x[a+8>>2];x[((x[c>>2]!=(a|0))<<2)+c>>2]=b;x[b+4>>2]=a;x[a+8>>2]=b;c=a;}d=x[b+8>>2];v[b+12|0]=y[d+12|0];v[d+12|0]=1;v[c+12|0]=1;b=x[d+4>>2];a=x[b>>2];x[d+4>>2]=a;if(a){x[a+8>>2]=d;}x[b+8>>2]=x[d+8>>2];a=x[d+8>>2];x[(((d|0)!=x[a>>2])<<2)+a>>2]=b;x[b>>2]=d;x[d+8>>2]=b;break e}if(!b){v[a+12|0]=1;v[e+12|0]=0;b=x[a+4>>2];x[e>>2]=b;if(b){x[b+8>>2]=e;}x[a+8>>2]=x[e+8>>2];b=x[e+8>>2];x[(((e|0)!=x[b>>2])<<2)+b>>2]=a;x[a+4>>2]=e;x[e+8>>2]=a;d=(d|0)==(e|0)?a:d;a=x[e>>2];}c=x[a>>2];k:{if(!(!c|y[c+12|0])){b=a;break k}b=x[a+4>>2];if(!(y[b+12|0]?0:b)){v[a+12|0]=0;a=x[a+8>>2];if((a|0)!=(d|0)?y[a+12|0]:0){break f}v[a+12|0]=1;break e}if(c){if(!y[c+12|0]){b=a;break k}b=x[a+4>>2];}v[b+12|0]=1;v[a+12|0]=0;c=x[b>>2];x[a+4>>2]=c;if(c){x[c+8>>2]=a;}x[b+8>>2]=x[a+8>>2];c=x[a+8>>2];x[((x[c>>2]!=(a|0))<<2)+c>>2]=b;x[b>>2]=a;x[a+8>>2]=b;c=a;}d=x[b+8>>2];v[b+12|0]=y[d+12|0];v[d+12|0]=1;v[c+12|0]=1;b=x[d>>2];a=x[b+4>>2];x[d>>2]=a;if(a){x[a+8>>2]=d;}x[b+8>>2]=x[d+8>>2];a=x[d+8>>2];x[(((d|0)!=x[a>>2])<<2)+a>>2]=b;x[b+4>>2]=d;x[d+8>>2]=b;break e}b=a;a=x[a+8>>2];a=x[(((b|0)==x[a>>2])<<2)+a>>2];continue}}v[c+12|0]=1;}if(v[g+27|0]<0){Ja(x[g+16>>2]);}Ja(g);}qa=h+16|0;}function Ov(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=x[a>>2];e=(x[a+4>>2]-f|0)/24|0;if(e>>>0>>0){h=a;a:{e=b-e|0;g=x[a+8>>2];f=x[a+4>>2];if(e>>>0<=(g-f|0)/24>>>0){b:{if(!e){break b}a=f;g=D(e,24)-24|0;i=((g>>>0)/24|0)+1&3;if(i){b=0;while(1){d=x[c+4>>2];x[a>>2]=x[c>>2];x[a+4>>2]=d;d=x[c+20>>2];x[a+16>>2]=x[c+16>>2];x[a+20>>2]=d;d=x[c+12>>2];x[a+8>>2]=x[c+8>>2];x[a+12>>2]=d;a=a+24|0;b=b+1|0;if((i|0)!=(b|0)){continue}break}}f=D(e,24)+f|0;if(g>>>0<72){break b}while(1){b=x[c+4>>2];x[a>>2]=x[c>>2];x[a+4>>2]=b;b=x[c+20>>2];x[a+16>>2]=x[c+16>>2];x[a+20>>2]=b;b=x[c+12>>2];x[a+8>>2]=x[c+8>>2];x[a+12>>2]=b;b=x[c+20>>2];x[a+40>>2]=x[c+16>>2];x[a+44>>2]=b;b=x[c+12>>2];x[a+32>>2]=x[c+8>>2];x[a+36>>2]=b;b=x[c+4>>2];x[a+24>>2]=x[c>>2];x[a+28>>2]=b;e=x[c+20>>2];b=a- -64|0;x[b>>2]=x[c+16>>2];x[b+4>>2]=e;b=x[c+12>>2];x[a+56>>2]=x[c+8>>2];x[a+60>>2]=b;b=x[c+4>>2];x[a+48>>2]=x[c>>2];x[a+52>>2]=b;b=x[c+4>>2];x[a+72>>2]=x[c>>2];x[a+76>>2]=b;b=x[c+12>>2];x[a+80>>2]=x[c+8>>2];x[a+84>>2]=b;b=x[c+20>>2];x[a+88>>2]=x[c+16>>2];x[a+92>>2]=b;a=a+96|0;if((f|0)!=(a|0)){continue}break}}x[h+4>>2]=f;break a}c:{b=x[h>>2];d=(f-b|0)/24|0;a=d+e|0;if(a>>>0<178956971){b=(g-b|0)/24|0;g=b<<1;g=b>>>0>=89478485?178956970:a>>>0>>0?g:a;if(g){if(g>>>0>=178956971){break c}i=Ea(D(g,24));}b=D(d,24)+i|0;a=b;e=D(e,24);d=e-24|0;k=((d>>>0)/24|0)+1&3;if(k){while(1){j=x[c+4>>2];x[a>>2]=x[c>>2];x[a+4>>2]=j;j=x[c+20>>2];x[a+16>>2]=x[c+16>>2];x[a+20>>2]=j;j=x[c+12>>2];x[a+8>>2]=x[c+8>>2];x[a+12>>2]=j;a=a+24|0;l=l+1|0;if((l|0)!=(k|0)){continue}break}}e=b+e|0;if(d>>>0>=72){while(1){d=x[c+4>>2];x[a>>2]=x[c>>2];x[a+4>>2]=d;d=x[c+20>>2];x[a+16>>2]=x[c+16>>2];x[a+20>>2]=d;d=x[c+12>>2];x[a+8>>2]=x[c+8>>2];x[a+12>>2]=d;d=x[c+20>>2];x[a+40>>2]=x[c+16>>2];x[a+44>>2]=d;d=x[c+12>>2];x[a+32>>2]=x[c+8>>2];x[a+36>>2]=d;d=x[c+4>>2];x[a+24>>2]=x[c>>2];x[a+28>>2]=d;k=x[c+20>>2];d=a- -64|0;x[d>>2]=x[c+16>>2];x[d+4>>2]=k;d=x[c+12>>2];x[a+56>>2]=x[c+8>>2];x[a+60>>2]=d;d=x[c+4>>2];x[a+48>>2]=x[c>>2];x[a+52>>2]=d;d=x[c+4>>2];x[a+72>>2]=x[c>>2];x[a+76>>2]=d;d=x[c+12>>2];x[a+80>>2]=x[c+8>>2];x[a+84>>2]=d;d=x[c+20>>2];x[a+88>>2]=x[c+16>>2];x[a+92>>2]=d;a=a+96|0;if((e|0)!=(a|0)){continue}break}}c=x[h>>2];if((c|0)!=(f|0)){while(1){f=f-24|0;a=f;d=x[a+4>>2];b=b-24|0;x[b>>2]=x[a>>2];x[b+4>>2]=d;d=x[a+20>>2];x[b+16>>2]=x[a+16>>2];x[b+20>>2]=d;d=x[a+12>>2];x[b+8>>2]=x[a+8>>2];x[b+12>>2]=d;if((a|0)!=(c|0)){continue}break}f=x[h>>2];}x[h+8>>2]=D(g,24)+i;x[h+4>>2]=e;x[h>>2]=b;if(f){Ja(f);}break a}O();p();}kb();p();}return}if(b>>>0>>0){x[a+4>>2]=f+D(b,24);}}function pt(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=E(c);d=E(d);e=e|0;f=E(f);g=g|0;h=h|0;var i=E(0),j=E(0),k=E(0),l=0,m=0,n=E(0);e=qa-32|0;qa=e;b=x[x[b+36>>2]+(x[a+20>>2]<<2)>>2];h=x[b+8>>2];a:{if(!(sa[x[x[h>>2]+16>>2]](h)|0)){break a}h=x[a+36>>2];if(B[h>>2]>d){b:{switch(g|0){case 0:a=x[b+4>>2];c=B[a+28>>2];B[b+20>>2]=c;B[b+24>>2]=B[a+32>>2];B[b+28>>2]=B[a+36>>2];B[b+32>>2]=B[a+40>>2];B[b+20>>2]=cE(1)?E(1):c;c=B[b+24>>2];B[b+24>>2]=cE(1)?E(1):c;c=B[b+28>>2];B[b+28>>2]=cE(1)?E(1):c;c=B[b+32>>2];B[b+32>>2]=cE(1)?E(1):c;break a;case 1:break b;default:break a}}a=x[b+4>>2];x[e+12>>2]=14896;g=x[a+40>>2];x[e+24>>2]=x[a+36>>2];x[e+28>>2]=g;g=x[a+32>>2];x[e+16>>2]=x[a+28>>2];x[e+20>>2]=g;c=B[e+24>>2];d=B[e+16>>2];k=B[e+28>>2];j=B[b+24>>2];B[b+24>>2]=E(E(B[e+20>>2]-j)*f)+j;i=c;c=B[b+28>>2];B[b+28>>2]=E(E(i-c)*f)+c;c=B[b+32>>2];B[b+32>>2]=E(E(k-c)*f)+c;c=B[b+20>>2];c=E(E(E(d-c)*f)+c);B[b+20>>2]=c;B[b+20>>2]=cE(1)?E(1):c;c=B[b+24>>2];B[b+24>>2]=cE(1)?E(1):c;c=B[b+28>>2];B[b+28>>2]=cE(1)?E(1):c;c=B[b+32>>2];B[b+32>>2]=cE(1)?E(1):c;break a}h=h+(x[a+28>>2]<<2)|0;c:{if(B[h-20>>2]<=d){c=B[h-4>>2];k=B[h-8>>2];j=B[h-12>>2];d=B[h-16>>2];break c}l=Nb(a+24|0,d,5);m=l<<2;h=m+x[a+36>>2]|0;i=B[h-16>>2];j=B[h-12>>2];k=B[h-8>>2];c=B[h-4>>2];n=d;d=B[h>>2];d=Kb(a,((l>>>0)/5|0)-1|0,E(E(1)-E(E(n-d)/E(B[h-20>>2]-d))));a=x[a+36>>2]+m|0;c=E(c+E(d*E(B[a+16>>2]-c)));k=E(k+E(d*E(B[a+12>>2]-k)));j=E(j+E(d*E(B[a+8>>2]-j)));d=E(i+E(d*E(B[a+4>>2]-i)));}a=b+16|0;if(f==E(1)){B[a+16>>2]=c;B[a+12>>2]=k;B[a+8>>2]=j;B[a+4>>2]=d;B[a+4>>2]=dE(1)?E(1):d;c=B[a+8>>2];B[a+8>>2]=cE(1)?E(1):c;c=B[a+12>>2];B[a+12>>2]=cE(1)?E(1):c;c=B[a+16>>2];B[a+16>>2]=cE(1)?E(1):c;break a}if(g){i=B[a+16>>2];}else {b=x[b+4>>2]+24|0;i=B[b+4>>2];B[a+4>>2]=i;B[a+8>>2]=B[b+8>>2];B[a+12>>2]=B[b+12>>2];B[a+16>>2]=B[b+16>>2];B[a+4>>2]=iE(1)?E(1):i;i=B[a+8>>2];B[a+8>>2]=iE(1)?E(1):i;i=B[a+12>>2];B[a+12>>2]=iE(1)?E(1):i;i=B[a+16>>2];i=iE(1)?E(1):i;}B[a+16>>2]=i+E(E(c-i)*f);c=B[a+12>>2];B[a+12>>2]=c+E(E(k-c)*f);c=B[a+8>>2];B[a+8>>2]=c+E(E(j-c)*f);c=B[a+4>>2];c=E(c+E(E(d-c)*f));B[a+4>>2]=c;B[a+4>>2]=cE(1)?E(1):c;c=B[a+8>>2];B[a+8>>2]=cE(1)?E(1):c;c=B[a+12>>2];B[a+12>>2]=cE(1)?E(1):c;c=B[a+16>>2];B[a+16>>2]=cE(1)?E(1):c;}qa=e+32|0;}function Ke(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;x[a+124>>2]=0;x[a+108>>2]=0;b=x[a+12>>2];if(b){while(1){d=x[x[a+20>>2]+(c<<2)>>2];e=y[x[d+4>>2]+60|0];v[d+116|0]=e;v[d+117|0]=e^1;c=c+1|0;if((b|0)!=(c|0)){continue}break}}d=x[a+136>>2];a:{if(!d){break a}d=d+36|0;e=x[d+4>>2];if(!e){break a}c=0;while(1){b=x[x[a+20>>2]+(x[x[x[d+12>>2]+(c<<2)>>2]+4>>2]<<2)>>2];while(1){w[b+116>>1]=256;b=x[b+12>>2];if(b){continue}break}c=c+1|0;if((e|0)!=(c|0)){continue}break}}f=x[a+92>>2];g=x[a+76>>2];h=x[a+60>>2];e=f+(g+h|0)|0;b:{if(!e){break b}if(h){d=0;while(1){c=1;b=x[x[a+68>>2]>>2];c:{d:{if(x[x[b+4>>2]+16>>2]==(d|0)){ah(a,b);break d}e:{while(1){b=c;if((b|0)==(h|0)){break e}c=b+1|0;i=x[x[a+68>>2]+(b<<2)>>2];if(x[x[i+4>>2]+16>>2]!=(d|0)){continue}break}ah(a,i);d=d+1|0;if(b>>>0>>0){break c}}f:{if(!g){break f}c=1;b=x[x[a+84>>2]>>2];if(x[x[b+4>>2]+16>>2]==(d|0)){Ec(a,b);break d}while(1){b=c;if((b|0)==(g|0)){break f}c=b+1|0;i=x[x[a+84>>2]+(b<<2)>>2];if(x[x[i+4>>2]+16>>2]!=(d|0)){continue}break}Ec(a,i);d=d+1|0;if(b>>>0>>0){break c}}b=0;g:{if(f){while(1){c=x[x[a+100>>2]+(b<<2)>>2];if(x[x[c+4>>2]+16>>2]==(d|0)){break g}b=b+1|0;if((f|0)!=(b|0)){continue}break}}d=d+1|0;if(e>>>0>d>>>0){continue}break b}Je(a,c);}d=d+1|0;}if(e>>>0>d>>>0){continue}break}break b}h:{if(g){b=0;if(f){break h}while(1){d=1;i:{c=x[x[a+84>>2]>>2];if(x[x[c+4>>2]+16>>2]==(b|0)){Ec(a,c);b=b+1|0;break i}j:{while(1){c=d;if((c|0)==(g|0)){break j}d=c+1|0;f=x[x[a+84>>2]+(c<<2)>>2];if(x[x[f+4>>2]+16>>2]!=(b|0)){continue}break}Ec(a,f);b=b+1|0;if(c>>>0>>0){break i}}b=b+1|0;if(e>>>0>b>>>0){continue}break b}if(b>>>0>>0){continue}break}break b}if(!f){break b}c=0;while(1){b=0;k:{while(1){d=x[x[a+100>>2]+(b<<2)>>2];if(x[x[d+4>>2]+16>>2]!=(c|0)){b=b+1|0;if((f|0)!=(b|0)){continue}break k}break}Je(a,d);c=c+1|0;if(e>>>0>c>>>0){continue}break b}c=c+1|0;if(e>>>0>c>>>0){continue}break}break b}while(1){d=1;l:{c=x[x[a+84>>2]>>2];m:{if(x[x[c+4>>2]+16>>2]==(b|0)){Ec(a,c);b=b+1|0;break m}n:{while(1){c=d;if((c|0)==(g|0)){break n}d=c+1|0;h=x[x[a+84>>2]+(c<<2)>>2];if(x[x[h+4>>2]+16>>2]!=(b|0)){continue}break}Ec(a,h);b=b+1|0;if(c>>>0>>0){break m}}c=0;while(1){d=x[x[a+100>>2]+(c<<2)>>2];if(x[x[d+4>>2]+16>>2]!=(b|0)){c=c+1|0;if((f|0)!=(c|0)){continue}break l}break}Je(a,d);b=b+1|0;}if(e>>>0<=b>>>0){break b}continue}b=b+1|0;if(e>>>0>b>>>0){continue}break}}d=x[a+12>>2];if(d){b=0;while(1){Pb(a,x[x[a+20>>2]+(b<<2)>>2]);b=b+1|0;if((d|0)!=(b|0)){continue}break}}}function hc(a,b,c,d,e,f,g,h){a=a|0;b=E(b);c=E(c);d=E(d);e=E(e);f=E(f);g=E(g);h=E(h);var i=E(0),j=E(0),k=0,l=E(0),m=E(0),n=E(0),o=E(0),p=0,q=E(0);v[a+88|0]=1;B[a+84>>2]=h;B[a+80>>2]=g;B[a+76>>2]=f;B[a+72>>2]=e;B[a+68>>2]=d;B[a+64>>2]=c;B[a+60>>2]=b;k=x[a+12>>2];if(!k){k=x[a+8>>2];i=B[k+164>>2];j=B[k+168>>2];j=y[54052]?E(-j):j;g=E(d+g);p=a,q=E(i*E(yb(g)*e)),B[p+92>>2]=q;d=E(E(d+E(90))+h);p=a,q=E(i*E(yb(d)*f)),B[p+96>>2]=q;p=a,q=E(j*E(zb(g)*e)),B[p+104>>2]=q;p=a,q=E(j*E(zb(d)*f)),B[p+108>>2]=q;B[a+100>>2]=E(b*i)+B[x[a+8>>2]+172>>2];B[a+112>>2]=E(c*j)+B[x[a+8>>2]+176>>2];return}i=B[k+104>>2];l=B[k+108>>2];j=B[k+92>>2];m=B[k+96>>2];B[a+100>>2]=E(E(j*b)+E(m*c))+B[k+100>>2];B[a+112>>2]=E(E(i*b)+E(l*c))+B[k+112>>2];a:{b:{c:{switch(x[x[a+4>>2]+56>>2]){case 0:b=E(d+g);c=yb(b);d=E(E(d+E(90))+h);g=yb(d);b=zb(b);d=zb(d);c=E(c*e);b=E(b*e);B[a+104>>2]=E(i*c)+E(l*b);B[a+92>>2]=E(j*c)+E(m*b);b=E(g*f);c=E(d*f);B[a+108>>2]=E(i*b)+E(l*c);B[a+96>>2]=E(j*b)+E(m*c);return;case 1:b=E(d+g);p=a,q=E(yb(b)*e),B[p+92>>2]=q;c=E(E(d+E(90))+h);p=a,q=E(yb(c)*f),B[p+96>>2]=q;p=a,q=E(zb(b)*e),B[p+104>>2]=q;b=E(zb(c)*f);break b;case 2:c=E(d+g);g=E(E(j*j)+E(i*i));d:{if(g>E(9999999747378752e-20)){b=E(E(j*l)-E(i*m));b=E((b>2]=E(i*g)+E(l*c);B[a+92>>2]=E(j*g)-E(c*m);c=E(d*f);b=E(b*f);B[a+96>>2]=E(j*c)-E(b*m);b=E(E(i*c)+E(l*b));break b;case 3:case 4:break c;default:break a}}c=yb(d);d=zb(d);k=x[a+8>>2];b=E(E(E(j*c)+E(m*d))/B[k+164>>2]);n=b;o=E(b*b);b=B[k+168>>2];b=E(E(E(i*c)+E(l*d))/(y[54052]?E(-b):b));c=E(M(E(o+E(b*b))));d=c>E(9999999747378752e-21)?E(E(1)/c):c;c=E(n*d);d=E(b*d);b=E(M(E(E(c*c)+E(d*d))));if(x[x[a+4>>2]+56>>2]==3){k=x[a+8>>2];n=B[k+168>>2];b=B[k+164>>2]>2]=E(d*l)+E(i*e);b=E(b*j);B[a+92>>2]=E(c*l)+E(b*e);e=c;c=E(m*f);g=b;b=E(h*f);B[a+96>>2]=E(e*c)+E(g*b);b=E(E(d*c)+E(i*b));}B[a+108>>2]=b;}B[a+92>>2]=B[x[a+8>>2]+164>>2]*B[a+92>>2];B[a+96>>2]=B[x[a+8>>2]+164>>2]*B[a+96>>2];b=B[x[a+8>>2]+168>>2];B[a+104>>2]=(y[54052]?E(-b):b)*B[a+104>>2];b=B[x[a+8>>2]+168>>2];B[a+108>>2]=(y[54052]?E(-b):b)*B[a+108>>2];}function Eq(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=E(c);d=E(d);e=e|0;f=E(f);g=g|0;h=h|0;var i=E(0),j=E(0),k=E(0),l=0,m=E(0),n=0;a:{b=x[x[b+20>>2]+(x[a+36>>2]<<2)>>2];b:{if(!y[b+117|0]){break b}e=x[a+32>>2];if(B[e>>2]>d){c:{switch(g|0){case 0:a=x[b+4>>2];B[b+44>>2]=B[a+40>>2];B[b+48>>2]=B[a+44>>2];return;case 1:break c;default:break b}}a=x[b+4>>2];c=B[b+44>>2];B[b+44>>2]=E(E(B[a+40>>2]-c)*f)+c;c=B[b+48>>2];B[b+48>>2]=E(E(B[a+44>>2]-c)*f)+c;return}l=x[a+24>>2];n=x[4890];d:{if(B[e+(l-n<<2)>>2]<=d){a=x[b+4>>2];j=B[a+44>>2];d=E(B[e+(l+x[4893]<<2)>>2]*j);i=B[a+40>>2];c=E(B[e+(l+x[4892]<<2)>>2]*i);break d}e=Nb(a+20|0,d,n);l=x[a+32>>2];c=B[l+(e+x[4892]<<2)>>2];i=B[l+(e+x[4893]<<2)>>2];m=d;d=B[l+(e<<2)>>2];k=Kb(a,((e|0)/(n|0)|0)-1|0,E(E(1)-E(E(m-d)/E(B[l+(e+x[4891]<<2)>>2]-d))));l=x[b+4>>2];j=B[l+44>>2];a=x[a+32>>2];d=E(j*E(i+E(k*E(B[a+(e+x[4895]<<2)>>2]-i))));i=B[l+40>>2];c=E(E(c+E(k*E(B[a+(e+x[4894]<<2)>>2]-c)))*i);}if(f==E(1)){if((g|0)==3){B[b+44>>2]=B[b+44>>2]+E(c-i);B[b+48>>2]=B[b+48>>2]+E(d-j);return}B[b+48>>2]=d;B[b+44>>2]=c;return}if((h|0)==1){e:{switch(g|0){case 0:B[b+44>>2]=E(E(E((cE(0)?E(1):E(0)))-i)*f)+i;B[b+48>>2]=E(E(E((dE(0)?E(1):E(0)))-j)*f)+j;return;case 1:case 2:i=B[b+48>>2];j=B[b+44>>2];B[b+44>>2]=j+E(E(E((cE(0)?E(1):E(0)))-j)*f);B[b+48>>2]=i+E(E(E((dE(0)?E(1):E(0)))-i)*f);return;case 3:break e;default:break b}}i=B[b+48>>2];j=B[b+44>>2];B[b+44>>2]=j+E(E(E((cE(0)?E(1):E(0)))-B[x[b+4>>2]+40>>2])*f);B[b+48>>2]=i+E(E(E((dE(0)?E(1):E(0)))-B[x[b+4>>2]+44>>2])*f);return}f:{switch(g|0){case 0:i=iE(0)?E(1):E(0);k=B[x[b+4>>2]+44>>2];k=k>2];i=iE(0)?E(1):E(0);k=B[b+48>>2];k=kE(0)?E(1):E(0);i=B[b+44>>2];m=c;c=B[x[b+4>>2]+40>>2];B[b+44>>2]=E(j*(iE(0)?E(1):E(0);c=B[b+48>>2];m=E(i*(c>2]+44>>2];B[b+48>>2]=m+E(E(d-E(i*(c>2]=E(E(m-c)*f)+c;c=E(k*(dE(0)?E(1):E(0)));B[b+48>>2]=E(E(d-c)*f)+c;}function Qq(a){a=a|0;var b=0,c=0,d=0,e=0,f=E(0),g=E(0),h=0,i=0,j=0;b=Ma(164,4362,267);Qe(b,a+4|0);B[b+68>>2]=B[a+68>>2];B[b+72>>2]=B[a+72>>2];B[b+60>>2]=B[a+60>>2];B[b+64>>2]=B[a+64>>2];B[b+76>>2]=B[a+76>>2];B[b+80>>2]=B[a+80>>2];c=x[a+24>>2];d=x[b+28>>2];a:{if(!d){break a}e=x[b+24>>2];if(!e|(c|0)==(e|0)){break a}sa[d|0](e);}x[b+28>>2]=0;x[b+24>>2]=c;b:{if((a|0)==(b|0)){break b}c=x[b+124>>2];if(c){e=Da();sa[x[x[e>>2]+20>>2]](e,c,8064,122);}if(!x[a+124>>2]){x[b+120>>2]=0;x[b+124>>2]=0;break b}x[b+120>>2]=x[a+120>>2];c=x[a+120>>2];e=Da();c=sa[x[x[e>>2]+12>>2]](e,c+1|0,8064,129)|0;x[b+124>>2]=c;Fa(c,x[a+124>>2],x[a+120>>2]+1|0);}B[b+32>>2]=B[a+32>>2];B[b+36>>2]=B[a+36>>2];B[b+44>>2]=B[a+44>>2];B[b+48>>2]=B[a+48>>2];B[b+40>>2]=B[a+40>>2];B[b+52>>2]=B[a+52>>2];f=B[a+56>>2];x[b+104>>2]=0;B[b+56>>2]=f;c=x[a+104>>2];if(c>>>0>A[b+108>>2]){x[b+108>>2]=c;e=x[b+112>>2];d=Da();i=b,j=sa[x[x[d>>2]+16>>2]](d,e,c<<2,7693,94)|0,x[i+112>>2]=j;c=x[a+104>>2];}if(c){c=x[b+104>>2];e=0;while(1){d=x[a+112>>2]+(e<<2)|0;c:{if(x[b+108>>2]==(c|0)){f=B[d>>2];g=E(E(c>>>0)*E(1.75));d:{if(E(F(g))>>0<=8?8:c;x[b+108>>2]=c;d=x[b+112>>2];h=Da();d=sa[x[x[h>>2]+16>>2]](h,d,c<<2,7693,106)|0;x[b+112>>2]=d;c=x[b+104>>2];B[d+(c<<2)>>2]=f;break c}B[x[b+112>>2]+(c<<2)>>2]=B[d>>2];}c=c+1|0;x[b+104>>2]=c;e=e+1|0;if(e>>>0>2]){continue}break}}x[b+88>>2]=0;c=x[a+88>>2];if(c>>>0>A[b+92>>2]){x[b+92>>2]=c;e=x[b+96>>2];d=Da();i=b,j=sa[x[x[d>>2]+16>>2]](d,e,c<<2,7693,94)|0,x[i+96>>2]=j;c=x[a+88>>2];}if(c){c=x[b+88>>2];e=0;while(1){d=x[a+96>>2]+(e<<2)|0;e:{if(x[b+92>>2]==(c|0)){f=B[d>>2];g=E(E(c>>>0)*E(1.75));f:{if(E(F(g))>>0<=8?8:c;x[b+92>>2]=c;d=x[b+96>>2];h=Da();d=sa[x[x[h>>2]+16>>2]](h,d,c<<2,7693,106)|0;x[b+96>>2]=d;c=x[b+88>>2];B[d+(c<<2)>>2]=f;break e}B[x[b+96>>2]+(c<<2)>>2]=B[d>>2];}c=c+1|0;x[b+88>>2]=c;e=e+1|0;if(e>>>0>2]){continue}break}}f=B[a+148>>2];B[b+148>>2]=f;B[b+152>>2]=B[a+152>>2];B[b+156>>2]=B[a+156>>2];B[b+160>>2]=B[a+160>>2];B[b+148>>2]=fE(1)?E(1):f;f=B[b+152>>2];B[b+152>>2]=fE(1)?E(1):f;f=B[b+156>>2];B[b+156>>2]=fE(1)?E(1):f;f=B[b+160>>2];B[b+160>>2]=fE(1)?E(1):f;return b|0}function Hv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=x[a>>2];f=(x[a+4>>2]-e|0)/20|0;if(f>>>0>>0){h=a;a:{f=b-f|0;g=x[a+8>>2];e=x[a+4>>2];if(f>>>0<=(g-e|0)/20>>>0){b:{if(!f){break b}a=e;g=D(f,20)-20|0;i=((g>>>0)/20|0)+1&3;if(i){b=0;while(1){d=x[c+4>>2];x[a>>2]=x[c>>2];x[a+4>>2]=d;x[a+16>>2]=x[c+16>>2];d=x[c+12>>2];x[a+8>>2]=x[c+8>>2];x[a+12>>2]=d;a=a+20|0;b=b+1|0;if((i|0)!=(b|0)){continue}break}}e=D(f,20)+e|0;if(g>>>0<60){break b}while(1){b=x[c+4>>2];x[a>>2]=x[c>>2];x[a+4>>2]=b;x[a+16>>2]=x[c+16>>2];b=x[c+12>>2];x[a+8>>2]=x[c+8>>2];x[a+12>>2]=b;x[a+36>>2]=x[c+16>>2];b=x[c+12>>2];x[a+28>>2]=x[c+8>>2];x[a+32>>2]=b;b=x[c+4>>2];x[a+20>>2]=x[c>>2];x[a+24>>2]=b;x[a+56>>2]=x[c+16>>2];b=x[c+12>>2];x[a+48>>2]=x[c+8>>2];x[a+52>>2]=b;b=x[c+4>>2];x[a+40>>2]=x[c>>2];x[a+44>>2]=b;b=x[c+4>>2];x[a+60>>2]=x[c>>2];x[a+64>>2]=b;b=x[c+12>>2];x[a+68>>2]=x[c+8>>2];x[a+72>>2]=b;x[a+76>>2]=x[c+16>>2];a=a+80|0;if((e|0)!=(a|0)){continue}break}}x[h+4>>2]=e;break a}c:{b=x[h>>2];d=(e-b|0)/20|0;a=d+f|0;if(a>>>0<214748365){b=(g-b|0)/20|0;g=b<<1;g=b>>>0>=107374182?214748364:a>>>0>>0?g:a;if(g){if(g>>>0>=214748365){break c}i=Ea(D(g,20));}b=D(d,20)+i|0;a=b;f=D(f,20);d=f-20|0;k=((d>>>0)/20|0)+1&3;if(k){while(1){j=x[c+4>>2];x[a>>2]=x[c>>2];x[a+4>>2]=j;x[a+16>>2]=x[c+16>>2];j=x[c+12>>2];x[a+8>>2]=x[c+8>>2];x[a+12>>2]=j;a=a+20|0;l=l+1|0;if((l|0)!=(k|0)){continue}break}}f=b+f|0;if(d>>>0>=60){while(1){d=x[c+4>>2];x[a>>2]=x[c>>2];x[a+4>>2]=d;x[a+16>>2]=x[c+16>>2];d=x[c+12>>2];x[a+8>>2]=x[c+8>>2];x[a+12>>2]=d;x[a+36>>2]=x[c+16>>2];d=x[c+12>>2];x[a+28>>2]=x[c+8>>2];x[a+32>>2]=d;d=x[c+4>>2];x[a+20>>2]=x[c>>2];x[a+24>>2]=d;x[a+56>>2]=x[c+16>>2];d=x[c+12>>2];x[a+48>>2]=x[c+8>>2];x[a+52>>2]=d;d=x[c+4>>2];x[a+40>>2]=x[c>>2];x[a+44>>2]=d;d=x[c+4>>2];x[a+60>>2]=x[c>>2];x[a+64>>2]=d;d=x[c+12>>2];x[a+68>>2]=x[c+8>>2];x[a+72>>2]=d;x[a+76>>2]=x[c+16>>2];a=a+80|0;if((f|0)!=(a|0)){continue}break}}c=x[h>>2];if((c|0)!=(e|0)){while(1){e=e-20|0;a=e;d=x[a+4>>2];b=b-20|0;x[b>>2]=x[a>>2];x[b+4>>2]=d;x[b+16>>2]=x[a+16>>2];d=x[a+12>>2];x[b+8>>2]=x[a+8>>2];x[b+12>>2]=d;if((a|0)!=(c|0)){continue}break}e=x[h>>2];}x[h+8>>2]=D(g,20)+i;x[h+4>>2]=f;x[h>>2]=b;if(e){Ja(e);}break a}O();p();}kb();p();}return}if(b>>>0>>0){x[a+4>>2]=e+D(b,20);}}function mc(a){a=a|0;var b=0,c=0,d=E(0),e=0,f=E(0),g=E(0),h=E(0),i=0,j=E(0),k=E(0),l=0,m=0,n=E(0),o=0,p=0,q=0;b=x[a+124>>2];c=x[a+108>>2];if((b|0)!=(c|0)){x[a+108>>2]=b;if(A[a+112>>2]>>0){d=E(E(b>>>0)*E(1.75));a:{if(E(F(d))>>0<=8?8:b;x[a+112>>2]=b;i=x[a+116>>2];e=Da();p=a,q=sa[x[x[e>>2]+16>>2]](e,i,b<<2,7693,82)|0,x[p+116>>2]=q;b=x[a+108>>2];}if(b>>>0>c>>>0){Ha(x[a+116>>2]+(c<<2)|0,0,b-c<<2);}b=x[a+124>>2];}d=B[a+184>>2];f=B[a+180>>2];b:{c:{c=x[a+232>>2];if((c|0)!=270){if((c|0)!=180){if((c|0)!=90){break c}if((b|0)<=0){break b}g=B[a+84>>2];h=E(g/E(B[a+192>>2]-d));j=B[a+92>>2];g=E(d-E(E(E(j-B[a+76>>2])-g)/h));k=B[a+88>>2];d=E(k/E(B[a+188>>2]-f));n=f;f=B[a+96>>2];k=E(n-E(E(E(f-B[a+80>>2])-k)/d));h=E(j/h);d=E(f/d);c=x[a+116>>2];i=x[a+132>>2];a=0;while(1){e=a<<2;l=e|4;B[c+e>>2]=E(B[i+l>>2]*d)+k;B[c+l>>2]=E(E(E(1)-B[e+i>>2])*h)+g;a=a+2|0;if((b|0)>(a|0)){continue}break}break b}if((b|0)<=0){break b}g=B[a+84>>2];h=E(g/E(B[a+188>>2]-f));n=f;f=B[a+92>>2];g=E(n-E(E(E(f-B[a+76>>2])-g)/h));j=E(B[a+88>>2]/E(B[a+192>>2]-d));k=E(B[a+96>>2]/j);f=E(f/h);d=E(d-E(B[a+80>>2]/j));c=x[a+116>>2];i=x[a+132>>2];a=0;while(1){e=a<<2;B[e+c>>2]=E(E(E(1)-B[e+i>>2])*f)+g;e=e|4;B[e+c>>2]=E(E(E(1)-B[e+i>>2])*k)+d;a=a+2|0;if((b|0)>(a|0)){continue}break}break b}if((b|0)<=0){break b}h=E(B[a+88>>2]/E(B[a+192>>2]-d));g=E(B[a+92>>2]/h);j=E(B[a+84>>2]/E(B[a+188>>2]-f));k=E(B[a+96>>2]/j);d=E(d-E(B[a+76>>2]/h));f=E(f-E(B[a+80>>2]/j));c=x[a+116>>2];i=x[a+132>>2];a=0;while(1){e=a<<2;l=e|4;B[c+e>>2]=E(E(E(1)-B[i+l>>2])*k)+f;B[c+l>>2]=E(B[e+i>>2]*g)+d;a=a+2|0;if((b|0)>(a|0)){continue}break}break b}if((b|0)<=0){break b}g=B[a+88>>2];h=E(g/E(B[a+192>>2]-d));j=B[a+96>>2];d=E(d-E(E(E(j-B[a+80>>2])-g)/h));h=E(j/h);j=E(B[a+84>>2]/E(B[a+188>>2]-f));g=E(B[a+92>>2]/j);f=E(f-E(B[a+76>>2]/j));e=(b-1>>>1|0)+1|0;l=e&1;c=x[a+116>>2];a=x[a+132>>2];i=0;if(b>>>0>=3){o=e&-2;e=0;while(1){b=i<<2;B[b+c>>2]=E(B[a+b>>2]*g)+f;m=b|4;B[m+c>>2]=E(B[a+m>>2]*h)+d;m=b|8;B[m+c>>2]=E(B[a+m>>2]*g)+f;b=b|12;B[b+c>>2]=E(B[a+b>>2]*h)+d;i=i+4|0;e=e+2|0;if((o|0)!=(e|0)){continue}break}}if(!l){break b}b=i<<2;B[b+c>>2]=E(B[a+b>>2]*g)+f;b=b|4;B[b+c>>2]=E(B[a+b>>2]*h)+d;}}function Vs(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=E(c);d=E(d);e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;a:{if(!((h|0)!=1|g)){x[b+44>>2]=0;e=x[b+28>>2];if(e>>>0>A[b+48>>2]){x[b+48>>2]=e;a=x[b+52>>2];g=Da();k=b,l=sa[x[x[g>>2]+16>>2]](g,a,e<<2,7693,94)|0,x[k+52>>2]=l;e=x[b+28>>2];}if(!e){break a}g=x[b+44>>2];a=0;while(1){h=x[b+36>>2]+(a<<2)|0;b:{if(x[b+48>>2]==(g|0)){h=x[h>>2];c=E(E(g>>>0)*E(1.75));c:{if(E(F(c))>>0<=8?8:g;x[b+48>>2]=g;i=x[b+52>>2];j=Da();i=sa[x[x[j>>2]+16>>2]](j,i,g<<2,7693,106)|0;x[b+52>>2]=i;g=x[b+44>>2];x[i+(g<<2)>>2]=h;break b}x[x[b+52>>2]+(g<<2)>>2]=x[h>>2];}g=g+1|0;x[b+44>>2]=g;a=a+1|0;if((e|0)!=(a|0)){continue}break}break a}e=x[a+16>>2];if(B[e>>2]>d){if(g>>>0>1){break a}x[b+44>>2]=0;e=x[b+28>>2];if(e>>>0>A[b+48>>2]){x[b+48>>2]=e;a=x[b+52>>2];g=Da();k=b,l=sa[x[x[g>>2]+16>>2]](g,a,e<<2,7693,94)|0,x[k+52>>2]=l;e=x[b+28>>2];}if(!e){break a}g=x[b+44>>2];a=0;while(1){h=x[b+36>>2]+(a<<2)|0;d:{if(x[b+48>>2]==(g|0)){h=x[h>>2];c=E(E(g>>>0)*E(1.75));e:{if(E(F(c))>>0<=8?8:g;x[b+48>>2]=g;i=x[b+52>>2];j=Da();i=sa[x[x[j>>2]+16>>2]](j,i,g<<2,7693,106)|0;x[b+52>>2]=i;g=x[b+44>>2];x[i+(g<<2)>>2]=h;break d}x[x[b+52>>2]+(g<<2)>>2]=x[h>>2];}g=g+1|0;x[b+44>>2]=g;a=a+1|0;if((e|0)!=(a|0)){continue}break}break a}g=x[a+8>>2]-1|0;if(!(B[e+(g<<2)>>2]<=d)){g=Vf(a+4|0,d)-1|0;}a=x[a+32>>2]+(g<<4)|0;h=x[a+4>>2];if(h){g=0;if((h|0)!=1){j=h&-2;e=0;while(1){i=g<<2;x[i+x[b+52>>2]>>2]=x[x[b+36>>2]+(x[i+x[a+12>>2]>>2]<<2)>>2];i=i|4;x[i+x[b+52>>2]>>2]=x[x[b+36>>2]+(x[i+x[a+12>>2]>>2]<<2)>>2];g=g+2|0;e=e+2|0;if((j|0)!=(e|0)){continue}break}}if(!(h&1)){break a}e=g<<2;x[e+x[b+52>>2]>>2]=x[x[b+36>>2]+(x[e+x[a+12>>2]>>2]<<2)>>2];return}g=0;x[b+44>>2]=0;h=x[b+28>>2];if(!h){break a}a=0;while(1){e=x[b+36>>2]+(a<<2)|0;f:{if(x[b+48>>2]==(g|0)){i=x[e>>2];c=E(E(g>>>0)*E(1.75));g:{if(E(F(c))>>0<=8?8:e;x[b+48>>2]=e;g=x[b+52>>2];j=Da();e=sa[x[x[j>>2]+16>>2]](j,g,e<<2,7693,106)|0;x[b+52>>2]=e;g=x[b+44>>2];x[e+(g<<2)>>2]=i;break f}x[x[b+52>>2]+(g<<2)>>2]=x[e>>2];}g=g+1|0;x[b+44>>2]=g;a=a+1|0;if((h|0)!=(a|0)){continue}break}}}function bc(a,b,c){var d=0,e=0,f=0,g=0;g=x[a>>2];a:{if((g|0)==(b|0)){g=0;break a}d=g;b:{while(1){if(y[d|0]==10){break b}d=d+1|0;x[a>>2]=d;if((b|0)!=(d|0)){continue}break}d=b;}f=y[g|0];c:{if(!((f|0)==32|f-9>>>0<5)){e=g;break c}while(1){if(d>>>0<=g>>>0){e=g;break c}f=y[g+1|0];e=g+1|0;g=e;if((f|0)==32|f-9>>>0<5){continue}break}}g=d;d:{if((d|0)==(e|0)){break d}f=d;while(1){g=f;f=f-1|0;if(f>>>0>>0){break d}if(y[f|0]==13){continue}break}}if((b|0)==(d|0)){break a}x[a>>2]=d+1;}while(1){if((e|0)==(g|0)){return 0}a=y[e|0];d=e+1|0;e=d;if((a|0)!=58){continue}break}x[c>>2]=d;f=d;e:{while(1){a=f;if((a|0)==(g|0)){a=0;break e}f=a+1|0;if(y[a|0]!=44){continue}break}e=a-1|0;x[c+4>>2]=e;a=y[d|0];f:{if(!((a|0)==32|a-9>>>0<5)){b=d;break f}while(1){if(d>>>0>=e>>>0){b=d;break f}b=d+1|0;x[c>>2]=b;a=y[d+1|0];d=b;if((a|0)==32|a-9>>>0<5){continue}break}}if((b|0)!=(e|0)){while(1){g:{a=e;e=e-1|0;x[c+4>>2]=e;if(b>>>0>e>>>0){break g}if(y[e|0]==13){continue}}break}x[c+4>>2]=a;}x[c+8>>2]=f;a=1;b=f;while(1){d=b;if((d|0)==(g|0)){d=f;break e}b=d+1|0;if(y[d|0]!=44){continue}break}e=d-1|0;x[c+12>>2]=e;a=y[f|0];h:{if(!((a|0)==32|a-9>>>0<5)){d=f;break h}while(1){if(e>>>0<=f>>>0){d=f;break h}d=f+1|0;x[c+8>>2]=d;a=y[f+1|0];f=d;if((a|0)==32|a-9>>>0<5){continue}break}}if((d|0)!=(e|0)){while(1){i:{a=e;e=e-1|0;x[c+12>>2]=e;if(d>>>0>e>>>0){break i}if(y[e|0]==13){continue}}break}x[c+12>>2]=a;}x[c+16>>2]=b;d=b;while(1){a=d;if((d|0)==(g|0)){a=2;d=b;break e}d=a+1|0;if(y[a|0]!=44){continue}break}e=a-1|0;x[c+20>>2]=e;a=y[b|0];j:{if(!((a|0)==32|a-9>>>0<5)){f=b;break j}while(1){if(b>>>0>=e>>>0){f=b;break j}f=b+1|0;x[c+16>>2]=f;a=y[b+1|0];b=f;if((a|0)==32|a-9>>>0<5){continue}break}}a=3;if((e|0)==(f|0)){break e}while(1){k:{b=e;e=e-1|0;x[c+20>>2]=e;if(e>>>0>>0){break k}if(y[e|0]==13){continue}}break}x[c+20>>2]=b;}c=(a<<3)+c|0;x[c+4>>2]=g;x[c>>2]=d;b=y[d|0];l:{if(!((b|0)==32|b-9>>>0<5)){e=d;break l}while(1){if(d>>>0>=g>>>0){e=d;break l}e=d+1|0;x[c>>2]=e;b=y[d+1|0];d=e;if((b|0)==32|b-9>>>0<5){continue}break}}if((e|0)!=(g|0)){while(1){m:{b=g;g=b-1|0;x[c+4>>2]=g;if(e>>>0>g>>>0){break m}if(y[g|0]==13){continue}}break}x[c+4>>2]=b;}return a+1|0}function jl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=qa-16|0;qa=h;e=x[c>>2];d=v[c+11|0];x[h+4>>2]=1080;c=(d|0)<0?e:c;a:{if(!c){d=0;break a}f=Ga(c);e=Da();g=f+1|0;d=sa[x[x[e>>2]+12>>2]](e,g,8064,57)|0;Fa(d,c,g);}x[h+12>>2]=d;x[h+8>>2]=f;b:{if(A[a+24>>2]<=b>>>0){break b}c=x[a+32>>2]+(b<<4)|0;d=x[c+4>>2];if(!d){break b}e=x[c+12>>2];c=0;c:{f=x[h+12>>2];if(!f){while(1){if(!x[(e+D(c,20)|0)+12>>2]){break c}c=c+1|0;if((d|0)!=(c|0)){continue}break b}}i=x[h+8>>2];while(1){j=e+D(c,20)|0;g=x[j+12>>2];if((g|0)==(f|0)){break c}if(!(!g|(i|0)!=x[j+8>>2])){if(!Oa(g,f)){break c}}c=c+1|0;if((d|0)!=(c|0)){continue}break}break b}if((c|0)<0){break b}e=x[(e+D(c,20)|0)+16>>2];d:{if(!e){break d}x[e+16>>2]=x[e+16>>2]-1;if(x[e+16>>2]){break d}sa[x[x[e>>2]+4>>2]](e);}e=qa-32|0;qa=e;b=x[a+32>>2]+(b<<4)|0;d=x[b+4>>2]-1|0;x[b+4>>2]=d;if(c>>>0>>0){while(1){f=x[b+12>>2];d=D(c,20);a=f+d|0;g=x[a>>2];x[e+16>>2]=1080;x[e+12>>2]=g;e:{if(!x[a+12>>2]){x[e+20>>2]=0;x[e+24>>2]=0;break e}x[e+20>>2]=x[a+8>>2];f=x[a+8>>2];g=Da();f=sa[x[x[g>>2]+12>>2]](g,f+1|0,8064,71)|0;x[e+24>>2]=f;Fa(f,x[a+12>>2],x[a+8>>2]+1|0);f=x[b+12>>2];}x[e+28>>2]=x[a+16>>2];a=d+f|0;x[a>>2]=x[a+20>>2];d=x[a+12>>2];if(d){g=Da();sa[x[x[g>>2]+20>>2]](g,d,8064,122);}d=f;c=c+1|0;f=D(c,20);d=d+f|0;f:{if(!x[d+12>>2]){x[a+8>>2]=0;x[a+12>>2]=0;break f}g=x[d+8>>2];x[a+8>>2]=g;i=Da();g=sa[x[x[i>>2]+12>>2]](i,g+1|0,8064,129)|0;x[a+12>>2]=g;Fa(g,x[d+12>>2],x[d+8>>2]+1|0);}x[a+16>>2]=x[d+16>>2];a=f+x[b+12>>2]|0;x[a>>2]=x[e+12>>2];g:{if((a|0)==(e+12|0)){break g}d=x[a+12>>2];if(d){f=Da();sa[x[x[f>>2]+20>>2]](f,d,8064,122);}if(!x[e+24>>2]){x[a+8>>2]=0;x[a+12>>2]=0;break g}x[a+8>>2]=x[e+20>>2];d=x[e+20>>2];f=Da();d=sa[x[x[f>>2]+12>>2]](f,d+1|0,8064,129)|0;x[a+12>>2]=d;Fa(d,x[e+24>>2],x[e+20>>2]+1|0);}x[a+16>>2]=x[e+28>>2];x[e+16>>2]=1080;a=x[e+24>>2];if(a){d=Da();sa[x[x[d>>2]+20>>2]](d,a,8064,201);}d=x[b+4>>2];if(d>>>0>c>>>0){continue}break}}a=x[b+12>>2]+D(d,20)|0;x[a+4>>2]=1080;a=x[a+12>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}qa=e+32|0;}x[h+4>>2]=1080;a=x[h+12>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}qa=h+16|0;}function pd(a,b,c,d,e,f,g){var h=0,i=E(0),j=E(0),k=0,l=0,m=0,n=0,o=E(0),p=E(0),q=E(0),r=0,s=0,t=0,u=0,v=0,w=0,y=E(0),z=E(0),A=E(0);r=D(d>>>1|0,g)+f|0;u=x[x[b+8>>2]+8>>2];m=b+68|0;a:{if(x[a+24>>2]){b:{if(!c){d=0;b=0;break b}k=(c-1>>>1|0)+1|0;n=k&3;h=x[a+32>>2];b=0;d=0;if(c>>>0>=7){t=k&-4;c=0;while(1){v=x[h+(b<<2)>>2];k=(v+b|0)+1|0;b=x[h+(k<<2)>>2];s=(b+k|0)+1|0;k=x[h+(s<<2)>>2];s=(k+s|0)+1|0;w=x[h+(s<<2)>>2];d=w+(k+(b+(d+v|0)|0)|0)|0;b=(s+w|0)+1|0;c=c+4|0;if((t|0)!=(c|0)){continue}break}}if(!n){break b}while(1){c=x[h+(b<<2)>>2];d=c+d|0;b=(b+c|0)+1|0;l=l+1|0;if((n|0)!=(l|0)){continue}break}}h=u+8|0;if(!x[m+4>>2]){if(f>>>0>=r>>>0){break a}c=D(d,3);m=x[a+48>>2];l=x[a+32>>2];n=x[h+12>>2];while(1){d=b+1|0;a=x[l+(b<<2)>>2];c:{if((a|0)<=0){i=E(0);j=E(0);b=d;break c}a=a+d|0;b=b+2|0;b=(a|0)>(b|0)?a:b;j=E(0);i=E(0);while(1){a=x[n+(x[l+(d<<2)>>2]<<2)>>2];h=m+(c<<2)|0;o=B[h>>2];p=B[h+4>>2];q=B[h+8>>2];j=E(E(E(B[a+112>>2]+E(E(o*B[a+104>>2])+E(p*B[a+108>>2])))*q)+j);i=E(E(E(B[a+100>>2]+E(E(o*B[a+92>>2])+E(p*B[a+96>>2])))*q)+i);c=c+3|0;d=d+1|0;if((d|0)!=(b|0)){continue}break}}a=(f<<2)+e|0;B[a>>2]=i;B[a+4>>2]=j;f=f+g|0;if(r>>>0>f>>>0){continue}break}break a}if(f>>>0>=r>>>0){break a}c=D(d,3);l=d<<1;k=x[a+48>>2];n=x[a+32>>2];m=x[m+12>>2];u=x[h+12>>2];while(1){d=b+1|0;a=x[n+(b<<2)>>2];d:{if((a|0)<=0){i=E(0);b=d;j=E(0);break d}a=a+d|0;b=b+2|0;b=(a|0)>(b|0)?a:b;j=E(0);i=E(0);while(1){a=x[u+(x[n+(d<<2)>>2]<<2)>>2];h=k+(c<<2)|0;t=m+(l<<2)|0;o=E(B[h>>2]+B[t>>2]);p=E(B[h+4>>2]+B[t+4>>2]);q=B[h+8>>2];j=E(E(E(B[a+112>>2]+E(E(o*B[a+104>>2])+E(p*B[a+108>>2])))*q)+j);i=E(E(E(B[a+100>>2]+E(E(o*B[a+92>>2])+E(p*B[a+96>>2])))*q)+i);l=l+2|0;c=c+3|0;d=d+1|0;if((d|0)!=(b|0)){continue}break}}a=(f<<2)+e|0;B[a>>2]=i;B[a+4>>2]=j;f=f+g|0;if(r>>>0>f>>>0){continue}break}break a}if(f>>>0>=r>>>0){break a}b=x[b+8>>2];i=B[b+108>>2];j=B[b+104>>2];o=B[b+96>>2];p=B[b+92>>2];q=B[b+112>>2];A=B[b+100>>2];a=x[(x[m+4>>2]?m:a+36|0)+12>>2];while(1){b=(f<<2)+e|0;d=a+(c<<2)|0;y=B[d>>2];z=B[d+4>>2];B[b+4>>2]=q+E(E(y*j)+E(i*z));B[b>>2]=A+E(E(y*p)+E(o*z));c=c+2|0;f=f+g|0;if(r>>>0>f>>>0){continue}break}}}function Tm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=qa-80|0;qa=l;d=x[a+4>>2];b=(d>>1)+b|0;a=x[a>>2];a=d&1?x[x[b>>2]+a>>2]:a;d=l+12|0;x[d+4>>2]=17604;x[d>>2]=17500;x[d+8>>2]=x[c+8>>2];e=x[c+12>>2];x[d+16>>2]=0;x[d+12>>2]=e;a:{if(!e){break a}g=Da();m=d,n=sa[x[x[g>>2]+12>>2]](g,e<<2,7693,197)|0,x[m+16>>2]=n;j=x[d+8>>2];if(!j){break a}g=0;e=0;if(j>>>0>=4){k=j&-4;while(1){f=e<<2;x[f+x[d+16>>2]>>2]=x[f+x[c+16>>2]>>2];i=f|4;x[i+x[d+16>>2]>>2]=x[i+x[c+16>>2]>>2];i=f|8;x[i+x[d+16>>2]>>2]=x[i+x[c+16>>2]>>2];f=f|12;x[f+x[d+16>>2]>>2]=x[f+x[c+16>>2]>>2];e=e+4|0;h=h+4|0;if((k|0)!=(h|0)){continue}break}}h=j&3;if(!h){break a}while(1){f=e<<2;x[f+x[d+16>>2]>>2]=x[f+x[c+16>>2]>>2];e=e+1|0;g=g+1|0;if((h|0)!=(g|0)){continue}break}}x[d+20>>2]=17664;x[d+24>>2]=x[c+24>>2];e=x[c+28>>2];x[d+32>>2]=0;x[d+28>>2]=e;b:{if(!e){break b}g=Da();m=d,n=sa[x[x[g>>2]+12>>2]](g,e<<2,7693,197)|0,x[m+32>>2]=n;j=x[d+24>>2];if(!j){break b}g=0;e=0;if(j>>>0>=4){k=j&-4;h=0;while(1){f=e<<2;x[f+x[d+32>>2]>>2]=x[f+x[c+32>>2]>>2];i=f|4;x[i+x[d+32>>2]>>2]=x[i+x[c+32>>2]>>2];i=f|8;x[i+x[d+32>>2]>>2]=x[i+x[c+32>>2]>>2];f=f|12;x[f+x[d+32>>2]>>2]=x[f+x[c+32>>2]>>2];e=e+4|0;h=h+4|0;if((k|0)!=(h|0)){continue}break}}h=j&3;if(!h){break b}while(1){f=e<<2;x[f+x[d+32>>2]>>2]=x[f+x[c+32>>2]>>2];e=e+1|0;g=g+1|0;if((h|0)!=(g|0)){continue}break}}x[d+36>>2]=17604;x[d+40>>2]=x[c+40>>2];e=x[c+44>>2];x[d+48>>2]=0;x[d+44>>2]=e;c:{if(!e){break c}g=Da();m=d,n=sa[x[x[g>>2]+12>>2]](g,e<<2,7693,197)|0,x[m+48>>2]=n;j=x[d+40>>2];if(!j){break c}g=0;e=0;if(j>>>0>=4){k=j&-4;h=0;while(1){f=e<<2;x[f+x[d+48>>2]>>2]=x[f+x[c+48>>2]>>2];i=f|4;x[i+x[d+48>>2]>>2]=x[i+x[c+48>>2]>>2];i=f|8;x[i+x[d+48>>2]>>2]=x[i+x[c+48>>2]>>2];f=f|12;x[f+x[d+48>>2]>>2]=x[f+x[c+48>>2]>>2];e=e+4|0;h=h+4|0;if((k|0)!=(h|0)){continue}break}}h=j&3;if(!h){break c}while(1){f=e<<2;x[f+x[d+48>>2]>>2]=x[f+x[c+48>>2]>>2];e=e+1|0;g=g+1|0;if((h|0)!=(g|0)){continue}break}}e=x[c+56>>2];x[d+52>>2]=x[c+52>>2];x[d+56>>2]=e;e=x[c+64>>2];x[d+60>>2]=x[c+60>>2];x[d+64>>2]=e;a=sa[a|0](b,d)|0;De(d);qa=l+80|0;return a|0}function oi(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;j=qa-128|0;qa=j;a:{b:{c:{if(!sc(f,g,h,i,0,0,0,0)){break c}l=i&65535;n=i>>>16&32767;d:{e:{if((n|0)!=32767){k=4;if(n){break e}k=f|h|(g|l)?3:2;break d}k=!(f|h|(g|l));}}s=e>>>16|0;o=s&32767;if((o|0)==32767){break c}if(k){break b}}_a(j+16|0,b,c,d,e,f,g,h,i);b=x[j+16>>2];d=x[j+20>>2];e=x[j+24>>2];c=x[j+28>>2];li(j,b,d,e,c,b,d,e,c);d=x[j+8>>2];e=x[j+12>>2];h=x[j>>2];i=x[j+4>>2];break a}k=d;p=e&2147483647;n=h;m=i&2147483647;if((sc(b,c,k,p,f,g,h,m)|0)<=0){if(sc(b,c,k,p,f,g,n,m)){h=b;i=c;break a}_a(j+112|0,b,c,d,e,0,0,0,0);d=x[j+120>>2];e=x[j+124>>2];h=x[j+112>>2];i=x[j+116>>2];break a}q=i>>>16&32767;if(o){i=c;h=b;}else {_a(j+96|0,b,c,k,p,0,0,0,1081540608);k=x[j+104>>2];h=x[j+108>>2];p=h;o=(h>>>16|0)-120|0;i=x[j+100>>2];h=x[j+96>>2];}if(!q){_a(j+80|0,f,g,n,m,0,0,0,1081540608);n=x[j+88>>2];f=x[j+92>>2];m=f;q=(f>>>16|0)-120|0;g=x[j+84>>2];f=x[j+80>>2];}r=n;t=m&65535|65536;p=p&65535|65536;if((o|0)>(q|0)){while(1){m=k-r|0;l=(g|0)==(i|0)&f>>>0>h>>>0|g>>>0>i>>>0;n=m-l|0;l=(p-((k>>>0>>0)+t|0)|0)-(l>>>0>m>>>0)|0;f:{if((l|0)>0|(l|0)>=0){k=h;h=h-f|0;i=i-((f>>>0>k>>>0)+g|0)|0;if(!(h|n|(i|l))){_a(j+32|0,b,c,d,e,0,0,0,0);d=x[j+40>>2];e=x[j+44>>2];h=x[j+32>>2];i=x[j+36>>2];break a}l=l<<1|n>>>31;k=n<<1|i>>>31;break f}l=p<<1|k>>>31;k=k<<1|i>>>31;}p=l;l=i<<1|h>>>31;h=h<<1;i=l;o=o-1|0;if((o|0)>(q|0)){continue}break}o=q;}m=k-r|0;l=(g|0)==(i|0)&f>>>0>h>>>0|g>>>0>i>>>0;n=m-l|0;l=(p-((k>>>0>>0)+t|0)|0)-(l>>>0>m>>>0)|0;m=l;g:{if((l|0)<0){n=k;m=p;break g}k=h;h=h-f|0;i=i-((f>>>0>k>>>0)+g|0)|0;if(h|n|(i|m)){break g}_a(j+48|0,b,c,d,e,0,0,0,0);d=x[j+56>>2];e=x[j+60>>2];h=x[j+48>>2];i=x[j+52>>2];break a}if((m|0)==65535|m>>>0<65535){while(1){b=i>>>31|0;o=o-1|0;p=i<<1|h>>>31;h=h<<1;i=p;c=b;b=m<<1|n>>>31;n=c|n<<1;m=b;if(b>>>0<65536){continue}break}}b=s&32768;if((o|0)<=0){_a(j- -64|0,h,i,n,m&65535|(b|o+120)<<16,0,0,0,1065811968);d=x[j+72>>2];e=x[j+76>>2];h=x[j+64>>2];i=x[j+68>>2];break a}d=n;e=m&65535|(b|o)<<16;}x[a>>2]=h;x[a+4>>2]=i;x[a+8>>2]=d;x[a+12>>2]=e;qa=j+128|0;}function qi(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,k=0,m=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;p=qa-16|0;qa=p;o(+a);c=j(1)|0;e=j(0)|0;h=c>>>20|0;q=h&2047;m=q-1086|0;a:{if(m>>>0<=4294967167){g=(c<<1|e>>>31)+2097152|0;if(!(e<<1)&(g|0)==2097152|g>>>0<2097152){g=c<<1|e>>>31;e=e<<1;d=1;if(!(g|e)){break a}d=a+10;if((g|0)==-2097152&(e|0)!=0|g>>>0>4292870144){break a}d=(c|0)<0?0:a*a;break a}if(m>>>0<=4294967167){d=a+1;if(q>>>0<=957){break a}if(h>>>0<2048){c=qa-16|0;C[c+8>>3]=3105036184601418e216;d=C[c+8>>3]*3105036184601418e216;break a}c=qa-16|0;C[c+8>>3]=12882297539194267e-247;d=C[c+8>>3]*12882297539194267e-247;break a}}b=C[5844];d=b*1.25+-1;r=b*0;b=d+r;s=C[5407]*3+C[5846];f=b+s;k=C[5409];i=b*k;k=d*k;t=d*k;d=f+t;k=C[5408]*3+C[5847]+(b+(s-f))+r*(i+k)+(t+(f-d));f=b*i;b=k+b*f*(f*(f*(b*C[5415]+C[5414])+(b*C[5413]+C[5412]))+(b*C[5411]+C[5410]));f=d+b;C[p+8>>3]=b+(d-f);l(0,e&-134217728);l(1,c|0);i=+n();o(+f);c=j(1)|0;l(0,j(0)&-134217728);l(1,c|0);d=+n();b=i*d;f=(a-i)*d+(C[p+8>>3]+(f-d))*a;o(+b);c=j(1)|0;j(0)|0;b:{c:{h=c>>>20&2047;if(h-969>>>0<63){break c}d=b+1;if(h>>>0<969){break b}c=h>>>0<1033;h=0;if(c){break c}o(+b);c=j(1)|0;j(0)|0;if((c|0)<0){c=qa-16|0;C[c+8>>3]=12882297539194267e-247;d=C[c+8>>3]*12882297539194267e-247;break b}c=qa-16|0;C[c+8>>3]=3105036184601418e216;d=C[c+8>>3]*3105036184601418e216;break b}a=C[5138];d=C[5137]*b+a;a=d-a;a=a*C[5140]+(a*C[5139]+b)+f;b=a*a;f=b*b*(a*C[5144]+C[5143]);b=b*(a*C[5142]+C[5141]);o(+d);j(1)|0;g=j(0)|0;e=g<<4&2032;a=f+(b+(C[e+41208>>3]+a));m=0;e=e+41216|0;c=m+x[e>>2]|0;e=x[e+4>>2]+(g<<13)|0;e=c>>>0>>0?e+1|0:e;if(!h){d:{if(!(g&-2147483648)){l(0,c|0);l(1,e-1058013184|0);b=+n();d=(b*a+b)*5486124068793689e288;break d}g=e+1071644672|0;e=g;l(0,c|0);l(1,e|0);b=+n();d=b*a;a=d+b;if(F(a)<1){c=qa-16|0;C[c+8>>3]=22250738585072014e-324;C[c+8>>3]=C[c+8>>3]*22250738585072014e-324;l(0,0);l(1,e&-2147483648);f=a<0?-1:1;i=a+f;a=i+(d+(b-a)+(a+(f-i)))-f;a=(u=+n(),v=a,w=a==0,w?u:v);}d=a*22250738585072014e-324;}break b}l(0,c|0);l(1,e|0);b=+n();d=b*a+b;}}b=d;qa=p+16|0;return b}function ic(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=E(0);if(!y[a+28|0]){v[a+28|0]=1;a:{if(!x[a+8>>2]){break a}e=x[a+20>>2];while(1){c=x[a+16>>2]+(h<<4)|0;d=x[c+8>>2];b:{c:{d:{e:{f:{b=x[c+4>>2];switch(b|0){case 5:break c;case 3:break d;case 2:break e;case 0:case 1:case 4:break f;default:break b}}f=x[d+168>>2];g:{if(!f){sa[x[d+164>>2]](e,b,d,0);break g}sa[x[x[f>>2]+8>>2]](f,e,b,d,0);}b=x[e+96>>2];if(!b){sa[x[e+92>>2]](e,x[c+4>>2],d,0);break b}sa[x[x[b>>2]+8>>2]](b,e,x[c+4>>2],d,0);break b}b=x[d+168>>2];h:{if(!b){sa[x[d+164>>2]](e,2,d,0);break h}sa[x[x[b>>2]+8>>2]](b,e,2,d,0);}b=x[e+96>>2];if(!b){sa[x[e+92>>2]](e,x[c+4>>2],d,0);break d}sa[x[x[b>>2]+8>>2]](b,e,x[c+4>>2],d,0);}c=x[d+168>>2];i:{if(!c){sa[x[d+164>>2]](e,3,d,0);break i}sa[x[x[c>>2]+8>>2]](c,e,3,d,0);}c=x[e+96>>2];j:{if(!c){sa[x[e+92>>2]](e,3,d,0);break j}sa[x[x[c>>2]+8>>2]](c,e,3,d,0);}x[d+16>>2]=0;x[d+20>>2]=0;x[d+24>>2]=0;x[d+28>>2]=0;c=x[d+12>>2];k:{if(!c){break k}b=x[d+8>>2];if(!b){break k}sa[c|0](b);}x[d+168>>2]=0;x[d+164>>2]=11;x[d+8>>2]=0;x[d+12>>2]=0;x[d+152>>2]=0;x[d+136>>2]=0;x[d+120>>2]=0;c=x[a+24>>2];f=x[c+8>>2];l:{if(!f){break l}b=0;g=x[c+16>>2];if((d|0)==x[g>>2]){break b}while(1){b=b+1|0;if((f|0)==(b|0)){break l}if((d|0)!=x[g+(b<<2)>>2]){continue}break}if(b>>>0>>0){break b}}m:{if(x[c+12>>2]==(f|0)){i=E(E(f>>>0)*E(1.75));n:{if(E(F(i))>>0<=8?8:b;x[c+12>>2]=b;f=x[c+16>>2];g=Da();b=sa[x[x[g>>2]+16>>2]](g,f,b<<2,7693,106)|0;x[c+16>>2]=b;f=x[c+8>>2];b=b+(f<<2)|0;break m}b=x[c+16>>2]+(f<<2)|0;}x[b>>2]=d;x[c+8>>2]=f+1;break b}b=x[d+168>>2];o:{if(!b){sa[x[d+164>>2]](e,5,d,x[c+12>>2]);break o}sa[x[x[b>>2]+8>>2]](b,e,5,d,x[c+12>>2]);}b=x[e+96>>2];if(!b){sa[x[e+92>>2]](e,x[c+4>>2],d,x[c+12>>2]);break b}sa[x[x[b>>2]+8>>2]](b,e,x[c+4>>2],d,x[c+12>>2]);}c=x[a+8>>2];h=h+1|0;if(c>>>0>h>>>0){continue}break}if(!c){break a}b=0;while(1){c=x[a+16>>2]+((b^-1)+c<<4)|0;sa[x[x[c>>2]>>2]](c)|0;c=x[a+8>>2];b=b+1|0;if(c>>>0>b>>>0){continue}break}}v[a+28|0]=0;x[a+8>>2]=0;}}function hg(a,b,c,d){var e=0,f=E(0),g=0,h=E(0),i=E(0),j=0,k=0,l=E(0),m=0,n=0,o=0,p=0,q=E(0),r=E(0),s=E(0),t=0,u=E(0),v=0,w=0,z=0,C=0;e=x[b+24>>2];if(x[e+24>>2]){hg(a,e,c,d);}f=B[b+100>>2];a:{if(f==E(0)){i=E(1);j=(d|0)!=1?d:0;break a}f=E(B[b+96>>2]/f);i=f>E(1)?E(1):f;j=1;if((d|0)==1){break a}j=x[e+112>>2];}d=a+56|0;g=B[e+40>>2]>i;h=B[e+52>>2];q=B[e+60>>2];r=B[e+48>>2];s=B[e+44>>2];b:{if(y[e+36|0]){f=E(B[e+56>>2]-h);if(f==E(0)){break b}h=E(Sb(B[e+72>>2],f)+B[e+52>>2]);break b}f=E(h+B[e+72>>2]);l=B[e+56>>2];h=f>2]*B[b+104>>2]);u=E(E(E(1)-i)*l);p=x[e+16>>2];n=x[p+8>>2];c:{if((j|0)==3){if(!n){break c}d=0;while(1){j=x[x[p+16>>2]+(d<<2)>>2];sa[x[x[j>>2]+12>>2]](j,c,q,h,t,u,3,1);d=d+1|0;if((n|0)!=(d|0)){continue}break}break c}v=x[e+152>>2];d:{if(v){break d}d=n<<1;x[e+152>>2]=d;if(A[e+156>>2]>>0){f=E(E(d>>>0)*E(1.75));e:{if(E(F(f))>>0<=8?8:d;x[e+156>>2]=d;g=x[e+160>>2];k=Da();z=e,C=sa[x[x[k>>2]+16>>2]](k,g,d<<2,7693,82)|0,x[z+160>>2]=C;d=x[e+152>>2];}if(!d){break d}Ha(x[e+160>>2],0,d<<2);}k=0;x[e+108>>2]=0;if(!n){break c}w=e+148|0;while(1){o=k<<2;g=x[o+x[p+16>>2]>>2];d=0;f=u;f:{g:{h:{switch(x[x[e+128>>2]+o>>2]&3){case 0:d=j;i:{if(i>2]+8>>2]](g)|0,54028)){break i}d=0;if(y[x[e+128>>2]+o|0]&4){break f}}if(i>2]+8>>2]](g)|0,54128)){break g}break f;case 2:f=l;break g;case 1:break g;default:break h}}m=x[x[e+144>>2]+o>>2];f=E(E(1)-E(B[m+96>>2]/B[m+100>>2]));f=E(l*(f>2]=f+B[e+108>>2];if(pb(sa[x[x[g>>2]+8>>2]](g)|0,54280)){gg(g,c,h,f,d,w,k<<1,!v);break f}m=1;j:{if(d){break j}if(pb(sa[x[x[g>>2]+8>>2]](g)|0,54028)){if(!(i>2]+o|0]&4)){break j}m=0;break j}m=!(i>2]+8>>2]](g)|0,54128)^1;}sa[x[x[g>>2]+12>>2]](g,c,q,h,t,f,d,m);}k=k+1|0;if((n|0)!=(k|0)){continue}break}}if(B[b+100>>2]>E(0)){fg(a,e,h);}x[a+60>>2]=0;B[e+64>>2]=h;B[e+80>>2]=B[e+72>>2];return i}function Gw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=x[a+4>>2];d=x[a>>2];e=(f-d|0)/12|0;if(e>>>0>>0){d=c;f=a;e=b-e|0;g=x[a+8>>2];c=x[a+4>>2];a:{if(e>>>0<=(g-c|0)/12>>>0){if(e){a=D(e,12)+c|0;while(1){b:{if(v[d+11|0]>=0){b=x[d+4>>2];x[c>>2]=x[d>>2];x[c+4>>2]=b;x[c+8>>2]=x[d+8>>2];break b}dd(c,x[d>>2],x[d+4>>2]);}c=c+12|0;if((a|0)!=(c|0)){continue}break}c=a;}x[f+4>>2]=c;break a}c:{d:{e:{b=x[f>>2];h=(c-b|0)/12|0;a=h+e|0;if(a>>>0<357913942){b=(g-b|0)/12|0;g=b<<1;a=b>>>0>=178956970?357913941:a>>>0>>0?g:a;if(a){if(a>>>0>=357913942){break e}i=Ea(D(a,12));}b=D(h,12)+i|0;g=b+D(e,12)|0;h=D(a,12);f:{g:{a=v[d+11|0];if((a|0)<0){c=b;break g}a=b;j=D(e,12)-12|0;k=((j>>>0)/12|0)+1&3;if(k){e=0;while(1){l=x[d+4>>2];x[a>>2]=x[d>>2];x[a+4>>2]=l;x[a+8>>2]=x[d+8>>2];a=a+12|0;e=e+1|0;if((k|0)!=(e|0)){continue}break}}if(j>>>0<36){break f}while(1){e=x[d+4>>2];x[a>>2]=x[d>>2];x[a+4>>2]=e;x[a+8>>2]=x[d+8>>2];x[a+20>>2]=x[d+8>>2];e=x[d+4>>2];x[a+12>>2]=x[d>>2];x[a+16>>2]=e;x[a+32>>2]=x[d+8>>2];e=x[d+4>>2];x[a+24>>2]=x[d>>2];x[a+28>>2]=e;e=x[d+4>>2];x[a+36>>2]=x[d>>2];x[a+40>>2]=e;x[a+44>>2]=x[d+8>>2];a=a+48|0;if((g|0)!=(a|0)){continue}break}break f}while(1){h:{if(a<<24>>24>=0){a=x[d+4>>2];x[c>>2]=x[d>>2];x[c+4>>2]=a;x[c+8>>2]=x[d+8>>2];break h}dd(c,x[d>>2],x[d+4>>2]);}c=c+12|0;if((g|0)!=(c|0)){a=y[d+11|0];continue}break}c=x[f+4>>2];}a=h+i|0;d=x[f>>2];if((d|0)==(c|0)){break d}while(1){c=c-12|0;e=x[c+4>>2];b=b-12|0;x[b>>2]=x[c>>2];x[b+4>>2]=e;x[b+8>>2]=x[c+8>>2];x[c>>2]=0;x[c+4>>2]=0;x[c+8>>2]=0;if((c|0)!=(d|0)){continue}break}x[f+8>>2]=a;a=x[f+4>>2];x[f+4>>2]=g;c=x[f>>2];x[f>>2]=b;if((a|0)==(c|0)){break c}while(1){b=a-12|0;if(v[a-1|0]<0){Ja(x[b>>2]);}a=b;if((c|0)!=(a|0)){continue}break}break c}O();p();}kb();p();}x[f+8>>2]=a;x[f+4>>2]=g;x[f>>2]=b;}if(c){Ja(c);}}return}if(b>>>0>>0){c=d+D(b,12)|0;if((c|0)!=(f|0)){while(1){b=f-12|0;if(v[f-1|0]<0){Ja(x[b>>2]);}f=b;if((c|0)!=(b|0)){continue}break}}x[a+4>>2]=c;}}function Je(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=E(0);a:{if(!y[x[x[b+24>>2]+8>>2]+117|0]){break a}b:{c:{d:{if(!y[x[b+4>>2]+20|0]){break d}c=x[a+136>>2];if(!c){break a}e=x[c+56>>2];if(!e){break a}f=x[c- -64>>2];c=x[b+4>>2];if(x[f>>2]==(c|0)){break d}while(1){d=d+1|0;if((e|0)!=(d|0)&(c|0)!=x[f+(d<<2)>>2]){continue}break}c=d>>>0>>0;v[b+140|0]=c;if(c){break c}break b}v[b+140|0]=1;}e=x[b+24>>2];g=x[x[e+4>>2]+4>>2];h=x[e+8>>2];c=x[a+136>>2];if(c){Ie(a,c,g,h);c=x[a+136>>2];}else {c=0;}d=x[a+4>>2];f=x[d+64>>2];if(!(!f|(c|0)==(f|0))){Ie(a,f,g,h);d=x[a+4>>2];}c=x[d+52>>2];if(c){d=0;while(1){Ie(a,x[x[x[a+4>>2]+60>>2]+(d<<2)>>2],g,h);d=d+1|0;if((c|0)!=(d|0)){continue}break}}c=x[e+60>>2];e:{if(!c){break e}if(!Fc(sa[x[x[c>>2]+8>>2]](c)|0,54196)){break e}if(!Fc(sa[x[x[c>>2]+8>>2]](c)|0,54196)){break e}e=c+20|0;f=x[e+4>>2];if(f){d=0;while(1){c=d<<2;d=d+1|0;c=d+x[c+x[e+12>>2]>>2]|0;if(c>>>0>d>>>0){while(1){Pb(a,x[x[a+20>>2]+(x[x[e+12>>2]+(d<<2)>>2]<<2)>>2]);d=d+1|0;if((c|0)!=(d|0)){continue}break}d=c;}if(d>>>0>>0){continue}break}break e}Pb(a,h);}e=b+8|0;g=x[e+4>>2];if(g){d=0;while(1){Pb(a,x[x[e+12>>2]+(d<<2)>>2]);d=d+1|0;if((g|0)!=(d|0)){continue}break}}d=x[a+108>>2];f:{if((d|0)==x[a+112>>2]){i=E(E(d>>>0)*E(1.75));g:{if(E(F(i))>>0<=8?8:c;x[a+112>>2]=f;d=x[a+116>>2];c=Da();c=sa[x[x[c>>2]+16>>2]](c,d,f<<2,7693,106)|0;x[a+116>>2]=c;d=x[a+108>>2];c=c+(d<<2)|0;break f}c=x[a+116>>2]+(d<<2)|0;}x[c>>2]=b;x[a+108>>2]=d+1;if(!g){break b}a=0;while(1){yd(x[x[e+12>>2]+(a<<2)>>2]+16|0);a=a+1|0;if((g|0)!=(a|0)){continue}break}if(!g){break b}e=x[e+12>>2];c=0;a=0;if(g>>>0>=4){b=g&-4;d=0;while(1){f=a<<2;v[x[f+e>>2]+116|0]=1;v[x[e+(f|4)>>2]+116|0]=1;v[x[e+(f|8)>>2]+116|0]=1;v[x[e+(f|12)>>2]+116|0]=1;a=a+4|0;d=d+4|0;if((b|0)!=(d|0)){continue}break}}b=g&3;if(!b){break b}while(1){v[x[e+(a<<2)>>2]+116|0]=1;a=a+1|0;c=c+1|0;if((b|0)!=(c|0)){continue}break}}return}v[b+140|0]=0;}function ak(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0;f=qa-16|0;qa=f;x[f>>2]=15252;x[f+4>>2]=x[(b+20|0)+4>>2];c=x[b+28>>2];x[f+12>>2]=0;x[f+8>>2]=c;a:{if(!c){break a}d=Da();q=f,r=sa[x[x[d>>2]+12>>2]](d,c<<4,7693,197)|0,x[q+12>>2]=r;if(!x[f+4>>2]){break a}while(1){d=x[b+32>>2];g=j<<4;c=g+x[f+12>>2]|0;x[c>>2]=13184;g=d+g|0;x[c+4>>2]=x[g+4>>2];d=x[g+8>>2];x[c+12>>2]=0;x[c+8>>2]=d;b:{if(!d){break b}h=Da();d=sa[x[x[h>>2]+12>>2]](h,d<<2,7693,197)|0;x[c+12>>2]=d;i=x[c+4>>2];if(!i){break b}g=x[g+12>>2];h=0;c=0;if(i>>>0>=4){m=i&-4;k=0;while(1){e=c<<2;x[e+d>>2]=x[g+e>>2];l=e|4;x[l+d>>2]=x[g+l>>2];l=e|8;x[l+d>>2]=x[g+l>>2];e=e|12;x[e+d>>2]=x[g+e>>2];c=c+4|0;k=k+4|0;if((m|0)!=(k|0)){continue}break}}e=i&3;if(!e){break b}while(1){i=c<<2;x[i+d>>2]=x[g+i>>2];c=c+1|0;h=h+1|0;if((e|0)!=(h|0)){continue}break}}j=j+1|0;if(j>>>0>2]){continue}break}}g=x[f+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;c:{d:{if(!g){x[f>>2]=15252;break d}if(g>>>0>=357913942){break c}b=D(g,12);c=Ea(b);x[a>>2]=c;x[a+8>>2]=b+c;b=b-12|0;b=(b-((b>>>0)%12|0)|0)+12|0;i=Ha(c,0,b);x[a+4>>2]=b+i;while(1){b=0;j=0;a=x[f+12>>2]+(o<<4)|0;c=x[a+4>>2];if(c){if(c>>>0>=1073741824){break c}d=x[a+12>>2];k=0;m=c<<2;j=Ea(m);b=Ha(j,0,m);a=0;if(c>>>0>=4){l=c&-4;h=0;while(1){e=a<<2;x[e+b>>2]=x[d+e>>2];n=e|4;x[n+b>>2]=x[d+n>>2];n=e|8;x[n+b>>2]=x[d+n>>2];e=e|12;x[e+b>>2]=x[d+e>>2];a=a+4|0;h=h+4|0;if((l|0)!=(h|0)){continue}break}}c=c&3;if(c){while(1){h=a<<2;x[h+b>>2]=x[d+h>>2];a=a+1|0;k=k+1|0;if((c|0)!=(k|0)){continue}break}}b=b+m|0;}a=i+D(o,12)|0;c=x[a>>2];if(c){x[a+4>>2]=c;Ja(c);}x[a>>2]=j;x[a+8>>2]=b;x[a+4>>2]=b;o=o+1|0;if((g|0)!=(o|0)){continue}break}x[f>>2]=15252;b=x[f+4>>2];if(!b){break d}a=0;while(1){b=x[f+12>>2]+((a^-1)+b<<4)|0;sa[x[x[b>>2]>>2]](b)|0;a=a+1|0;b=x[f+4>>2];if(a>>>0>>0){continue}break}}x[f+4>>2]=0;a=x[f+12>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,7693,206);}qa=f+16|0;return}O();p();}function Hf(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=E(0),k=0,l=0,m=0;f=qa-16|0;qa=f;x[a>>2]=19280;e=a;x[e+24>>2]=14468;x[e+8>>2]=13296;x[e+4>>2]=0;x[e>>2]=14396;x[e+36>>2]=0;x[e+28>>2]=0;x[e+32>>2]=0;x[e+20>>2]=0;x[e+12>>2]=0;x[e+16>>2]=0;if(b){x[e+16>>2]=b;a=Da();l=e,m=sa[x[x[a>>2]+16>>2]](a,0,b<<2,7693,94)|0,x[l+20>>2]=m;a=x[e+32>>2];}else {a=0;}if(a>>>0>>0){x[e+32>>2]=b;a=x[e+36>>2];d=Da();l=e,m=sa[x[x[d>>2]+16>>2]](d,a,D(b,12),7693,94)|0,x[l+36>>2]=m;}d=x[e+12>>2];x[e+12>>2]=b;a=b;if(a>>>0>A[e+16>>2]){j=E(E(b>>>0)*E(1.75));a:{if(E(F(j))>>0<=8?8:a;x[e+16>>2]=a;g=x[e+20>>2];c=Da();l=e,m=sa[x[x[c>>2]+16>>2]](c,g,a<<2,7693,82)|0,x[l+20>>2]=m;a=x[e+12>>2];}if(a>>>0>d>>>0){Ha(x[e+20>>2]+(d<<2)|0,0,a-d<<2);}if((b|0)>0){a=0;while(1){x[f+8>>2]=0;x[f+12>>2]=0;x[f+4>>2]=1080;d=0;i=0;g=qa-16|0;qa=g;c=x[e+28>>2];b:{if((c|0)==x[e+32>>2]){x[g+4>>2]=1080;if(x[f+12>>2]){d=x[f+8>>2];c=Da();i=sa[x[x[c>>2]+12>>2]](c,d+1|0,8064,71)|0;Fa(i,x[f+12>>2],x[f+8>>2]+1|0);c=x[e+28>>2];}x[g+12>>2]=i;x[g+8>>2]=d;j=E(E(c>>>0)*E(1.75));c:{if(E(F(j))>>0<=8?8:c;x[e+32>>2]=c;h=x[e+36>>2];k=Da();c=sa[x[x[k>>2]+16>>2]](k,h,D(c,12),7693,106)|0;x[e+36>>2]=c;h=x[e+28>>2];x[e+28>>2]=h+1;c=c+D(h,12)|0;x[c>>2]=1080;d:{if(!i){x[c+4>>2]=0;x[c+8>>2]=0;d=x[g+12>>2];break d}x[c+4>>2]=d;d=x[g+8>>2];h=c;c=Da();i=d+1|0;d=sa[x[x[c>>2]+12>>2]](c,i,8064,71)|0;x[h+8>>2]=d;c=d;d=x[g+12>>2];Fa(c,d,i);}x[g+4>>2]=1080;if(d){c=Da();sa[x[x[c>>2]+20>>2]](c,d,8064,201);}break b}x[e+28>>2]=c+1;d=x[e+36>>2]+D(c,12)|0;x[d>>2]=1080;if(!x[f+12>>2]){x[d+4>>2]=0;x[d+8>>2]=0;break b}x[d+4>>2]=x[f+8>>2];c=x[f+8>>2];h=d;d=Da();d=sa[x[x[d>>2]+12>>2]](d,c+1|0,8064,71)|0;x[h+8>>2]=d;Fa(d,x[f+12>>2],x[f+8>>2]+1|0);}qa=g+16|0;x[f+4>>2]=1080;d=x[f+12>>2];if(d){g=Da();sa[x[x[g>>2]+20>>2]](g,d,8064,201);}a=a+1|0;if((b|0)!=(a|0)){continue}break}}qa=f+16|0;return e}function Ec(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=E(0);a:{if(!y[x[b+24>>2]+117|0]){break a}b:{c:{d:{if(!y[x[b+4>>2]+20|0]){break d}c=x[a+136>>2];if(!c){break a}e=x[c+56>>2];if(!e){break a}f=x[b+4>>2];d=x[c- -64>>2];if((f|0)==x[d>>2]){break d}c=0;while(1){c=c+1|0;if((e|0)!=(c|0)&(f|0)!=x[d+(c<<2)>>2]){continue}break}c=c>>>0>>0;v[b+44|0]=c;if(c){break c}break b}v[b+44|0]=1;}Pb(a,x[b+24>>2]);f=b+8|0;e=x[f+4>>2];e:{if(!y[x[b+4>>2]+85|0]){if(!e){break e}c=0;while(1){Pb(a,x[x[f+12>>2]+(c<<2)>>2]);c=c+1|0;if((e|0)!=(c|0)){continue}break}break e}if(!e){break e}d=0;while(1){h=x[x[f+12>>2]+(d<<2)>>2];Pb(a,x[h+12>>2]);g=x[a+108>>2];f:{if(g){c=0;i=x[a+116>>2];if((h|0)==x[i>>2]){break f}while(1){c=c+1|0;if((g|0)!=(c|0)&(h|0)!=x[i+(c<<2)>>2]){continue}break}if(c>>>0>>0){break f}}c=x[a+124>>2];g:{if((c|0)==x[a+128>>2]){j=E(E(c>>>0)*E(1.75));h:{if(E(F(j))>>0<=8?8:c;x[a+128>>2]=c;g=x[a+132>>2];i=Da();g=sa[x[x[i>>2]+16>>2]](i,g,c<<2,7693,106)|0;x[a+132>>2]=g;c=x[a+124>>2];g=g+(c<<2)|0;break g}g=x[a+132>>2]+(c<<2)|0;}x[g>>2]=h;x[a+124>>2]=c+1;}d=d+1|0;if((e|0)!=(d|0)){continue}break}}c=x[a+108>>2];i:{if((c|0)==x[a+112>>2]){j=E(E(c>>>0)*E(1.75));j:{if(E(F(j))>>0<=8?8:c;x[a+112>>2]=c;d=x[a+116>>2];h=Da();d=sa[x[x[h>>2]+16>>2]](h,d,c<<2,7693,106)|0;x[a+116>>2]=d;c=x[a+108>>2];d=d+(c<<2)|0;break i}d=x[a+116>>2]+(c<<2)|0;}x[d>>2]=b;x[a+108>>2]=c+1;if(!e){break b}c=0;while(1){yd(x[x[f+12>>2]+(c<<2)>>2]+16|0);c=c+1|0;if((e|0)!=(c|0)){continue}break}if(!e){break b}b=x[f+12>>2];a=0;c=0;if(e>>>0>=4){h=e&-4;d=0;while(1){f=c<<2;v[x[f+b>>2]+116|0]=1;v[x[b+(f|4)>>2]+116|0]=1;v[x[b+(f|8)>>2]+116|0]=1;v[x[b+(f|12)>>2]+116|0]=1;c=c+4|0;d=d+4|0;if((h|0)!=(d|0)){continue}break}}e=e&3;if(!e){break b}while(1){v[x[b+(c<<2)>>2]+116|0]=1;c=c+1|0;a=a+1|0;if((e|0)!=(a|0)){continue}break}}return}v[b+44|0]=0;}function Tf(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if(!a){return Mb(b)}if(b>>>0>=4294967232){x[13623]=48;return 0}f=b>>>0<11?16:b+11&-8;e=a-8|0;i=x[e+4>>2];d=i&-8;a:{if(!(i&3)){if(f>>>0<256){break a}if(d>>>0>=f+4>>>0){c=e;if(d-f>>>0<=x[13744]<<1>>>0){break a}}c=0;break a}g=d+e|0;b:{if(d>>>0>=f>>>0){c=d-f|0;if(c>>>0<16){break b}x[e+4>>2]=i&1|f|2;d=e+f|0;x[d+4>>2]=c|3;x[g+4>>2]=x[g+4>>2]|1;ni(d,c);break b}if(x[13630]==(g|0)){d=d+x[13627]|0;if(d>>>0<=f>>>0){break a}x[e+4>>2]=i&1|f|2;c=e+f|0;d=d-f|0;x[c+4>>2]=d|1;x[13627]=d;x[13630]=c;break b}if(x[13629]==(g|0)){d=d+x[13626]|0;if(d>>>0>>0){break a}c=d-f|0;c:{if(c>>>0>=16){x[e+4>>2]=i&1|f|2;h=e+f|0;x[h+4>>2]=c|1;d=d+e|0;x[d>>2]=c;x[d+4>>2]=x[d+4>>2]&-2;break c}x[e+4>>2]=d|i&1|2;c=d+e|0;x[c+4>>2]=x[c+4>>2]|1;c=0;}x[13629]=h;x[13626]=c;break b}h=x[g+4>>2];if(h&2){break a}j=d+(h&-8)|0;if(j>>>0>>0){break a}l=j-f|0;d:{if(h>>>0<=255){c=x[g+12>>2];d=x[g+8>>2];if((c|0)==(d|0)){n=54496,o=x[13624]&Ww(h>>>3|0),x[n>>2]=o;break d}x[d+12>>2]=c;x[c+8>>2]=d;break d}k=x[g+24>>2];d=x[g+12>>2];e:{if((g|0)!=(d|0)){c=x[g+8>>2];x[c+12>>2]=d;x[d+8>>2]=c;break e}f:{c=g+20|0;h=x[c>>2];if(!h){h=x[g+16>>2];if(!h){break f}c=g+16|0;}while(1){m=c;d=h;c=d+20|0;h=x[c>>2];if(h){continue}c=d+16|0;h=x[d+16>>2];if(h){continue}break}x[m>>2]=0;break e}d=0;}if(!k){break d}c=x[g+28>>2];h=(c<<2)+54800|0;g:{if(x[h>>2]==(g|0)){x[h>>2]=d;if(d){break g}n=54500,o=x[13625]&Ww(c),x[n>>2]=o;break d}x[(x[k+16>>2]==(g|0)?16:20)+k>>2]=d;if(!d){break d}}x[d+24>>2]=k;c=x[g+16>>2];if(c){x[d+16>>2]=c;x[c+24>>2]=d;}c=x[g+20>>2];if(!c){break d}x[d+20>>2]=c;x[c+24>>2]=d;}if(l>>>0<=15){x[e+4>>2]=i&1|j|2;c=e+j|0;x[c+4>>2]=x[c+4>>2]|1;break b}x[e+4>>2]=i&1|f|2;c=e+f|0;x[c+4>>2]=l|3;d=e+j|0;x[d+4>>2]=x[d+4>>2]|1;ni(c,l);}c=e;}if(c){return c+8|0}c=Mb(b);if(!c){return 0}e=x[a-4>>2];e=(e&3?-4:-8)+(e&-8)|0;Fa(c,a,b>>>0>e>>>0?e:b);Ja(a);return c}function ds(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=E(c);d=E(d);e=e|0;f=E(f);g=g|0;h=h|0;var i=0,j=E(0),k=E(0);a:{b:{c:{b=x[x[b+68>>2]+(x[a+36>>2]<<2)>>2];d:{if(!(sa[x[x[b>>2]+16>>2]](b)|0)){break d}e=x[a+32>>2];if(B[e>>2]>d){e:{switch(g|0){case 0:a=x[b+4>>2];B[b+32>>2]=B[a+52>>2];B[b+36>>2]=B[a+56>>2];break c;case 1:break e;default:break d}}a=x[b+4>>2];c=B[b+32>>2];B[b+32>>2]=E(E(B[a+52>>2]-c)*f)+c;c=B[b+36>>2];B[b+36>>2]=E(E(B[a+56>>2]-c)*f)+c;break c}i=x[a+24>>2];if(B[(e+(i<<2)|0)-24>>2]<=d){if(!g){a=e+(i<<2)|0;e=x[b+4>>2];c=B[e+52>>2];B[b+32>>2]=E(E(B[a-20>>2]-c)*f)+c;c=B[e+56>>2];B[b+36>>2]=E(E(B[a-16>>2]-c)*f)+c;if((h|0)==1){break b}break a}a=e+(i<<2)|0;c=B[b+32>>2];B[b+32>>2]=E(E(B[a-20>>2]-c)*f)+c;c=B[b+36>>2];B[b+36>>2]=E(E(B[a-16>>2]-c)*f)+c;if(h){break d}break a}e=Nb(a+20|0,d,6);i=x[a+32>>2]+(e<<2)|0;c=B[i-16>>2];j=B[i-20>>2];k=d;d=B[i>>2];d=Kb(a,((e|0)/6|0)-1|0,E(E(1)-E(E(k-d)/E(B[i-24>>2]-d))));if(!g){i=x[a+32>>2];g=i+(e<<2)|0;k=E(E(E(B[g+4>>2]-j)*d)+j);e=x[b+4>>2];j=B[e+52>>2];B[b+32>>2]=E(E(k-j)*f)+j;d=E(E(E(B[g+8>>2]-c)*d)+c);c=B[e+56>>2];B[b+36>>2]=E(E(d-c)*f)+c;if((h|0)==1){break b}c=B[(i+(x[a+24>>2]<<2)|0)-12>>2];f:{if(E(F(c))>2]=a;v[b+28|0]=B[g-8>>2]!=E(0);v[b+29|0]=B[g-4>>2]!=E(0);return}a=x[a+32>>2]+(e<<2)|0;k=E(E(E(B[a+4>>2]-j)*d)+j);j=B[b+32>>2];B[b+32>>2]=E(E(k-j)*f)+j;d=E(E(E(B[a+8>>2]-c)*d)+c);c=B[b+36>>2];B[b+36>>2]=E(E(d-c)*f)+c;if(h){break d}c=B[a-12>>2];g:{if(E(F(c))>2]=e;v[b+28|0]=B[a-8>>2]!=E(0);v[b+29|0]=B[a-4>>2]!=E(0);}return}x[b+24>>2]=x[a+44>>2];v[b+28|0]=y[a+48|0];v[b+29|0]=y[a+49|0];return}x[b+24>>2]=x[e+44>>2];v[b+28|0]=y[e+48|0];v[b+29|0]=y[e+49|0];return}c=B[a-12>>2];h:{if(E(F(c))>2]=e;v[b+28|0]=B[a-8>>2]!=E(0);v[b+29|0]=B[a-4>>2]!=E(0);}function Lh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;x[a>>2]=13848;a:{if(!x[a+36>>2]){break a}f=x[a+8>>2];if(!f){break a}if((f|0)!=1){j=f&-2;while(1){g=x[a+36>>2];c=b<<2;sa[x[x[g>>2]+12>>2]](g,x[x[c+x[a+16>>2]>>2]+8>>2]);g=x[a+36>>2];sa[x[x[g>>2]+12>>2]](g,x[x[x[a+16>>2]+(c|4)>>2]+8>>2]);b=b+2|0;d=d+2|0;if((j|0)!=(d|0)){continue}break}}if(!(f&1)){break a}d=x[a+36>>2];sa[x[x[d>>2]+12>>2]](d,x[x[x[a+16>>2]+(b<<2)>>2]+8>>2]);}g=x[a+8>>2];if((g|0)>0){l=g+1|0;f=g;d=f;while(1){j=d;d=d-1|0;e=d<<2;b=x[e+x[a+16>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);f=x[a+8>>2];}c=f;f=c-1|0;x[a+8>>2]=f;b:{if(d>>>0>=f>>>0){break b}b=d;if(c+(k-g|0)&1){b=x[a+16>>2];e=b+e|0;i=x[e>>2];h=b;b=j<<2;x[e>>2]=x[h+b>>2];x[b+x[a+16>>2]>>2]=i;b=j;}if((c|0)==(l-k|0)){break b}while(1){c=x[a+16>>2];e=b<<2;i=c+e|0;m=x[i>>2];h=c;c=e+4|0;x[i>>2]=x[h+c>>2];x[c+x[a+16>>2]>>2]=m;h=c;c=x[a+16>>2];e=h+c|0;i=x[e>>2];h=c;b=b+2|0;c=b<<2;x[e>>2]=x[h+c>>2];x[c+x[a+16>>2]>>2]=i;if((b|0)!=(f|0)){continue}break}}k=k+1|0;if((j|0)>1){continue}break}}g=x[a+24>>2];if((g|0)>0){l=g+1|0;k=0;f=g;d=f;while(1){j=d;d=d-1|0;e=d<<2;b=x[e+x[a+32>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);f=x[a+24>>2];}c=f;f=c-1|0;x[a+24>>2]=f;c:{if(d>>>0>=f>>>0){break c}b=d;if(c+(k-g|0)&1){b=x[a+32>>2];e=b+e|0;i=x[e>>2];h=b;b=j<<2;x[e>>2]=x[h+b>>2];x[b+x[a+32>>2]>>2]=i;b=j;}if((c|0)==(l-k|0)){break c}while(1){c=x[a+32>>2];e=b<<2;i=c+e|0;m=x[i>>2];h=c;c=e+4|0;x[i>>2]=x[h+c>>2];x[c+x[a+32>>2]>>2]=m;h=c;c=x[a+32>>2];e=h+c|0;i=x[e>>2];h=c;b=b+2|0;c=b<<2;x[e>>2]=x[h+c>>2];x[c+x[a+32>>2]>>2]=i;if((b|0)!=(f|0)){continue}break}}k=k+1|0;if((j|0)>1){continue}break}}x[a+24>>2]=0;x[a+20>>2]=14092;b=x[a+32>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,7693,206);}x[a+8>>2]=0;x[a+4>>2]=14028;b=x[a+16>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,7693,206);}return a|0}function ml(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;f=qa-32|0;qa=f;x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;x[f+24>>2]=0;x[f+28>>2]=0;x[f+20>>2]=b+20;a:{b=x[f+24>>2];e=x[f+20>>2];d=x[e+4>>2];b:{if(b>>>0>=d>>>0){break b}while(1){g=x[f+28>>2];h=x[e+12>>2];if(g>>>0>=A[(h+(b<<4)|0)+4>>2]){b=b+1|0;if((d|0)==(b|0)){break b}if(!x[(h+(b<<4)|0)+4>>2]){while(1){b=b+1|0;if((d|0)==(b|0)){break b}if(!x[(h+(b<<4)|0)+4>>2]){continue}break}}x[f+24>>2]=b;g=0;if(b>>>0>=d>>>0){break b}}d=x[(h+(b<<4)|0)+12>>2];x[f+28>>2]=g+1;d=d+D(g,20)|0;if(x[d>>2]==(c|0)){b=x[d+8>>2];if(b>>>0>=2147483632){break a}e=x[d+12>>2];c:{if(b>>>0<=10){v[f+19|0]=b;d=f+8|0;break c}g=(b|15)+1|0;d=Ea(g);x[f+16>>2]=g|-2147483648;x[f+8>>2]=d;x[f+12>>2]=b;}j=Fa(d,e,b)+b|0,k=0,v[j|0]=k;b=x[a+4>>2];d:{if(b>>>0>2]){d=x[f+12>>2];x[b>>2]=x[f+8>>2];x[b+4>>2]=d;x[b+8>>2]=x[f+16>>2];x[a+4>>2]=b+12;break d}b=0;e:{f:{g:{e=x[a>>2];g=(x[a+4>>2]-e|0)/12|0;d=g+1|0;if(d>>>0<357913942){e=(x[a+8>>2]-e|0)/12|0;h=e<<1;e=e>>>0>=178956970?357913941:d>>>0>>0?h:d;if(e){if(e>>>0>=357913942){break g}b=Ea(D(e,12));}d=D(g,12)+b|0;g=x[f+12>>2];x[d>>2]=x[f+8>>2];x[d+4>>2]=g;x[d+8>>2]=x[f+16>>2];x[f+8>>2]=0;x[f+12>>2]=0;x[f+16>>2]=0;b=D(e,12)+b|0;g=d+12|0;e=x[a+4>>2];h=x[a>>2];if((e|0)==(h|0)){break f}while(1){e=e-12|0;i=x[e+4>>2];d=d-12|0;x[d>>2]=x[e>>2];x[d+4>>2]=i;x[d+8>>2]=x[e+8>>2];x[e>>2]=0;x[e+4>>2]=0;x[e+8>>2]=0;if((e|0)!=(h|0)){continue}break}x[a+8>>2]=b;b=x[a+4>>2];x[a+4>>2]=g;e=x[a>>2];x[a>>2]=d;if((b|0)==(e|0)){break e}while(1){d=b-12|0;if(v[b-1|0]<0){Ja(x[d>>2]);}b=d;if((e|0)!=(b|0)){continue}break}break e}O();p();}kb();p();}x[a+8>>2]=b;x[a+4>>2]=g;x[a>>2]=d;}if(e){Ja(e);}if(v[f+19|0]>=0){break d}Ja(x[f+8>>2]);}e=x[f+20>>2];b=x[f+24>>2];}d=x[e+4>>2];if(d>>>0>b>>>0){continue}break}}qa=f+32|0;return}O();p();}function zs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=x[b+8>>2];a=0;f=qa-16|0;qa=f;a:{b:{if(!Kc(10369,v[10366])){x[13623]=28;break b}b=2;if(!Kc(10366,43)){b=y[10366]!=114;}b=Kc(10366,120)?b|128:b;b=Kc(10366,101)?b|524288:b;d=b;g=b|64;b=y[10366];d=(b|0)==114?d:g;d=(b|0)==119?d|512:d;x[f>>2]=438;x[f+4>>2]=0;b=ia(-100,e|0,((b|0)==97?d|1024:d)|32768,f|0)|0;if(b>>>0>=4294963201){x[13623]=0-b;b=-1;}if((b|0)<0){break a}d=qa-32|0;qa=d;c:{d:{e:{if(!Kc(10369,v[10366])){x[13623]=28;break e}a=Mb(1176);if(a){break d}}a=0;break c}Ha(a,0,144);if(!Kc(10366,43)){x[a>>2]=y[10366]==114?8:4;}f:{if(y[10366]!=97){e=x[a>>2];break f}e=$(b|0,3,0)|0;if(!(e&1024)){e=e|1024;x[d+16>>2]=e;x[d+20>>2]=e>>31;$(b|0,4,d+16|0)|0;}e=x[a>>2]|128;x[a>>2]=e;}x[a+80>>2]=-1;x[a+48>>2]=1024;x[a+60>>2]=b;x[a+44>>2]=a+152;g:{if(e&8){break g}x[d>>2]=d+24;x[d+4>>2]=0;if(ha(b|0,21523,d|0)|0){break g}x[a+80>>2]=10;}x[a+40>>2]=2060;x[a+36>>2]=2061;x[a+32>>2]=2062;x[a+76>>2]=-1;x[a+12>>2]=2063;e=x[13751];x[a+56>>2]=e;if(e){x[e+52>>2]=a;}x[13751]=a;}qa=d+32|0;if(a){break a}_(b|0)|0;}a=0;}qa=f+16|0;if(!a){return 0}hi(a,2);h:{if(x[a+76>>2]<0){b=gi(a);d=ra;break h}b=gi(a);d=ra;}if((d|0)>=0&b>>>0>=2147483648|(d|0)>0){x[13623]=61;b=-1;}x[c>>2]=b;hi(a,0);d=x[c>>2];b=x[13538];if(!b){b=ri();x[13538]=b;}f=sa[x[x[b>>2]+8>>2]](b,d,5665,119)|0;d=f;b=x[c>>2];c=x[a+72>>2];x[a+72>>2]=c-1|c;c=x[a+4>>2];e=x[a+8>>2];if((c|0)!=(e|0)){g=c;c=e-c|0;c=b>>>0>c>>>0?c:b;Fa(d,g,c);x[a+4>>2]=c+x[a+4>>2];d=c+d|0;b=b-c|0;}if(b){while(1){i:{j:{if(!Pf(a)){c=sa[x[a+32>>2]](a,d,b)|0;if(c){break j}}break i}d=c+d|0;b=b-c|0;if(b){continue}}break}}Td(a);sa[x[a+12>>2]](a)|0;if(!(v[a|0]&1)){b=x[a+52>>2];if(b){x[b+56>>2]=x[a+56>>2];}c=x[a+56>>2];if(c){x[c+52>>2]=b;}if(x[13751]==(a|0)){x[13751]=c;}Ja(x[a+96>>2]);Ja(a);}return f|0}function Lo(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=E(0);d=x[b+40>>2];if(d){c=x[a+40>>2];while(1){f=x[b+48>>2]+(g<<2)|0;a:{if(c){e=0;h=x[f>>2];i=x[a+48>>2];if((h|0)==x[i>>2]){break a}while(1){e=e+1|0;if((e|0)!=(c|0)&(h|0)!=x[i+(e<<2)>>2]){continue}break}if(c>>>0>e>>>0){break a}}b:{if(x[a+44>>2]==(c|0)){e=x[f>>2];j=E(E(c>>>0)*E(1.75));c:{if(E(F(j))>>0<=8?8:c;x[a+44>>2]=c;d=x[a+48>>2];f=Da();d=sa[x[x[f>>2]+16>>2]](f,d,c<<2,7693,106)|0;x[a+48>>2]=d;c=x[a+40>>2];x[d+(c<<2)>>2]=e;break b}x[x[a+48>>2]+(c<<2)>>2]=x[f>>2];}c=c+1|0;x[a+40>>2]=c;d=x[b+40>>2];}g=g+1|0;if(d>>>0>g>>>0){continue}break}}d=x[b+56>>2];if(d){c=x[a+56>>2];g=0;while(1){f=x[b+64>>2]+(g<<2)|0;d:{if(c){e=0;h=x[f>>2];i=x[a+64>>2];if((h|0)==x[i>>2]){break d}while(1){e=e+1|0;if((e|0)!=(c|0)&(h|0)!=x[i+(e<<2)>>2]){continue}break}if(c>>>0>e>>>0){break d}}e:{if(x[a+60>>2]==(c|0)){e=x[f>>2];j=E(E(c>>>0)*E(1.75));f:{if(E(F(j))>>0<=8?8:c;x[a+60>>2]=c;d=x[a+64>>2];f=Da();d=sa[x[x[f>>2]+16>>2]](f,d,c<<2,7693,106)|0;x[a+64>>2]=d;c=x[a+56>>2];x[d+(c<<2)>>2]=e;break e}x[x[a+64>>2]+(c<<2)>>2]=x[f>>2];}c=c+1|0;x[a+56>>2]=c;d=x[b+56>>2];}g=g+1|0;if(d>>>0>g>>>0){continue}break}}c=x[b+24>>2];g:{if(!c){break g}g=a+16|0;a=0;e=0;while(1){d=x[b+32>>2];if(A[(d+(e<<4)|0)+4>>2]<=a>>>0){e=e+1|0;if((e|0)==(c|0)){break g}if(!x[(d+(e<<4)|0)+4>>2]){while(1){e=e+1|0;if((e|0)==(c|0)){break g}if(!x[(d+(e<<4)|0)+4>>2]){continue}break}}a=0;if(c>>>0<=e>>>0){break g}}c=x[(d+(e<<4)|0)+12>>2]+D(a,20)|0;d=x[c+16>>2];f=pb(sa[x[x[d>>2]+8>>2]](d)|0,54184);d=x[c+16>>2];a=a+1|0;h=x[c>>2];i=c+4|0;h:{if(f){c=We(d);break h}c=sa[x[x[d>>2]+12>>2]](d)|0;}ue(g,h,i,c);c=x[b+24>>2];if(e>>>0>>0){continue}break}}}function Bi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=x[a+4>>2];g=x[a>>2];d=(f-g|0)/12|0;if(d>>>0>>0){d=b-d|0;a:{b:{c:{d:{e:{f=a;g=x[a+8>>2];b=x[a+4>>2];if(d>>>0<=(g-b|0)/12>>>0){if(d){a=D(d,12)+b|0;while(1){x[b+8>>2]=0;x[b>>2]=0;x[b+4>>2]=0;d=x[c+4>>2];e=x[c>>2];if((d|0)!=(e|0)){e=d-e|0;if((e|0)<0){break e}d=Ea(e);x[b+4>>2]=d;x[b>>2]=d;x[b+8>>2]=(e&-4)+d;e=x[c>>2];g=x[c+4>>2];if((e|0)!=(g|0)){while(1){B[d>>2]=B[e>>2];d=d+4|0;e=e+4|0;if((g|0)!=(e|0)){continue}break}}x[b+4>>2]=d;}b=b+12|0;if((a|0)!=(b|0)){continue}break}b=a;}x[f+4>>2]=b;break a}a=b;b=x[f>>2];h=(a-b|0)/12|0;a=h+d|0;if(a>>>0>=357913942){break e}b=(g-b|0)/12|0;g=b<<1;b=b>>>0>=178956970?357913941:a>>>0>>0?g:a;if(b){if(b>>>0>=357913942){break d}e=Ea(D(b,12));}a=D(h,12)+e|0;g=a+D(d,12)|0;h=D(b,12)+e|0;b=a;while(1){x[b+8>>2]=0;x[b>>2]=0;x[b+4>>2]=0;d=x[c+4>>2];e=x[c>>2];if((d|0)!=(e|0)){e=d-e|0;if((e|0)<0){break e}d=Ea(e);x[b+4>>2]=d;x[b>>2]=d;x[b+8>>2]=(e&-4)+d;e=x[c>>2];i=x[c+4>>2];if((e|0)!=(i|0)){while(1){B[d>>2]=B[e>>2];d=d+4|0;e=e+4|0;if((i|0)!=(e|0)){continue}break}}x[b+4>>2]=d;}b=b+12|0;if((g|0)!=(b|0)){continue}break}d=x[f+4>>2];b=x[f>>2];if((d|0)==(b|0)){break c}while(1){a=a-12|0;x[a>>2]=0;x[a+4>>2]=0;x[a+8>>2]=0;d=d-12|0;x[a>>2]=x[d>>2];x[a+4>>2]=x[d+4>>2];x[a+8>>2]=x[d+8>>2];x[d+8>>2]=0;x[d>>2]=0;x[d+4>>2]=0;if((b|0)!=(d|0)){continue}break}x[f+8>>2]=h;b=x[f+4>>2];x[f+4>>2]=g;d=x[f>>2];x[f>>2]=a;if((b|0)==(d|0)){break b}while(1){a=b-12|0;c=x[a>>2];if(c){x[b-8>>2]=c;Ja(c);}b=a;if((d|0)!=(b|0)){continue}break}break b}O();p();}kb();p();}x[f+8>>2]=h;x[f+4>>2]=g;x[f>>2]=a;}if(d){Ja(d);}}return}if(b>>>0>>0){c=g+D(b,12)|0;if((c|0)!=(f|0)){while(1){b=f-12|0;d=x[b>>2];if(d){x[f-8>>2]=d;Ja(d);}f=b;if((b|0)!=(c|0)){continue}break}}x[a+4>>2]=c;}}function ke(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;x[a>>2]=19660;i=x[a+8>>2];if((i|0)>0){l=i+1|0;f=i;d=f;while(1){k=d;d=d-1|0;e=d<<2;b=x[e+x[a+16>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);f=x[a+8>>2];}c=f;f=c-1|0;x[a+8>>2]=f;a:{if(d>>>0>=f>>>0){break a}b=d;if(c+(j-i|0)&1){b=x[a+16>>2];e=b+e|0;h=x[e>>2];g=b;b=k<<2;x[e>>2]=x[g+b>>2];x[b+x[a+16>>2]>>2]=h;b=k;}if((c|0)==(l-j|0)){break a}while(1){c=x[a+16>>2];e=b<<2;h=c+e|0;m=x[h>>2];g=c;c=e+4|0;x[h>>2]=x[g+c>>2];x[c+x[a+16>>2]>>2]=m;g=c;c=x[a+16>>2];e=g+c|0;h=x[e>>2];g=c;b=b+2|0;c=b<<2;x[e>>2]=x[g+c>>2];x[c+x[a+16>>2]>>2]=h;if((b|0)!=(f|0)){continue}break}}j=j+1|0;if((k|0)>1){continue}break}}i=x[a+24>>2];if((i|0)>0){l=i+1|0;j=0;f=i;d=f;while(1){k=d;d=d-1|0;e=d<<2;b=x[e+x[a+32>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);f=x[a+24>>2];}c=f;f=c-1|0;x[a+24>>2]=f;b:{if(d>>>0>=f>>>0){break b}b=d;if(c+(j-i|0)&1){b=x[a+32>>2];e=b+e|0;h=x[e>>2];g=b;b=k<<2;x[e>>2]=x[g+b>>2];x[b+x[a+32>>2]>>2]=h;b=k;}if((c|0)==(l-j|0)){break b}while(1){c=x[a+32>>2];e=b<<2;h=c+e|0;m=x[h>>2];g=c;c=e+4|0;x[h>>2]=x[g+c>>2];x[c+x[a+32>>2]>>2]=m;g=c;c=x[a+32>>2];e=g+c|0;h=x[e>>2];g=c;b=b+2|0;c=b<<2;x[e>>2]=x[g+c>>2];x[c+x[a+32>>2]>>2]=h;if((b|0)!=(f|0)){continue}break}}j=j+1|0;if((k|0)>1){continue}break}}Be(a+104|0);Ce(a+84|0);x[a+72>>2]=0;x[a+68>>2]=13184;d=x[a+80>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,7693,206);}x[a+56>>2]=0;x[a+52>>2]=17908;d=x[a- -64>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,7693,206);}x[a+40>>2]=0;x[a+36>>2]=13184;d=x[a+48>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,7693,206);}x[a+24>>2]=0;x[a+20>>2]=17852;d=x[a+32>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,7693,206);}x[a+8>>2]=0;x[a+4>>2]=17796;d=x[a+16>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,7693,206);}return a|0}function Zg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=x[a+12>>2];if(c){while(1){Gh(x[x[a+20>>2]+(b<<2)>>2]);b=b+1|0;if((c|0)!=(b|0)){continue}break}}f=x[a+60>>2];a:{if(!f){break a}g=x[a+68>>2];b=0;if((f|0)!=1){h=f&-2;c=0;while(1){i=b<<2;d=x[i+g>>2];e=x[d+4>>2];x[d+24>>2]=x[e+44>>2];v[d+28|0]=y[e+48|0];v[d+29|0]=y[e+49|0];B[d+32>>2]=B[e+52>>2];B[d+36>>2]=B[e+56>>2];d=x[g+(i|4)>>2];e=x[d+4>>2];x[d+24>>2]=x[e+44>>2];v[d+28|0]=y[e+48|0];v[d+29|0]=y[e+49|0];B[d+32>>2]=B[e+52>>2];B[d+36>>2]=B[e+56>>2];b=b+2|0;c=c+2|0;if((h|0)!=(c|0)){continue}break}}if(!(f&1)){break a}b=x[g+(b<<2)>>2];c=x[b+4>>2];x[b+24>>2]=x[c+44>>2];v[b+28|0]=y[c+48|0];v[b+29|0]=y[c+49|0];B[b+32>>2]=B[c+52>>2];B[b+36>>2]=B[c+56>>2];}f=x[a+76>>2];b:{if(!f){break b}g=x[a+84>>2];b=0;if((f|0)!=1){h=f&-2;c=0;while(1){i=b<<2;d=x[i+g>>2];e=x[d+4>>2];B[d+28>>2]=B[e+44>>2];B[d+32>>2]=B[e+48>>2];B[d+36>>2]=B[e+52>>2];B[d+40>>2]=B[e+56>>2];d=x[g+(i|4)>>2];e=x[d+4>>2];B[d+28>>2]=B[e+44>>2];B[d+32>>2]=B[e+48>>2];B[d+36>>2]=B[e+52>>2];B[d+40>>2]=B[e+56>>2];b=b+2|0;c=c+2|0;if((h|0)!=(c|0)){continue}break}}if(!(f&1)){break b}b=x[g+(b<<2)>>2];c=x[b+4>>2];B[b+28>>2]=B[c+44>>2];B[b+32>>2]=B[c+48>>2];B[b+36>>2]=B[c+52>>2];B[b+40>>2]=B[c+56>>2];}d=x[a+92>>2];c:{if(!d){break c}e=x[a+100>>2];b=0;if((d|0)!=1){g=d&-2;f=0;while(1){h=b<<2;a=x[h+e>>2];c=x[a+4>>2];B[a+28>>2]=B[c+60>>2];B[a+32>>2]=B[c+64>>2];B[a+36>>2]=B[c+68>>2];B[a+40>>2]=B[c+72>>2];a=x[e+(h|4)>>2];c=x[a+4>>2];B[a+28>>2]=B[c+60>>2];B[a+32>>2]=B[c+64>>2];B[a+36>>2]=B[c+68>>2];B[a+40>>2]=B[c+72>>2];b=b+2|0;f=f+2|0;if((g|0)!=(f|0)){continue}break}}if(!(d&1)){break c}a=x[e+(b<<2)>>2];b=x[a+4>>2];B[a+28>>2]=B[b+60>>2];B[a+32>>2]=B[b+64>>2];B[a+36>>2]=B[b+68>>2];B[a+40>>2]=B[b+72>>2];}}function ng(a,b){a=a|0;b=E(b);var c=0,d=0,e=0,f=0,g=0,h=0,i=E(0),j=E(0),k=0,l=E(0),m=0,n=E(0),o=0;f=qa-32|0;qa=f;m=x[a+44>>2];if(m){b=E(B[a+100>>2]*b);while(1){h=x[a+52>>2]+(k<<2)|0;c=x[h>>2];a:{if(!c){break a}B[c+60>>2]=B[c+64>>2];i=B[c+80>>2];B[c+76>>2]=i;l=B[c+88>>2];j=E(b*l);n=B[c+68>>2];if(n>E(0)){j=E(n-j);B[c+68>>2]=j;if(j>E(0)){break a}x[c+68>>2]=0;j=E(-j);}b:{d=x[c+20>>2];if(d){i=E(i-B[d+68>>2]);if(!(i>=E(0))){break b}x[d+68>>2]=0;B[d+72>>2]=(l!=E(0)?E(E(b+E(i/l))*B[d+88>>2]):E(0))+B[d+72>>2];B[c+72>>2]=j+B[c+72>>2];be(a,k,d,1);c=x[d+24>>2];if(!c){break a}while(1){B[d+96>>2]=b+B[d+96>>2];d=c;c=x[c+24>>2];if(c){continue}break}break a}if(x[c+24>>2]|!(i>=B[c+84>>2])){break b}x[h>>2]=0;Pc(x[a+72>>2],c);d=x[c+20>>2];if(d){while(1){od(x[a+72>>2],d);d=x[d+20>>2];if(d){continue}break}}x[c+20>>2]=0;break a}c:{if(!x[c+24>>2]){break c}if(!lg(a,c,b)){break c}h=x[c+24>>2];x[c+24>>2]=0;if(!h){break c}x[h+28>>2]=0;while(1){d=x[a+72>>2];x[f+12>>2]=0;x[f+8>>2]=h;x[f+4>>2]=2;x[f>>2]=12876;e=x[d+8>>2];d:{if((e|0)==x[d+12>>2]){x[f+16>>2]=12876;x[f+28>>2]=x[f+12>>2];g=x[f+8>>2];x[f+20>>2]=x[f+4>>2];x[f+24>>2]=g;i=E(E(e>>>0)*E(1.75));e:{if(E(F(i))>>0<=8?8:e;x[d+12>>2]=e;g=x[d+16>>2];o=Da();e=sa[x[x[o>>2]+16>>2]](o,g,e<<4,7693,106)|0;x[d+16>>2]=e;g=x[d+8>>2];x[d+8>>2]=g+1;e=e+(g<<4)|0;x[e>>2]=12876;g=x[f+24>>2];x[e+4>>2]=x[f+20>>2];x[e+8>>2]=g;x[e+12>>2]=x[f+28>>2];break d}x[d+8>>2]=e+1;e=x[d+16>>2]+(e<<4)|0;x[e>>2]=12876;g=x[f+8>>2];x[e+4>>2]=x[f+4>>2];x[e+8>>2]=g;x[e+12>>2]=x[f+12>>2];}v[x[d+20>>2]+88|0]=1;h=x[h+24>>2];if(h){continue}break}}B[c+72>>2]=j+B[c+72>>2];}k=k+1|0;if((m|0)!=(k|0)){continue}break}}ic(x[a+72>>2]);qa=f+32|0;}function wi(){x[13500]=54016;x[13499]=3880;x[13498]=16600;x[13503]=0;x[13502]=2562;x[13501]=16600;x[13506]=0;x[13505]=3885;x[13504]=16600;x[13509]=54340;x[13508]=9012;x[13507]=16600;x[13512]=54400;x[13511]=8912;x[13510]=16600;x[13516]=54412;x[13515]=2352;x[13514]=16600;x[13519]=54412;x[13518]=2537;x[13517]=16600;x[13522]=54104;x[13521]=9061;x[13520]=16600;x[13525]=54400;x[13524]=2231;x[13523]=16600;x[13528]=54340;x[13527]=9183;x[13526]=16600;x[13531]=54104;x[13530]=9138;x[13529]=16600;x[13534]=54340;x[13533]=9075;x[13532]=16600;x[13537]=54340;x[13536]=8998;x[13535]=16600;x[13541]=54400;x[13540]=2189;x[13539]=16600;x[13544]=54104;x[13543]=8977;x[13542]=16600;x[13548]=54412;x[13547]=2519;x[13546]=16600;x[13551]=54412;x[13550]=2501;x[13549]=16600;x[13554]=54400;x[13553]=2227;x[13552]=16600;x[13557]=54104;x[13556]=8923;x[13555]=16600;x[13560]=54104;x[13559]=9107;x[13558]=16600;x[13563]=54232;x[13562]=9153;x[13561]=16600;x[13566]=54004;x[13565]=2394;x[13564]=16600;x[13569]=54004;x[13568]=2441;x[13567]=16600;x[13572]=54104;x[13571]=9197;x[13570]=16600;x[13575]=54376;x[13574]=9230;x[13573]=16600;x[13578]=54376;x[13577]=9093;x[13576]=16600;x[13587]=0;x[13586]=9235;x[13585]=16600;x[13590]=54400;x[13589]=2133;x[13588]=16600;x[13593]=54104;x[13592]=8949;x[13591]=16600;x[13596]=54104;x[13595]=9212;x[13594]=16600;x[13599]=54104;x[13598]=9058;x[13597]=16600;x[13602]=0;x[13601]=9488;x[13600]=16600;x[13605]=54004;x[13604]=2374;x[13603]=16600;x[13611]=2043;x[13612]=0;tg();x[13612]=x[13748];x[13748]=54444;x[13613]=2044;x[13614]=0;vi();x[13614]=x[13748];x[13748]=54452;x[13616]=0;x[13617]=0;x[13615]=54464;x[13749]=2059;x[13750]=0;ki();x[13750]=x[13748];x[13748]=54996;}function kj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=E(0);e=qa-32|0;qa=e;d=x[b>>2];f=v[b+11|0];x[e+20>>2]=1080;d=(f|0)<0?d:b;a:{if(!d){b=0;f=0;break a}b=Ga(d);f=Da();h=b+1|0;f=sa[x[x[f>>2]+12>>2]](f,h,8064,57)|0;Fa(f,d,h);}x[e+28>>2]=f;x[e+24>>2]=b;b=x[c>>2];d=v[c+11|0];x[e+8>>2]=1080;b=(d|0)<0?b:c;b:{if(!b){c=0;break b}g=Ga(b);c=Da();d=g+1|0;c=sa[x[x[c>>2]+12>>2]](c,d,8064,57)|0;Fa(c,b,d);}x[e+16>>2]=c;x[e+12>>2]=g;g=e+8|0;c=0;f=qa-16|0;qa=f;i=x[a+28>>2];c:{d:{if(!i){b=x[e+28>>2];break d}while(1){e:{b=x[e+28>>2];d=x[x[a+36>>2]+(c<<2)>>2];j=x[d+4>>2];h=x[j+16>>2];if((b|0)!=(h|0)){if(!b|(!h|x[j+12>>2]!=x[e+24>>2])){break e}if(Oa(h,b)){break e}}b=0;f:{if(!x[g+4>>2]){break f}b=x[a+136>>2];if(b){b=Ob(b,c,g);if(b){break f}}b=0;if(!x[x[a+4>>2]+64>>2]){break f}b=Ob(x[x[a+4>>2]+64>>2],c,g);}if(x[d+60>>2]!=(b|0)){x[d+60>>2]=b;k=B[x[d+12>>2]+160>>2];x[d+72>>2]=0;B[d+64>>2]=k;}break c}c=c+1|0;if((i|0)!=(c|0)){continue}break}}x[f>>2]=b;d=qa-16|0;qa=d;x[d+12>>2]=f;b=0;c=qa-208|0;qa=c;x[c+204>>2]=f;a=c+160|0;Ha(a,0,40);x[c+200>>2]=x[c+204>>2];g:{if(($h(0,c+200|0,c+80|0,a)|0)<0){break g}h=x[13423]>=0;g=x[13404];if(x[13422]<=0){x[13404]=g&-33;}h:{i:{j:{if(!x[13416]){x[13416]=80;x[13411]=0;x[13408]=0;x[13409]=0;b=x[13415];x[13415]=c;break j}if(x[13408]){break i}}if(pi(53616)){break h}}$h(53616,c+200|0,c+80|0,c+160|0);}if(b){sa[x[13413]](53616,0,0)|0;x[13416]=0;x[13415]=b;x[13411]=0;x[13408]=0;x[13409]=0;}x[13404]=x[13404]|g&32;if(!h){break g}}qa=c+208|0;qa=d+16|0;}qa=f+16|0;x[e+8>>2]=1080;a=x[e+16>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}x[e+20>>2]=1080;a=x[e+28>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}qa=e+32|0;}function gg(a,b,c,d,e,f,g,h){var i=E(0),j=0,k=0,l=E(0),m=0,n=E(0);if(h){x[x[f+12>>2]+(g<<2)>>2]=0;}if(d==E(1)){sa[x[x[a>>2]+12>>2]](a,b,E(0),c,0,E(1),e,0);return}j=x[x[b+20>>2]+(x[a+20>>2]<<2)>>2];a:{if(!(sa[x[x[j>>2]+16>>2]](j)|0)){break a}m=x[a+36>>2];b:{if(B[m>>2]>c){c:{switch(e|0){case 0:B[j+40>>2]=B[x[j+4>>2]+36>>2];return;case 1:break c;default:break a}}n=B[j+40>>2];c=B[x[j+4>>2]+36>>2];break b}if(e){b=j+40|0;}else {b=x[j+4>>2]+36|0;}n=B[b>>2];b=m+(x[a+28>>2]<<2)|0;if(B[b-8>>2]<=c){c=E(B[x[j+4>>2]+36>>2]+B[b-4>>2]);break b}e=Nb(a+24|0,c,2);m=e<<2;b=m+x[a+36>>2]|0;l=B[b-4>>2];i=c;c=B[b>>2];c=Kb(a,(e>>1)-1|0,E(E(1)-E(E(i-c)/E(B[b-8>>2]-c))));i=E(B[(x[a+36>>2]+m|0)+4>>2]-l);k=16384.499999999996-+E(i/E(360));d:{if(F(k)<2147483648){a=~~k;break d}a=-2147483648;}c=E(B[x[j+4>>2]+36>>2]+E(E(E(i-E(D(16384-a|0,360)|0))*c)+l));k=16384.499999999996-+E(c/E(360));e:{if(F(k)<2147483648){a=~~k;break e}a=-2147483648;}c=E(c-E(D(16384-a|0,360)|0));}c=E(c-n);k=+E(c/E(-360))+16384.499999999996;f:{if(F(k)<2147483648){a=~~k;break f}a=-2147483648;}i=E(0);l=E(c-E(D(16384-a|0,360)|0));g:{if(l==E(0)){a=x[f+12>>2];c=B[a+(g<<2)>>2];break g}c=l;if(!h){a=x[f+12>>2]+(g<<2)|0;i=B[a>>2];c=B[a+4>>2];}a=i>=E(0);e=cE(0);if(!((e?E(-1):c>E(0)?E(1):E(0))==(lE(180)?E(E((iE(0)?E(1):E(0))*E(360))+i):i;a=b;}c=E(E(l+i)-Sb(i,E(360)));c=(a|0)!=(b|0)?E(E((iE(0)?E(1):E(0))*E(360))+c):c;a=x[f+12>>2];B[a+(g<<2)>>2]=c;}B[((g<<2)+a|0)+4>>2]=l;c=E(E(c*d)+n);k=+E(c/E(-360))+16384.499999999996;h:{if(F(k)<2147483648){a=~~k;break h}a=-2147483648;}B[j+40>>2]=c-E(D(16384-a|0,360)|0);}}function Mo(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=E(0);e=x[b+40>>2];if(e){c=x[a+40>>2];while(1){g=x[b+48>>2]+(f<<2)|0;a:{if(c){d=0;h=x[g>>2];i=x[a+48>>2];if((h|0)==x[i>>2]){break a}while(1){d=d+1|0;if((c|0)!=(d|0)&(h|0)!=x[i+(d<<2)>>2]){continue}break}if(c>>>0>d>>>0){break a}}b:{if(x[a+44>>2]==(c|0)){d=x[g>>2];j=E(E(c>>>0)*E(1.75));c:{if(E(F(j))>>0<=8?8:c;x[a+44>>2]=c;e=x[a+48>>2];g=Da();e=sa[x[x[g>>2]+16>>2]](g,e,c<<2,7693,106)|0;x[a+48>>2]=e;c=x[a+40>>2];x[e+(c<<2)>>2]=d;break b}x[x[a+48>>2]+(c<<2)>>2]=x[g>>2];}c=c+1|0;x[a+40>>2]=c;e=x[b+40>>2];}f=f+1|0;if(f>>>0>>0){continue}break}}e=x[b+56>>2];if(e){c=x[a+56>>2];f=0;while(1){g=x[b+64>>2]+(f<<2)|0;d:{if(c){d=0;h=x[g>>2];i=x[a+64>>2];if((h|0)==x[i>>2]){break d}while(1){d=d+1|0;if((c|0)!=(d|0)&(h|0)!=x[i+(d<<2)>>2]){continue}break}if(c>>>0>d>>>0){break d}}e:{if(x[a+60>>2]==(c|0)){d=x[g>>2];j=E(E(c>>>0)*E(1.75));f:{if(E(F(j))>>0<=8?8:c;x[a+60>>2]=c;e=x[a+64>>2];g=Da();e=sa[x[x[g>>2]+16>>2]](g,e,c<<2,7693,106)|0;x[a+64>>2]=e;c=x[a+56>>2];x[e+(c<<2)>>2]=d;break e}x[x[a+64>>2]+(c<<2)>>2]=x[g>>2];}c=c+1|0;x[a+56>>2]=c;e=x[b+56>>2];}f=f+1|0;if(f>>>0>>0){continue}break}}c=x[b+24>>2];g:{if(!c){break g}e=a+16|0;a=0;d=0;while(1){f=x[b+32>>2];if(A[(f+(d<<4)|0)+4>>2]<=a>>>0){d=d+1|0;if((c|0)==(d|0)){break g}if(!x[(f+(d<<4)|0)+4>>2]){while(1){d=d+1|0;if((c|0)==(d|0)){break g}if(!x[(f+(d<<4)|0)+4>>2]){continue}break}}a=0;if(c>>>0<=d>>>0){break g}}c=x[(f+(d<<4)|0)+12>>2]+D(a,20)|0;ue(e,x[c>>2],c+4|0,x[c+16>>2]);a=a+1|0;c=x[b+24>>2];if(c>>>0>d>>>0){continue}break}}}function Fd(a,b){a=E(a);b=E(b);var c=0,d=0,e=0,f=0,g=0,h=E(0),i=0,k=0;d=(q(b),j(2));c=(d<<1)+16777216>>>0<16777217;a:{b:{c:{d:{e=(q(a),j(2));e:{if(e-2139095040>>>0>=2164260864){if(c){break e}break c}if(!c){break d}}h=E(1);if((e|0)==1065353216){break b}c=d<<1;if(!c){break b}i=c>>>0<4278190081;c=e<<1;a=E(a+b);if(!(i&c>>>0<=4278190080)){break a}if((c|0)==2130706432){break b}a=c>>>0>2130706431^(d|0)>=0?E(0):E(b*b);break a}if((e<<1)+16777216>>>0<16777217){h=E(a*a);if((e|0)<0){h=(fi(d)|0)==1?E(-h):h;}if((d|0)>=0){break b}c=qa-16|0;B[c+12>>2]=E(1)/h;a=B[c+12>>2];break a}if((e|0)<0){c=fi(d);if(!c){a=E(a-a);a=E(a/a);break a}e=e&2147483647;i=((c|0)==1)<<16;}if(e>>>0>8388607){break c}e=((q(E(a*E(8388608))),j(2))&2147483647)-192937984|0;}d=e-1060306944|0;c=d>>>15&240;f=+(l(2,e-(d&-8388608)|0),r())*C[c+51488>>3]+-1;g=f*f;f=((f*.288457581109214+-.36092606229713164)*(g*g)+((f*.480898481472577+-.7213474675006291)*g+(f*1.4426950408774342+(C[c+51496>>3]+ +(d>>23)))))*+b;o(+f);c=j(1)|0;j(0)|0;f:{c=c&2147450880;if((c|0)==1079967744|c>>>0<1079967744){break f}if(f>127.99999995700433){c=qa-16|0;B[c+12>>2]=i?E(-15845632502852868e13):E(15845632502852868e13);a=E(B[c+12>>2]*E(15845632502852868e13));break a}if(!(f<=-150)){break f}c=qa-16|0;B[c+12>>2]=i?E(-2524354896707238e-44):E(2524354896707238e-44);a=E(B[c+12>>2]*E(2524354896707238e-44));break a}k=f;g=C[5960];f=g+f;g=k-(f-g);g=(C[5961]*g+C[5962])*(g*g)+(C[5963]*g+1);o(+f);j(1)|0;e=j(0)|0;d=i+e|0;i=d<<15;d=((e&31)<<3)+47424|0;c=x[d>>2];d=x[d+4>>2]+i|0;l(0,c|0);l(1,(c>>>0>c>>>0?d+1|0:d)|0);h=E(g*+n());}a=h;}return E(a)}function ih(a,b,c){var d=0,e=0,f=E(0),g=0,h=0,i=0,j=0;x[a>>2]=19784;x[a+8>>2]=14588;x[a+4>>2]=b;x[a>>2]=16140;x[a+20>>2]=0;x[a+12>>2]=0;x[a+16>>2]=0;i=a,j=xd(c,x[b+40>>2]+8|0),x[i+24>>2]=j;B[a+28>>2]=B[b+60>>2];B[a+32>>2]=B[b+64>>2];B[a+36>>2]=B[b+68>>2];f=B[b+72>>2];x[a+124>>2]=13296;x[a+120>>2]=0;x[a+112>>2]=0;x[a+116>>2]=0;x[a+108>>2]=13296;x[a+104>>2]=0;x[a+96>>2]=0;x[a+100>>2]=0;x[a+92>>2]=13296;x[a+88>>2]=0;x[a+80>>2]=0;x[a+84>>2]=0;x[a+76>>2]=13296;x[a+72>>2]=0;b=a- -64|0;x[b>>2]=0;x[b+4>>2]=0;x[a+60>>2]=13296;x[a+56>>2]=0;x[a+48>>2]=0;x[a+52>>2]=0;x[a+44>>2]=13296;B[a+40>>2]=f;v[a+133|0]=0;v[a+134|0]=0;v[a+135|0]=0;v[a+136|0]=0;v[a+137|0]=0;v[a+138|0]=0;v[a+139|0]=0;v[a+140|0]=0;x[a+128>>2]=0;x[a+132>>2]=0;b=x[(x[a+4>>2]+24|0)+4>>2];if(b>>>0>A[a+16>>2]){x[a+16>>2]=b;e=x[a+20>>2];g=Da();i=a,j=sa[x[x[g>>2]+16>>2]](g,e,b<<2,7693,94)|0,x[i+20>>2]=j;}if(x[(x[a+4>>2]+24|0)+4>>2]){while(1){g=Dc(c,x[x[(x[a+4>>2]+24|0)+12>>2]+(d<<2)>>2]+8|0);b=x[a+12>>2];a:{if((b|0)==x[a+16>>2]){f=E(E(b>>>0)*E(1.75));b:{if(E(F(f))>>0<=8?8:b;x[a+16>>2]=b;e=x[a+20>>2];h=Da();e=sa[x[x[h>>2]+16>>2]](h,e,b<<2,7693,106)|0;x[a+20>>2]=e;b=x[a+12>>2];e=e+(b<<2)|0;break a}e=x[a+20>>2]+(b<<2)|0;}x[e>>2]=g;x[a+12>>2]=b+1;d=d+1|0;if(d>>>0>2]+24|0)+4>>2]){continue}break}}b=x[a+128>>2];d=10;x[a+128>>2]=10;if(A[a+132>>2]<=9){x[a+132>>2]=17;c=x[a+136>>2];d=Da();i=a,j=sa[x[x[d>>2]+16>>2]](d,c,68,7693,82)|0,x[i+136>>2]=j;d=x[a+128>>2];}if(b>>>0>>0){Ha(x[a+136>>2]+(b<<2)|0,0,d-b<<2);}return a}function Kq(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=E(c);d=E(d);e=e|0;f=E(f);g=g|0;h=h|0;var i=0,j=E(0),k=0;a:{b=x[x[(b+8|0)+12>>2]+(x[a+20>>2]<<2)>>2];if(!y[b+117|0]){break a}e=x[a+36>>2];if(B[e>>2]>d){b:{switch(g|0){case 0:B[b+40>>2]=B[x[b+4>>2]+36>>2];return;case 1:break b;default:break a}}c=B[b+40>>2];d=E(B[x[b+4>>2]+36>>2]-c);i=+E(d/E(-360))+16384.499999999996;c:{if(F(i)<2147483648){a=~~i;break c}a=-2147483648;}B[b+40>>2]=E(E(d-E(D(16384-a|0,360)|0))*f)+c;return}e=e+(x[a+28>>2]<<2)|0;if(B[e-8>>2]<=d){d=B[e-4>>2];d:{e:{switch(g|0){case 3:c=B[b+40>>2];break d;case 0:B[b+40>>2]=E(d*f)+B[x[b+4>>2]+36>>2];return;case 1:case 2:break e;default:break a}}c=B[b+40>>2];d=E(d+E(B[x[b+4>>2]+36>>2]-c));i=+E(d/E(-360))+16384.499999999996;f:{if(F(i)<2147483648){a=~~i;break f}a=-2147483648;}d=E(d-E(D(16384-a|0,360)|0));}B[b+40>>2]=E(d*f)+c;return}h=Nb(a+24|0,d,2);k=h<<2;e=k+x[a+36>>2]|0;c=B[e-4>>2];j=d;d=B[e>>2];d=Kb(a,(h>>1)-1|0,E(E(1)-E(E(j-d)/E(B[e-8>>2]-d))));j=E(B[(x[a+36>>2]+k|0)+4>>2]-c);i=+E(j/E(-360))+16384.499999999996;g:{if(F(i)<2147483648){a=~~i;break g}a=-2147483648;}d=E(E(E(j-E(D(16384-a|0,360)|0))*d)+c);h:{i:{switch(g|0){case 3:c=B[b+40>>2];break h;case 0:i=+E(d/E(-360))+16384.499999999996;j:{if(F(i)<2147483648){a=~~i;break j}a=-2147483648;}B[b+40>>2]=E(E(d-E(D(16384-a|0,360)|0))*f)+B[x[b+4>>2]+36>>2];return;case 1:case 2:break i;default:break a}}c=B[b+40>>2];d=E(d+E(B[x[b+4>>2]+36>>2]-c));}i=+E(d/E(-360))+16384.499999999996;k:{if(F(i)<2147483648){a=~~i;break k}a=-2147483648;}B[b+40>>2]=E(E(d-E(D(16384-a|0,360)|0))*f)+c;}}function mk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;c=qa-32|0;qa=c;x[c+4>>2]=14468;x[c+8>>2]=x[(b+24|0)+4>>2];d=x[b+32>>2];x[c+16>>2]=0;x[c+12>>2]=d;a:{if(!d){break a}e=Da();j=c,k=sa[x[x[e>>2]+12>>2]](e,D(d,12),7693,197)|0,x[j+16>>2]=k;if(!x[c+8>>2]){break a}d=0;while(1){f=x[b+36>>2];g=D(d,12);e=g+x[c+16>>2]|0;x[e>>2]=1080;f=f+g|0;b:{if(!x[f+8>>2]){x[e+4>>2]=0;x[e+8>>2]=0;break b}x[e+4>>2]=x[f+4>>2];g=x[f+4>>2];h=e;e=Da();e=sa[x[x[e>>2]+12>>2]](e,g+1|0,8064,71)|0;x[h+8>>2]=e;Fa(e,x[f+8>>2],x[f+4>>2]+1|0);}d=d+1|0;if(d>>>0>2]){continue}break}}e=x[c+8>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;c:{d:{if(!e){x[c+4>>2]=14468;break d}if(e>>>0>=357913942){break c}b=D(e,12);d=Ea(b);x[a>>2]=d;x[a+8>>2]=b+d;b=b-12|0;b=(b-((b>>>0)%12|0)|0)+12|0;f=Ha(d,0,b);x[a+4>>2]=b+f;b=0;while(1){g=D(b,12);d=g+x[c+16>>2]|0;a=x[d+4>>2];if(a>>>0>=2147483632){break c}i=x[d+8>>2];e:{if(a>>>0<=10){v[c+31|0]=a;d=c+20|0;break e}h=(a|15)+1|0;d=Ea(h);x[c+28>>2]=h|-2147483648;x[c+20>>2]=d;x[c+24>>2]=a;}j=Fa(d,i,a)+a|0,k=0,v[j|0]=k;a=f+g|0;if(v[a+11|0]<0){Ja(x[a>>2]);}d=x[c+24>>2];x[a>>2]=x[c+20>>2];x[a+4>>2]=d;x[a+8>>2]=x[c+28>>2];b=b+1|0;if((e|0)!=(b|0)){continue}break}x[c+4>>2]=14468;b=x[c+8>>2];if(!b){break d}a=0;while(1){b=x[c+16>>2]+D((a^-1)+b|0,12)|0;sa[x[x[b>>2]>>2]](b)|0;a=a+1|0;b=x[c+8>>2];if(a>>>0>>0){continue}break}}x[c+8>>2]=0;a=x[c+16>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,7693,206);}qa=c+32|0;return}O();p();}function _d(a,b,c,d,e){var f=0,g=E(0),h=0,i=0,j=E(0),k=0,l=0,m=E(0);f=x[a+44>>2];a:{if(f>>>0<=b>>>0){while(1){b:{if(x[a+48>>2]==(f|0)){g=E(E(f>>>0)*E(1.75));c:{if(E(F(g))>>0<=8?8:f;x[a+48>>2]=f;i=x[a+52>>2];k=Da();i=sa[x[x[k>>2]+16>>2]](k,i,f<<2,7693,106)|0;x[a+52>>2]=i;f=x[a+44>>2];k=i+(f<<2)|0;break b}k=x[a+52>>2]+(f<<2)|0;}x[k>>2]=0;f=f+1|0;x[a+44>>2]=f;if(b>>>0>=f>>>0){continue}break a}}f=x[x[a+52>>2]+(b<<2)>>2];if(!f){break a}while(1){h=f;f=x[f+20>>2];if(f){continue}break}}f=x[a+28>>2];d:{if(f){i=f-1|0;f=x[x[a+36>>2]+(i<<2)>>2];x[a+28>>2]=i;break d}f=Ma(172,7942,57);Df(f);}x[f+40>>2]=0;x[f+44>>2]=0;v[f+37|0]=0;v[f+36|0]=d;x[f+16>>2]=c;x[f+32>>2]=b;x[f+48>>2]=0;x[f+52>>2]=0;g=B[c+32>>2];x[f+104>>2]=1065353216;x[f+84>>2]=2139095039;x[f+88>>2]=1065353216;x[f+76>>2]=-1082130432;x[f+80>>2]=-1082130432;x[f+68>>2]=0;x[f+72>>2]=0;x[f+60>>2]=-1082130432;x[f+64>>2]=-1082130432;B[f+56>>2]=g;x[f+92>>2]=1065353216;x[f+96>>2]=0;if(!h){x[f+100>>2]=0;be(a,b,f,1);ic(x[a+72>>2]);B[f+68>>2]=e;return f}l=f,m=Vd(x[a+16>>2],x[h+16>>2],c),B[l+100>>2]=m;x[h+20>>2]=f;if(e<=E(0)){g=E(B[h+56>>2]-B[h+52>>2]);if(g!=E(0)){j=B[h+72>>2];e:{if(y[h+36|0]){j=E(j/g);f:{if(E(F(j))j?g:j)+e);}l=f,m=E(e-Vd(x[a+16>>2],x[h+16>>2],c)),B[l+68>>2]=m;return f}e=B[h+72>>2];}B[f+68>>2]=e;return f}function Hn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{b:{if(pb(sa[x[x[b>>2]+8>>2]](b)|0,54268)){a=x[a+8>>2]+4|0;d=x[b+24>>2];e=Ea(12);c=-1;f=x[a+4>>2];c:{if(!f){break c}d=x[d+4>>2];g=x[a+12>>2];a=0;while(1){if((d|0)==x[g+(a<<2)>>2]){c=a;break c}a=a+1|0;if((f|0)!=(a|0)){continue}break}}he(e,4,53592,6,c);a=x[x[e+4>>2]>>2];B[a+12>>2]=B[x[(b+100|0)+12>>2]>>2];B[a+16>>2]=B[x[(b+100|0)+12>>2]+4>>2];B[a+36>>2]=B[x[(b+100|0)+12>>2]+8>>2];B[a+40>>2]=B[x[(b+100|0)+12>>2]+12>>2];B[a+60>>2]=B[x[(b+100|0)+12>>2]+16>>2];B[a- -64>>2]=B[x[(b+100|0)+12>>2]+20>>2];B[a+84>>2]=B[x[(b+100|0)+12>>2]+24>>2];B[a+88>>2]=B[x[(b+100|0)+12>>2]+28>>2];c=x[b+28>>2];d:{if(!c){break d}a=x[b+24>>2];if(!a|(a|0)==(e|0)){break d}sa[c|0](a);}x[b+24>>2]=e;a=b+28|0;break b}if(!pb(sa[x[x[b>>2]+8>>2]](b)|0,54184)){break a}a=x[a+8>>2]+4|0;d=x[b+68>>2];e=Ea(12);f=x[b+52>>2]>>>1|0;c=b+136|0;g=x[c+12>>2];h=x[c+4>>2];c=-1;i=x[a+4>>2];e:{if(!i){break e}d=x[d+4>>2];j=x[a+12>>2];a=0;while(1){if((d|0)==x[(a<<2)+j>>2]){c=a;break e}a=a+1|0;if((i|0)!=(a|0)){continue}break}}he(e,f,g,h,c);d=x[x[e+4>>2]>>2];f=x[b+52>>2];if(f){a=0;c=0;while(1){g=d+D(c,24)|0;h=a<<2;B[g+12>>2]=B[h+x[(b+104|0)+12>>2]>>2];B[g+16>>2]=B[x[(b+104|0)+12>>2]+(h|4)>>2];c=c+1|0;a=a+2|0;if(f>>>0>a>>>0){continue}break}}c=x[b+72>>2];f:{if(!c){break f}a=x[b+68>>2];if(!a|(a|0)==(e|0)){break f}sa[c|0](a);}x[b+68>>2]=e;a=b+72|0;}x[a>>2]=366;}}function Wg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=E(0),m=0,n=0,o=0;f=x[a+136>>2];if((f|0)!=(b|0)){a:{if(!b){break a}if(f){n=a+24|0;c=x[f+24>>2];b:{if(!c){break b}while(1){d=x[f+32>>2];if(A[(d+(e<<4)|0)+4>>2]<=h>>>0){e=e+1|0;if((e|0)==(c|0)){break b}if(!x[(d+(e<<4)|0)+4>>2]){while(1){e=e+1|0;if((e|0)==(c|0)){break b}if(!x[(d+(e<<4)|0)+4>>2]){continue}break}}h=0;if(c>>>0<=e>>>0){break b}}g=x[(d+(e<<4)|0)+12>>2]+D(h,20)|0;c=x[g>>2];d=x[x[n+12>>2]+(c<<2)>>2];c:{if(x[d+60>>2]!=x[g+16>>2]|c>>>0>=A[b+24>>2]){break c}c=x[b+32>>2]+(c<<4)|0;i=x[c+4>>2];if(!i){break c}j=x[c+12>>2];c=0;d:{k=x[g+12>>2];if(k){o=x[g+8>>2];while(1){m=D(c,20)+j|0;g=x[m+12>>2];if((g|0)==(k|0)){break d}if(!(!g|x[m+8>>2]!=(o|0))){if(!Oa(g,k)){break d}}c=c+1|0;if((i|0)!=(c|0)){continue}break}break c}while(1){if(!x[(D(c,20)+j|0)+12>>2]){break d}c=c+1|0;if((i|0)!=(c|0)){continue}break}break c}if((c|0)<0){break c}c=x[(D(c,20)+j|0)+16>>2];if(!c){break c}if((c|0)!=x[d+60>>2]){x[d+60>>2]=c;l=B[x[d+12>>2]+160>>2];x[d+72>>2]=0;B[d+64>>2]=l;}}h=h+1|0;c=x[f+24>>2];if(e>>>0>>0){continue}break}}break a}f=x[a+28>>2];if(!f){break a}while(1){c=x[x[a+36>>2]+(e<<2)>>2];d=x[c+4>>2]+68|0;e:{if(!x[d+4>>2]){break e}d=Ob(b,e,d);if(!d){break e}if((d|0)!=x[c+60>>2]){x[c+60>>2]=d;l=B[x[c+12>>2]+160>>2];x[c+72>>2]=0;B[c+64>>2]=l;}}e=e+1|0;if((f|0)!=(e|0)){continue}break}}x[a+136>>2]=b;Ke(a);}}function ah(a,b){var c=0,d=0,e=0,f=0,g=0,h=E(0),i=0;a:{b:{if(!y[x[b+40>>2]+117|0]){break b}c:{d:{if(!y[x[b+4>>2]+20|0]){break d}c=x[a+136>>2];if(!c){break b}f=x[c+56>>2];if(!f){v[b+44|0]=0;return}d=x[b+4>>2];e=x[c- -64>>2];if((d|0)==x[e>>2]){break d}c=0;while(1){c=c+1|0;if((f|0)!=(c|0)&(d|0)!=x[e+(c<<2)>>2]){continue}break}c=c>>>0>>0;v[b+44|0]=c;if(c){break c}break a}v[b+44|0]=1;}Pb(a,x[b+40>>2]);f=b+8|0;i=x[x[f+12>>2]>>2];Pb(a,i);c=x[f+4>>2];e:{if(c>>>0<2){break e}e=x[(x[f+12>>2]+(c<<2)|0)-4>>2];d=x[a+108>>2];if(d){g=x[a+116>>2];if((e|0)==x[g>>2]){break e}c=0;while(1){c=c+1|0;if((d|0)!=(c|0)&(e|0)!=x[g+(c<<2)>>2]){continue}break}if(c>>>0>>0){break e}}c=x[a+124>>2];f:{if((c|0)==x[a+128>>2]){h=E(E(c>>>0)*E(1.75));g:{if(E(F(h))>>0<=8?8:c;x[a+128>>2]=c;d=x[a+132>>2];g=Da();d=sa[x[x[g>>2]+16>>2]](g,d,c<<2,7693,106)|0;x[a+132>>2]=d;c=x[a+124>>2];d=d+(c<<2)|0;break f}d=x[a+132>>2]+(c<<2)|0;}x[d>>2]=e;x[a+124>>2]=c+1;}c=x[a+108>>2];h:{if((c|0)==x[a+112>>2]){h=E(E(c>>>0)*E(1.75));i:{if(E(F(h))>>0<=8?8:c;x[a+112>>2]=c;e=x[a+116>>2];d=Da();e=sa[x[x[d>>2]+16>>2]](d,e,c<<2,7693,106)|0;x[a+116>>2]=e;c=x[a+108>>2];d=e+(c<<2)|0;break h}d=x[a+116>>2]+(c<<2)|0;}x[d>>2]=b;x[a+108>>2]=c+1;yd(i+16|0);v[x[(x[f+12>>2]+(x[f+4>>2]<<2)|0)-4>>2]+116|0]=1;return}v[b+44|0]=0;}}function be(a,b,c,d){var e=0,f=E(0),g=0;e=x[a+44>>2];a:{if(e>>>0<=b>>>0){while(1){b:{if(x[a+48>>2]==(e|0)){f=E(E(e>>>0)*E(1.75));c:{if(E(F(f))>>0<=8?8:d;x[a+48>>2]=d;e=x[a+52>>2];g=Da();d=sa[x[x[g>>2]+16>>2]](g,e,d<<2,7693,106)|0;x[a+52>>2]=d;e=x[a+44>>2];d=d+(e<<2)|0;break b}d=x[a+52>>2]+(e<<2)|0;}x[d>>2]=0;e=e+1|0;x[a+44>>2]=e;if(b>>>0>=e>>>0){continue}break}x[x[a+52>>2]+(b<<2)>>2]=c;break a}e=x[a+52>>2]+(b<<2)|0;b=x[e>>2];x[e>>2]=c;if(!b){break a}if(d){vg(x[a+72>>2],b);}x[c+24>>2]=b;x[b+28>>2]=c;x[c+96>>2]=0;d:{if(!x[b+24>>2]){break d}f=B[b+100>>2];if(!(f>E(0))){break d}f=E(B[b+96>>2]/f);B[c+104>>2]=B[c+104>>2]*(f>E(1)?E(1):f);}x[b+152>>2]=0;}a=x[a+72>>2];b=qa-32|0;qa=b;x[b+12>>2]=0;x[b+8>>2]=c;x[b+4>>2]=0;x[b>>2]=12876;c=x[a+8>>2];e:{if((c|0)==x[a+12>>2]){x[b+28>>2]=x[b+12>>2];d=x[b+8>>2];x[b+20>>2]=x[b+4>>2];x[b+24>>2]=d;x[b+16>>2]=12876;f=E(E(c>>>0)*E(1.75));f:{if(E(F(f))>>0<=8?8:c;x[a+12>>2]=c;d=x[a+16>>2];e=Da();c=sa[x[x[e>>2]+16>>2]](e,d,c<<4,7693,106)|0;x[a+16>>2]=c;d=x[a+8>>2];x[a+8>>2]=d+1;c=c+(d<<4)|0;x[c>>2]=12876;d=x[b+24>>2];x[c+4>>2]=x[b+20>>2];x[c+8>>2]=d;x[c+12>>2]=x[b+28>>2];break e}x[a+8>>2]=c+1;c=x[a+16>>2]+(c<<4)|0;x[c>>2]=12876;d=x[b+8>>2];x[c+4>>2]=x[b+4>>2];x[c+8>>2]=d;x[c+12>>2]=x[b+12>>2];}v[x[a+20>>2]+88|0]=1;qa=b+32|0;}function Hg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=qa-32|0;qa=e;x[a>>2]=18804;b=x[a+24>>2];a:{if(!b){break a}while(1){d=x[a+32>>2];if(A[(d+(c<<4)|0)+4>>2]<=f>>>0){c=c+1|0;if((c|0)==(b|0)){break a}if(!x[(d+(c<<4)|0)+4>>2]){while(1){c=c+1|0;if((c|0)==(b|0)){break a}if(!x[(d+(c<<4)|0)+4>>2]){continue}break}}f=0;if(b>>>0<=c>>>0){break a}}b=x[(d+(c<<4)|0)+12>>2]+D(f,20)|0;d=x[b>>2];x[e+16>>2]=1080;x[e+12>>2]=d;b:{if(!x[b+12>>2]){x[e+20>>2]=0;x[e+24>>2]=0;break b}x[e+20>>2]=x[b+8>>2];d=x[b+8>>2];g=Da();d=sa[x[x[g>>2]+12>>2]](g,d+1|0,8064,71)|0;x[e+24>>2]=d;Fa(d,x[b+12>>2],x[b+8>>2]+1|0);}b=x[b+16>>2];x[e+28>>2]=b;c:{if(!b){break c}x[b+16>>2]=x[b+16>>2]-1;if(x[b+16>>2]){break c}sa[x[x[b>>2]+4>>2]](b);}x[e+16>>2]=1080;b=x[e+24>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,8064,201);}f=f+1|0;b=x[a+24>>2];if(c>>>0>>0){continue}break}}x[a+56>>2]=0;x[a+52>>2]=19052;c=x[a- -64>>2];if(c){b=Da();sa[x[x[b>>2]+20>>2]](b,c,7693,206);}x[a+40>>2]=0;x[a+36>>2]=15708;c=x[a+48>>2];if(c){b=Da();sa[x[x[b>>2]+20>>2]](b,c,7693,206);}x[a+20>>2]=18892;x[a+16>>2]=18788;b=x[a+24>>2];if(b){c=0;while(1){b=x[a+32>>2]+((c^-1)+b<<4)|0;sa[x[x[b>>2]>>2]](b)|0;b=x[a+24>>2];c=c+1|0;if(b>>>0>c>>>0){continue}break}}x[a+24>>2]=0;c=x[a+32>>2];if(c){b=Da();sa[x[x[b>>2]+20>>2]](b,c,7693,206);}x[a+4>>2]=1080;c=x[a+12>>2];if(c){b=Da();sa[x[x[b>>2]+20>>2]](b,c,8064,201);}qa=e+32|0;return a|0}function _e(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;e=qa-32|0;qa=e;a:{if(y[b|0]==34){b=b+1|0;c=b;while(1){f=y[c|0];if(!(!f|(f|0)==34)){d=d+1|0;c=((f|0)==92?2:1)+c|0;continue}break}f=Da();f=sa[x[x[f>>2]+8>>2]](f,d+1|0,5555,236)|0;c=0;if(!f){break a}c=f;while(1){b:{g=y[b|0];if((g|0)!=92){if(!g|(g|0)==34){break b}v[c|0]=g;c=c+1|0;b=b+1|0;continue}h=b+1|0;c:{d:{e:{f:{g:{h:{i:{j:{k:{g=v[b+1|0];switch(g-98|0){case 19:break f;case 18:break g;case 16:break h;case 12:break i;case 4:break j;case 0:break k;default:break e}}v[c|0]=8;break d}v[c|0]=12;break d}v[c|0]=10;break d}v[c|0]=13;break d}v[c|0]=9;break d}x[e+16>>2]=e+28;ei(b+2|0,e+16|0);h=b+5|0;d=x[e+28>>2];if(!d){break c}g=d&-1024;if((g|0)==56320){break c}l:{m:{n:{o:{if((g|0)==55296){if(y[b+6|0]!=92|y[b+7|0]!=117){break c}x[e>>2]=e+24;ei(b+8|0,e);h=b+11|0;b=x[e+24>>2];if(b-57344>>>0<4294966272){break c}d=(x[e+28>>2]<<10&1047552|b&1023)+65536|0;x[e+28>>2]=d;break o}b=1;if(d>>>0<128){break l}b=2;if(d>>>0<2048){break m}b=3;if(d>>>0<65536){break n}}v[c+3|0]=d&63|128;d=x[e+28>>2]>>>6|0;x[e+28>>2]=d;b=4;}v[c+2|0]=d&63|128;d=x[e+28>>2]>>>6|0;x[e+28>>2]=d;}v[c+1|0]=d&63|128;d=x[e+28>>2]>>>6|0;x[e+28>>2]=d;}v[c|0]=y[b+15844|0]|d;c=b+c|0;b=h+1|0;continue}v[c|0]=g;}c=c+1|0;}b=h+1|0;continue}break}v[c|0]=0;c=y[b|0];x[a+8>>2]=4;x[a+16>>2]=f;c=((c|0)==34)+b|0;break a}x[13545]=b;c=0;}qa=e+32|0;return c}function io(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=E(c);d=E(d);e=e|0;f=E(f);g=g|0;h=h|0;var i=E(0),j=E(0),k=E(0),l=0,m=E(0);a:{b=x[x[b+84>>2]+(x[a+36>>2]<<2)>>2];if(!(sa[x[x[b>>2]+16>>2]](b)|0)){break a}e=x[a+32>>2];if(B[e>>2]>d){b:{switch(g|0){case 0:a=x[b+4>>2];B[b+28>>2]=B[a+44>>2];B[b+32>>2]=B[a+48>>2];B[b+36>>2]=B[a+52>>2];B[b+40>>2]=B[a+56>>2];return;case 1:break b;default:break a}}a=x[b+4>>2];c=B[b+28>>2];B[b+28>>2]=E(E(B[a+44>>2]-c)*f)+c;c=B[b+32>>2];B[b+32>>2]=E(E(B[a+48>>2]-c)*f)+c;c=B[b+36>>2];B[b+36>>2]=E(E(B[a+52>>2]-c)*f)+c;c=B[b+40>>2];B[b+40>>2]=E(E(B[a+56>>2]-c)*f)+c;return}e=e+(x[a+24>>2]<<2)|0;c:{if(B[e-20>>2]<=d){d=B[e-4>>2];c=B[e-8>>2];j=B[e-12>>2];i=B[e-16>>2];break c}h=Nb(a+20|0,d,5);l=h<<2;e=l+x[a+32>>2]|0;k=B[e-16>>2];j=B[e-12>>2];c=B[e-8>>2];m=B[e-4>>2];i=d;d=B[e>>2];i=Kb(a,((h|0)/5|0)-1|0,E(E(1)-E(E(i-d)/E(B[e-20>>2]-d))));a=x[a+32>>2]+l|0;d=E(m+E(i*E(B[a+16>>2]-m)));c=E(c+E(i*E(B[a+12>>2]-c)));j=E(j+E(i*E(B[a+8>>2]-j)));i=E(k+E(i*E(B[a+4>>2]-k)));}if(!g){k=i;a=x[b+4>>2];i=B[a+44>>2];B[b+28>>2]=E(E(k-i)*f)+i;i=B[a+48>>2];B[b+32>>2]=E(E(j-i)*f)+i;i=c;c=B[a+52>>2];B[b+36>>2]=E(E(i-c)*f)+c;c=B[a+56>>2];B[b+40>>2]=E(E(d-c)*f)+c;return}k=i;i=B[b+28>>2];B[b+28>>2]=E(E(k-i)*f)+i;i=B[b+32>>2];B[b+32>>2]=E(E(j-i)*f)+i;i=c;c=B[b+36>>2];B[b+36>>2]=E(E(i-c)*f)+c;c=B[b+40>>2];B[b+40>>2]=E(E(d-c)*f)+c;}}function gd(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;x[a+4>>2]=12676;x[a>>2]=1032;x[a+8>>2]=x[c+4>>2];e=x[c+8>>2];x[a+16>>2]=0;x[a+12>>2]=e;a:{if(!e){break a}g=Da();l=a,m=sa[x[x[g>>2]+12>>2]](g,e<<2,7693,197)|0,x[l+16>>2]=m;h=x[a+8>>2];if(!h){break a}g=0;e=0;if(h>>>0>=4){k=h&-4;while(1){f=e<<2;x[f+x[a+16>>2]>>2]=x[f+x[c+12>>2]>>2];i=f|4;x[i+x[a+16>>2]>>2]=x[i+x[c+12>>2]>>2];i=f|8;x[i+x[a+16>>2]>>2]=x[i+x[c+12>>2]>>2];f=f|12;x[f+x[a+16>>2]>>2]=x[f+x[c+12>>2]>>2];e=e+4|0;j=j+4|0;if((k|0)!=(j|0)){continue}break}}f=h&3;if(!f){break a}while(1){h=e<<2;x[h+x[a+16>>2]>>2]=x[h+x[c+12>>2]>>2];e=e+1|0;g=g+1|0;if((f|0)!=(g|0)){continue}break}}B[a+32>>2]=d;x[a+36>>2]=1080;x[a+24>>2]=0;x[a+28>>2]=0;x[a+20>>2]=12736;b:{if(!x[b+8>>2]){x[a+40>>2]=0;x[a+44>>2]=0;break b}x[a+40>>2]=x[b+4>>2];e=x[b+4>>2];g=Da();e=sa[x[x[g>>2]+12>>2]](g,e+1|0,8064,71)|0;x[a+44>>2]=e;Fa(e,x[b+8>>2],x[b+4>>2]+1|0);}if(x[c+4>>2]>0){g=0;while(1){b=x[x[c+12>>2]+(g<<2)>>2];f=sa[x[x[b>>2]+16>>2]](b)|0;c:{d:{e=x[a+24>>2];if(e){while(1){if((f|0)==x[e+4>>2]){break d}e=x[e+12>>2];if(e){continue}break}}b=Ma(20,7817,114);x[b+12>>2]=0;x[b+16>>2]=0;x[b>>2]=12788;v[b+8|0]=1;x[b+4>>2]=f;e=x[a+24>>2];if(e){x[e+16>>2]=b;x[b+12>>2]=e;}x[a+24>>2]=b;x[a+28>>2]=x[a+28>>2]+1;break c}v[e+8|0]=1;x[e+4>>2]=f;}g=g+1|0;if((g|0)>2]){continue}break}}return a}function hd(a,b,c,d){var e=0,f=0,g=0,h=E(0),i=0;e=x[a+44>>2];a:{if(e>>>0<=b>>>0){while(1){b:{if(x[a+48>>2]==(e|0)){h=E(E(e>>>0)*E(1.75));c:{if(E(F(h))>>0<=8?8:e;x[a+48>>2]=e;g=x[a+52>>2];i=Da();g=sa[x[x[i>>2]+16>>2]](i,g,e<<2,7693,106)|0;x[a+52>>2]=g;e=x[a+44>>2];g=g+(e<<2)|0;break b}g=x[a+52>>2]+(e<<2)|0;}x[g>>2]=0;g=1;e=e+1|0;x[a+44>>2]=e;if(b>>>0>=e>>>0){continue}break a}}g=1;e=x[a+52>>2]+(b<<2)|0;f=x[e>>2];if(!f){f=0;break a}if(B[f+80>>2]==E(-1)){x[e>>2]=x[f+24>>2];vg(x[a+72>>2],f);Pc(x[a+72>>2],f);e=x[f+20>>2];if(e){while(1){od(x[a+72>>2],e);e=x[e+20>>2];if(e){continue}break}}g=0;x[f+20>>2]=0;f=x[f+24>>2];break a}e=x[f+20>>2];if(e){while(1){od(x[a+72>>2],e);e=x[e+20>>2];if(e){continue}break}}x[f+20>>2]=0;}e=x[a+28>>2];d:{if(e){i=e-1|0;e=x[x[a+36>>2]+(i<<2)>>2];x[a+28>>2]=i;break d}e=Ma(172,7942,57);Df(e);}x[e+40>>2]=0;x[e+44>>2]=0;v[e+37|0]=0;v[e+36|0]=d;x[e+16>>2]=c;x[e+32>>2]=b;x[e+48>>2]=0;x[e+52>>2]=0;h=B[c+32>>2];x[e+104>>2]=1065353216;x[e+84>>2]=2139095039;x[e+88>>2]=1065353216;x[e+76>>2]=-1082130432;x[e+80>>2]=-1082130432;x[e+68>>2]=0;x[e+72>>2]=0;x[e+60>>2]=-1082130432;x[e+64>>2]=-1082130432;B[e+56>>2]=h;x[e+92>>2]=1065353216;x[e+96>>2]=0;if(f){h=Vd(x[a+16>>2],x[f+16>>2],c);}else {h=E(0);}B[e+100>>2]=h;be(a,b,e,g);ic(x[a+72>>2]);return e}function Bm(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=E(0);i=qa-16|0;qa=i;l=x[e+4>>2];h=x[e>>2];x[i+8>>2]=0;x[i+12>>2]=0;x[i>>2]=13296;n=l-h|0;k=n>>2;x[i+4>>2]=k;a:{if((h|0)==(l|0)){break a}r=E(E(k>>>0)*E(1.75));b:{if(E(F(r))>>0<=8?8:h;x[i+8>>2]=l;h=Da();m=sa[x[x[h>>2]+16>>2]](h,0,l<<2,7693,82)|0;x[i+12>>2]=m;Ha(m,0,n&-4);}c:{if((n|0)<=0){break c}h=(k|0)<=1?1:k;n=h&3;q=x[e>>2];if(h>>>0>=4){l=h&2147483644;while(1){k=j<<2;B[k+m>>2]=B[k+q>>2];h=k|4;B[h+m>>2]=B[h+q>>2];h=k|8;B[h+m>>2]=B[h+q>>2];h=k|12;B[h+m>>2]=B[h+q>>2];j=j+4|0;o=o+4|0;if((l|0)!=(o|0)){continue}break}}if(!n){break c}while(1){h=j<<2;B[h+m>>2]=B[h+q>>2];j=j+1|0;p=p+1|0;if((n|0)!=(p|0)){continue}break}}Wb(a,b,c,d,i,f,g);f=x[i+12>>2];a=x[e+4>>2];e=x[e>>2];a=a-e|0;d:{e:{if((a|0)>0){a=a>>>2|0;a=a>>>0<=1?1:a;c=a&3;p=0;j=0;if(a>>>0>=4){b=a&1073741820;o=0;while(1){d=j<<2;B[d+e>>2]=B[d+f>>2];a=d|4;B[a+e>>2]=B[a+f>>2];a=d|8;B[a+e>>2]=B[a+f>>2];a=d|12;B[a+e>>2]=B[a+f>>2];j=j+4|0;o=o+4|0;if((b|0)!=(o|0)){continue}break}}if(c){while(1){a=j<<2;B[a+e>>2]=B[a+f>>2];j=j+1|0;p=p+1|0;if((c|0)!=(p|0)){continue}break}}x[i+4>>2]=0;x[i>>2]=13296;break e}x[i+4>>2]=0;x[i>>2]=13296;if(!f){break d}}a=Da();sa[x[x[a>>2]+20>>2]](a,f,7693,206);}qa=i+16|0;}function Qg(a){var b=0,c=0,d=0,e=0;x[a+208>>2]=13296;x[a+204>>2]=0;x[a+196>>2]=0;x[a+200>>2]=0;x[a+192>>2]=13296;x[a+188>>2]=0;x[a+180>>2]=0;x[a+184>>2]=0;x[a+176>>2]=16028;x[a+172>>2]=0;x[a+164>>2]=0;x[a+168>>2]=0;x[a+160>>2]=13296;x[a+156>>2]=0;x[a+148>>2]=0;x[a+144>>2]=13296;x[a+140>>2]=0;x[a+132>>2]=0;x[a+136>>2]=0;x[a+128>>2]=13296;x[a+124>>2]=0;x[a+116>>2]=0;x[a+120>>2]=0;x[a+112>>2]=17852;x[a+108>>2]=18016;x[a+104>>2]=0;x[a+96>>2]=0;x[a+100>>2]=0;x[a+92>>2]=17796;x[a+88>>2]=17956;x[a+84>>2]=0;x[a+76>>2]=0;x[a+80>>2]=0;x[a+72>>2]=13184;x[a+68>>2]=0;x[a+60>>2]=0;x[a+64>>2]=0;x[a+56>>2]=17908;x[a+52>>2]=0;x[a+44>>2]=0;x[a+48>>2]=0;x[a+40>>2]=13184;x[a+36>>2]=0;x[a+28>>2]=0;x[a+32>>2]=0;x[a+24>>2]=17852;x[a+20>>2]=0;x[a+12>>2]=0;x[a+16>>2]=0;x[a+8>>2]=17796;x[a+4>>2]=19660;x[a>>2]=17740;x[a+220>>2]=0;x[a+224>>2]=0;x[a+212>>2]=0;x[a+216>>2]=0;x[a+152>>2]=128;b=Da();d=a,e=sa[x[x[b>>2]+16>>2]](b,0,512,7693,94)|0,x[d+156>>2]=e;if(A[a+168>>2]<=127){x[a+168>>2]=128;b=x[a+172>>2];c=Da();d=a,e=sa[x[x[c>>2]+16>>2]](c,b,512,7693,94)|0,x[d+172>>2]=e;}if(A[a+184>>2]<=127){x[a+184>>2]=128;b=x[a+188>>2];c=Da();d=a,e=sa[x[x[c>>2]+16>>2]](c,b,256,7693,94)|0,x[d+188>>2]=e;}if(A[a+200>>2]<=127){x[a+200>>2]=128;b=x[a+204>>2];c=Da();d=a,e=sa[x[x[c>>2]+16>>2]](c,b,512,7693,94)|0,x[d+204>>2]=e;}return a}function am(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=E(0);g=qa-16|0;qa=g;j=x[c+4>>2];f=x[c>>2];x[g+8>>2]=0;x[g+12>>2]=0;x[g>>2]=13296;l=j-f|0;i=l>>2;x[g+4>>2]=i;a:{if((f|0)==(j|0)){break a}p=E(E(i>>>0)*E(1.75));b:{if(E(F(p))>>0<=8?8:f;x[g+8>>2]=j;f=Da();k=sa[x[x[f>>2]+16>>2]](f,0,j<<2,7693,82)|0;x[g+12>>2]=k;Ha(k,0,l&-4);}c:{if((l|0)<=0){break c}f=(i|0)<=1?1:i;l=f&3;o=x[c>>2];if(f>>>0>=4){j=f&2147483644;while(1){i=h<<2;B[i+k>>2]=B[i+o>>2];f=i|4;B[f+k>>2]=B[f+o>>2];f=i|8;B[f+k>>2]=B[f+o>>2];f=i|12;B[f+k>>2]=B[f+o>>2];h=h+4|0;m=m+4|0;if((j|0)!=(m|0)){continue}break}}if(!l){break c}while(1){f=h<<2;B[f+k>>2]=B[f+o>>2];h=h+1|0;n=n+1|0;if((l|0)!=(n|0)){continue}break}}Oe(a,b,x[g+12>>2],d,e);f=x[g+12>>2];e=x[c>>2];a=x[c+4>>2]-e|0;d:{e:{if((a|0)>0){a=a>>>2|0;a=a>>>0<=1?1:a;c=a&3;n=0;h=0;if(a>>>0>=4){b=a&1073741820;m=0;while(1){d=h<<2;B[d+e>>2]=B[d+f>>2];a=d|4;B[a+e>>2]=B[a+f>>2];a=d|8;B[a+e>>2]=B[a+f>>2];a=d|12;B[a+e>>2]=B[a+f>>2];h=h+4|0;m=m+4|0;if((b|0)!=(m|0)){continue}break}}if(c){while(1){a=h<<2;B[a+e>>2]=B[a+f>>2];h=h+1|0;n=n+1|0;if((c|0)!=(n|0)){continue}break}}x[g+4>>2]=0;x[g>>2]=13296;break e}x[g+4>>2]=0;x[g>>2]=13296;if(!f){break d}}a=Da();sa[x[x[a>>2]+20>>2]](a,f,7693,206);}qa=g+16|0;}function Ci(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{d=x[a+4>>2];if((d|0)!=x[a+8>>2]){x[d+8>>2]=0;x[d>>2]=0;x[d+4>>2]=0;c=x[b+4>>2];e=x[b>>2];if((c|0)!=(e|0)){e=c-e|0;if((e|0)<0){break a}c=Ea(e);x[d+4>>2]=c;x[d>>2]=c;x[d+8>>2]=(e&-4)+c;e=x[b>>2];b=x[b+4>>2];if((e|0)!=(b|0)){while(1){B[c>>2]=B[e>>2];c=c+4|0;e=e+4|0;if((b|0)!=(e|0)){continue}break}}x[d+4>>2]=c;}x[a+4>>2]=d+12;return}b:{c:{d:{e:{d=x[a+4>>2];h=x[a>>2];e=(d-h|0)/12|0;c=e+1|0;if(c>>>0>=357913942){break e}f=(x[a+8>>2]-h|0)/12|0;g=f<<1;f=f>>>0>=178956970?357913941:c>>>0>>0?g:c;if(f){if(f>>>0>=357913942){break d}j=Ea(D(f,12));}c=D(e,12)+j|0;x[c+8>>2]=0;x[c>>2]=0;x[c+4>>2]=0;e=x[b>>2];g=x[b+4>>2];if((e|0)!=(g|0)){i=g-e|0;if((i|0)<0){break e}b=Ea(i);x[c>>2]=b;x[c+8>>2]=(i&-4)+b;while(1){B[b>>2]=B[e>>2];b=b+4|0;e=e+4|0;if((g|0)!=(e|0)){continue}break}x[c+4>>2]=b;}b=D(f,12)+j|0;e=c+12|0;if((d|0)==(h|0)){break c}while(1){c=c-12|0;d=d-12|0;x[c>>2]=x[d>>2];x[c+4>>2]=x[d+4>>2];x[c+8>>2]=x[d+8>>2];x[d+8>>2]=0;x[d>>2]=0;x[d+4>>2]=0;if((d|0)!=(h|0)){continue}break}x[a+8>>2]=b;b=x[a+4>>2];x[a+4>>2]=e;d=x[a>>2];x[a>>2]=c;if((b|0)==(d|0)){break b}while(1){a=b-12|0;c=x[a>>2];if(c){x[b-8>>2]=c;Ja(c);}b=a;if((d|0)!=(b|0)){continue}break}break b}O();p();}kb();p();}x[a+8>>2]=b;x[a+4>>2]=e;x[a>>2]=c;}if(d){Ja(d);}return}O();p();}function ub(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=x[a>>2];g=x[a+4>>2]-f>>2;if(g>>>0>>0){f=b-g|0;g=a;a:{d=x[a+8>>2];b=x[a+4>>2];if(f>>>0<=d-b>>2>>>0){b:{if(!f){break b}a=b;e=f&7;if(e){d=0;while(1){x[a>>2]=x[c>>2];a=a+4|0;d=d+1|0;if((e|0)!=(d|0)){continue}break}}b=(f<<2)+b|0;if((f-1&1073741823)>>>0<7){break b}while(1){x[a>>2]=x[c>>2];x[a+4>>2]=x[c>>2];x[a+8>>2]=x[c>>2];x[a+12>>2]=x[c>>2];x[a+16>>2]=x[c>>2];x[a+20>>2]=x[c>>2];x[a+24>>2]=x[c>>2];x[a+28>>2]=x[c>>2];a=a+32|0;if((b|0)!=(a|0)){continue}break}}x[g+4>>2]=b;break a}c:{e=x[g>>2];h=b-e>>2;a=h+f|0;if(a>>>0<1073741824){d=d-e|0;e=d>>1;e=d>>>0>=2147483644?1073741823:a>>>0>>0?e:a;if(e){if(e>>>0>=1073741824){break c}i=Ea(e<<2);}d=(h<<2)+i|0;a=d;h=f&7;if(h){while(1){x[a>>2]=x[c>>2];a=a+4|0;j=j+1|0;if((h|0)!=(j|0)){continue}break}}h=(f<<2)+d|0;if((f-1&1073741823)>>>0>=7){while(1){x[a>>2]=x[c>>2];x[a+4>>2]=x[c>>2];x[a+8>>2]=x[c>>2];x[a+12>>2]=x[c>>2];x[a+16>>2]=x[c>>2];x[a+20>>2]=x[c>>2];x[a+24>>2]=x[c>>2];x[a+28>>2]=x[c>>2];a=a+32|0;if((h|0)!=(a|0)){continue}break}}a=x[g>>2];if((a|0)!=(b|0)){while(1){d=d-4|0;b=b-4|0;x[d>>2]=x[b>>2];if((a|0)!=(b|0)){continue}break}b=x[g>>2];}x[g+8>>2]=(e<<2)+i;x[g+4>>2]=h;x[g>>2]=d;if(b){Ja(b);}break a}O();p();}kb();p();}return}if(b>>>0>>0){x[a+4>>2]=f+(b<<2);}}function Ki(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=x[a>>2];f=x[a+4>>2]-e>>2;if(f>>>0>>0){e=b-f|0;f=a;a:{d=x[a+8>>2];b=x[a+4>>2];if(e>>>0<=d-b>>2>>>0){b:{if(!e){break b}a=b;g=e&7;if(g){d=0;while(1){B[a>>2]=B[c>>2];a=a+4|0;d=d+1|0;if((g|0)!=(d|0)){continue}break}}b=(e<<2)+b|0;if((e-1&1073741823)>>>0<7){break b}while(1){B[a>>2]=B[c>>2];B[a+4>>2]=B[c>>2];B[a+8>>2]=B[c>>2];B[a+12>>2]=B[c>>2];B[a+16>>2]=B[c>>2];B[a+20>>2]=B[c>>2];B[a+24>>2]=B[c>>2];B[a+28>>2]=B[c>>2];a=a+32|0;if((b|0)!=(a|0)){continue}break}}x[f+4>>2]=b;break a}c:{g=x[f>>2];h=b-g>>2;a=h+e|0;if(a>>>0<1073741824){d=d-g|0;i=d>>1;i=d>>>0>=2147483644?1073741823:a>>>0>>0?i:a;if(i){if(i>>>0>=1073741824){break c}j=Ea(i<<2);}d=(h<<2)+j|0;a=d;h=e&7;if(h){while(1){B[a>>2]=B[c>>2];a=a+4|0;k=k+1|0;if((h|0)!=(k|0)){continue}break}}h=(e<<2)+d|0;if((e-1&1073741823)>>>0>=7){while(1){B[a>>2]=B[c>>2];B[a+4>>2]=B[c>>2];B[a+8>>2]=B[c>>2];B[a+12>>2]=B[c>>2];B[a+16>>2]=B[c>>2];B[a+20>>2]=B[c>>2];B[a+24>>2]=B[c>>2];B[a+28>>2]=B[c>>2];a=a+32|0;if((h|0)!=(a|0)){continue}break}}if((b|0)!=(g|0)){while(1){d=d-4|0;b=b-4|0;B[d>>2]=B[b>>2];if((b|0)!=(g|0)){continue}break}}x[f+8>>2]=(i<<2)+j;x[f+4>>2]=h;x[f>>2]=d;if(g){Ja(g);}break a}O();p();}kb();p();}return}if(b>>>0>>0){x[a+4>>2]=e+(b<<2);}}function Gu(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(gb(a,x[b+8>>2],e)){if(!(x[b+28>>2]==1|x[b+4>>2]!=(c|0))){x[b+28>>2]=d;}return}a:{if(gb(a,x[b>>2],e)){if(!(x[b+16>>2]!=(c|0)&x[b+20>>2]!=(c|0))){if((d|0)!=1){break a}x[b+32>>2]=1;return}x[b+32>>2]=d;if(x[b+44>>2]!=4){f=a+16|0;h=f+(x[a+12>>2]<<3)|0;d=0;b:{c:{while(1){d:{if(f>>>0>=h>>>0){break d}w[b+52>>1]=0;Lf(x[f>>2],x[f+4>>2],b,c,c,1,e);if(y[b+54|0]){break d}e:{if(!y[b+53|0]){break e}if(y[b+52|0]){d=1;if(x[b+24>>2]==1){break c}g=1;if(y[a+8|0]&2){break e}break c}g=1;if(!(v[a+8|0]&1)){break c}}f=f+8|0;continue}break}a=4;if(!g){break b}}a=3;}x[b+44>>2]=a;if(d&1){break a}}x[b+20>>2]=c;x[b+40>>2]=x[b+40>>2]+1;if(x[b+36>>2]!=1|x[b+24>>2]!=2){break a}v[b+54|0]=1;return}g=x[a+12>>2];h=a+16|0;Rd(x[h>>2],x[a+20>>2],b,c,d,e);f=a+24|0;g=h+(g<<3)|0;if(f>>>0>=g>>>0){break a}a=x[a+8>>2];if(!(!(a&2)&x[b+36>>2]!=1)){while(1){if(y[b+54|0]){break a}Rd(x[f>>2],x[f+4>>2],b,c,d,e);f=f+8|0;if(g>>>0>f>>>0){continue}break}break a}if(!(a&1)){while(1){if(y[b+54|0]|x[b+36>>2]==1){break a}Rd(x[f>>2],x[f+4>>2],b,c,d,e);f=f+8|0;if(g>>>0>f>>>0){continue}break a}}while(1){if(y[b+54|0]|x[b+36>>2]==1&x[b+24>>2]==1){break a}Rd(x[f>>2],x[f+4>>2],b,c,d,e);f=f+8|0;if(g>>>0>f>>>0){continue}break}}}function Qc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=E(0),g=0,h=0,i=0,j=0;x[b+24>>2]=0;c=x[a+24>>2];if(c>>>0>A[b+28>>2]){x[b+28>>2]=c;d=x[b+32>>2];e=Da();i=b,j=sa[x[x[e>>2]+16>>2]](e,d,c<<2,7693,94)|0,x[i+32>>2]=j;c=x[a+24>>2];}if(c){c=0;while(1){e=x[a+32>>2]+(c<<2)|0;d=x[b+24>>2];a:{if((d|0)==x[b+28>>2]){e=x[e>>2];f=E(E(d>>>0)*E(1.75));b:{if(E(F(f))>>0<=8?8:d;x[b+28>>2]=d;g=x[b+32>>2];h=Da();d=sa[x[x[h>>2]+16>>2]](h,g,d<<2,7693,106)|0;x[b+32>>2]=d;g=x[b+24>>2];x[b+24>>2]=g+1;x[d+(g<<2)>>2]=e;break a}x[b+24>>2]=d+1;x[x[b+32>>2]+(d<<2)>>2]=x[e>>2];}c=c+1|0;if(c>>>0>2]){continue}break}}x[b+40>>2]=0;c=x[a+40>>2];if(c>>>0>A[b+44>>2]){x[b+44>>2]=c;d=x[b+48>>2];e=Da();i=b,j=sa[x[x[e>>2]+16>>2]](e,d,c<<2,7693,94)|0,x[i+48>>2]=j;c=x[a+40>>2];}if(c){c=x[b+40>>2];d=0;while(1){e=x[a+48>>2]+(d<<2)|0;c:{if(x[b+44>>2]==(c|0)){f=E(E(c>>>0)*E(1.75));d:{if(E(F(f))>2];c=c>>>0<=8?8:c;x[b+44>>2]=c;e=x[b+48>>2];g=Da();e=sa[x[x[g>>2]+16>>2]](g,e,c<<2,7693,106)|0;x[b+48>>2]=e;c=x[b+40>>2];B[e+(c<<2)>>2]=f;break c}B[x[b+48>>2]+(c<<2)>>2]=B[e>>2];}c=c+1|0;x[b+40>>2]=c;d=d+1|0;if(d>>>0>2]){continue}break}}x[b+52>>2]=x[a+52>>2];x[b+56>>2]=x[a+56>>2];}function Ie(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;f=qa-32|0;qa=f;x[f+24>>2]=0;x[f+28>>2]=0;x[f+20>>2]=b+20;e=x[f+24>>2];b=x[f+20>>2];g=x[b+4>>2];a:{if(e>>>0>=g>>>0){break a}while(1){h=x[f+28>>2];i=x[b+12>>2];if(h>>>0>=A[(i+(e<<4)|0)+4>>2]){b=e+1|0;x[f+24>>2]=b;if((b|0)==(g|0)){break a}e=b;b:{if(x[((b<<4)+i|0)+4>>2]){break b}while(1){b=b+1|0;if((g|0)!=(b|0)){e=b;if(!x[((b<<4)+i|0)+4>>2]){continue}break b}break}e=g;}x[f+24>>2]=e;h=0;if(b>>>0>=g>>>0){break a}}b=x[((e<<4)+i|0)+12>>2];x[f+28>>2]=h+1;b=b+D(h,20)|0;e=x[b>>2];x[f+4>>2]=1080;x[f>>2]=e;c:{if(!x[b+12>>2]){x[f+8>>2]=0;x[f+12>>2]=0;break c}x[f+8>>2]=x[b+8>>2];e=x[b+8>>2];g=Da();e=sa[x[x[g>>2]+12>>2]](g,e+1|0,8064,71)|0;x[f+12>>2]=e;Fa(e,x[b+12>>2],x[b+8>>2]+1|0);e=x[f>>2];}b=x[b+16>>2];x[f+16>>2]=b;if((c|0)==(e|0)){d:{if(!b){break d}if(!Fc(sa[x[x[b>>2]+8>>2]](b)|0,54196)){break d}g=b+20|0;h=x[g+4>>2];if(h){b=0;while(1){e=b<<2;b=b+1|0;e=b+x[e+x[g+12>>2]>>2]|0;if(b>>>0>>0){while(1){Pb(a,x[x[a+20>>2]+(x[x[g+12>>2]+(b<<2)>>2]<<2)>>2]);b=b+1|0;if((e|0)!=(b|0)){continue}break}b=e;}if(b>>>0>>0){continue}break}break d}Pb(a,d);}}x[f+4>>2]=1080;b=x[f+12>>2];if(b){e=Da();sa[x[x[e>>2]+20>>2]](e,b,8064,201);}e=x[f+24>>2];b=x[f+20>>2];g=x[b+4>>2];if(e>>>0>>0){continue}break}}qa=f+32|0;}function Qw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=x[a>>2];f=x[a+4>>2]-e>>1;if(f>>>0>>0){e=b-f|0;f=a;a:{d=x[a+8>>2];b=x[a+4>>2];if(e>>>0<=d-b>>1>>>0){b:{if(!e){break b}a=b;g=e&7;if(g){d=0;while(1){w[a>>1]=z[c>>1];a=a+2|0;d=d+1|0;if((g|0)!=(d|0)){continue}break}}b=(e<<1)+b|0;if((e-1&2147483647)>>>0<7){break b}while(1){w[a>>1]=z[c>>1];w[a+2>>1]=z[c>>1];w[a+4>>1]=z[c>>1];w[a+6>>1]=z[c>>1];w[a+8>>1]=z[c>>1];w[a+10>>1]=z[c>>1];w[a+12>>1]=z[c>>1];w[a+14>>1]=z[c>>1];a=a+16|0;if((b|0)!=(a|0)){continue}break}}x[f+4>>2]=b;break a}c:{g=x[f>>2];h=b-g>>1;a=h+e|0;if((a|0)>=0){d=d-g|0;i=d>>>0>=2147483646?2147483647:a>>>0>>0?d:a;if(i){if((i|0)<0){break c}j=Ea(i<<1);}d=(h<<1)+j|0;a=d;h=e&7;if(h){while(1){w[a>>1]=z[c>>1];a=a+2|0;k=k+1|0;if((h|0)!=(k|0)){continue}break}}h=(e<<1)+d|0;if((e-1&2147483647)>>>0>=7){while(1){w[a>>1]=z[c>>1];w[a+2>>1]=z[c>>1];w[a+4>>1]=z[c>>1];w[a+6>>1]=z[c>>1];w[a+8>>1]=z[c>>1];w[a+10>>1]=z[c>>1];w[a+12>>1]=z[c>>1];w[a+14>>1]=z[c>>1];a=a+16|0;if((h|0)!=(a|0)){continue}break}}if((b|0)!=(g|0)){while(1){d=d-2|0;b=b-2|0;w[d>>1]=z[b>>1];if((b|0)!=(g|0)){continue}break}}x[f+8>>2]=(i<<1)+j;x[f+4>>2]=h;x[f>>2]=d;if(g){Ja(g);}break a}O();p();}kb();p();}return}if(b>>>0>>0){x[a+4>>2]=e+(b<<1);}}function Qe(a,b){var c=E(0),d=0,e=0,f=0,g=0;b=If(a,b);x[b+52>>2]=0;x[b+56>>2]=0;x[b+48>>2]=1065353216;x[b+40>>2]=0;x[b+44>>2]=1065353216;x[b+32>>2]=0;x[b+36>>2]=0;x[b+20>>2]=16668;a=8;x[b>>2]=16644;x[b+24>>2]=0;x[b+28>>2]=0;x[b+116>>2]=1080;x[b+100>>2]=13296;x[b+84>>2]=13296;x[b+60>>2]=0;x[b+64>>2]=0;x[b+68>>2]=0;x[b+72>>2]=0;x[b+76>>2]=0;x[b+80>>2]=0;x[b+112>>2]=0;x[b+104>>2]=0;x[b+108>>2]=0;x[b+96>>2]=0;x[b+88>>2]=0;x[b+92>>2]=0;x[b+136>>2]=0;x[b+140>>2]=0;x[b+128>>2]=0;x[b+132>>2]=0;x[b+120>>2]=0;x[b+124>>2]=0;x[b+144>>2]=14896;x[b+148>>2]=1065353216;x[b+152>>2]=1065353216;x[b+156>>2]=1065353216;x[b+160>>2]=1065353216;B[b+148>>2]=1;c=B[b+152>>2];B[b+152>>2]=cE(1)?E(1):c;c=B[b+156>>2];B[b+156>>2]=cE(1)?E(1):c;c=B[b+160>>2];B[b+160>>2]=cE(1)?E(1):c;d=x[b+88>>2];x[b+88>>2]=8;if(A[b+92>>2]<=7){x[b+92>>2]=14;a=x[b+96>>2];e=Da();f=b,g=sa[x[x[e>>2]+16>>2]](e,a,56,7693,82)|0,x[f+96>>2]=g;a=x[b+88>>2];}if(a>>>0>d>>>0){Ha(x[b+96>>2]+(d<<2)|0,0,a-d<<2);}a=x[b+104>>2];d=8;x[b+104>>2]=8;if(A[b+108>>2]<=7){x[b+108>>2]=14;d=x[b+112>>2];e=Da();f=b,g=sa[x[x[e>>2]+16>>2]](e,d,56,7693,82)|0,x[f+112>>2]=g;d=x[b+104>>2];}if(a>>>0>>0){Ha(x[b+112>>2]+(a<<2)|0,0,d-a<<2);}return b}function nc(a){var b=E(0),c=E(0),d=E(0),e=E(0),f=E(0),g=0,h=E(0),i=E(0),j=E(0),k=E(0),l=E(0),m=E(0),n=0,o=E(0);v[a+88|0]=1;g=x[a+12>>2];if(!g){B[a+60>>2]=B[a+100>>2];B[a+64>>2]=B[a+112>>2];c=Va(B[a+104>>2],B[a+92>>2]);e=B[3979];B[a+68>>2]=c*e;b=B[a+92>>2];c=E(b*b);b=B[a+104>>2];B[a+72>>2]=M(E(c+E(b*b)));b=B[a+96>>2];d=B[a+108>>2];x[a+80>>2]=0;B[a+76>>2]=M(E(E(b*b)+E(d*d)));c=e;b=B[a+92>>2];d=B[a+96>>2];e=B[a+104>>2];f=B[a+108>>2];n=a,o=E(c*Va(E(E(b*d)+E(e*f)),E(E(b*f)-E(e*d)))),B[n+84>>2]=o;return}b=B[g+112>>2];c=B[g+100>>2];d=B[g+108>>2];f=B[g+92>>2];h=B[g+104>>2];e=B[g+96>>2];x[a+80>>2]=0;i=E(B[a+112>>2]-b);b=E(E(1)/E(E(f*d)-E(h*e)));c=E(B[a+100>>2]-c);B[a+64>>2]=E(E(f*i)*b)-E(b*E(h*c));B[a+60>>2]=E(E(d*c)*b)-E(b*E(e*i));c=B[a+96>>2];i=B[a+108>>2];d=E(d*b);k=B[a+92>>2];j=E(-b);l=E(e*j);m=B[a+104>>2];e=E(E(d*k)+E(l*m));b=E(f*b);j=E(h*j);f=E(E(b*m)+E(j*k));h=E(M(E(E(e*e)+E(f*f))));B[a+72>>2]=h;b=E(E(b*i)+E(j*c));d=E(E(d*c)+E(l*i));if(h>E(9999999747378752e-20)){c=E(E(e*b)-E(f*d));B[a+76>>2]=c/h;c=Va(E(E(e*d)+E(f*b)),c);b=B[3979];B[a+84>>2]=c*b;n=a,o=E(b*Va(f,e)),B[n+68>>2]=o;return}x[a+72>>2]=0;x[a+84>>2]=0;B[a+76>>2]=M(E(E(d*d)+E(b*b)));n=a,o=E(E(90)-E(Va(b,d)*B[3979])),B[n+68>>2]=o;}function fg(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=E(0),k=E(0),l=E(0),m=E(0),n=E(0),o=0;j=B[b+56>>2];l=B[b+52>>2];k=E(j-l);m=Sb(B[b+76>>2],k);h=x[a+60>>2];a:{if(!h){break a}while(1){d=x[x[a+68>>2]+(g<<2)>>2];n=B[d+8>>2];if(n>2],b,d);}g=g+1|0;if((h|0)!=(g|0)){continue}break}g=h;}b:{c:{if(y[b+36|0]){if(k==E(0)){break c}if(Sb(B[b+72>>2],k)=j)|!(B[b+60>>2]>2];e=qa-32|0;qa=e;x[e+12>>2]=0;x[e+8>>2]=b;x[e+4>>2]=4;x[e>>2]=12876;f=x[d+8>>2];d:{if((f|0)==x[d+12>>2]){x[e+28>>2]=x[e+12>>2];i=x[e+8>>2];x[e+20>>2]=x[e+4>>2];x[e+24>>2]=i;x[e+16>>2]=12876;c=E(E(f>>>0)*E(1.75));e:{if(E(F(c))>>0<=8?8:f;x[d+12>>2]=f;i=x[d+16>>2];o=Da();f=sa[x[x[o>>2]+16>>2]](o,i,f<<4,7693,106)|0;x[d+16>>2]=f;i=d;d=x[d+8>>2];x[i+8>>2]=d+1;d=f+(d<<4)|0;x[d>>2]=12876;f=x[e+24>>2];x[d+4>>2]=x[e+20>>2];x[d+8>>2]=f;x[d+12>>2]=x[e+28>>2];break d}x[d+8>>2]=f+1;d=x[d+16>>2]+(f<<4)|0;x[d>>2]=12876;f=x[e+8>>2];x[d+4>>2]=x[e+4>>2];x[d+8>>2]=f;x[d+12>>2]=x[e+12>>2];}qa=e+32|0;}if(g>>>0>>0){while(1){d=x[x[a+68>>2]+(g<<2)>>2];if(!(B[d+8>>2]>2],b,d);}g=g+1|0;if((h|0)!=(g|0)){continue}break}}}function Hu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;e=qa+-64|0;qa=e;a:{if(gb(b,53036,0)){x[c>>2]=0;f=1;break a}b:{if(y[a+8|0]&24){d=gb(a,b,1);break b}c:{if(!b){break c}g=Qb(b,52748);if(!g){break c}d=gb(a,b,(x[g+8>>2]&24)!=0);}}if(d){f=1;a=x[c>>2];if(!a){break a}x[c>>2]=x[a>>2];break a}if(!b){break a}b=Qb(b,52796);if(!b){break a}d=x[c>>2];if(d){h=x[d>>2];x[c>>2]=h;}d=x[b+8>>2];g=x[a+8>>2];if(d&(g^-1)&7|g&(d^-1)&96){break a}f=1;d=x[a+12>>2];a=x[b+12>>2];if(gb(d,a,0)){break a}if(gb(d,53004,0)){if(!a){break a}f=!Qb(a,52848);break a}f=0;if(!d){break a}b=Qb(d,52796);if(b){if(!(g&1)){break a}d:{e:{while(1){if(!a){break e}a=Qb(a,52796);if(!a){break e}g=x[b+8>>2];if(x[a+8>>2]&(g^-1)){break e}d=x[b+12>>2];a=x[a+12>>2];b=1;if(gb(d,a,0)){break d}if(!(g&1)|!d){break e}b=Qb(d,52796);if(b){continue}break}b=Qb(d,52908);if(!b){break e}f=Ph(b,a);}b=f;}f=b;break a}b=Qb(d,52908);if(b){if(!(g&1)){break a}f=Ph(b,a);break a}b=Qb(d,52700);if(!b|!a){break a}a=Qb(a,52700);if(!a){break a}Ha(e+12|0,0,52);x[e+56>>2]=1;x[e+20>>2]=-1;x[e+16>>2]=b;x[e+8>>2]=a;sa[x[x[a>>2]+28>>2]](a,e+8|0,h,1);a=x[e+32>>2];if(!(!x[c>>2]|(a|0)!=1)){x[c>>2]=x[e+24>>2];}f=(a|0)==1;}qa=e- -64|0;return f|0}function ek(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;g=qa-16|0;qa=g;x[g>>2]=13296;c=x[b+8>>2];x[g+4>>2]=c;d=x[b+12>>2];x[g+12>>2]=0;x[g+8>>2]=d;a:{if(!d){break a}e=Da();d=sa[x[x[e>>2]+12>>2]](e,d<<2,7693,197)|0;x[g+12>>2]=d;if(!c){break a}b=x[b+16>>2];if(c>>>0>=4){h=c&-4;while(1){e=f<<2;B[e+d>>2]=B[b+e>>2];j=e|4;B[j+d>>2]=B[b+j>>2];j=e|8;B[j+d>>2]=B[b+j>>2];e=e|12;B[e+d>>2]=B[b+e>>2];f=f+4|0;i=i+4|0;if((h|0)!=(i|0)){continue}break}}c=c&3;if(!c){break a}while(1){e=f<<2;B[e+d>>2]=B[b+e>>2];f=f+1|0;k=k+1|0;if((c|0)!=(k|0)){continue}break}}b=x[g+12>>2];d=x[g+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;b:{c:{d:{if(d){if(d>>>0>=1073741824){break b}f=d<<2;c=Ea(f);x[a>>2]=c;e=c+f|0;x[a+8>>2]=e;f=Ha(c,0,f);x[a+4>>2]=e;a=0;if(d>>>0>=4){e=d&-4;i=0;while(1){c=a<<2;B[c+f>>2]=B[b+c>>2];h=c|4;B[h+f>>2]=B[b+h>>2];h=c|8;B[h+f>>2]=B[b+h>>2];c=c|12;B[c+f>>2]=B[b+c>>2];a=a+4|0;i=i+4|0;if((e|0)!=(i|0)){continue}break}}d=d&3;if(d){while(1){c=a<<2;B[c+f>>2]=B[b+c>>2];a=a+1|0;l=l+1|0;if((d|0)!=(l|0)){continue}break}}x[g+4>>2]=0;x[g>>2]=13296;break d}x[g+4>>2]=0;x[g>>2]=13296;if(!b){break c}}a=Da();sa[x[x[a>>2]+20>>2]](a,b,7693,206);}qa=g+16|0;return}O();p();}function hf(a,b,c,d,e,f,g){var h=E(0),i=E(0),j=E(0),k=0,l=E(0),m=E(0),n=E(0),o=E(0),p=0,q=E(0);n=B[a+68>>2];m=E(-B[a+80>>2]);k=x[a+12>>2];l=B[k+108>>2];h=B[k+104>>2];j=B[k+96>>2];i=B[k+92>>2];if(!y[a+88|0]){nc(a);}n=E(m-n);a:{b:{switch(x[x[a+4>>2]+56>>2]-1|0){case 0:k=a+112|0;h=c;i=E(b-B[a+100>>2]);break a;case 1:j=E(E(i*l)-E(h*j));j=E((j>2]);o=E(b-B[k+100>>2]);q=E(E(m*i)-E(h*o));i=E(E(i*l)-E(h*j));h=E(q/i);k=a- -64|0;i=E(E(E(E(o*l)-E(j*m))/i)-B[a+60>>2]);}m=E(h-B[k>>2]);h=E(E(Va(m,i)*B[3979])+n);l=B[a+72>>2];h=lE(180)){h=E(h+E(-360));break c}if(!(h>2];d:{if(!(d|e)){break d}k=x[a+4>>2];p=x[k+56>>2]-3>>>0<2;b=p?E(b-B[a+100>>2]):i;i=E(b*b);b=p?E(c-B[a+112>>2]):m;c=E(M(E(i+E(b*b))));b=E(l*B[k+24>>2]);e:{if(!(d?cE(9999999747378752e-20)){break e}break d}if(!(b>E(9999999747378752e-20))){break d}}b=E(E(E(E(c/b)+E(-1))*g)+E(1));l=E(l*b);j=E(j*(f?b:E(1)));}hc(a,B[a+60>>2],B[a+64>>2],E(E(h*g)+B[a+68>>2]),l,j,B[a+80>>2],B[a+84>>2]);}function Ck(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=E(c);d=E(d);e=e|0;f=f|0;g=E(g);h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=E(0),q=0,r=0,s=0;k=qa-16|0;qa=k;m=x[f>>2];j=x[f+4>>2];x[k+8>>2]=0;x[k+12>>2]=0;x[k>>2]=13472;o=j-m|0;l=o>>2;x[k+4>>2]=l;a:{if((j|0)==(m|0)){break a}p=E(E(l>>>0)*E(1.75));b:{if(E(F(p))>>0<=8?8:j;x[k+8>>2]=m;j=Da();n=sa[x[x[j>>2]+16>>2]](j,0,m<<2,7693,82)|0;x[k+12>>2]=n;Ha(n,0,o&-4);}c:{if((o|0)<=0){break c}j=(l|0)<=1?1:l;o=j&3;if(j>>>0>=4){m=j&2147483644;while(1){l=q<<2;x[l+n>>2]=x[l+x[f>>2]>>2];j=l|4;x[j+n>>2]=x[j+x[f>>2]>>2];j=l|8;x[j+n>>2]=x[j+x[f>>2]>>2];j=l|12;x[j+n>>2]=x[j+x[f>>2]>>2];q=q+4|0;r=r+4|0;if((r|0)!=(m|0)){continue}break}}if(!o){break c}while(1){r=q<<2;x[r+n>>2]=x[r+x[f>>2]>>2];q=q+1|0;s=s+1|0;if((o|0)!=(s|0)){continue}break}}d:{if(!e){break d}p=B[a+32>>2];if(p==E(0)){break d}d=Sb(d,p);if(!(c>E(0))){break d}c=Sb(c,B[a+32>>2]);}s=x[a+8>>2];if(s){e=0;while(1){f=x[x[a+16>>2]+(e<<2)>>2];sa[x[x[f>>2]+12>>2]](f,b,c,d,k,g,h,i);e=e+1|0;if((s|0)!=(e|0)){continue}break}}x[k+4>>2]=0;x[k>>2]=13472;b=x[k+12>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,7693,206);}qa=k+16|0;}function Bq(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=E(c);d=E(d);e=e|0;f=E(f);g=g|0;h=h|0;var i=E(0),j=0,k=E(0);a:{b=x[x[b+20>>2]+(x[a+36>>2]<<2)>>2];if(!y[b+117|0]){break a}e=x[a+32>>2];if(B[e>>2]>d){b:{switch(g|0){case 0:a=x[b+4>>2];B[b+52>>2]=B[a+48>>2];B[b+56>>2]=B[a+52>>2];return;case 1:break b;default:break a}}a=x[b+4>>2];c=B[b+52>>2];B[b+52>>2]=E(E(B[a+48>>2]-c)*f)+c;c=B[b+56>>2];B[b+56>>2]=E(E(B[a+52>>2]-c)*f)+c;return}h=x[a+24>>2];j=x[4890];c:{if(B[e+(h-j<<2)>>2]<=d){d=B[e+(h+x[4893]<<2)>>2];c=B[e+(h+x[4892]<<2)>>2];break c}e=Nb(a+20|0,d,j);h=x[a+32>>2];c=B[h+(e+x[4892]<<2)>>2];k=B[h+(e+x[4893]<<2)>>2];i=d;d=B[h+(e<<2)>>2];i=Kb(a,((e|0)/(j|0)|0)-1|0,E(E(1)-E(E(i-d)/E(B[h+(e+x[4891]<<2)>>2]-d))));a=x[a+32>>2];d=E(k+E(i*E(B[a+(e+x[4895]<<2)>>2]-k)));c=E(c+E(i*E(B[a+(e+x[4894]<<2)>>2]-c)));}d:{switch(g|0){case 0:a=x[b+4>>2];B[b+52>>2]=E(c*f)+B[a+48>>2];B[b+56>>2]=E(d*f)+B[a+52>>2];return;case 1:case 2:a=x[b+4>>2];i=E(c+B[a+48>>2]);c=B[b+52>>2];B[b+52>>2]=E(E(i-c)*f)+c;c=B[b+56>>2];B[b+56>>2]=E(E(E(d+B[a+52>>2])-c)*f)+c;return;case 3:break d;default:break a}}B[b+52>>2]=E(c*f)+B[b+52>>2];B[b+56>>2]=E(d*f)+B[b+56>>2];}}function bi(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=qa-16|0;qa=l;a:{b:{c:{if((c|0)<=36){f=y[a|0];if(f){break c}e=a;break b}x[13623]=28;d=0;break a}e=a;d:{while(1){h=f<<24>>24;if(!((h|0)==32|h-9>>>0<5)){break d}f=y[e+1|0];e=e+1|0;if(f){continue}break}break b}e:{f=f&255;switch(f-43|0){case 0:case 2:break e;default:break b}}i=(f|0)==45?-1:0;e=e+1|0;}f:{if(!((c|16)!=16|y[e|0]!=48)){n=1;if((y[e+1|0]&223)==88){e=e+2|0;h=16;break f}e=e+1|0;h=c?c:8;break f}h=c?c:10;}c=0;while(1){g:{f=-48;g=v[e|0];h:{if((g-48&255)>>>0<10){break h}f=-87;if((g-97&255)>>>0<26){break h}f=-55;if((g-65&255)>>>0>25){break g}}g=f+g|0;if((g|0)>=(h|0)){break g}ob(l,h,0,0,0,j,k,0,0);f=1;i:{if(x[l+8>>2]|x[l+12>>2]){break i}o=Uw(j,k,h,0);m=ra;if((m|0)==-1&(g^-1)>>>0>>0){break i}j=g+o|0;k=j>>>0>>0?m+1|0:m;n=1;f=c;}e=e+1|0;c=f;continue}break}if(b){x[b>>2]=n?e:a;}j:{k:{if(c){x[13623]=68;a=d&1;i=a?0:i;j=d;k=0;break k}if(!k&d>>>0>j>>>0){break j}a=d&1;}if(!(a|i)){x[13623]=68;a=d;d=a-1|0;p=0-!a|0;break a}if(!k&d>>>0>=j>>>0){break j}x[13623]=68;break a}a=i^j;d=a-i|0;b=i>>31;p=(b^k)-((a>>>0>>0)+b|0)|0;}qa=l+16|0;ra=p;return d}function We(a){a=a|0;var b=0,c=E(0),d=0,e=0,f=0;b=Ma(236,4604,310);Zc(b,a+4|0);d=x[a+68>>2];f=x[b+72>>2];a:{if(!f){break a}e=x[b+68>>2];if(!e|(d|0)==(e|0)){break a}sa[f|0](e);}x[b+72>>2]=0;x[b+68>>2]=d;B[b+180>>2]=B[a+180>>2];B[b+184>>2]=B[a+184>>2];B[b+188>>2]=B[a+188>>2];B[b+192>>2]=B[a+192>>2];v[b+228|0]=y[a+228|0];x[b+232>>2]=x[a+232>>2];B[b+76>>2]=B[a+76>>2];B[b+80>>2]=B[a+80>>2];B[b+84>>2]=B[a+84>>2];B[b+88>>2]=B[a+88>>2];B[b+92>>2]=B[a+92>>2];B[b+96>>2]=B[a+96>>2];b:{if((a|0)==(b|0)){break b}d=x[b+176>>2];if(d){e=Da();sa[x[x[e>>2]+20>>2]](e,d,8064,122);}if(!x[a+176>>2]){x[b+172>>2]=0;x[b+176>>2]=0;break b}x[b+172>>2]=x[a+172>>2];d=x[a+172>>2];e=Da();d=sa[x[x[e>>2]+12>>2]](e,d+1|0,8064,129)|0;x[b+176>>2]=d;Fa(d,x[a+176>>2],x[a+172>>2]+1|0);}c=B[a+208>>2];B[b+208>>2]=c;B[b+212>>2]=B[a+212>>2];B[b+216>>2]=B[a+216>>2];B[b+220>>2]=B[a+220>>2];B[b+208>>2]=cE(1)?E(1):c;c=B[b+212>>2];B[b+212>>2]=cE(1)?E(1):c;c=B[b+216>>2];B[b+216>>2]=cE(1)?E(1):c;c=B[b+220>>2];B[b+220>>2]=cE(1)?E(1):c;x[b+56>>2]=x[a+56>>2];d=x[a+100>>2];Dd(b,d?d:a);mc(b);return b|0}function Fa(a,b,c){var d=0,e=0,f=0;if(c>>>0>=512){ja(a|0,b|0,c|0);return a}e=a+c|0;a:{if(!((a^b)&3)){b:{if(!(a&3)){c=a;break b}if(!c){c=a;break b}c=a;while(1){v[c|0]=y[b|0];b=b+1|0;c=c+1|0;if(!(c&3)){break b}if(c>>>0>>0){continue}break}}d=e&-4;c:{if(d>>>0<64){break c}f=d+-64|0;if(f>>>0>>0){break c}while(1){x[c>>2]=x[b>>2];x[c+4>>2]=x[b+4>>2];x[c+8>>2]=x[b+8>>2];x[c+12>>2]=x[b+12>>2];x[c+16>>2]=x[b+16>>2];x[c+20>>2]=x[b+20>>2];x[c+24>>2]=x[b+24>>2];x[c+28>>2]=x[b+28>>2];x[c+32>>2]=x[b+32>>2];x[c+36>>2]=x[b+36>>2];x[c+40>>2]=x[b+40>>2];x[c+44>>2]=x[b+44>>2];x[c+48>>2]=x[b+48>>2];x[c+52>>2]=x[b+52>>2];x[c+56>>2]=x[b+56>>2];x[c+60>>2]=x[b+60>>2];b=b- -64|0;c=c- -64|0;if(f>>>0>=c>>>0){continue}break}}if(c>>>0>=d>>>0){break a}while(1){x[c>>2]=x[b>>2];b=b+4|0;c=c+4|0;if(d>>>0>c>>>0){continue}break}break a}if(e>>>0<4){c=a;break a}d=e-4|0;if(d>>>0>>0){c=a;break a}c=a;while(1){v[c|0]=y[b|0];v[c+1|0]=y[b+1|0];v[c+2|0]=y[b+2|0];v[c+3|0]=y[b+3|0];b=b+4|0;c=c+4|0;if(d>>>0>=c>>>0){continue}break}}if(c>>>0>>0){while(1){v[c|0]=y[b|0];b=b+1|0;c=c+1|0;if((e|0)!=(c|0)){continue}break}}return a}function hl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;g=qa-16|0;qa=g;x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;x[g+8>>2]=0;x[g+12>>2]=0;x[g+4>>2]=b+20;a:{b:{f=x[g+8>>2];d=x[g+4>>2];e=x[d+4>>2];c:{if(f>>>0>=e>>>0){break c}b=0;while(1){h=x[g+12>>2];d=x[d+12>>2];if(h>>>0>=A[(d+(f<<4)|0)+4>>2]){f=f+1|0;if((e|0)==(f|0)){break c}if(!x[(d+(f<<4)|0)+4>>2]){while(1){f=f+1|0;if((e|0)==(f|0)){break c}if(!x[(d+(f<<4)|0)+4>>2]){continue}break}}x[g+8>>2]=f;h=0;if(e>>>0<=f>>>0){break c}}d=x[(d+(f<<4)|0)+12>>2];x[g+12>>2]=h+1;j=d+D(h,20)|0;d:{if(x[j>>2]!=(c|0)){break d}if(b>>>0>>0){x[b>>2]=j;b=b+4|0;x[a+4>>2]=b;break d}e=b-i>>2;d=e+1|0;if(d>>>0>=1073741824){break b}l=e<<2;e=k-i|0;h=e>>1;e=e>>>0>=2147483644?1073741823:d>>>0>>0?h:d;if(e){if(e>>>0>=1073741824){break a}h=Ea(e<<2);}else {h=0;}d=l+h|0;x[d>>2]=j;k=h+(e<<2)|0;e=d+4|0;if((b|0)!=(i|0)){while(1){d=d-4|0;b=b-4|0;x[d>>2]=x[b>>2];if((b|0)!=(i|0)){continue}break}}x[a+8>>2]=k;x[a+4>>2]=e;x[a>>2]=d;if(i){Ja(i);f=x[g+8>>2];}i=d;b=e;}d=x[g+4>>2];e=x[d+4>>2];if(e>>>0>f>>>0){continue}break}}qa=g+16|0;return}O();p();}kb();p();}function Vh(a){var b=0,c=0,d=0,e=0,f=0;a:{b:{b=x[a+4>>2];c:{if((b|0)!=x[a+104>>2]){x[a+4>>2]=b+1;b=y[b|0];break c}b=Wa(a);}switch(b-43|0){case 0:case 2:break b;default:break a}}f=(b|0)==45;b=x[a+4>>2];if((b|0)!=x[a+104>>2]){x[a+4>>2]=b+1;b=y[b|0];break a}b=Wa(a);}d:{if(b-58>>>0>4294967285){while(1){d=(D(d,10)+b|0)-48|0;c=(d|0)<214748364;b=x[a+4>>2];e:{if((b|0)!=x[a+104>>2]){x[a+4>>2]=b+1;b=y[b|0];break e}b=Wa(a);}e=b-48|0;if(c&e>>>0<=9){continue}break}c=d>>31;f:{if(e>>>0>=10){break f}while(1){d=Uw(d,c,10,0);b=d+b|0;c=ra;c=b>>>0>>0?c+1|0:c;d=b-48|0;c=c-(b>>>0<48)|0;b=x[a+4>>2];g:{if((b|0)!=x[a+104>>2]){x[a+4>>2]=b+1;b=y[b|0];break g}b=Wa(a);}e=b-48|0;if(e>>>0>9){break f}if(d>>>0<2061584302&(c|0)<=21474836|(c|0)<21474836){continue}break}}if(e>>>0<10){while(1){b=x[a+4>>2];h:{if((b|0)!=x[a+104>>2]){x[a+4>>2]=b+1;b=y[b|0];break h}b=Wa(a);}if(b-48>>>0<10){continue}break}}b=x[a+116>>2];if((b|0)>0|(b|0)>=0){x[a+4>>2]=x[a+4>>2]-1;}a=d;d=f?0-a|0:a;c=f?0-(((a|0)!=0)+c|0)|0:c;break d}c=-2147483648;if(x[a+116>>2]<0){break d}x[a+4>>2]=x[a+4>>2]-1;ra=-2147483648;return 0}ra=c;return d}function Sg(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=E(0),j=0,k=0,l=0,m=0;e=x[a+4>>2];x[a+4>>2]=e+1;c=v[e|0];d=c&127;a:{if((c|0)>=0){break a}x[a+4>>2]=e+2;c=v[e+1|0];d=c<<7&16256|d;if((c|0)>=0){break a}x[a+4>>2]=e+3;c=v[e+2|0];d=c<<14&2080768|d;if((c|0)>=0){break a}x[a+4>>2]=e+4;c=v[e+3|0];d=c<<21&266338304|d;if((c|0)>=0){break a}x[a+4>>2]=e+5;d=y[e+4|0]<<28|d;}g=x[b+4>>2];x[b+4>>2]=d;c=d;if(c>>>0>A[b+8>>2]){i=E(E(d>>>0)*E(1.75));b:{if(E(F(i))>>0<=8?8:c;x[b+8>>2]=f;e=x[b+12>>2];c=Da();l=b,m=sa[x[x[c>>2]+16>>2]](c,e,f<<1,7693,82)|0,x[l+12>>2]=m;c=x[b+4>>2];}if(c>>>0>g>>>0){Ha(x[b+12>>2]+(g<<1)|0,0,c-g<<1);}c:{if((d|0)<=0){break c}k=d&1;c=x[a+4>>2];h=x[b+12>>2];b=0;d:{if((d|0)==1){d=c;break d}g=d&-2;while(1){x[a+4>>2]=c+1;f=b<<1;e=f+h|0;d=y[c|0]<<8;w[e>>1]=d;x[a+4>>2]=c+2;w[e>>1]=d|y[c+1|0];x[a+4>>2]=c+3;f=(f|2)+h|0;e=y[c+2|0]<<8;w[f>>1]=e;d=c+4|0;x[a+4>>2]=d;w[f>>1]=e|y[c+3|0];b=b+2|0;c=d;j=j+2|0;if((g|0)!=(j|0)){continue}break}}if(!k){break c}x[a+4>>2]=d+1;c=(b<<1)+h|0;b=y[d|0]<<8;w[c>>1]=b;x[a+4>>2]=d+2;w[c>>1]=b|y[d+1|0];}}function kl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;f=qa-16|0;qa=f;x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;x[f+8>>2]=0;x[f+12>>2]=0;x[f+4>>2]=b+20;a:{b:{e=x[f+8>>2];c=x[f+4>>2];d=x[c+4>>2];c:{if(e>>>0>=d>>>0){break c}b=0;while(1){g=x[f+12>>2];c=x[c+12>>2];if(g>>>0>=A[(c+(e<<4)|0)+4>>2]){e=e+1|0;if((d|0)==(e|0)){break c}if(!x[(c+(e<<4)|0)+4>>2]){while(1){e=e+1|0;if((d|0)==(e|0)){break c}if(!x[(c+(e<<4)|0)+4>>2]){continue}break}}x[f+8>>2]=e;g=0;if(d>>>0<=e>>>0){break c}}c=x[(c+(e<<4)|0)+12>>2];x[f+12>>2]=g+1;j=c+D(g,20)|0;d:{if(b>>>0>>0){x[b>>2]=j;b=b+4|0;x[a+4>>2]=b;break d}d=b-h>>2;c=d+1|0;if(c>>>0>=1073741824){break b}k=d<<2;d=i-h|0;g=d>>1;d=d>>>0>=2147483644?1073741823:c>>>0>>0?g:c;if(d){if(d>>>0>=1073741824){break a}g=Ea(d<<2);}else {g=0;}c=k+g|0;x[c>>2]=j;i=g+(d<<2)|0;d=c+4|0;if((b|0)!=(h|0)){while(1){c=c-4|0;b=b-4|0;x[c>>2]=x[b>>2];if((b|0)!=(h|0)){continue}break}}x[a+8>>2]=i;x[a+4>>2]=d;x[a>>2]=c;if(h){Ja(h);e=x[f+8>>2];}h=c;b=d;}c=x[f+4>>2];d=x[c+4>>2];if(d>>>0>e>>>0){continue}break}}qa=f+16|0;return}O();p();}kb();p();}function ao(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=E(c);d=E(d);e=e|0;f=E(f);g=g|0;h=h|0;var i=E(0),j=0,k=E(0);a:{b=x[x[b+20>>2]+(x[a+36>>2]<<2)>>2];if(!y[b+117|0]){break a}e=x[a+32>>2];if(B[e>>2]>d){b:{switch(g|0){case 0:a=x[b+4>>2];B[b+32>>2]=B[a+28>>2];B[b+36>>2]=B[a+32>>2];return;case 1:break b;default:break a}}a=x[b+4>>2];c=B[b+32>>2];B[b+32>>2]=E(E(B[a+28>>2]-c)*f)+c;c=B[b+36>>2];B[b+36>>2]=E(E(B[a+32>>2]-c)*f)+c;return}e=e+(x[a+24>>2]<<2)|0;c:{if(B[e-12>>2]<=d){d=B[e-4>>2];c=B[e-8>>2];break c}h=Nb(a+20|0,d,3);j=h<<2;e=j+x[a+32>>2]|0;c=B[e-8>>2];k=B[e-4>>2];i=d;d=B[e>>2];i=Kb(a,((h|0)/3|0)-1|0,E(E(1)-E(E(i-d)/E(B[e-12>>2]-d))));a=x[a+32>>2]+j|0;d=E(k+E(i*E(B[a+8>>2]-k)));c=E(c+E(i*E(B[a+4>>2]-c)));}d:{switch(g|0){case 0:a=x[b+4>>2];B[b+32>>2]=E(c*f)+B[a+28>>2];B[b+36>>2]=E(d*f)+B[a+32>>2];return;case 1:case 2:a=x[b+4>>2];i=E(c+B[a+28>>2]);c=B[b+32>>2];B[b+32>>2]=E(E(i-c)*f)+c;c=B[b+36>>2];B[b+36>>2]=E(E(E(d+B[a+32>>2])-c)*f)+c;return;case 3:break d;default:break a}}B[b+32>>2]=E(c*f)+B[b+32>>2];B[b+36>>2]=E(d*f)+B[b+36>>2];}}function ug(a,b){var c=0,d=0,e=0;c=(a|0)==(b|0);v[b+12|0]=c;a:{if(c){break a}while(1){d=x[b+8>>2];if(y[d+12|0]){break a}b:{c=x[d+8>>2];e=x[c>>2];if((e|0)==(d|0)){e=x[c+4>>2];if(!(!e|y[e+12|0])){break b}c:{if(x[d>>2]==(b|0)){b=d;break c}b=x[d+4>>2];a=x[b>>2];x[d+4>>2]=a;if(a){x[a+8>>2]=d;c=x[d+8>>2];}x[b+8>>2]=c;a=x[d+8>>2];x[((x[a>>2]!=(d|0))<<2)+a>>2]=b;x[b>>2]=d;x[d+8>>2]=b;c=x[b+8>>2];d=x[c>>2];}v[b+12|0]=1;v[c+12|0]=0;a=x[d+4>>2];x[c>>2]=a;if(a){x[a+8>>2]=c;}x[d+8>>2]=x[c+8>>2];a=x[c+8>>2];x[((x[a>>2]!=(c|0))<<2)+a>>2]=d;x[d+4>>2]=c;x[c+8>>2]=d;return}if(!(y[e+12|0]|!e)){break b}d:{if(x[d>>2]!=(b|0)){b=d;break d}a=x[b+4>>2];x[d>>2]=a;if(a){x[a+8>>2]=d;c=x[d+8>>2];}x[b+8>>2]=c;a=x[d+8>>2];x[((x[a>>2]!=(d|0))<<2)+a>>2]=b;x[b+4>>2]=d;x[d+8>>2]=b;c=x[b+8>>2];}v[b+12|0]=1;v[c+12|0]=0;a=x[c+4>>2];b=x[a>>2];x[c+4>>2]=b;if(b){x[b+8>>2]=c;}x[a+8>>2]=x[c+8>>2];b=x[c+8>>2];x[((x[b>>2]!=(c|0))<<2)+b>>2]=a;x[a>>2]=c;x[c+8>>2]=a;break a}v[d+12|0]=1;v[c+12|0]=(a|0)==(c|0);v[e+12|0]=1;b=c;if((c|0)!=(a|0)){continue}break}}}function Iw(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=x[a+4>>2];if((c|0)!=x[a+8>>2]){a:{if(v[b+11|0]>=0){d=x[b+4>>2];x[c>>2]=x[b>>2];x[c+4>>2]=d;x[c+8>>2]=x[b+8>>2];break a}dd(c,x[b>>2],x[b+4>>2]);}x[a+4>>2]=c+12;return}b:{c:{d:{d=x[a+4>>2];e=x[a>>2];f=(d-e|0)/12|0;c=f+1|0;if(c>>>0<357913942){h=(x[a+8>>2]-e|0)/12|0;i=h<<1;c=h>>>0>=178956970?357913941:c>>>0>>0?i:c;if(c){if(c>>>0>=357913942){break d}g=Ea(D(c,12));}h=D(c,12);c=D(f,12)+g|0;e:{if(v[b+11|0]>=0){f=x[b+4>>2];x[c>>2]=x[b>>2];x[c+4>>2]=f;x[c+8>>2]=x[b+8>>2];break e}dd(c,x[b>>2],x[b+4>>2]);e=x[a>>2];d=x[a+4>>2];}b=g+h|0;g=c+12|0;if((d|0)==(e|0)){break c}while(1){d=d-12|0;f=x[d+4>>2];c=c-12|0;x[c>>2]=x[d>>2];x[c+4>>2]=f;x[c+8>>2]=x[d+8>>2];x[d>>2]=0;x[d+4>>2]=0;x[d+8>>2]=0;if((d|0)!=(e|0)){continue}break}x[a+8>>2]=b;b=x[a+4>>2];x[a+4>>2]=g;e=x[a>>2];x[a>>2]=c;if((b|0)==(e|0)){break b}while(1){a=b-12|0;if(v[b-1|0]<0){Ja(x[a>>2]);}b=a;if((e|0)!=(a|0)){continue}break}break b}O();p();}kb();p();}x[a+8>>2]=b;x[a+4>>2]=g;x[a>>2]=c;}if(e){Ja(e);}}function jf(a,b){var c=0,d=0,e=E(0),f=0,g=0,h=0,i=0;x[a>>2]=19280;c=a;x[c+20>>2]=13472;x[c+4>>2]=13296;x[c>>2]=15400;x[c+32>>2]=0;x[c+24>>2]=0;x[c+28>>2]=0;x[c+12>>2]=0;x[c+16>>2]=0;x[c+8>>2]=b;a:{if(!b){break a}e=E(E(b>>>0)*E(1.75));b:{if(E(F(e))>>0<=8?8:a;x[c+12>>2]=a;d=Da();a=sa[x[x[d>>2]+16>>2]](d,0,a<<2,7693,82)|0;x[c+16>>2]=a;d=x[c+8>>2];if(!d){break a}Ha(a,0,d<<2);}a=x[c+24>>2];x[c+24>>2]=b;if(A[c+28>>2]>>0){e=E(E(b>>>0)*E(1.75));c:{if(E(F(e))>>0<=8?8:b;x[c+28>>2]=b;d=x[c+32>>2];f=Da();h=c,i=sa[x[x[f>>2]+16>>2]](f,d,b<<2,7693,82)|0,x[h+32>>2]=i;b=x[c+24>>2];}d:{if(a>>>0>=b>>>0){break d}f=(a^-1)+b|0;g=b-a&3;if(g){d=0;while(1){x[x[c+32>>2]+(a<<2)>>2]=0;a=a+1|0;d=d+1|0;if((g|0)!=(d|0)){continue}break}}if(f>>>0<3){break d}while(1){d=a<<2;x[d+x[c+32>>2]>>2]=0;x[(d+x[c+32>>2]|0)+4>>2]=0;x[(d+x[c+32>>2]|0)+8>>2]=0;x[(d+x[c+32>>2]|0)+12>>2]=0;a=a+4|0;if((b|0)!=(a|0)){continue}break}}return c}function cm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=E(0),k=E(0),l=0,m=0,n=E(0),o=E(0),p=0;g=qa-16|0;qa=g;d=a+100|0;h=x[d+4>>2];e=x[d+8>>2];x[g+12>>2]=0;x[g+8>>2]=e;a:{if(!e){break a}c=Da();c=sa[x[x[c>>2]+12>>2]](c,e<<2,7693,197)|0;x[g+12>>2]=c;if(!h){break a}d=x[d+12>>2];e=0;if(h>>>0>=4){p=h&-4;while(1){f=e<<2;B[f+c>>2]=B[d+f>>2];i=f|4;B[i+c>>2]=B[d+i>>2];i=f|8;B[i+c>>2]=B[d+i>>2];f=f|12;B[f+c>>2]=B[d+f>>2];e=e+4|0;l=l+4|0;if((l|0)!=(p|0)){continue}break}}h=h&3;if(!h){break a}while(1){f=e<<2;B[f+c>>2]=B[d+f>>2];e=e+1|0;m=m+1|0;if((h|0)!=(m|0)){continue}break}}b:{c:{d=x[b+4>>2];b=x[b>>2];e=d-b|0;d:{if((e|0)<=4){n=B[c>>2];k=B[c+4>>2];j=B[c+8>>2];break d}n=B[b>>2];if(e>>>0<=8){k=B[c+4>>2];j=B[c+8>>2];break d}k=B[b+4>>2];if(e>>>0<=12){j=B[c+8>>2];break d}j=B[b+8>>2];if(e>>>0>16){break c}}o=B[c+12>>2];d=0;break b}o=B[b+12>>2];d=0;if(e>>>0<21){break b}d=B[b+16>>2]!=E(0);}Pe(a,n,k,j,o,d);x[g+4>>2]=0;x[g>>2]=13296;if(c){a=Da();sa[x[x[a>>2]+20>>2]](a,c,7693,206);}qa=g+16|0;}function Va(a,b){a=E(a);b=E(b);var c=E(0),d=0,e=0,f=0,g=0;c=E(a+b);a:{if(!(((q(a),j(2))&2147483647)>>>0<2139095041&((q(b),j(2))&2147483647)>>>0<=2139095040)){break a}d=(q(b),j(2));if((d|0)==1065353216){c=ji(a);break a}g=d>>>30&2;e=(q(a),j(2));f=g|e>>>31;b:{e=e&2147483647;c:{if(!e){d:{switch(f-2|0){case 0:c=E(3.1415927410125732);break a;case 1:break d;default:break c}}c=E(-3.1415927410125732);break a}d=d&2147483647;if((d|0)!=2139095040){c=(l(2,(q(a),j(2))&-2147483648|1070141403),r());if(!d){break a}c=(l(2,(q(a),j(2))&-2147483648|1070141403),r());if(!((e|0)!=2139095040&e>>>0<=d+218103808>>>0)){break a}e:{if(g){c=E(0);if(d>>>0>e+218103808>>>0){break e}}c=ji(E(F(E(a/b))));}a=c;f:{switch(f|0){case 1:c=E(-a);break a;case 2:c=E(E(3.1415927410125732)-E(a+E(8.742277657347586e-8)));break a;case 0:break c;default:break f}}c=E(E(a+E(8.742277657347586e-8))+E(-3.1415927410125732));break a}if((e|0)==2139095040){break b}a=B[(f<<2)+48584>>2];}c=a;break a}c=B[(f<<2)+48568>>2];}return E(c)}function df(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;x[a>>2]=1032;i=x[a+8>>2];if((i|0)>0){l=i+1|0;d=i;g=d;while(1){j=g;g=g-1|0;e=g<<2;b=x[e+x[a+16>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);d=x[a+8>>2];}c=d;d=c-1|0;x[a+8>>2]=d;a:{if(d>>>0<=g>>>0){break a}b=g;if(c+(k-i|0)&1){b=x[a+16>>2];e=b+e|0;h=x[e>>2];f=b;b=j<<2;x[e>>2]=x[f+b>>2];x[b+x[a+16>>2]>>2]=h;b=j;}if((c|0)==(l-k|0)){break a}while(1){c=x[a+16>>2];e=b<<2;h=c+e|0;m=x[h>>2];f=c;c=e+4|0;x[h>>2]=x[f+c>>2];x[c+x[a+16>>2]>>2]=m;f=c;c=x[a+16>>2];e=f+c|0;h=x[e>>2];f=c;b=b+2|0;c=b<<2;x[e>>2]=x[f+c>>2];x[c+x[a+16>>2]>>2]=h;if((b|0)!=(d|0)){continue}break}}k=k+1|0;if((j|0)>1){continue}break}}x[a+36>>2]=1080;b=x[a+44>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,8064,201);}x[a+20>>2]=12736;b=x[a+24>>2];if(b){while(1){d=x[b+12>>2];sa[x[x[b>>2]+4>>2]](b);b=d;if(b){continue}break}}x[a+24>>2]=0;x[a+28>>2]=0;x[a+8>>2]=0;x[a+4>>2]=12676;b=x[a+16>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,7693,206);}return a|0}function Kf(a,b,c){var d=0,e=0,f=0,g=0;e=x[a>>2];a:{if((e|0)==(b|0)){break a}x[c>>2]=e;d=x[a>>2];f=b;if((d|0)!=(f|0)){b:{while(1){if(y[d|0]==10){break b}d=d+1|0;x[a>>2]=d;if((b|0)!=(d|0)){continue}break}d=b;}e=x[c>>2];f=d;}x[c+4>>2]=f;d=y[e|0];c:{if(!((d|0)==32|d-9>>>0<5)){d=e;break c}while(1){if(e>>>0>=f>>>0){d=e;break c}d=e+1|0;x[c>>2]=d;g=y[e+1|0];e=d;if((g|0)==32|g-9>>>0<5){continue}break}}if((d|0)!=(f|0)){while(1){d:{e=f;f=e-1|0;x[c+4>>2]=f;if(d>>>0>f>>>0){break d}if(y[f|0]==13){continue}}break}x[c+4>>2]=e;}d=b;b=x[a>>2];if((d|0)==(b|0)){break a}x[a>>2]=b+1;}e=x[c+4>>2];f=x[c>>2];while(1){if((e|0)==(f|0)){return}a=y[f|0];d=f+1|0;f=d;if((a|0)!=58){continue}break}x[c>>2]=d;a=y[d|0];e:{if(!((a|0)==32|a-9>>>0<5)){break e}while(1){if(d>>>0>=e>>>0){f=d;break e}f=d+1|0;x[c>>2]=f;a=y[d+1|0];d=f;if((a|0)==32|a-9>>>0<5){continue}break}}if((e|0)!=(f|0)){while(1){f:{a=e;e=e-1|0;x[c+4>>2]=e;if(e>>>0>>0){break f}if(y[e|0]==13){continue}}break}x[c+4>>2]=a;}}function Qf(a){var b=E(0),c=0,d=0,e=E(0);d=(q(a),j(2));c=d&2147483647;if(c>>>0>=1065353216){if((c|0)==1065353216){return (d|0)>=0?E(0):E(3.141592502593994)}return E(E(0)/E(a-a))}a:{if(c>>>0<=1056964607){b=E(1.570796251296997);if(c>>>0<847249409){break a}b=E(a*a);return E(E(E(E(7.549789415861596e-8)-E(a*E(E(E(E(b*E(E(b*E(-.008656363002955914))+E(-.04274342209100723)))+E(.16666586697101593))*b)/E(E(b*E(-.7066296339035034))+E(1)))))-a)+E(1.570796251296997))}if((d|0)<0){a=E(E(a+E(1))*E(.5));b=E(M(a));a=E(E(1.570796251296997)-E(b+E(E(b*E(E(E(E(a*E(E(a*E(-.008656363002955914))+E(-.04274342209100723)))+E(.16666586697101593))*a)/E(E(a*E(-.7066296339035034))+E(1))))+E(-7.549789415861596e-8))));return E(a+a)}a=E(E(E(1)-a)*E(.5));e=E(M(a));b=(l(2,(q(e),j(2))&-4096),r());a=E(E(E(e*E(E(E(E(a*E(E(a*E(-.008656363002955914))+E(-.04274342209100723)))+E(.16666586697101593))*a)/E(E(a*E(-.7066296339035034))+E(1))))+E(E(a-E(b*b))/E(e+b)))+b);b=E(a+a);}return b}function Sb(a,b){a=E(a);b=E(b);var c=0,d=0,e=0,f=0,g=0,h=0;a:{b:{f=(q(b),j(2));c=f<<1;c:{if(!c){break c}h=(q(a),j(2));e=h>>>23&255;if((e|0)==255){break c}if(((q(b),j(2))&2147483647)>>>0<2139095041){break b}}a=E(a*b);a=E(a/a);break a}d=h<<1;if(d>>>0<=c>>>0){a=(d|0)==(c|0)?E(a*E(0)):a;break a}g=f>>>23&255;d:{if(!e){e=0;d=h<<9;if((d|0)>=0){while(1){e=e-1|0;d=d<<1;if((d|0)>=0){continue}break}}d=h<<1-e;break d}d=h&8388607|8388608;}e:{if(!g){g=0;c=f<<9;if((c|0)>=0){while(1){g=g-1|0;c=c<<1;if((c|0)>=0){continue}break}}c=f<<1-g;break e}c=f&8388607|8388608;}f=c;if((e|0)>(g|0)){while(1){f:{c=d-f|0;if((c|0)<0){break f}d=c;if(d){break f}a=E(a*E(0));break a}d=d<<1;e=e-1|0;if((g|0)<(e|0)){continue}break}e=g;}g:{c=d-f|0;if((c|0)<0){break g}d=c;if(d){break g}a=E(a*E(0));break a}h:{if(d>>>0>8388607){c=d;break h}while(1){e=e-1|0;f=d>>>0<4194304;c=d<<1;d=c;if(f){continue}break}}a=(l(2,h&-2147483648|((e|0)>0?c-8388608|e<<23:c>>>1-e|0)),r());}return E(a)}function Bb(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=E(c);d=E(d);e=e|0;f=E(f);g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=E(0),r=0;j=qa-16|0;qa=j;l=x[e>>2];i=x[e+4>>2];x[j+8>>2]=0;x[j+12>>2]=0;x[j>>2]=13472;n=i-l|0;k=n>>2;x[j+4>>2]=k;a:{if((i|0)==(l|0)){break a}q=E(E(k>>>0)*E(1.75));b:{if(E(F(q))>>0<=8?8:i;x[j+8>>2]=l;i=Da();m=sa[x[x[i>>2]+16>>2]](i,0,l<<2,7693,82)|0;x[j+12>>2]=m;Ha(m,0,n&-4);}c:{if((n|0)<=0){break c}i=(k|0)<=1?1:k;n=i&3;if(i>>>0>=4){l=i&2147483644;while(1){k=o<<2;x[k+m>>2]=x[k+x[e>>2]>>2];i=k|4;x[i+m>>2]=x[i+x[e>>2]>>2];i=k|8;x[i+m>>2]=x[i+x[e>>2]>>2];i=k|12;x[i+m>>2]=x[i+x[e>>2]>>2];o=o+4|0;p=p+4|0;if((p|0)!=(l|0)){continue}break}}if(!n){break c}while(1){p=o<<2;x[p+m>>2]=x[p+x[e>>2]>>2];o=o+1|0;r=r+1|0;if((n|0)!=(r|0)){continue}break}}sa[x[x[a>>2]+12>>2]](a,b,c,d,j,f,g,h);x[j+4>>2]=0;x[j>>2]=13472;b=x[j+12>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,7693,206);}qa=j+16|0;}function Sl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=Pa(40);i=y[c|0];e=qa-16|0;qa=e;x[d+36>>2]=x[b>>2];x[d+32>>2]=0;x[d+24>>2]=0;x[d+28>>2]=0;x[d+20>>2]=14092;x[d+16>>2]=0;x[d+8>>2]=0;x[d+12>>2]=0;x[d+4>>2]=14028;x[d>>2]=13848;b=x[a+8>>2];c=ci(b,47);f=ci(b,92);f=c>>>0>f>>>0?c:f;a:{if(!f){x[e+8>>2]=0;c=0;break a}g=Ga(f);x[e+8>>2]=g;b=Da();h=g+1|0;c=sa[x[x[b>>2]+12>>2]](b,h,8064,57)|0;Fa(c,f,h);b=x[a+8>>2];}x[e+12>>2]=c;h=(b|0)==(c|0);b:{c:{if(!(h|x[a+4>>2]!=(g|0)|(!c|!b))){b=Oa(c,b);x[e+4>>2]=1080;h=!b;break c}x[e+4>>2]=1080;if(!c){break b}}b=Da();sa[x[x[b>>2]+20>>2]](b,c,8064,201);}b=x[a+8>>2];g=Da();c=f+h|0;c=c?c-b|0:0;b=Fa(sa[x[x[g>>2]+12>>2]](g,c+1|0,5085,54)|0,x[a+8>>2],c);v[b+c|0]=0;c=Da();a=sa[x[x[c>>2]+24>>2]](c,a,e+4|0)|0;d:{if(!a){a=Da();sa[x[x[a>>2]+20>>2]](a,0,5085,63);break d}Oh(d,a,x[e+4>>2],b,i);c=Da();sa[x[x[c>>2]+20>>2]](c,a,5085,63);}a=Da();sa[x[x[a>>2]+20>>2]](a,b,5085,64);qa=e+16|0;return d|0}function Ee(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;x[a>>2]=17316;i=x[a+12>>2];if((i|0)>0){l=i+1|0;d=i;g=d;while(1){j=g;g=g-1|0;e=g<<2;b=x[e+x[a+20>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);d=x[a+12>>2];}c=d;d=c-1|0;x[a+12>>2]=d;a:{if(d>>>0<=g>>>0){break a}b=g;if(c+(k-i|0)&1){b=x[a+20>>2];e=b+e|0;h=x[e>>2];f=b;b=j<<2;x[e>>2]=x[f+b>>2];x[b+x[a+20>>2]>>2]=h;b=j;}if((c|0)==(l-k|0)){break a}while(1){c=x[a+20>>2];e=b<<2;h=c+e|0;m=x[h>>2];f=c;c=e+4|0;x[h>>2]=x[f+c>>2];x[c+x[a+20>>2]>>2]=m;f=c;c=x[a+20>>2];e=f+c|0;h=x[e>>2];f=c;b=b+2|0;c=b<<2;x[e>>2]=x[f+c>>2];x[c+x[a+20>>2]>>2]=h;if((b|0)!=(d|0)){continue}break}}k=k+1|0;if((j|0)>1){continue}break}}x[a+12>>2]=0;b:{if(!y[a+40|0]){break b}b=x[a+4>>2];if(!b){break b}sa[x[x[b>>2]+4>>2]](b);}x[a+24>>2]=1080;b=x[a+32>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,8064,201);}x[a+12>>2]=0;x[a+8>>2]=17436;b=x[a+20>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,7693,206);}return a|0}function we(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;x[a>>2]=18640;i=x[a+12>>2];if((i|0)>0){l=i+1|0;d=i;g=d;while(1){j=g;g=g-1|0;e=g<<2;b=x[e+x[a+20>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);d=x[a+12>>2];}c=d;d=c-1|0;x[a+12>>2]=d;a:{if(d>>>0<=g>>>0){break a}b=g;if(c+(k-i|0)&1){b=x[a+20>>2];e=b+e|0;h=x[e>>2];f=b;b=j<<2;x[e>>2]=x[f+b>>2];x[b+x[a+20>>2]>>2]=h;b=j;}if((c|0)==(l-k|0)){break a}while(1){c=x[a+20>>2];e=b<<2;h=c+e|0;m=x[h>>2];f=c;c=e+4|0;x[h>>2]=x[f+c>>2];x[c+x[a+20>>2]>>2]=m;f=c;c=x[a+20>>2];e=f+c|0;h=x[e>>2];f=c;b=b+2|0;c=b<<2;x[e>>2]=x[f+c>>2];x[c+x[a+20>>2]>>2]=h;if((b|0)!=(d|0)){continue}break}}k=k+1|0;if((j|0)>1){continue}break}}b:{if(!y[a+28|0]){break b}b=x[a+4>>2];if(!b){break b}sa[x[x[b>>2]+4>>2]](b);}x[a+32>>2]=1080;b=x[a+40>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,8064,201);}x[a+12>>2]=0;x[a+8>>2]=17436;b=x[a+20>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,7693,206);}return a|0}function sn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=qa-16|0;qa=g;i=x[a>>2];a:{if(!i){break a}f=x[b>>2];d=v[b+11|0];x[g+4>>2]=1080;f=(d|0)<0?f:b;b:{if(!f){x[g+8>>2]=0;break b}b=Ga(f);x[g+8>>2]=b;d=Da();b=b+1|0;e=sa[x[x[d>>2]+12>>2]](d,b,8064,57)|0;Fa(e,f,b);}x[g+12>>2]=e;h=xd(i,g+4|0);x[g+4>>2]=1080;d=x[g+12>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,8064,201);}if(!h){break a}v[a+55|0]=1;d=a+88|0;f=x[d>>2];c:{d:{if(!f){b=d;break d}e=d;b=f;while(1){i=A[b+16>>2]>>0;e=i?e:b;b=x[(i?b+4|0:b)>>2];if(b){continue}break}if((d|0)!=(e|0)&A[e+16>>2]<=h>>>0){break c}while(1){b=f;d=x[b+16>>2];if(d>>>0>h>>>0){d=b;f=x[b>>2];if(f){continue}break d}if(d>>>0>=h>>>0){e=b;break c}f=x[b+4>>2];if(f){continue}break}d=b+4|0;}e=Ea(24);x[e+16>>2]=h;x[e+8>>2]=b;x[e>>2]=0;x[e+4>>2]=0;x[e+20>>2]=0;x[d>>2]=e;b=e;f=x[x[a+84>>2]>>2];if(f){x[a+84>>2]=f;b=x[d>>2];}ug(x[a+88>>2],b);x[a+92>>2]=x[a+92>>2]+1;}x[e+20>>2]=c;}qa=g+16|0;}function Hs(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=E(c);d=E(d);e=e|0;f=E(f);g=g|0;h=h|0;var i=0,j=0,k=0;a:{if(!e){break a}j=x[a+8>>2];b:{if(c>d){sa[x[x[a>>2]+12>>2]](a,b,c,E(34028234663852886e22),e,f,g,h);h=x[a+16>>2];c=E(-1);break b}h=x[a+16>>2];if(B[(h+(j<<2)|0)-4>>2]<=c){break a}}f=B[h>>2];if(f>d){break a}h=0;c:{if(c>31;i=x[a+16>>2];c=B[i+(g<<2)>>2];while(1){h=g;if((g|0)<=0){h=b;break c}g=h-1|0;if(c==B[i+(g<<2)>>2]){continue}break}}if(h>>>0>=j>>>0){break a}while(1){b=h<<2;if(!(B[b+x[a+16>>2]>>2]<=d)){break a}b=b+x[a+32>>2]|0;g=x[e+4>>2];d:{if((g|0)==x[e+8>>2]){i=x[b>>2];c=E(E(g>>>0)*E(1.75));e:{if(E(F(c))>>0<=8?8:b;x[e+8>>2]=b;g=x[e+12>>2];k=Da();b=sa[x[x[k>>2]+16>>2]](k,g,b<<2,7693,106)|0;x[e+12>>2]=b;g=x[e+4>>2];x[b+(g<<2)>>2]=i;break d}x[x[e+12>>2]+(g<<2)>>2]=x[b>>2];}x[e+4>>2]=g+1;h=h+1|0;if((j|0)!=(h|0)){continue}break}}}function ir(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=E(c);d=E(d);e=e|0;f=E(f);g=g|0;h=h|0;var i=E(0),j=0,k=E(0);a:{b=x[x[b+100>>2]+(x[a+36>>2]<<2)>>2];if(!(sa[x[x[b>>2]+16>>2]](b)|0)){break a}e=x[a+32>>2];if(B[e>>2]>d){b:{switch(g|0){case 0:a=x[b+4>>2];B[b+36>>2]=B[a+68>>2];B[b+40>>2]=B[a+72>>2];return;case 1:break b;default:break a}}a=x[b+4>>2];c=B[b+36>>2];B[b+36>>2]=E(E(B[a+68>>2]-c)*f)+c;c=B[b+40>>2];B[b+40>>2]=E(E(B[a+72>>2]-c)*f)+c;return}e=e+(x[a+24>>2]<<2)|0;c:{if(B[e-12>>2]<=d){d=B[e-4>>2];c=B[e-8>>2];break c}h=Nb(a+20|0,d,3);j=h<<2;e=j+x[a+32>>2]|0;c=B[e-8>>2];k=B[e-4>>2];i=d;d=B[e>>2];i=Kb(a,((h|0)/3|0)-1|0,E(E(1)-E(E(i-d)/E(B[e-12>>2]-d))));a=x[a+32>>2]+j|0;d=E(k+E(i*E(B[a+8>>2]-k)));c=E(c+E(i*E(B[a+4>>2]-c)));}if(!g){i=c;a=x[b+4>>2];c=B[a+68>>2];B[b+36>>2]=E(E(i-c)*f)+c;c=B[a+72>>2];B[b+40>>2]=E(E(d-c)*f)+c;return}i=c;c=B[b+36>>2];B[b+36>>2]=E(E(i-c)*f)+c;c=B[b+40>>2];B[b+40>>2]=E(E(d-c)*f)+c;}}function rh(a,b,c){var d=0,e=0,f=0,g=E(0),h=0,i=0,j=0;x[a>>2]=19784;x[a+8>>2]=14588;x[a+4>>2]=b;x[a>>2]=15580;x[a+20>>2]=0;x[a+12>>2]=0;x[a+16>>2]=0;x[a+24>>2]=x[b+44>>2];v[a+28|0]=y[b+48|0];v[a+29|0]=y[b+49|0];B[a+32>>2]=B[b+52>>2];B[a+36>>2]=B[b+56>>2];b=Dc(c,x[b+40>>2]+8|0);v[a+44|0]=0;x[a+40>>2]=b;b=x[(x[a+4>>2]+24|0)+4>>2];if(b>>>0>A[a+16>>2]){x[a+16>>2]=b;d=x[a+20>>2];e=Da();i=a,j=sa[x[x[e>>2]+16>>2]](e,d,b<<2,7693,94)|0,x[i+20>>2]=j;}if(x[(x[a+4>>2]+24|0)+4>>2]){while(1){e=Dc(c,x[x[(x[a+4>>2]+24|0)+12>>2]+(f<<2)>>2]+8|0);b=x[a+12>>2];a:{if((b|0)==x[a+16>>2]){g=E(E(b>>>0)*E(1.75));b:{if(E(F(g))>>0<=8?8:b;x[a+16>>2]=b;d=x[a+20>>2];h=Da();d=sa[x[x[h>>2]+16>>2]](h,d,b<<2,7693,106)|0;x[a+20>>2]=d;b=x[a+12>>2];d=d+(b<<2)|0;break a}d=x[a+20>>2]+(b<<2)|0;}x[d>>2]=e;x[a+12>>2]=b+1;f=f+1|0;if(f>>>0>2]+24|0)+4>>2]){continue}break}}return a}function Eg(a,b,c){var d=0,e=E(0),f=0,g=0,h=0,i=0,j=0;x[a>>2]=19784;x[a+8>>2]=14588;x[a+4>>2]=b;x[a>>2]=19340;x[a+20>>2]=0;x[a+12>>2]=0;x[a+16>>2]=0;i=a,j=Dc(c,x[b+40>>2]+8|0),x[i+24>>2]=j;B[a+28>>2]=B[b+44>>2];B[a+32>>2]=B[b+48>>2];B[a+36>>2]=B[b+52>>2];e=B[b+56>>2];v[a+44|0]=0;B[a+40>>2]=e;b=x[(x[a+4>>2]+24|0)+4>>2];if(b>>>0>A[a+16>>2]){x[a+16>>2]=b;d=x[a+20>>2];f=Da();i=a,j=sa[x[x[f>>2]+16>>2]](f,d,b<<2,7693,94)|0,x[i+20>>2]=j;}if(x[(x[a+4>>2]+24|0)+4>>2]){while(1){f=Dc(c,x[x[(x[a+4>>2]+24|0)+12>>2]+(g<<2)>>2]+8|0);b=x[a+12>>2];a:{if((b|0)==x[a+16>>2]){e=E(E(b>>>0)*E(1.75));b:{if(E(F(e))>>0<=8?8:b;x[a+16>>2]=b;d=x[a+20>>2];h=Da();d=sa[x[x[h>>2]+16>>2]](h,d,b<<2,7693,106)|0;x[a+20>>2]=d;b=x[a+12>>2];d=d+(b<<2)|0;break a}d=x[a+20>>2]+(b<<2)|0;}x[d>>2]=f;x[a+12>>2]=b+1;g=g+1|0;if(g>>>0>2]+24|0)+4>>2]){continue}break}}return a}function Zc(a,b){var c=E(0);a=qd(a,b);x[a+76>>2]=0;x[a+80>>2]=0;x[a+64>>2]=15952;x[a>>2]=15928;x[a+68>>2]=0;x[a+72>>2]=0;x[a+168>>2]=1080;x[a+152>>2]=16028;x[a+136>>2]=16028;x[a+120>>2]=13296;x[a+104>>2]=13296;x[a+84>>2]=0;x[a+88>>2]=0;x[a+92>>2]=0;x[a+96>>2]=0;x[a+100>>2]=0;x[a+164>>2]=0;x[a+156>>2]=0;x[a+160>>2]=0;x[a+148>>2]=0;x[a+140>>2]=0;x[a+144>>2]=0;x[a+132>>2]=0;x[a+124>>2]=0;x[a+128>>2]=0;x[a+116>>2]=0;x[a+108>>2]=0;x[a+112>>2]=0;x[a+196>>2]=0;x[a+200>>2]=0;x[a+188>>2]=0;x[a+192>>2]=0;x[a+180>>2]=0;x[a+184>>2]=0;x[a+172>>2]=0;x[a+176>>2]=0;x[a+204>>2]=14896;x[a+208>>2]=1065353216;x[a+212>>2]=1065353216;x[a+216>>2]=1065353216;x[a+220>>2]=1065353216;B[a+208>>2]=1;c=B[a+212>>2];B[a+212>>2]=cE(1)?E(1):c;c=B[a+216>>2];B[a+216>>2]=cE(1)?E(1):c;c=B[a+220>>2];x[a+232>>2]=0;v[a+228|0]=0;x[a+224>>2]=0;B[a+220>>2]=cE(1)?E(1):c;return a}function Wa(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=x[a+112>>2];d=x[a+116>>2];g=(b|d)!=0;f=b;c=x[a+4>>2];h=x[a+44>>2];b=c-h|0;i=b;e=b+x[a+120>>2]|0;b=x[a+124>>2]+(b>>31)|0;a:{b=e>>>0>>0?b+1|0:b;if(!(((b|0)>=(d|0)&e>>>0>=f>>>0|(b|0)>(d|0))&g)){d=qa-16|0;qa=d;c=-1;b:{if(Pf(a)){break b}if((sa[x[a+32>>2]](a,d+15|0,1)|0)!=1){break b}c=y[d+15|0];}qa=d+16|0;d=c;if((c|0)>=0){break a}h=x[a+44>>2];c=x[a+4>>2];}x[a+112>>2]=-1;x[a+116>>2]=-1;x[a+104>>2]=c;d=h-c|0;c=d+e|0;b=(d>>31)+b|0;x[a+120>>2]=c;x[a+124>>2]=c>>>0>>0?b+1|0:b;return -1}c=e+1|0;b=c?b:b+1|0;g=x[a+4>>2];h=x[a+8>>2];f=x[a+116>>2];i=f;e=x[a+112>>2];c:{if(!(f|e)){break c}f=e-c|0;e=i-(b+(c>>>0>e>>>0)|0)|0;j=h-g|0;i=j>>31;if((e|0)>=(i|0)&f>>>0>=j>>>0|(e|0)>(i|0)){break c}h=f+g|0;}x[a+104>>2]=h;e=x[a+44>>2];f=e-g|0;c=f+c|0;b=(f>>31)+b|0;x[a+120>>2]=c;x[a+124>>2]=c>>>0>>0?b+1|0:b;if(e>>>0>=g>>>0){v[g-1|0]=d;}return d}function Pv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;d=x[a+4>>2];if((d|0)!=x[a+8>>2]){e=x[b+4>>2];x[d>>2]=x[b>>2];x[d+4>>2]=e;e=x[b+20>>2];x[d+16>>2]=x[b+16>>2];x[d+20>>2]=e;e=x[b+12>>2];x[d+8>>2]=x[b+8>>2];x[d+12>>2]=e;x[a+4>>2]=d+24;return}a:{i=x[a>>2];c=(d-i|0)/24|0;e=c+1|0;if(e>>>0<178956971){f=c<<1;f=c>>>0>=89478485?178956970:e>>>0>>0?f:e;if(f){if(f>>>0>=178956971){break a}e=Ea(D(f,24));}else {e=0;}c=e+D(c,24)|0;g=x[b+4>>2];x[c>>2]=x[b>>2];x[c+4>>2]=g;g=x[b+20>>2];x[c+16>>2]=x[b+16>>2];x[c+20>>2]=g;g=x[b+12>>2];x[c+8>>2]=x[b+8>>2];x[c+12>>2]=g;g=c+24|0;if((d|0)!=(i|0)){while(1){d=d-24|0;b=d;h=x[b+4>>2];c=c-24|0;x[c>>2]=x[b>>2];x[c+4>>2]=h;h=x[b+20>>2];x[c+16>>2]=x[b+16>>2];x[c+20>>2]=h;h=x[b+12>>2];x[c+8>>2]=x[b+8>>2];x[c+12>>2]=h;if((b|0)!=(i|0)){continue}break}d=x[a>>2];}x[a+8>>2]=e+D(f,24);x[a+4>>2]=g;x[a>>2]=c;if(d){Ja(d);}return}O();p();}kb();p();}function hk(a,b,c,d){a=a|0;b=b|0;c=E(c);d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=E(0),n=0;f=qa-16|0;qa=f;h=x[d>>2];e=x[d+4>>2];x[f+8>>2]=0;x[f+12>>2]=0;x[f>>2]=13296;j=e-h|0;g=j>>2;x[f+4>>2]=g;a:{if((e|0)==(h|0)){break a}m=E(E(g>>>0)*E(1.75));b:{if(E(F(m))>>0<=8?8:e;x[f+8>>2]=h;e=Da();i=sa[x[x[e>>2]+16>>2]](e,0,h<<2,7693,82)|0;x[f+12>>2]=i;Ha(i,0,j&-4);}c:{if((j|0)<=0){break c}e=(g|0)<=1?1:g;j=e&3;k=x[d>>2];d=0;if(e>>>0>=4){h=e&2147483644;while(1){g=d<<2;B[g+i>>2]=B[g+k>>2];e=g|4;B[e+i>>2]=B[e+k>>2];e=g|8;B[e+i>>2]=B[e+k>>2];e=g|12;B[e+i>>2]=B[e+k>>2];d=d+4|0;l=l+4|0;if((l|0)!=(h|0)){continue}break}}if(!j){break c}while(1){l=d<<2;B[l+i>>2]=B[k+l>>2];d=d+1|0;n=n+1|0;if((j|0)!=(n|0)){continue}break}}qf(a,b,c,f);x[f+4>>2]=0;x[f>>2]=13296;b=x[f+12>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,7693,206);}qa=f+16|0;}function Ae(a){x[a+52>>2]=0;x[a+56>>2]=0;x[a+48>>2]=18188;x[a+44>>2]=0;x[a+36>>2]=0;x[a+40>>2]=0;x[a+32>>2]=18128;x[a+28>>2]=0;x[a+20>>2]=0;x[a+24>>2]=0;x[a+16>>2]=15708;x[a+8>>2]=0;x[a+12>>2]=0;x[a+4>>2]=1080;x[a>>2]=18076;x[a+60>>2]=0;x[a+64>>2]=0;x[a+132>>2]=18520;x[a+128>>2]=0;x[a+120>>2]=0;x[a+124>>2]=0;x[a+116>>2]=18444;x[a+112>>2]=0;x[a+104>>2]=0;x[a+108>>2]=0;x[a+100>>2]=18372;x[a+96>>2]=0;x[a+88>>2]=0;x[a+92>>2]=0;x[a+84>>2]=18308;x[a+80>>2]=0;x[a+72>>2]=0;x[a+76>>2]=0;x[a+68>>2]=18244;x[a+160>>2]=0;x[a+152>>2]=0;x[a+156>>2]=0;x[a+144>>2]=0;x[a+148>>2]=0;x[a+136>>2]=0;x[a+140>>2]=0;x[a+180>>2]=0;x[a+184>>2]=0;x[a+168>>2]=0;x[a+172>>2]=0;x[a+188>>2]=18592;x[a+176>>2]=1080;x[a+164>>2]=1080;x[a+200>>2]=0;x[a+204>>2]=0;x[a+192>>2]=0;x[a+196>>2]=0;x[a+224>>2]=0;x[a+228>>2]=0;x[a+212>>2]=0;x[a+216>>2]=0;x[a+220>>2]=1080;x[a+208>>2]=1080;return a}function ti(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{b:{d=x[13616];c:{if(!d){e=54464;b=54464;break c}e=y[b+11|0];f=e<<24>>24<0;g=f?x[b>>2]:b;f=f?x[b+4>>2]:e;while(1){b=d;d=y[d+27|0];e=d<<24>>24<0;d=e?x[b+20>>2]:d;i=d>>>0>>0;d:{e:{f:{g:{h=i?d:f;h:{if(h){e=e?x[b+16>>2]:b+16|0;j=Sd(g,e,h);if(!j){if(d>>>0>f>>>0){break h}break g}if((j|0)>=0){break g}break h}if(d>>>0<=f>>>0){break f}}e=b;d=x[b>>2];if(d){continue}break c}d=Sd(e,g,h);if(d){break e}}if(i){break d}break b}if((d|0)>=0){break b}}d=x[b+4>>2];if(d){continue}break}e=b+4|0;}d=Ea(32);f=d+16|0;c=x[c>>2];i:{if(v[c+11|0]>=0){g=x[c+4>>2];x[f>>2]=x[c>>2];x[f+4>>2]=g;x[f+8>>2]=x[c+8>>2];break i}dd(f,x[c>>2],x[c+4>>2]);}x[d+8>>2]=b;x[d>>2]=0;x[d+4>>2]=0;x[d+28>>2]=0;x[e>>2]=d;b=d;c=x[x[13615]>>2];if(c){x[13615]=c;b=x[e>>2];}ug(x[13616],b);x[13617]=x[13617]+1;b=1;break a}d=b;b=0;}v[a+4|0]=b;x[a>>2]=d;}function ik(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=b+40|0;g=x[m+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{if(g){if(g>>>0>=357913942){break a}b=D(g,12);c=Ea(b);x[a>>2]=c;x[a+8>>2]=b+c;d=a;a=b-12|0;a=(a-((a>>>0)%12|0)|0)+12|0;n=Ha(c,0,a);x[d+4>>2]=n+a;while(1){b=0;i=0;a=x[m+12>>2]+(h<<4)|0;c=x[a+4>>2];if(c){if(c>>>0>=1073741824){break a}e=x[a+12>>2];j=0;k=c<<2;i=Ea(k);b=Ha(i,0,k);a=0;if(c>>>0>=4){o=c&-4;l=0;while(1){d=a<<2;B[d+b>>2]=B[d+e>>2];f=d|4;B[f+b>>2]=B[e+f>>2];f=d|8;B[f+b>>2]=B[e+f>>2];d=d|12;B[d+b>>2]=B[d+e>>2];a=a+4|0;l=l+4|0;if((o|0)!=(l|0)){continue}break}}c=c&3;if(c){while(1){d=a<<2;B[d+b>>2]=B[d+e>>2];a=a+1|0;j=j+1|0;if((c|0)!=(j|0)){continue}break}}b=b+k|0;}a=D(h,12)+n|0;c=x[a>>2];if(c){x[a+4>>2]=c;Ja(c);}x[a>>2]=i;x[a+8>>2]=b;x[a+4>>2]=b;h=h+1|0;if((h|0)!=(g|0)){continue}break}}return}O();p();}function th(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;x[a>>2]=15400;j=x[a+24>>2];if((j|0)>0){m=j+1|0;c=j;h=c;while(1){e=h;h=e-1|0;d=h<<2;b=x[d+x[a+32>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);c=x[a+24>>2];}f=c;c=c-1|0;x[a+24>>2]=c;a:{if(c>>>0<=h>>>0){break a}b=h;if(f+(k-j|0)&1){g=x[a+32>>2];b=g+d|0;d=x[b>>2];i=b;b=e<<2;x[i>>2]=x[b+g>>2];x[b+x[a+32>>2]>>2]=d;b=e;}if((f|0)==(m-k|0)){break a}while(1){l=x[a+32>>2];g=b<<2;d=l+g|0;f=x[d>>2];i=d;d=g+4|0;x[i>>2]=x[d+l>>2];x[d+x[a+32>>2]>>2]=f;g=x[a+32>>2];f=g+d|0;d=x[f>>2];i=f;b=b+2|0;f=b<<2;x[i>>2]=x[f+g>>2];x[f+x[a+32>>2]>>2]=d;if((b|0)!=(c|0)){continue}break}}k=k+1|0;if((e|0)>1){continue}break}}x[a+24>>2]=0;x[a+20>>2]=13472;e=x[a+32>>2];if(e){c=Da();sa[x[x[c>>2]+20>>2]](c,e,7693,206);}x[a+8>>2]=0;x[a+4>>2]=13296;e=x[a+16>>2];if(e){c=Da();sa[x[x[c>>2]+20>>2]](c,e,7693,206);}return a|0}function md(a){a=a|0;var b=0,c=0,d=0,e=0;x[a+4>>2]=12924;x[a>>2]=12908;b=x[a+44>>2];if(b){while(1){d=x[x[a+52>>2]+(e<<2)>>2];if(d){b=x[d+24>>2];if(b){while(1){c=x[b+24>>2];sa[x[x[b>>2]+4>>2]](b);b=c;if(b){continue}break}}b=x[d+20>>2];if(b){while(1){c=x[b+20>>2];sa[x[x[b>>2]+4>>2]](b);b=c;if(b){continue}break}}sa[x[x[d>>2]+4>>2]](d);b=x[a+44>>2];}e=e+1|0;if(e>>>0>>0){continue}break}}b=x[a+72>>2];if(b){sa[x[x[b>>2]+4>>2]](b);}x[a+76>>2]=12736;b=x[a+80>>2];if(b){while(1){c=x[b+12>>2];sa[x[x[b>>2]+4>>2]](b);b=c;if(b){continue}break}}x[a+80>>2]=0;x[a+84>>2]=0;x[a+60>>2]=0;x[a+56>>2]=13472;b=x[a+68>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+44>>2]=0;x[a+40>>2]=13232;b=x[a+52>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}de(a+20|0);x[a+4>>2]=13168;b=x[a+12>>2];a:{if(!b){break a}c=x[a+8>>2];if(!c){break a}sa[b|0](c);}return a|0}function pe(a,b,c,d){var e=E(0),f=0;x[a+4>>2]=b;x[a+8>>2]=1080;x[a>>2]=19164;a:{if(!x[c+8>>2]){x[a+12>>2]=0;x[a+16>>2]=0;break a}x[a+12>>2]=x[c+4>>2];b=x[c+4>>2];f=Da();b=sa[x[x[f>>2]+12>>2]](f,b+1|0,8064,71)|0;x[a+16>>2]=b;Fa(b,x[c+8>>2],x[c+4>>2]+1|0);}x[a+20>>2]=d;x[a+36>>2]=1065353216;x[a+40>>2]=1065353216;x[a+28>>2]=1065353216;x[a+32>>2]=1065353216;x[a+24>>2]=14896;B[a+28>>2]=1;e=B[a+32>>2];B[a+32>>2]=eE(1)?E(1):e;e=B[a+36>>2];B[a+36>>2]=eE(1)?E(1):e;e=B[a+40>>2];x[a+48>>2]=0;x[a+52>>2]=0;x[a+44>>2]=14896;B[a+40>>2]=eE(1)?E(1):e;x[a+56>>2]=0;x[a+60>>2]=0;B[a+48>>2]=0;e=B[a+52>>2];B[a+52>>2]=eE(1)?E(1):e;e=B[a+56>>2];B[a+56>>2]=eE(1)?E(1):e;e=B[a+60>>2];x[a+80>>2]=0;x[a+72>>2]=0;x[a+76>>2]=0;x[a+68>>2]=1080;v[a+64|0]=0;B[a+60>>2]=eE(1)?E(1):e;return a}function Vw(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{if(b){if(!c){break j}break i}ra=0;a=(a>>>0)/(c>>>0)|0;break a}if(!a){break h}break g}if(!(c-1&c)){break f}f=(G(c)+33|0)-G(b)|0;g=0-f|0;break d}ra=0;a=(b>>>0)/0|0;break a}d=32-G(b)|0;if(d>>>0<31){break e}break c}if((c|0)==1){break b}f=Tw(c);c=f&31;if((f&63)>>>0>=32){a=b>>>c|0;}else {d=b>>>c|0;a=((1<>>c;}ra=d;break a}f=d+1|0;g=63-d|0;}d=f&63;e=d&31;if(d>>>0>=32){d=0;h=b>>>e|0;}else {d=b>>>e|0;h=((1<>>e;}g=g&63;e=g&31;if(g>>>0>=32){b=a<>>32-e|b<>>31;d=h<<1|b>>>31;e=l-(i+(d>>>0>g>>>0)|0)>>31;j=c&e;h=d-j|0;d=i-(d>>>0>>0)|0;b=b<<1|a>>>31;a=k|a<<1;k=e&1;f=f-1|0;if(f){continue}break}}ra=b<<1|a>>>31;a=k|a<<1;break a}a=0;b=0;}ra=b;}return a}function ki(){ma(53004,10144);la(53048,7161,1,1,0);Y(53060,3928,1,-128,127);Y(53084,3921,1,-128,127);Y(53072,3919,1,0,255);Y(53096,1815,2,-32768,32767);Y(53108,1806,2,0,65535);Y(53120,2262,4,-2147483648,2147483647);Y(53132,2253,4,0,-1);Y(53144,8202,4,-2147483648,2147483647);Y(53156,8193,4,0,-1);Nh(53168,2913,-2147483648,2147483647);Nh(53180,2912,0,-1);aa(53192,2873,4);aa(53204,9481,8);ba(21472,8220);ba(47816,11791);Z(47888,4,8207);Z(47964,2,8232);Z(48040,4,8247);ka(20484,7196);V(48080,0,11722);V(48120,0,11824);V(48160,1,11752);V(48200,2,11287);V(48240,3,11318);V(48280,4,11358);V(48320,5,11387);V(48360,4,11861);V(48400,5,11891);V(48120,0,11489);V(48160,1,11456);V(48200,2,11555);V(48240,3,11521);V(48280,4,11689);V(48320,5,11655);V(48440,8,11622);V(48480,9,11588);V(48520,6,11425);V(48560,7,11930);}function Iv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=x[a+4>>2];if((c|0)!=x[a+8>>2]){e=x[b+4>>2];x[c>>2]=x[b>>2];x[c+4>>2]=e;x[c+16>>2]=x[b+16>>2];e=x[b+12>>2];x[c+8>>2]=x[b+8>>2];x[c+12>>2]=e;x[a+4>>2]=c+20;return}a:{h=x[a>>2];d=(c-h|0)/20|0;f=d+1|0;if(f>>>0<214748365){e=d<<1;g=d>>>0>=107374182?214748364:f>>>0>>0?e:f;if(g){if(g>>>0>=214748365){break a}e=Ea(D(g,20));}else {e=0;}d=e+D(d,20)|0;f=x[b+4>>2];x[d>>2]=x[b>>2];x[d+4>>2]=f;x[d+16>>2]=x[b+16>>2];f=x[b+12>>2];x[d+8>>2]=x[b+8>>2];x[d+12>>2]=f;f=d+20|0;if((c|0)!=(h|0)){while(1){c=c-20|0;b=x[c+4>>2];d=d-20|0;x[d>>2]=x[c>>2];x[d+4>>2]=b;x[d+16>>2]=x[c+16>>2];b=x[c+12>>2];x[d+8>>2]=x[c+8>>2];x[d+12>>2]=b;if((c|0)!=(h|0)){continue}break}c=x[a>>2];}x[a+8>>2]=e+D(g,20);x[a+4>>2]=f;x[a>>2]=d;if(c){Ja(c);}return}O();p();}kb();p();}function ji(a){var b=0,c=0,d=E(0),e=E(0),f=0,g=E(0);f=(q(a),j(2));c=f&2147483647;if(c>>>0>=1283457024){return ((q(a),j(2))&2147483647)>>>0>2139095040?a:(l(2,(q(a),j(2))&-2147483648|1070141402),r())}a:{b:{if(c>>>0<=1054867455){b=-1;if(c>>>0>=964689920){break b}break a}a=E(F(a));if(c>>>0<=1066926079){if(c>>>0<=1060110335){a=E(E(E(a+a)+E(-1))/E(a+E(2)));b=0;break b}a=E(E(a+E(-1))/E(a+E(1)));b=1;break b}if(c>>>0<=1075576831){a=E(E(a+E(-1.5))/E(E(a*E(1.5))+E(1)));b=2;break b}a=E(E(-1)/a);b=3;}e=E(a*a);d=E(e*e);g=E(d*E(E(d*E(-.106480173766613))+E(-.19999158382415771)));d=E(e*E(E(d*E(E(d*E(.06168760731816292))+E(.14253635704517365)))+E(.333333283662796)));if(c>>>0<=1054867455){return E(a-E(a*E(g+d)))}b=b<<2;a=E(B[b+48608>>2]-E(E(E(a*E(g+d))-B[b+48624>>2])-a));a=(f|0)<0?E(-a):a;}return a}function Hb(a){var b=E(0),c=0,d=0,e=0,f=0;c=qa-16|0;qa=c;e=(q(a),j(2));d=e&2147483647;a:{if(d>>>0<=1061752794){b=E(1);if(d>>>0<964689920){break a}b=Vb(+a);break a}if(d>>>0<=1081824209){if(d>>>0>=1075235812){b=E(-Vb(((e|0)<0?3.141592653589793:-3.141592653589793)+ +a));break a}f=+a;if((e|0)<0){b=Ub(f+1.5707963267948966);break a}b=Ub(1.5707963267948966-f);break a}if(d>>>0<=1088565717){if(d>>>0>=1085271520){b=Vb(((e|0)<0?6.283185307179586:-6.283185307179586)+ +a);break a}if((e|0)<0){b=Ub(-4.71238898038469-+a);break a}b=Ub(+a+-4.71238898038469);break a}b=E(a-a);if(d>>>0>=2139095040){break a}b:{switch(ii(a,c+8|0)&3){case 0:b=Vb(C[c+8>>3]);break a;case 1:b=Ub(-C[c+8>>3]);break a;case 2:b=E(-Vb(C[c+8>>3]));break a;default:break b}}b=Ub(C[c+8>>3]);}a=b;qa=c+16|0;return a}function Fb(a){var b=0,c=0,d=0,e=0;b=qa-16|0;qa=b;e=(q(a),j(2));c=e&2147483647;a:{if(c>>>0<=1061752794){if(c>>>0<964689920){break a}a=Ub(+a);break a}if(c>>>0<=1081824209){d=+a;if(c>>>0<=1075235811){if((e|0)<0){a=E(-Vb(d+1.5707963267948966));break a}a=Vb(d+-1.5707963267948966);break a}a=Ub(-(((e|0)>=0?-3.141592653589793:3.141592653589793)+d));break a}if(c>>>0<=1088565717){if(c>>>0<=1085271519){d=+a;if((e|0)<0){a=Vb(d+4.71238898038469);break a}a=E(-Vb(d+-4.71238898038469));break a}a=Ub(((e|0)<0?6.283185307179586:-6.283185307179586)+ +a);break a}if(c>>>0>=2139095040){a=E(a-a);break a}b:{switch(ii(a,b+8|0)&3){case 0:a=Ub(C[b+8>>3]);break a;case 1:a=Vb(C[b+8>>3]);break a;case 2:a=Ub(-C[b+8>>3]);break a;default:break b}}a=E(-Vb(C[b+8>>3]));}qa=b+16|0;return a}function de(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;x[a>>2]=13412;j=x[a+8>>2];if((j|0)>0){m=j+1|0;e=j;h=e;while(1){g=h;h=g-1|0;c=h<<2;b=x[c+x[a+16>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);e=x[a+8>>2];}d=e;e=d-1|0;x[a+8>>2]=e;a:{if(e>>>0<=h>>>0){break a}b=h;if(d+(k-j|0)&1){f=x[a+16>>2];b=f+c|0;c=x[b>>2];i=b;b=g<<2;x[i>>2]=x[b+f>>2];x[b+x[a+16>>2]>>2]=c;b=g;}if((d|0)==(m-k|0)){break a}while(1){l=x[a+16>>2];f=b<<2;c=l+f|0;d=x[c>>2];i=c;c=f+4|0;x[i>>2]=x[c+l>>2];x[c+x[a+16>>2]>>2]=d;f=x[a+16>>2];d=f+c|0;c=x[d>>2];i=d;b=b+2|0;d=b<<2;x[i>>2]=x[d+f>>2];x[d+x[a+16>>2]>>2]=c;if((b|0)!=(e|0)){continue}break}}k=k+1|0;if((g|0)>1){continue}break}}x[a+8>>2]=0;x[a+4>>2]=13232;g=x[a+16>>2];if(g){e=Da();sa[x[x[e>>2]+20>>2]](e,g,7693,206);}return a|0}function Ce(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;x[a>>2]=17956;j=x[a+8>>2];if((j|0)>0){m=j+1|0;e=j;h=e;while(1){g=h;h=g-1|0;c=h<<2;b=x[c+x[a+16>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);e=x[a+8>>2];}d=e;e=d-1|0;x[a+8>>2]=e;a:{if(e>>>0<=h>>>0){break a}b=h;if(d+(k-j|0)&1){f=x[a+16>>2];b=f+c|0;c=x[b>>2];i=b;b=g<<2;x[i>>2]=x[b+f>>2];x[b+x[a+16>>2]>>2]=c;b=g;}if((d|0)==(m-k|0)){break a}while(1){l=x[a+16>>2];f=b<<2;c=l+f|0;d=x[c>>2];i=c;c=f+4|0;x[i>>2]=x[c+l>>2];x[c+x[a+16>>2]>>2]=d;f=x[a+16>>2];d=f+c|0;c=x[d>>2];i=d;b=b+2|0;d=b<<2;x[i>>2]=x[d+f>>2];x[d+x[a+16>>2]>>2]=c;if((b|0)!=(e|0)){continue}break}}k=k+1|0;if((g|0)>1){continue}break}}x[a+8>>2]=0;x[a+4>>2]=17796;g=x[a+16>>2];if(g){e=Da();sa[x[x[e>>2]+20>>2]](e,g,7693,206);}return a|0}function Be(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;x[a>>2]=18016;j=x[a+8>>2];if((j|0)>0){m=j+1|0;e=j;h=e;while(1){g=h;h=g-1|0;c=h<<2;b=x[c+x[a+16>>2]>>2];if(b){sa[x[x[b>>2]+4>>2]](b);e=x[a+8>>2];}d=e;e=d-1|0;x[a+8>>2]=e;a:{if(e>>>0<=h>>>0){break a}b=h;if(d+(k-j|0)&1){f=x[a+16>>2];b=f+c|0;c=x[b>>2];i=b;b=g<<2;x[i>>2]=x[b+f>>2];x[b+x[a+16>>2]>>2]=c;b=g;}if((d|0)==(m-k|0)){break a}while(1){l=x[a+16>>2];f=b<<2;c=l+f|0;d=x[c>>2];i=c;c=f+4|0;x[i>>2]=x[c+l>>2];x[c+x[a+16>>2]>>2]=d;f=x[a+16>>2];d=f+c|0;c=x[d>>2];i=d;b=b+2|0;d=b<<2;x[i>>2]=x[d+f>>2];x[d+x[a+16>>2]>>2]=c;if((b|0)!=(e|0)){continue}break}}k=k+1|0;if((g|0)>1){continue}break}}x[a+8>>2]=0;x[a+4>>2]=17852;g=x[a+16>>2];if(g){e=Da();sa[x[x[e>>2]+20>>2]](e,g,7693,206);}return a|0}function Zm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){e=x[e+x[b>>2]>>2];}c=sa[e|0](b,c,d)|0;b=Pa(16);x[b>>2]=17796;x[b+4>>2]=x[c+4>>2];a=x[c+8>>2];x[b+12>>2]=0;x[b+8>>2]=a;a:{if(!a){break a}d=Da();j=b,k=sa[x[x[d>>2]+12>>2]](d,a<<2,7693,197)|0,x[j+12>>2]=k;e=x[b+4>>2];if(!e){break a}a=0;if(e>>>0>=4){i=e&-4;while(1){d=a<<2;x[d+x[b+12>>2]>>2]=x[d+x[c+12>>2]>>2];f=d|4;x[f+x[b+12>>2]>>2]=x[f+x[c+12>>2]>>2];f=d|8;x[f+x[b+12>>2]>>2]=x[f+x[c+12>>2]>>2];d=d|12;x[d+x[b+12>>2]>>2]=x[d+x[c+12>>2]>>2];a=a+4|0;g=g+4|0;if((i|0)!=(g|0)){continue}break}}d=e&3;if(!d){break a}while(1){e=a<<2;x[e+x[b+12>>2]>>2]=x[e+x[c+12>>2]>>2];a=a+1|0;h=h+1|0;if((d|0)!=(h|0)){continue}break}}return b|0}function oj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=qa-32|0;qa=d;e=x[b>>2];f=v[b+11|0];x[d+20>>2]=1080;e=(f|0)<0?e:b;a:{if(!e){b=0;f=0;break a}b=Ga(e);f=Da();g=b+1|0;f=sa[x[x[f>>2]+12>>2]](f,g,8064,57)|0;Fa(f,e,g);}x[d+28>>2]=f;x[d+24>>2]=b;b=x[c>>2];e=v[c+11|0];x[d+8>>2]=1080;b=(e|0)<0?b:c;b:{if(!b){c=0;break b}h=Ga(b);c=Da();e=h+1|0;c=sa[x[x[c>>2]+12>>2]](c,e,8064,57)|0;Fa(c,b,e);}x[d+16>>2]=c;x[d+12>>2]=h;c=d+8|0;e=Uc(x[a+4>>2],d+20|0);b=x[a+136>>2];c:{if(b){b=Ob(b,e,c);if(b){break c}}b=0;if(!x[x[a+4>>2]+64>>2]){break c}b=Ob(x[x[a+4>>2]+64>>2],e,c);}x[d+8>>2]=1080;a=x[d+16>>2];if(a){c=Da();sa[x[x[c>>2]+20>>2]](c,a,8064,201);}x[d+20>>2]=1080;a=x[d+28>>2];if(a){c=Da();sa[x[x[c>>2]+20>>2]](c,a,8064,201);}qa=d+32|0;return b|0}function Uf(a,b,c){var d=0,e=0;a:{if((a|0)==(b|0)){break a}e=a+c|0;if(b-e>>>0<=0-(c<<1)>>>0){return Fa(a,b,c)}d=(a^b)&3;b:{c:{if(a>>>0>>0){if(d){d=a;break b}if(!(a&3)){d=a;break c}d=a;while(1){if(!c){break a}v[d|0]=y[b|0];b=b+1|0;c=c-1|0;d=d+1|0;if(d&3){continue}break}break c}d:{if(d){break d}if(e&3){while(1){if(!c){break a}c=c-1|0;d=c+a|0;v[d|0]=y[b+c|0];if(d&3){continue}break}}if(c>>>0<=3){break d}while(1){c=c-4|0;x[c+a>>2]=x[b+c>>2];if(c>>>0>3){continue}break}}if(!c){break a}while(1){c=c-1|0;v[c+a|0]=y[b+c|0];if(c){continue}break}break a}if(c>>>0<=3){break b}while(1){x[d>>2]=x[b>>2];b=b+4|0;d=d+4|0;c=c-4|0;if(c>>>0>3){continue}break}}if(!c){break a}while(1){v[d|0]=y[b|0];d=d+1|0;b=b+1|0;c=c-1|0;if(c){continue}break}}return a}function Zq(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=E(c);d=E(d);e=e|0;f=E(f);g=g|0;h=h|0;var i=0,j=E(0);a:{b=x[x[b+100>>2]+(x[a+36>>2]<<2)>>2];if(!(sa[x[x[b>>2]+16>>2]](b)|0)){break a}e=x[a+32>>2];if(B[e>>2]>d){b:{switch(g|0){case 0:B[b+32>>2]=B[x[b+4>>2]+64>>2];return;case 1:break b;default:break a}}c=B[b+32>>2];B[b+32>>2]=E(E(B[x[b+4>>2]+64>>2]-c)*f)+c;return}i=x[a+24>>2];h=x[4087];c:{if(B[e+(i-h<<2)>>2]<=d){c=B[e+(i+x[4089]<<2)>>2];break c}e=Nb(a+20|0,d,h);i=x[a+32>>2];c=B[i+(e+x[4089]<<2)>>2];j=d;d=B[i+(e<<2)>>2];c=E(c+E(Kb(a,((e|0)/(h|0)|0)-1|0,E(E(1)-E(E(j-d)/E(B[i+(e+x[4088]<<2)>>2]-d))))*E(B[x[a+32>>2]+(e+x[4090]<<2)>>2]-c)));}if(!g){d=c;c=B[x[b+4>>2]+64>>2];B[b+32>>2]=E(E(d-c)*f)+c;return}d=c;c=B[b+32>>2];B[b+32>>2]=E(E(d-c)*f)+c;}}function vj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){d=x[d+x[b>>2]>>2];}d=sa[d|0](b)|0;b=Pa(16);x[b>>2]=17252;x[b+4>>2]=x[d+4>>2];a=x[d+8>>2];x[b+12>>2]=0;x[b+8>>2]=a;a:{if(!a){break a}c=Da();j=b,k=sa[x[x[c>>2]+12>>2]](c,a<<2,7693,197)|0,x[j+12>>2]=k;e=x[b+4>>2];if(!e){break a}a=0;if(e>>>0>=4){i=e&-4;while(1){c=a<<2;x[c+x[b+12>>2]>>2]=x[c+x[d+12>>2]>>2];f=c|4;x[f+x[b+12>>2]>>2]=x[f+x[d+12>>2]>>2];f=c|8;x[f+x[b+12>>2]>>2]=x[f+x[d+12>>2]>>2];c=c|12;x[c+x[b+12>>2]>>2]=x[c+x[d+12>>2]>>2];a=a+4|0;g=g+4|0;if((i|0)!=(g|0)){continue}break}}c=e&3;if(!c){break a}while(1){e=a<<2;x[e+x[b+12>>2]>>2]=x[e+x[d+12>>2]>>2];a=a+1|0;h=h+1|0;if((c|0)!=(h|0)){continue}break}}return b|0}function Zh(a,b,c){a:{switch(b-9|0){case 0:b=x[c>>2];x[c>>2]=b+4;x[a>>2]=x[b>>2];return;case 6:b=x[c>>2];x[c>>2]=b+4;b=w[b>>1];x[a>>2]=b;x[a+4>>2]=b>>31;return;case 7:b=x[c>>2];x[c>>2]=b+4;x[a>>2]=z[b>>1];x[a+4>>2]=0;return;case 8:b=x[c>>2];x[c>>2]=b+4;b=v[b|0];x[a>>2]=b;x[a+4>>2]=b>>31;return;case 9:b=x[c>>2];x[c>>2]=b+4;x[a>>2]=y[b|0];x[a+4>>2]=0;return;case 16:b=x[c>>2]+7&-8;x[c>>2]=b+8;C[a>>3]=C[b>>3];return;case 17:p();default:return;case 1:case 4:case 14:b=x[c>>2];x[c>>2]=b+4;b=x[b>>2];x[a>>2]=b;x[a+4>>2]=b>>31;return;case 2:case 5:case 11:case 15:b=x[c>>2];x[c>>2]=b+4;x[a>>2]=x[b>>2];x[a+4>>2]=0;return;case 3:case 10:case 12:case 13:break a}}b=x[c>>2]+7&-8;x[c>>2]=b+8;c=x[b+4>>2];x[a>>2]=x[b>>2];x[a+4>>2]=c;}function Wh(a,b,c,d,e,f){var g=0;g=qa-80|0;qa=g;a:{if((f|0)>=16384){_a(g+32|0,b,c,d,e,0,0,0,2147352576);d=x[g+40>>2];e=x[g+44>>2];b=x[g+32>>2];c=x[g+36>>2];if(f>>>0<32767){f=f-16383|0;break a}_a(g+16|0,b,c,d,e,0,0,0,2147352576);f=((f|0)>=49149?49149:f)-32766|0;d=x[g+24>>2];e=x[g+28>>2];b=x[g+16>>2];c=x[g+20>>2];break a}if((f|0)>-16383){break a}_a(g- -64|0,b,c,d,e,0,0,0,7471104);d=x[g+72>>2];e=x[g+76>>2];b=x[g+64>>2];c=x[g+68>>2];if(f>>>0>4294934644){f=f+16269|0;break a}_a(g+48|0,b,c,d,e,0,0,0,7471104);f=((f|0)<=-48920?-48920:f)+32538|0;d=x[g+56>>2];e=x[g+60>>2];b=x[g+48>>2];c=x[g+52>>2];}_a(g,b,c,d,e,0,0,0,f+16383<<16);b=x[g+12>>2];x[a+8>>2]=x[g+8>>2];x[a+12>>2]=b;b=x[g+4>>2];x[a>>2]=x[g>>2];x[a+4>>2]=b;qa=g+80|0;}function $a(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;e=qa-16|0;qa=e;x[e+4>>2]=1080;if(x[c+8>>2]){g=x[c+4>>2];f=Da();f=sa[x[x[f>>2]+12>>2]](f,g+1|0,8064,71)|0;Fa(f,x[c+8>>2],x[c+4>>2]+1|0);}h=x[d+4>>2];c=h+g|0;x[e+8>>2]=c;j=x[d+8>>2];i=Da();c=sa[x[x[i>>2]+16>>2]](i,f,c+1|0,8064,166)|0;x[e+12>>2]=c;Fa(c+g|0,(f|0)==(j|0)?c:x[d+8>>2],h+1|0);a:{if((e-28|0)!=(a|0)){d=x[a+40>>2];if(d){c=Da();sa[x[x[c>>2]+20>>2]](c,d,8064,122);c=x[e+12>>2];}if(!c){x[a+36>>2]=0;x[a+40>>2]=0;x[e+4>>2]=1080;break a}c=x[e+8>>2];x[a+36>>2]=c;d=a;a=Da();a=sa[x[x[a>>2]+12>>2]](a,c+1|0,8064,129)|0;x[d+40>>2]=a;Fa(a,x[e+12>>2],x[e+8>>2]+1|0);c=x[e+12>>2];}x[e+4>>2]=1080;if(!c){break a}a=Da();sa[x[x[a>>2]+20>>2]](a,c,8064,201);}if(b){Ja(Ze(b));}qa=e+16|0;}function zi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;a=x[a>>2]+D(b,12)|0;if((a|0)!=(c|0)){a:{f=x[c+4>>2];c=x[c>>2];g=f-c|0;d=g>>2;e=x[a+8>>2];b=x[a>>2];if(d>>>0<=e-b>>2>>>0){e=x[a+4>>2]-b|0;h=e>>2;if(d>>>0>h>>>0){Uf(b,c,e);b=x[a+4>>2];c=c+(h<<2)|0;if((f|0)!=(c|0)){while(1){B[b>>2]=B[c>>2];b=b+4|0;c=c+4|0;if((f|0)!=(c|0)){continue}break}}x[a+4>>2]=b;break a}i=a,j=Uf(b,c,g)+(d<<2)|0,x[i+4>>2]=j;break a}if(b){x[a+4>>2]=b;Ja(b);x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;e=0;}b:{if((g|0)<0){break b}b=e>>1;b=e>>>0>=2147483644?1073741823:b>>>0>d>>>0?b:d;if(b>>>0>=1073741824){break b}d=b<<2;b=Ea(d);x[a>>2]=b;x[a+8>>2]=b+d;if((c|0)!=(f|0)){d=b;b=(g-4&-4)+4|0;b=Fa(d,c,b)+b|0;}x[a+4>>2]=b;break a}O();p();}}return 1}function vr(a){a=a|0;var b=0,c=0,d=0,e=0,f=E(0),g=0,h=E(0),i=0,j=0;c=Ma(84,4484,64);Ve(c,a+4|0);Qc(a,c);x[c+68>>2]=0;b=x[a+68>>2];if(b>>>0>A[c+72>>2]){x[c+72>>2]=b;e=x[c+76>>2];d=Da();i=c,j=sa[x[x[d>>2]+16>>2]](d,e,b<<2,7693,94)|0,x[i+76>>2]=j;b=x[a+68>>2];}if(b){b=x[c+68>>2];e=0;while(1){d=x[a+76>>2]+(e<<2)|0;a:{if(x[c+72>>2]==(b|0)){h=B[d>>2];f=E(E(b>>>0)*E(1.75));b:{if(E(F(f))>>0<=8?8:b;x[c+72>>2]=b;d=x[c+76>>2];g=Da();d=sa[x[x[g>>2]+16>>2]](g,d,b<<2,7693,106)|0;x[c+76>>2]=d;b=x[c+68>>2];B[d+(b<<2)>>2]=h;break a}B[x[c+76>>2]+(b<<2)>>2]=B[d>>2];}b=b+1|0;x[c+68>>2]=b;e=e+1|0;if(e>>>0>2]){continue}break}}v[c+80|0]=y[a+80|0];v[c+81|0]=y[a+81|0];return c|0}function Gg(a,b,c){var d=E(0);x[a+8>>2]=c;x[a+4>>2]=b;x[a>>2]=19120;c=x[c+8>>2];x[a+28>>2]=1065353216;x[a+32>>2]=1065353216;x[a+20>>2]=1065353216;x[a+24>>2]=1065353216;x[a+16>>2]=14896;x[a+12>>2]=c;B[a+20>>2]=1;d=B[a+24>>2];B[a+24>>2]=dE(1)?E(1):d;d=B[a+28>>2];B[a+28>>2]=dE(1)?E(1):d;d=B[a+32>>2];x[a+40>>2]=0;x[a+44>>2]=0;x[a+36>>2]=14896;B[a+32>>2]=dE(1)?E(1):d;x[a+48>>2]=0;x[a+52>>2]=0;B[a+40>>2]=0;d=B[a+44>>2];B[a+44>>2]=dE(1)?E(1):d;d=B[a+48>>2];B[a+48>>2]=dE(1)?E(1):d;d=B[a+52>>2];B[a+52>>2]=dE(1)?E(1):d;b=y[b+64|0];x[a+80>>2]=0;x[a+72>>2]=0;x[a+76>>2]=0;x[a+68>>2]=13296;x[a+60>>2]=0;x[a+64>>2]=0;v[a+56|0]=b;qe(a);return a}function Ha(a,b,c){var d=0,e=0,f=0,g=0;a:{if(!c){break a}v[a|0]=b;d=a+c|0;v[d-1|0]=b;if(c>>>0<3){break a}v[a+2|0]=b;v[a+1|0]=b;v[d-3|0]=b;v[d-2|0]=b;if(c>>>0<7){break a}v[a+3|0]=b;v[d-4|0]=b;if(c>>>0<9){break a}d=0-a&3;e=d+a|0;b=D(b&255,16843009);x[e>>2]=b;d=c-d&-4;c=d+e|0;x[c-4>>2]=b;if(d>>>0<9){break a}x[e+8>>2]=b;x[e+4>>2]=b;x[c-8>>2]=b;x[c-12>>2]=b;if(d>>>0<25){break a}x[e+24>>2]=b;x[e+20>>2]=b;x[e+16>>2]=b;x[e+12>>2]=b;x[c-16>>2]=b;x[c-20>>2]=b;x[c-24>>2]=b;x[c-28>>2]=b;g=e&4|24;c=d-g|0;if(c>>>0<32){break a}d=Uw(b,0,1,1);f=ra;b=e+g|0;while(1){x[b+24>>2]=d;x[b+28>>2]=f;x[b+16>>2]=d;x[b+20>>2]=f;x[b+8>>2]=d;x[b+12>>2]=f;x[b>>2]=d;x[b+4>>2]=f;b=b+32|0;c=c-32|0;if(c>>>0>31){continue}break}}return a}function Yu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=qa-32|0;qa=e;d=x[a+28>>2];x[e+16>>2]=d;f=x[a+20>>2];x[e+28>>2]=c;x[e+24>>2]=b;b=f-d|0;x[e+20>>2]=b;f=b+c|0;i=2;b=e+16|0;a:{while(1){b:{c:{d=fa(x[a+60>>2],b|0,i|0,e+12|0)|0;if(d){x[13623]=d;d=-1;}else {d=0;}d:{if(!d){g=x[e+12>>2];if((g|0)==(f|0)){break d}if((g|0)>=0){break c}break b}if((f|0)!=-1){break b}}b=x[a+44>>2];x[a+28>>2]=b;x[a+20>>2]=b;x[a+16>>2]=b+x[a+48>>2];a=c;break a}h=x[b+4>>2];j=h>>>0>>0;d=(j<<3)+b|0;h=g-(j?h:0)|0;x[d>>2]=h+x[d>>2];b=(j?12:4)+b|0;x[b>>2]=x[b>>2]-h;f=f-g|0;i=i-j|0;b=d;continue}break}x[a+28>>2]=0;x[a+16>>2]=0;x[a+20>>2]=0;x[a>>2]=x[a>>2]|32;a=0;if((i|0)==2){break a}a=c-x[b+4>>2]|0;}qa=e+32|0;return a|0}function gh(a){a=a|0;var b=0,c=0;x[a+128>>2]=0;x[a+124>>2]=13296;x[a>>2]=16140;b=x[a+136>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+112>>2]=0;x[a+108>>2]=13296;b=x[a+120>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+96>>2]=0;x[a+92>>2]=13296;b=x[a+104>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+80>>2]=0;x[a+76>>2]=13296;b=x[a+88>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a- -64>>2]=0;x[a+60>>2]=13296;b=x[a+72>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+48>>2]=0;x[a+44>>2]=13296;b=x[a+56>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+12>>2]=0;x[a+8>>2]=14588;b=x[a+20>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function of(a,b,c,d){a=a|0;b=b|0;c=E(c);d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;B[x[a+16>>2]+(b<<2)>>2]=c;g=x[a+32>>2];e=g+(b<<4)|0;x[e+4>>2]=0;a=x[d+4>>2];if(a>>>0>A[e+8>>2]){x[e+8>>2]=a;h=x[e+12>>2];f=Da();j=e,k=sa[x[x[f>>2]+16>>2]](f,h,a<<2,7693,94)|0,x[j+12>>2]=k;a=x[d+4>>2];}if(a){i=g+(b<<4)|0;a=x[e+4>>2];b=0;while(1){f=x[d+12>>2]+(b<<2)|0;a:{if(x[e+8>>2]==(a|0)){g=x[f>>2];c=E(E(a>>>0)*E(1.75));b:{if(E(F(c))>>0<=8?8:a;x[e+8>>2]=h;f=x[i+12>>2];a=Da();f=sa[x[x[a>>2]+16>>2]](a,f,h<<2,7693,106)|0;x[i+12>>2]=f;a=x[e+4>>2];x[f+(a<<2)>>2]=g;break a}x[x[i+12>>2]+(a<<2)>>2]=x[f>>2];}a=a+1|0;x[e+4>>2]=a;b=b+1|0;if(b>>>0>2]){continue}break}}}function Ac(a,b,c){var d=0,e=0,f=0,g=0;d=qa-272|0;qa=d;f=di(d+16|0,b);if(c){e=Ga(b);b=e+f|0;b=Ga(b)+b|0;e=255-e|0;a:{if(!e){break a}while(1){g=y[c|0];if(!g){break a}v[b|0]=g;b=b+1|0;c=c+1|0;e=e-1|0;if(e){continue}break}}v[b|0]=0;}x[d+4>>2]=1080;b=Ga(f);x[d+8>>2]=b;c=Da();b=b+1|0;c=sa[x[x[c>>2]+12>>2]](c,b,8064,57)|0;x[d+12>>2]=c;Fa(c,f,b);b:{if((d-20|0)==(a|0)){break b}b=x[a+32>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,122);}if(!x[d+12>>2]){x[a+28>>2]=0;x[a+32>>2]=0;break b}b=x[d+8>>2];x[a+28>>2]=b;c=a;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,129)|0;x[c+32>>2]=a;Fa(a,x[d+12>>2],x[d+8>>2]+1|0);}x[d+4>>2]=1080;a=x[d+12>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}qa=d+272|0;}function Pc(a,b){var c=0,d=0,e=E(0),f=0;c=qa-32|0;qa=c;x[c+12>>2]=0;x[c+8>>2]=b;x[c+4>>2]=2;x[c>>2]=12876;b=x[a+8>>2];a:{if((b|0)==x[a+12>>2]){x[c+28>>2]=x[c+12>>2];d=x[c+8>>2];x[c+20>>2]=x[c+4>>2];x[c+24>>2]=d;x[c+16>>2]=12876;e=E(E(b>>>0)*E(1.75));b:{if(E(F(e))>>0<=8?8:b;x[a+12>>2]=b;d=x[a+16>>2];f=Da();b=sa[x[x[f>>2]+16>>2]](f,d,b<<4,7693,106)|0;x[a+16>>2]=b;d=x[a+8>>2];x[a+8>>2]=d+1;b=b+(d<<4)|0;x[b>>2]=12876;d=x[c+24>>2];x[b+4>>2]=x[c+20>>2];x[b+8>>2]=d;x[b+12>>2]=x[c+28>>2];break a}x[a+8>>2]=b+1;b=x[a+16>>2]+(b<<4)|0;x[b>>2]=12876;d=x[c+8>>2];x[b+4>>2]=x[c+4>>2];x[b+8>>2]=d;x[b+12>>2]=x[c+12>>2];}v[x[a+20>>2]+88|0]=1;qa=c+32|0;}function br(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=E(c);d=E(d);e=e|0;f=E(f);g=g|0;h=h|0;var i=0,j=E(0);a:{b=x[x[b+100>>2]+(x[a+36>>2]<<2)>>2];if(!(sa[x[x[b>>2]+16>>2]](b)|0)){break a}e=x[a+32>>2];if(B[e>>2]>d){b:{switch(g|0){case 0:B[b+28>>2]=B[x[b+4>>2]+60>>2];return;case 1:break b;default:break a}}c=B[b+28>>2];B[b+28>>2]=E(E(B[x[b+4>>2]+60>>2]-c)*f)+c;return}e=e+(x[a+24>>2]<<2)|0;c:{if(B[e-8>>2]<=d){c=B[e-4>>2];break c}h=Nb(a+20|0,d,2);i=h<<2;e=i+x[a+32>>2]|0;c=B[e-4>>2];j=d;d=B[e>>2];c=E(c+E(Kb(a,((h|0)/2|0)-1|0,E(E(1)-E(E(j-d)/E(B[e-8>>2]-d))))*E(B[(x[a+32>>2]+i|0)+4>>2]-c)));}if(!g){d=c;c=B[x[b+4>>2]+60>>2];B[b+28>>2]=E(E(d-c)*f)+c;return}d=c;c=B[b+28>>2];B[b+28>>2]=E(E(d-c)*f)+c;}}function Qb(a,b){var c=0,d=0,e=0,f=0;c=qa+-64|0;qa=c;d=x[a>>2];e=x[d-4>>2];f=x[d-8>>2];x[c+28>>2]=0;x[c+32>>2]=0;x[c+36>>2]=0;x[c+40>>2]=0;x[c+44>>2]=0;x[c+48>>2]=0;x[c+52>>2]=0;x[c+56>>2]=0;d=0;v[c+59|0]=0;v[c+60|0]=0;v[c+61|0]=0;v[c+62|0]=0;x[c+20>>2]=0;x[c+24>>2]=0;x[c+16>>2]=52652;x[c+12>>2]=a;x[c+8>>2]=b;a=a+f|0;a:{if(gb(e,b,0)){x[c+56>>2]=1;sa[x[x[e>>2]+20>>2]](e,c+8|0,a,a,1,0);d=x[c+32>>2]==1?a:0;break a}sa[x[x[e>>2]+24>>2]](e,c+8|0,a,1,0);b:{switch(x[c+44>>2]){case 0:d=x[c+48>>2]==1?x[c+36>>2]==1?x[c+40>>2]==1?x[c+28>>2]:0:0:0;break a;case 1:break b;default:break a}}if(x[c+32>>2]!=1){if(x[c+48>>2]|x[c+36>>2]!=1|x[c+40>>2]!=1){break a}}d=x[c+24>>2];}qa=c- -64|0;return d}function vg(a,b){var c=0,d=0,e=E(0),f=0;c=qa-32|0;qa=c;x[c+12>>2]=0;x[c+8>>2]=b;x[c+4>>2]=1;x[c>>2]=12876;b=x[a+8>>2];a:{if((b|0)==x[a+12>>2]){x[c+28>>2]=x[c+12>>2];d=x[c+8>>2];x[c+20>>2]=x[c+4>>2];x[c+24>>2]=d;x[c+16>>2]=12876;e=E(E(b>>>0)*E(1.75));b:{if(E(F(e))>>0<=8?8:b;x[a+12>>2]=b;d=x[a+16>>2];f=Da();b=sa[x[x[f>>2]+16>>2]](f,d,b<<4,7693,106)|0;x[a+16>>2]=b;d=a;a=x[a+8>>2];x[d+8>>2]=a+1;a=b+(a<<4)|0;x[a>>2]=12876;b=x[c+24>>2];x[a+4>>2]=x[c+20>>2];x[a+8>>2]=b;x[a+12>>2]=x[c+28>>2];break a}x[a+8>>2]=b+1;a=x[a+16>>2]+(b<<4)|0;x[a>>2]=12876;b=x[c+8>>2];x[a+4>>2]=x[c+4>>2];x[a+8>>2]=b;x[a+12>>2]=x[c+12>>2];}qa=c+32|0;}function od(a,b){var c=0,d=0,e=E(0),f=0;c=qa-32|0;qa=c;x[c+12>>2]=0;x[c+8>>2]=b;x[c+4>>2]=3;x[c>>2]=12876;b=x[a+8>>2];a:{if((b|0)==x[a+12>>2]){x[c+28>>2]=x[c+12>>2];d=x[c+8>>2];x[c+20>>2]=x[c+4>>2];x[c+24>>2]=d;x[c+16>>2]=12876;e=E(E(b>>>0)*E(1.75));b:{if(E(F(e))>>0<=8?8:b;x[a+12>>2]=b;d=x[a+16>>2];f=Da();b=sa[x[x[f>>2]+16>>2]](f,d,b<<4,7693,106)|0;x[a+16>>2]=b;d=a;a=x[a+8>>2];x[d+8>>2]=a+1;a=b+(a<<4)|0;x[a>>2]=12876;b=x[c+24>>2];x[a+4>>2]=x[c+20>>2];x[a+8>>2]=b;x[a+12>>2]=x[c+28>>2];break a}x[a+8>>2]=b+1;a=x[a+16>>2]+(b<<4)|0;x[a>>2]=12876;b=x[c+8>>2];x[a+4>>2]=x[c+4>>2];x[a+8>>2]=b;x[a+12>>2]=x[c+12>>2];}qa=c+32|0;}function sg(a,b,c){var d=0,e=E(0),f=0;d=qa-32|0;qa=d;x[d+12>>2]=c;x[d+8>>2]=b;x[d+4>>2]=5;x[d>>2]=12876;b=x[a+8>>2];a:{if((b|0)==x[a+12>>2]){x[d+28>>2]=x[d+12>>2];c=x[d+8>>2];x[d+20>>2]=x[d+4>>2];x[d+24>>2]=c;x[d+16>>2]=12876;e=E(E(b>>>0)*E(1.75));b:{if(E(F(e))>>0<=8?8:b;x[a+12>>2]=b;c=x[a+16>>2];f=Da();b=sa[x[x[f>>2]+16>>2]](f,c,b<<4,7693,106)|0;x[a+16>>2]=b;c=a;a=x[a+8>>2];x[c+8>>2]=a+1;a=b+(a<<4)|0;x[a>>2]=12876;b=x[d+24>>2];x[a+4>>2]=x[d+20>>2];x[a+8>>2]=b;x[a+12>>2]=x[d+28>>2];break a}x[a+8>>2]=b+1;a=x[a+16>>2]+(b<<4)|0;x[a>>2]=12876;b=x[d+8>>2];x[a+4>>2]=x[d+4>>2];x[a+8>>2]=b;x[a+12>>2]=x[d+12>>2];}qa=d+32|0;} + function nb(a,b,c,d,e,f){a=a|0;b=b|0;c=E(c);d=E(d);e=E(e);f=E(f);var g=E(0),h=E(0),i=E(0),j=E(0),k=0,l=0;k=x[a+16>>2];a=D(b,19);x[k+(a<<2)>>2]=1073741824;b=a+1|0;a=a+19|0;if(b>>>0>>0){g=E(E(e-E(c+c))*E(.029999999329447746));i=E(E(E(E(c-e)*E(3))+E(1))*E(.006000000052154064));e=E(E(g+g)+i);h=E(E(f-E(d+d))*E(.029999999329447746));j=E(E(E(E(d-f)*E(3))+E(1))*E(.006000000052154064));f=E(E(h+h)+j);d=E(E(j*E(.1666666716337204))+E(E(d*E(.30000001192092896))+h));h=d;c=E(E(i*E(.1666666716337204))+E(E(c*E(.30000001192092896))+g));g=c;while(1){l=(b<<2)+k|0;B[l>>2]=c;B[l+4>>2]=d;h=E(f+h);d=E(h+d);g=E(g+e);c=E(c+g);e=E(i+e);f=E(j+f);b=b+2|0;if(a>>>0>b>>>0){continue}break}}}function Df(a){var b=0;x[a+16>>2]=0;x[a+20>>2]=0;x[a+8>>2]=0;x[a+12>>2]=0;x[a+40>>2]=0;x[a+44>>2]=0;x[a+92>>2]=0;x[a+96>>2]=0;x[a+88>>2]=1065353216;x[a+164>>2]=11;x[a+168>>2]=0;x[a+4>>2]=12860;x[a>>2]=12844;x[a+24>>2]=0;x[a+28>>2]=0;w[a+30>>1]=0;w[a+32>>1]=0;w[a+34>>1]=0;w[a+36>>1]=0;x[a+48>>2]=0;x[a+52>>2]=0;x[a+56>>2]=0;x[a+60>>2]=0;b=a- -64|0;x[b>>2]=0;x[b+4>>2]=0;x[a+72>>2]=0;x[a+76>>2]=0;x[a+80>>2]=0;x[a+84>>2]=0;x[a+100>>2]=0;x[a+104>>2]=0;x[a+108>>2]=0;x[a+112>>2]=2;x[a+116>>2]=13184;x[a+128>>2]=0;x[a+132>>2]=13232;x[a+144>>2]=0;x[a+148>>2]=13296;x[a+160>>2]=0;x[a+120>>2]=0;x[a+124>>2]=0;x[a+136>>2]=0;x[a+140>>2]=0;x[a+152>>2]=0;x[a+156>>2]=0;return a}function qf(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;B[x[a+36>>2]+(b<<2)>>2]=c;g=x[a+52>>2];e=g+(b<<4)|0;x[e+4>>2]=0;a=x[d+4>>2];if(a>>>0>A[e+8>>2]){x[e+8>>2]=a;f=x[e+12>>2];h=Da();i=e,j=sa[x[x[h>>2]+16>>2]](h,f,a<<2,7693,94)|0,x[i+12>>2]=j;a=x[d+4>>2];}if(a){g=g+(b<<4)|0;a=x[e+4>>2];b=0;while(1){f=x[d+12>>2]+(b<<2)|0;a:{if(x[e+8>>2]==(a|0)){c=E(E(a>>>0)*E(1.75));b:{if(E(F(c))>2];a=a>>>0<=8?8:a;x[e+8>>2]=a;f=x[g+12>>2];h=Da();f=sa[x[x[h>>2]+16>>2]](h,f,a<<2,7693,106)|0;x[g+12>>2]=f;a=x[e+4>>2];B[f+(a<<2)>>2]=c;break a}B[x[g+12>>2]+(a<<2)>>2]=B[f>>2];}a=a+1|0;x[e+4>>2]=a;b=b+1|0;if(b>>>0>2]){continue}break}}}function Ad(a){a=a|0;var b=E(0),c=E(0),d=E(0),e=E(0),f=0,g=E(0),h=E(0),i=E(0),j=E(0),k=E(0),l=E(0),m=E(0),n=E(0),o=E(0),p=E(0);b=B[a+56>>2];d=B[a+48>>2];j=B[a+80>>2];k=B[a+64>>2];l=B[a+72>>2];m=B[a+68>>2];i=B[a+60>>2];o=B[a+76>>2];c=B[a+44>>2];e=B[a+52>>2];g=yb(B[a+40>>2]);h=zb(B[a+40>>2]);n=B[a+32>>2];p=E(c*E(e*E(-.5)));e=E(c*E(e/o));c=E(p+E(e*i));f=x[a+96>>2];e=E(E(m*e)+c);m=E(h*e);i=E(d*E(b*E(-.5)));d=E(d*E(b/j));b=E(i+E(k*d));j=B[a+36>>2];k=E(E(g*b)+j);B[f+28>>2]=m+k;i=E(n+E(c*g));d=E(E(l*d)+b);l=E(h*d);B[f+8>>2]=i-l;c=E(c*h);B[f+4>>2]=c+k;h=E(b*h);B[f>>2]=i-h;b=E(n+E(e*g));B[f+24>>2]=b-h;g=E(j+E(d*g));B[f+20>>2]=m+g;B[f+16>>2]=b-l;B[f+12>>2]=c+g;}function Gn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=x[a+16>>2];if(c){sa[x[x[c>>2]+4>>2]](c);}c=x[a+12>>2];if(c){sa[x[x[c>>2]+4>>2]](c);}c=x[a+8>>2];if(c){sa[x[x[c>>2]+4>>2]](c);}c=x[a>>2];if(c){sa[x[x[c>>2]+4>>2]](c);}x[a+4>>2]=b;f=a,g=bh(Pa(180),x[a+4>>2]),x[f>>2]=g;b=Pa(24);c=x[a+4>>2];x[b+8>>2]=0;x[b+4>>2]=c;x[b+16>>2]=0;x[b+20>>2]=0;x[b+12>>2]=13664;x[b>>2]=13532;x[a+8>>2]=b;f=a,g=rg(Pa(104),x[a+8>>2]),x[f+12>>2]=g;f=a,g=Qg(Pa(232)),x[f+16>>2]=g;He(x[a>>2]);Xc(x[a>>2]);c=x[a+12>>2];b=c;e=x[c+12>>2];a:{if(!e){break a}d=x[c+8>>2];if(!d|(a|0)==(d|0)){break a}sa[e|0](d);b=x[a+12>>2];}x[c+12>>2]=0;x[c+8>>2]=a;x[b+96>>2]=0;x[b+92>>2]=372;return x[a>>2]}function _m(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){d=x[d+x[b>>2]>>2];}a=sa[d|0](b,c)|0;b=Pa(16);x[b>>2]=13184;x[b+4>>2]=x[a+4>>2];c=x[a+8>>2];x[b+12>>2]=0;x[b+8>>2]=c;a:{if(!c){break a}d=Da();c=sa[x[x[d>>2]+12>>2]](d,c<<2,7693,197)|0;x[b+12>>2]=c;f=x[b+4>>2];if(!f){break a}d=x[a+12>>2];a=0;if(f>>>0>=4){j=f&-4;while(1){e=a<<2;x[e+c>>2]=x[d+e>>2];g=e|4;x[g+c>>2]=x[d+g>>2];g=e|8;x[g+c>>2]=x[d+g>>2];e=e|12;x[e+c>>2]=x[d+e>>2];a=a+4|0;h=h+4|0;if((j|0)!=(h|0)){continue}break}}e=f&3;if(!e){break a}while(1){f=a<<2;x[f+c>>2]=x[d+f>>2];a=a+1|0;i=i+1|0;if((e|0)!=(i|0)){continue}break}}return b|0}function hh(a,b,c,d,e,f,g,h,i,k,l,m){var n=E(0),o=E(0),p=E(0),r=E(0),s=0,t=E(0),u=E(0),v=E(0),w=E(0);a:{b:{if(!(!(a>2]+(l<<2)|0;B[m>>2]=b;B[m+4>>2]=c;k=k+12|0;a=Va(E(e-c),E(d-b));break b}s=x[k+12>>2]+(l<<2)|0;o=E(a*a);t=E(o*a);w=E(i*t);i=E(E(1)-a);p=E(i*a);n=E(p*E(3));u=E(n*a);r=E(i*i);v=E(i*r);i=E(i*n);n=E(w+E(E(g*u)+E(E(c*v)+E(i*e))));B[s+4>>2]=n;h=E(E(h*t)+E(E(f*u)+E(E(b*v)+E(i*d))));B[s>>2]=h;if(!m){break a}k=k+12|0;if(+a<.001){a=Va(E(e-c),E(d-b));break b}a=E(p*e);c=E(n-E(E(g*o)+E(E(c*r)+E(a+a))));a=E(p*d);a=Va(c,E(h-E(E(f*o)+E(E(b*r)+E(a+a)))));}B[(x[k>>2]+(l<<2)|0)+8>>2]=a;}}function Si(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=E(e);var f=0,g=0,h=0,i=0,j=0,k=0;f=qa-32|0;qa=f;g=x[a+4>>2];h=(g>>1)+b|0;b=x[a>>2];b=g&1?x[x[h>>2]+b>>2]:b;a:{a=x[c>>2];if(a>>>0>=2147483632){break a}b:{if(a>>>0<=10){v[f+31|0]=a;g=f+20|0;break b}i=(a|15)+1|0;g=Ea(i);x[f+28>>2]=i|-2147483648;x[f+20>>2]=g;x[f+24>>2]=a;}j=Fa(g,c+4|0,a)+a|0,k=0,v[j|0]=k;a=x[d>>2];if(a>>>0>=2147483632){break a}c:{if(a>>>0<=10){v[f+19|0]=a;c=f+8|0;break c}g=(a|15)+1|0;c=Ea(g);x[f+16>>2]=g|-2147483648;x[f+8>>2]=c;x[f+12>>2]=a;}j=Fa(c,d+4|0,a)+a|0,k=0,v[j|0]=k;sa[b|0](h,f+20|0,f+8|0,e);if(v[f+19|0]<0){Ja(x[f+8>>2]);}if(v[f+31|0]<0){Ja(x[f+20>>2]);}qa=f+32|0;return}O();p();}function bl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){c=x[c+x[b>>2]>>2];}a=sa[c|0](b)|0;b=Pa(16);x[b>>2]=13296;x[b+4>>2]=x[a+4>>2];c=x[a+8>>2];x[b+12>>2]=0;x[b+8>>2]=c;a:{if(!c){break a}e=Da();c=sa[x[x[e>>2]+12>>2]](e,c<<2,7693,197)|0;x[b+12>>2]=c;f=x[b+4>>2];if(!f){break a}e=x[a+12>>2];a=0;if(f>>>0>=4){j=f&-4;while(1){d=a<<2;B[d+c>>2]=B[d+e>>2];g=d|4;B[g+c>>2]=B[e+g>>2];g=d|8;B[g+c>>2]=B[e+g>>2];d=d|12;B[d+c>>2]=B[d+e>>2];a=a+4|0;h=h+4|0;if((j|0)!=(h|0)){continue}break}}d=f&3;if(!d){break a}while(1){f=a<<2;B[f+c>>2]=B[e+f>>2];a=a+1|0;i=i+1|0;if((d|0)!=(i|0)){continue}break}}return b|0}function al(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){c=x[c+x[b>>2]>>2];}a=sa[c|0](b)|0;b=Pa(16);x[b>>2]=16028;x[b+4>>2]=x[a+4>>2];c=x[a+8>>2];x[b+12>>2]=0;x[b+8>>2]=c;a:{if(!c){break a}e=Da();c=sa[x[x[e>>2]+12>>2]](e,c<<1,7693,197)|0;x[b+12>>2]=c;f=x[b+4>>2];if(!f){break a}e=x[a+12>>2];a=0;if(f>>>0>=4){j=f&-4;while(1){d=a<<1;w[d+c>>1]=z[d+e>>1];g=d|2;w[g+c>>1]=z[e+g>>1];g=d|4;w[g+c>>1]=z[e+g>>1];d=d|6;w[d+c>>1]=z[d+e>>1];a=a+4|0;h=h+4|0;if((j|0)!=(h|0)){continue}break}}d=f&3;if(!d){break a}while(1){f=a<<1;w[f+c>>1]=z[e+f>>1];a=a+1|0;i=i+1|0;if((d|0)!=(i|0)){continue}break}}return b|0}function xn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=E(d);var e=0,f=0,g=0,h=0;e=qa-32|0;qa=e;h=x[a+8>>2];f=x[b>>2];g=v[b+11|0];x[e+20>>2]=1080;a=0;b=(g|0)<0?f:b;a:{if(!b){x[e+24>>2]=0;break a}a=Ga(b);x[e+24>>2]=a;f=Da();g=a+1|0;a=sa[x[x[f>>2]+12>>2]](f,g,8064,57)|0;Fa(a,b,g);}x[e+28>>2]=a;a=x[c>>2];f=v[c+11|0];x[e+8>>2]=1080;b=0;a=(f|0)<0?a:c;b:{if(!a){x[e+12>>2]=0;break b}b=Ga(a);x[e+12>>2]=b;c=Da();f=b+1|0;b=sa[x[x[c>>2]+12>>2]](c,f,8064,57)|0;Fa(b,a,f);}x[e+16>>2]=b;ui(h,e+20|0,e+8|0,d);x[e+8>>2]=1080;a=x[e+16>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}x[e+20>>2]=1080;a=x[e+28>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}qa=e+32|0;}function Rg(a,b,c,d,e){var f=E(0),g=E(0),h=E(0),i=E(0),j=0,k=E(0),l=0,m=0,n=E(0),o=E(0),p=E(0),q=E(0),r=E(0),s=E(0),t=E(0);l=x[a+20>>2];a:{if(l){n=E(E(b*e)-E(c*d));o=E(-E(c-e));m=x[a+16>>2];a=m+(l<<2)|0;h=B[a-8>>2];i=B[a-4>>2];p=E(b-d);t=E(-p);a=0;while(1){k=i;f=h;j=a<<2;h=B[j+m>>2];g=E(f-h);i=B[(j|4)+m>>2];q=E(E(f*i)-E(h*k));r=E(k-i);s=E(E(p*r)+E(g*o));g=E(E(E(n*g)+E(q*t))/s);b:{if(!(g>=f&g<=h)&(!(g>=h)|!(f>=g))|!(b<=g&d>=g)&(!(d<=g)|!(b>=g))){break b}f=E(E(E(n*r)+E(q*o))/s);if(!(f>=k&f<=i)&(!(f>=i)|!(f<=k))){break b}j=1;if(c<=f&e>=f){break a}if(!(e<=f)){break b}if(c>=f){break a}}a=a+2|0;if(l>>>0>a>>>0){continue}break}}j=0;}return j}function Ng(a){a=a|0;var b=0,c=0;x[a+212>>2]=0;x[a+208>>2]=13296;x[a>>2]=17740;b=x[a+220>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+196>>2]=0;x[a+192>>2]=13296;b=x[a+204>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+180>>2]=0;x[a+176>>2]=16028;b=x[a+188>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+164>>2]=0;x[a+160>>2]=13296;b=x[a+172>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+148>>2]=0;x[a+144>>2]=13296;b=x[a+156>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+132>>2]=0;x[a+128>>2]=13296;b=x[a+140>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}ke(a+4|0);return a|0}function Wd(a,b){var c=0,d=0,e=0,f=0,g=0;a=x[a+4>>2];a:{if(!a){break a}e=x[b+8>>2];f=x[b+4>>2];b=x[f+44>>2];if(!b){while(1){b:{if(x[x[a+8>>2]+44>>2]){break b}d=x[a+12>>2];b=x[d+44>>2];c=x[e+44>>2];if((b|0)==(c|0)){return a}if(!c|(!b|x[d+40>>2]!=x[e+40>>2])){break b}if(Oa(b,c)){break b}return a}a=x[a+20>>2];if(a){continue}break a}}while(1){c:{d=x[a+8>>2];c=x[d+44>>2];if((c|0)!=(b|0)){if(!c|x[d+40>>2]!=x[f+40>>2]){break c}if(Oa(c,b)){break c}}g=x[a+12>>2];c=x[g+44>>2];d=x[e+44>>2];if((c|0)==(d|0)){return a}if(!d|(!c|x[g+40>>2]!=x[e+40>>2])){break c}if(Oa(c,d)){break c}return a}a=x[a+20>>2];if(a){continue}break}}return 0}function Du(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(gb(a,x[b+8>>2],f)){Nf(b,c,d,e);return}g=y[b+53|0];i=x[a+12>>2];v[b+53|0]=0;h=y[b+52|0];v[b+52|0]=0;m=a+16|0;Lf(x[m>>2],x[a+20>>2],b,c,d,e,f);j=y[b+53|0];l=g|j;k=y[b+52|0];h=h|k;g=a+24|0;i=(i<<3)+m|0;a:{if(g>>>0>=i>>>0){break a}while(1){if(y[b+54|0]){break a}b:{if(k){if(x[b+24>>2]==1){break a}if(y[a+8|0]&2){break b}break a}if(!j){break b}if(!(v[a+8|0]&1)){break a}}w[b+52>>1]=0;Lf(x[g>>2],x[g+4>>2],b,c,d,e,f);j=y[b+53|0];l=j|l;k=y[b+52|0];h=k|h;g=g+8|0;if(i>>>0>g>>>0){continue}break}}v[b+53|0]=(l&255)!=0;v[b+52|0]=(h&255)!=0;}function Ed(a){a=a|0;var b=0,c=0;x[a+64>>2]=15952;x[a>>2]=15928;x[a+168>>2]=1080;b=x[a+176>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}x[a+156>>2]=0;x[a+152>>2]=16028;b=x[a+164>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+140>>2]=0;x[a+136>>2]=16028;b=x[a+148>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+124>>2]=0;x[a+120>>2]=13296;b=x[a+132>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+108>>2]=0;x[a+104>>2]=13296;b=x[a+116>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+64>>2]=13168;b=x[a+72>>2];a:{if(!b){break a}c=x[a+68>>2];if(!c){break a}sa[b|0](c);}return Rc(a)|0}function Xc(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;d=x[a+124>>2];if(d){f=x[a+132>>2];while(1){b=x[f+(e<<2)>>2];v[b+88|0]=1;B[b+60>>2]=B[b+32>>2];c=x[b+40>>2];x[b+64>>2]=x[b+36>>2];x[b+68>>2]=c;c=x[b+48>>2];x[b+72>>2]=x[b+44>>2];x[b+76>>2]=c;c=x[b+56>>2];x[b+80>>2]=x[b+52>>2];x[b+84>>2]=c;e=e+1|0;if((d|0)!=(e|0)){continue}break}}d=x[a+108>>2];a:{if(!d){break a}b=0;if((d|0)!=1){f=d&-2;e=0;while(1){c=b<<2;g=x[c+x[a+116>>2]>>2];sa[x[x[g>>2]+12>>2]](g);c=x[x[a+116>>2]+(c|4)>>2];sa[x[x[c>>2]+12>>2]](c);b=b+2|0;e=e+2|0;if((f|0)!=(e|0)){continue}break}}if(!(d&1)){break a}a=x[x[a+116>>2]+(b<<2)>>2];sa[x[x[a>>2]+12>>2]](a);}}function Tj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=E(d);var e=0,f=0,g=0,h=0,i=0;e=qa-32|0;qa=e;f=x[b>>2];g=v[b+11|0];x[e+20>>2]=1080;f=(g|0)<0?f:b;a:{if(!f){b=0;g=0;break a}b=Ga(f);g=Da();h=b+1|0;g=sa[x[x[g>>2]+12>>2]](g,h,8064,57)|0;Fa(g,f,h);}x[e+28>>2]=g;x[e+24>>2]=b;b=x[c>>2];f=v[c+11|0];x[e+8>>2]=1080;b=(f|0)<0?b:c;b:{if(!b){c=0;break b}i=Ga(b);c=Da();f=i+1|0;c=sa[x[x[c>>2]+12>>2]](c,f,8064,57)|0;Fa(c,b,f);}x[e+16>>2]=c;x[e+12>>2]=i;ui(a,e+20|0,e+8|0,d);x[e+8>>2]=1080;a=x[e+16>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}x[e+20>>2]=1080;a=x[e+28>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}qa=e+32|0;}function vi(){P(40864,40892,40928,0,20376,2017,20379,0,20379,0,7171,20381,2018);S(40864,2661,1,40944,20381,2019,2020,0);S(40864,1220,1,40944,20381,2019,2021,0);S(40864,1164,2,40948,20448,2022,2023,0);S(40864,11161,2,40956,20448,2024,2025,0);S(40864,6161,3,40964,20492,2026,2027,0);S(40864,1181,3,40976,20492,2028,2029,0);S(40864,11223,3,40988,20756,2030,2031,0);S(40864,11190,2,41e3,30644,2032,2033,0);S(40864,9835,2,40712,30644,2034,2035,0);S(40864,11130,1,41008,20376,2036,2037,0);S(40864,8773,1,41012,20376,2038,2039,0);S(40864,1126,1,37884,20376,1410,2040,0);S(40864,2272,1,41016,20376,2041,2042,0);}function Rj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=E(e);var f=0,g=0,h=0,i=0,j=0,k=0;f=qa-32|0;qa=f;a:{g=x[c>>2];if(g>>>0>=2147483632){break a}i=x[a>>2];b:{if(g>>>0<=10){v[f+31|0]=g;a=f+20|0;break b}h=(g|15)+1|0;a=Ea(h);x[f+28>>2]=h|-2147483648;x[f+20>>2]=a;x[f+24>>2]=g;}j=Fa(a,c+4|0,g)+g|0,k=0,v[j|0]=k;a=x[d>>2];if(a>>>0>=2147483632){break a}c:{if(a>>>0<=10){v[f+19|0]=a;c=f+8|0;break c}g=(a|15)+1|0;c=Ea(g);x[f+16>>2]=g|-2147483648;x[f+8>>2]=c;x[f+12>>2]=a;}j=Fa(c,d+4|0,a)+a|0,k=0,v[j|0]=k;sa[i|0](b,f+20|0,f+8|0,e);if(v[f+19|0]<0){Ja(x[f+8>>2]);}if(v[f+31|0]<0){Ja(x[f+20>>2]);}qa=f+32|0;return}O();p();}function mj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=qa-32|0;qa=e;a:{f=x[c>>2];if(f>>>0>=2147483632){break a}h=x[a>>2];b:{if(f>>>0<=10){v[e+31|0]=f;a=e+20|0;break b}g=(f|15)+1|0;a=Ea(g);x[e+28>>2]=g|-2147483648;x[e+20>>2]=a;x[e+24>>2]=f;}i=Fa(a,c+4|0,f)+f|0,j=0,v[i|0]=j;a=x[d>>2];if(a>>>0>=2147483632){break a}c:{if(a>>>0<=10){v[e+19|0]=a;c=e+8|0;break c}f=(a|15)+1|0;c=Ea(f);x[e+16>>2]=f|-2147483648;x[e+8>>2]=c;x[e+12>>2]=a;}i=Fa(c,d+4|0,a)+a|0,j=0,v[i|0]=j;a=sa[h|0](b,e+20|0,e+8|0)|0;if(v[e+19|0]<0){Ja(x[e+8>>2]);}if(v[e+31|0]<0){Ja(x[e+20>>2]);}qa=e+32|0;return a|0}O();p();}function um(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=qa-16|0;qa=d;c=x[b>>2];f=v[b+11|0];x[d+4>>2]=1080;b=(f|0)<0?c:b;a:{if(!b){c=0;break a}e=Ga(b);c=Da();f=e+1|0;c=sa[x[x[c>>2]+12>>2]](c,f,8064,57)|0;Fa(c,b,f);}x[d+12>>2]=c;x[d+8>>2]=e;b=d+4|0;if((b|0)!=(a+168|0)){b:{c=x[a+176>>2];if(c){e=Da();sa[x[x[e>>2]+20>>2]](e,c,8064,122);}if(!x[b+8>>2]){x[a+172>>2]=0;x[a+176>>2]=0;break b}x[a+172>>2]=x[b+4>>2];c=x[b+4>>2];e=a;a=Da();a=sa[x[x[a>>2]+12>>2]](a,c+1|0,8064,129)|0;x[e+176>>2]=a;Fa(a,x[b+8>>2],x[b+4>>2]+1|0);}}x[d+4>>2]=1080;a=x[d+12>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}qa=d+16|0;}function fu(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=E(c);d=E(d);e=e|0;g=g|0;h=h|0;var i=0;a:{i=x[x[b+36>>2]+(x[a+4>>2]<<2)>>2];e=x[i+8>>2];if(!(sa[x[x[e>>2]+16>>2]](e)|0)){break a}b:{c:{if(!((h|0)!=1|g)){e=x[i+4>>2];g=0;if(!x[e+72>>2]){break b}e=e+68|0;break c}h=x[a+20>>2];if(B[h>>2]>d){if(g>>>0>1){break a}e=x[i+4>>2];g=0;if(!x[e+72>>2]){break b}e=e+68|0;break c}e=x[a+12>>2]-1|0;if(!(B[h+(e<<2)>>2]<=d)){e=Nb(a+8|0,d,1)-1|0;}h=x[a+36>>2];g=0;if(!x[(h+D(e,12)|0)+4>>2]){break b}e=h+D(e,12)|0;}g=Fe(b,x[a+4>>2],e);}if((g|0)!=x[i+60>>2]){x[i+60>>2]=g;c=B[x[i+12>>2]+160>>2];x[i+72>>2]=0;B[i+64>>2]=c;}}}function em(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=qa-16|0;qa=d;c=x[b>>2];f=v[b+11|0];x[d+4>>2]=1080;b=(f|0)<0?c:b;a:{if(!b){c=0;break a}e=Ga(b);c=Da();f=e+1|0;c=sa[x[x[c>>2]+12>>2]](c,f,8064,57)|0;Fa(c,b,f);}x[d+12>>2]=c;x[d+8>>2]=e;b=d+4|0;if((b|0)!=(a+116|0)){b:{c=x[a+124>>2];if(c){e=Da();sa[x[x[e>>2]+20>>2]](e,c,8064,122);}if(!x[b+8>>2]){x[a+120>>2]=0;x[a+124>>2]=0;break b}x[a+120>>2]=x[b+4>>2];c=x[b+4>>2];e=a;a=Da();a=sa[x[x[a>>2]+12>>2]](a,c+1|0,8064,129)|0;x[e+124>>2]=a;Fa(a,x[b+8>>2],x[b+4>>2]+1|0);}}x[d+4>>2]=1080;a=x[d+12>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}qa=d+16|0;}function Ge(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=E(0),h=0;x[a+44>>2]=0;f=x[a+28>>2];a:{if(!f){break a}while(1){d=x[a+36>>2]+(c<<2)|0;b:{if(x[a+48>>2]==(b|0)){d=x[d>>2];g=E(E(b>>>0)*E(1.75));c:{if(E(F(g))>>0<=8?8:b;x[a+48>>2]=b;e=x[a+52>>2];h=Da();e=sa[x[x[h>>2]+16>>2]](h,e,b<<2,7693,106)|0;x[a+52>>2]=e;b=x[a+44>>2];x[e+(b<<2)>>2]=d;break b}x[x[a+52>>2]+(b<<2)>>2]=x[d>>2];}b=b+1|0;x[a+44>>2]=b;c=c+1|0;if((f|0)!=(c|0)){continue}break}c=x[a+28>>2];if(!c){break a}b=0;while(1){qe(x[x[a+36>>2]+(b<<2)>>2]);b=b+1|0;if((c|0)!=(b|0)){continue}break}}}function jj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=qa-32|0;qa=e;a:{f=x[c>>2];if(f>>>0>=2147483632){break a}h=x[a>>2];b:{if(f>>>0<=10){v[e+31|0]=f;a=e+20|0;break b}g=(f|15)+1|0;a=Ea(g);x[e+28>>2]=g|-2147483648;x[e+20>>2]=a;x[e+24>>2]=f;}i=Fa(a,c+4|0,f)+f|0,j=0,v[i|0]=j;a=x[d>>2];if(a>>>0>=2147483632){break a}c:{if(a>>>0<=10){v[e+19|0]=a;c=e+8|0;break c}f=(a|15)+1|0;c=Ea(f);x[e+16>>2]=f|-2147483648;x[e+8>>2]=c;x[e+12>>2]=a;}i=Fa(c,d+4|0,a)+a|0,j=0,v[i|0]=j;sa[h|0](b,e+20|0,e+8|0);if(v[e+19|0]<0){Ja(x[e+8>>2]);}if(v[e+31|0]<0){Ja(x[e+20>>2]);}qa=e+32|0;return}O();p();}function Im(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=qa-16|0;qa=d;c=x[b>>2];f=v[b+11|0];x[d+4>>2]=1080;b=(f|0)<0?c:b;a:{if(!b){c=0;break a}e=Ga(b);c=Da();f=e+1|0;c=sa[x[x[c>>2]+12>>2]](c,f,8064,57)|0;Fa(c,b,f);}x[d+12>>2]=c;x[d+8>>2]=e;b=d+4|0;if((b|0)!=(a+20|0)){b:{c=x[a+28>>2];if(c){e=Da();sa[x[x[e>>2]+20>>2]](e,c,8064,122);}if(!x[b+8>>2]){x[a+24>>2]=0;x[a+28>>2]=0;break b}x[a+24>>2]=x[b+4>>2];c=x[b+4>>2];e=a;a=Da();a=sa[x[x[a>>2]+12>>2]](a,c+1|0,8064,129)|0;x[e+28>>2]=a;Fa(a,x[b+8>>2],x[b+4>>2]+1|0);}}x[d+4>>2]=1080;a=x[d+12>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}qa=d+16|0;}function Fm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=qa-16|0;qa=d;c=x[b>>2];f=v[b+11|0];x[d+4>>2]=1080;b=(f|0)<0?c:b;a:{if(!b){c=0;break a}e=Ga(b);c=Da();f=e+1|0;c=sa[x[x[c>>2]+12>>2]](c,f,8064,57)|0;Fa(c,b,f);}x[d+12>>2]=c;x[d+8>>2]=e;b=d+4|0;if((b|0)!=(a+24|0)){b:{c=x[a+32>>2];if(c){e=Da();sa[x[x[e>>2]+20>>2]](e,c,8064,122);}if(!x[b+8>>2]){x[a+28>>2]=0;x[a+32>>2]=0;break b}x[a+28>>2]=x[b+4>>2];c=x[b+4>>2];e=a;a=Da();a=sa[x[x[a>>2]+12>>2]](a,c+1|0,8064,129)|0;x[e+32>>2]=a;Fa(a,x[b+8>>2],x[b+4>>2]+1|0);}}x[d+4>>2]=1080;a=x[d+12>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}qa=d+16|0;}function Em(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=qa-16|0;qa=d;c=x[b>>2];f=v[b+11|0];x[d+4>>2]=1080;b=(f|0)<0?c:b;a:{if(!b){c=0;break a}e=Ga(b);c=Da();f=e+1|0;c=sa[x[x[c>>2]+12>>2]](c,f,8064,57)|0;Fa(c,b,f);}x[d+12>>2]=c;x[d+8>>2]=e;b=d+4|0;if((b|0)!=(a+36|0)){b:{c=x[a+44>>2];if(c){e=Da();sa[x[x[e>>2]+20>>2]](e,c,8064,122);}if(!x[b+8>>2]){x[a+40>>2]=0;x[a+44>>2]=0;break b}x[a+40>>2]=x[b+4>>2];c=x[b+4>>2];e=a;a=Da();a=sa[x[x[a>>2]+12>>2]](a,c+1|0,8064,129)|0;x[e+44>>2]=a;Fa(a,x[b+8>>2],x[b+4>>2]+1|0);}}x[d+4>>2]=1080;a=x[d+12>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}qa=d+16|0;}function sc(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0;i=1;j=d&2147483647;l=j;k=(j|0)==2147418112;a:{if(k&!c?a|b:k&(c|0)!=0|j>>>0>2147418112){break a}j=h&2147483647;k=(j|0)==2147418112;if(k&!g?e|f:k&(g|0)!=0|j>>>0>2147418112){break a}if(!(a|e|(c|g)|(b|f|(j|l)))){return 0}i=d&h;if((i|0)>0|(i|0)>=0){i=-1;if((c|0)==(g|0)&(d|0)==(h|0)?(b|0)==(f|0)&a>>>0>>0|b>>>0>>0:c>>>0>>0&(d|0)<=(h|0)|(d|0)<(h|0)){break a}return (a^e|c^g|(b^f|d^h))!=0}i=-1;if((c|0)==(g|0)&(d|0)==(h|0)?(b|0)==(f|0)&a>>>0>e>>>0|b>>>0>f>>>0:c>>>0>g>>>0&(d|0)>=(h|0)|(d|0)>(h|0)){break a}i=(a^e|c^g|(b^f|d^h))!=0;}return i}function Oe(a,b,c,d,e){var f=E(0),g=E(0),h=E(0),i=E(0),j=E(0),k=E(0),l=E(0),m=E(0),n=0;j=B[b+100>>2];k=B[b+92>>2];l=B[b+96>>2];n=(d<<2)+c|0;h=B[b+112>>2];i=B[b+104>>2];a=x[a+96>>2];f=B[a+24>>2];m=B[b+108>>2];g=B[a+28>>2];B[n+4>>2]=h+E(E(i*f)+E(m*g));B[n>>2]=j+E(E(f*k)+E(l*g));b=d+e|0;d=(b<<2)+c|0;f=B[a>>2];g=B[a+4>>2];B[d+4>>2]=h+E(E(i*f)+E(m*g));B[d>>2]=j+E(E(f*k)+E(l*g));b=b+e|0;d=(b<<2)+c|0;f=B[a+8>>2];g=B[a+12>>2];B[d+4>>2]=h+E(E(i*f)+E(m*g));B[d>>2]=j+E(E(f*k)+E(l*g));b=(b+e<<2)+c|0;f=h;h=B[a+16>>2];g=E(i*h);i=B[a+20>>2];B[b+4>>2]=f+E(g+E(m*i));B[b>>2]=j+E(E(h*k)+E(l*i));}function wv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=qa-32|0;qa=d;a:{e=x[b>>2];if(e>>>0>=2147483632){break a}b:{if(e>>>0<=10){v[d+31|0]=e;f=d+20|0;break b}g=(e|15)+1|0;f=Ea(g);x[d+28>>2]=g|-2147483648;x[d+20>>2]=f;x[d+24>>2]=e;}h=Fa(f,b+4|0,e)+e|0,i=0,v[h|0]=i;e=x[c>>2];if(e>>>0>=2147483632){break a}c:{if(e>>>0<=10){v[d+19|0]=e;b=d+8|0;break c}f=(e|15)+1|0;b=Ea(f);x[d+16>>2]=f|-2147483648;x[d+8>>2]=b;x[d+12>>2]=e;}h=Fa(b,c+4|0,e)+e|0,i=0,v[h|0]=i;a=sa[a|0](d+20|0,d+8|0)|0;if(v[d+19|0]<0){Ja(x[d+8>>2]);}if(v[d+31|0]<0){Ja(x[d+20>>2]);}qa=d+32|0;return a|0}O();p();}function sj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;d=qa-16|0;qa=d;c=x[b>>2];e=v[b+11|0];x[d+4>>2]=1080;b=(e|0)<0?c:b;a:{if(!b){c=0;break a}f=Ga(b);c=Da();e=f+1|0;c=sa[x[x[c>>2]+12>>2]](c,e,8064,57)|0;Fa(c,b,e);}x[d+12>>2]=c;x[d+8>>2]=f;b=0;e=x[a+12>>2];b:{if(e){while(1){g=x[x[x[a+20>>2]+(b<<2)>>2]+4>>2];c=x[(g+8|0)+8>>2];f=x[d+12>>2];if((c|0)==(f|0)){break b}c:{if(!f|(!c|x[g+12>>2]!=x[d+8>>2])){break c}if(Oa(c,f)){break c}break b}b=b+1|0;if((e|0)!=(b|0)){continue}break}}b=-1;}x[d+4>>2]=1080;a=x[d+12>>2];if(a){c=Da();sa[x[x[c>>2]+20>>2]](c,a,8064,201);}qa=d+16|0;return b|0}function qj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;d=qa-16|0;qa=d;c=x[b>>2];e=v[b+11|0];x[d+4>>2]=1080;b=(e|0)<0?c:b;a:{if(!b){c=0;break a}f=Ga(b);c=Da();e=f+1|0;c=sa[x[x[c>>2]+12>>2]](c,e,8064,57)|0;Fa(c,b,e);}x[d+12>>2]=c;x[d+8>>2]=f;b=0;e=x[a+28>>2];b:{if(e){while(1){g=x[x[x[a+36>>2]+(b<<2)>>2]+4>>2];c=x[(g+8|0)+8>>2];f=x[d+12>>2];if((c|0)==(f|0)){break b}c:{if(!f|(!c|x[g+12>>2]!=x[d+8>>2])){break c}if(Oa(c,f)){break c}break b}b=b+1|0;if((e|0)!=(b|0)){continue}break}}b=-1;}x[d+4>>2]=1080;a=x[d+12>>2];if(a){c=Da();sa[x[x[c>>2]+20>>2]](c,a,8064,201);}qa=d+16|0;return b|0}function gj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;d=qa-16|0;qa=d;c=x[b>>2];e=v[b+11|0];x[d+4>>2]=1080;b=(e|0)<0?c:b;a:{if(!b){c=0;break a}f=Ga(b);c=Da();e=f+1|0;c=sa[x[x[c>>2]+12>>2]](c,e,8064,57)|0;Fa(c,b,e);}x[d+12>>2]=c;x[d+8>>2]=f;b=0;g=x[a+92>>2];b:{if(g){while(1){c=x[x[a+100>>2]+(b<<2)>>2];h=x[c+4>>2];f=x[(h+4|0)+8>>2];e=x[d+12>>2];if((f|0)==(e|0)){break b}if(!(!e|(!f|x[h+8>>2]!=x[d+8>>2]))){if(!Oa(f,e)){break b}}b=b+1|0;if((g|0)!=(b|0)){continue}break}}c=0;}x[d+4>>2]=1080;a=x[d+12>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}qa=d+16|0;return c|0}function Fk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;d=qa-16|0;qa=d;c=x[b>>2];e=v[b+11|0];x[d+4>>2]=1080;b=(e|0)<0?c:b;a:{if(!b){c=0;break a}f=Ga(b);c=Da();e=f+1|0;c=sa[x[x[c>>2]+12>>2]](c,e,8064,57)|0;Fa(c,b,e);}x[d+12>>2]=c;x[d+8>>2]=f;b=0;e=x[a+136>>2];b:{if(e){while(1){g=x[x[a+144>>2]+(b<<2)>>2];c=x[(g+4|0)+8>>2];f=x[d+12>>2];if((c|0)==(f|0)){break b}c:{if(!f|(!c|x[g+8>>2]!=x[d+8>>2])){break c}if(Oa(c,f)){break c}break b}b=b+1|0;if((e|0)!=(b|0)){continue}break}}b=-1;}x[d+4>>2]=1080;a=x[d+12>>2];if(a){c=Da();sa[x[x[c>>2]+20>>2]](c,a,8064,201);}qa=d+16|0;return b|0}function ij(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;d=qa-16|0;qa=d;c=x[b>>2];e=v[b+11|0];x[d+4>>2]=1080;b=(e|0)<0?c:b;a:{if(!b){c=0;break a}f=Ga(b);c=Da();e=f+1|0;c=sa[x[x[c>>2]+12>>2]](c,e,8064,57)|0;Fa(c,b,e);}x[d+12>>2]=c;x[d+8>>2]=f;b=0;g=x[a+60>>2];b:{if(g){while(1){c=x[x[a+68>>2]+(b<<2)>>2];h=x[c+4>>2];f=x[(h+4|0)+8>>2];e=x[d+12>>2];if((f|0)==(e|0)){break b}if(!(!e|(!f|x[h+8>>2]!=x[d+8>>2]))){if(!Oa(f,e)){break b}}b=b+1|0;if((g|0)!=(b|0)){continue}break}}c=0;}x[d+4>>2]=1080;a=x[d+12>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}qa=d+16|0;return c|0}function hj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;d=qa-16|0;qa=d;c=x[b>>2];e=v[b+11|0];x[d+4>>2]=1080;b=(e|0)<0?c:b;a:{if(!b){c=0;break a}f=Ga(b);c=Da();e=f+1|0;c=sa[x[x[c>>2]+12>>2]](c,e,8064,57)|0;Fa(c,b,e);}x[d+12>>2]=c;x[d+8>>2]=f;b=0;g=x[a+76>>2];b:{if(g){while(1){c=x[x[a+84>>2]+(b<<2)>>2];h=x[c+4>>2];f=x[(h+4|0)+8>>2];e=x[d+12>>2];if((f|0)==(e|0)){break b}if(!(!e|(!f|x[h+8>>2]!=x[d+8>>2]))){if(!Oa(f,e)){break b}}b=b+1|0;if((g|0)!=(b|0)){continue}break}}c=0;}x[d+4>>2]=1080;a=x[d+12>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}qa=d+16|0;return c|0}function En(a,b,c,d){a=a|0;b=E(b);c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=qa-16|0;qa=f;e=x[a>>2];a:{if(!e){c=0;break a}g=x[e+4>>2];h=x[c>>2];i=v[c+11|0];x[f+4>>2]=1080;e=0;c=(i|0)<0?h:c;b:{if(!c){x[f+8>>2]=0;break b}e=Ga(c);x[f+8>>2]=e;h=Da();i=e+1|0;e=sa[x[x[h>>2]+12>>2]](h,i,8064,57)|0;Fa(e,c,i);}x[f+12>>2]=e;e=xc(g,f+4|0);x[f+4>>2]=1080;c=x[f+12>>2];if(c){g=Da();sa[x[x[g>>2]+20>>2]](g,c,8064,201);}c=x[a+12>>2];if(!e){eg(c);He(x[a>>2]);c=0;break a}if(b=E(0)){g=~~b>>>0;}else {g=0;}c=hd(c,g,e,d);id(x[a+12>>2],x[a>>2]);Xc(x[a>>2]);}qa=f+16|0;return c|0}function mm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=b- -64|0;f=x[b+12>>2];b=x[b+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;c=Ea(d);x[a>>2]=c;e=c+d|0;x[a+8>>2]=e;d=Ha(c,0,d);x[a+4>>2]=e;a=0;if(b>>>0>=4){i=b&-4;e=0;while(1){c=a<<2;B[c+d>>2]=B[c+f>>2];g=c|4;B[g+d>>2]=B[f+g>>2];g=c|8;B[g+d>>2]=B[f+g>>2];c=c|12;B[c+d>>2]=B[c+f>>2];a=a+4|0;e=e+4|0;if((i|0)!=(e|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;B[c+d>>2]=B[c+f>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function tm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=b+120|0;f=x[b+12>>2];b=x[b+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;c=Ea(d);x[a>>2]=c;e=c+d|0;x[a+8>>2]=e;d=Ha(c,0,d);x[a+4>>2]=e;a=0;if(b>>>0>=4){i=b&-4;e=0;while(1){c=a<<2;B[c+d>>2]=B[c+f>>2];g=c|4;B[g+d>>2]=B[f+g>>2];g=c|8;B[g+d>>2]=B[f+g>>2];c=c|12;B[c+d>>2]=B[c+f>>2];a=a+4|0;e=e+4|0;if((i|0)!=(e|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;B[c+d>>2]=B[c+f>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function sm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=b+104|0;f=x[b+12>>2];b=x[b+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;c=Ea(d);x[a>>2]=c;e=c+d|0;x[a+8>>2]=e;d=Ha(c,0,d);x[a+4>>2]=e;a=0;if(b>>>0>=4){i=b&-4;e=0;while(1){c=a<<2;B[c+d>>2]=B[c+f>>2];g=c|4;B[g+d>>2]=B[f+g>>2];g=c|8;B[g+d>>2]=B[f+g>>2];c=c|12;B[c+d>>2]=B[c+f>>2];a=a+4|0;e=e+4|0;if((i|0)!=(e|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;B[c+d>>2]=B[c+f>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function bm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=b+100|0;f=x[b+12>>2];b=x[b+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;c=Ea(d);x[a>>2]=c;e=c+d|0;x[a+8>>2]=e;d=Ha(c,0,d);x[a+4>>2]=e;a=0;if(b>>>0>=4){i=b&-4;e=0;while(1){c=a<<2;B[c+d>>2]=B[c+f>>2];g=c|4;B[g+d>>2]=B[f+g>>2];g=c|8;B[g+d>>2]=B[f+g>>2];c=c|12;B[c+d>>2]=B[c+f>>2];a=a+4|0;e=e+4|0;if((i|0)!=(e|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;B[c+d>>2]=B[c+f>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function Wk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b+100|0;b=x[c+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;e=Ea(d);x[a>>2]=e;f=d+e|0;x[a+8>>2]=f;d=Ha(e,0,d);x[a+4>>2]=f;e=x[c+12>>2];a=0;if(b>>>0>=4){i=b&-4;f=0;while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];g=c|4;x[g+d>>2]=x[e+g>>2];g=c|8;x[g+d>>2]=x[e+g>>2];c=c|12;x[c+d>>2]=x[c+e>>2];a=a+4|0;f=f+4|0;if((i|0)!=(f|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function Vk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b+116|0;b=x[c+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;e=Ea(d);x[a>>2]=e;f=d+e|0;x[a+8>>2]=f;d=Ha(e,0,d);x[a+4>>2]=f;e=x[c+12>>2];a=0;if(b>>>0>=4){i=b&-4;f=0;while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];g=c|4;x[g+d>>2]=x[e+g>>2];g=c|8;x[g+d>>2]=x[e+g>>2];c=c|12;x[c+d>>2]=x[c+e>>2];a=a+4|0;f=f+4|0;if((i|0)!=(f|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function Uk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b+132|0;b=x[c+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;e=Ea(d);x[a>>2]=e;f=d+e|0;x[a+8>>2]=f;d=Ha(e,0,d);x[a+4>>2]=f;e=x[c+12>>2];a=0;if(b>>>0>=4){i=b&-4;f=0;while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];g=c|4;x[g+d>>2]=x[e+g>>2];g=c|8;x[g+d>>2]=x[e+g>>2];c=c|12;x[c+d>>2]=x[c+e>>2];a=a+4|0;f=f+4|0;if((i|0)!=(f|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function yj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b+56|0;b=x[c+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;e=Ea(d);x[a>>2]=e;f=d+e|0;x[a+8>>2]=f;d=Ha(e,0,d);x[a+4>>2]=f;e=x[c+12>>2];a=0;if(b>>>0>=4){i=b&-4;f=0;while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];g=c|4;x[g+d>>2]=x[e+g>>2];g=c|8;x[g+d>>2]=x[e+g>>2];c=c|12;x[c+d>>2]=x[c+e>>2];a=a+4|0;f=f+4|0;if((i|0)!=(f|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function xj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b+72|0;b=x[c+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;e=Ea(d);x[a>>2]=e;f=d+e|0;x[a+8>>2]=f;d=Ha(e,0,d);x[a+4>>2]=f;e=x[c+12>>2];a=0;if(b>>>0>=4){i=b&-4;f=0;while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];g=c|4;x[g+d>>2]=x[e+g>>2];g=c|8;x[g+d>>2]=x[e+g>>2];c=c|12;x[c+d>>2]=x[c+e>>2];a=a+4|0;f=f+4|0;if((i|0)!=(f|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function wj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b+88|0;b=x[c+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;e=Ea(d);x[a>>2]=e;f=d+e|0;x[a+8>>2]=f;d=Ha(e,0,d);x[a+4>>2]=f;e=x[c+12>>2];a=0;if(b>>>0>=4){i=b&-4;f=0;while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];g=c|4;x[g+d>>2]=x[e+g>>2];g=c|8;x[g+d>>2]=x[e+g>>2];c=c|12;x[c+d>>2]=x[c+e>>2];a=a+4|0;f=f+4|0;if((i|0)!=(f|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function sl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=b+68|0;f=x[b+12>>2];b=x[b+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;c=Ea(d);x[a>>2]=c;e=c+d|0;x[a+8>>2]=e;d=Ha(c,0,d);x[a+4>>2]=e;a=0;if(b>>>0>=4){i=b&-4;e=0;while(1){c=a<<2;B[c+d>>2]=B[c+f>>2];g=c|4;B[g+d>>2]=B[f+g>>2];g=c|8;B[g+d>>2]=B[f+g>>2];c=c|12;B[c+d>>2]=B[c+f>>2];a=a+4|0;e=e+4|0;if((i|0)!=(e|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;B[c+d>>2]=B[c+f>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function ql(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b+36|0;b=x[c+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;e=Ea(d);x[a>>2]=e;f=d+e|0;x[a+8>>2]=f;d=Ha(e,0,d);x[a+4>>2]=f;e=x[c+12>>2];a=0;if(b>>>0>=4){i=b&-4;f=0;while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];g=c|4;x[g+d>>2]=x[e+g>>2];g=c|8;x[g+d>>2]=x[e+g>>2];c=c|12;x[c+d>>2]=x[c+e>>2];a=a+4|0;f=f+4|0;if((i|0)!=(f|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function pl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b+52|0;b=x[c+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;e=Ea(d);x[a>>2]=e;f=d+e|0;x[a+8>>2]=f;d=Ha(e,0,d);x[a+4>>2]=f;e=x[c+12>>2];a=0;if(b>>>0>=4){i=b&-4;f=0;while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];g=c|4;x[g+d>>2]=x[e+g>>2];g=c|8;x[g+d>>2]=x[e+g>>2];c=c|12;x[c+d>>2]=x[c+e>>2];a=a+4|0;f=f+4|0;if((i|0)!=(f|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function nd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b+24|0;b=x[c+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;e=Ea(d);x[a>>2]=e;f=d+e|0;x[a+8>>2]=f;d=Ha(e,0,d);x[a+4>>2]=f;e=x[c+12>>2];a=0;if(b>>>0>=4){i=b&-4;f=0;while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];g=c|4;x[g+d>>2]=x[e+g>>2];g=c|8;x[g+d>>2]=x[e+g>>2];c=c|12;x[c+d>>2]=x[c+e>>2];a=a+4|0;f=f+4|0;if((i|0)!=(f|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function kg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b+16|0;b=x[c+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;e=Ea(d);x[a>>2]=e;f=d+e|0;x[a+8>>2]=f;d=Ha(e,0,d);x[a+4>>2]=f;e=x[c+12>>2];a=0;if(b>>>0>=4){i=b&-4;f=0;while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];g=c|4;x[g+d>>2]=x[e+g>>2];g=c|8;x[g+d>>2]=x[e+g>>2];c=c|12;x[c+d>>2]=x[c+e>>2];a=a+4|0;f=f+4|0;if((i|0)!=(f|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function dm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=b+84|0;f=x[b+12>>2];b=x[b+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;c=Ea(d);x[a>>2]=c;e=c+d|0;x[a+8>>2]=e;d=Ha(c,0,d);x[a+4>>2]=e;a=0;if(b>>>0>=4){i=b&-4;e=0;while(1){c=a<<2;B[c+d>>2]=B[c+f>>2];g=c|4;B[g+d>>2]=B[f+g>>2];g=c|8;B[g+d>>2]=B[f+g>>2];c=c|12;B[c+d>>2]=B[c+f>>2];a=a+4|0;e=e+4|0;if((i|0)!=(e|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;B[c+d>>2]=B[c+f>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function dk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b+20|0;b=x[c+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;e=Ea(d);x[a>>2]=e;f=d+e|0;x[a+8>>2]=f;d=Ha(e,0,d);x[a+4>>2]=f;e=x[c+12>>2];a=0;if(b>>>0>=4){i=b&-4;f=0;while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];g=c|4;x[g+d>>2]=x[e+g>>2];g=c|8;x[g+d>>2]=x[e+g>>2];c=c|12;x[c+d>>2]=x[c+e>>2];a=a+4|0;f=f+4|0;if((i|0)!=(f|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function _k(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b+32|0;b=x[c+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;e=Ea(d);x[a>>2]=e;f=d+e|0;x[a+8>>2]=f;d=Ha(e,0,d);x[a+4>>2]=f;e=x[c+12>>2];a=0;if(b>>>0>=4){i=b&-4;f=0;while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];g=c|4;x[g+d>>2]=x[e+g>>2];g=c|8;x[g+d>>2]=x[e+g>>2];c=c|12;x[c+d>>2]=x[c+e>>2];a=a+4|0;f=f+4|0;if((i|0)!=(f|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function Zk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b+48|0;b=x[c+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;e=Ea(d);x[a>>2]=e;f=d+e|0;x[a+8>>2]=f;d=Ha(e,0,d);x[a+4>>2]=f;e=x[c+12>>2];a=0;if(b>>>0>=4){i=b&-4;f=0;while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];g=c|4;x[g+d>>2]=x[e+g>>2];g=c|8;x[g+d>>2]=x[e+g>>2];c=c|12;x[c+d>>2]=x[c+e>>2];a=a+4|0;f=f+4|0;if((i|0)!=(f|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function Yk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b+68|0;b=x[c+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;e=Ea(d);x[a>>2]=e;f=d+e|0;x[a+8>>2]=f;d=Ha(e,0,d);x[a+4>>2]=f;e=x[c+12>>2];a=0;if(b>>>0>=4){i=b&-4;f=0;while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];g=c|4;x[g+d>>2]=x[e+g>>2];g=c|8;x[g+d>>2]=x[e+g>>2];c=c|12;x[c+d>>2]=x[c+e>>2];a=a+4|0;f=f+4|0;if((i|0)!=(f|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function Xk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b+84|0;b=x[c+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;e=Ea(d);x[a>>2]=e;f=d+e|0;x[a+8>>2]=f;d=Ha(e,0,d);x[a+4>>2]=f;e=x[c+12>>2];a=0;if(b>>>0>=4){i=b&-4;f=0;while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];g=c|4;x[g+d>>2]=x[e+g>>2];g=c|8;x[g+d>>2]=x[e+g>>2];c=c|12;x[c+d>>2]=x[c+e>>2];a=a+4|0;f=f+4|0;if((i|0)!=(f|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function Dm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=b+20|0;f=x[b+12>>2];b=x[b+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;c=Ea(d);x[a>>2]=c;e=c+d|0;x[a+8>>2]=e;d=Ha(c,0,d);x[a+4>>2]=e;a=0;if(b>>>0>=4){i=b&-4;e=0;while(1){c=a<<2;B[c+d>>2]=A[c+f>>2];g=c|4;B[g+d>>2]=A[f+g>>2];g=c|8;B[g+d>>2]=A[f+g>>2];c=c|12;B[c+d>>2]=A[c+f>>2];a=a+4|0;e=e+4|0;if((i|0)!=(e|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;B[c+d>>2]=A[c+f>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function Cm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=b+36|0;f=x[b+12>>2];b=x[b+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;c=Ea(d);x[a>>2]=c;e=c+d|0;x[a+8>>2]=e;d=Ha(c,0,d);x[a+4>>2]=e;a=0;if(b>>>0>=4){i=b&-4;e=0;while(1){c=a<<2;B[c+d>>2]=B[c+f>>2];g=c|4;B[g+d>>2]=B[f+g>>2];g=c|8;B[g+d>>2]=B[f+g>>2];c=c|12;B[c+d>>2]=B[c+f>>2];a=a+4|0;e=e+4|0;if((i|0)!=(e|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;B[c+d>>2]=B[c+f>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function $f(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b+40|0;b=x[c+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;e=Ea(d);x[a>>2]=e;f=d+e|0;x[a+8>>2]=f;d=Ha(e,0,d);x[a+4>>2]=f;e=x[c+12>>2];a=0;if(b>>>0>=4){i=b&-4;f=0;while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];g=c|4;x[g+d>>2]=x[e+g>>2];g=c|8;x[g+d>>2]=x[e+g>>2];c=c|12;x[c+d>>2]=x[c+e>>2];a=a+4|0;f=f+4|0;if((i|0)!=(f|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function $d(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=b+24|0;f=x[b+12>>2];b=x[b+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;c=Ea(d);x[a>>2]=c;e=c+d|0;x[a+8>>2]=e;d=Ha(c,0,d);x[a+4>>2]=e;a=0;if(b>>>0>=4){i=b&-4;e=0;while(1){c=a<<2;B[c+d>>2]=B[c+f>>2];g=c|4;B[g+d>>2]=B[f+g>>2];g=c|8;B[g+d>>2]=B[f+g>>2];c=c|12;B[c+d>>2]=B[c+f>>2];a=a+4|0;e=e+4|0;if((i|0)!=(e|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;B[c+d>>2]=B[c+f>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function nk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=b+8|0;f=x[b+12>>2];b=x[b+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;c=Ea(d);x[a>>2]=c;e=c+d|0;x[a+8>>2]=e;d=Ha(c,0,d);x[a+4>>2]=e;a=0;if(b>>>0>=4){i=b&-4;e=0;while(1){c=a<<2;B[c+d>>2]=B[c+f>>2];g=c|4;B[g+d>>2]=B[f+g>>2];g=c|8;B[g+d>>2]=B[f+g>>2];c=c|12;B[c+d>>2]=B[c+f>>2];a=a+4|0;e=e+4|0;if((i|0)!=(e|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;B[c+d>>2]=B[c+f>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function jd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b+8|0;b=x[c+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;e=Ea(d);x[a>>2]=e;f=d+e|0;x[a+8>>2]=f;d=Ha(e,0,d);x[a+4>>2]=f;e=x[c+12>>2];a=0;if(b>>>0>=4){i=b&-4;f=0;while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];g=c|4;x[g+d>>2]=x[e+g>>2];g=c|8;x[g+d>>2]=x[e+g>>2];c=c|12;x[c+d>>2]=x[c+e>>2];a=a+4|0;f=f+4|0;if((i|0)!=(f|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function bk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=b+4|0;f=x[b+12>>2];b=x[b+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;c=Ea(d);x[a>>2]=c;e=c+d|0;x[a+8>>2]=e;d=Ha(c,0,d);x[a+4>>2]=e;a=0;if(b>>>0>=4){i=b&-4;e=0;while(1){c=a<<2;B[c+d>>2]=B[c+f>>2];g=c|4;B[g+d>>2]=B[f+g>>2];g=c|8;B[g+d>>2]=B[f+g>>2];c=c|12;B[c+d>>2]=B[c+f>>2];a=a+4|0;e=e+4|0;if((i|0)!=(e|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;B[c+d>>2]=B[c+f>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function Dw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;a=x[a>>2]+D(b,12)|0;if((a|0)!=(c|0)){f=y[c+11|0];b=f<<24>>24;if(v[a+11|0]>=0){if((b|0)>=0){b=x[c+4>>2];x[a>>2]=x[c>>2];x[a+4>>2]=b;x[a+8>>2]=x[c+8>>2];return 1}d=x[c>>2];b=x[c+4>>2];a:{if(b>>>0<=10){v[a+11|0]=b;g=ed(a,d,b)+b|0,h=0,v[g|0]=h;break a}c=a;a=y[a+11|0]&127;Th(c,10,b-10|0,a,a,b,d);}return 1}b=(b|0)<0;d=b?x[c>>2]:c;e=x[a+8>>2]&2147483647;b=b?x[c+4>>2]:f;b:{if(e>>>0>b>>>0){c=x[a>>2];x[a+4>>2]=b;g=ed(c,d,b)+b|0,h=0,v[g|0]=h;break b}c=a;a=x[a+4>>2];Th(c,e-1|0,(b-e|0)+1|0,a,a,b,d);}}return 1}function Ak(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b+4|0;b=x[c+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if(b>>>0>=1073741824){break a}d=b<<2;e=Ea(d);x[a>>2]=e;f=d+e|0;x[a+8>>2]=f;d=Ha(e,0,d);x[a+4>>2]=f;e=x[c+12>>2];a=0;if(b>>>0>=4){i=b&-4;f=0;while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];g=c|4;x[g+d>>2]=x[e+g>>2];g=c|8;x[g+d>>2]=x[e+g>>2];c=c|12;x[c+d>>2]=x[c+e>>2];a=a+4|0;f=f+4|0;if((i|0)!=(f|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<2;x[c+d>>2]=x[c+e>>2];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function Wf(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0;c=x[13616];a:{b:{if(!c){break b}d=y[a+11|0];b=d<<24>>24<0;f=b?x[a>>2]:a;d=b?x[a+4>>2]:d;a=54464;while(1){e=y[c+27|0];b=e<<24>>24<0;e=b?x[c+20>>2]:e;g=e>>>0>d>>>0;h=g?d:e;c:{if(h){b=Sd(b?x[c+16>>2]:c+16|0,f,h);if(b){break c}}b=d>>>0>e>>>0?-1:g;}b=(b|0)<0;a=b?a:c;c=x[(b?c+4|0:c)>>2];if(c){continue}break}if((a|0)==54464){break b}b=y[a+27|0];c=b<<24>>24<0;d:{b=c?x[a+20>>2]:b;e=b>>>0>>0?b:d;if(e){c=Sd(f,c?x[a+16>>2]:a+16|0,e);if(c){break d}}if(b>>>0>d>>>0){break b}break a}if((c|0)>=0){break a}}a=54464;}return a}function qe(a){a=a|0;var b=E(0),c=0;c=x[a+4>>2]+24|0;b=B[c+4>>2];B[a+20>>2]=b;B[a+24>>2]=B[c+8>>2];B[a+28>>2]=B[c+12>>2];B[a+32>>2]=B[c+16>>2];B[a+20>>2]=bE(1)?E(1):b;b=B[a+24>>2];B[a+24>>2]=bE(1)?E(1):b;b=B[a+28>>2];B[a+28>>2]=bE(1)?E(1):b;b=B[a+32>>2];B[a+32>>2]=bE(1)?E(1):b;c=x[a+4>>2]+68|0;a:{b:{if(x[c+4>>2]){x[a+60>>2]=0;c=Fe(x[a+12>>2],x[x[a+4>>2]+4>>2],c);if((c|0)==x[a+60>>2]){break a}x[a+60>>2]=c;break b}if(!x[a+60>>2]){break a}x[a+60>>2]=0;}b=B[x[a+12>>2]+160>>2];x[a+72>>2]=0;B[a+64>>2]=b;}}function Sm(a,b,c){a=a|0;b=E(b);c=E(c);var d=0,e=E(0),f=E(0),g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=x[a+40>>2];a:{if(k){m=a;n=x[a+48>>2];while(1){b:{d=x[(g<<2)+n>>2];h=x[d+20>>2];if((h|0)<=0){break b}a=h-2|0;i=x[d+16>>2];j=0;d=0;while(1){l=(a<<2)+i|0;f=B[l+4>>2];a=d;d=d<<2;e=B[(d|4)+i>>2];c:{if(!(f>=c&ef))){break c}f=E(E(c-e)/E(f-e));e=B[d+i>>2];if(!(E(E(f*E(B[l>>2]-e))+e)(d|0)){continue}break}if(!(j&1)){break b}a=x[x[m+32>>2]+(g<<2)>>2];break a}g=g+1|0;if((k|0)!=(g|0)){continue}break}}a=0;}return a|0}function Lu(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(gb(a,x[b+8>>2],e)){if(!(x[b+28>>2]==1|x[b+4>>2]!=(c|0))){x[b+28>>2]=d;}return}a:{if(gb(a,x[b>>2],e)){if(!(x[b+16>>2]!=(c|0)&x[b+20>>2]!=(c|0))){if((d|0)!=1){break a}x[b+32>>2]=1;return}x[b+32>>2]=d;b:{if(x[b+44>>2]==4){break b}w[b+52>>1]=0;a=x[a+8>>2];sa[x[x[a>>2]+20>>2]](a,b,c,c,1,e);if(y[b+53|0]){x[b+44>>2]=3;if(!y[b+52|0]){break b}break a}x[b+44>>2]=4;}x[b+20>>2]=c;x[b+40>>2]=x[b+40>>2]+1;if(x[b+36>>2]!=1|x[b+24>>2]!=2){break a}v[b+54|0]=1;return}a=x[a+8>>2];sa[x[x[a>>2]+24>>2]](a,b,c,d,e);}}function rm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=b+136|0;f=x[b+12>>2];b=x[b+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if((b|0)<0){break a}d=b<<1;c=Ea(d);x[a>>2]=c;e=c+d|0;x[a+8>>2]=e;d=Ha(c,0,d);x[a+4>>2]=e;a=0;if(b>>>0>=4){i=b&-4;e=0;while(1){c=a<<1;w[c+d>>1]=z[c+f>>1];g=c|2;w[g+d>>1]=z[f+g>>1];g=c|4;w[g+d>>1]=z[f+g>>1];c=c|6;w[c+d>>1]=z[c+f>>1];a=a+4|0;e=e+4|0;if((i|0)!=(e|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<1;w[c+d>>1]=z[c+f>>1];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function pm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=b+152|0;f=x[b+12>>2];b=x[b+4>>2];x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;a:{b:{if(!b){break b}if((b|0)<0){break a}d=b<<1;c=Ea(d);x[a>>2]=c;e=c+d|0;x[a+8>>2]=e;d=Ha(c,0,d);x[a+4>>2]=e;a=0;if(b>>>0>=4){i=b&-4;e=0;while(1){c=a<<1;w[c+d>>1]=z[c+f>>1];g=c|2;w[g+d>>1]=z[f+g>>1];g=c|4;w[g+d>>1]=z[f+g>>1];c=c|6;w[c+d>>1]=z[c+f>>1];a=a+4|0;e=e+4|0;if((i|0)!=(e|0)){continue}break}}b=b&3;if(!b){break b}while(1){c=a<<1;w[c+d>>1]=z[c+f>>1];a=a+1|0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}return}O();p();}function nj(a,b,c,d){a=a|0;b=b|0;c=E(c);d=E(d);var e=0,f=0,g=0;f=qa-16|0;qa=f;if(!y[53936]){x[13481]=0;x[13482]=0;x[13480]=12676;x[13483]=0;v[53936]=1;}if(!y[53988]){x[f+8>>2]=7;x[f+4>>2]=1080;e=Da();e=sa[x[x[e>>2]+12>>2]](e,8,8064,57)|0;x[f+12>>2]=e;v[e|0]=60;v[e+1|0]=101;v[e+2|0]=109;v[e+3|0]=112;v[e+4|0]=116;v[e+5|0]=121;v[e+6|0]=62;v[e+7|0]=0;gd(53940,f+4|0,53920,E(0));x[f+4>>2]=1080;e=x[f+12>>2];if(e){g=Da();sa[x[x[g>>2]+20>>2]](g,e,8064,201);}v[53988]=1;}a=_d(a,b,53940,0,E(d-(d<=E(0)?c:E(0))));B[a+84>>2]=c;B[a+100>>2]=c;qa=f+16|0;return a|0}function he(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;x[a>>2]=20084;g=Ea(16);x[a+4>>2]=g;i=Ea((m=-1,n=Uw(b,0,24,0),o=ra,o?m:n));a:{if(!b){break a}f=i;j=D(b,24);k=j-24|0;l=((k>>>0)/24|0)+1&7;if(l){while(1){x[f+20>>2]=0;f=f+24|0;h=h+1|0;if((l|0)!=(h|0)){continue}break}}if(k>>>0<168){break a}h=i+j|0;while(1){x[f+20>>2]=0;x[f+188>>2]=0;x[f+164>>2]=0;x[f+140>>2]=0;x[f+116>>2]=0;x[f+92>>2]=0;x[f+68>>2]=0;x[f+44>>2]=0;f=f+192|0;if((h|0)!=(f|0)){continue}break}}x[g+8>>2]=b;x[g>>2]=i;x[g+12>>2]=d;x[g+4>>2]=c;x[a+8>>2]=e;}function Zb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=qa-16|0;qa=f;o(+b);g=j(1)|0;d=j(0)|0;c=g&2147483647;e=c+-1048576|0;a:{if((e|0)==2145386495|e>>>0<2145386495){h=d<<28;e=c>>>4|0;c=(c&15)<<28|d>>>4;d=e+1006632960|0;break a}if((c|0)==2146435072|c>>>0>2146435072){h=d<<28;c=(g&15)<<28|d>>>4;d=g>>>4|2147418112;break a}if(!(c|d)){c=0;d=0;break a}e=c;c=c?G(c):G(d)+32|0;qb(f,d,e,0,0,c+49|0);i=x[f>>2];h=x[f+4>>2];e=15372-c<<16;c=x[f+8>>2];d=e|x[f+12>>2]^65536;}x[a>>2]=i;x[a+4>>2]=h;x[a+8>>2]=c;x[a+12>>2]=g&-2147483648|d;qa=f+16|0;}function rg(a,b){x[a+16>>2]=b;x[a+8>>2]=0;x[a+12>>2]=0;x[a+68>>2]=0;x[a+60>>2]=0;x[a+64>>2]=0;x[a+56>>2]=13472;x[a+52>>2]=0;x[a+44>>2]=0;x[a+48>>2]=0;x[a+40>>2]=13232;x[a+36>>2]=0;x[a+28>>2]=0;x[a+32>>2]=0;x[a+24>>2]=13232;x[a+20>>2]=13412;x[a+4>>2]=12924;x[a>>2]=12908;b=Ma(32,5780,190);v[b+28|0]=0;x[b+24>>2]=a+20;x[b+20>>2]=a;x[b+16>>2]=0;x[b+8>>2]=0;x[b+12>>2]=0;x[b+4>>2]=13344;x[b>>2]=12892;x[a+80>>2]=0;x[a+84>>2]=0;x[a+76>>2]=12736;x[a+72>>2]=b;v[a+88|0]=0;x[a+96>>2]=0;x[a+100>>2]=1065353216;x[a+92>>2]=11;return a}function Sc(a,b){var c=0,d=0,e=0,f=E(0);a=ac(a,b);x[a+20>>2]=13296;x[a>>2]=19592;x[a+24>>2]=0;x[a+28>>2]=0;x[a+32>>2]=0;x[a+36>>2]=0;c=D(b,3);if(b){x[a+28>>2]=c;d=Da();d=sa[x[x[d>>2]+16>>2]](d,0,D(b,12),7693,94)|0;x[a+32>>2]=d;e=x[a+28>>2];b=x[a+24>>2];}else {b=0;}x[a+24>>2]=c;if(c>>>0>e>>>0){f=E(E(c>>>0)*E(1.75));a:{if(E(F(f))>>0<=8?8:c;x[a+28>>2]=c;e=Da();d=sa[x[x[e>>2]+16>>2]](e,d,c<<2,7693,82)|0;x[a+32>>2]=d;c=x[a+24>>2];}if(b>>>0>>0){Ha((b<<2)+d|0,0,c-b<<2);}return a}function ag(a,b,c){a=a|0;b=b|0;c=E(c);var d=0,e=0,f=0;e=qa-16|0;qa=e;if(!y[53936]){x[13481]=0;x[13482]=0;x[13480]=12676;x[13483]=0;v[53936]=1;}if(!y[53988]){x[e+8>>2]=7;x[e+4>>2]=1080;d=Da();d=sa[x[x[d>>2]+12>>2]](d,8,8064,57)|0;x[e+12>>2]=d;v[d|0]=60;v[d+1|0]=101;v[d+2|0]=109;v[d+3|0]=112;v[d+4|0]=116;v[d+5|0]=121;v[d+6|0]=62;v[d+7|0]=0;gd(53940,e+4|0,53920,E(0));x[e+4>>2]=1080;d=x[e+12>>2];if(d){f=Da();sa[x[x[f>>2]+20>>2]](f,d,8064,201);}v[53988]=1;}a=hd(a,b,53940,0);B[a+84>>2]=c;B[a+100>>2]=c;qa=e+16|0;return a|0}function je(a,b){var c=0,d=0,e=0,f=E(0);a=ac(a,b);x[a+20>>2]=13296;x[a>>2]=19716;x[a+24>>2]=0;x[a+28>>2]=0;x[a+32>>2]=0;x[a+36>>2]=0;c=b<<3;if(b){x[a+28>>2]=c;d=Da();d=sa[x[x[d>>2]+16>>2]](d,0,b<<5,7693,94)|0;x[a+32>>2]=d;e=x[a+28>>2];b=x[a+24>>2];}else {b=0;}x[a+24>>2]=c;if(c>>>0>e>>>0){f=E(E(c>>>0)*E(1.75));a:{if(E(F(f))>>0<=8?8:c;x[a+28>>2]=c;e=Da();d=sa[x[x[e>>2]+16>>2]](e,d,c<<2,7693,82)|0;x[a+32>>2]=d;c=x[a+24>>2];}if(b>>>0>>0){Ha((b<<2)+d|0,0,c-b<<2);}return a}function Zi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){c=x[c+x[b>>2]>>2];}a=sa[c|0](b)|0;c=Ea(12);x[c+8>>2]=0;x[c>>2]=0;x[c+4>>2]=0;e=x[a+4>>2];a=x[a>>2];b=e-a|0;d=(b|0)/24|0;a:{if((a|0)!=(e|0)){if(d>>>0>=178956971){break a}b=Ea(b);x[c>>2]=b;x[c+8>>2]=D(d,24)+b;while(1){d=x[a+4>>2];x[b>>2]=x[a>>2];x[b+4>>2]=d;d=x[a+20>>2];x[b+16>>2]=x[a+16>>2];x[b+20>>2]=d;d=x[a+12>>2];x[b+8>>2]=x[a+8>>2];x[b+12>>2]=d;b=b+24|0;a=a+24|0;if((e|0)!=(a|0)){continue}break}x[c+4>>2]=b;}return c|0}O();p();}function Xl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;d=qa-16|0;qa=d;a:{b:{if(!x[b+24>>2]){x[d+8>>2]=0;x[d+12>>2]=0;v[a+11|0]=0;break b}c=x[b+20>>2];e=Da();e=sa[x[x[e>>2]+12>>2]](e,c+1|0,8064,71)|0;g=d,h=Fa(e,x[b+24>>2],x[b+20>>2]+1|0),x[g+12>>2]=h;x[d+8>>2]=c;if(c>>>0>=2147483632){break a}if(c>>>0<=10){v[a+11|0]=c;break b}f=(c|15)+1|0;b=Ea(f);x[a+8>>2]=f|-2147483648;x[a>>2]=b;x[a+4>>2]=c;a=b;}g=Fa(a,e,c)+c|0,h=0,v[g|0]=h;x[d+4>>2]=1080;if(e){a=Da();sa[x[x[a>>2]+20>>2]](a,e,8064,201);}qa=d+16|0;return}O();p();}function Wl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;d=qa-16|0;qa=d;a:{b:{if(!x[b+16>>2]){x[d+8>>2]=0;x[d+12>>2]=0;v[a+11|0]=0;break b}c=x[b+12>>2];e=Da();e=sa[x[x[e>>2]+12>>2]](e,c+1|0,8064,71)|0;g=d,h=Fa(e,x[b+16>>2],x[b+12>>2]+1|0),x[g+12>>2]=h;x[d+8>>2]=c;if(c>>>0>=2147483632){break a}if(c>>>0<=10){v[a+11|0]=c;break b}f=(c|15)+1|0;b=Ea(f);x[a+8>>2]=f|-2147483648;x[a>>2]=b;x[a+4>>2]=c;a=b;}g=Fa(a,e,c)+c|0,h=0,v[g|0]=h;x[d+4>>2]=1080;if(e){a=Da();sa[x[x[a>>2]+20>>2]](a,e,8064,201);}qa=d+16|0;return}O();p();}function Td(a){var b=0,c=0,d=0;a:{if(!a){if(x[13440]){b=Td(x[13440]);}if(x[13478]){b=Td(x[13478])|b;}a=x[13751];if(!a){break a}while(1){if(x[a+20>>2]!=x[a+28>>2]){b=Td(a)|b;}a=x[a+56>>2];if(a){continue}break}break a}c=x[a+76>>2]>=0;b:{c:{if(x[a+20>>2]==x[a+28>>2]){break c}sa[x[a+36>>2]](a,0,0)|0;if(x[a+20>>2]){break c}b=-1;if(c){break b}break a}b=x[a+8>>2];d=x[a+4>>2];if((b|0)!=(d|0)){b=d-b|0;sa[x[a+40>>2]](a,b,b>>31,1)|0;}b=0;x[a+28>>2]=0;x[a+16>>2]=0;x[a+20>>2]=0;x[a+4>>2]=0;x[a+8>>2]=0;if(!c){break a}}}return b}function Th(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0;h=qa-16|0;qa=h;if(2147483630-b>>>0>=c>>>0){i=(y[a+11|0]&128)>>>7|0?x[a>>2]:a;k=h+4|0;if(b>>>0<=1073741798){x[h+12>>2]=b<<1;x[h+4>>2]=b+c;c=x[(A[h+4>>2]>2]?h+12|0:h+4|0)>>2];if(c>>>0>=11){j=c+16&-16;c=j-1|0;c=(c|0)==11?j:c;}else {c=10;}c=c+1|0;}else {c=2147483631;}Sh(k,c);c=x[h+4>>2];if(f){ed(c,g,f);}g=d-e|0;if((d|0)!=(e|0)){ed(c+f|0,e+i|0,g);}if((b|0)!=10){Ja(i);}x[a>>2]=c;x[a+8>>2]=x[h+8>>2]|-2147483648;b=a;a=f+g|0;x[b+4>>2]=a;v[a+c|0]=0;qa=h+16|0;return}Of();p();}function dl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;d=qa-16|0;qa=d;a:{b:{if(!x[b+12>>2]){x[d+8>>2]=0;x[d+12>>2]=0;v[a+11|0]=0;break b}c=x[b+8>>2];e=Da();e=sa[x[x[e>>2]+12>>2]](e,c+1|0,8064,71)|0;g=d,h=Fa(e,x[b+12>>2],x[b+8>>2]+1|0),x[g+12>>2]=h;x[d+8>>2]=c;if(c>>>0>=2147483632){break a}if(c>>>0<=10){v[a+11|0]=c;break b}f=(c|15)+1|0;b=Ea(f);x[a+8>>2]=f|-2147483648;x[a>>2]=b;x[a+4>>2]=c;a=b;}g=Fa(a,e,c)+c|0,h=0,v[g|0]=h;x[d+4>>2]=1080;if(e){a=Da();sa[x[x[a>>2]+20>>2]](a,e,8064,201);}qa=d+16|0;return}O();p();}function wb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=x[a+4>>2];if((c|0)!=x[a+8>>2]){x[c>>2]=x[b>>2];x[a+4>>2]=c+4;return}a:{g=x[a>>2];f=c-g|0;d=f>>2;e=d+1|0;if(e>>>0<1073741824){h=d<<2;d=f>>1;d=f>>>0>=2147483644?1073741823:d>>>0>e>>>0?d:e;if(d){if(d>>>0>=1073741824){break a}f=Ea(d<<2);}else {f=0;}e=h+f|0;x[e>>2]=x[b>>2];b=e+4|0;if((c|0)!=(g|0)){while(1){e=e-4|0;c=c-4|0;x[e>>2]=x[c>>2];if((c|0)!=(g|0)){continue}break}c=x[a>>2];}x[a+8>>2]=f+(d<<2);x[a+4>>2]=b;x[a>>2]=e;if(c){Ja(c);}return}O();p();}kb();p();}function Kb(a,b,c){a=a|0;b=b|0;c=E(c);var d=E(0),e=0,f=E(0),g=0,h=0,i=E(0);c=cE(1)?E(1):c;e=x[a+16>>2];a=D(b,19);d=B[e+(a<<2)>>2];if(d==E(0)){return E(c)}if(d!=E(1)){g=a+1|0;h=a+19|0;if(g>>>0>>0){a=g;while(1){b=a;f=B[(a<<2)+e>>2];if(c<=f){d=E(0);if((b|0)!=(g|0)){a=(b<<2)+e|0;i=B[a-4>>2];d=B[a-8>>2];}return E(E(i+E(E(E(c-d)*E(B[((b<<2)+e|0)+4>>2]-i))/E(f-d))))}a=b+2|0;if(h>>>0>a>>>0){continue}break}a=b+1|0;}d=B[(a<<2)+e>>2];c=E(d+E(E(E(c-f)*E(E(1)-d))/E(E(1)-f)));}else {c=E(0);}return E(c)}function rc(a,b,c,d,e,f){var g=0,h=0,i=0,j=0;a:{if(f&64){c=f+-64|0;b=c&31;if((c&63)>>>0>=32){c=0;b=e>>>b|0;}else {c=e>>>b|0;b=((1<>>b;}d=0;e=0;break a}if(!f){break a}i=d;h=64-f|0;g=h&31;if((h&63)>>>0>=32){h=i<>>32-g|e<>>0>=32){g=0;b=c>>>b|0;}else {g=c>>>b|0;b=((1<>>b;}b=j|b;c=g|h;g=d;d=f&31;if((f&63)>>>0>=32){h=0;d=e>>>d|0;}else {h=e>>>d|0;d=((1<>>d;}e=h;}x[a>>2]=b;x[a+4>>2]=c;x[a+8>>2]=d;x[a+12>>2]=e;}function Mi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=x[a+4>>2];if((e|0)!=x[a+8>>2]){B[e>>2]=B[b>>2];x[a+4>>2]=e+4;return}a:{g=x[a>>2];f=e-g|0;c=f>>2;d=c+1|0;if(d>>>0<1073741824){h=c<<2;c=f>>1;c=f>>>0>=2147483644?1073741823:c>>>0>d>>>0?c:d;if(c){if(c>>>0>=1073741824){break a}f=Ea(c<<2);}else {f=0;}d=h+f|0;B[d>>2]=B[b>>2];b=d+4|0;if((e|0)!=(g|0)){while(1){d=d-4|0;e=e-4|0;B[d>>2]=B[e>>2];if((e|0)!=(g|0)){continue}break}}x[a+8>>2]=f+(c<<2);x[a+4>>2]=b;x[a>>2]=d;if(g){Ja(g);}return}O();p();}kb();p();}function Ri(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){c=x[c+x[b>>2]>>2];}a=sa[c|0](b)|0;c=Ea(12);x[c+8>>2]=0;x[c>>2]=0;x[c+4>>2]=0;e=x[a+4>>2];a=x[a>>2];b=e-a|0;d=(b|0)/20|0;a:{if((a|0)!=(e|0)){if(d>>>0>=214748365){break a}b=Ea(b);x[c>>2]=b;x[c+8>>2]=D(d,20)+b;while(1){d=x[a+4>>2];x[b>>2]=x[a>>2];x[b+4>>2]=d;x[b+16>>2]=x[a+16>>2];d=x[a+12>>2];x[b+8>>2]=x[a+8>>2];x[b+12>>2]=d;b=b+20|0;a=a+20|0;if((e|0)!=(a|0)){continue}break}x[c+4>>2]=b;}return c|0}O();p();}function ui(a,b,c,d){var e=0,f=0,g=0,h=0;e=qa-16|0;qa=e;f=xc(x[a+4>>2],b);b=e+4|0;g=b,h=xc(x[a+4>>2],c),x[g+8>>2]=h;x[b+4>>2]=f;x[b>>2]=13548;b=Wd(a+12|0,b);a:{if(b){a=x[e+12>>2];c=x[e+8>>2];B[b+16>>2]=d;x[b+8>>2]=c;x[b+12>>2]=a;break a}b=Ma(28,7817,114);x[b>>2]=13752;x[b+12>>2]=0;x[b+8>>2]=0;x[b+4>>2]=13548;x[b+20>>2]=0;x[b+24>>2]=0;c=x[e+12>>2];f=x[e+8>>2];B[b+16>>2]=d;x[b+8>>2]=f;x[b+12>>2]=c;c=x[a+16>>2];if(c){x[c+24>>2]=b;x[b+20>>2]=c;}x[a+16>>2]=b;x[a+20>>2]=x[a+20>>2]+1;}qa=e+16|0;}function nu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=Jf(x[a+4>>2],d);if(!b){return 0}a=Zc(Ma(236,5196,81),c);d=x[a+72>>2];a:{if(!d){break a}c=x[a+68>>2];if(!c|(b|0)==(c|0)){break a}sa[d|0](c);}x[a+72>>2]=0;x[a+68>>2]=b;B[a+180>>2]=B[b+36>>2];B[a+184>>2]=B[b+40>>2];B[a+188>>2]=B[b+44>>2];B[a+192>>2]=B[b+48>>2];v[a+228|0]=y[b+72|0];x[a+232>>2]=x[b+76>>2];B[a+76>>2]=B[b+52>>2];B[a+80>>2]=B[b+56>>2];B[a+84>>2]=x[b+28>>2];B[a+88>>2]=x[b+32>>2];B[a+92>>2]=x[b+60>>2];B[a+96>>2]=x[b+64>>2];return a|0}function $m(){var a=0;a=Pa(124);x[a+104>>2]=18016;x[a+84>>2]=17956;x[a+68>>2]=13184;x[a+52>>2]=17908;x[a+36>>2]=13184;x[a+20>>2]=17852;x[a+4>>2]=17796;x[a>>2]=19660;x[a+120>>2]=0;x[a+112>>2]=0;x[a+116>>2]=0;x[a+108>>2]=17852;x[a+100>>2]=0;x[a+92>>2]=0;x[a+96>>2]=0;x[a+88>>2]=17796;x[a+80>>2]=0;x[a+72>>2]=0;x[a+76>>2]=0;x[a- -64>>2]=0;x[a+56>>2]=0;x[a+60>>2]=0;x[a+48>>2]=0;x[a+40>>2]=0;x[a+44>>2]=0;x[a+32>>2]=0;x[a+24>>2]=0;x[a+28>>2]=0;x[a+16>>2]=0;x[a+8>>2]=0;x[a+12>>2]=0;return a|0}function lh(a,b,c,d,e,f){var g=0;x[a+4>>2]=b;x[a+8>>2]=1080;x[a>>2]=15860;a:{if(!x[c+8>>2]){x[a+12>>2]=0;x[a+16>>2]=0;break a}x[a+12>>2]=x[c+4>>2];b=x[c+4>>2];g=Da();b=sa[x[x[g>>2]+12>>2]](g,b+1|0,8064,71)|0;x[a+16>>2]=b;Fa(b,x[c+8>>2],x[c+4>>2]+1|0);}x[a+20>>2]=d;x[a+24>>2]=1080;if(!x[e+8>>2]){x[a+28>>2]=0;x[a+32>>2]=0;v[a+36|0]=f;return a}x[a+28>>2]=x[e+4>>2];b=x[e+4>>2];c=Da();b=sa[x[x[c>>2]+12>>2]](c,b+1|0,8064,71)|0;x[a+32>>2]=b;Fa(b,x[e+8>>2],x[e+4>>2]+1|0);v[a+36|0]=f;return a}function Af(a,b,c,d){var e=0;x[a+4>>2]=b;x[a+8>>2]=1080;x[a>>2]=14644;a:{if(!x[c+8>>2]){x[a+12>>2]=0;x[a+16>>2]=0;break a}x[a+12>>2]=x[c+4>>2];b=x[c+4>>2];e=Da();b=sa[x[x[e>>2]+12>>2]](e,b+1|0,8064,71)|0;x[a+16>>2]=b;Fa(b,x[c+8>>2],x[c+4>>2]+1|0);}x[a+24>>2]=0;x[a+28>>2]=0;x[a+20>>2]=d;x[a+48>>2]=0;x[a+52>>2]=0;x[a+40>>2]=1065353216;x[a+44>>2]=1065353216;x[a+32>>2]=0;x[a+36>>2]=0;v[a+53|0]=0;v[a+54|0]=0;v[a+55|0]=0;v[a+56|0]=0;v[a+57|0]=0;v[a+58|0]=0;v[a+59|0]=0;v[a+60|0]=0;return a}function Ob(a,b,c){var d=0,e=0,f=0,g=0;a:{if(A[a+24>>2]<=b>>>0){break a}a=x[a+32>>2]+(b<<4)|0;e=x[a+4>>2];if(!e){break a}b=x[a+12>>2];a=0;b:{d=x[c+8>>2];if(!d){while(1){if(!x[(b+D(a,20)|0)+12>>2]){break b}a=a+1|0;if((e|0)!=(a|0)){continue}break}return 0}g=x[c+4>>2];while(1){f=b+D(a,20)|0;c=x[f+12>>2];if((c|0)==(d|0)){break b}if(!(!c|x[f+8>>2]!=(g|0))){if(!Oa(c,d)){break b}}a=a+1|0;if((e|0)!=(a|0)){continue}break}return 0}d=0;if((a|0)<0){break a}d=x[(b+D(a,20)|0)+16>>2];}return d}function qb(a,b,c,d,e,f){var g=0,h=0,i=0;a:{if(f&64){d=b;e=f+-64|0;b=e&31;if((e&63)>>>0>=32){e=d<>>32-b|c<>>0>=32){h=g<>>32-d|e<>>0>=32){e=0;b=c>>>d|0;}else {e=c>>>d|0;b=((1<>>d;}d=i|b;e=e|h;b=f&31;if((f&63)>>>0>=32){h=g<>>32-b|c<>2]=b;x[a+4>>2]=c;x[a+8>>2]=d;x[a+12>>2]=e;}function Zu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=qa-32|0;qa=e;x[e+16>>2]=b;d=x[a+48>>2];x[e+20>>2]=c-((d|0)!=0);f=x[a+44>>2];x[e+28>>2]=d;x[e+24>>2]=f;a:{b:{d=ga(x[a+60>>2],e+16|0,2,e+12|0)|0;if(d){x[13623]=d;d=-1;}else {d=0;}if(d){b=32;}else {d=x[e+12>>2];if((d|0)>0){break b}b=d?32:16;}x[a>>2]=b|x[a>>2];break a}g=d;f=x[e+20>>2];if(f>>>0>=d>>>0){break a}d=x[a+44>>2];x[a+4>>2]=d;x[a+8>>2]=d+(g-f|0);if(x[a+48>>2]){x[a+4>>2]=d+1;v[(b+c|0)-1|0]=y[d|0];}g=c;}qa=e+32|0;return g|0}function xi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=x[a+4>>2];if((c|0)!=x[a+8>>2]){w[c>>1]=z[b>>1];x[a+4>>2]=c+2;return}a:{g=x[a>>2];d=c-g|0;if((d|0)>-3){e=d>>1;f=e+1|0;f=d>>>0>=2147483646?2147483647:d>>>0>f>>>0?d:f;if(f){if((f|0)<0){break a}d=Ea(f<<1);}else {d=0;}e=d+(e<<1)|0;w[e>>1]=z[b>>1];b=e+2|0;if((c|0)!=(g|0)){while(1){e=e-2|0;c=c-2|0;w[e>>1]=z[c>>1];if((c|0)!=(g|0)){continue}break}}x[a+8>>2]=d+(f<<1);x[a+4>>2]=b;x[a>>2]=e;if(g){Ja(g);}return}O();p();}kb();p();}function Qj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=E(d);var e=0,f=0;e=qa-16|0;qa=e;f=e+4|0;x[f+8>>2]=c;x[f+4>>2]=b;x[f>>2]=13548;b=Wd(a+12|0,f);a:{if(b){a=x[e+12>>2];c=x[e+8>>2];B[b+16>>2]=d;x[b+8>>2]=c;x[b+12>>2]=a;break a}b=Ma(28,7817,114);x[b>>2]=13752;x[b+12>>2]=0;x[b+8>>2]=0;x[b+4>>2]=13548;x[b+20>>2]=0;x[b+24>>2]=0;c=x[e+12>>2];f=x[e+8>>2];B[b+16>>2]=d;x[b+8>>2]=f;x[b+12>>2]=c;c=x[a+16>>2];if(c){x[c+24>>2]=b;x[b+20>>2]=c;}x[a+16>>2]=b;x[a+20>>2]=x[a+20>>2]+1;}qa=e+16|0;}function Ai(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=qa-16|0;qa=e;a:{d=x[b+4>>2];b=x[b>>2];b:{if((d-b|0)/12>>>0>c>>>0){d=Ea(12);x[d+8>>2]=0;x[d>>2]=0;x[d+4>>2]=0;b=b+D(c,12)|0;f=x[b+4>>2];c=x[b>>2];if((f|0)!=(c|0)){g=f-c|0;if((g|0)<0){break a}b=Ea(g);x[d>>2]=b;x[d+8>>2]=(g&-4)+b;while(1){B[b>>2]=B[c>>2];b=b+4|0;c=c+4|0;if((f|0)!=(c|0)){continue}break}x[d+4>>2]=b;}x[e+8>>2]=d;h=a,i=U(20256,e+8|0)|0,x[h>>2]=i;break b}x[a>>2]=1;}qa=e+16|0;return}O();p();}function Vi(){var a=0,b=0,c=0;a=Ea(96);x[a>>2]=0;x[a+4>>2]=0;x[a+72>>2]=0;x[a+76>>2]=0;x[a+48>>2]=0;x[a+52>>2]=0;x[a+40>>2]=0;x[a+44>>2]=0;x[a+32>>2]=0;x[a+36>>2]=0;x[a+24>>2]=0;x[a+28>>2]=0;x[a+16>>2]=0;x[a+20>>2]=0;x[a+8>>2]=0;x[a+12>>2]=0;b=a+88|0;x[b>>2]=0;x[b+4>>2]=0;x[a+80>>2]=0;c=a- -64|0;x[c>>2]=1065353216;x[c+4>>2]=1065353216;x[a+56>>2]=1065353216;x[a+60>>2]=1065353216;x[a+84>>2]=b;b=Ea(32);x[b+20>>2]=0;x[b+24>>2]=0;x[b+28>>2]=0;x[a+24>>2]=b;return a|0}function ai(a,b){var c=0,d=0;c=(b|0)!=0;a:{b:{c:{d:{if(!(a&3)|!b){break d}while(1){d=y[a|0];if(!d){break c}b=b-1|0;c=(b|0)!=0;a=a+1|0;if(!(a&3)){break d}if(b){continue}break}}if(!c){break a}e:{if(!(!y[a|0]|b>>>0<4)){while(1){c=x[a>>2];if((c^-1)&c-16843009&-2139062144){break e}a=a+4|0;b=b-4|0;if(b>>>0>3){continue}break}}if(!b){break a}}c=0;break b}c=1;}while(1){if(!c){d=y[a|0];c=1;continue}if(!d){return a}a=a+1|0;b=b-1|0;if(!b){break a}c=0;continue}}return 0}function Kc(a,b){var c=0,d=0;d=b&255;a:{if(d){if(a&3){while(1){c=y[a|0];if(!c|(c|0)==(b&255)){break a}a=a+1|0;if(a&3){continue}break}}c=x[a>>2];b:{if((c^-1)&c-16843009&-2139062144){break b}d=D(d,16843009);while(1){c=c^d;if((c^-1)&c-16843009&-2139062144){break b}c=x[a+4>>2];a=a+4|0;if(!(c-16843009&(c^-1)&-2139062144)){continue}break}}while(1){c=a;d=y[a|0];if(d){a=c+1|0;if((d|0)!=(b&255)){continue}}break}a=c;break a}a=Ga(a)+a|0;}return y[a|0]==(b&255)?a:0}function Am(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;i=qa-16|0;qa=i;l=x[a>>2];x[i+12>>2]=0;x[i+4>>2]=0;x[i+8>>2]=0;a:{a=x[f>>2];j=x[f+4>>2];if((a|0)!=(j|0)){k=j-a|0;if((k|0)<0){break a}f=Ea(k);x[i+4>>2]=f;x[i+12>>2]=(k&-4)+f;while(1){B[f>>2]=B[a>>2];f=f+4|0;a=a+4|0;if((j|0)!=(a|0)){continue}break}x[i+8>>2]=f;}sa[l|0](b,c,d,e,i+4|0,g,h);a=x[i+4>>2];if(a){x[i+8>>2]=a;Ja(a);}qa=i+16|0;return}O();p();}function Od(a){a=a|0;var b=0,c=0;x[a+152>>2]=0;x[a+148>>2]=13296;x[a+4>>2]=12860;x[a>>2]=12844;b=x[a+160>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+136>>2]=0;x[a+132>>2]=13232;b=x[a+144>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+120>>2]=0;x[a+116>>2]=13184;b=x[a+128>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+4>>2]=13168;b=x[a+12>>2];a:{if(!b){break a}c=x[a+8>>2];if(!c){break a}sa[b|0](c);}return a|0}function Yl(a){a=a|0;var b=0,c=0,d=0;b=Pa(68);x[b+16>>2]=1080;x[b+4>>2]=13908;x[b>>2]=13892;x[b+8>>2]=0;x[b+12>>2]=0;a:{if(!x[a+8>>2]){x[b+20>>2]=0;x[b+24>>2]=0;break a}x[b+20>>2]=x[a+4>>2];c=x[a+4>>2];d=Da();c=sa[x[x[d>>2]+12>>2]](d,c+1|0,8064,71)|0;x[b+24>>2]=c;Fa(c,x[a+8>>2],x[a+4>>2]+1|0);}x[b+64>>2]=0;x[b+56>>2]=1;x[b+60>>2]=0;x[b+48>>2]=1;x[b+52>>2]=1;x[b+40>>2]=6;x[b+44>>2]=1;x[b+32>>2]=0;x[b+36>>2]=0;x[b+28>>2]=1080;return b|0}function mi(a,b,c,d,e){var f=0,g=0,h=0;h=-1;g=d&2147483647;f=(g|0)==2147418112;a:{if(f&!c?a|b:f&(c|0)!=0|g>>>0>2147418112){break a}f=e&2147483647;if(((f|0)==2147418112&0|f>>>0>2147418112)&(f|0)!=2147418112){break a}if(!(a|c|(f|g|b))){return 0}f=d&e;if((f|0)>0|(f|0)>=0){if(((c|0)!=0|(d|0)!=(e|0))&(d|0)<(e|0)){break a}return (a|c|(d^e|b))!=0}if(!c&(d|0)==(e|0)?a|b:(c|0)!=0&(d|0)>=(e|0)|(d|0)>(e|0)){break a}h=(a|c|(d^e|b))!=0;}return h}function zd(a){a=a|0;var b=0,c=0;x[a+20>>2]=16668;x[a>>2]=16644;x[a+116>>2]=1080;b=x[a+124>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}x[a+104>>2]=0;x[a+100>>2]=13296;b=x[a+112>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+88>>2]=0;x[a+84>>2]=13296;b=x[a+96>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+20>>2]=13168;b=x[a+28>>2];a:{if(!b){break a}c=x[a+24>>2];if(!c){break a}sa[b|0](c);}return Qd(a)|0}function sd(a,b){var c=0,d=0;x[a+4>>2]=1080;x[a>>2]=18804;a:{if(!x[b+8>>2]){x[a+8>>2]=0;x[a+12>>2]=0;break a}x[a+8>>2]=x[b+4>>2];c=x[b+4>>2];d=Da();c=sa[x[x[d>>2]+12>>2]](d,c+1|0,8064,71)|0;x[a+12>>2]=c;Fa(c,x[b+8>>2],x[b+4>>2]+1|0);}x[a+32>>2]=0;x[a+24>>2]=0;x[a+28>>2]=0;x[a+20>>2]=18892;x[a+16>>2]=18788;x[a- -64>>2]=0;x[a+56>>2]=0;x[a+60>>2]=0;x[a+52>>2]=19052;x[a+48>>2]=0;x[a+40>>2]=0;x[a+44>>2]=0;x[a+36>>2]=15708;return a}function ob(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0;i=Uw(b,c,h,i);h=ra;e=Uw(d,e,f,g);i=e+i|0;d=ra+h|0;h=e>>>0>i>>>0?d+1|0:d;j=g;e=0;k=c;d=0;c=Uw(g,e,c,d);g=c+i|0;i=ra+h|0;l=g;c=c>>>0>g>>>0?i+1|0:i;g=Uw(f,0,b,0);h=ra;i=0;d=Uw(f,i,k,d);h=h+d|0;f=ra+i|0;f=d>>>0>h>>>0?f+1|0:f;i=f+l|0;d=c;f=f>>>0>i>>>0?d+1|0:d;c=Uw(b,m,j,e)+h|0;e=ra;e=c>>>0>>0?e+1|0:e;h=e+i|0;i=f;x[a+8>>2]=h;x[a+12>>2]=e>>>0>h>>>0?i+1|0:i;x[a>>2]=g;x[a+4>>2]=c;}function $l(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=qa-16|0;qa=g;j=x[a>>2];x[g+12>>2]=0;x[g+4>>2]=0;x[g+8>>2]=0;a:{a=x[d>>2];h=x[d+4>>2];if((a|0)!=(h|0)){i=h-a|0;if((i|0)<0){break a}d=Ea(i);x[g+4>>2]=d;x[g+12>>2]=(i&-4)+d;while(1){B[d>>2]=B[a>>2];d=d+4|0;a=a+4|0;if((h|0)!=(a|0)){continue}break}x[g+8>>2]=d;}sa[j|0](b,c,g+4|0,e,f);a=x[g+4>>2];if(a){x[g+8>>2]=a;Ja(a);}qa=g+16|0;return}O();p();}function Qi(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;g=qa-16|0;qa=g;h=x[a+4>>2];i=(h>>1)+b|0;b=x[a>>2];b=h&1?x[x[i>>2]+b>>2]:b;a=x[c>>2];if(a>>>0<2147483632){a:{if(a>>>0<=10){v[g+15|0]=a;h=g+4|0;break a}j=(a|15)+1|0;h=Ea(j);x[g+12>>2]=j|-2147483648;x[g+4>>2]=h;x[g+8>>2]=a;}k=Fa(h,c+4|0,a)+a|0,l=0,v[k|0]=l;sa[b|0](i,g+4|0,d,e,f);if(v[g+15|0]<0){Ja(x[g+4>>2]);}qa=g+16|0;return}O();p();}function di(a,b){var c=0,d=0;d=a;a:{b:{if((d^b)&3){c=y[b|0];break b}if(b&3){while(1){c=y[b|0];v[d|0]=c;if(!c){break a}d=d+1|0;b=b+1|0;if(b&3){continue}break}}c=x[b>>2];if((c^-1)&c-16843009&-2139062144){break b}while(1){x[d>>2]=c;c=x[b+4>>2];d=d+4|0;b=b+4|0;if(!(c-16843009&(c^-1)&-2139062144)){continue}break}}v[d|0]=c;if(!(c&255)){break a}while(1){c=y[b+1|0];v[d+1|0]=c;d=d+1|0;b=b+1|0;if(c){continue}break}}return a} + function Ui(a,b,c,d,e){a=a|0;b=b|0;c=E(c);d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=qa-16|0;qa=f;g=x[a+4>>2];h=(g>>1)+b|0;b=x[a>>2];b=g&1?x[x[h>>2]+b>>2]:b;a=x[d>>2];if(a>>>0<2147483632){a:{if(a>>>0<=10){v[f+15|0]=a;g=f+4|0;break a}i=(a|15)+1|0;g=Ea(i);x[f+12>>2]=i|-2147483648;x[f+4>>2]=g;x[f+8>>2]=a;}j=Fa(g,d+4|0,a)+a|0,k=0,v[j|0]=k;a=sa[b|0](h,c,f+4|0,e)|0;if(v[f+15|0]<0){Ja(x[f+4>>2]);}qa=f+16|0;return a|0}O();p();}function lg(a,b,c){var d=0,e=0,f=E(0),g=E(0),h=0;d=x[b+24>>2];if(!d){return 1}e=lg(a,d,c);B[d+60>>2]=B[d+64>>2];B[d+76>>2]=B[d+80>>2];a:{b:{f=B[b+96>>2];if(!(f>E(0))){break b}g=B[b+100>>2];if(!(g<=f)){break b}if(g!=E(0)&B[d+108>>2]!=E(0)){break a}x[b+24>>2]=x[d+24>>2];h=x[d+24>>2];if(h){x[h+28>>2]=b;}B[b+104>>2]=B[d+104>>2];Pc(x[a+72>>2],d);return e}B[d+72>>2]=E(c*B[d+88>>2])+B[d+72>>2];B[b+96>>2]=f+c;e=0;}return e}function pu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=Jf(x[a+4>>2],d);if(!a){return 0}b=Qe(Ma(164,5196,59),c);d=x[b+28>>2];a:{if(!d){break a}c=x[b+24>>2];if(!c|(a|0)==(c|0)){break a}sa[d|0](c);}x[b+28>>2]=0;x[b+24>>2]=a;Pe(b,B[a+36>>2],B[a+40>>2],B[a+44>>2],B[a+48>>2],y[a+72|0]);B[b+60>>2]=B[a+52>>2];B[b+64>>2]=B[a+56>>2];B[b+68>>2]=x[a+28>>2];B[b+72>>2]=x[a+32>>2];B[b+76>>2]=x[a+60>>2];B[b+80>>2]=x[a+64>>2];return b|0}function Pb(a,b){var c=0,d=0,e=0,f=E(0);if(!y[b+116|0]){c=x[b+12>>2];if(c){Pb(a,c);}v[b+116|0]=1;c=x[a+108>>2];a:{if((c|0)==x[a+112>>2]){f=E(E(c>>>0)*E(1.75));b:{if(E(F(f))>>0<=8?8:c;x[a+112>>2]=c;e=x[a+116>>2];d=Da();e=sa[x[x[d>>2]+16>>2]](d,e,c<<2,7693,106)|0;x[a+116>>2]=e;c=x[a+108>>2];d=e+(c<<2)|0;break a}d=x[a+116>>2]+(c<<2)|0;}x[d>>2]=b;x[a+108>>2]=c+1;}}function Dn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=qa-16|0;qa=c;e=x[a>>2];if(e){d=x[b>>2];f=v[b+11|0];x[c+4>>2]=1080;b=(f|0)<0?d:b;a:{if(!b){x[c+8>>2]=0;break a}d=Ga(b);x[c+8>>2]=d;f=Da();d=d+1|0;g=sa[x[x[f>>2]+12>>2]](f,d,8064,57)|0;Fa(g,b,d);}x[c+12>>2]=g;Xg(e,c+4|0);x[c+4>>2]=1080;b=x[c+12>>2];if(b){e=Da();sa[x[x[e>>2]+20>>2]](e,b,8064,201);}Ge(x[a>>2]);id(x[a+12>>2],x[a>>2]);Xc(x[a>>2]);}qa=c+16|0;}function Pi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=qa-16|0;qa=e;f=x[a+4>>2];g=(f>>1)+b|0;b=x[a>>2];b=f&1?x[x[g>>2]+b>>2]:b;a=x[c>>2];if(a>>>0<2147483632){a:{if(a>>>0<=10){v[e+15|0]=a;f=e+4|0;break a}h=(a|15)+1|0;f=Ea(h);x[e+12>>2]=h|-2147483648;x[e+4>>2]=f;x[e+8>>2]=a;}i=Fa(f,c+4|0,a)+a|0,j=0,v[i|0]=j;sa[b|0](g,e+4|0,d);if(v[e+15|0]<0){Ja(x[e+4>>2]);}qa=e+16|0;return}O();p();}function Fw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=qa-16|0;qa=e;f=x[a+4>>2];g=(f>>1)+b|0;b=x[a>>2];b=f&1?x[x[g>>2]+b>>2]:b;a=x[d>>2];if(a>>>0<2147483632){a:{if(a>>>0<=10){v[e+15|0]=a;f=e+4|0;break a}h=(a|15)+1|0;f=Ea(h);x[e+12>>2]=h|-2147483648;x[e+4>>2]=f;x[e+8>>2]=a;}i=Fa(f,d+4|0,a)+a|0,j=0,v[i|0]=j;sa[b|0](g,c,e+4|0);if(v[e+15|0]<0){Ja(x[e+4>>2]);}qa=e+16|0;return}O();p();}function Fn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=x[a+8>>2];x[13619]=c;x[13401]=b;x[13620]=d;a:{b:{c:{switch(b|0){case 0:b=x[a+28>>2];if(b){break b}break a;case 1:b=x[a+32>>2];if(b){break b}break a;case 2:b=x[a+36>>2];if(b){break b}break a;case 3:b=x[a+40>>2];if(b){break b}break a;case 4:b=x[a+44>>2];if(b){break b}break a;case 5:break c;default:break a}}b=x[a+48>>2];if(!b){break a}}x[13618]=b;pa();}}function Hj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=E(e);var f=0,g=0,h=0,i=0;f=qa-16|0;qa=f;g=x[c>>2];h=v[c+11|0];x[f+4>>2]=1080;c=(h|0)<0?g:c;a:{if(!c){g=0;break a}i=Ga(c);g=Da();h=i+1|0;g=sa[x[x[g>>2]+12>>2]](g,h,8064,57)|0;Fa(g,c,h);}x[f+12>>2]=g;x[f+8>>2]=i;a=_d(a,b,xc(x[x[a+16>>2]+4>>2],f+4|0),d,e);x[f+4>>2]=1080;b=x[f+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}qa=f+16|0;return a|0}function Ff(a,b,c,d){x[a>>2]=19784;x[a+16>>2]=14588;x[a+12>>2]=d;x[a+8>>2]=c;x[a+4>>2]=b;x[a>>2]=14528;Ha(a+20|0,0,69);w[a+116>>1]=0;x[a+108>>2]=1065353216;x[a+112>>2]=0;x[a+100>>2]=0;x[a+104>>2]=0;x[a+92>>2]=1065353216;x[a+96>>2]=0;B[a+32>>2]=B[b+28>>2];B[a+36>>2]=B[b+32>>2];B[a+40>>2]=B[b+36>>2];B[a+44>>2]=B[b+40>>2];B[a+48>>2]=B[b+44>>2];B[a+52>>2]=B[b+48>>2];B[a+56>>2]=B[b+52>>2];return a}function dg(a,b){a=a|0;b=b|0;var c=0,d=0;a:{if(A[a+44>>2]<=b>>>0){break a}c=x[x[a+52>>2]+(b<<2)>>2];if(!c){break a}Pc(x[a+72>>2],c);b=x[c+20>>2];if(b){while(1){od(x[a+72>>2],b);b=x[b+20>>2];if(b){continue}break}}x[c+20>>2]=0;b=x[c+24>>2];if(b){d=c;while(1){Pc(x[a+72>>2],b);x[d+24>>2]=0;x[d+28>>2]=0;d=b;b=x[b+24>>2];if(b){continue}break}}x[x[a+52>>2]+(x[c+32>>2]<<2)>>2]=0;ic(x[a+72>>2]);}}function Zf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=qa-16|0;qa=d;e=x[a+4>>2];f=(e>>1)+b|0;b=x[a>>2];b=e&1?x[x[f>>2]+b>>2]:b;a=x[c>>2];if(a>>>0<2147483632){a:{if(a>>>0<=10){v[d+15|0]=a;e=d+4|0;break a}g=(a|15)+1|0;e=Ea(g);x[d+12>>2]=g|-2147483648;x[d+4>>2]=e;x[d+8>>2]=a;}h=Fa(e,c+4|0,a)+a|0,i=0,v[h|0]=i;sa[b|0](f,d+4|0);if(v[d+15|0]<0){Ja(x[d+4>>2]);}qa=d+16|0;return}O();p();}function Jc(a,b,c){var d=0,e=0,f=0;if(!(y[a|0]&32)){a:{d=b;b=a;a=x[b+16>>2];b:{if(!a){if(pi(b)){break b}a=x[b+16>>2];}f=x[b+20>>2];if(a-f>>>0>>0){sa[x[b+36>>2]](b,d,c)|0;break a}c:{if(x[b+80>>2]<0){break c}a=c;while(1){e=a;if(!a){break c}a=e-1|0;if(y[d+a|0]!=10){continue}break}if(sa[x[b+36>>2]](b,d,e)>>>0>>0){break b}d=d+e|0;c=c-e|0;f=x[b+20>>2];}Fa(f,d,c);x[b+20>>2]=x[b+20>>2]+c;}}}}function mf(a,b){var c=0,d=0;x[a+4>>2]=1080;x[a>>2]=15352;a:{if(!x[b+8>>2]){x[a+8>>2]=0;x[a+12>>2]=0;break a}x[a+8>>2]=x[b+4>>2];c=x[b+4>>2];d=Da();c=sa[x[x[d>>2]+12>>2]](d,c+1|0,8064,71)|0;x[a+12>>2]=c;Fa(c,x[b+8>>2],x[b+4>>2]+1|0);}x[a+48>>2]=1065353216;x[a+52>>2]=0;x[a+16>>2]=0;x[a+20>>2]=0;x[a+40>>2]=0;x[a+44>>2]=0;x[a+36>>2]=1080;x[a+28>>2]=0;x[a+32>>2]=0;x[a+24>>2]=1080;return a}function Mj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=qa-16|0;qa=e;f=x[c>>2];g=v[c+11|0];x[e+4>>2]=1080;c=(g|0)<0?f:c;a:{if(!c){f=0;break a}h=Ga(c);f=Da();g=h+1|0;f=sa[x[x[f>>2]+12>>2]](f,g,8064,57)|0;Fa(f,c,g);}x[e+12>>2]=f;x[e+8>>2]=h;a=hd(a,b,xc(x[x[a+16>>2]+4>>2],e+4|0),d);x[e+4>>2]=1080;b=x[e+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}qa=e+16|0;return a|0}function Jf(a,b){var c=0,d=0,e=0,f=0,g=0;c=x[a+24>>2];a:{b:{if(!c){break b}f=x[a+32>>2];a=0;d=x[b+8>>2];if(!d){while(1){b=x[(a<<2)+f>>2];if(!x[b+16>>2]){break a}a=a+1|0;if((c|0)!=(a|0)){continue}break b}}g=x[b+4>>2];while(1){b=x[(a<<2)+f>>2];e=x[b+16>>2];if((e|0)==(d|0)){break a}if(!(!e|x[b+12>>2]!=(g|0))){if(!Oa(e,d)){break a}}a=a+1|0;if((c|0)!=(a|0)){continue}break}}b=0;}return b}function Xp(a,b,c,d,e){a=a|0;b=E(b);c=E(c);d=E(d);e=E(e);var f=E(0),g=E(0),h=E(0),i=E(0),j=0;f=B[a+64>>2];g=B[a+60>>2];h=B[a+52>>2];i=B[a+56>>2];a:{if(h>=b&d<=h|i>=c&e<=i|(b>=g&d>=g|c>=f&e>=f)){break a}j=1;d=E(E(e-c)/E(d-b));e=E(E(d*E(h-b))+c);if(e>i&ei&eh&eh&b>>0>=3){x[13623]=28;break a}b:{if((b|0)!=1){break b}d=x[a+8>>2];if(!d){break b}c=d-x[a+4>>2]|0;e=0-c|0;c=0-((c>>31)+((c|0)!=0)|0)|0;}if(x[a+20>>2]!=x[a+28>>2]){sa[x[a+36>>2]](a,0,0)|0;if(!x[a+20>>2]){break a}}x[a+28>>2]=0;x[a+16>>2]=0;x[a+20>>2]=0;sa[x[a+40>>2]](a,e,c,b)|0;if((ra|0)<0){break a}x[a+4>>2]=0;x[a+8>>2]=0;x[a>>2]=x[a>>2]&-17;}}function Gj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=E(f);var g=0,h=0,i=0,j=0,k=0,l=0;g=qa-16|0;qa=g;h=x[d>>2];if(h>>>0<2147483632){j=x[a>>2];a:{if(h>>>0<=10){v[g+15|0]=h;a=g+4|0;break a}i=(h|15)+1|0;a=Ea(i);x[g+12>>2]=i|-2147483648;x[g+4>>2]=a;x[g+8>>2]=h;}k=Fa(a,d+4|0,h)+h|0,l=0,v[k|0]=l;a=sa[j|0](b,c,g+4|0,e,f)|0;if(v[g+15|0]<0){Ja(x[g+4>>2]);}qa=g+16|0;return a|0}O();p();}function hn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=E(0),f=0,g=E(0),h=E(0);f=Pa(20);e=B[a>>2];g=B[b>>2];h=B[c>>2];B[f+16>>2]=B[d>>2];B[f+12>>2]=h;B[f+8>>2]=g;B[f+4>>2]=e;x[f>>2]=14896;B[f+4>>2]=eE(1)?E(1):e;e=B[f+8>>2];B[f+8>>2]=eE(1)?E(1):e;e=B[f+12>>2];B[f+12>>2]=eE(1)?E(1):e;e=B[f+16>>2];B[f+16>>2]=eE(1)?E(1):e;return f|0}function xh(a){a=a|0;var b=0,c=0;x[a+40>>2]=15128;x[a>>2]=15060;b=x[a+44>>2];if(b){while(1){b=x[a+52>>2]+((c^-1)+b<<4)|0;sa[x[x[b>>2]>>2]](b)|0;b=x[a+44>>2];c=c+1|0;if(b>>>0>c>>>0){continue}break}}x[a+44>>2]=0;b=x[a+52>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+28>>2]=0;x[a+24>>2]=13296;b=x[a+36>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return Eb(a)|0}function ed(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;f=qa-16|0;qa=f;d=qa-32|0;qa=d;e=qa-16|0;qa=e;x[e+12>>2]=b+c;x[d+24>>2]=b;x[d+28>>2]=x[e+12>>2];qa=e+16|0;b=qa-16|0;qa=b;e=x[d+28>>2];g=x[d+24>>2];c=e-g|0;h=b,i=Uf(a,g,c)+c|0,x[h+12>>2]=i;x[d+16>>2]=e;x[d+20>>2]=x[b+12>>2];qa=b+16|0;b=x[d+16>>2];x[d+12>>2]=x[d+20>>2];x[f+8>>2]=b;x[f+12>>2]=x[d+12>>2];qa=d+32|0;qa=f+16|0;return a}function Hh(a){a=a|0;var b=0,c=0;x[a+24>>2]=14468;x[a>>2]=14396;b=x[a+28>>2];if(b){while(1){b=x[a+36>>2]+D((c^-1)+b|0,12)|0;sa[x[x[b>>2]>>2]](b)|0;b=x[a+28>>2];c=c+1|0;if(b>>>0>c>>>0){continue}break}}x[a+28>>2]=0;b=x[a+36>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+12>>2]=0;x[a+8>>2]=13296;b=x[a+20>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function tf(a,b){var c=0,d=E(0);a=ac(a,b);x[a+24>>2]=13296;x[a+20>>2]=0;x[a>>2]=14832;x[a+32>>2]=0;x[a+36>>2]=0;c=D(b,5);x[a+28>>2]=c;a:{if(!b){break a}d=E(E(c>>>0)*E(1.75));b:{if(E(F(d))>>0<=8?8:b;x[a+32>>2]=b;c=Da();b=sa[x[x[c>>2]+16>>2]](c,0,b<<2,7693,82)|0;x[a+36>>2]=b;c=x[a+28>>2];if(!c){break a}Ha(b,0,c<<2);}return a}function ne(a,b){var c=0,d=E(0);a=ac(a,b);x[a+20>>2]=13296;x[a>>2]=19488;x[a+28>>2]=0;x[a+32>>2]=0;x[a+36>>2]=0;c=D(b,5);x[a+24>>2]=c;a:{if(!b){break a}d=E(E(c>>>0)*E(1.75));b:{if(E(F(d))>>0<=8?8:b;x[a+28>>2]=b;c=Da();b=sa[x[x[c>>2]+16>>2]](c,0,b<<2,7693,82)|0;x[a+32>>2]=b;c=x[a+24>>2];if(!c){break a}Ha(b,0,c<<2);}return a}function af(a,b){var c=0,d=E(0);a=ac(a,b);x[a+20>>2]=13296;x[a>>2]=15772;x[a+28>>2]=0;x[a+32>>2]=0;x[a+36>>2]=0;c=D(b,6);x[a+24>>2]=c;a:{if(!b){break a}d=E(E(c>>>0)*E(1.75));b:{if(E(F(d))>>0<=8?8:b;x[a+28>>2]=b;c=Da();b=sa[x[x[c>>2]+16>>2]](c,0,b<<2,7693,82)|0;x[a+32>>2]=b;c=x[a+24>>2];if(!c){break a}Ha(b,0,c<<2);}return a}function Te(a,b){var c=0,d=E(0);a=ac(a,b);x[a+20>>2]=13296;x[a>>2]=16280;x[a+28>>2]=0;x[a+32>>2]=0;x[a+36>>2]=0;c=D(b,3);x[a+24>>2]=c;a:{if(!b){break a}d=E(E(c>>>0)*E(1.75));b:{if(E(F(d))>>0<=8?8:b;x[a+28>>2]=b;c=Da();b=sa[x[x[c>>2]+16>>2]](c,0,b<<2,7693,82)|0;x[a+32>>2]=b;c=x[a+24>>2];if(!c){break a}Ha(b,0,c<<2);}return a}function wh(a){a=a|0;var b=0,c=0;x[a+20>>2]=15252;x[a>>2]=15184;b=x[a+24>>2];if(b){while(1){b=x[a+32>>2]+((c^-1)+b<<4)|0;sa[x[x[b>>2]>>2]](b)|0;b=x[a+24>>2];c=c+1|0;if(b>>>0>c>>>0){continue}break}}x[a+24>>2]=0;b=x[a+32>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+8>>2]=0;x[a+4>>2]=13296;b=x[a+16>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Ne(a,b){var c=0,d=E(0);a=ac(a,b);x[a+24>>2]=13296;x[a+20>>2]=0;x[a>>2]=16744;x[a+32>>2]=0;x[a+36>>2]=0;b=b<<1;x[a+28>>2]=b;a:{if(!b){break a}d=E(E(b>>>0)*E(1.75));b:{if(E(F(d))>>0<=8?8:b;x[a+32>>2]=b;c=Da();b=sa[x[x[c>>2]+16>>2]](c,0,b<<2,7693,82)|0;x[a+36>>2]=b;c=x[a+28>>2];if(!c){break a}Ha(b,0,c<<2);}return a}function Cd(a,b){var c=0,d=E(0);a=ac(a,b);x[a+20>>2]=13296;x[a>>2]=16372;x[a+28>>2]=0;x[a+32>>2]=0;x[a+36>>2]=0;c=b<<1;x[a+24>>2]=c;a:{if(!b){break a}d=E(E(c>>>0)*E(1.75));b:{if(E(F(d))>>0<=8?8:b;x[a+28>>2]=b;c=Da();b=sa[x[x[c>>2]+16>>2]](c,0,b<<2,7693,82)|0;x[a+32>>2]=b;c=x[a+24>>2];if(!c){break a}Ha(b,0,c<<2);}return a}function Lj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=qa-16|0;qa=f;g=x[d>>2];if(g>>>0<2147483632){i=x[a>>2];a:{if(g>>>0<=10){v[f+15|0]=g;a=f+4|0;break a}h=(g|15)+1|0;a=Ea(h);x[f+12>>2]=h|-2147483648;x[f+4>>2]=a;x[f+8>>2]=g;}j=Fa(a,d+4|0,g)+g|0,k=0,v[j|0]=k;a=sa[i|0](b,c,f+4|0,e)|0;if(v[f+15|0]<0){Ja(x[f+4>>2]);}qa=f+16|0;return a|0}O();p();}function ac(a,b){var c=0,d=E(0);x[a>>2]=19280;x[a+4>>2]=13296;x[a>>2]=14996;x[a+12>>2]=0;x[a+16>>2]=0;b=D(b,19)-19|0;x[a+8>>2]=b;a:{if(!b){break a}d=E(E(b>>>0)*E(1.75));b:{if(E(F(d))>>0<=8?8:b;x[a+12>>2]=b;c=Da();b=sa[x[x[c>>2]+16>>2]](c,0,b<<2,7693,82)|0;x[a+16>>2]=b;c=x[a+8>>2];if(!c){break a}Ha(b,0,c<<2);}return a}function Gf(a,b,c,d){var e=0,f=0,g=0;B[x[a+20>>2]+(b<<2)>>2]=c;e=x[a+36>>2];a=e+D(b,12)|0;if((a|0)!=(d|0)){f=x[a+8>>2];if(f){g=Da();sa[x[x[g>>2]+20>>2]](g,f,8064,122);}if(!x[d+8>>2]){x[(D(b,12)+e|0)+4>>2]=0;x[a+8>>2]=0;return}x[(D(b,12)+e|0)+4>>2]=x[d+4>>2];b=x[d+4>>2];e=a;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,129)|0;x[e+8>>2]=a;Fa(a,x[d+8>>2],x[d+4>>2]+1|0);}}function Qm(a,b,c,d){a=a|0;b=b|0;c=E(c);d=E(d);var e=E(0),f=E(0),g=0,h=0,i=0,j=0;g=x[b+20>>2];if((g|0)>0){a=g-2|0;h=x[b+16>>2];b=0;while(1){i=b<<2;e=B[(i|4)+h>>2];a=(a<<2)+h|0;f=B[a+4>>2];a:{if(!(e=d)&(!(d<=e)|!(d>f))){break a}f=E(E(d-e)/E(f-e));e=B[h+i>>2];if(!(E(E(f*E(B[a>>2]-e))+e)(b|0)){continue}break}}return j&1}function kk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=E(d);e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=qa-16|0;qa=f;g=x[e>>2];if(g>>>0<2147483632){i=x[a>>2];a:{if(g>>>0<=10){v[f+15|0]=g;a=f+4|0;break a}h=(g|15)+1|0;a=Ea(h);x[f+12>>2]=h|-2147483648;x[f+4>>2]=a;x[f+8>>2]=g;}j=Fa(a,e+4|0,g)+g|0,k=0,v[j|0]=k;sa[i|0](b,c,d,f+4|0);if(v[f+15|0]<0){Ja(x[f+4>>2]);}qa=f+16|0;return}O();p();}function nl(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=qa-16|0;qa=f;g=x[d>>2];if(g>>>0<2147483632){i=x[a>>2];a:{if(g>>>0<=10){v[f+15|0]=g;a=f+4|0;break a}h=(g|15)+1|0;a=Ea(h);x[f+12>>2]=h|-2147483648;x[f+4>>2]=a;x[f+8>>2]=g;}j=Fa(a,d+4|0,g)+g|0,k=0,v[j|0]=k;sa[i|0](b,c,f+4|0,e);if(v[f+15|0]<0){Ja(x[f+4>>2]);}qa=f+16|0;return}O();p();}function Eu(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(gb(a,x[b+8>>2],e)){if(!(x[b+28>>2]==1|x[b+4>>2]!=(c|0))){x[b+28>>2]=d;}return}a:{if(!gb(a,x[b>>2],e)){break a}if(!(x[b+16>>2]!=(c|0)&x[b+20>>2]!=(c|0))){if((d|0)!=1){break a}x[b+32>>2]=1;return}x[b+20>>2]=c;x[b+32>>2]=d;x[b+40>>2]=x[b+40>>2]+1;if(!(x[b+36>>2]!=1|x[b+24>>2]!=2)){v[b+54|0]=1;}x[b+44>>2]=4;}}function ae(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=qa-16|0;qa=e;f=x[d>>2];if(f>>>0<2147483632){h=x[a>>2];a:{if(f>>>0<=10){v[e+15|0]=f;a=e+4|0;break a}g=(f|15)+1|0;a=Ea(g);x[e+12>>2]=g|-2147483648;x[e+4>>2]=a;x[e+8>>2]=f;}i=Fa(a,d+4|0,f)+f|0,j=0,v[i|0]=j;a=sa[h|0](b,c,e+4|0)|0;if(v[e+15|0]<0){Ja(x[e+4>>2]);}qa=e+16|0;return a|0}O();p();}function ll(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=qa-16|0;qa=d;e=x[c>>2];f=v[c+11|0];x[d+4>>2]=1080;c=(f|0)<0?e:c;a:{if(!c){e=0;break a}g=Ga(c);e=Da();f=g+1|0;e=sa[x[x[e>>2]+12>>2]](e,f,8064,57)|0;Fa(e,c,f);}x[d+12>>2]=e;x[d+8>>2]=g;a=Ob(a,b,d+4|0);x[d+4>>2]=1080;b=x[d+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}qa=d+16|0;return a|0}function lj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=qa-16|0;qa=d;e=x[c>>2];f=v[c+11|0];x[d+4>>2]=1080;c=(f|0)<0?e:c;a:{if(!c){e=0;break a}g=Ga(c);e=Da();f=g+1|0;e=sa[x[x[e>>2]+12>>2]](e,f,8064,57)|0;Fa(e,c,f);}x[d+12>>2]=e;x[d+8>>2]=g;a=Fe(a,b,d+4|0);x[d+4>>2]=1080;b=x[d+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}qa=d+16|0;return a|0}function lk(a,b,c,d){a=a|0;b=b|0;c=E(c);d=d|0;var e=0,f=0,g=0,h=0;e=qa-16|0;qa=e;f=x[d>>2];g=v[d+11|0];x[e+4>>2]=1080;d=(g|0)<0?f:d;a:{if(!d){f=0;break a}h=Ga(d);f=Da();g=h+1|0;f=sa[x[x[f>>2]+12>>2]](f,g,8064,57)|0;Fa(f,d,g);}x[e+12>>2]=f;x[e+8>>2]=h;Gf(a,b,c,e+4|0);x[e+4>>2]=1080;a=x[e+12>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}qa=e+16|0;}function zl(a,b,c,d){a=a|0;b=b|0;c=E(c);d=E(d);var e=0,f=E(0),g=0,h=E(0),i=E(0),j=E(0),k=E(0);e=Ea(8);x[a>>2]=e;g=e+8|0;x[a+8>>2]=g;x[e>>2]=0;x[e+4>>2]=0;x[a+4>>2]=g;h=B[b+92>>2];i=B[b+108>>2];j=B[b+104>>2];k=B[b+96>>2];f=E(E(1)/E(E(h*i)-E(j*k)));c=E(c-B[b+100>>2]);d=E(d-B[b+112>>2]);B[e>>2]=E(E(i*c)*f)-E(f*E(k*d));B[e+4>>2]=E(E(h*d)*f)-E(f*E(j*c));}function ol(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=qa-16|0;qa=e;f=x[c>>2];g=v[c+11|0];x[e+4>>2]=1080;c=(g|0)<0?f:c;a:{if(!c){f=0;break a}h=Ga(c);f=Da();g=h+1|0;f=sa[x[x[f>>2]+12>>2]](f,g,8064,57)|0;Fa(f,c,g);}x[e+12>>2]=f;x[e+8>>2]=h;re(a,b,e+4|0,d);x[e+4>>2]=1080;a=x[e+12>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}qa=e+16|0;}function il(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=qa-16|0;qa=e;f=x[d>>2];if(f>>>0<2147483632){h=x[a>>2];a:{if(f>>>0<=10){v[e+15|0]=f;a=e+4|0;break a}g=(f|15)+1|0;a=Ea(g);x[e+12>>2]=g|-2147483648;x[e+4>>2]=a;x[e+8>>2]=f;}i=Fa(a,d+4|0,f)+f|0,j=0,v[i|0]=j;sa[h|0](b,c,e+4|0);if(v[e+15|0]<0){Ja(x[e+4>>2]);}qa=e+16|0;return}O();p();}function en(a,b,c,d,e){a=a|0;b=E(b);c=E(c);d=E(d);e=E(e);b=E(B[a+4>>2]+b);B[a+4>>2]=b;B[a+8>>2]=B[a+8>>2]+c;B[a+12>>2]=B[a+12>>2]+d;B[a+16>>2]=B[a+16>>2]+e;B[a+4>>2]=bE(1)?E(1):b;b=B[a+8>>2];B[a+8>>2]=bE(1)?E(1):b;b=B[a+12>>2];B[a+12>>2]=bE(1)?E(1):b;b=B[a+16>>2];B[a+16>>2]=bE(1)?E(1):b;return a|0}function Cb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=qa-16|0;qa=d;e=x[c>>2];if(e>>>0<2147483632){g=x[a>>2];a:{if(e>>>0<=10){v[d+15|0]=e;a=d+4|0;break a}f=(e|15)+1|0;a=Ea(f);x[d+12>>2]=f|-2147483648;x[d+4>>2]=a;x[d+8>>2]=e;}h=Fa(a,c+4|0,e)+e|0,i=0,v[h|0]=i;a=sa[g|0](b,d+4|0)|0;if(v[d+15|0]<0){Ja(x[d+4>>2]);}qa=d+16|0;return a|0}O();p();}function Nf(a,b,c,d){v[a+53|0]=1;a:{if(x[a+4>>2]!=(c|0)){break a}v[a+52|0]=1;c=x[a+16>>2];b:{if(!c){x[a+36>>2]=1;x[a+24>>2]=d;x[a+16>>2]=b;if((d|0)!=1){break a}if(x[a+48>>2]==1){break b}break a}if((b|0)==(c|0)){c=x[a+24>>2];if((c|0)==2){x[a+24>>2]=d;c=d;}if(x[a+48>>2]!=1){break a}if((c|0)==1){break b}break a}x[a+36>>2]=x[a+36>>2]+1;}v[a+54|0]=1;}}function tj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=qa-16|0;qa=d;c=x[b>>2];e=v[b+11|0];x[d+4>>2]=1080;b=(e|0)<0?c:b;a:{if(!b){c=0;break a}f=Ga(b);c=Da();e=f+1|0;c=sa[x[x[c>>2]+12>>2]](c,e,8064,57)|0;Fa(c,b,e);}x[d+12>>2]=c;x[d+8>>2]=f;a=Dc(a,d+4|0);x[d+4>>2]=1080;b=x[d+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}qa=d+16|0;return a|0}function rj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=qa-16|0;qa=d;c=x[b>>2];e=v[b+11|0];x[d+4>>2]=1080;b=(e|0)<0?c:b;a:{if(!b){c=0;break a}f=Ga(b);c=Da();e=f+1|0;c=sa[x[x[c>>2]+12>>2]](c,e,8064,57)|0;Fa(c,b,e);}x[d+12>>2]=c;x[d+8>>2]=f;a=xd(a,d+4|0);x[d+4>>2]=1080;b=x[d+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}qa=d+16|0;return a|0}function Rl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=qa-16|0;qa=d;c=x[b>>2];e=v[b+11|0];x[d+4>>2]=1080;b=(e|0)<0?c:b;a:{if(!b){c=0;break a}f=Ga(b);c=Da();e=f+1|0;c=sa[x[x[c>>2]+12>>2]](c,e,8064,57)|0;Fa(c,b,e);}x[d+12>>2]=c;x[d+8>>2]=f;a=Jf(a,d+4|0);x[d+4>>2]=1080;b=x[d+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}qa=d+16|0;return a|0}function Pk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=qa-16|0;qa=d;c=x[b>>2];e=v[b+11|0];x[d+4>>2]=1080;b=(e|0)<0?c:b;a:{if(!b){c=0;break a}f=Ga(b);c=Da();e=f+1|0;c=sa[x[x[c>>2]+12>>2]](c,e,8064,57)|0;Fa(c,b,e);}x[d+12>>2]=c;x[d+8>>2]=f;a=$b(a,d+4|0);x[d+4>>2]=1080;b=x[d+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}qa=d+16|0;return a|0}function Ok(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=qa-16|0;qa=d;c=x[b>>2];e=v[b+11|0];x[d+4>>2]=1080;b=(e|0)<0?c:b;a:{if(!b){c=0;break a}f=Ga(b);c=Da();e=f+1|0;c=sa[x[x[c>>2]+12>>2]](c,e,8064,57)|0;Fa(c,b,e);}x[d+12>>2]=c;x[d+8>>2]=f;a=Lg(a,d+4|0);x[d+4>>2]=1080;b=x[d+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}qa=d+16|0;return a|0}function Nk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=qa-16|0;qa=d;c=x[b>>2];e=v[b+11|0];x[d+4>>2]=1080;b=(e|0)<0?c:b;a:{if(!b){c=0;break a}f=Ga(b);c=Da();e=f+1|0;c=sa[x[x[c>>2]+12>>2]](c,e,8064,57)|0;Fa(c,b,e);}x[d+12>>2]=c;x[d+8>>2]=f;a=ud(a,d+4|0);x[d+4>>2]=1080;b=x[d+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}qa=d+16|0;return a|0}function Mk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=qa-16|0;qa=d;c=x[b>>2];e=v[b+11|0];x[d+4>>2]=1080;b=(e|0)<0?c:b;a:{if(!b){c=0;break a}f=Ga(b);c=Da();e=f+1|0;c=sa[x[x[c>>2]+12>>2]](c,e,8064,57)|0;Fa(c,b,e);}x[d+12>>2]=c;x[d+8>>2]=f;a=Uc(a,d+4|0);x[d+4>>2]=1080;b=x[d+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}qa=d+16|0;return a|0}function Lk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=qa-16|0;qa=d;c=x[b>>2];e=v[b+11|0];x[d+4>>2]=1080;b=(e|0)<0?c:b;a:{if(!b){c=0;break a}f=Ga(b);c=Da();e=f+1|0;c=sa[x[x[c>>2]+12>>2]](c,e,8064,57)|0;Fa(c,b,e);}x[d+12>>2]=c;x[d+8>>2]=f;a=Tc(a,d+4|0);x[d+4>>2]=1080;b=x[d+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}qa=d+16|0;return a|0}function Kk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=qa-16|0;qa=d;c=x[b>>2];e=v[b+11|0];x[d+4>>2]=1080;b=(e|0)<0?c:b;a:{if(!b){c=0;break a}f=Ga(b);c=Da();e=f+1|0;c=sa[x[x[c>>2]+12>>2]](c,e,8064,57)|0;Fa(c,b,e);}x[d+12>>2]=c;x[d+8>>2]=f;a=Kg(a,d+4|0);x[d+4>>2]=1080;b=x[d+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}qa=d+16|0;return a|0}function Jk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=qa-16|0;qa=d;c=x[b>>2];e=v[b+11|0];x[d+4>>2]=1080;b=(e|0)<0?c:b;a:{if(!b){c=0;break a}f=Ga(b);c=Da();e=f+1|0;c=sa[x[x[c>>2]+12>>2]](c,e,8064,57)|0;Fa(c,b,e);}x[d+12>>2]=c;x[d+8>>2]=f;a=xc(a,d+4|0);x[d+4>>2]=1080;b=x[d+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}qa=d+16|0;return a|0}function Ik(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=qa-16|0;qa=d;c=x[b>>2];e=v[b+11|0];x[d+4>>2]=1080;b=(e|0)<0?c:b;a:{if(!b){c=0;break a}f=Ga(b);c=Da();e=f+1|0;c=sa[x[x[c>>2]+12>>2]](c,e,8064,57)|0;Fa(c,b,e);}x[d+12>>2]=c;x[d+8>>2]=f;a=ze(a,d+4|0);x[d+4>>2]=1080;b=x[d+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}qa=d+16|0;return a|0}function Hk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=qa-16|0;qa=d;c=x[b>>2];e=v[b+11|0];x[d+4>>2]=1080;b=(e|0)<0?c:b;a:{if(!b){c=0;break a}f=Ga(b);c=Da();e=f+1|0;c=sa[x[x[c>>2]+12>>2]](c,e,8064,57)|0;Fa(c,b,e);}x[d+12>>2]=c;x[d+8>>2]=f;a=ye(a,d+4|0);x[d+4>>2]=1080;b=x[d+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}qa=d+16|0;return a|0}function Gk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=qa-16|0;qa=d;c=x[b>>2];e=v[b+11|0];x[d+4>>2]=1080;b=(e|0)<0?c:b;a:{if(!b){c=0;break a}f=Ga(b);c=Da();e=f+1|0;c=sa[x[x[c>>2]+12>>2]](c,e,8064,57)|0;Fa(c,b,e);}x[d+12>>2]=c;x[d+8>>2]=f;a=xe(a,d+4|0);x[d+4>>2]=1080;b=x[d+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}qa=d+16|0;return a|0}function Nc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=qa-16|0;qa=d;e=x[c>>2];if(e>>>0<2147483632){g=x[a>>2];a:{if(e>>>0<=10){v[d+15|0]=e;a=d+4|0;break a}f=(e|15)+1|0;a=Ea(f);x[d+12>>2]=f|-2147483648;x[d+4>>2]=a;x[d+8>>2]=e;}h=Fa(a,c+4|0,e)+e|0,i=0,v[h|0]=i;sa[g|0](b,d+4|0);if(v[d+15|0]<0){Ja(x[d+4>>2]);}qa=d+16|0;return}O();p();}function tc(a,b){a:{if((b|0)>=1024){a=a*898846567431158e293;if(b>>>0<2047){b=b-1023|0;break a}a=a*898846567431158e293;b=((b|0)>=3069?3069:b)-2046|0;break a}if((b|0)>-1023){break a}a=a*2004168360008973e-307;if(b>>>0>4294965304){b=b+969|0;break a}a=a*2004168360008973e-307;b=((b|0)<=-2960?-2960:b)+1938|0;}l(0,0);l(1,b+1023<<20);return a*+n()}function vv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=qa-16|0;qa=d;e=x[c>>2];if(e>>>0<2147483632){a:{if(e>>>0<=10){v[d+15|0]=e;f=d+4|0;break a}g=(e|15)+1|0;f=Ea(g);x[d+12>>2]=g|-2147483648;x[d+4>>2]=f;x[d+8>>2]=e;}h=Fa(f,c+4|0,e)+e|0,i=0,v[h|0]=i;a=sa[a|0](b,d+4|0)|0;if(v[d+15|0]<0){Ja(x[d+4>>2]);}qa=d+16|0;return a|0}O();p();}function ws(a){a=a|0;var b=0,c=0,d=0;a:{switch(x[a+12>>2]-1|0){case 0:b=x[a+40>>2];hf(x[x[a+20>>2]>>2],B[b+100>>2],B[b+112>>2],y[a+28|0],y[a+29|0],y[x[a+4>>2]+50|0],B[a+32>>2]);return;case 1:b=x[a+20>>2];c=x[b>>2];d=x[b+4>>2];b=x[a+40>>2];sh(c,d,B[b+100>>2],B[b+112>>2],x[a+24>>2],y[a+29|0],B[a+36>>2],B[a+32>>2]);break;default:break a}}}function Ou(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa+-64|0;qa=d;e=1;a:{if(gb(a,b,0)){break a}e=0;if(!b){break a}b=Qb(b,52700);e=0;if(!b){break a}Ha(d+12|0,0,52);x[d+56>>2]=1;x[d+20>>2]=-1;x[d+16>>2]=a;x[d+8>>2]=b;sa[x[x[b>>2]+28>>2]](b,d+8|0,x[c>>2],1);a=x[d+32>>2];if((a|0)==1){x[c>>2]=x[d+24>>2];}e=(a|0)==1;}a=e;qa=d- -64|0;return a|0}function Xe(a,b){a=E(a);b=E(b);var c=0,d=0,e=E(0),f=E(0),g=E(0),h=E(0);d=Uw(x[13752],x[13753],1284865837,1481765933);c=ra;d=d+1|0;c=d?c:c+1|0;x[13752]=d;x[13753]=c;e=E(E(c>>>1|0)*E(4.656612873077393e-10));g=E(E(a+b)*E(.5));h=E(g-a);f=E(b-a);if(e<=E(h/f)){return E(E(E(M(E(h*E(f*e))))+a))}return E(E(b-E(M(E(E(b-g)*E(f*E(E(1)-e)))))))}function uv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=qa-16|0;qa=d;e=x[c>>2];if(e>>>0<2147483632){a:{if(e>>>0<=10){v[d+15|0]=e;f=d+4|0;break a}g=(e|15)+1|0;f=Ea(g);x[d+12>>2]=g|-2147483648;x[d+4>>2]=f;x[d+8>>2]=e;}h=Fa(f,c+4|0,e)+e|0,i=0,v[h|0]=i;sa[a|0](b,d+4|0);if(v[d+15|0]<0){Ja(x[d+4>>2]);}qa=d+16|0;return}O();p();}function pj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=qa-16|0;qa=c;d=x[b>>2];e=v[b+11|0];x[c+4>>2]=1080;b=(e|0)<0?d:b;a:{if(!b){d=0;break a}f=Ga(b);d=Da();e=f+1|0;d=sa[x[x[d>>2]+12>>2]](d,e,8064,57)|0;Fa(d,b,e);}x[c+12>>2]=d;x[c+8>>2]=f;Xg(a,c+4|0);x[c+4>>2]=1080;a=x[c+12>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}qa=c+16|0;}function xv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=qa-16|0;qa=c;d=x[b>>2];if(d>>>0<2147483632){a:{if(d>>>0<=10){v[c+15|0]=d;e=c+4|0;break a}f=(d|15)+1|0;e=Ea(f);x[c+12>>2]=f|-2147483648;x[c+4>>2]=e;x[c+8>>2]=d;}g=Fa(e,b+4|0,d)+d|0,h=0,v[g|0]=h;a=sa[a|0](c+4|0)|0;if(v[c+15|0]<0){Ja(x[c+4>>2]);}qa=c+16|0;return a|0}O();p();}function De(a){a=a|0;var b=0,c=0;x[a+40>>2]=0;x[a+36>>2]=17604;x[a>>2]=17500;b=x[a+48>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+24>>2]=0;x[a+20>>2]=17664;b=x[a+32>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+8>>2]=0;x[a+4>>2]=17604;b=x[a+16>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Sd(a,b,c){var d=0,e=0;a:{b:{if(c>>>0>=4){if((a|b)&3){break b}while(1){if(x[a>>2]!=x[b>>2]){break b}b=b+4|0;a=a+4|0;c=c-4|0;if(c>>>0>3){continue}break}}d=0;break a}d=1;}while(1){c:{if(!d){if(c){break c}return 0}d:{e=y[b|0];d=y[a|0];if((e|0)==(d|0)){b=b+1|0;a=a+1|0;c=c-1|0;break d}return d-e|0}d=0;continue}d=1;continue}}function Lv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=a;a=x[b>>2];if((x[b+4>>2]-a|0)/24>>>0>c>>>0){b=Ea(24);c=a+D(c,24)|0;a=x[c+4>>2];x[b>>2]=x[c>>2];x[b+4>>2]=a;a=x[c+20>>2];x[b+16>>2]=x[c+16>>2];x[b+20>>2]=a;a=x[c+12>>2];x[b+8>>2]=x[c+8>>2];x[b+12>>2]=a;x[d+8>>2]=b;a=U(39596,d+8|0)|0;}else {a=1;}x[e>>2]=a;qa=d+16|0;}function Nn(a,b,c){a=a|0;b=b|0;c=c|0;var d=E(0),e=E(0),f=E(0),g=E(0),h=0;f=E(B[b>>2]-B[a+20>>2]);g=E(B[c>>2]-B[a+24>>2]);d=E(M(E(E(f*f)+E(g*g))));e=B[a+12>>2];if(d>2];d=E(sa[x[x[h>>2]+4>>2]](h,E(0),B[a+16>>2],E(E(e-d)/e)));e=Hb(d);d=Fb(d);B[b>>2]=B[a+20>>2]+E(E(e*f)-E(g*d));B[c>>2]=E(E(d*f)+E(g*e))+B[a+24>>2];}}function te(a){a=a|0;var b=0,c=0,d=0;x[a>>2]=18976;b=x[a+4>>2];if(b){while(1){b=x[a+12>>2]+D((c^-1)+b|0,20)|0;x[b+4>>2]=1080;b=x[b+12>>2];if(b){d=Da();sa[x[x[d>>2]+20>>2]](d,b,8064,201);}b=x[a+4>>2];c=c+1|0;if(b>>>0>c>>>0){continue}break}}x[a+4>>2]=0;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function tv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=qa-16|0;qa=c;d=x[b>>2];if(d>>>0<2147483632){a:{if(d>>>0<=10){v[c+15|0]=d;e=c+4|0;break a}f=(d|15)+1|0;e=Ea(f);x[c+12>>2]=f|-2147483648;x[c+4>>2]=e;x[c+8>>2]=d;}g=Fa(e,b+4|0,d)+d|0,h=0,v[g|0]=h;sa[a|0](c+4|0);if(v[c+15|0]<0){Ja(x[c+4>>2]);}qa=c+16|0;return}O();p();}function vu(a){a=a|0;var b=0,c=0,d=0;x[a+24>>2]=1080;x[a>>2]=13908;d=a-4|0;x[d>>2]=13892;b=x[a+32>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}x[a+12>>2]=1080;b=x[a+20>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}x[a>>2]=13168;b=x[a+8>>2];a:{if(!b){break a}a=x[a+4>>2];if(!a){break a}sa[b|0](a);}return d|0}function Qr(a,b,c){a=E(a);b=E(b);c=E(c);var d=0,e=0,f=E(0),g=E(0),h=E(0);e=Uw(x[13752],x[13753],1284865837,1481765933);d=ra;e=e+1|0;d=e?d:d+1|0;x[13752]=e;x[13753]=d;f=E(E(d>>>1|0)*E(4.656612873077393e-10));h=E(c-a);g=E(b-a);if(f<=E(h/g)){return E(E(E(M(E(h*E(g*f))))+a))}return E(E(b-E(M(E(E(b-c)*E(g*E(E(1)-f)))))))}function Jh(a){a=a|0;var b=0,c=0;x[a+100>>2]=0;x[a+96>>2]=13184;x[a>>2]=13976;b=x[a+108>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+84>>2]=0;x[a+80>>2]=13184;b=x[a+92>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+8>>2]=1080;b=x[a+16>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}return a|0}function xu(a){a=a|0;var b=0,c=0;x[a+28>>2]=1080;x[a+4>>2]=13908;x[a>>2]=13892;b=x[a+36>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}x[a+16>>2]=1080;b=x[a+24>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}x[a+4>>2]=13168;b=x[a+12>>2];a:{if(!b){break a}c=x[a+8>>2];if(!c){break a}sa[b|0](c);}return a|0}function dd(a,b,c){var d=0,e=0,f=0,g=0;e=qa-16|0;qa=e;a:{b:{if(c>>>0<11){v[a+11|0]=c;break b}if(c>>>0>=2147483632){break a}g=e+8|0;if(c>>>0>=11){f=c+16&-16;d=f-1|0;d=(d|0)==11?f:d;}else {d=10;}Sh(g,d+1|0);d=x[e+8>>2];x[a>>2]=d;x[a+8>>2]=x[e+12>>2]|-2147483648;x[a+4>>2]=c;a=d;}ed(a,b,c+1|0);qa=e+16|0;return}Of();p();}function Kh(a){a=a|0;var b=0,c=0;x[a+28>>2]=1080;x[a+4>>2]=13908;x[a>>2]=13892;b=x[a+36>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}x[a+16>>2]=1080;b=x[a+24>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}x[a+4>>2]=13168;b=x[a+12>>2];a:{if(!b){break a}c=x[a+8>>2];if(!c){break a}sa[b|0](c);}La(a);}function gp(a,b){a=a|0;b=b|0;var c=0,d=0;if((a+164|0)!=(b|0)){c=x[a+172>>2];if(c){d=Da();sa[x[x[d>>2]+20>>2]](d,c,8064,122);}if(!x[b+8>>2]){x[a+168>>2]=0;x[a+172>>2]=0;return}x[a+168>>2]=x[b+4>>2];c=x[b+4>>2];d=a;a=Da();a=sa[x[x[a>>2]+12>>2]](a,c+1|0,8064,129)|0;x[d+172>>2]=a;Fa(a,x[b+8>>2],x[b+4>>2]+1|0);}}function fp(a,b){a=a|0;b=b|0;var c=0,d=0;if((a+176|0)!=(b|0)){c=x[a+184>>2];if(c){d=Da();sa[x[x[d>>2]+20>>2]](d,c,8064,122);}if(!x[b+8>>2]){x[a+180>>2]=0;x[a+184>>2]=0;return}x[a+180>>2]=x[b+4>>2];c=x[b+4>>2];d=a;a=Da();a=sa[x[x[a>>2]+12>>2]](a,c+1|0,8064,129)|0;x[d+184>>2]=a;Fa(a,x[b+8>>2],x[b+4>>2]+1|0);}}function ep(a,b){a=a|0;b=b|0;var c=0,d=0;if((a+208|0)!=(b|0)){c=x[a+216>>2];if(c){d=Da();sa[x[x[d>>2]+20>>2]](d,c,8064,122);}if(!x[b+8>>2]){x[a+212>>2]=0;x[a+216>>2]=0;return}x[a+212>>2]=x[b+4>>2];c=x[b+4>>2];d=a;a=Da();a=sa[x[x[a>>2]+12>>2]](a,c+1|0,8064,129)|0;x[d+216>>2]=a;Fa(a,x[b+8>>2],x[b+4>>2]+1|0);}}function dp(a,b){a=a|0;b=b|0;var c=0,d=0;if((a+220|0)!=(b|0)){c=x[a+228>>2];if(c){d=Da();sa[x[x[d>>2]+20>>2]](d,c,8064,122);}if(!x[b+8>>2]){x[a+224>>2]=0;x[a+228>>2]=0;return}x[a+224>>2]=x[b+4>>2];c=x[b+4>>2];d=a;a=Da();a=sa[x[x[a>>2]+12>>2]](a,c+1|0,8064,129)|0;x[d+228>>2]=a;Fa(a,x[b+8>>2],x[b+4>>2]+1|0);}}function Fv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=a;a=x[b+4>>2];b=x[b>>2];if((a-b|0)/20>>>0>c>>>0){a=Ea(20);b=b+D(c,20)|0;c=x[b+4>>2];x[a>>2]=x[b>>2];x[a+4>>2]=c;x[a+16>>2]=x[b+16>>2];c=x[b+12>>2];x[a+8>>2]=x[b+8>>2];x[a+12>>2]=c;x[d+8>>2]=a;a=U(40052,d+8|0)|0;}else {a=1;}x[e>>2]=a;qa=d+16|0;}function Gd(a){var b=0;a=a+4|0;a:{b:{while(1){a=x[a>>2];if(!a){break b}b=x[a+28>>2];if(b){b=fd(b,6907);}else {b=-1;}if(b){continue}break}b=x[a+16>>2];if(b){return !Oa(b,8488)}b=1;c:{switch(x[a+8>>2]){case 0:case 2:return 0;case 1:break a;case 3:break c;default:break b}}return B[a+24>>2]!=E(0)}b=0;}return b}function gn(a,b,c,d,e){a=a|0;b=E(b);c=E(c);d=E(d);e=E(e);B[a+16>>2]=e;B[a+12>>2]=d;B[a+8>>2]=c;B[a+4>>2]=b;B[a+4>>2]=bE(1)?E(1):b;b=B[a+8>>2];B[a+8>>2]=bE(1)?E(1):b;b=B[a+12>>2];B[a+12>>2]=bE(1)?E(1):b;b=B[a+16>>2];B[a+16>>2]=bE(1)?E(1):b;return a|0}function np(a,b){a=a|0;b=b|0;var c=0,d=0;if((a+4|0)!=(b|0)){c=x[a+12>>2];if(c){d=Da();sa[x[x[d>>2]+20>>2]](d,c,8064,122);}if(!x[b+8>>2]){x[a+8>>2]=0;x[a+12>>2]=0;return}x[a+8>>2]=x[b+4>>2];c=x[b+4>>2];d=a;a=Da();a=sa[x[x[a>>2]+12>>2]](a,c+1|0,8064,129)|0;x[d+12>>2]=a;Fa(a,x[b+8>>2],x[b+4>>2]+1|0);}}function Iu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;if(gb(a,x[b+8>>2],0)){Mf(b,c,d);return}e=x[a+12>>2];f=a+16|0;Qh(x[f>>2],x[a+20>>2],b,c,d);a=a+24|0;e=(e<<3)+f|0;a:{if(a>>>0>=e>>>0){break a}while(1){Qh(x[a>>2],x[a+4>>2],b,c,d);if(y[b+54|0]){break a}a=a+8|0;if(e>>>0>a>>>0){continue}break}}}function _f(a){a=a|0;var b=0;if(a){b=x[a+16>>2];if(b){sa[x[x[b>>2]+4>>2]](b);}b=x[a+12>>2];if(b){sa[x[x[b>>2]+4>>2]](b);}b=x[a+8>>2];if(b){sa[x[x[b>>2]+4>>2]](b);}b=x[a>>2];if(b){sa[x[x[b>>2]+4>>2]](b);}b=x[a+24>>2];if(b){Ja(wg(b));}ge(a+84|0,x[a+88>>2]);b=x[a+72>>2];if(b){x[a+76>>2]=b;Ja(b);}Ja(a);}}function Ga(a){var b=0,c=0,d=0;a:{b:{b=a;if(!(b&3)){break b}if(!y[a|0]){return 0}while(1){b=b+1|0;if(!(b&3)){break b}if(y[b|0]){continue}break}break a}while(1){c=b;b=b+4|0;d=x[c>>2];if(!((d^-1)&d-16843009&-2139062144)){continue}break}while(1){b=c;c=b+1|0;if(y[b|0]){continue}break}}return b-a|0}function Lb(a,b){var c=0,d=0,e=0,f=0;d=qa-16|0;qa=d;a:{if(!b){b=0;break a}c=b>>31;e=(c^b)-c|0;c=G(e);qb(d,e,0,0,0,c+81|0);e=0+x[d+8>>2]|0;c=(x[d+12>>2]^65536)+(16414-c<<16)|0;c=e>>>0>>0?c+1|0:c;f=b&-2147483648|c;c=x[d+4>>2];b=x[d>>2];}x[a>>2]=b;x[a+4>>2]=c;x[a+8>>2]=e;x[a+12>>2]=f;qa=d+16|0;}function uh(a){a=a|0;var b=0,c=0;x[a+36>>2]=1080;x[a>>2]=15352;b=x[a+44>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}x[a+24>>2]=1080;b=x[a+32>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}x[a+4>>2]=1080;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}return a|0}function fn(a,b,c,d,e,f){a=a|0;b=b|0;c=E(c);d=E(d);e=E(e);f=E(f);var g=0;g=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){g=x[g+x[b>>2]>>2];}b=sa[g|0](b,c,d,e,f)|0;a=Pa(20);x[a>>2]=14896;g=x[b+8>>2];x[a+4>>2]=x[b+4>>2];x[a+8>>2]=g;g=x[b+16>>2];x[a+12>>2]=x[b+12>>2];x[a+16>>2]=g;return a|0}function fd(a,b){var c=0,d=0,e=0;c=y[a|0];a:{if(!c){break a}while(1){d=y[b|0];if(!(!d|(c|0)!=(d|0)&((c-65>>>0<26?c|32:c)|0)!=((d-65>>>0<26?d|32:d)|0))){b=b+1|0;c=y[a+1|0];a=a+1|0;if(c){continue}break a}break}e=c;}a=e&255;e=a-65>>>0<26?a|32:a;a=y[b|0];return e-(a-65>>>0<26?a|32:a)|0}function Ew(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=qa-16|0;qa=d;f=a;a=x[b+4>>2];b=x[b>>2];if((a-b|0)/12>>>0>c>>>0){b=b+D(c,12)|0;a=y[b+11|0];c=a<<24>>24<0;a=c?x[b+4>>2]:a;e=Mb(a+4|0);x[e>>2]=a;Fa(e+4|0,c?x[b>>2]:b,a);x[d+8>>2]=e;a=U(21472,d+8|0)|0;}else {a=1;}x[f>>2]=a;qa=d+16|0;}function Oo(a){a=a|0;var b=0,c=0;x[a+4>>2]=18892;x[a>>2]=18788;b=x[a+8>>2];if(b){while(1){b=x[a+16>>2]+((c^-1)+b<<4)|0;sa[x[x[b>>2]>>2]](b)|0;b=x[a+8>>2];c=c+1|0;if(b>>>0>c>>>0){continue}break}}x[a+8>>2]=0;b=x[a+16>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Bg(a){a=a|0;var b=0,c=0;x[a+4>>2]=13344;x[a>>2]=12892;b=x[a+8>>2];if(b){while(1){b=x[a+16>>2]+((c^-1)+b<<4)|0;sa[x[x[b>>2]>>2]](b)|0;b=x[a+8>>2];c=c+1|0;if(b>>>0>c>>>0){continue}break}}x[a+8>>2]=0;b=x[a+16>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function el(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=Ea(20);e=x[c>>2];a=x[a>>2];x[d+4>>2]=1080;x[d>>2]=a;a:{if(!x[b+8>>2]){c=0;a=0;break a}c=x[b+4>>2];a=Da();a=sa[x[x[a>>2]+12>>2]](a,c+1|0,8064,71)|0;Fa(a,x[b+8>>2],x[b+4>>2]+1|0);}x[d+16>>2]=e;x[d+12>>2]=a;x[d+8>>2]=c;return d|0}function xd(a,b){var c=0,d=0,e=0,f=0,g=0;a:{if(x[a+28>>2]){while(1){d=x[x[a+36>>2]+(c<<2)>>2];g=x[d+4>>2]+8|0;e=x[g+8>>2];f=x[b+8>>2];if((e|0)==(f|0)){break a}if(!(!f|(!e|x[g+4>>2]!=x[b+4>>2]))){if(!Oa(e,f)){break a}}c=c+1|0;if(c>>>0>2]){continue}break}}d=0;}return d}function Dc(a,b){var c=0,d=0,e=0,f=0,g=0;a:{if(x[a+12>>2]){while(1){d=x[x[a+20>>2]+(c<<2)>>2];g=x[d+4>>2]+8|0;e=x[g+8>>2];f=x[b+8>>2];if((e|0)==(f|0)){break a}if(!(!f|(!e|x[g+4>>2]!=x[b+4>>2]))){if(!Oa(e,f)){break a}}c=c+1|0;if(c>>>0>2]){continue}break}}d=0;}return d}function Ko(a){a=a|0;var b=0,c=0;x[a+4>>2]=18892;x[a>>2]=18788;b=x[a+8>>2];if(b){while(1){b=x[a+16>>2]+((c^-1)+b<<4)|0;sa[x[x[b>>2]>>2]](b)|0;b=x[a+8>>2];c=c+1|0;if(b>>>0>c>>>0){continue}break}}x[a+8>>2]=0;b=x[a+16>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Uc(a,b){var c=0,d=0,e=0,f=0,g=0;f=x[a+36>>2];if(f){while(1){g=x[x[a+44>>2]+(c<<2)>>2]+8|0;d=x[g+8>>2];e=x[b+8>>2];if((d|0)==(e|0)){return c}a:{if(!e|(!d|x[g+4>>2]!=x[b+4>>2])){break a}if(Oa(d,e)){break a}return c}c=c+1|0;if((f|0)!=(c|0)){continue}break}}return -1}function Lg(a,b){var c=0,d=0,e=0,f=0,g=0;f=x[a+20>>2];if(f){while(1){g=x[x[a+28>>2]+(c<<2)>>2]+8|0;d=x[g+8>>2];e=x[b+8>>2];if((d|0)==(e|0)){return c}a:{if(!e|(!d|x[g+4>>2]!=x[b+4>>2])){break a}if(Oa(d,e)){break a}return c}c=c+1|0;if((f|0)!=(c|0)){continue}break}}return -1}function gi(a){var b=0,c=0,d=0;b=x[a+40>>2];c=sa[b|0](a,0,0,y[a|0]&128?x[a+20>>2]==x[a+28>>2]?1:2:1)|0;b=ra;a:{if((b|0)<0){break a}d=x[a+8>>2];if(d){a=a+4|0;}else {d=x[a+28>>2];if(!d){break a}a=a+20|0;}a=x[a>>2]-d|0;c=a+c|0;b=(a>>31)+b|0;b=a>>>0>c>>>0?b+1|0:b;}ra=b;return c}function ze(a,b){var c=0,d=0,e=0,f=0,g=0;a:{if(x[a+104>>2]){while(1){d=x[x[a+112>>2]+(c<<2)>>2];g=d+4|0;e=x[g+8>>2];f=x[b+8>>2];if((e|0)==(f|0)){break a}if(!(!f|(!e|x[g+4>>2]!=x[b+4>>2]))){if(!Oa(e,f)){break a}}c=c+1|0;if(c>>>0>2]){continue}break}}d=0;}return d}function ye(a,b){var c=0,d=0,e=0,f=0,g=0;a:{if(x[a+120>>2]){while(1){d=x[x[a+128>>2]+(c<<2)>>2];g=d+4|0;e=x[g+8>>2];f=x[b+8>>2];if((e|0)==(f|0)){break a}if(!(!f|(!e|x[g+4>>2]!=x[b+4>>2]))){if(!Oa(e,f)){break a}}c=c+1|0;if(c>>>0>2]){continue}break}}d=0;}return d}function xe(a,b){var c=0,d=0,e=0,f=0,g=0;a:{if(x[a+136>>2]){while(1){d=x[x[a+144>>2]+(c<<2)>>2];g=d+4|0;e=x[g+8>>2];f=x[b+8>>2];if((e|0)==(f|0)){break a}if(!(!f|(!e|x[g+4>>2]!=x[b+4>>2]))){if(!Oa(e,f)){break a}}c=c+1|0;if(c>>>0>2]){continue}break}}d=0;}return d}function xc(a,b){var c=0,d=0,e=0,f=0,g=0;a:{if(x[a+88>>2]){while(1){d=x[x[a+96>>2]+(c<<2)>>2];g=d+36|0;e=x[g+8>>2];f=x[b+8>>2];if((e|0)==(f|0)){break a}if(!(!f|(!e|x[g+4>>2]!=x[b+4>>2]))){if(!Oa(e,f)){break a}}c=c+1|0;if(c>>>0>2]){continue}break}}d=0;}return d}function ud(a,b){var c=0,d=0,e=0,f=0,g=0;a:{if(x[a+36>>2]){while(1){d=x[x[a+44>>2]+(c<<2)>>2];g=d+8|0;e=x[g+8>>2];f=x[b+8>>2];if((e|0)==(f|0)){break a}if(!(!f|(!e|x[g+4>>2]!=x[b+4>>2]))){if(!Oa(e,f)){break a}}c=c+1|0;if(c>>>0>2]){continue}break}}d=0;}return d}function Tc(a,b){var c=0,d=0,e=0,f=0,g=0;a:{if(x[a+52>>2]){while(1){d=x[x[a+60>>2]+(c<<2)>>2];g=d+4|0;e=x[g+8>>2];f=x[b+8>>2];if((e|0)==(f|0)){break a}if(!(!f|(!e|x[g+4>>2]!=x[b+4>>2]))){if(!Oa(e,f)){break a}}c=c+1|0;if(c>>>0>2]){continue}break}}d=0;}return d}function Ld(a,b){var c=0,d=0;x[a+4>>2]=1080;x[a>>2]=14940;a:{if(!x[b+8>>2]){x[a+8>>2]=0;x[a+12>>2]=0;break a}x[a+8>>2]=x[b+4>>2];c=x[b+4>>2];d=Da();c=sa[x[x[d>>2]+12>>2]](d,c+1|0,8064,71)|0;x[a+12>>2]=c;Fa(c,x[b+8>>2],x[b+4>>2]+1|0);}v[a+20|0]=0;x[a+16>>2]=0;return a}function Kg(a,b){var c=0,d=0,e=0,f=0,g=0;a:{if(x[a+72>>2]){while(1){d=x[x[a+80>>2]+(c<<2)>>2];g=d+4|0;e=x[g+8>>2];f=x[b+8>>2];if((e|0)==(f|0)){break a}if(!(!f|(!e|x[g+4>>2]!=x[b+4>>2]))){if(!Oa(e,f)){break a}}c=c+1|0;if(c>>>0>2]){continue}break}}d=0;}return d}function $b(a,b){var c=0,d=0,e=0,f=0,g=0;a:{if(x[a+20>>2]){while(1){d=x[x[a+28>>2]+(c<<2)>>2];g=d+8|0;e=x[g+8>>2];f=x[b+8>>2];if((e|0)==(f|0)){break a}if(!(!f|(!e|x[g+4>>2]!=x[b+4>>2]))){if(!Oa(e,f)){break a}}c=c+1|0;if(c>>>0>2]){continue}break}}d=0;}return d}function au(a){a=a|0;var b=0,c=0;x[a>>2]=14468;b=x[a+4>>2];if(b){while(1){b=x[a+12>>2]+D((c^-1)+b|0,12)|0;sa[x[x[b>>2]>>2]](b)|0;b=x[a+4>>2];c=c+1|0;if(b>>>0>c>>>0){continue}break}}x[a+4>>2]=0;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function oe(a,b){a=Ld(a,b);x[a+24>>2]=15708;x[a>>2]=19420;x[a+28>>2]=0;x[a+32>>2]=0;x[a+36>>2]=0;x[a+40>>2]=0;x[a+44>>2]=0;x[a+48>>2]=0;x[a+52>>2]=0;x[a+56>>2]=0;x[a+60>>2]=0;x[a+64>>2]=0;x[a+68>>2]=0;x[a+72>>2]=0;x[a+76>>2]=0;x[a+80>>2]=0;w[a+84>>1]=0;return a}function Ys(a){a=a|0;var b=0,c=0;x[a>>2]=15128;b=x[a+4>>2];if(b){while(1){b=x[a+12>>2]+((c^-1)+b<<4)|0;sa[x[x[b>>2]>>2]](b)|0;b=x[a+4>>2];c=c+1|0;if(b>>>0>c>>>0){continue}break}}x[a+4>>2]=0;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Rs(a){a=a|0;var b=0,c=0;x[a>>2]=15252;b=x[a+4>>2];if(b){while(1){b=x[a+12>>2]+((c^-1)+b<<4)|0;sa[x[x[b>>2]>>2]](b)|0;b=x[a+4>>2];c=c+1|0;if(b>>>0>c>>>0){continue}break}}x[a+4>>2]=0;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Qn(a){a=a|0;var b=0,c=0;x[a>>2]=13344;b=x[a+4>>2];if(b){while(1){b=x[a+12>>2]+((c^-1)+b<<4)|0;sa[x[x[b>>2]>>2]](b)|0;b=x[a+4>>2];c=c+1|0;if(b>>>0>c>>>0){continue}break}}x[a+4>>2]=0;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Pe(a,b,c,d,e,f){var g=0;a=x[a+112>>2];a:{if(f){B[a+28>>2]=c;B[a+24>>2]=b;B[a+20>>2]=e;B[a+16>>2]=b;B[a+4>>2]=c;B[a>>2]=d;g=a+8|0;f=3;break a}B[a+28>>2]=c;B[a+24>>2]=d;B[a+20>>2]=c;B[a+16>>2]=b;B[a+12>>2]=e;B[a+8>>2]=b;g=a;f=1;}B[g>>2]=d;B[a+(f<<2)>>2]=e;}function Jo(a){a=a|0;var b=0,c=0;x[a>>2]=18892;b=x[a+4>>2];if(b){while(1){b=x[a+12>>2]+((c^-1)+b<<4)|0;sa[x[x[b>>2]>>2]](b)|0;b=x[a+4>>2];c=c+1|0;if(b>>>0>c>>>0){continue}break}}x[a+4>>2]=0;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function vm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;b=b+168|0;c=x[b+4>>2];if(c>>>0<2147483632){e=x[b+8>>2];a:{if(c>>>0<=10){v[a+11|0]=c;break a}d=(c|15)+1|0;b=Ea(d);x[a+8>>2]=d|-2147483648;x[a>>2]=b;x[a+4>>2]=c;a=b;}f=Fa(a,e,c)+c|0,g=0,v[f|0]=g;return}O();p();}function gm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;b=b+116|0;c=x[b+4>>2];if(c>>>0<2147483632){e=x[b+8>>2];a:{if(c>>>0<=10){v[a+11|0]=c;break a}d=(c|15)+1|0;b=Ea(d);x[a+8>>2]=d|-2147483648;x[a>>2]=b;x[a+4>>2]=c;a=b;}f=Fa(a,e,c)+c|0,g=0,v[f|0]=g;return}O();p();}function Tk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;b=b+164|0;c=x[b+4>>2];if(c>>>0<2147483632){e=x[b+8>>2];a:{if(c>>>0<=10){v[a+11|0]=c;break a}d=(c|15)+1|0;b=Ea(d);x[a+8>>2]=d|-2147483648;x[a>>2]=b;x[a+4>>2]=c;a=b;}f=Fa(a,e,c)+c|0,g=0,v[f|0]=g;return}O();p();}function Sk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;b=b+176|0;c=x[b+4>>2];if(c>>>0<2147483632){e=x[b+8>>2];a:{if(c>>>0<=10){v[a+11|0]=c;break a}d=(c|15)+1|0;b=Ea(d);x[a+8>>2]=d|-2147483648;x[a>>2]=b;x[a+4>>2]=c;a=b;}f=Fa(a,e,c)+c|0,g=0,v[f|0]=g;return}O();p();}function Rk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;b=b+208|0;c=x[b+4>>2];if(c>>>0<2147483632){e=x[b+8>>2];a:{if(c>>>0<=10){v[a+11|0]=c;break a}d=(c|15)+1|0;b=Ea(d);x[a+8>>2]=d|-2147483648;x[a>>2]=b;x[a+4>>2]=c;a=b;}f=Fa(a,e,c)+c|0,g=0,v[f|0]=g;return}O();p();}function Qk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;b=b+220|0;c=x[b+4>>2];if(c>>>0<2147483632){e=x[b+8>>2];a:{if(c>>>0<=10){v[a+11|0]=c;break a}d=(c|15)+1|0;b=Ea(d);x[a+8>>2]=d|-2147483648;x[a>>2]=b;x[a+4>>2]=c;a=b;}f=Fa(a,e,c)+c|0,g=0,v[f|0]=g;return}O();p();}function Lc(a,b){var c=0,d=0,e=0,f=0;c=qa-16|0;qa=c;a:{if(!b){b=0;break a}d=b;b=G(b);qb(c,d,0,0,0,b+81|0);d=0+x[c+8>>2]|0;b=(x[c+12>>2]^65536)+(16414-b<<16)|0;f=e>>>0>d>>>0?b+1|0:b;e=x[c+4>>2];b=x[c>>2];}x[a>>2]=b;x[a+4>>2]=e;x[a+8>>2]=d;x[a+12>>2]=f;qa=c+16|0;}function $t(a){a=a|0;var b=0,c=0;x[a>>2]=14468;b=x[a+4>>2];if(b){while(1){b=x[a+12>>2]+D((c^-1)+b|0,12)|0;sa[x[x[b>>2]>>2]](b)|0;b=x[a+4>>2];c=c+1|0;if(b>>>0>c>>>0){continue}break}}x[a+4>>2]=0;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function pg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;b=b+36|0;c=x[b+4>>2];if(c>>>0<2147483632){e=x[b+8>>2];a:{if(c>>>0<=10){v[a+11|0]=c;break a}d=(c|15)+1|0;b=Ea(d);x[a+8>>2]=d|-2147483648;x[a>>2]=b;x[a+4>>2]=c;a=b;}f=Fa(a,e,c)+c|0,g=0,v[f|0]=g;return}O();p();}function Jm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;b=b+20|0;c=x[b+4>>2];if(c>>>0<2147483632){e=x[b+8>>2];a:{if(c>>>0<=10){v[a+11|0]=c;break a}d=(c|15)+1|0;b=Ea(d);x[a+8>>2]=d|-2147483648;x[a>>2]=b;x[a+4>>2]=c;a=b;}f=Fa(a,e,c)+c|0,g=0,v[f|0]=g;return}O();p();}function Gm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;b=b+24|0;c=x[b+4>>2];if(c>>>0<2147483632){e=x[b+8>>2];a:{if(c>>>0<=10){v[a+11|0]=c;break a}d=(c|15)+1|0;b=Ea(d);x[a+8>>2]=d|-2147483648;x[a>>2]=b;x[a+4>>2]=c;a=b;}f=Fa(a,e,c)+c|0,g=0,v[f|0]=g;return}O();p();}function wc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;b=b+4|0;c=x[b+4>>2];if(c>>>0<2147483632){e=x[b+8>>2];a:{if(c>>>0<=10){v[a+11|0]=c;break a}d=(c|15)+1|0;b=Ea(d);x[a+8>>2]=d|-2147483648;x[a>>2]=b;x[a+4>>2]=c;a=b;}f=Fa(a,e,c)+c|0,g=0,v[f|0]=g;return}O();p();}function mg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;b=b+8|0;c=x[b+4>>2];if(c>>>0<2147483632){e=x[b+8>>2];a:{if(c>>>0<=10){v[a+11|0]=c;break a}d=(c|15)+1|0;b=Ea(d);x[a+8>>2]=d|-2147483648;x[a>>2]=b;x[a+4>>2]=c;a=b;}f=Fa(a,e,c)+c|0,g=0,v[f|0]=g;return}O();p();}function Xv(a){a=a|0;var b=0,c=0;x[a>>2]=13344;b=x[a+4>>2];if(b){while(1){b=x[a+12>>2]+((c^-1)+b<<4)|0;sa[x[x[b>>2]>>2]](b)|0;b=x[a+4>>2];c=c+1|0;if(b>>>0>c>>>0){continue}break}}x[a+4>>2]=0;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Xs(a){a=a|0;var b=0,c=0;x[a>>2]=15128;b=x[a+4>>2];if(b){while(1){b=x[a+12>>2]+((c^-1)+b<<4)|0;sa[x[x[b>>2]>>2]](b)|0;b=x[a+4>>2];c=c+1|0;if(b>>>0>c>>>0){continue}break}}x[a+4>>2]=0;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Qs(a){a=a|0;var b=0,c=0;x[a>>2]=15252;b=x[a+4>>2];if(b){while(1){b=x[a+12>>2]+((c^-1)+b<<4)|0;sa[x[x[b>>2]>>2]](b)|0;b=x[a+4>>2];c=c+1|0;if(b>>>0>c>>>0){continue}break}}x[a+4>>2]=0;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Ho(a){a=a|0;var b=0,c=0;x[a>>2]=18892;b=x[a+4>>2];if(b){while(1){b=x[a+12>>2]+((c^-1)+b<<4)|0;sa[x[x[b>>2]>>2]](b)|0;b=x[a+4>>2];c=c+1|0;if(b>>>0>c>>>0){continue}break}}x[a+4>>2]=0;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function If(a,b){var c=0,d=0;x[a+4>>2]=1080;x[a>>2]=14248;a:{if(!x[b+8>>2]){x[a+8>>2]=0;x[a+12>>2]=0;break a}x[a+8>>2]=x[b+4>>2];c=x[b+4>>2];d=Da();c=sa[x[x[d>>2]+12>>2]](d,c+1|0,8064,71)|0;x[a+12>>2]=c;Fa(c,x[b+8>>2],x[b+4>>2]+1|0);}x[a+16>>2]=0;return a}function Pf(a){var b=0,c=0;b=x[a+72>>2];x[a+72>>2]=b-1|b;if(x[a+20>>2]!=x[a+28>>2]){sa[x[a+36>>2]](a,0,0)|0;}x[a+28>>2]=0;x[a+16>>2]=0;x[a+20>>2]=0;b=x[a>>2];if(b&4){x[a>>2]=b|32;return -1}c=x[a+44>>2]+x[a+48>>2]|0;x[a+8>>2]=c;x[a+4>>2]=c;return b<<27>>31}function Xt(a,b){a=a|0;b=E(b);var c=E(0),d=E(0),e=E(0),f=E(0),g=E(0);d=B[a+92>>2];e=B[a+104>>2];f=B[a+96>>2];g=B[a+108>>2];c=yb(b);b=zb(b);v[a+88|0]=0;B[a+108>>2]=E(b*f)+E(g*c);B[a+104>>2]=E(b*d)+E(e*c);B[a+96>>2]=E(c*f)-E(g*b);B[a+92>>2]=E(c*d)-E(e*b);}function Yb(a,b,c){var d=0,e=0,f=0,g=0;x[a+112>>2]=b;x[a+116>>2]=c;e=x[a+4>>2];d=x[a+44>>2]-e|0;x[a+120>>2]=d;x[a+124>>2]=d>>31;d=x[a+8>>2];a:{if(!(b|c)){break a}f=d-e|0;g=f>>31;if((c|0)>=(g|0)&b>>>0>=f>>>0|(c|0)>(g|0)){break a}d=b+e|0;}x[a+104>>2]=d;}function Rc(a){a=a|0;var b=0,c=0;x[a+40>>2]=0;x[a+36>>2]=13296;x[a>>2]=19848;b=x[a+48>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+24>>2]=0;x[a+20>>2]=18740;b=x[a+32>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return Qd(a)|0}function qd(a,b){a=If(a,b);x[a+36>>2]=13296;x[a+20>>2]=18740;x[a>>2]=19848;x[a+40>>2]=0;x[a+44>>2]=0;x[a+32>>2]=0;x[a+24>>2]=0;x[a+28>>2]=0;x[a+48>>2]=0;x[a+52>>2]=0;x[a+56>>2]=a;b=x[13606];x[13606]=b+1;x[a+60>>2]=b<<11&134215680;return a}function dn(a){a=a|0;var b=E(0);b=B[a+4>>2];B[a+4>>2]=bE(1)?E(1):b;b=B[a+8>>2];B[a+8>>2]=bE(1)?E(1):b;b=B[a+12>>2];B[a+12>>2]=bE(1)?E(1):b;b=B[a+16>>2];B[a+16>>2]=bE(1)?E(1):b;return a|0}function cn(a,b){a=a|0;b=b|0;var c=0;c=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){c=x[c+x[b>>2]>>2];}b=sa[c|0](b)|0;a=Pa(20);x[a>>2]=14896;c=x[b+8>>2];x[a+4>>2]=x[b+4>>2];x[a+8>>2]=c;c=x[b+16>>2];x[a+12>>2]=x[b+12>>2];x[a+16>>2]=c;return a|0}function To(a){a=a|0;var b=0,c=0;x[a+24>>2]=0;x[a+20>>2]=13296;x[a>>2]=18692;b=x[a+32>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+8>>2]=0;x[a+4>>2]=18740;b=x[a+16>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Om(a,b,c,d,e){a=a|0;b=E(b);c=E(c);d=E(d);e=E(e);var f=0,g=0,h=0;g=x[a+40>>2];a:{if(g){h=x[a+48>>2];while(1){if(Rg(x[(f<<2)+h>>2],b,c,d,e)){a=x[x[a+32>>2]+(f<<2)>>2];break a}f=f+1|0;if((g|0)!=(f|0)){continue}break}}a=0;}return a|0}function Vd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=E(0);d=qa-16|0;qa=d;e=d+4|0;x[e+8>>2]=c;x[e+4>>2]=b;x[e>>2]=13548;b=a+12|0;a:{b:{if(Wd(b,e)){a=Wd(b,d+4|0);f=E(0);if(!a){break a}a=a+16|0;break b}a=a+8|0;}f=B[a>>2];}qa=d+16|0;return E(f)}function Vp(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;d=x[a+24>>2];if(!d){return 0}e=x[a+32>>2];a:{while(1){if(x[(c<<2)+e>>2]==(b|0)){break a}c=c+1|0;if((d|0)!=(c|0)){continue}break}return 0}if((c|0)==-1){return 0}return x[x[a+48>>2]+(c<<2)>>2]}function Gb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=qa-16|0;qa=c;e=c+4|0;sa[x[a>>2]](e,b);b=y[c+15|0];f=b<<24>>24;a=(f|0)<0;b=a?x[c+8>>2]:b;d=Mb(b+4|0);x[d>>2]=b;g=x[c+4>>2];Fa(d+4|0,a?g:e,b);if((f|0)<0){Ja(g);}qa=c+16|0;return d|0}function ab(a,b,c){var d=0,e=0,f=0;if(!c){return 0}d=y[a|0];a:{if(!d){break a}while(1){b:{e=y[b|0];if((e|0)!=(d|0)|!e){break b}c=c-1|0;if(!c){break b}b=b+1|0;d=y[a+1|0];a=a+1|0;if(d){continue}break a}break}f=d;}return (f&255)-y[b|0]|0}function Ze(a){var b=0,c=0;b=x[a+4>>2];while(1){if(b){c=x[b>>2];Ze(b);Ja(b);b=c;if(b){continue}}break}b=x[a+16>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,5555,135);}b=x[a+28>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,5555,139);}return a}function So(a){a=a|0;var b=0,c=0;x[a+24>>2]=0;x[a+20>>2]=13296;x[a>>2]=18692;b=x[a+32>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}x[a+8>>2]=0;x[a+4>>2]=18740;b=x[a+16>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function fb(a,b,c){var d=0;a=a+4|0;a:{b:{if(!b){while(1){a=x[a>>2];if(!a){break a}if(x[a+28>>2]){continue}break b}}while(1){a=x[a>>2];if(!a){break a}d=x[a+28>>2];if(d){d=fd(d,b);}else {d=-1;}if(d){continue}break}}c=x[a+20>>2];}return c}function Xa(a,b,c){var d=0;a=a+4|0;a:{b:{if(!b){while(1){a=x[a>>2];if(!a){break a}if(x[a+28>>2]){continue}break b}}while(1){a=x[a>>2];if(!a){break a}d=x[a+28>>2];if(d){d=fd(d,b);}else {d=-1;}if(d){continue}break}}c=x[a+16>>2];}return c}function Ia(a,b,c){var d=0;a=a+4|0;a:{b:{if(!b){while(1){a=x[a>>2];if(!a){break a}if(x[a+28>>2]){continue}break b}}while(1){a=x[a>>2];if(!a){break a}d=x[a+28>>2];if(d){d=fd(d,b);}else {d=-1;}if(d){continue}break}}c=B[a+24>>2];}return c}function wn(a,b,c){a=a|0;b=b|0;c=c|0;a:{b:{c:{switch(c|0){case 0:a=a+28|0;break b;case 1:a=a+32|0;break b;case 2:a=a+36|0;break b;case 3:a=a+40|0;break b;case 4:a=a+44|0;break b;case 5:break c;default:break a}}a=a+48|0;}x[a>>2]=b;}}function Nb(a,b,c){var d=0,e=0,f=0,g=0,h=0;d=(x[a+4>>2]/(c|0)|0)-2|0;if(d){h=x[a+12>>2];a=0;e=d;while(1){f=e>>>1|0;e=f+1|0;g=B[(D(e,c)<<2)+h>>2]<=b;a=g?e:a;d=g?d:f;e=a+d|0;if((a|0)!=(d|0)){continue}break}c=D(a+1|0,c);}return c}function dj(a,b){a=a|0;b=E(b);var c=0,d=0,e=0;c=x[a+72>>2];e=y[c+28|0];v[c+28|0]=1;d=x[a+44>>2];if(d){c=0;while(1){if(x[x[a+52>>2]+(c<<2)>>2]){ag(a,c,b);}c=c+1|0;if((d|0)!=(c|0)){continue}break}c=x[a+72>>2];}v[c+28|0]=e;ic(c);}function Ue(a,b){a=Ld(a,b);x[a+24>>2]=15708;x[a>>2]=16216;x[a+28>>2]=0;x[a+32>>2]=0;x[a+36>>2]=0;x[a+40>>2]=0;x[a+44>>2]=0;x[a+48>>2]=0;x[a+52>>2]=0;x[a+56>>2]=0;x[a+60>>2]=0;x[a+64>>2]=0;x[a+68>>2]=0;x[a+72>>2]=0;return a}function ie(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=E(c);d=E(d);e=E(e);f=E(f);g=E(g);h=E(h);i=E(i);j=E(j);a=x[a+32>>2]+(b<<5)|0;B[a>>2]=c;B[a+4>>2]=d;B[a+8>>2]=e;B[a+12>>2]=f;B[a+16>>2]=g;B[a+20>>2]=h;B[a+24>>2]=i;B[a+28>>2]=j;}function Di(a){a=a|0;var b=0,c=0,d=0,e=0;if(a){b=x[a>>2];if(b){c=b;d=x[a+4>>2];if((d|0)!=(b|0)){while(1){c=d-12|0;e=x[c>>2];if(e){x[d-8>>2]=e;Ja(e);}d=c;if((d|0)!=(b|0)){continue}break}c=x[a>>2];}x[a+4>>2]=b;Ja(c);}Ja(a);}}function Uw(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;e=c>>>16|0;f=a>>>16|0;j=D(e,f);g=c&65535;h=a&65535;i=D(g,h);f=(i>>>16|0)+D(f,g)|0;e=(f&65535)+D(e,h)|0;ra=(D(b,c)+j|0)+D(a,d)+(f>>>16)+(e>>>16)|0;return i&65535|e<<16}function Ta(a,b){var c=0;a=a+4|0;a:{if(!b){while(1){a=x[a>>2];if(!a){return 0}if(x[a+28>>2]){continue}break a}}while(1){a=x[a>>2];if(!a){return 0}c=x[a+28>>2];if(c){c=fd(c,b);}else {c=-1;}if(c){continue}break}}return a}function wo(a){a=a|0;var b=0,c=0;x[a+68>>2]=1080;x[a>>2]=19164;b=x[a+76>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}x[a+8>>2]=1080;b=x[a+16>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}return a|0}function $r(a){a=a|0;var b=0,c=0;x[a+24>>2]=1080;x[a>>2]=15860;b=x[a+32>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}x[a+8>>2]=1080;b=x[a+16>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}return a|0}function Vf(a,b){var c=0,d=0,e=0,f=0,g=0;c=x[a+4>>2]-2|0;if(!c){return 1}g=x[a+12>>2];a=0;d=c;while(1){e=d>>>1|0;d=e+1|0;f=B[(d<<2)+g>>2]<=b;a=f?d:a;c=f?c:e;d=a+c|0;if((a|0)!=(c|0)){continue}break}return a+1|0}function Mf(a,b,c){var d=0;d=x[a+16>>2];if(!d){x[a+36>>2]=1;x[a+24>>2]=c;x[a+16>>2]=b;return}a:{if((b|0)==(d|0)){if(x[a+24>>2]!=2){break a}x[a+24>>2]=c;return}v[a+54|0]=1;x[a+24>>2]=2;x[a+36>>2]=x[a+36>>2]+1;}}function $c(a,b){var c=0;x[a>>2]=0;x[a+4>>2]=0;x[a+24>>2]=0;x[a+28>>2]=0;x[a+16>>2]=0;x[a+20>>2]=0;x[a+8>>2]=0;x[a+12>>2]=0;if(b){while(1){c=b;b=c+1|0;if((y[c|0]-1&255)>>>0<32){continue}break}_c(a,c);}return a}function Jw(a){a=a|0;var b=0,c=0,d=0;if(a){b=x[a>>2];if(b){c=b;d=x[a+4>>2];if((b|0)!=(d|0)){while(1){c=d-12|0;if(v[d-1|0]<0){Ja(x[c>>2]);}d=c;if((d|0)!=(b|0)){continue}break}c=x[a>>2];}x[a+4>>2]=b;Ja(c);}Ja(a);}}function pk(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=E(d);e=E(e);f=E(f);g=E(g);h=E(h);i=E(i);j=E(j);k=E(k);var l=0;l=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){l=x[l+x[b>>2]>>2];}sa[l|0](b,c,d,e,f,g,h,i,j,k);}function vo(a){a=a|0;var b=0,c=0;x[a+68>>2]=1080;x[a>>2]=19164;b=x[a+76>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}x[a+8>>2]=1080;b=x[a+16>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}La(a);}function _r(a){a=a|0;var b=0,c=0;x[a+24>>2]=1080;x[a>>2]=15860;b=x[a+32>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}x[a+8>>2]=1080;b=x[a+16>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}La(a);}function qc(a,b,c,d,e){var f=0;f=qa-256|0;qa=f;if(!(e&73728|(c|0)<=(d|0))){d=c-d|0;c=d>>>0<256;Ha(f,b&255,c?d:256);if(!c){while(1){Jc(a,f,256);d=d-256|0;if(d>>>0>255){continue}break}}Jc(a,f,d);}qa=f+256|0;}function Pq(a){a=a|0;var b=E(0),c=E(0);b=B[a+52>>2];a:{if(y[a+36|0]){c=E(B[a+56>>2]-b);if(c==E(0)){break a}return E(E(Sb(B[a+72>>2],c)+B[a+52>>2]))}b=E(B[a+72>>2]+b);c=B[a+56>>2];b=b>2]+D(b,24)|0;b=x[c+4>>2];x[a>>2]=x[c>>2];x[a+4>>2]=b;b=x[c+20>>2];x[a+16>>2]=x[c+16>>2];x[a+20>>2]=b;b=x[c+12>>2];x[a+8>>2]=x[c+8>>2];x[a+12>>2]=b;return 1}function _h(a){var b=0,c=0,d=0;d=x[a>>2];while(1){c=v[d|0];if(c-48>>>0<10){d=d+1|0;x[a>>2]=d;if(b>>>0<=214748364){c=c-48|0;b=D(b,10);b=(c|0)>(b^2147483647)?-1:c+b|0;}else {b=-1;}continue}break}return b}function eg(a){a=a|0;var b=0,c=0,d=0;b=x[a+72>>2];d=y[b+28|0];v[b+28|0]=1;c=x[a+44>>2];if(c){b=0;while(1){dg(a,b);b=b+1|0;if((c|0)!=(b|0)){continue}break}b=x[a+72>>2];}x[a+44>>2]=0;v[b+28|0]=d;ic(b);}function Gh(a){a=a|0;var b=0;b=x[a+4>>2];B[a+32>>2]=B[b+28>>2];B[a+36>>2]=B[b+32>>2];B[a+40>>2]=B[b+36>>2];B[a+44>>2]=B[b+40>>2];B[a+48>>2]=B[b+44>>2];B[a+52>>2]=B[b+48>>2];B[a+56>>2]=B[b+52>>2];}function uc(a,b){var c=0,d=0;x[a>>2]=1080;if(!b){x[a+4>>2]=0;x[a+8>>2]=0;return a}c=Ga(b);x[a+4>>2]=c;d=Da();c=sa[x[x[d>>2]+12>>2]](d,c+1|0,8064,57)|0;x[a+8>>2]=c;Fa(c,b,x[a+4>>2]+1|0);return a}function cf(a,b){a=Ld(a,b);x[a+24>>2]=15708;x[a>>2]=15652;x[a+52>>2]=1065353216;x[a+56>>2]=0;v[a+50|0]=0;w[a+48>>1]=0;x[a+44>>2]=1;x[a+28>>2]=0;x[a+32>>2]=0;x[a+36>>2]=0;x[a+40>>2]=0;return a}function Xu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=qa-16|0;qa=e;a=ca(x[a+60>>2],b|0,c|0,d&255,e+8|0)|0;if(a){x[13623]=a;a=-1;}else {a=0;}qa=e+16|0;ra=a?-1:x[e+12>>2];return (a?-1:x[e+8>>2])|0}function _u(a){a=a|0;var b=0,c=0;x[a+12>>2]=13664;x[a>>2]=13532;b=x[a+16>>2];if(b){while(1){c=x[b+20>>2];sa[x[x[b>>2]+4>>2]](b);b=c;if(b){continue}break}}x[a+16>>2]=0;x[a+20>>2]=0;return a|0}function pi(a){var b=0;b=x[a+72>>2];x[a+72>>2]=b-1|b;b=x[a>>2];if(b&8){x[a>>2]=b|32;return -1}x[a+4>>2]=0;x[a+8>>2]=0;b=x[a+44>>2];x[a+28>>2]=b;x[a+20>>2]=b;x[a+16>>2]=b+x[a+48>>2];return 0}function Uh(a,b,c,d){a:{if(!a){break a}b:{switch(b+2|0){case 0:v[a|0]=c;return;case 1:w[a>>1]=c;return;case 2:case 3:x[a>>2]=c;return;case 5:break b;default:break a}}x[a>>2]=c;x[a+4>>2]=d;}}function Sf(a,b,c,d,e,f,g,h,i){var j=0;j=qa-16|0;qa=j;Ib(j,b,c,d,e,f,g,h,i^-2147483648);d=x[j>>2];c=x[j+4>>2];b=x[j+12>>2];x[a+8>>2]=x[j+8>>2];x[a+12>>2]=b;x[a>>2]=d;x[a+4>>2]=c;qa=j+16|0;}function Yt(a,b){a=a|0;b=E(b);var c=E(0);c=E(b-E(B[a+40>>2]-B[a+52>>2]));b=zb(c);c=yb(c);return E(E(Va(E(E(c*B[a+104>>2])+E(b*B[a+108>>2])),E(E(c*B[a+92>>2])+E(b*B[a+96>>2])))*B[3979]))}function Vu(a){a=a|0;var b=0,c=0;x[a+12>>2]=13664;x[a>>2]=13532;b=x[a+16>>2];if(b){while(1){c=x[b+20>>2];sa[x[x[b>>2]+4>>2]](b);b=c;if(b){continue}break}}x[a+16>>2]=0;x[a+20>>2]=0;La(a);}function Oa(a,b){var c=0,d=0;c=y[a|0];d=y[b|0];a:{if(!c|(c|0)!=(d|0)){break a}while(1){d=y[b+1|0];c=y[a+1|0];if(!c){break a}b=b+1|0;a=a+1|0;if((c|0)==(d|0)){continue}break}}return c-d|0}function Al(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=E(c);d=E(d);e=E(e);f=E(f);g=E(g);h=E(h);i=E(i);var j=0;j=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){j=x[j+x[b>>2]>>2];}sa[j|0](b,c,d,e,f,g,h,i);}function $e(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=E(c);d=E(d);e=E(e);f=f|0;g=g|0;h=h|0;a=x[a+32>>2]+D(b,24)|0;B[a>>2]=c;B[a+4>>2]=d;B[a+8>>2]=e;B[a+12>>2]=f|0;B[a+16>>2]=g>>>0;B[a+20>>2]=h>>>0;}function yl(a,b,c,d){a=a|0;b=b|0;c=E(c);d=E(d);var e=0;e=qa-16|0;qa=e;sa[x[a>>2]](e+4|0,b,c,d);a=Ea(12);x[a>>2]=x[e+4>>2];x[a+4>>2]=x[e+8>>2];x[a+8>>2]=x[e+12>>2];qa=e+16|0;return a|0}function Qu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=x[a+84>>2];d=c+256|0;f=ai(e,d);d=f?f-e|0:d;c=c>>>0>d>>>0?d:c;Fa(b,e,c);b=e+d|0;x[a+84>>2]=b;x[a+8>>2]=b;x[a+4>>2]=c+e;return c|0}function Mh(a,b,c){x[a+36>>2]=0;x[a+32>>2]=0;x[a+24>>2]=0;x[a+28>>2]=0;x[a+20>>2]=14092;x[a+16>>2]=0;x[a+8>>2]=0;x[a+12>>2]=0;x[a+4>>2]=14028;x[a>>2]=13848;Oh(a,b,c,12639,0);return a}function jn(a,b,c,d,e){a=a|0;b=E(b);c=E(c);d=E(d);e=E(e);var f=0;f=qa-16|0;qa=f;B[f+12>>2]=b;B[f+8>>2]=c;B[f+4>>2]=d;B[f>>2]=e;a=sa[a|0](f+12|0,f+8|0,f+4|0,f)|0;qa=f+16|0;return a|0}function Zt(a,b){a=a|0;b=E(b);var c=E(0);c=zb(b);b=yb(b);return E(E(E(E(Va(E(E(c*B[a+92>>2])-E(b*B[a+104>>2])),E(E(b*B[a+108>>2])-E(c*B[a+96>>2])))*B[3979])+B[a+40>>2])-B[a+52>>2]))}function Zj(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=E(d);e=E(e);f=E(f);g=g|0;h=h|0;i=i|0;var j=0;j=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){j=x[j+x[b>>2]>>2];}sa[j|0](b,c,d,e,f,g,h,i);}function yw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[b+4>>2];b=x[b>>2];if(e-b>>2>>>0>c>>>0){x[d+8>>2]=x[b+(c<<2)>>2];b=U(22120,d+8|0)|0;}else {b=1;}x[a>>2]=b;qa=d+16|0;}function yd(a){var b=0,c=0,d=0;d=x[a+4>>2];if(d){while(1){b=x[x[a+12>>2]+(c<<2)>>2];if(y[b+117|0]){if(y[b+116|0]){yd(b+16|0);}v[b+116|0]=0;}c=c+1|0;if((d|0)!=(c|0)){continue}break}}}function ww(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[b+4>>2];b=x[b>>2];if(e-b>>2>>>0>c>>>0){x[d+8>>2]=x[b+(c<<2)>>2];b=U(22568,d+8|0)|0;}else {b=1;}x[a>>2]=b;qa=d+16|0;}function uw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[b+4>>2];b=x[b>>2];if(e-b>>2>>>0>c>>>0){x[d+8>>2]=x[b+(c<<2)>>2];b=U(22904,d+8|0)|0;}else {b=1;}x[a>>2]=b;qa=d+16|0;}function sw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[b+4>>2];b=x[b>>2];if(e-b>>2>>>0>c>>>0){x[d+8>>2]=x[b+(c<<2)>>2];b=U(23224,d+8|0)|0;}else {b=1;}x[a>>2]=b;qa=d+16|0;}function pw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[b+4>>2];b=x[b>>2];if(e-b>>2>>>0>c>>>0){x[d+8>>2]=x[b+(c<<2)>>2];b=U(23564,d+8|0)|0;}else {b=1;}x[a>>2]=b;qa=d+16|0;}function nw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[b+4>>2];b=x[b>>2];if(e-b>>2>>>0>c>>>0){x[d+8>>2]=x[b+(c<<2)>>2];b=U(23896,d+8|0)|0;}else {b=1;}x[a>>2]=b;qa=d+16|0;}function lw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[b+4>>2];b=x[b>>2];if(e-b>>2>>>0>c>>>0){x[d+8>>2]=x[b+(c<<2)>>2];b=U(24216,d+8|0)|0;}else {b=1;}x[a>>2]=b;qa=d+16|0;}function jw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[b+4>>2];b=x[b>>2];if(e-b>>2>>>0>c>>>0){x[d+8>>2]=x[b+(c<<2)>>2];b=U(24556,d+8|0)|0;}else {b=1;}x[a>>2]=b;qa=d+16|0;}function hw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[b+4>>2];b=x[b>>2];if(e-b>>2>>>0>c>>>0){x[d+8>>2]=x[b+(c<<2)>>2];b=U(24876,d+8|0)|0;}else {b=1;}x[a>>2]=b;qa=d+16|0;}function ew(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[b+4>>2];b=x[b>>2];if(e-b>>2>>>0>c>>>0){x[d+8>>2]=x[b+(c<<2)>>2];b=U(25236,d+8|0)|0;}else {b=1;}x[a>>2]=b;qa=d+16|0;}function cw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[b+4>>2];b=x[b>>2];if(e-b>>2>>>0>c>>>0){x[d+8>>2]=x[b+(c<<2)>>2];b=U(25596,d+8|0)|0;}else {b=1;}x[a>>2]=b;qa=d+16|0;}function aw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[b+4>>2];b=x[b>>2];if(e-b>>2>>>0>c>>>0){x[d+8>>2]=x[b+(c<<2)>>2];b=U(25956,d+8|0)|0;}else {b=1;}x[a>>2]=b;qa=d+16|0;}function _v(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[b+4>>2];b=x[b>>2];if(e-b>>2>>>0>c>>>0){x[d+8>>2]=x[b+(c<<2)>>2];b=U(26344,d+8|0)|0;}else {b=1;}x[a>>2]=b;qa=d+16|0;}function Yv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[b+4>>2];b=x[b>>2];if(e-b>>2>>>0>c>>>0){x[d+8>>2]=x[b+(c<<2)>>2];b=U(26716,d+8|0)|0;}else {b=1;}x[a>>2]=b;qa=d+16|0;}function Vv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[b+4>>2];b=x[b>>2];if(e-b>>2>>>0>c>>>0){x[d+8>>2]=x[b+(c<<2)>>2];b=U(27112,d+8|0)|0;}else {b=1;}x[a>>2]=b;qa=d+16|0;}function Tv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[b+4>>2];b=x[b>>2];if(e-b>>2>>>0>c>>>0){x[d+8>>2]=x[b+(c<<2)>>2];b=U(27492,d+8|0)|0;}else {b=1;}x[a>>2]=b;qa=d+16|0;}function Rv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[b+4>>2];b=x[b>>2];if(e-b>>2>>>0>c>>>0){x[d+8>>2]=x[b+(c<<2)>>2];b=U(27844,d+8|0)|0;}else {b=1;}x[a>>2]=b;qa=d+16|0;}function Nw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[b+4>>2];b=x[b>>2];if(e-b>>1>>>0>c>>>0){x[d+8>>2]=z[b+(c<<1)>>1];b=U(53108,d+8|0)|0;}else {b=1;}x[a>>2]=b;qa=d+16|0;}function Ii(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[b+4>>2];b=x[b>>2];if(e-b>>2>>>0>c>>>0){B[d+8>>2]=B[b+(c<<2)>>2];b=U(53192,d+8|0)|0;}else {b=1;}x[a>>2]=b;qa=d+16|0;}function Bw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[b+4>>2];b=x[b>>2];if(e-b>>2>>>0>c>>>0){x[d+8>>2]=x[b+(c<<2)>>2];b=U(21800,d+8|0)|0;}else {b=1;}x[a>>2]=b;qa=d+16|0;}function Vq(a,b){a=a|0;b=b|0;var c=E(0),d=E(0);c=yb(B[a+28>>2]);d=zb(B[a+28>>2]);return E(E(Va(E(E(c*B[b+104>>2])+E(d*B[b+108>>2])),E(E(c*B[b+92>>2])+E(d*B[b+96>>2])))*B[3979]))}function bj(a,b){a=a|0;b=b|0;var c=0,d=E(0);c=Pa(32);d=B[a>>2];x[c+28>>2]=b;x[c+24>>2]=0;x[c+16>>2]=0;x[c+20>>2]=0;B[c+12>>2]=d;x[c+4>>2]=0;x[c+8>>2]=0;x[c>>2]=19940;return c|0}function Ph(a,b){var c=0;a:{if(!b){break a}b=Qb(b,52908);if(!b|x[b+8>>2]&(x[a+8>>2]^-1)){break a}if(!gb(x[a+12>>2],x[b+12>>2],0)){break a}c=gb(x[a+16>>2],x[b+16>>2],0);}return c}function Mc(a){var b=0,c=0;b=x[13402];c=a+7&-8;a=b+c|0;a:{if(a>>>0<=b>>>0?c:0){break a}if(a>>>0>ta()<<16>>>0){if(!(ea(a|0)|0)){break a}}x[13402]=a;return b}x[13623]=48;return -1}function Pn(a,b,c){a=a|0;b=b|0;c=c|0;var d=E(0),e=E(0),f=E(0),g=0,h=E(0);f=B[a+8>>2];d=B[a+4>>2];e=E(-d);g=b,h=E(Xe(e,d)+B[b>>2]),B[g>>2]=h;g=c,h=E(Xe(e,f)+B[c>>2]),B[g>>2]=h;}function Ji(a,b,c,d){a=a|0;b=b|0;c=c|0;d=E(d);var e=0,f=0;e=qa-16|0;qa=e;f=x[a+4>>2];b=(f>>1)+b|0;a=x[a>>2];a=f&1?x[x[b>>2]+a>>2]:a;B[e+12>>2]=d;sa[a|0](b,c,e+12|0);qa=e+16|0;}function tb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=qa-16|0;qa=e;f=x[a+4>>2];b=(f>>1)+b|0;a=x[a>>2];a=f&1?x[x[b>>2]+a>>2]:a;x[e+12>>2]=d;sa[a|0](b,c,e+12|0);qa=e+16|0;}function bg(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=E(d);e=E(e);f=E(f);g=E(g);h=E(h);var i=0;i=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){i=x[i+x[b>>2]>>2];}sa[i|0](b,c,d,e,f,g,h);}function Pw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=qa-16|0;qa=e;f=x[a+4>>2];b=(f>>1)+b|0;a=x[a>>2];a=f&1?x[x[b>>2]+a>>2]:a;w[e+14>>1]=d;sa[a|0](b,c,e+14|0);qa=e+16|0;}function Ev(a,b,c){a=a|0;b=b|0;c=c|0;a=x[a>>2]+D(b,20)|0;b=x[c+4>>2];x[a>>2]=x[c>>2];x[a+4>>2]=b;x[a+16>>2]=x[c+16>>2];b=x[c+12>>2];x[a+8>>2]=x[c+8>>2];x[a+12>>2]=b;return 1}function pv(){var a=0;a=Da();if(a){sa[x[x[a>>2]+4>>2]](a);}a=x[13621];if(a){Ja(a);x[13621]=0;}x[13622]=0;a=x[13607];if(a){Ja(a);x[13607]=0;}a=x[13609];if(a){Ja(a);x[13609]=0;}}function ig(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=qa-16|0;qa=d;sa[x[a>>2]](d+4|0,b,c);a=Ea(12);x[a>>2]=x[d+4>>2];x[a+4>>2]=x[d+8>>2];x[a+8>>2]=x[d+12>>2];qa=d+16|0;return a|0}function _p(a){a=a|0;var b=0,c=0;x[a>>2]=12736;b=x[a+4>>2];if(b){while(1){c=x[b+12>>2];sa[x[x[b>>2]+4>>2]](b);b=c;if(b){continue}break}}x[a+4>>2]=0;x[a+8>>2]=0;return a|0}function Su(a){a=a|0;var b=0,c=0;x[a>>2]=13664;b=x[a+4>>2];if(b){while(1){c=x[b+20>>2];sa[x[x[b>>2]+4>>2]](b);b=c;if(b){continue}break}}x[a+4>>2]=0;x[a+8>>2]=0;return a|0}function nf(a,b,c){x[a+32>>2]=1065353216;x[a+36>>2]=0;x[a+12>>2]=0;x[a+16>>2]=0;B[a+8>>2]=b;x[a+4>>2]=c;x[a+24>>2]=0;x[a+28>>2]=0;x[a+20>>2]=1080;x[a>>2]=15308;return a}function zc(a,b){a=a|0;b=b|0;var c=0;c=x[a+224>>2];if(!(!c|x[c+64>>2]!=x[b+4>>2])){x[a+224>>2]=0;x[a+228>>2]=0;x[a+196>>2]=0;x[a+164>>2]=0;x[a+180>>2]=0;x[a+132>>2]=0;}}function Rr(){var a=0,b=0;b=Uw(x[13752],x[13753],1284865837,1481765933);a=ra;b=b+1|0;a=b?a:a+1|0;x[13752]=b;x[13753]=a;return E(E(E(a>>>1|0)*E(4.656612873077393e-10)))}function Dv(a,b){a=a|0;b=E(b);if(b<=E(.5)){return E(E(Fd(E(b+b),E(x[a+4>>2]))*E(.5)))}b=E(b+E(-1));return E(E(E(Fd(E(b+b),E(x[a+4>>2]))/(v[a+4|0]&1?E(2):E(-2)))+E(1)))}function ou(a){a=a|0;var b=0,c=0;x[a>>2]=12736;b=x[a+4>>2];if(b){while(1){c=x[b+12>>2];sa[x[x[b>>2]+4>>2]](b);b=c;if(b){continue}break}}x[a+4>>2]=0;x[a+8>>2]=0;La(a);}function Ru(a){a=a|0;var b=0,c=0;x[a>>2]=13664;b=x[a+4>>2];if(b){while(1){c=x[b+20>>2];sa[x[x[b>>2]+4>>2]](b);b=c;if(b){continue}break}}x[a+4>>2]=0;x[a+8>>2]=0;La(a);}function Li(a,b,c){a=a|0;b=b|0;c=E(c);var d=0,e=0;d=qa-16|0;qa=d;e=x[a+4>>2];b=(e>>1)+b|0;a=x[a>>2];a=e&1?x[x[b>>2]+a>>2]:a;B[d+12>>2]=c;sa[a|0](b,d+12|0);qa=d+16|0;}function vb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[a+4>>2];b=(e>>1)+b|0;a=x[a>>2];a=e&1?x[x[b>>2]+a>>2]:a;x[d+12>>2]=c;sa[a|0](b,d+12|0);qa=d+16|0;}function Rw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=qa-16|0;qa=d;e=x[a+4>>2];b=(e>>1)+b|0;a=x[a>>2];a=e&1?x[x[b>>2]+a>>2]:a;w[d+14>>1]=c;sa[a|0](b,d+14|0);qa=d+16|0;}function zk(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=E(d);e=E(e);f=E(f);g=E(g);var h=0;h=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){h=x[h+x[b>>2]>>2];}sa[h|0](b,c,d,e,f,g);}function Um(a,b,c,d,e,f){a=a|0;b=b|0;c=E(c);d=E(d);e=E(e);f=E(f);var g=0;g=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){g=x[g+x[b>>2]>>2];}return sa[g|0](b,c,d,e,f)|0}function Ua(a,b){a=a|0;b=b|0;var c=0;c=qa-16|0;qa=c;sa[x[a>>2]](c+4|0,b);a=Ea(12);x[a>>2]=x[c+4>>2];x[a+4>>2]=x[c+8>>2];x[a+8>>2]=x[c+12>>2];qa=c+16|0;return a|0}function qv(){var a=0,b=0;a=Ea(4);x[a>>2]=15464;x[a>>2]=41032;x[13538]=a;if(!x[13607]){b=Ea(3669960);x[13607]=b;a=Ea(1048560);x[13608]=b;x[13609]=a;x[13610]=a;}}function sf(a,b,c,d,e,f,g){a=a|0;b=b|0;c=E(c);d=E(d);e=E(e);f=E(f);g=E(g);a=x[a+36>>2]+D(b,20)|0;B[a>>2]=c;B[a+16>>2]=g;B[a+12>>2]=f;B[a+8>>2]=e;B[a+4>>2]=d;}function me(a,b,c,d,e,f,g){a=a|0;b=b|0;c=E(c);d=E(d);e=E(e);f=E(f);g=E(g);a=x[a+32>>2]+D(b,20)|0;B[a>>2]=c;B[a+16>>2]=g;B[a+12>>2]=f;B[a+8>>2]=e;B[a+4>>2]=d;}function Wp(a,b){a=a|0;b=b|0;var c=0;if(!(!(B[a+56>>2]>2])|(!(B[a+52>>2]>2])|!(B[a+60>>2]>B[b+52>>2])))){c=B[a+64>>2]>B[b+56>>2];}return c|0}function Ub(a){var b=0,c=0;b=a*a;c=b*a;return E(c*(b*b)*(b*2718311493989822e-21+-.00019839334836096632)+(c*(b*.008333329385889463+-.16666666641626524)+a))}function ur(a){a=a|0;var b=0,c=0;x[a+68>>2]=0;x[a+64>>2]=13296;x[a>>2]=16076;b=x[a+76>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return Rc(a)|0}function nt(a){a=a|0;var b=0,c=0;x[a+28>>2]=0;x[a+24>>2]=13296;x[a>>2]=14832;b=x[a+36>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return Eb(a)|0}function mo(a){a=a|0;var b=0,c=0;x[a+28>>2]=0;x[a+24>>2]=15708;x[a>>2]=19420;b=x[a+36>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return gc(a)|0}function lr(a){a=a|0;var b=0,c=0;x[a+28>>2]=0;x[a+24>>2]=15708;x[a>>2]=16216;b=x[a+36>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return gc(a)|0}function le(a){a=a|0;var b=0,c=0;x[a+24>>2]=0;x[a+20>>2]=13296;x[a>>2]=19592;b=x[a+32>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return Eb(a)|0}function is(a){a=a|0;var b=0,c=0;x[a+28>>2]=0;x[a+24>>2]=15708;x[a>>2]=15652;b=x[a+36>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return gc(a)|0}function go(a){a=a|0;var b=0,c=0;x[a+24>>2]=0;x[a+20>>2]=13296;x[a>>2]=19488;b=x[a+32>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return Eb(a)|0}function fr(a){a=a|0;var b=0,c=0;x[a+24>>2]=0;x[a+20>>2]=13296;x[a>>2]=16280;b=x[a+32>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return Eb(a)|0}function bs(a){a=a|0;var b=0,c=0;x[a+24>>2]=0;x[a+20>>2]=13296;x[a>>2]=15772;b=x[a+32>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return Eb(a)|0}function Un(a){a=a|0;var b=0,c=0;x[a+24>>2]=0;x[a+20>>2]=13296;x[a>>2]=19716;b=x[a+32>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return Eb(a)|0}function Ti(a,b,c,d,e,f){a=a|0;b=b|0;c=E(c);d=E(d);e=E(e);f=E(f);var g=0;g=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){g=x[g+x[b>>2]>>2];}sa[g|0](b,c,d,e,f);}function Se(a){a=a|0;var b=0,c=0;x[a+24>>2]=0;x[a+20>>2]=13296;x[a>>2]=16372;b=x[a+32>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return Eb(a)|0}function Iq(a){a=a|0;var b=0,c=0;x[a+28>>2]=0;x[a+24>>2]=13296;x[a>>2]=16744;b=x[a+36>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return Eb(a)|0}function vk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=E(d);e=E(e);f=E(f);var g=0;g=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){g=x[g+x[b>>2]>>2];}sa[g|0](b,c,d,e,f);}function Cj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=E(d);e=E(e);var f=0;f=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){f=x[f+x[b>>2]>>2];}return sa[f|0](b,c,d,e)|0}function xl(a,b,c,d){a=a|0;b=b|0;c=E(c);d=E(d);var e=0,f=0;e=Ea(8);x[a>>2]=e;f=e+8|0;x[a+8>>2]=f;x[e>>2]=0;x[e+4>>2]=0;x[a+4>>2]=f;Pd(b,c,d,e,e+4|0);}function Ft(a){a=a|0;var b=0,c=0;x[a+20>>2]=0;x[a+16>>2]=14588;x[a>>2]=14528;b=x[a+28>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Bo(a){a=a|0;var b=0,c=0;x[a+72>>2]=0;x[a+68>>2]=13296;x[a>>2]=19120;b=x[a+80>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function tr(a){a=a|0;var b=0,c=0;x[a+68>>2]=0;x[a+64>>2]=13296;x[a>>2]=16076;b=x[a+76>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(Rc(a));}function qs(a){a=a|0;var b=0,c=0;x[a+12>>2]=0;x[a+8>>2]=14588;x[a>>2]=15580;b=x[a+20>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function qo(a){a=a|0;var b=0,c=0;x[a+12>>2]=0;x[a+8>>2]=14588;x[a>>2]=19340;b=x[a+20>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function mt(a){a=a|0;var b=0,c=0;x[a+28>>2]=0;x[a+24>>2]=13296;x[a>>2]=14832;b=x[a+36>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(Eb(a));}function lo(a){a=a|0;var b=0,c=0;x[a+28>>2]=0;x[a+24>>2]=15708;x[a>>2]=19420;b=x[a+36>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(gc(a));}function ld(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){f=x[f+x[b>>2]>>2];}return sa[f|0](b,c,d,e)|0}function kr(a){a=a|0;var b=0,c=0;x[a+28>>2]=0;x[a+24>>2]=15708;x[a>>2]=16216;b=x[a+36>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(gc(a));}function hs(a){a=a|0;var b=0,c=0;x[a+28>>2]=0;x[a+24>>2]=15708;x[a>>2]=15652;b=x[a+36>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(gc(a));}function fo(a){a=a|0;var b=0,c=0;x[a+24>>2]=0;x[a+20>>2]=13296;x[a>>2]=19488;b=x[a+32>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(Eb(a));}function er(a){a=a|0;var b=0,c=0;x[a+24>>2]=0;x[a+20>>2]=13296;x[a>>2]=16280;b=x[a+32>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(Eb(a));}function as(a){a=a|0;var b=0,c=0;x[a+24>>2]=0;x[a+20>>2]=13296;x[a>>2]=15772;b=x[a+32>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(Eb(a));}function Tn(a){a=a|0;var b=0,c=0;x[a+24>>2]=0;x[a+20>>2]=13296;x[a>>2]=19716;b=x[a+32>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(Eb(a));}function Nu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if(gb(a,x[b+8>>2],f)){Nf(b,c,d,e);return}a=x[a+8>>2];sa[x[x[a>>2]+20>>2]](a,b,c,d,e,f);}function Hq(a){a=a|0;var b=0,c=0;x[a+28>>2]=0;x[a+24>>2]=13296;x[a>>2]=16744;b=x[a+36>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(Eb(a));}function Fe(a,b,c){var d=0;d=x[a+136>>2];a:{if(d){d=Ob(d,b,c);if(d){break a}}if(!x[x[a+4>>2]+64>>2]){return 0}d=Ob(x[x[a+4>>2]+64>>2],b,c);}return d}function fi(a){var b=0,c=0;c=a>>>23&255;b=0;a:{if(c>>>0<127){break a}b=2;if(c>>>0>150){break a}c=1<<150-c;b=0;if(c-1&a){break a}b=a&c?1:2;}return b}function Rp(a){a=a|0;var b=0,c=0;x[a+8>>2]=0;x[a+4>>2]=13296;x[a>>2]=17556;b=x[a+16>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Eb(a){a=a|0;var b=0,c=0;x[a+8>>2]=0;x[a+4>>2]=13296;x[a>>2]=14996;b=x[a+16>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function km(a,b,c,d){a=a|0;b=b|0;c=E(c);d=E(d);var e=0;e=qa-16|0;qa=e;B[e+12>>2]=c;B[e+8>>2]=d;Pd(b,B[a+20>>2],B[a+24>>2],e+12|0,e+8|0);qa=e+16|0;}function Ve(a,b){a=qd(a,b);x[a+64>>2]=13296;x[a>>2]=16076;x[a+68>>2]=0;x[a+72>>2]=0;w[a+74>>1]=0;w[a+76>>1]=0;w[a+78>>1]=0;w[a+80>>1]=0;return a}function zo(a){a=a|0;var b=0,c=0;x[a+72>>2]=0;x[a+68>>2]=13296;x[a>>2]=19120;b=x[a+80>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Et(a){a=a|0;var b=0,c=0;x[a+20>>2]=0;x[a+16>>2]=14588;x[a>>2]=14528;b=x[a+28>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function yk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=E(d);var e=0;e=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){e=x[e+x[b>>2]>>2];}return E(E(sa[e|0](b,c,d)))}function ps(a){a=a|0;var b=0,c=0;x[a+12>>2]=0;x[a+8>>2]=14588;x[a>>2]=15580;b=x[a+20>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function po(a){a=a|0;var b=0,c=0;x[a+12>>2]=0;x[a+8>>2]=14588;x[a>>2]=19340;b=x[a+20>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Tl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=qa-16|0;qa=e;x[e+12>>2]=c;v[e+11|0]=d;a=sa[a|0](b,e+12|0,e+11|0)|0;qa=e+16|0;return a|0}function jg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=qa-16|0;qa=e;x[e+12>>2]=b;x[e+8>>2]=d;a=sa[a|0](e+12|0,c,e+8|0)|0;qa=e+16|0;return a|0}function Vb(a){var b=0;a=a*a;b=a*a;return E(a*b*(a*2439044879627741e-20+-.001388676377460993)+(b*.04166662332373906+(a*-.499999997251031+1)))}function Qp(a){a=a|0;var b=0,c=0;x[a+8>>2]=0;x[a+4>>2]=13296;x[a>>2]=17556;b=x[a+16>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Oj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){e=x[e+x[b>>2]>>2];}return E(E(sa[e|0](b,c,d)))}function cg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=E(d);e=E(e);var f=0;f=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){f=x[f+x[b>>2]>>2];}sa[f|0](b,c,d,e);}function cb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=qa-16|0;qa=d;sa[x[a>>2]](d+12|0,b,c);oa(x[d+12>>2]);a=x[d+12>>2];na(a|0);qa=d+16|0;return a|0}function Qh(a,b,c,d,e){var f=0;f=c;c=0;a:{if(!d){break a}c=b>>8;if(!(b&1)){break a}c=x[c+x[d>>2]>>2];}sa[x[x[a>>2]+28>>2]](a,f,c+d|0,b&2?e:2);}function Vm(a,b,c,d){a=a|0;b=b|0;c=E(c);d=E(d);var e=0;e=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){e=x[e+x[b>>2]>>2];}return sa[e|0](b,c,d)|0}function Uj(a){a=a|0;var b=0;b=Pa(24);a=x[a>>2];x[b+8>>2]=0;x[b+4>>2]=a;x[b+16>>2]=0;x[b+20>>2]=0;x[b+12>>2]=13664;x[b>>2]=13532;return b|0}function $j(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=E(d);e=e|0;var f=0;f=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){f=x[f+x[b>>2]>>2];}sa[f|0](b,c,d,e);}function ci(a,b){var c=0,d=0;c=Ga(a)+1|0;d=b&255;while(1){a:{b=0;if(!c){break a}c=c-1|0;b=c+a|0;if((d|0)!=y[b|0]){continue}}break}return b}function Dj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=E(d);var e=0;e=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){e=x[e+x[b>>2]>>2];}return sa[e|0](b,c,d)|0}function Bf(a,b){a=a|0;b=b|0;a=x[a+24>>2];if(a){while(1){if(x[a+4>>2]==(b|0)){return (a|0)!=0|0}a=x[a+12>>2];if(a){continue}break}}return 0}function _b(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){e=x[e+x[b>>2]>>2];}return sa[e|0](b,c,d)|0}function Gi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=E(d);var e=0;e=qa-16|0;qa=e;a=x[a>>2];B[e+12>>2]=d;a=sa[a|0](b,c,e+12|0)|0;qa=e+16|0;return a|0}function rb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=qa-16|0;qa=e;a=x[a>>2];x[e+12>>2]=d;a=sa[a|0](b,c,e+12|0)|0;qa=e+16|0;return a|0}function Lw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=qa-16|0;qa=e;a=x[a>>2];w[e+14>>1]=d;a=sa[a|0](b,c,e+14|0)|0;qa=e+16|0;return a|0}function Tq(a){a=a|0;var b=0;b=Ma(32,4241,85);Re(b,a+4|0);B[b+20>>2]=B[a+20>>2];B[b+24>>2]=B[a+24>>2];B[b+28>>2]=B[a+28>>2];return b|0}function Pd(a,b,c,d,e){B[d>>2]=B[a+100>>2]+E(E(b*B[a+92>>2])+E(B[a+96>>2]*c));B[e>>2]=B[a+112>>2]+E(E(b*B[a+104>>2])+E(B[a+108>>2]*c));}function Ns(a){a=a|0;var b=0,c=0;x[a+20>>2]=1080;x[a>>2]=15308;b=x[a+28>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}return a|0}function yt(a){a=a|0;var b=0,c=0;x[a+8>>2]=1080;x[a>>2]=14644;b=x[a+16>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}return a|0}function lv(a,b){a=a|0;b=b|0;var c=0;c=qa-16|0;qa=c;if((Wf(b)|0)==54464){x[c+4>>2]=b;ti(c+8|0,b,c+4|0);x[x[c+8>>2]+28>>2]=a;}qa=c+16|0;}function gc(a){a=a|0;var b=0,c=0;x[a+4>>2]=1080;x[a>>2]=14940;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}return a|0}function ej(a,b,c){a=a|0;b=E(b);c=E(c);var d=0;d=qa-16|0;qa=d;B[d+12>>2]=b;B[d+8>>2]=c;a=sa[a|0](d+12|0,d+8|0)|0;qa=d+16|0;return a|0}function Zd(a,b,c){a=a|0;b=E(b);c=E(c);var d=0;d=qa-16|0;qa=d;B[d+12>>2]=b;B[d+8>>2]=c;sa[x[x[a>>2]+12>>2]](a,d+12|0,d+8|0);qa=d+16|0;}function Yp(a,b,c){a=a|0;b=E(b);c=E(c);var d=0;if(!(!(B[a+56>>2]<=c)|(!(B[a+52>>2]<=b)|!(B[a+60>>2]>=b)))){d=B[a+64>>2]>=c;}return d|0}function Qd(a){a=a|0;var b=0,c=0;x[a+4>>2]=1080;x[a>>2]=14248;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}return a|0}function ee(a,b,c){a=a|0;b=b|0;c=E(c);var d=0;d=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){d=x[d+x[b>>2]>>2];}return E(E(sa[d|0](b,c)))}function Cn(a,b){a=a|0;b=E(b);var c=0;c=x[a>>2];if(c){B[c+160>>2]=B[c+160>>2]+b;ng(x[a+12>>2],b);id(x[a+12>>2],x[a>>2]);Xc(x[a>>2]);}}function og(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){d=x[d+x[b>>2]>>2];}return E(E(sa[d|0](b,c)))}function Ro(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=18740;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0} + function zu(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=14028;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function zm(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=13472;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function yq(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=17252;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function xt(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=13184;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function xq(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=17184;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function xp(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=18592;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function wq(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=17112;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function wp(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=18520;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function vq(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=17044;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function vp(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=18444;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function uq(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=16988;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function up(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=18372;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function tp(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=18308;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function sp(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=18244;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function rp(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=18188;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function qp(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=18128;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function gs(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=15708;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function bq(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=17436;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Pp(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=17604;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Po(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=19052;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Or(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=16028;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Np(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=17664;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Lt(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=13296;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Io(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=12676;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Fp(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=17796;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Dt(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=14588;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Dp(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=17852;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Bt(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=13232;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Bp(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=17908;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Au(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=14092;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}return a|0}function Ms(a){a=a|0;var b=0,c=0;x[a+20>>2]=1080;x[a>>2]=15308;b=x[a+28>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}La(a);}function yg(a){a=a|0;var b=0,c=0;x[a>>2]=20084;b=x[a+4>>2];c=x[b>>2];a:{if(c){Ja(c);b=x[a+4>>2];if(!b){break a}}Ja(b);}return a|0}function wt(a){a=a|0;var b=0,c=0;x[a+8>>2]=1080;x[a>>2]=14644;b=x[a+16>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}La(a);}function vc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){e=x[e+x[b>>2]>>2];}sa[e|0](b,c,d);}function Oc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){d=x[d+x[b>>2]>>2];}return sa[d|0](b,c)|0}function Ek(a,b,c,d){a=a|0;b=b|0;c=c|0;d=E(d);var e=0;e=qa-16|0;qa=e;B[e+12>>2]=d;a=sa[a|0](b,c,e+12|0)|0;qa=e+16|0;return a|0}function Bk(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=E(d);e=E(e);f=f|0;g=g|0;h=E(h);i=i|0;j=j|0;sa[x[a>>2]](b,c,d,e,f,g,h,i,j);}function wu(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=12676;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function su(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=14028;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function rw(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=13232;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function ru(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=14092;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function gw(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=13296;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function gq(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=16988;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function fs(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=15708;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function fq(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=17044;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function eq(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=17112;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function dq(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=17184;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function cq(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=17252;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function ap(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=18128;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function _o(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=18244;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Zo(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=18308;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Yo(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=18372;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Xo(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=18444;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Wo(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=18520;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Vo(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=18592;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Sw(a){a=a|0;var b=0,c=0;x[a>>2]=13168;b=x[a+8>>2];a:{if(!b){break a}c=x[a+4>>2];if(!c){break a}sa[b|0](c);}return a|0}function Qo(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=18740;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Op(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=17604;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Ol(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=qa-16|0;qa=e;x[e+12>>2]=b;a=sa[a|0](e+12|0,c,d)|0;qa=e+16|0;return a|0}function Mp(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=17664;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Ku(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(gb(a,x[b+8>>2],0)){Mf(b,c,d);return}a=x[a+8>>2];sa[x[x[a>>2]+28>>2]](a,b,c,d);}function Fo(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=19052;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Ep(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=17796;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Ct(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=14588;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Cp(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=17852;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Cl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=qa-16|0;qa=e;x[e+12>>2]=d;a=sa[a|0](b,c,e+12|0)|0;qa=e+16|0;return a|0}function Bv(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=13472;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Br(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=16028;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Aw(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=13184;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Ap(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=17908;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function $p(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=17436;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function $o(a){a=a|0;var b=0,c=0;x[a+4>>2]=0;x[a>>2]=18188;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}La(a);}function Eo(a,b){a=a|0;b=b|0;var c=E(0);if(x[a+60>>2]!=(b|0)){x[a+60>>2]=b;c=B[x[a+12>>2]+160>>2];x[a+72>>2]=0;B[a+64>>2]=c;}}function jv(a){a=a|0;var b=0;b=x[13621];a:{if(b){if(A[13622]>=a>>>0){break a}Ja(b);}b=Ea(a);x[13622]=a;x[13621]=b;}return b|0}function Hl(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=E(e);f=E(f);g=g|0;h=h|0;i=E(i);j=E(j);sa[a|0](b,c,d,e,f,g,h,i,j);}function fl(a){a=a|0;var b=0,c=0;if(a){x[a+4>>2]=1080;b=x[a+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}Ja(a);}}function eb(a,b){a=a|0;b=b|0;var c=0;c=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){c=x[c+x[b>>2]>>2];}return E(E(sa[c|0](b)))}function Lp(a){a=a|0;if(x[a+224>>2]){x[a+224>>2]=0;x[a+228>>2]=0;x[a+196>>2]=0;x[a+164>>2]=0;x[a+180>>2]=0;x[a+132>>2]=0;}}function Hw(a){a=a|0;var b=0,c=0;x[a>>2]=13168;b=x[a+8>>2];a:{if(!b){break a}c=x[a+4>>2];if(!c){break a}sa[b|0](c);}Ja(a);}function ib(a,b,c){a=a|0;b=b|0;c=E(c);var d=0;d=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){d=x[d+x[b>>2]>>2];}sa[d|0](b,c);}function Sa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){d=x[d+x[b>>2]>>2];}sa[d|0](b,c);}function cj(a,b){a=a|0;b=b|0;var c=0,d=E(0);c=Pa(12);d=B[a>>2];B[c+8>>2]=B[b>>2];B[c+4>>2]=d;x[c>>2]=19912;return c|0}function Ka(a,b){a=a|0;b=b|0;var c=0;c=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){c=x[c+x[b>>2]>>2];}return sa[c|0](b)|0}function qg(a,b,c){a=a|0;b=E(b);c=c|0;var d=0;d=qa-16|0;qa=d;B[d+12>>2]=b;a=sa[a|0](d+12|0,c)|0;qa=d+16|0;return a|0}function kc(a){a=a|0;var b=0,c=0;x[a>>2]=1080;b=x[a+8>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}return a|0}function Yh(a,b){if(!a){return 0}a:{if(!((b&-128)==57216|b>>>0<=127)){x[13623]=25;a=-1;break a}v[a|0]=b;a=1;}return a}function Ab(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=E(d);e=E(e);f=f|0;g=E(g);h=h|0;i=i|0;sa[x[a>>2]](b,c,d,e,f,g,h,i);}function Xh(a,b,c,d,e,f,g,h,i){x[a>>2]=b;x[a+4>>2]=c;x[a+8>>2]=d;x[a+12>>2]=e&65535|(i>>>16&32768|e>>>16&32767)<<16;}function Sj(a){a=a|0;var b=0;x[13480]=12676;x[13481]=0;a=x[13483];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,7693,206);}}function Cs(a,b,c,d){a=a|0;b=b|0;if(!b){return 0}a=Mb(b);if(!(!a|!(y[a-4|0]&3))){Ha(a,0,b);}return a|0}function gr(a,b,c,d,e){a=a|0;b=b|0;c=E(c);d=E(d);e=E(e);a=x[a+32>>2]+D(b,12)|0;B[a>>2]=c;B[a+8>>2]=e;B[a+4>>2]=d;}function Jl(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=E(d);e=E(e);f=f|0;g=g|0;h=h|0;i=E(i);sa[a|0](b,c,d,e,f,g,h,i);}function Fc(a,b){var c=0;b=x[b+4>>2];while(1){c=Oa(x[a+4>>2],b);if(c){a=x[a+8>>2];if(a){continue}}break}return !c}function Lf(a,b,c,d,e,f,g){var h=0;h=b>>8;if(b&1){h=x[x[e>>2]+h>>2];}sa[x[x[a>>2]+20>>2]](a,c,d,e+h|0,b&2?f:2,g);}function Fu(a){a=a|0;var b=0,c=0;x[a>>2]=1080;b=x[a+8>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}La(a);}function zn(a,b,c,d,e){a=a|0;b=E(b);c=E(c);d=E(d);e=E(e);B[a+68>>2]=e;B[a- -64>>2]=d;B[a+60>>2]=c;B[a+56>>2]=b;}function gb(a,b,c){if(!c){return x[a+4>>2]==x[b+4>>2]}if((a|0)==(b|0)){return 1}return !Oa(x[a+4>>2],x[b+4>>2])}function Gl(a,b,c,d,e,f,g,h,i){b=b|0;c=c|0;d=E(d);e=E(e);f=f|0;g=g|0;h=E(h);i=E(i);sh(b,c,d,e,f,g,h,i);}function Db(a,b){a=a|0;b=b|0;var c=0;c=x[a>>2];a=x[a+4>>2];b=(a>>1)+b|0;if(a&1){c=x[c+x[b>>2]>>2];}sa[c|0](b);}function cv(a,b,c,d,e){a=a|0;b=b|0;c=c|0;if(!c){return 0}a=Fa(Ea(c),b,c);if(b){Ja(b);}return a|0}function Rd(a,b,c,d,e,f){var g=0;g=b>>8;if(b&1){g=x[x[d>>2]+g>>2];}sa[x[x[a>>2]+24>>2]](a,c,d+g|0,b&2?e:2,f);}function Bs(a,b,c,d,e){b=b|0;c=c|0;if(!c){return 0}if(!b){return Mb(c)|0}return Tf(b,c)|0}function Lm(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=E(d);e=E(e);f=E(f);g=E(g);return sa[x[a>>2]](b,c,d,e,f,g)|0}function kn(){var a=0;a=Pa(20);x[a+4>>2]=0;x[a+8>>2]=0;x[a>>2]=14896;x[a+12>>2]=0;x[a+16>>2]=0;return a|0}function jb(a,b){a=a|0;b=b|0;var c=0;c=qa-16|0;qa=c;x[c+12>>2]=b;a=sa[a|0](c+12|0)|0;qa=c+16|0;return a|0}function xg(a){var b=0,c=0;c=Ea(12);b=x[a+4>>2];he(c,x[b+8>>2],x[b+4>>2],x[b+12>>2],x[a+8>>2]);return c}function Ef(a){a=a|0;hc(a,B[a+32>>2],B[a+36>>2],B[a+40>>2],B[a+44>>2],B[a+48>>2],B[a+52>>2],B[a+56>>2]);}function av(a){a=a|0;var b=0,c=0;a=x[a+4>>2];b=Ga(a)+1|0;c=Mb(b);if(c){a=Fa(c,a,b);}else {a=0;}return a|0}function Mt(a){a=a|0;var b=E(0),c=E(0);b=B[a+92>>2];c=E(b*b);b=B[a+104>>2];return E(E(M(E(c+E(b*b)))))}function Kt(a){a=a|0;var b=E(0),c=E(0);b=B[a+96>>2];c=E(b*b);b=B[a+108>>2];return E(E(M(E(c+E(b*b)))))}function Av(a,b){a=a|0;b=E(b);return E(E(E(Fd(E(b+E(-1)),E(x[a+4>>2]))*(v[a+4|0]&1?E(1):E(-1)))+E(1)))}function st(a){a=a|0;var b=0;b=Ma(68,4724,54);uf(b,a+4|0);Qc(a,b);x[b+64>>2]=x[a+64>>2];return b|0}function Cv(a,b,c,d){a=a|0;b=E(b);c=E(c);d=E(d);return E(E(E(E(c-b)*E(sa[x[x[a>>2]>>2]](a,d)))+b))}function Zl(a){a=a|0;var b=0;b=Pa(8);a=x[a>>2];x[b>>2]=14308;x[b+4>>2]=a;x[b>>2]=14156;return b|0}function Il(a,b,c,d,e,f,g,h){b=b|0;c=E(c);d=E(d);e=e|0;f=f|0;g=g|0;h=E(h);hf(b,c,d,e,f,g,h);}function Nm(a,b,c,d,e,f){a=a|0;b=b|0;c=E(c);d=E(d);e=E(e);f=E(f);return sa[x[a>>2]](b,c,d,e,f)|0}function $u(){var a=0;a=x[13748];if(a){while(1){sa[x[a>>2]]();a=x[a+4>>2];if(a){continue}break}}}function Cu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if(gb(a,x[b+8>>2],f)){Nf(b,c,d,e);}}function On(a,b){a=a|0;b=b|0;B[a+20>>2]=B[b+172>>2]+B[a+4>>2];B[a+24>>2]=B[b+176>>2]+B[a+8>>2];}function Es(a,b,c){a=a|0;b=b|0;c=c|0;b=b<<2;B[b+x[a+16>>2]>>2]=B[c+8>>2];x[b+x[a+32>>2]>>2]=c;}function Ej(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=E(f);return sa[x[a>>2]](b,c,d,e,f)|0}function Xf(a,b){if(b){Xf(a,x[b>>2]);Xf(a,x[b+4>>2]);if(v[b+27|0]<0){Ja(x[b+16>>2]);}Ja(b);}}function Jq(a,b,c,d){a=a|0;b=b|0;c=E(c);d=E(d);a=x[a+36>>2]+(b<<3)|0;B[a>>2]=c;B[a+4>>2]=d;}function $q(a,b,c,d){a=a|0;b=b|0;c=E(c);d=E(d);a=x[a+32>>2]+(b<<3)|0;B[a>>2]=c;B[a+4>>2]=d;}function Re(a,b){a=If(a,b);x[a+28>>2]=0;x[a+20>>2]=0;x[a+24>>2]=0;x[a>>2]=16536;return a}function Mm(a,b,c,d,e,f){b=b|0;c=E(c);d=E(d);e=E(e);f=E(f);return Rg(b,c,d,e,f)|0}function Pm(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=E(d);e=E(e);return sa[x[a>>2]](b,c,d,e)|0}function dv(a,b,c,d){b=b|0;if(!b){return 0}return Ha(Ea(b),0,b)|0}function Jj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return sa[x[a>>2]](b,c,d,e)|0}function Wi(a,b){a=a|0;b=b|0;return (A[a+44>>2]>b>>>0?x[x[a+52>>2]+(b<<2)>>2]:0)|0}function Ql(a){a=a|0;var b=0;b=Ea(8);x[b+4>>2]=x[a>>2];x[b>>2]=32204;return b|0}function Pl(a){a=a|0;var b=0;b=Ea(8);x[b+4>>2]=x[a>>2];x[b>>2]=32388;return b|0}function Bu(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return sa[a|0](b,c,d,e)|0}function Ju(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(gb(a,x[b+8>>2],0)){Mf(b,c,d);}}function ut(a){a=a|0;var b=0;b=Ma(64,4114,44);vf(b,a+4|0);Qc(a,b);return b|0}function Fj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=E(e);return _d(a,b,c,d,e)|0}function on(a,b,c,d){a=a|0;b=E(b);c=E(c);d=E(d);return E(E(sa[a|0](b,c,d)))}function jm(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=E(d);e=E(e);sa[x[a>>2]](b,c,d,e);}function hb(a){a=a|0;var b=0;if(a){b=x[a>>2];if(b){x[a+4>>2]=b;Ja(b);}Ja(a);}}function ev(a,b,c,d){b=b|0;if(!b){return 0}return Ea(b)|0}function db(){var a=0;a=Ea(12);x[a+8>>2]=0;x[a>>2]=0;x[a+4>>2]=0;return a|0}function Ww(a){var b=0;b=a&31;a=0-a&31;return (-1>>>b&-2)<>>a} + function Ds(a,b,c,d){b=b|0;if(!b){return 0}return Mb(b)|0}function wl(a,b,c){a=a|0;b=b|0;c=c|0;return Af(Pa(64),x[a>>2],b,x[c>>2])|0}function sb(a,b,c){a=a|0;b=b|0;c=c|0;x[x[a>>2]+(b<<2)>>2]=x[c>>2];return 1}function gk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=E(d);e=e|0;sa[x[a>>2]](b,c,d,e);}function Rm(a,b,c,d){a=a|0;b=b|0;c=E(c);d=E(d);return sa[x[a>>2]](b,c,d)|0}function Pj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=E(e);sa[x[a>>2]](b,c,d,e);}function Mw(a,b,c){a=a|0;b=b|0;c=c|0;w[x[a>>2]+(b<<1)>>1]=z[c>>1];return 1}function Hi(a,b,c){a=a|0;b=b|0;c=c|0;B[x[a>>2]+(b<<2)>>2]=B[c>>2];return 1}function $s(a){a=a|0;return (x[x[a+56>>2]+60>>2]+x[a+20>>2]|0)+100663296|0}function ov(a){a=a|0;a=Wf(a);if((a|0)==54464){return 0}return x[a+28>>2]}function iq(a){a=a|0;var b=E(0);b=B[a+168>>2];return E(y[54052]?E(-b):b)}function Xd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return sa[x[a>>2]](b,c,d)|0}function Pa(a){var b=0;b=Da();return sa[x[x[b>>2]+12>>2]](b,a,4848,40)|0}function Ma(a,b,c){var d=0;d=Da();return sa[x[x[d>>2]+12>>2]](d,a,b,c)|0}function wg(a){var b=0;b=x[a+20>>2];if(b){x[a+24>>2]=b;Ja(b);}return a}function rq(a){a=a|0;if(!x[a+12>>2]){return 0}return x[x[a+20>>2]>>2]}function Bl(a,b,c){a=a|0;b=b|0;c=c|0;return Ff(Pa(120),a,b,x[c>>2])|0}function Ot(a){a=a|0;return E(E(Va(B[a+104>>2],B[a+92>>2])*B[3979]))}function Nt(a){a=a|0;return E(E(Va(B[a+108>>2],B[a+96>>2])*B[3979]))}function Nl(a,b,c){a=a|0;b=b|0;c=c|0;return pe(Pa(84),x[a>>2],b,c)|0}function Dk(a,b,c){a=a|0;b=b|0;c=c|0;return gd(Pa(48),a,b,B[c>>2])|0}function mu(a,b,c){c=c|0;return vf(Ma(64,5196,103),c)|0}function lu(a,b,c){c=c|0;return Ve(Ma(84,5196,108),c)|0}function ku(a,b,c){c=c|0;return Re(Ma(32,5196,113),c)|0}function ju(a,b,c){c=c|0;return uf(Ma(68,5196,118),c)|0}function ri(){var a=0;a=Ea(4);x[a>>2]=15464;x[a>>2]=41032;return a}function op(a){a=a|0;return B[a+72>>2]>=E(B[a+56>>2]-B[a+52>>2])|0}function Da(){var a=0;a=x[13538];if(!a){a=ri();x[13538]=a;}return a}function fj(a,b,c,d){a=a|0;b=b|0;c=E(c);d=E(d);sa[x[a>>2]](b,c,d);}function Kj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return hd(a,b,c,d)|0}function Do(a){a=a|0;return E(E(B[x[a+12>>2]+160>>2]-B[a+64>>2]))}function nn(a,b,c){a=a|0;b=E(b);c=E(c);return E(E(sa[a|0](b,c)))}function et(a,b){a=a|0;b=b|0;x[x[a+16>>2]+D(b,76)>>2]=1065353216;}function ct(a,b){a=a|0;b=b|0;return E(B[x[a+16>>2]+D(b,76)>>2])}function Xr(a,b,c){a=E(a);b=E(b);c=E(c);return E(ac?c:a)}function La(a){var b=0;b=Da();sa[x[x[b>>2]+20>>2]](b,a,4848,62);}function Co(a,b){a=a|0;b=E(b);B[a+64>>2]=B[x[a+12>>2]+160>>2]-b;}function zb(a){a=E(a);return E(Fb(E(a*E(.01745329238474369))))}function yb(a){a=E(a);return E(Hb(E(a*E(.01745329238474369))))}function uf(a,b){a=qd(a,b);x[a+64>>2]=0;x[a>>2]=14760;return a}function Yr(a){a=E(a);return E(aE(0)?E(1):E(0))}function ge(a,b){if(b){ge(a,x[b>>2]);ge(a,x[b+4>>2]);Ja(b);}}function kd(a,b,c){a=a|0;b=b|0;c=c|0;return sa[a|0](b,c)|0}function Tu(a,b,c,d){ra=0;return 0}function Km(a,b){a=a|0;b=b|0;return nf(Pa(40),B[a>>2],b)|0}function bv(a,b,c,d){b=b|0;if(b){Ja(b);}}function Sr(a){a=E(a);return ((q(a),j(2))|0)==2143289344|0}function Ea(a){a=Mb(a>>>0<=1?1:a);if(!a){O();p();}return a}function sq(a,b){a=a|0;b=E(b);B[a+160>>2]=B[a+160>>2]+b;}function ft(a,b){a=a|0;b=b|0;x[x[a+16>>2]+D(b,76)>>2]=0;}function an(a,b,c){a=a|0;b=b|0;c=E(c);B[x[a>>2]+b>>2]=c;}function Uq(a,b){a=a|0;b=E(b);B[a+64>>2]=b;B[a+60>>2]=b;}function Up(a){a=a|0;return E(E(B[a+60>>2]-B[a+52>>2]))}function Tp(a){a=a|0;return E(E(B[a+64>>2]-B[a+56>>2]))}function Rh(a,b,c){a=a|0;b=b|0;return gb(a,b,0)|0}function Aj(a,b){a=a|0;b=b|0;x[a+96>>2]=b;x[a+92>>2]=11;}function ec(a,b,c){a=a|0;b=b|0;c=c|0;x[x[a>>2]+b>>2]=c;}function bn(a,b){a=a|0;b=b|0;return E(B[x[a>>2]+b>>2])}function Sh(a,b){var c=0;c=Ea(b);x[a+4>>2]=b;x[a>>2]=c;}function Bj(a,b){a=a|0;b=b|0;x[a+96>>2]=0;x[a+92>>2]=b;}function qn(a,b){a=a|0;b=E(b);return E(E(sa[a|0](b)))}function ce(a,b,c){a=a|0;b=b|0;c=c|0;sa[x[a>>2]](b,c);}function Yf(a){a=a|0;return (x[a+4>>2]-x[a>>2]|0)/12|0}function Wb(a,b,c,d,e,f,g){pd(a,b,c,d,x[e+12>>2],f,g);}function Ul(a,b,c){a=a|0;b=b|0;c=c|0;v[x[a>>2]+b|0]=c;}function Nv(a){a=a|0;return (x[a+4>>2]-x[a>>2]|0)/24|0}function Gv(a){a=a|0;return (x[a+4>>2]-x[a>>2]|0)/20|0}function Fl(a,b){a=a|0;b=b|0;return ih(Pa(144),a,b)|0}function xb(a,b){a=a|0;b=b|0;return sa[x[a>>2]](b)|0}function vl(a,b){a=a|0;b=b|0;return Gg(Pa(84),a,b)|0}function Kl(a,b){a=a|0;b=b|0;return rh(Pa(48),a,b)|0}function Dl(a,b){a=a|0;b=b|0;return Eg(Pa(48),a,b)|0}function fe(a){a=a|0;if(a){sa[x[x[a>>2]+12>>2]](a);}}function fc(a,b){a=a|0;b=b|0;return x[x[a>>2]+b>>2]}function Tw(a){if(a){return 31-G(a-1^a)|0}return 32}function hr(a){a=a|0;return x[a+36>>2]+218103808|0}function ho(a){a=a|0;return x[a+36>>2]+167772160|0}function cs(a){a=a|0;return x[a+36>>2]+150994944|0}function ar(a){a=a|0;return x[a+36>>2]+184549376|0}function Yq(a){a=a|0;return x[a+36>>2]+201326592|0}function Xn(a){a=a|0;return x[a+36>>2]+234881024|0}function Vl(a,b){a=a|0;b=b|0;return y[x[a>>2]+b|0]}function Ra(a){a=a|0;if(a){sa[x[x[a>>2]+4>>2]](a);}}function Jn(a,b){a=a|0;b=E(b);B[a+16>>2]=B[3978]*b;}function As(a,b,c,d){b=b|0;Ja(b);}function zj(a){a=a|0;return bh(Pa(180),x[a>>2])|0}function vf(a,b){a=qd(a,b);x[a>>2]=14692;return a}function ot(a){a=a|0;return x[a+20>>2]+83886080|0}function mn(a,b){a=a|0;b=E(b);return sa[a|0](b)|0}function dh(a,b){a=Cd(a,b);x[a>>2]=16456;return a}function Nj(a){a=a|0;return rg(Pa(104),x[a>>2])|0}function Me(a,b){a=Sc(a,b);x[a>>2]=16812;return a}function Le(a,b){a=Sc(a,b);x[a>>2]=16876;return a}function Dq(a){a=a|0;return x[a+36>>2]+33554432|0}function Aq(a){a=a|0;return x[a+36>>2]+50331648|0}function $n(a){a=a|0;return x[a+36>>2]+16777216|0}function xk(a){a=a|0;return Sc(Pa(40),x[a>>2])|0}function uk(a){a=a|0;return Me(Pa(40),x[a>>2])|0}function tk(a){a=a|0;return Le(Pa(40),x[a>>2])|0}function sk(a){a=a|0;return Ne(Pa(40),x[a>>2])|0}function rk(a){a=a|0;return tf(Pa(40),x[a>>2])|0}function qk(a){a=a|0;return je(Pa(40),x[a>>2])|0}function ok(a){a=a|0;return Hf(Pa(40),x[a>>2])|0}function mb(a){a=a|0;return x[a+4>>2]-x[a>>2]>>2}function jk(a){a=a|0;return rf(Pa(60),x[a>>2])|0}function fk(a){a=a|0;return jf(Pa(36),x[a>>2])|0}function eu(a){a=a|0;return x[a+4>>2]+67108864|0}function ck(a){a=a|0;return pf(Pa(36),x[a>>2])|0}function _j(a){a=a|0;return af(Pa(40),x[a>>2])|0}function Yj(a){a=a|0;return ne(Pa(40),x[a>>2])|0}function Xj(a){a=a|0;return Cd(Pa(40),x[a>>2])|0}function Wj(a){a=a|0;return Te(Pa(40),x[a>>2])|0}function Ow(a){a=a|0;return x[a+4>>2]-x[a>>2]>>1}function Jb(a,b){a=a|0;b=b|0;return sa[a|0](b)|0}function pb(a,b){return !Oa(x[a+4>>2],x[b+4>>2])}function gt(a){a=a|0;return (A[a+8>>2]/19|0)+1|0}function Nh(a,b,c,d){da(a|0,b|0,8,0,c|0,-1,d|0);}function lb(a,b){return bi(a,b,10,-2147483648)}function ff(a){a=a|0;return x[x[a+4>>2]+16>>2]}function Zr(a){a=E(a);return E(a>2]=13752;return a|0}function gf(a){a=a|0;sa[x[x[a>>2]+12>>2]](a);}function cu(a,b,c,d){}function Kp(a){a=a|0;return x[a+224>>2]!=0|0}function wm(a){a=a|0;return Zc(Pa(236),a)|0}function se(a,b){a=a|0;b=E(b);B[a+100>>2]=b;}function nq(a,b){a=a|0;b=E(b);B[a+172>>2]=b;}function lq(a,b){a=a|0;b=E(b);B[a+176>>2]=b;}function lp(a,b){a=a|0;b=E(b);B[a+148>>2]=b;}function ln(a){a=a|0;return E(E(sa[a|0]()))}function jq(a,b){a=a|0;b=E(b);B[a+164>>2]=b;}function jp(a,b){a=a|0;b=E(b);B[a+152>>2]=b;}function im(a){a=a|0;return Qe(Pa(164),a)|0}function hq(a,b){a=a|0;b=E(b);B[a+168>>2]=b;}function hp(a,b){a=a|0;b=E(b);B[a+156>>2]=b;}function bp(a,b){a=a|0;b=E(b);B[a+204>>2]=b;}function Wu(a){a=a|0;return _(x[a+60>>2])|0}function Ug(a,b){a=a|0;b=E(b);B[a+160>>2]=b;}function Tt(a,b){a=a|0;b=E(b);B[a+104>>2]=b;}function Rt(a,b){a=a|0;b=E(b);B[a+108>>2]=b;}function Qa(a){a=a|0;return x[x[a>>2]-4>>2]}function Pt(a,b){a=a|0;b=E(b);B[a+112>>2]=b;}function Fr(a,b){a=a|0;b=E(b);B[a+196>>2]=b;}function Dr(a,b){a=a|0;b=E(b);B[a+200>>2]=b;}function zq(a,b){a=a|0;b=E(b);B[a+88>>2]=b;}function ym(a){a=a|0;return vf(Pa(64),a)|0}function yf(a,b){a=a|0;b=E(b);B[a+24>>2]=b;}function xm(a){a=a|0;return uf(Pa(68),a)|0}function ve(a){a=a|0;return E(B[a+100>>2])}function vd(a,b){a=a|0;b=E(b);B[a+44>>2]=b;}function to(a,b){a=a|0;b=b|0;x[a+112>>2]=b;}function rl(a){a=a|0;return sd(Pa(68),a)|0}function oq(a){a=a|0;return E(B[a+172>>2])}function oc(a,b){a=a|0;b=E(b);B[a+36>>2]=b;}function nm(a){a=a|0;return Ve(Pa(84),a)|0}function mq(a){a=a|0;return E(B[a+176>>2])}function mp(a){a=a|0;return E(B[a+148>>2])}function lm(a){a=a|0;return Re(Pa(32),a)|0}function kq(a){a=a|0;return E(B[a+164>>2])}function kp(a){a=a|0;return E(B[a+152>>2])}function kf(a,b){a=a|0;b=E(b);B[a+20>>2]=b;}function jh(a,b){a=a|0;b=E(b);B[a+84>>2]=b;}function ip(a){a=a|0;return E(B[a+156>>2])}function cp(a){a=a|0;return E(B[a+204>>2])}function cc(a,b){a=a|0;b=E(b);B[a+32>>2]=b;}function bf(a,b){a=a|0;b=E(b);B[a+68>>2]=b;}function Ym(a){a=a|0;return Ld(Pa(24),a)|0}function Yg(a,b){a=a|0;b=E(b);B[a+92>>2]=b;}function Ye(a,b){a=a|0;b=E(b);B[a+72>>2]=b;}function Yc(a,b){a=a|0;b=E(b);B[a+56>>2]=b;}function Xm(a){a=a|0;return cf(Pa(60),a)|0}function Wt(a,b){a=a|0;b=E(b);B[a+76>>2]=b;}function Wm(a){a=a|0;return Ue(Pa(76),a)|0}function Vt(a,b){a=a|0;b=E(b);B[a+80>>2]=b;}function Vg(a){a=a|0;return E(B[a+160>>2])}function Vc(a,b){a=a|0;b=E(b);B[a+48>>2]=b;}function Ut(a){a=a|0;return E(B[a+104>>2])}function St(a){a=a|0;return E(B[a+108>>2])}function Qt(a){a=a|0;return E(B[a+112>>2])}function Os(a,b){a=a|0;b=E(b);B[a+16>>2]=b;}function Mn(a,b){a=a|0;b=E(b);B[a+12>>2]=b;}function Md(a,b){a=a|0;b=E(b);B[a+28>>2]=b;}function Lr(a){a=a|0;a=a+-64|0;Ed(a);La(a);}function Jr(a,b){a=a|0;b=b|0;x[a+224>>2]=b;}function Ig(a,b){a=a|0;b=E(b);B[a+96>>2]=b;}function Hm(a){a=a|0;return mf(Pa(56),a)|0}function Hc(a,b){a=a|0;b=E(b);B[a+52>>2]=b;}function Gr(a){a=a|0;return E(B[a+196>>2])}function Fh(a,b){a=a|0;b=E(b);B[a+60>>2]=b;}function Er(a){a=a|0;return E(B[a+200>>2])}function El(a){a=a|0;return oe(Pa(88),a)|0}function Eh(a,b){a=a|0;b=E(b);B[a+64>>2]=b;}function Bc(a,b){a=a|0;b=E(b);B[a+40>>2]=b;}function zh(a,b){a=a|0;b=b|0;x[a+64>>2]=b;}function zf(a){a=a|0;return E(B[a+24>>2])}function yh(a,b){a=a|0;b=b|0;x[a+16>>2]=b;}function yc(a){a=a|0;return E(B[a+48>>2])}function xo(a,b){a=a|0;b=b|0;x[a+80>>2]=b;}function wf(a,b){a=a|0;b=b|0;x[a+56>>2]=b;}function vh(a){a=a|0;return E(B[a+16>>2])}function qh(a,b){a=a|0;b=b|0;x[a+24>>2]=b;}function pr(a,b){a=a|0;b=b|0;v[a+140|0]=b;}function pc(a){a=a|0;return E(B[a+36>>2])}function mr(a,b){a=a|0;b=b|0;x[a+48>>2]=b;}function mh(a,b){a=a|0;b=b|0;x[a+44>>2]=b;}function lf(a){a=a|0;return E(B[a+20>>2])}function lc(a){a=a|0;return E(B[a+52>>2])}function kh(a){a=a|0;return E(B[a+84>>2])}function eh(a,b){a=a|0;b=b|0;x[a+52>>2]=b;}function ef(a,b){a=a|0;b=b|0;x[a+40>>2]=b;}function dc(a){a=a|0;return E(B[a+32>>2])}function bd(a,b){a=a|0;b=b|0;x[a+20>>2]=b;}function _g(a){a=a|0;return E(B[a+92>>2])}function Wc(a){a=a|0;return E(B[a+44>>2])}function Vn(a,b){a=a|0;b=b|0;x[a+36>>2]=b;}function Rf(a,b){a=a|0;b=E(b);B[a+8>>2]=b;}function Ps(a,b){a=a|0;b=b|0;x[a+12>>2]=b;}function Nr(a){a=a|0;return Ed(a+-64|0)|0}function Ni(a){a=a|0;v[x[a+72>>2]+28|0]=1;}function Nd(a){a=a|0;return E(B[a+28>>2])}function Ln(a){a=a|0;return E(B[a+12>>2])}function Jg(a){a=a|0;return E(B[a+96>>2])}function Id(a){a=a|0;return E(B[a+68>>2])}function Hd(a){a=a|0;return E(B[a+72>>2])}function Gt(a,b){a=a|0;b=b|0;v[a+117|0]=b;}function Gq(a){a=a|0;return E(B[a+88>>2])}function Gc(a){a=a|0;return E(B[a+56>>2])}function Fi(a){a=a|0;v[x[a+72>>2]+28|0]=0;}function Dh(a){a=a|0;return E(B[a+76>>2])}function Ch(a){a=a|0;return E(B[a+80>>2])}function Cf(a){a=a|0;return E(B[a+64>>2])}function Cc(a){a=a|0;return E(B[a+40>>2])}function Bd(a){a=a|0;return E(B[a+60>>2])}function Ag(a,b){a=a|0;b=E(b);B[a+4>>2]=b;}function zt(a,b){a=a|0;b=b|0;v[a+60|0]=b;}function zg(a){a=a|0;return E(B[a+4>>2])}function yr(a,b){a=a|0;b=b|0;v[a+80|0]=b;}function wr(a,b){a=a|0;b=b|0;v[a+81|0]=b;}function vn(a,b){a=a|0;b=b|0;v[a+52|0]=b;}function us(a,b){a=a|0;b=b|0;v[a+29|0]=b;}function un(a,b){a=a|0;b=b|0;v[a+54|0]=b;}function ts(a,b){a=a|0;b=b|0;v[a+37|0]=b;}function rs(a,b){a=a|0;b=b|0;v[a+28|0]=b;}function oh(a,b){a=a|0;b=b|0;v[a+44|0]=b;}function ns(a,b){a=a|0;b=b|0;v[a+49|0]=b;}function ls(a,b){a=a|0;b=b|0;v[a+48|0]=b;}function js(a,b){a=a|0;b=b|0;v[a+50|0]=b;}function it(a,b){a=a|0;b=b|0;v[a+20|0]=b;}function du(a,b){a=a|0;b=b|0;x[a+4>>2]=b;}function dt(a){a=a|0;a=a-4|0;Od(a);La(a);}function _l(a){a=a|0;a=a-4|0;md(a);La(a);}function Ud(a){a=a|0;return E(B[a+8>>2])}function Nq(a){a=a|0;return zd(a-20|0)|0}function Mu(a){a=a|0;x[a>>2]=13752;La(a);}function It(a,b){a=a|0;b=b|0;v[a+88|0]=b;}function Fs(a,b){a=a|0;b=b|0;v[a+36|0]=b;}function An(a,b){a=a|0;b=b|0;v[a+53|0]=b;}function sv(a,b){a=a|0;b=b|0;sa[a|0](b);}function rv(a){Xf(54460,x[13616]);}function rt(a){a=a|0;return Od(a-4|0)|0}function pq(a){a=a|0;return x[a+136>>2]}function om(a){a=a|0;return md(a-4|0)|0}function ko(a){a=a|0;return x[a+112>>2]}function Za(a){a=a|0;return sa[a|0]()|0}function Ur(a){a=E(a);return E(E(M(a)))}function Kr(a){a=a|0;return x[a+224>>2]}function Hr(a){a=a|0;return x[a+100>>2]}function yo(a){a=a|0;return x[a+80>>2]}function xf(a){a=a|0;return x[a+56>>2]}function rn(a){a=a|0;return E(B[a>>2])}function rd(a){a=a|0;return x[a+24>>2]}function qr(a){a=a|0;return y[a+140|0]}function nr(a){a=a|0;return x[a+48>>2]}function nh(a){a=a|0;return x[a+44>>2]}function jc(a){a=a|0;return x[a+20>>2]}function fh(a){a=a|0;return x[a+52>>2]}function cd(a){a=a|0;return x[a+12>>2]}function ad(a){a=a|0;return x[a+16>>2]}function Zs(a){a=a|0;return x[a+32>>2]}function Xg(a,b){Wg(a,Tc(x[a+4>>2],b));}function Wn(a){a=a|0;return x[a+36>>2]}function Jd(a){a=a|0;return x[a+40>>2]}function Ht(a){a=a|0;return y[a+117|0]}function Fg(a){a=a|0;return x[a+60>>2]}function Ao(a){a=a|0;return x[a+28>>2]}function Ah(a){a=a|0;return x[a+64>>2]}function zr(a){a=a|0;return y[a+80|0]}function xs(a){a=a|0;return y[a+37|0]}function xr(a){a=a|0;return y[a+81|0]}function vs(a){a=a|0;return y[a+29|0]}function ss(a){a=a|0;return y[a+28|0]}function re(a,b,c,d){ue(a+16|0,b,c,d);}function ph(a){a=a|0;return y[a+44|0]}function os(a){a=a|0;return y[a+49|0]}function oo(a){a=a|0;return y[a+84|0]}function no(a){a=a|0;return y[a+85|0]}function ms(a){a=a|0;return y[a+48|0]}function ks(a){a=a|0;return y[a+50|0]}function jt(a){a=a|0;return y[a+20|0]}function bb(a,b){return bi(a,b,16,-1)}function _i(a){a=a|0;if(a){Ja(wg(a));}}function Wr(a){a=E(a);return E(Hb(a))}function Vr(a){a=E(a);return E(Fb(a))}function Us(a){return 134217728}function Tr(a){a=E(a);return E(Qf(a))}function Rb(a){a=a|0;return x[a+4>>2]}function Ls(a){a=a|0;return y[a+36|0]}function Kd(a){a=a|0;return x[a+8>>2]}function Jt(a){a=a|0;return y[a+88|0]}function Gs(a){return 117440512}function At(a){a=a|0;return y[a+60|0]}function wk(a){a=a|0;return x[a>>2]}function uj(a){a=a|0;return a+140|0}function qm(a){a=a|0;return a+204|0}function hm(a){a=a|0;return a+144|0}function Mq(a){a=a|0;La(zd(a-20|0));}function Jp(a){a=a|0;return a+160|0}function Ir(a){a=a|0;return a+104|0}function Ip(a){a=a|0;return a+176|0}function Hp(a){a=a|0;return a+192|0}function ul(a){a=a|0;return a+16|0}function tl(a){a=a|0;return a+36|0}function qq(a){a=a|0;return a+72|0}function co(a){a=a|0;x[a+152>>2]=0;}function cl(){return Qg(Pa(232))|0}function Vj(){return Df(Pa(172))|0}function Ts(a){a=a|0;return a+20|0}function Ml(a){a=a|0;return a+24|0}function Ll(a){a=a|0;return a+44|0}function $k(){return Ae(Pa(232))|0}function zw(a){return 21940}function zv(a){return 40864}function ys(a){return 54156}function yn(a){a=a|0;x[a+20>>2]=0;}function yi(a){return 20876}function xw(a){return 22280}function vw(a){return 22712}function vt(a){return 54056}function uo(a){return 54340}function tw(a){return 23044}function tt(a){return 54068}function sr(a){return 54208}function so(a){return 54352}function qw(a){return 23368}function qu(a){return 53992}function qt(a){return 54080}function ow(a){return 23704}function mw(a){return 24036}function kw(a){return 24360}function jr(a){return 54220}function jo(a){return 54364}function iw(a){return 24692}function iu(a){return 54004}function hu(a){return 54016}function ht(a){return 54104}function gu(a){return 54028}function gl(a){return 22560}function fw(a){return 25024}function es(a){return 54168}function eo(a){return 54376}function dw(a){return 25388}function dr(a){return 54232}function bw(a){return 25744}function bt(a){return 54116}function aj(a){return 39596}function _t(a){return 54040}function _q(a){return 54244}function Zv(a){return 26496}function Zn(a){return 54388}function Yi(a){return 40052}function Yd(a){a=a|0;if(a){Ja(a);}}function Xi(a){return 40456}function Wv(a){return 26872}function Ws(a){return 54128}function Wq(a){return 54256}function Uv(a){return 27268}function Sv(a){return 27644}function Sn(a){return 54400}function Rq(a){return 54268}function Rn(a){return 54412}function Qv(a){return 39708}function Pr(a){return 54184}function Oi(a){return 20256}function Lq(a){return 54280}function Kw(a){return 21176}function Jv(a){return 40188}function Js(a){return 54140}function Fq(a){return 54292}function Ei(a){return 20588}function Cw(a){return 21608}function Cq(a){return 54304}function Ar(a){return 54196}function $v(a){return 26116}function $i(a){return 39952}function yu(a){a=a|0;Lh(a);La(a);}function tq(a){a=a|0;$g(a);La(a);}function pp(a){a=a|0;Mg(a);La(a);}function pn(a){a=a|0;df(a);La(a);}function lt(a){a=a|0;Od(a);La(a);}function kt(a){a=a|0;gc(a);La(a);}function fm(a){a=a|0;md(a);La(a);}function cr(a){a=a|0;Se(a);La(a);}function bo(a){a=a|0;le(a);La(a);}function aq(a){a=a|0;Ee(a);La(a);}function _n(a){a=a|0;ke(a);La(a);}function Uo(a){a=a|0;we(a);La(a);}function No(a){a=a|0;Hg(a);La(a);}function Mr(a){a=a|0;Ed(a);La(a);}function Kn(a){a=a|0;Bg(a);La(a);}function Is(a){a=a|0;th(a);La(a);}function In(a){a=a|0;yg(a);Ja(a);}function He(a){a=a|0;Zg(a);Ge(a);}function Na(a){a=a|0;return a|0}function zp(a){a=a|0;La(Ce(a));}function yv(a){a=a|0;sa[a|0]();}function yp(a){a=a|0;La(Be(a));}function uu(a){a=a|0;Kh(a-4|0);}function tu(a){a=a|0;La(Jh(a));}function or(a){a=a|0;La(gh(a));}function ch(a){a=a|0;La(le(a));}function bu(a){a=a|0;La(Hh(a));}function _s(a){a=a|0;La(xh(a));}function Xq(a){a=a|0;La(Se(a));}function Ss(a){a=a|0;La(wh(a));}function Sq(a){a=a|0;La(Qd(a));}function Sp(a){a=a|0;La(De(a));}function Oq(a){a=a|0;La(zd(a));}function Mv(a){a=a|0;La(de(a));}function Ks(a){a=a|0;La(uh(a));}function Ij(a){df(53940);}function Gp(a){a=a|0;La(Ng(a));}function Go(a){a=a|0;La(te(a));}function Bh(a){a=a|0;La(Rc(a));}function iv(){return x[13618]}function hv(){return x[13401]}function gv(){return x[13619]}function fv(){return x[13620]}function Uu(a){return 0}function Ih(a,b){}function Xb(a){a=a|0;La(a);}function Tb(a){a=a|0;Ja(a);}function Ic(a){p();}function Of(){kb();p();}function kb(){O();p();}function Ya(a){} + var sa=c([null,df,pn,kc,Fu,Io,wu,_p,ou,Na,Xb,cu,Sj,Ij,Od,lt,rt,dt,Xb,Bg,Kn,md,fm,om,_l,Sw,Hw,xt,Aw,Bt,rw,Lt,gw,Qn,Xv,de,Mv,zm,Bv,_u,Vu,Xb,Su,Ru,Pu,Mu,Lh,yu,xu,Kh,vu,uu,Jh,tu,zu,su,Au,ru,Ya,Na,Xb,qu,pu,nu,mu,lu,ku,ju,Ih,Ya,Qd,Ic,iu,Of,Ya,Ic,hu,Ya,Hh,bu,gu,fu,eu,au,$t,Ya,Ft,Et,_t,Ef,Ht,Gt,Dt,Ct,yt,wt,Ya,Rc,Bh,vt,ut,Ya,Bh,tt,st,Ya,nt,mt,qt,pt,ot,Xb,Ya,gc,kt,Ya,Eb,Ic,ht,Ya,xh,_s,bt,at,$s,Ys,Xs,Ya,wh,Ss,Ws,Vs,Us,Rs,Qs,Ns,Ms,uh,Ks,Ya,th,Is,Js,Hs,Gs,Na,Tb,Ds,Cs,Bs,As,zs,Ya,qs,ps,ys,ws,ph,oh,ff,is,hs,gs,fs,Ya,bs,as,es,ds,cs,$r,_r,Ya,Ed,Mr,Pr,Cr,Nr,Lr,Or,Br,Ya,ur,tr,Ar,vr,Ya,gh,or,sr,rr,qr,pr,ff,lr,kr,Ya,fr,er,jr,ir,hr,Ya,Se,cr,dr,br,ar,Ya,Xq,_q,Zq,Yq,Ya,Sq,Wq,Tq,Xb,Ya,zd,Oq,Rq,Qq,Nq,Mq,Ya,Iq,Hq,Lq,Kq,jc,Ya,le,ch,Fq,Eq,Dq,Ya,ch,Cq,Bq,Aq,$g,tq,uq,gq,vq,fq,wq,eq,xq,dq,yq,cq,Ya,Ee,aq,Xb,bq,$p,De,Sp,Rp,Qp,Pp,Op,Np,Mp,Ng,Gp,Fp,Ep,Dp,Cp,Bp,Ap,Ce,zp,Be,yp,Mg,pp,qp,ap,rp,$o,sp,_o,tp,Zo,up,Yo,vp,Xo,wp,Wo,xp,Vo,we,Uo,To,So,Ro,Qo,Oo,Ko,Hg,No,Jo,Ho,te,Go,Po,Fo,Bo,zo,wo,vo,Ya,Na,Ic,uo,Ya,qo,po,so,ro,ph,oh,ff,mo,lo,Ya,go,fo,jo,io,ho,Ya,bo,eo,ao,$n,ke,_n,Ya,Un,Tn,Zn,Yn,Xn,Ya,Na,Ic,Sn,Ya,Ic,Rn,Xb,Ih,Pn,Ya,Xb,On,Nn,Ya,Ra,yg,In,Na,Xb,Hn,Fn,Qa,Ra,rn,qn,Zr,Yr,on,Xr,nn,Sb,Va,Wr,Vr,Ur,Tr,zb,yb,mn,Sr,ln,Rr,Xe,Qr,Fd,Qa,Ra,Za,kn,jn,hn,gn,fn,en,dn,cn,bn,an,Qa,fe,ee,Qa,Ra,Za,$m,Dg,_m,Cg,Zm,Qa,Ra,Jb,Ym,wc,Gb,ad,Ka,yh,Sa,jt,Ka,it,Sa,Qa,Na,Na,Ra,Jb,Xm,nd,Ua,Jd,Ka,ef,Sa,nh,Ka,mh,Sa,ms,Ka,ls,Sa,os,ns,ks,js,lc,eb,Hc,ib,Gc,Yc,Qa,Na,Na,Ra,Jb,Wm,nd,Ua,Jd,Ka,ef,Sa,nh,Ka,mh,Sa,nr,Ka,mr,Sa,fh,Ka,eh,Sa,Gc,eb,Yc,ib,Bd,Fh,Cf,Eh,Id,bf,Hd,Ye,Qa,Ra,Zp,vc,Yp,Vm,Xp,Um,Wp,Tm,Sm,Rm,Qm,Pm,Om,Nm,Mm,Lm,Vp,Oc,Up,eb,Tp,Qa,Ra,qg,Km,Rb,xb,cd,Ka,Ps,Sa,vh,eb,Os,ib,Jm,Gb,Im,Nc,Ud,dc,cc,pc,oc,Qa,Ra,Jb,Hm,wc,Gb,ad,Ka,yh,Sa,lf,eb,kf,ib,Gm,Fm,Nc,pg,Em,yc,Vc,lc,Hc,Qa,Ra,wc,Gb,Qa,Na,Na,Ra,Fg,Ka,Dm,Ua,Cm,fh,Ka,eh,Sa,xf,Ka,wf,Sa,Bm,Am,Qc,Qa,Na,Na,Ra,Jb,ym,wc,Gb,Ka,Qa,Na,Na,Ra,Jb,xm,Ah,Ka,zh,Sa,Ka,Qa,Na,Na,Ra,Jb,wm,vm,Gb,um,Nc,tm,Ua,sm,rm,Ua,qm,xb,Gr,eb,Fr,ib,Er,Dr,Kr,Ka,Jr,Sa,pm,mc,Db,Hr,Ka,Dd,Sa,Ka,We,Qa,Na,Na,Ra,Jb,nm,mm,Ua,zr,Ka,yr,Sa,xr,wr,Ka,Qa,Na,Na,Ra,Jb,lm,lf,eb,kf,ib,zf,yf,Nd,Md,km,jm,Vq,og,Ka,Qa,Na,Na,Ra,Jb,im,dc,eb,cc,ib,pc,oc,Wc,vd,yc,Vc,Cc,Bc,lc,Hc,Gc,Yc,hm,xb,gm,Gb,em,Nc,Rb,Ka,dm,Ua,cm,ce,bm,Ad,Db,am,$l,Ka,Qa,Ra,_b,_b,_b,_b,ld,ld,Qa,Na,Na,Ra,jb,Zl,ld,ld,_b,_b,_b,_b,Qa,Ra,Jb,Yl,Xl,Gb,fc,ec,fc,ec,fc,ec,Qa,Ra,Wl,Gb,fc,ec,Vl,Ul,Qa,Ra,Tl,Sl,Rl,Cb,Qa,Na,Na,fe,jb,Ql,ee,Qa,Na,Na,fe,jb,Pl,Qa,Ra,Ol,Nl,Rb,Ka,mg,Gb,jc,xb,Ml,xb,Ll,yo,Ka,xo,Sa,Qa,Ra,Db,Ka,Qa,Na,Na,Ra,kd,Kl,Rb,xb,jd,Ua,Jd,Ka,ef,Sa,rd,Ka,qh,Sa,ss,Ka,rs,Sa,vs,us,dc,eb,cc,ib,pc,oc,gf,Db,Jl,Il,Hl,Gl,Qa,Na,Na,Ra,kd,Fl,Rb,xb,jd,Ua,rd,Ka,qh,Sa,Nd,eb,Md,ib,dc,cc,pc,oc,Cc,Bc,Ka,Sa,gf,Db,Qa,Na,Na,Ra,Jb,El,nd,Ua,Jd,Ka,Wc,eb,yc,lc,Gc,Bd,Cf,Id,Hd,Dh,Ch,oo,Ka,no,Qa,Na,Na,Ra,kd,Dl,Rb,xb,jd,Ua,rd,Ka,Nd,eb,Md,ib,dc,cc,pc,oc,Cc,Bc,Ka,Sa,gf,Db,Qa,Na,Na,Ra,Cl,Bl,Rb,xb,Kd,xb,cd,xb,kg,Ua,dc,eb,cc,ib,pc,oc,Cc,Bc,Wc,vd,yc,Vc,lc,Hc,Gc,Yc,Bd,Fh,Cf,Eh,Id,bf,Hd,Ye,Dh,Wt,Ch,Vt,kh,jh,Jt,Ka,It,Sa,_g,Yg,Jg,Ig,Ut,Tt,St,Rt,ve,se,Qt,Pt,Db,Ef,hc,Al,Gh,Ot,Nt,Mt,Kt,zl,yl,xl,Zt,ee,Yt,Xt,Qa,Ra,jg,wl,Rb,Ka,mg,Gb,jc,Ka,zf,eb,yf,ib,Nd,Md,dc,cc,pc,oc,Cc,Bc,Wc,vd,yc,Vc,lc,Hc,xf,Ka,wf,Sa,At,Ka,zt,Sa,Qa,Ra,kd,vl,Rb,xb,Kd,xb,ul,xb,tl,sl,Ua,cd,xb,Fg,Ka,Eo,Sa,Co,ib,Do,eb,qe,Db,Qa,Ra,Jb,rl,wc,Gb,ql,Ua,pl,Ua,ol,nl,Mo,Sa,Lo,ml,ig,ll,ae,kl,Ua,jl,il,hl,ig,gl,fl,jg,el,fc,ec,dl,Gb,ad,xb,Qa,Ra,Za,cl,Jp,bl,Ip,al,Hp,Pg,_b,zc,Sa,Lp,Db,Kp,Ka,Qa,Ra,Za,$k,wc,Gb,np,Sa,kg,Ua,_k,Ua,Zk,Ua,Ah,Ka,zh,Sa,Yk,Ua,Xk,Ua,Wk,Ua,Vk,Ua,Uk,Ua,mp,eb,lp,ib,kp,jp,ip,hp,Vg,Ug,Tk,gp,Sk,fp,cp,bp,Rk,ep,Qk,dp,Pk,Cb,Ok,Cb,Nk,Cb,Mk,Lk,Cb,Kk,Cb,Jk,Cb,Ik,Cb,Hk,Cb,Gk,Cb,Fk,Qa,Ra,Ek,Dk,Ck,Bk,pg,Gb,Ak,Ua,Bf,Oc,dc,eb,cc,ib,Qa,Ra,Bb,Ab,Ka,Qa,Na,Na,Ra,Bb,Ab,Ka,gt,Ka,ft,Sa,et,nb,zk,Kb,yk,ct,og,Qa,Na,Na,Ra,jb,xk,wk,Ka,gr,vk,Bb,Ab,Qa,Na,Na,Ra,jb,uk,Ka,Bb,Ab,Qa,Na,Na,Ra,jb,tk,Ka,Bb,Ab,Qa,Na,Na,Ra,jb,sk,jc,Ka,bd,Sa,$d,Ua,Jq,cg,Bb,Ab,Qa,Na,Na,Ra,jb,rk,jc,Ka,bd,Sa,$d,Ua,sf,bg,Bb,Ab,Qa,Na,Na,Ra,jb,qk,Wn,Ka,Vn,Sa,ie,pk,Bb,Ab,Qa,Na,Na,Ra,jb,ok,Rb,Ka,du,Sa,nk,Ua,mk,Ua,Ka,cd,lk,kk,Bb,Ab,Qa,Na,Na,Ra,jb,jk,jc,Ka,bd,Sa,xf,Ka,wf,Sa,$d,Ua,ik,Ua,hk,gk,Bb,Ab,Qa,Na,Na,Ra,jb,fk,ek,Ua,dk,Ua,Ka,Kd,Ka,Es,vc,Bb,Ab,Qa,Na,Na,Ra,jb,ck,bk,Ua,Ka,Kd,Ka,ak,Ua,of,$j,Bb,Ab,Qa,Na,Na,Ra,jb,_j,Ka,$e,Zj,Bb,Ab,Qa,Na,Na,Ra,jb,Yj,Ka,me,bg,Bb,Ab,Qa,Na,Na,Ra,jb,Xj,Ka,$q,cg,Bb,Ab,Qa,Na,Na,Ra,jb,Wj,Ka,Bb,Ab,Qa,Ra,Za,Vj,ad,Ka,jc,Ka,rd,Ao,Zs,Ka,Ls,Ka,Fs,Sa,xs,ts,Cc,eb,Bc,ib,Wc,vd,yc,Vc,lc,Hc,Gc,Yc,Bd,Uq,Id,bf,Hd,Ye,kh,jh,Gq,zq,_g,Yg,Jg,Ig,ve,se,ko,Ka,to,Sa,Pq,op,co,Db,Qa,Ra,jb,Uj,Ud,eb,Rf,ib,Rb,Ka,Tj,Rj,Qj,Pj,Vd,Oj,Qa,Ra,jb,Nj,ad,Ka,$f,Ua,ve,eb,se,ib,ng,id,Oc,eg,Db,dg,Sa,Mj,Lj,Kj,Jj,Hj,Gj,Fj,Ej,ag,Dj,nj,Cj,dj,Wi,Oc,Bj,ce,Aj,ce,Ni,Fi,Qa,Ra,jb,zj,Rb,Ka,jd,Ua,nd,Ua,$f,yj,Ua,xj,Ua,wj,Ua,Ir,vj,pq,Ka,uj,xb,Vg,eb,Ug,ib,kq,jq,iq,hq,oq,nq,mq,lq,Ke,Db,Xc,He,Zg,Ge,rq,Ka,tj,Cb,sj,Cb,rj,Cb,qj,pj,Nc,Wg,Sa,oj,mj,lj,ae,kj,jj,ij,Cb,hj,Cb,gj,Cb,sq,Qa,Ra,Sa,Zd,fj,Db,Qa,Na,Na,Ra,ej,cj,zg,eb,Ag,ib,Ud,Rf,Sa,Zd,Db,Qa,Na,Na,Ra,qg,bj,Sa,Zd,Db,zg,eb,Ag,ib,Ud,Rf,Ln,Mn,vh,Jn,lf,kf,zf,yf,aj,Yd,fc,ec,$i,_i,fc,ec,Ts,Zi,Yi,Yd,fc,ec,Xi,_f,Za,Vi,Gn,Oc,En,Ui,Dn,Zf,Cn,ib,Bn,Ka,An,Sa,vn,zn,Ti,bd,Sa,bd,Sa,yn,Db,cd,Ka,xn,Si,wn,vc,un,qq,Ri,tn,Qi,sn,Pi,Oi,hb,Za,db,Mi,Li,Ki,Ji,mb,Ka,Ii,cb,Hi,Gi,Ei,Di,Za,db,Ci,Sa,Bi,vc,Yf,Ka,Ai,cb,zi,Xd,yi,hb,Za,db,xi,Rw,Qw,Pw,Ow,Ka,Nw,cb,Mw,Lw,Kw,Jw,Za,db,Iw,Zf,Gw,Fw,Yf,Ka,Ew,cb,Dw,ae,Cw,hb,Za,db,wb,vb,ub,tb,mb,Ka,Bw,cb,sb,rb,zw,hb,Za,db,wb,vb,ub,tb,mb,Ka,yw,cb,sb,rb,xw,hb,Za,db,wb,vb,ub,tb,mb,Ka,ww,cb,sb,rb,vw,hb,Za,db,wb,vb,ub,tb,mb,Ka,uw,cb,sb,rb,tw,hb,Za,db,wb,vb,ub,tb,mb,Ka,sw,cb,sb,rb,qw,hb,Za,db,wb,vb,ub,tb,mb,Ka,pw,cb,sb,rb,ow,hb,Za,db,wb,vb,ub,tb,mb,Ka,nw,cb,sb,rb,mw,hb,Za,db,wb,vb,ub,tb,mb,Ka,lw,cb,sb,rb,kw,hb,Za,db,wb,vb,ub,tb,mb,Ka,jw,cb,sb,rb,iw,hb,Za,db,wb,vb,ub,tb,mb,Ka,hw,cb,sb,rb,fw,hb,Za,db,wb,vb,ub,tb,mb,Ka,ew,cb,sb,rb,dw,hb,Za,db,wb,vb,ub,tb,mb,Ka,cw,cb,sb,rb,bw,hb,Za,db,wb,vb,ub,tb,mb,Ka,aw,cb,sb,rb,$v,hb,Za,db,wb,vb,ub,tb,mb,Ka,_v,cb,sb,rb,Zv,hb,Za,db,wb,vb,ub,tb,mb,Ka,Yv,cb,sb,rb,Wv,hb,Za,db,wb,vb,ub,tb,mb,Ka,Vv,cb,sb,rb,Uv,hb,Za,db,wb,vb,ub,tb,mb,Ka,Tv,cb,sb,rb,Sv,hb,Za,db,wb,vb,ub,tb,mb,Ka,Rv,cb,sb,rb,Qv,hb,Za,db,Pv,Sa,Ov,vc,Nv,Ka,Lv,cb,Kv,Xd,Jv,hb,Za,db,Iv,Sa,Hv,vc,Gv,Ka,Fv,cb,Ev,Xd,zv,Yd,yv,qv,pv,Jb,jv,xv,ov,wv,nv,vv,mv,uv,lv,tv,kv,sv,_f,Za,iv,Za,hv,gv,Za,fv,tg,vi,Dv,Cv,Na,Tb,Av,Tb,rv,Na,Tb,ev,dv,cv,bv,si,ki,Xu,Yu,Zu,Wu,Qu,Uu,Tu,Na,Tb,Ya,Ya,Rh,Tb,si,Tb,Rh,Tb,Ou,Du,Gu,Iu,Tb,Hu,Tb,Cu,Eu,Ju,Tb,Nu,Lu,Ku]);function ta(){return u.byteLength/65536|0}function ya(za){za=za|0;var ua=ta()|0;var va=ua+za|0;if(ua=65536,"INITIAL_MEMORY should be larger than STACK_SIZE, was "+INITIAL_MEMORY+"! (STACK_SIZE="+65536+")");if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"];}else {wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":2147483648/65536});}updateMemoryViews();INITIAL_MEMORY=wasmMemory.buffer.byteLength;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift());}}callRuntimeCallbacks(__ATPRERUN__);}function initRuntime(){callRuntimeCallbacks(__ATINIT__);}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift());}}callRuntimeCallbacks(__ATPOSTRUN__);}function addOnPreRun(cb){__ATPRERUN__.unshift(cb);}function addOnInit(cb){__ATINIT__.unshift(cb);}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb);}var runDependencies=0;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies);}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies);}if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback();}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what);}what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}var wasmBinaryFile;wasmBinaryFile="spine.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile);}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary);throw "both async and sync fetching of the wasm failed"}catch(err){abort(err);}}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB)){if(typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw "failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinary(binaryFile))}}return Promise.resolve().then(()=>getBinary(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>{return WebAssembly.instantiate(binary,imports)}).then(instance=>{return instance}).then(receiver,reason=>{err("failed to asynchronously prepare wasm: "+reason);abort(reason);})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}else {return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;runMemoryInitializer();wasmTable=Module["asm"]["H"];addOnInit(Module["asm"]["G"]);removeRunDependency();return exports}addRunDependency();function receiveInstantiationResult(result){receiveInstance(result["instance"]);}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);readyPromiseReject(e);}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return {}}var memoryInitializer="spine.js.mem";function runMemoryInitializer(){if(!isDataURI(memoryInitializer)){memoryInitializer=locateFile(memoryInitializer);}{addRunDependency();var applyMemoryInitializer=data=>{if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,1024);if(Module["memoryInitializerRequest"])delete Module["memoryInitializerRequest"].response;removeRunDependency();};var doBrowserLoad=()=>{readAsync(memoryInitializer,applyMemoryInitializer,()=>{var e=new Error("could not load memory initializer "+memoryInitializer);readyPromiseReject(e);});};if(Module["memoryInitializerRequest"]){var useRequest=()=>{var request=Module["memoryInitializerRequest"];var response=request.response;if(request.status!==200&&request.status!==0){console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+request.status+", retrying "+memoryInitializer);doBrowserLoad();return}applyMemoryInitializer(response);};if(Module["memoryInitializerRequest"].response){setTimeout(useRequest,0);}else {Module["memoryInitializerRequest"].addEventListener("load",useRequest);}}else {doBrowserLoad();}}}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module);}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023);}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function ___syscall_fcntl64(fd,cmd,varargs){return 0}function ___syscall_ioctl(fd,op,varargs){return 0}function ___syscall_openat(dirfd,path,flags,varargs){}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${size}`)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i);}embind_charCodes=codes;}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]];}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return "_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return `_${name}`}return name}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return {[name]:function(){return body.apply(this,arguments)}}[name]}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"");}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else {return `${this.name}: ${this.message}`}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes;});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count");}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt];}else {unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[];}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters);}});}});if(0===unregisteredTypes.length){onComplete(typeConverters);}}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`);}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else {throwBindingError(`Cannot register type '${name}' twice`);}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb());}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return !!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":8,"readValueFromPointer":function(pointer){var heap;if(size===1){heap=HEAP8;}else if(size===2){heap=HEAP16;}else if(size===4){heap=HEAP32;}else {throw new TypeError("Unknown boolean type size: "+name)}return this["fromWireType"](heap[pointer>>shift])},destructorFunction:null});}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass;}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass;}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return {count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted");}var finalizationRegistry=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr);}else {$$.ptrType.registeredClass.rawDestructor($$.ptr);}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$);}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}var registeredPointers={};function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k]);}}return rv}var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]();}}var delayFunction=undefined;function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes);}}function init_embind(){Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction;}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError("ptr should not be undefined");}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass;}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType");}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified");}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else {var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else {return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType;}else {toType=registeredPointerRecord.pointerType;}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else {return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function attachFinalizer(handle){if("undefined"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$);});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};finalizationRegistry.register(handle,info,handle);}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this);}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else {var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this);}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion");}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined;}}function ClassHandle_isDeleted(){return !this.$$.ptr}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this);}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion");}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes);}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype["isAliasOf"]=ClassHandle_isAliasOf;ClassHandle.prototype["clone"]=ClassHandle_clone;ClassHandle.prototype["delete"]=ClassHandle_delete;ClassHandle.prototype["isDeleted"]=ClassHandle_isDeleted;ClassHandle.prototype["deleteLater"]=ClassHandle_deleteLater;}function ClassHandle(){}function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${arguments.length}) - expects one of (${proto[methodName].overloadTable})!`);}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc;}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`);}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`);}Module[name].overloadTable[numArguments]=value;}else {Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments;}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[];}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`);}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass;}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`);}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`);}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`);}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`);}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr);}return ptr}else {return 0}}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`);}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`);}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`);}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal");}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr;}else {throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`);}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr;}else {var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,Emval.toHandle(function(){clonedHandle["delete"]();}));if(destructors!==null){destructors.push(this.rawDestructor,ptr);}}break;default:throwBindingError("Unsupporting sharing policy");}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`);}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`);}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`);}if(handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`);}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAP32[pointer>>2])}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr);}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr);}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle["delete"]();}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype["argPackAdvance"]=8;RegisteredPointer.prototype["readValueFromPointer"]=simpleReadValueFromPointer;RegisteredPointer.prototype["deleteObject"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype["fromWireType"]=RegisteredPointer_fromWireType;}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null;}else {this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null;}}else {this["toWireType"]=genericPointerToWireType;}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol");}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value;}else {Module[name]=value;Module[name].argCount=numArguments;}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr);}return func}function dynCall(sig,ptr,args){if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`);}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true;}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast);}if(downcast){downcast=embind__requireFunction(downcastSignature,downcast);}rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType]);});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype;}else {basePrototype=ClassHandle.prototype;}var constructor=createNamedFunction(legalFunctionName,function(){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[arguments.length];if(undefined===body){throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)}return body.apply(this,arguments)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);if(registeredClass.baseClass){if(registeredClass.baseClass.__derivedClasses===undefined){registeredClass.baseClass.__derivedClasses=[];}registeredClass.baseClass.__derivedClasses.push(registeredClass);}var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return [referenceConverter,pointerConverter,constPointerConverter]});}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr);}}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc,isAsync){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!");}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i>2]);}return array}function __embind_register_class_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,fn,isAsync){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=`${classType.name}.${methodName}`;function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes);}if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)];}var proto=classType.registeredClass.constructor;if(undefined===proto[methodName]){unboundTypesHandler.argCount=argCount-1;proto[methodName]=unboundTypesHandler;}else {ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-1]=unboundTypesHandler;}whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));var func=craftInvokerFunction(humanName,invokerArgsArray,null,rawInvoker,fn);if(undefined===proto[methodName].overloadTable){func.argCount=argCount-1;proto[methodName]=func;}else {proto[methodName].overloadTable[argCount-1]=func;}if(classType.registeredClass.__derivedClasses){for(const derivedClass of classType.registeredClass.__derivedClasses){if(!derivedClass.constructor.hasOwnProperty(methodName)){derivedClass.constructor[methodName]=func;}}}return []});return []});}function validateThis(this_,classType,humanName){if(!(this_ instanceof Object)){throwBindingError(`${humanName} with invalid "this": ${this_}`);}if(!(this_ instanceof classType.registeredClass.constructor)){throwBindingError(`${humanName} incompatible with "this" of type ${this_.constructor.name}`);}if(!this_.$$.ptr){throwBindingError(`cannot call emscripten binding method ${humanName} on deleted object`);}return upcastPointer(this_.$$.ptr,this_.$$.ptrType.registeredClass,classType.registeredClass)}function __embind_register_class_class_property(rawClassType,fieldName,rawFieldType,rawFieldPtr,getterSignature,getter,setterSignature,setter){fieldName=readLatin1String(fieldName);getter=embind__requireFunction(getterSignature,getter);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=`${classType.name}.${fieldName}`;var desc={get:function(){throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`,[rawFieldType]);},enumerable:true,configurable:true};if(setter){desc.set=()=>{throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`,[rawFieldType]);};}else {desc.set=v=>{throwBindingError(`${humanName} is a read-only property`);};}Object.defineProperty(classType.registeredClass.constructor,fieldName,desc);whenDependentTypesAreResolved([],[rawFieldType],function(fieldType){fieldType=fieldType[0];var desc={get:function(){return fieldType["fromWireType"](getter(rawFieldPtr))},enumerable:true};if(setter){setter=embind__requireFunction(setterSignature,setter);desc.set=v=>{var destructors=[];setter(rawFieldPtr,fieldType["toWireType"](destructors,v));runDestructors(destructors);};}Object.defineProperty(classType.registeredClass.constructor,fieldName,desc);return []});return []});}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){assert(argCount>0);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=`constructor ${classType.name}`;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[];}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes);};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return []});return []});}function __embind_register_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=`${classType.name}.${methodName}`;if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)];}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName);}function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes);}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler;}else {ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler;}whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction;}else {proto[methodName].overloadTable[argCount-2]=memberFunction;}return []});return []});}function __embind_register_class_property(classType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){fieldName=readLatin1String(fieldName);getter=embind__requireFunction(getterSignature,getter);whenDependentTypesAreResolved([],[classType],function(classType){classType=classType[0];var humanName=`${classType.name}.${fieldName}`;var desc={get:function(){throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`,[getterReturnType,setterArgumentType]);},enumerable:true,configurable:true};if(setter){desc.set=()=>{throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`,[getterReturnType,setterArgumentType]);};}else {desc.set=v=>{throwBindingError(humanName+" is a read-only property");};}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);whenDependentTypesAreResolved([],setter?[getterReturnType,setterArgumentType]:[getterReturnType],function(types){var getterReturnType=types[0];var desc={get:function(){var ptr=validateThis(this,classType,humanName+" getter");return getterReturnType["fromWireType"](getter(getterContext,ptr))},enumerable:true};if(setter){setter=embind__requireFunction(setterSignature,setter);var setterArgumentType=types[1];desc.set=function(v){var ptr=validateThis(this,classType,humanName+" setter");var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,v));runDestructors(destructors);};}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);return []});return []});}function HandleAllocator(){this.allocated=[undefined];this.freelist=[];this.get=function(id){return this.allocated[id]};this.has=function(id){return this.allocated[id]!==undefined};this.allocate=function(handle){var id=this.freelist.pop()||this.allocated.length;this.allocated[id]=handle;return id};this.free=function(id){this.allocated[id]=undefined;this.freelist.push(id);};}var emval_handles=new HandleAllocator;function __emval_decref(handle){if(handle>=emval_handles.reserved&&0===--emval_handles.get(handle).refcount){emval_handles.free(handle);}}function count_emval_handles(){var count=0;for(var i=emval_handles.reserved;i{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle);}return emval_handles.get(handle).value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{return emval_handles.allocate({refcount:1,value:value})}}}};function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null});}function enumReadValueFromPointer(name,shift,signed){switch(shift){case 0:return function(pointer){var heap=signed?HEAP8:HEAPU8;return this["fromWireType"](heap[pointer])};case 1:return function(pointer){var heap=signed?HEAP16:HEAPU16;return this["fromWireType"](heap[pointer>>1])};case 2:return function(pointer){var heap=signed?HEAP32:HEAPU32;return this["fromWireType"](heap[pointer>>2])};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_enum(rawType,name,size,isSigned){var shift=getShiftFromSize(size);name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name:name,constructor:ctor,"fromWireType":function(c){return this.constructor.values[c]},"toWireType":function(destructors,c){return c.value},"argPackAdvance":8,"readValueFromPointer":enumReadValueFromPointer(name,shift,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor);}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType));}return impl}function __embind_register_enum_value(rawEnumType,name,enumValue){var enumType=requireRegisteredType(rawEnumType,"enum");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(`${enumType.name}_${name}`,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value;}function embindRepr(v){if(v===null){return "null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else {return ""+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null});}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift;}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0};}else {toWireType=function(destructors,value){checkAssertions(value,this.name);return value};}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null});}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true});}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023;}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u;}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63;}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;}else {if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i;}else {len+=3;}}return len}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment;}else {str+=String.fromCharCode(0);str+=stringSegment;}decodeStartPtr=currentBytePtr+1;}}}else {var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1);}else {if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits");}HEAPU8[ptr+i]=charCode;}}else {for(var i=0;i>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit);}return str}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647;}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2;}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023);}else {str+=String.fromCharCode(utf32);}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647;}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023;}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4;}return len}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=()=>HEAPU16;shift=1;}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>HEAPU32;shift=2;}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment;}else {str+=String.fromCharCode(0);str+=stringSegment;}decodeStartPtr=currentBytePtr+charSize;}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`);}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr);}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr);}});}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}});}function __emval_incref(handle){if(handle>4){emval_handles.get(handle).refcount+=1;}}function __emval_take_value(type,arg){type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](arg);return Emval.toHandle(v)}function _abort(){abort("");}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num);}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;var pages=size-b.byteLength+65535>>>16;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}function _fd_close(fd){return 52}function _fd_read(fd,iov,iovcnt,pnum){return 52}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){return 70}var printCharBuffers=[null,[],[]];function printChar(stream,curr){var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0;}else {buffer.push(curr);}}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j>2]=num;return 0}function _spineListenerCallBackFromJS(){var wasmUtil=Module["SpineWasmUtil"];var listenerID=wasmUtil.getCurrentListenerID();var trackEntry=wasmUtil.getCurrentTrackEntry();var event=wasmUtil.getCurrentEvent();globalThis.TrackEntryListeners.emitListener(listenerID,trackEntry,event);}embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();var wasmImports={"p":___syscall_fcntl64,"x":___syscall_ioctl,"y":___syscall_openat,"t":__embind_register_bigint,"B":__embind_register_bool,"d":__embind_register_class,"g":__embind_register_class_class_function,"k":__embind_register_class_class_property,"e":__embind_register_class_constructor,"b":__embind_register_class_function,"h":__embind_register_class_property,"A":__embind_register_emval,"l":__embind_register_enum,"f":__embind_register_enum_value,"q":__embind_register_float,"m":__embind_register_integer,"j":__embind_register_memory_view,"r":__embind_register_std_string,"n":__embind_register_std_wstring,"C":__embind_register_void,"D":__emval_decref,"E":__emval_incref,"i":__emval_take_value,"c":_abort,"z":_emscripten_memcpy_big,"u":_emscripten_resize_heap,"o":_fd_close,"w":_fd_read,"s":_fd_seek,"v":_fd_write,"a":wasmMemory,"F":_spineListenerCallBackFromJS};createWasm();var _malloc=function(){return (_malloc=Module["asm"]["I"]).apply(null,arguments)};var _free=function(){return (_free=Module["asm"]["J"]).apply(null,arguments)};var ___getTypeName=function(){return (___getTypeName=Module["asm"]["K"]).apply(null,arguments)};Module["__embind_initialize_bindings"]=function(){return (Module["__embind_initialize_bindings"]=Module["asm"]["L"]).apply(null,arguments)};Module["dynCall_jiji"]=function(){return (Module["dynCall_jiji"]=Module["asm"]["M"]).apply(null,arguments)};var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller;};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun();}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("");},1);doRun();},1);}else {doRun();}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()();}}run(); + + + return spineWasm.ready + } + + ); + })()); + + }) + }; +})); diff --git a/headless/static/cocos-js/spine.js-f7f5ea79.js b/headless/static/cocos-js/spine.js-f7f5ea79.js new file mode 100644 index 00000000..e8be1db7 --- /dev/null +++ b/headless/static/cocos-js/spine.js-f7f5ea79.js @@ -0,0 +1,10 @@ +System.register([], (function (exports, module) { + 'use strict'; + return { + execute: (function () { + + var spine_js = exports('default', 'assets/spine.js.mem-c0c591ab.bin'); + + }) + }; +})); diff --git a/headless/static/cocos-js/spine.wasm-d2854650.js b/headless/static/cocos-js/spine.wasm-d2854650.js new file mode 100644 index 00000000..48e9aaca --- /dev/null +++ b/headless/static/cocos-js/spine.wasm-d2854650.js @@ -0,0 +1,2123 @@ +System.register(['./_virtual_cc-3c607f36.js'], (function (exports) { + 'use strict'; + var _createForOfIteratorHelperLoose; + return { + setters: [function (module) { + _createForOfIteratorHelperLoose = module._; + }], + execute: (function () { + + var spineWasm = exports('default', function () { + var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; + return function (spineWasm) { + if (spineWasm === void 0) { + spineWasm = {}; + } + var Module = typeof spineWasm != "undefined" ? spineWasm : {}; + var readyPromiseResolve, readyPromiseReject; + Module["ready"] = new Promise(function (resolve, reject) { + readyPromiseResolve = resolve; + readyPromiseReject = reject; + }); + var moduleOverrides = Object.assign({}, Module); + var ENVIRONMENT_IS_WEB = true; + var scriptDirectory = ""; + function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory); + } + return scriptDirectory + path; + } + var readBinary; + { + if (typeof document != "undefined" && document.currentScript) { + scriptDirectory = document.currentScript.src; + } + if (_scriptDir) { + scriptDirectory = _scriptDir; + } + if (scriptDirectory.indexOf("blob:") !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1); + } else { + scriptDirectory = ""; + } + } + var out = Module["print"] || console.log.bind(console); + var err = Module["printErr"] || console.error.bind(console); + Object.assign(Module, moduleOverrides); + moduleOverrides = null; + if (Module["arguments"]) Module["arguments"]; + if (Module["thisProgram"]) Module["thisProgram"]; + if (Module["quit"]) Module["quit"]; + var wasmBinary; + if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; + Module["noExitRuntime"] || true; + if (typeof WebAssembly != "object") { + abort("no native wasm support detected"); + } + var wasmMemory; + var ABORT = false; + function assert(condition, text) { + if (!condition) { + abort(text); + } + } + var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + function updateMemoryViews() { + var b = wasmMemory.buffer; + Module["HEAP8"] = HEAP8 = new Int8Array(b); + Module["HEAP16"] = HEAP16 = new Int16Array(b); + Module["HEAP32"] = HEAP32 = new Int32Array(b); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(b); + Module["HEAPU16"] = HEAPU16 = new Uint16Array(b); + Module["HEAPU32"] = HEAPU32 = new Uint32Array(b); + Module["HEAPF32"] = HEAPF32 = new Float32Array(b); + Module["HEAPF64"] = HEAPF64 = new Float64Array(b); + } + var wasmTable; + var __ATPRERUN__ = []; + var __ATINIT__ = []; + var __ATPOSTRUN__ = []; + function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); + } + function initRuntime() { + callRuntimeCallbacks(__ATINIT__); + } + function postRun() { + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); + } + function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); + } + function addOnInit(cb) { + __ATINIT__.unshift(cb); + } + function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); + } + var runDependencies = 0; + var dependenciesFulfilled = null; + function addRunDependency(id) { + runDependencies++; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + } + function removeRunDependency(id) { + runDependencies--; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (runDependencies == 0) { + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); + } + } + } + function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what); + } + what = "Aborted(" + what + ")"; + err(what); + ABORT = true; + what += ". Build with -sASSERTIONS for more info."; + var e = new WebAssembly.RuntimeError(what); + readyPromiseReject(e); + throw e; + } + var dataURIPrefix = "data:application/octet-stream;base64,"; + function isDataURI(filename) { + return filename.startsWith(dataURIPrefix); + } + var wasmBinaryFile; + wasmBinaryFile = "spine.wasm"; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); + } + function getBinary(file) { + try { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary); + } + if (readBinary) ; + throw "both async and sync fetching of the wasm failed"; + } catch (err) { + abort(err); + } + } + function getBinaryPromise(binaryFile) { + if (!wasmBinary && (ENVIRONMENT_IS_WEB )) { + if (typeof fetch == "function") { + return fetch(binaryFile, { + credentials: "same-origin" + }).then(function (response) { + if (!response["ok"]) { + throw "failed to load wasm binary file at '" + binaryFile + "'"; + } + return response["arrayBuffer"](); + })["catch"](function () { + return getBinary(binaryFile); + }); + } + } + return Promise.resolve().then(function () { + return getBinary(binaryFile); + }); + } + function instantiateArrayBuffer(binaryFile, imports, receiver) { + return getBinaryPromise(binaryFile).then(function (binary) { + return WebAssembly.instantiate(binary, imports); + }).then(function (instance) { + return instance; + }).then(receiver, function (reason) { + err("failed to asynchronously prepare wasm: " + reason); + abort(reason); + }); + } + function instantiateAsync(binary, binaryFile, imports, callback) { + if (!binary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(binaryFile) && typeof fetch == "function") { + return fetch(binaryFile, { + credentials: "same-origin" + }).then(function (response) { + var result = WebAssembly.instantiateStreaming(response, imports); + return result.then(callback, function (reason) { + err("wasm streaming compile failed: " + reason); + err("falling back to ArrayBuffer instantiation"); + return instantiateArrayBuffer(binaryFile, imports, callback); + }); + }); + } else { + return instantiateArrayBuffer(binaryFile, imports, callback); + } + } + function createWasm() { + var info = { + "a": wasmImports + }; + function receiveInstance(instance, module) { + var exports = instance.exports; + Module["asm"] = exports; + wasmMemory = Module["asm"]["F"]; + updateMemoryViews(); + wasmTable = Module["asm"]["H"]; + addOnInit(Module["asm"]["G"]); + removeRunDependency(); + return exports; + } + addRunDependency(); + function receiveInstantiationResult(result) { + receiveInstance(result["instance"]); + } + if (Module["instantiateWasm"]) { + try { + return Module["instantiateWasm"](info, receiveInstance); + } catch (e) { + err("Module.instantiateWasm callback failed with error: " + e); + readyPromiseReject(e); + } + } + instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult)["catch"](readyPromiseReject); + return {}; + } + function callRuntimeCallbacks(callbacks) { + while (callbacks.length > 0) { + callbacks.shift()(Module); + } + } + var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf8") : undefined; + function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; + if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { + return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)); + } + var str = ""; + while (idx < endPtr) { + var u0 = heapOrArray[idx++]; + if (!(u0 & 128)) { + str += String.fromCharCode(u0); + continue; + } + var u1 = heapOrArray[idx++] & 63; + if ((u0 & 224) == 192) { + str += String.fromCharCode((u0 & 31) << 6 | u1); + continue; + } + var u2 = heapOrArray[idx++] & 63; + if ((u0 & 240) == 224) { + u0 = (u0 & 15) << 12 | u1 << 6 | u2; + } else { + u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63; + } + if (u0 < 65536) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 65536; + str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023); + } + } + return str; + } + function UTF8ToString(ptr, maxBytesToRead) { + return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ""; + } + function ___syscall_fcntl64(fd, cmd, varargs) { + return 0; + } + function ___syscall_ioctl(fd, op, varargs) { + return 0; + } + function ___syscall_openat(dirfd, path, flags, varargs) { + } + function __embind_register_bigint(primitiveType, name, size, minRange, maxRange) {} + function getShiftFromSize(size) { + switch (size) { + case 1: + return 0; + case 2: + return 1; + case 4: + return 2; + case 8: + return 3; + default: + throw new TypeError("Unknown type size: " + size); + } + } + function embind_init_charCodes() { + var codes = new Array(256); + for (var i = 0; i < 256; ++i) { + codes[i] = String.fromCharCode(i); + } + embind_charCodes = codes; + } + var embind_charCodes = undefined; + function readLatin1String(ptr) { + var ret = ""; + var c = ptr; + while (HEAPU8[c]) { + ret += embind_charCodes[HEAPU8[c++]]; + } + return ret; + } + var awaitingDependencies = {}; + var registeredTypes = {}; + var typeDependencies = {}; + var char_0 = 48; + var char_9 = 57; + function makeLegalFunctionName(name) { + if (undefined === name) { + return "_unknown"; + } + name = name.replace(/[^a-zA-Z0-9_]/g, "$"); + var f = name.charCodeAt(0); + if (f >= char_0 && f <= char_9) { + return "_" + name; + } + return name; + } + function createNamedFunction(name, body) { + var _name$name; + name = makeLegalFunctionName(name); + return (_name$name = {}, _name$name[name] = function () { + return body.apply(this, arguments); + }, _name$name)[name]; + } + function extendError(baseErrorType, errorName) { + var errorClass = createNamedFunction(errorName, function (message) { + this.name = errorName; + this.message = message; + var stack = new Error(message).stack; + if (stack !== undefined) { + this.stack = this.toString() + "\n" + stack.replace(/^Error(:[^\n]*)?\n/, ""); + } + }); + errorClass.prototype = Object.create(baseErrorType.prototype); + errorClass.prototype.constructor = errorClass; + errorClass.prototype.toString = function () { + if (this.message === undefined) { + return this.name; + } else { + return this.name + ": " + this.message; + } + }; + return errorClass; + } + var BindingError = undefined; + function throwBindingError(message) { + throw new BindingError(message); + } + var InternalError = undefined; + function throwInternalError(message) { + throw new InternalError(message); + } + function whenDependentTypesAreResolved(myTypes, dependentTypes, getTypeConverters) { + myTypes.forEach(function (type) { + typeDependencies[type] = dependentTypes; + }); + function onComplete(typeConverters) { + var myTypeConverters = getTypeConverters(typeConverters); + if (myTypeConverters.length !== myTypes.length) { + throwInternalError("Mismatched type converter count"); + } + for (var i = 0; i < myTypes.length; ++i) { + registerType(myTypes[i], myTypeConverters[i]); + } + } + var typeConverters = new Array(dependentTypes.length); + var unregisteredTypes = []; + var registered = 0; + dependentTypes.forEach(function (dt, i) { + if (registeredTypes.hasOwnProperty(dt)) { + typeConverters[i] = registeredTypes[dt]; + } else { + unregisteredTypes.push(dt); + if (!awaitingDependencies.hasOwnProperty(dt)) { + awaitingDependencies[dt] = []; + } + awaitingDependencies[dt].push(function () { + typeConverters[i] = registeredTypes[dt]; + ++registered; + if (registered === unregisteredTypes.length) { + onComplete(typeConverters); + } + }); + } + }); + if (0 === unregisteredTypes.length) { + onComplete(typeConverters); + } + } + function registerType(rawType, registeredInstance, options) { + if (options === void 0) { + options = {}; + } + if (!("argPackAdvance" in registeredInstance)) { + throw new TypeError("registerType registeredInstance requires argPackAdvance"); + } + var name = registeredInstance.name; + if (!rawType) { + throwBindingError("type \"" + name + "\" must have a positive integer typeid pointer"); + } + if (registeredTypes.hasOwnProperty(rawType)) { + if (options.ignoreDuplicateRegistrations) { + return; + } else { + throwBindingError("Cannot register type '" + name + "' twice"); + } + } + registeredTypes[rawType] = registeredInstance; + delete typeDependencies[rawType]; + if (awaitingDependencies.hasOwnProperty(rawType)) { + var callbacks = awaitingDependencies[rawType]; + delete awaitingDependencies[rawType]; + callbacks.forEach(function (cb) { + return cb(); + }); + } + } + function __embind_register_bool(rawType, name, size, trueValue, falseValue) { + var shift = getShiftFromSize(size); + name = readLatin1String(name); + registerType(rawType, { + name: name, + "fromWireType": function fromWireType(wt) { + return !!wt; + }, + "toWireType": function toWireType(destructors, o) { + return o ? trueValue : falseValue; + }, + "argPackAdvance": 8, + "readValueFromPointer": function readValueFromPointer(pointer) { + var heap; + if (size === 1) { + heap = HEAP8; + } else if (size === 2) { + heap = HEAP16; + } else if (size === 4) { + heap = HEAP32; + } else { + throw new TypeError("Unknown boolean type size: " + name); + } + return this["fromWireType"](heap[pointer >> shift]); + }, + destructorFunction: null + }); + } + function ClassHandle_isAliasOf(other) { + if (!(this instanceof ClassHandle)) { + return false; + } + if (!(other instanceof ClassHandle)) { + return false; + } + var leftClass = this.$$.ptrType.registeredClass; + var left = this.$$.ptr; + var rightClass = other.$$.ptrType.registeredClass; + var right = other.$$.ptr; + while (leftClass.baseClass) { + left = leftClass.upcast(left); + leftClass = leftClass.baseClass; + } + while (rightClass.baseClass) { + right = rightClass.upcast(right); + rightClass = rightClass.baseClass; + } + return leftClass === rightClass && left === right; + } + function shallowCopyInternalPointer(o) { + return { + count: o.count, + deleteScheduled: o.deleteScheduled, + preservePointerOnDelete: o.preservePointerOnDelete, + ptr: o.ptr, + ptrType: o.ptrType, + smartPtr: o.smartPtr, + smartPtrType: o.smartPtrType + }; + } + function throwInstanceAlreadyDeleted(obj) { + function getInstanceTypeName(handle) { + return handle.$$.ptrType.registeredClass.name; + } + throwBindingError(getInstanceTypeName(obj) + " instance already deleted"); + } + var finalizationRegistry = false; + function detachFinalizer(handle) {} + function runDestructor($$) { + if ($$.smartPtr) { + $$.smartPtrType.rawDestructor($$.smartPtr); + } else { + $$.ptrType.registeredClass.rawDestructor($$.ptr); + } + } + function releaseClassHandle($$) { + $$.count.value -= 1; + var toDelete = 0 === $$.count.value; + if (toDelete) { + runDestructor($$); + } + } + function downcastPointer(ptr, ptrClass, desiredClass) { + if (ptrClass === desiredClass) { + return ptr; + } + if (undefined === desiredClass.baseClass) { + return null; + } + var rv = downcastPointer(ptr, ptrClass, desiredClass.baseClass); + if (rv === null) { + return null; + } + return desiredClass.downcast(rv); + } + var registeredPointers = {}; + function getInheritedInstanceCount() { + return Object.keys(registeredInstances).length; + } + function getLiveInheritedInstances() { + var rv = []; + for (var k in registeredInstances) { + if (registeredInstances.hasOwnProperty(k)) { + rv.push(registeredInstances[k]); + } + } + return rv; + } + var deletionQueue = []; + function flushPendingDeletes() { + while (deletionQueue.length) { + var obj = deletionQueue.pop(); + obj.$$.deleteScheduled = false; + obj["delete"](); + } + } + var delayFunction = undefined; + function setDelayFunction(fn) { + delayFunction = fn; + if (deletionQueue.length && delayFunction) { + delayFunction(flushPendingDeletes); + } + } + function init_embind() { + Module["getInheritedInstanceCount"] = getInheritedInstanceCount; + Module["getLiveInheritedInstances"] = getLiveInheritedInstances; + Module["flushPendingDeletes"] = flushPendingDeletes; + Module["setDelayFunction"] = setDelayFunction; + } + var registeredInstances = {}; + function getBasestPointer(class_, ptr) { + if (ptr === undefined) { + throwBindingError("ptr should not be undefined"); + } + while (class_.baseClass) { + ptr = class_.upcast(ptr); + class_ = class_.baseClass; + } + return ptr; + } + function getInheritedInstance(class_, ptr) { + ptr = getBasestPointer(class_, ptr); + return registeredInstances[ptr]; + } + function makeClassHandle(prototype, record) { + if (!record.ptrType || !record.ptr) { + throwInternalError("makeClassHandle requires ptr and ptrType"); + } + var hasSmartPtrType = !!record.smartPtrType; + var hasSmartPtr = !!record.smartPtr; + if (hasSmartPtrType !== hasSmartPtr) { + throwInternalError("Both smartPtrType and smartPtr must be specified"); + } + record.count = { + value: 1 + }; + return attachFinalizer(Object.create(prototype, { + $$: { + value: record + } + })); + } + function RegisteredPointer_fromWireType(ptr) { + var rawPointer = this.getPointee(ptr); + if (!rawPointer) { + this.destructor(ptr); + return null; + } + var registeredInstance = getInheritedInstance(this.registeredClass, rawPointer); + if (undefined !== registeredInstance) { + if (0 === registeredInstance.$$.count.value) { + registeredInstance.$$.ptr = rawPointer; + registeredInstance.$$.smartPtr = ptr; + return registeredInstance["clone"](); + } else { + var rv = registeredInstance["clone"](); + this.destructor(ptr); + return rv; + } + } + function makeDefaultHandle() { + if (this.isSmartPointer) { + return makeClassHandle(this.registeredClass.instancePrototype, { + ptrType: this.pointeeType, + ptr: rawPointer, + smartPtrType: this, + smartPtr: ptr + }); + } else { + return makeClassHandle(this.registeredClass.instancePrototype, { + ptrType: this, + ptr: ptr + }); + } + } + var actualType = this.registeredClass.getActualType(rawPointer); + var registeredPointerRecord = registeredPointers[actualType]; + if (!registeredPointerRecord) { + return makeDefaultHandle.call(this); + } + var toType; + if (this.isConst) { + toType = registeredPointerRecord.constPointerType; + } else { + toType = registeredPointerRecord.pointerType; + } + var dp = downcastPointer(rawPointer, this.registeredClass, toType.registeredClass); + if (dp === null) { + return makeDefaultHandle.call(this); + } + if (this.isSmartPointer) { + return makeClassHandle(toType.registeredClass.instancePrototype, { + ptrType: toType, + ptr: dp, + smartPtrType: this, + smartPtr: ptr + }); + } else { + return makeClassHandle(toType.registeredClass.instancePrototype, { + ptrType: toType, + ptr: dp + }); + } + } + function attachFinalizer(handle) { + if ("undefined" === typeof FinalizationRegistry) { + attachFinalizer = function attachFinalizer(handle) { + return handle; + }; + return handle; + } + finalizationRegistry = new FinalizationRegistry(function (info) { + releaseClassHandle(info.$$); + }); + attachFinalizer = function attachFinalizer(handle) { + var $$ = handle.$$; + var hasSmartPtr = !!$$.smartPtr; + if (hasSmartPtr) { + var info = { + $$: $$ + }; + finalizationRegistry.register(handle, info, handle); + } + return handle; + }; + detachFinalizer = function detachFinalizer(handle) { + return finalizationRegistry.unregister(handle); + }; + return attachFinalizer(handle); + } + function ClassHandle_clone() { + if (!this.$$.ptr) { + throwInstanceAlreadyDeleted(this); + } + if (this.$$.preservePointerOnDelete) { + this.$$.count.value += 1; + return this; + } else { + var clone = attachFinalizer(Object.create(Object.getPrototypeOf(this), { + $$: { + value: shallowCopyInternalPointer(this.$$) + } + })); + clone.$$.count.value += 1; + clone.$$.deleteScheduled = false; + return clone; + } + } + function ClassHandle_delete() { + if (!this.$$.ptr) { + throwInstanceAlreadyDeleted(this); + } + if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) { + throwBindingError("Object already scheduled for deletion"); + } + detachFinalizer(this); + releaseClassHandle(this.$$); + if (!this.$$.preservePointerOnDelete) { + this.$$.smartPtr = undefined; + this.$$.ptr = undefined; + } + } + function ClassHandle_isDeleted() { + return !this.$$.ptr; + } + function ClassHandle_deleteLater() { + if (!this.$$.ptr) { + throwInstanceAlreadyDeleted(this); + } + if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) { + throwBindingError("Object already scheduled for deletion"); + } + deletionQueue.push(this); + if (deletionQueue.length === 1 && delayFunction) { + delayFunction(flushPendingDeletes); + } + this.$$.deleteScheduled = true; + return this; + } + function init_ClassHandle() { + ClassHandle.prototype["isAliasOf"] = ClassHandle_isAliasOf; + ClassHandle.prototype["clone"] = ClassHandle_clone; + ClassHandle.prototype["delete"] = ClassHandle_delete; + ClassHandle.prototype["isDeleted"] = ClassHandle_isDeleted; + ClassHandle.prototype["deleteLater"] = ClassHandle_deleteLater; + } + function ClassHandle() {} + function ensureOverloadTable(proto, methodName, humanName) { + if (undefined === proto[methodName].overloadTable) { + var prevFunc = proto[methodName]; + proto[methodName] = function () { + if (!proto[methodName].overloadTable.hasOwnProperty(arguments.length)) { + throwBindingError("Function '" + humanName + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + proto[methodName].overloadTable + ")!"); + } + return proto[methodName].overloadTable[arguments.length].apply(this, arguments); + }; + proto[methodName].overloadTable = []; + proto[methodName].overloadTable[prevFunc.argCount] = prevFunc; + } + } + function exposePublicSymbol(name, value, numArguments) { + if (Module.hasOwnProperty(name)) { + if (undefined === numArguments || undefined !== Module[name].overloadTable && undefined !== Module[name].overloadTable[numArguments]) { + throwBindingError("Cannot register public name '" + name + "' twice"); + } + ensureOverloadTable(Module, name, name); + if (Module.hasOwnProperty(numArguments)) { + throwBindingError("Cannot register multiple overloads of a function with the same number of arguments (" + numArguments + ")!"); + } + Module[name].overloadTable[numArguments] = value; + } else { + Module[name] = value; + if (undefined !== numArguments) { + Module[name].numArguments = numArguments; + } + } + } + function RegisteredClass(name, constructor, instancePrototype, rawDestructor, baseClass, getActualType, upcast, downcast) { + this.name = name; + this.constructor = constructor; + this.instancePrototype = instancePrototype; + this.rawDestructor = rawDestructor; + this.baseClass = baseClass; + this.getActualType = getActualType; + this.upcast = upcast; + this.downcast = downcast; + this.pureVirtualFunctions = []; + } + function upcastPointer(ptr, ptrClass, desiredClass) { + while (ptrClass !== desiredClass) { + if (!ptrClass.upcast) { + throwBindingError("Expected null or instance of " + desiredClass.name + ", got an instance of " + ptrClass.name); + } + ptr = ptrClass.upcast(ptr); + ptrClass = ptrClass.baseClass; + } + return ptr; + } + function constNoSmartPtrRawPointerToWireType(destructors, handle) { + if (handle === null) { + if (this.isReference) { + throwBindingError("null is not a valid " + this.name); + } + return 0; + } + if (!handle.$$) { + throwBindingError("Cannot pass \"" + embindRepr(handle) + "\" as a " + this.name); + } + if (!handle.$$.ptr) { + throwBindingError("Cannot pass deleted object as a pointer of type " + this.name); + } + var handleClass = handle.$$.ptrType.registeredClass; + var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass); + return ptr; + } + function genericPointerToWireType(destructors, handle) { + var ptr; + if (handle === null) { + if (this.isReference) { + throwBindingError("null is not a valid " + this.name); + } + if (this.isSmartPointer) { + ptr = this.rawConstructor(); + if (destructors !== null) { + destructors.push(this.rawDestructor, ptr); + } + return ptr; + } else { + return 0; + } + } + if (!handle.$$) { + throwBindingError("Cannot pass \"" + embindRepr(handle) + "\" as a " + this.name); + } + if (!handle.$$.ptr) { + throwBindingError("Cannot pass deleted object as a pointer of type " + this.name); + } + if (!this.isConst && handle.$$.ptrType.isConst) { + throwBindingError("Cannot convert argument of type " + (handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name) + " to parameter type " + this.name); + } + var handleClass = handle.$$.ptrType.registeredClass; + ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass); + if (this.isSmartPointer) { + if (undefined === handle.$$.smartPtr) { + throwBindingError("Passing raw pointer to smart pointer is illegal"); + } + switch (this.sharingPolicy) { + case 0: + if (handle.$$.smartPtrType === this) { + ptr = handle.$$.smartPtr; + } else { + throwBindingError("Cannot convert argument of type " + (handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name) + " to parameter type " + this.name); + } + break; + case 1: + ptr = handle.$$.smartPtr; + break; + case 2: + if (handle.$$.smartPtrType === this) { + ptr = handle.$$.smartPtr; + } else { + var clonedHandle = handle["clone"](); + ptr = this.rawShare(ptr, Emval.toHandle(function () { + clonedHandle["delete"](); + })); + if (destructors !== null) { + destructors.push(this.rawDestructor, ptr); + } + } + break; + default: + throwBindingError("Unsupporting sharing policy"); + } + } + return ptr; + } + function nonConstNoSmartPtrRawPointerToWireType(destructors, handle) { + if (handle === null) { + if (this.isReference) { + throwBindingError("null is not a valid " + this.name); + } + return 0; + } + if (!handle.$$) { + throwBindingError("Cannot pass \"" + embindRepr(handle) + "\" as a " + this.name); + } + if (!handle.$$.ptr) { + throwBindingError("Cannot pass deleted object as a pointer of type " + this.name); + } + if (handle.$$.ptrType.isConst) { + throwBindingError("Cannot convert argument of type " + handle.$$.ptrType.name + " to parameter type " + this.name); + } + var handleClass = handle.$$.ptrType.registeredClass; + var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass); + return ptr; + } + function simpleReadValueFromPointer(pointer) { + return this["fromWireType"](HEAP32[pointer >> 2]); + } + function RegisteredPointer_getPointee(ptr) { + if (this.rawGetPointee) { + ptr = this.rawGetPointee(ptr); + } + return ptr; + } + function RegisteredPointer_destructor(ptr) { + if (this.rawDestructor) { + this.rawDestructor(ptr); + } + } + function RegisteredPointer_deleteObject(handle) { + if (handle !== null) { + handle["delete"](); + } + } + function init_RegisteredPointer() { + RegisteredPointer.prototype.getPointee = RegisteredPointer_getPointee; + RegisteredPointer.prototype.destructor = RegisteredPointer_destructor; + RegisteredPointer.prototype["argPackAdvance"] = 8; + RegisteredPointer.prototype["readValueFromPointer"] = simpleReadValueFromPointer; + RegisteredPointer.prototype["deleteObject"] = RegisteredPointer_deleteObject; + RegisteredPointer.prototype["fromWireType"] = RegisteredPointer_fromWireType; + } + function RegisteredPointer(name, registeredClass, isReference, isConst, isSmartPointer, pointeeType, sharingPolicy, rawGetPointee, rawConstructor, rawShare, rawDestructor) { + this.name = name; + this.registeredClass = registeredClass; + this.isReference = isReference; + this.isConst = isConst; + this.isSmartPointer = isSmartPointer; + this.pointeeType = pointeeType; + this.sharingPolicy = sharingPolicy; + this.rawGetPointee = rawGetPointee; + this.rawConstructor = rawConstructor; + this.rawShare = rawShare; + this.rawDestructor = rawDestructor; + if (!isSmartPointer && registeredClass.baseClass === undefined) { + if (isConst) { + this["toWireType"] = constNoSmartPtrRawPointerToWireType; + this.destructorFunction = null; + } else { + this["toWireType"] = nonConstNoSmartPtrRawPointerToWireType; + this.destructorFunction = null; + } + } else { + this["toWireType"] = genericPointerToWireType; + } + } + function replacePublicSymbol(name, value, numArguments) { + if (!Module.hasOwnProperty(name)) { + throwInternalError("Replacing nonexistant public symbol"); + } + if (undefined !== Module[name].overloadTable && undefined !== numArguments) { + Module[name].overloadTable[numArguments] = value; + } else { + Module[name] = value; + Module[name].argCount = numArguments; + } + } + function dynCallLegacy(sig, ptr, args) { + var f = Module["dynCall_" + sig]; + return args && args.length ? f.apply(null, [ptr].concat(args)) : f.call(null, ptr); + } + var wasmTableMirror = []; + function getWasmTableEntry(funcPtr) { + var func = wasmTableMirror[funcPtr]; + if (!func) { + if (funcPtr >= wasmTableMirror.length) wasmTableMirror.length = funcPtr + 1; + wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr); + } + return func; + } + function dynCall(sig, ptr, args) { + if (sig.includes("j")) { + return dynCallLegacy(sig, ptr, args); + } + var rtn = getWasmTableEntry(ptr).apply(null, args); + return rtn; + } + function getDynCaller(sig, ptr) { + var argCache = []; + return function () { + argCache.length = 0; + Object.assign(argCache, arguments); + return dynCall(sig, ptr, argCache); + }; + } + function embind__requireFunction(signature, rawFunction) { + signature = readLatin1String(signature); + function makeDynCaller() { + if (signature.includes("j")) { + return getDynCaller(signature, rawFunction); + } + return getWasmTableEntry(rawFunction); + } + var fp = makeDynCaller(); + if (typeof fp != "function") { + throwBindingError("unknown function pointer with signature " + signature + ": " + rawFunction); + } + return fp; + } + var UnboundTypeError = undefined; + function getTypeName(type) { + var ptr = _getTypeName(type); + var rv = readLatin1String(ptr); + _free2(ptr); + return rv; + } + function throwUnboundTypeError(message, types) { + var unboundTypes = []; + var seen = {}; + function visit(type) { + if (seen[type]) { + return; + } + if (registeredTypes[type]) { + return; + } + if (typeDependencies[type]) { + typeDependencies[type].forEach(visit); + return; + } + unboundTypes.push(type); + seen[type] = true; + } + types.forEach(visit); + throw new UnboundTypeError(message + ": " + unboundTypes.map(getTypeName).join([", "])); + } + function __embind_register_class(rawType, rawPointerType, rawConstPointerType, baseClassRawType, getActualTypeSignature, getActualType, upcastSignature, upcast, downcastSignature, downcast, name, destructorSignature, rawDestructor) { + name = readLatin1String(name); + getActualType = embind__requireFunction(getActualTypeSignature, getActualType); + if (upcast) { + upcast = embind__requireFunction(upcastSignature, upcast); + } + if (downcast) { + downcast = embind__requireFunction(downcastSignature, downcast); + } + rawDestructor = embind__requireFunction(destructorSignature, rawDestructor); + var legalFunctionName = makeLegalFunctionName(name); + exposePublicSymbol(legalFunctionName, function () { + throwUnboundTypeError("Cannot construct " + name + " due to unbound types", [baseClassRawType]); + }); + whenDependentTypesAreResolved([rawType, rawPointerType, rawConstPointerType], baseClassRawType ? [baseClassRawType] : [], function (base) { + base = base[0]; + var baseClass; + var basePrototype; + if (baseClassRawType) { + baseClass = base.registeredClass; + basePrototype = baseClass.instancePrototype; + } else { + basePrototype = ClassHandle.prototype; + } + var constructor = createNamedFunction(legalFunctionName, function () { + if (Object.getPrototypeOf(this) !== instancePrototype) { + throw new BindingError("Use 'new' to construct " + name); + } + if (undefined === registeredClass.constructor_body) { + throw new BindingError(name + " has no accessible constructor"); + } + var body = registeredClass.constructor_body[arguments.length]; + if (undefined === body) { + throw new BindingError("Tried to invoke ctor of " + name + " with invalid number of parameters (" + arguments.length + ") - expected (" + Object.keys(registeredClass.constructor_body).toString() + ") parameters instead!"); + } + return body.apply(this, arguments); + }); + var instancePrototype = Object.create(basePrototype, { + constructor: { + value: constructor + } + }); + constructor.prototype = instancePrototype; + var registeredClass = new RegisteredClass(name, constructor, instancePrototype, rawDestructor, baseClass, getActualType, upcast, downcast); + if (registeredClass.baseClass) { + if (registeredClass.baseClass.__derivedClasses === undefined) { + registeredClass.baseClass.__derivedClasses = []; + } + registeredClass.baseClass.__derivedClasses.push(registeredClass); + } + var referenceConverter = new RegisteredPointer(name, registeredClass, true, false, false); + var pointerConverter = new RegisteredPointer(name + "*", registeredClass, false, false, false); + var constPointerConverter = new RegisteredPointer(name + " const*", registeredClass, false, true, false); + registeredPointers[rawType] = { + pointerType: pointerConverter, + constPointerType: constPointerConverter + }; + replacePublicSymbol(legalFunctionName, constructor); + return [referenceConverter, pointerConverter, constPointerConverter]; + }); + } + function runDestructors(destructors) { + while (destructors.length) { + var ptr = destructors.pop(); + var del = destructors.pop(); + del(ptr); + } + } + function craftInvokerFunction(humanName, argTypes, classType, cppInvokerFunc, cppTargetFunc, isAsync) { + var argCount = argTypes.length; + if (argCount < 2) { + throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!"); + } + var isClassMethodFunc = argTypes[1] !== null && classType !== null; + var needsDestructorStack = false; + for (var i = 1; i < argTypes.length; ++i) { + if (argTypes[i] !== null && argTypes[i].destructorFunction === undefined) { + needsDestructorStack = true; + break; + } + } + var returns = argTypes[0].name !== "void"; + var expectedArgCount = argCount - 2; + var argsWired = new Array(expectedArgCount); + var invokerFuncArgs = []; + var destructors = []; + return function () { + if (arguments.length !== expectedArgCount) { + throwBindingError("function " + humanName + " called with " + arguments.length + " arguments, expected " + expectedArgCount + " args!"); + } + destructors.length = 0; + var thisWired; + invokerFuncArgs.length = isClassMethodFunc ? 2 : 1; + invokerFuncArgs[0] = cppTargetFunc; + if (isClassMethodFunc) { + thisWired = argTypes[1]["toWireType"](destructors, this); + invokerFuncArgs[1] = thisWired; + } + for (var i = 0; i < expectedArgCount; ++i) { + argsWired[i] = argTypes[i + 2]["toWireType"](destructors, arguments[i]); + invokerFuncArgs.push(argsWired[i]); + } + var rv = cppInvokerFunc.apply(null, invokerFuncArgs); + function onDone(rv) { + if (needsDestructorStack) { + runDestructors(destructors); + } else { + for (var i = isClassMethodFunc ? 1 : 2; i < argTypes.length; i++) { + var param = i === 1 ? thisWired : argsWired[i - 2]; + if (argTypes[i].destructorFunction !== null) { + argTypes[i].destructorFunction(param); + } + } + } + if (returns) { + return argTypes[0]["fromWireType"](rv); + } + } + return onDone(rv); + }; + } + function heap32VectorToArray(count, firstElement) { + var array = []; + for (var i = 0; i < count; i++) { + array.push(HEAPU32[firstElement + i * 4 >> 2]); + } + return array; + } + function __embind_register_class_class_function(rawClassType, methodName, argCount, rawArgTypesAddr, invokerSignature, rawInvoker, fn, isAsync) { + var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); + methodName = readLatin1String(methodName); + rawInvoker = embind__requireFunction(invokerSignature, rawInvoker); + whenDependentTypesAreResolved([], [rawClassType], function (classType) { + classType = classType[0]; + var humanName = classType.name + "." + methodName; + function unboundTypesHandler() { + throwUnboundTypeError("Cannot call " + humanName + " due to unbound types", rawArgTypes); + } + if (methodName.startsWith("@@")) { + methodName = Symbol[methodName.substring(2)]; + } + var proto = classType.registeredClass.constructor; + if (undefined === proto[methodName]) { + unboundTypesHandler.argCount = argCount - 1; + proto[methodName] = unboundTypesHandler; + } else { + ensureOverloadTable(proto, methodName, humanName); + proto[methodName].overloadTable[argCount - 1] = unboundTypesHandler; + } + whenDependentTypesAreResolved([], rawArgTypes, function (argTypes) { + var invokerArgsArray = [argTypes[0], null].concat(argTypes.slice(1)); + var func = craftInvokerFunction(humanName, invokerArgsArray, null, rawInvoker, fn); + if (undefined === proto[methodName].overloadTable) { + func.argCount = argCount - 1; + proto[methodName] = func; + } else { + proto[methodName].overloadTable[argCount - 1] = func; + } + if (classType.registeredClass.__derivedClasses) { + for (var _iterator = _createForOfIteratorHelperLoose(classType.registeredClass.__derivedClasses), _step; !(_step = _iterator()).done;) { + var derivedClass = _step.value; + if (!derivedClass.constructor.hasOwnProperty(methodName)) { + derivedClass.constructor[methodName] = func; + } + } + } + return []; + }); + return []; + }); + } + function validateThis(this_, classType, humanName) { + if (!(this_ instanceof Object)) { + throwBindingError(humanName + " with invalid \"this\": " + this_); + } + if (!(this_ instanceof classType.registeredClass.constructor)) { + throwBindingError(humanName + " incompatible with \"this\" of type " + this_.constructor.name); + } + if (!this_.$$.ptr) { + throwBindingError("cannot call emscripten binding method " + humanName + " on deleted object"); + } + return upcastPointer(this_.$$.ptr, this_.$$.ptrType.registeredClass, classType.registeredClass); + } + function __embind_register_class_class_property(rawClassType, fieldName, rawFieldType, rawFieldPtr, getterSignature, getter, setterSignature, setter) { + fieldName = readLatin1String(fieldName); + getter = embind__requireFunction(getterSignature, getter); + whenDependentTypesAreResolved([], [rawClassType], function (classType) { + classType = classType[0]; + var humanName = classType.name + "." + fieldName; + var desc = { + get: function get() { + throwUnboundTypeError("Cannot access " + humanName + " due to unbound types", [rawFieldType]); + }, + enumerable: true, + configurable: true + }; + if (setter) { + desc.set = function () { + throwUnboundTypeError("Cannot access " + humanName + " due to unbound types", [rawFieldType]); + }; + } else { + desc.set = function (v) { + throwBindingError(humanName + " is a read-only property"); + }; + } + Object.defineProperty(classType.registeredClass.constructor, fieldName, desc); + whenDependentTypesAreResolved([], [rawFieldType], function (fieldType) { + fieldType = fieldType[0]; + var desc = { + get: function get() { + return fieldType["fromWireType"](getter(rawFieldPtr)); + }, + enumerable: true + }; + if (setter) { + setter = embind__requireFunction(setterSignature, setter); + desc.set = function (v) { + var destructors = []; + setter(rawFieldPtr, fieldType["toWireType"](destructors, v)); + runDestructors(destructors); + }; + } + Object.defineProperty(classType.registeredClass.constructor, fieldName, desc); + return []; + }); + return []; + }); + } + function __embind_register_class_constructor(rawClassType, argCount, rawArgTypesAddr, invokerSignature, invoker, rawConstructor) { + assert(argCount > 0); + var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); + invoker = embind__requireFunction(invokerSignature, invoker); + whenDependentTypesAreResolved([], [rawClassType], function (classType) { + classType = classType[0]; + var humanName = "constructor " + classType.name; + if (undefined === classType.registeredClass.constructor_body) { + classType.registeredClass.constructor_body = []; + } + if (undefined !== classType.registeredClass.constructor_body[argCount - 1]) { + throw new BindingError("Cannot register multiple constructors with identical number of parameters (" + (argCount - 1) + ") for class '" + classType.name + "'! Overload resolution is currently only performed using the parameter count, not actual type info!"); + } + classType.registeredClass.constructor_body[argCount - 1] = function () { + throwUnboundTypeError("Cannot construct " + classType.name + " due to unbound types", rawArgTypes); + }; + whenDependentTypesAreResolved([], rawArgTypes, function (argTypes) { + argTypes.splice(1, 0, null); + classType.registeredClass.constructor_body[argCount - 1] = craftInvokerFunction(humanName, argTypes, null, invoker, rawConstructor); + return []; + }); + return []; + }); + } + function __embind_register_class_function(rawClassType, methodName, argCount, rawArgTypesAddr, invokerSignature, rawInvoker, context, isPureVirtual, isAsync) { + var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); + methodName = readLatin1String(methodName); + rawInvoker = embind__requireFunction(invokerSignature, rawInvoker); + whenDependentTypesAreResolved([], [rawClassType], function (classType) { + classType = classType[0]; + var humanName = classType.name + "." + methodName; + if (methodName.startsWith("@@")) { + methodName = Symbol[methodName.substring(2)]; + } + if (isPureVirtual) { + classType.registeredClass.pureVirtualFunctions.push(methodName); + } + function unboundTypesHandler() { + throwUnboundTypeError("Cannot call " + humanName + " due to unbound types", rawArgTypes); + } + var proto = classType.registeredClass.instancePrototype; + var method = proto[methodName]; + if (undefined === method || undefined === method.overloadTable && method.className !== classType.name && method.argCount === argCount - 2) { + unboundTypesHandler.argCount = argCount - 2; + unboundTypesHandler.className = classType.name; + proto[methodName] = unboundTypesHandler; + } else { + ensureOverloadTable(proto, methodName, humanName); + proto[methodName].overloadTable[argCount - 2] = unboundTypesHandler; + } + whenDependentTypesAreResolved([], rawArgTypes, function (argTypes) { + var memberFunction = craftInvokerFunction(humanName, argTypes, classType, rawInvoker, context); + if (undefined === proto[methodName].overloadTable) { + memberFunction.argCount = argCount - 2; + proto[methodName] = memberFunction; + } else { + proto[methodName].overloadTable[argCount - 2] = memberFunction; + } + return []; + }); + return []; + }); + } + function __embind_register_class_property(classType, fieldName, getterReturnType, getterSignature, getter, getterContext, setterArgumentType, setterSignature, setter, setterContext) { + fieldName = readLatin1String(fieldName); + getter = embind__requireFunction(getterSignature, getter); + whenDependentTypesAreResolved([], [classType], function (classType) { + classType = classType[0]; + var humanName = classType.name + "." + fieldName; + var desc = { + get: function get() { + throwUnboundTypeError("Cannot access " + humanName + " due to unbound types", [getterReturnType, setterArgumentType]); + }, + enumerable: true, + configurable: true + }; + if (setter) { + desc.set = function () { + throwUnboundTypeError("Cannot access " + humanName + " due to unbound types", [getterReturnType, setterArgumentType]); + }; + } else { + desc.set = function (v) { + throwBindingError(humanName + " is a read-only property"); + }; + } + Object.defineProperty(classType.registeredClass.instancePrototype, fieldName, desc); + whenDependentTypesAreResolved([], setter ? [getterReturnType, setterArgumentType] : [getterReturnType], function (types) { + var getterReturnType = types[0]; + var desc = { + get: function get() { + var ptr = validateThis(this, classType, humanName + " getter"); + return getterReturnType["fromWireType"](getter(getterContext, ptr)); + }, + enumerable: true + }; + if (setter) { + setter = embind__requireFunction(setterSignature, setter); + var setterArgumentType = types[1]; + desc.set = function (v) { + var ptr = validateThis(this, classType, humanName + " setter"); + var destructors = []; + setter(setterContext, ptr, setterArgumentType["toWireType"](destructors, v)); + runDestructors(destructors); + }; + } + Object.defineProperty(classType.registeredClass.instancePrototype, fieldName, desc); + return []; + }); + return []; + }); + } + function HandleAllocator() { + this.allocated = [undefined]; + this.freelist = []; + this.get = function (id) { + return this.allocated[id]; + }; + this.has = function (id) { + return this.allocated[id] !== undefined; + }; + this.allocate = function (handle) { + var id = this.freelist.pop() || this.allocated.length; + this.allocated[id] = handle; + return id; + }; + this.free = function (id) { + this.allocated[id] = undefined; + this.freelist.push(id); + }; + } + var emval_handles = new HandleAllocator(); + function __emval_decref(handle) { + if (handle >= emval_handles.reserved && 0 === --emval_handles.get(handle).refcount) { + emval_handles.free(handle); + } + } + function count_emval_handles() { + var count = 0; + for (var i = emval_handles.reserved; i < emval_handles.allocated.length; ++i) { + if (emval_handles.allocated[i] !== undefined) { + ++count; + } + } + return count; + } + function init_emval() { + emval_handles.allocated.push({ + value: undefined + }, { + value: null + }, { + value: true + }, { + value: false + }); + emval_handles.reserved = emval_handles.allocated.length; + Module["count_emval_handles"] = count_emval_handles; + } + var Emval = { + toValue: function toValue(handle) { + if (!handle) { + throwBindingError("Cannot use deleted val. handle = " + handle); + } + return emval_handles.get(handle).value; + }, + toHandle: function toHandle(value) { + switch (value) { + case undefined: + return 1; + case null: + return 2; + case true: + return 3; + case false: + return 4; + default: + { + return emval_handles.allocate({ + refcount: 1, + value: value + }); + } + } + } + }; + function __embind_register_emval(rawType, name) { + name = readLatin1String(name); + registerType(rawType, { + name: name, + "fromWireType": function fromWireType(handle) { + var rv = Emval.toValue(handle); + __emval_decref(handle); + return rv; + }, + "toWireType": function toWireType(destructors, value) { + return Emval.toHandle(value); + }, + "argPackAdvance": 8, + "readValueFromPointer": simpleReadValueFromPointer, + destructorFunction: null + }); + } + function enumReadValueFromPointer(name, shift, signed) { + switch (shift) { + case 0: + return function (pointer) { + var heap = signed ? HEAP8 : HEAPU8; + return this["fromWireType"](heap[pointer]); + }; + case 1: + return function (pointer) { + var heap = signed ? HEAP16 : HEAPU16; + return this["fromWireType"](heap[pointer >> 1]); + }; + case 2: + return function (pointer) { + var heap = signed ? HEAP32 : HEAPU32; + return this["fromWireType"](heap[pointer >> 2]); + }; + default: + throw new TypeError("Unknown integer type: " + name); + } + } + function __embind_register_enum(rawType, name, size, isSigned) { + var shift = getShiftFromSize(size); + name = readLatin1String(name); + function ctor() {} + ctor.values = {}; + registerType(rawType, { + name: name, + constructor: ctor, + "fromWireType": function fromWireType(c) { + return this.constructor.values[c]; + }, + "toWireType": function toWireType(destructors, c) { + return c.value; + }, + "argPackAdvance": 8, + "readValueFromPointer": enumReadValueFromPointer(name, shift, isSigned), + destructorFunction: null + }); + exposePublicSymbol(name, ctor); + } + function requireRegisteredType(rawType, humanName) { + var impl = registeredTypes[rawType]; + if (undefined === impl) { + throwBindingError(humanName + " has unknown type " + getTypeName(rawType)); + } + return impl; + } + function __embind_register_enum_value(rawEnumType, name, enumValue) { + var enumType = requireRegisteredType(rawEnumType, "enum"); + name = readLatin1String(name); + var Enum = enumType.constructor; + var Value = Object.create(enumType.constructor.prototype, { + value: { + value: enumValue + }, + constructor: { + value: createNamedFunction(enumType.name + "_" + name, function () {}) + } + }); + Enum.values[enumValue] = Value; + Enum[name] = Value; + } + function embindRepr(v) { + if (v === null) { + return "null"; + } + var t = typeof v; + if (t === "object" || t === "array" || t === "function") { + return v.toString(); + } else { + return "" + v; + } + } + function floatReadValueFromPointer(name, shift) { + switch (shift) { + case 2: + return function (pointer) { + return this["fromWireType"](HEAPF32[pointer >> 2]); + }; + case 3: + return function (pointer) { + return this["fromWireType"](HEAPF64[pointer >> 3]); + }; + default: + throw new TypeError("Unknown float type: " + name); + } + } + function __embind_register_float(rawType, name, size) { + var shift = getShiftFromSize(size); + name = readLatin1String(name); + registerType(rawType, { + name: name, + "fromWireType": function fromWireType(value) { + return value; + }, + "toWireType": function toWireType(destructors, value) { + return value; + }, + "argPackAdvance": 8, + "readValueFromPointer": floatReadValueFromPointer(name, shift), + destructorFunction: null + }); + } + function integerReadValueFromPointer(name, shift, signed) { + switch (shift) { + case 0: + return signed ? function readS8FromPointer(pointer) { + return HEAP8[pointer]; + } : function readU8FromPointer(pointer) { + return HEAPU8[pointer]; + }; + case 1: + return signed ? function readS16FromPointer(pointer) { + return HEAP16[pointer >> 1]; + } : function readU16FromPointer(pointer) { + return HEAPU16[pointer >> 1]; + }; + case 2: + return signed ? function readS32FromPointer(pointer) { + return HEAP32[pointer >> 2]; + } : function readU32FromPointer(pointer) { + return HEAPU32[pointer >> 2]; + }; + default: + throw new TypeError("Unknown integer type: " + name); + } + } + function __embind_register_integer(primitiveType, name, size, minRange, maxRange) { + name = readLatin1String(name); + var shift = getShiftFromSize(size); + var fromWireType = function fromWireType(value) { + return value; + }; + if (minRange === 0) { + var bitshift = 32 - 8 * size; + fromWireType = function fromWireType(value) { + return value << bitshift >>> bitshift; + }; + } + var isUnsignedType = name.includes("unsigned"); + var checkAssertions = function checkAssertions(value, toTypeName) {}; + var toWireType; + if (isUnsignedType) { + toWireType = function toWireType(destructors, value) { + checkAssertions(value, this.name); + return value >>> 0; + }; + } else { + toWireType = function toWireType(destructors, value) { + checkAssertions(value, this.name); + return value; + }; + } + registerType(primitiveType, { + name: name, + "fromWireType": fromWireType, + "toWireType": toWireType, + "argPackAdvance": 8, + "readValueFromPointer": integerReadValueFromPointer(name, shift, minRange !== 0), + destructorFunction: null + }); + } + function __embind_register_memory_view(rawType, dataTypeIndex, name) { + var typeMapping = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array]; + var TA = typeMapping[dataTypeIndex]; + function decodeMemoryView(handle) { + handle = handle >> 2; + var heap = HEAPU32; + var size = heap[handle]; + var data = heap[handle + 1]; + return new TA(heap.buffer, data, size); + } + name = readLatin1String(name); + registerType(rawType, { + name: name, + "fromWireType": decodeMemoryView, + "argPackAdvance": 8, + "readValueFromPointer": decodeMemoryView + }, { + ignoreDuplicateRegistrations: true + }); + } + function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i); + u = 65536 + ((u & 1023) << 10) | u1 & 1023; + } + if (u <= 127) { + if (outIdx >= endIdx) break; + heap[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break; + heap[outIdx++] = 192 | u >> 6; + heap[outIdx++] = 128 | u & 63; + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break; + heap[outIdx++] = 224 | u >> 12; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } else { + if (outIdx + 3 >= endIdx) break; + heap[outIdx++] = 240 | u >> 18; + heap[outIdx++] = 128 | u >> 12 & 63; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } + } + heap[outIdx] = 0; + return outIdx - startIdx; + } + function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); + } + function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var c = str.charCodeAt(i); + if (c <= 127) { + len++; + } else if (c <= 2047) { + len += 2; + } else if (c >= 55296 && c <= 57343) { + len += 4; + ++i; + } else { + len += 3; + } + } + return len; + } + function __embind_register_std_string(rawType, name) { + name = readLatin1String(name); + var stdStringIsUTF8 = name === "std::string"; + registerType(rawType, { + name: name, + "fromWireType": function fromWireType(value) { + var length = HEAPU32[value >> 2]; + var payload = value + 4; + var str; + if (stdStringIsUTF8) { + var decodeStartPtr = payload; + for (var i = 0; i <= length; ++i) { + var currentBytePtr = payload + i; + if (i == length || HEAPU8[currentBytePtr] == 0) { + var maxRead = currentBytePtr - decodeStartPtr; + var stringSegment = UTF8ToString(decodeStartPtr, maxRead); + if (str === undefined) { + str = stringSegment; + } else { + str += String.fromCharCode(0); + str += stringSegment; + } + decodeStartPtr = currentBytePtr + 1; + } + } + } else { + var a = new Array(length); + for (var i = 0; i < length; ++i) { + a[i] = String.fromCharCode(HEAPU8[payload + i]); + } + str = a.join(""); + } + _free2(value); + return str; + }, + "toWireType": function toWireType(destructors, value) { + if (value instanceof ArrayBuffer) { + value = new Uint8Array(value); + } + var length; + var valueIsOfTypeString = typeof value == "string"; + if (!(valueIsOfTypeString || value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Int8Array)) { + throwBindingError("Cannot pass non-string to std::string"); + } + if (stdStringIsUTF8 && valueIsOfTypeString) { + length = lengthBytesUTF8(value); + } else { + length = value.length; + } + var base = _malloc2(4 + length + 1); + var ptr = base + 4; + HEAPU32[base >> 2] = length; + if (stdStringIsUTF8 && valueIsOfTypeString) { + stringToUTF8(value, ptr, length + 1); + } else { + if (valueIsOfTypeString) { + for (var i = 0; i < length; ++i) { + var charCode = value.charCodeAt(i); + if (charCode > 255) { + _free2(ptr); + throwBindingError("String has UTF-16 code units that do not fit in 8 bits"); + } + HEAPU8[ptr + i] = charCode; + } + } else { + for (var i = 0; i < length; ++i) { + HEAPU8[ptr + i] = value[i]; + } + } + } + if (destructors !== null) { + destructors.push(_free2, base); + } + return base; + }, + "argPackAdvance": 8, + "readValueFromPointer": simpleReadValueFromPointer, + destructorFunction: function destructorFunction(ptr) { + _free2(ptr); + } + }); + } + var UTF16Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf-16le") : undefined; + function UTF16ToString(ptr, maxBytesToRead) { + var endPtr = ptr; + var idx = endPtr >> 1; + var maxIdx = idx + maxBytesToRead / 2; + while (!(idx >= maxIdx) && HEAPU16[idx]) ++idx; + endPtr = idx << 1; + if (endPtr - ptr > 32 && UTF16Decoder) return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr)); + var str = ""; + for (var i = 0; !(i >= maxBytesToRead / 2); ++i) { + var codeUnit = HEAP16[ptr + i * 2 >> 1]; + if (codeUnit == 0) break; + str += String.fromCharCode(codeUnit); + } + return str; + } + function stringToUTF16(str, outPtr, maxBytesToWrite) { + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 2147483647; + } + if (maxBytesToWrite < 2) return 0; + maxBytesToWrite -= 2; + var startPtr = outPtr; + var numCharsToWrite = maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length; + for (var i = 0; i < numCharsToWrite; ++i) { + var codeUnit = str.charCodeAt(i); + HEAP16[outPtr >> 1] = codeUnit; + outPtr += 2; + } + HEAP16[outPtr >> 1] = 0; + return outPtr - startPtr; + } + function lengthBytesUTF16(str) { + return str.length * 2; + } + function UTF32ToString(ptr, maxBytesToRead) { + var i = 0; + var str = ""; + while (!(i >= maxBytesToRead / 4)) { + var utf32 = HEAP32[ptr + i * 4 >> 2]; + if (utf32 == 0) break; + ++i; + if (utf32 >= 65536) { + var ch = utf32 - 65536; + str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023); + } else { + str += String.fromCharCode(utf32); + } + } + return str; + } + function stringToUTF32(str, outPtr, maxBytesToWrite) { + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 2147483647; + } + if (maxBytesToWrite < 4) return 0; + var startPtr = outPtr; + var endPtr = startPtr + maxBytesToWrite - 4; + for (var i = 0; i < str.length; ++i) { + var codeUnit = str.charCodeAt(i); + if (codeUnit >= 55296 && codeUnit <= 57343) { + var trailSurrogate = str.charCodeAt(++i); + codeUnit = 65536 + ((codeUnit & 1023) << 10) | trailSurrogate & 1023; + } + HEAP32[outPtr >> 2] = codeUnit; + outPtr += 4; + if (outPtr + 4 > endPtr) break; + } + HEAP32[outPtr >> 2] = 0; + return outPtr - startPtr; + } + function lengthBytesUTF32(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var codeUnit = str.charCodeAt(i); + if (codeUnit >= 55296 && codeUnit <= 57343) ++i; + len += 4; + } + return len; + } + function __embind_register_std_wstring(rawType, charSize, name) { + name = readLatin1String(name); + var decodeString, encodeString, getHeap, lengthBytesUTF, shift; + if (charSize === 2) { + decodeString = UTF16ToString; + encodeString = stringToUTF16; + lengthBytesUTF = lengthBytesUTF16; + getHeap = function getHeap() { + return HEAPU16; + }; + shift = 1; + } else if (charSize === 4) { + decodeString = UTF32ToString; + encodeString = stringToUTF32; + lengthBytesUTF = lengthBytesUTF32; + getHeap = function getHeap() { + return HEAPU32; + }; + shift = 2; + } + registerType(rawType, { + name: name, + "fromWireType": function fromWireType(value) { + var length = HEAPU32[value >> 2]; + var HEAP = getHeap(); + var str; + var decodeStartPtr = value + 4; + for (var i = 0; i <= length; ++i) { + var currentBytePtr = value + 4 + i * charSize; + if (i == length || HEAP[currentBytePtr >> shift] == 0) { + var maxReadBytes = currentBytePtr - decodeStartPtr; + var stringSegment = decodeString(decodeStartPtr, maxReadBytes); + if (str === undefined) { + str = stringSegment; + } else { + str += String.fromCharCode(0); + str += stringSegment; + } + decodeStartPtr = currentBytePtr + charSize; + } + } + _free2(value); + return str; + }, + "toWireType": function toWireType(destructors, value) { + if (!(typeof value == "string")) { + throwBindingError("Cannot pass non-string to C++ string type " + name); + } + var length = lengthBytesUTF(value); + var ptr = _malloc2(4 + length + charSize); + HEAPU32[ptr >> 2] = length >> shift; + encodeString(value, ptr + 4, length + charSize); + if (destructors !== null) { + destructors.push(_free2, ptr); + } + return ptr; + }, + "argPackAdvance": 8, + "readValueFromPointer": simpleReadValueFromPointer, + destructorFunction: function destructorFunction(ptr) { + _free2(ptr); + } + }); + } + function __embind_register_void(rawType, name) { + name = readLatin1String(name); + registerType(rawType, { + isVoid: true, + name: name, + "argPackAdvance": 0, + "fromWireType": function fromWireType() { + return undefined; + }, + "toWireType": function toWireType(destructors, o) { + return undefined; + } + }); + } + function __emval_incref(handle) { + if (handle > 4) { + emval_handles.get(handle).refcount += 1; + } + } + function __emval_take_value(type, arg) { + type = requireRegisteredType(type, "_emval_take_value"); + var v = type["readValueFromPointer"](arg); + return Emval.toHandle(v); + } + function _abort() { + abort(""); + } + function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.copyWithin(dest, src, src + num); + } + function getHeapMax() { + return 2147483648; + } + function emscripten_realloc_buffer(size) { + var b = wasmMemory.buffer; + var pages = size - b.byteLength + 65535 >>> 16; + try { + wasmMemory.grow(pages); + updateMemoryViews(); + return 1; + } catch (e) {} + } + function _emscripten_resize_heap(requestedSize) { + var oldSize = HEAPU8.length; + requestedSize = requestedSize >>> 0; + var maxHeapSize = getHeapMax(); + if (requestedSize > maxHeapSize) { + return false; + } + var alignUp = function alignUp(x, multiple) { + return x + (multiple - x % multiple) % multiple; + }; + for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + .2 / cutDown); + overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); + var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)); + var replacement = emscripten_realloc_buffer(newSize); + if (replacement) { + return true; + } + } + return false; + } + function _fd_close(fd) { + return 52; + } + function _fd_read(fd, iov, iovcnt, pnum) { + return 52; + } + function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { + return 70; + } + var printCharBuffers = [null, [], []]; + function printChar(stream, curr) { + var buffer = printCharBuffers[stream]; + if (curr === 0 || curr === 10) { + (stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0)); + buffer.length = 0; + } else { + buffer.push(curr); + } + } + function _fd_write(fd, iov, iovcnt, pnum) { + var num = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAPU32[iov >> 2]; + var len = HEAPU32[iov + 4 >> 2]; + iov += 8; + for (var j = 0; j < len; j++) { + printChar(fd, HEAPU8[ptr + j]); + } + num += len; + } + HEAPU32[pnum >> 2] = num; + return 0; + } + function _spineListenerCallBackFromJS() { + var wasmUtil = Module["SpineWasmUtil"]; + var listenerID = wasmUtil.getCurrentListenerID(); + var trackEntry = wasmUtil.getCurrentTrackEntry(); + var event = wasmUtil.getCurrentEvent(); + globalThis.TrackEntryListeners.emitListener(listenerID, trackEntry, event); + } + embind_init_charCodes(); + BindingError = Module["BindingError"] = extendError(Error, "BindingError"); + InternalError = Module["InternalError"] = extendError(Error, "InternalError"); + init_ClassHandle(); + init_embind(); + init_RegisteredPointer(); + UnboundTypeError = Module["UnboundTypeError"] = extendError(Error, "UnboundTypeError"); + init_emval(); + var wasmImports = { + "o": ___syscall_fcntl64, + "w": ___syscall_ioctl, + "x": ___syscall_openat, + "s": __embind_register_bigint, + "A": __embind_register_bool, + "c": __embind_register_class, + "f": __embind_register_class_class_function, + "j": __embind_register_class_class_property, + "d": __embind_register_class_constructor, + "a": __embind_register_class_function, + "g": __embind_register_class_property, + "z": __embind_register_emval, + "k": __embind_register_enum, + "e": __embind_register_enum_value, + "p": __embind_register_float, + "l": __embind_register_integer, + "i": __embind_register_memory_view, + "q": __embind_register_std_string, + "m": __embind_register_std_wstring, + "B": __embind_register_void, + "C": __emval_decref, + "D": __emval_incref, + "h": __emval_take_value, + "b": _abort, + "y": _emscripten_memcpy_big, + "t": _emscripten_resize_heap, + "n": _fd_close, + "v": _fd_read, + "r": _fd_seek, + "u": _fd_write, + "E": _spineListenerCallBackFromJS + }; + createWasm(); + var _malloc2 = function _malloc() { + return (_malloc2 = Module["asm"]["I"]).apply(null, arguments); + }; + var _free2 = function _free() { + return (_free2 = Module["asm"]["J"]).apply(null, arguments); + }; + var _getTypeName = function ___getTypeName() { + return (_getTypeName = Module["asm"]["K"]).apply(null, arguments); + }; + Module["__embind_initialize_bindings"] = function () { + return (Module["__embind_initialize_bindings"] = Module["asm"]["L"]).apply(null, arguments); + }; + Module["dynCall_jiji"] = function () { + return (Module["dynCall_jiji"] = Module["asm"]["M"]).apply(null, arguments); + }; + var calledRun; + dependenciesFulfilled = function runCaller() { + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; + }; + function run() { + if (runDependencies > 0) { + return; + } + preRun(); + if (runDependencies > 0) { + return; + } + function doRun() { + if (calledRun) return; + calledRun = true; + Module["calledRun"] = true; + if (ABORT) return; + initRuntime(); + readyPromiseResolve(Module); + if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function () { + setTimeout(function () { + Module["setStatus"](""); + }, 1); + doRun(); + }, 1); + } else { + doRun(); + } + } + if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()(); + } + } + run(); + return spineWasm.ready; + }; + }()); + + }) + }; +})); diff --git a/headless/static/favicon.ico b/headless/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..0bd33cd2ae958e377836c9ca630aaeb07349aa43 GIT binary patch literal 1150 zcmah{%}-N75MQE+M?HD=rilk*j0Y1B{t2E;xOgxz8jS`eMuPZ(fTF}=peYnfErqsN z1WJQ^8mNM#h*)fBp)IsUYDES5UE0TM$C-UT)1c9LncbP+%x`vP-!fK&-@bhe*8}Y0 zZpQXA#txw(gouRW#!g}Ee`08EJfTx5G~Gs>YtU+r3|PCPmJYqUt*KsXP%BUVi*M8@ z)ua8r5LyXBCXlxYgjQGJ^*|pOH7f1jYMAxfH%`X~AjzRBpFDsjMJ+s6 z)q_#1hD=uAF_+T;-5pwcVGT=XyV~P+@wm7xLS1D!)ZM=YRBvW#0;D#HsU|-kakME~AH=Rzyqq}9GYf*AvUSiQGC?8jYra=LTc$~v?GjW$B2={4znw?~PbPz6|Jp-L>t&q>>c^%uxE0bf^z9b0SJjbMa z1_o_2w=8^xq7W_V6hu^<&Fcy*So6aK%hd#sfq>bBa;SfBm zD8*T&_aXD?pZYzXBlHF^r$H2@x^f@izJ~cd;9G-P`#WAsUMOcR{H2w+vTSaCAE8+b z#r}5ecONoNIg#~so6IZR + + + + + Cocos Creator | JisolGameCocos + + + + + + + + + + + + + + + + +

JisolGameCocos

+ +
+
+ +
+
+
+ + + + + + + + + + + + diff --git a/headless/static/index.js b/headless/static/index.js new file mode 100644 index 00000000..412dc8a2 --- /dev/null +++ b/headless/static/index.js @@ -0,0 +1,25 @@ +System.register(["./application.js"], function (_export, _context) { + "use strict"; + + var Application, application; + + function topLevelImport(url) { + return System["import"](url); + } + + return { + setters: [function (_applicationJs) { + Application = _applicationJs.Application; + }], + execute: function () { + application = new Application(); + topLevelImport('cc').then(function (engine) { + return application.init(engine); + }).then(function () { + return application.start(); + })["catch"](function (err) { + console.error(err); + }); + } + }; +}); \ No newline at end of file diff --git a/headless/static/remote/battle/config.json b/headless/static/remote/battle/config.json new file mode 100644 index 00000000..61e080fd --- /dev/null +++ b/headless/static/remote/battle/config.json @@ -0,0 +1,4699 @@ +{ + "importBase": "import", + "nativeBase": "native", + "name": "battle", + "deps": [ + "resources" + ], + "uuids": [ + "001fea8b-233c-4830-96aa-5f0d9845668b", + "001fea8b-233c-4830-96aa-5f0d9845668b@6c48a", + "001fea8b-233c-4830-96aa-5f0d9845668b@f9941", + "010aa6cc-beed-4a06-8a6f-92dc1dda72c9", + "026823e5-14f5-4f70-a73e-88a3f8e8001e", + "026823e5-14f5-4f70-a73e-88a3f8e8001e@6c48a", + "026823e5-14f5-4f70-a73e-88a3f8e8001e@f9941", + "03942db8-6a99-42a3-98cf-70229cc5403e", + "03942db8-6a99-42a3-98cf-70229cc5403e@6c48a", + "03942db8-6a99-42a3-98cf-70229cc5403e@f9941", + "0423f835-3fbe-49d7-9c6a-ff9588e5c122", + "0423f835-3fbe-49d7-9c6a-ff9588e5c122@6c48a", + "0423f835-3fbe-49d7-9c6a-ff9588e5c122@f9941", + "063fc0a8-27de-4950-b87e-f8d93a8c97af", + "063fc0a8-27de-4950-b87e-f8d93a8c97af@6c48a", + "063fc0a8-27de-4950-b87e-f8d93a8c97af@f9941", + "06e4dec4-9199-42fa-81c9-1d6c8dce5e3e", + "06e4dec4-9199-42fa-81c9-1d6c8dce5e3e@6c48a", + "06e4dec4-9199-42fa-81c9-1d6c8dce5e3e@f9941", + "07a6e3b4-0690-4be3-bd6a-ddb8655d0928", + "07a6e3b4-0690-4be3-bd6a-ddb8655d0928@6c48a", + "07a6e3b4-0690-4be3-bd6a-ddb8655d0928@f9941", + "09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e", + "09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e@6c48a", + "09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e@f9941", + "0a2ed6e6-8614-4176-a464-4c673e0d6847", + "0a2ed6e6-8614-4176-a464-4c673e0d6847@6c48a", + "0a2ed6e6-8614-4176-a464-4c673e0d6847@f9941", + "0a9ca732-f79e-47a8-865f-a11df7979eac", + "0a9ca732-f79e-47a8-865f-a11df7979eac@6c48a", + "0a9ca732-f79e-47a8-865f-a11df7979eac@f9941", + "0af1bd07-ba37-4db6-bcdb-bd52c636cc65", + "0af1bd07-ba37-4db6-bcdb-bd52c636cc65@6c48a", + "0af1bd07-ba37-4db6-bcdb-bd52c636cc65@f9941", + "0bf76b1f7", + "0d0d520a-6a04-46ec-b8a7-f9f124a59574", + "0ec954bb-79cd-4122-bf5c-b86a13c5ef02", + "0ec954bb-79cd-4122-bf5c-b86a13c5ef02@6c48a", + "0ec954bb-79cd-4122-bf5c-b86a13c5ef02@f9941", + "0f96bbf8-0324-4eab-ba6a-2a70f7653610", + "0f96bbf8-0324-4eab-ba6a-2a70f7653610@6c48a", + "0f96bbf8-0324-4eab-ba6a-2a70f7653610@f9941", + "0fcb82ad-681d-4f57-ae1e-708a5a1f7fab", + "0fcb82ad-681d-4f57-ae1e-708a5a1f7fab@6c48a", + "0fcb82ad-681d-4f57-ae1e-708a5a1f7fab@f9941", + "1014d8fe-eb7e-4351-9454-70ff7a4e4fbc", + "1014d8fe-eb7e-4351-9454-70ff7a4e4fbc@6c48a", + "1014d8fe-eb7e-4351-9454-70ff7a4e4fbc@f9941", + "1168b518-61b0-4ca8-ba16-5085b3722064", + "1168b518-61b0-4ca8-ba16-5085b3722064@6c48a", + "1168b518-61b0-4ca8-ba16-5085b3722064@f9941", + "126a7574-0975-4062-b1de-6ebcc0dc0296", + "126a7574-0975-4062-b1de-6ebcc0dc0296@6c48a", + "126a7574-0975-4062-b1de-6ebcc0dc0296@f9941", + "138e008e-f0c4-4724-922c-bcda2476a717", + "138e008e-f0c4-4724-922c-bcda2476a717@6c48a", + "138e008e-f0c4-4724-922c-bcda2476a717@f9941", + "13ffba43-826c-4f33-8ac2-4b59811ce9b0", + "13ffba43-826c-4f33-8ac2-4b59811ce9b0@6c48a", + "13ffba43-826c-4f33-8ac2-4b59811ce9b0@f9941", + "14d2a9b1-50ad-4051-a96a-b1c194651259", + "15495485-c12f-49b8-9b70-5f327417a643", + "1581380d-bf95-4ce8-a80b-91ca21c5f8ab", + "1581380d-bf95-4ce8-a80b-91ca21c5f8ab@6c48a", + "1581380d-bf95-4ce8-a80b-91ca21c5f8ab@f9941", + "179a2053-b80c-4b5d-ab83-e75934fd66d2", + "179a2053-b80c-4b5d-ab83-e75934fd66d2@6c48a", + "179a2053-b80c-4b5d-ab83-e75934fd66d2@f9941", + "17ef8829-f581-4e37-9d9e-762b1e708229", + "17ef8829-f581-4e37-9d9e-762b1e708229@6c48a", + "17ef8829-f581-4e37-9d9e-762b1e708229@f9941", + "1e495888-e38d-4c57-8fda-a8c69960409a", + "1e495888-e38d-4c57-8fda-a8c69960409a@6c48a", + "1e495888-e38d-4c57-8fda-a8c69960409a@f9941", + "1eb73a5f-ab8c-4f05-b833-6b14a361a4ee", + "1eb73a5f-ab8c-4f05-b833-6b14a361a4ee@6c48a", + "1eb73a5f-ab8c-4f05-b833-6b14a361a4ee@f9941", + "1f2defe6-08ea-4919-be26-f263623f859a", + "1f2defe6-08ea-4919-be26-f263623f859a@6c48a", + "1f2defe6-08ea-4919-be26-f263623f859a@f9941", + "2058f147-aecf-4084-95ea-cdb5da0fedb1", + "2058f147-aecf-4084-95ea-cdb5da0fedb1@6c48a", + "2058f147-aecf-4084-95ea-cdb5da0fedb1@f9941", + "21d9faca-4169-4e95-b6f1-edda15e5d694", + "21d9faca-4169-4e95-b6f1-edda15e5d694@6c48a", + "21d9faca-4169-4e95-b6f1-edda15e5d694@f9941", + "22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68", + "22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68@6c48a", + "22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68@f9941", + "2357c44f-3cf0-47eb-8f7a-0f303eaefe08", + "2357c44f-3cf0-47eb-8f7a-0f303eaefe08@6c48a", + "2357c44f-3cf0-47eb-8f7a-0f303eaefe08@f9941", + "23d50907-baa5-41fd-9512-143679feac92", + "23d50907-baa5-41fd-9512-143679feac92@6c48a", + "23d50907-baa5-41fd-9512-143679feac92@f9941", + "24869eec-947e-498b-93cb-9ac58ecb5876", + "24869eec-947e-498b-93cb-9ac58ecb5876@6c48a", + "24869eec-947e-498b-93cb-9ac58ecb5876@f9941", + "24b3fb75-7e7d-48bd-9dab-f88850c70be0", + "24b3fb75-7e7d-48bd-9dab-f88850c70be0@6c48a", + "24b3fb75-7e7d-48bd-9dab-f88850c70be0@f9941", + "259f92ef-99c5-4e2b-bf7f-3cfd159a32e2", + "259f92ef-99c5-4e2b-bf7f-3cfd159a32e2@6c48a", + "259f92ef-99c5-4e2b-bf7f-3cfd159a32e2@f9941", + "25ee0a91-fde7-460c-94b5-fc3063e7b2f9", + "25ee0a91-fde7-460c-94b5-fc3063e7b2f9@6c48a", + "25ee0a91-fde7-460c-94b5-fc3063e7b2f9@f9941", + "29e1c6dc-6549-4f30-ad94-fe92d3cead0c", + "2ac4038c-217b-4d36-840d-aebea7f45b72", + "2ac4038c-217b-4d36-840d-aebea7f45b72@6c48a", + "2ac4038c-217b-4d36-840d-aebea7f45b72@f9941", + "2aff97dc-8695-491f-9b30-23cab6c11b9c", + "2cf6c696-6824-46d4-b0e4-25cd69fa7703", + "2d41bc63-88bf-4655-a81f-6a1269d8fd93", + "2d41bc63-88bf-4655-a81f-6a1269d8fd93@6c48a", + "2d41bc63-88bf-4655-a81f-6a1269d8fd93@f9941", + "2d5360fe-fc08-448d-ae58-19a29ef677d2", + "2d5360fe-fc08-448d-ae58-19a29ef677d2@6c48a", + "2d5360fe-fc08-448d-ae58-19a29ef677d2@f9941", + "2e9aa2a1-2ec8-49bb-bf44-7aad4c27704e", + "30250fcc-aac2-4473-94bf-7688cf16a604", + "30250fcc-aac2-4473-94bf-7688cf16a604@6c48a", + "30250fcc-aac2-4473-94bf-7688cf16a604@f9941", + "32299834-d060-4b93-b428-e1fe3b8346e8", + "337f444f-e016-444a-bfc3-56fbecc80977", + "337f444f-e016-444a-bfc3-56fbecc80977@6c48a", + "337f444f-e016-444a-bfc3-56fbecc80977@f9941", + "33bb5ab6-17d6-47a9-8466-a465c4a7e993", + "33bb5ab6-17d6-47a9-8466-a465c4a7e993@6c48a", + "33bb5ab6-17d6-47a9-8466-a465c4a7e993@f9941", + "34ac9fdc-64c2-448b-963c-d75aab270352", + "36187bcd-71ae-46c0-abff-4e256ce90276", + "36187bcd-71ae-46c0-abff-4e256ce90276@6c48a", + "36187bcd-71ae-46c0-abff-4e256ce90276@f9941", + "36c86de9-d150-48ef-8765-ad8f9e511c05", + "36c86de9-d150-48ef-8765-ad8f9e511c05@6c48a", + "36c86de9-d150-48ef-8765-ad8f9e511c05@f9941", + "376b1458-940c-4ec6-8f67-19ef31cdc7a8", + "376b1458-940c-4ec6-8f67-19ef31cdc7a8@6c48a", + "376b1458-940c-4ec6-8f67-19ef31cdc7a8@f9941", + "38004a8e-1e7e-481d-a276-ba12a9015c96", + "38004a8e-1e7e-481d-a276-ba12a9015c96@6c48a", + "38004a8e-1e7e-481d-a276-ba12a9015c96@f9941", + "39e91df6-ddb4-436c-b709-7d0e1a281271", + "39e91df6-ddb4-436c-b709-7d0e1a281271@6c48a", + "39e91df6-ddb4-436c-b709-7d0e1a281271@f9941", + "3a4ad94b-6e0f-4a01-825b-1ef057215823", + "3a622b00-2de8-48cc-b358-3db8568ef5b3", + "3a622b00-2de8-48cc-b358-3db8568ef5b3@6c48a", + "3a622b00-2de8-48cc-b358-3db8568ef5b3@f9941", + "3e89062e-b618-4ae5-915b-d897340f2f40", + "3e89062e-b618-4ae5-915b-d897340f2f40@6c48a", + "3e89062e-b618-4ae5-915b-d897340f2f40@f9941", + "3f4a5236-67c0-48c2-bcb7-9ae628933935", + "3f4a5236-67c0-48c2-bcb7-9ae628933935@6c48a", + "3f4a5236-67c0-48c2-bcb7-9ae628933935@f9941", + "40e867e0-35ab-44f1-a8ff-86cacf947cce", + "40e867e0-35ab-44f1-a8ff-86cacf947cce@6c48a", + "40e867e0-35ab-44f1-a8ff-86cacf947cce@f9941", + "41464bcc-b6ab-4a8b-a5dc-511b924c061b", + "41464bcc-b6ab-4a8b-a5dc-511b924c061b@6c48a", + "41464bcc-b6ab-4a8b-a5dc-511b924c061b@f9941", + "42029fae-0ee0-48c1-b7c5-850c03664ae4", + "446c59f6-d7f6-4d04-abef-7ccaf942893d", + "446c59f6-d7f6-4d04-abef-7ccaf942893d@6c48a", + "446c59f6-d7f6-4d04-abef-7ccaf942893d@f9941", + "44fca669-aad5-4e22-b846-82f3a296ec1e", + "44fca669-aad5-4e22-b846-82f3a296ec1e@6c48a", + "44fca669-aad5-4e22-b846-82f3a296ec1e@f9941", + "45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4", + "45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4@6c48a", + "45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4@f9941", + "4836df74-6d25-4922-a373-32949e6013df", + "4836df74-6d25-4922-a373-32949e6013df@6c48a", + "4836df74-6d25-4922-a373-32949e6013df@f9941", + "4c2c6c72-df5d-4d75-8a00-08138b76009a", + "4c2c6c72-df5d-4d75-8a00-08138b76009a@6c48a", + "4c2c6c72-df5d-4d75-8a00-08138b76009a@f9941", + "4eb039e0-4381-4ebf-8a71-5f4f85452b7b", + "4eb039e0-4381-4ebf-8a71-5f4f85452b7b@6c48a", + "4eb039e0-4381-4ebf-8a71-5f4f85452b7b@f9941", + "4fa5a433-2410-4c9f-a196-acc8b645ff69", + "4ff7df06-ccdc-4497-8332-fbf9b6abfc18", + "4ff7df06-ccdc-4497-8332-fbf9b6abfc18@6c48a", + "4ff7df06-ccdc-4497-8332-fbf9b6abfc18@f9941", + "51104c05-e5db-4274-a66e-1de9ab511e4f", + "52113c9e-1b63-4a9b-99f7-2e5758514f81", + "52113c9e-1b63-4a9b-99f7-2e5758514f81@6c48a", + "52113c9e-1b63-4a9b-99f7-2e5758514f81@f9941", + "5248ee3e-c600-4b2b-b5d7-ccff7c9830c2", + "53167f35-e100-434f-b671-9abe0bc64531", + "53167f35-e100-434f-b671-9abe0bc64531@6c48a", + "53167f35-e100-434f-b671-9abe0bc64531@f9941", + "534a0232-a40c-453e-8a9e-f7001bc0ce73", + "534a0232-a40c-453e-8a9e-f7001bc0ce73@6c48a", + "534a0232-a40c-453e-8a9e-f7001bc0ce73@f9941", + "54eddc0a-52cc-4235-ab55-0cb3810dcfd9", + "54eddc0a-52cc-4235-ab55-0cb3810dcfd9@6c48a", + "54eddc0a-52cc-4235-ab55-0cb3810dcfd9@f9941", + "54f082ca-86ef-49c8-a33d-8f2ce95c8b57", + "54f082ca-86ef-49c8-a33d-8f2ce95c8b57@6c48a", + "54f082ca-86ef-49c8-a33d-8f2ce95c8b57@f9941", + "55d7558e-5c18-49f7-a6e6-1b8c94037ecf", + "55d7558e-5c18-49f7-a6e6-1b8c94037ecf@6c48a", + "55d7558e-5c18-49f7-a6e6-1b8c94037ecf@f9941", + "5670f2a3-3ea4-4188-b34c-1ad1a40af86f", + "57f8d466-d380-40b5-8241-4c6529053817", + "5828e8e7-d037-46d8-a9af-63a11ae7349e", + "5828e8e7-d037-46d8-a9af-63a11ae7349e@6c48a", + "5828e8e7-d037-46d8-a9af-63a11ae7349e@f9941", + "583d2b42-0dc8-4b0c-af5e-b239374eed59", + "583d2b42-0dc8-4b0c-af5e-b239374eed59@6c48a", + "583d2b42-0dc8-4b0c-af5e-b239374eed59@f9941", + "58d32a22-c07f-4708-8abb-f39006bac8a9", + "5a77fe9d-52fd-4df5-ab08-e2766930e4f8", + "5a77fe9d-52fd-4df5-ab08-e2766930e4f8@6c48a", + "5a77fe9d-52fd-4df5-ab08-e2766930e4f8@f9941", + "5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb", + "5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb@6c48a", + "5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb@f9941", + "5d81ab0f-18b9-49af-85f9-59f540e14208", + "5d81ab0f-18b9-49af-85f9-59f540e14208@6c48a", + "5d81ab0f-18b9-49af-85f9-59f540e14208@f9941", + "5f7d151d-78bc-4738-b3eb-325440ea5f24", + "5f7d151d-78bc-4738-b3eb-325440ea5f24@6c48a", + "5f7d151d-78bc-4738-b3eb-325440ea5f24@f9941", + "625edf63-d447-4c41-a5de-74e7f1e79514", + "625edf63-d447-4c41-a5de-74e7f1e79514@6c48a", + "625edf63-d447-4c41-a5de-74e7f1e79514@f9941", + "656a4136-154e-4a01-84ed-418fd085386a", + "656a4136-154e-4a01-84ed-418fd085386a@6c48a", + "656a4136-154e-4a01-84ed-418fd085386a@f9941", + "65c10712-318d-4ecf-8253-a91a90dbc1e8", + "65c10712-318d-4ecf-8253-a91a90dbc1e8@6c48a", + "65c10712-318d-4ecf-8253-a91a90dbc1e8@f9941", + "660ed781-d7e7-4630-81c0-67ebaaccc124", + "660ed781-d7e7-4630-81c0-67ebaaccc124@6c48a", + "660ed781-d7e7-4630-81c0-67ebaaccc124@f9941", + "679bbb50-f1d5-4ac9-85f1-8aca77b0ca06", + "679bbb50-f1d5-4ac9-85f1-8aca77b0ca06@6c48a", + "679bbb50-f1d5-4ac9-85f1-8aca77b0ca06@f9941", + "68dac8a9-ca70-44f4-b4d6-f0c2a7649d82", + "68dac8a9-ca70-44f4-b4d6-f0c2a7649d82@6c48a", + "68dac8a9-ca70-44f4-b4d6-f0c2a7649d82@f9941", + "68dd7e1f-0996-4ac8-9b45-cb68975d7236", + "68dd7e1f-0996-4ac8-9b45-cb68975d7236@6c48a", + "68dd7e1f-0996-4ac8-9b45-cb68975d7236@f9941", + "6bea3dd7-ad6a-4cd3-a04e-99376e7dd9a2", + "6d4605ff-0938-44f8-a05c-55d93d20706d", + "6d4605ff-0938-44f8-a05c-55d93d20706d@6c48a", + "6d4605ff-0938-44f8-a05c-55d93d20706d@f9941", + "6d7fd2fa-9401-4918-8f4c-9b85f1017146", + "6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223", + "6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223@6c48a", + "6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223@f9941", + "6e73e1fa-3744-4e08-9eaa-117cc524afda", + "6e73e1fa-3744-4e08-9eaa-117cc524afda@6c48a", + "6e73e1fa-3744-4e08-9eaa-117cc524afda@f9941", + "6edb6339-008a-4064-b651-ace4908644cd", + "6edb6339-008a-4064-b651-ace4908644cd@6c48a", + "6edb6339-008a-4064-b651-ace4908644cd@f9941", + "6f92ffef-8b45-403f-9820-033a1e679d16", + "6f92ffef-8b45-403f-9820-033a1e679d16@6c48a", + "6f92ffef-8b45-403f-9820-033a1e679d16@f9941", + "70507da1-9f99-425c-8d0a-7052e3b8ff23", + "70507da1-9f99-425c-8d0a-7052e3b8ff23@6c48a", + "70507da1-9f99-425c-8d0a-7052e3b8ff23@f9941", + "7231d9cd-c82a-4e10-86b7-ac6d066257aa", + "7231d9cd-c82a-4e10-86b7-ac6d066257aa@6c48a", + "7231d9cd-c82a-4e10-86b7-ac6d066257aa@f9941", + "73e7b692-0dd7-428d-a37e-5294b5b02a78", + "73e7b692-0dd7-428d-a37e-5294b5b02a78@6c48a", + "73e7b692-0dd7-428d-a37e-5294b5b02a78@f9941", + "73f1d26b-8ad3-4745-884e-9407850365c4", + "73f1d26b-8ad3-4745-884e-9407850365c4@6c48a", + "73f1d26b-8ad3-4745-884e-9407850365c4@f9941", + "74953026-d287-43a7-ad10-bae8221f98b8", + "76f1e75b-f463-45cf-9005-fb49cb2ab7bf", + "76f1e75b-f463-45cf-9005-fb49cb2ab7bf@6c48a", + "76f1e75b-f463-45cf-9005-fb49cb2ab7bf@f9941", + "771d3105-423e-4ae4-9e58-4e5f2fae3e9a", + "771d3105-423e-4ae4-9e58-4e5f2fae3e9a@6c48a", + "771d3105-423e-4ae4-9e58-4e5f2fae3e9a@f9941", + "78a2ff6d-18fa-4a97-b5d4-8efc3975682c", + "78a2ff6d-18fa-4a97-b5d4-8efc3975682c@6c48a", + "78a2ff6d-18fa-4a97-b5d4-8efc3975682c@f9941", + "7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58", + "7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58@6c48a", + "7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58@f9941", + "7aa6b522-4cbd-43fc-a884-ae201e302b97", + "7aa6b522-4cbd-43fc-a884-ae201e302b97@6c48a", + "7aa6b522-4cbd-43fc-a884-ae201e302b97@f9941", + "7ca59dc8-2635-47cd-98d6-94e9ec6c36fa", + "7ca59dc8-2635-47cd-98d6-94e9ec6c36fa@6c48a", + "7ca59dc8-2635-47cd-98d6-94e9ec6c36fa@f9941", + "7ea77ef2-7734-492f-bb2c-22db352a8b49", + "7ea77ef2-7734-492f-bb2c-22db352a8b49@6c48a", + "7ea77ef2-7734-492f-bb2c-22db352a8b49@f9941", + "7ebdb065-a319-4ee0-a374-104137cf1d8c", + "7ebdb065-a319-4ee0-a374-104137cf1d8c@6c48a", + "7ebdb065-a319-4ee0-a374-104137cf1d8c@f9941", + "82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2", + "82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2@6c48a", + "82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2@f9941", + "8251d88e-0943-4c69-89cb-88116bb83e9f", + "8251d88e-0943-4c69-89cb-88116bb83e9f@6c48a", + "8251d88e-0943-4c69-89cb-88116bb83e9f@f9941", + "8602bb7b-f67c-469f-925b-4ffea75e6fca", + "8602bb7b-f67c-469f-925b-4ffea75e6fca@6c48a", + "8602bb7b-f67c-469f-925b-4ffea75e6fca@f9941", + "8665e251-73b9-4bb1-b908-161c51250d6f", + "8665e251-73b9-4bb1-b908-161c51250d6f@6c48a", + "8665e251-73b9-4bb1-b908-161c51250d6f@f9941", + "86a627d7-2064-4e31-85c0-43ded881c083", + "86a627d7-2064-4e31-85c0-43ded881c083@6c48a", + "86a627d7-2064-4e31-85c0-43ded881c083@f9941", + "89265b4f-16df-4020-a73b-6e7217e2ebd7", + "89265b4f-16df-4020-a73b-6e7217e2ebd7@6c48a", + "89265b4f-16df-4020-a73b-6e7217e2ebd7@f9941", + "8af43c10-0847-478c-a7e9-82ca49d4401d", + "8af43c10-0847-478c-a7e9-82ca49d4401d@6c48a", + "8af43c10-0847-478c-a7e9-82ca49d4401d@f9941", + "8cd8e7fb-f35b-417f-b147-ecc7ef089706", + "8cd8e7fb-f35b-417f-b147-ecc7ef089706@6c48a", + "8cd8e7fb-f35b-417f-b147-ecc7ef089706@f9941", + "8ef1f316-b788-4822-86d2-4d77deb9e57c", + "8ef1f316-b788-4822-86d2-4d77deb9e57c@6c48a", + "8ef1f316-b788-4822-86d2-4d77deb9e57c@f9941", + "917d53cb-10f1-4065-b7c3-57a9500b96e1", + "917d53cb-10f1-4065-b7c3-57a9500b96e1@6c48a", + "917d53cb-10f1-4065-b7c3-57a9500b96e1@f9941", + "96e5083f-61ee-4d79-97b9-c297bb68c54a", + "96e5083f-61ee-4d79-97b9-c297bb68c54a@6c48a", + "96e5083f-61ee-4d79-97b9-c297bb68c54a@f9941", + "9821c439-9937-4fc7-b924-2d88b9d44e36", + "9821c439-9937-4fc7-b924-2d88b9d44e36@6c48a", + "9821c439-9937-4fc7-b924-2d88b9d44e36@f9941", + "9968d439-7e1e-4994-bc1b-8bca5d7b49d8", + "9968d439-7e1e-4994-bc1b-8bca5d7b49d8@6c48a", + "9968d439-7e1e-4994-bc1b-8bca5d7b49d8@f9941", + "9a740c1b-d991-4428-9549-1017bfb6358e", + "9a740c1b-d991-4428-9549-1017bfb6358e@6c48a", + "9a740c1b-d991-4428-9549-1017bfb6358e@f9941", + "9a782e6d-767c-430e-9b91-86b4ca15645b", + "9a782e6d-767c-430e-9b91-86b4ca15645b@6c48a", + "9a782e6d-767c-430e-9b91-86b4ca15645b@f9941", + "9ba0cb57-c7d4-43b9-9a45-c90fd071e578", + "9ba0cb57-c7d4-43b9-9a45-c90fd071e578@6c48a", + "9ba0cb57-c7d4-43b9-9a45-c90fd071e578@f9941", + "9ba1ed01-edb4-4f3e-988c-f6111de69597", + "9c004ab3-a3a9-46f9-a859-dcc4c3c3769b", + "9c004ab3-a3a9-46f9-a859-dcc4c3c3769b@6c48a", + "9c004ab3-a3a9-46f9-a859-dcc4c3c3769b@f9941", + "9de99d59-c865-4435-a1ce-6bf6212d468c", + "9de99d59-c865-4435-a1ce-6bf6212d468c@6c48a", + "9de99d59-c865-4435-a1ce-6bf6212d468c@f9941", + "9eb72656-748d-4794-8dac-4b7299e6cd39", + "a0ef72ac-b418-40da-b320-095a2874e061", + "a1883b0d-fa9a-4329-8f78-ff42d1adb9ac", + "a1883b0d-fa9a-4329-8f78-ff42d1adb9ac@6c48a", + "a1883b0d-fa9a-4329-8f78-ff42d1adb9ac@f9941", + "a64f70c5-fd92-4f53-9cea-a726d3ccb680", + "a64f70c5-fd92-4f53-9cea-a726d3ccb680@6c48a", + "a64f70c5-fd92-4f53-9cea-a726d3ccb680@f9941", + "a73cc36b-81f8-4a83-ae05-c7c976183907", + "a73cc36b-81f8-4a83-ae05-c7c976183907@6c48a", + "a73cc36b-81f8-4a83-ae05-c7c976183907@f9941", + "aa74ba45-1456-4980-abe3-8ed0e52767a0", + "aa74ba45-1456-4980-abe3-8ed0e52767a0@6c48a", + "aa74ba45-1456-4980-abe3-8ed0e52767a0@f9941", + "aad2c55e-36af-44a3-8c6d-5639841cc67d", + "aad2c55e-36af-44a3-8c6d-5639841cc67d@6c48a", + "aad2c55e-36af-44a3-8c6d-5639841cc67d@f9941", + "aad7964b-28e4-4daa-9981-282c7f28ee2a", + "aad7964b-28e4-4daa-9981-282c7f28ee2a@6c48a", + "aad7964b-28e4-4daa-9981-282c7f28ee2a@f9941", + "ab26edf5-c9aa-4def-bd6f-6e05efe76d0d", + "ab26edf5-c9aa-4def-bd6f-6e05efe76d0d@6c48a", + "ab26edf5-c9aa-4def-bd6f-6e05efe76d0d@f9941", + "abd50507-0cfd-49f8-8c6d-3b00ba75b8f6", + "abd50507-0cfd-49f8-8c6d-3b00ba75b8f6@6c48a", + "abd50507-0cfd-49f8-8c6d-3b00ba75b8f6@f9941", + "ac4f309c-c432-4fed-ad6d-3e058bd928c3", + "ac4f309c-c432-4fed-ad6d-3e058bd928c3@6c48a", + "ac4f309c-c432-4fed-ad6d-3e058bd928c3@f9941", + "ac93c3a9-4f91-424b-8d99-22819bf809a2", + "ac93c3a9-4f91-424b-8d99-22819bf809a2@6c48a", + "ac93c3a9-4f91-424b-8d99-22819bf809a2@f9941", + "ac99ce70-b5af-40d4-9db1-97a9b4a029a1", + "ac99ce70-b5af-40d4-9db1-97a9b4a029a1@6c48a", + "ac99ce70-b5af-40d4-9db1-97a9b4a029a1@f9941", + "acbf7e84-b9a5-4669-a409-57aea3e9ad8a", + "ad215587-f029-4276-b2c0-ba6292da5e83", + "ad215587-f029-4276-b2c0-ba6292da5e83@6c48a", + "ad215587-f029-4276-b2c0-ba6292da5e83@f9941", + "ad329478-0a3a-4e0f-9951-ea8a178f72a6", + "ad329478-0a3a-4e0f-9951-ea8a178f72a6@6c48a", + "ad329478-0a3a-4e0f-9951-ea8a178f72a6@f9941", + "ae0870b4-96fe-4646-9ade-2f48db9518e0", + "ae0870b4-96fe-4646-9ade-2f48db9518e0@6c48a", + "ae0870b4-96fe-4646-9ade-2f48db9518e0@f9941", + "ae43d248-143b-4c9f-b93d-be8286fc1565", + "ae43d248-143b-4c9f-b93d-be8286fc1565@6c48a", + "ae43d248-143b-4c9f-b93d-be8286fc1565@f9941", + "b2690697-0ed9-4ed8-b451-468e87cf2266", + "b2690697-0ed9-4ed8-b451-468e87cf2266@6c48a", + "b2690697-0ed9-4ed8-b451-468e87cf2266@f9941", + "b32f733a-d305-4f1c-8542-45f68a22d072", + "b32f733a-d305-4f1c-8542-45f68a22d072@6c48a", + "b32f733a-d305-4f1c-8542-45f68a22d072@f9941", + "b3bb16f2-78ad-418e-abb7-fb1719ae935c", + "b3bb16f2-78ad-418e-abb7-fb1719ae935c@6c48a", + "b3bb16f2-78ad-418e-abb7-fb1719ae935c@f9941", + "b5d7be0c-1350-4548-ac0d-275d2d81d39e", + "b5d7be0c-1350-4548-ac0d-275d2d81d39e@6c48a", + "b5d7be0c-1350-4548-ac0d-275d2d81d39e@f9941", + "b6f851cd-8a7b-4fff-9d93-88a6165a4c68", + "b6f851cd-8a7b-4fff-9d93-88a6165a4c68@6c48a", + "b6f851cd-8a7b-4fff-9d93-88a6165a4c68@f9941", + "b716aa0f-2c37-4287-a6c6-032ab8364bcf", + "b716aa0f-2c37-4287-a6c6-032ab8364bcf@6c48a", + "b716aa0f-2c37-4287-a6c6-032ab8364bcf@f9941", + "b77dd676-c35c-4b6d-9caa-27aeda3f3cfc", + "b77dd676-c35c-4b6d-9caa-27aeda3f3cfc@6c48a", + "b77dd676-c35c-4b6d-9caa-27aeda3f3cfc@f9941", + "bb77826b-b6c0-4b07-aeb0-ead7ca451f8d", + "bb77826b-b6c0-4b07-aeb0-ead7ca451f8d@6c48a", + "bb77826b-b6c0-4b07-aeb0-ead7ca451f8d@f9941", + "bbf93c62-c99c-42d5-bdfd-1a1fea064af6", + "bbf93c62-c99c-42d5-bdfd-1a1fea064af6@6c48a", + "bbf93c62-c99c-42d5-bdfd-1a1fea064af6@f9941", + "bde0c35f-afdc-4df8-b186-aa8f93942b48", + "bde0c35f-afdc-4df8-b186-aa8f93942b48@6c48a", + "bde0c35f-afdc-4df8-b186-aa8f93942b48@f9941", + "bec67e6e-8cac-46c2-85d5-6d51c69e5573", + "bec67e6e-8cac-46c2-85d5-6d51c69e5573@6c48a", + "bec67e6e-8cac-46c2-85d5-6d51c69e5573@f9941", + "bfb5a670-2c13-425f-8b50-d42c6f880907", + "bfb5a670-2c13-425f-8b50-d42c6f880907@6c48a", + "bfb5a670-2c13-425f-8b50-d42c6f880907@f9941", + "c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a", + "c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a@6c48a", + "c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a@f9941", + "c059355d-3503-4aa1-87c0-38b81b2050e2", + "c059355d-3503-4aa1-87c0-38b81b2050e2@6c48a", + "c059355d-3503-4aa1-87c0-38b81b2050e2@f9941", + "c26a2ac3-057f-4de8-8c06-9ff3e1c48017", + "c26a2ac3-057f-4de8-8c06-9ff3e1c48017@6c48a", + "c26a2ac3-057f-4de8-8c06-9ff3e1c48017@f9941", + "c3019d06-733d-4076-804b-ef4165b1be57", + "c3019d06-733d-4076-804b-ef4165b1be57@6c48a", + "c3019d06-733d-4076-804b-ef4165b1be57@f9941", + "c3c78943-a4cd-4762-a723-86206969885e", + "c3c78943-a4cd-4762-a723-86206969885e@6c48a", + "c3c78943-a4cd-4762-a723-86206969885e@f9941", + "c4a53c5d-b489-4b37-a5ca-72bfe7ffe452", + "c4a53c5d-b489-4b37-a5ca-72bfe7ffe452@6c48a", + "c4a53c5d-b489-4b37-a5ca-72bfe7ffe452@f9941", + "c4fba28b-29af-4666-b7d1-0720ce76524b", + "c4fba28b-29af-4666-b7d1-0720ce76524b@6c48a", + "c4fba28b-29af-4666-b7d1-0720ce76524b@f9941", + "c6e672c2-f040-4f87-8f4b-2c83be6d69a6", + "c70b94ef-5ff6-4295-992a-5579a2d6458b", + "c70b94ef-5ff6-4295-992a-5579a2d6458b@6c48a", + "c70b94ef-5ff6-4295-992a-5579a2d6458b@f9941", + "c71daad3-b3f3-4204-9416-c885a6303ac9", + "c71daad3-b3f3-4204-9416-c885a6303ac9@6c48a", + "c71daad3-b3f3-4204-9416-c885a6303ac9@f9941", + "ca65e2f4-8510-484c-8dd2-f4eaef7f66c7", + "ca65e2f4-8510-484c-8dd2-f4eaef7f66c7@6c48a", + "ca65e2f4-8510-484c-8dd2-f4eaef7f66c7@f9941", + "ca86f45b-2472-40ee-b653-259dbe441007", + "ca86f45b-2472-40ee-b653-259dbe441007@6c48a", + "ca86f45b-2472-40ee-b653-259dbe441007@f9941", + "cb5ace05-d558-40ee-8bd2-ef9401e3c19b", + "cb5ace05-d558-40ee-8bd2-ef9401e3c19b@6c48a", + "cb5ace05-d558-40ee-8bd2-ef9401e3c19b@f9941", + "cc320ae3-2792-40b4-adce-011d97efc064", + "cc320ae3-2792-40b4-adce-011d97efc064@6c48a", + "cc320ae3-2792-40b4-adce-011d97efc064@f9941", + "ce94d072-b86a-43e2-af31-374069cf363e", + "ce94d072-b86a-43e2-af31-374069cf363e@6c48a", + "ce94d072-b86a-43e2-af31-374069cf363e@f9941", + "d2b965cd-897e-455b-8d21-5ed3bf0902be", + "d2b965cd-897e-455b-8d21-5ed3bf0902be@6c48a", + "d2b965cd-897e-455b-8d21-5ed3bf0902be@f9941", + "d330c1ef-5e51-4335-980b-d535892c4a18", + "d330c1ef-5e51-4335-980b-d535892c4a18@6c48a", + "d330c1ef-5e51-4335-980b-d535892c4a18@f9941", + "d3a8da1f-daa5-4e52-929a-edf95edb8275", + "d3a8da1f-daa5-4e52-929a-edf95edb8275@6c48a", + "d3a8da1f-daa5-4e52-929a-edf95edb8275@f9941", + "d4feff1b-d3c0-4001-9a95-320adb8ab285", + "d4feff1b-d3c0-4001-9a95-320adb8ab285@6c48a", + "d4feff1b-d3c0-4001-9a95-320adb8ab285@f9941", + "d602f103-bb41-4a24-85c7-d97fccaadf24", + "d602f103-bb41-4a24-85c7-d97fccaadf24@6c48a", + "d602f103-bb41-4a24-85c7-d97fccaadf24@f9941", + "d63dc130-416b-422c-a90f-273895f4db73", + "d63dc130-416b-422c-a90f-273895f4db73@6c48a", + "d63dc130-416b-422c-a90f-273895f4db73@f9941", + "d8b2f923-b61d-4e95-820a-7ccc0d9031bc", + "d8b2f923-b61d-4e95-820a-7ccc0d9031bc@6c48a", + "d8b2f923-b61d-4e95-820a-7ccc0d9031bc@f9941", + "d8c705a6-a4c6-4936-b706-56e89e9bf344", + "d8c705a6-a4c6-4936-b706-56e89e9bf344@6c48a", + "d8c705a6-a4c6-4936-b706-56e89e9bf344@f9941", + "dc059148-a12d-4947-a708-ae642f146745", + "dc059148-a12d-4947-a708-ae642f146745@6c48a", + "dc059148-a12d-4947-a708-ae642f146745@f9941", + "dc64288e-f16e-4fa1-bec7-f79a9b9ec72b", + "dc64288e-f16e-4fa1-bec7-f79a9b9ec72b@6c48a", + "dc64288e-f16e-4fa1-bec7-f79a9b9ec72b@f9941", + "dc70290b-e14b-4d59-81a8-e037fa6b587c", + "dc70290b-e14b-4d59-81a8-e037fa6b587c@6c48a", + "dc70290b-e14b-4d59-81a8-e037fa6b587c@f9941", + "dce246d4-116d-4f36-893b-43a64365169d", + "dce246d4-116d-4f36-893b-43a64365169d@6c48a", + "dce246d4-116d-4f36-893b-43a64365169d@f9941", + "dd17b176-c0e4-471b-953d-157482a7e61e", + "dd17b176-c0e4-471b-953d-157482a7e61e@6c48a", + "dd17b176-c0e4-471b-953d-157482a7e61e@f9941", + "e08aaf39-bbce-4699-b45c-6f72957869ca", + "e08aaf39-bbce-4699-b45c-6f72957869ca@6c48a", + "e08aaf39-bbce-4699-b45c-6f72957869ca@f9941", + "e13e6dc3-6a6f-4f53-972c-0290b5963bbb", + "e13e6dc3-6a6f-4f53-972c-0290b5963bbb@6c48a", + "e13e6dc3-6a6f-4f53-972c-0290b5963bbb@f9941", + "e59a20fa-257a-4368-8cd6-736614ee4c3b", + "e59a20fa-257a-4368-8cd6-736614ee4c3b@6c48a", + "e59a20fa-257a-4368-8cd6-736614ee4c3b@f9941", + "e6d6cc9e-cc78-48b3-99c4-5debb6e15004", + "e6d6cc9e-cc78-48b3-99c4-5debb6e15004@6c48a", + "e6d6cc9e-cc78-48b3-99c4-5debb6e15004@f9941", + "e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f", + "e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f@6c48a", + "e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f@f9941", + "e8550400-59c1-4cde-a972-b6df5f696b09", + "e8550400-59c1-4cde-a972-b6df5f696b09@6c48a", + "e8550400-59c1-4cde-a972-b6df5f696b09@f9941", + "e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8", + "e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8@6c48a", + "e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8@f9941", + "eccf0439-94a8-4b1a-8c7c-229f7a3042d9", + "eccf0439-94a8-4b1a-8c7c-229f7a3042d9@6c48a", + "eccf0439-94a8-4b1a-8c7c-229f7a3042d9@f9941", + "ed84140d-68f8-4dee-aa53-df590512fa94", + "ed84140d-68f8-4dee-aa53-df590512fa94@6c48a", + "ed84140d-68f8-4dee-aa53-df590512fa94@f9941", + "f2f6ace7-cda7-4312-8403-42c8767ac2f5", + "f2f6ace7-cda7-4312-8403-42c8767ac2f5@6c48a", + "f2f6ace7-cda7-4312-8403-42c8767ac2f5@f9941", + "f4e45413-6b04-404c-8a2c-603b45f7caff", + "f4e45413-6b04-404c-8a2c-603b45f7caff@6c48a", + "f4e45413-6b04-404c-8a2c-603b45f7caff@f9941", + "f4f58d91-aad3-471e-9328-b714e8e5982c", + "f71c334f-843b-49b0-b14b-616629f00565", + "f71c334f-843b-49b0-b14b-616629f00565@6c48a", + "f71c334f-843b-49b0-b14b-616629f00565@f9941", + "fa67273e-09aa-4baa-ac04-3a86c5698e1b", + "fa67273e-09aa-4baa-ac04-3a86c5698e1b@6c48a", + "fa67273e-09aa-4baa-ac04-3a86c5698e1b@f9941", + "faab0107-f3e3-49e0-82e1-6b992e6d5ce6", + "faab0107-f3e3-49e0-82e1-6b992e6d5ce6@6c48a", + "faab0107-f3e3-49e0-82e1-6b992e6d5ce6@f9941", + "faeb7ee7-ef85-400d-aab5-250de6beac72", + "faeb7ee7-ef85-400d-aab5-250de6beac72@6c48a", + "faeb7ee7-ef85-400d-aab5-250de6beac72@f9941", + "fbadc552-d5aa-42fc-a9da-f4c9398d3ea8", + "fbadc552-d5aa-42fc-a9da-f4c9398d3ea8@6c48a", + "fbadc552-d5aa-42fc-a9da-f4c9398d3ea8@f9941", + "fc568493-5c48-42fe-83ae-ae4a8e6c79c6", + "fc568493-5c48-42fe-83ae-ae4a8e6c79c6@6c48a", + "fc568493-5c48-42fe-83ae-ae4a8e6c79c6@f9941", + "fcd65028-f911-47d4-8a0e-c9d8d49a8542", + "fcd65028-f911-47d4-8a0e-c9d8d49a8542@6c48a", + "fcd65028-f911-47d4-8a0e-c9d8d49a8542@f9941", + "fd4028bb-d170-4a6c-a419-2ade1ed59038", + "fd4028bb-d170-4a6c-a419-2ade1ed59038@6c48a", + "fd4028bb-d170-4a6c-a419-2ade1ed59038@f9941", + "fdd5cc13-b87e-43b2-8d10-5d91105d43fc", + "fdd5cc13-b87e-43b2-8d10-5d91105d43fc@6c48a", + "fdd5cc13-b87e-43b2-8d10-5d91105d43fc@f9941", + "fe006121-94b6-4567-befa-d5d7c12fb3aa", + "fef99059-e5d9-47a9-87f4-46578f2fcae2", + "fef99059-e5d9-47a9-87f4-46578f2fcae2@6c48a", + "fef99059-e5d9-47a9-87f4-46578f2fcae2@f9941", + "fefd7337-749b-4478-80e6-90f6c8c91f78", + "fefd7337-749b-4478-80e6-90f6c8c91f78@6c48a", + "fefd7337-749b-4478-80e6-90f6c8c91f78@f9941", + "ffd5101f-8560-4166-87a3-a649ceaf8161", + "ffd5101f-8560-4166-87a3-a649ceaf8161@6c48a", + "ffd5101f-8560-4166-87a3-a649ceaf8161@f9941" + ], + "paths": { + "73e7b692-0dd7-428d-a37e-5294b5b02a78": [ + "bullets/疯狂松鼠/attack", + "cc.ImageAsset" + ], + "73e7b692-0dd7-428d-a37e-5294b5b02a78@6c48a": [ + "bullets/疯狂松鼠/attack/texture", + "cc.Texture2D", + 1 + ], + "73e7b692-0dd7-428d-a37e-5294b5b02a78@f9941": [ + "bullets/疯狂松鼠/attack/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "30250fcc-aac2-4473-94bf-7688cf16a604": [ + "map/MAP2/MAP2_1", + "cc.ImageAsset" + ], + "30250fcc-aac2-4473-94bf-7688cf16a604@6c48a": [ + "map/MAP2/MAP2_1/texture", + "cc.Texture2D", + 1 + ], + "30250fcc-aac2-4473-94bf-7688cf16a604@f9941": [ + "map/MAP2/MAP2_1/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "13ffba43-826c-4f33-8ac2-4b59811ce9b0": [ + "map/MAP2/MAP2_2", + "cc.ImageAsset" + ], + "13ffba43-826c-4f33-8ac2-4b59811ce9b0@6c48a": [ + "map/MAP2/MAP2_2/texture", + "cc.Texture2D", + 1 + ], + "13ffba43-826c-4f33-8ac2-4b59811ce9b0@f9941": [ + "map/MAP2/MAP2_2/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "a73cc36b-81f8-4a83-ae05-c7c976183907": [ + "map/MAP6/MAP6_1", + "cc.ImageAsset" + ], + "a73cc36b-81f8-4a83-ae05-c7c976183907@6c48a": [ + "map/MAP6/MAP6_1/texture", + "cc.Texture2D", + 1 + ], + "a73cc36b-81f8-4a83-ae05-c7c976183907@f9941": [ + "map/MAP6/MAP6_1/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "dc059148-a12d-4947-a708-ae642f146745": [ + "map/MAP6/MAP6_2", + "cc.ImageAsset" + ], + "dc059148-a12d-4947-a708-ae642f146745@6c48a": [ + "map/MAP6/MAP6_2/texture", + "cc.Texture2D", + 1 + ], + "dc059148-a12d-4947-a708-ae642f146745@f9941": [ + "map/MAP6/MAP6_2/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "24869eec-947e-498b-93cb-9ac58ecb5876": [ + "map/MAP6/MAP6_3", + "cc.ImageAsset" + ], + "24869eec-947e-498b-93cb-9ac58ecb5876@6c48a": [ + "map/MAP6/MAP6_3/texture", + "cc.Texture2D", + 1 + ], + "24869eec-947e-498b-93cb-9ac58ecb5876@f9941": [ + "map/MAP6/MAP6_3/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "a64f70c5-fd92-4f53-9cea-a726d3ccb680": [ + "effect/子弹效果/base_fly_fire/000", + "cc.ImageAsset" + ], + "a64f70c5-fd92-4f53-9cea-a726d3ccb680@6c48a": [ + "effect/子弹效果/base_fly_fire/000/texture", + "cc.Texture2D", + 1 + ], + "a64f70c5-fd92-4f53-9cea-a726d3ccb680@f9941": [ + "effect/子弹效果/base_fly_fire/000/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "38004a8e-1e7e-481d-a276-ba12a9015c96": [ + "effect/子弹效果/base_fly_fire/001", + "cc.ImageAsset" + ], + "38004a8e-1e7e-481d-a276-ba12a9015c96@6c48a": [ + "effect/子弹效果/base_fly_fire/001/texture", + "cc.Texture2D", + 1 + ], + "38004a8e-1e7e-481d-a276-ba12a9015c96@f9941": [ + "effect/子弹效果/base_fly_fire/001/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "c059355d-3503-4aa1-87c0-38b81b2050e2": [ + "effect/子弹效果/base_fly_fire/002", + "cc.ImageAsset" + ], + "c059355d-3503-4aa1-87c0-38b81b2050e2@6c48a": [ + "effect/子弹效果/base_fly_fire/002/texture", + "cc.Texture2D", + 1 + ], + "c059355d-3503-4aa1-87c0-38b81b2050e2@f9941": [ + "effect/子弹效果/base_fly_fire/002/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "e8550400-59c1-4cde-a972-b6df5f696b09": [ + "effect/子弹效果/base_fly_fire/003", + "cc.ImageAsset" + ], + "e8550400-59c1-4cde-a972-b6df5f696b09@6c48a": [ + "effect/子弹效果/base_fly_fire/003/texture", + "cc.Texture2D", + 1 + ], + "e8550400-59c1-4cde-a972-b6df5f696b09@f9941": [ + "effect/子弹效果/base_fly_fire/003/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "07a6e3b4-0690-4be3-bd6a-ddb8655d0928": [ + "effect/子弹效果/base_fly_fire/004", + "cc.ImageAsset" + ], + "07a6e3b4-0690-4be3-bd6a-ddb8655d0928@6c48a": [ + "effect/子弹效果/base_fly_fire/004/texture", + "cc.Texture2D", + 1 + ], + "07a6e3b4-0690-4be3-bd6a-ddb8655d0928@f9941": [ + "effect/子弹效果/base_fly_fire/004/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "32299834-d060-4b93-b428-e1fe3b8346e8": [ + "effect/子弹效果/base_fly_fire/buff_fire", + "cc.Asset" + ], + "dce246d4-116d-4f36-893b-43a64365169d": [ + "effect/爆炸效果/shouji_01/baozha0001", + "cc.ImageAsset" + ], + "dce246d4-116d-4f36-893b-43a64365169d@6c48a": [ + "effect/爆炸效果/shouji_01/baozha0001/texture", + "cc.Texture2D", + 1 + ], + "dce246d4-116d-4f36-893b-43a64365169d@f9941": [ + "effect/爆炸效果/shouji_01/baozha0001/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "bec67e6e-8cac-46c2-85d5-6d51c69e5573": [ + "effect/爆炸效果/shouji_01/baozha0002", + "cc.ImageAsset" + ], + "bec67e6e-8cac-46c2-85d5-6d51c69e5573@6c48a": [ + "effect/爆炸效果/shouji_01/baozha0002/texture", + "cc.Texture2D", + 1 + ], + "bec67e6e-8cac-46c2-85d5-6d51c69e5573@f9941": [ + "effect/爆炸效果/shouji_01/baozha0002/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "026823e5-14f5-4f70-a73e-88a3f8e8001e": [ + "effect/爆炸效果/shouji_01/baozha0003", + "cc.ImageAsset" + ], + "026823e5-14f5-4f70-a73e-88a3f8e8001e@6c48a": [ + "effect/爆炸效果/shouji_01/baozha0003/texture", + "cc.Texture2D", + 1 + ], + "026823e5-14f5-4f70-a73e-88a3f8e8001e@f9941": [ + "effect/爆炸效果/shouji_01/baozha0003/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "5828e8e7-d037-46d8-a9af-63a11ae7349e": [ + "effect/爆炸效果/shouji_01/baozha0004", + "cc.ImageAsset" + ], + "5828e8e7-d037-46d8-a9af-63a11ae7349e@6c48a": [ + "effect/爆炸效果/shouji_01/baozha0004/texture", + "cc.Texture2D", + 1 + ], + "5828e8e7-d037-46d8-a9af-63a11ae7349e@f9941": [ + "effect/爆炸效果/shouji_01/baozha0004/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "d330c1ef-5e51-4335-980b-d535892c4a18": [ + "effect/爆炸效果/shouji_01/baozha0005", + "cc.ImageAsset" + ], + "d330c1ef-5e51-4335-980b-d535892c4a18@6c48a": [ + "effect/爆炸效果/shouji_01/baozha0005/texture", + "cc.Texture2D", + 1 + ], + "d330c1ef-5e51-4335-980b-d535892c4a18@f9941": [ + "effect/爆炸效果/shouji_01/baozha0005/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "aa74ba45-1456-4980-abe3-8ed0e52767a0": [ + "effect/爆炸效果/shouji_01/baozha0006", + "cc.ImageAsset" + ], + "aa74ba45-1456-4980-abe3-8ed0e52767a0@6c48a": [ + "effect/爆炸效果/shouji_01/baozha0006/texture", + "cc.Texture2D", + 1 + ], + "aa74ba45-1456-4980-abe3-8ed0e52767a0@f9941": [ + "effect/爆炸效果/shouji_01/baozha0006/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "fbadc552-d5aa-42fc-a9da-f4c9398d3ea8": [ + "effect/爆炸效果/shouji_01/guangdian", + "cc.ImageAsset" + ], + "fbadc552-d5aa-42fc-a9da-f4c9398d3ea8@6c48a": [ + "effect/爆炸效果/shouji_01/guangdian/texture", + "cc.Texture2D", + 1 + ], + "fbadc552-d5aa-42fc-a9da-f4c9398d3ea8@f9941": [ + "effect/爆炸效果/shouji_01/guangdian/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "bde0c35f-afdc-4df8-b186-aa8f93942b48": [ + "effect/爆炸效果/shouji_01/guangqiu", + "cc.ImageAsset" + ], + "bde0c35f-afdc-4df8-b186-aa8f93942b48@6c48a": [ + "effect/爆炸效果/shouji_01/guangqiu/texture", + "cc.Texture2D", + 1 + ], + "bde0c35f-afdc-4df8-b186-aa8f93942b48@f9941": [ + "effect/爆炸效果/shouji_01/guangqiu/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "2e9aa2a1-2ec8-49bb-bf44-7aad4c27704e": [ + "effect/爆炸效果/shouji_01/shouji_01", + "cc.Asset" + ], + "2aff97dc-8695-491f-9b30-23cab6c11b9c": [ + "effect/爆炸效果/zhouyu_skill2_2/zhouyu_skill2_2", + "cc.Asset" + ], + "15495485-c12f-49b8-9b70-5f327417a643": [ + "spine/神奇宝贝/001妙蛙种子/001妙蛙种子", + "cc.Asset" + ], + "5248ee3e-c600-4b2b-b5d7-ccff7c9830c2": [ + "effect/子弹效果/base_fly_fire/spine/buff_fire", + "cc.Asset" + ], + "9ba1ed01-edb4-4f3e-988c-f6111de69597": [ + "effect/子弹效果/base_fly_fire/spine/buff_fire", + "sp.SkeletonData" + ], + "259f92ef-99c5-4e2b-bf7f-3cfd159a32e2": [ + "effect/子弹效果/base_fly_fire/spine/buff_fire", + "cc.ImageAsset" + ], + "259f92ef-99c5-4e2b-bf7f-3cfd159a32e2@6c48a": [ + "effect/子弹效果/base_fly_fire/spine/buff_fire/texture", + "cc.Texture2D", + 1 + ], + "259f92ef-99c5-4e2b-bf7f-3cfd159a32e2@f9941": [ + "effect/子弹效果/base_fly_fire/spine/buff_fire/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "34ac9fdc-64c2-448b-963c-d75aab270352": [ + "effect/爆炸效果/shouji_01/spine/shouji_01", + "cc.Asset" + ], + "6bea3dd7-ad6a-4cd3-a04e-99376e7dd9a2": [ + "effect/爆炸效果/shouji_01/spine/shouji_01", + "sp.SkeletonData" + ], + "22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68": [ + "effect/爆炸效果/shouji_01/spine/shouji_01", + "cc.ImageAsset" + ], + "22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68@6c48a": [ + "effect/爆炸效果/shouji_01/spine/shouji_01/texture", + "cc.Texture2D", + 1 + ], + "22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68@f9941": [ + "effect/爆炸效果/shouji_01/spine/shouji_01/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "9ba0cb57-c7d4-43b9-9a45-c90fd071e578": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/4845-baozha2", + "cc.ImageAsset" + ], + "9ba0cb57-c7d4-43b9-9a45-c90fd071e578@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/4845-baozha2/texture", + "cc.Texture2D", + 1 + ], + "9ba0cb57-c7d4-43b9-9a45-c90fd071e578@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/4845-baozha2/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "39e91df6-ddb4-436c-b709-7d0e1a281271": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/baoguang", + "cc.ImageAsset" + ], + "39e91df6-ddb4-436c-b709-7d0e1a281271@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/baoguang/texture", + "cc.Texture2D", + 1 + ], + "39e91df6-ddb4-436c-b709-7d0e1a281271@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/baoguang/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "b77dd676-c35c-4b6d-9caa-27aeda3f3cfc": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/gq2", + "cc.ImageAsset" + ], + "b77dd676-c35c-4b6d-9caa-27aeda3f3cfc@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/gq2/texture", + "cc.Texture2D", + 1 + ], + "b77dd676-c35c-4b6d-9caa-27aeda3f3cfc@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/gq2/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "f2f6ace7-cda7-4312-8403-42c8767ac2f5": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian02", + "cc.ImageAsset" + ], + "f2f6ace7-cda7-4312-8403-42c8767ac2f5@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian02/texture", + "cc.Texture2D", + 1 + ], + "f2f6ace7-cda7-4312-8403-42c8767ac2f5@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian02/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "ce94d072-b86a-43e2-af31-374069cf363e": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian03", + "cc.ImageAsset" + ], + "ce94d072-b86a-43e2-af31-374069cf363e@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian03/texture", + "cc.Texture2D", + 1 + ], + "ce94d072-b86a-43e2-af31-374069cf363e@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian03/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "6e73e1fa-3744-4e08-9eaa-117cc524afda": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian04", + "cc.ImageAsset" + ], + "6e73e1fa-3744-4e08-9eaa-117cc524afda@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian04/texture", + "cc.Texture2D", + 1 + ], + "6e73e1fa-3744-4e08-9eaa-117cc524afda@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian04/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "d602f103-bb41-4a24-85c7-d97fccaadf24": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian05", + "cc.ImageAsset" + ], + "d602f103-bb41-4a24-85c7-d97fccaadf24@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian05/texture", + "cc.Texture2D", + 1 + ], + "d602f103-bb41-4a24-85c7-d97fccaadf24@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian05/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "534a0232-a40c-453e-8a9e-f7001bc0ce73": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian06", + "cc.ImageAsset" + ], + "534a0232-a40c-453e-8a9e-f7001bc0ce73@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian06/texture", + "cc.Texture2D", + 1 + ], + "534a0232-a40c-453e-8a9e-f7001bc0ce73@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian06/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "8665e251-73b9-4bb1-b908-161c51250d6f": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian07", + "cc.ImageAsset" + ], + "8665e251-73b9-4bb1-b908-161c51250d6f@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian07/texture", + "cc.Texture2D", + 1 + ], + "8665e251-73b9-4bb1-b908-161c51250d6f@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian07/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "1f2defe6-08ea-4919-be26-f263623f859a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian08", + "cc.ImageAsset" + ], + "1f2defe6-08ea-4919-be26-f263623f859a@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian08/texture", + "cc.Texture2D", + 1 + ], + "1f2defe6-08ea-4919-be26-f263623f859a@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_baodian08/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "4eb039e0-4381-4ebf-8a71-5f4f85452b7b": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_guangdiand1", + "cc.ImageAsset" + ], + "4eb039e0-4381-4ebf-8a71-5f4f85452b7b@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_guangdiand1/texture", + "cc.Texture2D", + 1 + ], + "4eb039e0-4381-4ebf-8a71-5f4f85452b7b@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_guangdiand1/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "4ff7df06-ccdc-4497-8332-fbf9b6abfc18": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_hybz_0058", + "cc.ImageAsset" + ], + "4ff7df06-ccdc-4497-8332-fbf9b6abfc18@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_hybz_0058/texture", + "cc.Texture2D", + 1 + ], + "4ff7df06-ccdc-4497-8332-fbf9b6abfc18@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_hybz_0058/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "1168b518-61b0-4ca8-ba16-5085b3722064": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_hybz_0060", + "cc.ImageAsset" + ], + "1168b518-61b0-4ca8-ba16-5085b3722064@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_hybz_0060/texture", + "cc.Texture2D", + 1 + ], + "1168b518-61b0-4ca8-ba16-5085b3722064@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_hybz_0060/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "1014d8fe-eb7e-4351-9454-70ff7a4e4fbc": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_hybz_0062", + "cc.ImageAsset" + ], + "1014d8fe-eb7e-4351-9454-70ff7a4e4fbc@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_hybz_0062/texture", + "cc.Texture2D", + 1 + ], + "1014d8fe-eb7e-4351-9454-70ff7a4e4fbc@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_hybz_0062/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "5f7d151d-78bc-4738-b3eb-325440ea5f24": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_hybz_0064", + "cc.ImageAsset" + ], + "5f7d151d-78bc-4738-b3eb-325440ea5f24@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_hybz_0064/texture", + "cc.Texture2D", + 1 + ], + "5f7d151d-78bc-4738-b3eb-325440ea5f24@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_hybz_0064/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "3e89062e-b618-4ae5-915b-d897340f2f40": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_hybz_0068", + "cc.ImageAsset" + ], + "3e89062e-b618-4ae5-915b-d897340f2f40@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_hybz_0068/texture", + "cc.Texture2D", + 1 + ], + "3e89062e-b618-4ae5-915b-d897340f2f40@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_hybz_0068/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "a1883b0d-fa9a-4329-8f78-ff42d1adb9ac": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_quan4", + "cc.ImageAsset" + ], + "a1883b0d-fa9a-4329-8f78-ff42d1adb9ac@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_quan4/texture", + "cc.Texture2D", + 1 + ], + "a1883b0d-fa9a-4329-8f78-ff42d1adb9ac@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/tx_quan4/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "656a4136-154e-4a01-84ed-418fd085386a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_xsx_00000", + "cc.ImageAsset" + ], + "656a4136-154e-4a01-84ed-418fd085386a@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_xsx_00000/texture", + "cc.Texture2D", + 1 + ], + "656a4136-154e-4a01-84ed-418fd085386a@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_xsx_00000/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "8251d88e-0943-4c69-89cb-88116bb83e9f": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_xsx_00002", + "cc.ImageAsset" + ], + "8251d88e-0943-4c69-89cb-88116bb83e9f@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_xsx_00002/texture", + "cc.Texture2D", + 1 + ], + "8251d88e-0943-4c69-89cb-88116bb83e9f@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_xsx_00002/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "d3a8da1f-daa5-4e52-929a-edf95edb8275": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_xsx_00004", + "cc.ImageAsset" + ], + "d3a8da1f-daa5-4e52-929a-edf95edb8275@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_xsx_00004/texture", + "cc.Texture2D", + 1 + ], + "d3a8da1f-daa5-4e52-929a-edf95edb8275@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_xsx_00004/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "b5d7be0c-1350-4548-ac0d-275d2d81d39e": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_xsx_00006", + "cc.ImageAsset" + ], + "b5d7be0c-1350-4548-ac0d-275d2d81d39e@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_xsx_00006/texture", + "cc.Texture2D", + 1 + ], + "b5d7be0c-1350-4548-ac0d-275d2d81d39e@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/ef/TX_xsx_00006/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "6d7fd2fa-9401-4918-8f4c-9b85f1017146": [ + "effect/爆炸效果/zhouyu_skill2_2/spine/zhouyu_skill2_2", + "cc.Asset" + ], + "5670f2a3-3ea4-4188-b34c-1ad1a40af86f": [ + "effect/爆炸效果/zhouyu_skill2_2/spine/zhouyu_skill2_2", + "sp.SkeletonData" + ], + "c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a": [ + "effect/爆炸效果/zhouyu_skill2_2/spine/zhouyu_skill2_2", + "cc.ImageAsset" + ], + "c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a@6c48a": [ + "effect/爆炸效果/zhouyu_skill2_2/spine/zhouyu_skill2_2/texture", + "cc.Texture2D", + 1 + ], + "c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a@f9941": [ + "effect/爆炸效果/zhouyu_skill2_2/spine/zhouyu_skill2_2/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "010aa6cc-beed-4a06-8a6f-92dc1dda72c9": [ + "spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/guaiA1a", + "cc.Asset" + ], + "3a4ad94b-6e0f-4a01-825b-1ef057215823": [ + "spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/guaiA1aTexture", + "cc.Asset" + ], + "2058f147-aecf-4084-95ea-cdb5da0fedb1": [ + "spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/guaiA1aTexture", + "cc.ImageAsset" + ], + "2058f147-aecf-4084-95ea-cdb5da0fedb1@6c48a": [ + "spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/guaiA1aTexture/texture", + "cc.Texture2D", + 1 + ], + "2058f147-aecf-4084-95ea-cdb5da0fedb1@f9941": [ + "spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/guaiA1aTexture/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "0d0d520a-6a04-46ec-b8a7-f9f124a59574": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/guaiA1a", + "cc.Asset" + ], + "4fa5a433-2410-4c9f-a196-acc8b645ff69": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/guaiA1aTexture", + "cc.Asset" + ], + "ed84140d-68f8-4dee-aa53-df590512fa94": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/guaiA1aTexture", + "cc.ImageAsset" + ], + "ed84140d-68f8-4dee-aa53-df590512fa94@6c48a": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/guaiA1aTexture/texture", + "cc.Texture2D", + 1 + ], + "ed84140d-68f8-4dee-aa53-df590512fa94@f9941": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/guaiA1aTexture/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "c6e672c2-f040-4f87-8f4b-2c83be6d69a6": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/guaiA4es", + "cc.Asset" + ], + "acbf7e84-b9a5-4669-a409-57aea3e9ad8a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/guaiA4esTexture", + "cc.Asset" + ], + "fcd65028-f911-47d4-8a0e-c9d8d49a8542": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/guaiA4esTexture", + "cc.ImageAsset" + ], + "fcd65028-f911-47d4-8a0e-c9d8d49a8542@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/guaiA4esTexture/texture", + "cc.Texture2D", + 1 + ], + "fcd65028-f911-47d4-8a0e-c9d8d49a8542@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/guaiA4esTexture/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "74953026-d287-43a7-ad10-bae8221f98b8": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/guaiA4e", + "cc.Asset" + ], + "a0ef72ac-b418-40da-b320-095a2874e061": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/guaiA4eTexture", + "cc.Asset" + ], + "f71c334f-843b-49b0-b14b-616629f00565": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/guaiA4eTexture", + "cc.ImageAsset" + ], + "f71c334f-843b-49b0-b14b-616629f00565@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/guaiA4eTexture/texture", + "cc.Texture2D", + 1 + ], + "f71c334f-843b-49b0-b14b-616629f00565@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/guaiA4eTexture/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "eccf0439-94a8-4b1a-8c7c-229f7a3042d9": [ + "spine/神奇宝贝/001妙蛙种子/images/hei", + "cc.ImageAsset" + ], + "eccf0439-94a8-4b1a-8c7c-229f7a3042d9@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/hei/texture", + "cc.Texture2D", + 1 + ], + "eccf0439-94a8-4b1a-8c7c-229f7a3042d9@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/hei/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "2ac4038c-217b-4d36-840d-aebea7f45b72": [ + "spine/神奇宝贝/001妙蛙种子/images/shenti", + "cc.ImageAsset" + ], + "2ac4038c-217b-4d36-840d-aebea7f45b72@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/shenti/texture", + "cc.Texture2D", + 1 + ], + "2ac4038c-217b-4d36-840d-aebea7f45b72@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/shenti/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "126a7574-0975-4062-b1de-6ebcc0dc0296": [ + "spine/神奇宝贝/001妙蛙种子/images/tou", + "cc.ImageAsset" + ], + "126a7574-0975-4062-b1de-6ebcc0dc0296@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/tou/texture", + "cc.Texture2D", + 1 + ], + "126a7574-0975-4062-b1de-6ebcc0dc0296@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/tou/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "96e5083f-61ee-4d79-97b9-c297bb68c54a": [ + "spine/神奇宝贝/001妙蛙种子/images/y-meimao_shouji", + "cc.ImageAsset" + ], + "96e5083f-61ee-4d79-97b9-c297bb68c54a@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/y-meimao_shouji/texture", + "cc.Texture2D", + 1 + ], + "96e5083f-61ee-4d79-97b9-c297bb68c54a@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/y-meimao_shouji/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "b2690697-0ed9-4ed8-b451-468e87cf2266": [ + "spine/神奇宝贝/001妙蛙种子/images/y-yanjing_shouji", + "cc.ImageAsset" + ], + "b2690697-0ed9-4ed8-b451-468e87cf2266@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/y-yanjing_shouji/texture", + "cc.Texture2D", + 1 + ], + "b2690697-0ed9-4ed8-b451-468e87cf2266@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/y-yanjing_shouji/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "ac99ce70-b5af-40d4-9db1-97a9b4a029a1": [ + "spine/神奇宝贝/001妙蛙种子/images/yinying", + "cc.ImageAsset" + ], + "ac99ce70-b5af-40d4-9db1-97a9b4a029a1@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/yinying/texture", + "cc.Texture2D", + 1 + ], + "ac99ce70-b5af-40d4-9db1-97a9b4a029a1@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/yinying/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "e59a20fa-257a-4368-8cd6-736614ee4c3b": [ + "spine/神奇宝贝/001妙蛙种子/images/y_houtui", + "cc.ImageAsset" + ], + "e59a20fa-257a-4368-8cd6-736614ee4c3b@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/y_houtui/texture", + "cc.Texture2D", + 1 + ], + "e59a20fa-257a-4368-8cd6-736614ee4c3b@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/y_houtui/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "ae0870b4-96fe-4646-9ade-2f48db9518e0": [ + "spine/神奇宝贝/001妙蛙种子/images/y_meimao_gongji", + "cc.ImageAsset" + ], + "ae0870b4-96fe-4646-9ade-2f48db9518e0@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/y_meimao_gongji/texture", + "cc.Texture2D", + 1 + ], + "ae0870b4-96fe-4646-9ade-2f48db9518e0@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/y_meimao_gongji/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "9c004ab3-a3a9-46f9-a859-dcc4c3c3769b": [ + "spine/神奇宝贝/001妙蛙种子/images/y_meimao_pingshi", + "cc.ImageAsset" + ], + "9c004ab3-a3a9-46f9-a859-dcc4c3c3769b@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/y_meimao_pingshi/texture", + "cc.Texture2D", + 1 + ], + "9c004ab3-a3a9-46f9-a859-dcc4c3c3769b@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/y_meimao_pingshi/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "376b1458-940c-4ec6-8f67-19ef31cdc7a8": [ + "spine/神奇宝贝/001妙蛙种子/images/y_meimao_shengli", + "cc.ImageAsset" + ], + "376b1458-940c-4ec6-8f67-19ef31cdc7a8@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/y_meimao_shengli/texture", + "cc.Texture2D", + 1 + ], + "376b1458-940c-4ec6-8f67-19ef31cdc7a8@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/y_meimao_shengli/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "5a77fe9d-52fd-4df5-ab08-e2766930e4f8": [ + "spine/神奇宝贝/001妙蛙种子/images/y_qiantui", + "cc.ImageAsset" + ], + "5a77fe9d-52fd-4df5-ab08-e2766930e4f8@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/y_qiantui/texture", + "cc.Texture2D", + 1 + ], + "5a77fe9d-52fd-4df5-ab08-e2766930e4f8@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/y_qiantui/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "faab0107-f3e3-49e0-82e1-6b992e6d5ce6": [ + "spine/神奇宝贝/001妙蛙种子/images/y_yanjing_gongji", + "cc.ImageAsset" + ], + "faab0107-f3e3-49e0-82e1-6b992e6d5ce6@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/y_yanjing_gongji/texture", + "cc.Texture2D", + 1 + ], + "faab0107-f3e3-49e0-82e1-6b992e6d5ce6@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/y_yanjing_gongji/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "fdd5cc13-b87e-43b2-8d10-5d91105d43fc": [ + "spine/神奇宝贝/001妙蛙种子/images/y_yanjing_pingshi", + "cc.ImageAsset" + ], + "fdd5cc13-b87e-43b2-8d10-5d91105d43fc@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/y_yanjing_pingshi/texture", + "cc.Texture2D", + 1 + ], + "fdd5cc13-b87e-43b2-8d10-5d91105d43fc@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/y_yanjing_pingshi/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "52113c9e-1b63-4a9b-99f7-2e5758514f81": [ + "spine/神奇宝贝/001妙蛙种子/images/y_yan_shengli", + "cc.ImageAsset" + ], + "52113c9e-1b63-4a9b-99f7-2e5758514f81@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/y_yan_shengli/texture", + "cc.Texture2D", + 1 + ], + "52113c9e-1b63-4a9b-99f7-2e5758514f81@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/y_yan_shengli/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "e6d6cc9e-cc78-48b3-99c4-5debb6e15004": [ + "spine/神奇宝贝/001妙蛙种子/images/z-meimao_shengli", + "cc.ImageAsset" + ], + "e6d6cc9e-cc78-48b3-99c4-5debb6e15004@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/z-meimao_shengli/texture", + "cc.Texture2D", + 1 + ], + "e6d6cc9e-cc78-48b3-99c4-5debb6e15004@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/z-meimao_shengli/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "33bb5ab6-17d6-47a9-8466-a465c4a7e993": [ + "spine/神奇宝贝/001妙蛙种子/images/z-meimao_shouji", + "cc.ImageAsset" + ], + "33bb5ab6-17d6-47a9-8466-a465c4a7e993@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/z-meimao_shouji/texture", + "cc.Texture2D", + 1 + ], + "33bb5ab6-17d6-47a9-8466-a465c4a7e993@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/z-meimao_shouji/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "7ea77ef2-7734-492f-bb2c-22db352a8b49": [ + "spine/神奇宝贝/001妙蛙种子/images/z-yanjing_shouji", + "cc.ImageAsset" + ], + "7ea77ef2-7734-492f-bb2c-22db352a8b49@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/z-yanjing_shouji/texture", + "cc.Texture2D", + 1 + ], + "7ea77ef2-7734-492f-bb2c-22db352a8b49@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/z-yanjing_shouji/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "54f082ca-86ef-49c8-a33d-8f2ce95c8b57": [ + "spine/神奇宝贝/001妙蛙种子/images/zhonzi", + "cc.ImageAsset" + ], + "54f082ca-86ef-49c8-a33d-8f2ce95c8b57@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/zhonzi/texture", + "cc.Texture2D", + 1 + ], + "54f082ca-86ef-49c8-a33d-8f2ce95c8b57@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/zhonzi/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "fefd7337-749b-4478-80e6-90f6c8c91f78": [ + "spine/神奇宝贝/001妙蛙种子/images/zui_gongji", + "cc.ImageAsset" + ], + "fefd7337-749b-4478-80e6-90f6c8c91f78@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/zui_gongji/texture", + "cc.Texture2D", + 1 + ], + "fefd7337-749b-4478-80e6-90f6c8c91f78@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/zui_gongji/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "063fc0a8-27de-4950-b87e-f8d93a8c97af": [ + "spine/神奇宝贝/001妙蛙种子/images/zui_pingshi", + "cc.ImageAsset" + ], + "063fc0a8-27de-4950-b87e-f8d93a8c97af@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/zui_pingshi/texture", + "cc.Texture2D", + 1 + ], + "063fc0a8-27de-4950-b87e-f8d93a8c97af@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/zui_pingshi/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "fa67273e-09aa-4baa-ac04-3a86c5698e1b": [ + "spine/神奇宝贝/001妙蛙种子/images/zui_shouji", + "cc.ImageAsset" + ], + "fa67273e-09aa-4baa-ac04-3a86c5698e1b@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/zui_shouji/texture", + "cc.Texture2D", + 1 + ], + "fa67273e-09aa-4baa-ac04-3a86c5698e1b@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/zui_shouji/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "fd4028bb-d170-4a6c-a419-2ade1ed59038": [ + "spine/神奇宝贝/001妙蛙种子/images/z_houtui", + "cc.ImageAsset" + ], + "fd4028bb-d170-4a6c-a419-2ade1ed59038@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/z_houtui/texture", + "cc.Texture2D", + 1 + ], + "fd4028bb-d170-4a6c-a419-2ade1ed59038@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/z_houtui/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "8ef1f316-b788-4822-86d2-4d77deb9e57c": [ + "spine/神奇宝贝/001妙蛙种子/images/z_meimao_gongji", + "cc.ImageAsset" + ], + "8ef1f316-b788-4822-86d2-4d77deb9e57c@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/z_meimao_gongji/texture", + "cc.Texture2D", + 1 + ], + "8ef1f316-b788-4822-86d2-4d77deb9e57c@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/z_meimao_gongji/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "4836df74-6d25-4922-a373-32949e6013df": [ + "spine/神奇宝贝/001妙蛙种子/images/z_meimao_pingshi", + "cc.ImageAsset" + ], + "4836df74-6d25-4922-a373-32949e6013df@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/z_meimao_pingshi/texture", + "cc.Texture2D", + 1 + ], + "4836df74-6d25-4922-a373-32949e6013df@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/z_meimao_pingshi/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "771d3105-423e-4ae4-9e58-4e5f2fae3e9a": [ + "spine/神奇宝贝/001妙蛙种子/images/z_qiantui", + "cc.ImageAsset" + ], + "771d3105-423e-4ae4-9e58-4e5f2fae3e9a@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/z_qiantui/texture", + "cc.Texture2D", + 1 + ], + "771d3105-423e-4ae4-9e58-4e5f2fae3e9a@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/z_qiantui/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "c3c78943-a4cd-4762-a723-86206969885e": [ + "spine/神奇宝贝/001妙蛙种子/images/z_yanjing_gongji", + "cc.ImageAsset" + ], + "c3c78943-a4cd-4762-a723-86206969885e@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/z_yanjing_gongji/texture", + "cc.Texture2D", + 1 + ], + "c3c78943-a4cd-4762-a723-86206969885e@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/z_yanjing_gongji/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "6edb6339-008a-4064-b651-ace4908644cd": [ + "spine/神奇宝贝/001妙蛙种子/images/z_yanjing_pingshi", + "cc.ImageAsset" + ], + "6edb6339-008a-4064-b651-ace4908644cd@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/z_yanjing_pingshi/texture", + "cc.Texture2D", + 1 + ], + "6edb6339-008a-4064-b651-ace4908644cd@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/z_yanjing_pingshi/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "06e4dec4-9199-42fa-81c9-1d6c8dce5e3e": [ + "spine/神奇宝贝/001妙蛙种子/images/z_yan_shengli", + "cc.ImageAsset" + ], + "06e4dec4-9199-42fa-81c9-1d6c8dce5e3e@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/z_yan_shengli/texture", + "cc.Texture2D", + 1 + ], + "06e4dec4-9199-42fa-81c9-1d6c8dce5e3e@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/z_yan_shengli/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "58d32a22-c07f-4708-8abb-f39006bac8a9": [ + "spine/神奇宝贝/001妙蛙种子/spine/001妙蛙种子", + "cc.Asset" + ], + "29e1c6dc-6549-4f30-ad94-fe92d3cead0c": [ + "spine/神奇宝贝/001妙蛙种子/spine/001妙蛙种子", + "sp.SkeletonData" + ], + "c26a2ac3-057f-4de8-8c06-9ff3e1c48017": [ + "spine/神奇宝贝/001妙蛙种子/spine/001妙蛙种子", + "cc.ImageAsset" + ], + "c26a2ac3-057f-4de8-8c06-9ff3e1c48017@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/spine/001妙蛙种子/texture", + "cc.Texture2D", + 1 + ], + "c26a2ac3-057f-4de8-8c06-9ff3e1c48017@f9941": [ + "spine/神奇宝贝/001妙蛙种子/spine/001妙蛙种子/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "57f8d466-d380-40b5-8241-4c6529053817": [ + "spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/spine/guaiA1a", + "cc.Asset" + ], + "14d2a9b1-50ad-4051-a96a-b1c194651259": [ + "spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/spine/guaiA1a", + "sp.SkeletonData" + ], + "8cd8e7fb-f35b-417f-b147-ecc7ef089706": [ + "spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/spine/guaiA1a", + "cc.ImageAsset" + ], + "8cd8e7fb-f35b-417f-b147-ecc7ef089706@6c48a": [ + "spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/spine/guaiA1a/texture", + "cc.Texture2D", + 1 + ], + "8cd8e7fb-f35b-417f-b147-ecc7ef089706@f9941": [ + "spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/spine/guaiA1a/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "9eb72656-748d-4794-8dac-4b7299e6cd39": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/spine/guaiA1a", + "cc.Asset" + ], + "42029fae-0ee0-48c1-b7c5-850c03664ae4": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/spine/guaiA1a", + "sp.SkeletonData" + ], + "2357c44f-3cf0-47eb-8f7a-0f303eaefe08": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/spine/guaiA1a", + "cc.ImageAsset" + ], + "2357c44f-3cf0-47eb-8f7a-0f303eaefe08@6c48a": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/spine/guaiA1a/texture", + "cc.Texture2D", + 1 + ], + "2357c44f-3cf0-47eb-8f7a-0f303eaefe08@f9941": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/spine/guaiA1a/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "fe006121-94b6-4567-befa-d5d7c12fb3aa": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/spine/guaiA4es", + "cc.Asset" + ], + "f4f58d91-aad3-471e-9328-b714e8e5982c": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/spine/guaiA4es", + "sp.SkeletonData" + ], + "9968d439-7e1e-4994-bc1b-8bca5d7b49d8": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/spine/guaiA4es", + "cc.ImageAsset" + ], + "9968d439-7e1e-4994-bc1b-8bca5d7b49d8@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/spine/guaiA4es/texture", + "cc.Texture2D", + 1 + ], + "9968d439-7e1e-4994-bc1b-8bca5d7b49d8@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/spine/guaiA4es/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "2cf6c696-6824-46d4-b0e4-25cd69fa7703": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/spine/guaiA4e", + "cc.Asset" + ], + "51104c05-e5db-4274-a66e-1de9ab511e4f": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/spine/guaiA4e", + "sp.SkeletonData" + ], + "179a2053-b80c-4b5d-ab83-e75934fd66d2": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/spine/guaiA4e", + "cc.ImageAsset" + ], + "179a2053-b80c-4b5d-ab83-e75934fd66d2@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/spine/guaiA4e/texture", + "cc.Texture2D", + 1 + ], + "179a2053-b80c-4b5d-ab83-e75934fd66d2@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/spine/guaiA4e/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "0f96bbf8-0324-4eab-ba6a-2a70f7653610": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/shenti_bz", + "cc.ImageAsset" + ], + "0f96bbf8-0324-4eab-ba6a-2a70f7653610@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/shenti_bz/texture", + "cc.Texture2D", + 1 + ], + "0f96bbf8-0324-4eab-ba6a-2a70f7653610@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/shenti_bz/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "138e008e-f0c4-4724-922c-bcda2476a717": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/tou_bz", + "cc.ImageAsset" + ], + "138e008e-f0c4-4724-922c-bcda2476a717@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/tou_bz/texture", + "cc.Texture2D", + 1 + ], + "138e008e-f0c4-4724-922c-bcda2476a717@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/tou_bz/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "0af1bd07-ba37-4db6-bcdb-bd52c636cc65": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/y_bianzi1_bz", + "cc.ImageAsset" + ], + "0af1bd07-ba37-4db6-bcdb-bd52c636cc65@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/y_bianzi1_bz/texture", + "cc.Texture2D", + 1 + ], + "0af1bd07-ba37-4db6-bcdb-bd52c636cc65@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/y_bianzi1_bz/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "d4feff1b-d3c0-4001-9a95-320adb8ab285": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/y_bianzi2_bz", + "cc.ImageAsset" + ], + "d4feff1b-d3c0-4001-9a95-320adb8ab285@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/y_bianzi2_bz/texture", + "cc.Texture2D", + 1 + ], + "d4feff1b-d3c0-4001-9a95-320adb8ab285@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/y_bianzi2_bz/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "41464bcc-b6ab-4a8b-a5dc-511b924c061b": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/y_bianzi2_bz_g", + "cc.ImageAsset" + ], + "41464bcc-b6ab-4a8b-a5dc-511b924c061b@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/y_bianzi2_bz_g/texture", + "cc.Texture2D", + 1 + ], + "41464bcc-b6ab-4a8b-a5dc-511b924c061b@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/y_bianzi2_bz_g/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "fc568493-5c48-42fe-83ae-ae4a8e6c79c6": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/y_bianzi3_bz", + "cc.ImageAsset" + ], + "fc568493-5c48-42fe-83ae-ae4a8e6c79c6@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/y_bianzi3_bz/texture", + "cc.Texture2D", + 1 + ], + "fc568493-5c48-42fe-83ae-ae4a8e6c79c6@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/y_bianzi3_bz/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "9de99d59-c865-4435-a1ce-6bf6212d468c": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/y_shou_bz", + "cc.ImageAsset" + ], + "9de99d59-c865-4435-a1ce-6bf6212d468c@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/y_shou_bz/texture", + "cc.Texture2D", + 1 + ], + "9de99d59-c865-4435-a1ce-6bf6212d468c@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/y_shou_bz/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "0ec954bb-79cd-4122-bf5c-b86a13c5ef02": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/y_yanjing_bz", + "cc.ImageAsset" + ], + "0ec954bb-79cd-4122-bf5c-b86a13c5ef02@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/y_yanjing_bz/texture", + "cc.Texture2D", + 1 + ], + "0ec954bb-79cd-4122-bf5c-b86a13c5ef02@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/y_yanjing_bz/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "c3019d06-733d-4076-804b-ef4165b1be57": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/zhongzi_bz", + "cc.ImageAsset" + ], + "c3019d06-733d-4076-804b-ef4165b1be57@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/zhongzi_bz/texture", + "cc.Texture2D", + 1 + ], + "c3019d06-733d-4076-804b-ef4165b1be57@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/zhongzi_bz/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "8af43c10-0847-478c-a7e9-82ca49d4401d": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/zuiba_bz", + "cc.ImageAsset" + ], + "8af43c10-0847-478c-a7e9-82ca49d4401d@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/zuiba_bz/texture", + "cc.Texture2D", + 1 + ], + "8af43c10-0847-478c-a7e9-82ca49d4401d@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/zuiba_bz/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "2d41bc63-88bf-4655-a81f-6a1269d8fd93": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_bianzi1_bz", + "cc.ImageAsset" + ], + "2d41bc63-88bf-4655-a81f-6a1269d8fd93@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_bianzi1_bz/texture", + "cc.Texture2D", + 1 + ], + "2d41bc63-88bf-4655-a81f-6a1269d8fd93@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_bianzi1_bz/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "21d9faca-4169-4e95-b6f1-edda15e5d694": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_bianzi2_bz", + "cc.ImageAsset" + ], + "21d9faca-4169-4e95-b6f1-edda15e5d694@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_bianzi2_bz/texture", + "cc.Texture2D", + 1 + ], + "21d9faca-4169-4e95-b6f1-edda15e5d694@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_bianzi2_bz/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "ae43d248-143b-4c9f-b93d-be8286fc1565": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_bianzi2_bz_g", + "cc.ImageAsset" + ], + "ae43d248-143b-4c9f-b93d-be8286fc1565@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_bianzi2_bz_g/texture", + "cc.Texture2D", + 1 + ], + "ae43d248-143b-4c9f-b93d-be8286fc1565@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_bianzi2_bz_g/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "76f1e75b-f463-45cf-9005-fb49cb2ab7bf": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_bianzi3_bz", + "cc.ImageAsset" + ], + "76f1e75b-f463-45cf-9005-fb49cb2ab7bf@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_bianzi3_bz/texture", + "cc.Texture2D", + 1 + ], + "76f1e75b-f463-45cf-9005-fb49cb2ab7bf@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_bianzi3_bz/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "0fcb82ad-681d-4f57-ae1e-708a5a1f7fab": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_jiao_bz", + "cc.ImageAsset" + ], + "0fcb82ad-681d-4f57-ae1e-708a5a1f7fab@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_jiao_bz/texture", + "cc.Texture2D", + 1 + ], + "0fcb82ad-681d-4f57-ae1e-708a5a1f7fab@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_jiao_bz/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "36187bcd-71ae-46c0-abff-4e256ce90276": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_shou_bz", + "cc.ImageAsset" + ], + "36187bcd-71ae-46c0-abff-4e256ce90276@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_shou_bz/texture", + "cc.Texture2D", + 1 + ], + "36187bcd-71ae-46c0-abff-4e256ce90276@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_shou_bz/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "0423f835-3fbe-49d7-9c6a-ff9588e5c122": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_yanjing_bz", + "cc.ImageAsset" + ], + "0423f835-3fbe-49d7-9c6a-ff9588e5c122@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_yanjing_bz/texture", + "cc.Texture2D", + 1 + ], + "0423f835-3fbe-49d7-9c6a-ff9588e5c122@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/BZ/z_yanjing_bz/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "c4a53c5d-b489-4b37-a5ca-72bfe7ffe452": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/atk_guangci3_0025", + "cc.ImageAsset" + ], + "c4a53c5d-b489-4b37-a5ca-72bfe7ffe452@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/atk_guangci3_0025/texture", + "cc.Texture2D", + 1 + ], + "c4a53c5d-b489-4b37-a5ca-72bfe7ffe452@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/atk_guangci3_0025/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "d63dc130-416b-422c-a90f-273895f4db73": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/atk_guangci3_0027", + "cc.ImageAsset" + ], + "d63dc130-416b-422c-a90f-273895f4db73@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/atk_guangci3_0027/texture", + "cc.Texture2D", + 1 + ], + "d63dc130-416b-422c-a90f-273895f4db73@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/atk_guangci3_0027/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "55d7558e-5c18-49f7-a6e6-1b8c94037ecf": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/atk_guangci3_0028", + "cc.ImageAsset" + ], + "55d7558e-5c18-49f7-a6e6-1b8c94037ecf@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/atk_guangci3_0028/texture", + "cc.Texture2D", + 1 + ], + "55d7558e-5c18-49f7-a6e6-1b8c94037ecf@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/atk_guangci3_0028/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "89265b4f-16df-4020-a73b-6e7217e2ebd7": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/atk_guangci3_0030", + "cc.ImageAsset" + ], + "89265b4f-16df-4020-a73b-6e7217e2ebd7@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/atk_guangci3_0030/texture", + "cc.Texture2D", + 1 + ], + "89265b4f-16df-4020-a73b-6e7217e2ebd7@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/atk_guangci3_0030/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/atk_guangci3_0031", + "cc.ImageAsset" + ], + "45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/atk_guangci3_0031/texture", + "cc.Texture2D", + 1 + ], + "45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/atk_guangci3_0031/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "1eb73a5f-ab8c-4f05-b833-6b14a361a4ee": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/b_lg_2", + "cc.ImageAsset" + ], + "1eb73a5f-ab8c-4f05-b833-6b14a361a4ee@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/b_lg_2/texture", + "cc.Texture2D", + 1 + ], + "1eb73a5f-ab8c-4f05-b833-6b14a361a4ee@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/b_lg_2/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "03942db8-6a99-42a3-98cf-70229cc5403e": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/cao", + "cc.ImageAsset" + ], + "03942db8-6a99-42a3-98cf-70229cc5403e@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/cao/texture", + "cc.Texture2D", + 1 + ], + "03942db8-6a99-42a3-98cf-70229cc5403e@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/cao/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "7aa6b522-4cbd-43fc-a884-ae201e302b97": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/chentu1", + "cc.ImageAsset" + ], + "7aa6b522-4cbd-43fc-a884-ae201e302b97@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/chentu1/texture", + "cc.Texture2D", + 1 + ], + "7aa6b522-4cbd-43fc-a884-ae201e302b97@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/chentu1/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "70507da1-9f99-425c-8d0a-7052e3b8ff23": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/chentu3", + "cc.ImageAsset" + ], + "70507da1-9f99-425c-8d0a-7052e3b8ff23@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/chentu3/texture", + "cc.Texture2D", + 1 + ], + "70507da1-9f99-425c-8d0a-7052e3b8ff23@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/chentu3/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "1e495888-e38d-4c57-8fda-a8c69960409a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/chentu4", + "cc.ImageAsset" + ], + "1e495888-e38d-4c57-8fda-a8c69960409a@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/chentu4/texture", + "cc.Texture2D", + 1 + ], + "1e495888-e38d-4c57-8fda-a8c69960409a@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/chentu4/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "7ebdb065-a319-4ee0-a374-104137cf1d8c": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/chentu5", + "cc.ImageAsset" + ], + "7ebdb065-a319-4ee0-a374-104137cf1d8c@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/chentu5/texture", + "cc.Texture2D", + 1 + ], + "7ebdb065-a319-4ee0-a374-104137cf1d8c@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/chentu5/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "583d2b42-0dc8-4b0c-af5e-b239374eed59": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/daoguang_red", + "cc.ImageAsset" + ], + "583d2b42-0dc8-4b0c-af5e-b239374eed59@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/daoguang_red/texture", + "cc.Texture2D", + 1 + ], + "583d2b42-0dc8-4b0c-af5e-b239374eed59@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/daoguang_red/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "0a9ca732-f79e-47a8-865f-a11df7979eac": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/Energy 007 Impact Radial_00008", + "cc.ImageAsset" + ], + "0a9ca732-f79e-47a8-865f-a11df7979eac@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/Energy 007 Impact Radial_00008/texture", + "cc.Texture2D", + 1 + ], + "0a9ca732-f79e-47a8-865f-a11df7979eac@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/Energy 007 Impact Radial_00008/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "7ca59dc8-2635-47cd-98d6-94e9ec6c36fa": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/Energy 007 Impact Radial_00010", + "cc.ImageAsset" + ], + "7ca59dc8-2635-47cd-98d6-94e9ec6c36fa@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/Energy 007 Impact Radial_00010/texture", + "cc.Texture2D", + 1 + ], + "7ca59dc8-2635-47cd-98d6-94e9ec6c36fa@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/Energy 007 Impact Radial_00010/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "bfb5a670-2c13-425f-8b50-d42c6f880907": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/Energy 007 Impact Radial_00012", + "cc.ImageAsset" + ], + "bfb5a670-2c13-425f-8b50-d42c6f880907@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/Energy 007 Impact Radial_00012/texture", + "cc.Texture2D", + 1 + ], + "bfb5a670-2c13-425f-8b50-d42c6f880907@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/Energy 007 Impact Radial_00012/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "5d81ab0f-18b9-49af-85f9-59f540e14208": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/Energy 007 Impact Radial_00015", + "cc.ImageAsset" + ], + "5d81ab0f-18b9-49af-85f9-59f540e14208@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/Energy 007 Impact Radial_00015/texture", + "cc.Texture2D", + 1 + ], + "5d81ab0f-18b9-49af-85f9-59f540e14208@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/Energy 007 Impact Radial_00015/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "54eddc0a-52cc-4235-ab55-0cb3810dcfd9": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/guangyun", + "cc.ImageAsset" + ], + "54eddc0a-52cc-4235-ab55-0cb3810dcfd9@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/guangyun/texture", + "cc.Texture2D", + 1 + ], + "54eddc0a-52cc-4235-ab55-0cb3810dcfd9@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/guangyun/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "ca65e2f4-8510-484c-8dd2-f4eaef7f66c7": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/hua_a2", + "cc.ImageAsset" + ], + "ca65e2f4-8510-484c-8dd2-f4eaef7f66c7@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/hua_a2/texture", + "cc.Texture2D", + 1 + ], + "ca65e2f4-8510-484c-8dd2-f4eaef7f66c7@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/hua_a2/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "abd50507-0cfd-49f8-8c6d-3b00ba75b8f6": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/hua_a3", + "cc.ImageAsset" + ], + "abd50507-0cfd-49f8-8c6d-3b00ba75b8f6@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/hua_a3/texture", + "cc.Texture2D", + 1 + ], + "abd50507-0cfd-49f8-8c6d-3b00ba75b8f6@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/hua_a3/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/hua_a4", + "cc.ImageAsset" + ], + "e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/hua_a4/texture", + "cc.Texture2D", + 1 + ], + "e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/hua_a4/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "aad7964b-28e4-4daa-9981-282c7f28ee2a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/hua_a5", + "cc.ImageAsset" + ], + "aad7964b-28e4-4daa-9981-282c7f28ee2a@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/hua_a5/texture", + "cc.Texture2D", + 1 + ], + "aad7964b-28e4-4daa-9981-282c7f28ee2a@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/hua_a5/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "4c2c6c72-df5d-4d75-8a00-08138b76009a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/hua_b", + "cc.ImageAsset" + ], + "4c2c6c72-df5d-4d75-8a00-08138b76009a@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/hua_b/texture", + "cc.Texture2D", + 1 + ], + "4c2c6c72-df5d-4d75-8a00-08138b76009a@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/hua_b/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "bbf93c62-c99c-42d5-bdfd-1a1fea064af6": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/huiji", + "cc.ImageAsset" + ], + "bbf93c62-c99c-42d5-bdfd-1a1fea064af6@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/huiji/texture", + "cc.Texture2D", + 1 + ], + "bbf93c62-c99c-42d5-bdfd-1a1fea064af6@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/huiji/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "3f4a5236-67c0-48c2-bcb7-9ae628933935": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/liugguang2", + "cc.ImageAsset" + ], + "3f4a5236-67c0-48c2-bcb7-9ae628933935@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/liugguang2/texture", + "cc.Texture2D", + 1 + ], + "3f4a5236-67c0-48c2-bcb7-9ae628933935@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/liugguang2/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "d2b965cd-897e-455b-8d21-5ed3bf0902be": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/liuguang", + "cc.ImageAsset" + ], + "d2b965cd-897e-455b-8d21-5ed3bf0902be@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/liuguang/texture", + "cc.Texture2D", + 1 + ], + "d2b965cd-897e-455b-8d21-5ed3bf0902be@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/liuguang/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/liuguang3", + "cc.ImageAsset" + ], + "82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/liuguang3/texture", + "cc.Texture2D", + 1 + ], + "82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/liuguang3/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "6d4605ff-0938-44f8-a05c-55d93d20706d": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/shuangcdr_00010002", + "cc.ImageAsset" + ], + "6d4605ff-0938-44f8-a05c-55d93d20706d@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/shuangcdr_00010002/texture", + "cc.Texture2D", + 1 + ], + "6d4605ff-0938-44f8-a05c-55d93d20706d@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/shuangcdr_00010002/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "9821c439-9937-4fc7-b924-2d88b9d44e36": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/shuye", + "cc.ImageAsset" + ], + "9821c439-9937-4fc7-b924-2d88b9d44e36@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/shuye/texture", + "cc.Texture2D", + 1 + ], + "9821c439-9937-4fc7-b924-2d88b9d44e36@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/shuye/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "625edf63-d447-4c41-a5de-74e7f1e79514": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/shuyefaguang", + "cc.ImageAsset" + ], + "625edf63-d447-4c41-a5de-74e7f1e79514@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/shuyefaguang/texture", + "cc.Texture2D", + 1 + ], + "625edf63-d447-4c41-a5de-74e7f1e79514@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/shuyefaguang/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "ca86f45b-2472-40ee-b653-259dbe441007": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/suduxian_mi", + "cc.ImageAsset" + ], + "ca86f45b-2472-40ee-b653-259dbe441007@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/suduxian_mi/texture", + "cc.Texture2D", + 1 + ], + "ca86f45b-2472-40ee-b653-259dbe441007@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/suduxian_mi/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "40e867e0-35ab-44f1-a8ff-86cacf947cce": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/suduxian_su", + "cc.ImageAsset" + ], + "40e867e0-35ab-44f1-a8ff-86cacf947cce@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/suduxian_su/texture", + "cc.Texture2D", + 1 + ], + "40e867e0-35ab-44f1-a8ff-86cacf947cce@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/suduxian_su/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "aad2c55e-36af-44a3-8c6d-5639841cc67d": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_shua_0010", + "cc.ImageAsset" + ], + "aad2c55e-36af-44a3-8c6d-5639841cc67d@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_shua_0010/texture", + "cc.Texture2D", + 1 + ], + "aad2c55e-36af-44a3-8c6d-5639841cc67d@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_shua_0010/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "ad215587-f029-4276-b2c0-ba6292da5e83": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_shua_0012", + "cc.ImageAsset" + ], + "ad215587-f029-4276-b2c0-ba6292da5e83@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_shua_0012/texture", + "cc.Texture2D", + 1 + ], + "ad215587-f029-4276-b2c0-ba6292da5e83@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_shua_0012/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "1581380d-bf95-4ce8-a80b-91ca21c5f8ab": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_shua_0014", + "cc.ImageAsset" + ], + "1581380d-bf95-4ce8-a80b-91ca21c5f8ab@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_shua_0014/texture", + "cc.Texture2D", + 1 + ], + "1581380d-bf95-4ce8-a80b-91ca21c5f8ab@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_shua_0014/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "faeb7ee7-ef85-400d-aab5-250de6beac72": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_shua_0016", + "cc.ImageAsset" + ], + "faeb7ee7-ef85-400d-aab5-250de6beac72@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_shua_0016/texture", + "cc.Texture2D", + 1 + ], + "faeb7ee7-ef85-400d-aab5-250de6beac72@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_shua_0016/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "2d5360fe-fc08-448d-ae58-19a29ef677d2": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_shua_0018", + "cc.ImageAsset" + ], + "2d5360fe-fc08-448d-ae58-19a29ef677d2@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_shua_0018/texture", + "cc.Texture2D", + 1 + ], + "2d5360fe-fc08-448d-ae58-19a29ef677d2@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_shua_0018/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_yan_0024", + "cc.ImageAsset" + ], + "6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_yan_0024/texture", + "cc.Texture2D", + 1 + ], + "6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_yan_0024/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "17ef8829-f581-4e37-9d9e-762b1e708229": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_yan_0029", + "cc.ImageAsset" + ], + "17ef8829-f581-4e37-9d9e-762b1e708229@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_yan_0029/texture", + "cc.Texture2D", + 1 + ], + "17ef8829-f581-4e37-9d9e-762b1e708229@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/TX_S1_yan_0029/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "9a782e6d-767c-430e-9b91-86b4ca15645b": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/xuanzhuan", + "cc.ImageAsset" + ], + "9a782e6d-767c-430e-9b91-86b4ca15645b@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/xuanzhuan/texture", + "cc.Texture2D", + 1 + ], + "9a782e6d-767c-430e-9b91-86b4ca15645b@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/xuanzhuan/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "68dac8a9-ca70-44f4-b4d6-f0c2a7649d82": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/z_bianzi2_bz_liuguang", + "cc.ImageAsset" + ], + "68dac8a9-ca70-44f4-b4d6-f0c2a7649d82@6c48a": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/z_bianzi2_bz_liuguang/texture", + "cc.Texture2D", + 1 + ], + "68dac8a9-ca70-44f4-b4d6-f0c2a7649d82@f9941": [ + "spine/神奇宝贝/001妙蛙种子/images/TX/z_bianzi2_bz_liuguang/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "e08aaf39-bbce-4699-b45c-6f72957869ca": [ + "spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/pic/guaiA1a/guaiA1a_head", + "cc.ImageAsset" + ], + "e08aaf39-bbce-4699-b45c-6f72957869ca@6c48a": [ + "spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/pic/guaiA1a/guaiA1a_head/texture", + "cc.Texture2D", + 1 + ], + "e08aaf39-bbce-4699-b45c-6f72957869ca@f9941": [ + "spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/pic/guaiA1a/guaiA1a_head/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "917d53cb-10f1-4065-b7c3-57a9500b96e1": [ + "spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/pic/guaiA1a/guaiA1a_legL", + "cc.ImageAsset" + ], + "917d53cb-10f1-4065-b7c3-57a9500b96e1@6c48a": [ + "spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/pic/guaiA1a/guaiA1a_legL/texture", + "cc.Texture2D", + 1 + ], + "917d53cb-10f1-4065-b7c3-57a9500b96e1@f9941": [ + "spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/pic/guaiA1a/guaiA1a_legL/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "446c59f6-d7f6-4d04-abef-7ccaf942893d": [ + "spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/pic/guaiA1a/guaiA1a_legR", + "cc.ImageAsset" + ], + "446c59f6-d7f6-4d04-abef-7ccaf942893d@6c48a": [ + "spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/pic/guaiA1a/guaiA1a_legR/texture", + "cc.Texture2D", + 1 + ], + "446c59f6-d7f6-4d04-abef-7ccaf942893d@f9941": [ + "spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/pic/guaiA1a/guaiA1a_legR/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "36c86de9-d150-48ef-8765-ad8f9e511c05": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/beimian", + "cc.ImageAsset" + ], + "36c86de9-d150-48ef-8765-ad8f9e511c05@6c48a": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/beimian/texture", + "cc.Texture2D", + 1 + ], + "36c86de9-d150-48ef-8765-ad8f9e511c05@f9941": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/beimian/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "7231d9cd-c82a-4e10-86b7-ac6d066257aa": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/jiao1", + "cc.ImageAsset" + ], + "7231d9cd-c82a-4e10-86b7-ac6d066257aa@6c48a": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/jiao1/texture", + "cc.Texture2D", + 1 + ], + "7231d9cd-c82a-4e10-86b7-ac6d066257aa@f9941": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/jiao1/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "e13e6dc3-6a6f-4f53-972c-0290b5963bbb": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/jiao2", + "cc.ImageAsset" + ], + "e13e6dc3-6a6f-4f53-972c-0290b5963bbb@6c48a": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/jiao2/texture", + "cc.Texture2D", + 1 + ], + "e13e6dc3-6a6f-4f53-972c-0290b5963bbb@f9941": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/jiao2/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "ffd5101f-8560-4166-87a3-a649ceaf8161": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/jiao3", + "cc.ImageAsset" + ], + "ffd5101f-8560-4166-87a3-a649ceaf8161@6c48a": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/jiao3/texture", + "cc.Texture2D", + 1 + ], + "ffd5101f-8560-4166-87a3-a649ceaf8161@f9941": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/jiao3/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "337f444f-e016-444a-bfc3-56fbecc80977": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/jiao4", + "cc.ImageAsset" + ], + "337f444f-e016-444a-bfc3-56fbecc80977@6c48a": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/jiao4/texture", + "cc.Texture2D", + 1 + ], + "337f444f-e016-444a-bfc3-56fbecc80977@f9941": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/jiao4/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/shenti", + "cc.ImageAsset" + ], + "09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e@6c48a": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/shenti/texture", + "cc.Texture2D", + 1 + ], + "09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e@f9941": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/shenti/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "ac4f309c-c432-4fed-ad6d-3e058bd928c3": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/yan", + "cc.ImageAsset" + ], + "ac4f309c-c432-4fed-ad6d-3e058bd928c3@6c48a": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/yan/texture", + "cc.Texture2D", + 1 + ], + "ac4f309c-c432-4fed-ad6d-3e058bd928c3@f9941": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/yan/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "23d50907-baa5-41fd-9512-143679feac92": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/ye", + "cc.ImageAsset" + ], + "23d50907-baa5-41fd-9512-143679feac92@6c48a": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/ye/texture", + "cc.Texture2D", + 1 + ], + "23d50907-baa5-41fd-9512-143679feac92@f9941": [ + "spine/召唤与合成819个Spine/小石头/guaiA1a/pic/guaiA1a/ye/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "3a622b00-2de8-48cc-b358-3db8568ef5b3": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/01", + "cc.ImageAsset" + ], + "3a622b00-2de8-48cc-b358-3db8568ef5b3@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/01/texture", + "cc.Texture2D", + 1 + ], + "3a622b00-2de8-48cc-b358-3db8568ef5b3@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/01/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "dc64288e-f16e-4fa1-bec7-f79a9b9ec72b": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/02", + "cc.ImageAsset" + ], + "dc64288e-f16e-4fa1-bec7-f79a9b9ec72b@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/02/texture", + "cc.Texture2D", + 1 + ], + "dc64288e-f16e-4fa1-bec7-f79a9b9ec72b@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/02/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "b716aa0f-2c37-4287-a6c6-032ab8364bcf": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/03", + "cc.ImageAsset" + ], + "b716aa0f-2c37-4287-a6c6-032ab8364bcf@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/03/texture", + "cc.Texture2D", + 1 + ], + "b716aa0f-2c37-4287-a6c6-032ab8364bcf@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/03/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "f4e45413-6b04-404c-8a2c-603b45f7caff": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/04", + "cc.ImageAsset" + ], + "f4e45413-6b04-404c-8a2c-603b45f7caff@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/04/texture", + "cc.Texture2D", + 1 + ], + "f4e45413-6b04-404c-8a2c-603b45f7caff@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/04/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "73f1d26b-8ad3-4745-884e-9407850365c4": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/05", + "cc.ImageAsset" + ], + "73f1d26b-8ad3-4745-884e-9407850365c4@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/05/texture", + "cc.Texture2D", + 1 + ], + "73f1d26b-8ad3-4745-884e-9407850365c4@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/05/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "86a627d7-2064-4e31-85c0-43ded881c083": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/06", + "cc.ImageAsset" + ], + "86a627d7-2064-4e31-85c0-43ded881c083@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/06/texture", + "cc.Texture2D", + 1 + ], + "86a627d7-2064-4e31-85c0-43ded881c083@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/06/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "cc320ae3-2792-40b4-adce-011d97efc064": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/07", + "cc.ImageAsset" + ], + "cc320ae3-2792-40b4-adce-011d97efc064@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/07/texture", + "cc.Texture2D", + 1 + ], + "cc320ae3-2792-40b4-adce-011d97efc064@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/07/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "0a2ed6e6-8614-4176-a464-4c673e0d6847": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/08", + "cc.ImageAsset" + ], + "0a2ed6e6-8614-4176-a464-4c673e0d6847@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/08/texture", + "cc.Texture2D", + 1 + ], + "0a2ed6e6-8614-4176-a464-4c673e0d6847@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/08/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "c71daad3-b3f3-4204-9416-c885a6303ac9": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 002", + "cc.ImageAsset" + ], + "c71daad3-b3f3-4204-9416-c885a6303ac9@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 002/texture", + "cc.Texture2D", + 1 + ], + "c71daad3-b3f3-4204-9416-c885a6303ac9@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 002/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "fef99059-e5d9-47a9-87f4-46578f2fcae2": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 003", + "cc.ImageAsset" + ], + "fef99059-e5d9-47a9-87f4-46578f2fcae2@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 003/texture", + "cc.Texture2D", + 1 + ], + "fef99059-e5d9-47a9-87f4-46578f2fcae2@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 003/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "65c10712-318d-4ecf-8253-a91a90dbc1e8": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 004", + "cc.ImageAsset" + ], + "65c10712-318d-4ecf-8253-a91a90dbc1e8@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 004/texture", + "cc.Texture2D", + 1 + ], + "65c10712-318d-4ecf-8253-a91a90dbc1e8@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 004/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "660ed781-d7e7-4630-81c0-67ebaaccc124": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 005", + "cc.ImageAsset" + ], + "660ed781-d7e7-4630-81c0-67ebaaccc124@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 005/texture", + "cc.Texture2D", + 1 + ], + "660ed781-d7e7-4630-81c0-67ebaaccc124@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 005/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "25ee0a91-fde7-460c-94b5-fc3063e7b2f9": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 006", + "cc.ImageAsset" + ], + "25ee0a91-fde7-460c-94b5-fc3063e7b2f9@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 006/texture", + "cc.Texture2D", + 1 + ], + "25ee0a91-fde7-460c-94b5-fc3063e7b2f9@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 006/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "d8c705a6-a4c6-4936-b706-56e89e9bf344": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 007", + "cc.ImageAsset" + ], + "d8c705a6-a4c6-4936-b706-56e89e9bf344@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 007/texture", + "cc.Texture2D", + 1 + ], + "d8c705a6-a4c6-4936-b706-56e89e9bf344@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 007/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "b3bb16f2-78ad-418e-abb7-fb1719ae935c": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 008", + "cc.ImageAsset" + ], + "b3bb16f2-78ad-418e-abb7-fb1719ae935c@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 008/texture", + "cc.Texture2D", + 1 + ], + "b3bb16f2-78ad-418e-abb7-fb1719ae935c@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 008/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "c4fba28b-29af-4666-b7d1-0720ce76524b": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 009", + "cc.ImageAsset" + ], + "c4fba28b-29af-4666-b7d1-0720ce76524b@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 009/texture", + "cc.Texture2D", + 1 + ], + "c4fba28b-29af-4666-b7d1-0720ce76524b@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 009/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 010", + "cc.ImageAsset" + ], + "5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 010/texture", + "cc.Texture2D", + 1 + ], + "5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 010/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "dc70290b-e14b-4d59-81a8-e037fa6b587c": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 011", + "cc.ImageAsset" + ], + "dc70290b-e14b-4d59-81a8-e037fa6b587c@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 011/texture", + "cc.Texture2D", + 1 + ], + "dc70290b-e14b-4d59-81a8-e037fa6b587c@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 011/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "dd17b176-c0e4-471b-953d-157482a7e61e": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 012", + "cc.ImageAsset" + ], + "dd17b176-c0e4-471b-953d-157482a7e61e@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 012/texture", + "cc.Texture2D", + 1 + ], + "dd17b176-c0e4-471b-953d-157482a7e61e@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 012/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "b32f733a-d305-4f1c-8542-45f68a22d072": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 013", + "cc.ImageAsset" + ], + "b32f733a-d305-4f1c-8542-45f68a22d072@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 013/texture", + "cc.Texture2D", + 1 + ], + "b32f733a-d305-4f1c-8542-45f68a22d072@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 013/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "cb5ace05-d558-40ee-8bd2-ef9401e3c19b": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 014", + "cc.ImageAsset" + ], + "cb5ace05-d558-40ee-8bd2-ef9401e3c19b@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 014/texture", + "cc.Texture2D", + 1 + ], + "cb5ace05-d558-40ee-8bd2-ef9401e3c19b@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 014/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "8602bb7b-f67c-469f-925b-4ffea75e6fca": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 015", + "cc.ImageAsset" + ], + "8602bb7b-f67c-469f-925b-4ffea75e6fca@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 015/texture", + "cc.Texture2D", + 1 + ], + "8602bb7b-f67c-469f-925b-4ffea75e6fca@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 015/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "6f92ffef-8b45-403f-9820-033a1e679d16": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 016", + "cc.ImageAsset" + ], + "6f92ffef-8b45-403f-9820-033a1e679d16@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 016/texture", + "cc.Texture2D", + 1 + ], + "6f92ffef-8b45-403f-9820-033a1e679d16@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 016/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "ac93c3a9-4f91-424b-8d99-22819bf809a2": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 017", + "cc.ImageAsset" + ], + "ac93c3a9-4f91-424b-8d99-22819bf809a2@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 017/texture", + "cc.Texture2D", + 1 + ], + "ac93c3a9-4f91-424b-8d99-22819bf809a2@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/pic/guaiA4es/timo5 017/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "bb77826b-b6c0-4b07-aeb0-ead7ca451f8d": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 002", + "cc.ImageAsset" + ], + "bb77826b-b6c0-4b07-aeb0-ead7ca451f8d@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 002/texture", + "cc.Texture2D", + 1 + ], + "bb77826b-b6c0-4b07-aeb0-ead7ca451f8d@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 002/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "53167f35-e100-434f-b671-9abe0bc64531": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 003", + "cc.ImageAsset" + ], + "53167f35-e100-434f-b671-9abe0bc64531@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 003/texture", + "cc.Texture2D", + 1 + ], + "53167f35-e100-434f-b671-9abe0bc64531@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 003/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "9a740c1b-d991-4428-9549-1017bfb6358e": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 004", + "cc.ImageAsset" + ], + "9a740c1b-d991-4428-9549-1017bfb6358e@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 004/texture", + "cc.Texture2D", + 1 + ], + "9a740c1b-d991-4428-9549-1017bfb6358e@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 004/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "68dd7e1f-0996-4ac8-9b45-cb68975d7236": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 005", + "cc.ImageAsset" + ], + "68dd7e1f-0996-4ac8-9b45-cb68975d7236@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 005/texture", + "cc.Texture2D", + 1 + ], + "68dd7e1f-0996-4ac8-9b45-cb68975d7236@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 005/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "b6f851cd-8a7b-4fff-9d93-88a6165a4c68": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 006", + "cc.ImageAsset" + ], + "b6f851cd-8a7b-4fff-9d93-88a6165a4c68@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 006/texture", + "cc.Texture2D", + 1 + ], + "b6f851cd-8a7b-4fff-9d93-88a6165a4c68@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 006/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "d8b2f923-b61d-4e95-820a-7ccc0d9031bc": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 007", + "cc.ImageAsset" + ], + "d8b2f923-b61d-4e95-820a-7ccc0d9031bc@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 007/texture", + "cc.Texture2D", + 1 + ], + "d8b2f923-b61d-4e95-820a-7ccc0d9031bc@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 007/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "ab26edf5-c9aa-4def-bd6f-6e05efe76d0d": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 008", + "cc.ImageAsset" + ], + "ab26edf5-c9aa-4def-bd6f-6e05efe76d0d@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 008/texture", + "cc.Texture2D", + 1 + ], + "ab26edf5-c9aa-4def-bd6f-6e05efe76d0d@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 008/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "44fca669-aad5-4e22-b846-82f3a296ec1e": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 009", + "cc.ImageAsset" + ], + "44fca669-aad5-4e22-b846-82f3a296ec1e@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 009/texture", + "cc.Texture2D", + 1 + ], + "44fca669-aad5-4e22-b846-82f3a296ec1e@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 009/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "ad329478-0a3a-4e0f-9951-ea8a178f72a6": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 010", + "cc.ImageAsset" + ], + "ad329478-0a3a-4e0f-9951-ea8a178f72a6@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 010/texture", + "cc.Texture2D", + 1 + ], + "ad329478-0a3a-4e0f-9951-ea8a178f72a6@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 010/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "679bbb50-f1d5-4ac9-85f1-8aca77b0ca06": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 011", + "cc.ImageAsset" + ], + "679bbb50-f1d5-4ac9-85f1-8aca77b0ca06@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 011/texture", + "cc.Texture2D", + 1 + ], + "679bbb50-f1d5-4ac9-85f1-8aca77b0ca06@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 011/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "c70b94ef-5ff6-4295-992a-5579a2d6458b": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 012", + "cc.ImageAsset" + ], + "c70b94ef-5ff6-4295-992a-5579a2d6458b@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 012/texture", + "cc.Texture2D", + 1 + ], + "c70b94ef-5ff6-4295-992a-5579a2d6458b@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 012/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "001fea8b-233c-4830-96aa-5f0d9845668b": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 013", + "cc.ImageAsset" + ], + "001fea8b-233c-4830-96aa-5f0d9845668b@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 013/texture", + "cc.Texture2D", + 1 + ], + "001fea8b-233c-4830-96aa-5f0d9845668b@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 013/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 014", + "cc.ImageAsset" + ], + "e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 014/texture", + "cc.Texture2D", + 1 + ], + "e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 014/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "78a2ff6d-18fa-4a97-b5d4-8efc3975682c": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 015", + "cc.ImageAsset" + ], + "78a2ff6d-18fa-4a97-b5d4-8efc3975682c@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 015/texture", + "cc.Texture2D", + 1 + ], + "78a2ff6d-18fa-4a97-b5d4-8efc3975682c@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 015/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "24b3fb75-7e7d-48bd-9dab-f88850c70be0": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 016", + "cc.ImageAsset" + ], + "24b3fb75-7e7d-48bd-9dab-f88850c70be0@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 016/texture", + "cc.Texture2D", + 1 + ], + "24b3fb75-7e7d-48bd-9dab-f88850c70be0@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 016/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 017", + "cc.ImageAsset" + ], + "7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58@6c48a": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 017/texture", + "cc.Texture2D", + 1 + ], + "7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58@f9941": [ + "spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/pic/guaiA4e/timo5 017/spriteFrame", + "cc.SpriteFrame", + 1 + ] + }, + "scenes": {}, + "packs": { + "0bf76b1f7": [ + "0a2ed6e6-8614-4176-a464-4c673e0d6847@6c48a", + "0a9ca732-f79e-47a8-865f-a11df7979eac@6c48a", + "0af1bd07-ba37-4db6-bcdb-bd52c636cc65@6c48a", + "0ec954bb-79cd-4122-bf5c-b86a13c5ef02@6c48a", + "0f96bbf8-0324-4eab-ba6a-2a70f7653610@6c48a", + "0fcb82ad-681d-4f57-ae1e-708a5a1f7fab@6c48a", + "1e495888-e38d-4c57-8fda-a8c69960409a@6c48a", + "1eb73a5f-ab8c-4f05-b833-6b14a361a4ee@6c48a", + "1f2defe6-08ea-4919-be26-f263623f859a@6c48a", + "001fea8b-233c-4830-96aa-5f0d9845668b@6c48a", + "2ac4038c-217b-4d36-840d-aebea7f45b72@6c48a", + "2d41bc63-88bf-4655-a81f-6a1269d8fd93@6c48a", + "2d5360fe-fc08-448d-ae58-19a29ef677d2@6c48a", + "3a622b00-2de8-48cc-b358-3db8568ef5b3@6c48a", + "3e89062e-b618-4ae5-915b-d897340f2f40@6c48a", + "3f4a5236-67c0-48c2-bcb7-9ae628933935@6c48a", + "4c2c6c72-df5d-4d75-8a00-08138b76009a@6c48a", + "4eb039e0-4381-4ebf-8a71-5f4f85452b7b@6c48a", + "4ff7df06-ccdc-4497-8332-fbf9b6abfc18@6c48a", + "5a77fe9d-52fd-4df5-ab08-e2766930e4f8@6c48a", + "5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb@6c48a", + "5d81ab0f-18b9-49af-85f9-59f540e14208@6c48a", + "5f7d151d-78bc-4738-b3eb-325440ea5f24@6c48a", + "6d4605ff-0938-44f8-a05c-55d93d20706d@6c48a", + "06e4dec4-9199-42fa-81c9-1d6c8dce5e3e@6c48a", + "6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223@6c48a", + "6e73e1fa-3744-4e08-9eaa-117cc524afda@6c48a", + "6edb6339-008a-4064-b651-ace4908644cd@6c48a", + "6f92ffef-8b45-403f-9820-033a1e679d16@6c48a", + "7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58@6c48a", + "07a6e3b4-0690-4be3-bd6a-ddb8655d0928@6c48a", + "7aa6b522-4cbd-43fc-a884-ae201e302b97@6c48a", + "7ca59dc8-2635-47cd-98d6-94e9ec6c36fa@6c48a", + "7ea77ef2-7734-492f-bb2c-22db352a8b49@6c48a", + "7ebdb065-a319-4ee0-a374-104137cf1d8c@6c48a", + "8af43c10-0847-478c-a7e9-82ca49d4401d@6c48a", + "8ef1f316-b788-4822-86d2-4d77deb9e57c@6c48a", + "9a740c1b-d991-4428-9549-1017bfb6358e@6c48a", + "9a782e6d-767c-430e-9b91-86b4ca15645b@6c48a", + "9ba0cb57-c7d4-43b9-9a45-c90fd071e578@6c48a", + "9c004ab3-a3a9-46f9-a859-dcc4c3c3769b@6c48a", + "9de99d59-c865-4435-a1ce-6bf6212d468c@6c48a", + "09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e@6c48a", + "17ef8829-f581-4e37-9d9e-762b1e708229@6c48a", + "21d9faca-4169-4e95-b6f1-edda15e5d694@6c48a", + "22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68@6c48a", + "23d50907-baa5-41fd-9512-143679feac92@6c48a", + "24b3fb75-7e7d-48bd-9dab-f88850c70be0@6c48a", + "25ee0a91-fde7-460c-94b5-fc3063e7b2f9@6c48a", + "33bb5ab6-17d6-47a9-8466-a465c4a7e993@6c48a", + "36c86de9-d150-48ef-8765-ad8f9e511c05@6c48a", + "39e91df6-ddb4-436c-b709-7d0e1a281271@6c48a", + "40e867e0-35ab-44f1-a8ff-86cacf947cce@6c48a", + "44fca669-aad5-4e22-b846-82f3a296ec1e@6c48a", + "45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4@6c48a", + "54eddc0a-52cc-4235-ab55-0cb3810dcfd9@6c48a", + "54f082ca-86ef-49c8-a33d-8f2ce95c8b57@6c48a", + "55d7558e-5c18-49f7-a6e6-1b8c94037ecf@6c48a", + "063fc0a8-27de-4950-b87e-f8d93a8c97af@6c48a", + "65c10712-318d-4ecf-8253-a91a90dbc1e8@6c48a", + "68dac8a9-ca70-44f4-b4d6-f0c2a7649d82@6c48a", + "68dd7e1f-0996-4ac8-9b45-cb68975d7236@6c48a", + "73e7b692-0dd7-428d-a37e-5294b5b02a78@6c48a", + "73f1d26b-8ad3-4745-884e-9407850365c4@6c48a", + "76f1e75b-f463-45cf-9005-fb49cb2ab7bf@6c48a", + "78a2ff6d-18fa-4a97-b5d4-8efc3975682c@6c48a", + "86a627d7-2064-4e31-85c0-43ded881c083@6c48a", + "96e5083f-61ee-4d79-97b9-c297bb68c54a@6c48a", + "126a7574-0975-4062-b1de-6ebcc0dc0296@6c48a", + "138e008e-f0c4-4724-922c-bcda2476a717@6c48a", + "259f92ef-99c5-4e2b-bf7f-3cfd159a32e2@6c48a", + "337f444f-e016-444a-bfc3-56fbecc80977@6c48a", + "376b1458-940c-4ec6-8f67-19ef31cdc7a8@6c48a", + "0423f835-3fbe-49d7-9c6a-ff9588e5c122@6c48a", + "446c59f6-d7f6-4d04-abef-7ccaf942893d@6c48a", + "534a0232-a40c-453e-8a9e-f7001bc0ce73@6c48a", + "583d2b42-0dc8-4b0c-af5e-b239374eed59@6c48a", + "625edf63-d447-4c41-a5de-74e7f1e79514@6c48a", + "656a4136-154e-4a01-84ed-418fd085386a@6c48a", + "660ed781-d7e7-4630-81c0-67ebaaccc124@6c48a", + "679bbb50-f1d5-4ac9-85f1-8aca77b0ca06@6c48a", + "771d3105-423e-4ae4-9e58-4e5f2fae3e9a@6c48a", + "917d53cb-10f1-4065-b7c3-57a9500b96e1@6c48a", + "1014d8fe-eb7e-4351-9454-70ff7a4e4fbc@6c48a", + "1168b518-61b0-4ca8-ba16-5085b3722064@6c48a", + "2058f147-aecf-4084-95ea-cdb5da0fedb1@6c48a", + "03942db8-6a99-42a3-98cf-70229cc5403e@6c48a", + "4836df74-6d25-4922-a373-32949e6013df@6c48a", + "5828e8e7-d037-46d8-a9af-63a11ae7349e@6c48a", + "7231d9cd-c82a-4e10-86b7-ac6d066257aa@6c48a", + "8251d88e-0943-4c69-89cb-88116bb83e9f@6c48a", + "8602bb7b-f67c-469f-925b-4ffea75e6fca@6c48a", + "8665e251-73b9-4bb1-b908-161c51250d6f@6c48a", + "9821c439-9937-4fc7-b924-2d88b9d44e36@6c48a", + "9968d439-7e1e-4994-bc1b-8bca5d7b49d8@6c48a", + "24869eec-947e-498b-93cb-9ac58ecb5876@6c48a", + "026823e5-14f5-4f70-a73e-88a3f8e8001e@6c48a", + "36187bcd-71ae-46c0-abff-4e256ce90276@6c48a", + "38004a8e-1e7e-481d-a276-ba12a9015c96@6c48a", + "41464bcc-b6ab-4a8b-a5dc-511b924c061b@6c48a", + "52113c9e-1b63-4a9b-99f7-2e5758514f81@6c48a", + "53167f35-e100-434f-b671-9abe0bc64531@6c48a", + "70507da1-9f99-425c-8d0a-7052e3b8ff23@6c48a", + "82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2@6c48a", + "89265b4f-16df-4020-a73b-6e7217e2ebd7@6c48a", + "1581380d-bf95-4ce8-a80b-91ca21c5f8ab@6c48a", + "a64f70c5-fd92-4f53-9cea-a726d3ccb680@6c48a", + "a73cc36b-81f8-4a83-ae05-c7c976183907@6c48a", + "a1883b0d-fa9a-4329-8f78-ff42d1adb9ac@6c48a", + "aa74ba45-1456-4980-abe3-8ed0e52767a0@6c48a", + "aad2c55e-36af-44a3-8c6d-5639841cc67d@6c48a", + "aad7964b-28e4-4daa-9981-282c7f28ee2a@6c48a", + "ab26edf5-c9aa-4def-bd6f-6e05efe76d0d@6c48a", + "abd50507-0cfd-49f8-8c6d-3b00ba75b8f6@6c48a", + "ac4f309c-c432-4fed-ad6d-3e058bd928c3@6c48a", + "ac93c3a9-4f91-424b-8d99-22819bf809a2@6c48a", + "ac99ce70-b5af-40d4-9db1-97a9b4a029a1@6c48a", + "ad215587-f029-4276-b2c0-ba6292da5e83@6c48a", + "ad329478-0a3a-4e0f-9951-ea8a178f72a6@6c48a", + "ae43d248-143b-4c9f-b93d-be8286fc1565@6c48a", + "ae0870b4-96fe-4646-9ade-2f48db9518e0@6c48a", + "b3bb16f2-78ad-418e-abb7-fb1719ae935c@6c48a", + "b5d7be0c-1350-4548-ac0d-275d2d81d39e@6c48a", + "b6f851cd-8a7b-4fff-9d93-88a6165a4c68@6c48a", + "b32f733a-d305-4f1c-8542-45f68a22d072@6c48a", + "b77dd676-c35c-4b6d-9caa-27aeda3f3cfc@6c48a", + "b716aa0f-2c37-4287-a6c6-032ab8364bcf@6c48a", + "b2690697-0ed9-4ed8-b451-468e87cf2266@6c48a", + "bb77826b-b6c0-4b07-aeb0-ead7ca451f8d@6c48a", + "bbf93c62-c99c-42d5-bdfd-1a1fea064af6@6c48a", + "bde0c35f-afdc-4df8-b186-aa8f93942b48@6c48a", + "bec67e6e-8cac-46c2-85d5-6d51c69e5573@6c48a", + "bfb5a670-2c13-425f-8b50-d42c6f880907@6c48a", + "c3c78943-a4cd-4762-a723-86206969885e@6c48a", + "c4a53c5d-b489-4b37-a5ca-72bfe7ffe452@6c48a", + "c4fba28b-29af-4666-b7d1-0720ce76524b@6c48a", + "c70b94ef-5ff6-4295-992a-5579a2d6458b@6c48a", + "c71daad3-b3f3-4204-9416-c885a6303ac9@6c48a", + "c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a@6c48a", + "c3019d06-733d-4076-804b-ef4165b1be57@6c48a", + "c059355d-3503-4aa1-87c0-38b81b2050e2@6c48a", + "ca65e2f4-8510-484c-8dd2-f4eaef7f66c7@6c48a", + "ca86f45b-2472-40ee-b653-259dbe441007@6c48a", + "cb5ace05-d558-40ee-8bd2-ef9401e3c19b@6c48a", + "cc320ae3-2792-40b4-adce-011d97efc064@6c48a", + "ce94d072-b86a-43e2-af31-374069cf363e@6c48a", + "d2b965cd-897e-455b-8d21-5ed3bf0902be@6c48a", + "d3a8da1f-daa5-4e52-929a-edf95edb8275@6c48a", + "d4feff1b-d3c0-4001-9a95-320adb8ab285@6c48a", + "d8b2f923-b61d-4e95-820a-7ccc0d9031bc@6c48a", + "d8c705a6-a4c6-4936-b706-56e89e9bf344@6c48a", + "d63dc130-416b-422c-a90f-273895f4db73@6c48a", + "d330c1ef-5e51-4335-980b-d535892c4a18@6c48a", + "d602f103-bb41-4a24-85c7-d97fccaadf24@6c48a", + "dc059148-a12d-4947-a708-ae642f146745@6c48a", + "dc64288e-f16e-4fa1-bec7-f79a9b9ec72b@6c48a", + "dc70290b-e14b-4d59-81a8-e037fa6b587c@6c48a", + "dce246d4-116d-4f36-893b-43a64365169d@6c48a", + "dd17b176-c0e4-471b-953d-157482a7e61e@6c48a", + "e6d6cc9e-cc78-48b3-99c4-5debb6e15004@6c48a", + "e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f@6c48a", + "e08aaf39-bbce-4699-b45c-6f72957869ca@6c48a", + "e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8@6c48a", + "e13e6dc3-6a6f-4f53-972c-0290b5963bbb@6c48a", + "e59a20fa-257a-4368-8cd6-736614ee4c3b@6c48a", + "e8550400-59c1-4cde-a972-b6df5f696b09@6c48a", + "eccf0439-94a8-4b1a-8c7c-229f7a3042d9@6c48a", + "ed84140d-68f8-4dee-aa53-df590512fa94@6c48a", + "f2f6ace7-cda7-4312-8403-42c8767ac2f5@6c48a", + "f4e45413-6b04-404c-8a2c-603b45f7caff@6c48a", + "f71c334f-843b-49b0-b14b-616629f00565@6c48a", + "fa67273e-09aa-4baa-ac04-3a86c5698e1b@6c48a", + "faab0107-f3e3-49e0-82e1-6b992e6d5ce6@6c48a", + "faeb7ee7-ef85-400d-aab5-250de6beac72@6c48a", + "fbadc552-d5aa-42fc-a9da-f4c9398d3ea8@6c48a", + "fc568493-5c48-42fe-83ae-ae4a8e6c79c6@6c48a", + "fcd65028-f911-47d4-8a0e-c9d8d49a8542@6c48a", + "fd4028bb-d170-4a6c-a419-2ade1ed59038@6c48a", + "fdd5cc13-b87e-43b2-8d10-5d91105d43fc@6c48a", + "fef99059-e5d9-47a9-87f4-46578f2fcae2@6c48a", + "fefd7337-749b-4478-80e6-90f6c8c91f78@6c48a", + "ffd5101f-8560-4166-87a3-a649ceaf8161@6c48a" + ] + }, + "versions": { + "import": [], + "native": [] + }, + "redirect": [ + "13ffba43-826c-4f33-8ac2-4b59811ce9b0", + "0", + "13ffba43-826c-4f33-8ac2-4b59811ce9b0@6c48a", + "0", + "13ffba43-826c-4f33-8ac2-4b59811ce9b0@f9941", + "0", + "14d2a9b1-50ad-4051-a96a-b1c194651259", + "0", + "179a2053-b80c-4b5d-ab83-e75934fd66d2", + "0", + "179a2053-b80c-4b5d-ab83-e75934fd66d2@6c48a", + "0", + "2357c44f-3cf0-47eb-8f7a-0f303eaefe08", + "0", + "2357c44f-3cf0-47eb-8f7a-0f303eaefe08@6c48a", + "0", + "29e1c6dc-6549-4f30-ad94-fe92d3cead0c", + "0", + "30250fcc-aac2-4473-94bf-7688cf16a604", + "0", + "30250fcc-aac2-4473-94bf-7688cf16a604@6c48a", + "0", + "30250fcc-aac2-4473-94bf-7688cf16a604@f9941", + "0", + "42029fae-0ee0-48c1-b7c5-850c03664ae4", + "0", + "51104c05-e5db-4274-a66e-1de9ab511e4f", + "0", + "8cd8e7fb-f35b-417f-b147-ecc7ef089706", + "0", + "8cd8e7fb-f35b-417f-b147-ecc7ef089706@6c48a", + "0", + "c26a2ac3-057f-4de8-8c06-9ff3e1c48017", + "0", + "c26a2ac3-057f-4de8-8c06-9ff3e1c48017@6c48a", + "0" + ], + "debug": true, + "extensionMap": {}, + "hasPreloadScript": true, + "dependencyRelationships": { + "001fea8b-233c-4830-96aa-5f0d9845668b@6c48a": [ + "001fea8b-233c-4830-96aa-5f0d9845668b" + ], + "001fea8b-233c-4830-96aa-5f0d9845668b@f9941": [ + "001fea8b-233c-4830-96aa-5f0d9845668b@6c48a" + ], + "026823e5-14f5-4f70-a73e-88a3f8e8001e@6c48a": [ + "026823e5-14f5-4f70-a73e-88a3f8e8001e" + ], + "026823e5-14f5-4f70-a73e-88a3f8e8001e@f9941": [ + "026823e5-14f5-4f70-a73e-88a3f8e8001e@6c48a" + ], + "03942db8-6a99-42a3-98cf-70229cc5403e@6c48a": [ + "03942db8-6a99-42a3-98cf-70229cc5403e" + ], + "03942db8-6a99-42a3-98cf-70229cc5403e@f9941": [ + "03942db8-6a99-42a3-98cf-70229cc5403e@6c48a" + ], + "0423f835-3fbe-49d7-9c6a-ff9588e5c122@6c48a": [ + "0423f835-3fbe-49d7-9c6a-ff9588e5c122" + ], + "0423f835-3fbe-49d7-9c6a-ff9588e5c122@f9941": [ + "0423f835-3fbe-49d7-9c6a-ff9588e5c122@6c48a" + ], + "063fc0a8-27de-4950-b87e-f8d93a8c97af@6c48a": [ + "063fc0a8-27de-4950-b87e-f8d93a8c97af" + ], + "063fc0a8-27de-4950-b87e-f8d93a8c97af@f9941": [ + "063fc0a8-27de-4950-b87e-f8d93a8c97af@6c48a" + ], + "06e4dec4-9199-42fa-81c9-1d6c8dce5e3e@6c48a": [ + "06e4dec4-9199-42fa-81c9-1d6c8dce5e3e" + ], + "06e4dec4-9199-42fa-81c9-1d6c8dce5e3e@f9941": [ + "06e4dec4-9199-42fa-81c9-1d6c8dce5e3e@6c48a" + ], + "07a6e3b4-0690-4be3-bd6a-ddb8655d0928@6c48a": [ + "07a6e3b4-0690-4be3-bd6a-ddb8655d0928" + ], + "07a6e3b4-0690-4be3-bd6a-ddb8655d0928@f9941": [ + "07a6e3b4-0690-4be3-bd6a-ddb8655d0928@6c48a" + ], + "09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e@6c48a": [ + "09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e" + ], + "09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e@f9941": [ + "09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e@6c48a" + ], + "0a2ed6e6-8614-4176-a464-4c673e0d6847@6c48a": [ + "0a2ed6e6-8614-4176-a464-4c673e0d6847" + ], + "0a2ed6e6-8614-4176-a464-4c673e0d6847@f9941": [ + "0a2ed6e6-8614-4176-a464-4c673e0d6847@6c48a" + ], + "0a9ca732-f79e-47a8-865f-a11df7979eac@6c48a": [ + "0a9ca732-f79e-47a8-865f-a11df7979eac" + ], + "0a9ca732-f79e-47a8-865f-a11df7979eac@f9941": [ + "0a9ca732-f79e-47a8-865f-a11df7979eac@6c48a" + ], + "0af1bd07-ba37-4db6-bcdb-bd52c636cc65@6c48a": [ + "0af1bd07-ba37-4db6-bcdb-bd52c636cc65" + ], + "0af1bd07-ba37-4db6-bcdb-bd52c636cc65@f9941": [ + "0af1bd07-ba37-4db6-bcdb-bd52c636cc65@6c48a" + ], + "0ec954bb-79cd-4122-bf5c-b86a13c5ef02@6c48a": [ + "0ec954bb-79cd-4122-bf5c-b86a13c5ef02" + ], + "0ec954bb-79cd-4122-bf5c-b86a13c5ef02@f9941": [ + "0ec954bb-79cd-4122-bf5c-b86a13c5ef02@6c48a" + ], + "0f96bbf8-0324-4eab-ba6a-2a70f7653610@6c48a": [ + "0f96bbf8-0324-4eab-ba6a-2a70f7653610" + ], + "0f96bbf8-0324-4eab-ba6a-2a70f7653610@f9941": [ + "0f96bbf8-0324-4eab-ba6a-2a70f7653610@6c48a" + ], + "0fcb82ad-681d-4f57-ae1e-708a5a1f7fab@6c48a": [ + "0fcb82ad-681d-4f57-ae1e-708a5a1f7fab" + ], + "0fcb82ad-681d-4f57-ae1e-708a5a1f7fab@f9941": [ + "0fcb82ad-681d-4f57-ae1e-708a5a1f7fab@6c48a" + ], + "1014d8fe-eb7e-4351-9454-70ff7a4e4fbc@6c48a": [ + "1014d8fe-eb7e-4351-9454-70ff7a4e4fbc" + ], + "1014d8fe-eb7e-4351-9454-70ff7a4e4fbc@f9941": [ + "1014d8fe-eb7e-4351-9454-70ff7a4e4fbc@6c48a" + ], + "1168b518-61b0-4ca8-ba16-5085b3722064@6c48a": [ + "1168b518-61b0-4ca8-ba16-5085b3722064" + ], + "1168b518-61b0-4ca8-ba16-5085b3722064@f9941": [ + "1168b518-61b0-4ca8-ba16-5085b3722064@6c48a" + ], + "126a7574-0975-4062-b1de-6ebcc0dc0296@6c48a": [ + "126a7574-0975-4062-b1de-6ebcc0dc0296" + ], + "126a7574-0975-4062-b1de-6ebcc0dc0296@f9941": [ + "126a7574-0975-4062-b1de-6ebcc0dc0296@6c48a" + ], + "138e008e-f0c4-4724-922c-bcda2476a717@6c48a": [ + "138e008e-f0c4-4724-922c-bcda2476a717" + ], + "138e008e-f0c4-4724-922c-bcda2476a717@f9941": [ + "138e008e-f0c4-4724-922c-bcda2476a717@6c48a" + ], + "1581380d-bf95-4ce8-a80b-91ca21c5f8ab@6c48a": [ + "1581380d-bf95-4ce8-a80b-91ca21c5f8ab" + ], + "1581380d-bf95-4ce8-a80b-91ca21c5f8ab@f9941": [ + "1581380d-bf95-4ce8-a80b-91ca21c5f8ab@6c48a" + ], + "179a2053-b80c-4b5d-ab83-e75934fd66d2@f9941": [ + "179a2053-b80c-4b5d-ab83-e75934fd66d2@6c48a" + ], + "17ef8829-f581-4e37-9d9e-762b1e708229@6c48a": [ + "17ef8829-f581-4e37-9d9e-762b1e708229" + ], + "17ef8829-f581-4e37-9d9e-762b1e708229@f9941": [ + "17ef8829-f581-4e37-9d9e-762b1e708229@6c48a" + ], + "1e495888-e38d-4c57-8fda-a8c69960409a@6c48a": [ + "1e495888-e38d-4c57-8fda-a8c69960409a" + ], + "1e495888-e38d-4c57-8fda-a8c69960409a@f9941": [ + "1e495888-e38d-4c57-8fda-a8c69960409a@6c48a" + ], + "1eb73a5f-ab8c-4f05-b833-6b14a361a4ee@6c48a": [ + "1eb73a5f-ab8c-4f05-b833-6b14a361a4ee" + ], + "1eb73a5f-ab8c-4f05-b833-6b14a361a4ee@f9941": [ + "1eb73a5f-ab8c-4f05-b833-6b14a361a4ee@6c48a" + ], + "1f2defe6-08ea-4919-be26-f263623f859a@6c48a": [ + "1f2defe6-08ea-4919-be26-f263623f859a" + ], + "1f2defe6-08ea-4919-be26-f263623f859a@f9941": [ + "1f2defe6-08ea-4919-be26-f263623f859a@6c48a" + ], + "2058f147-aecf-4084-95ea-cdb5da0fedb1@6c48a": [ + "2058f147-aecf-4084-95ea-cdb5da0fedb1" + ], + "2058f147-aecf-4084-95ea-cdb5da0fedb1@f9941": [ + "2058f147-aecf-4084-95ea-cdb5da0fedb1@6c48a" + ], + "21d9faca-4169-4e95-b6f1-edda15e5d694@6c48a": [ + "21d9faca-4169-4e95-b6f1-edda15e5d694" + ], + "21d9faca-4169-4e95-b6f1-edda15e5d694@f9941": [ + "21d9faca-4169-4e95-b6f1-edda15e5d694@6c48a" + ], + "22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68@6c48a": [ + "22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68" + ], + "22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68@f9941": [ + "22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68@6c48a" + ], + "2357c44f-3cf0-47eb-8f7a-0f303eaefe08@f9941": [ + "2357c44f-3cf0-47eb-8f7a-0f303eaefe08@6c48a" + ], + "23d50907-baa5-41fd-9512-143679feac92@6c48a": [ + "23d50907-baa5-41fd-9512-143679feac92" + ], + "23d50907-baa5-41fd-9512-143679feac92@f9941": [ + "23d50907-baa5-41fd-9512-143679feac92@6c48a" + ], + "24869eec-947e-498b-93cb-9ac58ecb5876@6c48a": [ + "24869eec-947e-498b-93cb-9ac58ecb5876" + ], + "24869eec-947e-498b-93cb-9ac58ecb5876@f9941": [ + "24869eec-947e-498b-93cb-9ac58ecb5876@6c48a" + ], + "24b3fb75-7e7d-48bd-9dab-f88850c70be0@6c48a": [ + "24b3fb75-7e7d-48bd-9dab-f88850c70be0" + ], + "24b3fb75-7e7d-48bd-9dab-f88850c70be0@f9941": [ + "24b3fb75-7e7d-48bd-9dab-f88850c70be0@6c48a" + ], + "259f92ef-99c5-4e2b-bf7f-3cfd159a32e2@6c48a": [ + "259f92ef-99c5-4e2b-bf7f-3cfd159a32e2" + ], + "259f92ef-99c5-4e2b-bf7f-3cfd159a32e2@f9941": [ + "259f92ef-99c5-4e2b-bf7f-3cfd159a32e2@6c48a" + ], + "25ee0a91-fde7-460c-94b5-fc3063e7b2f9@6c48a": [ + "25ee0a91-fde7-460c-94b5-fc3063e7b2f9" + ], + "25ee0a91-fde7-460c-94b5-fc3063e7b2f9@f9941": [ + "25ee0a91-fde7-460c-94b5-fc3063e7b2f9@6c48a" + ], + "2ac4038c-217b-4d36-840d-aebea7f45b72@6c48a": [ + "2ac4038c-217b-4d36-840d-aebea7f45b72" + ], + "2ac4038c-217b-4d36-840d-aebea7f45b72@f9941": [ + "2ac4038c-217b-4d36-840d-aebea7f45b72@6c48a" + ], + "2d41bc63-88bf-4655-a81f-6a1269d8fd93@6c48a": [ + "2d41bc63-88bf-4655-a81f-6a1269d8fd93" + ], + "2d41bc63-88bf-4655-a81f-6a1269d8fd93@f9941": [ + "2d41bc63-88bf-4655-a81f-6a1269d8fd93@6c48a" + ], + "2d5360fe-fc08-448d-ae58-19a29ef677d2@6c48a": [ + "2d5360fe-fc08-448d-ae58-19a29ef677d2" + ], + "2d5360fe-fc08-448d-ae58-19a29ef677d2@f9941": [ + "2d5360fe-fc08-448d-ae58-19a29ef677d2@6c48a" + ], + "337f444f-e016-444a-bfc3-56fbecc80977@6c48a": [ + "337f444f-e016-444a-bfc3-56fbecc80977" + ], + "337f444f-e016-444a-bfc3-56fbecc80977@f9941": [ + "337f444f-e016-444a-bfc3-56fbecc80977@6c48a" + ], + "33bb5ab6-17d6-47a9-8466-a465c4a7e993@6c48a": [ + "33bb5ab6-17d6-47a9-8466-a465c4a7e993" + ], + "33bb5ab6-17d6-47a9-8466-a465c4a7e993@f9941": [ + "33bb5ab6-17d6-47a9-8466-a465c4a7e993@6c48a" + ], + "36187bcd-71ae-46c0-abff-4e256ce90276@6c48a": [ + "36187bcd-71ae-46c0-abff-4e256ce90276" + ], + "36187bcd-71ae-46c0-abff-4e256ce90276@f9941": [ + "36187bcd-71ae-46c0-abff-4e256ce90276@6c48a" + ], + "36c86de9-d150-48ef-8765-ad8f9e511c05@6c48a": [ + "36c86de9-d150-48ef-8765-ad8f9e511c05" + ], + "36c86de9-d150-48ef-8765-ad8f9e511c05@f9941": [ + "36c86de9-d150-48ef-8765-ad8f9e511c05@6c48a" + ], + "376b1458-940c-4ec6-8f67-19ef31cdc7a8@6c48a": [ + "376b1458-940c-4ec6-8f67-19ef31cdc7a8" + ], + "376b1458-940c-4ec6-8f67-19ef31cdc7a8@f9941": [ + "376b1458-940c-4ec6-8f67-19ef31cdc7a8@6c48a" + ], + "38004a8e-1e7e-481d-a276-ba12a9015c96@6c48a": [ + "38004a8e-1e7e-481d-a276-ba12a9015c96" + ], + "38004a8e-1e7e-481d-a276-ba12a9015c96@f9941": [ + "38004a8e-1e7e-481d-a276-ba12a9015c96@6c48a" + ], + "39e91df6-ddb4-436c-b709-7d0e1a281271@6c48a": [ + "39e91df6-ddb4-436c-b709-7d0e1a281271" + ], + "39e91df6-ddb4-436c-b709-7d0e1a281271@f9941": [ + "39e91df6-ddb4-436c-b709-7d0e1a281271@6c48a" + ], + "3a622b00-2de8-48cc-b358-3db8568ef5b3@6c48a": [ + "3a622b00-2de8-48cc-b358-3db8568ef5b3" + ], + "3a622b00-2de8-48cc-b358-3db8568ef5b3@f9941": [ + "3a622b00-2de8-48cc-b358-3db8568ef5b3@6c48a" + ], + "3e89062e-b618-4ae5-915b-d897340f2f40@6c48a": [ + "3e89062e-b618-4ae5-915b-d897340f2f40" + ], + "3e89062e-b618-4ae5-915b-d897340f2f40@f9941": [ + "3e89062e-b618-4ae5-915b-d897340f2f40@6c48a" + ], + "3f4a5236-67c0-48c2-bcb7-9ae628933935@6c48a": [ + "3f4a5236-67c0-48c2-bcb7-9ae628933935" + ], + "3f4a5236-67c0-48c2-bcb7-9ae628933935@f9941": [ + "3f4a5236-67c0-48c2-bcb7-9ae628933935@6c48a" + ], + "40e867e0-35ab-44f1-a8ff-86cacf947cce@6c48a": [ + "40e867e0-35ab-44f1-a8ff-86cacf947cce" + ], + "40e867e0-35ab-44f1-a8ff-86cacf947cce@f9941": [ + "40e867e0-35ab-44f1-a8ff-86cacf947cce@6c48a" + ], + "41464bcc-b6ab-4a8b-a5dc-511b924c061b@6c48a": [ + "41464bcc-b6ab-4a8b-a5dc-511b924c061b" + ], + "41464bcc-b6ab-4a8b-a5dc-511b924c061b@f9941": [ + "41464bcc-b6ab-4a8b-a5dc-511b924c061b@6c48a" + ], + "446c59f6-d7f6-4d04-abef-7ccaf942893d@6c48a": [ + "446c59f6-d7f6-4d04-abef-7ccaf942893d" + ], + "446c59f6-d7f6-4d04-abef-7ccaf942893d@f9941": [ + "446c59f6-d7f6-4d04-abef-7ccaf942893d@6c48a" + ], + "44fca669-aad5-4e22-b846-82f3a296ec1e@6c48a": [ + "44fca669-aad5-4e22-b846-82f3a296ec1e" + ], + "44fca669-aad5-4e22-b846-82f3a296ec1e@f9941": [ + "44fca669-aad5-4e22-b846-82f3a296ec1e@6c48a" + ], + "45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4@6c48a": [ + "45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4" + ], + "45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4@f9941": [ + "45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4@6c48a" + ], + "4836df74-6d25-4922-a373-32949e6013df@6c48a": [ + "4836df74-6d25-4922-a373-32949e6013df" + ], + "4836df74-6d25-4922-a373-32949e6013df@f9941": [ + "4836df74-6d25-4922-a373-32949e6013df@6c48a" + ], + "4c2c6c72-df5d-4d75-8a00-08138b76009a@6c48a": [ + "4c2c6c72-df5d-4d75-8a00-08138b76009a" + ], + "4c2c6c72-df5d-4d75-8a00-08138b76009a@f9941": [ + "4c2c6c72-df5d-4d75-8a00-08138b76009a@6c48a" + ], + "4eb039e0-4381-4ebf-8a71-5f4f85452b7b@6c48a": [ + "4eb039e0-4381-4ebf-8a71-5f4f85452b7b" + ], + "4eb039e0-4381-4ebf-8a71-5f4f85452b7b@f9941": [ + "4eb039e0-4381-4ebf-8a71-5f4f85452b7b@6c48a" + ], + "4ff7df06-ccdc-4497-8332-fbf9b6abfc18@6c48a": [ + "4ff7df06-ccdc-4497-8332-fbf9b6abfc18" + ], + "4ff7df06-ccdc-4497-8332-fbf9b6abfc18@f9941": [ + "4ff7df06-ccdc-4497-8332-fbf9b6abfc18@6c48a" + ], + "52113c9e-1b63-4a9b-99f7-2e5758514f81@6c48a": [ + "52113c9e-1b63-4a9b-99f7-2e5758514f81" + ], + "52113c9e-1b63-4a9b-99f7-2e5758514f81@f9941": [ + "52113c9e-1b63-4a9b-99f7-2e5758514f81@6c48a" + ], + "53167f35-e100-434f-b671-9abe0bc64531@6c48a": [ + "53167f35-e100-434f-b671-9abe0bc64531" + ], + "53167f35-e100-434f-b671-9abe0bc64531@f9941": [ + "53167f35-e100-434f-b671-9abe0bc64531@6c48a" + ], + "534a0232-a40c-453e-8a9e-f7001bc0ce73@6c48a": [ + "534a0232-a40c-453e-8a9e-f7001bc0ce73" + ], + "534a0232-a40c-453e-8a9e-f7001bc0ce73@f9941": [ + "534a0232-a40c-453e-8a9e-f7001bc0ce73@6c48a" + ], + "54eddc0a-52cc-4235-ab55-0cb3810dcfd9@6c48a": [ + "54eddc0a-52cc-4235-ab55-0cb3810dcfd9" + ], + "54eddc0a-52cc-4235-ab55-0cb3810dcfd9@f9941": [ + "54eddc0a-52cc-4235-ab55-0cb3810dcfd9@6c48a" + ], + "54f082ca-86ef-49c8-a33d-8f2ce95c8b57@6c48a": [ + "54f082ca-86ef-49c8-a33d-8f2ce95c8b57" + ], + "54f082ca-86ef-49c8-a33d-8f2ce95c8b57@f9941": [ + "54f082ca-86ef-49c8-a33d-8f2ce95c8b57@6c48a" + ], + "55d7558e-5c18-49f7-a6e6-1b8c94037ecf@6c48a": [ + "55d7558e-5c18-49f7-a6e6-1b8c94037ecf" + ], + "55d7558e-5c18-49f7-a6e6-1b8c94037ecf@f9941": [ + "55d7558e-5c18-49f7-a6e6-1b8c94037ecf@6c48a" + ], + "5670f2a3-3ea4-4188-b34c-1ad1a40af86f": [ + "c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a@6c48a" + ], + "5828e8e7-d037-46d8-a9af-63a11ae7349e@6c48a": [ + "5828e8e7-d037-46d8-a9af-63a11ae7349e" + ], + "5828e8e7-d037-46d8-a9af-63a11ae7349e@f9941": [ + "5828e8e7-d037-46d8-a9af-63a11ae7349e@6c48a" + ], + "583d2b42-0dc8-4b0c-af5e-b239374eed59@6c48a": [ + "583d2b42-0dc8-4b0c-af5e-b239374eed59" + ], + "583d2b42-0dc8-4b0c-af5e-b239374eed59@f9941": [ + "583d2b42-0dc8-4b0c-af5e-b239374eed59@6c48a" + ], + "5a77fe9d-52fd-4df5-ab08-e2766930e4f8@6c48a": [ + "5a77fe9d-52fd-4df5-ab08-e2766930e4f8" + ], + "5a77fe9d-52fd-4df5-ab08-e2766930e4f8@f9941": [ + "5a77fe9d-52fd-4df5-ab08-e2766930e4f8@6c48a" + ], + "5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb@6c48a": [ + "5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb" + ], + "5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb@f9941": [ + "5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb@6c48a" + ], + "5d81ab0f-18b9-49af-85f9-59f540e14208@6c48a": [ + "5d81ab0f-18b9-49af-85f9-59f540e14208" + ], + "5d81ab0f-18b9-49af-85f9-59f540e14208@f9941": [ + "5d81ab0f-18b9-49af-85f9-59f540e14208@6c48a" + ], + "5f7d151d-78bc-4738-b3eb-325440ea5f24@6c48a": [ + "5f7d151d-78bc-4738-b3eb-325440ea5f24" + ], + "5f7d151d-78bc-4738-b3eb-325440ea5f24@f9941": [ + "5f7d151d-78bc-4738-b3eb-325440ea5f24@6c48a" + ], + "625edf63-d447-4c41-a5de-74e7f1e79514@6c48a": [ + "625edf63-d447-4c41-a5de-74e7f1e79514" + ], + "625edf63-d447-4c41-a5de-74e7f1e79514@f9941": [ + "625edf63-d447-4c41-a5de-74e7f1e79514@6c48a" + ], + "656a4136-154e-4a01-84ed-418fd085386a@6c48a": [ + "656a4136-154e-4a01-84ed-418fd085386a" + ], + "656a4136-154e-4a01-84ed-418fd085386a@f9941": [ + "656a4136-154e-4a01-84ed-418fd085386a@6c48a" + ], + "65c10712-318d-4ecf-8253-a91a90dbc1e8@6c48a": [ + "65c10712-318d-4ecf-8253-a91a90dbc1e8" + ], + "65c10712-318d-4ecf-8253-a91a90dbc1e8@f9941": [ + "65c10712-318d-4ecf-8253-a91a90dbc1e8@6c48a" + ], + "660ed781-d7e7-4630-81c0-67ebaaccc124@6c48a": [ + "660ed781-d7e7-4630-81c0-67ebaaccc124" + ], + "660ed781-d7e7-4630-81c0-67ebaaccc124@f9941": [ + "660ed781-d7e7-4630-81c0-67ebaaccc124@6c48a" + ], + "679bbb50-f1d5-4ac9-85f1-8aca77b0ca06@6c48a": [ + "679bbb50-f1d5-4ac9-85f1-8aca77b0ca06" + ], + "679bbb50-f1d5-4ac9-85f1-8aca77b0ca06@f9941": [ + "679bbb50-f1d5-4ac9-85f1-8aca77b0ca06@6c48a" + ], + "68dac8a9-ca70-44f4-b4d6-f0c2a7649d82@6c48a": [ + "68dac8a9-ca70-44f4-b4d6-f0c2a7649d82" + ], + "68dac8a9-ca70-44f4-b4d6-f0c2a7649d82@f9941": [ + "68dac8a9-ca70-44f4-b4d6-f0c2a7649d82@6c48a" + ], + "68dd7e1f-0996-4ac8-9b45-cb68975d7236@6c48a": [ + "68dd7e1f-0996-4ac8-9b45-cb68975d7236" + ], + "68dd7e1f-0996-4ac8-9b45-cb68975d7236@f9941": [ + "68dd7e1f-0996-4ac8-9b45-cb68975d7236@6c48a" + ], + "6bea3dd7-ad6a-4cd3-a04e-99376e7dd9a2": [ + "22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68@6c48a" + ], + "6d4605ff-0938-44f8-a05c-55d93d20706d@6c48a": [ + "6d4605ff-0938-44f8-a05c-55d93d20706d" + ], + "6d4605ff-0938-44f8-a05c-55d93d20706d@f9941": [ + "6d4605ff-0938-44f8-a05c-55d93d20706d@6c48a" + ], + "6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223@6c48a": [ + "6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223" + ], + "6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223@f9941": [ + "6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223@6c48a" + ], + "6e73e1fa-3744-4e08-9eaa-117cc524afda@6c48a": [ + "6e73e1fa-3744-4e08-9eaa-117cc524afda" + ], + "6e73e1fa-3744-4e08-9eaa-117cc524afda@f9941": [ + "6e73e1fa-3744-4e08-9eaa-117cc524afda@6c48a" + ], + "6edb6339-008a-4064-b651-ace4908644cd@6c48a": [ + "6edb6339-008a-4064-b651-ace4908644cd" + ], + "6edb6339-008a-4064-b651-ace4908644cd@f9941": [ + "6edb6339-008a-4064-b651-ace4908644cd@6c48a" + ], + "6f92ffef-8b45-403f-9820-033a1e679d16@6c48a": [ + "6f92ffef-8b45-403f-9820-033a1e679d16" + ], + "6f92ffef-8b45-403f-9820-033a1e679d16@f9941": [ + "6f92ffef-8b45-403f-9820-033a1e679d16@6c48a" + ], + "70507da1-9f99-425c-8d0a-7052e3b8ff23@6c48a": [ + "70507da1-9f99-425c-8d0a-7052e3b8ff23" + ], + "70507da1-9f99-425c-8d0a-7052e3b8ff23@f9941": [ + "70507da1-9f99-425c-8d0a-7052e3b8ff23@6c48a" + ], + "7231d9cd-c82a-4e10-86b7-ac6d066257aa@6c48a": [ + "7231d9cd-c82a-4e10-86b7-ac6d066257aa" + ], + "7231d9cd-c82a-4e10-86b7-ac6d066257aa@f9941": [ + "7231d9cd-c82a-4e10-86b7-ac6d066257aa@6c48a" + ], + "73e7b692-0dd7-428d-a37e-5294b5b02a78@6c48a": [ + "73e7b692-0dd7-428d-a37e-5294b5b02a78" + ], + "73e7b692-0dd7-428d-a37e-5294b5b02a78@f9941": [ + "73e7b692-0dd7-428d-a37e-5294b5b02a78@6c48a" + ], + "73f1d26b-8ad3-4745-884e-9407850365c4@6c48a": [ + "73f1d26b-8ad3-4745-884e-9407850365c4" + ], + "73f1d26b-8ad3-4745-884e-9407850365c4@f9941": [ + "73f1d26b-8ad3-4745-884e-9407850365c4@6c48a" + ], + "76f1e75b-f463-45cf-9005-fb49cb2ab7bf@6c48a": [ + "76f1e75b-f463-45cf-9005-fb49cb2ab7bf" + ], + "76f1e75b-f463-45cf-9005-fb49cb2ab7bf@f9941": [ + "76f1e75b-f463-45cf-9005-fb49cb2ab7bf@6c48a" + ], + "771d3105-423e-4ae4-9e58-4e5f2fae3e9a@6c48a": [ + "771d3105-423e-4ae4-9e58-4e5f2fae3e9a" + ], + "771d3105-423e-4ae4-9e58-4e5f2fae3e9a@f9941": [ + "771d3105-423e-4ae4-9e58-4e5f2fae3e9a@6c48a" + ], + "78a2ff6d-18fa-4a97-b5d4-8efc3975682c@6c48a": [ + "78a2ff6d-18fa-4a97-b5d4-8efc3975682c" + ], + "78a2ff6d-18fa-4a97-b5d4-8efc3975682c@f9941": [ + "78a2ff6d-18fa-4a97-b5d4-8efc3975682c@6c48a" + ], + "7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58@6c48a": [ + "7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58" + ], + "7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58@f9941": [ + "7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58@6c48a" + ], + "7aa6b522-4cbd-43fc-a884-ae201e302b97@6c48a": [ + "7aa6b522-4cbd-43fc-a884-ae201e302b97" + ], + "7aa6b522-4cbd-43fc-a884-ae201e302b97@f9941": [ + "7aa6b522-4cbd-43fc-a884-ae201e302b97@6c48a" + ], + "7ca59dc8-2635-47cd-98d6-94e9ec6c36fa@6c48a": [ + "7ca59dc8-2635-47cd-98d6-94e9ec6c36fa" + ], + "7ca59dc8-2635-47cd-98d6-94e9ec6c36fa@f9941": [ + "7ca59dc8-2635-47cd-98d6-94e9ec6c36fa@6c48a" + ], + "7ea77ef2-7734-492f-bb2c-22db352a8b49@6c48a": [ + "7ea77ef2-7734-492f-bb2c-22db352a8b49" + ], + "7ea77ef2-7734-492f-bb2c-22db352a8b49@f9941": [ + "7ea77ef2-7734-492f-bb2c-22db352a8b49@6c48a" + ], + "7ebdb065-a319-4ee0-a374-104137cf1d8c@6c48a": [ + "7ebdb065-a319-4ee0-a374-104137cf1d8c" + ], + "7ebdb065-a319-4ee0-a374-104137cf1d8c@f9941": [ + "7ebdb065-a319-4ee0-a374-104137cf1d8c@6c48a" + ], + "82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2@6c48a": [ + "82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2" + ], + "82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2@f9941": [ + "82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2@6c48a" + ], + "8251d88e-0943-4c69-89cb-88116bb83e9f@6c48a": [ + "8251d88e-0943-4c69-89cb-88116bb83e9f" + ], + "8251d88e-0943-4c69-89cb-88116bb83e9f@f9941": [ + "8251d88e-0943-4c69-89cb-88116bb83e9f@6c48a" + ], + "8602bb7b-f67c-469f-925b-4ffea75e6fca@6c48a": [ + "8602bb7b-f67c-469f-925b-4ffea75e6fca" + ], + "8602bb7b-f67c-469f-925b-4ffea75e6fca@f9941": [ + "8602bb7b-f67c-469f-925b-4ffea75e6fca@6c48a" + ], + "8665e251-73b9-4bb1-b908-161c51250d6f@6c48a": [ + "8665e251-73b9-4bb1-b908-161c51250d6f" + ], + "8665e251-73b9-4bb1-b908-161c51250d6f@f9941": [ + "8665e251-73b9-4bb1-b908-161c51250d6f@6c48a" + ], + "86a627d7-2064-4e31-85c0-43ded881c083@6c48a": [ + "86a627d7-2064-4e31-85c0-43ded881c083" + ], + "86a627d7-2064-4e31-85c0-43ded881c083@f9941": [ + "86a627d7-2064-4e31-85c0-43ded881c083@6c48a" + ], + "89265b4f-16df-4020-a73b-6e7217e2ebd7@6c48a": [ + "89265b4f-16df-4020-a73b-6e7217e2ebd7" + ], + "89265b4f-16df-4020-a73b-6e7217e2ebd7@f9941": [ + "89265b4f-16df-4020-a73b-6e7217e2ebd7@6c48a" + ], + "8af43c10-0847-478c-a7e9-82ca49d4401d@6c48a": [ + "8af43c10-0847-478c-a7e9-82ca49d4401d" + ], + "8af43c10-0847-478c-a7e9-82ca49d4401d@f9941": [ + "8af43c10-0847-478c-a7e9-82ca49d4401d@6c48a" + ], + "8cd8e7fb-f35b-417f-b147-ecc7ef089706@f9941": [ + "8cd8e7fb-f35b-417f-b147-ecc7ef089706@6c48a" + ], + "8ef1f316-b788-4822-86d2-4d77deb9e57c@6c48a": [ + "8ef1f316-b788-4822-86d2-4d77deb9e57c" + ], + "8ef1f316-b788-4822-86d2-4d77deb9e57c@f9941": [ + "8ef1f316-b788-4822-86d2-4d77deb9e57c@6c48a" + ], + "917d53cb-10f1-4065-b7c3-57a9500b96e1@6c48a": [ + "917d53cb-10f1-4065-b7c3-57a9500b96e1" + ], + "917d53cb-10f1-4065-b7c3-57a9500b96e1@f9941": [ + "917d53cb-10f1-4065-b7c3-57a9500b96e1@6c48a" + ], + "96e5083f-61ee-4d79-97b9-c297bb68c54a@6c48a": [ + "96e5083f-61ee-4d79-97b9-c297bb68c54a" + ], + "96e5083f-61ee-4d79-97b9-c297bb68c54a@f9941": [ + "96e5083f-61ee-4d79-97b9-c297bb68c54a@6c48a" + ], + "9821c439-9937-4fc7-b924-2d88b9d44e36@6c48a": [ + "9821c439-9937-4fc7-b924-2d88b9d44e36" + ], + "9821c439-9937-4fc7-b924-2d88b9d44e36@f9941": [ + "9821c439-9937-4fc7-b924-2d88b9d44e36@6c48a" + ], + "9968d439-7e1e-4994-bc1b-8bca5d7b49d8@6c48a": [ + "9968d439-7e1e-4994-bc1b-8bca5d7b49d8" + ], + "9968d439-7e1e-4994-bc1b-8bca5d7b49d8@f9941": [ + "9968d439-7e1e-4994-bc1b-8bca5d7b49d8@6c48a" + ], + "9a740c1b-d991-4428-9549-1017bfb6358e@6c48a": [ + "9a740c1b-d991-4428-9549-1017bfb6358e" + ], + "9a740c1b-d991-4428-9549-1017bfb6358e@f9941": [ + "9a740c1b-d991-4428-9549-1017bfb6358e@6c48a" + ], + "9a782e6d-767c-430e-9b91-86b4ca15645b@6c48a": [ + "9a782e6d-767c-430e-9b91-86b4ca15645b" + ], + "9a782e6d-767c-430e-9b91-86b4ca15645b@f9941": [ + "9a782e6d-767c-430e-9b91-86b4ca15645b@6c48a" + ], + "9ba0cb57-c7d4-43b9-9a45-c90fd071e578@6c48a": [ + "9ba0cb57-c7d4-43b9-9a45-c90fd071e578" + ], + "9ba0cb57-c7d4-43b9-9a45-c90fd071e578@f9941": [ + "9ba0cb57-c7d4-43b9-9a45-c90fd071e578@6c48a" + ], + "9ba1ed01-edb4-4f3e-988c-f6111de69597": [ + "259f92ef-99c5-4e2b-bf7f-3cfd159a32e2@6c48a" + ], + "9c004ab3-a3a9-46f9-a859-dcc4c3c3769b@6c48a": [ + "9c004ab3-a3a9-46f9-a859-dcc4c3c3769b" + ], + "9c004ab3-a3a9-46f9-a859-dcc4c3c3769b@f9941": [ + "9c004ab3-a3a9-46f9-a859-dcc4c3c3769b@6c48a" + ], + "9de99d59-c865-4435-a1ce-6bf6212d468c@6c48a": [ + "9de99d59-c865-4435-a1ce-6bf6212d468c" + ], + "9de99d59-c865-4435-a1ce-6bf6212d468c@f9941": [ + "9de99d59-c865-4435-a1ce-6bf6212d468c@6c48a" + ], + "a1883b0d-fa9a-4329-8f78-ff42d1adb9ac@6c48a": [ + "a1883b0d-fa9a-4329-8f78-ff42d1adb9ac" + ], + "a1883b0d-fa9a-4329-8f78-ff42d1adb9ac@f9941": [ + "a1883b0d-fa9a-4329-8f78-ff42d1adb9ac@6c48a" + ], + "a64f70c5-fd92-4f53-9cea-a726d3ccb680@6c48a": [ + "a64f70c5-fd92-4f53-9cea-a726d3ccb680" + ], + "a64f70c5-fd92-4f53-9cea-a726d3ccb680@f9941": [ + "a64f70c5-fd92-4f53-9cea-a726d3ccb680@6c48a" + ], + "a73cc36b-81f8-4a83-ae05-c7c976183907@6c48a": [ + "a73cc36b-81f8-4a83-ae05-c7c976183907" + ], + "a73cc36b-81f8-4a83-ae05-c7c976183907@f9941": [ + "a73cc36b-81f8-4a83-ae05-c7c976183907@6c48a" + ], + "aa74ba45-1456-4980-abe3-8ed0e52767a0@6c48a": [ + "aa74ba45-1456-4980-abe3-8ed0e52767a0" + ], + "aa74ba45-1456-4980-abe3-8ed0e52767a0@f9941": [ + "aa74ba45-1456-4980-abe3-8ed0e52767a0@6c48a" + ], + "aad2c55e-36af-44a3-8c6d-5639841cc67d@6c48a": [ + "aad2c55e-36af-44a3-8c6d-5639841cc67d" + ], + "aad2c55e-36af-44a3-8c6d-5639841cc67d@f9941": [ + "aad2c55e-36af-44a3-8c6d-5639841cc67d@6c48a" + ], + "aad7964b-28e4-4daa-9981-282c7f28ee2a@6c48a": [ + "aad7964b-28e4-4daa-9981-282c7f28ee2a" + ], + "aad7964b-28e4-4daa-9981-282c7f28ee2a@f9941": [ + "aad7964b-28e4-4daa-9981-282c7f28ee2a@6c48a" + ], + "ab26edf5-c9aa-4def-bd6f-6e05efe76d0d@6c48a": [ + "ab26edf5-c9aa-4def-bd6f-6e05efe76d0d" + ], + "ab26edf5-c9aa-4def-bd6f-6e05efe76d0d@f9941": [ + "ab26edf5-c9aa-4def-bd6f-6e05efe76d0d@6c48a" + ], + "abd50507-0cfd-49f8-8c6d-3b00ba75b8f6@6c48a": [ + "abd50507-0cfd-49f8-8c6d-3b00ba75b8f6" + ], + "abd50507-0cfd-49f8-8c6d-3b00ba75b8f6@f9941": [ + "abd50507-0cfd-49f8-8c6d-3b00ba75b8f6@6c48a" + ], + "ac4f309c-c432-4fed-ad6d-3e058bd928c3@6c48a": [ + "ac4f309c-c432-4fed-ad6d-3e058bd928c3" + ], + "ac4f309c-c432-4fed-ad6d-3e058bd928c3@f9941": [ + "ac4f309c-c432-4fed-ad6d-3e058bd928c3@6c48a" + ], + "ac93c3a9-4f91-424b-8d99-22819bf809a2@6c48a": [ + "ac93c3a9-4f91-424b-8d99-22819bf809a2" + ], + "ac93c3a9-4f91-424b-8d99-22819bf809a2@f9941": [ + "ac93c3a9-4f91-424b-8d99-22819bf809a2@6c48a" + ], + "ac99ce70-b5af-40d4-9db1-97a9b4a029a1@6c48a": [ + "ac99ce70-b5af-40d4-9db1-97a9b4a029a1" + ], + "ac99ce70-b5af-40d4-9db1-97a9b4a029a1@f9941": [ + "ac99ce70-b5af-40d4-9db1-97a9b4a029a1@6c48a" + ], + "ad215587-f029-4276-b2c0-ba6292da5e83@6c48a": [ + "ad215587-f029-4276-b2c0-ba6292da5e83" + ], + "ad215587-f029-4276-b2c0-ba6292da5e83@f9941": [ + "ad215587-f029-4276-b2c0-ba6292da5e83@6c48a" + ], + "ad329478-0a3a-4e0f-9951-ea8a178f72a6@6c48a": [ + "ad329478-0a3a-4e0f-9951-ea8a178f72a6" + ], + "ad329478-0a3a-4e0f-9951-ea8a178f72a6@f9941": [ + "ad329478-0a3a-4e0f-9951-ea8a178f72a6@6c48a" + ], + "ae0870b4-96fe-4646-9ade-2f48db9518e0@6c48a": [ + "ae0870b4-96fe-4646-9ade-2f48db9518e0" + ], + "ae0870b4-96fe-4646-9ade-2f48db9518e0@f9941": [ + "ae0870b4-96fe-4646-9ade-2f48db9518e0@6c48a" + ], + "ae43d248-143b-4c9f-b93d-be8286fc1565@6c48a": [ + "ae43d248-143b-4c9f-b93d-be8286fc1565" + ], + "ae43d248-143b-4c9f-b93d-be8286fc1565@f9941": [ + "ae43d248-143b-4c9f-b93d-be8286fc1565@6c48a" + ], + "b2690697-0ed9-4ed8-b451-468e87cf2266@6c48a": [ + "b2690697-0ed9-4ed8-b451-468e87cf2266" + ], + "b2690697-0ed9-4ed8-b451-468e87cf2266@f9941": [ + "b2690697-0ed9-4ed8-b451-468e87cf2266@6c48a" + ], + "b32f733a-d305-4f1c-8542-45f68a22d072@6c48a": [ + "b32f733a-d305-4f1c-8542-45f68a22d072" + ], + "b32f733a-d305-4f1c-8542-45f68a22d072@f9941": [ + "b32f733a-d305-4f1c-8542-45f68a22d072@6c48a" + ], + "b3bb16f2-78ad-418e-abb7-fb1719ae935c@6c48a": [ + "b3bb16f2-78ad-418e-abb7-fb1719ae935c" + ], + "b3bb16f2-78ad-418e-abb7-fb1719ae935c@f9941": [ + "b3bb16f2-78ad-418e-abb7-fb1719ae935c@6c48a" + ], + "b5d7be0c-1350-4548-ac0d-275d2d81d39e@6c48a": [ + "b5d7be0c-1350-4548-ac0d-275d2d81d39e" + ], + "b5d7be0c-1350-4548-ac0d-275d2d81d39e@f9941": [ + "b5d7be0c-1350-4548-ac0d-275d2d81d39e@6c48a" + ], + "b6f851cd-8a7b-4fff-9d93-88a6165a4c68@6c48a": [ + "b6f851cd-8a7b-4fff-9d93-88a6165a4c68" + ], + "b6f851cd-8a7b-4fff-9d93-88a6165a4c68@f9941": [ + "b6f851cd-8a7b-4fff-9d93-88a6165a4c68@6c48a" + ], + "b716aa0f-2c37-4287-a6c6-032ab8364bcf@6c48a": [ + "b716aa0f-2c37-4287-a6c6-032ab8364bcf" + ], + "b716aa0f-2c37-4287-a6c6-032ab8364bcf@f9941": [ + "b716aa0f-2c37-4287-a6c6-032ab8364bcf@6c48a" + ], + "b77dd676-c35c-4b6d-9caa-27aeda3f3cfc@6c48a": [ + "b77dd676-c35c-4b6d-9caa-27aeda3f3cfc" + ], + "b77dd676-c35c-4b6d-9caa-27aeda3f3cfc@f9941": [ + "b77dd676-c35c-4b6d-9caa-27aeda3f3cfc@6c48a" + ], + "bb77826b-b6c0-4b07-aeb0-ead7ca451f8d@6c48a": [ + "bb77826b-b6c0-4b07-aeb0-ead7ca451f8d" + ], + "bb77826b-b6c0-4b07-aeb0-ead7ca451f8d@f9941": [ + "bb77826b-b6c0-4b07-aeb0-ead7ca451f8d@6c48a" + ], + "bbf93c62-c99c-42d5-bdfd-1a1fea064af6@6c48a": [ + "bbf93c62-c99c-42d5-bdfd-1a1fea064af6" + ], + "bbf93c62-c99c-42d5-bdfd-1a1fea064af6@f9941": [ + "bbf93c62-c99c-42d5-bdfd-1a1fea064af6@6c48a" + ], + "bde0c35f-afdc-4df8-b186-aa8f93942b48@6c48a": [ + "bde0c35f-afdc-4df8-b186-aa8f93942b48" + ], + "bde0c35f-afdc-4df8-b186-aa8f93942b48@f9941": [ + "bde0c35f-afdc-4df8-b186-aa8f93942b48@6c48a" + ], + "bec67e6e-8cac-46c2-85d5-6d51c69e5573@6c48a": [ + "bec67e6e-8cac-46c2-85d5-6d51c69e5573" + ], + "bec67e6e-8cac-46c2-85d5-6d51c69e5573@f9941": [ + "bec67e6e-8cac-46c2-85d5-6d51c69e5573@6c48a" + ], + "bfb5a670-2c13-425f-8b50-d42c6f880907@6c48a": [ + "bfb5a670-2c13-425f-8b50-d42c6f880907" + ], + "bfb5a670-2c13-425f-8b50-d42c6f880907@f9941": [ + "bfb5a670-2c13-425f-8b50-d42c6f880907@6c48a" + ], + "c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a@6c48a": [ + "c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a" + ], + "c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a@f9941": [ + "c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a@6c48a" + ], + "c059355d-3503-4aa1-87c0-38b81b2050e2@6c48a": [ + "c059355d-3503-4aa1-87c0-38b81b2050e2" + ], + "c059355d-3503-4aa1-87c0-38b81b2050e2@f9941": [ + "c059355d-3503-4aa1-87c0-38b81b2050e2@6c48a" + ], + "c26a2ac3-057f-4de8-8c06-9ff3e1c48017@f9941": [ + "c26a2ac3-057f-4de8-8c06-9ff3e1c48017@6c48a" + ], + "c3019d06-733d-4076-804b-ef4165b1be57@6c48a": [ + "c3019d06-733d-4076-804b-ef4165b1be57" + ], + "c3019d06-733d-4076-804b-ef4165b1be57@f9941": [ + "c3019d06-733d-4076-804b-ef4165b1be57@6c48a" + ], + "c3c78943-a4cd-4762-a723-86206969885e@6c48a": [ + "c3c78943-a4cd-4762-a723-86206969885e" + ], + "c3c78943-a4cd-4762-a723-86206969885e@f9941": [ + "c3c78943-a4cd-4762-a723-86206969885e@6c48a" + ], + "c4a53c5d-b489-4b37-a5ca-72bfe7ffe452@6c48a": [ + "c4a53c5d-b489-4b37-a5ca-72bfe7ffe452" + ], + "c4a53c5d-b489-4b37-a5ca-72bfe7ffe452@f9941": [ + "c4a53c5d-b489-4b37-a5ca-72bfe7ffe452@6c48a" + ], + "c4fba28b-29af-4666-b7d1-0720ce76524b@6c48a": [ + "c4fba28b-29af-4666-b7d1-0720ce76524b" + ], + "c4fba28b-29af-4666-b7d1-0720ce76524b@f9941": [ + "c4fba28b-29af-4666-b7d1-0720ce76524b@6c48a" + ], + "c70b94ef-5ff6-4295-992a-5579a2d6458b@6c48a": [ + "c70b94ef-5ff6-4295-992a-5579a2d6458b" + ], + "c70b94ef-5ff6-4295-992a-5579a2d6458b@f9941": [ + "c70b94ef-5ff6-4295-992a-5579a2d6458b@6c48a" + ], + "c71daad3-b3f3-4204-9416-c885a6303ac9@6c48a": [ + "c71daad3-b3f3-4204-9416-c885a6303ac9" + ], + "c71daad3-b3f3-4204-9416-c885a6303ac9@f9941": [ + "c71daad3-b3f3-4204-9416-c885a6303ac9@6c48a" + ], + "ca65e2f4-8510-484c-8dd2-f4eaef7f66c7@6c48a": [ + "ca65e2f4-8510-484c-8dd2-f4eaef7f66c7" + ], + "ca65e2f4-8510-484c-8dd2-f4eaef7f66c7@f9941": [ + "ca65e2f4-8510-484c-8dd2-f4eaef7f66c7@6c48a" + ], + "ca86f45b-2472-40ee-b653-259dbe441007@6c48a": [ + "ca86f45b-2472-40ee-b653-259dbe441007" + ], + "ca86f45b-2472-40ee-b653-259dbe441007@f9941": [ + "ca86f45b-2472-40ee-b653-259dbe441007@6c48a" + ], + "cb5ace05-d558-40ee-8bd2-ef9401e3c19b@6c48a": [ + "cb5ace05-d558-40ee-8bd2-ef9401e3c19b" + ], + "cb5ace05-d558-40ee-8bd2-ef9401e3c19b@f9941": [ + "cb5ace05-d558-40ee-8bd2-ef9401e3c19b@6c48a" + ], + "cc320ae3-2792-40b4-adce-011d97efc064@6c48a": [ + "cc320ae3-2792-40b4-adce-011d97efc064" + ], + "cc320ae3-2792-40b4-adce-011d97efc064@f9941": [ + "cc320ae3-2792-40b4-adce-011d97efc064@6c48a" + ], + "ce94d072-b86a-43e2-af31-374069cf363e@6c48a": [ + "ce94d072-b86a-43e2-af31-374069cf363e" + ], + "ce94d072-b86a-43e2-af31-374069cf363e@f9941": [ + "ce94d072-b86a-43e2-af31-374069cf363e@6c48a" + ], + "d2b965cd-897e-455b-8d21-5ed3bf0902be@6c48a": [ + "d2b965cd-897e-455b-8d21-5ed3bf0902be" + ], + "d2b965cd-897e-455b-8d21-5ed3bf0902be@f9941": [ + "d2b965cd-897e-455b-8d21-5ed3bf0902be@6c48a" + ], + "d330c1ef-5e51-4335-980b-d535892c4a18@6c48a": [ + "d330c1ef-5e51-4335-980b-d535892c4a18" + ], + "d330c1ef-5e51-4335-980b-d535892c4a18@f9941": [ + "d330c1ef-5e51-4335-980b-d535892c4a18@6c48a" + ], + "d3a8da1f-daa5-4e52-929a-edf95edb8275@6c48a": [ + "d3a8da1f-daa5-4e52-929a-edf95edb8275" + ], + "d3a8da1f-daa5-4e52-929a-edf95edb8275@f9941": [ + "d3a8da1f-daa5-4e52-929a-edf95edb8275@6c48a" + ], + "d4feff1b-d3c0-4001-9a95-320adb8ab285@6c48a": [ + "d4feff1b-d3c0-4001-9a95-320adb8ab285" + ], + "d4feff1b-d3c0-4001-9a95-320adb8ab285@f9941": [ + "d4feff1b-d3c0-4001-9a95-320adb8ab285@6c48a" + ], + "d602f103-bb41-4a24-85c7-d97fccaadf24@6c48a": [ + "d602f103-bb41-4a24-85c7-d97fccaadf24" + ], + "d602f103-bb41-4a24-85c7-d97fccaadf24@f9941": [ + "d602f103-bb41-4a24-85c7-d97fccaadf24@6c48a" + ], + "d63dc130-416b-422c-a90f-273895f4db73@6c48a": [ + "d63dc130-416b-422c-a90f-273895f4db73" + ], + "d63dc130-416b-422c-a90f-273895f4db73@f9941": [ + "d63dc130-416b-422c-a90f-273895f4db73@6c48a" + ], + "d8b2f923-b61d-4e95-820a-7ccc0d9031bc@6c48a": [ + "d8b2f923-b61d-4e95-820a-7ccc0d9031bc" + ], + "d8b2f923-b61d-4e95-820a-7ccc0d9031bc@f9941": [ + "d8b2f923-b61d-4e95-820a-7ccc0d9031bc@6c48a" + ], + "d8c705a6-a4c6-4936-b706-56e89e9bf344@6c48a": [ + "d8c705a6-a4c6-4936-b706-56e89e9bf344" + ], + "d8c705a6-a4c6-4936-b706-56e89e9bf344@f9941": [ + "d8c705a6-a4c6-4936-b706-56e89e9bf344@6c48a" + ], + "dc059148-a12d-4947-a708-ae642f146745@6c48a": [ + "dc059148-a12d-4947-a708-ae642f146745" + ], + "dc059148-a12d-4947-a708-ae642f146745@f9941": [ + "dc059148-a12d-4947-a708-ae642f146745@6c48a" + ], + "dc64288e-f16e-4fa1-bec7-f79a9b9ec72b@6c48a": [ + "dc64288e-f16e-4fa1-bec7-f79a9b9ec72b" + ], + "dc64288e-f16e-4fa1-bec7-f79a9b9ec72b@f9941": [ + "dc64288e-f16e-4fa1-bec7-f79a9b9ec72b@6c48a" + ], + "dc70290b-e14b-4d59-81a8-e037fa6b587c@6c48a": [ + "dc70290b-e14b-4d59-81a8-e037fa6b587c" + ], + "dc70290b-e14b-4d59-81a8-e037fa6b587c@f9941": [ + "dc70290b-e14b-4d59-81a8-e037fa6b587c@6c48a" + ], + "dce246d4-116d-4f36-893b-43a64365169d@6c48a": [ + "dce246d4-116d-4f36-893b-43a64365169d" + ], + "dce246d4-116d-4f36-893b-43a64365169d@f9941": [ + "dce246d4-116d-4f36-893b-43a64365169d@6c48a" + ], + "dd17b176-c0e4-471b-953d-157482a7e61e@6c48a": [ + "dd17b176-c0e4-471b-953d-157482a7e61e" + ], + "dd17b176-c0e4-471b-953d-157482a7e61e@f9941": [ + "dd17b176-c0e4-471b-953d-157482a7e61e@6c48a" + ], + "e08aaf39-bbce-4699-b45c-6f72957869ca@6c48a": [ + "e08aaf39-bbce-4699-b45c-6f72957869ca" + ], + "e08aaf39-bbce-4699-b45c-6f72957869ca@f9941": [ + "e08aaf39-bbce-4699-b45c-6f72957869ca@6c48a" + ], + "e13e6dc3-6a6f-4f53-972c-0290b5963bbb@6c48a": [ + "e13e6dc3-6a6f-4f53-972c-0290b5963bbb" + ], + "e13e6dc3-6a6f-4f53-972c-0290b5963bbb@f9941": [ + "e13e6dc3-6a6f-4f53-972c-0290b5963bbb@6c48a" + ], + "e59a20fa-257a-4368-8cd6-736614ee4c3b@6c48a": [ + "e59a20fa-257a-4368-8cd6-736614ee4c3b" + ], + "e59a20fa-257a-4368-8cd6-736614ee4c3b@f9941": [ + "e59a20fa-257a-4368-8cd6-736614ee4c3b@6c48a" + ], + "e6d6cc9e-cc78-48b3-99c4-5debb6e15004@6c48a": [ + "e6d6cc9e-cc78-48b3-99c4-5debb6e15004" + ], + "e6d6cc9e-cc78-48b3-99c4-5debb6e15004@f9941": [ + "e6d6cc9e-cc78-48b3-99c4-5debb6e15004@6c48a" + ], + "e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f@6c48a": [ + "e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f" + ], + "e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f@f9941": [ + "e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f@6c48a" + ], + "e8550400-59c1-4cde-a972-b6df5f696b09@6c48a": [ + "e8550400-59c1-4cde-a972-b6df5f696b09" + ], + "e8550400-59c1-4cde-a972-b6df5f696b09@f9941": [ + "e8550400-59c1-4cde-a972-b6df5f696b09@6c48a" + ], + "e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8@6c48a": [ + "e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8" + ], + "e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8@f9941": [ + "e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8@6c48a" + ], + "eccf0439-94a8-4b1a-8c7c-229f7a3042d9@6c48a": [ + "eccf0439-94a8-4b1a-8c7c-229f7a3042d9" + ], + "eccf0439-94a8-4b1a-8c7c-229f7a3042d9@f9941": [ + "eccf0439-94a8-4b1a-8c7c-229f7a3042d9@6c48a" + ], + "ed84140d-68f8-4dee-aa53-df590512fa94@6c48a": [ + "ed84140d-68f8-4dee-aa53-df590512fa94" + ], + "ed84140d-68f8-4dee-aa53-df590512fa94@f9941": [ + "ed84140d-68f8-4dee-aa53-df590512fa94@6c48a" + ], + "f2f6ace7-cda7-4312-8403-42c8767ac2f5@6c48a": [ + "f2f6ace7-cda7-4312-8403-42c8767ac2f5" + ], + "f2f6ace7-cda7-4312-8403-42c8767ac2f5@f9941": [ + "f2f6ace7-cda7-4312-8403-42c8767ac2f5@6c48a" + ], + "f4e45413-6b04-404c-8a2c-603b45f7caff@6c48a": [ + "f4e45413-6b04-404c-8a2c-603b45f7caff" + ], + "f4e45413-6b04-404c-8a2c-603b45f7caff@f9941": [ + "f4e45413-6b04-404c-8a2c-603b45f7caff@6c48a" + ], + "f4f58d91-aad3-471e-9328-b714e8e5982c": [ + "9968d439-7e1e-4994-bc1b-8bca5d7b49d8@6c48a" + ], + "f71c334f-843b-49b0-b14b-616629f00565@6c48a": [ + "f71c334f-843b-49b0-b14b-616629f00565" + ], + "f71c334f-843b-49b0-b14b-616629f00565@f9941": [ + "f71c334f-843b-49b0-b14b-616629f00565@6c48a" + ], + "fa67273e-09aa-4baa-ac04-3a86c5698e1b@6c48a": [ + "fa67273e-09aa-4baa-ac04-3a86c5698e1b" + ], + "fa67273e-09aa-4baa-ac04-3a86c5698e1b@f9941": [ + "fa67273e-09aa-4baa-ac04-3a86c5698e1b@6c48a" + ], + "faab0107-f3e3-49e0-82e1-6b992e6d5ce6@6c48a": [ + "faab0107-f3e3-49e0-82e1-6b992e6d5ce6" + ], + "faab0107-f3e3-49e0-82e1-6b992e6d5ce6@f9941": [ + "faab0107-f3e3-49e0-82e1-6b992e6d5ce6@6c48a" + ], + "faeb7ee7-ef85-400d-aab5-250de6beac72@6c48a": [ + "faeb7ee7-ef85-400d-aab5-250de6beac72" + ], + "faeb7ee7-ef85-400d-aab5-250de6beac72@f9941": [ + "faeb7ee7-ef85-400d-aab5-250de6beac72@6c48a" + ], + "fbadc552-d5aa-42fc-a9da-f4c9398d3ea8@6c48a": [ + "fbadc552-d5aa-42fc-a9da-f4c9398d3ea8" + ], + "fbadc552-d5aa-42fc-a9da-f4c9398d3ea8@f9941": [ + "fbadc552-d5aa-42fc-a9da-f4c9398d3ea8@6c48a" + ], + "fc568493-5c48-42fe-83ae-ae4a8e6c79c6@6c48a": [ + "fc568493-5c48-42fe-83ae-ae4a8e6c79c6" + ], + "fc568493-5c48-42fe-83ae-ae4a8e6c79c6@f9941": [ + "fc568493-5c48-42fe-83ae-ae4a8e6c79c6@6c48a" + ], + "fcd65028-f911-47d4-8a0e-c9d8d49a8542@6c48a": [ + "fcd65028-f911-47d4-8a0e-c9d8d49a8542" + ], + "fcd65028-f911-47d4-8a0e-c9d8d49a8542@f9941": [ + "fcd65028-f911-47d4-8a0e-c9d8d49a8542@6c48a" + ], + "fd4028bb-d170-4a6c-a419-2ade1ed59038@6c48a": [ + "fd4028bb-d170-4a6c-a419-2ade1ed59038" + ], + "fd4028bb-d170-4a6c-a419-2ade1ed59038@f9941": [ + "fd4028bb-d170-4a6c-a419-2ade1ed59038@6c48a" + ], + "fdd5cc13-b87e-43b2-8d10-5d91105d43fc@6c48a": [ + "fdd5cc13-b87e-43b2-8d10-5d91105d43fc" + ], + "fdd5cc13-b87e-43b2-8d10-5d91105d43fc@f9941": [ + "fdd5cc13-b87e-43b2-8d10-5d91105d43fc@6c48a" + ], + "fef99059-e5d9-47a9-87f4-46578f2fcae2@6c48a": [ + "fef99059-e5d9-47a9-87f4-46578f2fcae2" + ], + "fef99059-e5d9-47a9-87f4-46578f2fcae2@f9941": [ + "fef99059-e5d9-47a9-87f4-46578f2fcae2@6c48a" + ], + "fefd7337-749b-4478-80e6-90f6c8c91f78@6c48a": [ + "fefd7337-749b-4478-80e6-90f6c8c91f78" + ], + "fefd7337-749b-4478-80e6-90f6c8c91f78@f9941": [ + "fefd7337-749b-4478-80e6-90f6c8c91f78@6c48a" + ], + "ffd5101f-8560-4166-87a3-a649ceaf8161@6c48a": [ + "ffd5101f-8560-4166-87a3-a649ceaf8161" + ], + "ffd5101f-8560-4166-87a3-a649ceaf8161@f9941": [ + "ffd5101f-8560-4166-87a3-a649ceaf8161@6c48a" + ] + } +} \ No newline at end of file diff --git a/headless/static/remote/battle/import/00/001fea8b-233c-4830-96aa-5f0d9845668b.json b/headless/static/remote/battle/import/00/001fea8b-233c-4830-96aa-5f0d9845668b.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/00/001fea8b-233c-4830-96aa-5f0d9845668b.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/00/001fea8b-233c-4830-96aa-5f0d9845668b@f9941.json b/headless/static/remote/battle/import/00/001fea8b-233c-4830-96aa-5f0d9845668b@f9941.json new file mode 100644 index 00000000..04025b71 --- /dev/null +++ b/headless/static/remote/battle/import/00/001fea8b-233c-4830-96aa-5f0d9845668b@f9941.json @@ -0,0 +1 @@ +[1,["001fea8b-233c-4830-96aa-5f0d9845668b@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 013","rect":{"x":1,"y":1,"width":82,"height":83},"offset":{"x":0,"y":0},"originalSize":{"width":84,"height":85},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-41,-41.5,0,41,-41.5,0,-41,41.5,0,41,41.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,84,83,84,1,1,83,1],"nuv":[0.011904761904761904,0.011764705882352941,0.9880952380952381,0.011764705882352941,0.011904761904761904,0.9882352941176471,0.9880952380952381,0.9882352941176471],"minPos":{"x":-41,"y":-41.5,"z":0},"maxPos":{"x":41,"y":41.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/01/010aa6cc-beed-4a06-8a6f-92dc1dda72c9.json b/headless/static/remote/battle/import/01/010aa6cc-beed-4a06-8a6f-92dc1dda72c9.json new file mode 100644 index 00000000..5f83b913 --- /dev/null +++ b/headless/static/remote/battle/import/01/010aa6cc-beed-4a06-8a6f-92dc1dda72c9.json @@ -0,0 +1 @@ +[1,0,0,[["cc.Asset",["_name","_native"],1]],[[0,0,1,3]],[[0,"guaiA1a",".spine"],-1],0,0,[],[],[]] diff --git a/headless/static/remote/battle/import/02/026823e5-14f5-4f70-a73e-88a3f8e8001e.json b/headless/static/remote/battle/import/02/026823e5-14f5-4f70-a73e-88a3f8e8001e.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/02/026823e5-14f5-4f70-a73e-88a3f8e8001e.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/02/026823e5-14f5-4f70-a73e-88a3f8e8001e@f9941.json b/headless/static/remote/battle/import/02/026823e5-14f5-4f70-a73e-88a3f8e8001e@f9941.json new file mode 100644 index 00000000..c492c362 --- /dev/null +++ b/headless/static/remote/battle/import/02/026823e5-14f5-4f70-a73e-88a3f8e8001e@f9941.json @@ -0,0 +1 @@ +[1,["026823e5-14f5-4f70-a73e-88a3f8e8001e@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"baozha0003","rect":{"x":13,"y":12,"width":176,"height":163},"offset":{"x":1,"y":-1},"originalSize":{"width":200,"height":185},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-88,-81.5,0,88,-81.5,0,-88,81.5,0,88,81.5,0],"indexes":[0,1,2,2,1,3],"uv":[13,173,189,173,13,10,189,10],"nuv":[0.065,0.05405405405405406,0.945,0.05405405405405406,0.065,0.9351351351351351,0.945,0.9351351351351351],"minPos":{"x":-88,"y":-81.5,"z":0},"maxPos":{"x":88,"y":81.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/03/03942db8-6a99-42a3-98cf-70229cc5403e.json b/headless/static/remote/battle/import/03/03942db8-6a99-42a3-98cf-70229cc5403e.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/03/03942db8-6a99-42a3-98cf-70229cc5403e.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/03/03942db8-6a99-42a3-98cf-70229cc5403e@f9941.json b/headless/static/remote/battle/import/03/03942db8-6a99-42a3-98cf-70229cc5403e@f9941.json new file mode 100644 index 00000000..4fa7619a --- /dev/null +++ b/headless/static/remote/battle/import/03/03942db8-6a99-42a3-98cf-70229cc5403e@f9941.json @@ -0,0 +1 @@ +[1,["03942db8-6a99-42a3-98cf-70229cc5403e@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"cao","rect":{"x":0,"y":0,"width":38,"height":42},"offset":{"x":0,"y":0},"originalSize":{"width":38,"height":42},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-19,-21,0,19,-21,0,-19,21,0,19,21,0],"indexes":[0,1,2,2,1,3],"uv":[0,42,38,42,0,0,38,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-19,"y":-21,"z":0},"maxPos":{"x":19,"y":21,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/04/0423f835-3fbe-49d7-9c6a-ff9588e5c122.json b/headless/static/remote/battle/import/04/0423f835-3fbe-49d7-9c6a-ff9588e5c122.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/04/0423f835-3fbe-49d7-9c6a-ff9588e5c122.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/04/0423f835-3fbe-49d7-9c6a-ff9588e5c122@f9941.json b/headless/static/remote/battle/import/04/0423f835-3fbe-49d7-9c6a-ff9588e5c122@f9941.json new file mode 100644 index 00000000..e6598a11 --- /dev/null +++ b/headless/static/remote/battle/import/04/0423f835-3fbe-49d7-9c6a-ff9588e5c122@f9941.json @@ -0,0 +1 @@ +[1,["0423f835-3fbe-49d7-9c6a-ff9588e5c122@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"z_yanjing_bz","rect":{"x":0,"y":0,"width":18,"height":20},"offset":{"x":0,"y":0},"originalSize":{"width":18,"height":20},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-9,-10,0,9,-10,0,-9,10,0,9,10,0],"indexes":[0,1,2,2,1,3],"uv":[0,20,18,20,0,0,18,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-9,"y":-10,"z":0},"maxPos":{"x":9,"y":10,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/06/063fc0a8-27de-4950-b87e-f8d93a8c97af.json b/headless/static/remote/battle/import/06/063fc0a8-27de-4950-b87e-f8d93a8c97af.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/06/063fc0a8-27de-4950-b87e-f8d93a8c97af.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/06/063fc0a8-27de-4950-b87e-f8d93a8c97af@f9941.json b/headless/static/remote/battle/import/06/063fc0a8-27de-4950-b87e-f8d93a8c97af@f9941.json new file mode 100644 index 00000000..128c2a86 --- /dev/null +++ b/headless/static/remote/battle/import/06/063fc0a8-27de-4950-b87e-f8d93a8c97af@f9941.json @@ -0,0 +1 @@ +[1,["063fc0a8-27de-4950-b87e-f8d93a8c97af@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"zui_pingshi","rect":{"x":0,"y":0,"width":49,"height":14},"offset":{"x":0,"y":0},"originalSize":{"width":49,"height":14},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-24.5,-7,0,24.5,-7,0,-24.5,7,0,24.5,7,0],"indexes":[0,1,2,2,1,3],"uv":[0,14,49,14,0,0,49,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-24.5,"y":-7,"z":0},"maxPos":{"x":24.5,"y":7,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/06/06e4dec4-9199-42fa-81c9-1d6c8dce5e3e.json b/headless/static/remote/battle/import/06/06e4dec4-9199-42fa-81c9-1d6c8dce5e3e.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/06/06e4dec4-9199-42fa-81c9-1d6c8dce5e3e.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/06/06e4dec4-9199-42fa-81c9-1d6c8dce5e3e@f9941.json b/headless/static/remote/battle/import/06/06e4dec4-9199-42fa-81c9-1d6c8dce5e3e@f9941.json new file mode 100644 index 00000000..ff6898c2 --- /dev/null +++ b/headless/static/remote/battle/import/06/06e4dec4-9199-42fa-81c9-1d6c8dce5e3e@f9941.json @@ -0,0 +1 @@ +[1,["06e4dec4-9199-42fa-81c9-1d6c8dce5e3e@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"z_yan_shengli","rect":{"x":0,"y":0,"width":8,"height":7},"offset":{"x":0,"y":0},"originalSize":{"width":8,"height":7},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-4,-3.5,0,4,-3.5,0,-4,3.5,0,4,3.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,7,8,7,0,0,8,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-4,"y":-3.5,"z":0},"maxPos":{"x":4,"y":3.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/07/07a6e3b4-0690-4be3-bd6a-ddb8655d0928.json b/headless/static/remote/battle/import/07/07a6e3b4-0690-4be3-bd6a-ddb8655d0928.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/07/07a6e3b4-0690-4be3-bd6a-ddb8655d0928.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/07/07a6e3b4-0690-4be3-bd6a-ddb8655d0928@f9941.json b/headless/static/remote/battle/import/07/07a6e3b4-0690-4be3-bd6a-ddb8655d0928@f9941.json new file mode 100644 index 00000000..afa5a27f --- /dev/null +++ b/headless/static/remote/battle/import/07/07a6e3b4-0690-4be3-bd6a-ddb8655d0928@f9941.json @@ -0,0 +1 @@ +[1,["07a6e3b4-0690-4be3-bd6a-ddb8655d0928@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"004","rect":{"x":0,"y":0,"width":224,"height":88},"offset":{"x":0,"y":0},"originalSize":{"width":224,"height":88},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-112,-44,0,112,-44,0,-112,44,0,112,44,0],"indexes":[0,1,2,2,1,3],"uv":[0,88,224,88,0,0,224,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-112,"y":-44,"z":0},"maxPos":{"x":112,"y":44,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/09/09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e.json b/headless/static/remote/battle/import/09/09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/09/09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/09/09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e@f9941.json b/headless/static/remote/battle/import/09/09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e@f9941.json new file mode 100644 index 00000000..c3926034 --- /dev/null +++ b/headless/static/remote/battle/import/09/09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e@f9941.json @@ -0,0 +1 @@ +[1,["09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"shenti","rect":{"x":1,"y":1,"width":137,"height":68},"offset":{"x":0,"y":0},"originalSize":{"width":139,"height":70},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-68.5,-34,0,68.5,-34,0,-68.5,34,0,68.5,34,0],"indexes":[0,1,2,2,1,3],"uv":[1,69,138,69,1,1,138,1],"nuv":[0.007194244604316547,0.014285714285714285,0.9928057553956835,0.014285714285714285,0.007194244604316547,0.9857142857142858,0.9928057553956835,0.9857142857142858],"minPos":{"x":-68.5,"y":-34,"z":0},"maxPos":{"x":68.5,"y":34,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/0a/0a2ed6e6-8614-4176-a464-4c673e0d6847.json b/headless/static/remote/battle/import/0a/0a2ed6e6-8614-4176-a464-4c673e0d6847.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/0a/0a2ed6e6-8614-4176-a464-4c673e0d6847.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/0a/0a2ed6e6-8614-4176-a464-4c673e0d6847@f9941.json b/headless/static/remote/battle/import/0a/0a2ed6e6-8614-4176-a464-4c673e0d6847@f9941.json new file mode 100644 index 00000000..ffb9e52a --- /dev/null +++ b/headless/static/remote/battle/import/0a/0a2ed6e6-8614-4176-a464-4c673e0d6847@f9941.json @@ -0,0 +1 @@ +[1,["0a2ed6e6-8614-4176-a464-4c673e0d6847@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"08","rect":{"x":0,"y":0,"width":292,"height":227},"offset":{"x":-13,"y":24.5},"originalSize":{"width":318,"height":276},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-146,-113.5,0,146,-113.5,0,-146,113.5,0,146,113.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,276,292,276,0,49,292,49],"nuv":[0,0.17753623188405798,0.9182389937106918,0.17753623188405798,0,1,0.9182389937106918,1],"minPos":{"x":-146,"y":-113.5,"z":0},"maxPos":{"x":146,"y":113.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/0a/0a9ca732-f79e-47a8-865f-a11df7979eac.json b/headless/static/remote/battle/import/0a/0a9ca732-f79e-47a8-865f-a11df7979eac.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/0a/0a9ca732-f79e-47a8-865f-a11df7979eac.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/0a/0a9ca732-f79e-47a8-865f-a11df7979eac@f9941.json b/headless/static/remote/battle/import/0a/0a9ca732-f79e-47a8-865f-a11df7979eac@f9941.json new file mode 100644 index 00000000..911891a9 --- /dev/null +++ b/headless/static/remote/battle/import/0a/0a9ca732-f79e-47a8-865f-a11df7979eac@f9941.json @@ -0,0 +1 @@ +[1,["0a9ca732-f79e-47a8-865f-a11df7979eac@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"Energy 007 Impact Radial_00008","rect":{"x":1,"y":2,"width":31,"height":31},"offset":{"x":0,"y":-1},"originalSize":{"width":33,"height":33},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-15.5,-15.5,0,15.5,-15.5,0,-15.5,15.5,0,15.5,15.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,31,32,31,1,0,32,0],"nuv":[0.030303030303030304,0,0.9696969696969697,0,0.030303030303030304,0.9393939393939394,0.9696969696969697,0.9393939393939394],"minPos":{"x":-15.5,"y":-15.5,"z":0},"maxPos":{"x":15.5,"y":15.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/0a/0af1bd07-ba37-4db6-bcdb-bd52c636cc65.json b/headless/static/remote/battle/import/0a/0af1bd07-ba37-4db6-bcdb-bd52c636cc65.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/0a/0af1bd07-ba37-4db6-bcdb-bd52c636cc65.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/0a/0af1bd07-ba37-4db6-bcdb-bd52c636cc65@f9941.json b/headless/static/remote/battle/import/0a/0af1bd07-ba37-4db6-bcdb-bd52c636cc65@f9941.json new file mode 100644 index 00000000..3c957a26 --- /dev/null +++ b/headless/static/remote/battle/import/0a/0af1bd07-ba37-4db6-bcdb-bd52c636cc65@f9941.json @@ -0,0 +1 @@ +[1,["0af1bd07-ba37-4db6-bcdb-bd52c636cc65@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"y_bianzi1_bz","rect":{"x":0,"y":0,"width":28,"height":24},"offset":{"x":0,"y":0},"originalSize":{"width":28,"height":24},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-14,-12,0,14,-12,0,-14,12,0,14,12,0],"indexes":[0,1,2,2,1,3],"uv":[0,24,28,24,0,0,28,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-14,"y":-12,"z":0},"maxPos":{"x":14,"y":12,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/0b/0bf76b1f7.json b/headless/static/remote/battle/import/0b/0bf76b1f7.json new file mode 100644 index 00000000..9e8a937d --- /dev/null +++ b/headless/static/remote/battle/import/0b/0bf76b1f7.json @@ -0,0 +1 @@ +{"type":"cc.Texture2D","data":[["2,2,2,2,0,0",["0a2ed6e6-8614-4176-a464-4c673e0d6847"]],["2,2,2,2,0,0",["0a9ca732-f79e-47a8-865f-a11df7979eac"]],["2,2,2,2,0,0",["0af1bd07-ba37-4db6-bcdb-bd52c636cc65"]],["2,2,2,2,0,0",["0ec954bb-79cd-4122-bf5c-b86a13c5ef02"]],["2,2,2,2,0,0",["0f96bbf8-0324-4eab-ba6a-2a70f7653610"]],["2,2,2,2,0,0",["0fcb82ad-681d-4f57-ae1e-708a5a1f7fab"]],["2,2,2,2,0,0",["1e495888-e38d-4c57-8fda-a8c69960409a"]],["2,2,2,2,0,0",["1eb73a5f-ab8c-4f05-b833-6b14a361a4ee"]],["2,2,2,2,0,0",["1f2defe6-08ea-4919-be26-f263623f859a"]],["2,2,2,2,0,0",["001fea8b-233c-4830-96aa-5f0d9845668b"]],["2,2,2,2,0,0",["2ac4038c-217b-4d36-840d-aebea7f45b72"]],["2,2,2,2,0,0",["2d41bc63-88bf-4655-a81f-6a1269d8fd93"]],["2,2,2,2,0,0",["2d5360fe-fc08-448d-ae58-19a29ef677d2"]],["2,2,2,2,0,0",["3a622b00-2de8-48cc-b358-3db8568ef5b3"]],["2,2,2,2,0,0",["3e89062e-b618-4ae5-915b-d897340f2f40"]],["2,2,2,2,0,0",["3f4a5236-67c0-48c2-bcb7-9ae628933935"]],["2,2,2,2,0,0",["4c2c6c72-df5d-4d75-8a00-08138b76009a"]],["2,2,2,2,0,0",["4eb039e0-4381-4ebf-8a71-5f4f85452b7b"]],["2,2,2,2,0,0",["4ff7df06-ccdc-4497-8332-fbf9b6abfc18"]],["2,2,2,2,0,0",["5a77fe9d-52fd-4df5-ab08-e2766930e4f8"]],["2,2,2,2,0,0",["5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb"]],["2,2,2,2,0,0",["5d81ab0f-18b9-49af-85f9-59f540e14208"]],["2,2,2,2,0,0",["5f7d151d-78bc-4738-b3eb-325440ea5f24"]],["2,2,2,2,0,0",["6d4605ff-0938-44f8-a05c-55d93d20706d"]],["2,2,2,2,0,0",["06e4dec4-9199-42fa-81c9-1d6c8dce5e3e"]],["2,2,2,2,0,0",["6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223"]],["2,2,2,2,0,0",["6e73e1fa-3744-4e08-9eaa-117cc524afda"]],["2,2,2,2,0,0",["6edb6339-008a-4064-b651-ace4908644cd"]],["2,2,2,2,0,0",["6f92ffef-8b45-403f-9820-033a1e679d16"]],["2,2,2,2,0,0",["7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58"]],["2,2,2,2,0,0",["07a6e3b4-0690-4be3-bd6a-ddb8655d0928"]],["2,2,2,2,0,0",["7aa6b522-4cbd-43fc-a884-ae201e302b97"]],["2,2,2,2,0,0",["7ca59dc8-2635-47cd-98d6-94e9ec6c36fa"]],["2,2,2,2,0,0",["7ea77ef2-7734-492f-bb2c-22db352a8b49"]],["2,2,2,2,0,0",["7ebdb065-a319-4ee0-a374-104137cf1d8c"]],["2,2,2,2,0,0",["8af43c10-0847-478c-a7e9-82ca49d4401d"]],["2,2,2,2,0,0",["8ef1f316-b788-4822-86d2-4d77deb9e57c"]],["2,2,2,2,0,0",["9a740c1b-d991-4428-9549-1017bfb6358e"]],["2,2,2,2,0,0",["9a782e6d-767c-430e-9b91-86b4ca15645b"]],["2,2,2,2,0,0",["9ba0cb57-c7d4-43b9-9a45-c90fd071e578"]],["2,2,2,2,0,0",["9c004ab3-a3a9-46f9-a859-dcc4c3c3769b"]],["2,2,2,2,0,0",["9de99d59-c865-4435-a1ce-6bf6212d468c"]],["2,2,2,2,0,0",["09e80ecb-3cc1-4551-b843-6c2ce7ac1d9e"]],["2,2,2,2,0,0",["17ef8829-f581-4e37-9d9e-762b1e708229"]],["2,2,2,2,0,0",["21d9faca-4169-4e95-b6f1-edda15e5d694"]],["2,2,2,2,0,0",["22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68"]],["2,2,2,2,0,0",["23d50907-baa5-41fd-9512-143679feac92"]],["2,2,2,2,0,0",["24b3fb75-7e7d-48bd-9dab-f88850c70be0"]],["2,2,2,2,0,0",["25ee0a91-fde7-460c-94b5-fc3063e7b2f9"]],["2,2,2,2,0,0",["33bb5ab6-17d6-47a9-8466-a465c4a7e993"]],["2,2,2,2,0,0",["36c86de9-d150-48ef-8765-ad8f9e511c05"]],["2,2,2,2,0,0",["39e91df6-ddb4-436c-b709-7d0e1a281271"]],["2,2,2,2,0,0",["40e867e0-35ab-44f1-a8ff-86cacf947cce"]],["2,2,2,2,0,0",["44fca669-aad5-4e22-b846-82f3a296ec1e"]],["2,2,2,2,0,0",["45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4"]],["2,2,2,2,0,0",["54eddc0a-52cc-4235-ab55-0cb3810dcfd9"]],["2,2,2,2,0,0",["54f082ca-86ef-49c8-a33d-8f2ce95c8b57"]],["2,2,2,2,0,0",["55d7558e-5c18-49f7-a6e6-1b8c94037ecf"]],["2,2,2,2,0,0",["063fc0a8-27de-4950-b87e-f8d93a8c97af"]],["2,2,2,2,0,0",["65c10712-318d-4ecf-8253-a91a90dbc1e8"]],["2,2,2,2,0,0",["68dac8a9-ca70-44f4-b4d6-f0c2a7649d82"]],["2,2,2,2,0,0",["68dd7e1f-0996-4ac8-9b45-cb68975d7236"]],["2,2,2,2,0,0",["73e7b692-0dd7-428d-a37e-5294b5b02a78"]],["2,2,2,2,0,0",["73f1d26b-8ad3-4745-884e-9407850365c4"]],["2,2,2,2,0,0",["76f1e75b-f463-45cf-9005-fb49cb2ab7bf"]],["2,2,2,2,0,0",["78a2ff6d-18fa-4a97-b5d4-8efc3975682c"]],["2,2,2,2,0,0",["86a627d7-2064-4e31-85c0-43ded881c083"]],["2,2,2,2,0,0",["96e5083f-61ee-4d79-97b9-c297bb68c54a"]],["2,2,2,2,0,0",["126a7574-0975-4062-b1de-6ebcc0dc0296"]],["2,2,2,2,0,0",["138e008e-f0c4-4724-922c-bcda2476a717"]],["2,2,2,2,0,0",["259f92ef-99c5-4e2b-bf7f-3cfd159a32e2"]],["2,2,2,2,0,0",["337f444f-e016-444a-bfc3-56fbecc80977"]],["2,2,2,2,0,0",["376b1458-940c-4ec6-8f67-19ef31cdc7a8"]],["2,2,2,2,0,0",["0423f835-3fbe-49d7-9c6a-ff9588e5c122"]],["2,2,2,2,0,0",["446c59f6-d7f6-4d04-abef-7ccaf942893d"]],["2,2,2,2,0,0",["534a0232-a40c-453e-8a9e-f7001bc0ce73"]],["2,2,2,2,0,0",["583d2b42-0dc8-4b0c-af5e-b239374eed59"]],["2,2,2,2,0,0",["625edf63-d447-4c41-a5de-74e7f1e79514"]],["2,2,2,2,0,0",["656a4136-154e-4a01-84ed-418fd085386a"]],["2,2,2,2,0,0",["660ed781-d7e7-4630-81c0-67ebaaccc124"]],["2,2,2,2,0,0",["679bbb50-f1d5-4ac9-85f1-8aca77b0ca06"]],["2,2,2,2,0,0",["771d3105-423e-4ae4-9e58-4e5f2fae3e9a"]],["2,2,2,2,0,0",["917d53cb-10f1-4065-b7c3-57a9500b96e1"]],["2,2,2,2,0,0",["1014d8fe-eb7e-4351-9454-70ff7a4e4fbc"]],["2,2,2,2,0,0",["1168b518-61b0-4ca8-ba16-5085b3722064"]],["2,2,2,2,0,0",["2058f147-aecf-4084-95ea-cdb5da0fedb1"]],["2,2,2,2,0,0",["03942db8-6a99-42a3-98cf-70229cc5403e"]],["2,2,2,2,0,0",["4836df74-6d25-4922-a373-32949e6013df"]],["2,2,2,2,0,0",["5828e8e7-d037-46d8-a9af-63a11ae7349e"]],["2,2,2,2,0,0",["7231d9cd-c82a-4e10-86b7-ac6d066257aa"]],["2,2,2,2,0,0",["8251d88e-0943-4c69-89cb-88116bb83e9f"]],["2,2,2,2,0,0",["8602bb7b-f67c-469f-925b-4ffea75e6fca"]],["2,2,2,2,0,0",["8665e251-73b9-4bb1-b908-161c51250d6f"]],["2,2,2,2,0,0",["9821c439-9937-4fc7-b924-2d88b9d44e36"]],["2,2,2,2,0,0",["9968d439-7e1e-4994-bc1b-8bca5d7b49d8"]],["2,2,0,0,0,0",["24869eec-947e-498b-93cb-9ac58ecb5876"]],["2,2,2,2,0,0",["026823e5-14f5-4f70-a73e-88a3f8e8001e"]],["2,2,2,2,0,0",["36187bcd-71ae-46c0-abff-4e256ce90276"]],["2,2,2,2,0,0",["38004a8e-1e7e-481d-a276-ba12a9015c96"]],["2,2,2,2,0,0",["41464bcc-b6ab-4a8b-a5dc-511b924c061b"]],["2,2,2,2,0,0",["52113c9e-1b63-4a9b-99f7-2e5758514f81"]],["2,2,2,2,0,0",["53167f35-e100-434f-b671-9abe0bc64531"]],["2,2,2,2,0,0",["70507da1-9f99-425c-8d0a-7052e3b8ff23"]],["2,2,2,2,0,0",["82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2"]],["2,2,2,2,0,0",["89265b4f-16df-4020-a73b-6e7217e2ebd7"]],["2,2,2,2,0,0",["1581380d-bf95-4ce8-a80b-91ca21c5f8ab"]],["2,2,2,2,0,0",["a64f70c5-fd92-4f53-9cea-a726d3ccb680"]],["2,2,0,0,0,0",["a73cc36b-81f8-4a83-ae05-c7c976183907"]],["2,2,2,2,0,0",["a1883b0d-fa9a-4329-8f78-ff42d1adb9ac"]],["2,2,2,2,0,0",["aa74ba45-1456-4980-abe3-8ed0e52767a0"]],["2,2,2,2,0,0",["aad2c55e-36af-44a3-8c6d-5639841cc67d"]],["2,2,2,2,0,0",["aad7964b-28e4-4daa-9981-282c7f28ee2a"]],["2,2,2,2,0,0",["ab26edf5-c9aa-4def-bd6f-6e05efe76d0d"]],["2,2,2,2,0,0",["abd50507-0cfd-49f8-8c6d-3b00ba75b8f6"]],["2,2,2,2,0,0",["ac4f309c-c432-4fed-ad6d-3e058bd928c3"]],["2,2,2,2,0,0",["ac93c3a9-4f91-424b-8d99-22819bf809a2"]],["2,2,2,2,0,0",["ac99ce70-b5af-40d4-9db1-97a9b4a029a1"]],["2,2,2,2,0,0",["ad215587-f029-4276-b2c0-ba6292da5e83"]],["2,2,2,2,0,0",["ad329478-0a3a-4e0f-9951-ea8a178f72a6"]],["2,2,2,2,0,0",["ae43d248-143b-4c9f-b93d-be8286fc1565"]],["2,2,2,2,0,0",["ae0870b4-96fe-4646-9ade-2f48db9518e0"]],["2,2,2,2,0,0",["b3bb16f2-78ad-418e-abb7-fb1719ae935c"]],["2,2,2,2,0,0",["b5d7be0c-1350-4548-ac0d-275d2d81d39e"]],["2,2,2,2,0,0",["b6f851cd-8a7b-4fff-9d93-88a6165a4c68"]],["2,2,2,2,0,0",["b32f733a-d305-4f1c-8542-45f68a22d072"]],["2,2,2,2,0,0",["b77dd676-c35c-4b6d-9caa-27aeda3f3cfc"]],["2,2,2,2,0,0",["b716aa0f-2c37-4287-a6c6-032ab8364bcf"]],["2,2,2,2,0,0",["b2690697-0ed9-4ed8-b451-468e87cf2266"]],["2,2,2,2,0,0",["bb77826b-b6c0-4b07-aeb0-ead7ca451f8d"]],["2,2,2,2,0,0",["bbf93c62-c99c-42d5-bdfd-1a1fea064af6"]],["2,2,2,2,0,0",["bde0c35f-afdc-4df8-b186-aa8f93942b48"]],["2,2,2,2,0,0",["bec67e6e-8cac-46c2-85d5-6d51c69e5573"]],["2,2,2,2,0,0",["bfb5a670-2c13-425f-8b50-d42c6f880907"]],["2,2,2,2,0,0",["c3c78943-a4cd-4762-a723-86206969885e"]],["2,2,2,2,0,0",["c4a53c5d-b489-4b37-a5ca-72bfe7ffe452"]],["2,2,2,2,0,0",["c4fba28b-29af-4666-b7d1-0720ce76524b"]],["2,2,2,2,0,0",["c70b94ef-5ff6-4295-992a-5579a2d6458b"]],["2,2,2,2,0,0",["c71daad3-b3f3-4204-9416-c885a6303ac9"]],["2,2,2,2,0,0",["c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a"]],["2,2,2,2,0,0",["c3019d06-733d-4076-804b-ef4165b1be57"]],["2,2,2,2,0,0",["c059355d-3503-4aa1-87c0-38b81b2050e2"]],["2,2,2,2,0,0",["ca65e2f4-8510-484c-8dd2-f4eaef7f66c7"]],["2,2,2,2,0,0",["ca86f45b-2472-40ee-b653-259dbe441007"]],["2,2,2,2,0,0",["cb5ace05-d558-40ee-8bd2-ef9401e3c19b"]],["2,2,2,2,0,0",["cc320ae3-2792-40b4-adce-011d97efc064"]],["2,2,2,2,0,0",["ce94d072-b86a-43e2-af31-374069cf363e"]],["2,2,2,2,0,0",["d2b965cd-897e-455b-8d21-5ed3bf0902be"]],["2,2,2,2,0,0",["d3a8da1f-daa5-4e52-929a-edf95edb8275"]],["2,2,2,2,0,0",["d4feff1b-d3c0-4001-9a95-320adb8ab285"]],["2,2,2,2,0,0",["d8b2f923-b61d-4e95-820a-7ccc0d9031bc"]],["2,2,2,2,0,0",["d8c705a6-a4c6-4936-b706-56e89e9bf344"]],["2,2,2,2,0,0",["d63dc130-416b-422c-a90f-273895f4db73"]],["2,2,2,2,0,0",["d330c1ef-5e51-4335-980b-d535892c4a18"]],["2,2,2,2,0,0",["d602f103-bb41-4a24-85c7-d97fccaadf24"]],["2,2,0,0,0,0",["dc059148-a12d-4947-a708-ae642f146745"]],["2,2,2,2,0,0",["dc64288e-f16e-4fa1-bec7-f79a9b9ec72b"]],["2,2,2,2,0,0",["dc70290b-e14b-4d59-81a8-e037fa6b587c"]],["2,2,2,2,0,0",["dce246d4-116d-4f36-893b-43a64365169d"]],["2,2,2,2,0,0",["dd17b176-c0e4-471b-953d-157482a7e61e"]],["2,2,2,2,0,0",["e6d6cc9e-cc78-48b3-99c4-5debb6e15004"]],["2,2,2,2,0,0",["e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f"]],["2,2,2,2,0,0",["e08aaf39-bbce-4699-b45c-6f72957869ca"]],["2,2,2,2,0,0",["e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8"]],["2,2,2,2,0,0",["e13e6dc3-6a6f-4f53-972c-0290b5963bbb"]],["2,2,2,2,0,0",["e59a20fa-257a-4368-8cd6-736614ee4c3b"]],["2,2,2,2,0,0",["e8550400-59c1-4cde-a972-b6df5f696b09"]],["2,2,2,2,0,0",["eccf0439-94a8-4b1a-8c7c-229f7a3042d9"]],["2,2,2,2,0,0",["ed84140d-68f8-4dee-aa53-df590512fa94"]],["2,2,2,2,0,0",["f2f6ace7-cda7-4312-8403-42c8767ac2f5"]],["2,2,2,2,0,0",["f4e45413-6b04-404c-8a2c-603b45f7caff"]],["2,2,2,2,0,0",["f71c334f-843b-49b0-b14b-616629f00565"]],["2,2,2,2,0,0",["fa67273e-09aa-4baa-ac04-3a86c5698e1b"]],["2,2,2,2,0,0",["faab0107-f3e3-49e0-82e1-6b992e6d5ce6"]],["2,2,2,2,0,0",["faeb7ee7-ef85-400d-aab5-250de6beac72"]],["2,2,2,2,0,0",["fbadc552-d5aa-42fc-a9da-f4c9398d3ea8"]],["2,2,2,2,0,0",["fc568493-5c48-42fe-83ae-ae4a8e6c79c6"]],["2,2,2,2,0,0",["fcd65028-f911-47d4-8a0e-c9d8d49a8542"]],["2,2,2,2,0,0",["fd4028bb-d170-4a6c-a419-2ade1ed59038"]],["2,2,2,2,0,0",["fdd5cc13-b87e-43b2-8d10-5d91105d43fc"]],["2,2,2,2,0,0",["fef99059-e5d9-47a9-87f4-46578f2fcae2"]],["2,2,2,2,0,0",["fefd7337-749b-4478-80e6-90f6c8c91f78"]],["2,2,2,2,0,0",["ffd5101f-8560-4166-87a3-a649ceaf8161"]]]} diff --git a/headless/static/remote/battle/import/0d/0d0d520a-6a04-46ec-b8a7-f9f124a59574.json b/headless/static/remote/battle/import/0d/0d0d520a-6a04-46ec-b8a7-f9f124a59574.json new file mode 100644 index 00000000..5f83b913 --- /dev/null +++ b/headless/static/remote/battle/import/0d/0d0d520a-6a04-46ec-b8a7-f9f124a59574.json @@ -0,0 +1 @@ +[1,0,0,[["cc.Asset",["_name","_native"],1]],[[0,0,1,3]],[[0,"guaiA1a",".spine"],-1],0,0,[],[],[]] diff --git a/headless/static/remote/battle/import/0e/0ec954bb-79cd-4122-bf5c-b86a13c5ef02.json b/headless/static/remote/battle/import/0e/0ec954bb-79cd-4122-bf5c-b86a13c5ef02.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/0e/0ec954bb-79cd-4122-bf5c-b86a13c5ef02.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/0e/0ec954bb-79cd-4122-bf5c-b86a13c5ef02@f9941.json b/headless/static/remote/battle/import/0e/0ec954bb-79cd-4122-bf5c-b86a13c5ef02@f9941.json new file mode 100644 index 00000000..2d00b21e --- /dev/null +++ b/headless/static/remote/battle/import/0e/0ec954bb-79cd-4122-bf5c-b86a13c5ef02@f9941.json @@ -0,0 +1 @@ +[1,["0ec954bb-79cd-4122-bf5c-b86a13c5ef02@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"y_yanjing_bz","rect":{"x":0,"y":0,"width":11,"height":17},"offset":{"x":0,"y":0},"originalSize":{"width":11,"height":17},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-5.5,-8.5,0,5.5,-8.5,0,-5.5,8.5,0,5.5,8.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,17,11,17,0,0,11,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-5.5,"y":-8.5,"z":0},"maxPos":{"x":5.5,"y":8.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/0f/0f96bbf8-0324-4eab-ba6a-2a70f7653610.json b/headless/static/remote/battle/import/0f/0f96bbf8-0324-4eab-ba6a-2a70f7653610.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/0f/0f96bbf8-0324-4eab-ba6a-2a70f7653610.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/0f/0f96bbf8-0324-4eab-ba6a-2a70f7653610@f9941.json b/headless/static/remote/battle/import/0f/0f96bbf8-0324-4eab-ba6a-2a70f7653610@f9941.json new file mode 100644 index 00000000..23c19038 --- /dev/null +++ b/headless/static/remote/battle/import/0f/0f96bbf8-0324-4eab-ba6a-2a70f7653610@f9941.json @@ -0,0 +1 @@ +[1,["0f96bbf8-0324-4eab-ba6a-2a70f7653610@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"shenti_bz","rect":{"x":0,"y":0,"width":82,"height":56},"offset":{"x":0,"y":0},"originalSize":{"width":82,"height":56},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-41,-28,0,41,-28,0,-41,28,0,41,28,0],"indexes":[0,1,2,2,1,3],"uv":[0,56,82,56,0,0,82,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-41,"y":-28,"z":0},"maxPos":{"x":41,"y":28,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/0f/0fcb82ad-681d-4f57-ae1e-708a5a1f7fab.json b/headless/static/remote/battle/import/0f/0fcb82ad-681d-4f57-ae1e-708a5a1f7fab.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/0f/0fcb82ad-681d-4f57-ae1e-708a5a1f7fab.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/0f/0fcb82ad-681d-4f57-ae1e-708a5a1f7fab@f9941.json b/headless/static/remote/battle/import/0f/0fcb82ad-681d-4f57-ae1e-708a5a1f7fab@f9941.json new file mode 100644 index 00000000..4d05c3c3 --- /dev/null +++ b/headless/static/remote/battle/import/0f/0fcb82ad-681d-4f57-ae1e-708a5a1f7fab@f9941.json @@ -0,0 +1 @@ +[1,["0fcb82ad-681d-4f57-ae1e-708a5a1f7fab@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"z_jiao_bz","rect":{"x":0,"y":0,"width":27,"height":32},"offset":{"x":0,"y":0},"originalSize":{"width":27,"height":32},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-13.5,-16,0,13.5,-16,0,-13.5,16,0,13.5,16,0],"indexes":[0,1,2,2,1,3],"uv":[0,32,27,32,0,0,27,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-13.5,"y":-16,"z":0},"maxPos":{"x":13.5,"y":16,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/10/1014d8fe-eb7e-4351-9454-70ff7a4e4fbc.json b/headless/static/remote/battle/import/10/1014d8fe-eb7e-4351-9454-70ff7a4e4fbc.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/10/1014d8fe-eb7e-4351-9454-70ff7a4e4fbc.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/10/1014d8fe-eb7e-4351-9454-70ff7a4e4fbc@f9941.json b/headless/static/remote/battle/import/10/1014d8fe-eb7e-4351-9454-70ff7a4e4fbc@f9941.json new file mode 100644 index 00000000..130f948f --- /dev/null +++ b/headless/static/remote/battle/import/10/1014d8fe-eb7e-4351-9454-70ff7a4e4fbc@f9941.json @@ -0,0 +1 @@ +[1,["1014d8fe-eb7e-4351-9454-70ff7a4e4fbc@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"TX_hybz_0062","rect":{"x":4,"y":4,"width":185,"height":194},"offset":{"x":-1,"y":-2},"originalSize":{"width":195,"height":198},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-92.5,-97,0,92.5,-97,0,-92.5,97,0,92.5,97,0],"indexes":[0,1,2,2,1,3],"uv":[4,194,189,194,4,0,189,0],"nuv":[0.020512820512820513,0,0.9692307692307692,0,0.020512820512820513,0.9797979797979798,0.9692307692307692,0.9797979797979798],"minPos":{"x":-92.5,"y":-97,"z":0},"maxPos":{"x":92.5,"y":97,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/11/1168b518-61b0-4ca8-ba16-5085b3722064.json b/headless/static/remote/battle/import/11/1168b518-61b0-4ca8-ba16-5085b3722064.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/11/1168b518-61b0-4ca8-ba16-5085b3722064.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/11/1168b518-61b0-4ca8-ba16-5085b3722064@f9941.json b/headless/static/remote/battle/import/11/1168b518-61b0-4ca8-ba16-5085b3722064@f9941.json new file mode 100644 index 00000000..1987cc7d --- /dev/null +++ b/headless/static/remote/battle/import/11/1168b518-61b0-4ca8-ba16-5085b3722064@f9941.json @@ -0,0 +1 @@ +[1,["1168b518-61b0-4ca8-ba16-5085b3722064@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"TX_hybz_0060","rect":{"x":6,"y":8,"width":184,"height":190},"offset":{"x":0.5,"y":-4},"originalSize":{"width":195,"height":198},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-92,-95,0,92,-95,0,-92,95,0,92,95,0],"indexes":[0,1,2,2,1,3],"uv":[6,190,190,190,6,0,190,0],"nuv":[0.03076923076923077,0,0.9743589743589743,0,0.03076923076923077,0.9595959595959596,0.9743589743589743,0.9595959595959596],"minPos":{"x":-92,"y":-95,"z":0},"maxPos":{"x":92,"y":95,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/12/126a7574-0975-4062-b1de-6ebcc0dc0296.json b/headless/static/remote/battle/import/12/126a7574-0975-4062-b1de-6ebcc0dc0296.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/12/126a7574-0975-4062-b1de-6ebcc0dc0296.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/12/126a7574-0975-4062-b1de-6ebcc0dc0296@f9941.json b/headless/static/remote/battle/import/12/126a7574-0975-4062-b1de-6ebcc0dc0296@f9941.json new file mode 100644 index 00000000..c627c355 --- /dev/null +++ b/headless/static/remote/battle/import/12/126a7574-0975-4062-b1de-6ebcc0dc0296@f9941.json @@ -0,0 +1 @@ +[1,["126a7574-0975-4062-b1de-6ebcc0dc0296@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"tou","rect":{"x":0,"y":1,"width":61,"height":52},"offset":{"x":0,"y":-0.5},"originalSize":{"width":61,"height":53},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-30.5,-26,0,30.5,-26,0,-30.5,26,0,30.5,26,0],"indexes":[0,1,2,2,1,3],"uv":[0,52,61,52,0,0,61,0],"nuv":[0,0,1,0,0,0.9811320754716981,1,0.9811320754716981],"minPos":{"x":-30.5,"y":-26,"z":0},"maxPos":{"x":30.5,"y":26,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/13/138e008e-f0c4-4724-922c-bcda2476a717.json b/headless/static/remote/battle/import/13/138e008e-f0c4-4724-922c-bcda2476a717.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/13/138e008e-f0c4-4724-922c-bcda2476a717.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/13/138e008e-f0c4-4724-922c-bcda2476a717@f9941.json b/headless/static/remote/battle/import/13/138e008e-f0c4-4724-922c-bcda2476a717@f9941.json new file mode 100644 index 00000000..43b2c8f1 --- /dev/null +++ b/headless/static/remote/battle/import/13/138e008e-f0c4-4724-922c-bcda2476a717@f9941.json @@ -0,0 +1 @@ +[1,["138e008e-f0c4-4724-922c-bcda2476a717@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"tou_bz","rect":{"x":0,"y":1,"width":61,"height":54},"offset":{"x":0,"y":-0.5},"originalSize":{"width":61,"height":55},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-30.5,-27,0,30.5,-27,0,-30.5,27,0,30.5,27,0],"indexes":[0,1,2,2,1,3],"uv":[0,54,61,54,0,0,61,0],"nuv":[0,0,1,0,0,0.9818181818181818,1,0.9818181818181818],"minPos":{"x":-30.5,"y":-27,"z":0},"maxPos":{"x":30.5,"y":27,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/15/15495485-c12f-49b8-9b70-5f327417a643.json b/headless/static/remote/battle/import/15/15495485-c12f-49b8-9b70-5f327417a643.json new file mode 100644 index 00000000..b2fdf802 --- /dev/null +++ b/headless/static/remote/battle/import/15/15495485-c12f-49b8-9b70-5f327417a643.json @@ -0,0 +1 @@ +[1,0,0,[["cc.Asset",["_name","_native"],1]],[[0,0,1,3]],[[0,"001妙蛙种子",".spine"],-1],0,0,[],[],[]] diff --git a/headless/static/remote/battle/import/15/1581380d-bf95-4ce8-a80b-91ca21c5f8ab.json b/headless/static/remote/battle/import/15/1581380d-bf95-4ce8-a80b-91ca21c5f8ab.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/15/1581380d-bf95-4ce8-a80b-91ca21c5f8ab.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/15/1581380d-bf95-4ce8-a80b-91ca21c5f8ab@f9941.json b/headless/static/remote/battle/import/15/1581380d-bf95-4ce8-a80b-91ca21c5f8ab@f9941.json new file mode 100644 index 00000000..7d403b12 --- /dev/null +++ b/headless/static/remote/battle/import/15/1581380d-bf95-4ce8-a80b-91ca21c5f8ab@f9941.json @@ -0,0 +1 @@ +[1,["1581380d-bf95-4ce8-a80b-91ca21c5f8ab@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"TX_S1_shua_0014","rect":{"x":1,"y":1,"width":36,"height":13},"offset":{"x":0,"y":-0.5},"originalSize":{"width":38,"height":14},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-18,-6.5,0,18,-6.5,0,-18,6.5,0,18,6.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,13,37,13,1,0,37,0],"nuv":[0.02631578947368421,0,0.9736842105263158,0,0.02631578947368421,0.9285714285714286,0.9736842105263158,0.9285714285714286],"minPos":{"x":-18,"y":-6.5,"z":0},"maxPos":{"x":18,"y":6.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/17/179a2053-b80c-4b5d-ab83-e75934fd66d2@f9941.json b/headless/static/remote/battle/import/17/179a2053-b80c-4b5d-ab83-e75934fd66d2@f9941.json new file mode 100644 index 00000000..c7f58f4a --- /dev/null +++ b/headless/static/remote/battle/import/17/179a2053-b80c-4b5d-ab83-e75934fd66d2@f9941.json @@ -0,0 +1 @@ +[1,["179a2053-b80c-4b5d-ab83-e75934fd66d2@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"guaiA4e","rect":{"x":2,"y":3,"width":161,"height":811},"offset":{"x":0,"y":-0.5},"originalSize":{"width":165,"height":816},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-80.5,-405.5,0,80.5,-405.5,0,-80.5,405.5,0,80.5,405.5,0],"indexes":[0,1,2,2,1,3],"uv":[2,813,163,813,2,2,163,2],"nuv":[0.012121212121212121,0.0024509803921568627,0.9878787878787879,0.0024509803921568627,0.012121212121212121,0.9963235294117647,0.9878787878787879,0.9963235294117647],"minPos":{"x":-80.5,"y":-405.5,"z":0},"maxPos":{"x":80.5,"y":405.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/17/17ef8829-f581-4e37-9d9e-762b1e708229.json b/headless/static/remote/battle/import/17/17ef8829-f581-4e37-9d9e-762b1e708229.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/17/17ef8829-f581-4e37-9d9e-762b1e708229.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/17/17ef8829-f581-4e37-9d9e-762b1e708229@f9941.json b/headless/static/remote/battle/import/17/17ef8829-f581-4e37-9d9e-762b1e708229@f9941.json new file mode 100644 index 00000000..83fef9ed --- /dev/null +++ b/headless/static/remote/battle/import/17/17ef8829-f581-4e37-9d9e-762b1e708229@f9941.json @@ -0,0 +1 @@ +[1,["17ef8829-f581-4e37-9d9e-762b1e708229@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"TX_S1_yan_0029","rect":{"x":0,"y":1,"width":25,"height":24},"offset":{"x":-1.5,"y":0},"originalSize":{"width":28,"height":26},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-12.5,-12,0,12.5,-12,0,-12.5,12,0,12.5,12,0],"indexes":[0,1,2,2,1,3],"uv":[0,25,25,25,0,1,25,1],"nuv":[0,0.038461538461538464,0.8928571428571429,0.038461538461538464,0,0.9615384615384616,0.8928571428571429,0.9615384615384616],"minPos":{"x":-12.5,"y":-12,"z":0},"maxPos":{"x":12.5,"y":12,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/1e/1e495888-e38d-4c57-8fda-a8c69960409a.json b/headless/static/remote/battle/import/1e/1e495888-e38d-4c57-8fda-a8c69960409a.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/1e/1e495888-e38d-4c57-8fda-a8c69960409a.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/1e/1e495888-e38d-4c57-8fda-a8c69960409a@f9941.json b/headless/static/remote/battle/import/1e/1e495888-e38d-4c57-8fda-a8c69960409a@f9941.json new file mode 100644 index 00000000..cca19c05 --- /dev/null +++ b/headless/static/remote/battle/import/1e/1e495888-e38d-4c57-8fda-a8c69960409a@f9941.json @@ -0,0 +1 @@ +[1,["1e495888-e38d-4c57-8fda-a8c69960409a@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"chentu4","rect":{"x":0,"y":0,"width":78,"height":51},"offset":{"x":0,"y":0},"originalSize":{"width":78,"height":51},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-39,-25.5,0,39,-25.5,0,-39,25.5,0,39,25.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,51,78,51,0,0,78,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-39,"y":-25.5,"z":0},"maxPos":{"x":39,"y":25.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/1e/1eb73a5f-ab8c-4f05-b833-6b14a361a4ee.json b/headless/static/remote/battle/import/1e/1eb73a5f-ab8c-4f05-b833-6b14a361a4ee.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/1e/1eb73a5f-ab8c-4f05-b833-6b14a361a4ee.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/1e/1eb73a5f-ab8c-4f05-b833-6b14a361a4ee@f9941.json b/headless/static/remote/battle/import/1e/1eb73a5f-ab8c-4f05-b833-6b14a361a4ee@f9941.json new file mode 100644 index 00000000..f1f071cd --- /dev/null +++ b/headless/static/remote/battle/import/1e/1eb73a5f-ab8c-4f05-b833-6b14a361a4ee@f9941.json @@ -0,0 +1 @@ +[1,["1eb73a5f-ab8c-4f05-b833-6b14a361a4ee@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"b_lg_2","rect":{"x":2,"y":0,"width":30,"height":3},"offset":{"x":0,"y":0.5},"originalSize":{"width":34,"height":4},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-15,-1.5,0,15,-1.5,0,-15,1.5,0,15,1.5,0],"indexes":[0,1,2,2,1,3],"uv":[2,4,32,4,2,1,32,1],"nuv":[0.058823529411764705,0.25,0.9411764705882353,0.25,0.058823529411764705,1,0.9411764705882353,1],"minPos":{"x":-15,"y":-1.5,"z":0},"maxPos":{"x":15,"y":1.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/1f/1f2defe6-08ea-4919-be26-f263623f859a.json b/headless/static/remote/battle/import/1f/1f2defe6-08ea-4919-be26-f263623f859a.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/1f/1f2defe6-08ea-4919-be26-f263623f859a.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/1f/1f2defe6-08ea-4919-be26-f263623f859a@f9941.json b/headless/static/remote/battle/import/1f/1f2defe6-08ea-4919-be26-f263623f859a@f9941.json new file mode 100644 index 00000000..985b10df --- /dev/null +++ b/headless/static/remote/battle/import/1f/1f2defe6-08ea-4919-be26-f263623f859a@f9941.json @@ -0,0 +1 @@ +[1,["1f2defe6-08ea-4919-be26-f263623f859a@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"tx_baodian08","rect":{"x":1,"y":0,"width":47,"height":38},"offset":{"x":-0.5,"y":31},"originalSize":{"width":50,"height":100},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-23.5,-19,0,23.5,-19,0,-23.5,19,0,23.5,19,0],"indexes":[0,1,2,2,1,3],"uv":[1,100,48,100,1,62,48,62],"nuv":[0.02,0.62,0.96,0.62,0.02,1,0.96,1],"minPos":{"x":-23.5,"y":-19,"z":0},"maxPos":{"x":23.5,"y":19,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/20/2058f147-aecf-4084-95ea-cdb5da0fedb1.json b/headless/static/remote/battle/import/20/2058f147-aecf-4084-95ea-cdb5da0fedb1.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/20/2058f147-aecf-4084-95ea-cdb5da0fedb1.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/20/2058f147-aecf-4084-95ea-cdb5da0fedb1@f9941.json b/headless/static/remote/battle/import/20/2058f147-aecf-4084-95ea-cdb5da0fedb1@f9941.json new file mode 100644 index 00000000..2b705f81 --- /dev/null +++ b/headless/static/remote/battle/import/20/2058f147-aecf-4084-95ea-cdb5da0fedb1@f9941.json @@ -0,0 +1 @@ +[1,["2058f147-aecf-4084-95ea-cdb5da0fedb1@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"guaiA1aTexture","rect":{"x":2,"y":2,"width":120,"height":102},"offset":{"x":-2,"y":11},"originalSize":{"width":128,"height":128},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-60,-51,0,60,-51,0,-60,51,0,60,51,0],"indexes":[0,1,2,2,1,3],"uv":[2,126,122,126,2,24,122,24],"nuv":[0.015625,0.1875,0.953125,0.1875,0.015625,0.984375,0.953125,0.984375],"minPos":{"x":-60,"y":-51,"z":0},"maxPos":{"x":60,"y":51,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/21/21d9faca-4169-4e95-b6f1-edda15e5d694.json b/headless/static/remote/battle/import/21/21d9faca-4169-4e95-b6f1-edda15e5d694.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/21/21d9faca-4169-4e95-b6f1-edda15e5d694.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/21/21d9faca-4169-4e95-b6f1-edda15e5d694@f9941.json b/headless/static/remote/battle/import/21/21d9faca-4169-4e95-b6f1-edda15e5d694@f9941.json new file mode 100644 index 00000000..bd55a443 --- /dev/null +++ b/headless/static/remote/battle/import/21/21d9faca-4169-4e95-b6f1-edda15e5d694@f9941.json @@ -0,0 +1 @@ +[1,["21d9faca-4169-4e95-b6f1-edda15e5d694@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"z_bianzi2_bz","rect":{"x":0,"y":0,"width":123,"height":18},"offset":{"x":-0.5,"y":0},"originalSize":{"width":124,"height":18},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-61.5,-9,0,61.5,-9,0,-61.5,9,0,61.5,9,0],"indexes":[0,1,2,2,1,3],"uv":[0,18,123,18,0,0,123,0],"nuv":[0,0,0.9919354838709677,0,0,1,0.9919354838709677,1],"minPos":{"x":-61.5,"y":-9,"z":0},"maxPos":{"x":61.5,"y":9,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/22/22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68.json b/headless/static/remote/battle/import/22/22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/22/22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/22/22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68@f9941.json b/headless/static/remote/battle/import/22/22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68@f9941.json new file mode 100644 index 00000000..542f17a1 --- /dev/null +++ b/headless/static/remote/battle/import/22/22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68@f9941.json @@ -0,0 +1 @@ +[1,["22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"shouji_01","rect":{"x":2,"y":2,"width":606,"height":313},"offset":{"x":0,"y":0},"originalSize":{"width":610,"height":317},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-303,-156.5,0,303,-156.5,0,-303,156.5,0,303,156.5,0],"indexes":[0,1,2,2,1,3],"uv":[2,315,608,315,2,2,608,2],"nuv":[0.003278688524590164,0.006309148264984227,0.9967213114754099,0.006309148264984227,0.003278688524590164,0.9936908517350158,0.9967213114754099,0.9936908517350158],"minPos":{"x":-303,"y":-156.5,"z":0},"maxPos":{"x":303,"y":156.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/23/2357c44f-3cf0-47eb-8f7a-0f303eaefe08@f9941.json b/headless/static/remote/battle/import/23/2357c44f-3cf0-47eb-8f7a-0f303eaefe08@f9941.json new file mode 100644 index 00000000..92a84e97 --- /dev/null +++ b/headless/static/remote/battle/import/23/2357c44f-3cf0-47eb-8f7a-0f303eaefe08@f9941.json @@ -0,0 +1 @@ +[1,["2357c44f-3cf0-47eb-8f7a-0f303eaefe08@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"guaiA1a","rect":{"x":2,"y":2,"width":142,"height":284},"offset":{"x":0,"y":0},"originalSize":{"width":146,"height":288},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-71,-142,0,71,-142,0,-71,142,0,71,142,0],"indexes":[0,1,2,2,1,3],"uv":[2,286,144,286,2,2,144,2],"nuv":[0.0136986301369863,0.006944444444444444,0.9863013698630136,0.006944444444444444,0.0136986301369863,0.9930555555555556,0.9863013698630136,0.9930555555555556],"minPos":{"x":-71,"y":-142,"z":0},"maxPos":{"x":71,"y":142,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/23/23d50907-baa5-41fd-9512-143679feac92.json b/headless/static/remote/battle/import/23/23d50907-baa5-41fd-9512-143679feac92.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/23/23d50907-baa5-41fd-9512-143679feac92.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/23/23d50907-baa5-41fd-9512-143679feac92@f9941.json b/headless/static/remote/battle/import/23/23d50907-baa5-41fd-9512-143679feac92@f9941.json new file mode 100644 index 00000000..155cb9a9 --- /dev/null +++ b/headless/static/remote/battle/import/23/23d50907-baa5-41fd-9512-143679feac92@f9941.json @@ -0,0 +1 @@ +[1,["23d50907-baa5-41fd-9512-143679feac92@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"ye","rect":{"x":1,"y":1,"width":84,"height":46},"offset":{"x":0,"y":0},"originalSize":{"width":86,"height":48},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-42,-23,0,42,-23,0,-42,23,0,42,23,0],"indexes":[0,1,2,2,1,3],"uv":[1,47,85,47,1,1,85,1],"nuv":[0.011627906976744186,0.020833333333333332,0.9883720930232558,0.020833333333333332,0.011627906976744186,0.9791666666666666,0.9883720930232558,0.9791666666666666],"minPos":{"x":-42,"y":-23,"z":0},"maxPos":{"x":42,"y":23,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/24/24869eec-947e-498b-93cb-9ac58ecb5876.json b/headless/static/remote/battle/import/24/24869eec-947e-498b-93cb-9ac58ecb5876.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/24/24869eec-947e-498b-93cb-9ac58ecb5876.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/24/24869eec-947e-498b-93cb-9ac58ecb5876@f9941.json b/headless/static/remote/battle/import/24/24869eec-947e-498b-93cb-9ac58ecb5876@f9941.json new file mode 100644 index 00000000..614dfeea --- /dev/null +++ b/headless/static/remote/battle/import/24/24869eec-947e-498b-93cb-9ac58ecb5876@f9941.json @@ -0,0 +1 @@ +[1,["24869eec-947e-498b-93cb-9ac58ecb5876@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"MAP6_3","rect":{"x":0,"y":0,"width":24,"height":24},"offset":{"x":0,"y":0},"originalSize":{"width":24,"height":24},"rotated":false,"capInsets":[0,11,0,11],"vertices":{"rawPosition":[-12,-12,0,12,-12,0,-12,12,0,12,12,0],"indexes":[0,1,2,2,1,3],"uv":[0,24,24,24,0,0,24,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-12,"y":-12,"z":0},"maxPos":{"x":12,"y":12,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/24/24b3fb75-7e7d-48bd-9dab-f88850c70be0.json b/headless/static/remote/battle/import/24/24b3fb75-7e7d-48bd-9dab-f88850c70be0.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/24/24b3fb75-7e7d-48bd-9dab-f88850c70be0.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/24/24b3fb75-7e7d-48bd-9dab-f88850c70be0@f9941.json b/headless/static/remote/battle/import/24/24b3fb75-7e7d-48bd-9dab-f88850c70be0@f9941.json new file mode 100644 index 00000000..e164142d --- /dev/null +++ b/headless/static/remote/battle/import/24/24b3fb75-7e7d-48bd-9dab-f88850c70be0@f9941.json @@ -0,0 +1 @@ +[1,["24b3fb75-7e7d-48bd-9dab-f88850c70be0@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 016","rect":{"x":1,"y":1,"width":60,"height":60},"offset":{"x":0,"y":0},"originalSize":{"width":62,"height":62},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-30,-30,0,30,-30,0,-30,30,0,30,30,0],"indexes":[0,1,2,2,1,3],"uv":[1,61,61,61,1,1,61,1],"nuv":[0.016129032258064516,0.016129032258064516,0.9838709677419355,0.016129032258064516,0.016129032258064516,0.9838709677419355,0.9838709677419355,0.9838709677419355],"minPos":{"x":-30,"y":-30,"z":0},"maxPos":{"x":30,"y":30,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/25/259f92ef-99c5-4e2b-bf7f-3cfd159a32e2.json b/headless/static/remote/battle/import/25/259f92ef-99c5-4e2b-bf7f-3cfd159a32e2.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/25/259f92ef-99c5-4e2b-bf7f-3cfd159a32e2.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/25/259f92ef-99c5-4e2b-bf7f-3cfd159a32e2@f9941.json b/headless/static/remote/battle/import/25/259f92ef-99c5-4e2b-bf7f-3cfd159a32e2@f9941.json new file mode 100644 index 00000000..9be673f2 --- /dev/null +++ b/headless/static/remote/battle/import/25/259f92ef-99c5-4e2b-bf7f-3cfd159a32e2@f9941.json @@ -0,0 +1 @@ +[1,["259f92ef-99c5-4e2b-bf7f-3cfd159a32e2@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"buff_fire","rect":{"x":2,"y":2,"width":374,"height":318},"offset":{"x":0,"y":0},"originalSize":{"width":378,"height":322},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-187,-159,0,187,-159,0,-187,159,0,187,159,0],"indexes":[0,1,2,2,1,3],"uv":[2,320,376,320,2,2,376,2],"nuv":[0.005291005291005291,0.006211180124223602,0.9947089947089947,0.006211180124223602,0.005291005291005291,0.9937888198757764,0.9947089947089947,0.9937888198757764],"minPos":{"x":-187,"y":-159,"z":0},"maxPos":{"x":187,"y":159,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/25/25ee0a91-fde7-460c-94b5-fc3063e7b2f9.json b/headless/static/remote/battle/import/25/25ee0a91-fde7-460c-94b5-fc3063e7b2f9.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/25/25ee0a91-fde7-460c-94b5-fc3063e7b2f9.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/25/25ee0a91-fde7-460c-94b5-fc3063e7b2f9@f9941.json b/headless/static/remote/battle/import/25/25ee0a91-fde7-460c-94b5-fc3063e7b2f9@f9941.json new file mode 100644 index 00000000..6b3be052 --- /dev/null +++ b/headless/static/remote/battle/import/25/25ee0a91-fde7-460c-94b5-fc3063e7b2f9@f9941.json @@ -0,0 +1 @@ +[1,["25ee0a91-fde7-460c-94b5-fc3063e7b2f9@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 006","rect":{"x":1,"y":1,"width":42,"height":28},"offset":{"x":0,"y":0},"originalSize":{"width":44,"height":30},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-21,-14,0,21,-14,0,-21,14,0,21,14,0],"indexes":[0,1,2,2,1,3],"uv":[1,29,43,29,1,1,43,1],"nuv":[0.022727272727272728,0.03333333333333333,0.9772727272727273,0.03333333333333333,0.022727272727272728,0.9666666666666667,0.9772727272727273,0.9666666666666667],"minPos":{"x":-21,"y":-14,"z":0},"maxPos":{"x":21,"y":14,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/2a/2ac4038c-217b-4d36-840d-aebea7f45b72.json b/headless/static/remote/battle/import/2a/2ac4038c-217b-4d36-840d-aebea7f45b72.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/2a/2ac4038c-217b-4d36-840d-aebea7f45b72.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/2a/2ac4038c-217b-4d36-840d-aebea7f45b72@f9941.json b/headless/static/remote/battle/import/2a/2ac4038c-217b-4d36-840d-aebea7f45b72@f9941.json new file mode 100644 index 00000000..30271129 --- /dev/null +++ b/headless/static/remote/battle/import/2a/2ac4038c-217b-4d36-840d-aebea7f45b72@f9941.json @@ -0,0 +1 @@ +[1,["2ac4038c-217b-4d36-840d-aebea7f45b72@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"shenti","rect":{"x":0,"y":0,"width":79,"height":52},"offset":{"x":0,"y":0},"originalSize":{"width":79,"height":52},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-39.5,-26,0,39.5,-26,0,-39.5,26,0,39.5,26,0],"indexes":[0,1,2,2,1,3],"uv":[0,52,79,52,0,0,79,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-39.5,"y":-26,"z":0},"maxPos":{"x":39.5,"y":26,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/2a/2aff97dc-8695-491f-9b30-23cab6c11b9c.json b/headless/static/remote/battle/import/2a/2aff97dc-8695-491f-9b30-23cab6c11b9c.json new file mode 100644 index 00000000..812599c9 --- /dev/null +++ b/headless/static/remote/battle/import/2a/2aff97dc-8695-491f-9b30-23cab6c11b9c.json @@ -0,0 +1 @@ +[1,0,0,[["cc.Asset",["_name","_native"],1]],[[0,0,1,3]],[[0,"zhouyu_skill2_2",".spine"],-1],0,0,[],[],[]] diff --git a/headless/static/remote/battle/import/2c/2cf6c696-6824-46d4-b0e4-25cd69fa7703.json b/headless/static/remote/battle/import/2c/2cf6c696-6824-46d4-b0e4-25cd69fa7703.json new file mode 100644 index 00000000..40c85a72 --- /dev/null +++ b/headless/static/remote/battle/import/2c/2cf6c696-6824-46d4-b0e4-25cd69fa7703.json @@ -0,0 +1 @@ +[1,0,0,[["cc.Asset",["_name","_native"],1]],[[0,0,1,3]],[[0,"guaiA4e",".atlas"],-1],0,0,[],[],[]] diff --git a/headless/static/remote/battle/import/2d/2d41bc63-88bf-4655-a81f-6a1269d8fd93.json b/headless/static/remote/battle/import/2d/2d41bc63-88bf-4655-a81f-6a1269d8fd93.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/2d/2d41bc63-88bf-4655-a81f-6a1269d8fd93.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/2d/2d41bc63-88bf-4655-a81f-6a1269d8fd93@f9941.json b/headless/static/remote/battle/import/2d/2d41bc63-88bf-4655-a81f-6a1269d8fd93@f9941.json new file mode 100644 index 00000000..ab37424f --- /dev/null +++ b/headless/static/remote/battle/import/2d/2d41bc63-88bf-4655-a81f-6a1269d8fd93@f9941.json @@ -0,0 +1 @@ +[1,["2d41bc63-88bf-4655-a81f-6a1269d8fd93@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"z_bianzi1_bz","rect":{"x":0,"y":0,"width":39,"height":22},"offset":{"x":0,"y":0},"originalSize":{"width":39,"height":22},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-19.5,-11,0,19.5,-11,0,-19.5,11,0,19.5,11,0],"indexes":[0,1,2,2,1,3],"uv":[0,22,39,22,0,0,39,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-19.5,"y":-11,"z":0},"maxPos":{"x":19.5,"y":11,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/2d/2d5360fe-fc08-448d-ae58-19a29ef677d2.json b/headless/static/remote/battle/import/2d/2d5360fe-fc08-448d-ae58-19a29ef677d2.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/2d/2d5360fe-fc08-448d-ae58-19a29ef677d2.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/2d/2d5360fe-fc08-448d-ae58-19a29ef677d2@f9941.json b/headless/static/remote/battle/import/2d/2d5360fe-fc08-448d-ae58-19a29ef677d2@f9941.json new file mode 100644 index 00000000..a69dd407 --- /dev/null +++ b/headless/static/remote/battle/import/2d/2d5360fe-fc08-448d-ae58-19a29ef677d2@f9941.json @@ -0,0 +1 @@ +[1,["2d5360fe-fc08-448d-ae58-19a29ef677d2@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"TX_S1_shua_0018","rect":{"x":1,"y":1,"width":35,"height":13},"offset":{"x":-0.5,"y":-0.5},"originalSize":{"width":38,"height":14},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-17.5,-6.5,0,17.5,-6.5,0,-17.5,6.5,0,17.5,6.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,13,36,13,1,0,36,0],"nuv":[0.02631578947368421,0,0.9473684210526315,0,0.02631578947368421,0.9285714285714286,0.9473684210526315,0.9285714285714286],"minPos":{"x":-17.5,"y":-6.5,"z":0},"maxPos":{"x":17.5,"y":6.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/2e/2e9aa2a1-2ec8-49bb-bf44-7aad4c27704e.json b/headless/static/remote/battle/import/2e/2e9aa2a1-2ec8-49bb-bf44-7aad4c27704e.json new file mode 100644 index 00000000..b18e3cda --- /dev/null +++ b/headless/static/remote/battle/import/2e/2e9aa2a1-2ec8-49bb-bf44-7aad4c27704e.json @@ -0,0 +1 @@ +[1,0,0,[["cc.Asset",["_name","_native"],1]],[[0,0,1,3]],[[0,"shouji_01",".spine"],-1],0,0,[],[],[]] diff --git a/headless/static/remote/battle/import/32/32299834-d060-4b93-b428-e1fe3b8346e8.json b/headless/static/remote/battle/import/32/32299834-d060-4b93-b428-e1fe3b8346e8.json new file mode 100644 index 00000000..ff85b359 --- /dev/null +++ b/headless/static/remote/battle/import/32/32299834-d060-4b93-b428-e1fe3b8346e8.json @@ -0,0 +1 @@ +[1,0,0,[["cc.Asset",["_name","_native"],1]],[[0,0,1,3]],[[0,"buff_fire",".spine"],-1],0,0,[],[],[]] diff --git a/headless/static/remote/battle/import/33/337f444f-e016-444a-bfc3-56fbecc80977.json b/headless/static/remote/battle/import/33/337f444f-e016-444a-bfc3-56fbecc80977.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/33/337f444f-e016-444a-bfc3-56fbecc80977.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/33/337f444f-e016-444a-bfc3-56fbecc80977@f9941.json b/headless/static/remote/battle/import/33/337f444f-e016-444a-bfc3-56fbecc80977@f9941.json new file mode 100644 index 00000000..4b66f389 --- /dev/null +++ b/headless/static/remote/battle/import/33/337f444f-e016-444a-bfc3-56fbecc80977@f9941.json @@ -0,0 +1 @@ +[1,["337f444f-e016-444a-bfc3-56fbecc80977@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"jiao4","rect":{"x":1,"y":1,"width":69,"height":52},"offset":{"x":0,"y":0},"originalSize":{"width":71,"height":54},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-34.5,-26,0,34.5,-26,0,-34.5,26,0,34.5,26,0],"indexes":[0,1,2,2,1,3],"uv":[1,53,70,53,1,1,70,1],"nuv":[0.014084507042253521,0.018518518518518517,0.9859154929577465,0.018518518518518517,0.014084507042253521,0.9814814814814815,0.9859154929577465,0.9814814814814815],"minPos":{"x":-34.5,"y":-26,"z":0},"maxPos":{"x":34.5,"y":26,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/33/33bb5ab6-17d6-47a9-8466-a465c4a7e993.json b/headless/static/remote/battle/import/33/33bb5ab6-17d6-47a9-8466-a465c4a7e993.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/33/33bb5ab6-17d6-47a9-8466-a465c4a7e993.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/33/33bb5ab6-17d6-47a9-8466-a465c4a7e993@f9941.json b/headless/static/remote/battle/import/33/33bb5ab6-17d6-47a9-8466-a465c4a7e993@f9941.json new file mode 100644 index 00000000..7f3294e7 --- /dev/null +++ b/headless/static/remote/battle/import/33/33bb5ab6-17d6-47a9-8466-a465c4a7e993@f9941.json @@ -0,0 +1 @@ +[1,["33bb5ab6-17d6-47a9-8466-a465c4a7e993@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"z-meimao_shouji","rect":{"x":0,"y":0,"width":7,"height":12},"offset":{"x":0,"y":0},"originalSize":{"width":7,"height":12},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-3.5,-6,0,3.5,-6,0,-3.5,6,0,3.5,6,0],"indexes":[0,1,2,2,1,3],"uv":[0,12,7,12,0,0,7,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-3.5,"y":-6,"z":0},"maxPos":{"x":3.5,"y":6,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/34/34ac9fdc-64c2-448b-963c-d75aab270352.json b/headless/static/remote/battle/import/34/34ac9fdc-64c2-448b-963c-d75aab270352.json new file mode 100644 index 00000000..ad59117f --- /dev/null +++ b/headless/static/remote/battle/import/34/34ac9fdc-64c2-448b-963c-d75aab270352.json @@ -0,0 +1 @@ +[1,0,0,[["cc.Asset",["_name","_native"],1]],[[0,0,1,3]],[[0,"shouji_01",".atlas"],-1],0,0,[],[],[]] diff --git a/headless/static/remote/battle/import/36/36187bcd-71ae-46c0-abff-4e256ce90276.json b/headless/static/remote/battle/import/36/36187bcd-71ae-46c0-abff-4e256ce90276.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/36/36187bcd-71ae-46c0-abff-4e256ce90276.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/36/36187bcd-71ae-46c0-abff-4e256ce90276@f9941.json b/headless/static/remote/battle/import/36/36187bcd-71ae-46c0-abff-4e256ce90276@f9941.json new file mode 100644 index 00000000..ad2eaa01 --- /dev/null +++ b/headless/static/remote/battle/import/36/36187bcd-71ae-46c0-abff-4e256ce90276@f9941.json @@ -0,0 +1 @@ +[1,["36187bcd-71ae-46c0-abff-4e256ce90276@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"z_shou_bz","rect":{"x":0,"y":0,"width":27,"height":42},"offset":{"x":0,"y":0.5},"originalSize":{"width":27,"height":43},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-13.5,-21,0,13.5,-21,0,-13.5,21,0,13.5,21,0],"indexes":[0,1,2,2,1,3],"uv":[0,43,27,43,0,1,27,1],"nuv":[0,0.023255813953488372,1,0.023255813953488372,0,1,1,1],"minPos":{"x":-13.5,"y":-21,"z":0},"maxPos":{"x":13.5,"y":21,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/36/36c86de9-d150-48ef-8765-ad8f9e511c05.json b/headless/static/remote/battle/import/36/36c86de9-d150-48ef-8765-ad8f9e511c05.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/36/36c86de9-d150-48ef-8765-ad8f9e511c05.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/36/36c86de9-d150-48ef-8765-ad8f9e511c05@f9941.json b/headless/static/remote/battle/import/36/36c86de9-d150-48ef-8765-ad8f9e511c05@f9941.json new file mode 100644 index 00000000..7d7dbf1e --- /dev/null +++ b/headless/static/remote/battle/import/36/36c86de9-d150-48ef-8765-ad8f9e511c05@f9941.json @@ -0,0 +1 @@ +[1,["36c86de9-d150-48ef-8765-ad8f9e511c05@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"beimian","rect":{"x":1,"y":1,"width":123,"height":113},"offset":{"x":0,"y":0},"originalSize":{"width":125,"height":115},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-61.5,-56.5,0,61.5,-56.5,0,-61.5,56.5,0,61.5,56.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,114,124,114,1,1,124,1],"nuv":[0.008,0.008695652173913044,0.992,0.008695652173913044,0.008,0.991304347826087,0.992,0.991304347826087],"minPos":{"x":-61.5,"y":-56.5,"z":0},"maxPos":{"x":61.5,"y":56.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/37/376b1458-940c-4ec6-8f67-19ef31cdc7a8.json b/headless/static/remote/battle/import/37/376b1458-940c-4ec6-8f67-19ef31cdc7a8.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/37/376b1458-940c-4ec6-8f67-19ef31cdc7a8.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/37/376b1458-940c-4ec6-8f67-19ef31cdc7a8@f9941.json b/headless/static/remote/battle/import/37/376b1458-940c-4ec6-8f67-19ef31cdc7a8@f9941.json new file mode 100644 index 00000000..82373b49 --- /dev/null +++ b/headless/static/remote/battle/import/37/376b1458-940c-4ec6-8f67-19ef31cdc7a8@f9941.json @@ -0,0 +1 @@ +[1,["376b1458-940c-4ec6-8f67-19ef31cdc7a8@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"y_meimao_shengli","rect":{"x":0,"y":0,"width":20,"height":14},"offset":{"x":0,"y":0},"originalSize":{"width":20,"height":14},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-10,-7,0,10,-7,0,-10,7,0,10,7,0],"indexes":[0,1,2,2,1,3],"uv":[0,14,20,14,0,0,20,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-10,"y":-7,"z":0},"maxPos":{"x":10,"y":7,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/38/38004a8e-1e7e-481d-a276-ba12a9015c96.json b/headless/static/remote/battle/import/38/38004a8e-1e7e-481d-a276-ba12a9015c96.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/38/38004a8e-1e7e-481d-a276-ba12a9015c96.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/38/38004a8e-1e7e-481d-a276-ba12a9015c96@f9941.json b/headless/static/remote/battle/import/38/38004a8e-1e7e-481d-a276-ba12a9015c96@f9941.json new file mode 100644 index 00000000..370f8b11 --- /dev/null +++ b/headless/static/remote/battle/import/38/38004a8e-1e7e-481d-a276-ba12a9015c96@f9941.json @@ -0,0 +1 @@ +[1,["38004a8e-1e7e-481d-a276-ba12a9015c96@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"001","rect":{"x":0,"y":0,"width":221,"height":92},"offset":{"x":0,"y":0},"originalSize":{"width":221,"height":92},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-110.5,-46,0,110.5,-46,0,-110.5,46,0,110.5,46,0],"indexes":[0,1,2,2,1,3],"uv":[0,92,221,92,0,0,221,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-110.5,"y":-46,"z":0},"maxPos":{"x":110.5,"y":46,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/39/39e91df6-ddb4-436c-b709-7d0e1a281271.json b/headless/static/remote/battle/import/39/39e91df6-ddb4-436c-b709-7d0e1a281271.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/39/39e91df6-ddb4-436c-b709-7d0e1a281271.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/39/39e91df6-ddb4-436c-b709-7d0e1a281271@f9941.json b/headless/static/remote/battle/import/39/39e91df6-ddb4-436c-b709-7d0e1a281271@f9941.json new file mode 100644 index 00000000..4b525f34 --- /dev/null +++ b/headless/static/remote/battle/import/39/39e91df6-ddb4-436c-b709-7d0e1a281271@f9941.json @@ -0,0 +1 @@ +[1,["39e91df6-ddb4-436c-b709-7d0e1a281271@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"baoguang","rect":{"x":12,"y":0,"width":129,"height":141},"offset":{"x":1.5,"y":4.5},"originalSize":{"width":150,"height":150},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-64.5,-70.5,0,64.5,-70.5,0,-64.5,70.5,0,64.5,70.5,0],"indexes":[0,1,2,2,1,3],"uv":[12,150,141,150,12,9,141,9],"nuv":[0.08,0.06,0.94,0.06,0.08,1,0.94,1],"minPos":{"x":-64.5,"y":-70.5,"z":0},"maxPos":{"x":64.5,"y":70.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/3a/3a4ad94b-6e0f-4a01-825b-1ef057215823.json b/headless/static/remote/battle/import/3a/3a4ad94b-6e0f-4a01-825b-1ef057215823.json new file mode 100644 index 00000000..21791989 --- /dev/null +++ b/headless/static/remote/battle/import/3a/3a4ad94b-6e0f-4a01-825b-1ef057215823.json @@ -0,0 +1 @@ +[1,0,0,[["cc.Asset",["_name","_native"],1]],[[0,0,1,3]],[[0,"guaiA1aTexture",".atlas"],-1],0,0,[],[],[]] diff --git a/headless/static/remote/battle/import/3a/3a622b00-2de8-48cc-b358-3db8568ef5b3.json b/headless/static/remote/battle/import/3a/3a622b00-2de8-48cc-b358-3db8568ef5b3.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/3a/3a622b00-2de8-48cc-b358-3db8568ef5b3.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/3a/3a622b00-2de8-48cc-b358-3db8568ef5b3@f9941.json b/headless/static/remote/battle/import/3a/3a622b00-2de8-48cc-b358-3db8568ef5b3@f9941.json new file mode 100644 index 00000000..b151ed95 --- /dev/null +++ b/headless/static/remote/battle/import/3a/3a622b00-2de8-48cc-b358-3db8568ef5b3@f9941.json @@ -0,0 +1 @@ +[1,["3a622b00-2de8-48cc-b358-3db8568ef5b3@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"01","rect":{"x":17,"y":4,"width":58,"height":88},"offset":{"x":-4,"y":0.5},"originalSize":{"width":100,"height":97},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-29,-44,0,29,-44,0,-29,44,0,29,44,0],"indexes":[0,1,2,2,1,3],"uv":[17,93,75,93,17,5,75,5],"nuv":[0.17,0.05154639175257732,0.75,0.05154639175257732,0.17,0.9587628865979382,0.75,0.9587628865979382],"minPos":{"x":-29,"y":-44,"z":0},"maxPos":{"x":29,"y":44,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/3e/3e89062e-b618-4ae5-915b-d897340f2f40.json b/headless/static/remote/battle/import/3e/3e89062e-b618-4ae5-915b-d897340f2f40.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/3e/3e89062e-b618-4ae5-915b-d897340f2f40.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/3e/3e89062e-b618-4ae5-915b-d897340f2f40@f9941.json b/headless/static/remote/battle/import/3e/3e89062e-b618-4ae5-915b-d897340f2f40@f9941.json new file mode 100644 index 00000000..57cd4323 --- /dev/null +++ b/headless/static/remote/battle/import/3e/3e89062e-b618-4ae5-915b-d897340f2f40@f9941.json @@ -0,0 +1 @@ +[1,["3e89062e-b618-4ae5-915b-d897340f2f40@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"TX_hybz_0068","rect":{"x":1,"y":0,"width":194,"height":168},"offset":{"x":0.5,"y":15},"originalSize":{"width":195,"height":198},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-97,-84,0,97,-84,0,-97,84,0,97,84,0],"indexes":[0,1,2,2,1,3],"uv":[1,198,195,198,1,30,195,30],"nuv":[0.005128205128205128,0.15151515151515152,1,0.15151515151515152,0.005128205128205128,1,1,1],"minPos":{"x":-97,"y":-84,"z":0},"maxPos":{"x":97,"y":84,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/3f/3f4a5236-67c0-48c2-bcb7-9ae628933935.json b/headless/static/remote/battle/import/3f/3f4a5236-67c0-48c2-bcb7-9ae628933935.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/3f/3f4a5236-67c0-48c2-bcb7-9ae628933935.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/3f/3f4a5236-67c0-48c2-bcb7-9ae628933935@f9941.json b/headless/static/remote/battle/import/3f/3f4a5236-67c0-48c2-bcb7-9ae628933935@f9941.json new file mode 100644 index 00000000..92ea7db3 --- /dev/null +++ b/headless/static/remote/battle/import/3f/3f4a5236-67c0-48c2-bcb7-9ae628933935@f9941.json @@ -0,0 +1 @@ +[1,["3f4a5236-67c0-48c2-bcb7-9ae628933935@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"liugguang2","rect":{"x":0,"y":0,"width":35,"height":31},"offset":{"x":0,"y":0},"originalSize":{"width":35,"height":31},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-17.5,-15.5,0,17.5,-15.5,0,-17.5,15.5,0,17.5,15.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,31,35,31,0,0,35,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-17.5,"y":-15.5,"z":0},"maxPos":{"x":17.5,"y":15.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/40/40e867e0-35ab-44f1-a8ff-86cacf947cce.json b/headless/static/remote/battle/import/40/40e867e0-35ab-44f1-a8ff-86cacf947cce.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/40/40e867e0-35ab-44f1-a8ff-86cacf947cce.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/40/40e867e0-35ab-44f1-a8ff-86cacf947cce@f9941.json b/headless/static/remote/battle/import/40/40e867e0-35ab-44f1-a8ff-86cacf947cce@f9941.json new file mode 100644 index 00000000..ab203ae8 --- /dev/null +++ b/headless/static/remote/battle/import/40/40e867e0-35ab-44f1-a8ff-86cacf947cce@f9941.json @@ -0,0 +1 @@ +[1,["40e867e0-35ab-44f1-a8ff-86cacf947cce@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"suduxian_su","rect":{"x":0,"y":0,"width":21,"height":57},"offset":{"x":0,"y":0},"originalSize":{"width":21,"height":57},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-10.5,-28.5,0,10.5,-28.5,0,-10.5,28.5,0,10.5,28.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,57,21,57,0,0,21,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-10.5,"y":-28.5,"z":0},"maxPos":{"x":10.5,"y":28.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/41/41464bcc-b6ab-4a8b-a5dc-511b924c061b.json b/headless/static/remote/battle/import/41/41464bcc-b6ab-4a8b-a5dc-511b924c061b.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/41/41464bcc-b6ab-4a8b-a5dc-511b924c061b.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/41/41464bcc-b6ab-4a8b-a5dc-511b924c061b@f9941.json b/headless/static/remote/battle/import/41/41464bcc-b6ab-4a8b-a5dc-511b924c061b@f9941.json new file mode 100644 index 00000000..fd8db766 --- /dev/null +++ b/headless/static/remote/battle/import/41/41464bcc-b6ab-4a8b-a5dc-511b924c061b@f9941.json @@ -0,0 +1 @@ +[1,["41464bcc-b6ab-4a8b-a5dc-511b924c061b@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"y_bianzi2_bz_g","rect":{"x":0,"y":0,"width":80,"height":21},"offset":{"x":0,"y":0},"originalSize":{"width":80,"height":21},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-40,-10.5,0,40,-10.5,0,-40,10.5,0,40,10.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,21,80,21,0,0,80,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-40,"y":-10.5,"z":0},"maxPos":{"x":40,"y":10.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/44/446c59f6-d7f6-4d04-abef-7ccaf942893d.json b/headless/static/remote/battle/import/44/446c59f6-d7f6-4d04-abef-7ccaf942893d.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/44/446c59f6-d7f6-4d04-abef-7ccaf942893d.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/44/446c59f6-d7f6-4d04-abef-7ccaf942893d@f9941.json b/headless/static/remote/battle/import/44/446c59f6-d7f6-4d04-abef-7ccaf942893d@f9941.json new file mode 100644 index 00000000..ebea8af1 --- /dev/null +++ b/headless/static/remote/battle/import/44/446c59f6-d7f6-4d04-abef-7ccaf942893d@f9941.json @@ -0,0 +1 @@ +[1,["446c59f6-d7f6-4d04-abef-7ccaf942893d@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"guaiA1a_legR","rect":{"x":0,"y":0,"width":24,"height":37},"offset":{"x":-1.5,"y":0},"originalSize":{"width":27,"height":37},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-12,-18.5,0,12,-18.5,0,-12,18.5,0,12,18.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,37,24,37,0,0,24,0],"nuv":[0,0,0.8888888888888888,0,0,1,0.8888888888888888,1],"minPos":{"x":-12,"y":-18.5,"z":0},"maxPos":{"x":12,"y":18.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/44/44fca669-aad5-4e22-b846-82f3a296ec1e.json b/headless/static/remote/battle/import/44/44fca669-aad5-4e22-b846-82f3a296ec1e.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/44/44fca669-aad5-4e22-b846-82f3a296ec1e.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/44/44fca669-aad5-4e22-b846-82f3a296ec1e@f9941.json b/headless/static/remote/battle/import/44/44fca669-aad5-4e22-b846-82f3a296ec1e@f9941.json new file mode 100644 index 00000000..01b32840 --- /dev/null +++ b/headless/static/remote/battle/import/44/44fca669-aad5-4e22-b846-82f3a296ec1e@f9941.json @@ -0,0 +1 @@ +[1,["44fca669-aad5-4e22-b846-82f3a296ec1e@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 009","rect":{"x":1,"y":1,"width":56,"height":86},"offset":{"x":0,"y":0},"originalSize":{"width":58,"height":88},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-28,-43,0,28,-43,0,-28,43,0,28,43,0],"indexes":[0,1,2,2,1,3],"uv":[1,87,57,87,1,1,57,1],"nuv":[0.017241379310344827,0.011363636363636364,0.9827586206896551,0.011363636363636364,0.017241379310344827,0.9886363636363636,0.9827586206896551,0.9886363636363636],"minPos":{"x":-28,"y":-43,"z":0},"maxPos":{"x":28,"y":43,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/45/45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4.json b/headless/static/remote/battle/import/45/45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/45/45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/45/45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4@f9941.json b/headless/static/remote/battle/import/45/45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4@f9941.json new file mode 100644 index 00000000..6f1b01d6 --- /dev/null +++ b/headless/static/remote/battle/import/45/45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4@f9941.json @@ -0,0 +1 @@ +[1,["45fb3b78-8d1a-47bb-99c3-8d88fb4dccd4@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"atk_guangci3_0031","rect":{"x":0,"y":0,"width":31,"height":27},"offset":{"x":-1.5,"y":0},"originalSize":{"width":34,"height":27},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-15.5,-13.5,0,15.5,-13.5,0,-15.5,13.5,0,15.5,13.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,27,31,27,0,0,31,0],"nuv":[0,0,0.9117647058823529,0,0,1,0.9117647058823529,1],"minPos":{"x":-15.5,"y":-13.5,"z":0},"maxPos":{"x":15.5,"y":13.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/48/4836df74-6d25-4922-a373-32949e6013df.json b/headless/static/remote/battle/import/48/4836df74-6d25-4922-a373-32949e6013df.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/48/4836df74-6d25-4922-a373-32949e6013df.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/48/4836df74-6d25-4922-a373-32949e6013df@f9941.json b/headless/static/remote/battle/import/48/4836df74-6d25-4922-a373-32949e6013df@f9941.json new file mode 100644 index 00000000..15afa251 --- /dev/null +++ b/headless/static/remote/battle/import/48/4836df74-6d25-4922-a373-32949e6013df@f9941.json @@ -0,0 +1 @@ +[1,["4836df74-6d25-4922-a373-32949e6013df@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"z_meimao_pingshi","rect":{"x":0,"y":0,"width":4,"height":17},"offset":{"x":0,"y":0},"originalSize":{"width":4,"height":17},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-2,-8.5,0,2,-8.5,0,-2,8.5,0,2,8.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,17,4,17,0,0,4,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-2,"y":-8.5,"z":0},"maxPos":{"x":2,"y":8.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/4c/4c2c6c72-df5d-4d75-8a00-08138b76009a.json b/headless/static/remote/battle/import/4c/4c2c6c72-df5d-4d75-8a00-08138b76009a.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/4c/4c2c6c72-df5d-4d75-8a00-08138b76009a.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/4c/4c2c6c72-df5d-4d75-8a00-08138b76009a@f9941.json b/headless/static/remote/battle/import/4c/4c2c6c72-df5d-4d75-8a00-08138b76009a@f9941.json new file mode 100644 index 00000000..f2a0a9d8 --- /dev/null +++ b/headless/static/remote/battle/import/4c/4c2c6c72-df5d-4d75-8a00-08138b76009a@f9941.json @@ -0,0 +1 @@ +[1,["4c2c6c72-df5d-4d75-8a00-08138b76009a@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"hua_b","rect":{"x":0,"y":0,"width":14,"height":25},"offset":{"x":0,"y":0},"originalSize":{"width":14,"height":25},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-7,-12.5,0,7,-12.5,0,-7,12.5,0,7,12.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,25,14,25,0,0,14,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-7,"y":-12.5,"z":0},"maxPos":{"x":7,"y":12.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/4e/4eb039e0-4381-4ebf-8a71-5f4f85452b7b.json b/headless/static/remote/battle/import/4e/4eb039e0-4381-4ebf-8a71-5f4f85452b7b.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/4e/4eb039e0-4381-4ebf-8a71-5f4f85452b7b.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/4e/4eb039e0-4381-4ebf-8a71-5f4f85452b7b@f9941.json b/headless/static/remote/battle/import/4e/4eb039e0-4381-4ebf-8a71-5f4f85452b7b@f9941.json new file mode 100644 index 00000000..ccd7fd13 --- /dev/null +++ b/headless/static/remote/battle/import/4e/4eb039e0-4381-4ebf-8a71-5f4f85452b7b@f9941.json @@ -0,0 +1 @@ +[1,["4eb039e0-4381-4ebf-8a71-5f4f85452b7b@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"tx_guangdiand1","rect":{"x":0,"y":0,"width":50,"height":50},"offset":{"x":0,"y":0},"originalSize":{"width":50,"height":50},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-25,-25,0,25,-25,0,-25,25,0,25,25,0],"indexes":[0,1,2,2,1,3],"uv":[0,50,50,50,0,0,50,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-25,"y":-25,"z":0},"maxPos":{"x":25,"y":25,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/4f/4fa5a433-2410-4c9f-a196-acc8b645ff69.json b/headless/static/remote/battle/import/4f/4fa5a433-2410-4c9f-a196-acc8b645ff69.json new file mode 100644 index 00000000..21791989 --- /dev/null +++ b/headless/static/remote/battle/import/4f/4fa5a433-2410-4c9f-a196-acc8b645ff69.json @@ -0,0 +1 @@ +[1,0,0,[["cc.Asset",["_name","_native"],1]],[[0,0,1,3]],[[0,"guaiA1aTexture",".atlas"],-1],0,0,[],[],[]] diff --git a/headless/static/remote/battle/import/4f/4ff7df06-ccdc-4497-8332-fbf9b6abfc18.json b/headless/static/remote/battle/import/4f/4ff7df06-ccdc-4497-8332-fbf9b6abfc18.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/4f/4ff7df06-ccdc-4497-8332-fbf9b6abfc18.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/4f/4ff7df06-ccdc-4497-8332-fbf9b6abfc18@f9941.json b/headless/static/remote/battle/import/4f/4ff7df06-ccdc-4497-8332-fbf9b6abfc18@f9941.json new file mode 100644 index 00000000..fb0f6078 --- /dev/null +++ b/headless/static/remote/battle/import/4f/4ff7df06-ccdc-4497-8332-fbf9b6abfc18@f9941.json @@ -0,0 +1 @@ +[1,["4ff7df06-ccdc-4497-8332-fbf9b6abfc18@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"TX_hybz_0058","rect":{"x":13,"y":19,"width":172,"height":174},"offset":{"x":1.5,"y":-7},"originalSize":{"width":195,"height":198},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-86,-87,0,86,-87,0,-86,87,0,86,87,0],"indexes":[0,1,2,2,1,3],"uv":[13,179,185,179,13,5,185,5],"nuv":[0.06666666666666667,0.025252525252525252,0.9487179487179487,0.025252525252525252,0.06666666666666667,0.9040404040404041,0.9487179487179487,0.9040404040404041],"minPos":{"x":-86,"y":-87,"z":0},"maxPos":{"x":86,"y":87,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/52/52113c9e-1b63-4a9b-99f7-2e5758514f81.json b/headless/static/remote/battle/import/52/52113c9e-1b63-4a9b-99f7-2e5758514f81.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/52/52113c9e-1b63-4a9b-99f7-2e5758514f81.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/52/52113c9e-1b63-4a9b-99f7-2e5758514f81@f9941.json b/headless/static/remote/battle/import/52/52113c9e-1b63-4a9b-99f7-2e5758514f81@f9941.json new file mode 100644 index 00000000..975de205 --- /dev/null +++ b/headless/static/remote/battle/import/52/52113c9e-1b63-4a9b-99f7-2e5758514f81@f9941.json @@ -0,0 +1 @@ +[1,["52113c9e-1b63-4a9b-99f7-2e5758514f81@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"y_yan_shengli","rect":{"x":0,"y":0,"width":18,"height":7},"offset":{"x":0,"y":0},"originalSize":{"width":18,"height":7},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-9,-3.5,0,9,-3.5,0,-9,3.5,0,9,3.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,7,18,7,0,0,18,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-9,"y":-3.5,"z":0},"maxPos":{"x":9,"y":3.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/52/5248ee3e-c600-4b2b-b5d7-ccff7c9830c2.json b/headless/static/remote/battle/import/52/5248ee3e-c600-4b2b-b5d7-ccff7c9830c2.json new file mode 100644 index 00000000..bacc6716 --- /dev/null +++ b/headless/static/remote/battle/import/52/5248ee3e-c600-4b2b-b5d7-ccff7c9830c2.json @@ -0,0 +1 @@ +[1,0,0,[["cc.Asset",["_name","_native"],1]],[[0,0,1,3]],[[0,"buff_fire",".atlas"],-1],0,0,[],[],[]] diff --git a/headless/static/remote/battle/import/53/53167f35-e100-434f-b671-9abe0bc64531.json b/headless/static/remote/battle/import/53/53167f35-e100-434f-b671-9abe0bc64531.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/53/53167f35-e100-434f-b671-9abe0bc64531.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/53/53167f35-e100-434f-b671-9abe0bc64531@f9941.json b/headless/static/remote/battle/import/53/53167f35-e100-434f-b671-9abe0bc64531@f9941.json new file mode 100644 index 00000000..675b4dad --- /dev/null +++ b/headless/static/remote/battle/import/53/53167f35-e100-434f-b671-9abe0bc64531@f9941.json @@ -0,0 +1 @@ +[1,["53167f35-e100-434f-b671-9abe0bc64531@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 003","rect":{"x":1,"y":1,"width":56,"height":86},"offset":{"x":0,"y":0},"originalSize":{"width":58,"height":88},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-28,-43,0,28,-43,0,-28,43,0,28,43,0],"indexes":[0,1,2,2,1,3],"uv":[1,87,57,87,1,1,57,1],"nuv":[0.017241379310344827,0.011363636363636364,0.9827586206896551,0.011363636363636364,0.017241379310344827,0.9886363636363636,0.9827586206896551,0.9886363636363636],"minPos":{"x":-28,"y":-43,"z":0},"maxPos":{"x":28,"y":43,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/53/534a0232-a40c-453e-8a9e-f7001bc0ce73.json b/headless/static/remote/battle/import/53/534a0232-a40c-453e-8a9e-f7001bc0ce73.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/53/534a0232-a40c-453e-8a9e-f7001bc0ce73.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/53/534a0232-a40c-453e-8a9e-f7001bc0ce73@f9941.json b/headless/static/remote/battle/import/53/534a0232-a40c-453e-8a9e-f7001bc0ce73@f9941.json new file mode 100644 index 00000000..ea336229 --- /dev/null +++ b/headless/static/remote/battle/import/53/534a0232-a40c-453e-8a9e-f7001bc0ce73@f9941.json @@ -0,0 +1 @@ +[1,["534a0232-a40c-453e-8a9e-f7001bc0ce73@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"tx_baodian06","rect":{"x":0,"y":0,"width":50,"height":57},"offset":{"x":0,"y":21.5},"originalSize":{"width":50,"height":100},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-25,-28.5,0,25,-28.5,0,-25,28.5,0,25,28.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,100,50,100,0,43,50,43],"nuv":[0,0.43,1,0.43,0,1,1,1],"minPos":{"x":-25,"y":-28.5,"z":0},"maxPos":{"x":25,"y":28.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/54/54eddc0a-52cc-4235-ab55-0cb3810dcfd9.json b/headless/static/remote/battle/import/54/54eddc0a-52cc-4235-ab55-0cb3810dcfd9.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/54/54eddc0a-52cc-4235-ab55-0cb3810dcfd9.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/54/54eddc0a-52cc-4235-ab55-0cb3810dcfd9@f9941.json b/headless/static/remote/battle/import/54/54eddc0a-52cc-4235-ab55-0cb3810dcfd9@f9941.json new file mode 100644 index 00000000..5a037258 --- /dev/null +++ b/headless/static/remote/battle/import/54/54eddc0a-52cc-4235-ab55-0cb3810dcfd9@f9941.json @@ -0,0 +1 @@ +[1,["54eddc0a-52cc-4235-ab55-0cb3810dcfd9@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"guangyun","rect":{"x":0,"y":0,"width":22,"height":22},"offset":{"x":0,"y":0},"originalSize":{"width":22,"height":22},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-11,-11,0,11,-11,0,-11,11,0,11,11,0],"indexes":[0,1,2,2,1,3],"uv":[0,22,22,22,0,0,22,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-11,"y":-11,"z":0},"maxPos":{"x":11,"y":11,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/54/54f082ca-86ef-49c8-a33d-8f2ce95c8b57.json b/headless/static/remote/battle/import/54/54f082ca-86ef-49c8-a33d-8f2ce95c8b57.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/54/54f082ca-86ef-49c8-a33d-8f2ce95c8b57.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/54/54f082ca-86ef-49c8-a33d-8f2ce95c8b57@f9941.json b/headless/static/remote/battle/import/54/54f082ca-86ef-49c8-a33d-8f2ce95c8b57@f9941.json new file mode 100644 index 00000000..6e9c7438 --- /dev/null +++ b/headless/static/remote/battle/import/54/54f082ca-86ef-49c8-a33d-8f2ce95c8b57@f9941.json @@ -0,0 +1 @@ +[1,["54f082ca-86ef-49c8-a33d-8f2ce95c8b57@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"zhonzi","rect":{"x":0,"y":0,"width":61,"height":57},"offset":{"x":0,"y":0},"originalSize":{"width":61,"height":57},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-30.5,-28.5,0,30.5,-28.5,0,-30.5,28.5,0,30.5,28.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,57,61,57,0,0,61,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-30.5,"y":-28.5,"z":0},"maxPos":{"x":30.5,"y":28.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/55/55d7558e-5c18-49f7-a6e6-1b8c94037ecf.json b/headless/static/remote/battle/import/55/55d7558e-5c18-49f7-a6e6-1b8c94037ecf.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/55/55d7558e-5c18-49f7-a6e6-1b8c94037ecf.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/55/55d7558e-5c18-49f7-a6e6-1b8c94037ecf@f9941.json b/headless/static/remote/battle/import/55/55d7558e-5c18-49f7-a6e6-1b8c94037ecf@f9941.json new file mode 100644 index 00000000..55145d56 --- /dev/null +++ b/headless/static/remote/battle/import/55/55d7558e-5c18-49f7-a6e6-1b8c94037ecf@f9941.json @@ -0,0 +1 @@ +[1,["55d7558e-5c18-49f7-a6e6-1b8c94037ecf@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"atk_guangci3_0028","rect":{"x":4,"y":3,"width":28,"height":24},"offset":{"x":1,"y":-1.5},"originalSize":{"width":34,"height":27},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-14,-12,0,14,-12,0,-14,12,0,14,12,0],"indexes":[0,1,2,2,1,3],"uv":[4,24,32,24,4,0,32,0],"nuv":[0.11764705882352941,0,0.9411764705882353,0,0.11764705882352941,0.8888888888888888,0.9411764705882353,0.8888888888888888],"minPos":{"x":-14,"y":-12,"z":0},"maxPos":{"x":14,"y":12,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/56/5670f2a3-3ea4-4188-b34c-1ad1a40af86f.json b/headless/static/remote/battle/import/56/5670f2a3-3ea4-4188-b34c-1ad1a40af86f.json new file mode 100644 index 00000000..b4e72fef --- /dev/null +++ b/headless/static/remote/battle/import/56/5670f2a3-3ea4-4188-b34c-1ad1a40af86f.json @@ -0,0 +1 @@ +[1,["c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a@6c48a"],0,[["sp.SkeletonData",["_name","_atlasText","textureNames","_skeletonJson","textures"],-1,3]],[[0,0,1,2,3,4,5]],[[0,"zhouyu_skill2_2","\r\nzhouyu_skill2_2.png\r\nsize: 713,538\r\nformat: RGBA8888\r\nfilter: Linear,Linear\r\nrepeat: none\r\nef/4845-baozha2\r\n rotate: false\r\n xy: 82, 336\r\n size: 198, 200\r\n orig: 200, 200\r\n offset: 2, 0\r\n index: -1\r\nef/TX_hybz_0058\r\n rotate: false\r\n xy: 534, 185\r\n size: 167, 166\r\n orig: 195, 198\r\n offset: 16, 9\r\n index: -1\r\nef/TX_hybz_0060\r\n rotate: false\r\n xy: 534, 353\r\n size: 177, 183\r\n orig: 195, 198\r\n offset: 10, 4\r\n index: -1\r\nef/TX_hybz_0062\r\n rotate: false\r\n xy: 343, 157\r\n size: 179, 187\r\n orig: 195, 198\r\n offset: 8, 4\r\n index: -1\r\nef/TX_hybz_0064\r\n rotate: false\r\n xy: 153, 142\r\n size: 188, 192\r\n orig: 195, 198\r\n offset: 3, 5\r\n index: -1\r\nef/TX_hybz_0068\r\n rotate: true\r\n xy: 282, 346\r\n size: 190, 163\r\n orig: 195, 198\r\n offset: 4, 34\r\n index: -1\r\nef/TX_xsx_00000\r\n rotate: true\r\n xy: 81, 94\r\n size: 209, 70\r\n orig: 248, 87\r\n offset: 20, 9\r\n index: -1\r\nef/TX_xsx_00002\r\n rotate: false\r\n xy: 2, 2\r\n size: 217, 73\r\n orig: 248, 87\r\n offset: 15, 8\r\n index: -1\r\nef/TX_xsx_00004\r\n rotate: true\r\n xy: 2, 77\r\n size: 226, 77\r\n orig: 248, 87\r\n offset: 10, 5\r\n index: -1\r\nef/TX_xsx_00006\r\n rotate: true\r\n xy: 2, 305\r\n size: 231, 78\r\n orig: 248, 87\r\n offset: 8, 3\r\n index: -1\r\nef/baoguang\r\n rotate: true\r\n xy: 534, 54\r\n size: 129, 139\r\n orig: 150, 150\r\n offset: 12, 10\r\n index: -1\r\nef/gq2\r\n rotate: true\r\n xy: 391, 3\r\n size: 152, 141\r\n orig: 156, 156\r\n offset: 2, 2\r\n index: -1\r\nef/tx_baodian02\r\n rotate: true\r\n xy: 447, 443\r\n size: 44, 72\r\n orig: 50, 100\r\n offset: 2, 1\r\n index: -1\r\nef/tx_baodian03\r\n rotate: true\r\n xy: 447, 489\r\n size: 47, 78\r\n orig: 50, 100\r\n offset: 1, 11\r\n index: -1\r\nef/tx_baodian04\r\n rotate: true\r\n xy: 447, 392\r\n size: 49, 71\r\n orig: 50, 100\r\n offset: 1, 23\r\n index: -1\r\nef/tx_baodian05\r\n rotate: false\r\n xy: 153, 78\r\n size: 48, 62\r\n orig: 50, 100\r\n offset: 2, 35\r\n index: -1\r\nef/tx_baodian06\r\n rotate: true\r\n xy: 583, 4\r\n size: 48, 56\r\n orig: 50, 100\r\n offset: 2, 44\r\n index: -1\r\nef/tx_baodian07\r\n rotate: false\r\n xy: 447, 346\r\n size: 48, 44\r\n orig: 50, 100\r\n offset: 2, 56\r\n index: -1\r\nef/tx_baodian08\r\n rotate: true\r\n xy: 675, 137\r\n size: 46, 36\r\n orig: 50, 100\r\n offset: 1, 64\r\n index: -1\r\nef/tx_guangdiand1\r\n rotate: false\r\n xy: 534, 3\r\n size: 47, 49\r\n orig: 50, 50\r\n offset: 1, 0\r\n index: -1\r\nef/tx_quan4\r\n rotate: false\r\n xy: 221, 4\r\n size: 168, 136\r\n orig: 200, 200\r\n offset: 16, 37\r\n index: -1\r\n",["zhouyu_skill2_2.png"],{"skeleton":{"hash":"T7CjZ/AFg1v35PFZfkCihJzCPHo","spine":"3.8.75","images":"","audio":""},"bones":[{"name":"root"},{"name":"all","parent":"root"},{"name":"baoz","parent":"all"},{"name":"baoz2","parent":"all"},{"name":"baoz3","parent":"all"},{"name":"baoz4","parent":"all"},{"name":"baoz5","parent":"all"},{"name":"baoz6","parent":"all"},{"name":"baoz7","parent":"all"},{"name":"bd","parent":"all"},{"name":"bd2","parent":"all"},{"name":"d","parent":"all"},{"name":"d2","parent":"all"},{"name":"dags","parent":"all","x":150.4,"y":-55.03},{"name":"dd","parent":"all","x":150.4,"y":-55.03},{"name":"dd2","parent":"all","x":150.4,"y":-55.03},{"name":"dd3","parent":"all","x":150.4,"y":-55.03},{"name":"q","parent":"all"},{"name":"qq","parent":"all"},{"name":"qq2","parent":"all"},{"name":"qq3","parent":"all"},{"name":"quanx","parent":"all"}],"slots":[{"name":"ef/baoguang","bone":"d"},{"name":"ef/tx_quan4","bone":"q","blend":"additive"},{"name":"ef/tx_guangdiand1","bone":"dd"},{"name":"ef/tx_baodian01","bone":"baoz"},{"name":"ef/tx_baodian1","bone":"baoz2"},{"name":"ef/tx_baodian2","bone":"baoz3","blend":"additive"},{"name":"ef/tx_baodian3","bone":"baoz4"},{"name":"ef/tx_baodian4","bone":"baoz5","blend":"additive"},{"name":"ef/tx_baodian5","bone":"baoz6","blend":"additive"},{"name":"ef/tx_baodian6","bone":"baoz7","blend":"additive"},{"name":"ef/TX_hybz_0058","bone":"bd","blend":"additive"},{"name":"ef/TX_hybz_58","bone":"bd2","blend":"additive"},{"name":"ef/tx_guangdiand2","bone":"dd2","blend":"additive"},{"name":"ef/tx_guangdiand3","bone":"dd3","blend":"additive"},{"name":"ef/tx_guangdiand4","bone":"dags","blend":"additive"},{"name":"ef/gq2","bone":"qq","blend":"additive"},{"name":"ef/gq3","bone":"qq2","blend":"additive"},{"name":"ef/gq4","bone":"qq3","blend":"additive"},{"name":"ef/TX_xsx_00000","bone":"quanx","blend":"additive"},{"name":"ef/4845-baozha2","bone":"d2","blend":"additive"}],"skins":[{"name":"default","attachments":{"ef/tx_baodian01":{"ef/tx_baodian02":{"width":50,"height":100},"ef/tx_baodian03":{"width":50,"height":100},"ef/tx_baodian04":{"width":50,"height":100},"ef/tx_baodian05":{"width":50,"height":100},"ef/tx_baodian06":{"width":50,"height":100},"ef/tx_baodian07":{"width":50,"height":100},"ef/tx_baodian08":{"width":50,"height":100}},"ef/baoguang":{"ef/baoguang":{"width":150,"height":150}},"ef/tx_guangdiand3":{"ef/tx_guangdiand1":{"width":50,"height":50}},"ef/gq4":{"ef/gq2":{"width":156,"height":156}},"ef/TX_xsx_00000":{"ef/TX_xsx_00000":{"width":248,"height":87},"ef/TX_xsx_00002":{"width":248,"height":87},"ef/TX_xsx_00004":{"width":248,"height":87},"ef/TX_xsx_00006":{"width":248,"height":87}},"ef/gq2":{"ef/gq2":{"y":27.88,"rotation":180,"width":156,"height":156}},"ef/gq3":{"ef/gq2":{"width":156,"height":156}},"ef/tx_baodian1":{"ef/tx_baodian02":{"width":50,"height":100},"ef/tx_baodian03":{"width":50,"height":100},"ef/tx_baodian04":{"width":50,"height":100},"ef/tx_baodian05":{"width":50,"height":100},"ef/tx_baodian06":{"width":50,"height":100},"ef/tx_baodian07":{"width":50,"height":100},"ef/tx_baodian08":{"width":50,"height":100}},"ef/tx_baodian2":{"ef/tx_baodian02":{"width":50,"height":100},"ef/tx_baodian03":{"width":50,"height":100},"ef/tx_baodian04":{"width":50,"height":100},"ef/tx_baodian05":{"width":50,"height":100},"ef/tx_baodian06":{"width":50,"height":100},"ef/tx_baodian07":{"width":50,"height":100},"ef/tx_baodian08":{"width":50,"height":100}},"ef/tx_guangdiand1":{"ef/tx_guangdiand1":{"width":50,"height":50}},"ef/tx_baodian4":{"ef/tx_baodian02":{"width":50,"height":100},"ef/tx_baodian03":{"width":50,"height":100},"ef/tx_baodian04":{"width":50,"height":100},"ef/tx_baodian05":{"width":50,"height":100},"ef/tx_baodian06":{"width":50,"height":100},"ef/tx_baodian07":{"width":50,"height":100},"ef/tx_baodian08":{"width":50,"height":100}},"ef/tx_baodian3":{"ef/tx_baodian02":{"width":50,"height":100},"ef/tx_baodian03":{"width":50,"height":100},"ef/tx_baodian04":{"width":50,"height":100},"ef/tx_baodian05":{"width":50,"height":100},"ef/tx_baodian06":{"width":50,"height":100},"ef/tx_baodian07":{"width":50,"height":100},"ef/tx_baodian08":{"width":50,"height":100}},"ef/tx_baodian6":{"ef/tx_baodian02":{"width":50,"height":100},"ef/tx_baodian03":{"width":50,"height":100},"ef/tx_baodian04":{"width":50,"height":100},"ef/tx_baodian05":{"width":50,"height":100},"ef/tx_baodian06":{"width":50,"height":100},"ef/tx_baodian07":{"width":50,"height":100},"ef/tx_baodian08":{"width":50,"height":100}},"ef/tx_baodian5":{"ef/tx_baodian02":{"width":50,"height":100},"ef/tx_baodian03":{"width":50,"height":100},"ef/tx_baodian04":{"width":50,"height":100},"ef/tx_baodian05":{"width":50,"height":100},"ef/tx_baodian06":{"width":50,"height":100},"ef/tx_baodian07":{"width":50,"height":100},"ef/tx_baodian08":{"width":50,"height":100}},"ef/4845-baozha2":{"ef/4845-baozha2":{"width":200,"height":200}},"ef/TX_hybz_58":{"ef/TX_hybz_0058":{"width":195,"height":198},"ef/TX_hybz_0060":{"width":195,"height":198},"ef/TX_hybz_0062":{"width":195,"height":198},"ef/TX_hybz_0064":{"width":195,"height":198},"ef/TX_hybz_0068":{"width":195,"height":198}},"ef/tx_guangdiand4":{"ef/tx_guangdiand1":{"width":50,"height":50}},"ef/tx_guangdiand2":{"ef/tx_guangdiand1":{"width":50,"height":50}},"ef/tx_quan4":{"ef/tx_quan4":{"width":200,"height":200}},"ef/TX_hybz_0058":{"ef/TX_hybz_0058":{"width":195,"height":198},"ef/TX_hybz_0060":{"width":195,"height":198},"ef/TX_hybz_0062":{"width":195,"height":198},"ef/TX_hybz_0064":{"width":195,"height":198},"ef/TX_hybz_0068":{"width":195,"height":198}}}}],"animations":{"animation":{"slots":{"ef/TX_hybz_58":{"attachment":[{"name":null},{"time":0.2,"name":"ef/TX_hybz_0058"},{"time":0.3333,"name":"ef/TX_hybz_0060"},{"time":0.5,"name":"ef/TX_hybz_0062"},{"time":0.6333,"name":"ef/TX_hybz_0064"},{"time":0.7667,"name":"ef/TX_hybz_0068"},{"time":0.9,"name":null}]},"ef/TX_xsx_00000":{"attachment":[{"name":null},{"time":0.2,"name":"ef/TX_xsx_00000"},{"time":0.3333,"name":"ef/TX_xsx_00002"},{"time":0.5,"name":"ef/TX_xsx_00004"},{"time":0.6333,"name":"ef/TX_xsx_00006"},{"time":0.7667,"name":null}]},"ef/tx_guangdiand3":{"attachment":[{"name":null},{"time":0.0667,"name":"ef/tx_guangdiand1"},{"time":0.7,"name":null}]},"ef/tx_guangdiand4":{"color":[{"color":"ffffffff","curve":"stepped"},{"time":0.2667,"color":"ffffffff"},{"time":0.7667,"color":"ff560000"}],"attachment":[{"name":null},{"time":0.0667,"name":"ef/tx_guangdiand1"}]},"ef/baoguang":{"color":[{"color":"ffffffff","curve":"stepped"},{"time":0.6333,"color":"ffffffff"},{"time":0.8333,"color":"ff370000"}],"attachment":[{"name":null},{"time":0.0667,"name":"ef/baoguang"}]},"ef/tx_guangdiand2":{"attachment":[{"name":null},{"time":0.0667,"name":"ef/tx_guangdiand1"},{"time":0.7667,"name":null}]},"ef/tx_baodian2":{"attachment":[{"name":null},{"time":0.1333,"name":"ef/tx_baodian02"},{"time":0.2,"name":"ef/tx_baodian03"},{"time":0.3333,"name":"ef/tx_baodian04"},{"time":0.4333,"name":"ef/tx_baodian05"},{"time":0.5667,"name":"ef/tx_baodian06"},{"time":0.6333,"name":"ef/tx_baodian07"},{"time":0.7,"name":"ef/tx_baodian08"},{"time":0.8333,"name":null}]},"ef/tx_baodian1":{"attachment":[{"name":null},{"time":0.1333,"name":"ef/tx_baodian02"},{"time":0.2,"name":"ef/tx_baodian03"},{"time":0.3333,"name":"ef/tx_baodian04"},{"time":0.4333,"name":"ef/tx_baodian05"},{"time":0.5667,"name":"ef/tx_baodian06"},{"time":0.6333,"name":"ef/tx_baodian07"},{"time":0.7,"name":"ef/tx_baodian08"},{"time":0.8333,"name":null}]},"ef/tx_baodian5":{"attachment":[{"name":null},{"time":0.2667,"name":"ef/tx_baodian02"},{"time":0.3333,"name":"ef/tx_baodian03"},{"time":0.4333,"name":"ef/tx_baodian04"},{"time":0.5,"name":"ef/tx_baodian05"},{"time":0.5667,"name":"ef/tx_baodian06"},{"time":0.6333,"name":"ef/tx_baodian07"},{"time":0.7,"name":"ef/tx_baodian08"},{"time":0.7667,"name":null}]},"ef/gq4":{"color":[{"color":"ffffffff","curve":"stepped"},{"time":0.4333,"color":"ffffffff"},{"time":0.9,"color":"ff000400"}],"attachment":[{"name":null},{"time":0.0667,"name":"ef/gq2"}]},"ef/tx_baodian4":{"attachment":[{"name":null},{"time":0.1333,"name":"ef/tx_baodian02"},{"time":0.2,"name":"ef/tx_baodian03"},{"time":0.3333,"name":"ef/tx_baodian04"},{"time":0.4333,"name":"ef/tx_baodian05"},{"time":0.5667,"name":"ef/tx_baodian06"},{"time":0.6333,"name":"ef/tx_baodian07"},{"time":0.7,"name":"ef/tx_baodian08"},{"time":0.8333,"name":null}]},"ef/tx_baodian01":{"attachment":[{"name":null},{"time":0.1333,"name":"ef/tx_baodian02"},{"time":0.2,"name":"ef/tx_baodian03"},{"time":0.3333,"name":"ef/tx_baodian04"},{"time":0.4333,"name":"ef/tx_baodian05"},{"time":0.5667,"name":"ef/tx_baodian06"},{"time":0.6333,"name":"ef/tx_baodian07"},{"time":0.7,"name":"ef/tx_baodian08"},{"time":0.8333,"name":null}]},"ef/tx_baodian6":{"attachment":[{"name":null},{"time":0.2667,"name":"ef/tx_baodian02"},{"time":0.3333,"name":"ef/tx_baodian03"},{"time":0.4333,"name":"ef/tx_baodian04"},{"time":0.5,"name":"ef/tx_baodian05"},{"time":0.5667,"name":"ef/tx_baodian06"},{"time":0.6333,"name":"ef/tx_baodian07"},{"time":0.7,"name":"ef/tx_baodian08"},{"time":0.7667,"name":null}]},"ef/4845-baozha2":{"color":[{"color":"ffffffff","curve":"stepped"},{"time":0.7,"color":"ffffffff"},{"time":0.9,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.2,"name":"ef/4845-baozha2"}]},"ef/tx_guangdiand1":{"color":[{"color":"ffffffff","curve":"stepped"},{"time":0.0667,"color":"ffffffff"},{"time":0.3333,"color":"ffa734ff"},{"time":0.7667,"color":"ff430000"}],"attachment":[{"name":null},{"time":0.0667,"name":"ef/tx_guangdiand1"}]},"ef/tx_baodian3":{"attachment":[{"name":null},{"time":0.1333,"name":"ef/tx_baodian02"},{"time":0.2,"name":"ef/tx_baodian03"},{"time":0.3333,"name":"ef/tx_baodian04"},{"time":0.4333,"name":"ef/tx_baodian05"},{"time":0.5667,"name":"ef/tx_baodian06"},{"time":0.6333,"name":"ef/tx_baodian07"},{"time":0.7,"name":"ef/tx_baodian08"},{"time":0.8333,"name":null}]},"ef/TX_hybz_0058":{"attachment":[{"name":null},{"time":0.2,"name":"ef/TX_hybz_0058"},{"time":0.3333,"name":"ef/TX_hybz_0060"},{"time":0.5,"name":"ef/TX_hybz_0062"},{"time":0.6333,"name":"ef/TX_hybz_0064"},{"time":0.7667,"name":"ef/TX_hybz_0068"},{"time":0.9,"name":null}]},"ef/gq3":{"color":[{"color":"ffffffff","curve":"stepped"},{"time":0.3333,"color":"ffffffff"},{"time":0.7,"color":"ff000400"}],"attachment":[{"name":null},{"time":0.0667,"name":"ef/gq2"}]},"ef/gq2":{"color":[{"color":"ffffffff","curve":"stepped"},{"time":0.5667,"color":"ffffffff"},{"time":0.9,"color":"ff002800"}],"attachment":[{"name":null},{"time":0.0667,"name":"ef/gq2"}]},"ef/tx_quan4":{"color":[{"color":"ffffffff","curve":"stepped"},{"time":0.7,"color":"ffffffff"},{"time":0.9,"color":"ff830000"}],"attachment":[{"name":null},{"time":0.0667,"name":"ef/tx_quan4"}]}},"bones":{"d2":{"rotate":[{}],"translate":[{},{"time":0.2,"x":5.37,"y":-34.01}],"scale":[{},{"time":0.2,"x":2.17,"y":0.888},{"time":0.5667,"x":3.751,"y":1.535}]},"bd":{"rotate":[{},{"time":0.2,"angle":-27.85}],"translate":[{},{"time":0.2,"x":79.48,"y":48.56}],"scale":[{},{"time":0.2,"x":1.488,"y":1.411}]},"bd2":{"rotate":[{},{"time":0.2,"angle":46.68}],"translate":[{},{"time":0.2,"x":-89.51,"y":21.48}],"scale":[{"curve":"stepped"},{"time":0.2}]},"quanx":{"rotate":[{}],"translate":[{},{"time":0.2,"x":3.58,"y":10.74},{"time":0.6333,"x":1.79,"y":51.91}],"scale":[{},{"time":0.2,"x":2.013,"y":2.013},{"time":0.6333,"x":2.208,"y":2.208}]},"d":{"rotate":[{}],"translate":[{},{"time":0.0667,"x":5.37,"y":-32.22}],"scale":[{"curve":"stepped"},{"time":0.0667},{"time":0.3333,"x":5.501,"y":2.35}]},"qq":{"rotate":[{}],"translate":[{},{"time":0.0667,"x":-2.34,"y":-25.7}],"scale":[{},{"time":0.0667,"x":1.129,"y":1.129},{"time":0.9,"x":3.724,"y":2.724}]},"qq2":{"rotate":[{}],"translate":[{}],"scale":[{},{"time":0.0667,"x":0.859,"y":0.384},{"time":0.7,"x":5.669,"y":2.535}]},"qq3":{"rotate":[{}],"translate":[{}],"scale":[{},{"time":0.0667,"x":0.859,"y":0.384},{"time":0.9,"x":5.669,"y":2.535}]},"baoz":{"rotate":[{},{"time":0.1333,"angle":107.59}],"translate":[{},{"time":0.1333,"x":-56.1,"y":-46.2}],"scale":[{},{"time":0.1333,"x":-1.074,"y":1.592}]},"baoz2":{"rotate":[{},{"time":0.1333,"angle":-81.63}],"translate":[{},{"time":0.1333,"x":132,"y":-31.35}],"scale":[{},{"time":0.1333,"x":-1.439,"y":2.003}]},"baoz3":{"rotate":[{},{"time":0.1333,"angle":-90.27}],"translate":[{},{"time":0.1333,"x":77.55,"y":-41.25}],"scale":[{}]},"baoz4":{"rotate":[{},{"time":0.1333,"angle":171.08}],"translate":[{},{"time":0.1333,"x":-19.8,"y":-112.2}],"scale":[{},{"time":0.1333,"x":2.045,"y":2.045}]},"baoz5":{"rotate":[{},{"time":0.1333,"angle":93.26}],"translate":[{},{"time":0.1333,"x":-158.4,"y":-42.9}],"scale":[{},{"time":0.1333,"x":2.144,"y":2.144}]},"baoz6":{"rotate":[{},{"time":0.2667,"angle":38.82}],"translate":[{},{"time":0.2667,"x":-91.29,"y":82.34}],"scale":[{},{"time":0.2667,"x":2.266,"y":2.266}]},"baoz7":{"rotate":[{},{"time":0.2667,"angle":-25.3}],"translate":[{},{"time":0.2667,"x":42.96,"y":112.77}],"scale":[{},{"time":0.2667,"x":-2.02,"y":2.811}]},"dd":{"rotate":[{}],"translate":[{},{"time":0.0667,"x":-122.73,"y":72.08}],"scale":[{},{"time":0.0667,"x":6.398,"y":6.398},{"time":0.7667,"x":14.243,"y":14.243}]},"dd2":{"rotate":[{},{"time":0.0667,"angle":68.23}],"translate":[{},{"time":0.0667,"x":-146.85,"y":23.1}],"scale":[{},{"time":0.0667,"x":5.247,"y":4.34},{"time":0.7,"x":13.867,"y":0.01}]},"dd3":{"rotate":[{}],"translate":[{},{"time":0.0667,"x":-135.3,"y":24.75}],"scale":[{},{"time":0.0667,"x":4.879,"y":4.557},{"time":0.6333,"x":21.58,"y":0.01}]},"dags":{"rotate":[{}],"translate":[{},{"time":0.0667,"x":-135.3,"y":52.8},{"time":0.7667,"x":-146.85,"y":34.65}],"scale":[{},{"time":0.0667,"x":7.213,"y":7.213},{"time":0.7667,"x":9.355,"y":9.355}]},"q":{"rotate":[{}],"translate":[{},{"time":0.0667,"x":3.58,"y":-3.58}],"scale":[{},{"time":0.0667,"x":0.794,"y":0.316,"curve":0.193,"c2":0.58,"c3":0.75},{"time":0.9,"x":3.201,"y":1.39}]},"all":{"translate":[{"y":30.49}]}}}}},[0]]],0,0,[0],[-1],[0]] diff --git a/headless/static/remote/battle/import/57/57f8d466-d380-40b5-8241-4c6529053817.json b/headless/static/remote/battle/import/57/57f8d466-d380-40b5-8241-4c6529053817.json new file mode 100644 index 00000000..76618406 --- /dev/null +++ b/headless/static/remote/battle/import/57/57f8d466-d380-40b5-8241-4c6529053817.json @@ -0,0 +1 @@ +[1,0,0,[["cc.Asset",["_name","_native"],1]],[[0,0,1,3]],[[0,"guaiA1a",".atlas"],-1],0,0,[],[],[]] diff --git a/headless/static/remote/battle/import/58/5828e8e7-d037-46d8-a9af-63a11ae7349e.json b/headless/static/remote/battle/import/58/5828e8e7-d037-46d8-a9af-63a11ae7349e.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/58/5828e8e7-d037-46d8-a9af-63a11ae7349e.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/58/5828e8e7-d037-46d8-a9af-63a11ae7349e@f9941.json b/headless/static/remote/battle/import/58/5828e8e7-d037-46d8-a9af-63a11ae7349e@f9941.json new file mode 100644 index 00000000..720d89a5 --- /dev/null +++ b/headless/static/remote/battle/import/58/5828e8e7-d037-46d8-a9af-63a11ae7349e@f9941.json @@ -0,0 +1 @@ +[1,["5828e8e7-d037-46d8-a9af-63a11ae7349e@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"baozha0004","rect":{"x":14,"y":14,"width":174,"height":158},"offset":{"x":1,"y":-0.5},"originalSize":{"width":200,"height":185},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-87,-79,0,87,-79,0,-87,79,0,87,79,0],"indexes":[0,1,2,2,1,3],"uv":[14,171,188,171,14,13,188,13],"nuv":[0.07,0.07027027027027027,0.94,0.07027027027027027,0.07,0.9243243243243243,0.94,0.9243243243243243],"minPos":{"x":-87,"y":-79,"z":0},"maxPos":{"x":87,"y":79,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/58/583d2b42-0dc8-4b0c-af5e-b239374eed59.json b/headless/static/remote/battle/import/58/583d2b42-0dc8-4b0c-af5e-b239374eed59.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/58/583d2b42-0dc8-4b0c-af5e-b239374eed59.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/58/583d2b42-0dc8-4b0c-af5e-b239374eed59@f9941.json b/headless/static/remote/battle/import/58/583d2b42-0dc8-4b0c-af5e-b239374eed59@f9941.json new file mode 100644 index 00000000..70d9c1d3 --- /dev/null +++ b/headless/static/remote/battle/import/58/583d2b42-0dc8-4b0c-af5e-b239374eed59@f9941.json @@ -0,0 +1 @@ +[1,["583d2b42-0dc8-4b0c-af5e-b239374eed59@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"daoguang_red","rect":{"x":0,"y":0,"width":19,"height":73},"offset":{"x":0,"y":0},"originalSize":{"width":19,"height":73},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-9.5,-36.5,0,9.5,-36.5,0,-9.5,36.5,0,9.5,36.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,73,19,73,0,0,19,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-9.5,"y":-36.5,"z":0},"maxPos":{"x":9.5,"y":36.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/58/58d32a22-c07f-4708-8abb-f39006bac8a9.json b/headless/static/remote/battle/import/58/58d32a22-c07f-4708-8abb-f39006bac8a9.json new file mode 100644 index 00000000..4a7fc451 --- /dev/null +++ b/headless/static/remote/battle/import/58/58d32a22-c07f-4708-8abb-f39006bac8a9.json @@ -0,0 +1 @@ +[1,0,0,[["cc.Asset",["_name","_native"],1]],[[0,0,1,3]],[[0,"001妙蛙种子",".atlas"],-1],0,0,[],[],[]] diff --git a/headless/static/remote/battle/import/5a/5a77fe9d-52fd-4df5-ab08-e2766930e4f8.json b/headless/static/remote/battle/import/5a/5a77fe9d-52fd-4df5-ab08-e2766930e4f8.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/5a/5a77fe9d-52fd-4df5-ab08-e2766930e4f8.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/5a/5a77fe9d-52fd-4df5-ab08-e2766930e4f8@f9941.json b/headless/static/remote/battle/import/5a/5a77fe9d-52fd-4df5-ab08-e2766930e4f8@f9941.json new file mode 100644 index 00000000..839ecaec --- /dev/null +++ b/headless/static/remote/battle/import/5a/5a77fe9d-52fd-4df5-ab08-e2766930e4f8@f9941.json @@ -0,0 +1 @@ +[1,["5a77fe9d-52fd-4df5-ab08-e2766930e4f8@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"y_qiantui","rect":{"x":0,"y":0,"width":26,"height":34},"offset":{"x":0,"y":0},"originalSize":{"width":26,"height":34},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-13,-17,0,13,-17,0,-13,17,0,13,17,0],"indexes":[0,1,2,2,1,3],"uv":[0,34,26,34,0,0,26,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-13,"y":-17,"z":0},"maxPos":{"x":13,"y":17,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/5c/5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb.json b/headless/static/remote/battle/import/5c/5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/5c/5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/5c/5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb@f9941.json b/headless/static/remote/battle/import/5c/5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb@f9941.json new file mode 100644 index 00000000..04421114 --- /dev/null +++ b/headless/static/remote/battle/import/5c/5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb@f9941.json @@ -0,0 +1 @@ +[1,["5cb48bcf-9b7c-4621-9557-b6fcf69dfbbb@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 010","rect":{"x":1,"y":1,"width":75,"height":94},"offset":{"x":0,"y":0},"originalSize":{"width":77,"height":96},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-37.5,-47,0,37.5,-47,0,-37.5,47,0,37.5,47,0],"indexes":[0,1,2,2,1,3],"uv":[1,95,76,95,1,1,76,1],"nuv":[0.012987012987012988,0.010416666666666666,0.987012987012987,0.010416666666666666,0.012987012987012988,0.9895833333333334,0.987012987012987,0.9895833333333334],"minPos":{"x":-37.5,"y":-47,"z":0},"maxPos":{"x":37.5,"y":47,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/5d/5d81ab0f-18b9-49af-85f9-59f540e14208.json b/headless/static/remote/battle/import/5d/5d81ab0f-18b9-49af-85f9-59f540e14208.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/5d/5d81ab0f-18b9-49af-85f9-59f540e14208.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/5d/5d81ab0f-18b9-49af-85f9-59f540e14208@f9941.json b/headless/static/remote/battle/import/5d/5d81ab0f-18b9-49af-85f9-59f540e14208@f9941.json new file mode 100644 index 00000000..11b033da --- /dev/null +++ b/headless/static/remote/battle/import/5d/5d81ab0f-18b9-49af-85f9-59f540e14208@f9941.json @@ -0,0 +1 @@ +[1,["5d81ab0f-18b9-49af-85f9-59f540e14208@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"Energy 007 Impact Radial_00015","rect":{"x":4,"y":5,"width":24,"height":25},"offset":{"x":-0.5,"y":-1},"originalSize":{"width":33,"height":33},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-12,-12.5,0,12,-12.5,0,-12,12.5,0,12,12.5,0],"indexes":[0,1,2,2,1,3],"uv":[4,28,28,28,4,3,28,3],"nuv":[0.12121212121212122,0.09090909090909091,0.8484848484848485,0.09090909090909091,0.12121212121212122,0.8484848484848485,0.8484848484848485,0.8484848484848485],"minPos":{"x":-12,"y":-12.5,"z":0},"maxPos":{"x":12,"y":12.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/5f/5f7d151d-78bc-4738-b3eb-325440ea5f24.json b/headless/static/remote/battle/import/5f/5f7d151d-78bc-4738-b3eb-325440ea5f24.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/5f/5f7d151d-78bc-4738-b3eb-325440ea5f24.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/5f/5f7d151d-78bc-4738-b3eb-325440ea5f24@f9941.json b/headless/static/remote/battle/import/5f/5f7d151d-78bc-4738-b3eb-325440ea5f24@f9941.json new file mode 100644 index 00000000..22562a31 --- /dev/null +++ b/headless/static/remote/battle/import/5f/5f7d151d-78bc-4738-b3eb-325440ea5f24@f9941.json @@ -0,0 +1 @@ +[1,["5f7d151d-78bc-4738-b3eb-325440ea5f24@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"TX_hybz_0064","rect":{"x":1,"y":0,"width":192,"height":196},"offset":{"x":-0.5,"y":1},"originalSize":{"width":195,"height":198},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-96,-98,0,96,-98,0,-96,98,0,96,98,0],"indexes":[0,1,2,2,1,3],"uv":[1,198,193,198,1,2,193,2],"nuv":[0.005128205128205128,0.010101010101010102,0.9897435897435898,0.010101010101010102,0.005128205128205128,1,0.9897435897435898,1],"minPos":{"x":-96,"y":-98,"z":0},"maxPos":{"x":96,"y":98,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/62/625edf63-d447-4c41-a5de-74e7f1e79514.json b/headless/static/remote/battle/import/62/625edf63-d447-4c41-a5de-74e7f1e79514.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/62/625edf63-d447-4c41-a5de-74e7f1e79514.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/62/625edf63-d447-4c41-a5de-74e7f1e79514@f9941.json b/headless/static/remote/battle/import/62/625edf63-d447-4c41-a5de-74e7f1e79514@f9941.json new file mode 100644 index 00000000..66e0fa4f --- /dev/null +++ b/headless/static/remote/battle/import/62/625edf63-d447-4c41-a5de-74e7f1e79514@f9941.json @@ -0,0 +1 @@ +[1,["625edf63-d447-4c41-a5de-74e7f1e79514@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"shuyefaguang","rect":{"x":0,"y":0,"width":37,"height":44},"offset":{"x":-0.5,"y":0},"originalSize":{"width":38,"height":44},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-18.5,-22,0,18.5,-22,0,-18.5,22,0,18.5,22,0],"indexes":[0,1,2,2,1,3],"uv":[0,44,37,44,0,0,37,0],"nuv":[0,0,0.9736842105263158,0,0,1,0.9736842105263158,1],"minPos":{"x":-18.5,"y":-22,"z":0},"maxPos":{"x":18.5,"y":22,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/65/656a4136-154e-4a01-84ed-418fd085386a.json b/headless/static/remote/battle/import/65/656a4136-154e-4a01-84ed-418fd085386a.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/65/656a4136-154e-4a01-84ed-418fd085386a.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/65/656a4136-154e-4a01-84ed-418fd085386a@f9941.json b/headless/static/remote/battle/import/65/656a4136-154e-4a01-84ed-418fd085386a@f9941.json new file mode 100644 index 00000000..97e2ac24 --- /dev/null +++ b/headless/static/remote/battle/import/65/656a4136-154e-4a01-84ed-418fd085386a@f9941.json @@ -0,0 +1 @@ +[1,["656a4136-154e-4a01-84ed-418fd085386a@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"TX_xsx_00000","rect":{"x":17,"y":6,"width":215,"height":75},"offset":{"x":0.5,"y":0},"originalSize":{"width":248,"height":87},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-107.5,-37.5,0,107.5,-37.5,0,-107.5,37.5,0,107.5,37.5,0],"indexes":[0,1,2,2,1,3],"uv":[17,81,232,81,17,6,232,6],"nuv":[0.06854838709677419,0.06896551724137931,0.9354838709677419,0.06896551724137931,0.06854838709677419,0.9310344827586207,0.9354838709677419,0.9310344827586207],"minPos":{"x":-107.5,"y":-37.5,"z":0},"maxPos":{"x":107.5,"y":37.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/65/65c10712-318d-4ecf-8253-a91a90dbc1e8.json b/headless/static/remote/battle/import/65/65c10712-318d-4ecf-8253-a91a90dbc1e8.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/65/65c10712-318d-4ecf-8253-a91a90dbc1e8.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/65/65c10712-318d-4ecf-8253-a91a90dbc1e8@f9941.json b/headless/static/remote/battle/import/65/65c10712-318d-4ecf-8253-a91a90dbc1e8@f9941.json new file mode 100644 index 00000000..275be965 --- /dev/null +++ b/headless/static/remote/battle/import/65/65c10712-318d-4ecf-8253-a91a90dbc1e8@f9941.json @@ -0,0 +1 @@ +[1,["65c10712-318d-4ecf-8253-a91a90dbc1e8@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 004","rect":{"x":1,"y":1,"width":75,"height":94},"offset":{"x":0,"y":0},"originalSize":{"width":77,"height":96},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-37.5,-47,0,37.5,-47,0,-37.5,47,0,37.5,47,0],"indexes":[0,1,2,2,1,3],"uv":[1,95,76,95,1,1,76,1],"nuv":[0.012987012987012988,0.010416666666666666,0.987012987012987,0.010416666666666666,0.012987012987012988,0.9895833333333334,0.987012987012987,0.9895833333333334],"minPos":{"x":-37.5,"y":-47,"z":0},"maxPos":{"x":37.5,"y":47,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/66/660ed781-d7e7-4630-81c0-67ebaaccc124.json b/headless/static/remote/battle/import/66/660ed781-d7e7-4630-81c0-67ebaaccc124.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/66/660ed781-d7e7-4630-81c0-67ebaaccc124.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/66/660ed781-d7e7-4630-81c0-67ebaaccc124@f9941.json b/headless/static/remote/battle/import/66/660ed781-d7e7-4630-81c0-67ebaaccc124@f9941.json new file mode 100644 index 00000000..2d28947f --- /dev/null +++ b/headless/static/remote/battle/import/66/660ed781-d7e7-4630-81c0-67ebaaccc124@f9941.json @@ -0,0 +1 @@ +[1,["660ed781-d7e7-4630-81c0-67ebaaccc124@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 005","rect":{"x":1,"y":1,"width":60,"height":60},"offset":{"x":0,"y":0},"originalSize":{"width":62,"height":62},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-30,-30,0,30,-30,0,-30,30,0,30,30,0],"indexes":[0,1,2,2,1,3],"uv":[1,61,61,61,1,1,61,1],"nuv":[0.016129032258064516,0.016129032258064516,0.9838709677419355,0.016129032258064516,0.016129032258064516,0.9838709677419355,0.9838709677419355,0.9838709677419355],"minPos":{"x":-30,"y":-30,"z":0},"maxPos":{"x":30,"y":30,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/67/679bbb50-f1d5-4ac9-85f1-8aca77b0ca06.json b/headless/static/remote/battle/import/67/679bbb50-f1d5-4ac9-85f1-8aca77b0ca06.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/67/679bbb50-f1d5-4ac9-85f1-8aca77b0ca06.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/67/679bbb50-f1d5-4ac9-85f1-8aca77b0ca06@f9941.json b/headless/static/remote/battle/import/67/679bbb50-f1d5-4ac9-85f1-8aca77b0ca06@f9941.json new file mode 100644 index 00000000..757da632 --- /dev/null +++ b/headless/static/remote/battle/import/67/679bbb50-f1d5-4ac9-85f1-8aca77b0ca06@f9941.json @@ -0,0 +1 @@ +[1,["679bbb50-f1d5-4ac9-85f1-8aca77b0ca06@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 011","rect":{"x":1,"y":1,"width":72,"height":81},"offset":{"x":0,"y":0},"originalSize":{"width":74,"height":83},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-36,-40.5,0,36,-40.5,0,-36,40.5,0,36,40.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,82,73,82,1,1,73,1],"nuv":[0.013513513513513514,0.012048192771084338,0.9864864864864865,0.012048192771084338,0.013513513513513514,0.9879518072289156,0.9864864864864865,0.9879518072289156],"minPos":{"x":-36,"y":-40.5,"z":0},"maxPos":{"x":36,"y":40.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/68/68dac8a9-ca70-44f4-b4d6-f0c2a7649d82.json b/headless/static/remote/battle/import/68/68dac8a9-ca70-44f4-b4d6-f0c2a7649d82.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/68/68dac8a9-ca70-44f4-b4d6-f0c2a7649d82.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/68/68dac8a9-ca70-44f4-b4d6-f0c2a7649d82@f9941.json b/headless/static/remote/battle/import/68/68dac8a9-ca70-44f4-b4d6-f0c2a7649d82@f9941.json new file mode 100644 index 00000000..665d15de --- /dev/null +++ b/headless/static/remote/battle/import/68/68dac8a9-ca70-44f4-b4d6-f0c2a7649d82@f9941.json @@ -0,0 +1 @@ +[1,["68dac8a9-ca70-44f4-b4d6-f0c2a7649d82@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"z_bianzi2_bz_liuguang","rect":{"x":1,"y":0,"width":23,"height":16},"offset":{"x":-1,"y":0},"originalSize":{"width":27,"height":16},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-11.5,-8,0,11.5,-8,0,-11.5,8,0,11.5,8,0],"indexes":[0,1,2,2,1,3],"uv":[1,16,24,16,1,0,24,0],"nuv":[0.037037037037037035,0,0.8888888888888888,0,0.037037037037037035,1,0.8888888888888888,1],"minPos":{"x":-11.5,"y":-8,"z":0},"maxPos":{"x":11.5,"y":8,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/68/68dd7e1f-0996-4ac8-9b45-cb68975d7236.json b/headless/static/remote/battle/import/68/68dd7e1f-0996-4ac8-9b45-cb68975d7236.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/68/68dd7e1f-0996-4ac8-9b45-cb68975d7236.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/68/68dd7e1f-0996-4ac8-9b45-cb68975d7236@f9941.json b/headless/static/remote/battle/import/68/68dd7e1f-0996-4ac8-9b45-cb68975d7236@f9941.json new file mode 100644 index 00000000..237a0b2b --- /dev/null +++ b/headless/static/remote/battle/import/68/68dd7e1f-0996-4ac8-9b45-cb68975d7236@f9941.json @@ -0,0 +1 @@ +[1,["68dd7e1f-0996-4ac8-9b45-cb68975d7236@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 005","rect":{"x":1,"y":1,"width":60,"height":60},"offset":{"x":0,"y":0},"originalSize":{"width":62,"height":62},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-30,-30,0,30,-30,0,-30,30,0,30,30,0],"indexes":[0,1,2,2,1,3],"uv":[1,61,61,61,1,1,61,1],"nuv":[0.016129032258064516,0.016129032258064516,0.9838709677419355,0.016129032258064516,0.016129032258064516,0.9838709677419355,0.9838709677419355,0.9838709677419355],"minPos":{"x":-30,"y":-30,"z":0},"maxPos":{"x":30,"y":30,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/6b/6bea3dd7-ad6a-4cd3-a04e-99376e7dd9a2.json b/headless/static/remote/battle/import/6b/6bea3dd7-ad6a-4cd3-a04e-99376e7dd9a2.json new file mode 100644 index 00000000..26847243 --- /dev/null +++ b/headless/static/remote/battle/import/6b/6bea3dd7-ad6a-4cd3-a04e-99376e7dd9a2.json @@ -0,0 +1 @@ +[1,["22c36f69-c892-4a5a-a3bb-1d5fb4bd5b68@6c48a"],0,[["sp.SkeletonData",["_name","_atlasText","textureNames","_skeletonJson","textures"],-1,3]],[[0,0,1,2,3,4,5]],[[0,"shouji_01","\r\nshouji_01.png\r\nsize: 610,317\r\nformat: RGBA8888\r\nfilter: Linear,Linear\r\nrepeat: none\r\nbaozha0001\r\n rotate: true\r\n xy: 2, 22\r\n size: 117, 149\r\n orig: 200, 185\r\n offset: 53, 18\r\n index: -1\r\nbaozha0002\r\n rotate: true\r\n xy: 2, 141\r\n size: 174, 166\r\n orig: 200, 185\r\n offset: 13, 10\r\n index: -1\r\nbaozha0003\r\n rotate: false\r\n xy: 170, 152\r\n size: 176, 163\r\n orig: 200, 185\r\n offset: 13, 10\r\n index: -1\r\nbaozha0004\r\n rotate: false\r\n xy: 348, 157\r\n size: 174, 158\r\n orig: 200, 185\r\n offset: 14, 13\r\n index: -1\r\nbaozha0005\r\n rotate: false\r\n xy: 430, 2\r\n size: 152, 153\r\n orig: 200, 185\r\n offset: 32, 16\r\n index: -1\r\nbaozha0006\r\n rotate: false\r\n xy: 273, 5\r\n size: 155, 145\r\n orig: 200, 185\r\n offset: 26, 24\r\n index: -1\r\nguangdian\r\n rotate: true\r\n xy: 524, 210\r\n size: 105, 84\r\n orig: 110, 90\r\n offset: 2, 2\r\n index: -1\r\nguangqiu\r\n rotate: false\r\n xy: 153, 21\r\n size: 118, 118\r\n orig: 120, 120\r\n offset: 1, 1\r\n index: -1\r\n",["shouji_01.png"],{"skeleton":{"hash":"sB2/tVfLVBKf/qsHvJ8Knv3b1nI","spine":"2.1.27","width":260,"height":240.49,"images":""},"bones":[{"name":"root"},{"name":"bone","parent":"root"},{"name":"bone2","parent":"bone"},{"name":"bone3","parent":"bone"},{"name":"bone4","parent":"bone","x":-12.84,"y":8.56,"scaleX":1.3,"scaleY":1.3}],"slots":[{"name":"baozha","bone":"bone4","attachment":"baozha0006"},{"name":"guangqiu","bone":"bone3","attachment":"guangqiu"},{"name":"guangdian","bone":"bone2","attachment":"guangdian"}],"skins":{"default":{"baozha":{"baozha0001":{"width":200,"height":185},"baozha0002":{"width":200,"height":185},"baozha0003":{"width":200,"height":185},"baozha0004":{"width":200,"height":185},"baozha0005":{"width":200,"height":185},"baozha0006":{"width":200,"height":185}},"guangdian":{"guangdian":{"width":110,"height":90}},"guangqiu":{"guangqiu":{"width":120,"height":120}}}},"events":{"event_hit":{}},"animations":{"animation":{"slots":{"baozha":{"attachment":[{"time":0,"name":"baozha0001"},{"time":0.0666,"name":"baozha0002"},{"time":0.1333,"name":"baozha0003"},{"time":0.2,"name":"baozha0004"},{"time":0.2666,"name":"baozha0005"},{"time":0.3333,"name":"baozha0006"},{"time":0.4,"name":null}]},"guangdian":{"attachment":[{"time":0,"name":"guangdian"}],"color":[{"time":0,"color":"ffffffff"},{"time":0.1666,"color":"ffffffb4"},{"time":0.3333,"color":"ffffff00"}]},"guangqiu":{"attachment":[{"time":0,"name":"guangqiu"}],"color":[{"time":0,"color":"ffffffc7"},{"time":0.2666,"color":"ffffffb4"},{"time":0.5,"color":"ffffff00"}]}},"bones":{"bone4":{"scale":[{"time":0,"x":1.076,"y":1.076}]},"bone3":{"scale":[{"time":0,"x":1.3,"y":1.3},{"time":0.5,"x":2.5,"y":2.5}]},"bone2":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":2,"y":2}]}}}}},[0]]],0,0,[0],[-1],[0]] diff --git a/headless/static/remote/battle/import/6d/6d4605ff-0938-44f8-a05c-55d93d20706d.json b/headless/static/remote/battle/import/6d/6d4605ff-0938-44f8-a05c-55d93d20706d.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/6d/6d4605ff-0938-44f8-a05c-55d93d20706d.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/6d/6d4605ff-0938-44f8-a05c-55d93d20706d@f9941.json b/headless/static/remote/battle/import/6d/6d4605ff-0938-44f8-a05c-55d93d20706d@f9941.json new file mode 100644 index 00000000..7d5fa24a --- /dev/null +++ b/headless/static/remote/battle/import/6d/6d4605ff-0938-44f8-a05c-55d93d20706d@f9941.json @@ -0,0 +1 @@ +[1,["6d4605ff-0938-44f8-a05c-55d93d20706d@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"shuangcdr_00010002","rect":{"x":12,"y":14,"width":54,"height":55},"offset":{"x":-3,"y":0.5},"originalSize":{"width":84,"height":84},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-27,-27.5,0,27,-27.5,0,-27,27.5,0,27,27.5,0],"indexes":[0,1,2,2,1,3],"uv":[12,70,66,70,12,15,66,15],"nuv":[0.14285714285714285,0.17857142857142858,0.7857142857142857,0.17857142857142858,0.14285714285714285,0.8333333333333334,0.7857142857142857,0.8333333333333334],"minPos":{"x":-27,"y":-27.5,"z":0},"maxPos":{"x":27,"y":27.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/6d/6d7fd2fa-9401-4918-8f4c-9b85f1017146.json b/headless/static/remote/battle/import/6d/6d7fd2fa-9401-4918-8f4c-9b85f1017146.json new file mode 100644 index 00000000..5a042776 --- /dev/null +++ b/headless/static/remote/battle/import/6d/6d7fd2fa-9401-4918-8f4c-9b85f1017146.json @@ -0,0 +1 @@ +[1,0,0,[["cc.Asset",["_name","_native"],1]],[[0,0,1,3]],[[0,"zhouyu_skill2_2",".atlas"],-1],0,0,[],[],[]] diff --git a/headless/static/remote/battle/import/6e/6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223.json b/headless/static/remote/battle/import/6e/6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/6e/6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/6e/6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223@f9941.json b/headless/static/remote/battle/import/6e/6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223@f9941.json new file mode 100644 index 00000000..e51ff8cd --- /dev/null +++ b/headless/static/remote/battle/import/6e/6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223@f9941.json @@ -0,0 +1 @@ +[1,["6e55fbe8-c3b2-4a15-8ce3-cf6bbe96e223@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"TX_S1_yan_0024","rect":{"x":7,"y":6,"width":20,"height":20},"offset":{"x":3,"y":-3},"originalSize":{"width":28,"height":26},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-10,-10,0,10,-10,0,-10,10,0,10,10,0],"indexes":[0,1,2,2,1,3],"uv":[7,20,27,20,7,0,27,0],"nuv":[0.25,0,0.9642857142857143,0,0.25,0.7692307692307693,0.9642857142857143,0.7692307692307693],"minPos":{"x":-10,"y":-10,"z":0},"maxPos":{"x":10,"y":10,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/6e/6e73e1fa-3744-4e08-9eaa-117cc524afda.json b/headless/static/remote/battle/import/6e/6e73e1fa-3744-4e08-9eaa-117cc524afda.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/6e/6e73e1fa-3744-4e08-9eaa-117cc524afda.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/6e/6e73e1fa-3744-4e08-9eaa-117cc524afda@f9941.json b/headless/static/remote/battle/import/6e/6e73e1fa-3744-4e08-9eaa-117cc524afda@f9941.json new file mode 100644 index 00000000..a894b1ef --- /dev/null +++ b/headless/static/remote/battle/import/6e/6e73e1fa-3744-4e08-9eaa-117cc524afda@f9941.json @@ -0,0 +1 @@ +[1,["6e73e1fa-3744-4e08-9eaa-117cc524afda@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"tx_baodian04","rect":{"x":0,"y":4,"width":50,"height":73},"offset":{"x":0,"y":9.5},"originalSize":{"width":50,"height":100},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-25,-36.5,0,25,-36.5,0,-25,36.5,0,25,36.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,96,50,96,0,23,50,23],"nuv":[0,0.23,1,0.23,0,0.96,1,0.96],"minPos":{"x":-25,"y":-36.5,"z":0},"maxPos":{"x":25,"y":36.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/6e/6edb6339-008a-4064-b651-ace4908644cd.json b/headless/static/remote/battle/import/6e/6edb6339-008a-4064-b651-ace4908644cd.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/6e/6edb6339-008a-4064-b651-ace4908644cd.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/6e/6edb6339-008a-4064-b651-ace4908644cd@f9941.json b/headless/static/remote/battle/import/6e/6edb6339-008a-4064-b651-ace4908644cd@f9941.json new file mode 100644 index 00000000..5b59f268 --- /dev/null +++ b/headless/static/remote/battle/import/6e/6edb6339-008a-4064-b651-ace4908644cd@f9941.json @@ -0,0 +1 @@ +[1,["6edb6339-008a-4064-b651-ace4908644cd@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"z_yanjing_pingshi","rect":{"x":0,"y":0,"width":7,"height":17},"offset":{"x":0,"y":0},"originalSize":{"width":7,"height":17},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-3.5,-8.5,0,3.5,-8.5,0,-3.5,8.5,0,3.5,8.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,17,7,17,0,0,7,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-3.5,"y":-8.5,"z":0},"maxPos":{"x":3.5,"y":8.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/6f/6f92ffef-8b45-403f-9820-033a1e679d16.json b/headless/static/remote/battle/import/6f/6f92ffef-8b45-403f-9820-033a1e679d16.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/6f/6f92ffef-8b45-403f-9820-033a1e679d16.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/6f/6f92ffef-8b45-403f-9820-033a1e679d16@f9941.json b/headless/static/remote/battle/import/6f/6f92ffef-8b45-403f-9820-033a1e679d16@f9941.json new file mode 100644 index 00000000..4d32f41a --- /dev/null +++ b/headless/static/remote/battle/import/6f/6f92ffef-8b45-403f-9820-033a1e679d16@f9941.json @@ -0,0 +1 @@ +[1,["6f92ffef-8b45-403f-9820-033a1e679d16@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 016","rect":{"x":1,"y":1,"width":60,"height":60},"offset":{"x":0,"y":0},"originalSize":{"width":62,"height":62},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-30,-30,0,30,-30,0,-30,30,0,30,30,0],"indexes":[0,1,2,2,1,3],"uv":[1,61,61,61,1,1,61,1],"nuv":[0.016129032258064516,0.016129032258064516,0.9838709677419355,0.016129032258064516,0.016129032258064516,0.9838709677419355,0.9838709677419355,0.9838709677419355],"minPos":{"x":-30,"y":-30,"z":0},"maxPos":{"x":30,"y":30,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/70/70507da1-9f99-425c-8d0a-7052e3b8ff23.json b/headless/static/remote/battle/import/70/70507da1-9f99-425c-8d0a-7052e3b8ff23.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/70/70507da1-9f99-425c-8d0a-7052e3b8ff23.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/70/70507da1-9f99-425c-8d0a-7052e3b8ff23@f9941.json b/headless/static/remote/battle/import/70/70507da1-9f99-425c-8d0a-7052e3b8ff23@f9941.json new file mode 100644 index 00000000..2ad35d11 --- /dev/null +++ b/headless/static/remote/battle/import/70/70507da1-9f99-425c-8d0a-7052e3b8ff23@f9941.json @@ -0,0 +1 @@ +[1,["70507da1-9f99-425c-8d0a-7052e3b8ff23@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"chentu3","rect":{"x":11,"y":2,"width":65,"height":49},"offset":{"x":5.5,"y":-1},"originalSize":{"width":76,"height":51},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-32.5,-24.5,0,32.5,-24.5,0,-32.5,24.5,0,32.5,24.5,0],"indexes":[0,1,2,2,1,3],"uv":[11,49,76,49,11,0,76,0],"nuv":[0.14473684210526316,0,1,0,0.14473684210526316,0.9607843137254902,1,0.9607843137254902],"minPos":{"x":-32.5,"y":-24.5,"z":0},"maxPos":{"x":32.5,"y":24.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/72/7231d9cd-c82a-4e10-86b7-ac6d066257aa.json b/headless/static/remote/battle/import/72/7231d9cd-c82a-4e10-86b7-ac6d066257aa.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/72/7231d9cd-c82a-4e10-86b7-ac6d066257aa.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/72/7231d9cd-c82a-4e10-86b7-ac6d066257aa@f9941.json b/headless/static/remote/battle/import/72/7231d9cd-c82a-4e10-86b7-ac6d066257aa@f9941.json new file mode 100644 index 00000000..57388bd3 --- /dev/null +++ b/headless/static/remote/battle/import/72/7231d9cd-c82a-4e10-86b7-ac6d066257aa@f9941.json @@ -0,0 +1 @@ +[1,["7231d9cd-c82a-4e10-86b7-ac6d066257aa@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"jiao1","rect":{"x":1,"y":1,"width":27,"height":32},"offset":{"x":0,"y":0},"originalSize":{"width":29,"height":34},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-13.5,-16,0,13.5,-16,0,-13.5,16,0,13.5,16,0],"indexes":[0,1,2,2,1,3],"uv":[1,33,28,33,1,1,28,1],"nuv":[0.034482758620689655,0.029411764705882353,0.9655172413793104,0.029411764705882353,0.034482758620689655,0.9705882352941176,0.9655172413793104,0.9705882352941176],"minPos":{"x":-13.5,"y":-16,"z":0},"maxPos":{"x":13.5,"y":16,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/73/73e7b692-0dd7-428d-a37e-5294b5b02a78.json b/headless/static/remote/battle/import/73/73e7b692-0dd7-428d-a37e-5294b5b02a78.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/73/73e7b692-0dd7-428d-a37e-5294b5b02a78.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/73/73e7b692-0dd7-428d-a37e-5294b5b02a78@f9941.json b/headless/static/remote/battle/import/73/73e7b692-0dd7-428d-a37e-5294b5b02a78@f9941.json new file mode 100644 index 00000000..02f01158 --- /dev/null +++ b/headless/static/remote/battle/import/73/73e7b692-0dd7-428d-a37e-5294b5b02a78@f9941.json @@ -0,0 +1 @@ +[1,["73e7b692-0dd7-428d-a37e-5294b5b02a78@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"attack","rect":{"x":1,"y":1,"width":111,"height":129},"offset":{"x":0,"y":0},"originalSize":{"width":113,"height":131},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-55.5,-64.5,0,55.5,-64.5,0,-55.5,64.5,0,55.5,64.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,130,112,130,1,1,112,1],"nuv":[0.008849557522123894,0.007633587786259542,0.9911504424778761,0.007633587786259542,0.008849557522123894,0.9923664122137404,0.9911504424778761,0.9923664122137404],"minPos":{"x":-55.5,"y":-64.5,"z":0},"maxPos":{"x":55.5,"y":64.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/73/73f1d26b-8ad3-4745-884e-9407850365c4.json b/headless/static/remote/battle/import/73/73f1d26b-8ad3-4745-884e-9407850365c4.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/73/73f1d26b-8ad3-4745-884e-9407850365c4.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/73/73f1d26b-8ad3-4745-884e-9407850365c4@f9941.json b/headless/static/remote/battle/import/73/73f1d26b-8ad3-4745-884e-9407850365c4@f9941.json new file mode 100644 index 00000000..4786cd97 --- /dev/null +++ b/headless/static/remote/battle/import/73/73f1d26b-8ad3-4745-884e-9407850365c4@f9941.json @@ -0,0 +1 @@ +[1,["73f1d26b-8ad3-4745-884e-9407850365c4@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"05","rect":{"x":14,"y":57,"width":289,"height":219},"offset":{"x":-0.5,"y":-28.5},"originalSize":{"width":318,"height":276},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-144.5,-109.5,0,144.5,-109.5,0,-144.5,109.5,0,144.5,109.5,0],"indexes":[0,1,2,2,1,3],"uv":[14,219,303,219,14,0,303,0],"nuv":[0.0440251572327044,0,0.9528301886792453,0,0.0440251572327044,0.7934782608695652,0.9528301886792453,0.7934782608695652],"minPos":{"x":-144.5,"y":-109.5,"z":0},"maxPos":{"x":144.5,"y":109.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/74/74953026-d287-43a7-ad10-bae8221f98b8.json b/headless/static/remote/battle/import/74/74953026-d287-43a7-ad10-bae8221f98b8.json new file mode 100644 index 00000000..1531c60d --- /dev/null +++ b/headless/static/remote/battle/import/74/74953026-d287-43a7-ad10-bae8221f98b8.json @@ -0,0 +1 @@ +[1,0,0,[["cc.Asset",["_name","_native"],1]],[[0,0,1,3]],[[0,"guaiA4e",".spine"],-1],0,0,[],[],[]] diff --git a/headless/static/remote/battle/import/76/76f1e75b-f463-45cf-9005-fb49cb2ab7bf.json b/headless/static/remote/battle/import/76/76f1e75b-f463-45cf-9005-fb49cb2ab7bf.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/76/76f1e75b-f463-45cf-9005-fb49cb2ab7bf.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/76/76f1e75b-f463-45cf-9005-fb49cb2ab7bf@f9941.json b/headless/static/remote/battle/import/76/76f1e75b-f463-45cf-9005-fb49cb2ab7bf@f9941.json new file mode 100644 index 00000000..376d1c83 --- /dev/null +++ b/headless/static/remote/battle/import/76/76f1e75b-f463-45cf-9005-fb49cb2ab7bf@f9941.json @@ -0,0 +1 @@ +[1,["76f1e75b-f463-45cf-9005-fb49cb2ab7bf@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"z_bianzi3_bz","rect":{"x":0,"y":0,"width":33,"height":35},"offset":{"x":0,"y":0},"originalSize":{"width":33,"height":35},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-16.5,-17.5,0,16.5,-17.5,0,-16.5,17.5,0,16.5,17.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,35,33,35,0,0,33,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-16.5,"y":-17.5,"z":0},"maxPos":{"x":16.5,"y":17.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/77/771d3105-423e-4ae4-9e58-4e5f2fae3e9a.json b/headless/static/remote/battle/import/77/771d3105-423e-4ae4-9e58-4e5f2fae3e9a.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/77/771d3105-423e-4ae4-9e58-4e5f2fae3e9a.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/77/771d3105-423e-4ae4-9e58-4e5f2fae3e9a@f9941.json b/headless/static/remote/battle/import/77/771d3105-423e-4ae4-9e58-4e5f2fae3e9a@f9941.json new file mode 100644 index 00000000..225d85f2 --- /dev/null +++ b/headless/static/remote/battle/import/77/771d3105-423e-4ae4-9e58-4e5f2fae3e9a@f9941.json @@ -0,0 +1 @@ +[1,["771d3105-423e-4ae4-9e58-4e5f2fae3e9a@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"z_qiantui","rect":{"x":0,"y":0,"width":24,"height":36},"offset":{"x":0,"y":0},"originalSize":{"width":24,"height":36},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-12,-18,0,12,-18,0,-12,18,0,12,18,0],"indexes":[0,1,2,2,1,3],"uv":[0,36,24,36,0,0,24,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-12,"y":-18,"z":0},"maxPos":{"x":12,"y":18,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/78/78a2ff6d-18fa-4a97-b5d4-8efc3975682c.json b/headless/static/remote/battle/import/78/78a2ff6d-18fa-4a97-b5d4-8efc3975682c.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/78/78a2ff6d-18fa-4a97-b5d4-8efc3975682c.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/78/78a2ff6d-18fa-4a97-b5d4-8efc3975682c@f9941.json b/headless/static/remote/battle/import/78/78a2ff6d-18fa-4a97-b5d4-8efc3975682c@f9941.json new file mode 100644 index 00000000..846f6cf4 --- /dev/null +++ b/headless/static/remote/battle/import/78/78a2ff6d-18fa-4a97-b5d4-8efc3975682c@f9941.json @@ -0,0 +1 @@ +[1,["78a2ff6d-18fa-4a97-b5d4-8efc3975682c@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 015","rect":{"x":1,"y":1,"width":86,"height":61},"offset":{"x":0,"y":0},"originalSize":{"width":88,"height":63},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-43,-30.5,0,43,-30.5,0,-43,30.5,0,43,30.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,62,87,62,1,1,87,1],"nuv":[0.011363636363636364,0.015873015873015872,0.9886363636363636,0.015873015873015872,0.011363636363636364,0.9841269841269841,0.9886363636363636,0.9841269841269841],"minPos":{"x":-43,"y":-30.5,"z":0},"maxPos":{"x":43,"y":30.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/7a/7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58.json b/headless/static/remote/battle/import/7a/7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/7a/7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/7a/7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58@f9941.json b/headless/static/remote/battle/import/7a/7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58@f9941.json new file mode 100644 index 00000000..4f2e6482 --- /dev/null +++ b/headless/static/remote/battle/import/7a/7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58@f9941.json @@ -0,0 +1 @@ +[1,["7a2c2e3c-e4e6-4eb6-a353-7acda3a75f58@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 017","rect":{"x":1,"y":1,"width":41,"height":29},"offset":{"x":0,"y":0},"originalSize":{"width":43,"height":31},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-20.5,-14.5,0,20.5,-14.5,0,-20.5,14.5,0,20.5,14.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,30,42,30,1,1,42,1],"nuv":[0.023255813953488372,0.03225806451612903,0.9767441860465116,0.03225806451612903,0.023255813953488372,0.967741935483871,0.9767441860465116,0.967741935483871],"minPos":{"x":-20.5,"y":-14.5,"z":0},"maxPos":{"x":20.5,"y":14.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/7a/7aa6b522-4cbd-43fc-a884-ae201e302b97.json b/headless/static/remote/battle/import/7a/7aa6b522-4cbd-43fc-a884-ae201e302b97.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/7a/7aa6b522-4cbd-43fc-a884-ae201e302b97.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/7a/7aa6b522-4cbd-43fc-a884-ae201e302b97@f9941.json b/headless/static/remote/battle/import/7a/7aa6b522-4cbd-43fc-a884-ae201e302b97@f9941.json new file mode 100644 index 00000000..e950c4e1 --- /dev/null +++ b/headless/static/remote/battle/import/7a/7aa6b522-4cbd-43fc-a884-ae201e302b97@f9941.json @@ -0,0 +1 @@ +[1,["7aa6b522-4cbd-43fc-a884-ae201e302b97@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"chentu1","rect":{"x":0,"y":0,"width":77,"height":51},"offset":{"x":0,"y":0},"originalSize":{"width":77,"height":51},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-38.5,-25.5,0,38.5,-25.5,0,-38.5,25.5,0,38.5,25.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,51,77,51,0,0,77,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-38.5,"y":-25.5,"z":0},"maxPos":{"x":38.5,"y":25.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/7c/7ca59dc8-2635-47cd-98d6-94e9ec6c36fa.json b/headless/static/remote/battle/import/7c/7ca59dc8-2635-47cd-98d6-94e9ec6c36fa.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/7c/7ca59dc8-2635-47cd-98d6-94e9ec6c36fa.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/7c/7ca59dc8-2635-47cd-98d6-94e9ec6c36fa@f9941.json b/headless/static/remote/battle/import/7c/7ca59dc8-2635-47cd-98d6-94e9ec6c36fa@f9941.json new file mode 100644 index 00000000..8f89f8d3 --- /dev/null +++ b/headless/static/remote/battle/import/7c/7ca59dc8-2635-47cd-98d6-94e9ec6c36fa@f9941.json @@ -0,0 +1 @@ +[1,["7ca59dc8-2635-47cd-98d6-94e9ec6c36fa@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"Energy 007 Impact Radial_00010","rect":{"x":1,"y":2,"width":31,"height":31},"offset":{"x":0,"y":-1},"originalSize":{"width":33,"height":33},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-15.5,-15.5,0,15.5,-15.5,0,-15.5,15.5,0,15.5,15.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,31,32,31,1,0,32,0],"nuv":[0.030303030303030304,0,0.9696969696969697,0,0.030303030303030304,0.9393939393939394,0.9696969696969697,0.9393939393939394],"minPos":{"x":-15.5,"y":-15.5,"z":0},"maxPos":{"x":15.5,"y":15.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/7e/7ea77ef2-7734-492f-bb2c-22db352a8b49.json b/headless/static/remote/battle/import/7e/7ea77ef2-7734-492f-bb2c-22db352a8b49.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/7e/7ea77ef2-7734-492f-bb2c-22db352a8b49.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/7e/7ea77ef2-7734-492f-bb2c-22db352a8b49@f9941.json b/headless/static/remote/battle/import/7e/7ea77ef2-7734-492f-bb2c-22db352a8b49@f9941.json new file mode 100644 index 00000000..c7ae77cc --- /dev/null +++ b/headless/static/remote/battle/import/7e/7ea77ef2-7734-492f-bb2c-22db352a8b49@f9941.json @@ -0,0 +1 @@ +[1,["7ea77ef2-7734-492f-bb2c-22db352a8b49@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"z-yanjing_shouji","rect":{"x":0,"y":0,"width":10,"height":13},"offset":{"x":0,"y":0},"originalSize":{"width":10,"height":13},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-5,-6.5,0,5,-6.5,0,-5,6.5,0,5,6.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,13,10,13,0,0,10,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-5,"y":-6.5,"z":0},"maxPos":{"x":5,"y":6.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/7e/7ebdb065-a319-4ee0-a374-104137cf1d8c.json b/headless/static/remote/battle/import/7e/7ebdb065-a319-4ee0-a374-104137cf1d8c.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/7e/7ebdb065-a319-4ee0-a374-104137cf1d8c.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/7e/7ebdb065-a319-4ee0-a374-104137cf1d8c@f9941.json b/headless/static/remote/battle/import/7e/7ebdb065-a319-4ee0-a374-104137cf1d8c@f9941.json new file mode 100644 index 00000000..bb49a565 --- /dev/null +++ b/headless/static/remote/battle/import/7e/7ebdb065-a319-4ee0-a374-104137cf1d8c@f9941.json @@ -0,0 +1 @@ +[1,["7ebdb065-a319-4ee0-a374-104137cf1d8c@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"chentu5","rect":{"x":0,"y":0,"width":76,"height":51},"offset":{"x":0,"y":0},"originalSize":{"width":76,"height":51},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-38,-25.5,0,38,-25.5,0,-38,25.5,0,38,25.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,51,76,51,0,0,76,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-38,"y":-25.5,"z":0},"maxPos":{"x":38,"y":25.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/82/82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2.json b/headless/static/remote/battle/import/82/82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/82/82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/82/82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2@f9941.json b/headless/static/remote/battle/import/82/82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2@f9941.json new file mode 100644 index 00000000..76d7fd5e --- /dev/null +++ b/headless/static/remote/battle/import/82/82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2@f9941.json @@ -0,0 +1 @@ +[1,["82504bd6-b4fe-4ac9-b372-8c86ed4b5ad2@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"liuguang3","rect":{"x":0,"y":0,"width":46,"height":29},"offset":{"x":0,"y":0},"originalSize":{"width":46,"height":29},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-23,-14.5,0,23,-14.5,0,-23,14.5,0,23,14.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,29,46,29,0,0,46,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-23,"y":-14.5,"z":0},"maxPos":{"x":23,"y":14.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/82/8251d88e-0943-4c69-89cb-88116bb83e9f.json b/headless/static/remote/battle/import/82/8251d88e-0943-4c69-89cb-88116bb83e9f.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/82/8251d88e-0943-4c69-89cb-88116bb83e9f.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/82/8251d88e-0943-4c69-89cb-88116bb83e9f@f9941.json b/headless/static/remote/battle/import/82/8251d88e-0943-4c69-89cb-88116bb83e9f@f9941.json new file mode 100644 index 00000000..49355307 --- /dev/null +++ b/headless/static/remote/battle/import/82/8251d88e-0943-4c69-89cb-88116bb83e9f@f9941.json @@ -0,0 +1 @@ +[1,["8251d88e-0943-4c69-89cb-88116bb83e9f@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"TX_xsx_00002","rect":{"x":11,"y":4,"width":225,"height":78},"offset":{"x":-0.5,"y":0.5},"originalSize":{"width":248,"height":87},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-112.5,-39,0,112.5,-39,0,-112.5,39,0,112.5,39,0],"indexes":[0,1,2,2,1,3],"uv":[11,83,236,83,11,5,236,5],"nuv":[0.04435483870967742,0.05747126436781609,0.9516129032258065,0.05747126436781609,0.04435483870967742,0.9540229885057471,0.9516129032258065,0.9540229885057471],"minPos":{"x":-112.5,"y":-39,"z":0},"maxPos":{"x":112.5,"y":39,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/86/8602bb7b-f67c-469f-925b-4ffea75e6fca.json b/headless/static/remote/battle/import/86/8602bb7b-f67c-469f-925b-4ffea75e6fca.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/86/8602bb7b-f67c-469f-925b-4ffea75e6fca.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/86/8602bb7b-f67c-469f-925b-4ffea75e6fca@f9941.json b/headless/static/remote/battle/import/86/8602bb7b-f67c-469f-925b-4ffea75e6fca@f9941.json new file mode 100644 index 00000000..55c70003 --- /dev/null +++ b/headless/static/remote/battle/import/86/8602bb7b-f67c-469f-925b-4ffea75e6fca@f9941.json @@ -0,0 +1 @@ +[1,["8602bb7b-f67c-469f-925b-4ffea75e6fca@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 015","rect":{"x":1,"y":1,"width":86,"height":61},"offset":{"x":0,"y":0},"originalSize":{"width":88,"height":63},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-43,-30.5,0,43,-30.5,0,-43,30.5,0,43,30.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,62,87,62,1,1,87,1],"nuv":[0.011363636363636364,0.015873015873015872,0.9886363636363636,0.015873015873015872,0.011363636363636364,0.9841269841269841,0.9886363636363636,0.9841269841269841],"minPos":{"x":-43,"y":-30.5,"z":0},"maxPos":{"x":43,"y":30.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/86/8665e251-73b9-4bb1-b908-161c51250d6f.json b/headless/static/remote/battle/import/86/8665e251-73b9-4bb1-b908-161c51250d6f.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/86/8665e251-73b9-4bb1-b908-161c51250d6f.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/86/8665e251-73b9-4bb1-b908-161c51250d6f@f9941.json b/headless/static/remote/battle/import/86/8665e251-73b9-4bb1-b908-161c51250d6f@f9941.json new file mode 100644 index 00000000..e1a521ff --- /dev/null +++ b/headless/static/remote/battle/import/86/8665e251-73b9-4bb1-b908-161c51250d6f@f9941.json @@ -0,0 +1 @@ +[1,["8665e251-73b9-4bb1-b908-161c51250d6f@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"tx_baodian07","rect":{"x":0,"y":0,"width":50,"height":45},"offset":{"x":0,"y":27.5},"originalSize":{"width":50,"height":100},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-25,-22.5,0,25,-22.5,0,-25,22.5,0,25,22.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,100,50,100,0,55,50,55],"nuv":[0,0.55,1,0.55,0,1,1,1],"minPos":{"x":-25,"y":-22.5,"z":0},"maxPos":{"x":25,"y":22.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/86/86a627d7-2064-4e31-85c0-43ded881c083.json b/headless/static/remote/battle/import/86/86a627d7-2064-4e31-85c0-43ded881c083.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/86/86a627d7-2064-4e31-85c0-43ded881c083.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/86/86a627d7-2064-4e31-85c0-43ded881c083@f9941.json b/headless/static/remote/battle/import/86/86a627d7-2064-4e31-85c0-43ded881c083@f9941.json new file mode 100644 index 00000000..129e4b71 --- /dev/null +++ b/headless/static/remote/battle/import/86/86a627d7-2064-4e31-85c0-43ded881c083@f9941.json @@ -0,0 +1 @@ +[1,["86a627d7-2064-4e31-85c0-43ded881c083@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"06","rect":{"x":0,"y":20,"width":310,"height":249},"offset":{"x":-4,"y":-6.5},"originalSize":{"width":318,"height":276},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-155,-124.5,0,155,-124.5,0,-155,124.5,0,155,124.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,256,310,256,0,7,310,7],"nuv":[0,0.025362318840579712,0.9748427672955975,0.025362318840579712,0,0.927536231884058,0.9748427672955975,0.927536231884058],"minPos":{"x":-155,"y":-124.5,"z":0},"maxPos":{"x":155,"y":124.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/89/89265b4f-16df-4020-a73b-6e7217e2ebd7.json b/headless/static/remote/battle/import/89/89265b4f-16df-4020-a73b-6e7217e2ebd7.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/89/89265b4f-16df-4020-a73b-6e7217e2ebd7.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/89/89265b4f-16df-4020-a73b-6e7217e2ebd7@f9941.json b/headless/static/remote/battle/import/89/89265b4f-16df-4020-a73b-6e7217e2ebd7@f9941.json new file mode 100644 index 00000000..a095e5d1 --- /dev/null +++ b/headless/static/remote/battle/import/89/89265b4f-16df-4020-a73b-6e7217e2ebd7@f9941.json @@ -0,0 +1 @@ +[1,["89265b4f-16df-4020-a73b-6e7217e2ebd7@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"atk_guangci3_0030","rect":{"x":1,"y":1,"width":31,"height":26},"offset":{"x":-0.5,"y":-0.5},"originalSize":{"width":34,"height":27},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-15.5,-13,0,15.5,-13,0,-15.5,13,0,15.5,13,0],"indexes":[0,1,2,2,1,3],"uv":[1,26,32,26,1,0,32,0],"nuv":[0.029411764705882353,0,0.9411764705882353,0,0.029411764705882353,0.9629629629629629,0.9411764705882353,0.9629629629629629],"minPos":{"x":-15.5,"y":-13,"z":0},"maxPos":{"x":15.5,"y":13,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/8a/8af43c10-0847-478c-a7e9-82ca49d4401d.json b/headless/static/remote/battle/import/8a/8af43c10-0847-478c-a7e9-82ca49d4401d.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/8a/8af43c10-0847-478c-a7e9-82ca49d4401d.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/8a/8af43c10-0847-478c-a7e9-82ca49d4401d@f9941.json b/headless/static/remote/battle/import/8a/8af43c10-0847-478c-a7e9-82ca49d4401d@f9941.json new file mode 100644 index 00000000..50608a7e --- /dev/null +++ b/headless/static/remote/battle/import/8a/8af43c10-0847-478c-a7e9-82ca49d4401d@f9941.json @@ -0,0 +1 @@ +[1,["8af43c10-0847-478c-a7e9-82ca49d4401d@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"zuiba_bz","rect":{"x":0,"y":0,"width":51,"height":14},"offset":{"x":0,"y":0},"originalSize":{"width":51,"height":14},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-25.5,-7,0,25.5,-7,0,-25.5,7,0,25.5,7,0],"indexes":[0,1,2,2,1,3],"uv":[0,14,51,14,0,0,51,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-25.5,"y":-7,"z":0},"maxPos":{"x":25.5,"y":7,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/8c/8cd8e7fb-f35b-417f-b147-ecc7ef089706@f9941.json b/headless/static/remote/battle/import/8c/8cd8e7fb-f35b-417f-b147-ecc7ef089706@f9941.json new file mode 100644 index 00000000..cdfd1ee5 --- /dev/null +++ b/headless/static/remote/battle/import/8c/8cd8e7fb-f35b-417f-b147-ecc7ef089706@f9941.json @@ -0,0 +1 @@ +[1,["8cd8e7fb-f35b-417f-b147-ecc7ef089706@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"guaiA1a","rect":{"x":2,"y":4,"width":128,"height":92},"offset":{"x":-1.5,"y":-1},"originalSize":{"width":135,"height":98},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-64,-46,0,64,-46,0,-64,46,0,64,46,0],"indexes":[0,1,2,2,1,3],"uv":[2,94,130,94,2,2,130,2],"nuv":[0.014814814814814815,0.02040816326530612,0.9629629629629629,0.02040816326530612,0.014814814814814815,0.9591836734693877,0.9629629629629629,0.9591836734693877],"minPos":{"x":-64,"y":-46,"z":0},"maxPos":{"x":64,"y":46,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/8e/8ef1f316-b788-4822-86d2-4d77deb9e57c.json b/headless/static/remote/battle/import/8e/8ef1f316-b788-4822-86d2-4d77deb9e57c.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/8e/8ef1f316-b788-4822-86d2-4d77deb9e57c.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/8e/8ef1f316-b788-4822-86d2-4d77deb9e57c@f9941.json b/headless/static/remote/battle/import/8e/8ef1f316-b788-4822-86d2-4d77deb9e57c@f9941.json new file mode 100644 index 00000000..b08b60c9 --- /dev/null +++ b/headless/static/remote/battle/import/8e/8ef1f316-b788-4822-86d2-4d77deb9e57c@f9941.json @@ -0,0 +1 @@ +[1,["8ef1f316-b788-4822-86d2-4d77deb9e57c@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"z_meimao_gongji","rect":{"x":0,"y":0,"width":4,"height":17},"offset":{"x":0,"y":0},"originalSize":{"width":4,"height":17},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-2,-8.5,0,2,-8.5,0,-2,8.5,0,2,8.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,17,4,17,0,0,4,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-2,"y":-8.5,"z":0},"maxPos":{"x":2,"y":8.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/91/917d53cb-10f1-4065-b7c3-57a9500b96e1.json b/headless/static/remote/battle/import/91/917d53cb-10f1-4065-b7c3-57a9500b96e1.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/91/917d53cb-10f1-4065-b7c3-57a9500b96e1.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/91/917d53cb-10f1-4065-b7c3-57a9500b96e1@f9941.json b/headless/static/remote/battle/import/91/917d53cb-10f1-4065-b7c3-57a9500b96e1@f9941.json new file mode 100644 index 00000000..8dc5bd7c --- /dev/null +++ b/headless/static/remote/battle/import/91/917d53cb-10f1-4065-b7c3-57a9500b96e1@f9941.json @@ -0,0 +1 @@ +[1,["917d53cb-10f1-4065-b7c3-57a9500b96e1@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"guaiA1a_legL","rect":{"x":2,"y":0,"width":22,"height":35},"offset":{"x":-0.5,"y":0.5},"originalSize":{"width":27,"height":36},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-11,-17.5,0,11,-17.5,0,-11,17.5,0,11,17.5,0],"indexes":[0,1,2,2,1,3],"uv":[2,36,24,36,2,1,24,1],"nuv":[0.07407407407407407,0.027777777777777776,0.8888888888888888,0.027777777777777776,0.07407407407407407,1,0.8888888888888888,1],"minPos":{"x":-11,"y":-17.5,"z":0},"maxPos":{"x":11,"y":17.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/96/96e5083f-61ee-4d79-97b9-c297bb68c54a.json b/headless/static/remote/battle/import/96/96e5083f-61ee-4d79-97b9-c297bb68c54a.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/96/96e5083f-61ee-4d79-97b9-c297bb68c54a.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/96/96e5083f-61ee-4d79-97b9-c297bb68c54a@f9941.json b/headless/static/remote/battle/import/96/96e5083f-61ee-4d79-97b9-c297bb68c54a@f9941.json new file mode 100644 index 00000000..df37fb4a --- /dev/null +++ b/headless/static/remote/battle/import/96/96e5083f-61ee-4d79-97b9-c297bb68c54a@f9941.json @@ -0,0 +1 @@ +[1,["96e5083f-61ee-4d79-97b9-c297bb68c54a@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"y-meimao_shouji","rect":{"x":0,"y":0,"width":17,"height":14},"offset":{"x":0,"y":0},"originalSize":{"width":17,"height":14},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-8.5,-7,0,8.5,-7,0,-8.5,7,0,8.5,7,0],"indexes":[0,1,2,2,1,3],"uv":[0,14,17,14,0,0,17,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-8.5,"y":-7,"z":0},"maxPos":{"x":8.5,"y":7,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/98/9821c439-9937-4fc7-b924-2d88b9d44e36.json b/headless/static/remote/battle/import/98/9821c439-9937-4fc7-b924-2d88b9d44e36.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/98/9821c439-9937-4fc7-b924-2d88b9d44e36.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/98/9821c439-9937-4fc7-b924-2d88b9d44e36@f9941.json b/headless/static/remote/battle/import/98/9821c439-9937-4fc7-b924-2d88b9d44e36@f9941.json new file mode 100644 index 00000000..153b9ec5 --- /dev/null +++ b/headless/static/remote/battle/import/98/9821c439-9937-4fc7-b924-2d88b9d44e36@f9941.json @@ -0,0 +1 @@ +[1,["9821c439-9937-4fc7-b924-2d88b9d44e36@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"shuye","rect":{"x":0,"y":0,"width":25,"height":30},"offset":{"x":0,"y":0},"originalSize":{"width":25,"height":30},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-12.5,-15,0,12.5,-15,0,-12.5,15,0,12.5,15,0],"indexes":[0,1,2,2,1,3],"uv":[0,30,25,30,0,0,25,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-12.5,"y":-15,"z":0},"maxPos":{"x":12.5,"y":15,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/99/9968d439-7e1e-4994-bc1b-8bca5d7b49d8.json b/headless/static/remote/battle/import/99/9968d439-7e1e-4994-bc1b-8bca5d7b49d8.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/99/9968d439-7e1e-4994-bc1b-8bca5d7b49d8.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/99/9968d439-7e1e-4994-bc1b-8bca5d7b49d8@f9941.json b/headless/static/remote/battle/import/99/9968d439-7e1e-4994-bc1b-8bca5d7b49d8@f9941.json new file mode 100644 index 00000000..0d7540ef --- /dev/null +++ b/headless/static/remote/battle/import/99/9968d439-7e1e-4994-bc1b-8bca5d7b49d8@f9941.json @@ -0,0 +1 @@ +[1,["9968d439-7e1e-4994-bc1b-8bca5d7b49d8@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"guaiA4es","rect":{"x":2,"y":3,"width":1237,"height":399},"offset":{"x":0,"y":-0.5},"originalSize":{"width":1241,"height":404},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-618.5,-199.5,0,618.5,-199.5,0,-618.5,199.5,0,618.5,199.5,0],"indexes":[0,1,2,2,1,3],"uv":[2,401,1239,401,2,2,1239,2],"nuv":[0.0016116035455278,0.0049504950495049506,0.9983883964544722,0.0049504950495049506,0.0016116035455278,0.9925742574257426,0.9983883964544722,0.9925742574257426],"minPos":{"x":-618.5,"y":-199.5,"z":0},"maxPos":{"x":618.5,"y":199.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/9a/9a740c1b-d991-4428-9549-1017bfb6358e.json b/headless/static/remote/battle/import/9a/9a740c1b-d991-4428-9549-1017bfb6358e.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/9a/9a740c1b-d991-4428-9549-1017bfb6358e.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/9a/9a740c1b-d991-4428-9549-1017bfb6358e@f9941.json b/headless/static/remote/battle/import/9a/9a740c1b-d991-4428-9549-1017bfb6358e@f9941.json new file mode 100644 index 00000000..0d51c02c --- /dev/null +++ b/headless/static/remote/battle/import/9a/9a740c1b-d991-4428-9549-1017bfb6358e@f9941.json @@ -0,0 +1 @@ +[1,["9a740c1b-d991-4428-9549-1017bfb6358e@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 004","rect":{"x":1,"y":1,"width":75,"height":94},"offset":{"x":0,"y":0},"originalSize":{"width":77,"height":96},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-37.5,-47,0,37.5,-47,0,-37.5,47,0,37.5,47,0],"indexes":[0,1,2,2,1,3],"uv":[1,95,76,95,1,1,76,1],"nuv":[0.012987012987012988,0.010416666666666666,0.987012987012987,0.010416666666666666,0.012987012987012988,0.9895833333333334,0.987012987012987,0.9895833333333334],"minPos":{"x":-37.5,"y":-47,"z":0},"maxPos":{"x":37.5,"y":47,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/9a/9a782e6d-767c-430e-9b91-86b4ca15645b.json b/headless/static/remote/battle/import/9a/9a782e6d-767c-430e-9b91-86b4ca15645b.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/9a/9a782e6d-767c-430e-9b91-86b4ca15645b.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/9a/9a782e6d-767c-430e-9b91-86b4ca15645b@f9941.json b/headless/static/remote/battle/import/9a/9a782e6d-767c-430e-9b91-86b4ca15645b@f9941.json new file mode 100644 index 00000000..8243c2b6 --- /dev/null +++ b/headless/static/remote/battle/import/9a/9a782e6d-767c-430e-9b91-86b4ca15645b@f9941.json @@ -0,0 +1 @@ +[1,["9a782e6d-767c-430e-9b91-86b4ca15645b@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"xuanzhuan","rect":{"x":0,"y":0,"width":45,"height":45},"offset":{"x":0,"y":0},"originalSize":{"width":45,"height":45},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-22.5,-22.5,0,22.5,-22.5,0,-22.5,22.5,0,22.5,22.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,45,45,45,0,0,45,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-22.5,"y":-22.5,"z":0},"maxPos":{"x":22.5,"y":22.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/9b/9ba0cb57-c7d4-43b9-9a45-c90fd071e578.json b/headless/static/remote/battle/import/9b/9ba0cb57-c7d4-43b9-9a45-c90fd071e578.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/9b/9ba0cb57-c7d4-43b9-9a45-c90fd071e578.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/9b/9ba0cb57-c7d4-43b9-9a45-c90fd071e578@f9941.json b/headless/static/remote/battle/import/9b/9ba0cb57-c7d4-43b9-9a45-c90fd071e578@f9941.json new file mode 100644 index 00000000..2a40faf0 --- /dev/null +++ b/headless/static/remote/battle/import/9b/9ba0cb57-c7d4-43b9-9a45-c90fd071e578@f9941.json @@ -0,0 +1 @@ +[1,["9ba0cb57-c7d4-43b9-9a45-c90fd071e578@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"4845-baozha2","rect":{"x":0,"y":0,"width":200,"height":200},"offset":{"x":0,"y":0},"originalSize":{"width":200,"height":200},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-100,-100,0,100,-100,0,-100,100,0,100,100,0],"indexes":[0,1,2,2,1,3],"uv":[0,200,200,200,0,0,200,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-100,"y":-100,"z":0},"maxPos":{"x":100,"y":100,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/9b/9ba1ed01-edb4-4f3e-988c-f6111de69597.json b/headless/static/remote/battle/import/9b/9ba1ed01-edb4-4f3e-988c-f6111de69597.json new file mode 100644 index 00000000..6ed2c1b7 --- /dev/null +++ b/headless/static/remote/battle/import/9b/9ba1ed01-edb4-4f3e-988c-f6111de69597.json @@ -0,0 +1 @@ +[1,["259f92ef-99c5-4e2b-bf7f-3cfd159a32e2@6c48a"],0,[["sp.SkeletonData",["_name","_atlasText","textureNames","_skeletonJson","textures"],-1,3]],[[0,0,1,2,3,4,5]],[[0,"buff_fire","\r\nbuff_fire.png\r\nsize: 378,322\r\nformat: RGBA8888\r\nfilter: Linear,Linear\r\nrepeat: none\r\n000\r\n rotate: true\r\n xy: 92, 97\r\n size: 223, 100\r\n orig: 223, 100\r\n offset: 0, 0\r\n index: -1\r\n001\r\n rotate: false\r\n xy: 2, 2\r\n size: 221, 92\r\n orig: 221, 92\r\n offset: 0, 0\r\n index: -1\r\n002\r\n rotate: true\r\n xy: 194, 98\r\n size: 222, 90\r\n orig: 222, 90\r\n offset: 0, 0\r\n index: -1\r\n003\r\n rotate: true\r\n xy: 286, 99\r\n size: 221, 90\r\n orig: 221, 90\r\n offset: 0, 0\r\n index: -1\r\n004\r\n rotate: true\r\n xy: 2, 96\r\n size: 224, 88\r\n orig: 224, 88\r\n offset: 0, 0\r\n index: -1\r\n",["buff_fire.png"],{"skeleton":{"hash":"hFehSAI/6kuPO5wPqsX7P2xDPyY","spine":"2.1.27","width":221,"height":90,"images":""},"bones":[{"name":"root"},{"name":"bone","parent":"root","length":89.99,"rotation":180}],"slots":[{"name":"000","bone":"bone","attachment":"003"}],"skins":{"default":{"000":{"000":{"x":-1.81,"y":6.51,"rotation":-180,"width":223,"height":100},"001":{"x":-1.29,"y":0.87,"rotation":-180,"width":221,"height":92},"002":{"x":-1.4,"y":0.22,"rotation":-180,"width":222,"height":90},"003":{"x":-0.99,"y":0.53,"rotation":-180,"width":221,"height":90},"004":{"x":-2.72,"y":0.84,"rotation":-180,"width":224,"height":88}}}},"animations":{"animation":{"slots":{"000":{"attachment":[{"time":0,"name":"000"},{"time":0.0666,"name":"001"},{"time":0.1333,"name":"002"},{"time":0.2,"name":"003"},{"time":0.2666,"name":"004"}]}},"bones":{"bone":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.2666,"x":1,"y":1}]}}}}},[0]]],0,0,[0],[-1],[0]] diff --git a/headless/static/remote/battle/import/9c/9c004ab3-a3a9-46f9-a859-dcc4c3c3769b.json b/headless/static/remote/battle/import/9c/9c004ab3-a3a9-46f9-a859-dcc4c3c3769b.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/9c/9c004ab3-a3a9-46f9-a859-dcc4c3c3769b.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/9c/9c004ab3-a3a9-46f9-a859-dcc4c3c3769b@f9941.json b/headless/static/remote/battle/import/9c/9c004ab3-a3a9-46f9-a859-dcc4c3c3769b@f9941.json new file mode 100644 index 00000000..c9c12b6e --- /dev/null +++ b/headless/static/remote/battle/import/9c/9c004ab3-a3a9-46f9-a859-dcc4c3c3769b@f9941.json @@ -0,0 +1 @@ +[1,["9c004ab3-a3a9-46f9-a859-dcc4c3c3769b@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"y_meimao_pingshi","rect":{"x":0,"y":0,"width":12,"height":19},"offset":{"x":0,"y":0},"originalSize":{"width":12,"height":19},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-6,-9.5,0,6,-9.5,0,-6,9.5,0,6,9.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,19,12,19,0,0,12,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-6,"y":-9.5,"z":0},"maxPos":{"x":6,"y":9.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/9d/9de99d59-c865-4435-a1ce-6bf6212d468c.json b/headless/static/remote/battle/import/9d/9de99d59-c865-4435-a1ce-6bf6212d468c.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/9d/9de99d59-c865-4435-a1ce-6bf6212d468c.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/9d/9de99d59-c865-4435-a1ce-6bf6212d468c@f9941.json b/headless/static/remote/battle/import/9d/9de99d59-c865-4435-a1ce-6bf6212d468c@f9941.json new file mode 100644 index 00000000..b114b014 --- /dev/null +++ b/headless/static/remote/battle/import/9d/9de99d59-c865-4435-a1ce-6bf6212d468c@f9941.json @@ -0,0 +1 @@ +[1,["9de99d59-c865-4435-a1ce-6bf6212d468c@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"y_shou_bz","rect":{"x":0,"y":0,"width":34,"height":33},"offset":{"x":0,"y":0},"originalSize":{"width":34,"height":33},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-17,-16.5,0,17,-16.5,0,-17,16.5,0,17,16.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,33,34,33,0,0,34,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-17,"y":-16.5,"z":0},"maxPos":{"x":17,"y":16.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/9e/9eb72656-748d-4794-8dac-4b7299e6cd39.json b/headless/static/remote/battle/import/9e/9eb72656-748d-4794-8dac-4b7299e6cd39.json new file mode 100644 index 00000000..76618406 --- /dev/null +++ b/headless/static/remote/battle/import/9e/9eb72656-748d-4794-8dac-4b7299e6cd39.json @@ -0,0 +1 @@ +[1,0,0,[["cc.Asset",["_name","_native"],1]],[[0,0,1,3]],[[0,"guaiA1a",".atlas"],-1],0,0,[],[],[]] diff --git a/headless/static/remote/battle/import/a0/a0ef72ac-b418-40da-b320-095a2874e061.json b/headless/static/remote/battle/import/a0/a0ef72ac-b418-40da-b320-095a2874e061.json new file mode 100644 index 00000000..2b2ae844 --- /dev/null +++ b/headless/static/remote/battle/import/a0/a0ef72ac-b418-40da-b320-095a2874e061.json @@ -0,0 +1 @@ +[1,0,0,[["cc.Asset",["_name","_native"],1]],[[0,0,1,3]],[[0,"guaiA4eTexture",".atlas"],-1],0,0,[],[],[]] diff --git a/headless/static/remote/battle/import/a1/a1883b0d-fa9a-4329-8f78-ff42d1adb9ac.json b/headless/static/remote/battle/import/a1/a1883b0d-fa9a-4329-8f78-ff42d1adb9ac.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/a1/a1883b0d-fa9a-4329-8f78-ff42d1adb9ac.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/a1/a1883b0d-fa9a-4329-8f78-ff42d1adb9ac@f9941.json b/headless/static/remote/battle/import/a1/a1883b0d-fa9a-4329-8f78-ff42d1adb9ac@f9941.json new file mode 100644 index 00000000..0a02a131 --- /dev/null +++ b/headless/static/remote/battle/import/a1/a1883b0d-fa9a-4329-8f78-ff42d1adb9ac@f9941.json @@ -0,0 +1 @@ +[1,["a1883b0d-fa9a-4329-8f78-ff42d1adb9ac@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"tx_quan4","rect":{"x":15,"y":25,"width":171,"height":140},"offset":{"x":0.5,"y":5},"originalSize":{"width":200,"height":200},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-85.5,-70,0,85.5,-70,0,-85.5,70,0,85.5,70,0],"indexes":[0,1,2,2,1,3],"uv":[15,175,186,175,15,35,186,35],"nuv":[0.075,0.175,0.93,0.175,0.075,0.875,0.93,0.875],"minPos":{"x":-85.5,"y":-70,"z":0},"maxPos":{"x":85.5,"y":70,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/a6/a64f70c5-fd92-4f53-9cea-a726d3ccb680.json b/headless/static/remote/battle/import/a6/a64f70c5-fd92-4f53-9cea-a726d3ccb680.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/a6/a64f70c5-fd92-4f53-9cea-a726d3ccb680.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/a6/a64f70c5-fd92-4f53-9cea-a726d3ccb680@f9941.json b/headless/static/remote/battle/import/a6/a64f70c5-fd92-4f53-9cea-a726d3ccb680@f9941.json new file mode 100644 index 00000000..4dd05f79 --- /dev/null +++ b/headless/static/remote/battle/import/a6/a64f70c5-fd92-4f53-9cea-a726d3ccb680@f9941.json @@ -0,0 +1 @@ +[1,["a64f70c5-fd92-4f53-9cea-a726d3ccb680@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"000","rect":{"x":0,"y":0,"width":223,"height":100},"offset":{"x":0,"y":0},"originalSize":{"width":223,"height":100},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-111.5,-50,0,111.5,-50,0,-111.5,50,0,111.5,50,0],"indexes":[0,1,2,2,1,3],"uv":[0,100,223,100,0,0,223,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-111.5,"y":-50,"z":0},"maxPos":{"x":111.5,"y":50,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/a7/a73cc36b-81f8-4a83-ae05-c7c976183907.json b/headless/static/remote/battle/import/a7/a73cc36b-81f8-4a83-ae05-c7c976183907.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/a7/a73cc36b-81f8-4a83-ae05-c7c976183907.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/a7/a73cc36b-81f8-4a83-ae05-c7c976183907@f9941.json b/headless/static/remote/battle/import/a7/a73cc36b-81f8-4a83-ae05-c7c976183907@f9941.json new file mode 100644 index 00000000..d4df69e9 --- /dev/null +++ b/headless/static/remote/battle/import/a7/a73cc36b-81f8-4a83-ae05-c7c976183907@f9941.json @@ -0,0 +1 @@ +[1,["a73cc36b-81f8-4a83-ae05-c7c976183907@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"MAP6_1","rect":{"x":0,"y":6,"width":1200,"height":442},"offset":{"x":0,"y":-3},"originalSize":{"width":1200,"height":448},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-600,-221,0,600,-221,0,-600,221,0,600,221,0],"indexes":[0,1,2,2,1,3],"uv":[0,442,1200,442,0,0,1200,0],"nuv":[0,0,1,0,0,0.9866071428571429,1,0.9866071428571429],"minPos":{"x":-600,"y":-221,"z":0},"maxPos":{"x":600,"y":221,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/aa/aa74ba45-1456-4980-abe3-8ed0e52767a0.json b/headless/static/remote/battle/import/aa/aa74ba45-1456-4980-abe3-8ed0e52767a0.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/aa/aa74ba45-1456-4980-abe3-8ed0e52767a0.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/aa/aa74ba45-1456-4980-abe3-8ed0e52767a0@f9941.json b/headless/static/remote/battle/import/aa/aa74ba45-1456-4980-abe3-8ed0e52767a0@f9941.json new file mode 100644 index 00000000..54379a55 --- /dev/null +++ b/headless/static/remote/battle/import/aa/aa74ba45-1456-4980-abe3-8ed0e52767a0@f9941.json @@ -0,0 +1 @@ +[1,["aa74ba45-1456-4980-abe3-8ed0e52767a0@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"baozha0006","rect":{"x":26,"y":16,"width":155,"height":145},"offset":{"x":3.5,"y":4},"originalSize":{"width":200,"height":185},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-77.5,-72.5,0,77.5,-72.5,0,-77.5,72.5,0,77.5,72.5,0],"indexes":[0,1,2,2,1,3],"uv":[26,169,181,169,26,24,181,24],"nuv":[0.13,0.12972972972972974,0.905,0.12972972972972974,0.13,0.9135135135135135,0.905,0.9135135135135135],"minPos":{"x":-77.5,"y":-72.5,"z":0},"maxPos":{"x":77.5,"y":72.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/aa/aad2c55e-36af-44a3-8c6d-5639841cc67d.json b/headless/static/remote/battle/import/aa/aad2c55e-36af-44a3-8c6d-5639841cc67d.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/aa/aad2c55e-36af-44a3-8c6d-5639841cc67d.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/aa/aad2c55e-36af-44a3-8c6d-5639841cc67d@f9941.json b/headless/static/remote/battle/import/aa/aad2c55e-36af-44a3-8c6d-5639841cc67d@f9941.json new file mode 100644 index 00000000..4beef005 --- /dev/null +++ b/headless/static/remote/battle/import/aa/aad2c55e-36af-44a3-8c6d-5639841cc67d@f9941.json @@ -0,0 +1 @@ +[1,["aad2c55e-36af-44a3-8c6d-5639841cc67d@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"TX_S1_shua_0010","rect":{"x":2,"y":0,"width":36,"height":14},"offset":{"x":1,"y":0},"originalSize":{"width":38,"height":14},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-18,-7,0,18,-7,0,-18,7,0,18,7,0],"indexes":[0,1,2,2,1,3],"uv":[2,14,38,14,2,0,38,0],"nuv":[0.05263157894736842,0,1,0,0.05263157894736842,1,1,1],"minPos":{"x":-18,"y":-7,"z":0},"maxPos":{"x":18,"y":7,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/aa/aad7964b-28e4-4daa-9981-282c7f28ee2a.json b/headless/static/remote/battle/import/aa/aad7964b-28e4-4daa-9981-282c7f28ee2a.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/aa/aad7964b-28e4-4daa-9981-282c7f28ee2a.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/aa/aad7964b-28e4-4daa-9981-282c7f28ee2a@f9941.json b/headless/static/remote/battle/import/aa/aad7964b-28e4-4daa-9981-282c7f28ee2a@f9941.json new file mode 100644 index 00000000..4873dc4b --- /dev/null +++ b/headless/static/remote/battle/import/aa/aad7964b-28e4-4daa-9981-282c7f28ee2a@f9941.json @@ -0,0 +1 @@ +[1,["aad7964b-28e4-4daa-9981-282c7f28ee2a@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"hua_a5","rect":{"x":0,"y":0,"width":35,"height":25},"offset":{"x":0,"y":0},"originalSize":{"width":35,"height":25},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-17.5,-12.5,0,17.5,-12.5,0,-17.5,12.5,0,17.5,12.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,25,35,25,0,0,35,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-17.5,"y":-12.5,"z":0},"maxPos":{"x":17.5,"y":12.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/ab/ab26edf5-c9aa-4def-bd6f-6e05efe76d0d.json b/headless/static/remote/battle/import/ab/ab26edf5-c9aa-4def-bd6f-6e05efe76d0d.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/ab/ab26edf5-c9aa-4def-bd6f-6e05efe76d0d.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/ab/ab26edf5-c9aa-4def-bd6f-6e05efe76d0d@f9941.json b/headless/static/remote/battle/import/ab/ab26edf5-c9aa-4def-bd6f-6e05efe76d0d@f9941.json new file mode 100644 index 00000000..40b71b83 --- /dev/null +++ b/headless/static/remote/battle/import/ab/ab26edf5-c9aa-4def-bd6f-6e05efe76d0d@f9941.json @@ -0,0 +1 @@ +[1,["ab26edf5-c9aa-4def-bd6f-6e05efe76d0d@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 008","rect":{"x":1,"y":1,"width":160,"height":146},"offset":{"x":0,"y":0},"originalSize":{"width":162,"height":148},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-80,-73,0,80,-73,0,-80,73,0,80,73,0],"indexes":[0,1,2,2,1,3],"uv":[1,147,161,147,1,1,161,1],"nuv":[0.006172839506172839,0.006756756756756757,0.9938271604938271,0.006756756756756757,0.006172839506172839,0.9932432432432432,0.9938271604938271,0.9932432432432432],"minPos":{"x":-80,"y":-73,"z":0},"maxPos":{"x":80,"y":73,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/ab/abd50507-0cfd-49f8-8c6d-3b00ba75b8f6.json b/headless/static/remote/battle/import/ab/abd50507-0cfd-49f8-8c6d-3b00ba75b8f6.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/ab/abd50507-0cfd-49f8-8c6d-3b00ba75b8f6.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/ab/abd50507-0cfd-49f8-8c6d-3b00ba75b8f6@f9941.json b/headless/static/remote/battle/import/ab/abd50507-0cfd-49f8-8c6d-3b00ba75b8f6@f9941.json new file mode 100644 index 00000000..432ecacf --- /dev/null +++ b/headless/static/remote/battle/import/ab/abd50507-0cfd-49f8-8c6d-3b00ba75b8f6@f9941.json @@ -0,0 +1 @@ +[1,["abd50507-0cfd-49f8-8c6d-3b00ba75b8f6@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"hua_a3","rect":{"x":0,"y":0,"width":23,"height":13},"offset":{"x":0,"y":0},"originalSize":{"width":23,"height":13},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-11.5,-6.5,0,11.5,-6.5,0,-11.5,6.5,0,11.5,6.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,13,23,13,0,0,23,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-11.5,"y":-6.5,"z":0},"maxPos":{"x":11.5,"y":6.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/ac/ac4f309c-c432-4fed-ad6d-3e058bd928c3.json b/headless/static/remote/battle/import/ac/ac4f309c-c432-4fed-ad6d-3e058bd928c3.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/ac/ac4f309c-c432-4fed-ad6d-3e058bd928c3.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/ac/ac4f309c-c432-4fed-ad6d-3e058bd928c3@f9941.json b/headless/static/remote/battle/import/ac/ac4f309c-c432-4fed-ad6d-3e058bd928c3@f9941.json new file mode 100644 index 00000000..c7962520 --- /dev/null +++ b/headless/static/remote/battle/import/ac/ac4f309c-c432-4fed-ad6d-3e058bd928c3@f9941.json @@ -0,0 +1 @@ +[1,["ac4f309c-c432-4fed-ad6d-3e058bd928c3@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"yan","rect":{"x":1,"y":1,"width":41,"height":17},"offset":{"x":0,"y":0},"originalSize":{"width":43,"height":19},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-20.5,-8.5,0,20.5,-8.5,0,-20.5,8.5,0,20.5,8.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,18,42,18,1,1,42,1],"nuv":[0.023255813953488372,0.05263157894736842,0.9767441860465116,0.05263157894736842,0.023255813953488372,0.9473684210526315,0.9767441860465116,0.9473684210526315],"minPos":{"x":-20.5,"y":-8.5,"z":0},"maxPos":{"x":20.5,"y":8.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/ac/ac93c3a9-4f91-424b-8d99-22819bf809a2.json b/headless/static/remote/battle/import/ac/ac93c3a9-4f91-424b-8d99-22819bf809a2.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/ac/ac93c3a9-4f91-424b-8d99-22819bf809a2.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/ac/ac93c3a9-4f91-424b-8d99-22819bf809a2@f9941.json b/headless/static/remote/battle/import/ac/ac93c3a9-4f91-424b-8d99-22819bf809a2@f9941.json new file mode 100644 index 00000000..2b9c6190 --- /dev/null +++ b/headless/static/remote/battle/import/ac/ac93c3a9-4f91-424b-8d99-22819bf809a2@f9941.json @@ -0,0 +1 @@ +[1,["ac93c3a9-4f91-424b-8d99-22819bf809a2@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 017","rect":{"x":1,"y":1,"width":41,"height":29},"offset":{"x":0,"y":0},"originalSize":{"width":43,"height":31},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-20.5,-14.5,0,20.5,-14.5,0,-20.5,14.5,0,20.5,14.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,30,42,30,1,1,42,1],"nuv":[0.023255813953488372,0.03225806451612903,0.9767441860465116,0.03225806451612903,0.023255813953488372,0.967741935483871,0.9767441860465116,0.967741935483871],"minPos":{"x":-20.5,"y":-14.5,"z":0},"maxPos":{"x":20.5,"y":14.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/ac/ac99ce70-b5af-40d4-9db1-97a9b4a029a1.json b/headless/static/remote/battle/import/ac/ac99ce70-b5af-40d4-9db1-97a9b4a029a1.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/ac/ac99ce70-b5af-40d4-9db1-97a9b4a029a1.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/ac/ac99ce70-b5af-40d4-9db1-97a9b4a029a1@f9941.json b/headless/static/remote/battle/import/ac/ac99ce70-b5af-40d4-9db1-97a9b4a029a1@f9941.json new file mode 100644 index 00000000..eb73aa73 --- /dev/null +++ b/headless/static/remote/battle/import/ac/ac99ce70-b5af-40d4-9db1-97a9b4a029a1@f9941.json @@ -0,0 +1 @@ +[1,["ac99ce70-b5af-40d4-9db1-97a9b4a029a1@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"yinying","rect":{"x":0,"y":0,"width":14,"height":5},"offset":{"x":0,"y":0},"originalSize":{"width":14,"height":5},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-7,-2.5,0,7,-2.5,0,-7,2.5,0,7,2.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,5,14,5,0,0,14,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-7,"y":-2.5,"z":0},"maxPos":{"x":7,"y":2.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/ac/acbf7e84-b9a5-4669-a409-57aea3e9ad8a.json b/headless/static/remote/battle/import/ac/acbf7e84-b9a5-4669-a409-57aea3e9ad8a.json new file mode 100644 index 00000000..4281746d --- /dev/null +++ b/headless/static/remote/battle/import/ac/acbf7e84-b9a5-4669-a409-57aea3e9ad8a.json @@ -0,0 +1 @@ +[1,0,0,[["cc.Asset",["_name","_native"],1]],[[0,0,1,3]],[[0,"guaiA4esTexture",".atlas"],-1],0,0,[],[],[]] diff --git a/headless/static/remote/battle/import/ad/ad215587-f029-4276-b2c0-ba6292da5e83.json b/headless/static/remote/battle/import/ad/ad215587-f029-4276-b2c0-ba6292da5e83.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/ad/ad215587-f029-4276-b2c0-ba6292da5e83.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/ad/ad215587-f029-4276-b2c0-ba6292da5e83@f9941.json b/headless/static/remote/battle/import/ad/ad215587-f029-4276-b2c0-ba6292da5e83@f9941.json new file mode 100644 index 00000000..028d9afe --- /dev/null +++ b/headless/static/remote/battle/import/ad/ad215587-f029-4276-b2c0-ba6292da5e83@f9941.json @@ -0,0 +1 @@ +[1,["ad215587-f029-4276-b2c0-ba6292da5e83@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"TX_S1_shua_0012","rect":{"x":1,"y":0,"width":37,"height":14},"offset":{"x":0.5,"y":0},"originalSize":{"width":38,"height":14},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-18.5,-7,0,18.5,-7,0,-18.5,7,0,18.5,7,0],"indexes":[0,1,2,2,1,3],"uv":[1,14,38,14,1,0,38,0],"nuv":[0.02631578947368421,0,1,0,0.02631578947368421,1,1,1],"minPos":{"x":-18.5,"y":-7,"z":0},"maxPos":{"x":18.5,"y":7,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/ad/ad329478-0a3a-4e0f-9951-ea8a178f72a6.json b/headless/static/remote/battle/import/ad/ad329478-0a3a-4e0f-9951-ea8a178f72a6.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/ad/ad329478-0a3a-4e0f-9951-ea8a178f72a6.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/ad/ad329478-0a3a-4e0f-9951-ea8a178f72a6@f9941.json b/headless/static/remote/battle/import/ad/ad329478-0a3a-4e0f-9951-ea8a178f72a6@f9941.json new file mode 100644 index 00000000..d5e3200f --- /dev/null +++ b/headless/static/remote/battle/import/ad/ad329478-0a3a-4e0f-9951-ea8a178f72a6@f9941.json @@ -0,0 +1 @@ +[1,["ad329478-0a3a-4e0f-9951-ea8a178f72a6@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 010","rect":{"x":1,"y":1,"width":75,"height":94},"offset":{"x":0,"y":0},"originalSize":{"width":77,"height":96},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-37.5,-47,0,37.5,-47,0,-37.5,47,0,37.5,47,0],"indexes":[0,1,2,2,1,3],"uv":[1,95,76,95,1,1,76,1],"nuv":[0.012987012987012988,0.010416666666666666,0.987012987012987,0.010416666666666666,0.012987012987012988,0.9895833333333334,0.987012987012987,0.9895833333333334],"minPos":{"x":-37.5,"y":-47,"z":0},"maxPos":{"x":37.5,"y":47,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/ae/ae0870b4-96fe-4646-9ade-2f48db9518e0.json b/headless/static/remote/battle/import/ae/ae0870b4-96fe-4646-9ade-2f48db9518e0.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/ae/ae0870b4-96fe-4646-9ade-2f48db9518e0.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/ae/ae0870b4-96fe-4646-9ade-2f48db9518e0@f9941.json b/headless/static/remote/battle/import/ae/ae0870b4-96fe-4646-9ade-2f48db9518e0@f9941.json new file mode 100644 index 00000000..91206458 --- /dev/null +++ b/headless/static/remote/battle/import/ae/ae0870b4-96fe-4646-9ade-2f48db9518e0@f9941.json @@ -0,0 +1 @@ +[1,["ae0870b4-96fe-4646-9ade-2f48db9518e0@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"y_meimao_gongji","rect":{"x":0,"y":0,"width":14,"height":17},"offset":{"x":0,"y":0},"originalSize":{"width":14,"height":17},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-7,-8.5,0,7,-8.5,0,-7,8.5,0,7,8.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,17,14,17,0,0,14,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-7,"y":-8.5,"z":0},"maxPos":{"x":7,"y":8.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/ae/ae43d248-143b-4c9f-b93d-be8286fc1565.json b/headless/static/remote/battle/import/ae/ae43d248-143b-4c9f-b93d-be8286fc1565.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/ae/ae43d248-143b-4c9f-b93d-be8286fc1565.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/ae/ae43d248-143b-4c9f-b93d-be8286fc1565@f9941.json b/headless/static/remote/battle/import/ae/ae43d248-143b-4c9f-b93d-be8286fc1565@f9941.json new file mode 100644 index 00000000..798b75a9 --- /dev/null +++ b/headless/static/remote/battle/import/ae/ae43d248-143b-4c9f-b93d-be8286fc1565@f9941.json @@ -0,0 +1 @@ +[1,["ae43d248-143b-4c9f-b93d-be8286fc1565@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"z_bianzi2_bz_g","rect":{"x":17,"y":13,"width":125,"height":22},"offset":{"x":3.5,"y":-2},"originalSize":{"width":152,"height":44},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-62.5,-11,0,62.5,-11,0,-62.5,11,0,62.5,11,0],"indexes":[0,1,2,2,1,3],"uv":[17,31,142,31,17,9,142,9],"nuv":[0.1118421052631579,0.20454545454545456,0.9342105263157895,0.20454545454545456,0.1118421052631579,0.7045454545454546,0.9342105263157895,0.7045454545454546],"minPos":{"x":-62.5,"y":-11,"z":0},"maxPos":{"x":62.5,"y":11,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/b2/b2690697-0ed9-4ed8-b451-468e87cf2266.json b/headless/static/remote/battle/import/b2/b2690697-0ed9-4ed8-b451-468e87cf2266.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/b2/b2690697-0ed9-4ed8-b451-468e87cf2266.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/b2/b2690697-0ed9-4ed8-b451-468e87cf2266@f9941.json b/headless/static/remote/battle/import/b2/b2690697-0ed9-4ed8-b451-468e87cf2266@f9941.json new file mode 100644 index 00000000..5f37d3e1 --- /dev/null +++ b/headless/static/remote/battle/import/b2/b2690697-0ed9-4ed8-b451-468e87cf2266@f9941.json @@ -0,0 +1 @@ +[1,["b2690697-0ed9-4ed8-b451-468e87cf2266@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"y-yanjing_shouji","rect":{"x":0,"y":0,"width":17,"height":15},"offset":{"x":0,"y":0},"originalSize":{"width":17,"height":15},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-8.5,-7.5,0,8.5,-7.5,0,-8.5,7.5,0,8.5,7.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,15,17,15,0,0,17,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-8.5,"y":-7.5,"z":0},"maxPos":{"x":8.5,"y":7.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/b3/b32f733a-d305-4f1c-8542-45f68a22d072.json b/headless/static/remote/battle/import/b3/b32f733a-d305-4f1c-8542-45f68a22d072.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/b3/b32f733a-d305-4f1c-8542-45f68a22d072.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/b3/b32f733a-d305-4f1c-8542-45f68a22d072@f9941.json b/headless/static/remote/battle/import/b3/b32f733a-d305-4f1c-8542-45f68a22d072@f9941.json new file mode 100644 index 00000000..22f5d109 --- /dev/null +++ b/headless/static/remote/battle/import/b3/b32f733a-d305-4f1c-8542-45f68a22d072@f9941.json @@ -0,0 +1 @@ +[1,["b32f733a-d305-4f1c-8542-45f68a22d072@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 013","rect":{"x":1,"y":1,"width":82,"height":83},"offset":{"x":0,"y":0},"originalSize":{"width":84,"height":85},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-41,-41.5,0,41,-41.5,0,-41,41.5,0,41,41.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,84,83,84,1,1,83,1],"nuv":[0.011904761904761904,0.011764705882352941,0.9880952380952381,0.011764705882352941,0.011904761904761904,0.9882352941176471,0.9880952380952381,0.9882352941176471],"minPos":{"x":-41,"y":-41.5,"z":0},"maxPos":{"x":41,"y":41.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/b3/b3bb16f2-78ad-418e-abb7-fb1719ae935c.json b/headless/static/remote/battle/import/b3/b3bb16f2-78ad-418e-abb7-fb1719ae935c.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/b3/b3bb16f2-78ad-418e-abb7-fb1719ae935c.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/b3/b3bb16f2-78ad-418e-abb7-fb1719ae935c@f9941.json b/headless/static/remote/battle/import/b3/b3bb16f2-78ad-418e-abb7-fb1719ae935c@f9941.json new file mode 100644 index 00000000..85b45caa --- /dev/null +++ b/headless/static/remote/battle/import/b3/b3bb16f2-78ad-418e-abb7-fb1719ae935c@f9941.json @@ -0,0 +1 @@ +[1,["b3bb16f2-78ad-418e-abb7-fb1719ae935c@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 008","rect":{"x":1,"y":1,"width":160,"height":146},"offset":{"x":0,"y":0},"originalSize":{"width":162,"height":148},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-80,-73,0,80,-73,0,-80,73,0,80,73,0],"indexes":[0,1,2,2,1,3],"uv":[1,147,161,147,1,1,161,1],"nuv":[0.006172839506172839,0.006756756756756757,0.9938271604938271,0.006756756756756757,0.006172839506172839,0.9932432432432432,0.9938271604938271,0.9932432432432432],"minPos":{"x":-80,"y":-73,"z":0},"maxPos":{"x":80,"y":73,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/b5/b5d7be0c-1350-4548-ac0d-275d2d81d39e.json b/headless/static/remote/battle/import/b5/b5d7be0c-1350-4548-ac0d-275d2d81d39e.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/b5/b5d7be0c-1350-4548-ac0d-275d2d81d39e.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/b5/b5d7be0c-1350-4548-ac0d-275d2d81d39e@f9941.json b/headless/static/remote/battle/import/b5/b5d7be0c-1350-4548-ac0d-275d2d81d39e@f9941.json new file mode 100644 index 00000000..be1f3ca1 --- /dev/null +++ b/headless/static/remote/battle/import/b5/b5d7be0c-1350-4548-ac0d-275d2d81d39e@f9941.json @@ -0,0 +1 @@ +[1,["b5d7be0c-1350-4548-ac0d-275d2d81d39e@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"TX_xsx_00006","rect":{"x":4,"y":3,"width":239,"height":84},"offset":{"x":-0.5,"y":-1.5},"originalSize":{"width":248,"height":87},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-119.5,-42,0,119.5,-42,0,-119.5,42,0,119.5,42,0],"indexes":[0,1,2,2,1,3],"uv":[4,84,243,84,4,0,243,0],"nuv":[0.016129032258064516,0,0.9798387096774194,0,0.016129032258064516,0.9655172413793104,0.9798387096774194,0.9655172413793104],"minPos":{"x":-119.5,"y":-42,"z":0},"maxPos":{"x":119.5,"y":42,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/b6/b6f851cd-8a7b-4fff-9d93-88a6165a4c68.json b/headless/static/remote/battle/import/b6/b6f851cd-8a7b-4fff-9d93-88a6165a4c68.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/b6/b6f851cd-8a7b-4fff-9d93-88a6165a4c68.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/b6/b6f851cd-8a7b-4fff-9d93-88a6165a4c68@f9941.json b/headless/static/remote/battle/import/b6/b6f851cd-8a7b-4fff-9d93-88a6165a4c68@f9941.json new file mode 100644 index 00000000..f9de2938 --- /dev/null +++ b/headless/static/remote/battle/import/b6/b6f851cd-8a7b-4fff-9d93-88a6165a4c68@f9941.json @@ -0,0 +1 @@ +[1,["b6f851cd-8a7b-4fff-9d93-88a6165a4c68@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 006","rect":{"x":1,"y":1,"width":42,"height":28},"offset":{"x":0,"y":0},"originalSize":{"width":44,"height":30},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-21,-14,0,21,-14,0,-21,14,0,21,14,0],"indexes":[0,1,2,2,1,3],"uv":[1,29,43,29,1,1,43,1],"nuv":[0.022727272727272728,0.03333333333333333,0.9772727272727273,0.03333333333333333,0.022727272727272728,0.9666666666666667,0.9772727272727273,0.9666666666666667],"minPos":{"x":-21,"y":-14,"z":0},"maxPos":{"x":21,"y":14,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/b7/b716aa0f-2c37-4287-a6c6-032ab8364bcf.json b/headless/static/remote/battle/import/b7/b716aa0f-2c37-4287-a6c6-032ab8364bcf.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/b7/b716aa0f-2c37-4287-a6c6-032ab8364bcf.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/b7/b716aa0f-2c37-4287-a6c6-032ab8364bcf@f9941.json b/headless/static/remote/battle/import/b7/b716aa0f-2c37-4287-a6c6-032ab8364bcf@f9941.json new file mode 100644 index 00000000..728de122 --- /dev/null +++ b/headless/static/remote/battle/import/b7/b716aa0f-2c37-4287-a6c6-032ab8364bcf@f9941.json @@ -0,0 +1 @@ +[1,["b716aa0f-2c37-4287-a6c6-032ab8364bcf@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"03","rect":{"x":17,"y":5,"width":59,"height":92},"offset":{"x":-3.5,"y":-2.5},"originalSize":{"width":100,"height":97},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-29.5,-46,0,29.5,-46,0,-29.5,46,0,29.5,46,0],"indexes":[0,1,2,2,1,3],"uv":[17,92,76,92,17,0,76,0],"nuv":[0.17,0,0.76,0,0.17,0.9484536082474226,0.76,0.9484536082474226],"minPos":{"x":-29.5,"y":-46,"z":0},"maxPos":{"x":29.5,"y":46,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/b7/b77dd676-c35c-4b6d-9caa-27aeda3f3cfc.json b/headless/static/remote/battle/import/b7/b77dd676-c35c-4b6d-9caa-27aeda3f3cfc.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/b7/b77dd676-c35c-4b6d-9caa-27aeda3f3cfc.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/b7/b77dd676-c35c-4b6d-9caa-27aeda3f3cfc@f9941.json b/headless/static/remote/battle/import/b7/b77dd676-c35c-4b6d-9caa-27aeda3f3cfc@f9941.json new file mode 100644 index 00000000..655e13d8 --- /dev/null +++ b/headless/static/remote/battle/import/b7/b77dd676-c35c-4b6d-9caa-27aeda3f3cfc@f9941.json @@ -0,0 +1 @@ +[1,["b77dd676-c35c-4b6d-9caa-27aeda3f3cfc@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"gq2","rect":{"x":0,"y":4,"width":156,"height":152},"offset":{"x":0,"y":-2},"originalSize":{"width":156,"height":156},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-78,-76,0,78,-76,0,-78,76,0,78,76,0],"indexes":[0,1,2,2,1,3],"uv":[0,152,156,152,0,0,156,0],"nuv":[0,0,1,0,0,0.9743589743589743,1,0.9743589743589743],"minPos":{"x":-78,"y":-76,"z":0},"maxPos":{"x":78,"y":76,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/bb/bb77826b-b6c0-4b07-aeb0-ead7ca451f8d.json b/headless/static/remote/battle/import/bb/bb77826b-b6c0-4b07-aeb0-ead7ca451f8d.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/bb/bb77826b-b6c0-4b07-aeb0-ead7ca451f8d.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/bb/bb77826b-b6c0-4b07-aeb0-ead7ca451f8d@f9941.json b/headless/static/remote/battle/import/bb/bb77826b-b6c0-4b07-aeb0-ead7ca451f8d@f9941.json new file mode 100644 index 00000000..b2aec3a3 --- /dev/null +++ b/headless/static/remote/battle/import/bb/bb77826b-b6c0-4b07-aeb0-ead7ca451f8d@f9941.json @@ -0,0 +1 @@ +[1,["bb77826b-b6c0-4b07-aeb0-ead7ca451f8d@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 002","rect":{"x":1,"y":1,"width":50,"height":95},"offset":{"x":0,"y":0},"originalSize":{"width":52,"height":97},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-25,-47.5,0,25,-47.5,0,-25,47.5,0,25,47.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,96,51,96,1,1,51,1],"nuv":[0.019230769230769232,0.010309278350515464,0.9807692307692307,0.010309278350515464,0.019230769230769232,0.9896907216494846,0.9807692307692307,0.9896907216494846],"minPos":{"x":-25,"y":-47.5,"z":0},"maxPos":{"x":25,"y":47.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/bb/bbf93c62-c99c-42d5-bdfd-1a1fea064af6.json b/headless/static/remote/battle/import/bb/bbf93c62-c99c-42d5-bdfd-1a1fea064af6.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/bb/bbf93c62-c99c-42d5-bdfd-1a1fea064af6.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/bb/bbf93c62-c99c-42d5-bdfd-1a1fea064af6@f9941.json b/headless/static/remote/battle/import/bb/bbf93c62-c99c-42d5-bdfd-1a1fea064af6@f9941.json new file mode 100644 index 00000000..b89b2877 --- /dev/null +++ b/headless/static/remote/battle/import/bb/bbf93c62-c99c-42d5-bdfd-1a1fea064af6@f9941.json @@ -0,0 +1 @@ +[1,["bbf93c62-c99c-42d5-bdfd-1a1fea064af6@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"huiji","rect":{"x":0,"y":0,"width":75,"height":48},"offset":{"x":0,"y":0},"originalSize":{"width":75,"height":48},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-37.5,-24,0,37.5,-24,0,-37.5,24,0,37.5,24,0],"indexes":[0,1,2,2,1,3],"uv":[0,48,75,48,0,0,75,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-37.5,"y":-24,"z":0},"maxPos":{"x":37.5,"y":24,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/bd/bde0c35f-afdc-4df8-b186-aa8f93942b48.json b/headless/static/remote/battle/import/bd/bde0c35f-afdc-4df8-b186-aa8f93942b48.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/bd/bde0c35f-afdc-4df8-b186-aa8f93942b48.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/bd/bde0c35f-afdc-4df8-b186-aa8f93942b48@f9941.json b/headless/static/remote/battle/import/bd/bde0c35f-afdc-4df8-b186-aa8f93942b48@f9941.json new file mode 100644 index 00000000..0d49bc60 --- /dev/null +++ b/headless/static/remote/battle/import/bd/bde0c35f-afdc-4df8-b186-aa8f93942b48@f9941.json @@ -0,0 +1 @@ +[1,["bde0c35f-afdc-4df8-b186-aa8f93942b48@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"guangqiu","rect":{"x":1,"y":1,"width":118,"height":118},"offset":{"x":0,"y":0},"originalSize":{"width":120,"height":120},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-59,-59,0,59,-59,0,-59,59,0,59,59,0],"indexes":[0,1,2,2,1,3],"uv":[1,119,119,119,1,1,119,1],"nuv":[0.008333333333333333,0.008333333333333333,0.9916666666666667,0.008333333333333333,0.008333333333333333,0.9916666666666667,0.9916666666666667,0.9916666666666667],"minPos":{"x":-59,"y":-59,"z":0},"maxPos":{"x":59,"y":59,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/be/bec67e6e-8cac-46c2-85d5-6d51c69e5573.json b/headless/static/remote/battle/import/be/bec67e6e-8cac-46c2-85d5-6d51c69e5573.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/be/bec67e6e-8cac-46c2-85d5-6d51c69e5573.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/be/bec67e6e-8cac-46c2-85d5-6d51c69e5573@f9941.json b/headless/static/remote/battle/import/be/bec67e6e-8cac-46c2-85d5-6d51c69e5573@f9941.json new file mode 100644 index 00000000..b05c14ef --- /dev/null +++ b/headless/static/remote/battle/import/be/bec67e6e-8cac-46c2-85d5-6d51c69e5573@f9941.json @@ -0,0 +1 @@ +[1,["bec67e6e-8cac-46c2-85d5-6d51c69e5573@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"baozha0002","rect":{"x":13,"y":9,"width":174,"height":166},"offset":{"x":0,"y":0.5},"originalSize":{"width":200,"height":185},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-87,-83,0,87,-83,0,-87,83,0,87,83,0],"indexes":[0,1,2,2,1,3],"uv":[13,176,187,176,13,10,187,10],"nuv":[0.065,0.05405405405405406,0.935,0.05405405405405406,0.065,0.9513513513513514,0.935,0.9513513513513514],"minPos":{"x":-87,"y":-83,"z":0},"maxPos":{"x":87,"y":83,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/bf/bfb5a670-2c13-425f-8b50-d42c6f880907.json b/headless/static/remote/battle/import/bf/bfb5a670-2c13-425f-8b50-d42c6f880907.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/bf/bfb5a670-2c13-425f-8b50-d42c6f880907.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/bf/bfb5a670-2c13-425f-8b50-d42c6f880907@f9941.json b/headless/static/remote/battle/import/bf/bfb5a670-2c13-425f-8b50-d42c6f880907@f9941.json new file mode 100644 index 00000000..5acb9512 --- /dev/null +++ b/headless/static/remote/battle/import/bf/bfb5a670-2c13-425f-8b50-d42c6f880907@f9941.json @@ -0,0 +1 @@ +[1,["bfb5a670-2c13-425f-8b50-d42c6f880907@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"Energy 007 Impact Radial_00012","rect":{"x":4,"y":5,"width":24,"height":24},"offset":{"x":-0.5,"y":-0.5},"originalSize":{"width":33,"height":33},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-12,-12,0,12,-12,0,-12,12,0,12,12,0],"indexes":[0,1,2,2,1,3],"uv":[4,28,28,28,4,4,28,4],"nuv":[0.12121212121212122,0.12121212121212122,0.8484848484848485,0.12121212121212122,0.12121212121212122,0.8484848484848485,0.8484848484848485,0.8484848484848485],"minPos":{"x":-12,"y":-12,"z":0},"maxPos":{"x":12,"y":12,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/c0/c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a.json b/headless/static/remote/battle/import/c0/c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/c0/c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/c0/c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a@f9941.json b/headless/static/remote/battle/import/c0/c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a@f9941.json new file mode 100644 index 00000000..3ec33002 --- /dev/null +++ b/headless/static/remote/battle/import/c0/c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a@f9941.json @@ -0,0 +1 @@ +[1,["c0371fe9-ccaf-40b8-9c1c-3ae92c6f5f8a@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"zhouyu_skill2_2","rect":{"x":2,"y":2,"width":709,"height":534},"offset":{"x":0,"y":0},"originalSize":{"width":713,"height":538},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-354.5,-267,0,354.5,-267,0,-354.5,267,0,354.5,267,0],"indexes":[0,1,2,2,1,3],"uv":[2,536,711,536,2,2,711,2],"nuv":[0.002805049088359046,0.0037174721189591076,0.9971949509116409,0.0037174721189591076,0.002805049088359046,0.9962825278810409,0.9971949509116409,0.9962825278810409],"minPos":{"x":-354.5,"y":-267,"z":0},"maxPos":{"x":354.5,"y":267,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/c0/c059355d-3503-4aa1-87c0-38b81b2050e2.json b/headless/static/remote/battle/import/c0/c059355d-3503-4aa1-87c0-38b81b2050e2.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/c0/c059355d-3503-4aa1-87c0-38b81b2050e2.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/c0/c059355d-3503-4aa1-87c0-38b81b2050e2@f9941.json b/headless/static/remote/battle/import/c0/c059355d-3503-4aa1-87c0-38b81b2050e2@f9941.json new file mode 100644 index 00000000..24bcc3da --- /dev/null +++ b/headless/static/remote/battle/import/c0/c059355d-3503-4aa1-87c0-38b81b2050e2@f9941.json @@ -0,0 +1 @@ +[1,["c059355d-3503-4aa1-87c0-38b81b2050e2@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"002","rect":{"x":0,"y":0,"width":222,"height":90},"offset":{"x":0,"y":0},"originalSize":{"width":222,"height":90},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-111,-45,0,111,-45,0,-111,45,0,111,45,0],"indexes":[0,1,2,2,1,3],"uv":[0,90,222,90,0,0,222,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-111,"y":-45,"z":0},"maxPos":{"x":111,"y":45,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/c2/c26a2ac3-057f-4de8-8c06-9ff3e1c48017@f9941.json b/headless/static/remote/battle/import/c2/c26a2ac3-057f-4de8-8c06-9ff3e1c48017@f9941.json new file mode 100644 index 00000000..5e1a4f66 --- /dev/null +++ b/headless/static/remote/battle/import/c2/c26a2ac3-057f-4de8-8c06-9ff3e1c48017@f9941.json @@ -0,0 +1 @@ +[1,["c26a2ac3-057f-4de8-8c06-9ff3e1c48017@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"001妙蛙种子","rect":{"x":2,"y":2,"width":868,"height":138},"offset":{"x":0,"y":0},"originalSize":{"width":872,"height":142},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-434,-69,0,434,-69,0,-434,69,0,434,69,0],"indexes":[0,1,2,2,1,3],"uv":[2,140,870,140,2,2,870,2],"nuv":[0.0022935779816513763,0.014084507042253521,0.9977064220183486,0.014084507042253521,0.0022935779816513763,0.9859154929577465,0.9977064220183486,0.9859154929577465],"minPos":{"x":-434,"y":-69,"z":0},"maxPos":{"x":434,"y":69,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/c3/c3019d06-733d-4076-804b-ef4165b1be57.json b/headless/static/remote/battle/import/c3/c3019d06-733d-4076-804b-ef4165b1be57.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/c3/c3019d06-733d-4076-804b-ef4165b1be57.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/c3/c3019d06-733d-4076-804b-ef4165b1be57@f9941.json b/headless/static/remote/battle/import/c3/c3019d06-733d-4076-804b-ef4165b1be57@f9941.json new file mode 100644 index 00000000..e0c7995e --- /dev/null +++ b/headless/static/remote/battle/import/c3/c3019d06-733d-4076-804b-ef4165b1be57@f9941.json @@ -0,0 +1 @@ +[1,["c3019d06-733d-4076-804b-ef4165b1be57@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"zhongzi_bz","rect":{"x":0,"y":0,"width":76,"height":71},"offset":{"x":0,"y":0},"originalSize":{"width":76,"height":71},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-38,-35.5,0,38,-35.5,0,-38,35.5,0,38,35.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,71,76,71,0,0,76,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-38,"y":-35.5,"z":0},"maxPos":{"x":38,"y":35.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/c3/c3c78943-a4cd-4762-a723-86206969885e.json b/headless/static/remote/battle/import/c3/c3c78943-a4cd-4762-a723-86206969885e.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/c3/c3c78943-a4cd-4762-a723-86206969885e.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/c3/c3c78943-a4cd-4762-a723-86206969885e@f9941.json b/headless/static/remote/battle/import/c3/c3c78943-a4cd-4762-a723-86206969885e@f9941.json new file mode 100644 index 00000000..7f9fb66d --- /dev/null +++ b/headless/static/remote/battle/import/c3/c3c78943-a4cd-4762-a723-86206969885e@f9941.json @@ -0,0 +1 @@ +[1,["c3c78943-a4cd-4762-a723-86206969885e@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"z_yanjing_gongji","rect":{"x":0,"y":0,"width":7,"height":16},"offset":{"x":0,"y":0},"originalSize":{"width":7,"height":16},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-3.5,-8,0,3.5,-8,0,-3.5,8,0,3.5,8,0],"indexes":[0,1,2,2,1,3],"uv":[0,16,7,16,0,0,7,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-3.5,"y":-8,"z":0},"maxPos":{"x":3.5,"y":8,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/c4/c4a53c5d-b489-4b37-a5ca-72bfe7ffe452.json b/headless/static/remote/battle/import/c4/c4a53c5d-b489-4b37-a5ca-72bfe7ffe452.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/c4/c4a53c5d-b489-4b37-a5ca-72bfe7ffe452.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/c4/c4a53c5d-b489-4b37-a5ca-72bfe7ffe452@f9941.json b/headless/static/remote/battle/import/c4/c4a53c5d-b489-4b37-a5ca-72bfe7ffe452@f9941.json new file mode 100644 index 00000000..35fd914c --- /dev/null +++ b/headless/static/remote/battle/import/c4/c4a53c5d-b489-4b37-a5ca-72bfe7ffe452@f9941.json @@ -0,0 +1 @@ +[1,["c4a53c5d-b489-4b37-a5ca-72bfe7ffe452@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"atk_guangci3_0025","rect":{"x":16,"y":11,"width":18,"height":16},"offset":{"x":8,"y":-5.5},"originalSize":{"width":34,"height":27},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-9,-8,0,9,-8,0,-9,8,0,9,8,0],"indexes":[0,1,2,2,1,3],"uv":[16,16,34,16,16,0,34,0],"nuv":[0.47058823529411764,0,1,0,0.47058823529411764,0.5925925925925926,1,0.5925925925925926],"minPos":{"x":-9,"y":-8,"z":0},"maxPos":{"x":9,"y":8,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/c4/c4fba28b-29af-4666-b7d1-0720ce76524b.json b/headless/static/remote/battle/import/c4/c4fba28b-29af-4666-b7d1-0720ce76524b.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/c4/c4fba28b-29af-4666-b7d1-0720ce76524b.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/c4/c4fba28b-29af-4666-b7d1-0720ce76524b@f9941.json b/headless/static/remote/battle/import/c4/c4fba28b-29af-4666-b7d1-0720ce76524b@f9941.json new file mode 100644 index 00000000..85c1b196 --- /dev/null +++ b/headless/static/remote/battle/import/c4/c4fba28b-29af-4666-b7d1-0720ce76524b@f9941.json @@ -0,0 +1 @@ +[1,["c4fba28b-29af-4666-b7d1-0720ce76524b@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 009","rect":{"x":1,"y":1,"width":56,"height":86},"offset":{"x":0,"y":0},"originalSize":{"width":58,"height":88},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-28,-43,0,28,-43,0,-28,43,0,28,43,0],"indexes":[0,1,2,2,1,3],"uv":[1,87,57,87,1,1,57,1],"nuv":[0.017241379310344827,0.011363636363636364,0.9827586206896551,0.011363636363636364,0.017241379310344827,0.9886363636363636,0.9827586206896551,0.9886363636363636],"minPos":{"x":-28,"y":-43,"z":0},"maxPos":{"x":28,"y":43,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/c6/c6e672c2-f040-4f87-8f4b-2c83be6d69a6.json b/headless/static/remote/battle/import/c6/c6e672c2-f040-4f87-8f4b-2c83be6d69a6.json new file mode 100644 index 00000000..34c4d785 --- /dev/null +++ b/headless/static/remote/battle/import/c6/c6e672c2-f040-4f87-8f4b-2c83be6d69a6.json @@ -0,0 +1 @@ +[1,0,0,[["cc.Asset",["_name","_native"],1]],[[0,0,1,3]],[[0,"guaiA4es",".spine"],-1],0,0,[],[],[]] diff --git a/headless/static/remote/battle/import/c7/c70b94ef-5ff6-4295-992a-5579a2d6458b.json b/headless/static/remote/battle/import/c7/c70b94ef-5ff6-4295-992a-5579a2d6458b.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/c7/c70b94ef-5ff6-4295-992a-5579a2d6458b.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/c7/c70b94ef-5ff6-4295-992a-5579a2d6458b@f9941.json b/headless/static/remote/battle/import/c7/c70b94ef-5ff6-4295-992a-5579a2d6458b@f9941.json new file mode 100644 index 00000000..8a90727b --- /dev/null +++ b/headless/static/remote/battle/import/c7/c70b94ef-5ff6-4295-992a-5579a2d6458b@f9941.json @@ -0,0 +1 @@ +[1,["c70b94ef-5ff6-4295-992a-5579a2d6458b@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 012","rect":{"x":1,"y":1,"width":112,"height":145},"offset":{"x":0,"y":0},"originalSize":{"width":114,"height":147},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-56,-72.5,0,56,-72.5,0,-56,72.5,0,56,72.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,146,113,146,1,1,113,1],"nuv":[0.008771929824561403,0.006802721088435374,0.9912280701754386,0.006802721088435374,0.008771929824561403,0.9931972789115646,0.9912280701754386,0.9931972789115646],"minPos":{"x":-56,"y":-72.5,"z":0},"maxPos":{"x":56,"y":72.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/c7/c71daad3-b3f3-4204-9416-c885a6303ac9.json b/headless/static/remote/battle/import/c7/c71daad3-b3f3-4204-9416-c885a6303ac9.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/c7/c71daad3-b3f3-4204-9416-c885a6303ac9.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/c7/c71daad3-b3f3-4204-9416-c885a6303ac9@f9941.json b/headless/static/remote/battle/import/c7/c71daad3-b3f3-4204-9416-c885a6303ac9@f9941.json new file mode 100644 index 00000000..e024575d --- /dev/null +++ b/headless/static/remote/battle/import/c7/c71daad3-b3f3-4204-9416-c885a6303ac9@f9941.json @@ -0,0 +1 @@ +[1,["c71daad3-b3f3-4204-9416-c885a6303ac9@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 002","rect":{"x":1,"y":1,"width":50,"height":95},"offset":{"x":0,"y":0},"originalSize":{"width":52,"height":97},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-25,-47.5,0,25,-47.5,0,-25,47.5,0,25,47.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,96,51,96,1,1,51,1],"nuv":[0.019230769230769232,0.010309278350515464,0.9807692307692307,0.010309278350515464,0.019230769230769232,0.9896907216494846,0.9807692307692307,0.9896907216494846],"minPos":{"x":-25,"y":-47.5,"z":0},"maxPos":{"x":25,"y":47.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/ca/ca65e2f4-8510-484c-8dd2-f4eaef7f66c7.json b/headless/static/remote/battle/import/ca/ca65e2f4-8510-484c-8dd2-f4eaef7f66c7.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/ca/ca65e2f4-8510-484c-8dd2-f4eaef7f66c7.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/ca/ca65e2f4-8510-484c-8dd2-f4eaef7f66c7@f9941.json b/headless/static/remote/battle/import/ca/ca65e2f4-8510-484c-8dd2-f4eaef7f66c7@f9941.json new file mode 100644 index 00000000..1cb12e7d --- /dev/null +++ b/headless/static/remote/battle/import/ca/ca65e2f4-8510-484c-8dd2-f4eaef7f66c7@f9941.json @@ -0,0 +1 @@ +[1,["ca65e2f4-8510-484c-8dd2-f4eaef7f66c7@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"hua_a2","rect":{"x":0,"y":0,"width":14,"height":18},"offset":{"x":0,"y":0},"originalSize":{"width":14,"height":18},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-7,-9,0,7,-9,0,-7,9,0,7,9,0],"indexes":[0,1,2,2,1,3],"uv":[0,18,14,18,0,0,14,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-7,"y":-9,"z":0},"maxPos":{"x":7,"y":9,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/ca/ca86f45b-2472-40ee-b653-259dbe441007.json b/headless/static/remote/battle/import/ca/ca86f45b-2472-40ee-b653-259dbe441007.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/ca/ca86f45b-2472-40ee-b653-259dbe441007.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/ca/ca86f45b-2472-40ee-b653-259dbe441007@f9941.json b/headless/static/remote/battle/import/ca/ca86f45b-2472-40ee-b653-259dbe441007@f9941.json new file mode 100644 index 00000000..7177ca0e --- /dev/null +++ b/headless/static/remote/battle/import/ca/ca86f45b-2472-40ee-b653-259dbe441007@f9941.json @@ -0,0 +1 @@ +[1,["ca86f45b-2472-40ee-b653-259dbe441007@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"suduxian_mi","rect":{"x":0,"y":0,"width":21,"height":57},"offset":{"x":0,"y":0},"originalSize":{"width":21,"height":57},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-10.5,-28.5,0,10.5,-28.5,0,-10.5,28.5,0,10.5,28.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,57,21,57,0,0,21,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-10.5,"y":-28.5,"z":0},"maxPos":{"x":10.5,"y":28.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/cb/cb5ace05-d558-40ee-8bd2-ef9401e3c19b.json b/headless/static/remote/battle/import/cb/cb5ace05-d558-40ee-8bd2-ef9401e3c19b.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/cb/cb5ace05-d558-40ee-8bd2-ef9401e3c19b.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/cb/cb5ace05-d558-40ee-8bd2-ef9401e3c19b@f9941.json b/headless/static/remote/battle/import/cb/cb5ace05-d558-40ee-8bd2-ef9401e3c19b@f9941.json new file mode 100644 index 00000000..2b9b4719 --- /dev/null +++ b/headless/static/remote/battle/import/cb/cb5ace05-d558-40ee-8bd2-ef9401e3c19b@f9941.json @@ -0,0 +1 @@ +[1,["cb5ace05-d558-40ee-8bd2-ef9401e3c19b@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 014","rect":{"x":1,"y":1,"width":104,"height":127},"offset":{"x":0,"y":0},"originalSize":{"width":106,"height":129},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-52,-63.5,0,52,-63.5,0,-52,63.5,0,52,63.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,128,105,128,1,1,105,1],"nuv":[0.009433962264150943,0.007751937984496124,0.9905660377358491,0.007751937984496124,0.009433962264150943,0.9922480620155039,0.9905660377358491,0.9922480620155039],"minPos":{"x":-52,"y":-63.5,"z":0},"maxPos":{"x":52,"y":63.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/cc/cc320ae3-2792-40b4-adce-011d97efc064.json b/headless/static/remote/battle/import/cc/cc320ae3-2792-40b4-adce-011d97efc064.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/cc/cc320ae3-2792-40b4-adce-011d97efc064.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/cc/cc320ae3-2792-40b4-adce-011d97efc064@f9941.json b/headless/static/remote/battle/import/cc/cc320ae3-2792-40b4-adce-011d97efc064@f9941.json new file mode 100644 index 00000000..5be9d2b7 --- /dev/null +++ b/headless/static/remote/battle/import/cc/cc320ae3-2792-40b4-adce-011d97efc064@f9941.json @@ -0,0 +1 @@ +[1,["cc320ae3-2792-40b4-adce-011d97efc064@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"07","rect":{"x":0,"y":0,"width":318,"height":276},"offset":{"x":0,"y":0},"originalSize":{"width":318,"height":276},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-159,-138,0,159,-138,0,-159,138,0,159,138,0],"indexes":[0,1,2,2,1,3],"uv":[0,276,318,276,0,0,318,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-159,"y":-138,"z":0},"maxPos":{"x":159,"y":138,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/ce/ce94d072-b86a-43e2-af31-374069cf363e.json b/headless/static/remote/battle/import/ce/ce94d072-b86a-43e2-af31-374069cf363e.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/ce/ce94d072-b86a-43e2-af31-374069cf363e.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/ce/ce94d072-b86a-43e2-af31-374069cf363e@f9941.json b/headless/static/remote/battle/import/ce/ce94d072-b86a-43e2-af31-374069cf363e@f9941.json new file mode 100644 index 00000000..28f72674 --- /dev/null +++ b/headless/static/remote/battle/import/ce/ce94d072-b86a-43e2-af31-374069cf363e@f9941.json @@ -0,0 +1 @@ +[1,["ce94d072-b86a-43e2-af31-374069cf363e@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"tx_baodian03","rect":{"x":0,"y":10,"width":49,"height":80},"offset":{"x":-0.5,"y":0},"originalSize":{"width":50,"height":100},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-24.5,-40,0,24.5,-40,0,-24.5,40,0,24.5,40,0],"indexes":[0,1,2,2,1,3],"uv":[0,90,49,90,0,10,49,10],"nuv":[0,0.1,0.98,0.1,0,0.9,0.98,0.9],"minPos":{"x":-24.5,"y":-40,"z":0},"maxPos":{"x":24.5,"y":40,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/d2/d2b965cd-897e-455b-8d21-5ed3bf0902be.json b/headless/static/remote/battle/import/d2/d2b965cd-897e-455b-8d21-5ed3bf0902be.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/d2/d2b965cd-897e-455b-8d21-5ed3bf0902be.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/d2/d2b965cd-897e-455b-8d21-5ed3bf0902be@f9941.json b/headless/static/remote/battle/import/d2/d2b965cd-897e-455b-8d21-5ed3bf0902be@f9941.json new file mode 100644 index 00000000..3fd1fe76 --- /dev/null +++ b/headless/static/remote/battle/import/d2/d2b965cd-897e-455b-8d21-5ed3bf0902be@f9941.json @@ -0,0 +1 @@ +[1,["d2b965cd-897e-455b-8d21-5ed3bf0902be@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"liuguang","rect":{"x":0,"y":5,"width":100,"height":19},"offset":{"x":-1,"y":-1.5},"originalSize":{"width":102,"height":26},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-50,-9.5,0,50,-9.5,0,-50,9.5,0,50,9.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,21,100,21,0,2,100,2],"nuv":[0,0.07692307692307693,0.9803921568627451,0.07692307692307693,0,0.8076923076923077,0.9803921568627451,0.8076923076923077],"minPos":{"x":-50,"y":-9.5,"z":0},"maxPos":{"x":50,"y":9.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/d3/d330c1ef-5e51-4335-980b-d535892c4a18.json b/headless/static/remote/battle/import/d3/d330c1ef-5e51-4335-980b-d535892c4a18.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/d3/d330c1ef-5e51-4335-980b-d535892c4a18.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/d3/d330c1ef-5e51-4335-980b-d535892c4a18@f9941.json b/headless/static/remote/battle/import/d3/d330c1ef-5e51-4335-980b-d535892c4a18@f9941.json new file mode 100644 index 00000000..bb0d5eb3 --- /dev/null +++ b/headless/static/remote/battle/import/d3/d330c1ef-5e51-4335-980b-d535892c4a18@f9941.json @@ -0,0 +1 @@ +[1,["d330c1ef-5e51-4335-980b-d535892c4a18@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"baozha0005","rect":{"x":32,"y":16,"width":152,"height":153},"offset":{"x":8,"y":0},"originalSize":{"width":200,"height":185},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-76,-76.5,0,76,-76.5,0,-76,76.5,0,76,76.5,0],"indexes":[0,1,2,2,1,3],"uv":[32,169,184,169,32,16,184,16],"nuv":[0.16,0.08648648648648649,0.92,0.08648648648648649,0.16,0.9135135135135135,0.92,0.9135135135135135],"minPos":{"x":-76,"y":-76.5,"z":0},"maxPos":{"x":76,"y":76.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/d3/d3a8da1f-daa5-4e52-929a-edf95edb8275.json b/headless/static/remote/battle/import/d3/d3a8da1f-daa5-4e52-929a-edf95edb8275.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/d3/d3a8da1f-daa5-4e52-929a-edf95edb8275.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/d3/d3a8da1f-daa5-4e52-929a-edf95edb8275@f9941.json b/headless/static/remote/battle/import/d3/d3a8da1f-daa5-4e52-929a-edf95edb8275@f9941.json new file mode 100644 index 00000000..ea8adf0f --- /dev/null +++ b/headless/static/remote/battle/import/d3/d3a8da1f-daa5-4e52-929a-edf95edb8275@f9941.json @@ -0,0 +1 @@ +[1,["d3a8da1f-daa5-4e52-929a-edf95edb8275@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"TX_xsx_00004","rect":{"x":6,"y":3,"width":234,"height":81},"offset":{"x":-1,"y":0},"originalSize":{"width":248,"height":87},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-117,-40.5,0,117,-40.5,0,-117,40.5,0,117,40.5,0],"indexes":[0,1,2,2,1,3],"uv":[6,84,240,84,6,3,240,3],"nuv":[0.024193548387096774,0.034482758620689655,0.967741935483871,0.034482758620689655,0.024193548387096774,0.9655172413793104,0.967741935483871,0.9655172413793104],"minPos":{"x":-117,"y":-40.5,"z":0},"maxPos":{"x":117,"y":40.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/d4/d4feff1b-d3c0-4001-9a95-320adb8ab285.json b/headless/static/remote/battle/import/d4/d4feff1b-d3c0-4001-9a95-320adb8ab285.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/d4/d4feff1b-d3c0-4001-9a95-320adb8ab285.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/d4/d4feff1b-d3c0-4001-9a95-320adb8ab285@f9941.json b/headless/static/remote/battle/import/d4/d4feff1b-d3c0-4001-9a95-320adb8ab285@f9941.json new file mode 100644 index 00000000..637902db --- /dev/null +++ b/headless/static/remote/battle/import/d4/d4feff1b-d3c0-4001-9a95-320adb8ab285@f9941.json @@ -0,0 +1 @@ +[1,["d4feff1b-d3c0-4001-9a95-320adb8ab285@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"y_bianzi2_bz","rect":{"x":0,"y":0,"width":76,"height":17},"offset":{"x":0,"y":0},"originalSize":{"width":76,"height":17},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-38,-8.5,0,38,-8.5,0,-38,8.5,0,38,8.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,17,76,17,0,0,76,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-38,"y":-8.5,"z":0},"maxPos":{"x":38,"y":8.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/d6/d602f103-bb41-4a24-85c7-d97fccaadf24.json b/headless/static/remote/battle/import/d6/d602f103-bb41-4a24-85c7-d97fccaadf24.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/d6/d602f103-bb41-4a24-85c7-d97fccaadf24.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/d6/d602f103-bb41-4a24-85c7-d97fccaadf24@f9941.json b/headless/static/remote/battle/import/d6/d602f103-bb41-4a24-85c7-d97fccaadf24@f9941.json new file mode 100644 index 00000000..eb65c571 --- /dev/null +++ b/headless/static/remote/battle/import/d6/d602f103-bb41-4a24-85c7-d97fccaadf24@f9941.json @@ -0,0 +1 @@ +[1,["d602f103-bb41-4a24-85c7-d97fccaadf24@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"tx_baodian05","rect":{"x":2,"y":0,"width":48,"height":67},"offset":{"x":1,"y":16.5},"originalSize":{"width":50,"height":100},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-24,-33.5,0,24,-33.5,0,-24,33.5,0,24,33.5,0],"indexes":[0,1,2,2,1,3],"uv":[2,100,50,100,2,33,50,33],"nuv":[0.04,0.33,1,0.33,0.04,1,1,1],"minPos":{"x":-24,"y":-33.5,"z":0},"maxPos":{"x":24,"y":33.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/d6/d63dc130-416b-422c-a90f-273895f4db73.json b/headless/static/remote/battle/import/d6/d63dc130-416b-422c-a90f-273895f4db73.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/d6/d63dc130-416b-422c-a90f-273895f4db73.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/d6/d63dc130-416b-422c-a90f-273895f4db73@f9941.json b/headless/static/remote/battle/import/d6/d63dc130-416b-422c-a90f-273895f4db73@f9941.json new file mode 100644 index 00000000..c36800a6 --- /dev/null +++ b/headless/static/remote/battle/import/d6/d63dc130-416b-422c-a90f-273895f4db73@f9941.json @@ -0,0 +1 @@ +[1,["d63dc130-416b-422c-a90f-273895f4db73@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"atk_guangci3_0027","rect":{"x":5,"y":5,"width":28,"height":22},"offset":{"x":2,"y":-2.5},"originalSize":{"width":34,"height":27},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-14,-11,0,14,-11,0,-14,11,0,14,11,0],"indexes":[0,1,2,2,1,3],"uv":[5,22,33,22,5,0,33,0],"nuv":[0.14705882352941177,0,0.9705882352941176,0,0.14705882352941177,0.8148148148148148,0.9705882352941176,0.8148148148148148],"minPos":{"x":-14,"y":-11,"z":0},"maxPos":{"x":14,"y":11,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/d8/d8b2f923-b61d-4e95-820a-7ccc0d9031bc.json b/headless/static/remote/battle/import/d8/d8b2f923-b61d-4e95-820a-7ccc0d9031bc.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/d8/d8b2f923-b61d-4e95-820a-7ccc0d9031bc.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/d8/d8b2f923-b61d-4e95-820a-7ccc0d9031bc@f9941.json b/headless/static/remote/battle/import/d8/d8b2f923-b61d-4e95-820a-7ccc0d9031bc@f9941.json new file mode 100644 index 00000000..2f583164 --- /dev/null +++ b/headless/static/remote/battle/import/d8/d8b2f923-b61d-4e95-820a-7ccc0d9031bc@f9941.json @@ -0,0 +1 @@ +[1,["d8b2f923-b61d-4e95-820a-7ccc0d9031bc@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 007","rect":{"x":1,"y":1,"width":111,"height":129},"offset":{"x":0,"y":0},"originalSize":{"width":113,"height":131},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-55.5,-64.5,0,55.5,-64.5,0,-55.5,64.5,0,55.5,64.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,130,112,130,1,1,112,1],"nuv":[0.008849557522123894,0.007633587786259542,0.9911504424778761,0.007633587786259542,0.008849557522123894,0.9923664122137404,0.9911504424778761,0.9923664122137404],"minPos":{"x":-55.5,"y":-64.5,"z":0},"maxPos":{"x":55.5,"y":64.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/d8/d8c705a6-a4c6-4936-b706-56e89e9bf344.json b/headless/static/remote/battle/import/d8/d8c705a6-a4c6-4936-b706-56e89e9bf344.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/d8/d8c705a6-a4c6-4936-b706-56e89e9bf344.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/d8/d8c705a6-a4c6-4936-b706-56e89e9bf344@f9941.json b/headless/static/remote/battle/import/d8/d8c705a6-a4c6-4936-b706-56e89e9bf344@f9941.json new file mode 100644 index 00000000..6f867c69 --- /dev/null +++ b/headless/static/remote/battle/import/d8/d8c705a6-a4c6-4936-b706-56e89e9bf344@f9941.json @@ -0,0 +1 @@ +[1,["d8c705a6-a4c6-4936-b706-56e89e9bf344@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 007","rect":{"x":1,"y":1,"width":111,"height":129},"offset":{"x":0,"y":0},"originalSize":{"width":113,"height":131},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-55.5,-64.5,0,55.5,-64.5,0,-55.5,64.5,0,55.5,64.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,130,112,130,1,1,112,1],"nuv":[0.008849557522123894,0.007633587786259542,0.9911504424778761,0.007633587786259542,0.008849557522123894,0.9923664122137404,0.9911504424778761,0.9923664122137404],"minPos":{"x":-55.5,"y":-64.5,"z":0},"maxPos":{"x":55.5,"y":64.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/dc/dc059148-a12d-4947-a708-ae642f146745.json b/headless/static/remote/battle/import/dc/dc059148-a12d-4947-a708-ae642f146745.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/dc/dc059148-a12d-4947-a708-ae642f146745.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/dc/dc059148-a12d-4947-a708-ae642f146745@f9941.json b/headless/static/remote/battle/import/dc/dc059148-a12d-4947-a708-ae642f146745@f9941.json new file mode 100644 index 00000000..0750d622 --- /dev/null +++ b/headless/static/remote/battle/import/dc/dc059148-a12d-4947-a708-ae642f146745@f9941.json @@ -0,0 +1 @@ +[1,["dc059148-a12d-4947-a708-ae642f146745@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"MAP6_2","rect":{"x":0,"y":5,"width":1200,"height":419},"offset":{"x":0,"y":8},"originalSize":{"width":1200,"height":445},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-600,-209.5,0,600,-209.5,0,-600,209.5,0,600,209.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,440,1200,440,0,21,1200,21],"nuv":[0,0.04719101123595506,1,0.04719101123595506,0,0.9887640449438202,1,0.9887640449438202],"minPos":{"x":-600,"y":-209.5,"z":0},"maxPos":{"x":600,"y":209.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/dc/dc64288e-f16e-4fa1-bec7-f79a9b9ec72b.json b/headless/static/remote/battle/import/dc/dc64288e-f16e-4fa1-bec7-f79a9b9ec72b.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/dc/dc64288e-f16e-4fa1-bec7-f79a9b9ec72b.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/dc/dc64288e-f16e-4fa1-bec7-f79a9b9ec72b@f9941.json b/headless/static/remote/battle/import/dc/dc64288e-f16e-4fa1-bec7-f79a9b9ec72b@f9941.json new file mode 100644 index 00000000..313a5503 --- /dev/null +++ b/headless/static/remote/battle/import/dc/dc64288e-f16e-4fa1-bec7-f79a9b9ec72b@f9941.json @@ -0,0 +1 @@ +[1,["dc64288e-f16e-4fa1-bec7-f79a9b9ec72b@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"02","rect":{"x":16,"y":5,"width":59,"height":84},"offset":{"x":-4.5,"y":1.5},"originalSize":{"width":100,"height":97},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-29.5,-42,0,29.5,-42,0,-29.5,42,0,29.5,42,0],"indexes":[0,1,2,2,1,3],"uv":[16,92,75,92,16,8,75,8],"nuv":[0.16,0.08247422680412371,0.75,0.08247422680412371,0.16,0.9484536082474226,0.75,0.9484536082474226],"minPos":{"x":-29.5,"y":-42,"z":0},"maxPos":{"x":29.5,"y":42,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/dc/dc70290b-e14b-4d59-81a8-e037fa6b587c.json b/headless/static/remote/battle/import/dc/dc70290b-e14b-4d59-81a8-e037fa6b587c.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/dc/dc70290b-e14b-4d59-81a8-e037fa6b587c.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/dc/dc70290b-e14b-4d59-81a8-e037fa6b587c@f9941.json b/headless/static/remote/battle/import/dc/dc70290b-e14b-4d59-81a8-e037fa6b587c@f9941.json new file mode 100644 index 00000000..6c5568a2 --- /dev/null +++ b/headless/static/remote/battle/import/dc/dc70290b-e14b-4d59-81a8-e037fa6b587c@f9941.json @@ -0,0 +1 @@ +[1,["dc70290b-e14b-4d59-81a8-e037fa6b587c@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 011","rect":{"x":1,"y":1,"width":72,"height":81},"offset":{"x":0,"y":0},"originalSize":{"width":74,"height":83},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-36,-40.5,0,36,-40.5,0,-36,40.5,0,36,40.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,82,73,82,1,1,73,1],"nuv":[0.013513513513513514,0.012048192771084338,0.9864864864864865,0.012048192771084338,0.013513513513513514,0.9879518072289156,0.9864864864864865,0.9879518072289156],"minPos":{"x":-36,"y":-40.5,"z":0},"maxPos":{"x":36,"y":40.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/dc/dce246d4-116d-4f36-893b-43a64365169d.json b/headless/static/remote/battle/import/dc/dce246d4-116d-4f36-893b-43a64365169d.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/dc/dce246d4-116d-4f36-893b-43a64365169d.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/dc/dce246d4-116d-4f36-893b-43a64365169d@f9941.json b/headless/static/remote/battle/import/dc/dce246d4-116d-4f36-893b-43a64365169d@f9941.json new file mode 100644 index 00000000..fc299766 --- /dev/null +++ b/headless/static/remote/battle/import/dc/dce246d4-116d-4f36-893b-43a64365169d@f9941.json @@ -0,0 +1 @@ +[1,["dce246d4-116d-4f36-893b-43a64365169d@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"baozha0001","rect":{"x":53,"y":18,"width":117,"height":149},"offset":{"x":11.5,"y":0},"originalSize":{"width":200,"height":185},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-58.5,-74.5,0,58.5,-74.5,0,-58.5,74.5,0,58.5,74.5,0],"indexes":[0,1,2,2,1,3],"uv":[53,167,170,167,53,18,170,18],"nuv":[0.265,0.0972972972972973,0.85,0.0972972972972973,0.265,0.9027027027027027,0.85,0.9027027027027027],"minPos":{"x":-58.5,"y":-74.5,"z":0},"maxPos":{"x":58.5,"y":74.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/dd/dd17b176-c0e4-471b-953d-157482a7e61e.json b/headless/static/remote/battle/import/dd/dd17b176-c0e4-471b-953d-157482a7e61e.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/dd/dd17b176-c0e4-471b-953d-157482a7e61e.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/dd/dd17b176-c0e4-471b-953d-157482a7e61e@f9941.json b/headless/static/remote/battle/import/dd/dd17b176-c0e4-471b-953d-157482a7e61e@f9941.json new file mode 100644 index 00000000..5b0706b4 --- /dev/null +++ b/headless/static/remote/battle/import/dd/dd17b176-c0e4-471b-953d-157482a7e61e@f9941.json @@ -0,0 +1 @@ +[1,["dd17b176-c0e4-471b-953d-157482a7e61e@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 012","rect":{"x":1,"y":1,"width":112,"height":145},"offset":{"x":0,"y":0},"originalSize":{"width":114,"height":147},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-56,-72.5,0,56,-72.5,0,-56,72.5,0,56,72.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,146,113,146,1,1,113,1],"nuv":[0.008771929824561403,0.006802721088435374,0.9912280701754386,0.006802721088435374,0.008771929824561403,0.9931972789115646,0.9912280701754386,0.9931972789115646],"minPos":{"x":-56,"y":-72.5,"z":0},"maxPos":{"x":56,"y":72.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/e0/e08aaf39-bbce-4699-b45c-6f72957869ca.json b/headless/static/remote/battle/import/e0/e08aaf39-bbce-4699-b45c-6f72957869ca.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/e0/e08aaf39-bbce-4699-b45c-6f72957869ca.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/e0/e08aaf39-bbce-4699-b45c-6f72957869ca@f9941.json b/headless/static/remote/battle/import/e0/e08aaf39-bbce-4699-b45c-6f72957869ca@f9941.json new file mode 100644 index 00000000..c83390e6 --- /dev/null +++ b/headless/static/remote/battle/import/e0/e08aaf39-bbce-4699-b45c-6f72957869ca@f9941.json @@ -0,0 +1 @@ +[1,["e08aaf39-bbce-4699-b45c-6f72957869ca@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"guaiA1a_head","rect":{"x":0,"y":0,"width":92,"height":102},"offset":{"x":-1,"y":0},"originalSize":{"width":94,"height":102},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-46,-51,0,46,-51,0,-46,51,0,46,51,0],"indexes":[0,1,2,2,1,3],"uv":[0,102,92,102,0,0,92,0],"nuv":[0,0,0.9787234042553191,0,0,1,0.9787234042553191,1],"minPos":{"x":-46,"y":-51,"z":0},"maxPos":{"x":46,"y":51,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/e1/e13e6dc3-6a6f-4f53-972c-0290b5963bbb.json b/headless/static/remote/battle/import/e1/e13e6dc3-6a6f-4f53-972c-0290b5963bbb.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/e1/e13e6dc3-6a6f-4f53-972c-0290b5963bbb.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/e1/e13e6dc3-6a6f-4f53-972c-0290b5963bbb@f9941.json b/headless/static/remote/battle/import/e1/e13e6dc3-6a6f-4f53-972c-0290b5963bbb@f9941.json new file mode 100644 index 00000000..66ee674f --- /dev/null +++ b/headless/static/remote/battle/import/e1/e13e6dc3-6a6f-4f53-972c-0290b5963bbb@f9941.json @@ -0,0 +1 @@ +[1,["e13e6dc3-6a6f-4f53-972c-0290b5963bbb@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"jiao2","rect":{"x":1,"y":1,"width":28,"height":35},"offset":{"x":0,"y":0},"originalSize":{"width":30,"height":37},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-14,-17.5,0,14,-17.5,0,-14,17.5,0,14,17.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,36,29,36,1,1,29,1],"nuv":[0.03333333333333333,0.02702702702702703,0.9666666666666667,0.02702702702702703,0.03333333333333333,0.972972972972973,0.9666666666666667,0.972972972972973],"minPos":{"x":-14,"y":-17.5,"z":0},"maxPos":{"x":14,"y":17.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/e5/e59a20fa-257a-4368-8cd6-736614ee4c3b.json b/headless/static/remote/battle/import/e5/e59a20fa-257a-4368-8cd6-736614ee4c3b.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/e5/e59a20fa-257a-4368-8cd6-736614ee4c3b.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/e5/e59a20fa-257a-4368-8cd6-736614ee4c3b@f9941.json b/headless/static/remote/battle/import/e5/e59a20fa-257a-4368-8cd6-736614ee4c3b@f9941.json new file mode 100644 index 00000000..3a1b01fc --- /dev/null +++ b/headless/static/remote/battle/import/e5/e59a20fa-257a-4368-8cd6-736614ee4c3b@f9941.json @@ -0,0 +1 @@ +[1,["e59a20fa-257a-4368-8cd6-736614ee4c3b@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"y_houtui","rect":{"x":0,"y":0,"width":22,"height":29},"offset":{"x":0,"y":0},"originalSize":{"width":22,"height":29},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-11,-14.5,0,11,-14.5,0,-11,14.5,0,11,14.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,29,22,29,0,0,22,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-11,"y":-14.5,"z":0},"maxPos":{"x":11,"y":14.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/e6/e6d6cc9e-cc78-48b3-99c4-5debb6e15004.json b/headless/static/remote/battle/import/e6/e6d6cc9e-cc78-48b3-99c4-5debb6e15004.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/e6/e6d6cc9e-cc78-48b3-99c4-5debb6e15004.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/e6/e6d6cc9e-cc78-48b3-99c4-5debb6e15004@f9941.json b/headless/static/remote/battle/import/e6/e6d6cc9e-cc78-48b3-99c4-5debb6e15004@f9941.json new file mode 100644 index 00000000..0541047c --- /dev/null +++ b/headless/static/remote/battle/import/e6/e6d6cc9e-cc78-48b3-99c4-5debb6e15004@f9941.json @@ -0,0 +1 @@ +[1,["e6d6cc9e-cc78-48b3-99c4-5debb6e15004@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"z-meimao_shengli","rect":{"x":0,"y":0,"width":7,"height":13},"offset":{"x":0,"y":0},"originalSize":{"width":7,"height":13},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-3.5,-6.5,0,3.5,-6.5,0,-3.5,6.5,0,3.5,6.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,13,7,13,0,0,7,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-3.5,"y":-6.5,"z":0},"maxPos":{"x":3.5,"y":6.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/e6/e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f.json b/headless/static/remote/battle/import/e6/e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/e6/e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/e6/e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f@f9941.json b/headless/static/remote/battle/import/e6/e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f@f9941.json new file mode 100644 index 00000000..5f1fe493 --- /dev/null +++ b/headless/static/remote/battle/import/e6/e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f@f9941.json @@ -0,0 +1 @@ +[1,["e6fbdb93-2cbb-410c-aad3-4a7e26cd3b3f@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 014","rect":{"x":1,"y":1,"width":104,"height":127},"offset":{"x":0,"y":0},"originalSize":{"width":106,"height":129},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-52,-63.5,0,52,-63.5,0,-52,63.5,0,52,63.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,128,105,128,1,1,105,1],"nuv":[0.009433962264150943,0.007751937984496124,0.9905660377358491,0.007751937984496124,0.009433962264150943,0.9922480620155039,0.9905660377358491,0.9922480620155039],"minPos":{"x":-52,"y":-63.5,"z":0},"maxPos":{"x":52,"y":63.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/e8/e8550400-59c1-4cde-a972-b6df5f696b09.json b/headless/static/remote/battle/import/e8/e8550400-59c1-4cde-a972-b6df5f696b09.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/e8/e8550400-59c1-4cde-a972-b6df5f696b09.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/e8/e8550400-59c1-4cde-a972-b6df5f696b09@f9941.json b/headless/static/remote/battle/import/e8/e8550400-59c1-4cde-a972-b6df5f696b09@f9941.json new file mode 100644 index 00000000..3ad43fb0 --- /dev/null +++ b/headless/static/remote/battle/import/e8/e8550400-59c1-4cde-a972-b6df5f696b09@f9941.json @@ -0,0 +1 @@ +[1,["e8550400-59c1-4cde-a972-b6df5f696b09@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"003","rect":{"x":0,"y":0,"width":221,"height":90},"offset":{"x":0,"y":0},"originalSize":{"width":221,"height":90},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-110.5,-45,0,110.5,-45,0,-110.5,45,0,110.5,45,0],"indexes":[0,1,2,2,1,3],"uv":[0,90,221,90,0,0,221,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-110.5,"y":-45,"z":0},"maxPos":{"x":110.5,"y":45,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/e9/e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8.json b/headless/static/remote/battle/import/e9/e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/e9/e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/e9/e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8@f9941.json b/headless/static/remote/battle/import/e9/e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8@f9941.json new file mode 100644 index 00000000..d2641fb2 --- /dev/null +++ b/headless/static/remote/battle/import/e9/e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8@f9941.json @@ -0,0 +1 @@ +[1,["e9c3b51d-c9e5-4d94-a814-7b7da0ddffb8@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"hua_a4","rect":{"x":0,"y":0,"width":24,"height":17},"offset":{"x":0,"y":0},"originalSize":{"width":24,"height":17},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-12,-8.5,0,12,-8.5,0,-12,8.5,0,12,8.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,17,24,17,0,0,24,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-12,"y":-8.5,"z":0},"maxPos":{"x":12,"y":8.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/ec/eccf0439-94a8-4b1a-8c7c-229f7a3042d9.json b/headless/static/remote/battle/import/ec/eccf0439-94a8-4b1a-8c7c-229f7a3042d9.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/ec/eccf0439-94a8-4b1a-8c7c-229f7a3042d9.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/ec/eccf0439-94a8-4b1a-8c7c-229f7a3042d9@f9941.json b/headless/static/remote/battle/import/ec/eccf0439-94a8-4b1a-8c7c-229f7a3042d9@f9941.json new file mode 100644 index 00000000..da123a81 --- /dev/null +++ b/headless/static/remote/battle/import/ec/eccf0439-94a8-4b1a-8c7c-229f7a3042d9@f9941.json @@ -0,0 +1 @@ +[1,["eccf0439-94a8-4b1a-8c7c-229f7a3042d9@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"hei","rect":{"x":0,"y":0,"width":3,"height":2},"offset":{"x":0,"y":0},"originalSize":{"width":3,"height":2},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-1.5,-1,0,1.5,-1,0,-1.5,1,0,1.5,1,0],"indexes":[0,1,2,2,1,3],"uv":[0,2,3,2,0,0,3,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-1.5,"y":-1,"z":0},"maxPos":{"x":1.5,"y":1,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/ed/ed84140d-68f8-4dee-aa53-df590512fa94.json b/headless/static/remote/battle/import/ed/ed84140d-68f8-4dee-aa53-df590512fa94.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/ed/ed84140d-68f8-4dee-aa53-df590512fa94.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/ed/ed84140d-68f8-4dee-aa53-df590512fa94@f9941.json b/headless/static/remote/battle/import/ed/ed84140d-68f8-4dee-aa53-df590512fa94@f9941.json new file mode 100644 index 00000000..b7fe9d1b --- /dev/null +++ b/headless/static/remote/battle/import/ed/ed84140d-68f8-4dee-aa53-df590512fa94@f9941.json @@ -0,0 +1 @@ +[1,["ed84140d-68f8-4dee-aa53-df590512fa94@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"guaiA1aTexture","rect":{"x":3,"y":3,"width":498,"height":113},"offset":{"x":-4,"y":4.5},"originalSize":{"width":512,"height":128},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-249,-56.5,0,249,-56.5,0,-249,56.5,0,249,56.5,0],"indexes":[0,1,2,2,1,3],"uv":[3,125,501,125,3,12,501,12],"nuv":[0.005859375,0.09375,0.978515625,0.09375,0.005859375,0.9765625,0.978515625,0.9765625],"minPos":{"x":-249,"y":-56.5,"z":0},"maxPos":{"x":249,"y":56.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/f2/f2f6ace7-cda7-4312-8403-42c8767ac2f5.json b/headless/static/remote/battle/import/f2/f2f6ace7-cda7-4312-8403-42c8767ac2f5.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/f2/f2f6ace7-cda7-4312-8403-42c8767ac2f5.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/f2/f2f6ace7-cda7-4312-8403-42c8767ac2f5@f9941.json b/headless/static/remote/battle/import/f2/f2f6ace7-cda7-4312-8403-42c8767ac2f5@f9941.json new file mode 100644 index 00000000..95d63d43 --- /dev/null +++ b/headless/static/remote/battle/import/f2/f2f6ace7-cda7-4312-8403-42c8767ac2f5@f9941.json @@ -0,0 +1 @@ +[1,["f2f6ace7-cda7-4312-8403-42c8767ac2f5@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"tx_baodian02","rect":{"x":1,"y":25,"width":45,"height":74},"offset":{"x":-1.5,"y":-12},"originalSize":{"width":50,"height":100},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-22.5,-37,0,22.5,-37,0,-22.5,37,0,22.5,37,0],"indexes":[0,1,2,2,1,3],"uv":[1,75,46,75,1,1,46,1],"nuv":[0.02,0.01,0.92,0.01,0.02,0.75,0.92,0.75],"minPos":{"x":-22.5,"y":-37,"z":0},"maxPos":{"x":22.5,"y":37,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/f4/f4e45413-6b04-404c-8a2c-603b45f7caff.json b/headless/static/remote/battle/import/f4/f4e45413-6b04-404c-8a2c-603b45f7caff.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/f4/f4e45413-6b04-404c-8a2c-603b45f7caff.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/f4/f4e45413-6b04-404c-8a2c-603b45f7caff@f9941.json b/headless/static/remote/battle/import/f4/f4e45413-6b04-404c-8a2c-603b45f7caff@f9941.json new file mode 100644 index 00000000..87d5c735 --- /dev/null +++ b/headless/static/remote/battle/import/f4/f4e45413-6b04-404c-8a2c-603b45f7caff@f9941.json @@ -0,0 +1 @@ +[1,["f4e45413-6b04-404c-8a2c-603b45f7caff@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"04","rect":{"x":47,"y":122,"width":237,"height":152},"offset":{"x":6.5,"y":-60},"originalSize":{"width":318,"height":276},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-118.5,-76,0,118.5,-76,0,-118.5,76,0,118.5,76,0],"indexes":[0,1,2,2,1,3],"uv":[47,154,284,154,47,2,284,2],"nuv":[0.14779874213836477,0.007246376811594203,0.8930817610062893,0.007246376811594203,0.14779874213836477,0.5579710144927537,0.8930817610062893,0.5579710144927537],"minPos":{"x":-118.5,"y":-76,"z":0},"maxPos":{"x":118.5,"y":76,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/f4/f4f58d91-aad3-471e-9328-b714e8e5982c.json b/headless/static/remote/battle/import/f4/f4f58d91-aad3-471e-9328-b714e8e5982c.json new file mode 100644 index 00000000..6a567b65 --- /dev/null +++ b/headless/static/remote/battle/import/f4/f4f58d91-aad3-471e-9328-b714e8e5982c.json @@ -0,0 +1 @@ +[1,["9968d439-7e1e-4994-bc1b-8bca5d7b49d8@6c48a"],0,[["sp.SkeletonData",["_name","_atlasText","textureNames","_skeletonJson","textures"],-1,3]],[[0,0,1,2,3,4,5]],[[0,"guaiA4es","\r\nguaiA4es.png\r\nsize: 1241,404\r\nformat: RGBA8888\r\nfilter: Linear,Linear\r\nrepeat: none\r\nguaiA4es/01\r\n rotate: false\r\n xy: 964, 26\r\n size: 58, 85\r\n orig: 100, 97\r\n offset: 17, 8\r\n index: -1\r\nguaiA4es/02\r\n rotate: true\r\n xy: 1155, 127\r\n size: 59, 84\r\n orig: 100, 97\r\n offset: 16, 8\r\n index: -1\r\nguaiA4es/03\r\n rotate: false\r\n xy: 903, 19\r\n size: 59, 92\r\n orig: 100, 97\r\n offset: 17, 0\r\n index: -1\r\nguaiA4es/04\r\n rotate: false\r\n xy: 980, 250\r\n size: 236, 152\r\n orig: 318, 276\r\n offset: 48, 2\r\n index: -1\r\nguaiA4es/05\r\n rotate: true\r\n xy: 760, 113\r\n size: 289, 218\r\n orig: 318, 276\r\n offset: 14, 1\r\n index: -1\r\nguaiA4es/06\r\n rotate: true\r\n xy: 280, 92\r\n size: 310, 249\r\n orig: 318, 276\r\n offset: 0, 7\r\n index: -1\r\nguaiA4es/07\r\n rotate: true\r\n xy: 2, 84\r\n size: 318, 276\r\n orig: 318, 276\r\n offset: 0, 0\r\n index: -1\r\nguaiA4es/08\r\n rotate: true\r\n xy: 531, 110\r\n size: 292, 227\r\n orig: 318, 276\r\n offset: 0, 49\r\n index: -1\r\nguaiA4es/timo5 002\r\n rotate: false\r\n xy: 849, 14\r\n size: 52, 97\r\n orig: 52, 97\r\n offset: 0, 0\r\n index: -1\r\nguaiA4es/timo5 003\r\n rotate: false\r\n xy: 348, 2\r\n size: 58, 88\r\n orig: 58, 88\r\n offset: 0, 0\r\n index: -1\r\nguaiA4es/timo5 004\r\n rotate: true\r\n xy: 2, 5\r\n size: 77, 96\r\n orig: 77, 96\r\n offset: 0, 0\r\n index: -1\r\nguaiA4es/timo5 005\r\n rotate: false\r\n xy: 1171, 188\r\n size: 60, 60\r\n orig: 62, 62\r\n offset: 1, 1\r\n index: -1\r\nguaiA4es/timo5 006\r\n rotate: true\r\n xy: 1093, 206\r\n size: 42, 28\r\n orig: 44, 30\r\n offset: 1, 1\r\n index: -1\r\nguaiA4es/timo5 007\r\n rotate: false\r\n xy: 980, 119\r\n size: 111, 129\r\n orig: 113, 131\r\n offset: 1, 1\r\n index: -1\r\nguaiA4es/timo5 008\r\n rotate: false\r\n xy: 685, 9\r\n size: 162, 99\r\n orig: 162, 148\r\n offset: 0, 10\r\n index: -1\r\nguaiA4es/timo5 009\r\n rotate: false\r\n xy: 408, 2\r\n size: 58, 88\r\n orig: 58, 88\r\n offset: 0, 0\r\n index: -1\r\nguaiA4es/timo5 010\r\n rotate: true\r\n xy: 100, 5\r\n size: 77, 96\r\n orig: 77, 96\r\n offset: 0, 0\r\n index: -1\r\nguaiA4es/timo5 011\r\n rotate: true\r\n xy: 198, 8\r\n size: 74, 83\r\n orig: 74, 83\r\n offset: 0, 0\r\n index: -1\r\nguaiA4es/timo5 012\r\n rotate: true\r\n xy: 1024, 5\r\n size: 112, 145\r\n orig: 114, 147\r\n offset: 1, 1\r\n index: -1\r\nguaiA4es/timo5 013\r\n rotate: false\r\n xy: 468, 5\r\n size: 84, 85\r\n orig: 84, 85\r\n offset: 0, 0\r\n index: -1\r\nguaiA4es/timo5 014\r\n rotate: true\r\n xy: 554, 2\r\n size: 106, 129\r\n orig: 106, 129\r\n offset: 0, 0\r\n index: -1\r\nguaiA4es/timo5 015\r\n rotate: true\r\n xy: 283, 2\r\n size: 88, 63\r\n orig: 88, 63\r\n offset: 0, 0\r\n index: -1\r\nguaiA4es/timo5 016\r\n rotate: false\r\n xy: 1093, 126\r\n size: 60, 60\r\n orig: 62, 62\r\n offset: 1, 1\r\n index: -1\r\nguaiA4es/timo5 017\r\n rotate: false\r\n xy: 1123, 219\r\n size: 41, 29\r\n orig: 43, 31\r\n offset: 1, 1\r\n index: -1\r\n",["guaiA4es.png"],{"skeleton":{"hash":"fuUp5Gplco8/MvA2vSMd5jLWk6c","spine":"3.8.75","x":-81.37,"y":-9.21,"width":162.37,"height":188.56,"images":"./pic/","audio":""},"bones":[{"name":"root","scaleX":0.6,"scaleY":0.6},{"name":"scale","parent":"root","x":-0.23,"y":0.3},{"name":"jifei","parent":"scale","x":1.4,"y":109.51},{"name":"timo5 008","parent":"jifei","length":51.06,"rotation":-11.58,"x":-54.21,"y":-29.67},{"name":"bone","parent":"timo5 008","length":43.08,"rotation":20.9,"x":51.06},{"name":"timo5 012","parent":"bone","length":60.86,"rotation":27.2,"x":44.18,"y":-0.99},{"name":"timo5 002","parent":"timo5 008","length":24.44,"rotation":154.43,"x":-0.92,"y":-1.28},{"name":"bone2","parent":"timo5 002","length":29.44,"rotation":-14.65,"x":24.44},{"name":"bone3","parent":"bone2","length":28.1,"rotation":52.71,"x":29.44},{"name":"IK1","parent":"jifei","x":-50.81,"y":-93.29,"color":"ff3f00ff"},{"name":"timo5 010","parent":"timo5 008","length":37.71,"rotation":-31.66,"x":1.71,"y":-4.25},{"name":"bone4","parent":"timo5 010","length":33.55,"rotation":-94.77,"x":37.71},{"name":"bone5","parent":"bone4","length":26.25,"rotation":67.68,"x":33.04,"y":0.64},{"name":"IK2","parent":"jifei","x":-30.48,"y":-93.29,"color":"ff3f00ff"},{"name":"timo5 004","parent":"timo5 008","length":36.02,"rotation":-29.73,"x":15.6,"y":-0.57},{"name":"bone6","parent":"timo5 004","length":35.82,"rotation":-82.02,"x":36.02},{"name":"bone7","parent":"bone6","length":20.7,"rotation":41.3,"x":35.82},{"name":"IK3","parent":"jifei","x":29.58,"y":-110.85,"color":"ff3f00ff"},{"name":"timo5 009","parent":"bone","length":39.5,"rotation":-107.77,"x":27.13,"y":-4.33},{"name":"bone8","parent":"timo5 009","length":37.05,"rotation":34.42,"x":39.5},{"name":"IK4","parent":"jifei","x":39.74,"y":-109.46,"color":"ff3f00ff"},{"name":"timo5 003","parent":"bone","length":38.91,"rotation":-106.08,"x":38.26,"y":-4.69},{"name":"bone9","parent":"timo5 003","length":36.49,"rotation":35.3,"x":38.91},{"name":"timo5 013","parent":"timo5 008","length":31.76,"rotation":112.75,"x":45.24,"y":5.92},{"name":"bone10","parent":"timo5 013","length":32.8,"rotation":-15.37,"x":31.76},{"name":"timo5 014","parent":"bone10","length":63.63,"rotation":-3.67,"x":38.13,"y":-0.48},{"name":"bone11","parent":"timo5 014","length":41.76,"rotation":-11.38,"x":70.79,"y":-3.33},{"name":"timo5 015","parent":"timo5 014","length":28.44,"rotation":68.24,"x":45.54,"y":32.32},{"name":"bone12","parent":"timo5 015","length":33.33,"rotation":3.05,"x":28.44},{"name":"bone13","parent":"bone12","length":27.31,"rotation":-3.91,"x":33.33},{"name":"timo5 011","parent":"timo5 014","length":26.4,"rotation":49.84,"x":40.22,"y":8.23},{"name":"bone14","parent":"timo5 011","length":34.29,"rotation":-5.7,"x":26.4},{"name":"bone15","parent":"bone14","length":28.55,"rotation":-6.06,"x":34.29},{"name":"timo5 016","parent":"bone10","length":47.14,"rotation":-140.66,"x":25.22,"y":16.5},{"name":"timo5 017","parent":"timo5 016","length":30.07,"rotation":38.94,"x":45.04,"y":0.69},{"name":"timo5 005","parent":"bone10","length":45.87,"rotation":-87.68,"x":30.27,"y":-6.12},{"name":"timo5 006","parent":"timo5 005","length":30.24,"rotation":56.91,"x":43.58,"y":-0.7},{"name":"timo5 007","parent":"timo5 006","rotation":-90.1,"x":63.67,"y":40.09},{"name":"texiao1","parent":"timo5 007","x":7.51,"y":15.41},{"name":"texiao2","parent":"scale","x":42.07,"y":-27.82}],"slots":[{"name":"timo5 002","bone":"timo5 002","attachment":"guaiA4es/timo5 002"},{"name":"timo5 003","bone":"timo5 003","attachment":"guaiA4es/timo5 003"},{"name":"timo5 004","bone":"timo5 004","attachment":"guaiA4es/timo5 004"},{"name":"timo5 005","bone":"timo5 005","attachment":"guaiA4es/timo5 005"},{"name":"timo5 006","bone":"timo5 006","attachment":"guaiA4es/timo5 006"},{"name":"timo5 007","bone":"timo5 007","attachment":"guaiA4es/timo5 007"},{"name":"timo5 008","bone":"timo5 008","attachment":"guaiA4es/timo5 008"},{"name":"timo5 009","bone":"timo5 009","attachment":"guaiA4es/timo5 009"},{"name":"timo5 010","bone":"timo5 010","attachment":"guaiA4es/timo5 010"},{"name":"timo5 011","bone":"timo5 011","attachment":"guaiA4es/timo5 011"},{"name":"timo5 012","bone":"timo5 012","attachment":"guaiA4es/timo5 012"},{"name":"timo5 013","bone":"timo5 013","attachment":"guaiA4es/timo5 013"},{"name":"timo5 014","bone":"timo5 014","attachment":"guaiA4es/timo5 014"},{"name":"timo5 015","bone":"timo5 015","attachment":"guaiA4es/timo5 015"},{"name":"timo5 016","bone":"timo5 016","attachment":"guaiA4es/timo5 016"},{"name":"timo5 017","bone":"timo5 017","attachment":"guaiA4es/timo5 017"},{"name":"atkbox","bone":"timo5 006","attachment":"atkbox"},{"name":"guaiA4es/01","bone":"texiao1"},{"name":"guaiA4es/04","bone":"texiao2"}],"ik":[{"name":"IK1","target":"IK1","bendPositive":false,"bones":["timo5 010","bone4"]},{"name":"IK2","order":1,"target":"IK2","bendPositive":false,"bones":["timo5 004","bone6"]},{"name":"IK3","order":2,"target":"IK3","bones":["timo5 009","bone8"]},{"name":"IK4","order":3,"target":"IK4","bones":["timo5 003","bone9"]}],"skins":[{"name":"default","attachments":{"timo5 002":{"guaiA4es/timo5 002":{"type":"mesh","hull":13,"width":52,"height":97,"uvs":[0.09465,0.00554,0.1358,0.22065,0,0.51848,0,0.68946,0.06378,0.90456,0.35186,1,0.81484,1,1,0.85492,0.88686,0.69498,1,0.50193,1,0.24271,0.88686,0.0607,0.54734,0,0.61936,0.38059,0.4959,0.67843,0.53705,0.524,0.4033,0.30889,0.81484,0.44126,0.25926,0.52951,0.70167,0.5957,0.44446,0.83286,0.74282,0.78874],"triangles":[1,0,12,16,1,12,13,12,11,16,12,13,10,17,11,18,1,16,17,13,11,17,10,9,15,16,13,18,16,15,2,1,18,19,13,17,15,13,19,14,18,15,14,15,19,3,2,18,8,17,9,19,17,8,21,19,8,14,19,21,20,18,14,20,14,21,4,3,18,20,4,18,5,4,20,7,6,21,7,21,8,20,21,6,5,20,6],"vertices":[1,8,43.91,11.27,1,2,7,38.43,28.23,0.10769,8,23.89,17.52,0.89231,3,6,48.19,18.27,0.08108,7,8.69,28.67,0.77388,8,0.11,35.39,0.14505,3,6,32.89,24.66,0.47816,7,-7.48,24.98,0.50674,8,-15.13,41.92,0.01509,2,6,12.36,29.65,0.94026,7,-27.08,17.09,0.05974,2,6,-1.96,19.41,1,7,-32.76,0.43,0,1,6,-11.25,-2.81,1,2,6,-1.98,-17.12,0.98729,7,-11.54,-29.29,0.01271,2,6,14.6,-17.68,0.61784,7,2.28,-20.1,0.38216,3,6,29.61,-30.33,0.04048,7,21.84,-21.66,0.89882,8,-18.9,-13.04,0.0607,2,7,46.36,-16.06,0.13392,8,4.22,-22.94,0.86608,2,7,62.26,-6.39,0.00002,8,22.76,-24.49,0.99998,1,8,35.13,-10.58,1,2,7,28.91,0.26,0.70984,8,-0.28,0.52,0.29016,3,6,23.93,0.46,0.76041,7,-0.69,0.08,0.23958,8,-24.31,17.8,0,2,7,14.39,1.33,0.99706,8,-11.38,9.93,0.00294,2,7,33.18,12.76,0.16355,8,10.54,8.11,0.83645,3,6,38.75,-23.71,0.0069,7,25.44,-10.97,0.87093,8,-9.69,-6.5,0.12217,3,6,42,6.24,0.04045,7,10.65,15.29,0.85424,8,-6.18,23.42,0.10531,2,6,27.2,-12.51,0.15096,7,9.52,-8.57,0.84904,2,6,11.14,8.71,0.99728,7,-15.89,-0.65,0.00272,2,6,9.1,-7.26,0.94826,7,-8.26,-14.82,0.05174],"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,0,24]}},"timo5 003":{"guaiA4es/timo5 003":{"type":"mesh","hull":15,"width":58,"height":88,"uvs":[0.18855,0,0,0.05771,0,0.29952,0.1309,0.48952,0.20427,0.68298,0.34055,0.86952,0.55021,1,0.72317,1,1,1,0.93807,0.76243,1,0.57589,1,0.32025,0.93807,0.08534,0.69172,0,0.39821,0,0.4483,0.5787,0.51819,0.34118,0.57937,0.75659,0.73926,0.48912],"triangles":[17,15,18,4,3,16,15,4,16,2,0,16,15,16,18,14,16,0,18,11,10,16,3,2,16,13,18,18,12,11,18,13,12,16,14,13,2,1,0,7,9,8,6,17,7,7,17,9,6,5,17,5,15,17,5,4,15,17,18,9,9,18,10],"vertices":[1,21,-10.08,-21.85,1,1,21,-3.55,-31.99,1,1,21,17.53,-29.08,1,2,22,-15.91,-12.34,0.07043,21,33.05,-19.27,0.92957,2,22,1.16,-16.4,0.79997,21,49.33,-12.72,0.20003,1,22,19.37,-16.95,1,1,22,35.16,-11.45,1,1,22,39.79,-2.54,1,1,22,47.18,11.71,1,2,22,26.97,18.15,0.91082,21,50.43,30.4,0.08918,2,22,14.06,28.9,0.50738,21,33.68,31.71,0.49262,2,22,-5.91,39.26,0.07254,21,11.39,28.63,0.92746,2,22,-25.91,45.6,0.00029,21,-8.59,22.24,0.99971,1,21,-14.07,7.05,1,1,21,-11.74,-9.81,1,2,22,-0.47,0.38,0.23318,21,38.3,0.04,0.76682,2,22,-17.15,13.61,0.00059,21,17.05,1.2,0.99941,1,22,16.93,-0.08,1,2,22,0.31,18.99,0.24853,21,28.18,15.68,0.75147],"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,0,28]}},"timo5 004":{"guaiA4es/timo5 004":{"type":"mesh","hull":15,"width":77,"height":96,"uvs":[0.00959,0,0,0.17092,0,0.44325,0.12408,0.63642,0.10829,0.73142,0.20699,0.88025,0.47151,1,0.62154,1,0.7992,1,0.85053,0.82959,1,0.71242,1,0.43375,0.92949,0.18359,0.65312,0.01259,0.33333,0,0.72814,0.41792,0.61759,0.55409,0.58206,0.30709,0.47546,0.72509,0.49915,0.84859],"triangles":[17,14,13,17,13,12,15,17,12,15,12,11,14,2,1,0,14,1,17,2,14,17,3,2,16,17,15,3,17,16,15,11,10,16,15,10,18,3,16,4,3,18,9,16,10,18,16,9,19,18,9,5,4,18,5,18,19,6,5,19,7,19,9,6,19,7,8,7,9],"vertices":[2,15,-3.14,-68.05,0.00523,14,-31.81,-6.34,0.99477,2,15,10.97,-59.66,0.06266,14,-21.53,-19.15,0.93734,3,16,-32.15,-32.05,0.02746,15,32.82,-45.29,0.35435,14,-4.27,-38.79,0.61819,3,16,-12.46,-25.16,0.30286,15,43.06,-27.12,0.48005,14,15.15,-46.41,0.21709,3,16,-3.59,-27.62,0.56934,15,51.35,-23.13,0.34017,14,20.25,-54.06,0.09049,3,16,11.61,-22.08,0.91807,15,59.11,-8.93,0.07067,14,35.39,-59.78,0.01126,1,16,25.82,-3.5,1,2,16,27.42,7.94,0.9586,15,51.18,24.06,0.0414,2,16,29.32,21.49,0.85655,15,43.67,35.49,0.14345,2,16,13.66,27.67,0.48628,15,27.83,29.81,0.51372,3,16,4.12,40.63,0.1535,15,12.1,33.24,0.8465,14,70.62,-7.37,0,3,16,-22.37,44.34,0.00469,15,-10.25,18.54,0.69736,14,52.97,12.72,0.29795,2,15,-27.33,0.81,0.02542,14,33.03,27.18,0.97458,1,14,6.21,25.46,1,1,14,-13.08,10.12,1,3,16,-26.78,23.82,0.00001,15,-0.02,0.22,0.54415,14,36.24,0.05,0.45584,2,16,-15.02,13.57,0.00027,15,15.58,0.29,0.99973,1,14,20.76,0.62,1,2,16,-0.28,0.46,0.30949,15,35.31,0.16,0.69051,2,16,11.72,0.62,0.99682,15,44.21,8.2,0.00318],"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,0,28]}},"timo5 005":{"guaiA4es/timo5 005":{"x":21.26,"y":-1.34,"rotation":47.9,"width":62,"height":62}},"timo5 006":{"guaiA4es/timo5 006":{"x":13.21,"y":3.06,"rotation":12.53,"width":44,"height":30}},"timo5 007":{"guaiA4es/timo5 007":{"x":1.15,"y":8.12,"rotation":12.53,"width":113,"height":131}},"timo5 008":{"guaiA4es/timo5 008":{"type":"mesh","hull":14,"width":162,"height":148,"uvs":[0.09737,0.31598,0,0.41017,0,0.56254,0.02398,0.72044,0.13027,0.8645,0.3049,0.93098,0.56052,0.92821,0.74021,0.91159,0.93003,0.79801,1,0.6401,1,0.43233,0.82879,0.31321,0.62126,0.26612,0.36058,0.29105,0.42132,0.54314,0.5428,0.53483,0.28719,0.51821,0.42638,0.73429,0.38842,0.41294],"triangles":[5,17,6,6,17,7,17,15,7,8,7,15,9,8,15,11,15,12,9,15,11,17,14,15,11,10,9,14,18,15,15,18,12,18,13,12,5,4,17,17,16,14,17,4,16,4,3,16,3,2,16,2,1,16,16,18,14,1,0,16,16,13,18,16,0,13],"vertices":[2,3,-7.59,22.72,1,4,-47.49,41.23,0,1,3,-20.24,5.9,1,1,3,-15.71,-16.19,1,2,3,-7.22,-38.31,0.99852,4,-67.8,-16.32,0.00148,2,3,13.93,-55.74,0.94193,4,-53.8,-39.88,0.05807,2,3,43.62,-59.7,0.70784,4,-27.21,-53.66,0.29216,2,3,84.11,-50.98,0.16273,4,13.84,-59.16,0.83727,2,3,112.13,-42.73,0.01367,4,43,-60.88,0.98633,1,4,75.83,-48.63,1,1,4,90.39,-27.12,1,1,4,94.78,3.31,1,1,4,69.84,24.72,1,2,3,74.08,46.99,0.04552,4,37.56,36.42,0.95448,2,3,33.45,34.89,0.73613,4,-4.76,38.8,0.26387,2,3,50.58,0.32,0.61139,4,-0.35,0.46,0.38861,1,4,19.31,-1.13,1,1,3,28.55,-0.43,1,2,3,57.06,-27.23,0.44046,4,-3.57,-27.65,0.55954,2,3,41.49,18.13,0.70901,4,-2.87,20.3,0.29099],"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,0,26]}},"timo5 009":{"guaiA4es/timo5 009":{"type":"mesh","hull":15,"width":58,"height":88,"uvs":[0.24731,0.00271,0,0.0718,0,0.24798,0.08483,0.4138,0.16869,0.62453,0.27876,0.80762,0.4989,1,0.73476,1,0.98635,1,0.93918,0.77307,0.98635,0.60725,1,0.37234,1,0.1478,0.75573,0,0.47269,0,0.43438,0.55461,0.55548,0.71509,0.50428,0.31709,0.69752,0.51996,0.25111,0.36914,0.75391,0.74182],"triangles":[4,19,15,4,3,19,10,18,11,15,17,18,15,19,17,18,17,11,3,2,19,17,13,11,13,12,11,2,0,19,17,0,14,17,19,0,17,14,13,2,1,0,7,9,8,6,16,7,7,20,9,7,16,20,6,5,16,5,15,16,5,4,15,9,20,10,16,18,20,20,18,10,16,15,18],"vertices":[1,18,-6.87,-19.2,1,1,18,1.5,-32.33,1,1,18,16.79,-29.76,1,2,19,-20.24,-13.38,0.02906,18,30.36,-22.48,0.97094,2,19,-1.37,-16.77,0.66829,18,47.84,-14.61,0.33171,2,19,15.93,-17.75,0.99987,18,62.67,-5.64,0.00013,1,19,36.66,-13.28,1,1,19,42.41,-0.87,1,1,19,48.54,12.37,1,2,19,29.28,18.28,0.94604,18,53.31,31.63,0.05396,2,19,17.19,26.9,0.66285,18,38.47,31.91,0.33715,2,19,-1.24,36.31,0.15894,18,17.95,29.25,0.84106,2,19,-19.16,44.62,0.00912,18,-1.53,25.97,0.99088,1,18,-12.01,9.84,1,1,18,-9.28,-6.35,1,2,19,-0.48,-0.2,0.3349,18,39.22,-0.43,0.6651,2,19,15.29,0.24,0.99956,18,51.98,8.84,0.00044,2,19,-17.74,12.27,0.00003,18,17.93,0.09,0.99997,2,19,3.17,14.93,0.41627,18,33.68,14.11,0.58373,2,19,-19.75,-2.98,0.00399,18,24.89,-13.63,0.99601,2,19,22.26,9.69,0.95432,18,52.38,20.58,0.04568],"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,0,28]}},"timo5 010":{"guaiA4es/timo5 010":{"type":"mesh","hull":15,"width":77,"height":96,"uvs":[0.1733,0.00787,0,0.02495,0,0.18724,0,0.45204,0.09876,0.60579,0.19993,0.82787,0.32772,1,0.65252,1,0.84954,1,0.86551,0.84068,1,0.67839,1,0.40079,0.87616,0.16162,0.69512,0,0.42356,0,0.70632,0.40475,0.50497,0.28442,0.59182,0.52825,0.4418,0.68342,0.46944,0.80059,0.36679,0.51559,0.68263,0.81959,0.27755,0.24889,0.80767,0.60911,0.12468,0.35004,0.25292,0.70497],"triangles":[17,16,15,24,22,20,20,22,16,3,2,24,15,12,11,15,16,12,24,2,22,22,14,16,16,13,12,16,14,13,2,0,22,22,0,14,2,1,0,9,23,10,5,4,25,21,17,23,25,4,20,18,20,17,23,11,10,17,15,23,23,15,11,4,24,20,4,3,24,20,16,17,7,21,8,8,21,9,6,19,7,7,19,21,6,5,19,19,25,18,25,19,5,21,23,9,21,18,17,21,19,18,25,20,18],"vertices":[2,11,-4.52,-55.51,0.00401,10,-17.98,-0.03,0.99599,2,11,5.07,-64.92,0.01723,10,-26.58,-10.36,0.98277,2,11,17.26,-55.21,0.10852,10,-15.91,-21.71,0.89148,2,11,37.14,-39.37,0.5208,10,1.5,-40.23,0.4792,2,11,43.94,-24.22,0.83065,10,17.15,-45.78,0.16935,3,12,9.28,-21.45,0.32397,11,55.76,-4.84,0.66692,10,37.43,-55.97,0.0091,2,12,27.74,-16.05,0.91256,11,62.55,13.15,0.08744,2,12,33.99,8.16,0.98314,11,46.97,32.71,0.01686,2,12,37.78,22.85,0.9303,11,37.51,44.57,0.0697,2,12,23.28,27.87,0.72385,11,24.78,36,0.27615,3,12,10.78,41.79,0.31475,11,6.15,34.39,0.6824,10,72.49,-3.32,0.00285,3,12,-15.02,48.45,0.03142,11,-14.7,17.78,0.55151,10,54.23,16.1,0.41707,2,11,-26.71,-3.98,0.00782,10,31.55,26.29,0.99218,1,10,10.77,28.05,1,1,10,-4.46,13.72,1,3,12,-20.3,26.45,0.00028,11,-0.3,0.34,0.47589,10,38.02,0.33,0.52382,2,11,0.32,-18.99,0.01685,10,18.81,-1.87,0.98315,2,12,-11.03,14.96,0.00382,11,14.46,0.83,0.99618,1,12,0.51,0.05,1,2,12,11.93,-0.7,0.99171,11,40.78,9.75,0.00829,2,11,24.31,-13.48,0.78908,10,26.26,-25.33,0.21092,2,12,17.8,14.74,0.85073,11,31.98,23.73,0.14927,2,11,13.67,-33.21,0.08202,10,3.48,-10.86,0.91798,3,12,6.27,28.71,0.17265,11,8.87,17.34,0.82585,10,54.25,-10.28,0.0015,2,11,27.57,-35.49,0.30697,10,0.05,-24.52,0.69303,3,12,-3.69,-13.58,0.45877,11,44.2,-7.93,0.48359,10,26.13,-43.39,0.05764],"edges":[0,2,2,4,4,6,6,8,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,0,28,8,10]}},"timo5 011":{"guaiA4es/timo5 011":{"type":"mesh","hull":13,"width":74,"height":83,"uvs":[1,0.85557,1,0.64591,0.85739,0.44714,0.59474,0.22931,0.39735,0.04801,0.13165,0,0,0.07796,0,0.29852,0.03697,0.54358,0.17135,0.81042,0.48897,0.94112,0.72719,1,0.95014,1,0.61924,0.66438,0.31644,0.37338,0.45014,0.54517],"triangles":[7,6,5,14,5,4,7,5,14,14,4,3,8,7,14,15,14,3,15,3,2,13,15,2,15,9,8,15,8,14,10,15,13,9,15,10,13,2,1,13,1,0,11,10,13,0,11,13,12,11,0],"vertices":[1,30,-4.67,-8.39,1,2,30,7.22,-21.1,0.93172,31,-16.96,-22.92,0.06828,3,30,26.2,-25.93,0.44663,31,2.41,-25.82,0.55336,32,-28.97,-29.04,0.00001,3,30,52.75,-25.84,0.00691,31,28.81,-23.06,0.71184,32,-3.01,-23.51,0.28125,2,31,49.75,-21.96,0.08306,32,17.7,-20.2,0.91694,1,32,32.25,-6.4,1,1,32,32.55,5.3,1,2,31,53.43,13.87,0.04835,32,17.57,15.81,0.95165,3,30,65.05,21.41,0.00004,31,36.31,25.18,0.64277,32,-0.65,25.26,0.35719,3,30,42.65,30.78,0.09004,31,13.08,32.26,0.89918,32,-24.49,29.84,0.01078,2,30,18.08,22.64,0.72127,31,-10.55,21.69,0.27873,2,30,1.87,14.16,0.99765,31,-25.82,11.62,0.00235,1,30,-10.17,2.88,1,2,30,26.74,-0.72,0.34213,31,0.42,-0.68,0.65787,2,31,33.35,0.31,0.95226,32,-0.97,0.21,0.04774,1,31,16.1,2.24,1],"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,0]}},"timo5 012":{"guaiA4es/timo5 012":{"x":47.66,"y":4.11,"rotation":-35.4,"width":114,"height":147}},"timo5 013":{"guaiA4es/timo5 013":{"type":"mesh","hull":15,"width":84,"height":85,"uvs":[0.12355,0,0,0.0324,0,0.18226,0.04543,0.33666,0.07759,0.55009,0,0.64092,0.08219,0.87706,0.32574,1,0.62443,1,0.91852,0.96334,1,0.74537,1,0.47744,1,0.12322,0.77147,0,0.44062,0,0.51414,0.55464,0.52333,0.37299,0.56009,0.75899,0.32574,0.54101,0.75309,0.52285,0.266,0.34574,0.77147,0.36391],"triangles":[15,16,19,15,18,16,4,20,18,4,3,20,18,20,16,19,21,11,19,16,21,21,12,11,13,21,16,16,20,14,21,13,12,13,16,14,20,2,0,20,0,14,20,3,2,2,1,0,7,17,8,8,17,9,6,18,7,17,18,15,17,7,18,9,17,10,5,4,6,6,4,18,17,19,10,17,15,19,19,11,10],"vertices":[1,24,48.08,33.03,1,2,23,84.34,34.48,0.00019,24,45.46,43.44,0.99981,2,23,71.85,36.94,0.01414,24,32.72,43.6,0.98586,2,23,58.23,35.74,0.09377,24,19.55,39.95,0.90623,2,23,39.91,36.6,0.46903,24,1.38,37.47,0.53097,2,23,33.6,44.49,0.6473,24,-6.26,44.09,0.3527,2,23,12.57,41.6,0.86033,24,-26.42,37.43,0.13967,2,23,-1.64,23.56,0.98934,24,-37.12,17.11,0.01066,1,23,-6.5,-1.06,1,2,23,-8.23,-25.9,0.98356,24,-34.63,-32.72,0.01644,2,23,8.62,-36.2,0.84401,24,-16.19,-39.8,0.15599,2,23,30.97,-40.61,0.40558,24,6.58,-40.08,0.59442,2,23,60.5,-46.44,0.04077,24,36.69,-40.46,0.95923,2,23,74.5,-29.64,0.00126,24,47.4,-21.39,0.99874,1,24,47.75,6.4,1,2,23,32.43,0.7,0.29784,24,0.53,0.81,0.70216,2,23,47.43,-3.05,0.00005,24,15.96,-0.16,0.99995,1,23,14.64,0.28,1,2,23,36.63,16,0.38641,24,1.89,16.62,0.61359,2,23,31.19,-19.52,0.45702,24,2.98,-19.29,0.54298,2,23,53.89,17.71,0.07101,24,18.55,21.43,0.92899,2,23,44.15,-23.65,0.14351,24,16.47,-21.01,0.85649],"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,0,28]}},"timo5 014":{"guaiA4es/timo5 014":{"type":"mesh","hull":15,"width":106,"height":129,"uvs":[0.00168,0.8872,0.27896,1,0.78409,1,0.99547,0.83306,0.8637,0.58492,0.9241,0.4586,1,0.36385,1,0.19467,0.90488,0.05255,0.78683,0,0.58643,0,0.42995,0.05932,0.34759,0.19241,0.14444,0.31423,0,0.51274,0.56172,0.43153,0.63584,0.2849,0.68251,0.15406,0.44642,0.22174,0.76762,0.31874,0.62761,0.10444,0.8088,0.10895,0.32837,0.35483,0.80605,0.44055],"triangles":[20,10,9,21,9,8,17,20,9,21,17,9,20,18,11,20,11,10,12,11,18,16,20,17,18,20,16,19,17,21,16,17,19,21,8,7,22,12,18,19,21,7,6,19,7,15,18,16,5,23,19,6,5,19,4,23,5,23,16,19,23,15,16,15,23,4,22,18,15,22,13,12,14,1,0,22,14,13,22,1,14,1,22,15,2,4,3,1,15,2,2,15,4],"vertices":[1,25,8.35,53.33,1,1,25,-4.67,23.23,1,2,25,-1.91,-30.25,0.9998,26,-62.02,-46.51,0.0002,1,25,20.75,-51.51,1,1,25,52,-35.92,1,2,25,68.6,-41.47,0.15205,26,8.77,-37.18,0.84795,2,25,81.23,-48.87,0.02414,26,22.98,-40.69,0.97586,1,26,43.55,-33.4,1,1,26,57.47,-17.78,1,1,26,59.68,-3.72,1,1,26,52.59,16.31,1,1,26,39.84,29.39,1,2,25,99.75,21.33,0.24,26,20.74,31.88,0.76,1,25,82.94,42.02,1,1,25,56.58,56,1,1,25,70.11,-2.93,1,1,26,19.69,-0.9,1,1,26,37.26,0.07,1,2,25,96.51,10.67,0.04,26,20.67,20.75,0.96,1,26,20.24,-15.53,1,2,25,112.61,-7.73,0.00009,26,41.35,7.69,0.99991,1,26,47.21,-10.61,1,1,25,78.72,22.28,1,1,26,6.79,-24.61,1],"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,0,28]}},"timo5 015":{"guaiA4es/timo5 015":{"type":"mesh","hull":11,"width":88,"height":63,"uvs":[0.0041,0,0.28553,0,0.58542,0.12615,0.82532,0.28726,1,0.56437,1,0.93171,0.83916,1,0.52544,1,0.23017,0.89304,0.05946,0.66104,0,0.33882,0.67439,0.66087,0.79712,0.73706,0.54485,0.55611,0.33008,0.37992,0.20394,0.23706,0.41189,0.71325,0.57553,0.3323,0.20735,0.52754,0.4869,0.24658,0.79366,0.48956,0.58885,0.83714],"triangles":[9,10,18,10,15,18,18,15,14,14,15,19,10,0,15,19,15,1,15,0,1,8,16,7,7,16,21,8,9,16,16,9,18,11,16,13,16,18,13,13,18,14,13,14,17,13,17,20,17,14,19,20,17,3,17,2,3,17,19,2,2,19,1,7,21,6,21,12,6,6,12,5,12,4,5,21,16,11,21,11,12,11,20,12,12,20,4,11,13,20,20,3,4],"vertices":[1,29,37.96,-2.02,1,2,28,50.05,-17.7,0.04656,29,17.89,-16.52,0.95344,3,27,48.57,-27.66,0.04117,28,23.45,-24.91,0.81599,29,-8.16,-25.53,0.14284,3,27,25.15,-27.27,0.50821,28,0.17,-27.47,0.49177,29,-31.22,-29.66,0.00002,2,27,3.89,-17.84,0.9746,28,-22.11,-20.78,0.0254,1,27,-5.79,3.18,1,2,27,5.27,13.01,0.99843,28,-24.61,10,0.00157,3,27,30.35,24.55,0.35353,28,-1.18,24.6,0.64422,29,-36.11,22.19,0.00224,3,27,56.77,29.3,0.004,28,24.43,32.62,0.77312,29,-11.1,31.94,0.22289,2,28,44.91,28.16,0.32329,29,9.63,28.89,0.67671,2,28,60.09,13.7,0.01486,29,25.76,15.5,0.98514,2,27,27.38,-0.33,0.95654,28,-1.01,-0.46,0.04346,2,27,15.56,-0.49,0.99987,28,-12.71,-2.1,0.00013,2,27,40.49,-1.56,0.00001,28,12.16,-0.04,0.99999,2,28,34.07,0.54,0.21535,29,0.7,0.59,0.78465,1,29,14.96,-0.21,1,3,27,46.98,12.32,0.01932,28,16.85,14.55,0.93771,29,-17.44,13.4,0.04296,3,27,43.93,-15.5,0.05085,28,17.32,-13.43,0.91392,29,-15.06,-14.49,0.03523,2,28,38.31,14.14,0.33193,29,4.01,14.45,0.66807,3,27,53.28,-17.14,0.00714,28,26.8,-13.89,0.77816,29,-5.57,-14.3,0.2147,3,27,26.76,-13.29,0.77435,28,-9.86,-9.07,0.22565,29,-42.48,-11.99,0.00001,3,27,22.28,10.52,0.61449,28,3.16,11.77,0.3829,29,-30.91,9.69,0.00261],"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,0,20]}},"timo5 016":{"guaiA4es/timo5 016":{"x":24.98,"y":-0.35,"rotation":49.94,"width":62,"height":62}},"timo5 017":{"guaiA4es/timo5 017":{"x":13.09,"y":-0.32,"rotation":11,"width":43,"height":31}},"atkbox":{"atkbox":{"type":"boundingbox","vertexCount":4,"vertices":[65.1,31.69,27.77,6.71,52.41,-26.91,87.54,-1.21]}},"guaiA4es/01":{"guaiA4es/01":{"scaleX":2.5272,"scaleY":2.5272,"rotation":46.04,"width":100,"height":97},"guaiA4es/02":{"scaleX":2.5272,"scaleY":2.5272,"rotation":46.04,"width":100,"height":97},"guaiA4es/03":{"scaleX":2.5272,"scaleY":2.5272,"rotation":46.04,"width":100,"height":97}},"guaiA4es/04":{"guaiA4es/04":{"y":144.33,"width":318,"height":276},"guaiA4es/05":{"y":144.33,"width":318,"height":276},"guaiA4es/06":{"y":144.33,"width":318,"height":276},"guaiA4es/07":{"y":144.33,"width":318,"height":276},"guaiA4es/08":{"y":144.33,"width":318,"height":276}}}}],"animations":{"skill":{"slots":{"guaiA4es/04":{"attachment":[{"time":0.3667,"name":"guaiA4es/04"},{"time":0.4333,"name":"guaiA4es/05"},{"time":0.5,"name":"guaiA4es/06"},{"time":0.5667,"name":"guaiA4es/07"},{"time":0.6333,"name":"guaiA4es/08"},{"time":0.7,"name":null}]},"timo5 007":{"color":[{"time":0.7333,"color":"ffffff00"}]},"guaiA4es/01":{"attachment":[{"time":0.4333,"name":"guaiA4es/01"},{"time":0.5333,"name":"guaiA4es/02"},{"time":0.6,"name":"guaiA4es/03"},{"time":0.6667,"name":"guaiA4es/02"},{"time":0.7333,"name":null}]}},"bones":{"timo5 002":{"rotate":[{"angle":-12.33},{"time":0.3333,"angle":-22.93},{"time":0.4333,"angle":9.15},{"time":0.9,"angle":-22.93},{"time":1.1667,"angle":-12.33}]},"bone2":{"rotate":[{"angle":-12.33},{"time":0.3333,"angle":-41.99},{"time":0.4333,"angle":36.93},{"time":0.9,"angle":-41.99},{"time":1.1667,"angle":-12.33}]},"bone3":{"rotate":[{"angle":-12.33},{"time":0.3333,"angle":23.68},{"time":0.4333,"angle":-18.7},{"time":0.9,"angle":23.68},{"time":1.1667,"angle":-12.33}]},"bone5":{"rotate":[{"angle":-4.7},{"time":0.3333,"angle":29.75,"curve":"stepped"},{"time":0.9,"angle":29.75},{"time":1.1667,"angle":-4.7}]},"bone7":{"rotate":[{"angle":1.48},{"time":0.3333,"angle":22.31,"curve":"stepped"},{"time":0.9,"angle":22.31},{"time":1.1667,"angle":1.48}]},"IK1":{"translate":[{"y":-0.6},{"time":0.3333,"x":-1.77,"y":3.47},{"time":0.4333,"x":-42.24,"y":173.16},{"time":0.9,"x":-1.77,"y":3.47},{"time":1.1667,"y":-0.6}]},"IK2":{"translate":[{"y":-0.6},{"time":0.3333,"x":-8.42,"y":0.51},{"time":0.4333,"x":-50.88,"y":169.33},{"time":0.9,"x":-8.42,"y":0.51},{"time":1.1667,"y":-0.6}]},"IK3":{"translate":[{"y":-0.6},{"time":0.3333,"x":21.21,"y":3.39},{"time":0.4333,"x":29.76,"y":161.64},{"time":0.9,"x":21.21,"y":3.39},{"time":1.1667,"y":-0.6}]},"IK4":{"translate":[{"y":-0.6},{"time":0.3333,"x":30.08,"y":9.3},{"time":0.4333,"x":41.28,"y":169.33},{"time":0.9,"x":30.08,"y":9.3},{"time":1.1667,"y":-0.6}]},"timo5 008":{"rotate":[{"angle":0.01,"curve":"stepped"},{"time":1.1667,"angle":0.01}],"translate":[{"y":-0.6},{"time":0.3333,"y":-29.51},{"time":0.4333,"y":144.62},{"time":0.9,"y":-29.51},{"time":1.1667,"y":-0.6}]},"bone":{"rotate":[{"angle":0.44},{"time":0.4333,"angle":15.2},{"time":1.1667,"angle":0.44}]},"timo5 012":{"rotate":[{"angle":-1.63},{"time":0.3333,"angle":-19.09},{"time":0.4333,"angle":-14.05},{"time":0.9,"angle":-19.09},{"time":1.1667,"angle":-1.63}]},"timo5 013":{"rotate":[{"angle":0.47},{"time":0.3333,"angle":-6.68},{"time":0.4333,"angle":-9.22},{"time":0.9,"angle":-6.68},{"time":1.1667,"angle":0.47}],"translate":[{"x":-0.24,"y":1.17},{"time":0.3333,"x":-1.99,"y":9.72},{"time":0.4333,"x":-3.7,"y":18.05},{"time":0.5,"x":-11.4,"y":55.68},{"time":0.9,"x":-1.99,"y":9.72},{"time":1.1667,"x":-0.24,"y":1.17}]},"bone10":{"rotate":[{"angle":0.47},{"time":0.3333,"angle":-7.89},{"time":0.4333,"angle":27.93},{"time":0.9,"angle":-7.89},{"time":1.1667,"angle":0.47}]},"timo5 016":{"rotate":[{"angle":0.1},{"time":0.3333,"angle":-35.57},{"time":0.4333,"angle":293.05},{"time":0.5,"angle":275.99},{"time":0.9,"angle":-35.57},{"time":1.1667,"angle":0.1}]},"timo5 017":{"rotate":[{"angle":2.77},{"time":0.3333,"angle":76.63},{"time":0.4333,"angle":24.64},{"time":0.5,"angle":0.46},{"time":0.9,"angle":76.63},{"time":1.1667,"angle":2.77}]},"timo5 005":{"rotate":[{"angle":-2.44},{"time":0.3333,"angle":-65.2},{"time":0.4333,"angle":41.53},{"time":0.9,"angle":-65.2},{"time":1.1667,"angle":-2.44}]},"timo5 006":{"rotate":[{"angle":-0.03},{"time":0.3333,"angle":74.42},{"time":0.4333,"angle":-58.75},{"time":0.9,"angle":74.42},{"time":1.1667,"angle":-0.03}]},"timo5 007":{"rotate":[{"angle":-1.55,"curve":"stepped"},{"time":1.1667,"angle":-1.55}],"translate":[{"x":1.06,"y":-1.43},{"time":0.3333,"x":13.73,"y":-14.45},{"time":0.4333,"x":-1.33,"y":-11.57},{"time":0.5,"x":93.89,"y":71.51},{"time":0.6,"x":319.45,"y":255.93},{"time":0.7333,"x":440.17,"y":368.27},{"time":0.9,"x":13.73,"y":-14.45},{"time":1.1667,"x":1.06,"y":-1.43}]},"timo5 014":{"rotate":[{"angle":0.29,"curve":"stepped"},{"time":1.1667,"angle":0.29}]},"bone11":{"rotate":[{"angle":-2.23},{"time":0.4333,"angle":30.55},{"time":0.9,"angle":-16.79},{"time":1.1667,"angle":-2.23}]},"timo5 015":{"rotate":[{"angle":0.95},{"time":0.3333,"angle":-9.88},{"time":0.4333,"angle":20.46},{"time":0.9,"angle":-27.95},{"time":1.1667,"angle":0.95}]},"bone12":{"rotate":[{"angle":0.95},{"time":0.3333,"angle":-9.88},{"time":0.4333,"angle":20.46},{"time":0.9,"angle":-27.95},{"time":1.1667,"angle":0.95}]},"bone13":{"rotate":[{"angle":0.95},{"time":0.3333,"angle":-9.88},{"time":0.4333,"angle":20.46},{"time":0.9,"angle":-27.95},{"time":1.1667,"angle":0.95}]},"timo5 011":{"rotate":[{"angle":0.95},{"time":0.3333,"angle":-10.72},{"time":0.4333,"angle":17.02},{"time":0.9,"angle":-22.85},{"time":1.1667,"angle":0.95}]},"bone14":{"rotate":[{"angle":0.95},{"time":0.3333,"angle":-10.72},{"time":0.4333,"angle":17.02},{"time":0.9,"angle":-22.85},{"time":1.1667,"angle":0.95}]},"bone15":{"rotate":[{"angle":0.95},{"time":0.3333,"angle":-10.71},{"time":0.4333,"angle":17.03},{"time":0.9,"angle":-22.85},{"time":1.1667,"angle":0.95}]}}}}},[0]]],0,0,[0],[-1],[0]] diff --git a/headless/static/remote/battle/import/f7/f71c334f-843b-49b0-b14b-616629f00565.json b/headless/static/remote/battle/import/f7/f71c334f-843b-49b0-b14b-616629f00565.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/f7/f71c334f-843b-49b0-b14b-616629f00565.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/f7/f71c334f-843b-49b0-b14b-616629f00565@f9941.json b/headless/static/remote/battle/import/f7/f71c334f-843b-49b0-b14b-616629f00565@f9941.json new file mode 100644 index 00000000..2c371b8e --- /dev/null +++ b/headless/static/remote/battle/import/f7/f71c334f-843b-49b0-b14b-616629f00565@f9941.json @@ -0,0 +1 @@ +[1,["f71c334f-843b-49b0-b14b-616629f00565@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"guaiA4eTexture","rect":{"x":3,"y":3,"width":1002,"height":245},"offset":{"x":-8,"y":2.5},"originalSize":{"width":1024,"height":256},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-501,-122.5,0,501,-122.5,0,-501,122.5,0,501,122.5,0],"indexes":[0,1,2,2,1,3],"uv":[3,253,1005,253,3,8,1005,8],"nuv":[0.0029296875,0.03125,0.9814453125,0.03125,0.0029296875,0.98828125,0.9814453125,0.98828125],"minPos":{"x":-501,"y":-122.5,"z":0},"maxPos":{"x":501,"y":122.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/fa/fa67273e-09aa-4baa-ac04-3a86c5698e1b.json b/headless/static/remote/battle/import/fa/fa67273e-09aa-4baa-ac04-3a86c5698e1b.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/fa/fa67273e-09aa-4baa-ac04-3a86c5698e1b.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/fa/fa67273e-09aa-4baa-ac04-3a86c5698e1b@f9941.json b/headless/static/remote/battle/import/fa/fa67273e-09aa-4baa-ac04-3a86c5698e1b@f9941.json new file mode 100644 index 00000000..6ffbd7cd --- /dev/null +++ b/headless/static/remote/battle/import/fa/fa67273e-09aa-4baa-ac04-3a86c5698e1b@f9941.json @@ -0,0 +1 @@ +[1,["fa67273e-09aa-4baa-ac04-3a86c5698e1b@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"zui_shouji","rect":{"x":0,"y":0,"width":49,"height":12},"offset":{"x":0,"y":0},"originalSize":{"width":49,"height":12},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-24.5,-6,0,24.5,-6,0,-24.5,6,0,24.5,6,0],"indexes":[0,1,2,2,1,3],"uv":[0,12,49,12,0,0,49,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-24.5,"y":-6,"z":0},"maxPos":{"x":24.5,"y":6,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/fa/faab0107-f3e3-49e0-82e1-6b992e6d5ce6.json b/headless/static/remote/battle/import/fa/faab0107-f3e3-49e0-82e1-6b992e6d5ce6.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/fa/faab0107-f3e3-49e0-82e1-6b992e6d5ce6.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/fa/faab0107-f3e3-49e0-82e1-6b992e6d5ce6@f9941.json b/headless/static/remote/battle/import/fa/faab0107-f3e3-49e0-82e1-6b992e6d5ce6@f9941.json new file mode 100644 index 00000000..1303bd71 --- /dev/null +++ b/headless/static/remote/battle/import/fa/faab0107-f3e3-49e0-82e1-6b992e6d5ce6@f9941.json @@ -0,0 +1 @@ +[1,["faab0107-f3e3-49e0-82e1-6b992e6d5ce6@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"y_yanjing_gongji","rect":{"x":0,"y":3,"width":16,"height":14},"offset":{"x":0,"y":-1.5},"originalSize":{"width":16,"height":17},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-8,-7,0,8,-7,0,-8,7,0,8,7,0],"indexes":[0,1,2,2,1,3],"uv":[0,14,16,14,0,0,16,0],"nuv":[0,0,1,0,0,0.8235294117647058,1,0.8235294117647058],"minPos":{"x":-8,"y":-7,"z":0},"maxPos":{"x":8,"y":7,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/fa/faeb7ee7-ef85-400d-aab5-250de6beac72.json b/headless/static/remote/battle/import/fa/faeb7ee7-ef85-400d-aab5-250de6beac72.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/fa/faeb7ee7-ef85-400d-aab5-250de6beac72.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/fa/faeb7ee7-ef85-400d-aab5-250de6beac72@f9941.json b/headless/static/remote/battle/import/fa/faeb7ee7-ef85-400d-aab5-250de6beac72@f9941.json new file mode 100644 index 00000000..e680f9cd --- /dev/null +++ b/headless/static/remote/battle/import/fa/faeb7ee7-ef85-400d-aab5-250de6beac72@f9941.json @@ -0,0 +1 @@ +[1,["faeb7ee7-ef85-400d-aab5-250de6beac72@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"TX_S1_shua_0016","rect":{"x":1,"y":1,"width":35,"height":13},"offset":{"x":-0.5,"y":-0.5},"originalSize":{"width":38,"height":14},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-17.5,-6.5,0,17.5,-6.5,0,-17.5,6.5,0,17.5,6.5,0],"indexes":[0,1,2,2,1,3],"uv":[1,13,36,13,1,0,36,0],"nuv":[0.02631578947368421,0,0.9473684210526315,0,0.02631578947368421,0.9285714285714286,0.9473684210526315,0.9285714285714286],"minPos":{"x":-17.5,"y":-6.5,"z":0},"maxPos":{"x":17.5,"y":6.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/fb/fbadc552-d5aa-42fc-a9da-f4c9398d3ea8.json b/headless/static/remote/battle/import/fb/fbadc552-d5aa-42fc-a9da-f4c9398d3ea8.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/fb/fbadc552-d5aa-42fc-a9da-f4c9398d3ea8.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/fb/fbadc552-d5aa-42fc-a9da-f4c9398d3ea8@f9941.json b/headless/static/remote/battle/import/fb/fbadc552-d5aa-42fc-a9da-f4c9398d3ea8@f9941.json new file mode 100644 index 00000000..7d43519e --- /dev/null +++ b/headless/static/remote/battle/import/fb/fbadc552-d5aa-42fc-a9da-f4c9398d3ea8@f9941.json @@ -0,0 +1 @@ +[1,["fbadc552-d5aa-42fc-a9da-f4c9398d3ea8@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"guangdian","rect":{"x":2,"y":4,"width":105,"height":84},"offset":{"x":-0.5,"y":-1},"originalSize":{"width":110,"height":90},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-52.5,-42,0,52.5,-42,0,-52.5,42,0,52.5,42,0],"indexes":[0,1,2,2,1,3],"uv":[2,86,107,86,2,2,107,2],"nuv":[0.01818181818181818,0.022222222222222223,0.9727272727272728,0.022222222222222223,0.01818181818181818,0.9555555555555556,0.9727272727272728,0.9555555555555556],"minPos":{"x":-52.5,"y":-42,"z":0},"maxPos":{"x":52.5,"y":42,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/fc/fc568493-5c48-42fe-83ae-ae4a8e6c79c6.json b/headless/static/remote/battle/import/fc/fc568493-5c48-42fe-83ae-ae4a8e6c79c6.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/fc/fc568493-5c48-42fe-83ae-ae4a8e6c79c6.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/fc/fc568493-5c48-42fe-83ae-ae4a8e6c79c6@f9941.json b/headless/static/remote/battle/import/fc/fc568493-5c48-42fe-83ae-ae4a8e6c79c6@f9941.json new file mode 100644 index 00000000..1ef4c3e1 --- /dev/null +++ b/headless/static/remote/battle/import/fc/fc568493-5c48-42fe-83ae-ae4a8e6c79c6@f9941.json @@ -0,0 +1 @@ +[1,["fc568493-5c48-42fe-83ae-ae4a8e6c79c6@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"y_bianzi3_bz","rect":{"x":0,"y":0,"width":81,"height":39},"offset":{"x":0,"y":0},"originalSize":{"width":81,"height":39},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-40.5,-19.5,0,40.5,-19.5,0,-40.5,19.5,0,40.5,19.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,39,81,39,0,0,81,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-40.5,"y":-19.5,"z":0},"maxPos":{"x":40.5,"y":19.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/fc/fcd65028-f911-47d4-8a0e-c9d8d49a8542.json b/headless/static/remote/battle/import/fc/fcd65028-f911-47d4-8a0e-c9d8d49a8542.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/fc/fcd65028-f911-47d4-8a0e-c9d8d49a8542.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/fc/fcd65028-f911-47d4-8a0e-c9d8d49a8542@f9941.json b/headless/static/remote/battle/import/fc/fcd65028-f911-47d4-8a0e-c9d8d49a8542@f9941.json new file mode 100644 index 00000000..a933dc64 --- /dev/null +++ b/headless/static/remote/battle/import/fc/fcd65028-f911-47d4-8a0e-c9d8d49a8542@f9941.json @@ -0,0 +1 @@ +[1,["fcd65028-f911-47d4-8a0e-c9d8d49a8542@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"guaiA4esTexture","rect":{"x":2,"y":3,"width":989,"height":1011},"offset":{"x":-15.5,"y":3.5},"originalSize":{"width":1024,"height":1024},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-494.5,-505.5,0,494.5,-505.5,0,-494.5,505.5,0,494.5,505.5,0],"indexes":[0,1,2,2,1,3],"uv":[2,1021,991,1021,2,10,991,10],"nuv":[0.001953125,0.009765625,0.9677734375,0.009765625,0.001953125,0.9970703125,0.9677734375,0.9970703125],"minPos":{"x":-494.5,"y":-505.5,"z":0},"maxPos":{"x":494.5,"y":505.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/fd/fd4028bb-d170-4a6c-a419-2ade1ed59038.json b/headless/static/remote/battle/import/fd/fd4028bb-d170-4a6c-a419-2ade1ed59038.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/fd/fd4028bb-d170-4a6c-a419-2ade1ed59038.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/fd/fd4028bb-d170-4a6c-a419-2ade1ed59038@f9941.json b/headless/static/remote/battle/import/fd/fd4028bb-d170-4a6c-a419-2ade1ed59038@f9941.json new file mode 100644 index 00000000..12562328 --- /dev/null +++ b/headless/static/remote/battle/import/fd/fd4028bb-d170-4a6c-a419-2ade1ed59038@f9941.json @@ -0,0 +1 @@ +[1,["fd4028bb-d170-4a6c-a419-2ade1ed59038@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"z_houtui","rect":{"x":0,"y":0,"width":14,"height":21},"offset":{"x":0,"y":0},"originalSize":{"width":14,"height":21},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-7,-10.5,0,7,-10.5,0,-7,10.5,0,7,10.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,21,14,21,0,0,14,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-7,"y":-10.5,"z":0},"maxPos":{"x":7,"y":10.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/fd/fdd5cc13-b87e-43b2-8d10-5d91105d43fc.json b/headless/static/remote/battle/import/fd/fdd5cc13-b87e-43b2-8d10-5d91105d43fc.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/fd/fdd5cc13-b87e-43b2-8d10-5d91105d43fc.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/fd/fdd5cc13-b87e-43b2-8d10-5d91105d43fc@f9941.json b/headless/static/remote/battle/import/fd/fdd5cc13-b87e-43b2-8d10-5d91105d43fc@f9941.json new file mode 100644 index 00000000..6eca0a20 --- /dev/null +++ b/headless/static/remote/battle/import/fd/fdd5cc13-b87e-43b2-8d10-5d91105d43fc@f9941.json @@ -0,0 +1 @@ +[1,["fdd5cc13-b87e-43b2-8d10-5d91105d43fc@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"y_yanjing_pingshi","rect":{"x":0,"y":0,"width":16,"height":18},"offset":{"x":0,"y":0},"originalSize":{"width":16,"height":18},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-8,-9,0,8,-9,0,-8,9,0,8,9,0],"indexes":[0,1,2,2,1,3],"uv":[0,18,16,18,0,0,16,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-8,"y":-9,"z":0},"maxPos":{"x":8,"y":9,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/fe/fe006121-94b6-4567-befa-d5d7c12fb3aa.json b/headless/static/remote/battle/import/fe/fe006121-94b6-4567-befa-d5d7c12fb3aa.json new file mode 100644 index 00000000..3f05b63a --- /dev/null +++ b/headless/static/remote/battle/import/fe/fe006121-94b6-4567-befa-d5d7c12fb3aa.json @@ -0,0 +1 @@ +[1,0,0,[["cc.Asset",["_name","_native"],1]],[[0,0,1,3]],[[0,"guaiA4es",".atlas"],-1],0,0,[],[],[]] diff --git a/headless/static/remote/battle/import/fe/fef99059-e5d9-47a9-87f4-46578f2fcae2.json b/headless/static/remote/battle/import/fe/fef99059-e5d9-47a9-87f4-46578f2fcae2.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/fe/fef99059-e5d9-47a9-87f4-46578f2fcae2.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/fe/fef99059-e5d9-47a9-87f4-46578f2fcae2@f9941.json b/headless/static/remote/battle/import/fe/fef99059-e5d9-47a9-87f4-46578f2fcae2@f9941.json new file mode 100644 index 00000000..b882102f --- /dev/null +++ b/headless/static/remote/battle/import/fe/fef99059-e5d9-47a9-87f4-46578f2fcae2@f9941.json @@ -0,0 +1 @@ +[1,["fef99059-e5d9-47a9-87f4-46578f2fcae2@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"timo5 003","rect":{"x":1,"y":1,"width":56,"height":86},"offset":{"x":0,"y":0},"originalSize":{"width":58,"height":88},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-28,-43,0,28,-43,0,-28,43,0,28,43,0],"indexes":[0,1,2,2,1,3],"uv":[1,87,57,87,1,1,57,1],"nuv":[0.017241379310344827,0.011363636363636364,0.9827586206896551,0.011363636363636364,0.017241379310344827,0.9886363636363636,0.9827586206896551,0.9886363636363636],"minPos":{"x":-28,"y":-43,"z":0},"maxPos":{"x":28,"y":43,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/fe/fefd7337-749b-4478-80e6-90f6c8c91f78.json b/headless/static/remote/battle/import/fe/fefd7337-749b-4478-80e6-90f6c8c91f78.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/fe/fefd7337-749b-4478-80e6-90f6c8c91f78.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/fe/fefd7337-749b-4478-80e6-90f6c8c91f78@f9941.json b/headless/static/remote/battle/import/fe/fefd7337-749b-4478-80e6-90f6c8c91f78@f9941.json new file mode 100644 index 00000000..b3420f5e --- /dev/null +++ b/headless/static/remote/battle/import/fe/fefd7337-749b-4478-80e6-90f6c8c91f78@f9941.json @@ -0,0 +1 @@ +[1,["fefd7337-749b-4478-80e6-90f6c8c91f78@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"zui_gongji","rect":{"x":0,"y":0,"width":48,"height":9},"offset":{"x":0,"y":0},"originalSize":{"width":48,"height":9},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-24,-4.5,0,24,-4.5,0,-24,4.5,0,24,4.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,9,48,9,0,0,48,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-24,"y":-4.5,"z":0},"maxPos":{"x":24,"y":4.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/import/ff/ffd5101f-8560-4166-87a3-a649ceaf8161.json b/headless/static/remote/battle/import/ff/ffd5101f-8560-4166-87a3-a649ceaf8161.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/battle/import/ff/ffd5101f-8560-4166-87a3-a649ceaf8161.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/battle/import/ff/ffd5101f-8560-4166-87a3-a649ceaf8161@f9941.json b/headless/static/remote/battle/import/ff/ffd5101f-8560-4166-87a3-a649ceaf8161@f9941.json new file mode 100644 index 00000000..c07aa9a7 --- /dev/null +++ b/headless/static/remote/battle/import/ff/ffd5101f-8560-4166-87a3-a649ceaf8161@f9941.json @@ -0,0 +1 @@ +[1,["ffd5101f-8560-4166-87a3-a649ceaf8161@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"jiao3","rect":{"x":1,"y":1,"width":69,"height":52},"offset":{"x":0,"y":0},"originalSize":{"width":71,"height":54},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-34.5,-26,0,34.5,-26,0,-34.5,26,0,34.5,26,0],"indexes":[0,1,2,2,1,3],"uv":[1,53,70,53,1,1,70,1],"nuv":[0.014084507042253521,0.018518518518518517,0.9859154929577465,0.018518518518518517,0.014084507042253521,0.9814814814814815,0.9859154929577465,0.9814814814814815],"minPos":{"x":-34.5,"y":-26,"z":0},"maxPos":{"x":34.5,"y":26,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/battle/index.js b/headless/static/remote/battle/index.js new file mode 100644 index 00000000..c4c1a5fb --- /dev/null +++ b/headless/static/remote/battle/index.js @@ -0,0 +1,24 @@ +System.register("chunks:///battle.js", [], function () { + return { + execute: function () {} + }; +}); + +(function(r) { + r('virtual:///prerequisite-imports/battle', 'chunks:///battle.js'); +})(function(mid, cid) { + System.register(mid, [cid], function (_export, _context) { + return { + setters: [function(_m) { + var _exportObj = {}; + + for (var _key in _m) { + if (_key !== "default" && _key !== "__esModule") _exportObj[_key] = _m[_key]; + } + + _export(_exportObj); + }], + execute: function () { } + }; + }); +}); \ No newline at end of file diff --git a/headless/static/remote/ngame_src/config.json b/headless/static/remote/ngame_src/config.json new file mode 100644 index 00000000..599a04cb --- /dev/null +++ b/headless/static/remote/ngame_src/config.json @@ -0,0 +1,55 @@ +{ + "importBase": "import", + "nativeBase": "native", + "name": "ngame_src", + "deps": [], + "uuids": [ + "74a2caa9-3ce8-48c7-b658-c57115568c8f", + "867fff28-95e1-4638-b0cc-c7ff4cb6829c", + "8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b", + "8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b@6c48a", + "8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b@f9941" + ], + "paths": { + "74a2caa9-3ce8-48c7-b658-c57115568c8f": [ + "proto/JNSyncMessage", + "cc.TextAsset" + ], + "867fff28-95e1-4638-b0cc-c7ff4cb6829c": [ + "proto/NActionMessage", + "cc.TextAsset" + ], + "8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b": [ + "ui/default_sprite_splash", + "cc.ImageAsset" + ], + "8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b@6c48a": [ + "ui/default_sprite_splash/texture", + "cc.Texture2D", + 1 + ], + "8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b@f9941": [ + "ui/default_sprite_splash/spriteFrame", + "cc.SpriteFrame", + 1 + ] + }, + "scenes": {}, + "packs": {}, + "versions": { + "import": [], + "native": [] + }, + "redirect": [], + "debug": true, + "extensionMap": {}, + "hasPreloadScript": true, + "dependencyRelationships": { + "8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b@6c48a": [ + "8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b" + ], + "8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b@f9941": [ + "8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b@6c48a" + ] + } +} \ No newline at end of file diff --git a/headless/static/remote/ngame_src/import/74/74a2caa9-3ce8-48c7-b658-c57115568c8f.json b/headless/static/remote/ngame_src/import/74/74a2caa9-3ce8-48c7-b658-c57115568c8f.json new file mode 100644 index 00000000..362cd56e --- /dev/null +++ b/headless/static/remote/ngame_src/import/74/74a2caa9-3ce8-48c7-b658-c57115568c8f.json @@ -0,0 +1 @@ +[1,0,0,[["cc.TextAsset",["_name","text"],1]],[[0,0,1,3]],[[0,"JNSyncMessage","syntax = \"proto3\";\r\n\r\noption java_package = \"cn.jisol.ngame.proto\";\r\nimport \"google/protobuf/any.proto\";\r\n\r\n//帧同步输入\r\nmessage JNFrameInput{\r\n int32 nId = 1; //输入的Id\r\n optional bytes input = 2; //输入内容\r\n}\r\n//帧输入列表\r\nmessage JNFrameInputs {\r\n repeated JNFrameInput inputs = 1; //输入列表\r\n}\r\n//帧同步消息\r\nmessage JNFrameInfo {\r\n int32 index = 1; //帧数\r\n repeated JNFrameInput messages = 2; //消息bytes\r\n}\r\n//帧同步集合\r\nmessage JNFrameInfos{\r\n repeated JNFrameInfo frames = 1; //帧数集\r\n}\r\n\r\n//帧同步输入\r\nmessage JNInput {\r\n optional string message = 1;\r\n}\r\n"]],0,0,[],[],[]] diff --git a/headless/static/remote/ngame_src/import/86/867fff28-95e1-4638-b0cc-c7ff4cb6829c.json b/headless/static/remote/ngame_src/import/86/867fff28-95e1-4638-b0cc-c7ff4cb6829c.json new file mode 100644 index 00000000..7e6f2e5a --- /dev/null +++ b/headless/static/remote/ngame_src/import/86/867fff28-95e1-4638-b0cc-c7ff4cb6829c.json @@ -0,0 +1 @@ +[1,0,0,[["cc.TextAsset",["_name","text"],1]],[[0,0,1,3]],[[0,"NActionMessage","syntax = \"proto3\";\r\n\r\noption java_package = \"cn.jisol.ngame.proto\";\r\n\r\nmessage NActionDemo {\r\n optional string message = 1;\r\n}\r\n\r\nmessage NActionDemo2 {\r\n optional string message = 1;\r\n}\r\n\r\n"]],0,0,[],[],[]] diff --git a/headless/static/remote/ngame_src/import/8c/8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b.json b/headless/static/remote/ngame_src/import/8c/8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/ngame_src/import/8c/8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/ngame_src/import/8c/8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b@6c48a.json b/headless/static/remote/ngame_src/import/8c/8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b@6c48a.json new file mode 100644 index 00000000..b4472036 --- /dev/null +++ b/headless/static/remote/ngame_src/import/8c/8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b@6c48a.json @@ -0,0 +1 @@ +[1,0,0,["cc.Texture2D"],0,[{"base":"2,2,2,2,0,0","mipmaps":["8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b"]}],[0],0,[],[],[]] diff --git a/headless/static/remote/ngame_src/import/8c/8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b@f9941.json b/headless/static/remote/ngame_src/import/8c/8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b@f9941.json new file mode 100644 index 00000000..b039da4c --- /dev/null +++ b/headless/static/remote/ngame_src/import/8c/8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b@f9941.json @@ -0,0 +1 @@ +[1,["8c9cbdaa-7df4-4160-b8b0-5ec22d46ac1b@6c48a"],["_textureSource"],["cc.SpriteFrame"],0,[{"name":"default_sprite_splash","rect":{"x":0,"y":0,"width":2,"height":2},"offset":{"x":0,"y":0},"originalSize":{"width":2,"height":2},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-1,-1,0,1,-1,0,-1,1,0,1,1,0],"indexes":[0,1,2,2,1,3],"uv":[0,2,2,2,0,0,2,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-1,"y":-1,"z":0},"maxPos":{"x":1,"y":1,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[0],[0]] diff --git a/headless/static/remote/ngame_src/index.js b/headless/static/remote/ngame_src/index.js new file mode 100644 index 00000000..fada83f7 --- /dev/null +++ b/headless/static/remote/ngame_src/index.js @@ -0,0 +1,24 @@ +System.register("chunks:///ngame_src.js", [], function () { + return { + execute: function () {} + }; +}); + +(function(r) { + r('virtual:///prerequisite-imports/ngame_src', 'chunks:///ngame_src.js'); +})(function(mid, cid) { + System.register(mid, [cid], function (_export, _context) { + return { + setters: [function(_m) { + var _exportObj = {}; + + for (var _key in _m) { + if (_key !== "default" && _key !== "__esModule") _exportObj[_key] = _m[_key]; + } + + _export(_exportObj); + }], + execute: function () { } + }; + }); +}); \ No newline at end of file diff --git a/headless/static/remote/resources/config.json b/headless/static/remote/resources/config.json new file mode 100644 index 00000000..4bb92b92 --- /dev/null +++ b/headless/static/remote/resources/config.json @@ -0,0 +1,642 @@ +{ + "importBase": "import", + "nativeBase": "native", + "name": "resources", + "deps": [], + "uuids": [ + "02638159c", + "02894a0ad", + "03038aaf8", + "0578e6725", + "05fd1428a", + "072d38c93", + "088ce3f4b", + "08967caef", + "097fa3f25", + "0b5f814c9", + "0ccb44c9-b7bc-4fc6-b7d2-8a4335f806a5", + "0ecfcd971", + "0fe160da1", + "11623136-ce7c-4aaf-9be6-c298c14d1e0d", + "11bdc4b0-64a8-4eb7-a2a7-9fb9e233e977", + "11bdc4b0-64a8-4eb7-a2a7-9fb9e233e977@6c48a", + "11bdc4b0-64a8-4eb7-a2a7-9fb9e233e977@f9941", + "13ffba43-826c-4f33-8ac2-4b59811ce9b0", + "13ffba43-826c-4f33-8ac2-4b59811ce9b0@6c48a", + "13ffba43-826c-4f33-8ac2-4b59811ce9b0@f9941", + "14d2a9b1-50ad-4051-a96a-b1c194651259", + "158e7e52-3220-4cd7-9694-713e0e6e8278", + "158e7e52-3220-4cd7-9694-713e0e6e8278@6c48a", + "158e7e52-3220-4cd7-9694-713e0e6e8278@f9941", + "179a2053-b80c-4b5d-ab83-e75934fd66d2", + "179a2053-b80c-4b5d-ab83-e75934fd66d2@6c48a", + "1bab3314-296c-4ade-91fa-a20dee0a3243", + "1c448338-21ce-44ac-90b9-bd0b911896bc", + "1ee4a519-c5ef-453c-98d6-9940781b6fcc", + "20835ba4-6145-4fbc-a58a-051ce700aa3e", + "20835ba4-6145-4fbc-a58a-051ce700aa3e@6c48a", + "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941", + "2201bceb-a177-49c8-91e5-65399342de88", + "2357c44f-3cf0-47eb-8f7a-0f303eaefe08", + "2357c44f-3cf0-47eb-8f7a-0f303eaefe08@6c48a", + "24a704da-2867-446d-8d1a-5e920c75e09d", + "24a704da-2867-446d-8d1a-5e920c75e09d@6c48a", + "24a704da-2867-446d-8d1a-5e920c75e09d@f9941", + "25581f1e-f65e-4797-8a7a-b6718171b165", + "29473705-12eb-4ba9-83f1-a4b75ad3a30f", + "29e1c6dc-6549-4f30-ad94-fe92d3cead0c", + "30250fcc-aac2-4473-94bf-7688cf16a604", + "30250fcc-aac2-4473-94bf-7688cf16a604@6c48a", + "30250fcc-aac2-4473-94bf-7688cf16a604@f9941", + "3520eceb-6d73-4cdc-b333-c80f737fee27", + "3573cc27-514e-49fc-91ef-510f3fca6aab", + "42029fae-0ee0-48c1-b7c5-850c03664ae4", + "51104c05-e5db-4274-a66e-1de9ab511e4f", + "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8", + "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@6c48a", + "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941", + "580aaa0b-8b26-4bc6-9abe-6984e9980679", + "745b8038-b832-48f8-9873-1baa6de58ad7", + "76aadab4-10a3-4c8e-b4b9-dce7807050fc", + "76aadab4-10a3-4c8e-b4b9-dce7807050fc@6c48a", + "76aadab4-10a3-4c8e-b4b9-dce7807050fc@f9941", + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca", + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@6c48a", + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941", + "8783acf4-8ffd-44d0-ac6c-61e76b1867ee", + "8cd8e7fb-f35b-417f-b147-ecc7ef089706", + "8cd8e7fb-f35b-417f-b147-ecc7ef089706@6c48a", + "927f03cf-a5b6-4572-a362-57b33d1f69e3", + "951249e0-9f16-456d-8b85-a6ca954da16b", + "951249e0-9f16-456d-8b85-a6ca954da16b@6c48a", + "951249e0-9f16-456d-8b85-a6ca954da16b@f9941", + "95a40bf9-994f-4f8c-bd5e-f8bc347becf3", + "97d4ae8c-12df-45cd-8629-87e18f6e8ddf", + "987c7c4a-057a-454a-85f4-772f5c3a6935", + "9d7eeadb-58f6-4c42-aaed-bc402f272c84", + "9fd900dd-221b-4f89-8f2c-fba34243c835", + "9fd900dd-221b-4f89-8f2c-fba34243c835@6c48a", + "9fd900dd-221b-4f89-8f2c-fba34243c835@f9941", + "a0d1e275-5512-493e-8e15-7d2db8beb48e", + "a0d1e275-5512-493e-8e15-7d2db8beb48e@f9941", + "a45aa187-ac3b-4295-a37c-d2d903f80587", + "a9053170-1055-4272-b3fd-ad6fa75b5f25", + "a9de536f-0262-4e1b-92ee-b0c5b27ae808", + "aa8a78cc-e890-455c-8ca8-f0ab5fece55f", + "ab426a3a-eda6-4ddb-a87f-9eff7359e351", + "ab7f7687-54ad-4afe-9362-646727942569", + "afc47931-f066-46b0-90be-9fe61f213428", + "afc47931-f066-46b0-90be-9fe61f213428@6c48a", + "afc47931-f066-46b0-90be-9fe61f213428@f9941", + "b730527c-3233-41c2-aaf7-7cdab58f9749", + "b730527c-3233-41c2-aaf7-7cdab58f9749@6c48a", + "b730527c-3233-41c2-aaf7-7cdab58f9749@f9941", + "b882ecdb-012a-4d85-b799-e4da5991c0dd", + "bd1bcaba-bd7d-4a71-b143-997c882383e4", + "bd1bcaba-bd7d-4a71-b143-997c882383e4@6c48a", + "bd1bcaba-bd7d-4a71-b143-997c882383e4@f9941", + "c26a2ac3-057f-4de8-8c06-9ff3e1c48017", + "c26a2ac3-057f-4de8-8c06-9ff3e1c48017@6c48a", + "c4847dce-e0b9-4e15-8bff-c42612edf6d1", + "c579484c-c7d1-4fd7-ba57-f93003d57a38", + "ca081965-20e1-401b-a6d9-1cec3e644dbb", + "d1bca093-45af-4ae2-a896-11ed7c6f9bda", + "d9bca169-7a8d-4581-90b2-487db4a4dabb", + "da561b68-57fb-462b-b799-da2ba6658534", + "db69a24b-0109-4e72-9975-7a4e80e86c3e", + "de8f19b4-20e0-4020-ac9c-8c52f9ffffa2", + "dfe67d28-0f19-440b-ad19-7c1f70b3528b", + "e59969f5-99a0-4259-ba3e-71093a65cfd8", + "e6448a2d-8905-4c78-b693-d7cb42c22021", + "e989c288-5957-41c1-953c-190622651f52", + "eb53cac5-aaa5-4b5f-8a22-38bccee261dc", + "ef1f320e-328a-41c9-bfdc-ad17d402e14f", + "f9a7b5b8-0c1a-4b0c-a6c7-bbf2e077442a", + "fc8eb7b6-f756-49f4-9102-ac3cca3a20ae", + "ffb88a8f-af62-48f4-8f1d-3cb606443a43", + "ffb88a8f-af62-48f4-8f1d-3cb606443a43@6c48a", + "ffb88a8f-af62-48f4-8f1d-3cb606443a43@f9941" + ], + "paths": { + "aa8a78cc-e890-455c-8ca8-f0ab5fece55f": [ + "12", + "cc.TextAsset" + ], + "987c7c4a-057a-454a-85f4-772f5c3a6935": [ + "33", + "cc.TextAsset" + ], + "2201bceb-a177-49c8-91e5-65399342de88": [ + "331", + "cc.TextAsset" + ], + "3573cc27-514e-49fc-91ef-510f3fca6aab": [ + "332", + "cc.TextAsset" + ], + "745b8038-b832-48f8-9873-1baa6de58ad7": [ + "UICanvas", + "cc.Prefab" + ], + "25581f1e-f65e-4797-8a7a-b6718171b165": [ + "WorldCanvas", + "cc.Prefab" + ], + "a0d1e275-5512-493e-8e15-7d2db8beb48e": [ + "renders/WorldCamera", + "cc.RenderTexture" + ], + "a0d1e275-5512-493e-8e15-7d2db8beb48e@f9941": [ + "renders/WorldCamera/spriteFrame", + "cc.SpriteFrame", + 1 + ], + "1bab3314-296c-4ade-91fa-a20dee0a3243": [ + "config/json/tbgglobal", + "cc.JsonAsset" + ], + "ca081965-20e1-401b-a6d9-1cec3e644dbb": [ + "config/json/tbgmap", + "cc.JsonAsset" + ], + "0ccb44c9-b7bc-4fc6-b7d2-8a4335f806a5": [ + "config/json/tbgonhookglobal", + "cc.JsonAsset" + ], + "97d4ae8c-12df-45cd-8629-87e18f6e8ddf": [ + "config/json/tbgresource", + "cc.JsonAsset" + ], + "8783acf4-8ffd-44d0-ac6c-61e76b1867ee": [ + "config/json/tbgrole", + "cc.JsonAsset" + ], + "c579484c-c7d1-4fd7-ba57-f93003d57a38": [ + "config/json/tbgroleattack", + "cc.JsonAsset" + ], + "95a40bf9-994f-4f8c-bd5e-f8bc347becf3": [ + "config/json/tbgrolebattleres", + "cc.JsonAsset" + ], + "1c448338-21ce-44ac-90b9-bd0b911896bc": [ + "config/json/tbgroleskill", + "cc.JsonAsset" + ], + "3520eceb-6d73-4cdc-b333-c80f737fee27": [ + "prefab/battle/mode/GOnHookMode", + "cc.Prefab" + ], + "b882ecdb-012a-4d85-b799-e4da5991c0dd": [ + "prefab/battle/mode/GPVPMode", + "cc.Prefab" + ], + "e989c288-5957-41c1-953c-190622651f52": [ + "prefab/battle/role/GRoleDefault", + "cc.Prefab" + ], + "a45aa187-ac3b-4295-a37c-d2d903f80587": [ + "prefab/ui/主页/HomeView", + "cc.Prefab" + ], + "a9de536f-0262-4e1b-92ee-b0c5b27ae808": [ + "prefab/ui/主页/MainView", + "cc.Prefab" + ], + "ab7f7687-54ad-4afe-9362-646727942569": [ + "prefab/ui/加载页面/LoadingView", + "cc.Prefab" + ], + "927f03cf-a5b6-4572-a362-57b33d1f69e3": [ + "prefab/ui/新手引导页面/NoviceNamingView", + "cc.Prefab" + ], + "d9bca169-7a8d-4581-90b2-487db4a4dabb": [ + "prefab/ui/新手引导页面/NoviceSelectPetView", + "cc.Prefab" + ], + "ab426a3a-eda6-4ddb-a87f-9eff7359e351": [ + "prefab/ui/系统页面/LoginView", + "cc.Prefab" + ], + "fc8eb7b6-f756-49f4-9102-ac3cca3a20ae": [ + "prefab/ui/阵法/阵法宠物ICON", + "cc.Prefab" + ], + "eb53cac5-aaa5-4b5f-8a22-38bccee261dc": [ + "prefab/ui/阵法/阵法选择页面", + "cc.Prefab" + ], + "da561b68-57fb-462b-b799-da2ba6658534": [ + "prefab/ui/主页/聊天/MainChatItem", + "cc.Prefab" + ], + "c4847dce-e0b9-4e15-8bff-c42612edf6d1": [ + "prefab/ui/主页/聊天/MainChatView", + "cc.Prefab" + ], + "a9053170-1055-4272-b3fd-ad6fa75b5f25": [ + "prefab/ui/主页/野怪/野怪列表", + "cc.Prefab" + ], + "29473705-12eb-4ba9-83f1-a4b75ad3a30f": [ + "prefab/ui/主页/野怪/野怪列表ICON", + "cc.Prefab" + ], + "ef1f320e-328a-41c9-bfdc-ad17d402e14f": [ + "prefab/ui/常用预制体/宠物/宠物ICON", + "cc.Prefab" + ], + "e59969f5-99a0-4259-ba3e-71093a65cfd8": [ + "prefab/ui/常用预制体/宠物/选择宠物ICON", + "cc.Prefab" + ], + "de8f19b4-20e0-4020-ac9c-8c52f9ffffa2": [ + "prefab/ui/常用预制体/游戏/受击文本", + "cc.Prefab" + ], + "1ee4a519-c5ef-453c-98d6-9940781b6fcc": [ + "prefab/ui/常用预制体/游戏/游戏模式渲染", + "cc.Prefab" + ], + "f9a7b5b8-0c1a-4b0c-a6c7-bbf2e077442a": [ + "prefab/ui/常用预制体/资源/玩家资源显示", + "cc.Prefab" + ], + "9d7eeadb-58f6-4c42-aaed-bc402f272c84": [ + "prefab/ui/常用预制体/阵法/阵法", + "cc.Prefab" + ], + "11623136-ce7c-4aaf-9be6-c298c14d1e0d": [ + "prefab/ui/常用预制体/阵法/阵法节点", + "cc.Prefab" + ], + "d1bca093-45af-4ae2-a896-11ed7c6f9bda": [ + "prefab/ui/模式/PVP/PVP匹配页面", + "cc.Prefab" + ], + "e6448a2d-8905-4c78-b693-d7cb42c22021": [ + "prefab/ui/系统页面/提示/TipsView", + "cc.Prefab" + ], + "db69a24b-0109-4e72-9975-7a4e80e86c3e": [ + "prefab/ui/系统页面/选择提示/SelectionBox", + "cc.Prefab" + ], + "580aaa0b-8b26-4bc6-9abe-6984e9980679": [ + "config/json/tbgrolecstar", + "cc.JsonAsset" + ], + "dfe67d28-0f19-440b-ad19-7c1f70b3528b": [ + "config/json/tbgrolecup", + "cc.JsonAsset" + ] + }, + "scenes": {}, + "packs": { + "097fa3f25": [ + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@6c48a", + "8cd8e7fb-f35b-417f-b147-ecc7ef089706@6c48a", + "9fd900dd-221b-4f89-8f2c-fba34243c835@6c48a", + "11bdc4b0-64a8-4eb7-a2a7-9fb9e233e977@6c48a", + "13ffba43-826c-4f33-8ac2-4b59811ce9b0@6c48a", + "24a704da-2867-446d-8d1a-5e920c75e09d@6c48a", + "76aadab4-10a3-4c8e-b4b9-dce7807050fc@6c48a", + "158e7e52-3220-4cd7-9694-713e0e6e8278@6c48a", + "179a2053-b80c-4b5d-ab83-e75934fd66d2@6c48a", + "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@6c48a", + "2357c44f-3cf0-47eb-8f7a-0f303eaefe08@6c48a", + "20835ba4-6145-4fbc-a58a-051ce700aa3e@6c48a", + "30250fcc-aac2-4473-94bf-7688cf16a604@6c48a", + "951249e0-9f16-456d-8b85-a6ca954da16b@6c48a", + "afc47931-f066-46b0-90be-9fe61f213428@6c48a", + "b730527c-3233-41c2-aaf7-7cdab58f9749@6c48a", + "bd1bcaba-bd7d-4a71-b143-997c882383e4@6c48a", + "c26a2ac3-057f-4de8-8c06-9ff3e1c48017@6c48a", + "ffb88a8f-af62-48f4-8f1d-3cb606443a43@6c48a" + ], + "088ce3f4b": [ + "11623136-ce7c-4aaf-9be6-c298c14d1e0d", + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941" + ], + "0ecfcd971": [ + "1ee4a519-c5ef-453c-98d6-9940781b6fcc", + "a0d1e275-5512-493e-8e15-7d2db8beb48e", + "a0d1e275-5512-493e-8e15-7d2db8beb48e@f9941", + "de8f19b4-20e0-4020-ac9c-8c52f9ffffa2" + ], + "03038aaf8": [ + "13ffba43-826c-4f33-8ac2-4b59811ce9b0@f9941", + "24a704da-2867-446d-8d1a-5e920c75e09d@f9941", + "25581f1e-f65e-4797-8a7a-b6718171b165", + "30250fcc-aac2-4473-94bf-7688cf16a604@f9941", + "3520eceb-6d73-4cdc-b333-c80f737fee27", + "9fd900dd-221b-4f89-8f2c-fba34243c835@f9941", + "b882ecdb-012a-4d85-b799-e4da5991c0dd", + "e989c288-5957-41c1-953c-190622651f52" + ], + "08967caef": [ + "29473705-12eb-4ba9-83f1-a4b75ad3a30f", + "e59969f5-99a0-4259-ba3e-71093a65cfd8", + "ef1f320e-328a-41c9-bfdc-ad17d402e14f" + ], + "02638159c": [ + "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941", + "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941", + "927f03cf-a5b6-4572-a362-57b33d1f69e3", + "951249e0-9f16-456d-8b85-a6ca954da16b@f9941", + "bd1bcaba-bd7d-4a71-b143-997c882383e4@f9941" + ], + "0fe160da1": [ + "11bdc4b0-64a8-4eb7-a2a7-9fb9e233e977@f9941", + "14d2a9b1-50ad-4051-a96a-b1c194651259", + "158e7e52-3220-4cd7-9694-713e0e6e8278@f9941", + "29e1c6dc-6549-4f30-ad94-fe92d3cead0c", + "42029fae-0ee0-48c1-b7c5-850c03664ae4", + "51104c05-e5db-4274-a66e-1de9ab511e4f", + "a45aa187-ac3b-4295-a37c-d2d903f80587" + ], + "0578e6725": [ + "a9053170-1055-4272-b3fd-ad6fa75b5f25", + "b730527c-3233-41c2-aaf7-7cdab58f9749@f9941" + ], + "0b5f814c9": [ + "9d7eeadb-58f6-4c42-aaed-bc402f272c84", + "a9de536f-0262-4e1b-92ee-b0c5b27ae808", + "f9a7b5b8-0c1a-4b0c-a6c7-bbf2e077442a" + ], + "02894a0ad": [ + "76aadab4-10a3-4c8e-b4b9-dce7807050fc@f9941", + "ab7f7687-54ad-4afe-9362-646727942569" + ], + "072d38c93": [ + "afc47931-f066-46b0-90be-9fe61f213428@f9941", + "c4847dce-e0b9-4e15-8bff-c42612edf6d1", + "da561b68-57fb-462b-b799-da2ba6658534", + "ffb88a8f-af62-48f4-8f1d-3cb606443a43@f9941" + ], + "05fd1428a": [ + "eb53cac5-aaa5-4b5f-8a22-38bccee261dc", + "fc8eb7b6-f756-49f4-9102-ac3cca3a20ae" + ] + }, + "versions": { + "import": [], + "native": [] + }, + "redirect": [], + "debug": true, + "extensionMap": {}, + "hasPreloadScript": true, + "dependencyRelationships": { + "11623136-ce7c-4aaf-9be6-c298c14d1e0d": [ + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941" + ], + "11bdc4b0-64a8-4eb7-a2a7-9fb9e233e977@6c48a": [ + "11bdc4b0-64a8-4eb7-a2a7-9fb9e233e977" + ], + "11bdc4b0-64a8-4eb7-a2a7-9fb9e233e977@f9941": [ + "11bdc4b0-64a8-4eb7-a2a7-9fb9e233e977@6c48a" + ], + "13ffba43-826c-4f33-8ac2-4b59811ce9b0@6c48a": [ + "13ffba43-826c-4f33-8ac2-4b59811ce9b0" + ], + "13ffba43-826c-4f33-8ac2-4b59811ce9b0@f9941": [ + "13ffba43-826c-4f33-8ac2-4b59811ce9b0@6c48a" + ], + "14d2a9b1-50ad-4051-a96a-b1c194651259": [ + "8cd8e7fb-f35b-417f-b147-ecc7ef089706@6c48a" + ], + "158e7e52-3220-4cd7-9694-713e0e6e8278@6c48a": [ + "158e7e52-3220-4cd7-9694-713e0e6e8278" + ], + "158e7e52-3220-4cd7-9694-713e0e6e8278@f9941": [ + "158e7e52-3220-4cd7-9694-713e0e6e8278@6c48a" + ], + "179a2053-b80c-4b5d-ab83-e75934fd66d2@6c48a": [ + "179a2053-b80c-4b5d-ab83-e75934fd66d2" + ], + "1ee4a519-c5ef-453c-98d6-9940781b6fcc": [ + "a0d1e275-5512-493e-8e15-7d2db8beb48e@f9941", + "de8f19b4-20e0-4020-ac9c-8c52f9ffffa2" + ], + "20835ba4-6145-4fbc-a58a-051ce700aa3e@6c48a": [ + "20835ba4-6145-4fbc-a58a-051ce700aa3e" + ], + "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941": [ + "20835ba4-6145-4fbc-a58a-051ce700aa3e@6c48a" + ], + "2357c44f-3cf0-47eb-8f7a-0f303eaefe08@6c48a": [ + "2357c44f-3cf0-47eb-8f7a-0f303eaefe08" + ], + "24a704da-2867-446d-8d1a-5e920c75e09d@6c48a": [ + "24a704da-2867-446d-8d1a-5e920c75e09d" + ], + "24a704da-2867-446d-8d1a-5e920c75e09d@f9941": [ + "24a704da-2867-446d-8d1a-5e920c75e09d@6c48a" + ], + "25581f1e-f65e-4797-8a7a-b6718171b165": [ + "a0d1e275-5512-493e-8e15-7d2db8beb48e", + "3520eceb-6d73-4cdc-b333-c80f737fee27", + "b882ecdb-012a-4d85-b799-e4da5991c0dd" + ], + "29473705-12eb-4ba9-83f1-a4b75ad3a30f": [ + "e59969f5-99a0-4259-ba3e-71093a65cfd8" + ], + "29e1c6dc-6549-4f30-ad94-fe92d3cead0c": [ + "c26a2ac3-057f-4de8-8c06-9ff3e1c48017@6c48a" + ], + "30250fcc-aac2-4473-94bf-7688cf16a604@6c48a": [ + "30250fcc-aac2-4473-94bf-7688cf16a604" + ], + "30250fcc-aac2-4473-94bf-7688cf16a604@f9941": [ + "30250fcc-aac2-4473-94bf-7688cf16a604@6c48a" + ], + "3520eceb-6d73-4cdc-b333-c80f737fee27": [ + "e989c288-5957-41c1-953c-190622651f52" + ], + "42029fae-0ee0-48c1-b7c5-850c03664ae4": [ + "2357c44f-3cf0-47eb-8f7a-0f303eaefe08@6c48a" + ], + "51104c05-e5db-4274-a66e-1de9ab511e4f": [ + "179a2053-b80c-4b5d-ab83-e75934fd66d2@6c48a" + ], + "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@6c48a": [ + "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8" + ], + "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941": [ + "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@6c48a" + ], + "76aadab4-10a3-4c8e-b4b9-dce7807050fc@6c48a": [ + "76aadab4-10a3-4c8e-b4b9-dce7807050fc" + ], + "76aadab4-10a3-4c8e-b4b9-dce7807050fc@f9941": [ + "76aadab4-10a3-4c8e-b4b9-dce7807050fc@6c48a" + ], + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@6c48a": [ + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca" + ], + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941": [ + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@6c48a" + ], + "8cd8e7fb-f35b-417f-b147-ecc7ef089706@6c48a": [ + "8cd8e7fb-f35b-417f-b147-ecc7ef089706" + ], + "927f03cf-a5b6-4572-a362-57b33d1f69e3": [ + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941", + "bd1bcaba-bd7d-4a71-b143-997c882383e4@f9941", + "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941", + "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941", + "951249e0-9f16-456d-8b85-a6ca954da16b@f9941" + ], + "951249e0-9f16-456d-8b85-a6ca954da16b@6c48a": [ + "951249e0-9f16-456d-8b85-a6ca954da16b" + ], + "951249e0-9f16-456d-8b85-a6ca954da16b@f9941": [ + "951249e0-9f16-456d-8b85-a6ca954da16b@6c48a" + ], + "9d7eeadb-58f6-4c42-aaed-bc402f272c84": [ + "11623136-ce7c-4aaf-9be6-c298c14d1e0d", + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941" + ], + "9fd900dd-221b-4f89-8f2c-fba34243c835@6c48a": [ + "9fd900dd-221b-4f89-8f2c-fba34243c835" + ], + "9fd900dd-221b-4f89-8f2c-fba34243c835@f9941": [ + "9fd900dd-221b-4f89-8f2c-fba34243c835@6c48a" + ], + "a0d1e275-5512-493e-8e15-7d2db8beb48e@f9941": [ + "a0d1e275-5512-493e-8e15-7d2db8beb48e" + ], + "a45aa187-ac3b-4295-a37c-d2d903f80587": [ + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941", + "a0d1e275-5512-493e-8e15-7d2db8beb48e@f9941", + "158e7e52-3220-4cd7-9694-713e0e6e8278@f9941", + "11bdc4b0-64a8-4eb7-a2a7-9fb9e233e977@f9941", + "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941", + "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941", + "951249e0-9f16-456d-8b85-a6ca954da16b@f9941", + "29e1c6dc-6549-4f30-ad94-fe92d3cead0c", + "14d2a9b1-50ad-4051-a96a-b1c194651259", + "42029fae-0ee0-48c1-b7c5-850c03664ae4", + "51104c05-e5db-4274-a66e-1de9ab511e4f" + ], + "a9053170-1055-4272-b3fd-ad6fa75b5f25": [ + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941", + "b730527c-3233-41c2-aaf7-7cdab58f9749@f9941", + "29473705-12eb-4ba9-83f1-a4b75ad3a30f" + ], + "a9de536f-0262-4e1b-92ee-b0c5b27ae808": [ + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941", + "1ee4a519-c5ef-453c-98d6-9940781b6fcc", + "f9a7b5b8-0c1a-4b0c-a6c7-bbf2e077442a", + "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941", + "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941", + "951249e0-9f16-456d-8b85-a6ca954da16b@f9941", + "a9053170-1055-4272-b3fd-ad6fa75b5f25", + "9d7eeadb-58f6-4c42-aaed-bc402f272c84" + ], + "ab426a3a-eda6-4ddb-a87f-9eff7359e351": [ + "bd1bcaba-bd7d-4a71-b143-997c882383e4@f9941", + "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941", + "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941", + "951249e0-9f16-456d-8b85-a6ca954da16b@f9941", + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941" + ], + "ab7f7687-54ad-4afe-9362-646727942569": [ + "76aadab4-10a3-4c8e-b4b9-dce7807050fc@f9941", + "24a704da-2867-446d-8d1a-5e920c75e09d@f9941" + ], + "afc47931-f066-46b0-90be-9fe61f213428@6c48a": [ + "afc47931-f066-46b0-90be-9fe61f213428" + ], + "afc47931-f066-46b0-90be-9fe61f213428@f9941": [ + "afc47931-f066-46b0-90be-9fe61f213428@6c48a" + ], + "b730527c-3233-41c2-aaf7-7cdab58f9749@6c48a": [ + "b730527c-3233-41c2-aaf7-7cdab58f9749" + ], + "b730527c-3233-41c2-aaf7-7cdab58f9749@f9941": [ + "b730527c-3233-41c2-aaf7-7cdab58f9749@6c48a" + ], + "b882ecdb-012a-4d85-b799-e4da5991c0dd": [ + "13ffba43-826c-4f33-8ac2-4b59811ce9b0@f9941", + "30250fcc-aac2-4473-94bf-7688cf16a604@f9941", + "e989c288-5957-41c1-953c-190622651f52" + ], + "bd1bcaba-bd7d-4a71-b143-997c882383e4@6c48a": [ + "bd1bcaba-bd7d-4a71-b143-997c882383e4" + ], + "bd1bcaba-bd7d-4a71-b143-997c882383e4@f9941": [ + "bd1bcaba-bd7d-4a71-b143-997c882383e4@6c48a" + ], + "c26a2ac3-057f-4de8-8c06-9ff3e1c48017@6c48a": [ + "c26a2ac3-057f-4de8-8c06-9ff3e1c48017" + ], + "c4847dce-e0b9-4e15-8bff-c42612edf6d1": [ + "afc47931-f066-46b0-90be-9fe61f213428@f9941", + "ffb88a8f-af62-48f4-8f1d-3cb606443a43@f9941", + "da561b68-57fb-462b-b799-da2ba6658534", + "b730527c-3233-41c2-aaf7-7cdab58f9749@f9941", + "bd1bcaba-bd7d-4a71-b143-997c882383e4@f9941", + "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941", + "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941", + "951249e0-9f16-456d-8b85-a6ca954da16b@f9941", + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941" + ], + "d1bca093-45af-4ae2-a896-11ed7c6f9bda": [ + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941", + "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941", + "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941", + "951249e0-9f16-456d-8b85-a6ca954da16b@f9941" + ], + "d9bca169-7a8d-4581-90b2-487db4a4dabb": [ + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941", + "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941", + "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941", + "951249e0-9f16-456d-8b85-a6ca954da16b@f9941" + ], + "db69a24b-0109-4e72-9975-7a4e80e86c3e": [ + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941", + "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941", + "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941", + "951249e0-9f16-456d-8b85-a6ca954da16b@f9941" + ], + "e59969f5-99a0-4259-ba3e-71093a65cfd8": [ + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941", + "ef1f320e-328a-41c9-bfdc-ad17d402e14f" + ], + "e6448a2d-8905-4c78-b693-d7cb42c22021": [ + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941" + ], + "e989c288-5957-41c1-953c-190622651f52": [ + "24a704da-2867-446d-8d1a-5e920c75e09d@f9941", + "9fd900dd-221b-4f89-8f2c-fba34243c835@f9941" + ], + "eb53cac5-aaa5-4b5f-8a22-38bccee261dc": [ + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941", + "afc47931-f066-46b0-90be-9fe61f213428@f9941", + "ffb88a8f-af62-48f4-8f1d-3cb606443a43@f9941", + "fc8eb7b6-f756-49f4-9102-ac3cca3a20ae", + "b730527c-3233-41c2-aaf7-7cdab58f9749@f9941", + "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941", + "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941", + "951249e0-9f16-456d-8b85-a6ca954da16b@f9941" + ], + "ef1f320e-328a-41c9-bfdc-ad17d402e14f": [ + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941" + ], + "f9a7b5b8-0c1a-4b0c-a6c7-bbf2e077442a": [ + "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941" + ], + "fc8eb7b6-f756-49f4-9102-ac3cca3a20ae": [ + "e59969f5-99a0-4259-ba3e-71093a65cfd8" + ], + "ffb88a8f-af62-48f4-8f1d-3cb606443a43@6c48a": [ + "ffb88a8f-af62-48f4-8f1d-3cb606443a43" + ], + "ffb88a8f-af62-48f4-8f1d-3cb606443a43@f9941": [ + "ffb88a8f-af62-48f4-8f1d-3cb606443a43@6c48a" + ] + } +} \ No newline at end of file diff --git a/headless/static/remote/resources/import/02/02638159c.json b/headless/static/remote/resources/import/02/02638159c.json new file mode 100644 index 00000000..00256bde --- /dev/null +++ b/headless/static/remote/resources/import/02/02638159c.json @@ -0,0 +1 @@ +[1,["20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941","bd1bcaba-bd7d-4a71-b143-997c882383e4@f9941","20835ba4-6145-4fbc-a58a-051ce700aa3e@6c48a","544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@6c48a","7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941","544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941","951249e0-9f16-456d-8b85-a6ca954da16b@f9941","951249e0-9f16-456d-8b85-a6ca954da16b@6c48a","bd1bcaba-bd7d-4a71-b143-997c882383e4@6c48a"],["node","_textureSource","_spriteFrame","root","text","_target","data","_normalSprite","_hoverSprite","_pressedSprite","_disabledSprite","_backgroundImage"],["cc.SpriteFrame",["cc.Node",["_name","_layer","_objFlags","_components","_prefab","_parent","_children","_lpos"],0,9,4,1,2,5],["cc.Label",["_string","_actualFontSize","_fontSize","_overflow","_enableWrapText","_isBold","_horizontalAlign","_lineHeight","node","__prefab","_color"],-5,1,4,5],["cc.Node",["_name","_layer","_active","_parent","_components","_prefab","_lpos","_children"],0,1,12,4,5,2],["cc.UITransform",["node","__prefab","_contentSize","_anchorPoint"],3,1,4,5,5],["cc.Sprite",["_sizeMode","_type","node","__prefab","_spriteFrame"],1,1,4,6],["cc.LabelOutline",["_width","node","__prefab"],2,1,4],["cc.Prefab",["_name"],2],["cc.CompPrefabInfo",["fileId"],2],["cc.Widget",["_alignFlags","_originalWidth","_originalHeight","node","__prefab"],0,1,4],["ccac1QqhdBMwp9m5xEQ4dad",["node","__prefab","text"],3,1,4,1],["cc.PrefabInfo",["fileId","instance","targetOverrides","nestedPrefabInstanceRoots","root","asset"],-1,1,1],["cc.Button",["_transition","node","__prefab","clickEvents","_normalColor","_target","_normalSprite","_hoverSprite","_pressedSprite","_disabledSprite"],2,1,4,9,5,1,6,6,6,6],["cc.ClickEvent",["_componentId","handler","target"],1,1],["cc.EditBox",["_inputMode","_maxLength","node","__prefab","_textLabel","_placeholderLabel"],1,1,4,1,1]],[[8,0,2],[11,0,1,2,3,4,5,5],[4,0,1,2,1],[1,0,1,5,3,4,3],[4,0,1,2,3,1],[9,0,1,2,3,4,4],[5,1,0,2,3,4,3],[7,0,2],[1,0,1,6,3,4,3],[1,0,1,5,6,3,4,7,3],[1,0,2,1,5,3,4,4],[3,0,1,3,7,4,5,6,3],[3,0,2,1,3,4,5,6,4],[3,0,1,3,4,5,6,3],[10,0,1,2,1],[5,0,2,3,4,2],[12,0,1,2,3,4,5,6,7,8,9,2],[13,0,1,2,3],[2,0,1,2,5,8,9,5],[2,0,1,2,3,4,5,8,9,7],[2,0,6,1,2,3,4,8,9,7],[2,0,6,1,2,7,3,4,8,9,10,8],[6,1,2,1],[6,0,1,2,2],[14,0,1,2,3,4,5,3]],[[[{"name":"default_btn_normal","rect":{"x":0,"y":0,"width":40,"height":40},"offset":{"x":0,"y":0},"originalSize":{"width":40,"height":40},"rotated":false,"capInsets":[12,12,12,12],"vertices":{"rawPosition":[-20,-20,0,20,-20,0,-20,20,0,20,20,0],"indexes":[0,1,2,2,1,3],"uv":[0,40,40,40,0,0,40,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-20,"y":-20,"z":0},"maxPos":{"x":20,"y":20,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[1],[2]],[[{"name":"default_btn_pressed","rect":{"x":0,"y":0,"width":40,"height":40},"offset":{"x":0,"y":0},"originalSize":{"width":40,"height":40},"rotated":false,"capInsets":[12,12,12,12],"vertices":{"rawPosition":[-20,-20,0,20,-20,0,-20,20,0,20,20,0],"indexes":[0,1,2,2,1,3],"uv":[0,40,40,40,0,0,40,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-20,"y":-20,"z":0},"maxPos":{"x":20,"y":20,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[1],[3]],[[[7,"NoviceNamingView"],[8,"NoviceNamingView",33554432,[-6,-7,-8,-9],[[2,-2,[0,"1dgJxmIH5HIpXD6y0/xMwI"],[5,720,1280]],[5,45,100,100,-3,[0,"582zBz6m5DKqmkTkiS/LE0"]],[14,-5,[0,"20HuLjDhBC5bpXL1CaY0lx"],-4]],[1,"08xLpDDa9NlK3pgR7XiOqb",null,null,null,-1,0]],[11,"EditBox",33554432,1,[-13,-14],[[[2,-10,[0,"2fOPJ16vhL36jehLhHteUx"],[5,250,50]],[6,1,0,-11,[0,"7bAPAuLMdJMLMqD13JNYj0"],1],-12],4,4,1],[1,"c0/qLBBYhEu53og7UVlgjX",null,null,null,1,0],[1,0,-60.89300000000003,0]],[9,"Button",33554432,1,[-19],[[2,-15,[0,"5b4A/C7PRDjbSDmmRLsDnC"],[5,150,60]],[6,1,0,-16,[0,"58fO+H7ABIO7/bk0+zGFvO"],2],[16,3,-18,[0,"66fIdJhiJE44ZGdlB/GjpL"],[[17,"ccac1QqhdBMwp9m5xEQ4dad","onSave",1]],[4,4292269782],-17,3,4,5,6]],[1,"ea/aWQ4XdAI5fT9Wjxlg8e",null,null,null,1,0],[1,0,-186.378,0]],[3,"bg",33554432,1,[[2,-20,[0,"2fY9hEnLxB3pbzaiuACMxu"],[5,720,1280]],[15,0,-21,[0,"19F+yOY3VNCIloTKHmEV0n"],0],[5,45,100,100,-22,[0,"e3ynDYZ61CjaYMj6wJzzh9"]]],[1,"57EKPbdcRNC6M+65SPYLJY",null,null,null,1,0]],[3,"Label",33554432,1,[[2,-23,[0,"a1sP/Z08pA1qRHDLhXH/Cj"],[5,108,54.4]],[18,"初来乍到",26,26,true,-24,[0,"d5ISuJfHlDGKcRDPo0INnO"]],[22,-25,[0,"1aK5QyaoBLD5/tx79S4XmH"]]],[1,"f7phtMor9EApNQKK5Nk0tc",null,null,null,1,0]],[10,"Label",512,33554432,3,[[2,-26,[0,"92P3OxKOBPL6YLgicmtunB"],[5,100,40]],[19,"确定",26,26,1,false,true,-27,[0,"9e9oehg69MS76SzNOG6cnD"]],[23,3,-28,[0,"ddMc+MyzNJQZ3xTJ3XUEn0"]]],[1,"2aN4BW3E9Lg4rcHt/Iqn5z",null,null,null,1,0]],[12,"TEXT_LABEL",false,33554432,2,[[[4,-29,[0,"c91xO6qpdMYakWbf2HCp/0"],[5,248,50],[0,0,1]],-30],4,1],[1,"f7s500SzJIlbSM1RzckKYU",null,null,null,1,0],[1,-123,25,0]],[13,"PLACEHOLDER_LABEL",33554432,2,[[[4,-31,[0,"33KTsQiD1KYo9A+KUQJ82Z"],[5,248,50],[0,0,1]],-32],4,1],[1,"38PlLHDwxKl4gxpBBu3w8l",null,null,null,1,0],[1,-123,25,0]],[20,"",0,40,20,1,false,7,[0,"72Pw4LCCBD0oa+Iquz490H"]],[21,"取一个名称?",0,20,20,50,1,false,8,[0,"5bFmB3vS1ByLi0P+hrXilL"],[4,4290493371]],[24,6,8,2,[0,"3fMsO5cjhFjKE4SuvKTV2E"],9,10]],0,[0,3,1,0,0,1,0,0,1,0,4,11,0,0,1,0,-1,4,0,-2,5,0,-3,2,0,-4,3,0,0,2,0,0,2,0,-3,11,0,-1,7,0,-2,8,0,0,3,0,0,3,0,5,3,0,0,3,0,-1,6,0,0,4,0,0,4,0,0,4,0,0,5,0,0,5,0,0,5,0,0,6,0,0,6,0,0,6,0,0,7,0,-2,9,0,0,8,0,-2,10,0,6,1,32],[0,0,0,0,0,0,0,11],[2,2,2,7,8,9,10,11],[4,1,0,0,0,5,6,1]],[[{"name":"default_btn_disabled","rect":{"x":0,"y":0,"width":40,"height":40},"offset":{"x":0,"y":0},"originalSize":{"width":40,"height":40},"rotated":false,"capInsets":[12,12,12,12],"vertices":{"rawPosition":[-20,-20,0,20,-20,0,-20,20,0,20,20,0],"indexes":[0,1,2,2,1,3],"uv":[0,40,40,40,0,0,40,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-20,"y":-20,"z":0},"maxPos":{"x":20,"y":20,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[1],[7]],[[{"name":"default_editbox_bg","rect":{"x":0,"y":0,"width":40,"height":40},"offset":{"x":0,"y":0},"originalSize":{"width":40,"height":40},"rotated":false,"capInsets":[12,12,12,12],"vertices":{"rawPosition":[-20,-20,0,20,-20,0,-20,20,0,20,20,0],"indexes":[0,1,2,2,1,3],"uv":[0,40,40,40,0,0,40,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-20,"y":-20,"z":0},"maxPos":{"x":20,"y":20,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[0],0,[0],[1],[8]]]] diff --git a/headless/static/remote/resources/import/02/02894a0ad.json b/headless/static/remote/resources/import/02/02894a0ad.json new file mode 100644 index 00000000..3dbf28e3 --- /dev/null +++ b/headless/static/remote/resources/import/02/02894a0ad.json @@ -0,0 +1 @@ +[1,["24a704da-2867-446d-8d1a-5e920c75e09d@f9941","76aadab4-10a3-4c8e-b4b9-dce7807050fc@6c48a","76aadab4-10a3-4c8e-b4b9-dce7807050fc@f9941"],["node","_spriteFrame","_textureSource","root","label","progress","data"],[["cc.Sprite",["_sizeMode","_type","node","__prefab","_color","_spriteFrame"],1,1,4,5,6],["cc.Node",["_name","_layer","_components","_prefab","_children","_parent","_lpos"],1,9,4,2,1,5],["cc.Node",["_name","_layer","_parent","_components","_prefab","_lpos","_children","_lscale"],1,1,12,4,5,2,5],["cc.UITransform",["node","__prefab","_contentSize","_anchorPoint"],3,1,4,5,5],["cc.Widget",["_alignFlags","_originalWidth","_originalHeight","node","__prefab"],0,1,4],"cc.SpriteFrame",["cc.Prefab",["_name"],2],["cc.CompPrefabInfo",["fileId"],2],["7b00a/4yERL/LgI4ZobxPAs",["node","__prefab","progress","label"],3,1,4,1,1],["cc.PrefabInfo",["fileId","instance","targetOverrides","nestedPrefabInstanceRoots","root","asset"],-1,1,1],["cc.LabelOutline",["_width","node","__prefab"],2,1,4],["cc.Label",["_string","_actualFontSize","_fontSize","_isBold","node","__prefab"],-1,1,4],["cc.ProgressBar",["_totalLength","_progress","node","__prefab","_barSprite"],1,1,4,1]],[[7,0,2],[9,0,1,2,3,4,5,5],[3,0,1,2,1],[2,0,1,2,3,4,5,3],[6,0,2],[1,0,1,4,2,3,3],[1,0,1,5,2,3,6,3],[2,0,1,2,6,3,4,5,7,3],[3,0,1,2,3,1],[4,0,1,2,3,4,4],[4,0,1,3,4,3],[8,0,1,2,3,1],[0,1,0,2,3,4,5,3],[0,0,2,3,5,2],[0,1,0,2,3,4,3],[10,0,1,2,2],[11,0,1,2,3,4,5,5],[12,0,1,2,3,4,3]],[[[{"name":"bg","rect":{"x":0,"y":0,"width":658,"height":1425},"offset":{"x":0,"y":0},"originalSize":{"width":658,"height":1425},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-329,-712.5,0,329,-712.5,0,-329,712.5,0,329,712.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,1425,658,1425,0,0,658,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-329,"y":-712.5,"z":0},"maxPos":{"x":329,"y":712.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[5],0,[0],[2],[1]],[[[4,"LoadingView"],[5,"LoadingView",33554432,[-7,-8,-9],[[2,-2,[0,"1dgJxmIH5HIpXD6y0/xMwI"],[5,720,1280]],[9,45,100,100,-3,[0,"582zBz6m5DKqmkTkiS/LE0"]],[11,-6,[0,"61l1724zhJtZN7fgUUejH7"],-5,-4]],[1,"08xLpDDa9NlK3pgR7XiOqb",null,null,null,-1,0]],[7,"ProgressBar",33554432,1,[-13],[[[2,-10,[0,"cc0fFjhwhMGaRQ0ubiGlqz"],[5,300,15]],[12,1,0,-11,[0,"08q3gyRnNAXIdO7LfY62fu"],[4,4294959569],1],-12],4,4,1],[1,"85RG8ssvJFB5oVHXPtWTfF",null,null,null,1,0],[1,0,-459.803,0],[1,2,2,1]],[6,"bg",33554432,1,[[2,-14,[0,"8ftYzn1eBL/KI9lfvctDGE"],[5,720,1550]],[13,0,-15,[0,"72OG0M5ThEtaIaziixD4R1"],0],[10,44,658,-16,[0,"e3DwW2DJVFXZGua4BUjaXa"]]],[1,"85bQbPz7FPkaRPL/kSAwAE",null,null,null,1,0],[1,0,135,0]],[3,"Label",33554432,1,[[[2,-17,[0,"21zdTy8pVIQp5pY9vm9NHt"],[5,150,56.4]],-18,[15,3,-19,[0,"24TEBL9uJClqHJ/C8FqV7L"]]],4,1,4],[1,"25K8+LWY1HabU67cx0nsVl",null,null,null,1,0],[1,0,-404.685,0]],[3,"Bar",33554432,2,[[[8,-20,[0,"26DgYhzC1A2rETR6Y5uuLm"],[5,0,15],[0,0,0.5]],-21],4,1],[1,"57+wn/Ye1PlrYILhPjajwO",null,null,null,1,0],[1,-150,0,0]],[16,"加载内容",36,36,true,4,[0,"d7LX6grh1E27UHz++aE7kC"]],[14,1,0,5,[0,"01ztTBgsZOFoYCTwqE1l3J"],[4,4294937921]],[17,300,0,2,[0,"2e2r1+eohH14TzfL+WHlxX"],7]],0,[0,3,1,0,0,1,0,0,1,0,4,6,0,5,8,0,0,1,0,-1,3,0,-2,4,0,-3,2,0,0,2,0,0,2,0,-3,8,0,-1,5,0,0,3,0,0,3,0,0,3,0,0,4,0,-2,6,0,0,4,0,0,5,0,-2,7,0,6,1,21],[0,0,7],[1,1,1],[2,0,0]]]] diff --git a/headless/static/remote/resources/import/03/03038aaf8.json b/headless/static/remote/resources/import/03/03038aaf8.json new file mode 100644 index 00000000..f529066c --- /dev/null +++ b/headless/static/remote/resources/import/03/03038aaf8.json @@ -0,0 +1 @@ +[1,["e989c288-5957-41c1-953c-190622651f52","9fd900dd-221b-4f89-8f2c-fba34243c835@f9941","24a704da-2867-446d-8d1a-5e920c75e09d@f9941","13ffba43-826c-4f33-8ac2-4b59811ce9b0@6c48a","24a704da-2867-446d-8d1a-5e920c75e09d@6c48a","3520eceb-6d73-4cdc-b333-c80f737fee27","b882ecdb-012a-4d85-b799-e4da5991c0dd","a0d1e275-5512-493e-8e15-7d2db8beb48e","30250fcc-aac2-4473-94bf-7688cf16a604@6c48a","9fd900dd-221b-4f89-8f2c-fba34243c835@6c48a","13ffba43-826c-4f33-8ac2-4b59811ce9b0@f9941","30250fcc-aac2-4473-94bf-7688cf16a604@f9941"],["node","_spriteFrame","root","_textureSource","data","objects","rolePrefab","_cameraComponent","camera","_targetTexture","map3","map2","map1","energyVolume","bloodVolume","spine"],[["cc.Node",["_name","_layer","_components","_prefab","_lpos","_parent","_children","_lscale"],1,9,4,5,1,2,5],"cc.SpriteFrame",["cc.UITransform",["node","__prefab","_contentSize","_anchorPoint"],3,1,4,5,5],["cc.Node",["_name","_layer","_components","_prefab","_parent","_children","_lpos"],1,12,4,1,2,5],["cc.Sprite",["_type","_sizeMode","node","__prefab","_spriteFrame","_color"],1,1,4,6,5],["cc.Prefab",["_name"],2],["cc.Node",["_name","_layer","_parent","_components","_prefab","_lpos"],1,1,2,4,5],["cc.CompPrefabInfo",["fileId"],2],["cc.Canvas",["_alignCanvasWithScreen","node","__prefab","_cameraComponent"],2,1,4,1],["40653r5OQJPFZf7cTR6hCHX",["node","__prefab","root","camera","modes"],3,1,4,1,1,3],["cc.PrefabInfo",["fileId","instance","targetOverrides","nestedPrefabInstanceRoots","root","asset"],-1,1,1],["cc.Camera",["_projection","_orthoHeight","_near","_clearFlags","_visibility","__prefab","_color"],-2,4,5],["84547zJhY9O5JtlJy/NgK9H",["node","__prefab","map1","map2","map3","objects","rolePrefab"],3,1,4,1,1,1,1,6],["0dd9fmWmbBAra4y0n8wnsva",["node","__prefab"],3,1,4],["31e6dKeQdRNfaJKs3+cDKq9",["node","__prefab","objects","rolePrefab"],3,1,4,1,6],["cc.BoxCollider2D",["node","__prefab","_offset","_size"],3,1,4,5,5],["276817jnQlKBr5eca8EUxm4",["node","__prefab","spine","bloodVolume","energyVolume"],3,1,4,1,1,1],["cc.ProgressBar",["_totalLength","_progress","node","__prefab","_barSprite"],1,1,4,1],["7bbd2ZLN+pAR5d5W2wmy3A0",["_preCacheMode","node","__prefab"],2,1,4]],[[7,0,2],[10,0,1,2,3,4,5,5],[2,0,1,1],[3,0,1,4,2,3,3],[5,0,2],[2,0,1,2,3,1],[2,0,1,2,1],[13,0,1,1],[0,0,1,6,2,3,3],[0,0,1,5,2,3,3],[0,0,1,5,2,3,4,7,3],[3,0,1,4,5,2,3,6,3],[4,2,3,4,1],[4,0,1,2,3,4,3],[4,0,1,2,3,5,3],[17,0,1,2,3,4,3],[0,0,1,6,2,3,4,3],[0,0,1,5,2,3,4,3],[0,0,1,5,6,2,3,4,3],[6,0,1,2,3,4,5,3],[3,0,1,5,2,3,3],[2,0,1,3,1],[8,0,1,2,3,2],[9,0,1,2,3,4,1],[11,0,1,2,3,4,5,6,6],[12,0,1,2,3,4,5,6,1],[14,0,1,2,3,1],[15,0,1,2,3,1],[16,0,1,2,3,4,1],[18,0,1,2,2]],[[[{"name":"MAP2_2","rect":{"x":0,"y":0,"width":1200,"height":530},"offset":{"x":0,"y":0},"originalSize":{"width":1200,"height":530},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-600,-265,0,600,-265,0,-600,265,0,600,265,0],"indexes":[0,1,2,2,1,3],"uv":[0,530,1200,530,0,0,1200,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-600,"y":-265,"z":0},"maxPos":{"x":600,"y":265,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[1],0,[0],[3],[3]],[[{"name":"default_progressbar","rect":{"x":0,"y":0,"width":30,"height":15},"offset":{"x":0,"y":0},"originalSize":{"width":30,"height":15},"rotated":false,"capInsets":[10,4,10,4],"vertices":{"rawPosition":[-15,-7.5,0,15,-7.5,0,-15,7.5,0,15,7.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,15,30,15,0,0,30,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-15,"y":-7.5,"z":0},"maxPos":{"x":15,"y":7.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[1],0,[0],[3],[4]],[[[4,"WorldCanvas"],[16,"WorldCanvas",1,[-8,-9],[[6,-2,[0,"37V0Vuz1lERZgl5aLLyJyq"],[5,720,1280]],[22,false,-4,[0,"96pCvlft1J1rxXiNmWmeDy"],-3],[23,-7,[0,"76tas/bGhNUrj5buYdcsgZ"],-6,-5,[0,1]]],[1,"b3O5SBKWRDtJwFovwzT/11",null,null,null,-1,0],[1,360,640,0]],[24,0,1000,0,6,1073741825,[0,"f19tASJGNPAYXfJ8f7ArkL"],[4,4278190080]],[17,"Root",1,1,[[2,-10,[0,"cfY8suP6pEmLJlkqssj1m8"]]],[1,"faqSPud4NKTLbmWiDKAIgl",null,null,null,1,0],[1,-360,-640,0]],[19,"Camera",1,1,[2],[1,"13kPLrG8ZN7Zv1GeGMozx1",null,null,null,1,0],[1,0,0,1000]]],0,[0,2,1,0,0,1,0,7,2,0,0,1,0,8,2,0,2,3,0,0,1,0,-1,4,0,-2,3,0,0,3,0,4,1,2,0,4,10],[0,0,2],[-1,-2,9],[5,6,7]],[[{"name":"MAP2_1","rect":{"x":0,"y":14,"width":1200,"height":643},"offset":{"x":0,"y":-7},"originalSize":{"width":1200,"height":657},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-600,-321.5,0,600,-321.5,0,-600,321.5,0,600,321.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,643,1200,643,0,0,1200,0],"nuv":[0,0,1,0,0,0.9786910197869102,1,0.9786910197869102],"minPos":{"x":-600,"y":-321.5,"z":0},"maxPos":{"x":600,"y":321.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[1],0,[0],[3],[8]],[[[4,"GOnHookMode"],[8,"GOnHookMode",1,[-8,-9,-10,-11],[[2,-2,[0,"36KI0wow1LqrcICgBTdo4H"]],[25,-7,[0,"2c2vLtN9BBeaqmvG+HAdVY"],-6,-5,-4,-3,0]],[1,"073cpMY+ZFPqtOHf+oOHD6",null,null,null,-1,0]],[3,"map3",1,1,[[[2,-12,[0,"1bc4yeTedDaotqIZIiO62p"]],-13],4,1],[1,"39bav/cE1PmLEj5YR2N1ZZ",null,null,null,1,0]],[3,"map2",1,1,[[[2,-14,[0,"2frjnRjdpF2YGx5+xg+qHO"]],-15],4,1],[1,"8999+3ds9PDLLFh+SeJoMh",null,null,null,1,0]],[3,"map1",1,1,[[[2,-16,[0,"73Zql/5spAq5MK9cva+AXA"]],-17],4,1],[1,"26UVXGn2pD27pZYKj87yDp",null,null,null,1,0]],[9,"objects",1,1,[[2,-18,[0,"ab/o6YLntOsqtrgbUYd8/8"]]],[1,"26pTDLadlMBa4Emx8+EIwd",null,null,null,1,0]],[7,2,[0,"20DqQdn2RLYYhgTzqQbvqY"]],[7,3,[0,"7cBroenCBJ/opob0jtjJuN"]],[7,4,[0,"8ck9vXBiFC8Jmwj/4+fJeh"]]],0,[0,2,1,0,0,1,0,5,5,0,10,6,0,11,7,0,12,8,0,0,1,0,-1,2,0,-2,3,0,-3,4,0,-4,5,0,0,2,0,-2,6,0,0,3,0,-2,7,0,0,4,0,-2,8,0,0,5,0,4,1,18],[0],[6],[0]],[[{"name":"default_progressbar_bg","rect":{"x":0,"y":0,"width":60,"height":15},"offset":{"x":0,"y":0},"originalSize":{"width":60,"height":15},"rotated":false,"capInsets":[10,4,10,4],"vertices":{"rawPosition":[-30,-7.5,0,30,-7.5,0,-30,7.5,0,30,7.5,0],"indexes":[0,1,2,2,1,3],"uv":[0,15,60,15,0,0,60,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-30,"y":-7.5,"z":0},"maxPos":{"x":30,"y":7.5,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[1],0,[0],[3],[9]],[[[4,"GPVPMode"],[8,"GPVPMode",1,[-5,-6],[[2,-2,[0,"36KI0wow1LqrcICgBTdo4H"]],[26,-4,[0,"75m4P6RWFEhq6MmD8wKppa"],-3,2]],[1,"073cpMY+ZFPqtOHf+oOHD6",null,null,null,-1,0]],[18,"Map",1,1,[-8,-9],[[2,-7,[0,"10qY81RfZAO71vWAsMbNxA"]]],[1,"7dQpog1zRHRanaq1MbAxcj",null,null,null,1,0],[1,0,75.97,0]],[10,"MAP2_2",1,2,[[6,-10,[0,"02JaCy2RtBv6IQedYySi9J"],[5,1200,530]],[12,-11,[0,"4fkgqaKsNJ2bWL29nICOgi"],0]],[1,"51KkM8+RpPXbBFXOTtb9rJ",null,null,null,1,0],[1,0,523.294,0],[1,1.46,1.46,1.46]],[10,"MAP2_1",1,2,[[6,-12,[0,"08W8yrO6ZAMYoLsN5M67nH"],[5,1200,643]],[12,-13,[0,"8fnMp4WlZP54syw5QNPIMP"],1]],[1,"35BC8iioRG9YIjz054LzvN",null,null,null,1,0],[1,0,124.735,0],[1,1.46,1.46,1.46]],[9,"GObject",1,1,[[2,-14,[0,"51F2pLtaRAvIrZ6+pAQ7gN"]]],[1,"afU00zeEBCvYG08IYSwZ58",null,null,null,1,0]]],0,[0,2,1,0,0,1,0,5,5,0,0,1,0,-1,2,0,-2,5,0,0,2,0,-1,3,0,-2,4,0,0,3,0,0,3,0,0,4,0,0,4,0,0,5,0,4,1,14],[0,0,0],[1,1,6],[10,11,0]],[[[4,"GRoleDefault"],[20,"GRoleDefault",1,[-9,-10],[[[21,-2,[0,"39OM3yMTpFCaO9LSQd5hDg"],[0,0.5,0.077707]],-3,[27,-4,[0,"adZ/2FFS1AnqaNLGcoBV8b"],[0,0,42.22925458281746],[5,100,100]],[28,-8,[0,"1egRZj86lNFKKDFfl2+ddc"],-7,-6,-5]],4,1,4,4],[1,"6cAOnSDYJJRop1AtoHgJjk",null,null,null,-1,0]],[11,"blood",1,1,[-14],[[[5,-11,[0,"7eKZQXr4dA9ZZ1pNU9m4Id"],[5,100,15],[0,0,0.5]],[13,1,0,-12,[0,"6dRnnmVKhM8KMkR+Ef0QZc"],0],-13],4,4,1],[1,"4duWBgdflEeJnCTVFxBgL5",null,null,null,1,0],[1,-51.954,126.253,0]],[11,"energy",1,1,[-18],[[[5,-15,[0,"2fv65eXxBBLY9sDM8+GdTw"],[5,100,4],[0,0,0.5]],[13,1,0,-16,[0,"6eKAM0oQ5H1LcXpcqmeYoy"],1],-17],4,4,1],[1,"eezHTmz/xEZ72deCl7tprY",null,null,null,1,0],[1,-51.954,118.227,0]],[3,"Bar",1,2,[[[5,-19,[0,"f6mlvX+zpDQKQyTNI8m1ge"],[5,100,15],[0,0,0.5]],-20],4,1],[1,"d6plfNQY5CgK2nsYLzhuGq",null,null,null,1,0]],[3,"Bar",1,3,[[[5,-21,[0,"33XDUgb7hE7Iae0ToFMuDl"],[5,100,4],[0,0,0.5]],-22],4,1],[1,"86H6XFlX5NF7gBNm1o/YQY",null,null,null,1,0]],[14,1,0,4,[0,"ab2/RZSBpHM6hxBpsZcelP"],[4,4282203647]],[15,100,1,2,[0,"13jsaXw0ZN24wtPkmda7Fc"],6],[14,1,0,5,[0,"978QNpG8RAu5dOq5L5q74y"],[4,4294941774]],[15,100,1,3,[0,"96r31KcJFBA6JkO6JK9juG"],8],[29,0,1,[0,"27Fx6O7FRLnbRD+LXrrqfA"]]],0,[0,2,1,0,0,1,0,-2,10,0,0,1,0,13,9,0,14,7,0,15,10,0,0,1,0,-1,2,0,-2,3,0,0,2,0,0,2,0,-3,7,0,-1,4,0,0,3,0,0,3,0,-3,9,0,-1,5,0,0,4,0,-2,6,0,0,5,0,-2,8,0,4,1,22],[0,0,6,8],[1,1,1,1],[1,1,2,2]]]] diff --git a/headless/static/remote/resources/import/05/0578e6725.json b/headless/static/remote/resources/import/05/0578e6725.json new file mode 100644 index 00000000..73a5e981 --- /dev/null +++ b/headless/static/remote/resources/import/05/0578e6725.json @@ -0,0 +1 @@ +[1,["7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941","b730527c-3233-41c2-aaf7-7cdab58f9749@f9941","29473705-12eb-4ba9-83f1-a4b75ad3a30f","b730527c-3233-41c2-aaf7-7cdab58f9749@6c48a"],["node","_spriteFrame","_target","root","views","data","itemPrefab","_textureSource"],[["cc.Widget",["_alignFlags","_originalWidth","_originalHeight","_right","_left","node","__prefab"],-2,1,4],["cc.Node",["_name","_layer","_objFlags","_components","_prefab","_parent","_children","_lpos"],0,9,4,1,2,5],["cc.Sprite",["_sizeMode","_type","_enabled","node","__prefab","_spriteFrame","_color"],0,1,4,6,5],["cc.UITransform",["node","__prefab","_contentSize","_anchorPoint"],3,1,4,5,5],"cc.SpriteFrame",["cc.Prefab",["_name"],2],["cc.Node",["_name","_layer","_parent","_children","_components","_prefab"],1,1,2,12,4],["cc.CompPrefabInfo",["fileId"],2],["fe2adMH7MZF5KXgR4KwvwJX",["node","__prefab","views"],3,1,4,1],["cc.PrefabInfo",["fileId","instance","targetOverrides","nestedPrefabInstanceRoots","root","asset"],-1,1,1],["cc.Button",["_transition","node","__prefab","clickEvents","_normalColor","_target"],2,1,4,9,5,1],["cc.ClickEvent",["_componentId","handler","target"],1,1],["cc.Mask",["node","__prefab"],3,1,4],["cc.Graphics",["node","__prefab","_fillColor"],3,1,4,5],["cc.Layout",["_resizeMode","_layoutType","_paddingLeft","_paddingRight","_spacingX","_isAlign","node","__prefab"],-3,1,4],["cc.Label",["_string","_actualFontSize","_fontSize","_overflow","_enableWrapText","_isBold","node","__prefab"],-3,1,4],["cc.LabelOutline",["node","__prefab"],3,1,4],["563f2c1JcVKmrpHhC0vl3PI",["bounceDuration","brake","vertical","node","__prefab","_content"],0,1,4,1]],[[7,0,2],[9,0,1,2,3,4,5,5],[3,0,1,2,1],[1,0,1,5,6,3,4,7,3],[1,0,2,1,5,3,4,4],[3,0,1,2,3,1],[2,1,0,3,4,6,5,3],[0,0,2,5,6,3],[10,0,1,2,3,4,5,2],[11,0,1,2,3],[15,0,1,2,3,4,5,6,7,7],[16,0,1,1],[5,0,2],[1,0,1,6,3,4,7,3],[1,0,1,5,3,4,3],[6,0,1,2,3,4,5,3],[2,0,3,4,6,5,2],[2,2,1,0,3,4,5,4],[0,0,3,1,5,6,4],[0,0,3,1,2,5,6,5],[0,0,4,3,1,2,5,6,6],[0,0,1,2,5,6,4],[8,0,1,2,1],[12,0,1,1],[13,0,1,2,1],[14,0,1,2,3,4,5,6,7,7],[17,0,1,2,3,4,5,4]],[[[[12,"野怪列表"],[13,"野怪列表",33554432,[-7,-8,-9],[[2,-2,[0,"0ccMb6aEJJmKtQPc0NQqC7"],[5,719,120]],[16,0,-3,[0,"19pPQvdvdMCJ7w/Z+yYIek"],[4,4290690750],3],[18,40,1,100,-4,[0,"41TovpTmVCz4oCICCj50W/"]],[22,-6,[0,"4aMPRpmwJL5Z/rayvvzZht"],-5]],[1,"cfqtEvOKpHO7NzoHh8DAIM",null,null,null,-1,0],[1,-0.5,223.109,0]],[3,"捕捉",33554432,1,[-15],[[2,-10,[0,"c0h8KrYclATJ+XYcOdUwG6"],[5,120,120]],[6,1,0,-11,[0,"560XWAYXxD25jo21OcRK2W"],[4,4288059030],0],[8,3,-13,[0,"e0rgkHWjVLarcO0HgPDqbq"],[[9,"fe2adMH7MZF5KXgR4KwvwJX","onClickCatch",1]],[4,4292269782],-12],[19,13,464.25,100,100,-14,[0,"41IKA5M65IWJvyXgOyZQ+Y"]]],[1,"4chdzdAAZG2ZnA2dvWbz+Q",null,null,null,1,0],[1,-299.5,0,0]],[3,"出售",33554432,1,[-21],[[2,-16,[0,"5fGEHL5MZHmJwAxaGZptgb"],[5,120,120]],[6,1,0,-17,[0,"0d2U2Q79ZJrqXgt4dLuV4Z"],[4,4288059030],2],[8,3,-19,[0,"46kCHG8yRJL65tBER5eoyC"],[[9,"fe2adMH7MZF5KXgR4KwvwJX","onClickSell",1]],[4,4292269782],-18],[7,37,100,-20,[0,"19Qrf2OPRFhZegHgMxp55W"]]],[1,"510efzkfVOYJnng80lj0PW",null,null,null,1,0],[1,299.5,0,0]],[15,"ScrollView",33554432,1,[-26],[[[2,-22,[0,"eeHVlqM0NN2bU8pdiFGOQ4"],[5,479,120]],[17,false,1,0,-23,[0,"f45lDKRONBnIgTX1XKFzZK"],1],[20,45,120,120,240,250,-24,[0,"fc3W4BGP9PWJPeY5Z5b2I0"]],-25],4,4,4,1],[1,"d5DzUHKbFAZoKbwNB17f0W",null,null,null,1,0]],[3,"view",33554432,4,[-31],[[5,-27,[0,"8aRE0q34tED5M48dqLGa9P"],[5,479,120],[0,0,0.5]],[23,-28,[0,"c5LHIjTTVC9ZSySWwdEsC3"]],[24,-29,[0,"fbx6z4iylPL4XGhLi3UaJW"],[4,16777215]],[21,45,240,250,-30,[0,"7f9gjytPtPrKT6p6boYSS1"]]],[1,"69mnnKIwlAhZMU3bytgVs0",null,null,null,1,0],[1,-239.5,0,0]],[14,"content",33554432,5,[[5,-32,[0,"96XBXy5mxD7oh85thNj3N4"],[5,10,120],[0,0,0.5]],[7,5,400,-33,[0,"8aVf/2yiBF46YBKe/tTx96"]],[25,1,1,10,10,10,true,-34,[0,"df1bSi7VlGP5Up+DBnpR0b"]]],[1,"9e+sJ0B/JJxIiEsfdzffk0",null,null,null,1,0]],[4,"Label",512,33554432,2,[[2,-35,[0,"a1mvp9/o9NjIW1zI1XSnaE"],[5,100,40]],[10,"捕 捉",30,30,1,false,true,-36,[0,"eaKrlqTo5KhoaqCB9+3f1a"]],[11,-37,[0,"3fUqLTaV1N0J8yJd5k+NJn"]]],[1,"25BUTF0LJD0Yl3hsJX7L5R",null,null,null,1,0]],[4,"Label",512,33554432,3,[[2,-38,[0,"benjJotd5PrJ/R+sdlfwFK"],[5,100,40]],[10,"出 售",30,30,1,false,true,-39,[0,"09FEUUrlhDtJr7Z/U7NnMM"]],[11,-40,[0,"90wfJdfRpLqo4Ohp9vy0qu"]]],[1,"c6FJ5KuKxMCbTGPUYxAfNQ",null,null,null,1,0]],[26,0.3,0.75,false,4,[0,"1bM/FEGdVHV6tknHqXFTMh"],6]],0,[0,3,1,0,0,1,0,0,1,0,0,1,0,4,9,0,0,1,0,-1,2,0,-2,4,0,-3,3,0,0,2,0,0,2,0,2,2,0,0,2,0,0,2,0,-1,7,0,0,3,0,0,3,0,2,3,0,0,3,0,0,3,0,-1,8,0,0,4,0,0,4,0,0,4,0,-4,9,0,-1,5,0,0,5,0,0,5,0,0,5,0,0,5,0,-1,6,0,0,6,0,0,6,0,0,6,0,0,7,0,0,7,0,0,7,0,0,8,0,0,8,0,0,8,0,5,1,40],[0,0,0,0,9],[1,1,1,1,6],[0,1,0,0,2]],[[{"name":"default_panel","rect":{"x":0,"y":0,"width":20,"height":20},"offset":{"x":0,"y":0},"originalSize":{"width":20,"height":20},"rotated":false,"capInsets":[8,8,8,8],"vertices":{"rawPosition":[-10,-10,0,10,-10,0,-10,10,0,10,10,0],"indexes":[0,1,2,2,1,3],"uv":[0,20,20,20,0,0,20,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-10,"y":-10,"z":0},"maxPos":{"x":10,"y":10,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[4],0,[0],[7],[3]]]] diff --git a/headless/static/remote/resources/import/05/05fd1428a.json b/headless/static/remote/resources/import/05/05fd1428a.json new file mode 100644 index 00000000..575385ba --- /dev/null +++ b/headless/static/remote/resources/import/05/05fd1428a.json @@ -0,0 +1 @@ +[1,["20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941","7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941","ffb88a8f-af62-48f4-8f1d-3cb606443a43@f9941","b730527c-3233-41c2-aaf7-7cdab58f9749@f9941","544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941","951249e0-9f16-456d-8b85-a6ca954da16b@f9941","afc47931-f066-46b0-90be-9fe61f213428@f9941","fc8eb7b6-f756-49f4-9102-ac3cca3a20ae","e59969f5-99a0-4259-ba3e-71093a65cfd8"],["node","_spriteFrame","targetInfo","root","data","spine","views","_target","_verticalScrollBar","_normalSprite","_hoverSprite","_pressedSprite","_disabledSprite","itemPrefab","target","source","asset"],[["cc.Node",["_name","_layer","_objFlags","__editorExtras__","_prefab","_components","_parent","_children","_lpos"],-1,4,9,1,2,5],["cc.Widget",["_alignFlags","_originalWidth","_originalHeight","_bottom","_top","_alignMode","node","__prefab"],-3,1,4],["cc.Sprite",["_sizeMode","_type","node","__prefab","_spriteFrame","_color"],1,1,4,6,5],["cc.UITransform",["node","__prefab","_contentSize","_anchorPoint"],3,1,4,5,5],["cc.Node",["_name","_layer","_components","_prefab","_lpos","_parent","_children"],1,12,4,5,1,2],["cc.Prefab",["_name"],2],["cc.CompPrefabInfo",["fileId"],2],["00e5fiwk55OFq7ZIZmksXGJ",["mask","isClickMaskeClose","node","__prefab","views","spine"],1,1,4,1,1],["cc.PrefabInfo",["fileId","instance","targetOverrides","nestedPrefabInstanceRoots","root","asset"],-1,1,1],["cc.PrefabInfo",["fileId","instance","root","asset","targetOverrides","nestedPrefabInstanceRoots"],1,1,1,9,2],["cc.PrefabInfo",["fileId","nestedPrefabInstanceRoots","root","instance","targetOverrides","asset"],1,1,4,9,6],["cc.BlockInputEvents",["node","__prefab"],3,1,4],["cc.Button",["_transition","node","__prefab","clickEvents","_normalColor","_target","_normalSprite","_hoverSprite","_pressedSprite","_disabledSprite"],2,1,4,9,5,1,6,6,6,6],["cc.ClickEvent",["_componentId","handler","target"],1,1],["cc.Mask",["node","__prefab"],3,1,4],["cc.Graphics",["node","__prefab","_fillColor"],3,1,4,5],["cc.Layout",["_resizeMode","_layoutType","_paddingLeft","_paddingTop","_spacingX","_spacingY","node","__prefab"],-3,1,4],["cc.Label",["_string","_actualFontSize","_fontSize","_overflow","_enableWrapText","_isBold","node","__prefab"],-3,1,4],["cc.LabelOutline",["_width","node","__prefab"],2,1,4],["563f2c1JcVKmrpHhC0vl3PI",["bounceDuration","brake","horizontal","node","__prefab","_content"],0,1,4,1],["sp.Skeleton",["node","__prefab"],3,1,4],["cc.ScrollBar",["_direction","node","__prefab","_scrollView","_handle"],2,1,4,1,1],["cc.TargetOverrideInfo",["propertyPath","source","target","targetInfo"],2,1,1,4],["cc.TargetOverrideInfo",["propertyPath","target","targetInfo"],2,4,4],["cc.TargetInfo",["localID"],2],["cc.PrefabInstance",["fileId","prefabRootNode","propertyOverrides"],2,1,9],["CCPropertyOverrideInfo",["value","propertyPath","targetInfo"],1,1],["CCPropertyOverrideInfo",["propertyPath","targetInfo","value"],2,1,8],["0d7f0xLgLJJ+7qr9McTG53a",["node","__prefab"],3,1,4]],[[6,0,2],[8,0,1,2,3,4,5,5],[3,0,1,2,1],[3,0,1,2,3,1],[0,0,1,6,7,5,4,8,3],[24,0,2],[27,0,1,2,2],[5,0,2],[4,0,1,5,6,2,3,4,3],[4,0,1,5,2,3,4,3],[1,0,1,2,6,7,4],[1,0,1,6,7,3],[2,1,0,2,3,4,3],[0,0,1,7,5,4,3],[0,0,1,6,7,5,4,3],[0,0,1,6,5,4,3],[0,0,2,1,6,5,4,4],[0,2,3,6,4,3],[0,0,2],[4,0,1,6,2,3,4,3],[3,0,1,3,1],[3,0,1,1],[1,0,4,3,1,2,6,7,6],[1,0,3,6,7,3],[1,0,2,5,6,7,4],[7,0,1,2,3,4,5,3],[9,0,1,2,3,4,5,3],[10,0,1,2,3,4,5,3],[2,0,2,3,4,2],[2,1,0,2,3,5,4,3],[2,0,2,3,5,4,2],[2,1,0,2,3,5,3],[11,0,1,1],[12,0,1,2,3,4,5,6,7,8,9,2],[13,0,1,2,3],[14,0,1,1],[15,0,1,2,1],[16,0,1,2,3,4,5,6,7,7],[17,0,1,2,3,4,5,6,7,7],[18,0,1,2,2],[19,0,1,2,3,4,5,4],[20,0,1,1],[21,0,1,2,3,4,2],[22,0,1,2,3,2],[23,0,1,2,2],[25,0,1,2,2],[26,0,1,2,3],[28,0,1,1]],[[[[7,"阵法选择页面"],[13,"阵法选择页面",33554432,[-7],[[2,-2,[0,"1dgJxmIH5HIpXD6y0/xMwI"],[5,720,1280]],[10,45,100,100,-3,[0,"582zBz6m5DKqmkTkiS/LE0"]],[25,true,true,-6,[0,"c64zkOp1tOEoCQ9P8CBNYJ"],-5,-4]],[1,"08xLpDDa9NlK3pgR7XiOqb",null,null,null,-1,0]],[14,"content",33554432,1,[-11,-12,-13],[[2,-8,[0,"68UQQu1bBAQrAtTHy1yB8t"],[5,550,900]],[28,0,-9,[0,"b3/zsRycZIh7r2rjWWtX8P"],8],[32,-10,[0,"415sfQkxFOvIr61TWj3cl/"]]],[1,"8eQw+AA5xI/oCYsJa9dIvN",null,null,null,1,0]],[8,"宠物列表",33554432,2,[-18,-19],[[[2,-14,[0,"9e8JDP6Z5Eqr/lSRuHqjvI"],[5,550,470]],[12,1,0,-15,[0,"dcRsIuk19HB46JmhP+akQO"],2],[22,45,300,130,240,250,-16,[0,"d6tVDYeIdO4pe6Gp/CbgIO"]],-17],4,4,4,1],[1,"65VS00MqBEa6R3IM6QycKC",null,null,null,1,0],[1,0,-85,0]],[4,"上阵",33554432,2,[-25],[[2,-20,[0,"d2O9JrYmVHyrBdc5W6CSEN"],[5,150,70]],[12,1,0,-21,[0,"78CA2AiEpCQ78u8IzOL8Tk"],3],[33,3,-23,[0,"d6glZwQIZP2ajtb75+lvXQ"],[[34,"00e5fiwk55OFq7ZIZmksXGJ","onClickTactical",1]],[4,4292269782],-22,4,5,6,7],[23,4,30,-24,[0,"9dXK30MLZCgpHyoAck8ZGM"]]],[1,"0fQJc+KxdBIIFYT+bBG+Is",null,null,null,1,0],[1,0,-385,0]],[8,"scrollBar",33554432,3,[-30],[[[3,-26,[0,"e9TdHK+SJMI6DHNVxyZg39"],[5,12,470],[0,1,0.5]],[29,1,0,-27,[0,"54uy2HfAZEjL4u8EWI9Mht"],[4,16777215],1],[24,37,250,1,-28,[0,"9fIInbre9Hl5H1SRZjlNJ5"]],-29],4,4,4,1],[1,"47OMtehs1PTLY6wRDnMmy5",null,null,null,1,0],[1,275,0,0]],[4,"view",33554432,3,[-35],[[3,-31,[0,"8cvNrhK8ZHfbqmxV7D6dyv"],[5,550,470],[0,0.5,1]],[35,-32,[0,"a6IGFAFIxGdZQD2D57LJ4E"]],[36,-33,[0,"701i+PEbBKo6Ou31CiFm9Y"],[4,16777215]],[10,45,240,250,-34,[0,"678cLuMolJNb/rp+vdv18B"]]],[1,"9fcTOBRaZGsKKDZjp/OrHf",null,null,null,1,0],[1,0,235,0]],[15,"content",33554432,6,[[3,-36,[0,"20Td8nkthAcobKTsBlmi2z"],[5,550,10],[0,0.5,1]],[37,1,3,10,10,8,8,-37,[0,"a6xaxXKgRL2pSINNL7Pr+G"]],[11,40,220,-38,[0,"affoUC3LVAx4A6MCY9WVFL"]]],[1,"5bvNDVSK5MxJT7deiKZQ9z",null,null,null,1,0]],[4,"宠物信息",33554432,2,[-41],[[3,-39,[0,"a7v95Jt2lNL5TFuID+B3lu"],[5,550,300],[0,0.5,1]],[11,41,100,-40,[0,"cbY7aqHhtEV62KdALkj9oK"]]],[1,"40hBb/khZF6IQU3obPp/Pq",null,null,null,1,0],[1,0,450,0]],[4,"宠物",33554432,8,[-44],[[2,-42,[0,"d0wONnRwVDvYB8KjS9ScIl"],[5,200,250]],[30,0,-43,[0,"3c2+0HA1FAKoafcrnIHJUy"],[4,4291414473],0]],[1,"1dYaPkTqtK2oInTXYBpXfM",null,null,null,1,0],[1,-134.352,-148.623,0]],[16,"Label",512,33554432,4,[[2,-45,[0,"9e+AR41b5P75g0hGoGqAxs"],[5,100,40]],[38,"上阵",28,28,1,false,true,-46,[0,"0eDUPg91tDzramBLkMIuwU"]],[39,3,-47,[0,"ec6tDDrjxAy4TSO+QxlZio"]]],[1,"30qzKCoCtDjomBMqso9XM7",null,null,null,1,0]],[9,"Spine",33554432,9,[[[20,-48,[0,"9cFGX9wKNG5adKnyjwUUBl"],[0,0.5,0]],-49],4,1],[1,"59AnT4EMRNep0FQy8UNq+B",null,null,null,1,0],[1,0,-85.798,0]],[9,"bar",33554432,5,[[[3,-50,[0,"beO0Ny+aRJPJW2zaQN0F4h"],[5,10,156.25],[0,0,0]],-51],4,1],[1,"b3OFicdQRJfYIKwYek8m6Z",null,null,null,1,0],[1,-11,-31.25,0]],[40,0.23,0.75,false,3,[0,"5fzZ+QwLdDtZman+w7PVqT"],7],[41,11,[0,"afvwQMWpJEN4ad9XqUn/Os"]],[31,1,0,12,[0,"910UwgVSRAT7cUstqjnveL"],[4,16777215]],[42,1,5,[0,"61WBycWglGF7Wgxl/uixRt"],13,15]],0,[0,3,1,0,0,1,0,0,1,0,5,14,0,6,13,0,0,1,0,-1,2,0,0,2,0,0,2,0,0,2,0,-1,8,0,-2,3,0,-3,4,0,0,3,0,0,3,0,0,3,0,-4,13,0,-1,5,0,-2,6,0,0,4,0,0,4,0,7,4,0,0,4,0,0,4,0,-1,10,0,0,5,0,0,5,0,0,5,0,-4,16,0,-1,12,0,0,6,0,0,6,0,0,6,0,0,6,0,-1,7,0,0,7,0,0,7,0,0,7,0,0,8,0,0,8,0,-1,9,0,0,9,0,0,9,0,-1,11,0,0,10,0,0,10,0,0,10,0,0,11,0,-2,14,0,0,12,0,-2,15,0,4,1,13,8,16,51],[0,0,0,0,0,0,0,0,0,15,13],[1,1,1,1,9,10,11,12,1,1,13],[1,2,3,0,0,0,4,5,1,6,7]],[[[7,"阵法宠物ICON"],[19,"阵法宠物ICON",33554432,[-7],[[[21,-5,[0,"60HDOce21EU4mT/teH3tKt"]],-6],4,1],[26,"02c3tqHwFAbp7zhkA22zq9",null,-4,0,[[43,["select"],-3,-2,[5,["d4qo68UJJHyonQhZ4UFX08"]]]],[-1]],[1,-217,-50,0]],[17,0,{},1,[27,"02c3tqHwFAbp7zhkA22zq9",null,-12,[45,"38bYsBY+lB0IKazeP060us",1,[[46,"选择宠物ICON",["_name"],-8],[6,["_lpos"],-9,[1,0,0,0]],[6,["_lrot"],-10,[3,0,0,0,1]],[6,["_euler"],-11,[1,0,0,0]]]],[[44,["petIcon"],[18,"New Node"],[5,["a8v6Wyt6FBsbms2ouS3gEa"]]]],0]],[5,["02c3tqHwFAbp7zhkA22zq9"]],[47,1,[0,"6etm75eOVF37vJbMmq4O6z"]]],0,[0,-1,2,0,14,2,0,15,4,0,3,1,0,0,1,0,-2,4,0,-1,2,0,2,3,0,2,3,0,2,3,0,2,3,0,3,2,0,4,1,12],[0],[16],[8]]]] diff --git a/headless/static/remote/resources/import/07/072d38c93.json b/headless/static/remote/resources/import/07/072d38c93.json new file mode 100644 index 00000000..dc32416f --- /dev/null +++ b/headless/static/remote/resources/import/07/072d38c93.json @@ -0,0 +1 @@ +[1,["da561b68-57fb-462b-b799-da2ba6658534","20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941","bd1bcaba-bd7d-4a71-b143-997c882383e4@f9941","7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941","afc47931-f066-46b0-90be-9fe61f213428@6c48a","ffb88a8f-af62-48f4-8f1d-3cb606443a43@f9941","b730527c-3233-41c2-aaf7-7cdab58f9749@f9941","544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941","951249e0-9f16-456d-8b85-a6ca954da16b@f9941","afc47931-f066-46b0-90be-9fe61f213428@f9941","ffb88a8f-af62-48f4-8f1d-3cb606443a43@6c48a"],["node","_spriteFrame","root","_parent","asset","_textureSource","data","inputMessage","content","view","_target","_scrollView","_normalSprite","_hoverSprite","_pressedSprite","_disabledSprite","chatPrefab","_backgroundImage"],[["cc.Widget",["_alignFlags","_originalWidth","_originalHeight","_right","_top","_bottom","_left","_alignMode","node","__prefab"],-5,1,4],["cc.Node",["_name","_layer","_objFlags","__editorExtras__","_prefab","_components","_children","_lpos","_parent"],-1,4,9,2,5,1],["cc.Node",["_name","_layer","_active","_components","_prefab","_lpos","_parent","_children"],0,12,4,5,1,2],["cc.Sprite",["_sizeMode","_type","node","__prefab","_spriteFrame","_color"],1,1,4,6,5],["cc.Label",["_string","_actualFontSize","_fontSize","_overflow","_enableWrapText","_horizontalAlign","_isBold","_lineHeight","node","__prefab","_color"],-5,1,4,5],"cc.SpriteFrame",["cc.UITransform",["node","__prefab","_contentSize","_anchorPoint"],3,1,4,5,5],["cc.Prefab",["_name"],2],["cc.CompPrefabInfo",["fileId"],2],["ec6f0yWsr5CypPnEboLemYl",["mask","isClickMaskeClose","node","__prefab","content","inputMessage","chatPrefab"],1,1,4,1,1,6],["cc.PrefabInfo",["fileId","instance","targetOverrides","root","asset","nestedPrefabInstanceRoots"],0,1,1,2],["cc.PrefabInfo",["fileId","instance","targetOverrides","nestedPrefabInstanceRoots","root","asset"],-1,1,1],["cc.PrefabInfo",["fileId","targetOverrides","nestedPrefabInstanceRoots","root","instance","asset"],0,1,4,6],["cc.Layout",["_resizeMode","_layoutType","node","__prefab"],1,1,4],["e1d16dgPwNMG6XbZzTQUsMn",["node","__prefab","view","content"],3,1,4,1,1],["cc.Button",["_transition","node","__prefab","clickEvents","_normalColor","_target","_normalSprite","_hoverSprite","_pressedSprite","_disabledSprite"],2,1,4,9,5,1,6,6,6,6],["cc.ClickEvent",["_componentId","handler","target"],1,1],["cc.Mask",["node","__prefab"],3,1,4],["cc.Graphics",["node","__prefab","_fillColor"],3,1,4,5],["cc.TargetInfo",["localID"],2],["cc.LabelOutline",["_width","node","__prefab"],2,1,4],["cc.PrefabInstance",["fileId","prefabRootNode","propertyOverrides"],2,1,9],["CCPropertyOverrideInfo",["value","propertyPath","targetInfo"],1,1],["CCPropertyOverrideInfo",["propertyPath","targetInfo","value"],2,1,8],["CCPropertyOverrideInfo",["value","propertyPath","targetInfo"],1,4],["cc.ScrollBar",["_direction","node","__prefab","_handle"],2,1,4,1],["cc.ScrollView",["bounceDuration","brake","horizontal","node","__prefab","_content","_verticalScrollBar"],0,1,4,1,1],["cc.EditBox",["_inputMode","_maxLength","node","__prefab","_textLabel","_placeholderLabel"],1,1,4,1,1]],[[8,0,2],[11,0,1,2,3,4,5,5],[23,0,1,2,2],[6,0,1,2,1],[6,0,1,2,3,1],[19,0,2],[1,2,3,8,4,3],[12,0,1,2,3,4,5,4],[21,0,1,2,2],[22,0,1,2,3],[1,0,1,8,6,5,4,7,3],[0,0,1,2,8,9,4],[3,1,0,2,3,4,3],[24,0,1,2,3],[7,0,2],[1,0,1,6,5,4,7,3],[2,0,1,7,3,4,5,3],[2,0,1,6,3,4,5,3],[0,0,1,8,9,3],[1,0,1,6,5,4,3],[1,0,2,1,8,5,4,4],[1,0,1,5,4,7,3],[2,0,1,6,7,3,4,5,3],[2,0,1,6,7,3,4,3],[2,0,2,1,6,3,4,5,4],[0,0,6,3,4,5,1,2,8,9,8],[0,0,3,8,9,3],[0,0,4,1,2,8,9,5],[0,0,2,7,8,9,4],[0,0,5,1,2,8,9,5],[9,0,1,2,3,4,5,6,3],[10,0,1,2,3,4,5,4],[13,0,1,2,3,3],[3,1,0,2,3,5,4,3],[3,0,2,3,4,2],[3,0,2,3,5,4,2],[3,1,0,2,3,3],[14,0,1,2,3,1],[15,0,1,2,3,4,5,6,7,8,9,2],[16,0,1,2,3],[17,0,1,1],[18,0,1,2,1],[4,0,1,2,3,4,6,8,9,7],[4,0,5,1,2,3,4,8,9,7],[4,0,5,1,2,7,3,4,8,9,10,8],[4,0,1,2,3,8,9,10,5],[20,0,1,2,2],[25,0,1,2,3,2],[26,0,1,2,3,4,5,6,4],[27,0,1,2,3,4,5,3]],[[[{"name":"default_scrollbar_vertical","rect":{"x":0,"y":0,"width":15,"height":30},"offset":{"x":0,"y":0},"originalSize":{"width":15,"height":30},"rotated":false,"capInsets":[4,10,4,10],"vertices":{"rawPosition":[-7.5,-15,0,7.5,-15,0,-7.5,15,0,7.5,15,0],"indexes":[0,1,2,2,1,3],"uv":[0,30,15,30,0,0,15,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-7.5,"y":-15,"z":0},"maxPos":{"x":7.5,"y":15,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[5],0,[0],[5],[4]],[[[14,"MainChatView"],[19,"MainChatView",33554432,[-11],[[3,-6,[0,"1dgJxmIH5HIpXD6y0/xMwI"],[5,720,1280]],[11,45,100,100,-7,[0,"582zBz6m5DKqmkTkiS/LE0"]],[30,true,true,-10,[0,"26hK6bWMJNT7zdO8IIof/C"],-9,-8,14]],[31,"08xLpDDa9NlK3pgR7XiOqb",null,null,-5,0,[-1,-2,-3,-4]]],[15,"content",33554432,[-14,-15,-16,-17],[[4,-12,[0,"38jBpHtyBHH5T8svDuE4uI"],[5,720,201.6],[0,0.5,0]],[32,1,2,-13,[0,"09LreUEXdKn5G5+ZEb28cO"]]],[1,"6ftDovI3ZG0LV4hEGmBw9e",null,null,null,1,0],[1,0,-389.442,0]],[16,"ScrollView",33554432,[-24,-25],[[[3,-18,[0,"5dx8jgT1xO+K5XWwM8PmzG"],[5,720,780]],[12,1,0,-19,[0,"9bhiykRrtFWIR90VabEAzh"],5],-20,[11,45,240,250,-21,[0,"c0KhDubZlDV57/B2AYRvxa"]],[37,-23,[0,"584qMqdMxAeIjiiylr0OGK"],-22,2]],4,4,1,4,4],[1,"5cwVs8ga1EA7gfAWpumyg6",null,null,null,1,0],[1,0,390,0]],[16,"EditBox",33554432,[-30,-31],[[[3,-26,[0,"b9Nfz6euVPK7g4Yj6Qck9g"],[5,470,60]],[12,1,0,-27,[0,"e3GwXEA9BN+JhXSieD6OpC"],6],-28,[25,45,50,200,20,20,300,40,-29,[0,"19iTSukQRBZ7lX2XmtKsuY"]]],4,4,1,4],[1,"61j6fUqFpF5rptx/GWwocj",null,null,null,1,0],[1,-75,0,0]],[15,"Button",33554432,[-37],[[3,-32,[0,"cbZS8OVX1DhL7tgFFzHcEA"],[5,150,60]],[33,1,0,-33,[0,"e8E6OG4D9ELqvaogo3Wdel"],[4,4289374890],7],[38,3,-35,[0,"99UGZjhadEzovZ+HA1fMm/"],[[39,"ec6f0yWsr5CypPnEboLemYl","onClickSendMessage",1]],[4,4292269782],-34,8,9,10,11],[26,32,25,-36,[0,"dd1UkQULBNmY9AAde5okAy"]]],[1,"6b76dgqpVIqYcK/ana6UAo",null,null,null,1,0],[1,260,0,0]],[10,"bg",33554432,1,[-41,-42],[[3,-38,[0,"8ftYzn1eBL/KI9lfvctDGE"],[5,720,880]],[34,0,-39,[0,"72OG0M5ThEtaIaziixD4R1"],13],[27,45,400,720,720,-40,[0,"8ejneRsd9FXLr6cGBBG0Rk"]]],[1,"85bQbPz7FPkaRPL/kSAwAE",null,null,null,1,0],[1,0,-200,0]],[22,"scrollBar",33554432,3,[-47],[[[4,-43,[0,"fcZe+iIW1JTJrZNkpjre5Q"],[5,12,780],[0,1,0.5]],[12,1,0,-44,[0,"692UipkItJt7pAOwUxQvL5"],0],[28,37,250,1,-45,[0,"bcHh4Rb9BEB5EoiTLfgrK5"]],-46],4,4,4,1],[1,"c5iqtJrTBCDIwSpYv3FfH8",null,null,null,1,0],[1,360,0,0]],[23,"view",33554432,3,[2],[[-48,[40,-49,[0,"85HOv9wlJE1oRUO6Qc4Rjn"]],[41,-50,[0,"ceFHy8/TNN8bNeTLRGuh8G"],[4,16777215]],[11,45,240,250,-51,[0,"75Yw2e14BGlJdihTxy6LDm"]]],1,4,4,4],[1,"d2rKhqynhKPYttXB0cFtNh",null,null,null,1,0]],[10,"input",33554432,6,[4,5],[[3,-52,[0,"19BrPiFkNM9ZOetS06yUKE"],[5,720,100]],[35,0,-53,[0,"6fjNw46P9MaK6aeK0sfn3p"],[4,4292401368],12],[18,44,100,-54,[0,"13Sqmd3g5G9q2yRZMw3JQX"]]],[1,"c5UX4WKaNHLJ+sOEWmTbXs",null,null,null,1,0],[1,0,-390,0]],[10,"content",33554432,6,[3],[[4,-55,[0,"4dXQTowItNjoOW8cCzUp9B"],[5,720,780],[0,0.5,0]],[29,45,100,100,100,-56,[0,"dalXjt8RpEXZq/2CWhyV3C"]]],[1,"be9eG7jMxBL6G5q7Pup9tu",null,null,null,1,0],[1,0,-340,0]],[5,["b4aPDEneNHC4OYnY3k7ypP"]],[5,["b4aPDEneNHC4OYnY3k7ypP"]],[5,["b4aPDEneNHC4OYnY3k7ypP"]],[5,["b4aPDEneNHC4OYnY3k7ypP"]],[20,"Label",512,33554432,5,[[3,-57,[0,"b0sZg+QCJJppxyfiSFnzPI"],[5,100,40]],[42,"发送",30,30,1,false,true,-58,[0,"69M06TrDBNToewISHyVMK9"]],[46,3,-59,[0,"086niuHLhJLa486HfNgyta"]]],[1,"911ZbZrlZJN4SV1pXmkSt9",null,null,null,1,0]],[17,"bar",33554432,7,[[[4,-60,[0,"297l2KRJBGPpgXuLYGKy3W"],[5,10,156.25],[0,0,0]],-61],4,1],[1,"7cfFEsgMZMj4mVMJR5Shg8",null,null,null,1,0],[1,-11,-31.25,0]],[6,0,{},2,[7,"b4aPDEneNHC4OYnY3k7ypP",null,null,-62,[8,"8eTuYnSCxCr56XNF4GpS6i",1,[[9,"MainChatItem",["_name"],11],[2,["_lpos"],11,[1,0,151.2,0]],[2,["_lrot"],11,[3,0,0,0,1]],[2,["_euler"],11,[1,0,0,0]]]],1]],[6,0,{},2,[7,"b4aPDEneNHC4OYnY3k7ypP",null,null,-63,[8,"1fY2+C9iBKNJ2LaUt68EGJ",1,[[9,"MainChatItem-001",["_name"],12],[2,["_lpos"],12,[1,0,100.79999999999998,0]],[2,["_lrot"],12,[3,0,0,0,1]],[2,["_euler"],12,[1,0,0,0]],[13,"ScrollView content011",["_string"],[5,["7ahEvd3z5N4ruHsPPLIdmV"]]]]],2]],[6,0,{},2,[7,"b4aPDEneNHC4OYnY3k7ypP",null,null,-64,[8,"88HpHhoQ9Ii71ZbV+uGFUI",1,[[9,"MainChatItem-002",["_name"],13],[2,["_lpos"],13,[1,0,50.399999999999984,0]],[2,["_lrot"],13,[3,0,0,0,1]],[2,["_euler"],13,[1,0,0,0]],[13,"ScrollView content011",["_string"],[5,["7ahEvd3z5N4ruHsPPLIdmV"]]]]],3]],[6,0,{},2,[7,"b4aPDEneNHC4OYnY3k7ypP",null,null,-65,[8,"aaTm0EZxBOhZRXlrwNOuyK",1,[[9,"MainChatItem-003",["_name"],14],[2,["_lpos"],14,[1,0,-1.4210854715202004e-14,0]],[2,["_lrot"],14,[3,0,0,0,1]],[2,["_euler"],14,[1,0,0,0]],[13,"ScrollView content011",["_string"],[5,["7ahEvd3z5N4ruHsPPLIdmV"]]]]],4]],[24,"TEXT_LABEL",false,33554432,4,[[[4,-66,[0,"ee4ihXE3VLjYEuCCOH7H9p"],[5,468,60],[0,0,1]],-67],4,1],[1,"27SOLOJxZKK4REeh/nznIQ",null,null,null,1,0],[1,-233,30,0]],[17,"PLACEHOLDER_LABEL",33554432,4,[[[4,-68,[0,"7fUJiLBztC3IuMcEHJ03cf"],[5,468,60],[0,0,1]],-69],4,1],[1,"5e/dBFPTVL6LCLfra9pcuy",null,null,null,1,0],[1,-233,30,0]],[36,1,0,16,[0,"b7zmspZalIoZblsL3nN4lj"]],[47,1,7,[0,"31fS/bpM1JAYmY5W3Kftc9"],23],[48,0.23,0.75,false,3,[0,"94pBHBwgBH8KClHQ/pslaX"],2,24],[3,8,[0,"1brXWW+DxBLpIZ6lVlkTP0"],[5,720,780]],[43,"",0,40,36,1,false,21,[0,"bdZW9NWQ1LGoYD8mkoM/W6"]],[44,"快来聊天吧!!",0,36,36,60,1,false,22,[0,"c5msZBhzlIq7Iy7OZCXu6e"],[4,4290493371]],[49,6,100,4,[0,"11APjsS1tD5pL9bCw+RQO7"],27,28]],0,[0,-1,20,0,-2,19,0,-3,18,0,-4,17,0,2,1,0,0,1,0,0,1,0,7,29,0,8,2,0,0,1,0,-1,6,0,0,2,0,0,2,0,-1,17,0,-2,18,0,-3,19,0,-4,20,0,0,3,0,0,3,0,-3,25,0,0,3,0,9,26,0,0,3,0,-1,7,0,-2,8,0,0,4,0,0,4,0,-3,29,0,0,4,0,-1,21,0,-2,22,0,0,5,0,0,5,0,10,5,0,0,5,0,0,5,0,-1,15,0,0,6,0,0,6,0,0,6,0,-1,10,0,-2,9,0,0,7,0,0,7,0,0,7,0,-4,24,0,-1,16,0,-1,26,0,0,8,0,0,8,0,0,8,0,0,9,0,0,9,0,0,9,0,0,10,0,0,10,0,0,15,0,0,15,0,0,15,0,0,16,0,-2,23,0,2,17,0,2,18,0,2,19,0,2,20,0,0,21,0,-2,27,0,0,22,0,-2,28,0,6,1,2,3,8,3,3,10,4,3,9,5,3,9,24,11,25,69],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,29],[1,4,4,4,4,1,1,1,12,13,14,15,1,1,16,1,17],[5,0,0,0,0,6,2,1,1,1,7,8,3,3,0,9,2]],[[[14,"MainChatItem"],[21,"MainChatItem",33554432,[[4,-2,[0,"3251Mcv39NZJJvhmqkWsTm"],[5,720,50.4],[0,0.5,0]],[45,"ScrollView content01",36,36,3,-3,[0,"7ahEvd3z5N4ruHsPPLIdmV"],[4,4278190080]],[18,40,335.53125,-4,[0,"61ikNaw6BJr7IaFbNvdfj8"]]],[1,"b4aPDEneNHC4OYnY3k7ypP",null,null,null,-1,0],[1,0,1512.0000000000005,0]]],0,[0,2,1,0,0,1,0,0,1,0,0,1,0,6,1,4],[],[],[]],[[{"name":"default_scrollbar_vertical_bg","rect":{"x":0,"y":0,"width":15,"height":30},"offset":{"x":0,"y":0},"originalSize":{"width":15,"height":30},"rotated":false,"capInsets":[4,10,4,10],"vertices":{"rawPosition":[-7.5,-15,0,7.5,-15,0,-7.5,15,0,7.5,15,0],"indexes":[0,1,2,2,1,3],"uv":[0,30,15,30,0,0,15,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-7.5,"y":-15,"z":0},"maxPos":{"x":7.5,"y":15,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[5],0,[0],[5],[10]]]] diff --git a/headless/static/remote/resources/import/08/088ce3f4b.json b/headless/static/remote/resources/import/08/088ce3f4b.json new file mode 100644 index 00000000..6fac055f --- /dev/null +++ b/headless/static/remote/resources/import/08/088ce3f4b.json @@ -0,0 +1 @@ +[1,["7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941","7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@6c48a"],["node","root","drag","havePet","noPet","target","data","_spriteFrame","_textureSource"],[["cc.Node",["_name","_layer","_parent","_components","_prefab","_children","_lpos","_lscale"],1,1,9,4,2,5,5],["cc.UITransform",["node","__prefab","_contentSize"],3,1,4,5],"cc.SpriteFrame",["cc.Prefab",["_name"],2],["cc.Node",["_name","_layer","_children","_components","_prefab","_lpos"],1,2,12,4,5],["cc.CompPrefabInfo",["fileId"],2],["cc.Sprite",["_sizeMode","node","__prefab","_spriteFrame"],2,1,4,6],["78c308a0dBCEJ/E9wZzZPJq",["node","__prefab","noPet","havePet","drag"],3,1,4,1,1,1],["cc.Button",["node","__prefab","clickEvents"],3,1,4,9],["cc.ClickEvent",["_componentId","handler","target"],1,1],["cc.PrefabInfo",["fileId","instance","targetOverrides","nestedPrefabInstanceRoots","root","asset"],-1,1,1],["cc.Label",["_string","_actualFontSize","_fontSize","_lineHeight","node","__prefab"],-1,1,4],["cc.LabelOutline",["_width","node","__prefab"],2,1,4],["sp.Skeleton",["node","__prefab"],3,1,4],["a3a9dIzSOFPPpmZbiL9N5+m",["node","__prefab"],3,1,4]],[[5,0,2],[10,0,1,2,3,4,5,5],[1,0,1,1],[0,0,1,2,5,3,4,3],[3,0,2],[4,0,1,2,3,4,5,3],[0,0,1,2,3,4,3],[0,0,1,2,3,4,6,7,3],[1,0,1,2,1],[6,0,1,2,3,2],[7,0,1,2,3,4,1],[8,0,1,2,1],[9,0,1,2,3],[11,0,1,2,3,4,5,5],[12,0,1,2,2],[13,0,1,1],[14,0,1,1]],[[[[4,"阵法节点"],[5,"阵法节点",33554432,[-11,-12],[[[2,-2,[0,"64UUiPhsBGyYO5QK/i4llF"]],[9,0,-3,[0,"23CcuxwSVD5rTkFLTkzmPx"],0],[10,-7,[0,"06AIrIH75LL7sccNjNaqQj"],-6,-5,-4],[11,-9,[0,"3bADZ0NEBKT7VejLYWOUff"],[[12,"78c308a0dBCEJ/E9wZzZPJq","onClick",-8]]],-10],4,4,4,4,1],[1,"f15AW5eMVEKKgrwPWb2eZo",null,null,null,-1,0],[1,-110,110,0]],[3,"没有宠物",33554432,1,[-14],[[2,-13,[0,"d4QFkSAFNDcI3m+mF1hDoB"]]],[1,"89H2Y6T4BDHrwQMQSD6Rep",null,null,null,1,0]],[6,"Label",33554432,2,[[8,-15,[0,"57tohbvq5DfqSeazSpahc7"],[5,64.3984375,69]],[13,"+",100,100,50,-16,[0,"b69Hawp/VJAJJTIr+OiBc7"]],[14,3,-17,[0,"d4gS8Lw1tFHa81PtPHRzaf"]]],[1,"129GFUemtBFbVZkRJYzyID",null,null,null,1,0]],[3,"有宠物",33554432,1,[-19],[[2,-18,[0,"7f4JKo3WJKJa/8S/rSd4ph"]]],[1,"8dQqbrevlD0JCENds1sMve",null,null,null,1,0]],[7,"spine",33554432,4,[[2,-20,[0,"65I6WOBWVCLrW6iywP48T/"]],[15,-21,[0,"0f1OnVOdxOHpmwVY/VyzDJ"]]],[1,"76QA5Y2AxFN7Jjq4/IKsPA",null,null,null,1,0],[1,0,-35.47,0],[1,0.8,0.8,1]],[16,1,[0,"9a6ssWQUFBYaDchwbOTiyH"]]],0,[0,1,1,0,0,1,0,0,1,0,2,6,0,3,4,0,4,2,0,0,1,0,5,1,0,0,1,0,-5,6,0,-1,2,0,-2,4,0,0,2,0,-1,3,0,0,3,0,0,3,0,0,3,0,0,4,0,-1,5,0,0,5,0,0,5,0,6,1,21],[0],[7],[0]],[[{"name":"default_sprite_splash","rect":{"x":0,"y":0,"width":2,"height":2},"offset":{"x":0,"y":0},"originalSize":{"width":2,"height":2},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-1,-1,0,1,-1,0,-1,1,0,1,1,0],"indexes":[0,1,2,2,1,3],"uv":[0,2,2,2,0,0,2,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-1,"y":-1,"z":0},"maxPos":{"x":1,"y":1,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[2],0,[0],[8],[1]]]] diff --git a/headless/static/remote/resources/import/08/08967caef.json b/headless/static/remote/resources/import/08/08967caef.json new file mode 100644 index 00000000..b6067558 --- /dev/null +++ b/headless/static/remote/resources/import/08/08967caef.json @@ -0,0 +1 @@ +[1,["7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941","e59969f5-99a0-4259-ba3e-71093a65cfd8","ef1f320e-328a-41c9-bfdc-ad17d402e14f"],["node","targetInfo","root","data","_spriteFrame","target","source","asset","spine"],[["cc.Node",["_name","_layer","_objFlags","__editorExtras__","_prefab","_components","_lpos","_parent","_children","_lscale"],-1,4,12,5,1,2,5],["cc.Node",["_name","_layer","_components","_prefab","_parent","_children","_lpos"],1,9,4,1,2,5],["cc.UITransform",["node","__prefab","_contentSize"],3,1,4,5],["cc.Sprite",["_sizeMode","node","__prefab","_spriteFrame","_color"],2,1,4,6,5],["cc.Prefab",["_name"],2],["cc.CompPrefabInfo",["fileId"],2],["cc.PrefabInfo",["fileId","instance","root","asset","targetOverrides","nestedPrefabInstanceRoots"],1,1,1,9,2],["cc.PrefabInfo",["fileId","nestedPrefabInstanceRoots","root","instance","targetOverrides","asset"],1,1,4,9,6],["cc.PrefabInfo",["fileId","instance","targetOverrides","nestedPrefabInstanceRoots","root","asset"],-1,1,1],["cc.PrefabInfo",["fileId","targetOverrides","nestedPrefabInstanceRoots","root","instance","asset"],0,1,4,6],["cc.TargetOverrideInfo",["propertyPath","source","target","targetInfo"],2,1,1,4],["cc.TargetOverrideInfo",["propertyPath","target","targetInfo"],2,4,4],["cc.TargetInfo",["localID"],2],["cc.PrefabInstance",["fileId","prefabRootNode","propertyOverrides"],2,1,9],["CCPropertyOverrideInfo",["value","propertyPath","targetInfo"],1,1],["CCPropertyOverrideInfo",["propertyPath","targetInfo","value"],2,1,8],["590f9LG0/NBQ53k5HoSVyV6",["node","__prefab"],3,1,4],["7c665fcvLRGDqzjhgvUI4oN",["node","__prefab","select","noselect"],3,1,4,1,1],["b3809FuWrhB2ovECDdqMTOs",["node","__prefab","spine"],3,1,4,1],["cc.Mask",["node","__prefab"],3,1,4],["cc.Graphics",["node","__prefab","_fillColor"],3,1,4,5],["sp.Skeleton",["_premultipliedAlpha","node","__prefab"],2,1,4]],[[5,0,2],[15,0,1,2,2],[2,0,1,1],[8,0,1,2,3,4,5,5],[12,0,2],[4,0,2],[1,0,1,4,2,3,3],[0,0,1,8,5,4,6,3],[0,2,3,7,4,3],[2,0,1,2,1],[6,0,1,2,3,4,5,3],[10,0,1,2,3,2],[13,0,1,2,2],[14,0,1,2,3],[3,0,1,2,4,3,2],[0,0,2],[0,0,1,7,5,4,6,9,3],[1,0,1,5,2,3,6,3],[7,0,1,2,3,4,5,3],[9,0,1,2,3,4,5,4],[11,0,1,2,2],[16,0,1,1],[3,0,1,2,3,2],[17,0,1,2,3,1],[18,0,1,2,1],[19,0,1,1],[20,0,1,2,1],[21,0,1,2,2]],[[[[5,"野怪列表ICON"],[7,"野怪列表ICON",33554432,[-7],[[[2,-5,[0,"60HDOce21EU4mT/teH3tKt"]],-6],4,1],[10,"02c3tqHwFAbp7zhkA22zq9",null,-4,0,[[11,["icon"],-3,-2,[4,["d4qo68UJJHyonQhZ4UFX08"]]]],[-1]],[1,-217,-50,0]],[8,0,{},1,[18,"02c3tqHwFAbp7zhkA22zq9",null,-12,[12,"92tNwwtwJEj5SOclnRjbw5",1,[[13,"选择宠物ICON",["_name"],-8],[1,["_lpos"],-9,[1,0,0,0]],[1,["_lrot"],-10,[3,0,0,0,1]],[1,["_euler"],-11,[1,0,0,0]]]],[[20,["petIcon"],[15,"New Node"],[4,["a8v6Wyt6FBsbms2ouS3gEa"]]]],0]],[4,["02c3tqHwFAbp7zhkA22zq9"]],[21,1,[0,"a9goNZgrtIaozwZgOyRy/0"]]],0,[0,-1,2,0,5,2,0,6,4,0,2,1,0,0,1,0,-2,4,0,-1,2,0,1,3,0,1,3,0,1,3,0,1,3,0,2,2,0,3,1,12],[0],[7],[1]],[[[5,"选择宠物ICON"],[7,"选择宠物ICON",33554432,[-7,-8,-9],[[[2,-5,[0,"60HDOce21EU4mT/teH3tKt"]],-6],4,1],[10,"02c3tqHwFAbp7zhkA22zq9",null,-4,0,[[11,["petIcon"],-3,-2,[4,["a8v6Wyt6FBsbms2ouS3gEa"]]]],[-1]],[1,-217,-50,0]],[6,"不可选中",33554432,1,[[9,-10,[0,"89jo3ZLIBHkoSIJ8ht6gAw"],[5,110,110]],[14,0,-11,[0,"f95xraDe1BKrLfx/ZQuwwz"],[4,4283585279],0]],[3,"aeZLGO3ZRLEovu6SQVdYcK",null,null,null,1,0]],[6,"选中",33554432,1,[[9,-12,[0,"b4vJnGQvdKv4MXp8xLg6zf"],[5,110,110]],[14,0,-13,[0,"01wxgAoWhO+qLRM5Jr3rH1"],[4,4278190080],1]],[3,"fcC3JxewdM1K8tKbhV80+3",null,null,null,1,0]],[8,0,{},1,[19,"02c3tqHwFAbp7zhkA22zq9",null,null,-18,[12,"eaan0oyQBEKJFVRxGbOCuw",1,[[13,"宠物ICON",["_name"],-14],[1,["_lpos"],-15,[1,0,0,0]],[1,["_lrot"],-16,[3,0,0,0,1]],[1,["_euler"],-17,[1,0,0,0]]]],2]],[4,["02c3tqHwFAbp7zhkA22zq9"]],[23,1,[0,"d4qo68UJJHyonQhZ4UFX08"],3,2]],0,[0,-1,4,0,5,4,0,6,6,0,2,1,0,0,1,0,-2,6,0,-1,2,0,-2,3,0,-3,4,0,0,2,0,0,2,0,0,3,0,0,3,0,1,5,0,1,5,0,1,5,0,1,5,0,2,4,0,3,1,18],[0,0,0],[4,4,7],[0,0,2]],[[[5,"宠物ICON"],[17,"宠物ICON",33554432,[-7,-8],[[2,-2,[0,"60HDOce21EU4mT/teH3tKt"]],[24,-4,[0,"a8v6Wyt6FBsbms2ouS3gEa"],-3],[25,-5,[0,"10zYj9H5FENZXD89pQVuyU"]],[26,-6,[0,"1broUYdiFORJt5rRvetp3L"],[4,16777215]]],[3,"02c3tqHwFAbp7zhkA22zq9",null,null,null,-1,0],[1,-217,-50,0]],[6,"背景",33554432,1,[[2,-9,[0,"5dXmPodeBIzK9ZudCJ0lyM"]],[22,0,-10,[0,"20sb9VIT5KFIQeKj9xXgfd"],0]],[3,"5fFj0bKJZKHaJ1M3mytw3C",null,null,null,1,0]],[16,"Spine",33554432,1,[[[2,-11,[0,"e4A0L+eItAaJtEFXgkYXR2"]],-12],4,1],[3,"50gNLxcs1J8ZGN6PlbNEU8",null,null,null,1,0],[1,0,-34,0],[1,0.8,0.8,1]],[27,false,3,[0,"4cHiUZWxdPRr49P1mMMVEz"]]],0,[0,2,1,0,0,1,0,8,4,0,0,1,0,0,1,0,0,1,0,-1,2,0,-2,3,0,0,2,0,0,2,0,0,3,0,-2,4,0,3,1,12],[0],[4],[0]]]] diff --git a/headless/static/remote/resources/import/09/097fa3f25.json b/headless/static/remote/resources/import/09/097fa3f25.json new file mode 100644 index 00000000..22e7c51c --- /dev/null +++ b/headless/static/remote/resources/import/09/097fa3f25.json @@ -0,0 +1 @@ +{"type":"cc.Texture2D","data":[["2,2,2,2,0,0",["7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca"]],["2,2,2,2,0,0",["8cd8e7fb-f35b-417f-b147-ecc7ef089706"]],["2,2,2,2,0,0",["9fd900dd-221b-4f89-8f2c-fba34243c835"]],["2,2,2,2,0,0",["11bdc4b0-64a8-4eb7-a2a7-9fb9e233e977"]],["2,2,0,0,1,0",["13ffba43-826c-4f33-8ac2-4b59811ce9b0"]],["2,2,2,2,0,0",["24a704da-2867-446d-8d1a-5e920c75e09d"]],["2,2,2,2,0,0",["76aadab4-10a3-4c8e-b4b9-dce7807050fc"]],["2,2,2,2,0,0",["158e7e52-3220-4cd7-9694-713e0e6e8278"]],["2,2,2,2,0,0",["179a2053-b80c-4b5d-ab83-e75934fd66d2"]],["2,2,2,2,0,0",["544e49d6-3f05-4fa8-9a9e-091f98fc2ce8"]],["2,2,2,2,0,0",["2357c44f-3cf0-47eb-8f7a-0f303eaefe08"]],["2,2,2,2,0,0",["20835ba4-6145-4fbc-a58a-051ce700aa3e"]],["2,2,0,0,1,0",["30250fcc-aac2-4473-94bf-7688cf16a604"]],["2,2,2,2,0,0",["951249e0-9f16-456d-8b85-a6ca954da16b"]],["2,2,2,2,0,0",["afc47931-f066-46b0-90be-9fe61f213428"]],["2,2,2,2,0,0",["b730527c-3233-41c2-aaf7-7cdab58f9749"]],["2,2,2,2,0,0",["bd1bcaba-bd7d-4a71-b143-997c882383e4"]],["2,2,2,2,0,0",["c26a2ac3-057f-4de8-8c06-9ff3e1c48017"]],["2,2,2,2,0,0",["ffb88a8f-af62-48f4-8f1d-3cb606443a43"]]]} diff --git a/headless/static/remote/resources/import/0b/0b5f814c9.json b/headless/static/remote/resources/import/0b/0b5f814c9.json new file mode 100644 index 00000000..b1206766 --- /dev/null +++ b/headless/static/remote/resources/import/0b/0b5f814c9.json @@ -0,0 +1 @@ +[1,["20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941","11623136-ce7c-4aaf-9be6-c298c14d1e0d","7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941","544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941","951249e0-9f16-456d-8b85-a6ca954da16b@f9941","1ee4a519-c5ef-453c-98d6-9940781b6fcc","f9a7b5b8-0c1a-4b0c-a6c7-bbf2e077442a","a9053170-1055-4272-b3fd-ad6fa75b5f25","9d7eeadb-58f6-4c42-aaed-bc402f272c84"],["node","root","asset","targetInfo","_spriteFrame","_target","_normalSprite","_hoverSprite","_pressedSprite","_disabledSprite","data","_parent","playerNameLabel","show"],[["cc.Widget",["_alignFlags","_originalWidth","_originalHeight","_bottom","_top","_right","_left","node","__prefab"],-4,1,4],["cc.Node",["_name","_layer","_objFlags","__editorExtras__","_prefab","_components","_parent","_children","_lpos"],-1,4,9,1,2,5],["cc.Sprite",["_sizeMode","_type","_enabled","node","__prefab","_spriteFrame","_color"],0,1,4,6,5],["cc.Label",["_string","_actualFontSize","_fontSize","_enableWrapText","_isBold","_overflow","node","__prefab","_color"],-3,1,4,5],["cc.Button",["_transition","node","__prefab","clickEvents","_normalColor","_target","_normalSprite","_hoverSprite","_pressedSprite","_disabledSprite"],2,1,4,9,5,1,6,6,6,6],["cc.UITransform",["node","__prefab","_contentSize","_anchorPoint"],3,1,4,5,5],["cc.Layout",["_resizeMode","_layoutType","_spacingX","_spacingY","_startAxis","_paddingLeft","_paddingRight","_paddingTop","_paddingBottom","_horizontalDirection","_constraint","_constraintNum","node","__prefab"],-9,1,4],["cc.PrefabInstance",["fileId","prefabRootNode","propertyOverrides","mountedComponents"],2,1,9,9],["cc.LabelOutline",["_width","node","__prefab"],2,1,4],["cc.Prefab",["_name"],2],["cc.Node",["_name","_layer","_parent","_components","_prefab"],1,1,12,4],["cc.CompPrefabInfo",["fileId"],2],["a93723onHFJLq9yzuZv1eBF",["node","__prefab"],3,1,4],["cc.PrefabInfo",["fileId","instance","targetOverrides","root","asset","nestedPrefabInstanceRoots"],0,1,1,2],["cc.PrefabInfo",["fileId","targetOverrides","nestedPrefabInstanceRoots","root","instance","asset"],0,1,4,6],["cc.PrefabInfo",["fileId","instance","targetOverrides","nestedPrefabInstanceRoots","root","asset"],-1,1,1],["cc.TargetInfo",["localID"],2],["CCPropertyOverrideInfo",["value","propertyPath","targetInfo"],1,1],["CCPropertyOverrideInfo",["propertyPath","targetInfo","value"],2,1,8],["CCPropertyOverrideInfo",["propertyPath","targetInfo","value"],2,4,8],["b51bfKvsidNPKBbFirAFgQI",["node","__prefab","playerNameLabel"],3,1,4,1],["cc.ClickEvent",["_componentId","handler","target"],1,1],["cc.MountedComponentsInfo",["targetInfo","components"],3,4,9],["dd6ff3gNGFAzKeTlGPK1jnx",["node","__prefab","show"],3,1,4,1]],[[11,0,2],[18,0,1,2,2],[16,0,2],[5,0,1,2,1],[15,0,1,2,3,4,5,5],[17,0,1,2,3],[1,2,3,6,4,3],[14,0,1,2,3,4,5,4],[7,0,1,2,2],[1,0,1,6,7,5,4,8,3],[19,0,1,2,2],[1,0,2,1,6,5,4,4],[2,0,3,4,6,5,2],[21,0,1,2,3],[9,0,2],[1,0,1,7,5,4,8,3],[2,1,0,3,4,5,3],[4,0,1,2,3,4,5,6,7,8,9,2],[8,1,2,1],[8,0,1,2,2],[3,0,1,2,4,6,7,5],[1,0,1,7,5,4,3],[1,0,1,6,5,4,3],[10,0,1,2,3,4,3],[2,1,0,3,4,6,5,3],[13,0,1,2,3,4,5,4],[7,0,1,3,2,2],[0,0,1,2,7,8,4],[0,0,1,7,8,3],[4,0,1,2,4,5,6,7,8,9,2],[22,0,1,1],[3,0,1,2,3,4,6,7,6],[3,0,1,2,5,3,6,7,8,6],[5,0,1,2,3,1],[2,0,3,4,5,2],[2,2,0,3,4,5,3],[6,0,1,4,5,6,7,8,2,3,9,10,11,12,13,13],[6,0,1,2,3,12,13,5],[12,0,1,1],[0,0,3,1,2,7,8,5],[0,0,5,3,7,8,4],[0,0,4,3,1,2,7,8,6],[0,0,6,4,7,8,4],[0,0,4,7,8,3],[20,0,1,2,1],[4,1,2,3,1],[3,0,1,2,5,3,4,6,7,7],[23,0,1,2,1]],[[[[14,"阵法"],[21,"阵法",33554432,[-15,-16,-17,-18,-19,-20,-21,-22,-23],[[3,-11,[0,"81ZDu24OxF3bUTmGJ/CxwB"],[5,400,400]],[12,0,-12,[0,"50yojl3gJK2IeywYBvtcyb"],[4,4292598747],9],[36,1,3,1,20,20,20,20,30,30,1,1,3,-13,[0,"eeTkntCrtDnqlmLBI6ArzH"]],[38,-14,[0,"a79c+1+OJK4o3xwVYpAprQ"]]],[25,"a8T0NC/KpNY7MMbRkPRuwY",null,null,-10,0,[-1,-2,-3,-4,-5,-6,-7,-8,-9]]],[2,["f15AW5eMVEKKgrwPWb2eZo"]],[2,["f15AW5eMVEKKgrwPWb2eZo"]],[2,["f15AW5eMVEKKgrwPWb2eZo"]],[2,["f15AW5eMVEKKgrwPWb2eZo"]],[2,["f15AW5eMVEKKgrwPWb2eZo"]],[2,["f15AW5eMVEKKgrwPWb2eZo"]],[2,["f15AW5eMVEKKgrwPWb2eZo"]],[2,["f15AW5eMVEKKgrwPWb2eZo"]],[2,["f15AW5eMVEKKgrwPWb2eZo"]],[6,0,{},1,[7,"f15AW5eMVEKKgrwPWb2eZo",null,null,-24,[8,"d7hLqfWDtDspikDq41mSFX",1,[[5,"阵法节点",["_name"],2],[1,["_lpos"],2,[1,130,130,0]],[1,["_lrot"],2,[3,0,0,0,1]],[1,["_euler"],2,[1,0,0,0]]]],0]],[6,0,{},1,[7,"f15AW5eMVEKKgrwPWb2eZo",null,null,-25,[8,"6ewBrcFrJFBYYugJZafNy7",1,[[5,"阵法节点-001",["_name"],3],[1,["_lpos"],3,[1,130,0,0]],[1,["_lrot"],3,[3,0,0,0,1]],[1,["_euler"],3,[1,0,0,0]]]],1]],[6,0,{},1,[7,"f15AW5eMVEKKgrwPWb2eZo",null,null,-26,[8,"61tQUJqx5Klr6pxCqCQSls",1,[[5,"阵法节点-002",["_name"],4],[1,["_lpos"],4,[1,130,-130,0]],[1,["_lrot"],4,[3,0,0,0,1]],[1,["_euler"],4,[1,0,0,0]]]],2]],[6,0,{},1,[7,"f15AW5eMVEKKgrwPWb2eZo",null,null,-27,[8,"f2kp/z/dhMj5o+JmHop9ZN",1,[[5,"阵法节点-003",["_name"],5],[1,["_lpos"],5,[1,0,130,0]],[1,["_lrot"],5,[3,0,0,0,1]],[1,["_euler"],5,[1,0,0,0]]]],3]],[6,0,{},1,[7,"f15AW5eMVEKKgrwPWb2eZo",null,null,-28,[8,"66JvfNPelJuY7AeQ9wjNKV",1,[[5,"阵法节点-004",["_name"],6],[1,["_lpos"],6,[1,0,0,0]],[1,["_lrot"],6,[3,0,0,0,1]],[1,["_euler"],6,[1,0,0,0]]]],4]],[6,0,{},1,[7,"f15AW5eMVEKKgrwPWb2eZo",null,null,-29,[8,"6511WgRLVGprt0S7ZtYfPt",1,[[5,"阵法节点-005",["_name"],7],[1,["_lpos"],7,[1,0,-130,0]],[1,["_lrot"],7,[3,0,0,0,1]],[1,["_euler"],7,[1,0,0,0]]]],5]],[6,0,{},1,[7,"f15AW5eMVEKKgrwPWb2eZo",null,null,-30,[8,"a9fCbWcVVGGY8wvdmcURSW",1,[[5,"阵法节点-006",["_name"],8],[1,["_lpos"],8,[1,-130,130,0]],[1,["_lrot"],8,[3,0,0,0,1]],[1,["_euler"],8,[1,0,0,0]]]],6]],[6,0,{},1,[7,"f15AW5eMVEKKgrwPWb2eZo",null,null,-31,[8,"4bab5DEsRBt5bJm03UpFl/",1,[[5,"阵法节点-007",["_name"],9],[1,["_lpos"],9,[1,-130,0,0]],[1,["_lrot"],9,[3,0,0,0,1]],[1,["_euler"],9,[1,0,0,0]]]],7]],[6,0,{},1,[7,"f15AW5eMVEKKgrwPWb2eZo",null,null,-32,[8,"36LFYxwwlC6K/oB3DXKe/M",1,[[5,"阵法节点-008",["_name"],10],[1,["_lpos"],10,[1,-130,-130,0]],[1,["_lrot"],10,[3,0,0,0,1]],[1,["_euler"],10,[1,0,0,0]]]],8]]],0,[0,-1,19,0,-2,18,0,-3,17,0,-4,16,0,-5,15,0,-6,14,0,-7,13,0,-8,12,0,-9,11,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-1,11,0,-2,12,0,-3,13,0,-4,14,0,-5,15,0,-6,16,0,-7,17,0,-8,18,0,-9,19,0,1,11,0,1,12,0,1,13,0,1,14,0,1,15,0,1,16,0,1,17,0,1,18,0,1,19,0,10,1,32],[0,0,0,0,0,0,0,0,0,0],[2,2,2,2,2,2,2,2,2,4],[1,1,1,1,1,1,1,1,1,2]],[[[14,"MainView"],[21,"MainView",33554432,[-10,-11,-12,-13,-14,-15],[[3,-6,[0,"1dgJxmIH5HIpXD6y0/xMwI"],[5,720,1280]],[27,45,100,100,-7,[0,"582zBz6m5DKqmkTkiS/LE0"]],[44,-9,[0,"76LGqkFbVGmYN33BpKxb+5"],-8]],[25,"08xLpDDa9NlK3pgR7XiOqb",null,null,-5,0,[-1,-2,-3,-4]]],[9,"游戏区域",33554432,1,[-18,-19,-20,-21],[[33,-16,[0,"2eI6VJ1M5H64U8vUZ7lX2A"],[5,720,580],[0,0.5,0]],[39,45,700,100,100,-17,[0,"1096TwrPFP14XtPNWaGklG"]]],[4,"29F6ackXlKUqq2ybGz+eqX",null,null,null,1,0],[1,0,60,0]],[9,"PVP按钮",33554432,2,[-27],[[3,-22,[0,"ecFczOv0FM97qHeOR+X8kn"],[5,80,80]],[16,1,0,-23,[0,"eeSBMNXq9HaYpub7Iwl3Nn"],4],[17,3,-25,[0,"f4saH8hdtMZKJNlDuyPFHq"],[[13,"b51bfKvsidNPKBbFirAFgQI","onOpenPVP",1]],[4,4292269782],-24,5,6,7,8],[40,36,20,20,-26,[0,"e4BopbkvxCXpYmHoAmEbkE"]]],[4,"d6WReVOwhDn57qyy7GvYbo",null,null,null,1,0],[1,300,60,0]],[9,"控制区域",33554432,1,[-31,-32,-33],[[3,-28,[0,"97jRvdTqBGm4gln85RWk4S"],[5,720,600]],[12,0,-29,[0,"25QnSNv7VP14czhZ5MltEA"],[4,4293059298],22],[41,44,1080,100,100,100,-30,[0,"eaPARM7blDbZ2uSHiinyXS"]]],[4,"54h7JjlKpP0oEThupO7+XD",null,null,null,1,0],[1,0,-240,0]],[15,"Button",33554432,[-38],[[3,-34,[0,"cbInxYzzJAuJJWzwazENT5"],[5,150,130]],[24,1,0,-35,[0,"5a1GW5k0RCqYlHEokgda4I"],[4,4293651435],12],[29,3,-37,[0,"4fEzfFuwpJA5y8tCAlhH7K"],[4,4292269782],-36,13,14,15,16]],[4,"8fbPD9UCZLfa09RiHWZKx7",null,null,null,1,0],[1,0,105,0]],[15,"Button-001",33554432,[-43],[[3,-39,[0,"22xAwxqfpJRZyNxwTX+JGd"],[5,150,130]],[24,1,0,-40,[0,"c1ozMiI/dLcZaNkv4HNqRa"],[4,4293651435],17],[29,3,-42,[0,"691d24ldNIzrFp+X5irgGN"],[4,4292269782],-41,18,19,20,21]],[4,"37SPlAjtJMpoLl1DmX+o28",null,null,null,1,0],[1,0,-105,0]],[9,"聊天框",33554432,1,[-48],[[3,-44,[0,"de48INVM5Dn703wxCA7KF8"],[5,720,100]],[12,0,-45,[0,"47iddbWj9HxZT0NQ/GsZJP"],[4,4290493371],23],[28,44,100,-46,[0,"9awU3hjhVK9qjW9bMJin6E"]],[45,-47,[0,"8aKEoy6fBFXIDxKkk6Hws8"],[[13,"b51bfKvsidNPKBbFirAFgQI","onOpenChat",1]]]],[4,"0dwM6BvXxAIb2ADj9Thh37",null,null,null,1,0],[1,0,-590,0]],[9,"Button",33554432,1,[-53],[[3,-49,[0,"51h2LQ2vNMV4JpEi7g01aZ"],[5,100,40]],[16,1,0,-50,[0,"d8rnA//K9Fn4rzLgVZZy5b"],24],[17,2,-52,[0,"107xV2OVpNTor7W8en2vF7"],[[13,"b51bfKvsidNPKBbFirAFgQI","onOpenDemo",1]],[4,4292269782],-51,25,26,27,28]],[4,"83fgzFEQJO+6c4/L3Y/adf",null,null,null,1,0],[1,279.236,587.407,0]],[9,"Button-001",33554432,1,[-58],[[3,-54,[0,"76rH/uJ59PB6JH7eExn9T+"],[5,100,40]],[16,1,0,-55,[0,"11YtsicrhDoaONMq1d7iEv"],29],[17,2,-57,[0,"065+/ndM9NBJumAyXAxxgE"],[[13,"b51bfKvsidNPKBbFirAFgQI","onOpenOnHook",1]],[4,4292269782],-56,30,31,32,33]],[4,"57lU3jCIBFmYBvRXLhkAzw",null,null,null,1,0],[1,165.073,587.407,0]],[9,"玩家信息",33554432,2,[-62],[[3,-59,[0,"e9rBw2jx1IiJEwcWsaXui9"],[5,200,80]],[12,0,-60,[0,"7cJYuG4m5LGJXk3KiyrGeb"],[4,4293651435],2],[42,9,20,20,-61,[0,"9cDjiZptREL6KKSKrTqdhL"]]],[4,"fdayH6FM5D7KxxkfPBzFJ/",null,null,null,1,0],[1,-240,520,0]],[9,"按钮列表",33554432,4,[5,6],[[3,-63,[0,"7eY8+eNupGvaYUO3m7tc0f"],[5,150,340]],[37,1,2,150,80,-64,[0,"6fGpo4oqZPE4N+jK5Q4P/r"]]],[4,"a7k4jJN+9E4o9tingaVO93",null,null,null,1,0],[1,249.748,-60.524,0]],[22,"bg",33554432,1,[[3,-65,[0,"8ftYzn1eBL/KI9lfvctDGE"],[5,720,1280]],[34,0,-66,[0,"72OG0M5ThEtaIaziixD4R1"],0],[27,45,720,720,-67,[0,"8ejneRsd9FXLr6cGBBG0Rk"]]],[4,"85bQbPz7FPkaRPL/kSAwAE",null,null,null,1,0]],[6,0,{},2,[7,"64PJYFWgBDZrEsaiYwZxmh",null,null,-75,[26,"2fBi1gb7xM5Z+0qX8xffGY",1,[[30,[2,["64PJYFWgBDZrEsaiYwZxmh"]],[[28,44,720,-74,[0,"c9P/N0EtBKRqjVfxNVfhKv"]]]]],[[5,"游戏渲染",["_name"],-68],[1,["_lpos"],-69,[1,-360,0,0]],[1,["_lrot"],-70,[3,0,0,0,1]],[1,["_euler"],-71,[1,0,0,0]],[1,["_anchorPoint"],-72,[0,0,0]],[1,["_contentSize"],-73,[5,720,1280]]]],1]],[2,["64PJYFWgBDZrEsaiYwZxmh"]],[23,"Label",33554432,10,[[[3,-76,[0,"472EPuIi5BQbqoiwp5FAVj"],[5,124,54.4]],-77,[18,-78,[0,"39Qp34Lr5Pwq9oR6o59B5C"]]],4,1,4],[4,"daL9kFUXJBAJkj9cOemdUw",null,null,null,1,0]],[6,0,{},2,[7,"7ehoARooRAIIfX4ttdeppc",null,null,-84,[26,"a7ViMHX7hGBJBmNxJ40Qav",1,[[30,[2,["7ehoARooRAIIfX4ttdeppc"]],[[43,1,29.331999999999994,-83,[0,"cbOG5wQ59PyYh4dBFBGh6g"]]]]],[[5,"玩家资源显示",["_name"],-79],[1,["_lpos"],-80,[1,-46.486,520.668,0]],[1,["_lrot"],-81,[3,0,0,0,1]],[1,["_euler"],-82,[1,0,0,0]]]],3]],[2,["7ehoARooRAIIfX4ttdeppc"]],[11,"Label",512,33554432,3,[[3,-85,[0,"5543Hxc/VN3LDXrSYEK3p2"],[5,100,40]],[46,"PVP",26,26,1,false,true,-86,[0,"b2aC/W7JRHeoaR90TqFhv6"]],[18,-87,[0,"33q6Iur4RNkbwMGThbg0DZ"]]],[4,"92mB3ybUhM+LOw4apqnvwy",null,null,null,1,0]],[2,["cfqtEvOKpHO7NzoHh8DAIM"]],[9,"阵法",33554432,4,[-90],[[3,-88,[0,"f38ZdtRVhFn4IrIzERMCcn"],[5,500,420]],[35,false,0,-89,[0,"09z6IhKCZOJ4hWP69rWURe"],11]],[4,"ccC3h/uypP1JlxpUTEX8xP",null,null,null,1,0],[1,-94.905,-57.565,0]],[2,["a8T0NC/KpNY7MMbRkPRuwY"]],[11,"Label",512,33554432,5,[[3,-91,[0,"2bJelfNNVF7L2tnm/gUcvw"],[5,78,56.4]],[31,"挂机",36,36,false,true,-92,[0,"8ce9VteLtJ0r6c9R0M1lvI"]],[19,3,-93,[0,"a2eUFYIbFHras3sGgvs40R"]]],[4,"1eAxRRWPxHXoMaudMc/8fz",null,null,null,1,0]],[11,"Label",512,33554432,6,[[3,-94,[0,"93BXhB6UBLtIACZ3ATBEBD"],[5,78,56.4]],[31,"地图",36,36,false,true,-95,[0,"11PlyEvh1Md444c8BTAfi0"]],[19,3,-96,[0,"a8faO0x2ZLdKjer1OaKGLk"]]],[4,"85+AZLUnVJuKaWjuhFpsB9",null,null,null,1,0]],[22,"Label",33554432,7,[[3,-97,[0,"32kvyx305MDKXeBAXCZGln"],[5,294,56.4]],[20,"点击打开世界聊天",36,36,true,-98,[0,"6fc1n9HEhMSLtbARgitkMd"]],[19,3,-99,[0,"28jUxUo9FGY4ZjAzw5ajB5"]]],[4,"e3/R6Ce+dNZ7KN+IAVAxhZ",null,null,null,1,0]],[6,0,{},4,[7,"cfqtEvOKpHO7NzoHh8DAIM",null,null,-103,[8,"62h8g16k1FNKBdg5I1Dmk2",1,[[5,"野怪列表",["_name"],19],[1,["_lpos"],19,[1,0,240,0]],[1,["_lrot"],19,[3,0,0,0,1]],[1,["_euler"],19,[1,0,0,0]],[5,0,["_right"],-100],[10,["_contentSize"],[2,["0ccMb6aEJJmKtQPc0NQqC7"]],[5,720,120]],[10,["_lpos"],[2,["4chdzdAAZG2ZnA2dvWbz+Q"]],[1,-300,0,0]],[10,["_contentSize"],[2,["eeHVlqM0NN2bU8pdiFGOQ4"]],[5,480,120]],[10,["_contentSize"],[2,["8aRE0q34tED5M48dqLGa9P"]],[5,480,120]],[10,["_lpos"],[2,["69mnnKIwlAhZMU3bytgVs0"]],[1,-240,0,0]],[10,["_lpos"],[2,["510efzkfVOYJnng80lj0PW"]],[1,300,0,0]],[5,41,["_alignFlags"],-101],[5,0,["_top"],-102]]],9]],[2,["41TovpTmVCz4oCICCj50W/"]],[6,0,{},20,[7,"a8T0NC/KpNY7MMbRkPRuwY",null,null,-104,[8,"b5oOS+qEhH3IdM0aj6XS+/",1,[[5,"阵法",["_name"],21],[1,["_lpos"],21,[1,0,0,0]],[1,["_lrot"],21,[3,0,0,0,1]],[1,["_euler"],21,[1,0,0,0]]]],10]],[11,"Label",512,33554432,8,[[3,-105,[0,"295FJgqrlID7+EM3GmajI1"],[5,100,40]],[32,"button",20,20,1,false,-106,[0,"d78KXR8/BE9IlqhJatmbX2"],[4,4278190080]]],[4,"786qjkRnhJRpQ7Q9gAl6IV",null,null,null,1,0]],[11,"Label",512,33554432,9,[[3,-107,[0,"edlBw6qthJVaj/Jw5F1VlJ"],[5,100,40]],[32,"button",20,20,1,false,-108,[0,"c2ch8VomJJI56sruDdgnhr"],[4,4278190080]]],[4,"df48QMeDhBr65Sk2KF9u8/",null,null,null,1,0]],[2,["61k/3xmdtHe6Srw0droR6G"]],[20,"玩家名称",30,30,true,15,[0,"ffPWIt2utPFK9mn7wky8+L"]]],0,[0,-1,27,0,-2,25,0,-3,16,0,-4,13,0,1,1,0,0,1,0,0,1,0,12,31,0,0,1,0,-1,12,0,-2,2,0,-3,4,0,-4,7,0,-5,8,0,-6,9,0,0,2,0,0,2,0,-1,13,0,-2,10,0,-3,16,0,-4,3,0,0,3,0,0,3,0,5,3,0,0,3,0,0,3,0,-1,18,0,0,4,0,0,4,0,0,4,0,-1,25,0,-2,20,0,-3,11,0,0,5,0,0,5,0,5,5,0,0,5,0,-1,22,0,0,6,0,0,6,0,5,6,0,0,6,0,-1,23,0,0,7,0,0,7,0,0,7,0,0,7,0,-1,24,0,0,8,0,0,8,0,5,8,0,0,8,0,-1,28,0,0,9,0,0,9,0,5,9,0,0,9,0,-1,29,0,0,10,0,0,10,0,0,10,0,-1,15,0,0,11,0,0,11,0,0,12,0,0,12,0,0,12,0,3,14,0,3,14,0,3,14,0,3,14,0,3,30,0,3,30,0,0,13,0,1,13,0,0,15,0,-2,31,0,0,15,0,3,17,0,3,17,0,3,17,0,3,17,0,0,16,0,1,16,0,0,18,0,0,18,0,0,18,0,0,20,0,0,20,0,-1,27,0,0,22,0,0,22,0,0,22,0,0,23,0,0,23,0,0,23,0,0,24,0,0,24,0,0,24,0,3,26,0,3,26,0,3,26,0,1,25,0,1,27,0,0,28,0,0,28,0,0,29,0,0,29,0,10,1,5,11,11,6,11,11,108],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[4,2,4,2,4,6,7,8,9,2,2,4,4,6,7,8,9,4,6,7,8,9,4,4,4,6,7,8,9,4,6,7,8,9],[2,5,2,6,0,0,0,3,4,7,8,2,0,0,0,3,4,0,0,0,3,4,2,2,0,0,0,3,4,0,0,0,3,4]],[[[14,"玩家资源显示"],[15,"玩家资源显示",33554432,[-6],[[3,-2,[0,"31Y91EbyVPvqbf1yXWW3mP"],[5,120,60]],[12,0,-3,[0,"829ZRhv3JLKq0wDBYUk3xR"],[4,4293651435],0],[47,-5,[0,"22Ciflh0NO/ZUfdrKoAktL"],-4]],[4,"7ehoARooRAIIfX4ttdeppc",null,null,null,-1,0],[1,-46.486,520.668,0]],[23,"Label",33554432,1,[[[3,-7,[0,"7aYBKLDBBBb6gSDGMjRc7V"],[5,17.34765625,54.4]],-8,[18,-9,[0,"3eNlsJF9tNXZmkwP9l76/E"]]],4,1,4],[4,"e0KCY2i/BDFrz3/8Kl7xXv",null,null,null,1,0]],[20,"0",24,24,true,2,[0,"ca5SxOX1lI6KJW85+4yzjd"]]],0,[0,1,1,0,0,1,0,0,1,0,13,3,0,0,1,0,-1,2,0,0,2,0,-2,3,0,0,2,0,10,1,9],[0],[4],[2]]]] diff --git a/headless/static/remote/resources/import/0c/0ccb44c9-b7bc-4fc6-b7d2-8a4335f806a5.json b/headless/static/remote/resources/import/0c/0ccb44c9-b7bc-4fc6-b7d2-8a4335f806a5.json new file mode 100644 index 00000000..d7dab0e3 --- /dev/null +++ b/headless/static/remote/resources/import/0c/0ccb44c9-b7bc-4fc6-b7d2-8a4335f806a5.json @@ -0,0 +1 @@ +[1,0,0,[["cc.JsonAsset",["_name","json"],1]],[[0,0,1,3]],[[0,"tbgonhookglobal",[{"id":80001,"args":"100","tig":"预先生成的野外宠物数量"}]]],0,0,[],[],[]] diff --git a/headless/static/remote/resources/import/0e/0ecfcd971.json b/headless/static/remote/resources/import/0e/0ecfcd971.json new file mode 100644 index 00000000..2b0024d7 --- /dev/null +++ b/headless/static/remote/resources/import/0e/0ecfcd971.json @@ -0,0 +1 @@ +[1,["a0d1e275-5512-493e-8e15-7d2db8beb48e@f9941","de8f19b4-20e0-4020-ac9c-8c52f9ffffa2","a0d1e275-5512-493e-8e15-7d2db8beb48e"],["node","root","data","_spriteFrame","hitPrefab","_textureSource","hitLabel"],[["cc.UITransform",["node","__prefab","_contentSize","_anchorPoint"],3,1,4,5,5],"cc.RenderTexture","cc.SpriteFrame",["cc.Prefab",["_name"],2],["cc.Node",["_name","_layer","_components","_prefab","_lpos"],1,9,4,5],["cc.Node",["_name","_layer","_components","_prefab"],1,12,4],["cc.CompPrefabInfo",["fileId"],2],["cc.Sprite",["node","__prefab","_spriteFrame"],3,1,4,6],["00e93M1gwFDX4OxuD8p5I6L",["node","__prefab","hitPrefab"],3,1,4,6],["cc.PrefabInfo",["fileId","instance","targetOverrides","nestedPrefabInstanceRoots","root","asset"],-1,1,1],["fad17KCTqZBj4nGCb/xtHxi",["node","__prefab","hitLabel"],3,1,4,1],["cc.LabelOutline",["node","__prefab","_color"],3,1,4,5],["cc.Label",["_string","_actualFontSize","_fontSize","_isBold","node","__prefab"],-1,1,4]],[[6,0,2],[3,0,2],[9,0,1,2,3,4,5,5],[4,0,1,2,3,4,3],[5,0,1,2,3,3],[0,0,1,2,3,1],[0,0,1,2,1],[7,0,1,2,1],[8,0,1,2,1],[10,0,1,2,1],[11,0,1,2,1],[12,0,1,2,3,4,5,5]],[[[[1,"游戏模式渲染"],[3,"游戏模式渲染",33554432,[[5,-2,[0,"61k/3xmdtHe6Srw0droR6G"],[5,720,1280],[0,0,0]],[7,-3,[0,"eb9IOPTBFJjLwXgqVCKLbC"],0],[8,-4,[0,"a1GrhIZWJFDo/VFCx6xwRM"],1]],[2,"64PJYFWgBDZrEsaiYwZxmh",null,null,null,-1,0],[1,-360,0,0]]],0,[0,1,1,0,0,1,0,0,1,0,0,1,0,2,1,4],[0,0],[3,4],[0,1]],[[{"base":"2,2,0,0,0,0","w":720,"h":1280,"n":"WorldCamera"}],[1],0,[],[],[]],[[{"name":"","rect":{"x":0,"y":0,"width":720,"height":1280},"offset":{"x":0,"y":0},"originalSize":{"width":720,"height":1280},"rotated":false,"capInsets":[0,0,0,0],"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[2],0,[0],[5],[2]],[[[1,"受击文本"],[4,"受击文本",33554432,[[[6,-2,[0,"b186ppLiZKhpRV4S4YdSvq"],[5,51.98828125,54.4]],-3,[9,-5,[0,"ea6CTSqbJCFosx/ZPeThgW"],-4],[10,-6,[0,"efrxiMS+dIzZoddk4GEHvU"],[4,4281414102]]],4,1,4,4],[2,"10gWQ16mdFu5gvlYBIDeBU",null,null,null,-1,0]],[11,"Hit",36,36,true,1,[0,"202sLGd8RLPYo4PayL2Ddw"]]],0,[0,1,1,0,0,1,0,-2,2,0,6,2,0,0,1,0,0,1,0,2,1,6],[],[],[]]]] diff --git a/headless/static/remote/resources/import/0f/0fe160da1.json b/headless/static/remote/resources/import/0f/0fe160da1.json new file mode 100644 index 00000000..b0a11524 --- /dev/null +++ b/headless/static/remote/resources/import/0f/0fe160da1.json @@ -0,0 +1 @@ +[1,["20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941","544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941","951249e0-9f16-456d-8b85-a6ca954da16b@f9941","11bdc4b0-64a8-4eb7-a2a7-9fb9e233e977@f9941","158e7e52-3220-4cd7-9694-713e0e6e8278@f9941","11bdc4b0-64a8-4eb7-a2a7-9fb9e233e977@6c48a","8cd8e7fb-f35b-417f-b147-ecc7ef089706@6c48a","158e7e52-3220-4cd7-9694-713e0e6e8278@6c48a","c26a2ac3-057f-4de8-8c06-9ff3e1c48017@6c48a","2357c44f-3cf0-47eb-8f7a-0f303eaefe08@6c48a","179a2053-b80c-4b5d-ab83-e75934fd66d2@6c48a","7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941","a0d1e275-5512-493e-8e15-7d2db8beb48e@f9941","29e1c6dc-6549-4f30-ad94-fe92d3cead0c","14d2a9b1-50ad-4051-a96a-b1c194651259","42029fae-0ee0-48c1-b7c5-850c03664ae4","51104c05-e5db-4274-a66e-1de9ab511e4f"],["node","_spriteFrame","_target","_normalSprite","_hoverSprite","_pressedSprite","_disabledSprite","_skeletonData","_textureSource","_checkMark","root","frameText","data"],[["cc.Node",["_name","_layer","_objFlags","_components","_prefab","_parent","_children","_lpos"],0,9,4,1,2,5],["cc.Sprite",["_sizeMode","_type","node","__prefab","_spriteFrame","_color"],1,1,4,6,5],["cc.Label",["_actualFontSize","_string","_fontSize","_overflow","_enableWrapText","_isBold","node","__prefab","_color"],-3,1,4,5],"cc.SpriteFrame",["cc.Node",["_name","_layer","_active","_parent","_components","_prefab","_lpos"],0,1,12,4,5],["cc.UITransform",["node","__prefab","_contentSize","_anchorPoint"],3,1,4,5,5],["cc.Widget",["_alignFlags","_originalWidth","_originalHeight","_right","_top","node","__prefab"],-2,1,4],["sp.SkeletonData",["_name","_atlasText","textureNames","_skeletonJson","textures"],-1,3],["cc.Prefab",["_name"],2],["cc.CompPrefabInfo",["fileId"],2],["15051raQgZN6J5ICgY2OfSS",["node","__prefab","frameText"],3,1,4,1],["cc.PrefabInfo",["fileId","instance","targetOverrides","nestedPrefabInstanceRoots","root","asset"],-1,1,1],["cc.Toggle",["_isChecked","node","__prefab","_normalColor","_target","checkEvents","_checkMark","_normalSprite"],2,1,4,5,1,9,1,6],["cc.ClickEvent",["_componentId","handler","target"],1,1],["cc.Button",["_transition","node","__prefab","clickEvents","_normalColor","_target","_normalSprite","_hoverSprite","_pressedSprite","_disabledSprite"],2,1,4,9,5,1,6,6,6,6],["cc.LabelOutline",["node","__prefab","_color"],3,1,4,5],["sp.Skeleton",["defaultSkin","defaultAnimation","_preCacheMode","node","__prefab","_skeletonData"],0,1,4,6]],[[9,0,2],[11,0,1,2,3,4,5,5],[5,0,1,2,1],[0,0,1,5,6,3,4,7,3],[13,0,1,2,3],[5,0,1,2,3,1],[0,0,1,5,3,4,7,3],[0,0,2,1,5,3,4,4],[1,1,0,2,3,4,3],[14,0,1,2,3,4,5,6,7,8,9,2],[2,1,0,2,3,4,6,7,8,6],[7,0,1,2,3,4,5],[16,0,1,2,3,4,5,4],[1,2,3,4,1],[0,0,1,5,3,4,3],[4,0,2,1,3,4,5,4],[6,0,1,2,5,6,4],[1,0,2,3,2],[12,0,1,2,3,4,5,6,7,2],[2,1,0,6,7,3],[8,0,2],[0,0,1,6,3,4,3],[4,0,1,3,4,5,6,3],[6,0,3,4,5,6,4],[10,0,1,2,1],[1,0,2,3,5,4,2],[15,0,1,2,1],[2,0,5,6,7,3]],[[[{"name":"default_toggle_normal","rect":{"x":0,"y":0,"width":28,"height":28},"offset":{"x":0,"y":0},"originalSize":{"width":28,"height":28},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-14,-14,0,14,-14,0,-14,14,0,14,14,0],"indexes":[0,1,2,2,1,3],"uv":[0,28,28,28,0,0,28,0],"nuv":[0,0,1,0,0,1,1,1],"minPos":{"x":-14,"y":-14,"z":0},"maxPos":{"x":14,"y":14,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[3],0,[0],[8],[5]],[[[11,"guaiA1a","\r\nguaiA1a.png\r\nsize: 135,98\r\nformat: RGBA8888\r\nfilter: Linear,Linear\r\nrepeat: none\r\nguaiA1a/guaiA1a_head\r\n rotate: true\r\n xy: 2, 2\r\n size: 94, 102\r\n orig: 94, 102\r\n offset: 0, 0\r\n index: -1\r\nguaiA1a/guaiA1a_legL\r\n rotate: false\r\n xy: 106, 60\r\n size: 27, 36\r\n orig: 27, 36\r\n offset: 0, 0\r\n index: -1\r\nguaiA1a/guaiA1a_legR\r\n rotate: false\r\n xy: 106, 22\r\n size: 27, 36\r\n orig: 27, 37\r\n offset: 0, 1\r\n index: -1\r\n",["guaiA1a.png"],{"skeleton":{"hash":"9FGhxOOhmNvkBEgwBMn1DIuR1f4","spine":"3.8.75","x":-41.78,"y":-2.8,"width":84.6,"height":116.54,"images":"./pic/","audio":""},"bones":[{"name":"root"},{"name":"scale","parent":"root","scaleX":0.9,"scaleY":0.9},{"name":"jifei","parent":"scale","x":2.06,"y":55.39},{"name":"wood","parent":"jifei","x":-2.06,"y":-55.39},{"name":"body","parent":"wood","y":29.04},{"name":"face","parent":"body","x":20,"y":25},{"name":"legL1","parent":"wood","length":12,"rotation":-93,"x":-13,"y":27},{"name":"legL2","parent":"legL1","length":12,"x":12},{"name":"legR1","parent":"wood","length":12,"rotation":-93,"x":14,"y":27},{"name":"legR2","parent":"legR1","length":12,"x":12}],"slots":[{"name":"legR","bone":"legR1","attachment":"guaiA1a/guaiA1a_legR"},{"name":"legL","bone":"legL1","attachment":"guaiA1a/guaiA1a_legL"},{"name":"head","bone":"body","attachment":"guaiA1a/guaiA1a_head"}],"skins":[{"name":"default","attachments":{"legR":{"guaiA1a/guaiA1a_legR":{"type":"mesh","hull":28,"width":27,"height":37,"uvs":[0.73507,0.12311,0.75618,0.30797,0.68492,0.39732,0.69892,0.45658,0.69248,0.48231,0.68623,0.50726,0.67902,0.53606,0.67198,0.5642,0.67803,0.61073,0.74174,0.70965,0.92507,0.6777,1,0.77938,1,0.88721,0.86174,0.97297,0.53241,0.97297,0.27485,0.97297,0,0.97297,0,0.85024,0.01026,0.69927,0.00601,0.5887,0.005,0.56241,0.00398,0.53576,0.00301,0.51062,0.0142,0.48359,0.00982,0.3696,0,0.20322,0.22841,0,0.54085,0,0.37196,0.38192,0.33819,0.70851,0.3973,0.21246,0.27063,0.841,0.50707,0.84716,0.74774,0.81943,0.35525,0.54354,0.36075,0.4903,0.34988,0.59539,0.35235,0.57151,0.35789,0.51803],"triangles":[14,33,13,13,33,12,15,32,14,14,32,33,15,17,31,15,31,32,15,16,17,33,11,12,17,18,31,31,29,32,32,9,33,32,8,9,32,29,8,31,18,29,33,10,11,33,9,10,8,36,7,8,29,36,36,29,19,29,18,19,36,37,7,37,36,20,36,19,20,7,37,6,34,37,21,6,37,34,37,20,21,6,34,5,38,34,22,5,34,38,34,21,22,5,38,4,22,23,38,38,23,35,4,38,35,4,35,3,35,28,2,28,35,24,35,23,24,3,35,2,1,2,30,2,28,30,30,28,25,28,24,25,1,30,0,30,27,0,25,26,30,30,26,27],"vertices":[1,8,-3.85,9.77,1,1,8,2.95,10.7,1,2,8,6.35,8.95,0.98305,9,-5.65,8.95,0.01695,2,8,8.52,9.44,0.73528,9,-3.48,9.44,0.26472,2,8,9.48,9.32,0.61169,9,-2.52,9.32,0.38831,2,8,10.41,9.2,0.48135,9,-1.59,9.2,0.51865,2,8,11.49,9.06,0.3336,9,-0.51,9.06,0.6664,2,8,12.54,8.92,0.20199,9,0.54,8.92,0.79801,2,8,14.25,9.17,0.00121,9,2.25,9.17,0.99879,2,8,17.81,11.08,0.00001,9,5.81,11.08,0.99999,2,8,16.37,15.97,0.00001,9,4.37,15.97,0.99999,2,8,20.02,18.18,0.00001,9,8.02,18.18,0.99999,2,8,24.01,18.39,0,9,12.01,18.39,1,2,8,27.37,14.83,0,9,15.37,14.83,1,2,8,27.84,5.95,0,9,15.84,5.95,1,1,9,16.2,-0.99,1,1,9,16.59,-8.41,1,1,9,12.05,-8.64,1,1,9,6.46,-8.66,1,2,8,14.38,-8.99,0.21661,9,2.38,-8.99,0.78339,2,8,13.41,-9.07,0.34193,9,1.41,-9.07,0.65807,2,8,12.43,-9.14,0.48598,9,0.43,-9.14,0.51402,2,8,11.5,-9.22,0.6257,9,-0.5,-9.22,0.3743,2,8,10.49,-8.97,0.75725,9,-1.51,-8.97,0.24275,2,8,6.28,-9.31,0.99544,9,-5.72,-9.31,0.00456,1,8,0.15,-9.9,1,1,8,-7.68,-4.13,1,1,8,-8.13,4.29,1,1,8,6.22,0.48,1,1,9,6.34,0.2,1,1,8,-0.07,0.83,1,1,9,11.33,-1.36,1,1,9,11.22,5.02,1,2,8,21.86,11.46,0,9,9.86,11.46,1,2,8,12.22,0.34,0.5,9,0.22,0.34,0.5,2,8,10.24,0.39,0.77596,9,-1.76,0.39,0.22404,1,9,2.14,0.3,1,2,8,13.26,0.32,0.19085,9,1.26,0.32,0.80915,2,8,11.27,0.36,0.77596,9,-0.73,0.36,0.22404],"edges":[32,34,34,36,48,50,50,52,52,54,54,0,0,2,2,4,16,18,18,20,20,22,22,24,24,26,58,16,58,36,48,56,56,4,56,60,60,2,60,54,60,50,58,62,30,32,62,30,62,34,62,64,64,16,26,28,28,30,64,28,64,66,66,26,66,22,66,18,42,68,68,10,46,48,56,70,46,70,4,6,70,6,36,38,58,72,38,72,14,16,72,14,38,40,40,42,68,74,74,72,40,74,10,12,12,14,74,12,42,44,44,46,68,76,76,70,44,76,6,8,8,10,76,8]}},"head":{"guaiA1a/guaiA1a_head":{"type":"mesh","hull":48,"width":94,"height":102,"uvs":[0.73487,0.10514,0.84278,0.1849,0.86944,0.23232,0.89266,0.25279,0.93706,0.27441,0.94367,0.32666,0.94547,0.39319,0.96094,0.47938,1,0.56908,1,0.67895,0.96119,0.77572,0.97116,0.84484,1,0.90631,1,0.95644,0.92308,0.95644,0.82324,0.95541,0.72837,0.98815,0.62548,1,0.51262,0.99999,0.3533,1,0.22899,0.98143,0.12852,0.92453,0.05128,0.9523,0,0.94532,0,0.9194,0.0518,0.85479,0.0214,0.78012,0,0.69004,0.00546,0.57517,0,0.47522,0,0.3658,0.03982,0.32974,0.06391,0.31589,0.10223,0.28815,0.11766,0.27184,0.05345,0.22878,0.15052,0.13544,0.17304,0.02155,0.28937,0.01483,0.395,0.04524,0.44675,0.0675,0.46426,0.04975,0.48963,0.03617,0.52077,0,0.55175,0,0.60091,0,0.64246,0.00259,0.7262,0,0.44827,0.15109,0.54599,0.15395,0.26921,0.07942,0.36253,0.1294,0.60223,0.11911,0.66262,0.06472,0.61271,0.85043,0.35785,0.85043,0.15036,0.85225,0.49842,0.85043,0.24599,0.85141,0.86077,0.76083,0.84487,0.84596,0.15838,0.77398,0.73538,0.8488,0.89507,0.69384,0.2599,0.70497,0.16093,0.69568,0.3694,0.70893,0.25396,0.76856,0.36477,0.76697,0.36477,0.50784,0.34103,0.6064,0.91881,0.60164,0.2474,0.59466,0.26752,0.49391,0.15674,0.58329,0.1717,0.48018,0.65349,0.60383,0.49327,0.60515,0.79602,0.60265,0.64179,0.71451,0.77239,0.71133,0.50526,0.7161,0.50328,0.76856,0.62794,0.76697,0.7526,0.76538,0.64747,0.50429,0.50316,0.5061,0.88715,0.49989,0.85352,0.41246,0.18471,0.39656,0.28167,0.41087,0.38654,0.4204,0.5112,0.42676,0.63586,0.42676,0.75656,0.42517,0.7803,0.50148,0.29947,0.33456,0.72688,0.34251,0.61607,0.34092,0.50805,0.34059,0.39574,0.33705,0.49869,0.24288,0.49761,0.21343,0.49686,0.15251,0.49374,0.09394],"triangles":[92,98,93,85,93,94,85,94,95,86,91,92,86,92,93,86,93,85,69,91,86,78,95,87,78,87,71,76,85,95,76,95,78,77,69,86,76,77,86,76,86,85,70,73,69,70,69,77,63,78,71,64,72,70,66,70,77,64,70,66,80,76,78,80,78,63,79,77,76,79,76,80,81,77,79,66,77,81,59,80,63,84,79,80,84,80,59,68,64,66,83,81,79,83,79,84,82,66,81,82,81,83,68,66,82,62,83,84,54,82,83,53,46,47,50,37,38,44,104,42,41,42,104,40,41,104,44,42,43,53,47,0,53,52,45,53,45,46,39,50,38,51,39,40,51,50,39,36,37,50,48,40,104,51,40,48,44,45,52,49,104,44,49,103,104,48,104,103,44,52,49,52,53,0,1,52,0,102,103,49,51,35,36,51,36,50,49,52,1,2,49,1,102,49,2,101,102,2,101,2,3,34,35,51,34,51,48,102,34,48,102,48,103,101,33,34,101,34,102,100,96,33,32,33,96,31,32,96,101,100,33,98,99,101,100,101,99,3,98,101,97,98,3,4,5,97,4,97,3,88,97,5,89,31,96,30,31,89,90,89,96,6,88,5,91,96,100,90,96,91,94,97,88,92,99,98,91,100,99,92,91,99,93,98,97,93,97,94,29,30,89,87,88,6,75,29,89,73,89,90,75,89,73,7,87,6,95,94,88,95,88,87,69,90,91,73,90,69,74,28,29,75,74,29,72,75,73,74,75,72,71,87,7,71,7,8,72,73,70,71,8,9,27,28,74,63,71,9,65,74,72,27,74,65,65,72,64,67,65,64,67,64,68,65,26,27,61,65,67,10,63,9,59,63,10,61,26,65,60,84,59,60,59,10,60,10,11,62,84,60,55,67,68,57,68,82,55,68,57,54,83,62,57,82,54,58,61,67,58,67,55,61,25,26,56,61,58,56,25,61,56,23,25,23,24,25,23,56,22,21,22,56,15,62,60,13,14,60,60,12,13,15,60,14,12,60,11,58,21,56,20,21,58,16,54,62,16,62,15,18,57,54,17,18,54,19,58,55,20,58,19,19,55,57,19,57,18,16,17,54],"vertices":[1,4,22.65,85.04,1,1,4,32.8,75.71,1,1,4,35.3,70.16,1,1,4,37.49,67.76,1,1,4,41.66,65.23,1,1,4,42.28,59.12,1,1,4,42.45,51.34,1,1,4,43.9,41.25,1,1,4,47.58,30.76,1,1,4,47.58,17.9,1,1,4,43.93,6.58,1,1,4,44.87,-1.51,1,1,4,47.58,-8.7,1,1,4,47.58,-14.56,1,1,4,40.35,-14.56,1,2,4,30.96,-14.44,0.85,5,10.96,-39.44,0.15,2,4,22.04,-18.27,0.95,5,2.04,-43.27,0.05,2,4,12.37,-19.66,0.8,5,-7.63,-44.66,0.2,2,4,1.76,-19.66,0.9,5,-18.24,-44.66,0.1,2,4,-13.21,-19.66,0.85,5,-33.21,-44.66,0.15,2,4,-24.9,-17.49,0.95,5,-44.9,-42.49,0.05,1,4,-34.34,-10.83,1,1,4,-41.6,-14.08,1,1,4,-46.42,-13.26,1,1,4,-46.42,-10.23,1,1,4,-41.55,-2.67,1,1,4,-44.41,6.07,1,1,4,-46.42,16.61,1,1,4,-45.91,30.05,1,1,4,-46.42,41.74,1,1,4,-46.42,54.54,1,1,4,-42.68,58.76,1,1,4,-40.42,60.38,1,1,4,-36.81,63.63,1,1,4,-35.36,65.53,1,1,4,-41.4,70.57,1,1,4,-32.28,81.49,1,1,4,-30.16,94.82,1,1,4,-19.22,95.6,1,1,4,-9.29,92.05,1,1,4,-4.43,89.44,1,1,4,-2.78,91.52,1,1,4,-0.4,93.11,1,1,4,2.53,97.34,1,1,4,5.44,97.34,1,1,4,10.06,97.34,1,1,4,13.97,97.04,1,1,4,21.84,97.34,1,1,4,-4.29,79.66,1,1,4,4.9,79.33,1,1,4,-21.12,88.05,1,1,4,-12.35,82.2,1,1,4,10.19,83.4,1,1,4,15.86,89.77,1,2,4,11.17,-2.16,0.65,5,-8.83,-27.16,0.35,2,4,-12.79,-2.16,0.7,5,-32.79,-27.16,0.3,2,4,-32.29,-2.37,0.95,5,-52.29,-27.37,0.05,2,4,0.43,-2.16,0.65,5,-19.57,-27.16,0.35,2,4,-23.3,-2.28,0.85,5,-43.3,-27.28,0.15,2,4,34.49,8.32,0.65,5,14.49,-16.68,0.35,2,4,32.99,-1.64,0.85,5,12.99,-26.64,0.15,2,4,-31.54,6.78,0.85,5,-51.54,-18.22,0.15,2,4,22.7,-1.97,0.65,5,2.7,-26.97,0.35,2,4,37.71,16.16,0.6,5,17.71,-8.84,0.4,2,4,-21.99,14.86,0.55,5,-41.99,-10.14,0.45,2,4,-31.3,15.94,0.8,5,-51.3,-9.06,0.2,2,4,-11.7,14.39,0.35,5,-31.7,-10.61,0.65,2,4,-22.55,7.42,0.7,5,-42.55,-17.58,0.3,2,4,-12.13,7.6,0.55,5,-32.13,-17.4,0.45,2,4,-12.13,37.92,0.45,5,-32.13,12.92,0.55,2,4,-14.37,26.39,0.35,5,-34.37,1.39,0.65,2,4,39.95,26.95,0.6,5,19.95,1.95,0.4,2,4,-23.17,27.76,0.55,5,-43.17,2.76,0.45,2,4,-21.28,39.55,0.65,5,-41.28,14.55,0.35,2,4,-31.69,29.1,0.8,5,-51.69,4.1,0.2,2,4,-30.28,41.16,0.82,5,-50.28,16.16,0.18,1,5,-5,1.69,1,2,4,-0.06,26.54,0.1,5,-20.06,1.54,0.9,2,4,28.4,26.83,0.05,5,8.4,1.83,0.95,1,5,-6.09,-11.26,1,2,4,26.18,14.11,0.05,5,6.18,-10.89,0.95,2,4,1.07,13.56,0.1,5,-18.93,-11.44,0.9,2,4,0.89,7.42,0.35,5,-19.11,-17.58,0.65,2,4,12.6,7.6,0.3,5,-7.4,-17.4,0.7,2,4,24.32,7.79,0.35,5,4.32,-17.21,0.65,2,4,14.44,38.34,0.15,5,-5.56,13.34,0.85,2,4,0.87,38.13,0.15,5,-19.13,13.13,0.85,2,4,36.97,38.85,0.7,5,16.97,13.85,0.3,2,4,33.81,49.08,0.85,5,13.81,24.08,0.15,2,4,-29.06,50.94,0.9,5,-49.06,25.94,0.1,2,4,-19.95,49.27,0.8,5,-39.95,24.27,0.2,2,4,-10.09,48.15,0.7,5,-30.09,23.15,0.3,2,4,1.63,47.41,0.4,5,-18.37,22.41,0.6,2,4,13.35,47.41,0.35,5,-6.65,22.41,0.65,2,4,24.69,47.59,0.5,5,4.69,22.59,0.5,2,4,26.93,38.67,0.15,5,6.93,13.67,0.85,2,4,-18.27,58.2,0.9,5,-38.27,33.2,0.1,2,4,21.9,57.27,0.8,5,1.9,32.27,0.2,2,4,11.49,57.45,0.7,5,-8.51,32.45,0.3,2,4,1.33,57.49,0.7,5,-18.67,32.49,0.3,2,4,-9.22,57.9,0.8,5,-29.22,32.9,0.2,2,4,0.45,68.92,0.9,5,-19.55,43.92,0.1,2,4,0.35,72.37,0.95,5,-19.65,47.37,0.05,1,4,0.28,79.5,1,1,4,-0.01,86.35,1],"edges":[48,50,50,52,52,54,54,56,56,58,58,60,60,62,62,64,64,66,66,68,68,96,96,80,80,82,86,88,88,98,98,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,76,74,76,78,78,80,74,72,72,70,70,68,94,0,0,2,2,4,94,92,92,90,90,88,36,34,32,34,30,32,30,28,24,26,28,26,36,38,40,38,42,40,46,48,46,44,44,42,74,100,100,102,102,96,102,70,100,72,100,76,102,78,98,104,104,106,106,94,106,0,106,92,90,104,104,2,34,108,38,110,42,112,50,112,108,114,114,110,36,114,110,116,116,112,40,116,46,112,118,20,120,30,120,22,120,118,120,26,52,122,112,122,108,124,124,32,124,120,18,126,126,118,54,130,130,128,130,122,132,128,122,134,134,136,136,110,136,132,128,134,134,116,142,126,142,16,138,140,140,132,144,140,128,144,146,138,144,146,56,148,148,144,130,148,58,150,150,146,148,150,140,154,154,152,142,156,156,152,152,158,156,160,160,126,160,158,158,162,162,154,162,132,136,164,164,166,166,168,168,118,168,124,168,160,158,166,166,108,162,164,164,114,152,170,138,172,172,170,154,172,142,174,174,14,174,176,176,10,176,12,150,178,178,62,178,60,178,180,180,146,180,182,182,138,182,184,184,172,184,186,186,170,186,188,188,176,170,190,190,188,190,156,190,174,62,192,192,64,192,180,188,194,194,10,194,8,194,196,196,186,196,198,198,184,198,200,200,182,200,192,200,66,196,6,6,202,202,66,198,202,4,204,204,68,202,204,96,206,206,98,204,206,80,208,208,88,206,208,82,84,84,86,208,84]}},"legL":{"guaiA1a/guaiA1a_legL":{"type":"mesh","hull":28,"width":27,"height":36,"uvs":[0.73507,0.12653,0.75618,0.31653,0.67678,0.40225,0.6767,0.46383,0.68507,0.50941,0.6864,0.54987,0.65824,0.57453,0.67836,0.59481,0.68474,0.63646,0.77186,0.67189,0.92507,0.69653,1,0.80103,1,0.91186,0.86174,1,0.53241,1,0.27485,1,0,1,0,0.87386,0.00001,0.71138,0.00803,0.58798,0.02484,0.57803,0.02381,0.55064,0.02285,0.5248,0.02181,0.49703,0.00673,0.37986,0,0.20886,0.22841,0,0.54085,0,0.37196,0.39253,0.33819,0.72819,0.3973,0.21836,0.27063,0.86436,0.50707,0.87069,0.74774,0.84219,0.35525,0.55864,0.36075,0.50392,0.34988,0.61193,0.35235,0.58739,0.35789,0.53242],"triangles":[14,33,13,13,33,12,15,32,14,14,32,33,15,17,31,15,31,32,15,16,17,33,11,12,17,18,31,31,29,32,32,8,33,32,29,8,31,18,29,33,10,11,33,9,10,33,8,9,8,36,7,8,29,36,36,29,19,29,18,19,36,6,7,36,37,6,19,20,36,36,20,37,37,34,6,34,37,21,37,20,21,6,34,5,34,38,5,38,34,22,34,21,22,38,4,5,4,35,3,4,38,35,35,38,23,38,22,23,35,28,3,35,23,28,23,24,28,3,28,2,1,2,30,2,28,30,30,28,25,28,24,25,1,30,0,30,27,0,25,26,30,30,26,27],"vertices":[2,6,-1.8,8.87,0.99998,7,-13.8,8.87,0.00002,1,6,5,9.8,1,2,6,8.19,7.82,0.94968,7,-3.81,7.82,0.05032,2,6,10.41,7.94,0.45482,7,-1.59,7.94,0.54518,2,6,12.03,8.25,0.30769,7,0.03,8.25,0.69231,2,6,13.49,8.36,0.1872,7,1.49,8.36,0.8128,2,6,14.41,7.65,0.09353,7,2.41,7.65,0.90647,2,6,15.11,8.23,0.03221,7,3.11,8.23,0.96779,1,7,4.6,8.48,1,1,7,5.75,10.89,1,1,7,6.42,15.07,1,1,7,10.07,17.29,1,1,7,14.06,17.5,1,1,7,17.42,13.94,1,1,7,17.89,5.06,1,1,7,18.25,-1.89,1,1,7,18.64,-9.3,1,1,7,14.1,-9.54,1,2,6,20.26,-9.84,0.00094,7,8.26,-9.84,0.99906,2,6,15.81,-9.86,0.10023,7,3.81,-9.86,0.89977,2,6,15.43,-9.42,0.16985,7,3.43,-9.42,0.83015,2,6,14.45,-9.5,0.25749,7,2.45,-9.5,0.74251,2,6,13.52,-9.58,0.35968,7,1.52,-9.58,0.64032,2,6,12.53,-9.66,0.48065,7,0.53,-9.66,0.51935,2,6,8.33,-10.29,0.91883,7,-3.67,-10.29,0.08117,1,6,2.2,-10.79,1,2,6,-5.64,-5.02,1,7,-17.64,-5.02,0,2,6,-6.08,3.4,1,7,-18.08,3.4,0,1,6,8.27,-0.41,1,1,7,8.39,-0.69,1,1,6,1.98,-0.06,1,1,7,13.38,-2.26,1,1,7,13.27,4.13,1,1,7,11.91,10.56,1,1,7,2.27,-0.55,1,2,6,12.29,-0.51,0.5,7,0.29,-0.51,0.5,1,7,4.19,-0.6,1,1,7,3.31,-0.58,1,2,6,13.32,-0.53,0.36981,7,1.32,-0.53,0.63019],"edges":[32,34,34,36,48,50,50,52,52,54,54,0,0,2,2,4,16,18,18,20,20,22,22,24,24,26,58,16,58,36,48,56,56,4,56,60,60,2,60,54,60,50,58,62,30,32,62,30,62,34,62,64,64,16,26,28,28,30,64,28,64,66,66,26,66,22,66,18,42,68,68,10,46,48,56,70,46,70,4,6,70,6,36,38,58,72,38,72,14,16,72,14,38,40,40,42,68,74,74,72,40,74,10,12,12,14,74,12,42,44,44,46,68,76,76,70,44,76,6,8,8,10,76,8]}}}}],"events":{"attack":{}},"animations":{"atk":{"bones":{"wood":{"translate":[{"curve":"stepped"},{"time":0.2667,"curve":0.177,"c2":0.27,"c3":0.75},{"time":0.4333,"y":30,"curve":0.12,"c2":0.2,"c3":0.75},{"time":0.5333,"y":-6},{"time":0.6,"y":3},{"time":0.6667,"y":-1},{"time":0.7333,"y":2},{"time":0.8}],"scale":[{},{"time":0.2667,"y":0.9},{"time":0.4333,"y":1.1},{"time":0.5333,"y":0.8},{"time":0.6,"y":1.05},{"time":0.6667,"y":0.95},{"time":0.7333,"y":1.01},{"time":0.8}]}},"events":[{"time":0.5,"name":"attack"}]},"jifei":{"bones":{"jifei":{"rotate":[{"angle":360},{"time":0.0333,"angle":132.65},{"time":0.1,"angle":-144.97},{"time":0.1667,"angle":-23.45},{"time":0.2,"angle":360}]}}},"std":{"bones":{"body":{"rotate":[{},{"time":0.6,"angle":363},{"time":1.2}],"translate":[{},{"time":0.6,"y":-2},{"time":1.2}]},"face":{"translate":[{},{"time":0.6,"y":-3},{"time":1.2}]}}},"std2":{"bones":{"body":{"rotate":[{},{"time":0.6,"angle":363},{"time":1.2}],"translate":[{},{"time":0.6,"y":-2},{"time":1.2}]},"face":{"translate":[{},{"time":0.6,"y":-3},{"time":1.2}]},"scale":{"scale":[{"x":0.444,"y":0.444}]}}},"walk":{"bones":{"body":{"rotate":[{},{"time":0.3,"angle":363},{"time":0.6},{"time":0.9,"angle":357},{"time":1.2}],"translate":[{},{"time":0.3,"y":-2},{"time":0.6},{"time":0.9,"y":-2},{"time":1.2}]},"face":{"translate":[{},{"time":0.3,"y":-3},{"time":0.6},{"time":0.9,"y":-3},{"time":1.2}]},"legL1":{"translate":[{"x":15},{"time":0.5,"curve":"stepped"},{"time":0.6},{"time":0.9,"x":9.64,"y":5},{"time":1.1,"x":15,"curve":"stepped"},{"time":1.2,"x":15}]},"legR1":{"translate":[{"x":-12},{"time":0.3,"x":-4.29,"y":6},{"time":0.5,"curve":"stepped"},{"time":0.6},{"time":1.1,"x":-12,"curve":"stepped"},{"time":1.2,"x":-12}]}}}}},[0]]],0,0,[0],[-1],[6]],[[{"name":"default_toggle_checkmark","rect":{"x":4,"y":5,"width":20,"height":18},"offset":{"x":0,"y":0},"originalSize":{"width":28,"height":28},"rotated":false,"capInsets":[0,0,0,0],"vertices":{"rawPosition":[-10,-9,0,10,-9,0,-10,9,0,10,9,0],"indexes":[0,1,2,2,1,3],"uv":[4,23,24,23,4,5,24,5],"nuv":[0.14285714285714285,0.17857142857142858,0.8571428571428571,0.17857142857142858,0.14285714285714285,0.8214285714285714,0.8571428571428571,0.8214285714285714],"minPos":{"x":-10,"y":-9,"z":0},"maxPos":{"x":10,"y":9,"z":0}},"packable":true,"pixelsToUnit":100,"pivot":{"x":0.5,"y":0.5},"meshType":0}],[3],0,[0],[8],[7]],[[[11,"001妙蛙种子","\r\n001妙蛙种子.png\r\nsize: 872,142\r\nformat: RGBA8888\r\nfilter: Linear,Linear\r\nrepeat: none\r\nBZ/shenti_bz\r\n rotate: true\r\n xy: 162, 58\r\n size: 82, 56\r\n orig: 82, 56\r\n offset: 0, 0\r\n index: -1\r\nBZ/tou_bz\r\n rotate: false\r\n xy: 183, 2\r\n size: 61, 54\r\n orig: 61, 55\r\n offset: 0, 0\r\n index: -1\r\nBZ/y_bianzi1_bz\r\n rotate: false\r\n xy: 733, 2\r\n size: 28, 24\r\n orig: 28, 24\r\n offset: 0, 0\r\n index: -1\r\nBZ/y_bianzi2_bz\r\n rotate: true\r\n xy: 516, 64\r\n size: 76, 17\r\n orig: 76, 17\r\n offset: 0, 0\r\n index: -1\r\nBZ/y_bianzi2_bz_g\r\n rotate: true\r\n xy: 261, 60\r\n size: 80, 21\r\n orig: 80, 21\r\n offset: 0, 0\r\n index: -1\r\nBZ/y_bianzi3_bz\r\n rotate: true\r\n xy: 220, 59\r\n size: 81, 39\r\n orig: 81, 39\r\n offset: 0, 0\r\n index: -1\r\nBZ/y_shou_bz\r\n rotate: true\r\n xy: 738, 106\r\n size: 34, 33\r\n orig: 34, 33\r\n offset: 0, 0\r\n index: -1\r\nBZ/y_yanjing_bz\r\n rotate: true\r\n xy: 836, 35\r\n size: 11, 17\r\n orig: 11, 17\r\n offset: 0, 0\r\n index: -1\r\nBZ/z_bianzi1_bz\r\n rotate: true\r\n xy: 645, 23\r\n size: 39, 22\r\n orig: 39, 22\r\n offset: 0, 0\r\n index: -1\r\nBZ/z_bianzi2_bz\r\n rotate: true\r\n xy: 30, 16\r\n size: 124, 18\r\n orig: 124, 18\r\n offset: 0, 0\r\n index: -1\r\nBZ/z_bianzi2_bz_g\r\n rotate: true\r\n xy: 2, 7\r\n size: 133, 26\r\n orig: 152, 44\r\n offset: 14, 7\r\n index: -1\r\nBZ/z_bianzi3_bz\r\n rotate: false\r\n xy: 703, 105\r\n size: 33, 35\r\n orig: 33, 35\r\n offset: 0, 0\r\n index: -1\r\nBZ/z_jiao_bz\r\n rotate: false\r\n xy: 673, 64\r\n size: 27, 32\r\n orig: 27, 32\r\n offset: 0, 0\r\n index: -1\r\nBZ/z_shou_bz\r\n rotate: false\r\n xy: 634, 97\r\n size: 27, 43\r\n orig: 27, 43\r\n offset: 0, 0\r\n index: -1\r\nBZ/z_yanjing_bz\r\n rotate: false\r\n xy: 50, 16\r\n size: 18, 20\r\n orig: 18, 20\r\n offset: 0, 0\r\n index: -1\r\nBZ/zhongzi_bz\r\n rotate: true\r\n xy: 390, 64\r\n size: 76, 71\r\n orig: 76, 71\r\n offset: 0, 0\r\n index: -1\r\nBZ/zuiba_bz\r\n rotate: true\r\n xy: 496, 11\r\n size: 51, 14\r\n orig: 51, 14\r\n offset: 0, 0\r\n index: -1\r\nTX/Energy 007 Impact Radial_00008\r\n rotate: false\r\n xy: 802, 107\r\n size: 33, 33\r\n orig: 33, 33\r\n offset: 0, 0\r\n index: -1\r\nTX/Energy 007 Impact Radial_00010\r\n rotate: false\r\n xy: 837, 107\r\n size: 33, 33\r\n orig: 33, 33\r\n offset: 0, 0\r\n index: -1\r\nTX/Energy 007 Impact Radial_00012\r\n rotate: false\r\n xy: 801, 35\r\n size: 33, 33\r\n orig: 33, 33\r\n offset: 0, 0\r\n index: -1\r\nTX/Energy 007 Impact Radial_00015\r\n rotate: false\r\n xy: 836, 72\r\n size: 33, 33\r\n orig: 33, 33\r\n offset: 0, 0\r\n index: -1\r\nTX/TX_S1_shua_0010\r\n rotate: true\r\n xy: 86, 16\r\n size: 38, 14\r\n orig: 38, 14\r\n offset: 0, 0\r\n index: -1\r\nTX/TX_S1_shua_0012\r\n rotate: false\r\n xy: 615, 2\r\n size: 38, 14\r\n orig: 38, 14\r\n offset: 0, 0\r\n index: -1\r\nTX/TX_S1_shua_0014\r\n rotate: true\r\n xy: 669, 24\r\n size: 38, 14\r\n orig: 38, 14\r\n offset: 0, 0\r\n index: -1\r\nTX/TX_S1_shua_0016\r\n rotate: true\r\n xy: 685, 24\r\n size: 38, 14\r\n orig: 38, 14\r\n offset: 0, 0\r\n index: -1\r\nTX/TX_S1_shua_0018\r\n rotate: true\r\n xy: 701, 24\r\n size: 38, 14\r\n orig: 38, 14\r\n offset: 0, 0\r\n index: -1\r\nTX/TX_S1_yan_0024\r\n rotate: true\r\n xy: 556, 64\r\n size: 28, 26\r\n orig: 28, 26\r\n offset: 0, 0\r\n index: -1\r\nTX/TX_S1_yan_0029\r\n rotate: true\r\n xy: 584, 64\r\n size: 28, 26\r\n orig: 28, 26\r\n offset: 0, 0\r\n index: -1\r\nTX/atk_guangci3_0025\r\n rotate: true\r\n xy: 743, 32\r\n size: 34, 27\r\n orig: 34, 27\r\n offset: 0, 0\r\n index: -1\r\nTX/atk_guangci3_0027\r\n rotate: false\r\n xy: 763, 3\r\n size: 34, 27\r\n orig: 34, 27\r\n offset: 0, 0\r\n index: -1\r\nTX/atk_guangci3_0028\r\n rotate: true\r\n xy: 756, 70\r\n size: 34, 27\r\n orig: 34, 27\r\n offset: 0, 0\r\n index: -1\r\nTX/atk_guangci3_0030\r\n rotate: true\r\n xy: 773, 106\r\n size: 34, 27\r\n orig: 34, 27\r\n offset: 0, 0\r\n index: -1\r\nTX/atk_guangci3_0031\r\n rotate: true\r\n xy: 772, 34\r\n size: 34, 27\r\n orig: 34, 27\r\n offset: 0, 0\r\n index: -1\r\nTX/b_lg_2\r\n rotate: false\r\n xy: 577, 8\r\n size: 34, 4\r\n orig: 34, 4\r\n offset: 0, 0\r\n index: -1\r\nTX/cao\r\n rotate: false\r\n xy: 663, 98\r\n size: 38, 42\r\n orig: 38, 42\r\n offset: 0, 0\r\n index: -1\r\nTX/chentu1\r\n rotate: true\r\n xy: 337, 63\r\n size: 77, 51\r\n orig: 77, 51\r\n offset: 0, 0\r\n index: -1\r\nTX/chentu3\r\n rotate: false\r\n xy: 418, 11\r\n size: 76, 51\r\n orig: 76, 51\r\n offset: 0, 0\r\n index: -1\r\nTX/chentu4\r\n rotate: true\r\n xy: 284, 62\r\n size: 78, 51\r\n orig: 78, 51\r\n offset: 0, 0\r\n index: -1\r\nTX/chentu5\r\n rotate: true\r\n xy: 463, 64\r\n size: 76, 51\r\n orig: 76, 51\r\n offset: 0, 0\r\n index: -1\r\nTX/daoguang_red\r\n rotate: false\r\n xy: 535, 67\r\n size: 19, 73\r\n orig: 19, 73\r\n offset: 0, 0\r\n index: -1\r\nTX/guangyun\r\n rotate: false\r\n xy: 848, 48\r\n size: 22, 22\r\n orig: 22, 22\r\n offset: 0, 0\r\n index: -1\r\nTX/hua_a2\r\n rotate: false\r\n xy: 673, 4\r\n size: 14, 18\r\n orig: 14, 18\r\n offset: 0, 0\r\n index: -1\r\nTX/hua_a3\r\n rotate: true\r\n xy: 833, 10\r\n size: 23, 13\r\n orig: 23, 13\r\n offset: 0, 0\r\n index: -1\r\nTX/hua_a4\r\n rotate: false\r\n xy: 689, 5\r\n size: 24, 17\r\n orig: 24, 17\r\n offset: 0, 0\r\n index: -1\r\nTX/hua_a5\r\n rotate: true\r\n xy: 729, 68\r\n size: 35, 25\r\n orig: 35, 25\r\n offset: 0, 0\r\n index: -1\r\nTX/hua_b\r\n rotate: false\r\n xy: 817, 8\r\n size: 14, 25\r\n orig: 14, 25\r\n offset: 0, 0\r\n index: -1\r\nTX/huiji\r\n rotate: false\r\n xy: 528, 14\r\n size: 75, 48\r\n orig: 75, 48\r\n offset: 0, 0\r\n index: -1\r\nTX/liugguang2\r\n rotate: false\r\n xy: 636, 64\r\n size: 35, 31\r\n orig: 35, 31\r\n offset: 0, 0\r\n index: -1\r\nTX/liuguang\r\n rotate: true\r\n xy: 50, 38\r\n size: 102, 24\r\n orig: 102, 26\r\n offset: 0, 0\r\n index: -1\r\nTX/liuguang3\r\n rotate: true\r\n xy: 556, 94\r\n size: 46, 29\r\n orig: 46, 29\r\n offset: 0, 0\r\n index: -1\r\nTX/shuangcdr_00010002\r\n rotate: false\r\n xy: 76, 56\r\n size: 84, 84\r\n orig: 84, 84\r\n offset: 0, 0\r\n index: -1\r\nTX/shuye\r\n rotate: false\r\n xy: 702, 66\r\n size: 25, 30\r\n orig: 25, 30\r\n offset: 0, 0\r\n index: -1\r\nTX/shuyefaguang\r\n rotate: false\r\n xy: 605, 18\r\n size: 38, 44\r\n orig: 38, 44\r\n offset: 0, 0\r\n index: -1\r\nTX/suduxian_mi\r\n rotate: false\r\n xy: 372, 4\r\n size: 21, 57\r\n orig: 21, 57\r\n offset: 0, 0\r\n index: -1\r\nTX/suduxian_su\r\n rotate: false\r\n xy: 395, 5\r\n size: 21, 57\r\n orig: 21, 57\r\n offset: 0, 0\r\n index: -1\r\nTX/xuanzhuan\r\n rotate: false\r\n xy: 587, 95\r\n size: 45, 45\r\n orig: 45, 45\r\n offset: 0, 0\r\n index: -1\r\nTX/z_bianzi2_bz_liuguang\r\n rotate: true\r\n xy: 799, 5\r\n size: 27, 16\r\n orig: 27, 16\r\n offset: 0, 0\r\n index: -1\r\nhei\r\n rotate: true\r\n xy: 2, 2\r\n size: 3, 2\r\n orig: 3, 2\r\n offset: 0, 0\r\n index: -1\r\nshenti\r\n rotate: false\r\n xy: 102, 2\r\n size: 79, 52\r\n orig: 79, 52\r\n offset: 0, 0\r\n index: -1\r\ntou\r\n rotate: false\r\n xy: 246, 5\r\n size: 61, 52\r\n orig: 61, 53\r\n offset: 0, 0\r\n index: -1\r\ny-meimao_shouji\r\n rotate: true\r\n xy: 855, 29\r\n size: 17, 14\r\n orig: 17, 14\r\n offset: 0, 0\r\n index: -1\r\ny-yanjing_shouji\r\n rotate: true\r\n xy: 813, 72\r\n size: 17, 15\r\n orig: 17, 15\r\n offset: 0, 0\r\n index: -1\r\ny_houtui\r\n rotate: false\r\n xy: 612, 64\r\n size: 22, 29\r\n orig: 22, 29\r\n offset: 0, 0\r\n index: -1\r\ny_meimao_gongji\r\n rotate: true\r\n xy: 848, 13\r\n size: 14, 17\r\n orig: 14, 17\r\n offset: 0, 0\r\n index: -1\r\ny_meimao_pingshi\r\n rotate: true\r\n xy: 81, 2\r\n size: 12, 19\r\n orig: 12, 19\r\n offset: 0, 0\r\n index: -1\r\ny_meimao_shengli\r\n rotate: true\r\n xy: 70, 16\r\n size: 20, 14\r\n orig: 20, 14\r\n offset: 0, 0\r\n index: -1\r\ny_qiantui\r\n rotate: false\r\n xy: 785, 70\r\n size: 26, 34\r\n orig: 26, 34\r\n offset: 0, 0\r\n index: -1\r\ny_yan_shengli\r\n rotate: false\r\n xy: 418, 2\r\n size: 18, 7\r\n orig: 18, 7\r\n offset: 0, 0\r\n index: -1\r\ny_yanjing_gongji\r\n rotate: false\r\n xy: 715, 5\r\n size: 16, 17\r\n orig: 16, 17\r\n offset: 0, 0\r\n index: -1\r\ny_yanjing_pingshi\r\n rotate: false\r\n xy: 655, 3\r\n size: 16, 18\r\n orig: 16, 18\r\n offset: 0, 0\r\n index: -1\r\nyinying\r\n rotate: false\r\n xy: 496, 4\r\n size: 14, 5\r\n orig: 14, 5\r\n offset: 0, 0\r\n index: -1\r\nz-meimao_shengli\r\n rotate: true\r\n xy: 457, 2\r\n size: 7, 13\r\n orig: 7, 13\r\n offset: 0, 0\r\n index: -1\r\nz-meimao_shouji\r\n rotate: true\r\n xy: 472, 2\r\n size: 7, 12\r\n orig: 7, 12\r\n offset: 0, 0\r\n index: -1\r\nz-yanjing_shouji\r\n rotate: true\r\n xy: 562, 2\r\n size: 10, 13\r\n orig: 10, 13\r\n offset: 0, 0\r\n index: -1\r\nz_houtui\r\n rotate: true\r\n xy: 813, 91\r\n size: 14, 21\r\n orig: 14, 21\r\n offset: 0, 0\r\n index: -1\r\nz_meimao_gongji\r\n rotate: true\r\n xy: 577, 2\r\n size: 4, 17\r\n orig: 4, 17\r\n offset: 0, 0\r\n index: -1\r\nz_meimao_pingshi\r\n rotate: true\r\n xy: 596, 2\r\n size: 4, 17\r\n orig: 4, 17\r\n offset: 0, 0\r\n index: -1\r\nz_qiantui\r\n rotate: false\r\n xy: 717, 28\r\n size: 24, 36\r\n orig: 24, 36\r\n offset: 0, 0\r\n index: -1\r\nz_yan_shengli\r\n rotate: false\r\n xy: 486, 2\r\n size: 8, 7\r\n orig: 8, 7\r\n offset: 0, 0\r\n index: -1\r\nz_yanjing_gongji\r\n rotate: false\r\n xy: 76, 38\r\n size: 7, 16\r\n orig: 7, 16\r\n offset: 0, 0\r\n index: -1\r\nz_yanjing_pingshi\r\n rotate: true\r\n xy: 438, 2\r\n size: 7, 17\r\n orig: 7, 17\r\n offset: 0, 0\r\n index: -1\r\nzhonzi\r\n rotate: false\r\n xy: 309, 3\r\n size: 61, 57\r\n orig: 61, 57\r\n offset: 0, 0\r\n index: -1\r\nzui_gongji\r\n rotate: false\r\n xy: 512, 2\r\n size: 48, 9\r\n orig: 48, 9\r\n offset: 0, 0\r\n index: -1\r\nzui_pingshi\r\n rotate: true\r\n xy: 512, 13\r\n size: 49, 14\r\n orig: 49, 14\r\n offset: 0, 0\r\n index: -1\r\nzui_shouji\r\n rotate: false\r\n xy: 30, 2\r\n size: 49, 12\r\n orig: 49, 12\r\n offset: 0, 0\r\n index: -1\r\n",["001妙蛙种子.png"],{"skeleton":{"hash":"XmNuQSxwxw6h4nsKbCQu0PX3r4A","spine":"3.8.75","x":-405.15,"y":-299.31,"width":643.99,"height":385.94,"images":"./images/","audio":""},"bones":[{"name":"root","x":-2.52,"y":3.77,"scaleX":0.11,"scaleY":0.11},{"name":"SHENTI_zong","parent":"root","x":0.02,"y":0.39},{"name":"SHENTI","parent":"SHENTI_zong"},{"name":"1","parent":"SHENTI","x":279.37,"y":29.25,"scaleX":2.6139,"scaleY":2.6139,"color":"ff3f00ff"},{"name":"2","parent":"SHENTI","x":322.46,"y":7.08,"scaleX":2.6139,"scaleY":2.6139,"color":"ff3f00ff"},{"name":"3","parent":"SHENTI","x":4.61,"y":7.54,"scaleX":2.6139,"scaleY":2.6139,"color":"ff3f00ff"},{"name":"4","parent":"SHENTI","x":73.64,"y":-5.39,"scaleX":2.6139,"scaleY":2.6139,"color":"ff3f00ff"},{"name":"5","parent":"SHENTI","x":-242.5,"y":14.41,"scaleX":2.6139,"scaleY":2.6139,"color":"ff3f00ff"},{"name":"6","parent":"SHENTI","x":-167.96,"y":-7.18,"scaleX":2.6139,"scaleY":2.6139,"color":"ff3f00ff"},{"name":"BZ/shenti","parent":"root","rotation":-45.31,"x":-30.47,"y":392.27},{"name":"bone18","parent":"BZ/shenti","length":167.76,"rotation":2.25,"x":13.4,"y":0.43},{"name":"bone19","parent":"bone18","length":121.67,"rotation":-19.11,"x":167.76,"y":0.72},{"name":"BZ/tou","parent":"bone19","rotation":-30.65,"x":74.2,"y":1.42},{"name":"BZ/y_bianzi3","parent":"BZ/shenti","x":-90.57,"y":-138.74},{"name":"bone31","parent":"BZ/y_bianzi3","length":27.67,"rotation":-154.54,"x":-1.87,"y":-5.53},{"name":"bone32","parent":"bone31","length":32.13,"rotation":-37.94,"x":27.67,"y":-0.07},{"name":"bone33","parent":"bone32","length":37.32,"rotation":-21.25,"x":32.13,"y":-0.01},{"name":"bone34","parent":"bone33","length":45.08,"rotation":-21.49,"x":37.32,"y":-0.01},{"name":"bone35","parent":"bone34","length":46.62,"rotation":-20.06,"x":45.08,"y":-0.05},{"name":"bone36","parent":"bone35","length":43.66,"rotation":-8.95,"x":46.62,"y":0.07},{"name":"bone37","parent":"bone36","length":46.15,"rotation":-10.27,"x":43.55,"y":-0.65},{"name":"bone38","parent":"bone37","length":43.1,"rotation":-11.14,"x":45.7,"y":0.05},{"name":"bone39","parent":"bone38","length":43.38,"rotation":-4.95,"x":43.1,"y":-0.31},{"name":"bone40","parent":"bone39","length":51.46,"rotation":-2.25,"x":42.6,"y":-0.31},{"name":"bone41","parent":"bone40","length":47.16,"rotation":-6.29,"x":51.24,"y":-0.83},{"name":"BZ/y_bianzi2","parent":"bone41","length":66.32,"rotation":-9.83,"x":38.34,"y":1.32},{"name":"bone42","parent":"BZ/y_bianzi2","length":54.61,"rotation":-8.51,"x":66.27,"y":-0.66},{"name":"bone43","parent":"bone42","length":46.11,"rotation":-8.07,"x":54.61,"y":-0.12},{"name":"bone44","parent":"bone43","length":36.8,"rotation":-0.91,"x":49.86,"y":0.65},{"name":"bone45","parent":"bone44","length":52.26,"rotation":-7.18,"x":33.5,"y":-0.35},{"name":"bone46","parent":"bone45","length":53.29,"rotation":-0.45,"x":52.26,"y":-0.08},{"name":"bone47","parent":"bone46","length":61.59,"rotation":-7.18,"x":56.35,"y":0.9},{"name":"bone48","parent":"bone47","length":73.69,"rotation":-6.79,"x":62.31,"y":0.33},{"name":"bone49","parent":"bone48","length":64.32,"rotation":-2.7,"x":73.69,"y":-0.02},{"name":"bone50","parent":"bone49","length":61.56,"rotation":-4.5,"x":60.14,"y":0.48},{"name":"bone51","parent":"bone50","length":53.64,"x":61.56,"y":-0.15},{"name":"bone52","parent":"bone51","length":45.91,"rotation":2.27,"x":53.64},{"name":"bone53","parent":"bone52","length":47.88,"rotation":0.9,"x":48.57,"y":-1.05},{"name":"bone54","parent":"bone53","length":45.47,"x":47.95,"y":-0.26},{"name":"bone55","parent":"bone54","length":45.81,"rotation":4.54,"x":48.08,"y":-0.11},{"name":"bone56","parent":"bone55","length":51.18,"rotation":5.44,"x":46.25,"y":0.6},{"name":"bone57","parent":"bone56","length":51.67,"rotation":0.45,"x":51.38,"y":-1.05},{"name":"bone58","parent":"bone57","length":57.13,"rotation":5.84,"x":51.67,"y":0.33},{"name":"bone59","parent":"bone58","length":56.24,"rotation":5.44,"x":62.62,"y":0.15},{"name":"bone60","parent":"bone59","length":73.84,"rotation":6.29,"x":59.41,"y":-0.62},{"name":"BZ/y_bianzi1","parent":"bone60","length":345.47,"rotation":-5.89,"x":77.52,"y":0.32},{"name":"BZ_HOU","parent":"root","x":698.42,"y":422.02},{"name":"BZ/y_bianzi_hou","parent":"BZ_HOU","length":66.32,"rotation":5.74,"x":299.56,"y":-215.81,"scaleX":1.434,"scaleY":1.434},{"name":"bone101","parent":"BZ/y_bianzi_hou","length":54.61,"rotation":-8.51,"x":66.27,"y":-0.66},{"name":"bone102","parent":"bone101","length":46.11,"rotation":-8.07,"x":54.61,"y":-0.12},{"name":"bone103","parent":"bone102","length":36.8,"rotation":-0.91,"x":49.86,"y":0.65},{"name":"bone104","parent":"bone103","length":52.26,"rotation":-7.18,"x":33.5,"y":-0.35},{"name":"bone105","parent":"bone104","length":53.29,"rotation":-0.45,"x":52.26,"y":-0.08},{"name":"bone106","parent":"bone105","length":61.59,"rotation":-7.18,"x":56.35,"y":0.9},{"name":"bone107","parent":"bone106","length":73.69,"rotation":-6.79,"x":62.31,"y":0.33},{"name":"bone108","parent":"bone107","length":64.32,"rotation":-2.7,"x":73.69,"y":-0.02},{"name":"bone109","parent":"bone108","length":61.56,"rotation":-4.5,"x":60.14,"y":0.48},{"name":"bone110","parent":"bone109","length":53.64,"x":61.56,"y":-0.15},{"name":"bone111","parent":"bone110","length":45.91,"rotation":2.27,"x":53.64},{"name":"bone112","parent":"bone111","length":47.88,"rotation":0.9,"x":48.57,"y":-1.05},{"name":"bone113","parent":"bone112","length":45.47,"x":47.95,"y":-0.26},{"name":"bone114","parent":"bone113","length":45.81,"rotation":4.54,"x":48.08,"y":-0.11},{"name":"bone115","parent":"bone114","length":51.18,"rotation":5.44,"x":46.25,"y":0.6},{"name":"bone116","parent":"bone115","length":51.67,"rotation":0.45,"x":51.38,"y":-1.05},{"name":"bone117","parent":"bone116","length":57.13,"rotation":5.84,"x":51.67,"y":0.33},{"name":"bone118","parent":"bone117","length":56.24,"rotation":5.44,"x":62.62,"y":0.15},{"name":"bone119","parent":"bone118","length":73.84,"rotation":6.29,"x":59.41,"y":-0.62},{"name":"BZ/y_bianzi_hou2","parent":"bone119","length":345.47,"rotation":-5.89,"x":77.52,"y":0.32},{"name":"BZ/y_shou","parent":"BZ/shenti","length":127.63,"rotation":14.57,"x":333.22,"y":108.56},{"name":"BZ/y_yanjing","parent":"BZ/tou","x":-42.56,"y":192.16},{"name":"BZ/z_bianzi3","parent":"BZ/shenti","x":88.95,"y":227.75},{"name":"bone120","parent":"BZ/z_bianzi3","length":33.72,"rotation":40.38,"x":3.54,"y":4.51},{"name":"bone121","parent":"bone120","length":52.51,"rotation":5.4,"x":33.72,"y":0.09},{"name":"bone122","parent":"bone121","length":60.68,"rotation":10.7,"x":52.5,"y":0.27},{"name":"bone123","parent":"bone122","length":49.62,"rotation":4.95,"x":62.05,"y":-0.13},{"name":"bone124","parent":"bone123","length":50.56,"rotation":5.44,"x":47.48,"y":1.72},{"name":"bone125","parent":"bone124","length":43.52,"rotation":5.84,"x":50.96,"y":-0.55},{"name":"bone126","parent":"bone125","length":54.53,"rotation":1.8,"x":43.52,"y":0.31},{"name":"bone127","parent":"bone126","length":63.26,"rotation":6.79,"x":54.23,"y":-0.42},{"name":"bone128","parent":"bone127","length":54.37,"rotation":-4.54,"x":66.18,"y":-0.98},{"name":"bone129","parent":"bone128","length":53.96,"rotation":4.5,"x":56.72,"y":-0.75},{"name":"bone130","parent":"bone129","length":54.33,"rotation":-1.82,"x":53.96,"y":0.4},{"name":"bone131","parent":"bone130","length":60.41,"rotation":-4.5,"x":53.01,"y":-0.67},{"name":"bone132","parent":"bone131","length":51.15,"rotation":-4.95,"x":58.33,"y":-0.73},{"name":"bone133","parent":"bone132","length":54.88,"rotation":0.45,"x":51.15,"y":-0.03},{"name":"bone134","parent":"bone133","length":40.63,"rotation":-1.8,"x":54.19,"y":0.66},{"name":"BZ/z_bianzi4","parent":"bone134","length":55.73,"rotation":-8.58,"x":31.24,"y":4.75},{"name":"bone135","parent":"BZ/z_bianzi4","length":55.93,"rotation":-2.25,"x":56.41,"y":-0.37},{"name":"bone136","parent":"bone135","length":45.38,"rotation":-3.6,"x":55.93,"y":-0.21},{"name":"bone137","parent":"bone136","length":60.25,"rotation":-8.07,"x":48.15,"y":-0.44},{"name":"bone138","parent":"bone137","length":55.29,"rotation":-9.39,"x":60.25,"y":-0.17},{"name":"bone139","parent":"bone138","length":56.77,"rotation":-4.05,"x":55.29,"y":-0.2},{"name":"bone140","parent":"bone139","length":58.13,"rotation":-2.7,"x":56.77,"y":-0.25},{"name":"bone141","parent":"bone140","length":47.22,"rotation":-7.68,"x":54.58,"y":0.42},{"name":"bone142","parent":"bone141","length":51.07,"rotation":-4.05,"x":50.89,"y":-0.88},{"name":"bone143","parent":"bone142","length":54.24,"rotation":-3.6,"x":51.77,"y":-0.26},{"name":"bone144","parent":"bone143","length":43.34,"rotation":-8.58,"x":64.78,"y":-1.87},{"name":"bone145","parent":"bone144","length":48.26,"rotation":-3.63,"x":57.93,"y":2.58},{"name":"bone146","parent":"bone145","length":43.49,"rotation":-2.25,"x":49.69,"y":-1.14},{"name":"BZ/z_bianzi5","parent":"bone146","length":278.86,"rotation":5.4,"x":43.04,"y":-0.4},{"name":"BZ/z_bianzi_hou","parent":"BZ_HOU","rotation":-45.31,"x":-504.46,"y":67.17},{"name":"bone147","parent":"BZ/z_bianzi_hou","length":33.72,"rotation":40.38,"x":3.54,"y":4.51},{"name":"bone148","parent":"bone147","length":52.51,"rotation":5.4,"x":33.72,"y":0.09},{"name":"bone149","parent":"bone148","length":60.68,"rotation":10.7,"x":52.5,"y":0.27},{"name":"bone150","parent":"bone149","length":49.62,"rotation":4.95,"x":62.05,"y":-0.13},{"name":"bone151","parent":"bone150","length":50.56,"rotation":5.44,"x":47.48,"y":1.72},{"name":"bone152","parent":"bone151","length":43.52,"rotation":5.84,"x":50.96,"y":-0.55},{"name":"bone153","parent":"bone152","length":54.53,"rotation":1.8,"x":43.52,"y":0.31},{"name":"bone154","parent":"bone153","length":63.26,"rotation":6.79,"x":54.23,"y":-0.42},{"name":"bone155","parent":"bone154","length":54.37,"rotation":-4.54,"x":66.18,"y":-0.98},{"name":"bone156","parent":"bone155","length":53.96,"rotation":4.5,"x":56.72,"y":-0.75},{"name":"bone157","parent":"bone156","length":54.33,"rotation":-1.82,"x":53.96,"y":0.4},{"name":"bone158","parent":"bone157","length":60.41,"rotation":-4.5,"x":53.01,"y":-0.67},{"name":"bone159","parent":"bone158","length":51.15,"rotation":-4.95,"x":58.33,"y":-0.73},{"name":"bone160","parent":"bone159","length":54.88,"rotation":0.45,"x":51.15,"y":-0.03},{"name":"bone161","parent":"bone160","length":40.63,"rotation":-1.8,"x":54.19,"y":0.66},{"name":"BZ/z_bianzi_hou2","parent":"bone161","length":345.47,"rotation":1.85,"x":31.97,"y":-0.14,"scaleX":1.434,"scaleY":1.434},{"name":"BZ/z_bianzi_hou3","parent":"BZ_HOU","rotation":-45.31,"x":-504.46,"y":67.17},{"name":"bone162","parent":"BZ/z_bianzi_hou3","length":33.72,"rotation":40.38,"x":3.54,"y":4.51},{"name":"bone163","parent":"bone162","length":52.51,"rotation":5.4,"x":33.72,"y":0.09},{"name":"bone164","parent":"bone163","length":60.68,"rotation":10.7,"x":52.5,"y":0.27},{"name":"bone165","parent":"bone164","length":49.62,"rotation":4.95,"x":62.05,"y":-0.13},{"name":"bone166","parent":"bone165","length":50.56,"rotation":5.44,"x":47.48,"y":1.72},{"name":"bone167","parent":"bone166","length":43.52,"rotation":5.84,"x":50.96,"y":-0.55},{"name":"bone168","parent":"bone167","length":54.53,"rotation":1.8,"x":43.52,"y":0.31},{"name":"bone169","parent":"bone168","length":63.26,"rotation":6.79,"x":54.23,"y":-0.42},{"name":"bone170","parent":"bone169","length":54.37,"rotation":-4.54,"x":66.18,"y":-0.98},{"name":"bone171","parent":"bone170","length":53.96,"rotation":4.5,"x":56.72,"y":-0.75},{"name":"bone172","parent":"bone171","length":54.33,"rotation":-1.82,"x":53.96,"y":0.4},{"name":"bone173","parent":"bone172","length":60.41,"rotation":-4.5,"x":53.01,"y":-0.67},{"name":"bone174","parent":"bone173","length":51.15,"rotation":-4.95,"x":58.33,"y":-0.73},{"name":"bone175","parent":"bone174","length":54.88,"rotation":0.45,"x":51.15,"y":-0.03},{"name":"bone176","parent":"bone175","length":40.63,"rotation":-1.8,"x":54.19,"y":0.66},{"name":"BZ/z_bianzi_hou4","parent":"bone176","length":345.47,"rotation":1.85,"x":31.97,"y":-0.14,"scaleX":1.434,"scaleY":1.434},{"name":"BZ/z_jiao","parent":"BZ/shenti","length":104.12,"rotation":-83.71,"x":-210.6,"y":-213.91},{"name":"BZ/z_shou","parent":"BZ/shenti","length":132.14,"rotation":-57.15,"x":44.74,"y":-227.16},{"name":"BZ/z_yanjing","parent":"BZ/tou","x":-25.11,"y":-110.92},{"name":"BZ/zhongzi","parent":"BZ/shenti","rotation":-51.44,"x":-53.51,"y":33.78},{"name":"TX","parent":"root","x":-2160.96,"y":-1968.94},{"name":"TX_huiji1","parent":"TX","x":2662.37,"y":-618.03},{"name":"TX/huiji1","parent":"TX_huiji1","length":119.68,"rotation":106.23,"x":3.04,"y":-2.29},{"name":"TX/huiji2","parent":"TX/huiji1","length":129.61,"rotation":27.86,"x":119.68},{"name":"TX/huiji3","parent":"TX/huiji2","length":120.17,"rotation":7.79,"x":129.61},{"name":"TX/huiji4","parent":"TX/huiji3","length":145.06,"rotation":11.3,"x":120.17},{"name":"TX/huiji5","parent":"TX/huiji4","length":84.07,"rotation":5.61,"x":145.06},{"name":"TX/huiji6","parent":"TX/huiji5","length":115.5,"rotation":6.95,"x":86.93,"y":0.77},{"name":"TX_SHUYE","parent":"TX","x":723.14,"y":579.34},{"name":"TX/shuye1","parent":"TX_SHUYE","length":104.78,"rotation":114.67,"x":199.61,"y":-111.59,"scaleX":0.8642,"scaleY":0.9669},{"name":"TX/shuye2","parent":"TX_SHUYE","length":104.78,"rotation":114.67,"x":199.61,"y":-111.59,"scaleX":0.8642,"scaleY":0.9669},{"name":"TX/shuye3","parent":"TX_SHUYE","length":104.78,"rotation":114.67,"x":199.61,"y":-111.59,"scaleX":0.8642,"scaleY":0.9669},{"name":"TX/shuye4","parent":"TX_SHUYE","length":104.78,"rotation":114.67,"x":199.61,"y":-111.59,"scaleX":0.8642,"scaleY":0.9669},{"name":"TX/shuye5","parent":"TX_SHUYE","length":104.78,"rotation":114.67,"x":199.61,"y":-111.59,"scaleX":0.8642,"scaleY":0.9669},{"name":"TX/shuye6","parent":"TX_SHUYE","length":104.78,"rotation":114.67,"x":199.61,"y":-111.59,"scaleX":0.8642,"scaleY":0.9669},{"name":"TX/shuye7","parent":"TX_SHUYE","length":104.78,"rotation":114.67,"x":199.61,"y":-111.59,"scaleX":0.8642,"scaleY":0.9669},{"name":"TX/shuye8","parent":"TX_SHUYE","length":104.78,"rotation":114.67,"x":199.61,"y":-111.59,"scaleX":0.8642,"scaleY":0.9669},{"name":"TX/shuye9","parent":"TX_SHUYE","length":104.78,"rotation":114.67,"x":199.61,"y":-111.59,"scaleX":0.8642,"scaleY":0.9669},{"name":"TX_BAO","parent":"TX","x":-873.51,"y":283.61},{"name":"TX_BZ_cao_hou5","parent":"BZ_HOU","rotation":25.33,"x":-2237.91,"y":-2223.21},{"name":"TX_BZ_yan","parent":"BZ_HOU","x":-3251.08,"y":-1961.43},{"name":"TX_CAO","parent":"TX","x":284.31,"y":251.5},{"name":"TX_CHENTU","parent":"TX","x":940.35,"y":-173.76},{"name":"TX_FENG","parent":"TX","x":181.97,"y":-215.34},{"name":"TX_GUANGQUAN","parent":"TX","x":621.98,"y":931.39},{"name":"TX_GUANGXIAN","parent":"TX","x":1256.98,"y":319.55},{"name":"TX_HEI","parent":"TX","x":4192.71,"y":2395.29,"scaleX":4.5153,"scaleY":4.5153},{"name":"TX_HEI2","parent":"TX","x":4192.71,"y":2395.29,"scaleX":2.4476,"scaleY":1.5888},{"name":"TX_HUA","parent":"TX","x":-665.41,"y":-327.8},{"name":"TX_SHOUJI","parent":"TX","x":86.19,"y":563.1},{"name":"TX_SK2","parent":"root","x":793.31,"y":-1923.37},{"name":"TX_SK2_LIUGUANG","parent":"TX_SK2","x":-343.02,"y":251.43},{"name":"TX_SK2_LIUGUANG2","parent":"TX_SK2","x":-343.02,"y":251.43},{"name":"TX_SK2_SHOUJI","parent":"TX_SK2","x":254.22,"y":-194.99},{"name":"TX_SK2_liuguang","parent":"TX_SK2_LIUGUANG"},{"name":"TX_SK2_liuguang2","parent":"TX_SK2_LIUGUANG2"},{"name":"TX_SK2_liuguang7_BZH","parent":"BZ_HOU","x":-238.95,"y":-2093.97},{"name":"TX_SK2_liuguang_cu","parent":"TX_SK2","x":2385,"y":294.49},{"name":"TX_SK2_shouji1","parent":"TX_SK2_SHOUJI","x":287.53,"y":209.82},{"name":"TX_SK2_shouji2","parent":"TX_SK2_SHOUJI","x":287.53,"y":209.82},{"name":"TX_SK2_shouji3","parent":"TX_SK2_SHOUJI","x":287.53,"y":209.82},{"name":"TX_SK2_shouji4","parent":"TX_SK2_SHOUJI","x":287.53,"y":209.82},{"name":"TX_SK2_shouji_lie","parent":"TX_SK2_shouji1","rotation":44.85},{"name":"TX_SK2_shouji_lie2","parent":"TX_SK2_shouji1","rotation":11.2},{"name":"TX_SK2_shouji_lie3","parent":"TX_SK2_shouji1","rotation":158.1,"scaleY":0.8681},{"name":"TX_SK2_shouji_lie4","parent":"TX_SK2_shouji2","rotation":133.37},{"name":"TX_SK2_shouji_lie5","parent":"TX_SK2_shouji2","rotation":-79.8},{"name":"TX_SK2_shouji_lie6","parent":"TX_SK2_shouji2","rotation":158.1,"scaleY":0.8681},{"name":"TX_SK2_shouji_lie7","parent":"TX_SK2_shouji3","rotation":133.31},{"name":"TX_SK2_shouji_lie8","parent":"TX_SK2_shouji3","rotation":-79.12},{"name":"TX_SK2_shouji_lie9","parent":"TX_SK2_shouji3","rotation":158.1,"scaleY":0.8681},{"name":"TX_SK2_shouji_lie10","parent":"TX_SK2_shouji4","rotation":133.31},{"name":"TX_SK2_shouji_lie11","parent":"TX_SK2_shouji4","rotation":-79.12},{"name":"TX_SK2_shouji_lie12","parent":"TX_SK2_shouji4","rotation":158.1,"scaleY":0.8681},{"name":"TX_SK2_shouji_lie_quan","parent":"TX_SK2_shouji1","rotation":-18.62},{"name":"TX_SK2_shouji_lie_quan2","parent":"TX_SK2_shouji2","rotation":-18.62},{"name":"TX_SK2_shouji_lie_quan3","parent":"TX_SK2_shouji3","rotation":-18.62},{"name":"TX_SK2_shouji_lie_quan4","parent":"TX_SK2_shouji4","rotation":-18.62},{"name":"TX_SK2_shouji_quan","parent":"TX_SK2_shouji1"},{"name":"TX_SK2_shouji_quan2","parent":"TX_SK2_shouji2"},{"name":"TX_SK2_shouji_quan3","parent":"TX_SK2_shouji3"},{"name":"TX_SK2_shouji_quan4","parent":"TX_SK2_shouji4"},{"name":"TX_SK2_shouji_xian1","parent":"TX_SK2_shouji1","scaleX":2.2681,"scaleY":1.2991},{"name":"TX_SK2_shouji_xian2","parent":"TX_SK2_shouji1","rotation":90,"scaleX":2.0356,"scaleY":1.3884},{"name":"TX_SK2_shouji_xian3","parent":"TX_SK2_shouji2","scaleX":2.2681,"scaleY":1.2991},{"name":"TX_SK2_shouji_xian4","parent":"TX_SK2_shouji2","rotation":90,"scaleX":2.0356,"scaleY":1.3884},{"name":"TX_SK2_shouji_xian5","parent":"TX_SK2_shouji3","scaleX":2.2681,"scaleY":1.2991},{"name":"TX_SK2_shouji_xian6","parent":"TX_SK2_shouji3","rotation":90,"scaleX":2.0356,"scaleY":1.3884},{"name":"TX_SK2_shouji_xian7","parent":"TX_SK2_shouji4","scaleX":2.2681,"scaleY":1.2991},{"name":"TX_SK2_shouji_xian8","parent":"TX_SK2_shouji4","rotation":90,"scaleX":2.0356,"scaleY":1.3884},{"name":"TX_SUDUXIAN","parent":"TX","x":1875.17,"y":-220.78},{"name":"TX_XIAN","parent":"TX_SK2","x":2163.35,"y":399.48},{"name":"TX_YAN","parent":"TX","x":-247.46,"y":234.81},{"name":"TX_bao1","parent":"TX_BAO","x":-109.55,"y":178.02},{"name":"TX_bao_hou","parent":"TX_BAO","x":-109.55,"y":178.02},{"name":"TX_cao1","parent":"TX_CAO","rotation":25.33,"x":337.16,"y":-83.75},{"name":"TX_cao2","parent":"TX_CAO","rotation":25.33,"x":337.16,"y":-83.75},{"name":"TX_cao3","parent":"TX_CAO","rotation":25.33,"x":337.16,"y":-83.75},{"name":"TX_cao4","parent":"TX_CAO","rotation":25.33,"x":337.16,"y":-83.75},{"name":"TX_sk2_CAO","parent":"TX_SK2","x":-2679.14,"y":205.93},{"name":"TX_cao5","parent":"TX_sk2_CAO","rotation":25.33,"x":337.16,"y":-83.75},{"name":"TX_cao6","parent":"TX_sk2_CAO","rotation":25.33,"x":337.16,"y":-83.75},{"name":"TX_cao7","parent":"TX_sk2_CAO","rotation":25.33,"x":337.16,"y":-83.75},{"name":"TX_cao8","parent":"TX_sk2_CAO","rotation":25.33,"x":337.16,"y":-83.75},{"name":"TX_cao9","parent":"TX_sk2_CAO","rotation":25.33,"x":337.16,"y":-83.75},{"name":"TX_cao10","parent":"TX_sk2_CAO","rotation":25.33,"x":337.16,"y":-83.75},{"name":"TX_cao_hou1","parent":"TX_CAO","rotation":25.33,"x":337.16,"y":-83.75},{"name":"TX_cao_hou2","parent":"TX_CAO","rotation":25.33,"x":337.16,"y":-83.75},{"name":"TX_cao_hou3","parent":"TX_sk2_CAO","rotation":25.33,"x":337.16,"y":-83.75},{"name":"TX_cao_hou4","parent":"TX_sk2_CAO","rotation":25.33,"x":337.16,"y":-83.75},{"name":"TX_chentu1","parent":"TX_CHENTU","x":229.23,"y":149.33},{"name":"TX_chentu2","parent":"TX_CHENTU","x":229.23,"y":149.33},{"name":"TX_chentu3","parent":"TX_CHENTU","x":229.23,"y":149.33},{"name":"TX_chentu4","parent":"TX_CHENTU","x":229.23,"y":149.33},{"name":"TX_chentu5","parent":"TX_CHENTU","x":229.23,"y":149.33},{"name":"TX_chentu6","parent":"TX_CHENTU","x":229.23,"y":149.33},{"name":"TX_chentu_hou","parent":"TX_CHENTU","x":229.23,"y":149.33},{"name":"TX_feng1","parent":"TX_FENG","x":188.6,"y":-102.87},{"name":"TX_feng2","parent":"TX_FENG","x":188.6,"y":-102.87},{"name":"TX_feng3","parent":"TX_FENG","x":188.6,"y":-102.87},{"name":"TX_feng4","parent":"TX_FENG","x":188.6,"y":-102.87},{"name":"TX_feng_QUAN","parent":"TX_FENG","x":188.14,"y":-62.99,"scaleY":2.5947},{"name":"TX_feng_quan1","parent":"TX_feng_QUAN","x":0.46,"y":-39.89},{"name":"TX_feng_quan2","parent":"TX_feng_QUAN","x":0.46,"y":39.45,"scaleX":-1,"scaleY":-1},{"name":"TX_feng_quan3","parent":"TX_feng_QUAN","rotation":90,"x":106.5,"y":5.14,"scaleX":0.3575,"scaleY":2.812},{"name":"TX_feng_quan4","parent":"TX_feng_QUAN","rotation":90,"x":-109.5,"y":1.24,"scaleX":-0.3968,"scaleY":-2.8981},{"name":"TX_feng_quan_faguang","parent":"TX_FENG","x":188.14,"y":-62.99},{"name":"TX_feng_quan_faguang1","parent":"TX_feng_quan_faguang","x":0.46,"y":-39.89},{"name":"TX_feng_quan_faguang2","parent":"TX_feng_quan_faguang","x":0.46,"y":39.45,"scaleX":-1,"scaleY":-1},{"name":"TX_feng_quan_faguang_hou","parent":"TX_FENG","x":188.14,"y":-62.99},{"name":"TX_feng_quan_faguang3","parent":"TX_feng_quan_faguang_hou","x":0.46,"y":-39.89},{"name":"TX_feng_quan_faguang4","parent":"TX_feng_quan_faguang_hou","x":0.46,"y":39.45,"scaleX":-1,"scaleY":-1},{"name":"TX_guangquan","parent":"TX_GUANGQUAN","x":380.99,"y":-139.77},{"name":"TX_guangquan2","parent":"TX_GUANGQUAN","rotation":68.29,"x":380.99,"y":-139.77},{"name":"TX_guangquan3","parent":"TX_GUANGQUAN","x":380.99,"y":-139.77},{"name":"TX_guangquan4","parent":"TX_GUANGQUAN","x":380.99,"y":-139.77},{"name":"TX_guangquan5","parent":"TX_GUANGQUAN","x":380.99,"y":-139.77},{"name":"TX_guangxian1","parent":"TX_GUANGXIAN","x":196.53,"y":-88.74},{"name":"TX_guangxian2","parent":"TX_GUANGXIAN","x":196.53,"y":-88.74},{"name":"TX_guangxian3","parent":"TX_GUANGXIAN","x":196.53,"y":-88.74},{"name":"TX_guangxian4","parent":"TX_GUANGXIAN","x":196.53,"y":-88.74},{"name":"TX_guangxian5","parent":"TX_GUANGXIAN","x":196.53,"y":-88.74},{"name":"TX_guangxian6","parent":"TX_GUANGXIAN","x":196.53,"y":-88.74},{"name":"TX_guangyun","parent":"TX_SK2","x":3208.05,"y":359.46},{"name":"TX_guangyun2","parent":"TX_SK2","x":3199.26,"y":359.46},{"name":"TX_huaban1","parent":"TX_HUA","rotation":46.2,"x":-1.8,"y":-0.8},{"name":"TX_huaban2","parent":"TX_HUA","rotation":-62.23,"x":1.35,"y":-0.8},{"name":"TX_huaban3","parent":"TX_HUA","x":-0.7,"y":-0.8},{"name":"TX_huaban1_sanluo","parent":"TX_HUA","rotation":46.09,"x":-1.8,"y":-0.8},{"name":"TX_huaban1_sanluo2","parent":"TX_HUA","rotation":46.09,"x":-1.8,"y":-0.8},{"name":"TX_huaban2_sanluo","parent":"TX_HUA","rotation":-57.66,"x":1.35,"y":-0.8},{"name":"TX_huaban2_sanluo2","parent":"TX_HUA","rotation":-57.66,"x":1.35,"y":-0.8},{"name":"TX_huabao","parent":"TX_HUA","x":0.16,"y":-2.19},{"name":"TX_huarui","parent":"TX_HUA","x":0.35,"y":-0.13},{"name":"TX_liuguang_mi","parent":"TX_SK2","x":2739.52,"y":-84.4},{"name":"TX_liuguang_mi2","parent":"TX_SK2","x":2739.52,"y":-84.4},{"name":"TX_shouji3_1","parent":"TX_SHOUJI","rotation":52.14,"x":-363.48,"y":155.6},{"name":"TX_shouji3_2","parent":"TX_SHOUJI","rotation":52.14,"x":-363.48,"y":155.6},{"name":"TX_shouji3_3","parent":"TX_SHOUJI","rotation":52.14,"x":-363.48,"y":155.6},{"name":"TX_shouji3_4","parent":"TX_SHOUJI","rotation":52.14,"x":-363.48,"y":155.6},{"name":"TX_sk2_YAN","parent":"TX_SK2","x":-3210.91,"y":189.24},{"name":"TX_suduxian_mi1","parent":"TX_SUDUXIAN","x":239.95,"y":275.94},{"name":"TX_suduxian_mi2","parent":"TX_SUDUXIAN","x":239.95,"y":275.94},{"name":"TX_suduxian_mi_hou1","parent":"BZ_HOU","x":-744.27,"y":-2335.81},{"name":"TX_suduxian_mi_hou2","parent":"BZ_HOU","x":-744.27,"y":-2335.81},{"name":"TX_suduxian_shu1","parent":"TX_SUDUXIAN","x":428.2,"y":16.68},{"name":"TX_suduxian_shu2","parent":"TX_SUDUXIAN","x":428.2,"y":16.68},{"name":"TX_suduxian_shu3","parent":"TX_SUDUXIAN","x":428.2,"y":16.68},{"name":"TX_suduxian_shu4","parent":"TX_SUDUXIAN","x":428.2,"y":16.68},{"name":"TX_xian","parent":"TX_XIAN","x":221.65,"y":-104.99},{"name":"TX_xian3","parent":"TX_XIAN","x":221.65,"y":-104.99},{"name":"TX_xuanzhuan","parent":"TX","x":1573.96,"y":-179.99,"scaleY":0.907},{"name":"TX_xuanzhuan_hou","parent":"TX","x":1573.96,"y":-179.99,"scaleY":0.907},{"name":"TX_yan1_1","parent":"TX_YAN","x":-144.24,"y":194.73},{"name":"TX_yan1_2","parent":"TX_YAN","x":-144.24,"y":194.73},{"name":"TX_yan1_3","parent":"TX_YAN","x":-144.24,"y":194.73},{"name":"TX_yan1_4","parent":"TX_YAN","x":-144.24,"y":194.73},{"name":"TX_yan1_5","parent":"TX_sk2_YAN","x":-144.24,"y":194.73},{"name":"TX_yan1_6","parent":"TX_sk2_YAN","x":-144.24,"y":194.73},{"name":"TX_yan1_7","parent":"TX_sk2_YAN","x":-144.24,"y":194.73},{"name":"TX_yan1_8","parent":"TX_sk2_YAN","x":-144.24,"y":194.73},{"name":"TX_yan1_1_hou","parent":"TX_YAN","x":-144.24,"y":194.73},{"name":"TX_yan1_1_hou2","parent":"TX_YAN","x":-144.24,"y":194.73},{"name":"TX_yan1_1_hou3","parent":"TX_sk2_YAN","x":-144.24,"y":194.73},{"name":"TX_yan1_1_hou4","parent":"TX_sk2_YAN","x":-144.24,"y":194.73},{"name":"TX_yan1_1_hou5","parent":"TX_YAN","x":-144.24,"y":194.73},{"name":"TX_yan1_1_hou6","parent":"TX_YAN","x":-144.24,"y":194.73},{"name":"ZZZZZ","parent":"TX","x":-2205.66,"y":-2650.8},{"name":"shenti","parent":"SHENTI","x":-62.36,"y":261.55},{"name":"bone","parent":"shenti","length":100.83,"rotation":-140.15,"x":-107.16,"y":95.94},{"name":"bone2","parent":"bone","length":103.93,"rotation":12.43,"x":103.38,"y":1.32},{"name":"bone3","parent":"shenti","length":97.48,"rotation":35.21,"x":-102.17,"y":102.17},{"name":"bone4","parent":"bone3","length":112.67,"rotation":-5.84,"x":96.46,"y":0.55},{"name":"tou","parent":"bone4","rotation":-30.46,"x":190.47,"y":-221.18},{"name":"zui","parent":"tou","x":64.81,"y":-108.6,"scaleY":0.7227},{"name":"bone5","parent":"zui","rotation":-19.24,"x":-210.48,"y":39.03},{"name":"bone6","parent":"zui","rotation":23.51,"x":159.38,"y":61.58},{"name":"y_qiantui","parent":"bone3","length":155.63,"rotation":-109.25,"x":-18.14,"y":-124.38,"scaleX":0.9127},{"name":"bone7","parent":"y_qiantui","length":116.58,"rotation":15.02,"x":156.86,"y":0.16,"scaleX":1.2562},{"name":"z_qiantui","parent":"bone3","length":136.72,"rotation":-99.29,"x":238.28,"y":-303.51},{"name":"bone8","parent":"z_qiantui","length":109.48,"rotation":-19.7,"x":128.94,"y":-2.42},{"name":"y_houtui","parent":"bone2","length":99.52,"rotation":30.09,"x":60.14,"y":35.62},{"name":"bone9","parent":"y_houtui","length":108.93,"rotation":20.06,"x":103.39,"y":-0.01},{"name":"z_houtui","parent":"shenti","length":85.93,"rotation":-83.71,"x":116.79,"y":-70.79},{"name":"bone10","parent":"z_houtui","length":65.5,"rotation":-15.83,"x":87.02,"y":0.31},{"name":"bone11","parent":"tou","length":79.01,"rotation":126.59,"x":-181.68,"y":207.71},{"name":"bone12","parent":"tou","length":45.9,"rotation":68.9,"x":133.43,"y":242.54},{"name":"bone13","parent":"tou","rotation":-2.72,"x":107.75,"y":-41.43},{"name":"zhonzi","parent":"bone3","x":62.96,"y":-19.4},{"name":"bone14","parent":"zhonzi","rotation":-2.99,"x":19.76,"y":175.67},{"name":"bone15","parent":"bone8","length":52.28,"rotation":69.69,"x":114.72,"y":-4.62},{"name":"bone16","parent":"bone7","length":51.95,"rotation":54.98,"x":124.46,"y":1.15},{"name":"bone17","parent":"bone9","length":48.18,"rotation":67.73,"x":109.41,"y":0.83},{"name":"bone20","parent":"BZ/shenti","length":105.83,"rotation":-170.17,"x":-25.26,"y":-4.08},{"name":"bone21","parent":"bone20","length":115.52,"rotation":8.51,"x":105.8,"y":0.73},{"name":"bone22","parent":"BZ/z_shou","length":160.06,"rotation":1.82,"x":143.66,"y":-3.62},{"name":"bone23","parent":"BZ/y_shou","length":134.56,"rotation":-8.58,"x":127.12,"y":-1.26},{"name":"bone24","parent":"BZ/z_jiao","length":93.27,"rotation":6.34,"x":105.8,"y":-0.43},{"name":"bone25","parent":"BZ/tou","x":78.19,"y":92.32},{"name":"bone26","parent":"BZ/tou","length":96.04,"rotation":-136.56,"x":-204.69,"y":-191.89},{"name":"bone27","parent":"BZ/tou","length":57.3,"rotation":139.97,"x":-239.79,"y":175.02},{"name":"bone28","parent":"BZ/tou","x":144.01,"y":79.39},{"name":"bone29","parent":"bone28","rotation":-24.32,"x":-48.26,"y":-249.71},{"name":"bone30","parent":"bone29","rotation":55.75,"x":-181.98,"y":338.49},{"name":"bone75","parent":"TX_SK2_liuguang","length":161.48,"rotation":3.15,"x":45.81,"y":6.45},{"name":"bone76","parent":"bone75","length":172.22,"rotation":0.45,"x":147.41,"y":0.15},{"name":"bone77","parent":"bone76","length":174.18,"rotation":-7.24,"x":172.22,"y":0.93},{"name":"bone78","parent":"bone77","length":170.27,"rotation":1.35,"x":171.21,"y":0.08},{"name":"bone79","parent":"bone78","length":181.9,"rotation":-2.7,"x":170.26,"y":1.2},{"name":"bone80","parent":"bone79","length":221.78,"rotation":-2.7,"x":181.9,"y":-0.76},{"name":"bone81","parent":"bone80","length":178.44,"rotation":-4.99,"x":225.4,"y":-1.08},{"name":"bone82","parent":"bone81","length":169.75,"rotation":1.36,"x":178.44,"y":-1.22},{"name":"bone83","parent":"bone82","length":194.53,"rotation":6.74,"x":171.55,"y":0.64},{"name":"bone84","parent":"bone83","length":190.22,"rotation":-11.14,"x":202.01,"y":-12.14},{"name":"bone85","parent":"bone84","length":196.27,"rotation":2.25,"x":190.23,"y":-1.17},{"name":"bone86","parent":"bone85","length":221.31,"rotation":-9.39,"x":196.26,"y":1.52},{"name":"bone87","parent":"bone86","length":175.24,"x":247.52,"y":-3.01},{"name":"bone88","parent":"BZ/zhongzi","rotation":1.21,"x":-180.91,"y":2.84},{"name":"bone89","parent":"TX/shuye1","length":99.48,"rotation":9.02,"x":96.81,"y":2.52},{"name":"bone90","parent":"bone89","length":110.43,"rotation":13.72,"x":99.77,"y":1.73},{"name":"bone91","parent":"TX/shuye2","length":99.48,"rotation":9.02,"x":96.81,"y":2.52},{"name":"bone92","parent":"bone91","length":110.43,"rotation":13.72,"x":99.77,"y":1.73},{"name":"bone93","parent":"TX/shuye3","length":99.48,"rotation":9.02,"x":96.81,"y":2.52},{"name":"bone94","parent":"bone93","length":110.43,"rotation":13.72,"x":99.77,"y":1.73},{"name":"bone95","parent":"TX/shuye4","length":99.48,"rotation":9.02,"x":96.81,"y":2.52},{"name":"bone96","parent":"bone95","length":110.43,"rotation":13.72,"x":99.77,"y":1.73},{"name":"bone97","parent":"TX/shuye5","length":99.48,"rotation":9.02,"x":96.81,"y":2.52},{"name":"bone98","parent":"bone97","length":110.43,"rotation":13.72,"x":99.77,"y":1.73},{"name":"bone99","parent":"TX/shuye6","length":99.48,"rotation":9.02,"x":96.81,"y":2.52},{"name":"bone100","parent":"bone99","length":110.43,"rotation":13.72,"x":99.77,"y":1.73},{"name":"bone177","parent":"bone87","length":240.87,"rotation":-6.34,"x":175.24,"y":0.78},{"name":"bone178","parent":"bone83","length":196.37,"rotation":-1.2,"x":222.62,"y":-6.28},{"name":"bone179","parent":"bone178","length":185.51,"rotation":0.91,"x":196.34,"y":0.75},{"name":"bone180","parent":"bone179","length":261.92,"rotation":-11.57,"x":191.34,"y":-2.38},{"name":"bone181","parent":"bone180","length":212.46,"rotation":-5.4,"x":261.94,"y":-0.14},{"name":"bone182","parent":"bone181","length":241.37,"rotation":-0.9,"x":210.11,"y":0.37},{"name":"bone183","parent":"TX_SK2_liuguang2","length":161.48,"rotation":3.15,"x":45.8,"y":6.45},{"name":"bone184","parent":"bone183","length":172.22,"rotation":0.45,"x":147.41,"y":0.15},{"name":"bone185","parent":"bone184","length":174.18,"rotation":-7.24,"x":172.22,"y":0.93},{"name":"bone186","parent":"bone185","length":170.27,"rotation":1.35,"x":171.21,"y":0.08},{"name":"bone187","parent":"bone186","length":181.9,"rotation":-2.7,"x":170.26,"y":1.2},{"name":"bone188","parent":"bone187","length":221.78,"rotation":-2.7,"x":181.9,"y":-0.76},{"name":"bone189","parent":"bone188","length":178.44,"rotation":-4.99,"x":225.4,"y":-1.08},{"name":"bone190","parent":"bone189","length":169.75,"rotation":1.36,"x":178.44,"y":-1.22},{"name":"bone191","parent":"bone190","length":194.53,"rotation":6.74,"x":171.55,"y":0.64},{"name":"bone192","parent":"bone191","length":196.37,"rotation":-1.2,"x":222.62,"y":-6.28},{"name":"bone193","parent":"bone192","length":185.51,"rotation":0.91,"x":196.34,"y":0.75},{"name":"bone194","parent":"bone193","length":261.92,"rotation":-11.57,"x":191.34,"y":-2.38},{"name":"bone195","parent":"bone194","length":212.46,"rotation":-5.4,"x":261.94,"y":-0.14},{"name":"bone196","parent":"bone195","length":241.37,"rotation":-0.9,"x":210.11,"y":0.37},{"name":"bone197","parent":"bone191","length":190.22,"rotation":-11.14,"x":202.01,"y":-12.14},{"name":"bone198","parent":"bone197","length":196.27,"rotation":2.25,"x":190.23,"y":-1.17},{"name":"bone199","parent":"bone198","length":221.31,"rotation":-9.39,"x":196.26,"y":1.52},{"name":"bone200","parent":"bone199","length":175.24,"x":247.52,"y":-3.01},{"name":"bone201","parent":"bone200","length":240.87,"rotation":-6.34,"x":175.24,"y":0.78},{"name":"bone292","parent":"TX/shuye7","length":99.48,"rotation":9.02,"x":96.81,"y":2.52},{"name":"bone293","parent":"bone292","length":110.43,"rotation":13.72,"x":99.77,"y":1.73},{"name":"bone294","parent":"TX/shuye8","length":99.48,"rotation":9.02,"x":96.81,"y":2.52},{"name":"bone295","parent":"bone294","length":110.43,"rotation":13.72,"x":99.77,"y":1.73},{"name":"bone296","parent":"TX/shuye9","length":99.48,"rotation":9.02,"x":96.81,"y":2.52},{"name":"bone297","parent":"bone296","length":110.43,"rotation":13.72,"x":99.77,"y":1.73},{"name":"bone298","parent":"TX_SK2_liuguang7_BZH","length":161.48,"rotation":3.15,"x":45.81,"y":6.45},{"name":"bone299","parent":"bone298","length":172.22,"rotation":0.45,"x":147.41,"y":0.15},{"name":"bone300","parent":"bone299","length":174.18,"rotation":-7.24,"x":172.22,"y":0.93},{"name":"bone301","parent":"bone300","length":170.27,"rotation":1.35,"x":171.21,"y":0.08},{"name":"bone302","parent":"bone301","length":181.9,"rotation":-2.7,"x":170.26,"y":1.2},{"name":"bone303","parent":"bone302","length":221.78,"rotation":-2.7,"x":181.9,"y":-0.76},{"name":"bone304","parent":"bone303","length":178.44,"rotation":-4.99,"x":225.4,"y":-1.08},{"name":"bone305","parent":"bone304","length":169.75,"rotation":1.36,"x":178.44,"y":-1.22},{"name":"bone306","parent":"bone305","length":194.53,"rotation":6.74,"x":171.55,"y":0.64},{"name":"bone307","parent":"bone306","length":196.37,"rotation":-1.2,"x":222.62,"y":-6.28},{"name":"bone308","parent":"bone307","length":185.51,"rotation":0.91,"x":196.34,"y":0.75},{"name":"bone309","parent":"bone308","length":261.92,"rotation":-11.57,"x":191.34,"y":-2.38},{"name":"bone310","parent":"bone309","length":212.46,"rotation":-5.4,"x":261.94,"y":-0.14},{"name":"bone311","parent":"bone310","length":241.37,"rotation":-0.9,"x":210.11,"y":0.37},{"name":"bone312","parent":"bone306","length":190.22,"rotation":-11.14,"x":202.01,"y":-12.14},{"name":"bone313","parent":"bone312","length":196.27,"rotation":2.25,"x":190.23,"y":-1.17},{"name":"bone314","parent":"bone313","length":221.31,"rotation":-9.39,"x":196.26,"y":1.52},{"name":"bone315","parent":"bone314","length":175.24,"x":247.52,"y":-3.01},{"name":"bone316","parent":"bone315","length":240.87,"rotation":-6.34,"x":175.24,"y":0.78},{"name":"y_yan","parent":"tou","x":-107.58,"y":42.16},{"name":"y-meimao","parent":"y_yan","rotation":-41.28,"x":12.59,"y":19.28,"scaleX":1.0145,"scaleY":1.0145},{"name":"y_yanjing","parent":"y_yan","x":-5.85,"y":-14.89},{"name":"yinying","parent":"SHENTI_zong","x":5.92,"y":25.91,"scaleY":1.0346},{"name":"z_yan","parent":"tou","x":210.8,"y":56.83},{"name":"z-meimao","parent":"z_yan","rotation":65.62,"x":-10.06,"y":21.69},{"name":"z-yanjing","parent":"z_yan","x":18.94,"y":-16.94}],"slots":[{"name":"hei2","bone":"TX_HEI2"},{"name":"yinying","bone":"yinying","attachment":"yinying"},{"name":"TX_BZ_yan","bone":"TX_BZ_yan","attachment":"TX/TX_S1_yan_26"},{"name":"TX_BZ_cao_hou5","bone":"TX_BZ_cao_hou5","attachment":"TX/cao"},{"name":"BZ/z_bianzi_hou","bone":"bone147"},{"name":"BZ/z_bianzi_hou3","bone":"bone162"},{"name":"BZ/y_bianzi_hou","bone":"BZ/y_bianzi_hou"},{"name":"BZ/z_bianzi2_bz_g2","bone":"BZ/y_bianzi_hou"},{"name":"TX/suduxian_mi_hou1","bone":"TX_suduxian_mi_hou1","attachment":"TX/suduxian_mi"},{"name":"BZ/y_bianzi_hou2","bone":"BZ/y_bianzi_hou2"},{"name":"BZ/y_bian_hou2_liuguang","bone":"BZ/y_bianzi_hou2","blend":"additive"},{"name":"BZ/z_bianzi_hou2","bone":"BZ/z_bianzi_hou2"},{"name":"BZ/z_bianzi_hou2_liuguang","bone":"BZ/z_bianzi_hou2","blend":"additive"},{"name":"BZ/z_bianzi_hou4","bone":"BZ/z_bianzi_hou4"},{"name":"TX/liuguang7_BZH","bone":"TX_SK2_liuguang7_BZH","blend":"additive"},{"name":"BZ/z_bianzi_hou3_liuguang\n2","bone":"bone176"},{"name":"BZ/z_bianzi_hou3_liuguang","bone":"BZ/z_bianzi_hou4","blend":"additive"},{"name":"TX/suduxian_mi_hou2","bone":"TX_suduxian_mi_hou2","attachment":"TX/suduxian_mi"},{"name":"TX/xuanzhuan_hou","bone":"TX_xuanzhuan_hou","attachment":"TX/xuanzhuan"},{"name":"TX/shuye4","bone":"TX/shuye4"},{"name":"TX/shuye5","bone":"TX/shuye5"},{"name":"TX/shuyefaguang4","bone":"TX/shuye4","blend":"additive"},{"name":"TX/chentu_hou","bone":"TX_chentu_hou","attachment":"TX/chentu5"},{"name":"BZ/z_bianzi4","bone":"bone120"},{"name":"BZ/z_bianzi5","bone":"BZ/z_bianzi4"},{"name":"BZ/y_bianzi2_bz_g","bone":"BZ/z_bianzi4"},{"name":"BZ/z_bianzi6","bone":"BZ/z_bianzi5"},{"name":"TX/liuguang2","bone":"TX_SK2_liuguang2","blend":"additive"},{"name":"BZ/z_bianzi5_liuguang2","bone":"bone146"},{"name":"BZ/z_bianzi5_liuguang","bone":"BZ/z_bianzi5","blend":"additive"},{"name":"TX/TX_yan1_1_hou","bone":"TX_yan1_1_hou","attachment":"TX/TX_S1_yan_0029"},{"name":"TX/TX_yan1_1_hou5","bone":"TX_yan1_1_hou5","attachment":"TX/TX_S1_yan_0029"},{"name":"TX/TX_yan1_1_hou6","bone":"TX_yan1_1_hou6","attachment":"TX/TX_S1_yan_0029"},{"name":"TX/TX_yan1_1_hou3","bone":"TX_yan1_1_hou3","attachment":"TX/TX_S1_yan_0029"},{"name":"TX/TX_yan1_1_hou2","bone":"TX_yan1_1_hou2","attachment":"TX/TX_S1_yan_0029"},{"name":"TX/TX_yan1_1_hou4","bone":"TX_yan1_1_hou4","attachment":"TX/TX_S1_yan_0029"},{"name":"TX_cao_hou1","bone":"TX_cao_hou1","attachment":"TX/cao"},{"name":"TX_cao_hou3","bone":"TX_cao_hou3","attachment":"TX/cao"},{"name":"TX_cao_hou2","bone":"TX_cao_hou2","attachment":"TX/cao"},{"name":"TX_cao_hou4","bone":"TX_cao_hou4","attachment":"TX/cao"},{"name":"TX_bao_hou","bone":"TX_bao_hou","attachment":"TX/shuangcdr_00010002"},{"name":"TX_feng2","bone":"TX_feng2","attachment":"TX/TX_S1_shua_0018"},{"name":"zhonzi","bone":"zhonzi","attachment":"zhonzi"},{"name":"z_houtui","bone":"z_houtui","attachment":"z_houtui"},{"name":"z_qiantui","bone":"z_qiantui","attachment":"z_qiantui"},{"name":"shenti","bone":"shenti","attachment":"shenti"},{"name":"y_houtui","bone":"y_houtui","attachment":"y_houtui"},{"name":"tou","bone":"tou","attachment":"tou"},{"name":"zui","bone":"zui","attachment":"zui_shouji"},{"name":"y-yanjing","bone":"y_yanjing","attachment":"y_yanjing_pingshi"},{"name":"z-yanjing","bone":"z-yanjing","attachment":"z_yanjing_pingshi"},{"name":"z-meimao","bone":"z-meimao","attachment":"z_meimao_pingshi"},{"name":"y-meimao","bone":"y-meimao","attachment":"y_meimao_shengli"},{"name":"y_qiantui","bone":"y_qiantui","attachment":"y_qiantui"},{"name":"BZ/shenti","bone":"BZ/shenti"},{"name":"BZ/y_shou","bone":"BZ/y_shou"},{"name":"BZ/z_shou","bone":"BZ/z_shou"},{"name":"BZ/z_jiao","bone":"BZ/z_jiao"},{"name":"BZ/zhongzi","bone":"BZ/zhongzi"},{"name":"BZ/tou","bone":"BZ/tou"},{"name":"BZ/y_yanjing","bone":"BZ/y_yanjing","attachment":"BZ/y_yanjing_bz"},{"name":"BZ/z_yanjing","bone":"BZ/z_yanjing","attachment":"BZ/z_yanjing_bz"},{"name":"BZ/zuiba","bone":"bone28","attachment":"BZ/zuiba_bz"},{"name":"TX_SK2_shouji_quan","bone":"TX_SK2_shouji_quan","attachment":"TX/Energy 007 Impact Radial_00015","blend":"additive"},{"name":"TX_SK2_shouji_quan2","bone":"TX_SK2_shouji_quan2","attachment":"TX/Energy 007 Impact Radial_00015","blend":"additive"},{"name":"TX_SK2_shouji_quan3","bone":"TX_SK2_shouji_quan3","attachment":"TX/Energy 007 Impact Radial_00015","blend":"additive"},{"name":"TX_SK2_shouji_quan4","bone":"TX_SK2_shouji_quan4","attachment":"TX/Energy 007 Impact Radial_00015","blend":"additive"},{"name":"TX_SK2_shouji_xian1","bone":"TX_SK2_shouji_xian1","attachment":"TX/daoguang_red","blend":"additive"},{"name":"TX_SK2_shouji_xian3","bone":"TX_SK2_shouji_xian3","attachment":"TX/daoguang_red","blend":"additive"},{"name":"TX_SK2_shouji_xian5","bone":"TX_SK2_shouji_xian5","attachment":"TX/daoguang_red","blend":"additive"},{"name":"TX_SK2_shouji_xian7","bone":"TX_SK2_shouji_xian7","attachment":"TX/daoguang_red","blend":"additive"},{"name":"TX_SK2_shouji_xian2","bone":"TX_SK2_shouji_xian2","attachment":"TX/daoguang_red","blend":"additive"},{"name":"TX_SK2_shouji_xian4","bone":"TX_SK2_shouji_xian4","attachment":"TX/daoguang_red","blend":"additive"},{"name":"TX_SK2_shouji_xian6","bone":"TX_SK2_shouji_xian6","attachment":"TX/daoguang_red","blend":"additive"},{"name":"TX_SK2_shouji_xian8","bone":"TX_SK2_shouji_xian8","attachment":"TX/daoguang_red","blend":"additive"},{"name":"TX_SK2_shouji_lie","bone":"TX_SK2_shouji_lie","attachment":"TX/atk_guangci3_0031","blend":"additive"},{"name":"TX_SK2_shouji_lie4","bone":"TX_SK2_shouji_lie4","attachment":"TX/atk_guangci3_0031","blend":"additive"},{"name":"TX_SK2_shouji_lie7","bone":"TX_SK2_shouji_lie7","attachment":"TX/atk_guangci3_0031","blend":"additive"},{"name":"TX_SK2_shouji_lie10","bone":"TX_SK2_shouji_lie10","attachment":"TX/atk_guangci3_0031","blend":"additive"},{"name":"TX_SK2_shouji_lie2","bone":"TX_SK2_shouji_lie2","attachment":"TX/atk_guangci3_0031","blend":"additive"},{"name":"TX_SK2_shouji_lie5","bone":"TX_SK2_shouji_lie5","attachment":"TX/atk_guangci3_0031","blend":"additive"},{"name":"TX_SK2_shouji_lie8","bone":"TX_SK2_shouji_lie8","attachment":"TX/atk_guangci3_0031","blend":"additive"},{"name":"TX_SK2_shouji_lie11","bone":"TX_SK2_shouji_lie11","attachment":"TX/atk_guangci3_0031","blend":"additive"},{"name":"TX_SK2_shouji_lie3","bone":"TX_SK2_shouji_lie3","attachment":"TX/atk_guangci3_0031","blend":"additive"},{"name":"TX_SK2_shouji_lie6","bone":"TX_SK2_shouji_lie6","attachment":"TX/atk_guangci3_0031","blend":"additive"},{"name":"TX_SK2_shouji_lie9","bone":"TX_SK2_shouji_lie9","attachment":"TX/atk_guangci3_0031","blend":"additive"},{"name":"TX_SK2_shouji_lie12","bone":"TX_SK2_shouji_lie12","attachment":"TX/atk_guangci3_0031","blend":"additive"},{"name":"TX_SK2_shouji_lie_quan","bone":"TX_SK2_shouji_lie_quan","attachment":"TX/shuangcdr_00010002"},{"name":"TX_SK2_shouji_lie_quan2","bone":"TX_SK2_shouji_lie_quan2","attachment":"TX/shuangcdr_00010002"},{"name":"TX_SK2_shouji_lie_quan3","bone":"TX_SK2_shouji_lie_quan3","attachment":"TX/shuangcdr_00010002"},{"name":"TX_SK2_shouji_lie_quan4","bone":"TX_SK2_shouji_lie_quan4","attachment":"TX/shuangcdr_00010002"},{"name":"BZ/y_bianzi3","bone":"BZ/y_bianzi3"},{"name":"TX/xuanzhuan","bone":"TX_xuanzhuan","attachment":"TX/xuanzhuan"},{"name":"BZ/y_bianzi2","bone":"BZ/y_bianzi2"},{"name":"BZ/z_bianzi2_bz_g","bone":"BZ/y_bianzi2"},{"name":"BZ/y_bianzi1","bone":"BZ/y_bianzi1"},{"name":"TX_feng_quan1","bone":"TX_feng_quan1","attachment":"TX/TX_S1_shua_0018"},{"name":"TX_feng_quan3","bone":"TX_feng_quan3","attachment":"TX/TX_S1_shua_0018"},{"name":"TX_feng_quan2","bone":"TX_feng_quan2","attachment":"TX/TX_S1_shua_0018"},{"name":"TX_feng_quan4","bone":"TX_feng_quan4","attachment":"TX/TX_S1_shua_0018"},{"name":"TX_huaban3","bone":"TX_huaban3","attachment":"TX/hua_a5"},{"name":"TX_huarui","bone":"TX_huarui","attachment":"TX/hua_a4"},{"name":"TX_huaban2","bone":"TX_huaban2","attachment":"TX/hua_a3"},{"name":"TX_huaban2_sanluo","bone":"TX_huaban2_sanluo","attachment":"TX/hua_a3"},{"name":"TX_huaban2_sanluo2","bone":"TX_huaban2_sanluo2","attachment":"TX/hua_a3"},{"name":"TX_huaban1","bone":"TX_huaban1","attachment":"TX/hua_a2"},{"name":"TX_huabao","bone":"TX_huabao","attachment":"TX/hua_b"},{"name":"TX_huaban1_sanluo","bone":"TX_huaban1_sanluo","attachment":"TX/hua_a2"},{"name":"TX_huaban1_sanluo2","bone":"TX_huaban1_sanluo2","attachment":"TX/hua_a2"},{"name":"TX_bao1","bone":"TX_bao1","attachment":"TX/shuangcdr_00010002"},{"name":"TX/shuye3","bone":"TX/shuye3"},{"name":"TX/shuyefaguang3","bone":"TX/shuye3","blend":"additive"},{"name":"TX/shuyefaguang5","bone":"TX/shuye5","blend":"additive"},{"name":"TX/chentu2","bone":"TX_chentu2","attachment":"TX/chentu5"},{"name":"TX/chentu3","bone":"TX_chentu3","attachment":"TX/chentu5"},{"name":"TX_shouji3_2","bone":"TX_shouji3_2","attachment":"TX/atk_guangci3_0031","blend":"additive"},{"name":"TX_shouji3_3","bone":"TX_shouji3_3","attachment":"TX/atk_guangci3_0031","blend":"additive"},{"name":"TX/chentu5","bone":"TX_chentu5","attachment":"TX/chentu5"},{"name":"TX/chentu6","bone":"TX_chentu6","attachment":"TX/chentu5"},{"name":"TX/chentu1","bone":"TX_chentu1","attachment":"TX/chentu5"},{"name":"TX_guangxian1","bone":"TX_guangxian1","blend":"additive"},{"name":"TX_guangxian4","bone":"TX_guangxian4","blend":"additive"},{"name":"TX_guangxian5","bone":"TX_guangxian5","blend":"additive"},{"name":"TX_guangxian6","bone":"TX_guangxian6","blend":"additive"},{"name":"TX/chentu4","bone":"TX_chentu4","attachment":"TX/chentu5"},{"name":"ZZZZZ","bone":"ZZZZZ","color":"ff0009ff","attachment":"ZZZZZ"},{"name":"TX/shuye","bone":"TX/shuye1"},{"name":"TX/shuye2","bone":"TX/shuye2"},{"name":"TX/shuye6","bone":"TX/shuye6"},{"name":"TX/shuye7","bone":"TX/shuye7"},{"name":"TX/shuye8","bone":"TX/shuye8"},{"name":"TX/shuye9","bone":"TX/shuye9"},{"name":"ZZZZZZZZZZZ","bone":"ZZZZZ"},{"name":"TX_shouji3_4","bone":"TX_shouji3_4","attachment":"TX/atk_guangci3_0031","blend":"additive"},{"name":"TX/shuyefaguang","bone":"TX/shuye1","blend":"additive"},{"name":"TX/shuyefaguang2","bone":"TX/shuye2","blend":"additive"},{"name":"TX/shuyefaguang6","bone":"TX/shuye6","blend":"additive"},{"name":"TX/shuyefaguang7","bone":"TX/shuye7","blend":"additive"},{"name":"TX/shuyefaguang8","bone":"TX/shuye8","attachment":"TX/shuyefaguang","blend":"additive"},{"name":"TX/shuyefaguang9","bone":"TX/shuye9","attachment":"TX/shuyefaguang","blend":"additive"},{"name":"TX/TX_yan1_1","bone":"TX_yan1_1","attachment":"TX/TX_S1_yan_26"},{"name":"TX/TX_yan1_5","bone":"TX_yan1_5","attachment":"TX/TX_S1_yan_26"},{"name":"TX/TX_yan1_2","bone":"TX_yan1_2","attachment":"TX/TX_S1_yan_0029"},{"name":"TX/TX_yan1_6","bone":"TX_yan1_6","attachment":"TX/TX_S1_yan_0029"},{"name":"TX/TX_yan1_3","bone":"TX_yan1_3","attachment":"TX/TX_S1_yan_0029"},{"name":"TX/TX_yan1_7","bone":"TX_yan1_7","attachment":"TX/TX_S1_yan_0029"},{"name":"TX/TX_yan1_4","bone":"TX_yan1_4","attachment":"TX/TX_S1_yan_0029"},{"name":"TX/TX_yan1_8","bone":"TX_yan1_8","attachment":"TX/TX_S1_yan_0029"},{"name":"TX/z_bianzi2_bz_liuguang","bone":"bone119","blend":"additive"},{"name":"TX/z_bianzi2_bz_liuguang2","bone":"bone60","blend":"additive"},{"name":"BZ/y_bianzi_1_liuguang","bone":"BZ/y_bianzi1","blend":"additive"},{"name":"TX_SK2_liuguang","bone":"TX_SK2_liuguang","blend":"additive"},{"name":"TX/cao5","bone":"TX_cao5","attachment":"TX/cao"},{"name":"TX/cao6","bone":"TX_cao6","attachment":"TX/cao"},{"name":"TX/cao9","bone":"TX_cao9","attachment":"TX/cao"},{"name":"TX/cao7","bone":"TX_cao7"},{"name":"TX/cao10","bone":"TX_cao10"},{"name":"TX/cao8","bone":"TX_cao8"},{"name":"TX/cao1","bone":"TX_cao1","attachment":"TX/cao"},{"name":"TX/cao3","bone":"TX_cao3"},{"name":"TX/cao4","bone":"TX_cao4"},{"name":"TX/cao2","bone":"TX_cao2","attachment":"TX/cao"},{"name":"TX_feng1","bone":"TX_feng1","attachment":"TX/TX_S1_shua_0018"},{"name":"TX_feng_quan_faguang1","bone":"TX_feng_quan_faguang1","attachment":"TX/TX_S1_shua_0018","blend":"additive"},{"name":"TX_feng_quan_faguang3","bone":"TX_feng_quan_faguang3","attachment":"TX/TX_S1_shua_0018","blend":"additive"},{"name":"TX_feng_quan_faguang2","bone":"TX_feng_quan_faguang2","attachment":"TX/TX_S1_shua_0018","blend":"additive"},{"name":"TX_feng_quan_faguang4","bone":"TX_feng_quan_faguang4","attachment":"TX/TX_S1_shua_0018","blend":"additive"},{"name":"TX_feng3","bone":"TX_feng3","attachment":"TX/TX_S1_shua_0018"},{"name":"TX_feng4","bone":"TX_feng4","attachment":"TX/TX_S1_shua_0018"},{"name":"TX_guangxian2","bone":"TX_guangxian2","blend":"additive"},{"name":"TX_guangxian3","bone":"TX_guangxian3","blend":"additive"},{"name":"TX_shouji3_1","bone":"TX_shouji3_1","attachment":"TX/atk_guangci3_0031","blend":"additive"},{"name":"TX_guangquan","bone":"TX_guangquan","attachment":"TX/Energy 007 Impact Radial_00015","blend":"additive"},{"name":"TX_guangquan2","bone":"TX_guangquan2","attachment":"TX/Energy 007 Impact Radial_00015","blend":"additive"},{"name":"TX_guangquan3","bone":"TX_guangquan3","attachment":"TX/Energy 007 Impact Radial_00015","blend":"additive"},{"name":"TX_guangquan4","bone":"TX_guangquan4","attachment":"TX/Energy 007 Impact Radial_00015","blend":"additive"},{"name":"TX_guangquan5","bone":"TX_guangquan5","attachment":"TX/Energy 007 Impact Radial_00015","blend":"additive"},{"name":"TX/suduxian_mi1","bone":"TX_suduxian_mi1"},{"name":"TX/suduxian_mi2","bone":"TX_suduxian_mi2","attachment":"TX/suduxian_mi"},{"name":"TX/suduxian_su1","bone":"TX_suduxian_shu1","attachment":"TX/suduxian_su"},{"name":"TX/suduxian_su2","bone":"TX_suduxian_shu2","attachment":"TX/suduxian_su"},{"name":"TX/suduxian_su3","bone":"TX_suduxian_shu3","attachment":"TX/suduxian_su"},{"name":"TX/suduxian_su4","bone":"TX_suduxian_shu4","attachment":"TX/suduxian_su"},{"name":"TX/huiji1","bone":"TX_huiji1","blend":"additive"},{"name":"hei","bone":"TX_HEI"},{"name":"TX_xian","bone":"TX_xian","attachment":"TX/b_lg_2"},{"name":"TX_xian3","bone":"TX_xian3","attachment":"TX/b_lg_2"},{"name":"TX_SK2_liuguang_cu","bone":"TX_SK2_liuguang_cu","attachment":"TX/b_lg_2","blend":"additive"},{"name":"TX/liuguang_mi","bone":"TX_liuguang_mi","attachment":"TX/suduxian_mi","blend":"additive"},{"name":"TX/liuguang_mi2","bone":"TX_liuguang_mi2","attachment":"TX/suduxian_mi","blend":"additive"},{"name":"TX/guangyun","bone":"TX_guangyun","attachment":"TX/guangyun","blend":"additive"},{"name":"TX/guangyun2","bone":"TX_guangyun2","attachment":"TX/guangyun","blend":"additive"}],"ik":[{"name":"youhou1","target":"5","bones":["y_houtui","bone9"]},{"name":"youhou2","order":1,"target":"6","bones":["bone17"]},{"name":"youqian1","order":2,"target":"3","bones":["y_qiantui","bone7"]},{"name":"youqian2","order":3,"target":"4","bones":["bone16"]},{"name":"zuoqian1","order":4,"target":"1","bendPositive":false,"bones":["z_qiantui","bone8"]},{"name":"zuoqian2","order":5,"target":"2","bones":["bone15"]}],"skins":[{"name":"default","attachments":{"TX_feng3":{"TX/TX_S1_shua_0010":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0012":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0014":{"type":"mesh","hull":15,"width":38,"height":14,"uvs":[1,0.21103,1,0.66341,0.78545,1,0.60351,1,0.38966,1,0.20293,1,0,0.70293,0,0.30326,0.12473,0.19785,0.20772,0.47894,0.38168,0.58874,0.64022,0.56678,0.82215,0.43941,0.75672,0.12758,0.83492,0],"triangles":[13,14,0,12,13,0,7,8,9,12,0,1,6,7,9,10,5,6,10,6,9,3,4,10,5,10,4,11,3,10,11,12,1,2,3,11,1,2,11],"vertices":[165.81,72.87,165.81,16.33,92.01,-25.75,29.42,-25.75,-44.15,-25.75,-108.38,-25.75,-178.19,11.38,-178.19,61.34,-135.28,74.52,-106.73,39.38,-46.89,25.66,42.05,28.4,104.63,44.32,82.12,83.3,109.02,99.25],"edges":[0,28,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28]},"TX/TX_S1_shua_0016":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0018":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]}},"TX_feng4":{"TX/TX_S1_shua_0010":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0012":{"type":"mesh","hull":20,"width":38,"height":14,"uvs":[0.95524,0.20585,1,0.47951,1,0.76198,0.75957,1,0.55107,1,0.28965,1,0.08597,0.8326,0,0.57219,0,0.36916,0.09559,0.2853,0.24635,0.54571,0.44683,0.66488,0.63127,0.65164,0.76919,0.57219,0.85901,0.49716,0.85901,0.36916,0.70344,0.30296,0.54947,0.22351,0.57834,0,0.79485,0],"triangles":[19,17,18,16,19,0,16,17,19,15,16,0,15,0,1,14,15,1,8,9,10,7,8,10,14,1,2,13,14,2,6,7,10,6,10,11,5,6,11,4,11,12,5,11,4,2,3,12,2,12,13,4,12,3],"vertices":[150.41,73.52,165.81,39.31,165.81,4,83.1,-25.75,11.38,-25.75,-78.55,-25.75,-148.62,-4.82,-178.19,27.73,-178.19,53.11,-145.31,63.59,-93.44,31.04,-24.48,16.14,38.97,17.8,86.41,27.73,117.31,37.11,117.31,53.11,63.79,61.38,10.83,71.31,20.76,99.25,95.24,99.25],"edges":[0,38,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38]},"TX/TX_S1_shua_0014":{"type":"mesh","hull":15,"width":38,"height":14,"uvs":[1,0.21103,1,0.66341,0.78545,1,0.60351,1,0.38966,1,0.20293,1,0,0.70293,0,0.30326,0.12473,0.19785,0.20772,0.47894,0.38168,0.58874,0.64022,0.56678,0.82215,0.43941,0.75672,0.12758,0.83492,0],"triangles":[13,14,0,12,13,0,7,8,9,12,0,1,6,7,9,10,5,6,10,6,9,3,4,10,5,10,4,11,3,10,11,12,1,2,3,11,1,2,11],"vertices":[165.81,72.87,165.81,16.33,92.01,-25.75,29.42,-25.75,-44.15,-25.75,-108.38,-25.75,-178.19,11.38,-178.19,61.34,-135.28,74.52,-106.73,39.38,-46.89,25.66,42.05,28.4,104.63,44.32,82.12,83.3,109.02,99.25],"edges":[0,28,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28]},"TX/TX_S1_shua_0016":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0018":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]}},"TX_guangxian1":{"TX/daoguang_red":{"type":"mesh","hull":4,"width":19,"height":73,"uvs":[1,1,0,1,0,0,1,0,0.23298,0.7195,0.26387,0.81284,0.50071,0.97113,0.68091,0.81284,0.7221,0.68162,0.70665,0.52468,0.7221,0.37181,0.63972,0.20541,0.45437,0.04577,0.30506,0.20541,0.25358,0.38398,0.21239,0.53821],"triangles":[12,2,3,13,2,12,11,12,3,10,11,3,14,2,13,10,14,11,15,2,14,10,0,9,0,8,9,8,4,15,13,12,11,14,13,11,9,14,10,8,15,9,9,15,14,7,4,8,5,4,7,6,5,7,1,2,15,1,15,4,1,4,5,3,0,10,7,8,0,6,7,0,1,5,6,1,6,0],"vertices":[91.04,-311.15,-83.96,-311.15,-83.96,354.85,91.04,354.85,-43.19,-124.33,-37.79,-186.5,3.66,-291.92,35.19,-186.5,42.4,-99.11,39.7,5.41,42.4,107.22,27.99,218.05,-4.45,324.36,-30.58,218.05,-39.59,99.12,-46.8,-3.6],"edges":[0,6,0,2,2,4,4,6]}},"BZ/y_bianzi1":{"BZ/z_bianzi1_bz":{"type":"mesh","hull":12,"width":39,"height":22,"uvs":[0.66802,0.06985,0.84411,0.24062,1,0.55612,1,0.90924,0.87538,1,0.57915,1,0.37344,0.9324,0.16608,0.78189,0,0.57349,0,0.14221,0.26811,0,0.4837,0,0.05746,0.3043,0.21874,0.21747,0.51333,0.29272,0.76347,0.47218,0.97413,0.77031],"triangles":[13,9,10,14,11,0,14,0,1,13,10,11,14,13,11,12,9,13,15,14,1,15,1,2,8,9,12,16,15,2,13,8,12,7,13,14,6,7,14,7,8,13,16,2,3,15,6,14,5,6,15,16,5,15,16,4,5,3,4,16],"vertices":[1,45,210.57,102.32,1,1,45,278.96,85.72,1,1,45,348.11,39.49,1,1,45,366.58,-28.31,1,1,45,329.24,-57.2,1,1,45,229.21,-84.45,1,1,45,156.2,-90.4,1,1,45,78.31,-80.57,1,1,45,11.32,-55.84,1,1,45,-11.24,26.97,1,1,45,71.87,78.94,1,1,45,144.67,98.77,1,1,45,16.65,1.13,1,1,45,66.57,32.64,1,1,45,169.98,45.29,1,1,45,263.84,33.85,1,1,45,350.57,-4.02,1],"edges":[0,22,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22]}},"TX_guangxian3":{"TX/daoguang_red":{"type":"mesh","hull":4,"width":19,"height":73,"uvs":[1,1,0,1,0,0,1,0,0.23298,0.7195,0.26387,0.81284,0.50071,0.97113,0.68091,0.81284,0.7221,0.68162,0.70665,0.52468,0.7221,0.37181,0.63972,0.20541,0.45437,0.04577,0.30506,0.20541,0.25358,0.38398,0.21239,0.53821],"triangles":[12,2,3,13,2,12,11,12,3,10,11,3,14,2,13,10,14,11,15,2,14,10,0,9,0,8,9,8,4,15,13,12,11,14,13,11,9,14,10,8,15,9,9,15,14,7,4,8,5,4,7,6,5,7,1,2,15,1,15,4,1,4,5,3,0,10,7,8,0,6,7,0,1,5,6,1,6,0],"vertices":[91.04,-311.15,-83.96,-311.15,-83.96,354.85,91.04,354.85,-43.19,-124.33,-37.79,-186.5,3.66,-291.92,35.19,-186.5,42.4,-99.11,39.7,5.41,42.4,107.22,27.99,218.05,-4.45,324.36,-30.58,218.05,-39.59,99.12,-46.8,-3.6],"edges":[0,6,0,2,2,4,4,6]}},"TX_guangxian4":{"TX/daoguang_red":{"type":"mesh","hull":4,"width":19,"height":73,"uvs":[1,1,0,1,0,0,1,0,0.23298,0.7195,0.26387,0.81284,0.50071,0.97113,0.68091,0.81284,0.7221,0.68162,0.70665,0.52468,0.7221,0.37181,0.63972,0.20541,0.45437,0.04577,0.30506,0.20541,0.25358,0.38398,0.21239,0.53821],"triangles":[12,2,3,13,2,12,11,12,3,10,11,3,14,2,13,10,14,11,15,2,14,10,0,9,0,8,9,8,4,15,13,12,11,14,13,11,9,14,10,8,15,9,9,15,14,7,4,8,5,4,7,6,5,7,1,2,15,1,15,4,1,4,5,3,0,10,7,8,0,6,7,0,1,5,6,1,6,0],"vertices":[91.04,-311.15,-83.96,-311.15,-83.96,354.85,91.04,354.85,-43.19,-124.33,-37.79,-186.5,3.66,-291.92,35.19,-186.5,42.4,-99.11,39.7,5.41,42.4,107.22,27.99,218.05,-4.45,324.36,-30.58,218.05,-39.59,99.12,-46.8,-3.6],"edges":[0,6,0,2,2,4,4,6]}},"TX_guangxian5":{"TX/daoguang_red":{"type":"mesh","hull":4,"width":19,"height":73,"uvs":[1,1,0,1,0,0,1,0,0.23298,0.7195,0.26387,0.81284,0.50071,0.97113,0.68091,0.81284,0.7221,0.68162,0.70665,0.52468,0.7221,0.37181,0.63972,0.20541,0.45437,0.04577,0.30506,0.20541,0.25358,0.38398,0.21239,0.53821],"triangles":[12,2,3,13,2,12,11,12,3,10,11,3,14,2,13,10,14,11,15,2,14,10,0,9,0,8,9,8,4,15,13,12,11,14,13,11,9,14,10,8,15,9,9,15,14,7,4,8,5,4,7,6,5,7,1,2,15,1,15,4,1,4,5,3,0,10,7,8,0,6,7,0,1,5,6,1,6,0],"vertices":[91.04,-311.15,-83.96,-311.15,-83.96,354.85,91.04,354.85,-43.19,-124.33,-37.79,-186.5,3.66,-291.92,35.19,-186.5,42.4,-99.11,39.7,5.41,42.4,107.22,27.99,218.05,-4.45,324.36,-30.58,218.05,-39.59,99.12,-46.8,-3.6],"edges":[0,6,0,2,2,4,4,6]}},"TX_guangxian6":{"TX/daoguang_red":{"type":"mesh","hull":4,"width":19,"height":73,"uvs":[1,1,0,1,0,0,1,0,0.23298,0.7195,0.26387,0.81284,0.50071,0.97113,0.68091,0.81284,0.7221,0.68162,0.70665,0.52468,0.7221,0.37181,0.63972,0.20541,0.45437,0.04577,0.30506,0.20541,0.25358,0.38398,0.21239,0.53821],"triangles":[12,2,3,13,2,12,11,12,3,10,11,3,14,2,13,10,14,11,15,2,14,10,0,9,0,8,9,8,4,15,13,12,11,14,13,11,9,14,10,8,15,9,9,15,14,7,4,8,5,4,7,6,5,7,1,2,15,1,15,4,1,4,5,3,0,10,7,8,0,6,7,0,1,5,6,1,6,0],"vertices":[91.04,-311.15,-83.96,-311.15,-83.96,354.85,91.04,354.85,-43.19,-124.33,-37.79,-186.5,3.66,-291.92,35.19,-186.5,42.4,-99.11,39.7,5.41,42.4,107.22,27.99,218.05,-4.45,324.36,-30.58,218.05,-39.59,99.12,-46.8,-3.6],"edges":[0,6,0,2,2,4,4,6]}},"TX_xian":{"TX/b_lg_2":{"type":"mesh","hull":4,"width":34,"height":4,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[140.75,-23.3,-165.25,-23.3,-165.25,15.7,140.75,15.7],"edges":[0,2,2,4,4,6,0,6]}},"TX_huaban1_sanluo2":{"TX/hua_a2":{"type":"mesh","hull":4,"width":14,"height":18,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-0.2,-9.52,-87.59,81.25,29.11,193.6,116.5,102.83],"edges":[0,2,2,4,4,6,0,6]}},"hei":{"hei":{"type":"mesh","hull":4,"width":3,"height":2,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[5862.02,-3566.83,-6137.98,-3566.83,-6137.98,3933.17,5862.02,3933.17],"edges":[0,2,2,4,4,6,0,6]}},"TX/xuanzhuan_hou":{"TX/xuanzhuan":{"type":"mesh","hull":4,"width":45,"height":45,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[204.86,-221.01,-203.14,-221.01,-203.14,228.83,204.86,228.83],"edges":[0,2,2,4,4,6,0,6]}},"TX_SK2_shouji_lie5":{"TX/atk_guangci3_0025":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[17.21,-26.06,-413.3,384.88,-87.97,725.7,342.54,314.76],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0027":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[17.21,-26.06,-413.3,384.88,-87.97,725.7,342.54,314.76],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0028":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[17.21,-26.06,-413.3,384.88,-87.97,725.7,342.54,314.76],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0030":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[17.21,-26.06,-413.3,384.88,-87.97,725.7,342.54,314.76],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0031":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[19.31,-27.85,-411.2,383.1,-85.87,723.92,344.65,312.97],"edges":[0,2,2,4,4,6,0,6]}},"BZ/z_bianzi6":{"BZ/y_bianzi1_bz":{"type":"mesh","hull":14,"width":28,"height":24,"uvs":[0.5414,0.10574,0.74324,0.2953,0.91747,0.53076,1,0.74427,1,0.88993,0.91575,1,0.68113,1,0.51035,0.93582,0.31714,0.80014,0.1153,0.58663,0,0.36714,0,0.13368,0.11013,0,0.31714,0,0.13773,0.14365,0.28609,0.35317,0.5414,0.62454,0.77946,0.82009,0.93472,0.88993],"triangles":[14,12,13,11,12,14,15,14,13,15,13,0,10,11,14,10,14,15,9,10,15,1,16,15,1,15,0,16,1,2,9,15,16,8,9,16,17,16,2,17,2,3,18,17,3,18,3,4,7,8,16,7,16,17,6,7,17,5,17,18,6,17,5,5,18,4],"vertices":[1,99,93.46,77.8,1,1,99,158.72,78.51,1,1,99,225.02,67.14,1,1,99,270.56,44.72,1,1,99,290.76,20.4,1,1,99,289.75,-11.49,1,1,99,244.43,-49.12,1,1,99,202.55,-65.79,1,1,99,146.42,-74.12,1,1,99,77.83,-70.83,1,1,99,25.13,-52.67,1,1,99,-7.24,-13.69,1,1,99,-4.5,26.29,1,1,99,35.48,59.49,1,1,99,20.75,6.73,1,1,99,78.45,-4.46,1,1,99,165.39,-8.83,1,1,99,238.48,-3.31,1,1,99,278.15,9.93,1],"edges":[0,26,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26]}},"TX_feng_quan_faguang1":{"TX/TX_S1_shua_0010":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0012":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0014":{"type":"mesh","hull":18,"width":38,"height":14,"uvs":[1,0.24114,1,0.66059,0.80807,1,0.64514,1,0.40863,1,0.23781,1,0,0.70399,0,0.30984,0.11036,0.16882,0.21022,0.47979,0.37052,0.55211,0.52294,0.60274,0.66616,0.58466,0.80413,0.4581,0.8396,0.30623,0.75157,0.14351,0.78967,0,0.858,0],"triangles":[17,15,16,0,15,17,0,14,15,7,8,9,13,14,0,1,13,0,6,7,9,10,6,9,4,5,10,5,6,10,11,4,10,3,11,12,4,11,3,12,13,1,2,3,12,1,2,12],"vertices":[165.81,69.11,165.81,16.68,99.79,-25.75,43.74,-25.75,-37.62,-25.75,-96.38,-25.75,-178.19,11.25,-178.19,60.52,-140.23,78.15,-105.87,39.28,-50.73,30.24,1.7,23.91,50.97,26.17,98.43,41.99,110.64,60.97,80.35,81.31,93.46,99.25,116.96,99.25],"edges":[0,34,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34]},"TX/TX_S1_shua_0016":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0018":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]}},"TX/TX_yan1_7":{"TX/TX_S1_yan_24":{"type":"mesh","path":"TX/TX_S1_yan_0024","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[96.08,-42.6,-161.92,-42.6,-161.92,197.4,96.08,197.4],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_yan_0029":{"type":"mesh","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[3.26,-92.08,-175.42,94.03,-2.29,260.24,176.39,74.13],"edges":[0,2,2,4,4,6,0,6]}},"BZ/z_bianzi5_liuguang2":{"TX/z_bianzi2_bz_liuguang":{"type":"mesh","hull":4,"width":27,"height":16,"uvs":[1,1,0,1,0,0,1,0,0.16686,0.50075,0.19785,0.61255,0.31683,0.6668,0.48181,0.72599,0.61679,0.76873,0.69278,0.77202,0.75277,0.69146,0.77877,0.50733,0.73377,0.36759,0.63379,0.37087,0.5268,0.33799,0.41782,0.28374,0.39582,0.27716,0.31783,0.23113,0.23884,0.24593,0.19185,0.35115],"triangles":[17,2,3,18,2,17,19,2,18,4,2,19,19,16,4,5,4,16,16,19,17,17,19,18,1,2,4,1,4,5,1,5,6,6,16,15,6,5,16,7,6,14,1,6,7,15,16,17,3,15,17,14,15,3,12,14,3,13,14,12,11,12,3,6,15,14,11,13,12,7,14,13,11,7,13,10,7,11,8,7,10,9,8,10,11,3,0,10,11,0,9,10,0,8,9,0,1,7,8,1,8,0],"vertices":[1,98,131.07,49.56,1,2,97,-95.56,69.59,0.01861,96,-33.04,78.09,0.98139,1,96,-50.64,-39.58,1,1,98,114.21,-85.14,1,2,97,-26.46,11.94,0.14529,96,32.28,16.17,0.85471,2,97,-16.18,23.86,0.44491,96,43.29,27.42,0.55509,2,97,13.73,24.38,0.94917,96,73.17,26.04,0.05083,2,98,4.13,24.48,0.26004,97,54.78,23.16,0.73996,2,98,37.61,24.12,0.81359,97,88.22,21.48,0.18641,2,98,56.29,22.67,0.92888,97,106.83,19.31,0.07112,2,98,68.85,9.12,0.98849,97,118.84,5.27,0.01151,1,98,71.31,-14.34,1,1,98,57.54,-29.48,1,2,98,33.47,-24.96,0.99785,96,138.17,-29.96,0.00215,2,98,6.95,-24.55,0.98011,96,111.84,-26.83,0.01989,3,98,-20.5,-26.66,0.57923,97,28.16,-26.97,0.31054,96,84.32,-26.11,0.11023,3,98,-25.94,-26.55,0.47147,97,22.72,-26.65,0.38078,96,78.91,-25.45,0.14775,3,98,-45.73,-28.93,0.22399,97,2.85,-28.25,0.33807,96,58.98,-25.79,0.43794,3,98,-64.5,-23.88,0.06856,97,-15.7,-22.46,0.08125,96,40.83,-18.84,0.85019,2,98,-73.67,-9.15,0.0034,96,33.23,-3.25,0.9966],"edges":[0,6,0,2,2,4,4,6]}},"TX/z_bianzi2_bz_liuguang2":{"TX/z_bianzi2_bz_liuguang":{"type":"mesh","hull":4,"width":27,"height":16,"uvs":[1,1,0,1,0,0,1,0,0.19234,0.59948,0.33806,0.66956,0.50713,0.72756,0.67133,0.77556,0.72972,0.73956,0.77594,0.57956,0.76377,0.39756,0.66647,0.36756,0.51078,0.32556,0.33441,0.24956,0.23589,0.24756,0.17994,0.43356],"triangles":[13,14,2,15,2,14,13,4,15,12,4,13,13,15,14,12,5,4,1,2,15,1,15,4,1,4,5,1,5,6,3,13,2,12,13,3,11,12,3,10,11,3,9,10,3,6,5,12,6,12,11,9,6,11,9,11,10,8,6,9,7,6,8,9,3,0,8,9,0,7,8,0,1,6,7,7,0,1],"vertices":[1,44,160.88,-58.35,1,3,44,-80.47,-90.66,0.004,43,-10.65,-99.55,0.92531,42,61.47,-99.96,0.0707,2,43,-46.26,44.19,0.12326,42,12.38,39.76,0.87674,1,44,141.23,88.43,1,3,44,-41.92,-25.66,0.01561,43,20.55,-30.72,0.95875,42,86,-28.48,0.02565,2,44,-5.37,-31.24,0.3924,43,57.49,-32.26,0.6076,2,44,36.57,-34.29,0.91762,43,99.52,-30.7,0.08238,2,44,77.15,-36.03,0.99527,43,140.04,-27.98,0.00473,2,44,90.53,-28.86,0.99988,43,152.56,-19.39,0.00012,1,44,98.54,-3.88,1,2,44,92.03,22.44,0.99817,43,148.43,31.77,0.00183,2,44,67.96,23.7,0.98574,43,124.36,30.38,0.01426,2,44,29.55,24.84,0.87775,43,86.06,27.3,0.12225,3,44,-14.51,30.29,0.16013,43,41.67,27.9,0.81054,42,101.46,31.88,0.02932,3,44,-38.32,27.4,0.01739,43,18.31,22.42,0.85436,42,78.73,24.21,0.12826,1,43,11.71,-7.59,1],"edges":[0,6,0,2,2,4,4,6]}},"TX/cao4":{"TX/cao":{"type":"mesh","hull":4,"width":38,"height":42,"uvs":[0.96254,0.91005,0,0.91005,0,0,0.96254,0,0.11601,0.49311,0.37589,0.7182,0.19984,0.15065,0.75523,0.17759,0.77409,0.47194,0.7175,0.76438,0.5184,0.47772,0.60315,0.87964,0.89667,0.5941],"triangles":[6,2,3,7,6,3,8,7,3,10,6,7,10,7,8,4,2,6,4,6,10,12,8,3,5,4,10,9,10,8,9,8,12,5,10,9,11,5,9,4,1,2,1,4,5,3,0,12,9,12,0,11,9,0,1,5,11,1,11,0],"vertices":[-4.39,-204.6,-244.39,27.6,-5.23,274.78,234.76,42.58,-105.89,112.86,-100.25,-10.97,5.01,185.65,136.4,44.36,63.75,-40.14,-27.21,-105.92,-1.52,19.97,-86.01,-109.64,62.21,-102.89],"edges":[0,6,0,2,2,4,4,6]}},"TX_BZ_yan":{"TX/TX_S1_yan_26":{"type":"mesh","path":"TX/TX_S1_yan_0024","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[96.08,-42.6,-161.92,-42.6,-161.92,197.4,96.08,197.4],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_yan_0029":{"type":"mesh","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0,0.54466,0.88587,0.87646,0.73758,0.80749,0.44302,0.25573,0.75562],"triangles":[6,2,3,5,6,3,7,2,6,4,7,6,5,4,6,1,2,7,5,3,0,4,5,0,1,7,4,1,4,0],"vertices":[3.27,-92.05,-175.39,94.02,-2.3,260.21,176.35,74.14,-58.33,11.64,26.62,-25.45,65.28,36.33,-87.4,87.05],"edges":[0,6,0,2,2,4,4,6]}},"BZ/y_bianzi2_bz_g":{"BZ/y_bianzi2_bz_g":{"type":"mesh","hull":35,"width":80,"height":21,"uvs":[0.63435,0.01353,0.72628,0.07523,0.80957,0.19068,0.88483,0.29522,0.95722,0.42735,1,0.63914,1,0.80861,0.99938,0.93512,0.95712,1,0.93026,1,0.87692,0.92064,0.81077,0.81971,0.75155,0.71988,0.68042,0.6563,0.6015,0.60224,0.53361,0.55249,0.46618,0.55554,0.3979,0.56878,0.33835,0.59625,0.28353,0.64811,0.23581,0.74239,0.18432,0.82609,0.13005,0.90008,0.07996,1,0.04303,1,0.02207,0.81923,0,0.59485,0.04819,0.42136,0.11798,0.29111,0.1767,0.19345,0.23852,0.11777,0.31332,0.03906,0.38419,0,0.47091,0,0.54505,0],"triangles":[23,24,22,24,25,22,27,21,22,26,22,25,27,22,26,21,28,20,28,21,27,20,29,19,20,28,29,18,19,30,29,30,19,30,31,18,31,17,18,32,17,31,33,16,32,16,17,32,16,33,15,15,33,34,9,10,8,7,8,6,6,8,10,6,10,5,4,5,10,4,10,11,3,4,11,12,3,11,2,3,12,13,2,12,1,2,13,1,13,14,0,1,14,34,0,15,15,0,14],"vertices":[2,93,57.08,52.32,0.50826,94,2.41,53.5,0.49174,2,94,70.1,55.08,0.09551,95,14.82,56.38,0.90449,2,95,78.92,50.57,0.1406,96,6.17,53.95,0.8594,2,96,64.24,57.35,0.05401,97,2.83,55.06,0.94599,2,97,61.16,56.45,0.71689,98,9.2,57.99,0.28311,2,97,107.46,34.33,0.05181,98,56.33,37.71,0.94819,2,97,122.45,5.26,0.00118,98,72.45,9.26,0.99882,1,98,84.1,-12.22,1,1,98,63.61,-38.21,1,1,98,46.67,-47.8,1,2,97,53.05,-54.85,0.11971,98,5.47,-53.54,0.88029,3,96,55.65,-56.91,0.338,97,1.49,-59.52,0.61566,98,-45.86,-60.23,0.04635,2,95,64.85,-58.99,0.11591,96,8.59,-56.48,0.88409,2,94,59.8,-61.44,0.21983,95,11.86,-60.55,0.78017,2,93,48.11,-63.42,0.44206,94,1.65,-62.59,0.55794,2,93,-1.94,-60.25,0.33479,92,44.61,-59.03,0.66521,2,92,-4.27,-59.38,0.3998,91,49.7,-59.37,0.6002,2,91,0.12,-59.35,0.55504,90,51.22,-59.41,0.44496,2,90,7.72,-59.38,0.71447,89,58.18,-60.01,0.28553,3,90,-32.95,-64.45,0.00125,89,17.23,-58.38,0.97999,88,57.01,-60.66,0.01876,3,89,-21.1,-66.05,0.05414,88,17.99,-62.88,0.87745,87,69.93,-64.1,0.06841,3,88,-22.68,-62.11,0.04165,87,29.39,-60.77,0.94924,86,83.39,-62.25,0.00911,2,87,-12.05,-54.84,0.16794,86,42.22,-54.69,0.83206,1,86,1.13,-52.98,1,1,86,-21.97,-39.45,1,1,86,-17.46,-1.67,1,1,86,-9.39,43.79,1,2,87,-20.9,54.62,0.08282,86,37.68,55.03,0.91718,2,88,-23.65,51.79,0.02571,87,35.58,52.97,0.97429,3,89,-32.25,47.68,0.00222,88,22.91,51.3,0.95386,87,82.01,49.55,0.04393,2,89,14.86,49.03,0.98822,88,69.74,46.02,0.01178,2,90,2.88,49.57,0.72416,89,71.18,48.27,0.27584,2,91,-4.1,50.8,0.4673,90,54.8,50.76,0.5327,2,92,-0.33,47.82,0.49072,91,58.69,47.53,0.50928,2,93,-7.46,46.56,0.68268,92,53.42,47.56,0.31732],"edges":[0,68,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,52,52,54,54,56,56,58,58,60,60,62,62,64,64,66,66,68]}},"y-yanjing":{"y-yanjing_shouji":{"type":"mesh","hull":4,"width":17,"height":15,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[75.31,-66.5,-80.66,-69.47,-83.28,67.5,72.7,70.48],"edges":[0,2,2,4,4,6,0,6]},"y_yan_shengli":{"type":"mesh","hull":4,"width":18,"height":7,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[78.53,-25.43,-87.44,-28.59,-88.62,33.4,77.35,36.56],"edges":[0,2,2,4,4,6,0,6]},"y_yanjing_gongji":{"type":"mesh","hull":4,"width":16,"height":17,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[69.31,-66.61,-74.66,-69.36,-77.63,86.62,66.34,89.36],"edges":[0,2,2,4,4,6,0,6]},"y_yanjing_pingshi":{"type":"mesh","hull":4,"width":16,"height":18,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[68.31,-66.63,-74.66,-69.36,-77.78,94.61,65.19,97.34],"edges":[0,2,2,4,4,6,0,6]}},"TX/TX_yan1_4":{"TX/TX_S1_yan_0024":{"type":"mesh","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[96.08,-42.6,-161.92,-42.6,-161.92,197.4,96.08,197.4],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_yan_0029":{"type":"mesh","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[3.26,-92.08,-175.42,94.03,-2.29,260.24,176.39,74.13],"edges":[0,2,2,4,4,6,0,6]}},"TX_SK2_shouji_xian6":{"TX/daoguang_red":{"type":"mesh","hull":4,"width":19,"height":73,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[90.5,-475.16,-84.5,-475.16,-84.5,508.8,90.5,508.8],"edges":[0,2,2,4,4,6,0,6]}},"TX_BZ_cao_hou5":{"TX/cao":{"type":"mesh","hull":4,"width":38,"height":42,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-11.61,-221.38,-260.93,19.98,1.99,291.56,251.3,50.21],"edges":[0,2,2,4,4,6,0,6]}},"TX/TX_yan1_2":{"TX/TX_S1_yan_25":{"type":"mesh","path":"TX/TX_S1_yan_0024","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[96.08,-42.6,-161.92,-42.6,-161.92,197.4,96.08,197.4],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_yan_0029":{"type":"mesh","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[3.26,-92.08,-175.42,94.03,-2.29,260.24,176.39,74.13],"edges":[0,2,2,4,4,6,0,6]}},"BZ/tou":{"BZ/tou_bz":{"type":"mesh","hull":26,"width":61,"height":55,"uvs":[0.02633,0.28602,0.02633,0.13812,0.05011,0.02289,0.1901,0.05464,0.27388,0.08949,0.37414,0.06197,0.49581,0.0432,0.63326,0.04445,0.72396,0.07395,0.82384,0.04529,0.93705,0.04807,0.9512,0.15899,0.93503,0.25608,0.98029,0.35749,0.98605,0.4781,1,0.61789,1,0.73418,0.91012,0.81685,0.80082,0.92943,0.65682,1,0.42471,1,0.22682,0.94696,0.06299,0.83168,0,0.67317,0,0.54813,0,0.41347,0.53176,0.78612,0.59432,0.82758,0.72146,0.82758,0.78402,0.7682,0.66899,0.70993,0.11735,0.74139,0.25647,0.84886,0.42342,0.92677,0.64601,0.9308,0.77546,0.86766,0.85651,0.78438,0.91216,0.71989,0.96055,0.68362],"triangles":[33,26,27,34,27,28,35,28,29,27,30,28,28,30,29,27,26,30,26,5,30,29,30,37,30,6,7,8,9,12,30,7,8,11,9,10,11,12,9,4,5,26,6,30,5,4,25,0,0,3,4,0,1,3,1,2,3,26,25,4,30,8,12,30,13,14,34,28,35,33,32,26,20,33,34,21,33,20,21,32,33,21,22,32,22,31,32,32,31,26,22,23,31,31,25,26,31,23,24,31,24,25,20,34,19,19,34,18,34,33,27,14,37,30,38,37,14,13,30,12,38,14,15,37,38,16,38,15,16,36,29,37,17,37,16,17,36,37,35,29,36,34,35,18,17,35,36,17,18,35],"vertices":[2,12,-152.12,-270.89,0.14492,337,16.05,93.52,0.85508,2,12,-225.68,-274.46,0.00271,337,71.97,45.6,0.99729,1,337,106.99,-1.73,1,3,12,-271.61,-186.01,0.0012,337,44.61,-50.23,0.99053,338,-236.29,274.82,0.00827,3,12,-256.52,-138.9,0.06344,337,1.28,-74.11,0.85626,338,-213.09,231.12,0.0803,3,12,-272.89,-84.18,0.15963,337,-24.39,-125.13,0.61685,338,-162.48,204.65,0.22351,3,12,-285.48,-17.43,0.19266,337,-61.08,-182.3,0.39862,338,-105.9,167.06,0.40872,3,12,-288.55,58.52,0.1555,337,-111.01,-239.61,0.20506,338,-49.38,116.24,0.63944,3,12,-276.31,109.33,0.07985,337,-154.8,-268.14,0.0873,338,-21.54,72.01,0.83285,3,12,-293.25,163.81,0.00305,337,-179.91,-319.37,0.00636,338,29.29,46.1,0.99059,2,12,-294.9,226.4,0.00006,338,75.26,3.59,0.99994,1,338,44.52,-42.97,1,1,12,-191.37,230.32,1,1,12,-142.14,257.76,1,1,12,-82.31,263.85,1,1,12,-13.15,274.94,1,1,12,44.69,277.74,1,1,12,88.23,230.1,1,1,12,147.15,172.44,1,1,12,186.11,94.61,1,2,12,192.34,-33.6,0.95802,337,-397.3,157.6,0.04198,1,12,171.26,-144.18,1,1,12,118.32,-237.46,1,1,12,41.17,-276.08,1,1,12,-21.03,-279.1,1,1,12,-88.01,-282.35,1,1,336,4.9,-71.95,1,1,336,23.84,-36.4,1,1,336,20.43,33.83,1,1,336,-10.77,66.95,1,1,336,-36.68,2,1,1,12,71.95,-209.62,1,1,12,121.68,-130.17,1,2,12,155.95,-36.08,0.96495,337,-369.15,134.42,0.03505,1,12,151.99,86.97,1,1,12,117.11,156.94,1,1,12,73.51,199.7,1,1,12,39.94,228.88,1,1,12,20.6,254.73,1],"edges":[0,50,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50]}},"TX/suduxian_mi_hou2":{"TX/suduxian_mi":{"type":"mesh","hull":4,"width":21,"height":57,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[97.88,-53.66,-89.12,-53.66,-89.12,463.34,97.88,463.34],"edges":[0,2,2,4,4,6,0,6]}},"TX_SK2_shouji_quan3":{"TX/Energy 007 Impact Radial_00008":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[149.95,-149.72,-150.05,-149.72,-150.05,150.28,149.95,150.28],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00010":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[149.95,-149.72,-150.05,-149.72,-150.05,150.28,149.95,150.28],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00012":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[149.95,-149.72,-150.05,-149.72,-150.05,150.28,149.95,150.28],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00015":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[149.95,-149.72,-150.05,-149.72,-150.05,150.28,149.95,150.28],"edges":[0,2,2,4,4,6,0,6]}},"yinying":{"yinying":{"type":"mesh","hull":4,"width":14,"height":5,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[413.28,-158.87,-397.96,-158.87,-397.96,142.99,413.28,142.99],"edges":[0,2,2,4,4,6,0,6]}},"TX/liuguang_mi":{"TX/suduxian_mi":{"type":"mesh","hull":4,"width":21,"height":57,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[101.81,-44.6,-85.19,-44.6,-85.19,472.4,101.81,472.4],"edges":[0,2,2,4,4,6,0,6]}},"TX/shuye8":{"TX/shuye":{"type":"mesh","hull":17,"width":25,"height":30,"uvs":[0.33952,0.02865,0.54277,0.09882,0.79143,0.26075,0.96009,0.46767,0.95361,0.68718,0.87793,0.80593,0.95577,1,0.81738,1,0.78082,0.87662,0.62549,0.9004,0.40588,0.8484,0.22734,0.69389,0.14521,0.46658,0.08629,0.24521,0,0.06841,0,0,0.14275,0],"triangles":[14,15,16,13,14,16,0,13,16,12,13,0,1,12,0,12,2,11,2,10,11,10,2,9,3,5,2,2,12,1,3,4,5,2,5,9,5,8,9,7,8,5,7,5,6],"vertices":[3,154,242.4,-9.4,0.0212,395,141.69,-32.19,0.05046,396,31.73,-41.84,0.92834,3,154,195.77,-42.51,0.46007,395,89.83,-58.36,0.32999,396,-25.59,-56.27,0.20995,2,154,120.91,-70.89,0.99666,395,10.92,-75.88,0.00334,1,154,47.4,-74.65,1,1,154,-3.04,-38.21,1,2,154,-19.61,-2.76,0.99829,395,-115.9,11.12,0.00171,1,154,-76.63,11.24,1,2,154,-56.07,41.41,0.99949,395,-144.16,59.85,0.00051,2,154,-21.75,29.69,0.90374,395,-112.31,43.47,0.09626,2,154,-4.24,67.35,0.28992,395,-88.41,78.2,0.71008,3,154,40.56,106.93,0.00394,395,-37.22,111.01,0.99545,396,-104.11,135.19,0.00061,2,395,27.22,116.31,0.97683,396,-40.11,126.69,0.02317,2,395,88.62,88.99,0.82679,396,12.3,87.14,0.17321,2,395,144.52,58.29,0.25336,396,58.47,45.48,0.74664,2,395,196.42,41.41,0.00112,396,104.41,18.07,0.99888,1,396,114.46,2.47,1,1,396,81.45,-18.9,1],"edges":[0,32,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32]}},"TX_SK2_liuguang":{"TX/liuguang":{"type":"mesh","hull":21,"width":102,"height":26,"uvs":[0.28491,0.08395,0.43367,0.10387,0.60295,0.12776,0.7424,0.1556,0.88291,0.20594,0.97803,0.31922,1,0.47865,1,1,0.924,1,0.82795,0.86191,0.72334,0.77701,0.63233,0.72943,0.54544,0.69125,0.43723,0.62125,0.33968,0.63079,0.22656,0.6658,0.11507,0.76762,0.07491,1,0,0.81335,0,0.18744,0.13101,0.08395,0.07876,0.5572,0.09347,0.52866,0.10171,0.48023,0.1182,0.45947,0.15251,0.42228,0.19086,0.41243,0.22631,0.39956,0.26278,0.3956,0.29721,0.38768,0.32654,0.3956,0.36426,0.3944,0.4028,0.38808,0.44432,0.40599,0.48378,0.42706,0.52395,0.44391,0.56276,0.44497,0.61078,0.48015,0.64959,0.52756,0.69546,0.52966,0.73663,0.56381,0.77875,0.61252,0.8227,0.65943,0.87069,0.72341,0.91574,0.77743,0.94357,0.82577,0.94907,0.78454,0.92123,0.72341,0.87618,0.64522,0.8293,0.57982,0.78864,0.52011,0.74396,0.47177,0.70913,0.4451,0.74413,0.4504,0.78151,0.47318,0.81857,0.50141,0.85188,0.52964,0.88426,0.56606,0.9205,0.60876,0.95721,0.66953,0.95883,0.63286,0.92266,0.58361,0.8873,0.53542,0.85356,0.49141,0.82224,0.45893,0.78337,0.4254,0.74427,0.396,0.70891,0.39915,0.66329,0.38781,0.6174,0.3899,0.56459,0.3899,0.52437,0.38571,0.48791,0.37068,0.44695,0.34854,0.40414,0.33143,0.36395,0.31634,0.32636,0.31734,0.29525,0.32942,0.26114,0.34637,0.22405,0.35202,0.18926,0.35057,0.14992,0.37617,0.11248,0.39263,0.09905,0.39903,0.08574,0.37343,0.06902,0.36886,0.05566,0.45978,0.13069,0.38462,0.13499,0.44127,0.17369,0.41684,0.17047,0.3628,0.34436,0.31686,0.34258,0.39509,0.31482,0.32183,0.31154,0.39155,0.27716,0.33841,0.28019,0.3916,0.24612,0.34866,0.24281,0.39777,0.20499,0.35123,0.21208,0.40473,0.38202,0.32312,0.38602,0.39083],"triangles":[56,50,55,56,63,62,56,55,63,55,64,63,55,54,64,63,64,5,52,68,67,37,68,52,52,67,66,3,67,68,34,72,71,34,33,72,14,100,98,88,89,26,26,100,15,98,100,27,26,89,90,26,90,100,100,80,99,80,100,90,27,99,79,27,100,99,27,79,98,98,79,97,90,84,80,79,99,97,97,99,20,20,99,80,88,25,89,88,82,25,25,82,87,87,81,25,25,81,89,89,81,90,87,84,81,81,84,90,17,18,16,18,21,16,18,86,21,86,18,19,21,22,15,22,23,24,88,26,22,24,88,22,21,86,22,22,86,23,23,86,24,86,83,24,83,85,84,83,86,85,86,19,85,24,83,88,83,82,88,83,84,82,82,84,87,19,80,84,19,84,85,19,20,80,98,28,14,98,97,28,97,78,28,28,78,96,96,78,95,95,78,97,26,15,22,16,21,15,14,31,13,14,92,31,31,92,91,31,101,102,75,101,31,31,91,75,101,75,1,75,91,1,14,15,100,37,35,36,35,37,13,38,37,52,69,68,37,37,36,69,69,36,70,36,35,70,35,71,70,35,34,71,69,70,2,2,70,71,40,11,38,40,38,39,11,12,38,51,39,52,39,38,52,50,40,51,40,39,51,10,41,42,42,49,48,42,41,49,49,41,50,41,40,50,49,50,56,41,10,11,41,11,40,8,45,7,45,46,7,46,59,7,8,9,45,9,44,45,9,43,44,45,44,46,44,47,46,46,47,59,44,43,47,43,48,47,43,42,48,47,48,59,9,10,43,10,42,43,7,59,6,59,60,6,48,58,59,59,58,60,48,57,58,58,61,60,60,61,6,58,57,61,57,62,61,61,62,6,57,56,62,62,63,6,6,63,5,5,65,4,48,49,57,49,56,57,50,54,55,51,53,54,54,65,64,54,53,65,64,65,5,65,53,66,53,52,66,66,67,3,65,66,4,4,66,3,51,54,50,51,52,53,68,69,2,68,2,3,71,72,2,38,12,13,38,13,37,13,31,33,33,31,102,13,34,35,13,33,34,33,102,32,33,73,72,33,32,73,32,102,74,32,74,73,74,102,101,72,73,2,2,73,1,73,74,1,74,101,1,28,96,30,96,94,30,96,29,94,14,30,92,92,30,93,30,94,93,93,76,92,29,96,95,91,92,76,93,94,77,95,77,29,94,29,77,97,0,95,95,0,77,77,0,93,93,0,76,76,0,91,1,91,0,28,30,14,0,97,20],"vertices":[1,346,-8.4,219.82,1,1,348,14.36,213.48,1,1,369,-8.9,230.86,1,1,371,-5.67,209.46,1,1,373,-73.09,262.91,1,1,373,233.57,262.07,1,1,373,335.18,160.62,1,1,368,520.33,-70.83,1,1,368,305.29,-163.72,1,1,354,145.34,-177.46,1,1,353,64.8,-210.32,1,1,352,-57.14,-216.33,1,1,350,31.51,-218.71,1,1,348,74.14,-193.12,1,1,347,-17.78,-217.17,1,1,345,-35.93,-228.74,1,1,342,80.34,-268.29,1,1,172,-1.05,-428.03,1,1,172,-215.71,-257.22,1,1,172,-165.39,237.18,1,1,343,68.13,259.54,1,1,172,46.37,-79.47,1,2,172,93.76,-61.52,0.88889,343,-103.83,-69.83,0.11111,2,172,122.93,-25.84,0.72222,343,-72.48,-36.05,0.27778,2,172,175.15,-14.59,0.58333,343,-19.65,-28.11,0.41667,1,343,89.51,-16.31,1,1,344,38.5,-24.22,1,1,344,148.07,-18.2,1,1,345,88.81,-21.56,1,1,346,25.91,-21.88,1,1,346,116.2,-29.52,1,1,347,51.87,-27.12,1,1,348,-53.27,-21.92,1,1,348,75.5,-20.81,1,1,349,19.27,-22.19,1,1,350,-30.42,-20.93,1,1,350,89.15,-24.38,1,1,350,236.52,-55.54,1,2,352,-25.68,-50.38,0.488,351,166.54,-52.52,0.512,1,352,114.66,-33.28,1,1,353,54.44,-36.45,1,1,354,-57.6,-32.44,1,1,354,82.84,-28.44,1,1,368,67.32,-27.26,1,1,368,211.81,-11.57,1,1,368,305.8,-12.79,1,1,368,308.36,23.98,1,1,368,210.34,34.52,1,1,368,58.24,36.46,1,1,354,83.78,37.96,1,1,354,-49.92,46.64,1,1,353,54.66,40.05,1,2,352,147.51,38.86,0.488,370,121.34,-24.14,0.512,1,371,42.6,-19.66,1,1,371,159.17,-16.26,1,1,372,15.2,-15.8,1,1,372,120.08,-9.05,1,1,373,14.01,-9.5,1,1,373,130.76,-9.46,1,1,373,253.06,-22.74,1,1,373,249.37,6.57,1,1,373,131.32,11.58,1,1,373,15.9,16.51,1,1,372,116.67,21.56,1,1,372,16.78,19.75,1,1,371,157.84,22.09,1,1,371,35.09,22.88,1,1,370,121.29,12.35,1,2,369,176.81,24.17,0.496,370,-19.16,23.72,0.504,1,350,258.46,15.65,1,1,350,95.74,19.21,1,1,350,-28.12,25.25,1,1,349,27.69,23.59,1,1,348,78.12,25.45,1,1,348,-54.52,23.24,1,1,347,48.94,34.8,1,1,346,116.58,32.62,1,1,346,20.57,24.47,1,1,345,86.2,17.77,1,1,344,142.57,19.79,1,1,344,35.45,25.05,1,1,343,87.63,21.12,1,2,172,162.97,40,0.58333,343,-28.36,27.13,0.41667,2,172,121.3,39.14,0.72222,343,-70,28.89,0.27778,2,172,82.54,63.51,0.88889,343,-107.15,55.66,0.11111,1,172,31.64,72.34,1,1,172,-16.62,4.68,1,2,172,219.46,40.64,0.29959,343,28.06,24.21,0.70041,2,172,228.1,-5.45,0.29783,343,33.78,-22.33,0.70217,2,343,154.59,-22.73,0.4478,344,-14.51,-25.69,0.5522,2,343,151.84,21.22,0.47761,344,-22.77,17.57,0.52239,2,346,172.04,32.17,0.52132,347,-11.41,32.43,0.47868,2,346,165.64,-29.85,0.57467,347,-14.87,-29.82,0.42533,1,346,80.95,29.6,1,1,346,70.02,-25.61,1,2,346,-35.29,18.16,0.46964,345,135.87,21.01,0.53036,2,346,-26.58,-24.2,0.50569,345,142.57,-21.72,0.49431,2,345,39.87,18.83,0.59485,344,210.62,19.85,0.40515,2,345,27.28,-19.46,0.45243,344,198.94,-18.73,0.54757,1,344,83.88,22.67,1,1,344,104.09,-20.61,1,2,348,-123,21.67,0.44954,347,104.76,31.2,0.55046,2,348,-104.35,-30.24,0.56473,347,118.83,-22.13,0.43527],"edges":[0,40,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40]}},"TX/shuye7":{"TX/shuye":{"type":"mesh","hull":17,"width":25,"height":30,"uvs":[0.33952,0.02865,0.54277,0.09882,0.79143,0.26075,0.96009,0.46767,0.95361,0.68718,0.87793,0.80593,0.95577,1,0.81738,1,0.78082,0.87662,0.62549,0.9004,0.40588,0.8484,0.22734,0.69389,0.14521,0.46658,0.08629,0.24521,0,0.06841,0,0,0.14275,0],"triangles":[14,15,16,13,14,16,0,13,16,12,13,0,1,12,0,12,2,11,2,10,11,10,2,9,3,5,2,2,12,1,3,4,5,2,5,9,5,8,9,7,8,5,7,5,6],"vertices":[3,153,242.4,-9.4,0.0212,393,141.69,-32.19,0.05046,394,31.73,-41.84,0.92834,3,153,195.77,-42.51,0.46007,393,89.83,-58.36,0.32999,394,-25.59,-56.27,0.20995,2,153,120.91,-70.89,0.99666,393,10.92,-75.88,0.00334,1,153,47.4,-74.65,1,1,153,-3.04,-38.21,1,2,153,-19.61,-2.76,0.99829,393,-115.9,11.12,0.00171,1,153,-76.63,11.24,1,2,153,-56.07,41.41,0.99949,393,-144.16,59.85,0.00051,2,153,-21.75,29.69,0.90374,393,-112.31,43.47,0.09626,2,153,-4.24,67.35,0.28992,393,-88.41,78.2,0.71008,3,153,40.56,106.93,0.00394,393,-37.22,111.01,0.99545,394,-104.11,135.19,0.00061,2,393,27.22,116.31,0.97683,394,-40.11,126.69,0.02317,2,393,88.62,88.99,0.82679,394,12.3,87.14,0.17321,2,393,144.52,58.29,0.25336,394,58.47,45.48,0.74664,2,393,196.42,41.41,0.00112,394,104.41,18.07,0.99888,1,394,114.46,2.47,1,1,394,81.45,-18.9,1],"edges":[0,32,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32]}},"TX/cao2":{"TX/cao":{"type":"mesh","hull":4,"width":38,"height":42,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-11.61,-221.38,-260.93,19.98,1.99,291.56,251.3,50.21],"edges":[0,2,2,4,4,6,0,6]}},"TX_SK2_shouji_lie_quan":{"TX/shuangcdr_00010002":{"type":"mesh","hull":4,"width":84,"height":84,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[995.83,-265.03,-209.98,-964.28,-909.23,241.53,296.58,940.78],"edges":[0,2,2,4,4,6,0,6]}},"BZ/z_bianzi_hou":{"BZ/y_bianzi3_bz":{"type":"mesh","hull":34,"width":81,"height":39,"uvs":[1,0.13615,0.91919,0.20712,0.8516,0.26212,0.78738,0.33309,0.73162,0.40406,0.67298,0.48103,0.62205,0.55993,0.56027,0.64585,0.49348,0.73176,0.41917,0.81768,0.36239,0.88255,0.29643,0.93866,0.22767,0.98104,0.15299,1,0.08071,1,0,1,0,0.90465,0.0157,0.86004,0.06978,0.86613,0.14027,0.86613,0.20883,0.84382,0.27063,0.80935,0.33146,0.75663,0.39133,0.67957,0.45892,0.59643,0.51879,0.51735,0.57705,0.43262,0.63498,0.34746,0.69002,0.2704,0.74313,0.1974,0.81169,0.11426,0.87445,0.05343,0.94977,0,1,0],"triangles":[16,14,15,18,16,17,14,16,18,13,14,19,14,18,19,12,13,19,19,20,12,12,20,11,20,21,11,11,21,10,21,22,10,10,22,9,22,23,9,9,23,8,23,24,8,8,24,7,24,25,7,7,25,6,25,26,6,6,26,5,26,27,5,5,27,4,27,28,4,4,28,3,28,29,3,3,29,2,1,2,30,2,29,30,30,31,1,1,31,0,31,32,0,32,33,0],"vertices":[1,115,47.66,-29.73,1,2,115,-16.71,-29.02,0.14717,114,36.56,-27.82,0.85283,2,114,-16.59,-24.14,0.13167,113,34.76,-24.3,0.86833,2,113,-18.5,-27.15,0.07071,112,37.56,-26.19,0.92929,2,112,-10.35,-27.52,0.16928,111,40.53,-27.3,0.83072,2,111,-10.27,-25.41,0.23526,110,42.89,-24.67,0.76474,2,110,-3.63,-25.04,0.49888,109,55.07,-26,0.50112,2,109,0.64,-27.95,0.58239,108,64.6,-28.89,0.41761,2,108,7.21,-24.36,0.72693,107,64.27,-23.76,0.27307,2,107,1.92,-23.35,0.56545,106,46.19,-22.97,0.43455,2,106,-1.31,-23.93,0.47371,105,52.09,-24.49,0.52629,2,105,-0.21,-24.95,0.46516,104,49.63,-23.14,0.53484,2,104,-3.04,-23.35,0.52023,103,61.03,-23.66,0.47977,2,103,5.9,-19.53,0.72814,102,61.93,-17.83,0.27186,2,102,8.8,-17.39,0.77994,101,44.11,-16.4,0.22006,1,100,6.04,-21.56,1,1,100,-17.69,1.91,1,1,100,-20.67,21.1,1,3,102,1.16,29.53,0.41209,101,32.1,29.59,0.58649,100,8.8,47.86,0.00142,3,103,5.81,28.25,0.57187,102,52.96,29.1,0.428,100,45.25,84.7,0.00013,2,104,-3.01,26.63,0.44748,103,56.75,26.14,0.55252,2,105,-1.24,24.11,0.39422,104,43.97,25.61,0.60578,2,106,-1.22,25.66,0.45995,105,47.13,24.85,0.54005,3,107,7.66,28.82,0.69707,106,50.26,29.37,0.30275,104,141.81,44.62,0.00018,2,108,14.5,28.88,0.73729,107,65.22,29.97,0.26271,2,109,-1.9,26.32,0.55636,108,66.37,25.41,0.44364,2,110,-4.24,30.45,0.42348,109,50.11,29.28,0.57652,2,111,-7.15,28.96,0.34366,110,47.74,29.57,0.65634,2,112,-13.8,28.26,0.18085,111,41.47,28.58,0.81915,3,113,-28.22,29.58,0.05048,112,32.77,31.17,0.92845,111,88.12,27.83,0.02107,3,114,-21.15,35.17,0.10951,113,29.72,34.98,0.85177,112,90.95,31.55,0.03872,3,115,-25.61,33.39,0.06388,114,29.66,34.85,0.88221,113,80.53,35.06,0.05391,2,115,32.63,28.64,0.95671,114,87.72,28.25,0.04329,1,115,66.53,14.03,1],"edges":[0,66,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,52,52,54,54,56,56,58,58,60,60,62,62,64,64,66]}},"TX/cao5":{"TX/cao":{"type":"mesh","hull":4,"width":38,"height":42,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-11.61,-221.38,-260.93,19.98,1.99,291.56,251.3,50.21],"edges":[0,2,2,4,4,6,0,6]}},"TX/cao6":{"TX/cao":{"type":"mesh","hull":4,"width":38,"height":42,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-11.61,-221.38,-260.93,19.98,1.99,291.56,251.3,50.21],"edges":[0,2,2,4,4,6,0,6]}},"TX/TX_yan1_5":{"TX/TX_S1_yan_26":{"type":"mesh","path":"TX/TX_S1_yan_0024","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[96.08,-42.6,-161.92,-42.6,-161.92,197.4,96.08,197.4],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_yan_0029":{"type":"mesh","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0,0.54466,0.88587,0.87646,0.73758,0.80749,0.44302,0.25573,0.75562],"triangles":[6,2,3,5,6,3,7,2,6,4,7,6,5,4,6,1,2,7,5,3,0,4,5,0,1,7,4,1,4,0],"vertices":[3.27,-92.05,-175.39,94.02,-2.3,260.21,176.35,74.14,-58.33,11.64,26.62,-25.45,65.28,36.33,-87.4,87.05],"edges":[0,6,0,2,2,4,4,6]}},"TX/cao8":{"TX/cao":{"type":"mesh","hull":4,"width":38,"height":42,"uvs":[0.96254,0.91005,0,0.91005,0,0,0.96254,0,0.11601,0.49311,0.37589,0.7182,0.19984,0.15065,0.75523,0.17759,0.77409,0.47194,0.7175,0.76438,0.5184,0.47772,0.60315,0.87964,0.89667,0.5941],"triangles":[6,2,3,7,6,3,8,7,3,10,6,7,10,7,8,4,2,6,4,6,10,12,8,3,5,4,10,9,10,8,9,8,12,5,10,9,11,5,9,4,1,2,1,4,5,3,0,12,9,12,0,11,9,0,1,5,11,1,11,0],"vertices":[-4.39,-204.6,-244.39,27.6,-5.23,274.78,234.76,42.58,-105.89,112.86,-100.25,-10.97,5.01,185.65,136.4,44.36,63.75,-40.14,-27.21,-105.92,-1.52,19.97,-86.01,-109.64,62.21,-102.89],"edges":[0,6,0,2,2,4,4,6]}},"TX/cao9":{"TX/cao":{"type":"mesh","hull":4,"width":38,"height":42,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-11.61,-221.38,-260.93,19.98,1.99,291.56,251.3,50.21],"edges":[0,2,2,4,4,6,0,6]}},"TX_guangquan5":{"TX/Energy 007 Impact Radial_00008":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[151.32,-148.3,-148.68,-148.3,-148.68,151.7,151.32,151.7],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00010":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[151.32,-148.3,-148.68,-148.3,-148.68,151.7,151.32,151.7],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00012":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[151.32,-148.3,-148.68,-148.3,-148.68,151.7,151.32,151.7],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00015":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[151.32,-148.3,-148.68,-148.3,-148.68,151.7,151.32,151.7],"edges":[0,2,2,4,4,6,0,6]}},"TX_cao_hou4":{"TX/cao":{"type":"mesh","hull":4,"width":38,"height":42,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-11.61,-221.38,-260.93,19.98,1.99,291.56,251.3,50.21],"edges":[0,2,2,4,4,6,0,6]}},"BZ/z_shou":{"BZ/z_shou_bz":{"type":"mesh","hull":18,"width":27,"height":43,"uvs":[0.87905,0.07096,1,0.16975,1,0.36175,0.90757,0.5607,0.68822,0.7861,0.48422,0.89323,0.38112,1,0.26047,0.8974,0.10254,0.93914,0.09157,0.83479,0,0.84314,0,0.79296,0,0.59613,0,0.47166,0.04989,0.26296,0.13544,0.09323,0.36796,0,0.60047,0,0.03125,0.74039],"triangles":[4,18,12,12,13,4,11,12,18,14,4,13,18,7,9,11,18,9,10,11,9,4,5,18,5,7,18,8,9,7,6,7,5,0,1,2,3,0,2,3,4,17,3,17,0,16,17,4,14,15,16,4,14,16],"vertices":[1,135,-18.62,94.87,1,2,135,12.63,132.48,0.99713,333,-126.63,140.21,0.00287,2,135,85.93,148.66,0.94239,333,-52.85,154.05,0.05761,2,135,166.84,143.05,0.73681,333,27.84,145.86,0.26319,2,135,264.62,108.92,0.24517,333,124.48,108.64,0.75483,2,135,316.43,68.55,0.03253,333,174.98,66.64,0.96747,1,333,220.73,49.2,1,1,333,186.81,12.4,1,1,333,210.08,-23.09,1,1,333,170.48,-33.28,1,1,333,177.87,-55,1,1,333,158.58,-58.62,1,1,333,82.95,-72.81,1,2,135,181.35,-84.24,0.01441,333,35.11,-81.78,0.98559,2,135,99.01,-89.75,0.71374,333,-47.37,-84.66,0.28626,1,135,29.62,-83.34,1,1,135,-18.4,-34.88,1,1,135,-30.83,21.42,1,1,333,136.95,-54.79,1],"edges":[0,34,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34]}},"zui":{"zui_gongji":{"type":"mesh","hull":4,"width":48,"height":9,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[188.48,-4.16,-244.44,-12.42,-246.08,73.57,186.84,81.82],"edges":[0,2,2,4,4,6,0,6]},"zui_pingshi":{"type":"mesh","hull":24,"width":49,"height":14,"uvs":[1,0.17233,0.86894,0.41782,0.83366,0.61904,0.69907,0.86019,0.55266,1,0.38224,1,0.28016,0.84387,0.15319,0.60757,0.10588,0.43944,0.03119,0.34401,0,0.2304,0,0,0.01737,0,0.03791,0.22033,0.13458,0.37913,0.24817,0.45853,0.39439,0.51587,0.52973,0.52911,0.67836,0.52911,0.81051,0.4138,0.90091,0.26087,0.96485,0.12807,0.97367,0,1,0],"triangles":[6,7,16,16,7,15,7,8,15,8,14,15,8,9,14,9,13,14,9,10,13,13,11,12,13,10,11,2,19,1,1,20,0,1,19,20,20,21,0,0,21,23,21,22,23,3,4,6,3,17,18,17,3,6,17,6,16,5,6,4,3,18,2,18,19,2],"vertices":[2,312,194.27,59.14,0.00043,314,32.14,-2.96,0.99957,2,312,124.99,48.14,0.27623,314,-32.58,-12.21,0.72377,2,312,106.7,22.48,0.53279,314,-50.95,-37.21,0.46721,2,312,52.35,-11.63,0.89116,314,-106.13,-72.38,0.10884,3,312,-8.38,-33.09,0.98659,314,-167.76,-94.67,0.00002,313,201.94,-72.05,0.01339,2,312,-79.1,-27.5,0.79363,313,129.94,-65.55,0.20637,2,312,-122.12,-6.17,0.5566,313,86.34,-43.73,0.4434,2,312,-180.78,16.9,0.13688,313,28.52,-20.82,0.86312,2,312,-208.12,31.1,0.00767,313,2.32,-7.48,0.99233,1,313,-33.19,-8.13,1,1,313,-51.18,0.11,1,1,313,-61.03,26.68,1,1,313,-53.72,29.39,1,1,313,-35.65,7.19,1,2,312,-197.89,42.91,0.03554,313,11.89,3.82,0.96446,2,312,-144.03,43.43,0.36757,313,64.1,4.66,0.63243,2,312,-78.69,33.61,0.77907,313,130.14,-5.13,0.22093,2,312,-19.86,25.33,0.97505,313,190.34,-13.65,0.02495,2,312,43.87,29.88,0.88655,314,-114.44,-31.23,0.11345,2,312,100.04,50.87,0.4989,314,-57,-9.78,0.5011,2,312,145.03,65.23,0.04985,314,-13.22,3.65,0.95015,2,312,180.44,70.81,0.00032,314,19.62,8.09,0.99968,2,312,190.6,85.18,0.00044,314,29.28,21.14,0.99956,2,312,202.55,80.57,0.00045,314,40.21,16.64,0.99955],"edges":[0,46,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46]},"zui_shouji":{"type":"mesh","hull":4,"width":49,"height":12,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[191.78,-20.1,-257.14,-28.66,-259.29,84.32,189.63,92.88],"edges":[0,2,2,4,4,6,0,6]}},"TX_feng_quan_faguang3":{"TX/TX_S1_shua_0010":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0012":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0014":{"type":"mesh","hull":18,"width":38,"height":14,"uvs":[1,0.24114,1,0.66059,0.80807,1,0.64514,1,0.40863,1,0.23781,1,0,0.70399,0,0.30984,0.11036,0.16882,0.21022,0.47979,0.37052,0.55211,0.52294,0.60274,0.66616,0.58466,0.80413,0.4581,0.8396,0.30623,0.75157,0.14351,0.78967,0,0.858,0],"triangles":[17,15,16,0,15,17,0,14,15,7,8,9,13,14,0,1,13,0,6,7,9,10,6,9,4,5,10,5,6,10,11,4,10,3,11,12,4,11,3,12,13,1,2,3,12,1,2,12],"vertices":[165.81,69.11,165.81,16.68,99.79,-25.75,43.74,-25.75,-37.62,-25.75,-96.38,-25.75,-178.19,11.25,-178.19,60.52,-140.23,78.15,-105.87,39.28,-50.73,30.24,1.7,23.91,50.97,26.17,98.43,41.99,110.64,60.97,80.35,81.31,93.46,99.25,116.96,99.25],"edges":[0,34,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34]},"TX/TX_S1_shua_0016":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0018":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]}},"TX_huaban2":{"TX/hua_a3":{"type":"mesh","hull":4,"width":23,"height":13,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[102.11,175.5,4.27,-10.32,-101.91,45.59,-4.08,231.41],"edges":[0,2,2,4,4,6,0,6]}},"TX_huaban3":{"TX/hua_a5":{"type":"mesh","hull":4,"width":35,"height":25,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[130.7,-24.85,-189.3,-24.85,-189.3,202.15,130.7,202.15],"edges":[0,2,2,4,4,6,0,6]}},"TX/guangyun2":{"TX/guangyun":{"type":"mesh","hull":4,"width":22,"height":22,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[98.14,-101.6,-100.86,-101.6,-100.86,102.4,98.14,102.4],"edges":[0,2,2,4,4,6,0,6]}},"BZ/y_bianzi_1_liuguang":{"TX/liuguang3":{"type":"mesh","hull":4,"width":46,"height":29,"uvs":[1,1,0,1,0,0,1,0,0.07199,0.45436,0.1407,0.61282,0.28216,0.75384,0.45292,0.83148,0.63581,0.87268,0.78536,0.8505,0.91041,0.78511,0.92349,0.57833,0.784,0.31345,0.63689,0.17332,0.38298,0.11009,0.20862,0.17332,0.09856,0.23484],"triangles":[14,2,3,15,2,14,13,14,3,16,2,15,12,13,3,4,2,16,11,12,3,15,4,16,5,4,15,14,5,15,13,5,14,6,13,12,7,6,12,13,6,5,12,11,7,7,11,8,10,9,11,9,8,11,4,1,2,1,4,5,1,5,6,3,0,11,10,11,0,9,10,0,8,9,0,1,7,8,1,6,7,0,1,8],"vertices":[411.59,-68.56,12.19,-177.53,-57.3,77.16,342.11,186.13,3.03,-30.71,41.48,-63.58,107.78,-84.09,181.38,-85.26,257.29,-75.82,315.48,-53.87,360.88,-23.6,351.73,30.49,277.62,82.76,209.12,102.42,103.32,90.85,38.07,55.75,-1.61,28.09],"edges":[0,6,0,2,2,4,4,6]}},"TX_SK2_shouji_lie10":{"TX/atk_guangci3_0025":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-26.93,-15.82,405.97,392.61,729.31,49.9,296.42,-358.53],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0027":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-26.93,-15.82,405.97,392.61,729.31,49.9,296.42,-358.53],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0028":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-26.93,-15.82,405.97,392.61,729.31,49.9,296.42,-358.53],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0030":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-26.93,-15.82,405.97,392.61,729.31,49.9,296.42,-358.53],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0031":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-28.82,-17.83,404.08,390.6,727.42,47.89,294.52,-360.54],"edges":[0,2,2,4,4,6,0,6]}},"BZ/y_bianzi_hou2":{"BZ/z_bianzi1_bz":{"type":"mesh","hull":12,"width":39,"height":22,"uvs":[0.66802,0.06985,0.84411,0.24062,1,0.55612,1,0.90924,0.87538,1,0.57915,1,0.37344,0.9324,0.16608,0.78189,0,0.57349,0,0.14221,0.26811,0,0.4837,0,0.05746,0.3043,0.21874,0.21747,0.51333,0.29272,0.76347,0.47218,0.97413,0.77031],"triangles":[13,9,10,14,11,0,14,0,1,13,10,11,14,13,11,12,9,13,15,14,1,15,1,2,8,9,12,16,15,2,13,8,12,7,13,14,6,7,14,7,8,13,16,2,3,15,6,14,5,6,15,16,5,15,16,4,5,3,4,16],"vertices":[1,67,210.57,102.32,1,1,67,278.96,85.72,1,1,67,348.11,39.49,1,1,67,366.58,-28.31,1,1,67,329.24,-57.2,1,1,67,229.21,-84.45,1,1,67,156.2,-90.4,1,1,67,78.31,-80.57,1,1,67,11.32,-55.84,1,1,67,-11.24,26.97,1,1,67,71.87,78.94,1,1,67,144.67,98.77,1,1,67,16.65,1.13,1,1,67,66.57,32.64,1,1,67,169.98,45.29,1,1,67,263.84,33.85,1,1,67,350.57,-4.02,1],"edges":[0,22,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22]}},"TX_SK2_shouji_lie12":{"TX/atk_guangci3_0025":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[13.76,-28.04,-361.05,434.28,4.95,731,379.76,268.69],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0027":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[13.76,-28.04,-361.05,434.28,4.95,731,379.76,268.69],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0028":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[13.76,-28.04,-361.05,434.28,4.95,731,379.76,268.69],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0030":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[13.76,-28.04,-361.05,434.28,4.95,731,379.76,268.69],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0031":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[15.62,-30.08,-359.19,432.24,6.81,728.96,381.62,266.65],"edges":[0,2,2,4,4,6,0,6]}},"TX_SK2_shouji_xian7":{"TX/daoguang_red":{"type":"mesh","hull":4,"width":19,"height":73,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[90.5,-475.16,-84.5,-475.16,-84.5,508.8,90.5,508.8],"edges":[0,2,2,4,4,6,0,6]}},"BZ/z_bianzi2_bz_g2":{"BZ/z_bianzi2_bz_g":{"type":"mesh","hull":55,"width":152,"height":44,"uvs":[0.42168,0.29139,0.46165,0.31204,0.50191,0.34884,0.53606,0.3727,0.57095,0.3951,0.60705,0.42261,0.64245,0.43675,0.6744,0.45073,0.70204,0.46405,0.73037,0.47918,0.75567,0.4781,0.77652,0.4781,0.80025,0.47116,0.83078,0.45166,0.85468,0.4291,0.89608,0.36972,0.96429,0.4422,0.96286,0.63423,0.93075,0.74286,0.8727,0.81011,0.83856,0.81857,0.80242,0.81915,0.77212,0.81556,0.74606,0.80899,0.71835,0.79723,0.68176,0.78071,0.65156,0.76233,0.61668,0.73564,0.58163,0.70065,0.54313,0.65547,0.50475,0.61451,0.47116,0.56909,0.43306,0.5291,0.39499,0.496,0.35714,0.46707,0.32113,0.45438,0.2841,0.44461,0.25243,0.44218,0.21567,0.45114,0.18885,0.47402,0.1652,0.50344,0.14378,0.5345,0.12334,0.57376,0.10519,0.61185,0.09312,0.56282,0.09312,0.49984,0.11062,0.46849,0.12993,0.42887,0.15257,0.39565,0.1765,0.35929,0.20583,0.33045,0.24436,0.30538,0.28045,0.28075,0.32379,0.26224,0.37251,0.26161],"triangles":[43,44,42,46,41,42,42,44,45,47,40,41,46,42,45,47,41,46,48,39,40,48,40,47,49,39,48,49,38,39,50,37,38,38,49,50,36,51,52,50,51,37,36,37,51,53,54,35,34,35,54,53,35,52,35,36,52,20,13,19,14,17,18,16,17,14,18,19,14,14,19,13,14,15,16,12,20,21,12,13,20,22,11,21,23,11,22,10,11,23,21,11,12,24,10,23,9,10,24,25,9,24,25,8,9,25,26,8,7,8,26,27,7,26,6,7,27,6,27,28,29,5,28,6,28,5,4,5,29,4,29,30,4,30,3,31,3,30,2,3,31,32,2,31,1,2,32,1,32,33,54,0,34,1,33,0,33,34,0],"vertices":[2,54,68.38,41.8,0.90112,55,-7.28,41.53,0.09888,2,55,48.36,45.51,0.92463,56,-15.28,43.97,0.07537,2,56,42.16,46.22,0.98777,57,-19.4,46.37,0.01223,3,56,90.02,50.96,0.01699,57,28.47,51.11,0.97187,58,-23.13,52.06,0.01114,2,57,77.12,56.71,0.05115,58,25.71,55.73,0.94885,3,58,76.71,57.84,0.08482,59,29.06,58.45,0.85712,60,-18.89,58.7,0.05806,3,59,77.83,64.73,0.01414,60,29.88,64.99,0.8852,61,-12.99,66.33,0.10066,3,60,74.02,70.19,0.01274,61,31.42,68.02,0.83478,62,-8.37,68.53,0.15248,3,61,69.93,69,0.10245,62,30.05,65.85,0.87336,63,-20.8,67.06,0.02419,3,62,69.49,62.51,0.14491,63,18.6,63.42,0.82827,64,-26.47,66.13,0.02682,2,63,53.41,66.02,0.44545,64,8.43,65.17,0.55455,3,63,82.13,67.8,0.02219,64,37.18,64.02,0.96015,65,-19.28,65.99,0.01765,2,64,70.01,65.5,0.32852,65,13.55,64.35,0.67148,2,65,56.35,66.45,0.85782,66,4.31,67,0.14218,2,65,90.25,71,0.10086,66,38.51,67.81,0.89914,1,66,99.73,77.12,1,1,66,183.99,26.05,1,1,66,163.37,-48.37,1,1,66,109.8,-80,1,1,66,25.53,-86.82,1,2,65,47.15,-81.15,0.24388,66,-21.01,-78.71,0.75612,3,64,67.42,-74.4,0.22109,65,-2.3,-74.68,0.757,66,-69.45,-66.85,0.02191,1,64,25.7,-71.29,1,2,63,48.43,-67.57,0.49802,64,-10.13,-67.21,0.50198,2,62,61.86,-66.19,0.13752,63,9.96,-65.22,0.86248,2,61,63.21,-61.17,0.11595,62,11.03,-63.09,0.88405,2,61,20.89,-60.71,0.96559,62,-31.06,-58.63,0.03441,3,59,72.36,-60.46,0.06591,60,24.4,-60.2,0.86101,61,-28.35,-58.03,0.07309,3,58,71.52,-59.19,0.00026,59,22.03,-58.49,0.96937,60,-25.93,-58.23,0.03037,3,57,71.33,-54.62,0.13521,58,15.51,-55.29,0.81103,59,-33.92,-53.71,0.05377,3,56,77.42,-54.67,0.13127,57,15.86,-54.52,0.86368,58,-39.92,-52.98,0.00505,3,55,83.8,-52.43,0.18717,56,27.74,-50.89,0.80836,57,-33.81,-50.74,0.00447,2,54,100.36,-49.61,0.00569,55,28.98,-48.27,0.99431,2,54,46.31,-45.58,0.973,55,-25.2,-46.8,0.027,3,54,-7.14,-43.15,0.19654,52,100.86,-46.72,0.02845,53,50.12,-41.68,0.77501,2,52,51.65,-38.15,0.95344,53,0.22,-39.33,0.04656,2,52,0.94,-30.65,0.51658,51,52.96,-30.73,0.48342,1,51,9.47,-26.35,1,1,49,38.72,-20.15,1,2,49,0.59,-21.08,0.4784,48,52.24,-21.07,0.5216,2,48,17.54,-20.65,0.93133,47,80.56,-23.68,0.06867,2,48,-14.53,-21.91,0.1316,47,48.65,-20.19,0.8684,1,47,16.33,-20.24,1,1,47,-13,-21.42,1,1,47,-17.96,3.91,1,1,47,-5.63,26.02,1,1,47,21.61,25.27,1,2,48,-17.46,24.56,0.13467,47,52.64,26.21,0.86533,2,48,16.49,26.05,0.91002,47,86.43,22.66,0.08998,2,49,-6.02,27.65,0.42359,48,52.54,28.1,0.57641,2,49,36.01,30.16,0.78904,50,-14.31,29.29,0.21096,2,51,2.65,29.34,0.24846,50,39.8,28.43,0.75154,4,52,0.54,35.42,0.49848,53,-59.69,27.27,0.01368,51,53.08,35.33,0.48352,50,90.58,28.06,0.00432,2,52,60.73,38.65,0.18567,53,-0.37,38,0.81433,2,54,-0.53,41.87,0.39186,53,66.74,41.96,0.60814],"edges":[0,108,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,52,52,54,54,56,56,58,58,60,60,62,62,64,64,66,66,68,68,70,70,72,72,74,74,76,76,78,78,80,80,82,82,84,84,86,86,88,88,90,90,92,92,94,94,96,96,98,98,100,100,102,102,104,104,106,106,108]}},"TX/suduxian_su3":{"TX/suduxian_su":{"type":"mesh","hull":4,"width":21,"height":57,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[90.71,-0.96,-96.29,-0.96,-96.29,516.04,90.71,516.04],"edges":[0,2,2,4,4,6,0,6]}},"TX/chentu_hou":{"TX/chentu1":{"type":"mesh","hull":4,"width":77,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[72.1,-24.64,-624.9,-24.64,-624.9,435.36,72.1,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu3":{"type":"mesh","hull":4,"width":76,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[71.1,-24.64,-623.9,-24.64,-623.9,435.36,71.1,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu4":{"type":"mesh","hull":4,"width":78,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[77.6,-24.64,-630.4,-24.64,-630.4,435.36,77.6,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu5":{"type":"mesh","hull":4,"width":76,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[68.1,-24.64,-620.9,-24.64,-620.9,435.36,68.1,435.36],"edges":[0,2,2,4,4,6,0,6]}},"BZ/shenti":{"BZ/shenti_bz":{"type":"mesh","hull":21,"width":82,"height":56,"uvs":[0.58604,0.08229,0.7193,0.19505,0.85376,0.32367,0.9426,0.4752,1,0.58796,1,0.74477,0.96661,0.8593,0.85856,0.95796,0.7121,1,0.58964,1,0.41431,1,0.27898,0.92751,0.1658,0.81738,0.10674,0.63863,0.04646,0.47433,0,0.36058,0,0.18624,0.04819,0.10167,0.13703,0.02767,0.24748,0,0.42876,0],"triangles":[15,16,17,18,14,15,17,18,15,19,13,14,3,4,5,18,19,14,0,12,13,10,2,3,0,13,20,20,13,19,1,12,0,2,12,1,10,11,2,8,9,3,12,2,11,6,7,5,3,9,10,8,3,5,7,8,5],"vertices":[-17.51,127.93,93.32,158.34,210.53,183.71,312.06,176.63,383.02,166.75,439.77,110.61,463.68,51.87,442.61,-40.85,380.87,-133.7,316.52,-198.74,224.39,-291.87,127.04,-337.79,27.71,-358.47,-68.01,-325.84,-159.15,-299.03,-224.73,-282.98,-287.83,-220.56,-293.11,-164.68,-273.22,-91,-225.19,-22.42,-129.93,73.86],"edges":[0,40,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40]}},"z-yanjing":{"z-yanjing_shouji":{"type":"mesh","hull":4,"width":10,"height":13,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[41.18,-51.38,-49.81,-53.12,-52.13,68.86,38.85,70.59],"edges":[0,2,2,4,4,6,0,6]},"z_yan_shengli":{"type":"mesh","hull":4,"width":8,"height":7,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[26.63,-22.65,-43.36,-23.99,-44.64,43,25.35,44.33],"edges":[0,2,2,4,4,6,0,6]},"z_yanjing_gongji":{"type":"mesh","hull":4,"width":7,"height":16,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[24.3,-57.7,-38.69,-58.91,-41.42,84.07,21.57,85.27],"edges":[0,2,2,4,4,6,0,6]},"z_yanjing_pingshi":{"type":"mesh","hull":4,"width":7,"height":17,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[30.3,-57.59,-35.69,-58.85,-38.7,99.12,27.29,100.38],"edges":[0,2,2,4,4,6,0,6]}},"TX/suduxian_su1":{"TX/suduxian_su":{"type":"mesh","hull":4,"width":21,"height":57,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[90.71,-0.96,-96.29,-0.96,-96.29,516.04,90.71,516.04],"edges":[0,2,2,4,4,6,0,6]}},"BZ/z_jiao":{"BZ/z_jiao_bz":{"type":"mesh","hull":17,"width":27,"height":32,"uvs":[0.78348,0.04082,0.9349,0.19716,1,0.43879,1,0.672,0.86649,0.90056,0.62777,1,0.38909,1,0.13067,1,0.13833,0.88458,0,0.86841,0.07707,0.75683,0,0.72448,0,0.70043,0.0755,0.624,0.28403,0.23278,0.51097,0,0.67623,0,0.26466,0.97191],"triangles":[10,11,12,17,8,10,10,12,13,17,10,13,9,10,8,13,6,17,6,13,14,7,8,17,14,5,6,7,17,6,2,4,5,1,14,0,14,15,16,0,14,16,14,1,2,3,4,2,2,5,14],"vertices":[1,134,-52.36,-18.65,1,1,134,-40.46,38.71,1,2,134,3.97,95.2,0.92257,335,-90.67,106.28,0.07743,2,134,56.54,137.75,0.65588,335,-33.74,142.77,0.34412,2,134,128.63,154.03,0.32068,335,39.72,151.01,0.67932,2,134,187.85,126.72,0.1101,335,95.56,117.34,0.8899,2,134,224.64,81.27,0.01107,335,127.12,68.1,0.98893,1,335,161.29,14.8,1,1,335,132.1,-1.68,1,1,335,146.44,-32.74,1,1,335,109.01,-34.31,1,1,335,111.3,-55.27,1,1,335,105.43,-59.03,1,2,134,188.23,-47.06,0.00054,335,76.79,-55.42,0.99946,2,134,67.9,-78.73,0.89583,335,-46.3,-73.64,0.10417,1,134,-19.55,-77.99,1,1,134,-45.02,-46.52,1,2,134,237.49,52.45,0.00009,335,136.71,38.05,0.99991],"edges":[0,32,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32]}},"TX_huarui":{"TX/hua_a4":{"type":"mesh","hull":4,"width":24,"height":17,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[84.71,-7.7,-131.29,-7.7,-131.29,147.3,84.71,147.3],"edges":[0,2,2,4,4,6,0,6]}},"TX/suduxian_su4":{"TX/suduxian_su":{"type":"mesh","hull":4,"width":21,"height":57,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[90.71,-0.96,-96.29,-0.96,-96.29,516.04,90.71,516.04],"edges":[0,2,2,4,4,6,0,6]}},"TX/guangyun":{"TX/guangyun":{"type":"mesh","hull":4,"width":22,"height":22,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[98.14,-101.6,-100.86,-101.6,-100.86,102.4,98.14,102.4],"edges":[0,2,2,4,4,6,0,6]}},"TX/suduxian_mi1":{"TX/suduxian_mi":{"type":"mesh","hull":22,"width":21,"height":57,"uvs":[1,1,0.90488,1,0.80035,1,0.72679,1,0.63774,1,0.52159,1,0.4248,1,0.35511,1,0.21186,1,0.14604,1,0,1,0,0,0.13442,0,0.23509,0,0.35124,0,0.45964,0,0.57192,0,0.65322,0,0.73066,0,0.79648,0,0.88552,0,1,0],"triangles":[10,11,12,8,9,12,10,12,9,13,8,12,6,7,14,13,14,7,8,13,7,15,6,14,5,15,16,6,15,5,4,16,17,5,16,4,3,17,18,4,17,3,2,19,20,3,18,19,2,3,19,1,20,21,2,20,1,1,21,0],"vertices":[97.88,-53.66,80.1,-53.66,60.55,-53.66,46.79,-53.66,30.14,-53.66,8.42,-53.66,-9.68,-53.66,-22.71,-53.66,-49.5,-53.66,-61.81,-53.66,-89.12,-53.66,-89.12,463.34,-63.98,463.34,-45.16,463.34,-23.44,463.34,-3.16,463.34,17.83,463.34,33.04,463.34,47.52,463.34,59.82,463.34,76.48,463.34,97.88,463.34],"edges":[0,42,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42]}},"TX/suduxian_mi2":{"TX/suduxian_mi":{"type":"mesh","hull":4,"width":21,"height":57,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[97.88,-53.66,-89.12,-53.66,-89.12,463.34,97.88,463.34],"edges":[0,2,2,4,4,6,0,6]}},"TX_huabao":{"TX/hua_b":{"type":"mesh","hull":4,"width":14,"height":25,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[69.47,-35.3,-54.53,-35.3,-54.53,195.7,69.47,195.7],"edges":[0,2,2,4,4,6,0,6]}},"TX_feng_quan2":{"TX/TX_S1_shua_0010":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0012":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0014":{"type":"mesh","hull":18,"width":38,"height":14,"uvs":[1,0.24114,1,0.66059,0.80807,1,0.64514,1,0.40863,1,0.23781,1,0,0.70399,0,0.30984,0.11036,0.16882,0.21022,0.47979,0.37052,0.55211,0.52294,0.60274,0.66616,0.58466,0.80413,0.4581,0.8396,0.30623,0.75157,0.14351,0.78967,0,0.858,0],"triangles":[17,15,16,0,15,17,0,14,15,7,8,9,13,14,0,1,13,0,6,7,9,10,6,9,4,5,10,5,6,10,11,4,10,3,11,12,4,11,3,12,13,1,2,3,12,1,2,12],"vertices":[165.81,69.11,165.81,16.68,99.79,-25.75,43.74,-25.75,-37.62,-25.75,-96.38,-25.75,-178.19,11.25,-178.19,60.52,-140.23,78.15,-105.87,39.28,-50.73,30.24,1.7,23.91,50.97,26.17,98.43,41.99,110.64,60.97,80.35,81.31,93.46,99.25,116.96,99.25],"edges":[0,34,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34]},"TX/TX_S1_shua_0016":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0018":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]}},"TX_SK2_shouji_quan":{"TX/Energy 007 Impact Radial_00008":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[149.95,-149.72,-150.05,-149.72,-150.05,150.28,149.95,150.28],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00010":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[149.95,-149.72,-150.05,-149.72,-150.05,150.28,149.95,150.28],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00012":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[149.95,-149.72,-150.05,-149.72,-150.05,150.28,149.95,150.28],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00015":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[149.95,-149.72,-150.05,-149.72,-150.05,150.28,149.95,150.28],"edges":[0,2,2,4,4,6,0,6]}},"TX_feng_quan4":{"TX/TX_S1_shua_0010":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0012":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0014":{"type":"mesh","hull":18,"width":38,"height":14,"uvs":[1,0.24114,1,0.66059,0.80807,1,0.64514,1,0.40863,1,0.23781,1,0,0.70399,0,0.30984,0.11036,0.16882,0.21022,0.47979,0.37052,0.55211,0.52294,0.60274,0.66616,0.58466,0.80413,0.4581,0.8396,0.30623,0.75157,0.14351,0.78967,0,0.858,0],"triangles":[17,15,16,0,15,17,0,14,15,7,8,9,13,14,0,1,13,0,6,7,9,10,6,9,4,5,10,5,6,10,11,4,10,3,11,12,4,11,3,12,13,1,2,3,12,1,2,12],"vertices":[165.81,69.11,165.81,16.68,99.79,-25.75,43.74,-25.75,-37.62,-25.75,-96.38,-25.75,-178.19,11.25,-178.19,60.52,-140.23,78.15,-105.87,39.28,-50.73,30.24,1.7,23.91,50.97,26.17,98.43,41.99,110.64,60.97,80.35,81.31,93.46,99.25,116.96,99.25],"edges":[0,34,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34]},"TX/TX_S1_shua_0016":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0018":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]}},"TX_feng_quan1":{"TX/TX_S1_shua_0010":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0012":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0014":{"type":"mesh","hull":18,"width":38,"height":14,"uvs":[1,0.24114,1,0.66059,0.80807,1,0.64514,1,0.40863,1,0.23781,1,0,0.70399,0,0.30984,0.11036,0.16882,0.21022,0.47979,0.37052,0.55211,0.52294,0.60274,0.66616,0.58466,0.80413,0.4581,0.8396,0.30623,0.75157,0.14351,0.78967,0,0.858,0],"triangles":[17,15,16,0,15,17,0,14,15,7,8,9,13,14,0,1,13,0,6,7,9,10,6,9,4,5,10,5,6,10,11,4,10,3,11,12,4,11,3,12,13,1,2,3,12,1,2,12],"vertices":[165.81,69.11,165.81,16.68,99.79,-25.75,43.74,-25.75,-37.62,-25.75,-96.38,-25.75,-178.19,11.25,-178.19,60.52,-140.23,78.15,-105.87,39.28,-50.73,30.24,1.7,23.91,50.97,26.17,98.43,41.99,110.64,60.97,80.35,81.31,93.46,99.25,116.96,99.25],"edges":[0,34,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34]},"TX/TX_S1_shua_0016":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0018":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]}},"tou":{"tou":{"type":"mesh","hull":23,"width":61,"height":53,"uvs":[0.02209,0.30663,0.04675,0.15245,0.07373,0.038,0.1614,0.04443,0.28055,0.09715,0.40981,0.07144,0.5402,0.06758,0.62695,0.077,0.69013,0.03127,0.79201,0.02389,0.84617,0.12126,0.8797,0.25699,0.96481,0.42665,1,0.62139,1,0.72305,0.91608,0.83676,0.73772,0.9489,0.5226,1,0.40129,1,0.20292,0.93646,0.05511,0.81631,0,0.69172,0,0.50328,0.55782,0.76702,0.63627,0.80319,0.7557,0.79917,0.83063,0.76166,0.85054,0.6679,0.72057,0.6478,0.5789,0.68799,0.62456,0.09716,0.66641,0.10829,0.72187,0.13278,0.79095,0.18732,0.82695,0.22406,0.85906,0.26302,0.13631,0.80963,0.25006,0.89191,0.40435,0.93828,0.58087,0.93379,0.73778,0.87096,0.84631,0.79766,0.93653,0.7124,0.97042,0.68392],"triangles":[39,23,24,23,37,29,40,24,25,28,25,24,24,23,29,24,29,28,25,26,41,25,28,26,26,27,42,26,28,27,29,31,28,27,28,12,30,6,7,32,9,10,32,8,9,30,7,31,29,5,30,35,11,12,35,34,11,4,29,0,0,1,4,1,3,4,1,2,3,31,7,8,17,39,16,18,38,17,17,38,39,19,37,18,18,37,38,15,40,41,15,16,40,16,39,40,39,38,23,20,36,19,19,36,37,38,37,23,39,24,40,40,25,41,15,42,14,15,41,42,20,21,36,29,37,36,41,26,42,29,36,21,0,29,22,42,43,14,43,13,14,42,27,43,4,5,29,29,21,22,29,30,31,30,5,6,43,27,13,27,12,13,28,35,12,28,34,35,28,33,34,33,31,32,33,28,31,34,10,11,34,33,10,33,32,10,31,8,32],"vertices":[3,311,-267.51,151.37,0.42361,323,5.06,102.55,0.57632,324,-229.48,341.17,0.00007,3,311,-255.23,226.56,0.19647,323,58.57,48.32,0.80333,324,-154.92,356.8,0.00021,3,311,-241.29,282.45,0.10382,323,95.52,4.13,0.89576,324,-97.76,363.93,0.00042,3,311,-192.49,280.25,0.16716,323,64.99,-34.01,0.83236,324,-82.23,317.62,0.00049,2,311,-125.77,255.89,0.36077,323,5.99,-73.56,0.63923,2,311,-54.15,269.75,0.88932,323,-25.01,-139.59,0.11068,2,311,18.3,273,0.64525,324,-13.05,118.37,0.35475,3,311,66.61,269.34,0.35155,323,-96.49,-236.92,0.03867,324,0.93,71.99,0.60978,3,311,101.31,292.23,0.16316,323,-98.45,-278.45,0.00391,324,34.79,47.86,0.83293,3,311,157.87,296.89,0.08333,323,-128.01,-326.89,0.00335,324,59.51,-3.23,0.91332,3,311,188.88,250.15,0.15395,323,-184.04,-324.41,0.00168,324,27.08,-48.99,0.84437,3,311,208.77,184.55,0.3741,323,-248.77,-301.83,0.00056,324,-26.95,-91.18,0.62534,1,311,257.65,103.01,1,1,311,279.01,8.75,1,3,311,279.95,-40.65,0.96315,323,-472.65,-226.65,0.00032,324,-211.38,-238.7,0.03653,2,311,234.34,-96.78,0.99905,323,-491.14,-156.72,0.00095,2,311,136.23,-153.16,0.9981,323,-478.88,-44.23,0.0019,2,311,17.11,-180.26,0.99778,323,-430.59,67.98,0.00222,2,311,-50.32,-181.54,0.9981,323,-391.89,123.22,0.0019,2,311,-161.18,-152.76,0.99905,323,-303.32,195.83,0.00095,2,311,-244.46,-95.94,0.96981,323,-208.34,229.64,0.03019,1,311,-276.24,-35.98,1,2,311,-277.98,55.59,0.91415,323,-66.16,167.44,0.08585,1,325,-84.1,-21.84,1,1,325,-40.15,-38.59,1,1,325,26.2,-35.37,1,1,325,67.51,-16.36,1,1,325,77.71,29.41,1,1,325,5.28,37.81,1,1,325,-73.11,16.78,1,1,324,-8.64,69.51,1,1,311,88.83,254.55,1,1,311,119.89,243.24,1,1,311,158.79,217.46,1,1,311,179.14,199.99,1,1,324,-34,-81.66,1,2,311,-199.38,-91.83,0.9996,323,-231.59,190.8,0.0004,2,311,-135.39,-130.61,0.9992,323,-300.62,161.94,0.0008,2,311,-49.19,-151.51,0.9984,323,-368.3,104.61,0.0016,2,311,48.9,-147.47,0.99813,323,-422.83,22.98,0.00187,2,311,135.54,-115.29,0.9984,323,-447.88,-65.99,0.0016,2,311,195.2,-78.52,0.9992,323,-453.32,-135.85,0.0008,2,311,244.56,-36.14,0.99973,323,-448.17,-200.71,0.00027,1,311,263.14,-21.94,1],"edges":[0,44,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44]}},"TX_shouji3_1":{"TX/atk_guangci3_0025":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[8.36,-34.66,-183.13,211.66,11.87,363.26,203.36,116.94],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0027":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[8.36,-34.66,-183.13,211.66,11.87,363.26,203.36,116.94],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0028":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[8.36,-34.66,-183.13,211.66,11.87,363.26,203.36,116.94],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0030":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[8.36,-34.66,-183.13,211.66,11.87,363.26,203.36,116.94],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0031":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[8.36,-34.66,-183.13,211.66,11.87,363.26,203.36,116.94],"edges":[0,2,2,4,4,6,0,6]}},"TX_guangquan2":{"TX/Energy 007 Impact Radial_00008":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-81.79,-195.45,-192.78,83.26,85.93,194.25,196.92,-84.46],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00010":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-81.79,-195.45,-192.78,83.26,85.93,194.25,196.92,-84.46],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00012":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-81.79,-195.45,-192.78,83.26,85.93,194.25,196.92,-84.46],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00015":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-81.79,-195.45,-192.78,83.26,85.93,194.25,196.92,-84.46],"edges":[0,2,2,4,4,6,0,6]}},"z_houtui":{"z_houtui":{"type":"mesh","hull":13,"width":14,"height":21,"uvs":[1,0.24428,1,0.4378,1,0.65747,0.82561,0.85099,0.84102,0.94775,0.42877,1,0.11669,1,0,0.91375,0,0.62347,0,0.3855,0,0.18152,0.26695,0,0.74855,0],"triangles":[4,5,3,3,5,8,8,5,6,8,6,7,9,1,3,1,9,11,1,11,12,12,0,1,9,10,11,2,3,1,3,8,9],"vertices":[1,321,38.85,69.28,1,1,321,75.98,65.18,1,2,321,118.12,60.53,0.44444,322,13.53,66.41,0.55556,2,321,152.74,33.73,0.11111,322,54.13,50.05,0.88889,1,322,72.22,55.12,1,1,322,91.08,3.52,1,1,322,97.83,-36.8,1,2,321,152.92,-75.11,0.11111,322,83.94,-54.62,0.88889,2,321,97.23,-68.96,0.44444,322,28.68,-63.87,0.55556,1,321,51.58,-63.93,1,1,321,12.45,-59.61,1,1,321,-18.54,-21.01,1,1,321,-11.62,41.71,1],"edges":[0,24,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24]}},"TX_SK2_shouji_lie11":{"TX/atk_guangci3_0025":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[16.9,-26.27,-408.72,389.75,-79.37,726.69,346.24,310.68],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0027":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[16.9,-26.27,-408.72,389.75,-79.37,726.69,346.24,310.68],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0028":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[16.9,-26.27,-408.72,389.75,-79.37,726.69,346.24,310.68],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0030":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[16.9,-26.27,-408.72,389.75,-79.37,726.69,346.24,310.68],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0031":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[18.98,-28.08,-406.63,387.94,-77.29,724.88,348.33,308.87],"edges":[0,2,2,4,4,6,0,6]}},"TX/shuyefaguang9":{"TX/shuyefaguang":{"type":"mesh","hull":4,"width":38,"height":44,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-176.58,-18.69,50.27,313.99,392.92,80.33,166.07,-252.34],"edges":[0,2,2,4,4,6,0,6]}},"TX/suduxian_su2":{"TX/suduxian_su":{"type":"mesh","hull":4,"width":21,"height":57,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[90.71,-0.96,-96.29,-0.96,-96.29,516.04,90.71,516.04],"edges":[0,2,2,4,4,6,0,6]}},"TX/cao10":{"TX/cao":{"type":"mesh","hull":4,"width":38,"height":42,"uvs":[0.96254,0.91005,0,0.91005,0,0,0.96254,0,0.11601,0.49311,0.37589,0.7182,0.19984,0.15065,0.75523,0.17759,0.77409,0.47194,0.7175,0.76438,0.5184,0.47772,0.60315,0.87964,0.89667,0.5941],"triangles":[6,2,3,7,6,3,8,7,3,10,6,7,10,7,8,4,2,6,4,6,10,12,8,3,5,4,10,9,10,8,9,8,12,5,10,9,11,5,9,4,1,2,1,4,5,3,0,12,9,12,0,11,9,0,1,5,11,1,11,0],"vertices":[-4.39,-204.6,-244.39,27.6,-5.23,274.78,234.76,42.58,-105.89,112.86,-100.25,-10.97,5.01,185.65,136.4,44.36,63.75,-40.14,-27.21,-105.92,-1.52,19.97,-86.01,-109.64,62.21,-102.89],"edges":[0,6,0,2,2,4,4,6]}},"TX_feng1":{"TX/TX_S1_shua_0010":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0012":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0014":{"type":"mesh","hull":18,"width":38,"height":14,"uvs":[1,0.24114,1,0.66059,0.80807,1,0.64514,1,0.40863,1,0.23781,1,0,0.70399,0,0.30984,0.11036,0.16882,0.21022,0.47979,0.37052,0.55211,0.52294,0.60274,0.66616,0.58466,0.80413,0.4581,0.8396,0.30623,0.75157,0.14351,0.78967,0,0.858,0],"triangles":[17,15,16,0,15,17,0,14,15,7,8,9,13,14,0,1,13,0,6,7,9,10,6,9,4,5,10,5,6,10,11,4,10,3,11,12,4,11,3,12,13,1,2,3,12,1,2,12],"vertices":[165.81,69.11,165.81,16.68,99.79,-25.75,43.74,-25.75,-37.62,-25.75,-96.38,-25.75,-178.19,11.25,-178.19,60.52,-140.23,78.15,-105.87,39.28,-50.73,30.24,1.7,23.91,50.97,26.17,98.43,41.99,110.64,60.97,80.35,81.31,93.46,99.25,116.96,99.25],"edges":[0,34,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34]},"TX/TX_S1_shua_0016":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0018":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]}},"TX/huiji1":{"TX/huiji":{"type":"mesh","hull":20,"width":75,"height":48,"uvs":[0.44331,0.0713,0.56151,0.16221,0.67438,0.26659,0.79684,0.39454,0.86498,0.50228,0.94378,0.67063,1,0.88275,1,1,0.64735,1,0.61753,0.87713,0.55684,0.73404,0.47272,0.61451,0.38114,0.48488,0.27146,0.37545,0.13517,0.27276,0,0.17343,0,0,0.0826,0,0.24019,0,0.3379,0],"triangles":[15,16,17,14,17,18,15,17,14,8,6,7,9,5,6,8,9,6,10,11,3,4,10,3,9,10,4,5,9,4,19,14,18,0,14,19,13,0,1,0,13,14,12,13,1,12,1,2,11,12,2,11,2,3],"vertices":[3,142,227.28,-70.71,0.00014,143,91.19,-90.3,0.84119,144,-48.52,-93.07,0.15866,3,142,142.03,-90.27,0.303,143,3.75,-92.79,0.69661,144,-135.76,-100.77,0.00039,3,142,53.55,-102.39,0.79901,143,-85.39,-87.35,0.07781,141,196.54,-94.19,0.12318,3,142,-46.37,-110.54,0.23745,141,98.65,-115.81,0.76024,140,261.02,-56.28,0.00231,3,142,-111.72,-102.65,0.03365,141,32.83,-116.85,0.8482,140,203.32,-87.96,0.11815,2,141,-56.85,-104.9,0.30404,140,118.45,-119.3,0.69596,2,141,-149.39,-68.72,0.00677,140,19.73,-130.55,0.99323,1,139,122.88,2.48,1,1,139,-117.98,2.48,1,3,142,-78.72,129.08,0.02022,141,34.12,117.21,0.53017,140,95.08,119.58,0.44961,4,142,-7.94,106.04,0.32943,143,-104.86,129.09,0.01491,141,107.36,103.97,0.57826,140,166.03,142.1,0.07741,4,142,69.13,100.88,0.68023,143,-30.29,108.94,0.23388,141,184.43,109.31,0.08447,140,231.66,182.83,0.00142,3,142,152.94,95.5,0.15713,143,50.85,87.24,0.83886,144,-99.07,81.67,0.00401,3,143,143.82,79.24,0.58865,144,-5.77,78.63,0.39562,145,-69.32,97.56,0.01573,3,143,247.02,66.64,0.00319,144,96.05,71.94,0.32983,145,30.06,67.18,0.66698,2,144,192.69,76.72,0.00004,145,126.01,49.05,0.99996,1,145,144.46,-23.56,1,1,145,89.78,-37.45,1,3,143,223.98,-70.01,0.00431,144,81.31,-64.64,0.63518,145,-16.27,-63.32,0.3605,3,143,161.72,-89.76,0.25286,144,21.5,-87.85,0.74509,145,-80.99,-71.98,0.00205],"edges":[0,38,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38]}},"BZ/y_shou":{"BZ/y_shou_bz":{"type":"mesh","hull":19,"width":34,"height":33,"uvs":[0.62362,0.18867,0.80079,0.39264,0.94223,0.63584,1,0.70488,1,0.7441,0.94818,0.7849,1,0.91199,0.88118,0.90885,0.82908,1,0.75315,0.97318,0.70253,1,0.53986,0.91919,0.28508,0.82828,0,0.64434,0,0.46356,0,0.2843,0.0802,0.12748,0.21122,0,0.31841,0],"triangles":[5,2,3,4,5,3,12,0,1,11,12,1,1,2,11,2,5,11,7,5,6,11,5,9,7,9,5,10,11,9,8,9,7,0,14,15,0,13,14,18,16,17,0,16,18,0,15,16,12,13,0],"vertices":[2,68,108.29,91.29,0.75335,334,-32.41,88.72,0.24665,2,68,186.93,67.56,0.09981,334,48.89,76.97,0.90019,1,334,128.91,49.12,1,1,334,155.9,44.71,1,1,334,163.28,35.69,1,1,334,158.4,16.04,1,1,334,194.87,-2.9,1,1,334,165.5,-25.74,1,1,334,170.03,-57.02,1,2,68,262.24,-88.29,0.00097,334,146.59,-65.92,0.99903,2,68,252.69,-103.24,0.00501,334,139.37,-82.12,0.99499,2,68,196.65,-108.63,0.09617,334,84.77,-95.8,0.90383,2,68,114.29,-126.18,0.58822,334,5.94,-125.44,0.41178,2,68,9.66,-124.82,0.97093,334,-97.73,-139.69,0.02907,2,68,-17.79,-78.67,0.99849,334,-131.75,-98.14,0.00151,2,68,-45,-32.9,0.99999,334,-165.48,-56.94,0.00001,1,68,-47.23,19.98,1,1,68,-31.32,73.49,1,1,68,-2.48,90.64,1],"edges":[0,36,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36]}},"TX/cao1":{"TX/cao":{"type":"mesh","hull":4,"width":38,"height":42,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-11.61,-221.38,-260.93,19.98,1.99,291.56,251.3,50.21],"edges":[0,2,2,4,4,6,0,6]}},"TX/TX_yan1_1_hou2":{"TX/TX_S1_yan_27":{"type":"mesh","path":"TX/TX_S1_yan_0024","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[96.08,-42.6,-161.92,-42.6,-161.92,197.4,96.08,197.4],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_yan_0029":{"type":"mesh","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[3.26,-92.08,-175.42,94.03,-2.29,260.24,176.39,74.13],"edges":[0,2,2,4,4,6,0,6]}},"TX_shouji3_2":{"TX/atk_guangci3_0025":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[8.36,-34.66,-183.13,211.66,11.87,363.26,203.36,116.94],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0027":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[8.36,-34.66,-183.13,211.66,11.87,363.26,203.36,116.94],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0028":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[8.36,-34.66,-183.13,211.66,11.87,363.26,203.36,116.94],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0030":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[8.36,-34.66,-183.13,211.66,11.87,363.26,203.36,116.94],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0031":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[8.36,-34.66,-183.13,211.66,11.87,363.26,203.36,116.94],"edges":[0,2,2,4,4,6,0,6]}},"BZ/zhongzi":{"BZ/zhongzi_bz":{"type":"mesh","hull":37,"width":76,"height":71,"uvs":[0.49814,0.02103,0.51545,0.05907,0.55951,0.0185,0.59176,0.02695,0.57603,0.05907,0.57638,0.102,0.60183,0.14686,0.69756,0.17311,0.8055,0.21359,0.89816,0.27704,1,0.53503,1,0.65186,0.98249,0.74694,0.9218,0.84875,0.80192,0.90818,0.65791,0.92935,0.53134,1,0.41832,1,0.3331,1,0.19629,0.94056,0.10289,0.85137,0.05194,0.72568,0.01703,0.68919,0,0.65372,0,0.51376,0.02352,0.3912,0.08144,0.31578,0.11392,0.23281,0.19816,0.17608,0.27594,0.14429,0.36301,0.12431,0.41627,0.10342,0.42473,0.04529,0.40359,0,0.45263,0.0244,0.43656,0,0.47532,0,0.94981,0.41069,0.05686,0.70142,0.0597,0.62667,0.09257,0.52488,0.15348,0.43243,0.22213,0.37842,0.31205,0.30883,0.38263,0.24651,0.43581,0.17172,0.45979,0.11825,0.46897,0.06543,0.46176,0.03584,0.50241,0.07247,0.50831,0.10698,0.5129,0.17319,0.54306,0.26053,0.59623,0.32839,0.67108,0.41913,0.72671,0.50693,0.75946,0.59108,0.76097,0.60648,0.77304,0.71348,0.75418,0.8059,0.70815,0.87318,0.54923,0.09886,0.55167,0.1238,0.57978,0.17171,0.61643,0.21306,0.67936,0.25113,0.75878,0.28263,0.83149,0.31236,0.88406,0.35755,0.92822,0.41026,0.42992,0.11787,0.41366,0.15482,0.37864,0.17833,0.32361,0.19849,0.24732,0.22806,0.17814,0.25907,0.1106,0.30588,0.52134,0.07293,0.54042,0.05141],"triangles":[22,23,39,38,22,39,21,22,38,39,40,19,19,38,39,19,20,38,21,38,20,58,59,60,14,59,13,60,59,14,57,60,15,15,60,14,40,18,19,55,17,18,15,17,55,16,17,15,34,35,36,48,34,36,48,36,0,32,33,34,4,2,3,78,2,4,78,1,2,47,48,0,49,47,0,1,49,0,77,1,78,49,1,77,61,78,4,77,78,61,61,4,5,50,49,77,50,77,61,31,32,47,48,32,34,47,32,48,46,70,31,47,46,31,50,46,47,50,47,49,62,61,5,50,61,62,62,5,6,71,30,31,71,31,70,63,62,6,45,70,46,71,70,45,51,50,62,51,62,63,46,50,51,45,46,51,72,30,71,73,29,30,73,30,72,64,6,7,63,6,64,74,28,29,74,29,73,45,44,72,45,72,71,73,72,44,65,64,7,66,65,7,75,27,28,75,28,74,52,51,63,52,63,64,8,66,7,67,66,8,76,27,75,43,74,73,43,73,44,9,67,8,76,26,27,53,52,64,53,64,65,68,67,9,43,42,75,43,75,74,76,75,42,9,37,68,69,68,37,9,10,37,54,53,65,54,65,66,41,76,42,26,76,41,25,26,41,67,55,54,67,54,66,55,67,68,55,68,69,40,24,25,41,40,25,56,55,69,10,57,56,39,24,40,37,10,69,23,24,39,57,10,58,56,69,10,11,58,10,12,58,11,15,55,57,57,55,56,58,60,57,13,58,12,59,58,13,54,55,42,53,54,43,42,40,41,52,44,45,52,45,51,53,43,44,53,44,52,54,42,43,18,40,42,42,55,18],"vertices":[1,355,-313.75,-17.47,1,1,355,-290.45,-3.16,1,1,355,-319.47,24.76,1,1,355,-316.19,47.56,1,1,355,-294.49,38.68,1,1,355,-266.91,41.59,1,1,355,-239.77,61.96,1,1,355,-229.27,129.7,1,2,355,-210.45,206.76,0.99225,137,-395.76,205.04,0.00775,2,355,-175.84,274.7,0.97271,137,-362.61,273.7,0.02729,2,355,-16.77,361.05,0.81373,137,-205.43,363.45,0.18627,2,355,58.35,368.3,0.72121,137,-130.48,372.31,0.27879,2,355,120.63,362.11,0.63962,137,-68.08,367.46,0.36038,2,355,190.13,326.51,0.53821,137,2.17,333.36,0.46179,2,355,236.33,247.4,0.39483,137,50.05,255.26,0.60517,2,355,259.55,149.26,0.16576,137,75.37,157.64,0.83424,2,355,313.4,66.23,0.01236,137,131,75.79,0.98764,1,137,140.21,-2.09,1,1,137,147.16,-60.82,1,2,355,297.54,-168.86,0.04334,137,120.18,-159.59,0.95666,2,355,246.42,-238.91,0.15064,137,70.58,-230.72,0.84936,2,355,169.02,-281.9,0.34289,137,-5.88,-275.36,0.65711,2,355,147.89,-308.28,0.4125,137,-26.44,-302.19,0.5875,2,355,126.21,-322.24,0.45562,137,-47.81,-316.61,0.54438,2,355,36.24,-330.93,0.62544,137,-137.57,-327.23,0.37456,2,355,-44.12,-322.29,0.75866,137,-218.1,-320.32,0.24134,2,355,-96.47,-286.97,0.85293,137,-271.19,-286.13,0.14707,2,355,-151.97,-269.69,0.91573,137,-327.06,-270.05,0.08427,2,355,-194.07,-215.03,0.95898,137,-370.31,-216.3,0.04102,2,355,-219.69,-163.28,0.98424,137,-397.05,-165.12,0.01576,2,355,-238.35,-104.38,0.99725,137,-416.96,-106.64,0.00275,2,355,-255.32,-68.9,0.99992,137,-434.69,-71.52,0.00008,1,355,-293.25,-66.67,1,1,355,-320.96,-84.07,1,1,355,-308.55,-48.69,1,1,355,-323.17,-61.3,1,1,355,-325.75,-34.53,1,2,355,-93.35,318.67,0.89995,137,-281.09,319.43,0.10005,2,355,153.09,-280.01,0.34289,137,-21.84,-273.81,0.65711,2,355,104.85,-282.69,0.49112,137,-70.02,-277.53,0.50888,2,355,37.21,-266.31,0.62444,137,-137.99,-262.6,0.37556,2,355,-26.28,-229.97,0.78112,137,-202.24,-227.64,0.21888,2,355,-65.58,-185.91,0.89813,137,-242.48,-184.43,0.10187,2,355,-116.31,-128.13,0.96262,137,-294.45,-127.76,0.03738,2,355,-161.09,-83.25,0.98651,137,-340.18,-83.85,0.01349,1,355,-212.72,-51.17,1,1,355,-248.69,-37.92,1,1,355,-283.26,-34.86,1,1,355,-301.8,-41.68,1,1,355,-280.96,-11.33,1,1,355,-259.17,-5.11,1,1,355,-216.91,2.17,1,1,355,-162.78,28.42,1,1,355,-122.69,69.35,1,2,355,-69.34,126.68,0.96926,137,-252.96,128.01,0.03074,2,355,-16.61,170.55,0.88906,137,-201.18,173,0.11094,2,355,35.31,198.4,0.75751,137,-149.87,201.95,0.24249,2,355,45.11,200.4,0.75751,137,-140.12,204.16,0.24249,2,355,113.09,215.38,0.56316,137,-72.47,220.6,0.43684,2,355,173.76,208.08,0.46509,137,-11.66,214.61,0.53491,2,355,220.08,180.47,0.23528,137,35.25,188,0.76472,1,355,-267.12,22.65,1,1,355,-251.25,25.88,1,1,355,-222.32,48.27,1,1,355,-198.18,76.15,1,2,355,-177.9,121.98,0.99876,137,-361.39,120.97,0.00124,2,355,-162.95,178.78,0.98978,137,-347.66,178.09,0.01022,2,355,-148.68,230.84,0.97561,137,-334.52,230.44,0.02439,2,355,-123.14,269.96,0.95878,137,-309.82,270.09,0.04122,2,355,-92.2,303.73,0.89995,137,-279.61,304.52,0.10005,2,355,-246.94,-58.57,0.99992,137,-426.54,-61.02,0.00008,2,355,-222.1,-67.51,0.99951,137,-401.51,-69.42,0.00049,2,355,-204.65,-90.24,0.99775,137,-383.58,-91.77,0.00225,2,355,-188.02,-126.99,0.99056,137,-366.16,-128.16,0.00944,2,355,-163.92,-177.85,0.97003,137,-340.98,-178.49,0.02997,2,355,-139.36,-223.7,0.93727,137,-315.44,-223.8,0.06273,2,355,-104.77,-267.44,0.85293,137,-279.91,-266.79,0.14707,1,355,-281.93,1.77,1,1,355,-297.04,13.61,1],"edges":[0,72,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,52,52,54,54,56,56,58,58,60,60,62,62,64,64,66,66,68,68,70,70,72]}},"TX_shouji3_4":{"TX/atk_guangci3_0025":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[8.36,-34.66,-183.13,211.66,11.87,363.26,203.36,116.94],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0027":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[8.36,-34.66,-183.13,211.66,11.87,363.26,203.36,116.94],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0028":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[8.36,-34.66,-183.13,211.66,11.87,363.26,203.36,116.94],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0030":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[8.36,-34.66,-183.13,211.66,11.87,363.26,203.36,116.94],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0031":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[8.36,-34.66,-183.13,211.66,11.87,363.26,203.36,116.94],"edges":[0,2,2,4,4,6,0,6]}},"TX/cao3":{"TX/cao":{"type":"mesh","hull":4,"width":38,"height":42,"uvs":[0.96254,0.91005,0,0.91005,0,0,0.96254,0,0.11601,0.49311,0.37589,0.7182,0.19984,0.15065,0.75523,0.17759,0.77409,0.47194,0.7175,0.76438,0.5184,0.47772,0.60315,0.87964,0.89667,0.5941],"triangles":[6,2,3,7,6,3,8,7,3,10,6,7,10,7,8,4,2,6,4,6,10,12,8,3,5,4,10,9,10,8,9,8,12,5,10,9,11,5,9,4,1,2,1,4,5,3,0,12,9,12,0,11,9,0,1,5,11,1,11,0],"vertices":[-4.39,-204.6,-244.39,27.6,-5.23,274.78,234.76,42.58,-105.89,112.86,-100.25,-10.97,5.01,185.65,136.4,44.36,63.75,-40.14,-27.21,-105.92,-1.52,19.97,-86.01,-109.64,62.21,-102.89],"edges":[0,6,0,2,2,4,4,6]}},"TX_SK2_shouji_xian1":{"TX/daoguang_red":{"type":"mesh","hull":4,"width":19,"height":73,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[90.5,-475.16,-84.5,-475.16,-84.5,508.8,90.5,508.8],"edges":[0,2,2,4,4,6,0,6]}},"TX/shuye9":{"TX/shuye":{"type":"mesh","hull":17,"width":25,"height":30,"uvs":[0.33952,0.02865,0.54277,0.09882,0.79143,0.26075,0.96009,0.46767,0.95361,0.68718,0.87793,0.80593,0.95577,1,0.81738,1,0.78082,0.87662,0.62549,0.9004,0.40588,0.8484,0.22734,0.69389,0.14521,0.46658,0.08629,0.24521,0,0.06841,0,0,0.14275,0],"triangles":[14,15,16,13,14,16,0,13,16,12,13,0,1,12,0,12,2,11,2,10,11,10,2,9,3,5,2,2,12,1,3,4,5,2,5,9,5,8,9,7,8,5,7,5,6],"vertices":[3,155,242.4,-9.4,0.0212,397,141.69,-32.19,0.05046,398,31.73,-41.84,0.92834,3,155,195.77,-42.51,0.46007,397,89.83,-58.36,0.32999,398,-25.59,-56.27,0.20995,2,155,120.91,-70.89,0.99666,397,10.92,-75.88,0.00334,1,155,47.4,-74.65,1,1,155,-3.04,-38.21,1,2,155,-19.61,-2.76,0.99829,397,-115.9,11.12,0.00171,1,155,-76.63,11.24,1,2,155,-56.07,41.41,0.99949,397,-144.16,59.85,0.00051,2,155,-21.75,29.69,0.90374,397,-112.31,43.47,0.09626,2,155,-4.24,67.35,0.28992,397,-88.41,78.2,0.71008,3,155,40.56,106.93,0.00394,397,-37.22,111.01,0.99545,398,-104.11,135.19,0.00061,2,397,27.22,116.31,0.97683,398,-40.11,126.69,0.02317,2,397,88.62,88.99,0.82679,398,12.3,87.14,0.17321,2,397,144.52,58.29,0.25336,398,58.47,45.48,0.74664,2,397,196.42,41.41,0.00112,398,104.41,18.07,0.99888,1,398,114.46,2.47,1,1,398,81.45,-18.9,1],"edges":[0,32,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32]}},"TX/z_bianzi2_bz_liuguang":{"TX/z_bianzi2_bz_liuguang":{"type":"mesh","hull":4,"width":27,"height":16,"uvs":[1,1,0,1,0,0,1,0,0.19234,0.59948,0.33806,0.66956,0.50713,0.72756,0.67133,0.77556,0.72972,0.73956,0.77594,0.57956,0.76377,0.39756,0.66647,0.36756,0.51078,0.32556,0.33441,0.24956,0.23589,0.24756,0.17994,0.43356],"triangles":[13,14,2,3,13,2,12,13,3,11,12,3,10,11,3,15,2,14,9,10,3,13,4,15,12,4,13,13,15,14,12,5,4,6,5,12,6,12,11,9,6,11,9,11,10,8,6,9,7,6,8,1,2,15,1,15,4,1,4,5,9,3,0,8,9,0,7,8,0,1,6,7,1,5,6,7,0,1],"vertices":[154.51,-45.43,-55.84,-84.39,-79.53,43.54,130.82,82.49,-24.87,-25.66,7.45,-28.95,44.38,-29.78,80.06,-29.52,91.49,-22.64,97.42,-0.38,90.55,22.43,69.37,22.48,35.63,21.79,-3.27,24.64,-24.04,21.06,-31.41,-4.92],"edges":[0,6,0,2,2,4,4,6]}},"zhonzi":{"zhonzi":{"type":"mesh","hull":21,"width":61,"height":57,"uvs":[0.37945,0.05436,0.52209,0.09492,0.72909,0.08754,0.90304,0.16311,1,0.25343,1,0.46686,0.91359,0.66579,0.73143,0.84305,0.55485,0.95532,0.40429,1,0.14406,1,0.04183,0.9435,0,0.84896,0,0.63498,0.03503,0.45987,0.12548,0.31979,0.1394,0.16864,0.09417,0.07095,0.16723,0.05805,0.15331,0,0.34466,0,0.20405,0.09359,0.22168,0.15747,0.23007,0.27984,0.21336,0.38271,0.18309,0.46566,0.14865,0.53423,0.13821,0.63046,0.16431,0.70788,0.20746,0.77151,0.29245,0.8121,0.27123,0.07193,0.29999,0.12309,0.35032,0.16663,0.43148,0.19166,0.52598,0.2069,0.59994,0.21778,0.67184,0.25915,0.72218,0.32663,0.74991,0.39411,0.18868,0.06243,0.17904,0.02363,0.21502,0.02022,0.25614,0.04405],"triangles":[4,39,38,39,4,5,6,39,5,30,28,26,29,28,30,25,39,30,7,39,6,28,12,13,12,28,29,11,12,29,7,8,39,10,11,29,10,29,30,8,30,39,9,30,8,10,30,9,42,19,20,41,19,42,43,42,20,18,19,41,40,41,42,18,41,40,31,43,20,31,20,0,43,21,40,43,40,42,21,43,31,32,31,0,22,21,31,22,31,32,33,32,0,34,33,0,16,17,18,21,16,18,21,18,40,1,34,0,36,35,1,34,1,35,2,36,1,37,36,2,37,2,3,33,23,22,33,22,32,16,21,22,16,22,23,15,16,23,38,37,3,24,15,23,4,38,3,25,14,15,24,25,15,26,14,25,26,13,14,27,13,26,27,26,28,26,25,30,23,34,24,34,23,33,25,24,39,38,39,35,28,13,27,24,35,39,36,38,35,37,38,36,35,24,34],"vertices":[1,327,108.73,150.7,1,2,327,164.07,90.82,0.98174,326,184.09,266.62,0.01826,2,327,262.76,31.41,0.85174,326,282.88,207.1,0.14826,2,327,321.48,-57.78,0.5893,326,341.54,117.83,0.4107,2,327,338.78,-130.1,0.38004,326,358.74,45.49,0.61996,2,327,274.04,-225.23,0.15674,326,293.87,-49.62,0.84326,2,327,174.16,-284.26,0.03222,326,193.93,-108.6,0.96778,1,326,58.32,-126.35,1,1,326,-54.82,-117.98,1,2,327,-155.21,-265.14,0.03888,326,-135.46,-89.48,0.96112,2,327,-270.82,-185.25,0.21604,326,-251.15,-9.64,0.78396,2,327,-300.11,-130.13,0.28055,326,-280.48,45.49,0.71945,2,327,-291.14,-77.51,0.34385,326,-271.53,98.12,0.65615,2,327,-228.83,11.52,0.59673,326,-209.28,187.2,0.40327,2,327,-163.53,74.87,0.83373,326,-143.98,250.64,0.16627,2,327,-83.08,108.6,0.97897,326,-63.44,284.44,0.02103,1,327,-34.83,170.91,1,1,327,-28.84,227.17,1,1,327,8.79,211.39,1,1,327,18.39,241.01,1,1,327,107.58,184.83,1,1,327,16.11,184.94,1,2,327,6.62,151.67,0.99316,326,34.28,326.79,0.00684,2,327,-23.38,95.37,0.95775,326,1.39,272.13,0.04225,2,327,-59.67,55.03,0.83863,326,-36.96,233.73,0.16137,2,327,-96.77,27.42,0.74765,326,-75.44,208.1,0.25234,2,327,-131.83,7.37,0.67587,326,-111.5,189.9,0.32413,2,327,-163.36,-31.89,0.57948,326,-145.03,152.34,0.42052,2,327,-172.65,-73.61,0.4864,326,-156.49,111.16,0.5136,2,327,-170.17,-114.27,0.39513,326,-156.13,70.42,0.60487,2,327,-141.8,-157.09,0.30274,326,-130.03,26.19,0.69726,1,327,53.42,174.75,1,2,327,52.65,143.8,0.99186,326,79.84,316.53,0.00814,2,327,64.05,109.87,0.97698,326,89.45,282.05,0.02302,2,327,94.94,75.02,0.89281,326,118.48,245.64,0.10719,2,327,134.76,40.57,0.81277,326,156.46,209.16,0.18723,2,327,166.22,14.07,0.74575,326,186.49,181.05,0.25425,2,327,188.28,-25.24,0.64394,326,206.47,140.65,0.35606,2,327,193.04,-69.71,0.5337,326,208.91,95.99,0.4663,2,327,187.27,-107.54,0.44235,326,201.17,58.51,0.55765,1,327,17.57,203.17,1,1,327,23.84,223.07,1,1,327,41.55,214,1,1,327,54.11,191.44,1],"edges":[0,40,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40]}},"TX_guangquan3":{"TX/Energy 007 Impact Radial_00008":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[151.32,-148.3,-148.68,-148.3,-148.68,151.7,151.32,151.7],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00010":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[151.32,-148.3,-148.68,-148.3,-148.68,151.7,151.32,151.7],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00012":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[151.32,-148.3,-148.68,-148.3,-148.68,151.7,151.32,151.7],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00015":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[151.32,-148.3,-148.68,-148.3,-148.68,151.7,151.32,151.7],"edges":[0,2,2,4,4,6,0,6]}},"TX/liuguang2":{"TX/liuguang":{"type":"mesh","hull":21,"width":102,"height":26,"uvs":[0.28491,0.08395,0.43367,0.10387,0.60295,0.12776,0.7424,0.1556,0.88291,0.20594,0.97803,0.31922,1,0.47865,1,1,0.924,1,0.82795,0.86191,0.72334,0.77701,0.63233,0.72943,0.54544,0.69125,0.43723,0.62125,0.33968,0.63079,0.22656,0.6658,0.11507,0.76762,0.07491,1,0,0.81335,0,0.18744,0.13101,0.08395,0.07876,0.5572,0.09347,0.52866,0.10171,0.48023,0.1182,0.45947,0.15251,0.42228,0.19086,0.41243,0.22631,0.39956,0.26278,0.3956,0.29721,0.38768,0.32654,0.3956,0.36426,0.3944,0.4028,0.38808,0.44432,0.40599,0.48378,0.42706,0.52395,0.44391,0.56276,0.44497,0.61078,0.48015,0.64959,0.52756,0.69546,0.52966,0.73663,0.56381,0.77875,0.61252,0.8227,0.65943,0.87069,0.72341,0.91574,0.77743,0.94357,0.82577,0.94907,0.78454,0.92123,0.72341,0.87618,0.64522,0.8293,0.57982,0.78864,0.52011,0.74396,0.47177,0.70913,0.4451,0.74413,0.4504,0.78151,0.47318,0.81857,0.50141,0.85188,0.52964,0.88426,0.56606,0.9205,0.60876,0.95721,0.66953,0.95883,0.63286,0.92266,0.58361,0.8873,0.53542,0.85356,0.49141,0.82224,0.45893,0.78337,0.4254,0.74427,0.396,0.70891,0.39915,0.66329,0.38781,0.6174,0.3899,0.56459,0.3899,0.52437,0.38571,0.48791,0.37068,0.44695,0.34854,0.40414,0.33143,0.36395,0.31634,0.32636,0.31734,0.29525,0.32942,0.26114,0.34637,0.22405,0.35202,0.18926,0.35057,0.14992,0.37617,0.11248,0.39263,0.09905,0.39903,0.08574,0.37343,0.06902,0.36886,0.05566,0.45978,0.13069,0.38462,0.13499,0.44127,0.17369,0.41684,0.17047,0.3628,0.34436,0.31686,0.34258,0.39509,0.31482,0.32183,0.31154,0.39155,0.27716,0.33841,0.28019,0.3916,0.24612,0.34866,0.24281,0.39777,0.20499,0.35123,0.21208,0.40473,0.38202,0.32312,0.38602,0.39083],"triangles":[56,50,55,56,63,62,56,55,63,55,64,63,55,54,64,63,64,5,52,68,67,37,68,52,52,67,66,3,67,68,34,72,71,34,33,72,14,100,98,88,89,26,26,100,15,98,100,27,26,89,90,26,90,100,100,80,99,80,100,90,27,99,79,27,100,99,27,79,98,98,79,97,90,84,80,79,99,97,97,99,20,20,99,80,88,25,89,88,82,25,25,82,87,87,81,25,25,81,89,89,81,90,87,84,81,81,84,90,17,18,16,18,21,16,18,86,21,86,18,19,21,22,15,22,23,24,88,26,22,24,88,22,21,86,22,22,86,23,23,86,24,86,83,24,83,85,84,83,86,85,86,19,85,24,83,88,83,82,88,83,84,82,82,84,87,19,80,84,19,84,85,19,20,80,98,28,14,98,97,28,97,78,28,28,78,96,96,78,95,95,78,97,26,15,22,16,21,15,14,31,13,14,92,31,31,92,91,31,101,102,75,101,31,31,91,75,101,75,1,75,91,1,14,15,100,37,35,36,35,37,13,38,37,52,69,68,37,37,36,69,69,36,70,36,35,70,35,71,70,35,34,71,69,70,2,2,70,71,40,11,38,40,38,39,11,12,38,51,39,52,39,38,52,50,40,51,40,39,51,10,41,42,42,49,48,42,41,49,49,41,50,41,40,50,49,50,56,41,10,11,41,11,40,8,45,7,45,46,7,46,59,7,8,9,45,9,44,45,9,43,44,45,44,46,44,47,46,46,47,59,44,43,47,43,48,47,43,42,48,47,48,59,9,10,43,10,42,43,7,59,6,59,60,6,48,58,59,59,58,60,48,57,58,58,61,60,60,61,6,58,57,61,57,62,61,61,62,6,57,56,62,62,63,6,6,63,5,5,65,4,48,49,57,49,56,57,50,54,55,51,53,54,54,65,64,54,53,65,64,65,5,65,53,66,53,52,66,66,67,3,65,66,4,4,66,3,51,54,50,51,52,53,68,69,2,68,2,3,71,72,2,38,12,13,38,13,37,13,31,33,33,31,102,13,34,35,13,33,34,33,102,32,33,73,72,33,32,73,32,102,74,32,74,73,74,102,101,72,73,2,2,73,1,73,74,1,74,101,1,28,96,30,96,94,30,96,29,94,14,30,92,92,30,93,30,94,93,93,76,92,29,96,95,91,92,76,93,94,77,95,77,29,94,29,77,97,0,95,95,0,77,77,0,93,93,0,76,76,0,91,1,91,0,28,30,14,0,97,20],"vertices":[1,378,-8.4,219.82,1,1,380,14.36,213.48,1,1,383,-8.9,230.86,1,1,385,-5.67,209.46,1,1,387,-73.09,262.91,1,1,387,233.57,262.07,1,1,387,335.18,160.62,1,1,392,520.33,-70.83,1,1,392,305.29,-163.72,1,1,391,145.34,-177.46,1,1,390,64.8,-210.32,1,1,389,-57.14,-216.33,1,1,382,31.51,-218.71,1,1,380,74.14,-193.12,1,1,379,-17.78,-217.17,1,1,377,-35.93,-228.74,1,1,374,80.34,-268.29,1,1,173,-1.05,-428.03,1,1,173,-215.71,-257.22,1,1,173,-165.39,237.18,1,1,375,68.13,259.54,1,1,173,46.37,-79.47,1,2,173,93.76,-61.52,0.88889,375,-103.83,-69.83,0.11111,2,173,122.93,-25.84,0.72222,375,-72.48,-36.05,0.27778,2,173,175.15,-14.59,0.58333,375,-19.65,-28.11,0.41667,1,375,89.51,-16.31,1,1,376,38.5,-24.22,1,1,376,148.07,-18.2,1,1,377,88.81,-21.56,1,1,378,25.91,-21.88,1,1,378,116.2,-29.52,1,1,379,51.87,-27.12,1,1,380,-53.27,-21.92,1,1,380,75.5,-20.81,1,1,381,19.27,-22.19,1,1,382,-30.42,-20.93,1,1,382,89.15,-24.38,1,1,382,236.52,-55.54,1,2,389,-25.68,-50.38,0.488,388,166.54,-52.52,0.512,1,389,114.66,-33.28,1,1,390,54.44,-36.45,1,1,391,-57.6,-32.44,1,1,391,82.84,-28.44,1,1,392,67.32,-27.26,1,1,392,211.81,-11.57,1,1,392,305.8,-12.79,1,1,392,308.36,23.98,1,1,392,210.34,34.52,1,1,392,58.24,36.46,1,1,391,83.78,37.96,1,1,391,-49.92,46.64,1,1,390,54.66,40.05,1,2,389,147.51,38.86,0.488,384,121.34,-24.14,0.512,1,385,42.6,-19.66,1,1,385,159.17,-16.26,1,1,386,15.2,-15.8,1,1,386,120.08,-9.05,1,1,387,14.01,-9.5,1,1,387,130.76,-9.46,1,1,387,253.06,-22.74,1,1,387,249.37,6.57,1,1,387,131.32,11.58,1,1,387,15.9,16.51,1,1,386,116.67,21.56,1,1,386,16.78,19.75,1,1,385,157.84,22.09,1,1,385,35.09,22.88,1,1,384,121.29,12.35,1,2,383,176.81,24.17,0.496,384,-19.16,23.72,0.504,1,382,258.46,15.65,1,1,382,95.74,19.21,1,1,382,-28.12,25.25,1,1,381,27.69,23.59,1,1,380,78.12,25.45,1,1,380,-54.52,23.24,1,1,379,48.94,34.8,1,1,378,116.58,32.62,1,1,378,20.57,24.47,1,1,377,86.2,17.77,1,1,376,142.57,19.79,1,1,376,35.45,25.05,1,1,375,87.63,21.12,1,2,173,162.97,40,0.58333,375,-28.36,27.13,0.41667,2,173,121.3,39.14,0.72222,375,-70,28.89,0.27778,2,173,82.54,63.51,0.88889,375,-107.15,55.66,0.11111,1,173,31.64,72.34,1,1,173,-16.62,4.68,1,2,173,219.46,40.64,0.29959,375,28.06,24.21,0.70041,2,173,228.1,-5.45,0.29783,375,33.78,-22.33,0.70217,2,375,154.59,-22.73,0.4478,376,-14.51,-25.69,0.5522,2,375,151.84,21.22,0.47761,376,-22.77,17.57,0.52239,2,378,172.04,32.17,0.52132,379,-11.41,32.43,0.47868,2,378,165.64,-29.85,0.57467,379,-14.87,-29.82,0.42533,1,378,80.95,29.6,1,1,378,70.02,-25.61,1,2,378,-35.29,18.16,0.46964,377,135.87,21.01,0.53036,2,378,-26.58,-24.2,0.50569,377,142.57,-21.72,0.49431,2,377,39.87,18.83,0.59485,376,210.62,19.85,0.40515,2,377,27.28,-19.46,0.45243,376,198.94,-18.73,0.54757,1,376,83.88,22.67,1,1,376,104.09,-20.61,1,2,380,-123,21.67,0.44954,379,104.76,31.2,0.55046,2,380,-104.35,-30.24,0.56473,379,118.83,-22.13,0.43527],"edges":[0,40,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40]}},"BZ/z_bianzi_hou2_liuguang":{"TX/liuguang3":{"type":"mesh","hull":4,"width":46,"height":29,"uvs":[1,1,0,1,0,0,1,0,0.07199,0.45436,0.1407,0.61282,0.28216,0.75384,0.45292,0.83148,0.63581,0.87268,0.78536,0.8505,0.91041,0.78511,0.92349,0.57833,0.784,0.31345,0.63689,0.17332,0.38298,0.11009,0.20862,0.17332,0.09856,0.23484],"triangles":[14,2,3,15,2,14,13,14,3,16,2,15,12,13,3,4,2,16,11,12,3,15,4,16,5,4,15,14,5,15,13,5,14,6,13,12,7,6,12,13,6,5,12,11,7,7,11,8,10,9,11,9,8,11,4,1,2,1,4,5,1,5,6,3,0,11,10,11,0,9,10,0,8,9,0,1,7,8,1,6,7,0,1,8],"vertices":[407.3,-65.41,12.56,-174.65,-57.11,77.07,337.64,186.31,2.96,-29.44,41.12,-61.82,106.79,-81.86,179.61,-82.75,254.67,-73.15,312.16,-51.23,356.97,-21.11,347.73,32.37,274.21,83.81,206.38,103.02,101.74,91.2,37.32,56.23,-1.84,28.72],"edges":[0,6,0,2,2,4,4,6]}},"y_houtui":{"y_houtui":{"type":"mesh","hull":13,"width":22,"height":29,"uvs":[0.83066,0.18848,1,0.50915,1,0.66702,1,0.81256,0.89085,0.90876,0.90353,1,0.17804,1,0.05448,0.82489,0,0.63249,0,0.46968,0,0.27728,0.10834,0,0.51385,0],"triangles":[6,4,5,3,4,2,6,7,4,1,4,7,12,9,10,0,1,7,8,9,12,10,11,12,0,7,12,12,7,8,2,4,1],"vertices":[1,319,10.96,86.82,1,1,319,89.67,132.16,1,2,319,130.67,137.62,0.51852,320,72.76,119.98,0.48148,2,319,168.47,142.66,0.18519,320,110,111.78,0.81481,3,319,196.4,123.92,0.0823,320,129.82,84.61,0.36214,330,85.27,12.81,0.55556,3,319,219.75,129.64,0.04115,320,153.72,81.99,0.18107,330,91.89,-10.31,0.77778,3,319,239.3,-17.06,0.0823,320,121.87,-62.56,0.36214,330,-53.95,-35.53,0.55556,2,319,197.16,-48.11,0.18519,320,71.64,-77.3,0.81481,2,319,148.66,-65.78,0.51852,320,20.02,-77.31,0.48148,1,319,106.37,-71.42,1,1,319,56.41,-78.08,1,1,319,-18.52,-65.77,1,1,319,-29.45,16.23,1],"edges":[0,24,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24]}},"TX_SK2_shouji_lie2":{"TX/atk_guangci3_0025":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-26.36,-16.75,392.06,406.5,727.13,75.25,308.71,-348],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0027":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-26.36,-16.75,392.06,406.5,727.13,75.25,308.71,-348],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0028":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-26.36,-16.75,392.06,406.5,727.13,75.25,308.71,-348],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0030":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-26.36,-16.75,392.06,406.5,727.13,75.25,308.71,-348],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0031":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-28.18,-18.82,390.24,404.43,725.31,73.18,306.89,-350.07],"edges":[0,2,2,4,4,6,0,6]}},"TX/shuyefaguang2":{"TX/shuyefaguang":{"type":"mesh","hull":4,"width":38,"height":44,"uvs":[1,1,0,1,0,0,1,0,0.17815,0.17387,0.24282,0.34834,0.2864,0.5594,0.40168,0.70458,0.60412,0.77656,0.76017,0.6814,0.79812,0.48498,0.65332,0.30685,0.63505,0.29343,0.41012,0.18485,0.16691,0.15679],"triangles":[13,14,2,13,4,14,2,3,13,12,13,3,11,12,3,5,4,13,10,11,3,12,6,5,12,5,13,10,7,11,11,7,6,11,6,12,9,7,10,8,7,9,2,5,1,14,5,2,4,5,14,1,5,6,1,6,7,10,3,0,9,10,0,8,9,0,1,7,8,0,1,8],"vertices":[-176.56,-18.81,50.15,313.97,392.9,80.45,166.19,-252.32,292.92,61.77,218.46,80.99,136.24,115.77,60.34,111.31,-10.23,60.76,-12.99,-13.39,45.73,-71.89,139.61,-65.3,148.35,-62.35,236.57,-12.86,301.32,61.52],"edges":[0,6,0,2,2,4,4,6]}},"TX_feng_quan_faguang2":{"TX/TX_S1_shua_0010":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0012":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0014":{"type":"mesh","hull":18,"width":38,"height":14,"uvs":[1,0.24114,1,0.66059,0.80807,1,0.64514,1,0.40863,1,0.23781,1,0,0.70399,0,0.30984,0.11036,0.16882,0.21022,0.47979,0.37052,0.55211,0.52294,0.60274,0.66616,0.58466,0.80413,0.4581,0.8396,0.30623,0.75157,0.14351,0.78967,0,0.858,0],"triangles":[17,15,16,0,15,17,0,14,15,7,8,9,13,14,0,1,13,0,6,7,9,10,6,9,4,5,10,5,6,10,11,4,10,3,11,12,4,11,3,12,13,1,2,3,12,1,2,12],"vertices":[165.81,69.11,165.81,16.68,99.79,-25.75,43.74,-25.75,-37.62,-25.75,-96.38,-25.75,-178.19,11.25,-178.19,60.52,-140.23,78.15,-105.87,39.28,-50.73,30.24,1.7,23.91,50.97,26.17,98.43,41.99,110.64,60.97,80.35,81.31,93.46,99.25,116.96,99.25],"edges":[0,34,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34]},"TX/TX_S1_shua_0016":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0018":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]}},"TX/shuyefaguang4":{"TX/shuyefaguang":{"type":"mesh","hull":4,"width":38,"height":44,"uvs":[1,1,0,1,0,0,1,0,0.16026,0.17751,0.23392,0.30349,0.26859,0.48776,0.33792,0.61938,0.47226,0.72279,0.59792,0.76792,0.67809,0.73595,0.70842,0.83749,0.76692,0.82057,0.73442,0.69835,0.79942,0.55733,0.72576,0.36742,0.54809,0.23956,0.37476,0.17186,0.24476,0.14554],"triangles":[17,18,2,3,17,2,4,2,18,16,17,3,5,4,18,5,18,17,15,16,3,16,6,5,16,5,17,14,15,3,7,6,16,7,16,15,15,8,7,15,14,8,8,14,10,13,10,14,9,8,10,12,13,14,10,13,12,11,10,12,9,10,11,1,2,4,6,1,4,6,4,5,1,6,7,14,3,0,12,14,0,11,12,0,1,8,9,11,1,9,1,7,8,0,1,11],"vertices":[-176.56,-18.81,50.15,313.97,392.9,80.45,166.19,-252.32,295.73,68.57,235.85,73.48,164.83,104.97,104,112.63,38.1,92.08,-5.86,60.8,-13.08,26.66,-54.76,40.28,-62.22,16.86,-12.96,-0.87,20.64,-55.43,102.43,-75.26,186.54,-46,249.03,-4.12,287.53,32.99],"edges":[0,6,0,2,2,4,4,6]}},"TX/TX_yan1_3":{"TX/TX_S1_yan_24":{"type":"mesh","path":"TX/TX_S1_yan_0024","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[96.08,-42.6,-161.92,-42.6,-161.92,197.4,96.08,197.4],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_yan_0029":{"type":"mesh","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[3.26,-92.08,-175.42,94.03,-2.29,260.24,176.39,74.13],"edges":[0,2,2,4,4,6,0,6]}},"TX/shuyefaguang6":{"TX/shuyefaguang":{"type":"mesh","hull":4,"width":38,"height":44,"uvs":[1,1,0,1,0,0,1,0,0.13879,0.14215,0.22174,0.31173,0.26532,0.52036,0.40168,0.69726,0.58163,0.76802,0.69269,0.73752,0.71659,0.85342,0.78266,0.82658,0.73486,0.69848,0.78547,0.57038,0.75033,0.42276,0.5985,0.28977,0.41574,0.18485],"triangles":[16,4,2,3,16,2,15,16,3,5,4,16,14,15,3,6,5,16,6,16,15,13,14,3,7,6,15,7,15,14,7,14,13,13,8,7,13,12,8,9,8,12,11,12,13,9,12,11,10,9,11,8,9,10,5,1,2,5,2,4,1,5,6,1,6,7,13,3,0,11,13,0,10,11,0,1,7,8,10,1,8,1,10,0],"vertices":[-176.56,-18.81,50.15,313.97,392.9,80.45,166.19,-252.32,312.71,67.46,235.79,79.46,154.4,113.67,62.85,109.61,-2.2,66.25,-16.93,22.17,-62.07,41.28,-67.85,13.02,-13.11,-0.98,19.33,-47.74,77.89,-70.52,157.89,-51.04,235.29,-14.73],"edges":[0,6,0,2,2,4,4,6]}},"TX/shuyefaguang7":{"TX/shuyefaguang":{"type":"mesh","hull":4,"width":38,"height":44,"uvs":[1,1,0,1,0,0,1,0,0.15426,0.15069,0.2611,0.36786,0.30468,0.57892,0.46776,0.72898,0.62802,0.75094,0.68566,0.72776,0.79531,0.6387,0.74611,0.4313,0.59428,0.28123,0.56757,0.26659,0.37497,0.17631],"triangles":[14,4,2,3,14,2,13,14,3,12,13,3,5,4,14,11,12,3,13,6,5,13,5,14,10,11,3,11,7,12,9,11,10,12,7,6,12,6,13,11,8,7,9,8,11,1,2,4,1,4,5,1,5,6,1,6,7,10,3,0,9,10,0,8,9,0,1,7,8,0,1,8],"vertices":[-176.56,-18.81,50.15,313.97,392.9,80.45,166.19,-252.32,306.28,64.31,207.63,79.47,125.4,114.25,37,95.02,-6.86,46.82,-11.99,22.23,-6.32,-35.06,75.92,-67.12,161.78,-51.63,172.85,-46.16,247.46,-3.16],"edges":[0,6,0,2,2,4,4,6]}},"TX/shuyefaguang8":{"TX/shuyefaguang":{"type":"mesh","hull":4,"width":38,"height":44,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-176.58,-18.69,50.27,313.99,392.92,80.33,166.07,-252.34],"edges":[0,2,2,4,4,6,0,6]}},"TX/liuguang7_BZH":{"TX/liuguang":{"type":"mesh","hull":21,"width":102,"height":26,"uvs":[0.28491,0.08395,0.43367,0.10387,0.60295,0.12776,0.7424,0.1556,0.88291,0.20594,0.97803,0.31922,1,0.47865,1,1,0.924,1,0.82795,0.86191,0.72334,0.77701,0.63233,0.72943,0.54544,0.69125,0.43723,0.62125,0.33968,0.63079,0.22656,0.6658,0.11507,0.76762,0.07491,1,0,0.81335,0,0.18744,0.13101,0.08395,0.07876,0.5572,0.09347,0.52866,0.10171,0.48023,0.1182,0.45947,0.15251,0.42228,0.19086,0.41243,0.22631,0.39956,0.26278,0.3956,0.29721,0.38768,0.32654,0.3956,0.36426,0.3944,0.4028,0.38808,0.44432,0.40599,0.48378,0.42706,0.52395,0.44391,0.56276,0.44497,0.61078,0.48015,0.64959,0.52756,0.69546,0.52966,0.73663,0.56381,0.77875,0.61252,0.8227,0.65943,0.87069,0.72341,0.91574,0.77743,0.94357,0.82577,0.94907,0.78454,0.92123,0.72341,0.87618,0.64522,0.8293,0.57982,0.78864,0.52011,0.74396,0.47177,0.70913,0.4451,0.74413,0.4504,0.78151,0.47318,0.81857,0.50141,0.85188,0.52964,0.88426,0.56606,0.9205,0.60876,0.95721,0.66953,0.95883,0.63286,0.92266,0.58361,0.8873,0.53542,0.85356,0.49141,0.82224,0.45893,0.78337,0.4254,0.74427,0.396,0.70891,0.39915,0.66329,0.38781,0.6174,0.3899,0.56459,0.3899,0.52437,0.38571,0.48791,0.37068,0.44695,0.34854,0.40414,0.33143,0.36395,0.31634,0.32636,0.31734,0.29525,0.32942,0.26114,0.34637,0.22405,0.35202,0.18926,0.35057,0.14992,0.37617,0.11248,0.39263,0.09905,0.39903,0.08574,0.37343,0.06902,0.36886,0.05566,0.45978,0.13069,0.38462,0.13499,0.44127,0.17369,0.41684,0.17047,0.3628,0.34436,0.31686,0.34258,0.39509,0.31482,0.32183,0.31154,0.39155,0.27716,0.33841,0.28019,0.3916,0.24612,0.34866,0.24281,0.39777,0.20499,0.35123,0.21208,0.40473,0.38202,0.32312,0.38602,0.39083],"triangles":[56,50,55,56,63,62,56,55,63,55,64,63,55,54,64,63,64,5,52,68,67,37,68,52,52,67,66,3,67,68,34,72,71,34,33,72,14,100,98,88,89,26,26,100,15,98,100,27,26,89,90,26,90,100,100,80,99,80,100,90,27,99,79,27,100,99,27,79,98,98,79,97,90,84,80,79,99,97,97,99,20,20,99,80,88,25,89,88,82,25,25,82,87,87,81,25,25,81,89,89,81,90,87,84,81,81,84,90,17,18,16,18,21,16,18,86,21,86,18,19,21,22,15,22,23,24,88,26,22,24,88,22,21,86,22,22,86,23,23,86,24,86,83,24,83,85,84,83,86,85,86,19,85,24,83,88,83,82,88,83,84,82,82,84,87,19,80,84,19,84,85,19,20,80,98,28,14,98,97,28,97,78,28,28,78,96,96,78,95,95,78,97,26,15,22,16,21,15,14,31,13,14,92,31,31,92,91,31,101,102,75,101,31,31,91,75,101,75,1,75,91,1,14,15,100,37,35,36,35,37,13,38,37,52,69,68,37,37,36,69,69,36,70,36,35,70,35,71,70,35,34,71,69,70,2,2,70,71,40,11,38,40,38,39,11,12,38,51,39,52,39,38,52,50,40,51,40,39,51,10,41,42,42,49,48,42,41,49,49,41,50,41,40,50,49,50,56,41,10,11,41,11,40,8,45,7,45,46,7,46,59,7,8,9,45,9,44,45,9,43,44,45,44,46,44,47,46,46,47,59,44,43,47,43,48,47,43,42,48,47,48,59,9,10,43,10,42,43,7,59,6,59,60,6,48,58,59,59,58,60,48,57,58,58,61,60,60,61,6,58,57,61,57,62,61,61,62,6,57,56,62,62,63,6,6,63,5,5,65,4,48,49,57,49,56,57,50,54,55,51,53,54,54,65,64,54,53,65,64,65,5,65,53,66,53,52,66,66,67,3,65,66,4,4,66,3,51,54,50,51,52,53,68,69,2,68,2,3,71,72,2,38,12,13,38,13,37,13,31,33,33,31,102,13,34,35,13,33,34,33,102,32,33,73,72,33,32,73,32,102,74,32,74,73,74,102,101,72,73,2,2,73,1,73,74,1,74,101,1,28,96,30,96,94,30,96,29,94,14,30,92,92,30,93,30,94,93,93,76,92,29,96,95,91,92,76,93,94,77,95,77,29,94,29,77,97,0,95,95,0,77,77,0,93,93,0,76,76,0,91,1,91,0,28,30,14,0,97,20],"vertices":[1,403,-8.4,219.82,1,1,405,14.36,213.48,1,1,408,-8.9,230.86,1,1,410,-5.67,209.46,1,1,412,-73.09,262.91,1,1,412,233.57,262.07,1,1,412,335.18,160.62,1,1,417,520.33,-70.83,1,1,417,305.29,-163.72,1,1,416,145.34,-177.46,1,1,415,64.8,-210.32,1,1,414,-57.14,-216.33,1,1,407,31.51,-218.71,1,1,405,74.14,-193.12,1,1,404,-17.78,-217.17,1,1,402,-35.93,-228.74,1,1,399,80.34,-268.29,1,1,174,-1.05,-428.03,1,1,174,-215.71,-257.22,1,1,174,-165.39,237.18,1,1,400,68.13,259.54,1,1,174,46.37,-79.47,1,2,174,93.76,-61.52,0.88889,400,-103.83,-69.83,0.11111,2,174,122.93,-25.84,0.72222,400,-72.48,-36.05,0.27778,2,174,175.15,-14.59,0.58333,400,-19.65,-28.11,0.41667,1,400,89.51,-16.31,1,1,401,38.5,-24.22,1,1,401,148.07,-18.2,1,1,402,88.81,-21.56,1,1,403,25.91,-21.88,1,1,403,116.2,-29.52,1,1,404,51.87,-27.12,1,1,405,-53.27,-21.92,1,1,405,75.5,-20.81,1,1,406,19.27,-22.19,1,1,407,-30.42,-20.93,1,1,407,89.15,-24.38,1,1,407,236.52,-55.54,1,2,414,-25.68,-50.38,0.488,413,166.54,-52.52,0.512,1,414,114.66,-33.28,1,1,415,54.44,-36.45,1,1,416,-57.6,-32.44,1,1,416,82.84,-28.44,1,1,417,67.32,-27.26,1,1,417,211.81,-11.57,1,1,417,305.8,-12.79,1,1,417,308.36,23.98,1,1,417,210.34,34.52,1,1,417,58.24,36.46,1,1,416,83.78,37.96,1,1,416,-49.92,46.64,1,1,415,54.66,40.05,1,2,414,147.51,38.86,0.488,409,121.34,-24.14,0.512,1,410,42.6,-19.66,1,1,410,159.17,-16.26,1,1,411,15.2,-15.8,1,1,411,120.08,-9.05,1,1,412,14.01,-9.5,1,1,412,130.76,-9.46,1,1,412,253.06,-22.74,1,1,412,249.37,6.57,1,1,412,131.32,11.58,1,1,412,15.9,16.51,1,1,411,116.67,21.56,1,1,411,16.78,19.75,1,1,410,157.84,22.09,1,1,410,35.09,22.88,1,1,409,121.29,12.35,1,2,408,176.81,24.17,0.496,409,-19.16,23.72,0.504,1,407,258.46,15.65,1,1,407,95.74,19.21,1,1,407,-28.12,25.25,1,1,406,27.69,23.59,1,1,405,78.12,25.45,1,1,405,-54.52,23.24,1,1,404,48.94,34.8,1,1,403,116.58,32.62,1,1,403,20.57,24.47,1,1,402,86.2,17.77,1,1,401,142.57,19.79,1,1,401,35.45,25.05,1,1,400,87.63,21.12,1,2,174,162.97,40,0.58333,400,-28.36,27.13,0.41667,2,174,121.3,39.14,0.72222,400,-70,28.89,0.27778,2,174,82.54,63.51,0.88889,400,-107.15,55.66,0.11111,1,174,31.64,72.34,1,1,174,-16.62,4.68,1,2,174,219.46,40.64,0.29959,400,28.06,24.21,0.70041,2,174,228.1,-5.45,0.29783,400,33.78,-22.33,0.70217,2,400,154.59,-22.73,0.4478,401,-14.51,-25.69,0.5522,2,400,151.84,21.22,0.47761,401,-22.77,17.57,0.52239,2,403,172.04,32.17,0.52132,404,-11.41,32.43,0.47868,2,403,165.64,-29.85,0.57467,404,-14.87,-29.82,0.42533,1,403,80.95,29.6,1,1,403,70.02,-25.61,1,2,403,-35.29,18.16,0.46964,402,135.87,21.01,0.53036,2,403,-26.58,-24.2,0.50569,402,142.57,-21.72,0.49431,2,402,39.87,18.83,0.59485,401,210.62,19.85,0.40515,2,402,27.28,-19.46,0.45243,401,198.94,-18.73,0.54757,1,401,83.88,22.67,1,1,401,104.09,-20.61,1,2,405,-123,21.67,0.44954,404,104.76,31.2,0.55046,2,405,-104.35,-30.24,0.56473,404,118.83,-22.13,0.43527],"edges":[0,40,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40]}},"ZZZZZ":{"ZZZZZ":{"type":"clipping","end":"ZZZZZZZZZZZ","vertexCount":16,"color":"3a3acdff","vertices":[-685.21,4281.06,6538.9,4247.64,6933.13,4245.82,7194.38,4244.61,7550.55,4242.96,7918.6,4241.26,8167.98,4240.11,8583.73,4238.19,8999.38,4236.26,9308.06,4234.84,9604.99,4233.46,9982.89,4231.71,10373.67,4229.91,14573.2,4210.48,14768.95,8712.63,-1338.1,8572.81]}},"TX/suduxian_mi_hou1":{"TX/suduxian_mi":{"type":"mesh","hull":4,"width":21,"height":57,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[97.88,-53.66,-89.12,-53.66,-89.12,463.34,97.88,463.34],"edges":[0,2,2,4,4,6,0,6]}},"TX_guangquan":{"TX/Energy 007 Impact Radial_00008":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[151.32,-148.3,-148.68,-148.3,-148.68,151.7,151.32,151.7],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00010":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[151.32,-148.3,-148.68,-148.3,-148.68,151.7,151.32,151.7],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00012":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[151.32,-148.3,-148.68,-148.3,-148.68,151.7,151.32,151.7],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00015":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[151.32,-148.3,-148.68,-148.3,-148.68,151.7,151.32,151.7],"edges":[0,2,2,4,4,6,0,6]}},"TX/liuguang_mi2":{"TX/suduxian_mi":{"type":"mesh","hull":4,"width":21,"height":57,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[101.81,-44.6,-85.19,-44.6,-85.19,472.4,101.81,472.4],"edges":[0,2,2,4,4,6,0,6]}},"TX_feng2":{"TX/TX_S1_shua_0010":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0012":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0014":{"type":"mesh","hull":19,"width":38,"height":14,"uvs":[0.96897,0.22147,1,0.55275,1,0.66633,0.76089,1,0.63364,1,0.41524,1,0.24844,1,0.04724,0.78464,0,0.55748,0,0.33979,0.10743,0.28773,0.21405,0.51016,0.41524,0.6048,0.613,0.60007,0.80388,0.46283,0.82108,0.29719,0.78153,0.15522,0.81764,0,0.86923,0],"triangles":[16,18,0,18,16,17,15,16,0,9,10,11,15,0,1,14,15,1,8,9,11,14,1,2,7,8,11,12,7,11,6,7,12,5,6,12,13,3,4,2,13,14,5,12,13,4,5,13,2,3,13],"vertices":[155.14,71.57,165.81,30.16,165.81,15.96,83.56,-25.75,39.78,-25.75,-35.34,-25.75,-92.73,-25.75,-161.94,1.17,-178.19,29.57,-178.19,56.78,-141.23,63.29,-104.56,35.48,-35.34,23.65,32.68,24.24,98.35,41.4,104.26,62.1,90.66,79.85,103.08,99.25,120.83,99.25],"edges":[0,36,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36]},"TX/TX_S1_shua_0016":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0018":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]}},"TX_feng_quan_faguang4":{"TX/TX_S1_shua_0010":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0012":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0014":{"type":"mesh","hull":18,"width":38,"height":14,"uvs":[1,0.24114,1,0.66059,0.80807,1,0.64514,1,0.40863,1,0.23781,1,0,0.70399,0,0.30984,0.11036,0.16882,0.21022,0.47979,0.37052,0.55211,0.52294,0.60274,0.66616,0.58466,0.80413,0.4581,0.8396,0.30623,0.75157,0.14351,0.78967,0,0.858,0],"triangles":[17,15,16,0,15,17,0,14,15,7,8,9,13,14,0,1,13,0,6,7,9,10,6,9,4,5,10,5,6,10,11,4,10,3,11,12,4,11,3,12,13,1,2,3,12,1,2,12],"vertices":[165.81,69.11,165.81,16.68,99.79,-25.75,43.74,-25.75,-37.62,-25.75,-96.38,-25.75,-178.19,11.25,-178.19,60.52,-140.23,78.15,-105.87,39.28,-50.73,30.24,1.7,23.91,50.97,26.17,98.43,41.99,110.64,60.97,80.35,81.31,93.46,99.25,116.96,99.25],"edges":[0,34,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34]},"TX/TX_S1_shua_0016":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0018":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]}},"TX_shouji3_3":{"TX/atk_guangci3_0025":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[8.36,-34.66,-183.13,211.66,11.87,363.26,203.36,116.94],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0027":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[8.36,-34.66,-183.13,211.66,11.87,363.26,203.36,116.94],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0028":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[8.36,-34.66,-183.13,211.66,11.87,363.26,203.36,116.94],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0030":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[8.36,-34.66,-183.13,211.66,11.87,363.26,203.36,116.94],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0031":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[8.36,-34.66,-183.13,211.66,11.87,363.26,203.36,116.94],"edges":[0,2,2,4,4,6,0,6]}},"TX_guangquan4":{"TX/Energy 007 Impact Radial_00008":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[151.32,-148.3,-148.68,-148.3,-148.68,151.7,151.32,151.7],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00010":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[151.32,-148.3,-148.68,-148.3,-148.68,151.7,151.32,151.7],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00012":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[151.32,-148.3,-148.68,-148.3,-148.68,151.7,151.32,151.7],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00015":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[151.32,-148.3,-148.68,-148.3,-148.68,151.7,151.32,151.7],"edges":[0,2,2,4,4,6,0,6]}},"TX_xian3":{"TX/b_lg_2":{"type":"mesh","hull":4,"width":34,"height":4,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[140.75,-23.3,-165.25,-23.3,-165.25,15.7,140.75,15.7],"edges":[0,2,2,4,4,6,0,6]}},"z-meimao":{"z-meimao_shengli":{"type":"mesh","hull":4,"width":7,"height":13,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-31.47,-50.96,-57.27,3.21,47.45,53.1,73.25,-1.06],"edges":[0,2,2,4,4,6,0,6]},"z-meimao_shouji":{"type":"mesh","hull":4,"width":7,"height":12,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-14.83,-46.36,-44.07,15.03,55.23,62.34,84.48,0.96],"edges":[0,2,2,4,4,6,0,6]},"z_meimao_gongji":{"type":"mesh","hull":4,"width":4,"height":17,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-75.32,-51.9,-92.1,-16.7,46.03,49.12,62.8,13.91],"edges":[0,2,2,4,4,6,0,6]},"z_meimao_pingshi":{"type":"mesh","hull":4,"width":4,"height":17,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-68.35,-38.62,-83.84,-6.12,54.28,59.69,69.77,27.19],"edges":[0,2,2,4,4,6,0,6]}},"TX_feng_quan3":{"TX/TX_S1_shua_0010":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0012":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0014":{"type":"mesh","hull":18,"width":38,"height":14,"uvs":[1,0.24114,1,0.66059,0.80807,1,0.64514,1,0.40863,1,0.23781,1,0,0.70399,0,0.30984,0.11036,0.16882,0.21022,0.47979,0.37052,0.55211,0.52294,0.60274,0.66616,0.58466,0.80413,0.4581,0.8396,0.30623,0.75157,0.14351,0.78967,0,0.858,0],"triangles":[17,15,16,0,15,17,0,14,15,7,8,9,13,14,0,1,13,0,6,7,9,10,6,9,4,5,10,5,6,10,11,4,10,3,11,12,4,11,3,12,13,1,2,3,12,1,2,12],"vertices":[165.81,69.11,165.81,16.68,99.79,-25.75,43.74,-25.75,-37.62,-25.75,-96.38,-25.75,-178.19,11.25,-178.19,60.52,-140.23,78.15,-105.87,39.28,-50.73,30.24,1.7,23.91,50.97,26.17,98.43,41.99,110.64,60.97,80.35,81.31,93.46,99.25,116.96,99.25],"edges":[0,34,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34]},"TX/TX_S1_shua_0016":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_shua_0018":{"type":"mesh","hull":4,"width":38,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[165.81,-25.75,-178.19,-25.75,-178.19,99.25,165.81,99.25],"edges":[0,2,2,4,4,6,0,6]}},"TX/shuyefaguang5":{"TX/shuyefaguang":{"type":"mesh","hull":4,"width":38,"height":44,"uvs":[1,1,0,1,0,0,1,0,0.10711,0.14395,0.18675,0.24678,0.26445,0.48448,0.33827,0.65812,0.51893,0.75758,0.68793,0.73229,0.70735,0.84019,0.787,0.81659,0.74232,0.69689,0.80642,0.57889,0.7734,0.41031,0.58303,0.2569,0.36546,0.15743],"triangles":[16,4,2,3,16,2,5,4,16,15,16,3,14,15,3,6,5,16,6,16,15,13,14,3,7,6,15,7,15,14,7,14,8,14,13,9,13,12,9,9,8,14,11,12,13,9,12,11,10,9,11,1,2,4,1,4,5,1,5,6,1,6,7,13,3,0,11,13,0,10,11,0,8,9,10,1,8,10,1,7,8,0,1,10],"vertices":[-176.56,-18.81,50.15,313.97,392.9,80.45,166.19,-252.32,319.28,78.43,265.98,75.93,166.89,105.58,90.64,121.57,15.59,84.67,-14.05,22.53,-55.44,41.26,-65.41,9.24,-14.25,-3.84,11.66,-52.73,76.93,-81.1,172.67,-53.57,256.09,-4.4],"edges":[0,6,0,2,2,4,4,6]}},"TX_SK2_shouji_lie8":{"TX/atk_guangci3_0025":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[16.9,-26.27,-408.72,389.75,-79.37,726.69,346.24,310.68],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0027":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[16.9,-26.27,-408.72,389.75,-79.37,726.69,346.24,310.68],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0028":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[16.9,-26.27,-408.72,389.75,-79.37,726.69,346.24,310.68],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0030":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[16.9,-26.27,-408.72,389.75,-79.37,726.69,346.24,310.68],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0031":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[18.98,-28.08,-406.63,387.94,-77.29,724.88,348.33,308.87],"edges":[0,2,2,4,4,6,0,6]}},"TX_SK2_shouji_quan4":{"TX/Energy 007 Impact Radial_00008":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[149.95,-149.72,-150.05,-149.72,-150.05,150.28,149.95,150.28],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00010":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[149.95,-149.72,-150.05,-149.72,-150.05,150.28,149.95,150.28],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00012":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[149.95,-149.72,-150.05,-149.72,-150.05,150.28,149.95,150.28],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00015":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[149.95,-149.72,-150.05,-149.72,-150.05,150.28,149.95,150.28],"edges":[0,2,2,4,4,6,0,6]}},"TX_SK2_shouji_lie_quan2":{"TX/shuangcdr_00010002":{"type":"mesh","hull":4,"width":84,"height":84,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[995.83,-265.03,-209.98,-964.28,-909.23,241.53,296.58,940.78],"edges":[0,2,2,4,4,6,0,6]}},"TX_SK2_shouji_lie_quan3":{"TX/shuangcdr_00010002":{"type":"mesh","hull":4,"width":84,"height":84,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[995.83,-265.03,-209.98,-964.28,-909.23,241.53,296.58,940.78],"edges":[0,2,2,4,4,6,0,6]}},"TX_SK2_shouji_lie_quan4":{"TX/shuangcdr_00010002":{"type":"mesh","hull":4,"width":84,"height":84,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[995.83,-265.03,-209.98,-964.28,-909.23,241.53,296.58,940.78],"edges":[0,2,2,4,4,6,0,6]}},"TX_huaban1_sanluo":{"TX/hua_a2":{"type":"mesh","hull":4,"width":14,"height":18,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-0.2,-9.52,-87.59,81.25,29.11,193.6,116.5,102.83],"edges":[0,2,2,4,4,6,0,6]}},"TX_SK2_shouji_xian3":{"TX/daoguang_red":{"type":"mesh","hull":4,"width":19,"height":73,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[90.5,-475.16,-84.5,-475.16,-84.5,508.8,90.5,508.8],"edges":[0,2,2,4,4,6,0,6]}},"TX_cao_hou1":{"TX/cao":{"type":"mesh","hull":4,"width":38,"height":42,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-11.61,-221.38,-260.93,19.98,1.99,291.56,251.3,50.21],"edges":[0,2,2,4,4,6,0,6]}},"TX_cao_hou2":{"TX/cao":{"type":"mesh","hull":4,"width":38,"height":42,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-11.61,-221.38,-260.93,19.98,1.99,291.56,251.3,50.21],"edges":[0,2,2,4,4,6,0,6]}},"TX_cao_hou3":{"TX/cao":{"type":"mesh","hull":4,"width":38,"height":42,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-11.61,-221.38,-260.93,19.98,1.99,291.56,251.3,50.21],"edges":[0,2,2,4,4,6,0,6]}},"TX_SK2_shouji_xian2":{"TX/daoguang_red":{"type":"mesh","hull":4,"width":19,"height":73,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[90.5,-475.16,-84.5,-475.16,-84.5,508.8,90.5,508.8],"edges":[0,2,2,4,4,6,0,6]}},"TX/shuyefaguang":{"TX/shuyefaguang":{"type":"mesh","hull":4,"width":38,"height":44,"uvs":[1,1,0,1,0,0,1,0,0.14301,0.15191,0.23298,0.34224,0.27656,0.57892,0.41433,0.74728,0.63364,0.78632,0.78547,0.6753,0.81359,0.50328,0.80094,0.47644,0.66035,0.30197,0.4312,0.17631],"triangles":[13,4,2,3,13,2,12,13,3,5,4,13,11,12,3,10,11,3,12,6,5,12,5,13,12,7,6,9,11,10,12,11,7,11,8,7,9,8,11,1,2,4,1,4,5,1,5,6,1,6,7,10,3,0,9,10,0,8,9,0,1,7,8,0,1,8],"vertices":[-176.56,-18.81,50.15,313.97,392.9,80.45,166.19,-252.32,308.41,68.34,222.78,82.84,131.78,123.61,42.84,117.08,-20.27,53.21,-16.64,-23.24,35.95,-72.76,48.02,-74.82,139.69,-68.78,234.71,-21.87],"edges":[0,6,0,2,2,4,4,6]}},"TX_SK2_shouji_lie4":{"TX/atk_guangci3_0025":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-26.95,-15.79,406.41,392.16,729.37,49.09,296.02,-358.86],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0027":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-26.95,-15.79,406.41,392.16,729.37,49.09,296.02,-358.86],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0028":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-26.95,-15.79,406.41,392.16,729.37,49.09,296.02,-358.86],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0030":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-26.95,-15.79,406.41,392.16,729.37,49.09,296.02,-358.86],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0031":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-28.84,-17.8,404.51,390.15,727.47,47.08,294.12,-360.87],"edges":[0,2,2,4,4,6,0,6]}},"TX_SK2_shouji_xian5":{"TX/daoguang_red":{"type":"mesh","hull":4,"width":19,"height":73,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[90.5,-475.16,-84.5,-475.16,-84.5,508.8,90.5,508.8],"edges":[0,2,2,4,4,6,0,6]}},"shenti":{"shenti":{"type":"mesh","hull":19,"width":79,"height":52,"uvs":[0.95874,0.06662,1,0.19779,1,0.55511,0.95129,0.69532,0.85594,0.77222,0.75463,0.90791,0.61906,0.94862,0.33152,1,0.21871,1,0.08845,1,0,0.90803,0,0.81914,0,0.69035,0.04783,0.51803,0.17091,0.34752,0.29427,0.22492,0.40005,0.04626,0.54606,0,0.81572,0,0.47007,0.96445],"triangles":[7,19,6,19,7,11,11,7,8,11,8,9,6,19,11,10,11,9,13,6,12,6,13,14,12,6,11,4,5,6,15,4,6,17,4,15,1,4,17,16,17,15,3,4,1,2,3,1,17,18,1,1,18,0,15,6,14],"vertices":[2,309,491.15,-192.81,0.00239,310,412.32,-152.17,0.99761,2,309,479.58,-260.58,0.00894,310,407.71,-220.76,0.99106,4,309,382.13,-398.67,0.05548,310,324.83,-368.06,0.93891,307,-356.31,426.8,0.00205,308,-357.27,514.5,0.00356,4,309,315.31,-432.7,0.07968,310,261.83,-408.71,0.90378,307,-286.95,455.29,0.00629,308,-283.41,527.38,0.01025,4,309,238.41,-422.94,0.11964,310,184.33,-406.83,0.83449,307,-211.09,439.32,0.01765,308,-212.77,495.44,0.02822,4,309,141.97,-433.44,0.18143,310,89.46,-427.1,0.70484,307,-114.12,441.95,0.043,308,-117.5,477.13,0.07073,4,309,51.33,-393.04,0.23153,310,-4.82,-396.14,0.54108,307,-27.06,394.32,0.08131,308,-42.75,411.87,0.14609,4,309,-131.36,-293.86,0.17429,310,-196.66,-316.08,0.11677,307,146.97,280.63,0.14772,308,102.72,263.37,0.56123,4,309,-197.54,-247.16,0.08825,310,-267.25,-276.36,0.03497,307,209.14,228.71,0.09586,308,152.25,199.28,0.78092,4,309,-273.95,-193.23,0.02139,310,-348.75,-230.49,0.00254,307,280.92,168.76,0.02198,308,209.43,125.28,0.95409,2,309,-300.75,-121.07,0.00282,308,213.84,48.42,0.99718,2,309,-276.51,-86.72,0.00063,308,180.57,22.71,0.99937,1,308,132.37,-14.53,1,2,307,157.17,-24.91,0.01725,308,46.87,-37.2,0.98275,2,309,-47.63,24.79,0.04118,307,37.64,-30.16,0.95882,2,309,58.18,21.09,0.92263,310,-40.18,16.54,0.07737,1,310,67.45,52.94,1,1,310,169.54,20.6,1,1,310,338.28,-74.35,1,4,309,-40.38,-337.48,0.24673,310,-101.71,-350.21,0.30911,307,59.84,331.5,0.1361,308,28.59,331.81,0.30807],"edges":[0,36,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36]}},"TX_SK2_shouji_lie7":{"TX/atk_guangci3_0025":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-26.93,-15.82,405.97,392.61,729.31,49.9,296.42,-358.53],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0027":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-26.93,-15.82,405.97,392.61,729.31,49.9,296.42,-358.53],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0028":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-26.93,-15.82,405.97,392.61,729.31,49.9,296.42,-358.53],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0030":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-26.93,-15.82,405.97,392.61,729.31,49.9,296.42,-358.53],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0031":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-28.82,-17.83,404.08,390.6,727.42,47.89,294.52,-360.54],"edges":[0,2,2,4,4,6,0,6]}},"TX_SK2_shouji_xian8":{"TX/daoguang_red":{"type":"mesh","hull":4,"width":19,"height":73,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[90.5,-475.16,-84.5,-475.16,-84.5,508.8,90.5,508.8],"edges":[0,2,2,4,4,6,0,6]}},"TX_SK2_shouji_lie9":{"TX/atk_guangci3_0025":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[13.76,-28.04,-361.05,434.28,4.95,731,379.76,268.69],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0027":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[13.76,-28.04,-361.05,434.28,4.95,731,379.76,268.69],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0028":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[13.76,-28.04,-361.05,434.28,4.95,731,379.76,268.69],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0030":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[13.76,-28.04,-361.05,434.28,4.95,731,379.76,268.69],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0031":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[15.62,-30.08,-359.19,432.24,6.81,728.96,381.62,266.65],"edges":[0,2,2,4,4,6,0,6]}},"TX/chentu1":{"TX/chentu1":{"type":"mesh","hull":4,"width":77,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[72.1,-24.64,-624.9,-24.64,-624.9,435.36,72.1,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu3":{"type":"mesh","hull":4,"width":76,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[71.1,-24.64,-623.9,-24.64,-623.9,435.36,71.1,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu4":{"type":"mesh","hull":4,"width":78,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[77.6,-24.64,-630.4,-24.64,-630.4,435.36,77.6,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu5":{"type":"mesh","hull":4,"width":76,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[68.1,-24.64,-620.9,-24.64,-620.9,435.36,68.1,435.36],"edges":[0,2,2,4,4,6,0,6]}},"TX/chentu2":{"TX/chentu1":{"type":"mesh","hull":4,"width":77,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[72.1,-24.64,-624.9,-24.64,-624.9,435.36,72.1,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu3":{"type":"mesh","hull":4,"width":76,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[71.1,-24.64,-623.9,-24.64,-623.9,435.36,71.1,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu4":{"type":"mesh","hull":4,"width":78,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[77.6,-24.64,-630.4,-24.64,-630.4,435.36,77.6,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu5":{"type":"mesh","hull":4,"width":76,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[68.1,-24.64,-620.9,-24.64,-620.9,435.36,68.1,435.36],"edges":[0,2,2,4,4,6,0,6]}},"TX/chentu3":{"TX/chentu1":{"type":"mesh","hull":4,"width":77,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[72.1,-24.64,-624.9,-24.64,-624.9,435.36,72.1,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu3":{"type":"mesh","hull":4,"width":76,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[71.1,-24.64,-623.9,-24.64,-623.9,435.36,71.1,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu4":{"type":"mesh","hull":4,"width":78,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[77.6,-24.64,-630.4,-24.64,-630.4,435.36,77.6,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu5":{"type":"mesh","hull":4,"width":76,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[68.1,-24.64,-620.9,-24.64,-620.9,435.36,68.1,435.36],"edges":[0,2,2,4,4,6,0,6]}},"TX/chentu4":{"TX/chentu1":{"type":"mesh","hull":4,"width":77,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[72.1,-24.64,-624.9,-24.64,-624.9,435.36,72.1,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu3":{"type":"mesh","hull":4,"width":76,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[71.1,-24.64,-623.9,-24.64,-623.9,435.36,71.1,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu4":{"type":"mesh","hull":4,"width":78,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[77.6,-24.64,-630.4,-24.64,-630.4,435.36,77.6,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu5":{"type":"mesh","hull":4,"width":76,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[68.1,-24.64,-620.9,-24.64,-620.9,435.36,68.1,435.36],"edges":[0,2,2,4,4,6,0,6]}},"TX/chentu5":{"TX/chentu1":{"type":"mesh","hull":4,"width":77,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[72.1,-24.64,-624.9,-24.64,-624.9,435.36,72.1,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu3":{"type":"mesh","hull":4,"width":76,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[71.1,-24.64,-623.9,-24.64,-623.9,435.36,71.1,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu4":{"type":"mesh","hull":4,"width":78,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[77.6,-24.64,-630.4,-24.64,-630.4,435.36,77.6,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu5":{"type":"mesh","hull":4,"width":76,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[68.1,-24.64,-620.9,-24.64,-620.9,435.36,68.1,435.36],"edges":[0,2,2,4,4,6,0,6]}},"TX/chentu6":{"TX/chentu1":{"type":"mesh","hull":4,"width":77,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[72.1,-24.64,-624.9,-24.64,-624.9,435.36,72.1,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu3":{"type":"mesh","hull":4,"width":76,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[71.1,-24.64,-623.9,-24.64,-623.9,435.36,71.1,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu4":{"type":"mesh","hull":4,"width":78,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[77.6,-24.64,-630.4,-24.64,-630.4,435.36,77.6,435.36],"edges":[0,2,2,4,4,6,0,6]},"TX/chentu5":{"type":"mesh","hull":4,"width":76,"height":51,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[68.1,-24.64,-620.9,-24.64,-620.9,435.36,68.1,435.36],"edges":[0,2,2,4,4,6,0,6]}},"BZ/z_bianzi5_liuguang":{"TX/liugguang2":{"type":"mesh","hull":4,"width":35,"height":31,"uvs":[1,1,0,1,0,0,1,0,0.09703,0.30094,0.15831,0.47812,0.27492,0.63538,0.42909,0.75498,0.54472,0.83693,0.70185,0.88344,0.83725,0.86129,0.89852,0.7738,0.84318,0.58665,0.74435,0.42497,0.61884,0.29429,0.45479,0.17691,0.43502,0.16583,0.30556,0.11489,0.18598,0.11821],"triangles":[17,2,3,18,2,17,16,17,3,15,16,3,14,15,3,4,2,18,13,14,3,17,5,4,12,13,3,18,17,4,16,5,17,15,5,16,6,15,14,7,6,14,5,15,6,13,7,14,7,13,12,11,12,3,8,7,12,8,12,9,12,11,9,11,10,9,4,1,2,1,4,5,1,5,6,1,6,7,3,0,11,10,11,0,9,10,0,1,8,9,1,7,8,0,1,9],"vertices":[350.81,-2.73,107.74,-204.64,-72.46,12.28,170.62,214.2,5.36,-33.41,52.18,-59.47,108.86,-70.04,167.89,-64.85,210.76,-59.28,257.33,-37.64,286.25,-5.5,285.38,25.85,238.21,55.27,185.05,70.39,131,73.39,69.97,65.73,63.17,64.14,22.52,49.05,-5.95,24.19],"edges":[0,6,0,2,2,4,4,6]}},"y-meimao":{"y-meimao_shouji":{"type":"mesh","hull":4,"width":17,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[82.24,22.58,-30.06,-79.86,-118.35,16.92,-6.05,119.36],"edges":[0,2,2,4,4,6,0,6]},"y_meimao_gongji":{"type":"mesh","hull":4,"width":14,"height":17,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[103.97,-27.98,12.36,-111.55,-93.45,4.44,-1.84,88.01],"edges":[0,2,2,4,4,6,0,6]},"y_meimao_pingshi":{"type":"mesh","hull":4,"width":12,"height":19,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[111.95,-8.53,29.21,-84.01,-89.4,46.02,-6.66,121.5],"edges":[0,2,2,4,4,6,0,6]},"y_meimao_shengli":{"type":"mesh","hull":4,"width":20,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[83.66,7.65,-52.28,-116.35,-140.56,-19.57,-4.62,104.43],"edges":[0,2,2,4,4,6,0,6]}},"TX_guangxian2":{"TX/daoguang_red":{"type":"mesh","hull":4,"width":19,"height":73,"uvs":[1,1,0,1,0,0,1,0,0.23298,0.7195,0.26387,0.81284,0.50071,0.97113,0.68091,0.81284,0.7221,0.68162,0.70665,0.52468,0.7221,0.37181,0.63972,0.20541,0.45437,0.04577,0.30506,0.20541,0.25358,0.38398,0.21239,0.53821],"triangles":[12,2,3,13,2,12,11,12,3,10,11,3,14,2,13,10,14,11,15,2,14,10,0,9,0,8,9,8,4,15,13,12,11,14,13,11,9,14,10,8,15,9,9,15,14,7,4,8,5,4,7,6,5,7,1,2,15,1,15,4,1,4,5,3,0,10,7,8,0,6,7,0,1,5,6,1,6,0],"vertices":[91.04,-311.15,-83.96,-311.15,-83.96,354.85,91.04,354.85,-43.19,-124.33,-37.79,-186.5,3.66,-291.92,35.19,-186.5,42.4,-99.11,39.7,5.41,42.4,107.22,27.99,218.05,-4.45,324.36,-30.58,218.05,-39.59,99.12,-46.8,-3.6],"edges":[0,6,0,2,2,4,4,6]}},"TX_SK2_shouji_quan2":{"TX/Energy 007 Impact Radial_00008":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[149.95,-149.72,-150.05,-149.72,-150.05,150.28,149.95,150.28],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00010":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[149.95,-149.72,-150.05,-149.72,-150.05,150.28,149.95,150.28],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00012":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[149.95,-149.72,-150.05,-149.72,-150.05,150.28,149.95,150.28],"edges":[0,2,2,4,4,6,0,6]},"TX/Energy 007 Impact Radial_00015":{"type":"mesh","hull":4,"width":33,"height":33,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[149.95,-149.72,-150.05,-149.72,-150.05,150.28,149.95,150.28],"edges":[0,2,2,4,4,6,0,6]}},"BZ/z_bianzi_hou2":{"BZ/z_bianzi1_bz":{"type":"mesh","hull":12,"width":39,"height":22,"uvs":[0.66802,0.06985,0.84411,0.24062,1,0.55612,1,0.90924,0.87538,1,0.57915,1,0.37344,0.9324,0.16608,0.78189,0,0.57349,0,0.14221,0.26811,0,0.4837,0,0.05746,0.3043,0.21874,0.21747,0.51333,0.29272,0.76347,0.47218,0.97413,0.77031],"triangles":[13,9,10,14,11,0,14,0,1,13,10,11,14,13,11,12,9,13,15,14,1,15,1,2,8,9,12,16,15,2,13,8,12,7,13,14,6,7,14,7,8,13,16,2,3,15,6,14,5,6,15,16,5,15,16,4,5,3,4,16],"vertices":[1,116,210.57,102.32,1,1,116,278.96,85.72,1,1,116,348.11,39.49,1,1,116,366.58,-28.31,1,1,116,329.24,-57.2,1,1,116,229.21,-84.45,1,1,116,156.2,-90.4,1,1,116,78.31,-80.57,1,1,116,11.32,-55.84,1,1,116,-11.24,26.97,1,1,116,71.87,78.94,1,1,116,144.67,98.77,1,1,116,16.65,1.13,1,1,116,66.57,32.64,1,1,116,169.98,45.29,1,1,116,263.84,33.85,1,1,116,350.57,-4.02,1],"edges":[0,22,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22]}},"BZ/z_bianzi_hou3":{"BZ/y_bianzi3_bz":{"type":"mesh","hull":34,"width":81,"height":39,"uvs":[1,0.13615,0.91919,0.20712,0.8516,0.26212,0.78738,0.33309,0.73162,0.40406,0.67298,0.48103,0.62205,0.55993,0.56027,0.64585,0.49348,0.73176,0.41917,0.81768,0.36239,0.88255,0.29643,0.93866,0.22767,0.98104,0.15299,1,0.08071,1,0,1,0,0.90465,0.0157,0.86004,0.06978,0.86613,0.14027,0.86613,0.20883,0.84382,0.27063,0.80935,0.33146,0.75663,0.39133,0.67957,0.45892,0.59643,0.51879,0.51735,0.57705,0.43262,0.63498,0.34746,0.69002,0.2704,0.74313,0.1974,0.81169,0.11426,0.87445,0.05343,0.94977,0,1,0],"triangles":[16,14,15,18,16,17,14,16,18,13,14,19,14,18,19,12,13,19,19,20,12,12,20,11,20,21,11,11,21,10,21,22,10,10,22,9,22,23,9,9,23,8,23,24,8,8,24,7,24,25,7,7,25,6,25,26,6,6,26,5,26,27,5,5,27,4,27,28,4,4,28,3,28,29,3,3,29,2,1,2,30,2,29,30,30,31,1,1,31,0,31,32,0,32,33,0],"vertices":[1,132,47.66,-29.73,1,2,132,-16.71,-29.02,0.14717,131,36.56,-27.82,0.85283,2,131,-16.59,-24.14,0.13167,130,34.76,-24.3,0.86833,2,130,-18.5,-27.15,0.07071,129,37.56,-26.19,0.92929,2,129,-10.35,-27.52,0.16928,128,40.53,-27.3,0.83072,2,128,-10.27,-25.41,0.23526,127,42.89,-24.67,0.76474,2,127,-3.63,-25.04,0.49888,126,55.07,-26,0.50112,2,126,0.64,-27.95,0.58239,125,64.6,-28.89,0.41761,2,125,7.21,-24.36,0.72693,124,64.27,-23.76,0.27307,2,124,1.92,-23.35,0.56545,123,46.19,-22.97,0.43455,2,123,-1.31,-23.93,0.47371,122,52.09,-24.49,0.52629,2,122,-0.21,-24.95,0.46516,121,49.63,-23.14,0.53484,2,121,-3.04,-23.35,0.52023,120,61.03,-23.66,0.47977,2,120,5.9,-19.53,0.72814,119,61.93,-17.83,0.27186,2,119,8.8,-17.39,0.77994,118,44.11,-16.4,0.22006,1,117,6.04,-21.56,1,1,117,-17.69,1.91,1,1,117,-20.67,21.1,1,3,119,1.16,29.53,0.41209,118,32.1,29.59,0.58649,117,8.8,47.86,0.00142,3,120,5.81,28.25,0.57187,119,52.96,29.1,0.428,117,45.25,84.7,0.00013,2,121,-3.01,26.63,0.44748,120,56.75,26.14,0.55252,2,122,-1.24,24.11,0.39422,121,43.97,25.61,0.60578,2,123,-1.22,25.66,0.45995,122,47.13,24.85,0.54005,3,124,7.66,28.82,0.69707,123,50.26,29.37,0.30275,121,141.81,44.62,0.00018,2,125,14.5,28.88,0.73729,124,65.22,29.97,0.26271,2,126,-1.9,26.32,0.55636,125,66.37,25.41,0.44364,2,127,-4.24,30.45,0.42348,126,50.11,29.28,0.57652,2,128,-7.15,28.96,0.34366,127,47.74,29.57,0.65634,2,129,-13.8,28.26,0.18085,128,41.47,28.58,0.81915,3,130,-28.22,29.58,0.05048,129,32.77,31.17,0.92845,128,88.12,27.83,0.02107,3,131,-21.15,35.17,0.10951,130,29.72,34.98,0.85177,129,90.95,31.55,0.03872,3,132,-25.61,33.39,0.06388,131,29.66,34.85,0.88221,130,80.53,35.06,0.05391,2,132,32.63,28.64,0.95671,131,87.72,28.25,0.04329,1,132,66.53,14.03,1],"edges":[0,66,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,52,52,54,54,56,56,58,58,60,60,62,62,64,64,66]}},"BZ/z_bianzi_hou4":{"BZ/z_bianzi1_bz":{"type":"mesh","hull":12,"width":39,"height":22,"uvs":[0.66802,0.06985,0.84411,0.24062,1,0.55612,1,0.90924,0.87538,1,0.57915,1,0.37344,0.9324,0.16608,0.78189,0,0.57349,0,0.14221,0.26811,0,0.4837,0,0.05746,0.3043,0.21874,0.21747,0.51333,0.29272,0.76347,0.47218,0.97413,0.77031],"triangles":[13,9,10,14,11,0,14,0,1,13,10,11,14,13,11,12,9,13,15,14,1,15,1,2,8,9,12,16,15,2,13,8,12,7,13,14,6,7,14,7,8,13,16,2,3,15,6,14,5,6,15,16,5,15,16,4,5,3,4,16],"vertices":[1,133,210.57,102.32,1,1,133,278.96,85.72,1,1,133,348.11,39.49,1,1,133,366.58,-28.31,1,1,133,329.24,-57.2,1,1,133,229.21,-84.45,1,1,133,156.2,-90.4,1,1,133,78.31,-80.57,1,1,133,11.32,-55.84,1,1,133,-11.24,26.97,1,1,133,71.87,78.94,1,1,133,144.67,98.77,1,1,133,16.65,1.13,1,1,133,66.57,32.64,1,1,133,169.98,45.29,1,1,133,263.84,33.85,1,1,133,350.57,-4.02,1],"edges":[0,22,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22]}},"TX_SK2_shouji_lie6":{"TX/atk_guangci3_0025":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[13.76,-28.04,-361.05,434.28,4.95,731,379.76,268.69],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0027":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[13.76,-28.04,-361.05,434.28,4.95,731,379.76,268.69],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0028":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[13.76,-28.04,-361.05,434.28,4.95,731,379.76,268.69],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0030":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[13.76,-28.04,-361.05,434.28,4.95,731,379.76,268.69],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0031":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[15.62,-30.08,-359.19,432.24,6.81,728.96,381.62,266.65],"edges":[0,2,2,4,4,6,0,6]}},"TX_huaban1":{"TX/hua_a2":{"type":"mesh","hull":4,"width":14,"height":18,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-0.22,-9.52,-87.44,81.42,29.49,193.55,116.7,102.61],"edges":[0,2,2,4,4,6,0,6]}},"TX_huaban2_sanluo2":{"TX/hua_a3":{"type":"mesh","hull":4,"width":23,"height":13,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[118.56,169.08,6.22,-8.35,-95.16,55.84,17.17,233.27],"edges":[0,2,2,4,4,6,0,6]}},"TX/TX_yan1_8":{"TX/TX_S1_yan_0024":{"type":"mesh","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[96.08,-42.6,-161.92,-42.6,-161.92,197.4,96.08,197.4],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_yan_0029":{"type":"mesh","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[3.26,-92.08,-175.42,94.03,-2.29,260.24,176.39,74.13],"edges":[0,2,2,4,4,6,0,6]}},"TX/TX_yan1_1":{"TX/TX_S1_yan_26":{"type":"mesh","path":"TX/TX_S1_yan_0024","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[96.08,-42.6,-161.92,-42.6,-161.92,197.4,96.08,197.4],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_yan_0029":{"type":"mesh","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0,0.54466,0.88587,0.87646,0.73758,0.80749,0.44302,0.25573,0.75562],"triangles":[6,2,3,5,6,3,7,2,6,4,7,6,5,4,6,1,2,7,5,3,0,4,5,0,1,7,4,1,4,0],"vertices":[3.27,-92.05,-175.39,94.02,-2.3,260.21,176.35,74.14,-58.33,11.64,26.62,-25.45,65.28,36.33,-87.4,87.05],"edges":[0,6,0,2,2,4,4,6]}},"BZ/z_bianzi_hou3_liuguang":{"TX/liuguang3":{"type":"mesh","hull":4,"width":46,"height":29,"uvs":[1,1,0,1,0,0,1,0,0.07199,0.45436,0.1407,0.61282,0.28216,0.75384,0.45292,0.83148,0.63581,0.87268,0.78536,0.8505,0.91041,0.78511,0.92349,0.57833,0.784,0.31345,0.63689,0.17332,0.38298,0.11009,0.20862,0.17332,0.09856,0.23484],"triangles":[14,2,3,15,2,14,13,14,3,16,2,15,12,13,3,4,2,16,11,12,3,15,4,16,5,4,15,14,5,15,13,5,14,6,13,12,7,6,12,13,6,5,12,11,7,7,11,8,10,9,11,9,8,11,4,1,2,1,4,5,1,5,6,3,0,11,10,11,0,9,10,0,8,9,0,1,7,8,1,6,7,0,1,8],"vertices":[407.3,-65.41,12.56,-174.65,-57.11,77.07,337.64,186.31,2.96,-29.44,41.12,-61.82,106.79,-81.86,179.61,-82.75,254.67,-73.15,312.16,-51.23,356.97,-21.11,347.73,32.37,274.21,83.81,206.38,103.02,101.74,91.2,37.32,56.23,-1.84,28.72],"edges":[0,6,0,2,2,4,4,6]}},"BZ/y_bianzi_hou":{"BZ/z_bianzi2_bz":{"type":"mesh","hull":55,"width":124,"height":18,"uvs":[0.3936,0.09175,0.44138,0.1575,0.48888,0.25239,0.53473,0.33439,0.57649,0.40772,0.62094,0.49385,0.6674,0.54709,0.70533,0.59669,0.73817,0.62041,0.78185,0.63112,0.81117,0.63759,0.83827,0.63327,0.86906,0.62357,0.90856,0.59823,0.93998,0.55734,0.97317,0.47402,0.99339,0.59823,0.99478,0.75703,0.98618,0.86237,0.95388,0.92998,0.92087,0.96771,0.87416,1,0.83891,1,0.80894,1,0.77588,1,0.72938,0.97242,0.69284,0.946,0.64844,0.89379,0.60665,0.82902,0.55843,0.74203,0.51182,0.63329,0.46971,0.53761,0.4231,0.4441,0.37554,0.37016,0.32475,0.32449,0.28135,0.30709,0.2341,0.32014,0.1952,0.34189,0.1506,0.38168,0.11764,0.43709,0.08858,0.50833,0.06226,0.58354,0.03714,0.67863,0.01484,0.77087,0,0.65213,0,0.49961,0.02151,0.4237,0.04524,0.32774,0.07307,0.24729,0.10246,0.15924,0.1385,0.08941,0.18585,0.02868,0.23043,0,0.28188,0,0.33717,0],"triangles":[46,47,41,46,42,45,47,40,41,42,44,45,46,41,42,43,44,42,39,48,49,40,47,48,48,39,40,49,50,38,38,50,37,39,49,38,52,36,51,51,37,50,36,37,51,54,34,35,54,35,53,35,36,52,35,52,53,14,15,16,16,19,14,14,19,13,16,17,19,18,19,17,19,20,13,12,13,20,12,20,21,21,11,12,11,22,10,10,22,23,22,11,21,25,9,24,9,10,24,10,23,24,8,25,26,8,9,25,7,26,27,7,8,26,27,6,7,28,6,27,28,5,6,29,5,28,4,29,30,5,29,4,3,30,31,4,30,3,2,31,32,3,31,2,1,32,33,2,32,1,54,0,34,0,33,34,1,33,0],"vertices":[2,54,59.92,23.98,0.90112,55,-14.89,23.33,0.09888,2,55,39.86,24.43,0.92463,56,-22.1,22.29,0.07537,2,56,33.52,22.98,0.98777,57,-28.04,23.12,0.01223,3,56,86.73,25.16,0.01699,57,25.18,25.31,0.97187,58,-27.44,26.41,0.01114,2,57,73.57,27.51,0.05115,58,21.01,26.69,0.94885,3,58,72.92,25.7,0.08482,59,24.77,26.37,0.85712,60,-23.19,26.62,0.05806,3,59,77.53,30.4,0.01414,60,29.58,30.65,0.8852,61,-16.01,32.13,0.10066,3,60,72.9,32.96,0.01274,61,27.36,31,0.83478,62,-15.92,32.05,0.15248,3,61,64.38,33.16,0.10245,62,21.14,30.7,0.87336,63,-30,31.99,0.02419,3,62,70.19,32.35,0.14491,63,19.07,33.25,0.82827,64,-29.07,36.08,0.02682,2,63,52.01,34.22,0.44545,64,3.79,33.69,0.55455,3,63,82.34,36.82,0.02219,64,34.23,33.18,0.96015,65,-25.14,35.57,0.01765,2,64,68.84,33.41,0.32852,65,9.34,32.52,0.67148,2,65,53.86,30.72,0.85782,66,-2.08,31.76,0.14218,2,65,89.73,32.7,0.10086,66,33.79,29.79,0.89914,1,66,73.31,34.18,1,1,66,90.35,8.68,1,1,66,85.48,-17.28,1,1,66,71.87,-31.9,1,1,66,33.95,-34,1,2,65,59.31,-31.92,0.24388,66,-3.52,-31.1,0.75612,3,64,72.07,-29.25,0.22109,65,6.61,-30.17,0.757,66,-55.72,-23.59,0.02191,1,64,32.51,-27.67,1,2,63,53.24,-25.98,0.49802,64,-1.12,-26.33,0.50198,2,62,67.79,-29.2,0.13752,63,16.18,-28.28,0.86248,2,61,64.23,-26.1,0.11595,62,15.37,-28.28,0.88405,2,61,23.04,-28.5,0.96559,62,-25.86,-26.77,0.03441,3,59,70.77,-30.6,0.06591,60,22.82,-30.34,0.86101,61,-27.58,-28.14,0.07309,3,58,71.7,-32.2,0.00026,59,22.63,-31.5,0.96937,60,-25.32,-31.25,0.03037,3,57,70.56,-31.5,0.13521,58,15.66,-32.15,0.81103,59,-33.4,-30.57,0.05377,3,56,76.78,-29.84,0.13127,57,15.23,-29.69,0.86368,58,-39.56,-28.15,0.00505,3,55,84.73,-30.16,0.18717,56,26.91,-28.62,0.80836,57,-34.64,-28.47,0.00447,2,54,102.67,-27.91,0.00569,55,30.26,-26.48,0.99431,2,54,47.94,-25.05,0.973,55,-24.55,-26.21,0.027,3,54,-9.55,-27.43,0.19654,52,102.32,-30.88,0.02845,53,49.58,-25.79,0.77501,2,52,53.91,-24.59,0.95344,53,0.76,-25.59,0.04656,2,52,0.82,-23.03,0.51658,51,52.9,-23.12,0.48342,1,51,9.07,-23.31,1,1,49,38.72,-20.15,1,2,49,0.59,-21.08,0.4784,48,52.24,-21.07,0.5216,2,48,17.54,-20.65,0.93133,47,80.56,-23.68,0.06867,2,48,-14.53,-21.91,0.1316,47,48.65,-20.19,0.8684,1,47,16.33,-20.24,1,1,47,-13,-21.42,1,1,47,-17.96,3.91,1,1,47,-5.63,26.02,1,1,47,21.61,25.27,1,2,48,-17.46,24.56,0.13467,47,52.64,26.21,0.86533,2,48,16.49,26.05,0.91002,47,86.43,22.66,0.08998,2,49,-6.02,27.65,0.42359,48,52.54,28.1,0.57641,2,49,36.01,30.16,0.78904,50,-14.31,29.29,0.21096,2,51,2.65,29.34,0.24846,50,39.8,28.43,0.75154,4,52,0.43,30.27,0.49848,53,-59.15,22.16,0.01368,51,52.93,30.19,0.48352,50,89.79,22.98,0.00432,2,52,58.07,26.22,0.18567,53,-1.45,25.34,0.81433,2,54,-5.12,28.03,0.39186,53,60.54,28.77,0.60814],"edges":[0,108,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,52,52,54,54,56,56,58,58,60,60,62,62,64,64,66,66,68,68,70,70,72,72,74,74,76,76,78,78,80,80,82,82,84,84,86,86,88,88,90,90,92,92,94,94,96,96,98,98,100,100,102,102,104,104,106,106,108]}},"TX_SK2_shouji_lie3":{"TX/atk_guangci3_0025":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[13.76,-28.04,-361.05,434.28,4.95,731,379.76,268.69],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0027":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[13.76,-28.04,-361.05,434.28,4.95,731,379.76,268.69],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0028":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[13.76,-28.04,-361.05,434.28,4.95,731,379.76,268.69],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0030":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[13.76,-28.04,-361.05,434.28,4.95,731,379.76,268.69],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0031":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[15.62,-30.08,-359.19,432.24,6.81,728.96,381.62,266.65],"edges":[0,2,2,4,4,6,0,6]}},"TX/shuye2":{"TX/shuye":{"type":"mesh","hull":17,"width":25,"height":30,"uvs":[0.33952,0.02865,0.54277,0.09882,0.79143,0.26075,0.96009,0.46767,0.95361,0.68718,0.87793,0.80593,0.95577,1,0.81738,1,0.78082,0.87662,0.62549,0.9004,0.40588,0.8484,0.22734,0.69389,0.14521,0.46658,0.08629,0.24521,0,0.06841,0,0,0.14275,0],"triangles":[14,15,16,13,14,16,0,13,16,12,13,0,1,12,0,12,2,11,2,10,11,10,2,9,3,5,2,2,12,1,3,4,5,2,5,9,5,8,9,7,8,5,7,5,6],"vertices":[3,148,242.4,-9.4,0.0212,358,141.69,-32.19,0.05046,359,31.73,-41.84,0.92834,3,148,195.77,-42.51,0.46007,358,89.83,-58.36,0.32999,359,-25.59,-56.27,0.20995,2,148,120.91,-70.89,0.99666,358,10.92,-75.88,0.00334,1,148,47.4,-74.65,1,1,148,-3.04,-38.21,1,2,148,-19.61,-2.76,0.99829,358,-115.9,11.12,0.00171,1,148,-76.63,11.24,1,2,148,-56.07,41.41,0.99949,358,-144.16,59.85,0.00051,2,148,-21.75,29.69,0.90374,358,-112.31,43.47,0.09626,2,148,-4.24,67.35,0.28992,358,-88.41,78.2,0.71008,3,148,40.56,106.93,0.00394,358,-37.22,111.01,0.99545,359,-104.11,135.19,0.00061,2,358,27.22,116.31,0.97683,359,-40.11,126.69,0.02317,2,358,88.62,88.99,0.82679,359,12.3,87.14,0.17321,2,358,144.52,58.29,0.25336,359,58.47,45.48,0.74664,2,358,196.42,41.41,0.00112,359,104.41,18.07,0.99888,1,359,114.46,2.47,1,1,359,81.45,-18.9,1],"edges":[0,32,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32]}},"TX/shuye3":{"TX/shuye":{"type":"mesh","hull":17,"width":25,"height":30,"uvs":[0.33952,0.02865,0.54277,0.09882,0.79143,0.26075,0.96009,0.46767,0.95361,0.68718,0.87793,0.80593,0.95577,1,0.81738,1,0.78082,0.87662,0.62549,0.9004,0.40588,0.8484,0.22734,0.69389,0.14521,0.46658,0.08629,0.24521,0,0.06841,0,0,0.14275,0],"triangles":[14,15,16,13,14,16,0,13,16,12,13,0,1,12,0,12,2,11,2,10,11,10,2,9,3,5,2,2,12,1,3,4,5,2,5,9,5,8,9,7,8,5,7,5,6],"vertices":[3,149,242.4,-9.4,0.0212,360,141.69,-32.19,0.05046,361,31.73,-41.84,0.92834,3,149,195.77,-42.51,0.46007,360,89.83,-58.36,0.32999,361,-25.59,-56.27,0.20995,2,149,120.91,-70.89,0.99666,360,10.92,-75.88,0.00334,1,149,47.4,-74.65,1,1,149,-3.04,-38.21,1,2,149,-19.61,-2.76,0.99829,360,-115.9,11.12,0.00171,1,149,-76.63,11.24,1,2,149,-56.07,41.41,0.99949,360,-144.16,59.85,0.00051,2,149,-21.75,29.69,0.90374,360,-112.31,43.47,0.09626,2,149,-4.24,67.35,0.28992,360,-88.41,78.2,0.71008,3,149,40.56,106.93,0.00394,360,-37.22,111.01,0.99545,361,-104.11,135.19,0.00061,2,360,27.22,116.31,0.97683,361,-40.11,126.69,0.02317,2,360,88.62,88.99,0.82679,361,12.3,87.14,0.17321,2,360,144.52,58.29,0.25336,361,58.47,45.48,0.74664,2,360,196.42,41.41,0.00112,361,104.41,18.07,0.99888,1,361,114.46,2.47,1,1,361,81.45,-18.9,1],"edges":[0,32,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32]}},"TX/shuye4":{"TX/shuye":{"type":"mesh","hull":17,"width":25,"height":30,"uvs":[0.33952,0.02865,0.54277,0.09882,0.79143,0.26075,0.96009,0.46767,0.95361,0.68718,0.87793,0.80593,0.95577,1,0.81738,1,0.78082,0.87662,0.62549,0.9004,0.40588,0.8484,0.22734,0.69389,0.14521,0.46658,0.08629,0.24521,0,0.06841,0,0,0.14275,0],"triangles":[14,15,16,13,14,16,0,13,16,12,13,0,1,12,0,12,2,11,2,10,11,10,2,9,3,5,2,2,12,1,3,4,5,2,5,9,5,8,9,7,8,5,7,5,6],"vertices":[3,150,242.4,-9.4,0.0212,362,141.69,-32.19,0.05046,363,31.73,-41.84,0.92834,3,150,195.77,-42.51,0.46007,362,89.83,-58.36,0.32999,363,-25.59,-56.27,0.20995,2,150,120.91,-70.89,0.99666,362,10.92,-75.88,0.00334,1,150,47.4,-74.65,1,1,150,-3.04,-38.21,1,2,150,-19.61,-2.76,0.99829,362,-115.9,11.12,0.00171,1,150,-76.63,11.24,1,2,150,-56.07,41.41,0.99949,362,-144.16,59.85,0.00051,2,150,-21.75,29.69,0.90374,362,-112.31,43.47,0.09626,2,150,-4.24,67.35,0.28992,362,-88.41,78.2,0.71008,3,150,40.56,106.93,0.00394,362,-37.22,111.01,0.99545,363,-104.11,135.19,0.00061,2,362,27.22,116.31,0.97683,363,-40.11,126.69,0.02317,2,362,88.62,88.99,0.82679,363,12.3,87.14,0.17321,2,362,144.52,58.29,0.25336,363,58.47,45.48,0.74664,2,362,196.42,41.41,0.00112,363,104.41,18.07,0.99888,1,363,114.46,2.47,1,1,363,81.45,-18.9,1],"edges":[0,32,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32]}},"TX/shuye5":{"TX/shuye":{"type":"mesh","hull":17,"width":25,"height":30,"uvs":[0.33952,0.02865,0.54277,0.09882,0.79143,0.26075,0.96009,0.46767,0.95361,0.68718,0.87793,0.80593,0.95577,1,0.81738,1,0.78082,0.87662,0.62549,0.9004,0.40588,0.8484,0.22734,0.69389,0.14521,0.46658,0.08629,0.24521,0,0.06841,0,0,0.14275,0],"triangles":[14,15,16,13,14,16,0,13,16,12,13,0,1,12,0,12,2,11,2,10,11,10,2,9,3,5,2,2,12,1,3,4,5,2,5,9,5,8,9,7,8,5,7,5,6],"vertices":[3,151,242.4,-9.4,0.0212,364,141.69,-32.19,0.05046,365,31.73,-41.84,0.92834,3,151,195.77,-42.51,0.46007,364,89.83,-58.36,0.32999,365,-25.59,-56.27,0.20995,2,151,120.91,-70.89,0.99666,364,10.92,-75.88,0.00334,1,151,47.4,-74.65,1,1,151,-3.04,-38.21,1,2,151,-19.61,-2.76,0.99829,364,-115.9,11.12,0.00171,1,151,-76.63,11.24,1,2,151,-56.07,41.41,0.99949,364,-144.16,59.85,0.00051,2,151,-21.75,29.69,0.90374,364,-112.31,43.47,0.09626,2,151,-4.24,67.35,0.28992,364,-88.41,78.2,0.71008,3,151,40.56,106.93,0.00394,364,-37.22,111.01,0.99545,365,-104.11,135.19,0.00061,2,364,27.22,116.31,0.97683,365,-40.11,126.69,0.02317,2,364,88.62,88.99,0.82679,365,12.3,87.14,0.17321,2,364,144.52,58.29,0.25336,365,58.47,45.48,0.74664,2,364,196.42,41.41,0.00112,365,104.41,18.07,0.99888,1,365,114.46,2.47,1,1,365,81.45,-18.9,1],"edges":[0,32,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32]}},"TX/shuye6":{"TX/shuye":{"type":"mesh","hull":17,"width":25,"height":30,"uvs":[0.33952,0.02865,0.54277,0.09882,0.79143,0.26075,0.96009,0.46767,0.95361,0.68718,0.87793,0.80593,0.95577,1,0.81738,1,0.78082,0.87662,0.62549,0.9004,0.40588,0.8484,0.22734,0.69389,0.14521,0.46658,0.08629,0.24521,0,0.06841,0,0,0.14275,0],"triangles":[14,15,16,13,14,16,0,13,16,12,13,0,1,12,0,12,2,11,2,10,11,10,2,9,3,5,2,2,12,1,3,4,5,2,5,9,5,8,9,7,8,5,7,5,6],"vertices":[3,152,242.4,-9.4,0.0212,366,141.69,-32.19,0.05046,367,31.73,-41.84,0.92834,3,152,195.77,-42.51,0.46007,366,89.83,-58.36,0.32999,367,-25.59,-56.27,0.20995,2,152,120.91,-70.89,0.99666,366,10.92,-75.88,0.00334,1,152,47.4,-74.65,1,1,152,-3.04,-38.21,1,2,152,-19.61,-2.76,0.99829,366,-115.9,11.12,0.00171,1,152,-76.63,11.24,1,2,152,-56.07,41.41,0.99949,366,-144.16,59.85,0.00051,2,152,-21.75,29.69,0.90374,366,-112.31,43.47,0.09626,2,152,-4.24,67.35,0.28992,366,-88.41,78.2,0.71008,3,152,40.56,106.93,0.00394,366,-37.22,111.01,0.99545,367,-104.11,135.19,0.00061,2,366,27.22,116.31,0.97683,367,-40.11,126.69,0.02317,2,366,88.62,88.99,0.82679,367,12.3,87.14,0.17321,2,366,144.52,58.29,0.25336,367,58.47,45.48,0.74664,2,366,196.42,41.41,0.00112,367,104.41,18.07,0.99888,1,367,114.46,2.47,1,1,367,81.45,-18.9,1],"edges":[0,32,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32]}},"BZ/zuiba":{"BZ/zuiba_bz":{"type":"mesh","hull":4,"width":51,"height":14,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[13.58,176.14,36.2,-284.31,-86.66,-290.34,-109.28,170.1],"edges":[0,2,2,4,4,6,0,6]}},"TX/TX_yan1_1_hou3":{"TX/TX_S1_yan_27":{"type":"mesh","path":"TX/TX_S1_yan_0024","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[96.08,-42.6,-161.92,-42.6,-161.92,197.4,96.08,197.4],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_yan_0029":{"type":"mesh","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[3.26,-92.08,-175.42,94.03,-2.29,260.24,176.39,74.13],"edges":[0,2,2,4,4,6,0,6]}},"TX/TX_yan1_1_hou4":{"TX/TX_S1_yan_27":{"type":"mesh","path":"TX/TX_S1_yan_0024","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[96.08,-42.6,-161.92,-42.6,-161.92,197.4,96.08,197.4],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_yan_0029":{"type":"mesh","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[3.26,-92.08,-175.42,94.03,-2.29,260.24,176.39,74.13],"edges":[0,2,2,4,4,6,0,6]}},"TX/TX_yan1_1_hou5":{"TX/TX_S1_yan_27":{"type":"mesh","path":"TX/TX_S1_yan_0024","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[96.08,-42.6,-161.92,-42.6,-161.92,197.4,96.08,197.4],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_yan_0029":{"type":"mesh","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[3.26,-92.08,-175.42,94.03,-2.29,260.24,176.39,74.13],"edges":[0,2,2,4,4,6,0,6]}},"TX/TX_yan1_1_hou6":{"TX/TX_S1_yan_27":{"type":"mesh","path":"TX/TX_S1_yan_0024","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[96.08,-42.6,-161.92,-42.6,-161.92,197.4,96.08,197.4],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_yan_0029":{"type":"mesh","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[3.26,-92.08,-175.42,94.03,-2.29,260.24,176.39,74.13],"edges":[0,2,2,4,4,6,0,6]}},"TX/TX_yan1_1_hou":{"TX/TX_S1_yan_27":{"type":"mesh","path":"TX/TX_S1_yan_0024","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[96.08,-42.6,-161.92,-42.6,-161.92,197.4,96.08,197.4],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_yan_0029":{"type":"mesh","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[3.26,-92.08,-175.42,94.03,-2.29,260.24,176.39,74.13],"edges":[0,2,2,4,4,6,0,6]}},"y_qiantui":{"y_qiantui":{"type":"mesh","hull":15,"width":26,"height":34,"uvs":[0.60937,0.13105,0.78629,0.33648,0.91746,0.60261,1,0.83138,1,0.95951,0.88108,0.95951,0.84186,1,0.658,1,0.48735,1,0.24636,0.8734,0.05114,0.62128,0,0.39017,0,0.17307,0.09689,0,0.40804,0],"triangles":[3,5,2,6,7,5,5,7,2,2,7,8,5,3,4,10,1,9,1,2,8,8,9,1,1,10,0,0,10,14,12,13,14,14,10,11,14,11,12],"vertices":[2,315,42.79,83.7,0.88809,316,-68.84,107.66,0.11191,2,315,122.77,106.61,0.55809,316,-2.16,110.89,0.44191,3,315,219.36,113.87,0.22796,316,73.75,95.06,0.66093,329,37.99,101.49,0.11111,3,315,300.22,113.19,0.00443,316,135.78,75.29,0.55112,329,59.45,31.91,0.44444,3,315,342.19,102.24,0.0011,316,165.58,54.79,0.22112,329,61.9,-7.84,0.77778,1,329,37.28,-9.83,1,1,329,29.93,-23.05,1,1,329,-8.14,-26.13,1,3,315,318.7,-18.53,0.00894,316,120.23,-56.31,0.32439,329,-43.47,-28.99,0.66667,3,315,259.95,-62.84,0.18777,316,65.04,-85.23,0.4789,329,-95.78,6.25,0.33333,2,315,163.36,-85.96,0.50966,316,-14.45,-84.71,0.49034,2,315,83.98,-77.89,0.83405,316,-73.67,-58.16,0.16595,2,315,12.86,-59.33,0.98855,316,-124.16,-23.42,0.01145,2,315,-36.89,-22.36,0.99999,316,-154.07,24.06,0.00001,2,315,-14.58,48.84,0.99789,316,-120.83,87.55,0.00211],"edges":[0,28,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28]}},"z_qiantui":{"z_qiantui":{"type":"mesh","hull":21,"width":24,"height":36,"uvs":[1,0.24578,1,0.35204,1,0.47001,0.9719,0.55859,0.93419,0.67745,0.8301,0.84408,0.88342,0.9512,0.77778,0.93503,0.7813,0.96585,0.73949,0.97184,0.56098,0.9591,0.54321,1,0.27664,0.9631,0.12939,0.84748,0,0.69105,0,0.57503,0,0.40718,0.05936,0.23059,0.24365,0.08438,0.43928,0,0.81636,0],"triangles":[10,4,5,7,5,6,7,10,5,12,13,10,9,10,7,9,7,8,11,12,10,20,0,1,1,19,20,2,3,1,13,15,16,1,3,19,13,14,15,3,4,19,18,16,17,13,16,10,4,18,19,4,10,18,18,10,16],"vertices":[1,317,92.73,132.19,1,2,317,123.28,117.19,0.77184,318,-42.3,112.02,0.22816,2,317,158.33,100.23,0.51852,318,-6.14,106.59,0.48148,3,317,181.69,83.27,0.36163,318,23.72,97.78,0.5598,328,46.91,128.71,0.07857,3,317,213.05,58.01,0.15111,318,59.44,84.8,0.66489,328,64.72,83.01,0.184,3,317,252.35,14.05,0.01156,318,111.03,56.27,0.30044,328,55.86,24.61,0.688,1,328,75.7,-6.53,1,3,317,278.44,-11.13,0.00315,318,144.87,37.85,0.09486,328,51.7,-6.37,0.90199,2,318,155.55,36.13,0.01441,328,55.25,-16.59,0.98559,2,318,155.21,26.8,0.02031,328,46.88,-20.71,0.97969,3,317,260.66,-55.91,0.01301,318,141.78,-10.22,0.13783,328,7.92,-26.48,0.84916,2,318,154.89,-11.69,0.048,328,7.31,-40.13,0.952,3,317,235.25,-112.13,0.0077,318,136.54,-68.45,0.2003,328,-52.26,-42.62,0.792,3,317,187.09,-125.01,0.13185,318,95.34,-96.5,0.58015,328,-92.74,-13.79,0.288,2,317,128.4,-128.47,0.51852,318,41.09,-119.15,0.48148,2,317,94.91,-111.88,0.7153,318,1.41,-114.6,0.2847,1,317,44.46,-87.89,1,1,317,-1.8,-50.95,1,1,317,-27.16,6.26,1,1,317,-33.25,56.86,1,1,317,2.85,131.15,1],"edges":[0,40,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40]}},"TX/TX_yan1_6":{"TX/TX_S1_yan_25":{"type":"mesh","path":"TX/TX_S1_yan_0024","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[96.08,-42.6,-161.92,-42.6,-161.92,197.4,96.08,197.4],"edges":[0,2,2,4,4,6,0,6]},"TX/TX_S1_yan_0029":{"type":"mesh","hull":4,"width":28,"height":26,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[3.26,-92.08,-175.42,94.03,-2.29,260.24,176.39,74.13],"edges":[0,2,2,4,4,6,0,6]}},"BZ/y_yanjing":{"BZ/y_yanjing_bz":{"type":"mesh","hull":4,"width":11,"height":17,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[64.53,53.43,69.63,-50.44,-82.19,-57.9,-87.29,45.97],"edges":[0,2,2,4,4,6,0,6]}},"BZ/z_yanjing":{"BZ/z_yanjing_bz":{"type":"mesh","hull":4,"width":18,"height":20,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[75.23,91.65,83.28,-72.15,-98.5,-81.08,-106.55,82.72],"edges":[0,2,2,4,4,6,0,6]}},"TX_SK2_shouji_lie":{"TX/atk_guangci3_0025":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[15.09,-27.34,-381.53,416.4,-30.23,730.39,366.39,286.65],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0027":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[15.09,-27.34,-381.53,416.4,-30.23,730.39,366.39,286.65],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0028":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[15.09,-27.34,-381.53,416.4,-30.23,730.39,366.39,286.65],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0030":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[15.09,-27.34,-381.53,416.4,-30.23,730.39,366.39,286.65],"edges":[0,2,2,4,4,6,0,6]},"TX/atk_guangci3_0031":{"type":"mesh","hull":4,"width":34,"height":27,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[17.05,-29.29,-379.57,414.45,-28.28,728.44,368.35,284.7],"edges":[0,2,2,4,4,6,0,6]}},"TX_bao_hou":{"TX/shuangcdr_00010002":{"type":"mesh","hull":4,"width":84,"height":84,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[549.63,-104.03,-71.63,-548.71,-516.3,72.55,104.95,517.23],"edges":[0,2,2,4,4,6,0,6]}},"hei2":{"hei":{"type":"mesh","hull":4,"width":3,"height":2,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[5862.02,-3566.83,-6137.98,-3566.83,-6137.98,3933.17,5862.02,3933.17],"edges":[0,2,2,4,4,6,0,6]}},"TX_SK2_shouji_xian4":{"TX/daoguang_red":{"type":"mesh","hull":4,"width":19,"height":73,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[90.5,-475.16,-84.5,-475.16,-84.5,508.8,90.5,508.8],"edges":[0,2,2,4,4,6,0,6]}},"TX/shuye":{"TX/shuye":{"type":"mesh","hull":17,"width":25,"height":30,"uvs":[0.33952,0.02865,0.54277,0.09882,0.79143,0.26075,0.96009,0.46767,0.95361,0.68718,0.87793,0.80593,0.95577,1,0.81738,1,0.78082,0.87662,0.62549,0.9004,0.40588,0.8484,0.22734,0.69389,0.14521,0.46658,0.08629,0.24521,0,0.06841,0,0,0.14275,0],"triangles":[14,15,16,13,14,16,0,13,16,12,13,0,1,12,0,12,2,11,2,10,11,10,2,9,3,5,2,2,12,1,3,4,5,2,5,9,5,8,9,7,8,5,7,5,6],"vertices":[3,147,242.4,-9.4,0.0212,356,141.69,-32.19,0.05046,357,31.73,-41.84,0.92834,3,147,195.77,-42.51,0.46007,356,89.83,-58.36,0.32999,357,-25.59,-56.27,0.20995,2,147,120.91,-70.89,0.99666,356,10.92,-75.88,0.00334,1,147,47.4,-74.65,1,1,147,-3.04,-38.21,1,2,147,-19.61,-2.76,0.99829,356,-115.9,11.12,0.00171,1,147,-76.63,11.24,1,2,147,-56.07,41.41,0.99949,356,-144.16,59.85,0.00051,2,147,-21.75,29.69,0.90374,356,-112.31,43.47,0.09626,2,147,-4.24,67.35,0.28992,356,-88.41,78.2,0.71008,3,147,40.56,106.93,0.00394,356,-37.22,111.01,0.99545,357,-104.11,135.19,0.00061,2,356,27.22,116.31,0.97683,357,-40.11,126.69,0.02317,2,356,88.62,88.99,0.82679,357,12.3,87.14,0.17321,2,356,144.52,58.29,0.25336,357,58.47,45.48,0.74664,2,356,196.42,41.41,0.00112,357,104.41,18.07,0.99888,1,357,114.46,2.47,1,1,357,81.45,-18.9,1],"edges":[0,32,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32]}},"BZ/z_bianzi_hou3_liuguang\n2":{"TX/z_bianzi2_bz_liuguang":{"type":"mesh","hull":4,"width":27,"height":16,"uvs":[1,1,0,1,0,0,1,0,0.19051,0.58716,0.27274,0.63729,0.41779,0.70565,0.52681,0.73907,0.67187,0.78009,0.7236,0.75123,0.77719,0.59019,0.76703,0.44891,0.72822,0.37447,0.63029,0.36991,0.53513,0.33953,0.39469,0.28332,0.27459,0.23015,0.20437,0.3213,0.17296,0.4717],"triangles":[15,16,3,14,15,3,13,14,3,5,15,14,6,5,14,6,14,13,16,2,3,17,2,16,18,2,17,5,4,18,17,15,18,15,17,16,15,5,18,1,2,18,1,18,4,1,4,5,1,5,6,12,13,3,11,12,3,11,13,12,10,3,0,9,10,0,8,9,0,10,11,3,7,6,13,13,10,7,10,13,11,9,7,10,8,7,9,1,7,8,1,6,7,1,8,0],"vertices":[1,132,117.9,34.72,1,2,132,-142.93,80.43,0.00046,130,-35.66,84.84,0.99954,1,130,-80.4,-37.75,1,2,132,94.41,-84.93,0.76254,131,145.88,-87.2,0.23746,3,132,-86.39,23.53,0.02165,130,19.53,26.62,0.96495,131,-31.42,26.89,0.0134,3,132,-65.45,25.65,0.06903,130,40.52,28.24,0.78115,131,-10.42,28.35,0.14982,3,132,-28.97,26.98,0.36434,130,77.01,28.71,0.12432,131,26.08,28.54,0.51135,3,132,-1.98,25.83,0.90411,130,103.97,26.93,0.01286,131,53.03,26.54,0.08304,1,132,36.43,24.37,1,1,132,57.21,17.35,1,2,132,57,-3.99,0.97861,131,111.04,-5.13,0.02139,2,132,48.95,-20.22,0.84912,131,102.48,-21.09,0.15088,2,132,37.87,-27.3,0.68607,131,91.19,-27.82,0.31393,2,132,14.22,-23.22,0.29855,131,67.68,-23,0.70145,1,131,44.13,-21.4,1,2,130,60.38,-20.35,0.12704,131,9.06,-20.39,0.87296,2,130,30.25,-20.33,0.79961,131,-21.07,-20.14,0.20039,2,130,15.85,-5.76,0.98833,131,-35.35,-5.46,0.01167,2,132,-93.32,10.54,0.00451,130,12.29,13.8,0.99549],"edges":[0,6,0,2,2,4,4,6]}},"TX/shuyefaguang3":{"TX/shuyefaguang":{"type":"mesh","hull":4,"width":38,"height":44,"uvs":[1,1,0,1,0,0,1,0,0.16269,0.15801,0.25688,0.39348,0.28219,0.61796,0.48181,0.74118,0.67301,0.7485,0.78547,0.64236,0.78547,0.4557,0.59147,0.28001,0.39184,0.17875],"triangles":[12,4,2,3,12,2,11,12,3,5,4,12,10,11,3,11,6,5,11,5,12,0,9,10,7,6,11,11,10,7,10,8,7,9,8,10,5,1,2,5,2,4,1,5,6,0,10,3,8,9,0,7,8,0,1,6,7,1,7,0],"vertices":[-176.56,-18.81,50.15,313.97,392.9,80.45,166.19,-252.32,301.86,63.21,199.8,86.85,117.12,130.85,29.63,93.2,-16.23,31.28,-5.34,-30.93,58.63,-74.52,162.83,-50.98,242.8,-8.2],"edges":[0,6,0,2,2,4,4,6]}},"BZ/y_bian_hou2_liuguang":{"TX/liuguang3":{"type":"mesh","hull":4,"width":46,"height":29,"uvs":[1,1,0,1,0,0,1,0,0.07199,0.45436,0.1407,0.61282,0.28216,0.75384,0.45292,0.83148,0.63581,0.87268,0.78536,0.8505,0.91041,0.78511,0.92349,0.57833,0.784,0.31345,0.63689,0.17332,0.38298,0.11009,0.20862,0.17332,0.09856,0.23484],"triangles":[14,2,3,15,2,14,13,14,3,16,2,15,12,13,3,4,2,16,11,12,3,15,4,16,5,4,15,14,5,15,13,5,14,6,13,12,7,6,12,13,6,5,12,11,7,7,11,8,10,9,11,9,8,11,4,1,2,1,4,5,1,5,6,3,0,11,10,11,0,9,10,0,8,9,0,1,7,8,1,6,7,0,1,8],"vertices":[406.1,-67.81,15.18,-174.47,-52.83,74.81,338.08,181.47,6.21,-30.78,43.85,-62.95,108.74,-83.01,180.78,-84.15,255.07,-74.92,312.02,-53.44,356.46,-23.8,347.51,29.14,274.96,80.29,207.92,99.53,104.37,88.21,40.51,53.85,1.67,26.78],"edges":[0,6,0,2,2,4,4,6]}},"BZ/y_bianzi2":{"BZ/z_bianzi2_bz":{"type":"mesh","hull":59,"width":124,"height":18,"uvs":[0.36152,0.04417,0.39485,0.09622,0.43786,0.15867,0.47736,0.23501,0.51595,0.29747,0.56171,0.3981,0.60344,0.46796,0.63627,0.51307,0.67835,0.56685,0.72233,0.60763,0.75237,0.63366,0.78692,0.63812,0.81308,0.6468,0.84078,0.63812,0.86926,0.62945,0.90439,0.60342,0.93805,0.56024,0.97088,0.4787,0.99139,0.56545,0.99473,0.72853,0.98601,0.86906,0.94882,0.93499,0.91497,0.97142,0.87394,1,0.84411,1,0.81359,1,0.78312,1,0.7423,0.97629,0.7087,0.95855,0.66613,0.91965,0.62301,0.84941,0.58452,0.77915,0.5433,0.6965,0.49941,0.60046,0.46337,0.51988,0.42397,0.43517,0.38488,0.37938,0.35311,0.34631,0.31859,0.31119,0.285,0.30416,0.25354,0.30209,0.21628,0.32275,0.18146,0.34962,0.14542,0.39301,0.1106,0.45706,0.07997,0.53848,0.04393,0.66246,0.01579,0.76991,0,0.66246,0,0.50074,0.02778,0.39173,0.06196,0.26769,0.09872,0.16197,0.13289,0.08867,0.17207,0.03417,0.20673,0,0.24896,0,0.28685,0,0.32566,0],"triangles":[47,48,46,50,51,45,50,46,49,46,48,49,50,45,46,51,52,44,52,43,44,51,44,45,53,54,42,43,52,53,43,53,42,56,41,55,55,41,54,42,54,41,39,40,57,56,57,40,41,56,40,16,17,18,18,21,16,16,21,15,18,19,21,20,21,19,14,15,22,23,13,14,21,22,15,14,22,23,13,24,12,12,24,25,24,13,23,26,27,11,26,11,12,12,25,26,9,10,28,27,28,10,27,10,11,8,9,29,9,28,29,30,7,8,8,29,30,31,6,7,31,7,30,6,32,5,32,6,31,5,33,4,5,32,33,3,4,34,4,33,34,2,35,36,2,3,35,3,34,35,0,37,38,0,1,37,37,1,36,1,2,36,58,39,57,58,0,38,58,38,39],"vertices":[2,31,86.72,18.91,0.00841,32,22.05,21.34,0.99159,2,32,60.43,19.71,0.90526,33,-14.18,19.08,0.09474,2,33,35.21,20.07,0.98926,34,-26.39,17.58,0.01074,1,34,19.71,19.04,1,2,34,64.15,22.39,0.41807,35,2.59,22.54,0.58193,2,35,56.62,22.31,0.36344,36,3.86,22.18,0.63656,2,36,52.13,23.52,0.91112,37,3.94,24.51,0.08888,3,36,89.65,26.15,0.08801,37,41.5,26.55,0.55007,38,-6.45,26.81,0.36192,2,38,41.53,30.08,0.66641,39,-4.14,30.61,0.33359,2,39,45.67,32.57,0.46095,40,2.46,31.88,0.53905,3,39,79.65,34.2,0.0107,40,36.44,30.28,0.82185,41,-14.7,31.45,0.16746,3,40,75.17,32.66,0.09395,41,24.05,33.53,0.84882,42,-24.09,35.84,0.05723,4,40,104.57,33.59,0.00028,41,53.45,34.23,0.38322,42,5.23,33.54,0.61645,43,-53.97,38.68,0.00005,3,41,84.37,37.92,0.0078,42,36.36,34.07,0.89481,43,-22.93,36.25,0.0974,2,42,68.37,34.57,0.25101,43,8.98,33.71,0.74899,2,43,48.67,33.11,0.90438,44,-6.98,34.7,0.09562,2,43,87.07,35.53,0.13715,44,31.46,32.91,0.86285,1,44,70.45,37.52,1,1,44,89.53,18.17,1,1,44,86.89,-9.03,1,1,44,71.95,-29.45,1,2,43,91.36,-27.69,0.00207,44,28.79,-30.41,0.99793,2,43,52.89,-28.98,0.67795,44,-9.59,-27.47,0.32205,2,42,71.82,-27.07,0.1176,43,6.57,-27.97,0.8824,2,42,38.34,-26.09,0.96257,43,-26.66,-23.82,0.03743,2,41,58.28,-24.21,0.34153,42,4.08,-25.08,0.65847,3,40,75.75,-27.55,0.02067,41,24.16,-26.69,0.97326,42,-30.12,-24.08,0.00607,3,39,78.44,-23.78,0.0004,40,29.73,-27.32,0.95937,41,-21.86,-26.1,0.04023,2,39,40.77,-27.46,0.69067,40,-8.11,-27.42,0.30933,2,38,43.01,-30.06,0.33567,39,-7.43,-29.45,0.66433,3,37,41.16,-31.23,0.72103,38,-6.8,-30.97,0.25631,39,-57.15,-26.43,0.02266,2,36,45.45,-31.94,0.31824,37,-3.61,-30.83,0.68176,2,35,52.05,-31.17,0.53612,36,-2.83,-31.08,0.46388,3,33,119.31,-35.45,0.05233,34,61.81,-31.17,0.41838,35,0.25,-31.02,0.52929,2,33,76.85,-31.72,0.69195,34,19.18,-30.78,0.30805,2,32,102.89,-29.62,0.0171,33,30.56,-28.18,0.9829,2,32,58.03,-28.56,0.85237,33,-14.3,-29.24,0.14763,2,31,80.6,-31.76,0.10026,32,21.95,-29.7,0.89974,2,31,41.54,-28.49,0.87958,32,-17.22,-31.07,0.12042,2,31,3.83,-29.81,0.38177,30,56.42,-29.15,0.61823,2,30,21.17,-26.71,0.95419,29,73.22,-26.96,0.04581,2,30,-20.8,-27.65,0.05787,29,31.24,-27.56,0.94213,3,29,-8.07,-29.38,0.59995,27,71.22,-28.19,0.04831,28,21.82,-28.49,0.35174,3,29,-48.94,-33.84,0.01807,27,30.13,-26.86,0.97284,26,80.68,-30.94,0.00909,3,27,-10.32,-29.16,0.19657,26,40.3,-27.54,0.8019,25,102.05,-33.87,0.00153,2,26,3.35,-28.47,0.51739,25,65.37,-29.31,0.48261,2,25,19.98,-28.06,0.74283,24,53.24,-29.74,0.25717,1,24,17.39,-24.12,1,1,24,14.55,0.87,1,2,25,-10.54,19.08,0.90708,24,31.21,21.92,0.09292,1,25,25.51,20.08,1,2,26,-0.27,20.69,0.55735,25,69.07,19.84,0.44265,2,27,-13.23,21.53,0.16999,26,44.53,23.05,0.83001,3,27,26.83,25.48,0.78984,28,-23.41,24.47,0.20826,26,84.76,21.34,0.0019,2,27,71.74,25.23,0.00686,28,21.5,24.92,0.99314,3,30,-28.33,26.48,0.0107,29,24.14,26.62,0.79713,28,60.78,23.04,0.19216,3,31,-39.89,17.91,0.0057,30,19.01,23.66,0.93554,29,71.46,23.42,0.05876,2,31,2.57,20.71,0.89086,30,61.49,21.12,0.10914,2,31,46.06,23.58,0.95463,32,-18.88,21.17,0.04537],"edges":[0,116,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,52,52,54,54,56,56,58,58,60,60,62,62,64,64,66,66,68,68,70,70,72,72,74,74,76,76,78,78,80,80,82,82,84,84,86,86,88,88,90,90,92,92,94,94,96,96,98,98,100,100,102,102,104,104,106,106,108,108,110,110,112,112,114,114,116]}},"BZ/y_bianzi3":{"BZ/z_bianzi3_bz":{"type":"mesh","hull":46,"width":33,"height":35,"uvs":[1,0.11604,0.96216,0.14854,0.88896,0.1631,0.8175,0.18108,0.74727,0.20237,0.68258,0.22554,0.61143,0.25851,0.53442,0.2931,0.46894,0.33098,0.40227,0.37549,0.3551,0.41219,0.30359,0.45846,0.26501,0.50893,0.2264,0.56038,0.19762,0.6123,0.16939,0.66732,0.15582,0.72191,0.15794,0.77319,0.17077,0.82109,0.19146,0.87102,0.22193,0.9144,0.25848,0.94278,0.29704,0.97272,0.25099,1,0.19753,1,0.15269,0.99073,0.06936,0.93166,0.02869,0.85301,0.00664,0.79027,0,0.70654,0.00423,0.63538,0.03656,0.54926,0.06404,0.48568,0.11486,0.41324,0.17254,0.34747,0.22764,0.29622,0.29707,0.24628,0.37026,0.19594,0.45225,0.1474,0.53518,0.1099,0.61941,0.07619,0.69579,0.04998,0.7722,0.02559,0.83695,0.00864,0.89817,0,1,0],"triangles":[25,19,20,24,25,20,24,20,21,23,24,21,23,21,22,25,26,19,26,27,18,26,18,19,28,16,17,27,28,17,27,17,18,28,29,16,15,30,31,16,29,30,15,16,30,32,33,13,14,31,32,13,14,32,14,15,31,13,33,12,34,35,11,12,34,11,33,34,12,36,37,9,10,36,9,35,36,10,11,35,10,7,38,39,8,37,38,7,8,38,9,37,8,7,39,6,4,41,42,3,4,42,5,40,41,4,5,41,6,39,40,6,40,5,3,42,43,44,45,0,1,44,0,2,43,44,2,44,1,3,43,2],"vertices":[1,24,57.02,-21.6,1,1,24,43.26,-28.53,1,1,24,20.79,-27.08,1,2,24,-1.47,-26.82,0.95542,23,46.85,-27.33,0.04458,2,24,-23.65,-27.69,0.35277,23,24.7,-25.76,0.64723,3,24,-44.39,-29.57,0.04772,23,3.88,-25.37,0.89225,21,86.18,-29.94,0.06003,3,24,-67.85,-33.95,0.00002,23,-19.92,-27.15,0.50563,21,62.35,-28.72,0.49435,3,23,-45.54,-28.75,0.05607,21,36.73,-27.1,0.94099,20,76.5,-33.64,0.00294,2,21,13.63,-28.08,0.79454,20,53.65,-30.14,0.20546,3,21,-10.81,-30.73,0.16828,20,29.16,-28.02,0.80892,19,67.25,-33.42,0.0228,3,21,-28.91,-34.07,0.00948,20,10.76,-27.79,0.71624,19,49.18,-29.91,0.27428,3,20,-10.61,-29.05,0.14973,19,27.93,-27.34,0.81743,18,69.95,-31.28,0.03284,3,20,-29.88,-33.84,0.00376,19,8.12,-28.63,0.65552,18,50.18,-29.47,0.34072,3,19,-11.94,-30.1,0.14314,18,30.14,-27.81,0.81896,17,63.86,-36.51,0.03791,3,19,-30.22,-33.96,0.00416,18,11.47,-28.77,0.68962,17,46,-31,0.30622,3,18,-7.96,-30.38,0.17844,17,27.19,-25.85,0.78916,16,53.15,-34.03,0.0324,4,18,-25.04,-35.71,0.00905,17,9.33,-25.02,0.64117,16,36.83,-26.71,0.34659,15,56.77,-38.26,0.00319,3,17,-6.64,-28.63,0.14108,16,20.65,-24.22,0.76595,15,42.6,-30.06,0.09298,5,17,-20.96,-35.21,0.00529,16,4.91,-25.1,0.50075,15,27.61,-25.18,0.47163,13,-48.42,13.18,0.0007,14,33.97,-36.9,0.02163,4,16,-11.91,-28.17,0.06875,15,10.82,-21.95,0.6538,13,-32.71,6.41,0.0228,14,22.7,-24.04,0.25465,3,15,-5.79,-22.32,0.14791,13,-16.42,3.19,0.218,14,9.38,-14.13,0.63409,3,15,-19.3,-26.8,0.00228,13,-2.25,4.65,0.97721,14,-4.04,-9.35,0.0205,1,13,12.71,6.18,1,2,13,9.15,-9.8,0.32004,14,-8.11,8.59,0.67996,1,14,7.03,14.05,1,2,15,-15.26,8.29,0.04304,14,20.73,15.85,0.95696,2,16,-23.9,11.58,0.00359,15,14.06,19.45,0.99641,2,16,3.06,18.82,0.76754,15,41.81,16.43,0.23246,2,17,-20.31,15.16,0.03008,16,23.97,21.53,0.96992,2,17,5.59,21.99,0.83432,16,50.57,18.41,0.16568,2,18,-24.46,17.61,0.01387,17,28.14,24.88,0.98613,2,18,4.14,23.2,0.74173,17,56.93,20.33,0.25827,3,19,-24.65,22.76,0.01946,18,25.82,26.39,0.97951,17,78.38,15.9,0.00103,2,19,2.91,25.66,0.63722,18,53.49,24.96,0.36278,3,20,-17.87,23.46,0.09913,19,30.14,25.61,0.90032,18,80.38,20.67,0.00056,2,20,5.35,25.23,0.72784,19,53.31,23.22,0.27216,2,21,-18.45,20.68,0.06059,20,31.59,23.9,0.93941,2,21,8.61,24.01,0.84638,20,58.78,21.94,0.15362,2,23,-51.18,23.59,0.02448,21,37.7,25.54,0.97552,2,23,-23.55,25.4,0.46275,21,65.33,23.86,0.53725,2,23,3.98,25.93,0.95204,21,92.72,20.94,0.04796,1,23,28.43,25.12,1,2,24,-1.27,24.62,0.00598,23,52.67,23.77,0.99402,2,24,18.95,24.59,0.48513,23,72.78,21.53,0.51487,2,24,37.45,22.29,0.89412,23,90.9,17.23,0.10588,1,24,66.97,14.05,1],"edges":[0,90,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,52,52,54,54,56,56,58,58,60,60,62,62,64,64,66,66,68,68,70,70,72,72,74,74,76,76,78,78,80,80,82,82,84,84,86,86,88,88,90]}},"BZ/z_bianzi4":{"BZ/y_bianzi3_bz":{"type":"mesh","hull":34,"width":81,"height":39,"uvs":[1,0.13615,0.91919,0.20712,0.8516,0.26212,0.78738,0.33309,0.73162,0.40406,0.67298,0.48103,0.62205,0.55993,0.56027,0.64585,0.49348,0.73176,0.41917,0.81768,0.36239,0.88255,0.29643,0.93866,0.22767,0.98104,0.15299,1,0.08071,1,0,1,0,0.90465,0.0157,0.86004,0.06978,0.86613,0.14027,0.86613,0.20883,0.84382,0.27063,0.80935,0.33146,0.75663,0.39133,0.67957,0.45892,0.59643,0.51879,0.51735,0.57705,0.43262,0.63498,0.34746,0.69002,0.2704,0.74313,0.1974,0.81169,0.11426,0.87445,0.05343,0.94977,0,1,0],"triangles":[16,14,15,18,16,17,14,16,18,13,14,19,14,18,19,12,13,19,19,20,12,12,20,11,20,21,11,11,21,10,21,22,10,10,22,9,22,23,9,9,23,8,23,24,8,8,24,7,24,25,7,7,25,6,25,26,6,6,26,5,26,27,5,5,27,4,27,28,4,4,28,3,28,29,3,3,29,2,1,2,30,2,29,30,30,31,1,1,31,0,31,32,0,32,33,0],"vertices":[1,85,47.66,-29.73,1,2,85,-16.71,-29.02,0.14717,84,36.56,-27.82,0.85283,2,84,-16.59,-24.14,0.13167,83,34.76,-24.3,0.86833,2,83,-18.5,-27.15,0.07071,82,37.56,-26.19,0.92929,2,82,-10.35,-27.52,0.16928,81,40.53,-27.3,0.83072,2,81,-10.27,-25.41,0.23526,80,42.89,-24.67,0.76474,2,80,-3.63,-25.04,0.49888,79,55.07,-26,0.50112,2,79,0.64,-27.95,0.58239,78,64.6,-28.89,0.41761,2,78,7.21,-24.36,0.72693,77,64.27,-23.76,0.27307,2,77,1.92,-23.35,0.56545,76,46.19,-22.97,0.43455,2,76,-1.31,-23.93,0.47371,75,52.09,-24.49,0.52629,2,75,-0.21,-24.95,0.46516,74,49.63,-23.14,0.53484,2,74,-3.04,-23.35,0.52023,73,61.03,-23.66,0.47977,2,73,5.9,-19.53,0.72814,72,61.93,-17.83,0.27186,2,72,8.8,-17.39,0.77994,71,44.11,-16.4,0.22006,1,70,6.04,-21.56,1,1,70,-17.69,1.91,1,1,70,-20.67,21.1,1,3,72,1.16,29.53,0.41209,71,32.1,29.59,0.58649,70,8.8,47.86,0.00142,3,73,5.81,28.25,0.57187,72,52.96,29.1,0.428,70,45.25,84.7,0.00013,2,74,-3.01,26.63,0.44748,73,56.75,26.14,0.55252,2,75,-1.24,24.11,0.39422,74,43.97,25.61,0.60578,2,76,-1.22,25.66,0.45995,75,47.13,24.85,0.54005,3,77,7.66,28.82,0.69707,76,50.26,29.37,0.30275,74,141.81,44.62,0.00018,2,78,14.5,28.88,0.73729,77,65.22,29.97,0.26271,2,79,-1.9,26.32,0.55636,78,66.37,25.41,0.44364,2,80,-4.24,30.45,0.42348,79,50.11,29.28,0.57652,2,81,-7.15,28.96,0.34366,80,47.74,29.57,0.65634,2,82,-13.8,28.26,0.18085,81,41.47,28.58,0.81915,3,83,-28.22,29.58,0.05048,82,32.77,31.17,0.92845,81,88.12,27.83,0.02107,3,84,-21.15,35.17,0.10951,83,29.72,34.98,0.85177,82,90.95,31.55,0.03872,3,85,-25.61,33.39,0.06388,84,29.66,34.85,0.88221,83,80.53,35.06,0.05391,2,85,32.63,28.64,0.95671,84,87.72,28.25,0.04329,1,85,66.53,14.03,1],"edges":[0,66,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,52,52,54,54,56,56,58,58,60,60,62,62,64,64,66]}},"BZ/z_bianzi5":{"BZ/y_bianzi2_bz":{"type":"mesh","hull":34,"width":76,"height":17,"uvs":[0.6392,0.05107,0.72977,0.14769,0.81145,0.28177,0.88783,0.43387,1,0.70665,1,0.86327,1,1,0.97508,1,0.96194,1,0.90738,0.86406,0.84976,0.73074,0.78215,0.5973,0.69971,0.48521,0.61298,0.3918,0.53648,0.35177,0.46709,0.34643,0.39281,0.35886,0.32437,0.40486,0.26304,0.47486,0.20781,0.57651,0.15015,0.71706,0.09489,0.86194,0.04876,1,0.0317,1,0,0.90007,0,0.72901,0.05276,0.56257,0.11759,0.40574,0.17359,0.2786,0.23545,0.16631,0.31148,0.09234,0.38323,0.04059,0.46796,0,0.54759,0,0.95101,0.59107],"triangles":[21,25,26,20,21,26,24,25,21,22,23,24,21,22,24,27,20,26,19,20,27,28,19,27,28,18,19,30,17,29,28,29,18,29,17,18,16,30,31,30,16,17,15,31,32,16,31,15,15,32,33,33,14,15,4,9,34,5,9,4,8,9,5,7,8,5,7,5,6,4,34,3,10,11,3,34,10,3,9,10,34,2,11,12,3,11,2,1,12,13,2,12,1,1,13,0,0,14,33,13,14,0],"vertices":[2,93,59.34,27.66,0.50826,94,6.42,29.06,0.49174,2,94,70.89,26.95,0.09551,95,17.37,28.36,0.90449,2,95,77.39,23.14,0.1406,96,8.75,26.6,0.8594,2,96,66.63,26.37,0.05401,97,7.18,24.29,0.94599,2,97,95.52,22.58,0.05181,98,44.86,25.5,0.94819,2,97,106.57,1.14,0.00118,98,56.75,4.52,0.99882,1,98,67.13,-13.8,1,1,98,52.1,-22.31,1,1,98,44.18,-26.8,1,2,97,49.58,-28.38,0.11971,98,0.96,-27.23,0.88029,3,96,60.79,-26.09,0.338,97,4.68,-28.43,0.61566,98,-43.9,-29.04,0.04635,2,95,70.41,-29.07,0.11591,96,9.63,-26.06,0.88409,2,94,60.8,-28.13,0.21983,95,10.76,-27.25,0.78017,2,93,48.09,-26.72,0.44206,94,-0.96,-25.98,0.55794,2,93,-5.28,-27.45,0.33479,92,45.68,-26.07,0.66521,2,92,-2.4,-25.02,0.3998,91,53.19,-25.13,0.6002,2,91,1.69,-24.37,0.55504,90,55.25,-24.63,0.44496,2,90,7.31,-25.85,0.71447,89,63.24,-26.87,0.28553,3,90,-36.2,-31.35,0.00125,89,19.43,-25.19,0.97999,88,63.85,-28.11,0.01876,3,89,-21.71,-29.38,0.05414,88,22.53,-26.49,0.87745,87,76.75,-28.06,0.06841,3,88,-22.81,-29.62,0.04165,87,31.3,-28.34,0.94924,86,86.57,-29.92,0.00911,2,87,-12.99,-29.99,0.16794,86,42.25,-29.82,0.83206,1,86,3.92,-32.02,1,1,86,-6.28,-26.05,1,1,86,-17.46,-1.67,1,1,86,-4.15,21.06,1,2,87,-17.03,24.43,0.08282,86,40.36,24.71,0.91718,2,88,-23.47,23.36,0.02571,87,33.98,24.58,0.97429,3,89,-31.49,21.33,0.00222,88,19.96,25.09,0.95386,87,77.43,23.58,0.04393,2,89,14.52,25.79,0.98822,88,66.15,23.06,0.01178,2,90,4.34,23.01,0.72416,89,68.28,21.82,0.27584,2,91,-2.4,24.92,0.4673,90,54.66,24.83,0.5327,2,92,-1.54,28.32,0.49072,91,56.56,28.11,0.50928,2,93,-4.63,27.27,0.68268,92,53.64,28.06,0.31732,2,97,57.19,22.84,0.71689,98,6.55,24.26,0.28311],"edges":[0,66,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,52,52,54,54,56,56,58,58,60,60,62,62,64,64,66]}},"TX_huaban2_sanluo":{"TX/hua_a3":{"type":"mesh","hull":4,"width":23,"height":13,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[118.56,169.08,6.22,-8.35,-95.16,55.84,17.17,233.27],"edges":[0,2,2,4,4,6,0,6]}},"TX_SK2_liuguang_cu":{"TX/b_lg_2":{"type":"mesh","hull":4,"width":34,"height":4,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[140.75,-23.3,-165.25,-23.3,-165.25,15.7,140.75,15.7],"edges":[0,2,2,4,4,6,0,6]}},"TX_bao1":{"TX/shuangcdr_00010002":{"type":"mesh","hull":4,"width":84,"height":84,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[549.63,-104.03,-71.63,-548.71,-516.3,72.55,104.95,517.23],"edges":[0,2,2,4,4,6,0,6]}},"TX/cao7":{"TX/cao":{"type":"mesh","hull":4,"width":38,"height":42,"uvs":[0.96254,0.91005,0,0.91005,0,0,0.96254,0,0.11601,0.49311,0.37589,0.7182,0.19984,0.15065,0.75523,0.17759,0.77409,0.47194,0.7175,0.76438,0.5184,0.47772,0.60315,0.87964,0.89667,0.5941],"triangles":[6,2,3,7,6,3,8,7,3,10,6,7,10,7,8,4,2,6,4,6,10,12,8,3,5,4,10,9,10,8,9,8,12,5,10,9,11,5,9,4,1,2,1,4,5,3,0,12,9,12,0,11,9,0,1,5,11,1,11,0],"vertices":[-4.39,-204.6,-244.39,27.6,-5.23,274.78,234.76,42.58,-105.89,112.86,-100.25,-10.97,5.01,185.65,136.4,44.36,63.75,-40.14,-27.21,-105.92,-1.52,19.97,-86.01,-109.64,62.21,-102.89],"edges":[0,6,0,2,2,4,4,6]}},"TX/xuanzhuan":{"TX/xuanzhuan":{"type":"mesh","hull":4,"width":45,"height":45,"uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[204.86,-221.01,-203.14,-221.01,-203.14,228.83,204.86,228.83],"edges":[0,2,2,4,4,6,0,6]}},"BZ/z_bianzi2_bz_g":{"BZ/z_bianzi2_bz_g":{"type":"mesh","hull":59,"width":152,"height":44,"uvs":[0.38567,0.27528,0.41576,0.2747,0.45837,0.28951,0.49163,0.30322,0.52492,0.33278,0.56262,0.37043,0.58915,0.40027,0.61738,0.43128,0.65157,0.45682,0.68495,0.47712,0.70786,0.48686,0.73236,0.4939,0.75342,0.49944,0.77412,0.50012,0.79639,0.49299,0.8215,0.48078,0.84894,0.47099,0.88529,0.44285,0.93069,0.45508,0.94054,0.65783,0.90282,0.72764,0.86771,0.75377,0.83845,0.76642,0.80432,0.77604,0.77765,0.77951,0.75589,0.78155,0.72922,0.77778,0.6956,0.76857,0.66838,0.75458,0.63768,0.73607,0.60162,0.70684,0.57071,0.67725,0.53595,0.64486,0.50338,0.6039,0.46735,0.55439,0.43555,0.50609,0.4049,0.47328,0.37803,0.45137,0.35202,0.43065,0.32504,0.41913,0.29944,0.41828,0.26912,0.42681,0.24078,0.4379,0.21146,0.45582,0.18312,0.48227,0.15819,0.51589,0.12886,0.56709,0.10597,0.61145,0.09312,0.56709,0.09312,0.50031,0.11572,0.45529,0.14353,0.40407,0.17345,0.36042,0.20126,0.33015,0.23314,0.30764,0.26134,0.29353,0.29571,0.29353,0.32655,0.29353,0.35775,0.28274],"triangles":[47,48,46,50,45,46,46,48,49,46,49,50,51,45,50,44,45,51,52,43,44,51,52,44,42,53,54,53,42,43,53,43,52,42,54,41,40,41,55,54,55,41,40,55,56,39,40,57,40,56,57,20,21,19,16,19,21,16,21,15,18,16,17,16,18,19,14,22,23,22,15,21,23,13,14,14,15,22,24,25,12,23,24,13,12,13,24,12,25,26,26,11,12,11,26,27,10,11,27,10,27,28,9,10,28,9,28,29,29,8,9,30,8,29,30,7,8,31,7,30,6,7,31,6,31,32,5,6,32,5,32,33,4,5,33,4,33,34,3,4,34,2,3,35,3,34,35,36,2,35,1,2,36,1,36,37,1,37,0,37,38,0,0,38,58,38,39,58,58,39,57],"vertices":[2,31,83.51,33.4,0.00841,32,17.14,35.35,0.99159,2,32,57.91,43.18,0.90526,33,-17.8,42.42,0.09474,2,33,40.8,50.11,0.98926,34,-23.17,47.97,0.01074,1,34,22.22,56.72,1,2,34,69.59,59.42,0.41807,35,8.03,59.57,0.58193,2,35,62.19,61.03,0.36344,36,10.96,60.64,0.63656,2,36,49.46,58.87,0.91112,37,1.83,59.9,0.08888,3,36,90.33,57.26,0.08801,37,42.67,57.65,0.55007,38,-5.29,57.9,0.36192,2,38,42.95,59.85,0.66641,39,-0.37,60.18,0.33359,2,39,46.42,60.18,0.46095,40,5.82,59.3,0.53905,3,39,78.23,61.85,0.0107,40,37.64,57.94,0.82185,41,-13.27,59.1,0.16746,3,40,71.58,57.84,0.09395,41,20.66,58.73,0.84882,42,-24.9,61.26,0.05723,4,40,100.72,57.96,0.00028,41,49.8,58.62,0.38322,42,4.08,58.18,0.61645,43,-52.78,63.31,0.00005,3,41,78.32,60.42,0.0078,42,32.63,57.07,0.89481,43,-24.46,59.5,0.0974,2,42,63.43,59.03,0.25101,43,6.39,58.53,0.74899,2,43,41.38,59.11,0.90438,44,-11.37,61.34,0.09562,2,43,79.44,58.32,0.13715,44,26.36,56.39,0.86285,1,44,77.78,55.76,1,1,44,137.59,36.44,1,1,44,131.91,-45.99,1,1,44,74.76,-61.22,1,2,43,91.05,-57.69,0.00207,44,25.19,-60.19,0.99793,2,43,50.35,-57.73,0.67795,44,-15.26,-55.78,0.32205,2,42,71.03,-55.03,0.1176,43,3.14,-55.73,0.8824,2,42,34.2,-55.34,0.96257,43,-33.56,-52.55,0.03743,2,41,61.43,-54.24,0.34153,42,4.16,-55.28,0.65847,3,40,76.44,-56.26,0.02067,41,24.62,-55.4,0.97326,42,-32.58,-52.68,0.00607,3,39,81.34,-52.61,0.0004,40,29.89,-56.3,0.95937,41,-21.93,-55.08,0.04023,2,39,43.38,-53.63,0.69067,40,-8,-53.72,0.30933,2,38,52.69,-53.61,0.33567,39,0.37,-53.7,0.66433,3,37,49.53,-55.04,0.72103,38,1.57,-54.78,0.25631,39,-50.68,-50.82,0.02266,2,36,54.67,-55.24,0.31824,37,5.24,-54.27,0.68176,2,35,60.81,-55.25,0.53612,36,4.98,-55.5,0.46388,3,33,130.26,-58.65,0.05233,34,74.54,-53.44,0.41838,35,12.98,-53.29,0.52929,2,33,77.3,-50.69,0.69195,34,21.12,-49.66,0.30805,2,32,101.81,-43.26,0.0171,33,30.12,-41.86,0.9829,2,32,57.81,-38.04,0.85237,33,-14.07,-38.72,0.14763,2,31,77.65,-37.93,0.10026,32,19.75,-36.18,0.89974,2,31,41.27,-31.98,0.87958,32,-17.07,-34.57,0.12042,2,31,3.83,-29.81,0.38177,30,56.42,-29.15,0.61823,2,30,21.17,-26.71,0.95419,29,73.22,-26.96,0.04581,2,30,-20.8,-27.65,0.05787,29,31.24,-27.56,0.94213,3,29,-8.07,-29.38,0.59995,27,71.22,-28.19,0.04831,28,21.82,-28.49,0.35174,3,29,-48.94,-33.84,0.01807,27,30.13,-26.86,0.97284,26,80.68,-30.94,0.00909,3,27,-10.32,-29.16,0.19657,26,40.3,-27.54,0.8019,25,102.05,-33.87,0.00153,2,26,3.35,-28.47,0.51739,25,65.37,-29.31,0.48261,2,25,19.98,-28.06,0.74283,24,53.24,-29.74,0.25717,1,24,17.39,-24.12,1,1,24,14.55,0.87,1,2,25,-10.54,19.08,0.90708,24,31.21,21.92,0.09292,1,25,25.51,20.08,1,2,26,-0.27,20.69,0.55735,25,69.07,19.84,0.44265,2,27,-13.23,21.53,0.16999,26,44.53,23.05,0.83001,3,27,26.83,25.48,0.78984,28,-23.41,24.47,0.20826,26,84.76,21.34,0.0019,2,27,71.74,25.23,0.00686,28,21.5,24.92,0.99314,3,30,-28.33,26.48,0.0107,29,24.14,26.62,0.79713,28,60.78,23.04,0.19216,3,31,-39.89,17.91,0.0057,30,19.01,23.66,0.93554,29,71.46,23.42,0.05876,2,31,2.57,20.71,0.89086,30,61.49,21.12,0.10914,2,31,45.26,27.87,0.95463,32,-20.19,25.34,0.04537],"edges":[0,116,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,52,52,54,54,56,56,58,58,60,60,62,62,64,64,66,66,68,68,70,70,72,72,74,74,76,76,78,78,80,80,82,82,84,84,86,86,88,88,90,90,92,92,94,94,96,96,98,98,100,100,102,102,104,104,106,106,108,108,110,110,112,112,114,114,116]}}}}],"events":{"attack":{},"skill1Attack":{}},"animations":{"atk":{"slots":{"TX/TX_yan1_1_hou6":{"attachment":[{"name":null}]},"TX_huaban2":{"attachment":[{"name":null}]},"TX_cao_hou3":{"attachment":[{"name":null}]},"TX_feng2":{"attachment":[{"name":null},{"time":0.0333,"name":"TX/TX_S1_shua_0016"},{"time":0.3,"name":null},{"time":1,"name":"TX/TX_S1_shua_0012"},{"time":1.0333,"name":"TX/TX_S1_shua_0014"},{"time":1.0667,"name":"TX/TX_S1_shua_0016"},{"time":1.1,"name":null}]},"BZ/y_bian_hou2_liuguang":{"attachment":[{"name":null}]},"TX/suduxian_su2":{"attachment":[{"name":null}]},"TX/shuyefaguang2":{"attachment":[{"name":null}]},"BZ/z_bianzi5":{"attachment":[{"name":"BZ/y_bianzi2_bz"}]},"TX/xuanzhuan_hou":{"attachment":[{"name":null}]},"BZ/tou":{"attachment":[{"name":null}]},"TX/shuye":{"attachment":[{"name":null}]},"TX/shuyefaguang4":{"attachment":[{"name":null}]},"TX_BZ_cao_hou5":{"attachment":[{"name":null}]},"TX_guangquan5":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian7":{"attachment":[{"name":null}]},"TX_guangxian2":{"attachment":[{"name":null}]},"TX_shouji3_4":{"attachment":[{"name":null}]},"TX/chentu1":{"attachment":[{"name":null}]},"TX/cao2":{"color":[{"time":0.1333,"color":"ffffffff"},{"time":0.3,"color":"ffffffb2"},{"time":0.6333,"color":"ffffff00","curve":"stepped"},{"time":0.7333,"color":"ffffffff"},{"time":0.9667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.1333,"name":"TX/cao"}]},"TX_SK2_shouji_quan4":{"attachment":[{"name":null}]},"TX/TX_yan1_7":{"attachment":[{"name":null}]},"TX/cao7":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan":{"attachment":[{"name":null},{"time":0.7333,"name":"TX/Energy 007 Impact Radial_00010"},{"time":0.7667,"name":"TX/Energy 007 Impact Radial_00012"},{"time":0.8,"name":"TX/Energy 007 Impact Radial_00015"},{"time":0.8333,"name":null},{"time":1.0667,"name":"TX/Energy 007 Impact Radial_00010"},{"time":1.1,"name":"TX/Energy 007 Impact Radial_00012"},{"time":1.1333,"name":"TX/Energy 007 Impact Radial_00015"},{"time":1.1667,"name":null}]},"TX_feng_quan1":{"attachment":[{"name":null}]},"TX_cao_hou2":{"color":[{"time":1.0667,"color":"ffffffff"},{"time":1.2333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":1.0667,"name":"TX/cao"}]},"zui":{"attachment":[{"name":"zui_pingshi"}]},"TX_SK2_shouji_quan3":{"attachment":[{"name":null}]},"TX/suduxian_su3":{"attachment":[{"name":null}]},"TX/shuye4":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie_quan4":{"attachment":[{"name":null}]},"BZ/y_bianzi_hou":{"attachment":[{"name":null}]},"TX_feng_quan2":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie":{"attachment":[{"name":null},{"time":0.7333,"name":"TX/atk_guangci3_0027"},{"time":0.7667,"name":"TX/atk_guangci3_0028"},{"time":0.8,"name":"TX/atk_guangci3_0030"},{"time":0.8333,"name":"TX/atk_guangci3_0031"},{"time":0.8667,"name":null},{"time":1.0667,"name":"TX/atk_guangci3_0027"},{"time":1.1,"name":"TX/atk_guangci3_0028"},{"time":1.1333,"name":"TX/atk_guangci3_0030"},{"time":1.1667,"name":"TX/atk_guangci3_0031"},{"time":1.2,"name":null}]},"BZ/y_shou":{"attachment":[{"name":null}]},"TX/z_bianzi2_bz_liuguang":{"attachment":[{"name":null}]},"TX/shuyefaguang7":{"attachment":[{"name":null}]},"TX/shuyefaguang8":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie9":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou5":{"attachment":[{"name":null}]},"z-meimao":{"attachment":[{"name":"z_meimao_pingshi"},{"time":0.0333,"name":"z_meimao_gongji"},{"time":1.4333,"name":"z-meimao_shouji"},{"time":1.5,"name":"z_meimao_pingshi"}]},"TX/cao5":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie_quan":{"color":[{"time":0.7333,"color":"ffffffff","curve":0.493,"c2":0.04,"c3":0.695,"c4":0.3},{"time":0.9,"color":"ffffff00","curve":"stepped"},{"time":1.0667,"color":"ffffffff","curve":0.493,"c2":0.04,"c3":0.695,"c4":0.3},{"time":1.2333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.7333,"name":"TX/shuangcdr_00010002"}]},"z_houtui":{"attachment":[{"name":"z_houtui"}]},"y_houtui":{"attachment":[{"name":"y_houtui"}]},"BZ/zhongzi":{"attachment":[{"name":null}]},"TX/cao9":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou":{"attachment":[{"name":null}]},"BZ/z_bianzi2_bz_g":{"attachment":[{"name":null}]},"TX/TX_yan1_2":{"color":[{"time":0.0667,"color":"ffffffff"},{"time":0.3667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.0667,"name":"TX/TX_S1_yan_0029"}]},"TX_SK2_liuguang_cu":{"attachment":[{"name":null}]},"TX_huaban1":{"attachment":[{"name":null}]},"TX/suduxian_mi_hou2":{"attachment":[{"name":null}]},"TX/suduxian_mi1":{"attachment":[{"name":null}]},"BZ/y_bianzi_hou2":{"attachment":[{"name":null}]},"TX_huarui":{"attachment":[{"name":null}]},"BZ/shenti":{"attachment":[{"name":null}]},"TX/chentu3":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie5":{"attachment":[{"name":null}]},"TX_BZ_yan":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie_quan2":{"attachment":[{"name":null}]},"TX_feng_quan_faguang4":{"attachment":[{"name":null}]},"TX_feng3":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie3":{"attachment":[{"name":null},{"time":0.7333,"name":"TX/atk_guangci3_0027"},{"time":0.7667,"name":"TX/atk_guangci3_0028"},{"time":0.8,"name":"TX/atk_guangci3_0030"},{"time":0.8333,"name":"TX/atk_guangci3_0031"},{"time":0.8667,"name":null},{"time":1.0667,"name":"TX/atk_guangci3_0027"},{"time":1.1,"name":"TX/atk_guangci3_0028"},{"time":1.1333,"name":"TX/atk_guangci3_0030"},{"time":1.1667,"name":"TX/atk_guangci3_0031"},{"time":1.2,"name":null}]},"TX/cao1":{"color":[{"time":0.1,"color":"ffffffff"},{"time":0.3,"color":"ffffff8f"},{"time":0.5667,"color":"ffffff00","curve":"stepped"},{"time":0.7333,"color":"ffffffff"},{"time":0.9667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.1,"name":"TX/cao"}]},"TX_SK2_shouji_xian4":{"attachment":[{"name":null}]},"TX/guangyun":{"color":[{"time":0.7333,"color":"ffc795ff"},{"time":1.0333,"color":"ff060000"},{"time":1.0667,"color":"ffc795ff"},{"time":1.3667,"color":"ff060000"}],"attachment":[{"name":null},{"time":0.7333,"name":"TX/guangyun"},{"time":1.0667,"name":"TX/guangyun"}]},"TX/chentu2":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie12":{"attachment":[{"name":null}]},"BZ/z_bianzi6":{"attachment":[{"name":"BZ/y_bianzi1_bz"}]},"TX/shuye5":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou3":{"attachment":[{"name":null}]},"TX/shuye7":{"attachment":[{"name":null}]},"TX_huaban3":{"attachment":[{"name":null}]},"TX/cao10":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou2":{"attachment":[{"name":null}]},"TX_huaban1_sanluo2":{"attachment":[{"name":null}]},"BZ/z_bianzi2_bz_g2":{"attachment":[{"name":null}]},"TX/chentu_hou":{"attachment":[{"name":null}]},"TX_shouji3_2":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou3_liuguang":{"attachment":[{"name":null}]},"TX/TX_yan1_5":{"attachment":[{"name":null}]},"ZZZZZ":{"attachment":[{"name":"ZZZZZ"}]},"TX/xuanzhuan":{"attachment":[{"name":null}]},"TX_feng_quan_faguang3":{"attachment":[{"name":null}]},"BZ/z_bianzi4":{"attachment":[{"name":"BZ/y_bianzi3_bz"}]},"zhonzi":{"attachment":[{"name":"zhonzi"}]},"TX/TX_yan1_6":{"attachment":[{"name":null}]},"TX_guangxian3":{"attachment":[{"name":null}]},"TX/shuye9":{"attachment":[{"name":null}]},"TX_guangxian4":{"attachment":[{"name":null}]},"TX_cao_hou4":{"attachment":[{"name":null}]},"TX/liuguang_mi":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou2_liuguang":{"attachment":[{"name":null}]},"TX/shuye3":{"attachment":[{"name":null}]},"TX/TX_yan1_1":{"color":[{"time":0.1,"color":"c4aea1ff"},{"time":0.7,"color":"c4aea100","curve":"stepped"},{"time":0.7333,"color":"c4aea1ff"},{"time":1.2,"color":"c4aea100"}],"attachment":[{"name":null},{"time":0.1,"name":"TX/TX_S1_yan_0029"}]},"BZ/y_bianzi3":{"attachment":[{"name":"BZ/z_bianzi3_bz"}]},"TX/shuye2":{"attachment":[{"name":null}]},"TX/huiji1":{"attachment":[{"name":null}]},"BZ/y_yanjing":{"attachment":[{"name":null}]},"TX/chentu4":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian2":{"attachment":[{"name":null},{"time":0.7333,"name":"TX/daoguang_red"}]},"TX_feng_quan3":{"attachment":[{"name":null}]},"TX/TX_yan1_8":{"attachment":[{"name":null}]},"TX_bao_hou":{"attachment":[{"name":null},{"time":1.5,"name":"TX/shuangcdr_00010002"},{"time":1.5667,"name":null}]},"TX_guangquan3":{"attachment":[{"name":null}]},"y-yanjing":{"attachment":[{"name":"y_yanjing_pingshi"},{"time":0.0333,"name":"y_yanjing_gongji"},{"time":1.4333,"name":"y_yan_shengli"},{"time":1.5,"name":"y_yanjing_pingshi"}]},"TX_SK2_shouji_xian5":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie2":{"attachment":[{"name":null},{"time":0.7333,"name":"TX/atk_guangci3_0027"},{"time":0.7667,"name":"TX/atk_guangci3_0028"},{"time":0.8,"name":"TX/atk_guangci3_0030"},{"time":0.8333,"name":"TX/atk_guangci3_0031"},{"time":0.8667,"name":null},{"time":1.0667,"name":"TX/atk_guangci3_0027"},{"time":1.1,"name":"TX/atk_guangci3_0028"},{"time":1.1333,"name":"TX/atk_guangci3_0030"},{"time":1.1667,"name":"TX/atk_guangci3_0031"},{"time":1.2,"name":null}]},"TX_shouji3_1":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie_quan3":{"attachment":[{"name":null}]},"shenti":{"attachment":[{"name":"shenti"}]},"TX/shuyefaguang3":{"attachment":[{"name":null}]},"y_qiantui":{"attachment":[{"name":"y_qiantui"}]},"BZ/z_bianzi5_liuguang2":{"color":[{"time":0.2667,"color":"ffffff00"},{"time":0.6667,"color":"ffffffff"}],"attachment":[{"name":null},{"time":0.2667,"name":"TX/z_bianzi2_bz_liuguang"}]},"TX_cao_hou1":{"color":[{"time":0.1,"color":"576e4cff","curve":0.405,"c2":0.72,"c3":0.49},{"time":0.5667,"color":"576e4c00","curve":"stepped"},{"time":1.0667,"color":"ffffffff"},{"time":1.2,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.1,"name":"TX/cao"}]},"TX/cao8":{"attachment":[{"name":null}]},"TX/cao4":{"color":[{"time":0.0667,"color":"ffffffff"},{"time":0.2667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.0667,"name":"TX/cao"},{"time":0.2667,"name":null}]},"TX/liuguang7_BZH":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou":{"color":[{"time":1.0667,"color":"ccb9b2ff"},{"time":1.4,"color":"ccb9b200"}],"attachment":[{"name":null},{"time":1.0667,"name":"TX/TX_S1_yan_0029"}]},"TX_SK2_shouji_lie10":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou2":{"attachment":[{"name":null}]},"TX/chentu5":{"attachment":[{"name":null}]},"TX_SK2_liuguang":{"attachment":[{"name":null}]},"yinying":{"attachment":[{"name":"yinying"}]},"TX/z_bianzi2_bz_liuguang2":{"color":[{"time":0.2667,"color":"ffffff00"},{"time":0.6667,"color":"ffffffff"}],"attachment":[{"name":null},{"time":0.2667,"name":"TX/z_bianzi2_bz_liuguang"}]},"TX/shuyefaguang6":{"attachment":[{"name":null}]},"TX_guangquan":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou4":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian1":{"attachment":[{"name":null},{"time":0.7333,"name":"TX/daoguang_red"}]},"TX_feng_quan_faguang2":{"attachment":[{"name":null}]},"TX/shuyefaguang5":{"attachment":[{"name":null}]},"z_qiantui":{"attachment":[{"name":"z_qiantui"}]},"TX/suduxian_mi2":{"attachment":[{"name":null}]},"BZ/zuiba":{"attachment":[{"name":null}]},"TX_guangquan2":{"attachment":[{"name":null}]},"y-meimao":{"attachment":[{"name":"y_meimao_pingshi"},{"time":0.0333,"name":"y_meimao_gongji"},{"time":1.4333,"name":"y-meimao_shouji"},{"time":1.5,"name":"y_meimao_pingshi"}]},"TX/cao6":{"attachment":[{"name":null}]},"TX_feng_quan_faguang1":{"attachment":[{"name":null}]},"TX/chentu6":{"attachment":[{"name":null}]},"TX/shuye8":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou3":{"attachment":[{"name":null}]},"TX_huaban2_sanluo2":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie8":{"attachment":[{"name":null}]},"z-yanjing":{"attachment":[{"name":"z_yanjing_pingshi"},{"time":0.0333,"name":"z_yanjing_gongji"},{"time":1.4333,"name":"z_yan_shengli"},{"time":1.5,"name":"z_yanjing_pingshi"}]},"TX_SK2_shouji_lie7":{"attachment":[{"name":null}]},"TX/suduxian_su4":{"attachment":[{"name":null}]},"TX_feng_quan4":{"attachment":[{"name":null}]},"BZ/y_bianzi2_bz_g":{"attachment":[{"name":null}]},"TX_bao1":{"attachment":[{"name":null},{"time":1.4333,"name":"TX/shuangcdr_00010002"},{"time":1.5,"name":null}]},"TX_huaban1_sanluo":{"attachment":[{"name":null}]},"TX_xian3":{"attachment":[{"name":null}]},"TX_guangxian1":{"attachment":[{"name":null}]},"TX/suduxian_mi_hou1":{"attachment":[{"name":null}]},"TX/TX_yan1_4":{"attachment":[{"name":null}]},"TX_guangxian5":{"attachment":[{"name":null}]},"BZ/y_bianzi_1_liuguang":{"color":[{"time":0.2667,"color":"ffffff00"},{"time":0.6667,"color":"ffffffff"}],"attachment":[{"name":null},{"time":0.2667,"name":"TX/liuguang3"}]},"TX_feng1":{"color":[{"time":0.2333,"color":"ffffffff"},{"time":0.3,"color":"ffffff95"}],"attachment":[{"name":null},{"time":0.0333,"name":"TX/TX_S1_shua_0010"},{"time":0.0667,"name":"TX/TX_S1_shua_0014"},{"time":0.1333,"name":"TX/TX_S1_shua_0016"},{"time":0.2,"name":"TX/TX_S1_shua_0010"},{"time":0.2333,"name":"TX/TX_S1_shua_0014"},{"time":0.3333,"name":null},{"time":0.7,"name":"TX/TX_S1_shua_0010"},{"time":0.7333,"name":"TX/TX_S1_shua_0014"},{"time":0.7667,"name":"TX/TX_S1_shua_0016"},{"time":0.8,"name":null}]},"TX_shouji3_3":{"attachment":[{"name":null}]},"TX/shuyefaguang":{"attachment":[{"name":null}]},"BZ/z_bianzi5_liuguang":{"color":[{"time":0.2667,"color":"ffffff00"},{"time":0.6667,"color":"ffffffff"}],"attachment":[{"name":null},{"time":0.2667,"name":"TX/liugguang2"}]},"hei2":{"attachment":[{"name":null}]},"BZ/y_bianzi2":{"attachment":[{"name":"BZ/z_bianzi2_bz"}]},"TX/cao3":{"color":[{"time":0.0667,"color":"ffffffff"},{"time":0.2667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.0667,"name":"TX/cao"},{"time":0.2667,"name":null}]},"TX_SK2_shouji_lie11":{"attachment":[{"name":null}]},"TX/shuye6":{"attachment":[{"name":null}]},"TX/shuyefaguang9":{"attachment":[{"name":null}]},"BZ/z_shou":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian3":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian8":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie4":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou4":{"attachment":[{"name":null}]},"TX_guangquan4":{"attachment":[{"name":null}]},"TX/TX_yan1_3":{"color":[{"time":0.1,"color":"ffffffff"},{"time":0.4333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.1,"name":"TX/TX_S1_yan_0029"}]},"ZZZZZZZZZZZ":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian6":{"attachment":[{"name":null}]},"TX/liuguang2":{"attachment":[{"name":null}]},"TX/suduxian_su1":{"attachment":[{"name":null}]},"BZ/y_bianzi1":{"attachment":[{"name":"BZ/z_bianzi1_bz"}]},"TX_SK2_shouji_lie6":{"attachment":[{"name":null}]},"TX_huabao":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou3_liuguang\n2":{"attachment":[{"name":null}]},"TX_guangxian6":{"attachment":[{"name":null}]},"BZ/z_jiao":{"attachment":[{"name":null}]},"tou":{"attachment":[{"name":"tou"}]},"TX_huaban2_sanluo":{"attachment":[{"name":null}]},"TX/liuguang_mi2":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan2":{"attachment":[{"name":null}]},"TX_xian":{"attachment":[{"name":null}]},"BZ/z_yanjing":{"attachment":[{"name":null}]},"TX/guangyun2":{"attachment":[{"name":null}]},"TX_feng4":{"attachment":[{"name":null}]},"hei":{"attachment":[{"name":null}]}},"bones":{"1":{"translate":[{"time":0.2,"curve":0.363,"c2":0.39,"c3":0.678,"c4":0.73},{"time":0.2667,"x":49.39,"y":-32.45,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"x":95.83,"y":-29.06,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":-36.9,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"x":30.14,"y":-19.81,"curve":0.309,"c2":0.41,"c3":0.624,"c4":0.74},{"time":1.0667,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.3667,"x":17.36,"curve":"stepped"},{"time":1.5,"x":17.36},{"time":1.7}]},"2":{"translate":[{"time":0.2,"curve":0.363,"c2":0.39,"c3":0.678,"c4":0.73},{"time":0.2667,"x":15.52,"y":-36.69,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"x":95.28,"y":-22.55,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":-36.9,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"x":9.47,"y":-22.39,"curve":0.309,"c2":0.41,"c3":0.624,"c4":0.74},{"time":1.0667,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.3667,"x":17.36,"curve":"stepped"},{"time":1.5,"x":17.36},{"time":1.7}]},"3":{"translate":[{"time":0.2,"curve":0.363,"c2":0.39,"c3":0.678,"c4":0.73},{"time":0.2667,"x":61.48,"y":14.63,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"x":109.11,"y":39.23,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":35.53,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"x":37.53,"y":8.93,"curve":0.309,"c2":0.41,"c3":0.624,"c4":0.74},{"time":1.0667,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.3667,"x":-27.78,"curve":"stepped"},{"time":1.5,"x":-27.78},{"time":1.7}]},"4":{"rotate":[{"time":0.2,"curve":0.363,"c2":0.39,"c3":0.678,"c4":0.73},{"time":0.2667,"angle":-1.37,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"angle":-1.55,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"curve":"stepped"},{"time":1,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"angle":-0.84,"curve":0.309,"c2":0.41,"c3":0.624,"c4":0.74},{"time":1.0667}],"translate":[{"time":0.2,"curve":0.363,"c2":0.39,"c3":0.678,"c4":0.73},{"time":0.2667,"x":62.22,"y":15.22,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"x":102.63,"y":45.37,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":35.53,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"x":37.98,"y":9.29,"curve":0.309,"c2":0.41,"c3":0.624,"c4":0.74},{"time":1.0667,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.3667,"x":-27.78,"curve":"stepped"},{"time":1.5,"x":-27.78},{"time":1.7}]},"BZ/y_bianzi1":{"rotate":[{"angle":6.36},{"time":0.0333,"angle":6.59,"curve":"stepped"},{"time":0.0667,"angle":5.27},{"time":0.2},{"time":0.2333,"angle":-3.9},{"time":0.2667,"angle":3.04},{"time":0.6667,"angle":4.04},{"time":0.7,"angle":-0.08,"curve":"stepped"},{"time":0.7333,"angle":11.7},{"time":1,"angle":11.11},{"time":1.0667,"angle":6.37},{"time":1.3667,"angle":6.81,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":6.96}],"scale":[{},{"time":0.0333,"x":2.267,"curve":"stepped"},{"time":0.0667,"x":1.528},{"time":0.2,"x":0.843},{"time":1}]},"BZ/y_bianzi2":{"rotate":[{"angle":16.83},{"time":0.0333,"angle":15.31,"curve":"stepped"},{"time":0.0667,"angle":39.97},{"time":0.2,"angle":6.83},{"time":0.2333,"angle":1.56},{"time":0.2667,"angle":-3.01},{"time":0.6667,"angle":-2.01},{"time":0.7,"angle":0.19,"curve":"stepped"},{"time":0.7333,"angle":2.77},{"time":1,"angle":0.79},{"time":1.0667,"angle":0.32},{"time":1.3667,"angle":0.76,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":9.58}]},"BZ/y_bianzi3":{"rotate":[{},{"time":0.2,"angle":21.63},{"time":0.2333,"angle":154.65},{"time":0.2667,"angle":-60.4},{"time":0.6667,"angle":-51.52},{"time":0.7,"angle":67.47},{"time":0.7333,"angle":-155.23},{"time":1,"angle":-178.36},{"time":1.0667,"angle":-111.88},{"time":1.3667,"angle":-105.85}],"translate":[{},{"time":0.2,"x":21.55,"y":9.07},{"time":0.2667,"x":7.5,"y":-13.62,"curve":"stepped"},{"time":0.6667,"x":7.5,"y":-13.62},{"time":0.7,"x":15.97,"y":-5.61},{"time":0.7333,"x":57.4,"y":62.72},{"time":1,"x":78.15,"y":88.12},{"time":1.0333,"x":16.95,"y":52.95},{"time":1.0667,"x":38.62,"y":34.82},{"time":1.3667,"x":31.95,"y":7.77}],"scale":[{"x":0,"y":0},{"time":0.0333,"curve":"stepped"},{"time":1.3667},{"time":1.4667,"y":0}]},"bone120":{"rotate":[{"angle":10.64},{"time":0.0667,"angle":21.26},{"time":0.2,"angle":20.72},{"time":0.2333,"angle":35.1},{"time":0.6667,"angle":36.02,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":24.52},{"time":1,"angle":35.22},{"time":1.0667,"angle":57.89,"curve":0.149,"c2":0.33,"c3":0.496,"c4":0.67},{"time":1.1,"angle":109.79,"curve":0.294,"c2":0.34,"c3":0.629,"c4":0.67},{"time":1.1333,"angle":52.09,"curve":0.305,"c2":0.34,"c3":0.639,"c4":0.67},{"time":1.1667,"angle":22.11,"curve":0.257,"c2":0.44,"c3":0.624,"c4":0.81},{"time":1.3667,"angle":30.8,"curve":0.334,"c2":0.51,"c3":0.671,"c4":0.86},{"time":1.4333,"angle":31.74,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5,"angle":40.54}],"scale":[{"x":0.007},{"time":0.2333,"x":0.908,"curve":"stepped"},{"time":0.6667,"x":0.908,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"x":0.774,"curve":"stepped"},{"time":1,"x":0.774},{"time":1.0667,"x":2.364,"curve":0.187,"c2":0.33,"c3":0.527,"c4":0.67},{"time":1.1,"x":1.92,"curve":0.263,"c2":0.34,"c3":0.6,"c4":0.67},{"time":1.1333,"x":1.259,"curve":0.29,"c2":0.34,"c3":0.626,"c4":0.68},{"time":1.1667,"x":1.474,"curve":0.245,"c2":0.52,"c3":0.639,"c4":0.94},{"time":1.3667,"x":0.941,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5,"x":0.044,"y":0}]},"BZ/z_bianzi4":{"rotate":[{"angle":10.53},{"time":0.0667,"angle":13.82},{"time":0.2,"angle":13.27},{"time":0.2333,"angle":8.7},{"time":0.6667,"angle":9.62,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":16.12},{"time":1,"angle":16.17},{"time":1.0667,"angle":15.31},{"time":1.1,"angle":7.73},{"time":1.1667,"angle":8.09},{"time":1.3667,"angle":9.19},{"time":1.4333,"angle":9.55},{"time":1.5,"angle":12.24}]},"BZ/z_bianzi5":{"rotate":[{"angle":-6.86},{"time":0.0667,"angle":-8.06},{"time":0.2,"angle":-8.6},{"time":0.2333,"angle":-9.93},{"time":0.6667,"angle":-9.01,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":-18.84},{"time":1,"angle":-15.2},{"time":1.0667,"angle":-4.8},{"time":1.1,"angle":-8.56},{"time":1.1667,"angle":-14.52},{"time":1.3667,"angle":-7.86},{"time":1.4333,"angle":-10.55},{"time":1.5,"angle":-6.94}]},"bone146":{"rotate":[{"angle":1.19},{"time":0.0667,"angle":-1.05},{"time":0.2,"angle":-1.59},{"time":0.2333,"angle":-2.72},{"time":0.6667,"angle":-1.8,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":-11.63},{"time":1,"angle":-8},{"time":1.0667,"angle":2.41},{"time":1.1,"angle":-1.36},{"time":1.1667,"angle":-7.32},{"time":1.3667,"angle":-0.65},{"time":1.4333,"angle":-3.35},{"time":1.5,"angle":2.39}]},"TX_yan1_1":{"rotate":[{"time":0.1,"angle":-103.77,"curve":0.439,"c2":0.47,"c3":0.705,"c4":0.79},{"time":0.3,"angle":-119.87,"curve":0.252,"c2":0.7,"c3":0.528},{"time":0.7,"angle":-114.67,"curve":"stepped"},{"time":0.7333,"angle":-53.89,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.2,"angle":-35.48}],"translate":[{"time":0.1,"x":3040.38,"y":1497.75,"curve":0.439,"c2":0.47,"c3":0.705,"c4":0.79},{"time":0.3,"x":3316.56,"y":1631.8,"curve":0.252,"c2":0.7,"c3":0.528},{"time":0.7,"x":3556.6,"y":1746.75,"curve":"stepped"},{"time":0.7333,"x":5173.36,"y":1522.38,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.2,"x":5674.08,"y":1806.39}],"scale":[{"time":0.1,"x":1.726,"y":4.22,"curve":0.439,"c2":0.47,"c3":0.705,"c4":0.79},{"time":0.3,"x":4.687,"y":4.889,"curve":0.252,"c2":0.7,"c3":0.528},{"time":0.7,"x":5.529,"y":5.19,"curve":"stepped"},{"time":0.7333,"x":-2.171,"y":2.679,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.2,"x":-4.334,"y":3.7}]},"TX_yan1_2":{"rotate":[{"time":0.0667,"angle":47.34,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.3667,"angle":59.66}],"translate":[{"time":0.0667,"x":1819.22,"y":1556.84,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.3667,"x":2044.11,"y":1503.2}],"scale":[{"time":0.0667,"x":3.104,"y":4.976,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.3667,"x":4.696,"y":4.976}]},"TX_yan1_3":{"rotate":[{"time":0.1,"angle":72.55,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.4333,"angle":79.64}],"translate":[{"time":0.1,"x":2831.75,"y":1420.36,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.4333,"x":3052.12,"y":1629.71}],"scale":[{"time":0.1,"x":2.649,"y":5.625,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.4333,"x":4.553,"y":5.015}]},"TX_yan1_1_hou":{"rotate":[{"time":1.0667,"angle":-54.68,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4,"angle":-45.67}],"translate":[{"time":1.0667,"x":5302.94,"y":1584.52,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4,"x":5585.33,"y":1881.77}],"scale":[{"time":1.0667,"x":2.635,"y":3.248,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4,"x":4.684,"y":4.333}]},"TX_cao1":{"rotate":[{"time":0.1,"angle":-87.34,"curve":0.445,"c2":0.5,"c3":0.689,"c4":0.82},{"time":0.3,"angle":-84.46,"curve":0.252,"c2":0.69,"c3":0.545},{"time":0.5667,"angle":-90.87,"curve":"stepped"},{"time":0.7333,"angle":-83.15,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.9667,"angle":-89.43}],"translate":[{"time":0.1,"x":2384.7,"y":1821.25,"curve":0.445,"c2":0.5,"c3":0.689,"c4":0.82},{"time":0.3,"x":2997.91,"y":2204.59,"curve":0.252,"c2":0.69,"c3":0.545},{"time":0.5667,"x":3084.96,"y":2259.01,"curve":"stepped"},{"time":0.7333,"x":4306.39,"y":1846.73,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.9667,"x":5021.73,"y":2190.5}],"scale":[{"time":0.1,"x":1.756,"y":1.85,"curve":0.445,"c2":0.5,"c3":0.689,"c4":0.82},{"time":0.3,"x":2.8,"y":2.58,"curve":0.252,"c2":0.69,"c3":0.545},{"time":0.5667,"x":2.948,"y":2.683,"curve":"stepped"},{"time":0.7333,"x":1.608,"y":1.739,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.9667,"x":2.794,"y":2.426}]},"TX_cao2":{"rotate":[{"time":0.1333,"angle":-120.03,"curve":0.418,"c2":0.42,"c3":0.719,"c4":0.75},{"time":0.3,"angle":-131.57,"curve":0.252,"c2":0.7,"c3":0.528},{"time":0.6333,"angle":-127.61,"curve":"stepped"},{"time":0.7333,"angle":-58.94,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.9667,"angle":-36.08}],"translate":[{"time":0.1333,"x":2009.13,"y":1737.47,"curve":0.439,"c2":0.47,"c3":0.705,"c4":0.79},{"time":0.3,"x":2844.7,"y":2072.87,"curve":0.252,"c2":0.7,"c3":0.528},{"time":0.6333,"x":2938.46,"y":2129.99,"curve":"stepped"},{"time":0.7333,"x":4142.68,"y":1804.45,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.9667,"x":4607.48,"y":2127.85}],"scale":[{"time":0.1333,"x":1.531,"y":2.115,"curve":0.439,"c2":0.47,"c3":0.705,"c4":0.79},{"time":0.3,"x":2.292,"y":2.616,"curve":0.252,"c2":0.7,"c3":0.528},{"time":0.6333,"x":2.469,"y":2.732,"curve":"stepped"},{"time":0.7333,"x":1.627,"y":1.24,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.9667,"x":2.486,"y":1.895}]},"TX_cao3":{"rotate":[{"time":0.0667,"angle":6.41,"curve":0.414,"c2":0.42,"c3":0.719,"c4":0.75},{"time":0.1333,"angle":26.11,"curve":0.272,"c2":0.71,"c3":0.496},{"time":0.2667,"angle":63.56}],"translate":[{"time":0.0667,"x":440.2,"y":1977.07,"curve":0.414,"c2":0.42,"c3":0.719,"c4":0.75},{"time":0.1333,"x":1215.84,"y":1758.28,"curve":0.272,"c2":0.71,"c3":0.496},{"time":0.2667,"x":1529.8,"y":1767.02}],"scale":[{"time":0.0667,"x":-1.57,"y":1.911,"curve":0.414,"c2":0.42,"c3":0.719,"c4":0.75},{"time":0.1333,"x":-3.44,"y":1.732,"curve":0.34,"c2":0.39,"c3":0.664,"c4":0.72},{"time":0.1667,"x":-2.284,"y":2.15,"curve":0.252,"c2":0.7,"c3":0.528},{"time":0.2667,"x":-2.403,"y":2.503}]},"TX_cao4":{"rotate":[{"time":0.0667,"angle":-32.45,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.2667,"angle":-28.48}],"translate":[{"time":0.0667,"x":1001.66,"y":1733.61,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.2667,"x":2160.8,"y":1689.59}],"scale":[{"time":0.0667,"x":4.124,"y":1.324}]},"TX_guangyun":{"translate":[{"time":0.7333,"x":-1218.76,"y":2088.46,"curve":"stepped"},{"time":1.0667,"x":-1218.76,"y":2088.46}],"scale":[{"time":0.7333,"x":7.405,"y":7.405},{"time":1.0333,"x":11.221,"y":11.221},{"time":1.0667,"x":7.405,"y":7.405},{"time":1.3667,"x":11.221,"y":11.221}]},"bone60":{"rotate":[{"angle":-9.58},{"time":0.0333,"angle":-6.7,"curve":"stepped"},{"time":0.0667,"angle":-7.54},{"time":0.2,"angle":-10.91},{"time":0.2333,"angle":-16.86},{"time":0.2667,"angle":-17.51},{"time":0.6667,"angle":-16.51},{"time":0.7,"angle":-17.05,"curve":"stepped"},{"time":0.7333,"angle":-5.71},{"time":1,"angle":-2.29},{"time":1.0667,"angle":-14.17},{"time":1.3667,"angle":-13.74,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":-5.98}]},"TX_SK2_shouji_lie_quan":{"scale":[{"time":0.7333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.9,"x":1.539,"y":1.539,"curve":"stepped"},{"time":1.0667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":1.2333,"x":1.539,"y":1.539}]},"TX_SK2_shouji_quan":{"rotate":[{"time":0.7333,"angle":-101.35},{"time":0.8333,"angle":-154.57,"curve":"stepped"},{"time":1.0667,"angle":-101.35},{"time":1.1667,"angle":-154.57}],"scale":[{"time":0.7333,"x":3.31,"y":3.31,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8333,"x":6.056,"y":6.056,"curve":"stepped"},{"time":1.0667,"x":3.31,"y":3.31,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":1.1667,"x":5.376,"y":5.376}]},"TX_SK2_shouji_xian1":{"scale":[{"time":0.7333,"x":1.206,"y":0.982},{"time":0.7667,"x":1.206,"y":1.688},{"time":0.9,"x":0,"y":1.854}]},"TX_SK2_shouji_xian2":{"rotate":[{"time":0.7333},{"time":0.8333,"angle":-0.6},{"time":0.9}],"scale":[{"time":0.7333,"x":1.821,"y":2.427},{"time":0.7667,"x":0.647,"y":1.253},{"time":0.9,"x":0,"y":1.371,"curve":"stepped"},{"time":1.0667,"x":1.821,"y":2.427},{"time":1.2333,"x":0,"y":1.371}]},"TX_bao1":{"translate":[{"time":1.4333,"x":2970.45,"y":1826.32}],"scale":[{"time":1.4333,"x":0.952,"y":0.918,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.5,"x":1.993,"y":1.924}]},"TX_bao_hou":{"translate":[{"time":1.5,"x":3325.2,"y":1907.2,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.5667,"x":3328.24,"y":1907.2}],"scale":[{"time":1.5,"x":1.319,"y":1.319,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.5667,"x":2.564,"y":2.225}]},"TX_cao_hou1":{"rotate":[{"time":0.1,"angle":-67.99,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.5667,"angle":-57.53,"curve":"stepped"},{"time":1.0667,"angle":-86.19,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.2,"angle":-69.65}],"translate":[{"time":0.1,"x":2249.73,"y":1938.59,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.5667,"x":2479.2,"y":2282.79,"curve":"stepped"},{"time":1.0667,"x":4481.19,"y":1919.5,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.2,"x":5141.21,"y":2239.99}],"scale":[{"time":0.1,"x":1.986,"y":1.986,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.5667,"x":2.979,"y":2.226,"curve":"stepped"},{"time":1.0667,"x":1.426,"y":1.665,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.2,"x":2.608,"y":2.409}]},"TX_cao_hou2":{"rotate":[{"time":1.0667,"angle":-45.15,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.2333,"angle":-42.97}],"translate":[{"time":1.0667,"x":4267.77,"y":1924.51,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.2333,"x":4666.7,"y":2269.52}],"scale":[{"time":1.0667,"x":1.779,"y":1.537,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.2333,"x":2.648,"y":2.287}]},"TX_feng1":{"rotate":[{"time":0.0333,"angle":3.77},{"time":0.0667,"angle":7.04},{"time":0.1667,"angle":7.81,"curve":"stepped"},{"time":0.2,"angle":152.79},{"time":0.2333,"angle":136.81,"curve":0.439,"c2":0.47,"c3":0.705,"c4":0.79},{"time":0.2667,"angle":120.43,"curve":0.252,"c2":0.7,"c3":0.528},{"time":0.3,"angle":132.45,"curve":"stepped"},{"time":0.7,"angle":-140.18,"curve":0.344,"c2":0.4,"c3":0.664,"c4":0.73},{"time":0.7333,"angle":-4.22,"curve":0.266,"c2":0.66,"c3":0.557,"c4":0.99},{"time":0.8,"angle":9.86}],"translate":[{"time":0.0333,"x":1161.58,"y":2297.47,"curve":0.316,"c2":0.56,"c3":0.579,"c4":0.89},{"time":0.1667,"x":2351.5,"y":2216.57,"curve":"stepped"},{"time":0.2,"x":2817.1,"y":2470.35},{"time":0.2333,"x":2869.38,"y":2684.81,"curve":0.439,"c2":0.47,"c3":0.705,"c4":0.79},{"time":0.2667,"x":2689.28,"y":2772.18,"curve":0.252,"c2":0.7,"c3":0.528},{"time":0.3,"x":2472,"y":2942.32,"curve":"stepped"},{"time":0.7,"x":1112.72,"y":3130.66,"curve":0.344,"c2":0.4,"c3":0.664,"c4":0.73},{"time":0.7333,"x":2855.85,"y":2145.88,"curve":0.307,"c2":0.45,"c3":0.628,"c4":0.78},{"time":0.7667,"x":3450.49,"y":2170.54,"curve":0.285,"c2":0.65,"c3":0.609,"c4":0.98},{"time":0.8,"x":4112.55,"y":2236.77}],"scale":[{"time":0.0333,"x":5.98,"y":7.239,"curve":0.338,"c2":0.46,"c3":0.638,"c4":0.79},{"time":0.1667,"x":4.573,"y":5.625,"curve":"stepped"},{"time":0.2,"x":4.106,"y":4.603},{"time":0.3,"x":4,"y":6.623,"curve":"stepped"},{"time":0.7,"x":4.673,"y":7.805,"curve":0.344,"c2":0.4,"c3":0.664,"c4":0.73},{"time":0.7333,"x":-7.564,"y":6.693,"curve":0.307,"c2":0.45,"c3":0.628,"c4":0.78},{"time":0.7667,"x":-8.561,"y":6.089}]},"TX_feng2":{"rotate":[{"time":0.0333,"angle":1.88},{"time":0.1333,"angle":-10.16},{"time":0.1667,"angle":-3.33},{"time":0.2,"angle":-35.64,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.2333,"angle":-32.75,"curve":0.439,"c2":0.47,"c3":0.705,"c4":0.79},{"time":0.3,"angle":-75.42,"curve":"stepped"},{"time":1,"angle":8.96},{"time":1.0333,"angle":-27.25},{"time":1.0667,"angle":-74.71}],"translate":[{"time":0.0333,"x":1847.64,"y":2481.11},{"time":0.1333,"x":2463.64,"y":2450.56},{"time":0.1667,"x":2624.52,"y":2381.62},{"time":0.2,"x":2873.95,"y":2254.28,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.2333,"x":2954.82,"y":2734.01,"curve":0.439,"c2":0.47,"c3":0.705,"c4":0.79},{"time":0.2667,"x":3038.34,"y":2881.03,"curve":0.252,"c2":0.7,"c3":0.528},{"time":0.3,"x":3188.29,"y":2760.61,"curve":"stepped"},{"time":1,"x":1827.19,"y":3928.75},{"time":1.0333,"x":3237.36,"y":3821.56},{"time":1.0667,"x":5025.53,"y":2723.16}],"scale":[{"time":0.0333,"x":4.663,"y":-4.2,"curve":"stepped"},{"time":0.1667,"x":4.663,"y":-4.2},{"time":0.2,"x":3.664,"y":-4.326,"curve":0.447,"c2":0.54,"c3":0.658,"c4":0.85},{"time":0.2667,"x":4.823,"y":-9.31,"curve":0.261,"c2":0.69,"c3":0.571},{"time":0.3,"x":4.247,"y":-6.229,"curve":"stepped"},{"time":1,"x":4.247,"y":-3.765},{"time":1.0667,"x":4.247,"y":-5.296}]},"y-meimao":{"rotate":[{"time":0.7333,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"angle":3.45,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333}],"translate":[{"time":0.7333,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":-2.06,"y":-0.76,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333}]},"z-meimao":{"rotate":[{"time":0.7333,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"angle":6.44,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333}],"translate":[{"time":0.6667,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"x":7.23,"y":-8.75,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":6.8,"y":-2.21,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333}],"scale":[{"time":0.6667,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"x":1.54,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":1.508,"y":0.769,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333}]},"z-yanjing":{"translate":[{"time":0.7333,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":-1.69,"y":-0.29,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333}],"scale":[{"time":0.7333,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":0.542,"y":0.853,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"curve":"stepped"},{"time":1.4,"curve":0.272,"c2":0.71,"c3":0.496},{"time":1.4333,"x":1.225,"y":0.663},{"time":1.5}]},"z_qiantui":{"translate":[{"x":-2.15,"y":-2.31},{"time":0.2,"curve":0.363,"c2":0.39,"c3":0.678,"c4":0.73},{"time":0.2667,"x":-36.07,"y":-20.52,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"x":-40.67,"y":-23.13,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":-34.46,"y":13.21,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"x":-22.02,"y":-12.52,"curve":0.309,"c2":0.41,"c3":0.624,"c4":0.74},{"time":1.0667,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.3667,"x":16.21,"y":-6.22,"curve":"stepped"},{"time":1.5,"x":16.21,"y":-6.22},{"time":1.7}]},"bone12":{"rotate":[{"time":1.5},{"time":1.7,"angle":-7.05}],"translate":[{"time":0.7333,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":-24.75,"y":3.31,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"curve":"stepped"},{"time":1.0667,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.3667,"x":22.73,"y":-6.41,"curve":"stepped"},{"time":1.5,"x":22.73,"y":-6.41},{"time":1.7}],"scale":[{"time":0.7333,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":0.75,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333}]},"shenti":{"rotate":[{"angle":0.3},{"time":0.2,"angle":-10.73,"curve":0.363,"c2":0.39,"c3":0.678,"c4":0.73},{"time":0.2667,"angle":8.4,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"angle":10.84,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"angle":-10.73,"curve":"stepped"},{"time":1,"angle":-10.73,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"angle":0.95,"curve":0.309,"c2":0.41,"c3":0.624,"c4":0.74},{"time":1.0667,"angle":-10.73,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.4,"angle":-5.32,"curve":0.414,"c2":0.42,"c3":0.719,"c4":0.75},{"time":1.4333,"angle":-7.95,"curve":"stepped"},{"time":1.5,"angle":-7.95},{"time":1.7}],"translate":[{"x":0.01,"y":-6.35},{"time":0.2,"x":30.33,"y":-18.6,"curve":0.363,"c2":0.39,"c3":0.678,"c4":0.73},{"time":0.2667,"x":25.17,"y":20.72,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"x":24.52,"y":25.73,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"x":30.33,"y":-18.6,"curve":"stepped"},{"time":1,"x":30.33,"y":-18.6,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"x":27.18,"y":5.4,"curve":0.309,"c2":0.41,"c3":0.624,"c4":0.74},{"time":1.0667,"x":30.33,"y":-18.6,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.4,"x":30.33,"y":15.83,"curve":0.414,"c2":0.42,"c3":0.719,"c4":0.75},{"time":1.4333,"x":30.33,"y":-23.99},{"time":1.4667,"x":30.33,"y":-44.8},{"time":1.5,"x":30.33,"y":-23.99},{"time":1.7}]},"tou":{"rotate":[{"time":0.2,"curve":0.363,"c2":0.39,"c3":0.678,"c4":0.73},{"time":0.2667,"angle":8.14,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"angle":14.63,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"curve":"stepped"},{"time":1,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"angle":4.97,"curve":0.309,"c2":0.41,"c3":0.624,"c4":0.74},{"time":1.0667,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.3667,"angle":10.81,"curve":"stepped"},{"time":1.4,"angle":10.81,"curve":0.272,"c2":0.71,"c3":0.496},{"time":1.4333,"angle":2.76},{"time":1.5,"angle":10.81},{"time":1.7}],"translate":[{"time":0.2,"curve":0.363,"c2":0.39,"c3":0.678,"c4":0.73},{"time":0.2667,"x":24.8,"y":26.74,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"x":25.23,"y":32.65,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"x":13.25,"y":-1.65,"curve":"stepped"},{"time":1,"x":13.25,"y":-1.65,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"x":15.14,"y":16.32,"curve":0.309,"c2":0.41,"c3":0.624,"c4":0.74},{"time":1.0667,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.3667,"x":-18.38,"y":12,"curve":"stepped"},{"time":1.5,"x":-18.38,"y":12},{"time":1.7}]},"z_houtui":{"rotate":[{},{"time":0.2,"angle":34.18,"curve":0.363,"c2":0.39,"c3":0.678,"c4":0.73},{"time":0.2667,"angle":33.43,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"angle":33.34,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"angle":34.18,"curve":"stepped"},{"time":1,"angle":34.18,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"angle":33.73,"curve":0.309,"c2":0.41,"c3":0.624,"c4":0.74},{"time":1.0667,"angle":34.18,"curve":"stepped"},{"time":1.5,"angle":34.18},{"time":1.7}],"translate":[{},{"time":0.2,"x":-28.88,"y":10.92,"curve":0.363,"c2":0.39,"c3":0.678,"c4":0.73},{"time":0.2667,"x":-86.08,"y":-35.05,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"x":-93.37,"y":-40.91,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"x":-28.88,"y":10.92,"curve":"stepped"},{"time":1,"x":-28.88,"y":10.92,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"x":-63.8,"y":-17.14,"curve":0.309,"c2":0.41,"c3":0.624,"c4":0.74},{"time":1.0667,"x":-28.88,"y":10.92,"curve":"stepped"},{"time":1.5,"x":-28.88,"y":10.92},{"time":1.7}]},"bone10":{"rotate":[{},{"time":0.2,"angle":-24.31,"curve":0.363,"c2":0.39,"c3":0.678,"c4":0.73},{"time":0.2667,"angle":-11.37,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"angle":-9.72,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"angle":-24.31,"curve":"stepped"},{"time":1,"angle":-24.31,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"angle":-16.41,"curve":0.309,"c2":0.41,"c3":0.624,"c4":0.74},{"time":1.0667,"angle":-24.31,"curve":"stepped"},{"time":1.5,"angle":-24.31},{"time":1.7}],"translate":[{"time":0.2,"curve":0.363,"c2":0.39,"c3":0.678,"c4":0.73},{"time":0.2667,"x":5.74,"y":-7.8,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"x":6.47,"y":-8.8,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"curve":"stepped"},{"time":1,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"x":3.5,"y":-4.76,"curve":0.309,"c2":0.41,"c3":0.624,"c4":0.74},{"time":1.0667}]},"y_yan":{"rotate":[{"time":0.7333,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"angle":4.6,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333}],"translate":[{"time":0.6667,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"x":69.94,"y":-5.47,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":103.42,"y":-22.28,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"curve":"stepped"},{"time":1.0667,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.3667,"x":-21.72,"y":-1.54,"curve":"stepped"},{"time":1.5,"x":-21.72,"y":-1.54},{"time":1.7}],"scale":[{"time":0.7333,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":1.089,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333}]},"bone11":{"rotate":[{"time":0.7333,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"angle":1.8,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333}],"translate":[{"time":0.7333,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":-36.79,"y":-24.49,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"curve":"stepped"},{"time":1.0667,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.3667,"x":20.27,"y":13.74,"curve":"stepped"},{"time":1.5,"x":20.27,"y":13.74},{"time":1.7}]},"bone2":{"rotate":[{},{"time":0.2,"angle":27.29,"curve":0.363,"c2":0.39,"c3":0.678,"c4":0.73},{"time":0.2667,"angle":8.27,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"angle":5.85,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"angle":27.29,"curve":"stepped"},{"time":1,"angle":27.29,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"angle":15.68,"curve":0.309,"c2":0.41,"c3":0.624,"c4":0.74},{"time":1.0667,"angle":27.29,"curve":"stepped"},{"time":1.5,"angle":27.29},{"time":1.7}]},"bone13":{"rotate":[{"time":0.7333,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"angle":10.95,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333}],"translate":[{"time":0.6667,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"x":45.26,"y":12.01,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":74.2,"y":20.8,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"curve":"stepped"},{"time":1.0667,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.3667,"x":-53.65,"y":-6.35,"curve":"stepped"},{"time":1.5,"x":-53.65,"y":-6.35},{"time":1.7}]},"bone6":{"translate":[{"time":0.6667,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"x":-33.61,"y":3.03,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":-59.18,"y":-15.11,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333}]},"bone4":{"rotate":[{},{"time":0.2,"angle":-8.03,"curve":0.363,"c2":0.39,"c3":0.678,"c4":0.73},{"time":0.2667,"angle":-3.69,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"angle":-0.59,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"angle":-8.03,"curve":"stepped"},{"time":1,"angle":-8.03,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"angle":-5.38,"curve":0.309,"c2":0.41,"c3":0.624,"c4":0.74},{"time":1.0667,"angle":-8.03,"curve":"stepped"},{"time":1.3667,"angle":-8.03,"curve":0.414,"c2":0.42,"c3":0.719,"c4":0.75},{"time":1.4,"angle":-10.15,"curve":0.272,"c2":0.71,"c3":0.496},{"time":1.4333,"angle":-15.57},{"time":1.5,"angle":-11.61},{"time":1.7}]},"zhonzi":{"rotate":[{},{"time":0.2,"angle":0.7,"curve":0.363,"c2":0.39,"c3":0.678,"c4":0.73},{"time":0.2667}],"scale":[{},{"time":0.2,"x":1.095,"y":0.776,"curve":0.363,"c2":0.39,"c3":0.678,"c4":0.73},{"time":0.2667,"x":0.882,"y":1.207,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"x":1.068,"y":0.833,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":0.937,"y":1.277,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0667,"x":1.068,"y":0.878,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.3667,"x":0.947,"y":1.238,"curve":0.414,"c2":0.42,"c3":0.719,"c4":0.75},{"time":1.4,"x":1.114,"y":0.912,"curve":0.272,"c2":0.71,"c3":0.496},{"time":1.4333,"x":0.878,"y":1.19},{"time":1.4667,"x":0.997,"y":0.935},{"time":1.5,"x":0.886,"y":1.251},{"time":1.7}]},"y_qiantui":{"translate":[{"time":0.2667,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"x":23.72,"y":1.8,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":33.17,"y":-12.72,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"curve":"stepped"},{"time":1.0667,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.3667,"x":-25.94,"y":9.94,"curve":"stepped"},{"time":1.5,"x":-25.94,"y":9.94},{"time":1.7}]},"z_yan":{"rotate":[{"time":0.7333,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"angle":8.12,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333}],"translate":[{"time":0.6667,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"x":18.87,"y":1.63,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":35.99,"y":3.73,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"curve":"stepped"},{"time":1.0667,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.3667,"x":-21.87,"y":-3.84,"curve":"stepped"},{"time":1.5,"x":-21.87,"y":-3.84},{"time":1.7}],"scale":[{"time":0.6667,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"x":0.624,"y":0.993,"curve":"stepped"},{"time":1,"x":0.624,"y":0.993,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"curve":"stepped"},{"time":1.0667,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.3667,"x":1.218,"curve":"stepped"},{"time":1.5,"x":1.218},{"time":1.7}]},"bone5":{"translate":[{"time":1.0667,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.3667,"x":-7.15,"y":2.92,"curve":"stepped"},{"time":1.5,"x":-7.15,"y":2.92},{"time":1.7}]},"zui":{"rotate":[{"time":0.6667,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"angle":5.28,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"angle":11.94,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333}],"translate":[{"time":0.6667,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"x":56.76,"y":6.62,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1,"x":87.98,"y":15.24,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"curve":"stepped"},{"time":1.0667,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.3667,"x":-14.54,"y":-0.04,"curve":"stepped"},{"time":1.5,"x":-14.54,"y":-0.04},{"time":1.7}],"scale":[{"time":0.2667,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"y":2.212,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333}]},"y_houtui":{"translate":[{},{"time":0.2,"x":32.94,"y":5.91,"curve":0.363,"c2":0.39,"c3":0.678,"c4":0.73},{"time":0.2667,"x":-5.07,"y":-3.61,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"x":-9.91,"y":-4.83,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"x":32.94,"y":5.91,"curve":"stepped"},{"time":1,"x":32.94,"y":5.91,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"x":9.74,"y":0.1,"curve":0.309,"c2":0.41,"c3":0.624,"c4":0.74},{"time":1.0667,"x":32.94,"y":5.91,"curve":"stepped"},{"time":1.5,"x":32.94,"y":5.91},{"time":1.7}]},"bone3":{"rotate":[{},{"time":0.2,"angle":-3.51,"curve":0.363,"c2":0.39,"c3":0.678,"c4":0.73},{"time":0.2667,"angle":0.32,"curve":0.197,"c2":0.75,"c3":0.473},{"time":0.6667,"angle":2.94,"curve":0.293,"c2":0.67,"c3":0.524,"c4":0.99},{"time":0.7333,"angle":-3.51,"curve":"stepped"},{"time":1,"angle":-3.51,"curve":0.355,"c2":0.47,"c3":0.617,"c4":0.79},{"time":1.0333,"angle":-1.18,"curve":0.309,"c2":0.41,"c3":0.624,"c4":0.74},{"time":1.0667,"angle":-3.51,"curve":"stepped"},{"time":1.3667,"angle":-3.51,"curve":0.414,"c2":0.42,"c3":0.719,"c4":0.75},{"time":1.4,"angle":-6.29,"curve":0.272,"c2":0.71,"c3":0.496},{"time":1.4333,"angle":-11.78},{"time":1.5,"angle":-8.22},{"time":1.7}]},"BZ/z_bianzi3":{"rotate":[{"angle":-42.54},{"time":0.0667,"angle":-74.15},{"time":0.1333,"angle":-59.46},{"time":0.2,"angle":-56.1},{"time":0.2333,"angle":16.4},{"time":0.2667,"angle":30.18},{"time":0.6667,"angle":48.55,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":-56.43},{"time":1,"angle":-31.58},{"time":1.0333,"angle":-52.8,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.0667,"angle":-72.28,"curve":0.362,"c2":0.36,"c3":0.693,"c4":0.69},{"time":1.1,"angle":-58.44,"curve":0.348,"c2":0.72,"c3":0.483},{"time":1.3667,"angle":-32.87},{"time":1.4333,"angle":31.47}],"translate":[{"x":-147.12,"y":-242.96},{"time":0.1333,"x":-107.99,"y":-281.67},{"time":0.2,"x":-111.68,"y":-266.12},{"time":0.2333,"x":-176.5,"y":-281.38,"curve":"stepped"},{"time":0.6667,"x":-176.5,"y":-281.38,"curve":0.305,"c2":0.45,"c3":0.643,"c4":0.78},{"time":0.7333,"x":-140.63,"y":-285.58,"curve":0.32,"c2":0.64,"c3":0.658,"c4":0.97},{"time":1,"x":-64.71,"y":-325.58,"curve":0.32,"c2":0.64,"c3":0.658,"c4":0.97},{"time":1.0333,"x":-76.42,"y":-211.02,"curve":0.252,"c2":0.7,"c3":0.528},{"time":1.0667,"x":-29.46,"y":-184.63,"curve":0.362,"c2":0.36,"c3":0.693,"c4":0.69},{"time":1.1,"x":-6.11,"y":-168.93,"curve":0.348,"c2":0.72,"c3":0.483},{"time":1.3667,"x":86.49,"y":-106.69}]},"bone35":{"rotate":[{"angle":15.74},{"time":0.0333,"angle":14.4,"curve":"stepped"},{"time":0.0667,"angle":25.82},{"time":0.2,"angle":49.55},{"time":0.2333,"angle":6.36},{"time":0.2667,"angle":1.78},{"time":0.6667,"angle":2.78},{"time":0.7,"angle":6.21,"curve":"stepped"},{"time":0.7333,"angle":13.1},{"time":1,"angle":13.53},{"time":1.0667,"angle":5.12},{"time":1.3667,"angle":5.55,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":18.75}]},"bone37":{"rotate":[{"angle":5.38},{"time":0.0333,"angle":5.77,"curve":"stepped"},{"time":0.0667,"angle":14.94},{"time":0.2,"angle":34.07},{"time":0.2333,"angle":9.72},{"time":0.2667,"angle":14.53},{"time":0.6667,"angle":15.53},{"time":0.7,"angle":6.96,"curve":"stepped"},{"time":0.7333,"angle":10.71},{"time":1,"angle":11.15},{"time":1.0667,"angle":17.87},{"time":1.3667,"angle":18.3,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":13.47}]},"bone39":{"rotate":[{"angle":8.79},{"time":0.0333,"angle":8.61,"curve":"stepped"},{"time":0.0667,"angle":10},{"time":0.2,"angle":17.85},{"time":0.2333,"angle":6.97},{"time":0.2667,"angle":11.57},{"time":0.6667,"angle":12.57},{"time":0.7,"angle":3.18,"curve":"stepped"},{"time":0.7333,"angle":-3.63},{"time":1,"angle":-3.2},{"time":1.0667,"angle":14.91},{"time":1.3667,"angle":15.34,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":10.65}]},"bone46":{"rotate":[{"angle":-1.08},{"time":0.0333,"angle":0.39,"curve":"stepped"},{"time":0.0667,"angle":9.56},{"time":0.2},{"time":0.2333,"angle":1.13},{"time":0.2667,"angle":-3.44},{"time":0.6667,"angle":-2.44},{"time":0.7,"angle":-6.64,"curve":"stepped"},{"time":0.7333,"angle":-1.32},{"time":1,"angle":-2.9},{"time":1.0667,"angle":-0.11},{"time":1.3667,"angle":0.33,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":1.05}]},"bone57":{"rotate":[{"angle":-6.39},{"time":0.0333,"angle":-4.04,"curve":"stepped"},{"time":0.0667,"angle":-4.06},{"time":0.2,"angle":-4.12},{"time":0.2333,"angle":-0.05},{"time":0.2667,"angle":6.06},{"time":0.6667,"angle":7.07},{"time":0.7,"angle":-2.78,"curve":"stepped"},{"time":0.7333,"angle":5.12},{"time":1,"angle":2.67},{"time":1.0667,"angle":2.4},{"time":1.3667,"angle":2.83,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":-3.09}]},"bone58":{"rotate":[{"angle":-4.62},{"time":0.0333,"angle":-2.57,"curve":"stepped"},{"time":0.0667,"angle":-4.83},{"time":0.2,"angle":-13.86},{"time":0.2333,"angle":-12.53},{"time":0.2667,"angle":-17.1},{"time":0.6667,"angle":-16.1},{"time":0.7,"angle":-16.11,"curve":"stepped"},{"time":0.7333,"angle":-0.57},{"time":1,"angle":-0.82},{"time":1.0667,"angle":-16.21},{"time":1.3667,"angle":-15.78,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":-6.74}]},"bone31":{"rotate":[{"angle":-9.14},{"time":0.0333,"angle":1.82,"curve":"stepped"},{"time":0.0667,"angle":1.07,"curve":0.271,"c2":0.67,"c3":0.541,"c4":0.99},{"time":0.2},{"time":0.2333,"angle":80.11},{"time":0.2667,"angle":5.42},{"time":0.6667,"angle":6.42},{"time":0.7,"angle":-11.67,"curve":"stepped"},{"time":0.7333,"angle":3.78},{"time":1,"angle":47.84},{"time":1.0667,"angle":8.76},{"time":1.3667,"angle":9.19,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":3.23}],"translate":[{},{"time":0.0333,"x":0.63,"y":-3.44,"curve":"stepped"},{"time":0.0667,"x":0.37,"y":-2.02,"curve":0.271,"c2":0.67,"c3":0.541,"c4":0.99},{"time":0.2,"curve":"stepped"},{"time":0.7333},{"time":1,"x":3.56,"y":-0.06},{"time":1.0667}],"scale":[{"x":0.01,"y":0.035},{"time":0.0333,"x":0.175,"y":0.613,"curve":"stepped"},{"time":0.0667,"x":0.515,"y":0.773,"curve":0.271,"c2":0.67,"c3":0.541,"c4":0.99},{"time":0.2,"curve":"stepped"},{"time":0.2667},{"time":0.6667,"x":1.204},{"time":0.7333,"x":1.966},{"time":1.0667,"x":0.818,"curve":"stepped"},{"time":1.3667,"x":0.818,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"x":0.017,"y":0}]},"bone32":{"rotate":[{"angle":31.51},{"time":0.0333,"angle":47.5,"curve":"stepped"},{"time":0.0667,"angle":53},{"time":0.2,"angle":75.01},{"time":0.2333,"angle":45.52},{"time":0.2667,"angle":40.95},{"time":0.6667,"angle":41.95},{"time":0.7,"angle":35.53,"curve":"stepped"},{"time":0.7333,"angle":41.44},{"time":1,"angle":46.86},{"time":1.0667,"angle":44.29},{"time":1.3667,"angle":44.72,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":36.45}],"translate":[{"time":0.7333},{"time":1,"x":5.65},{"time":1.0667}],"scale":[{"time":0.7333},{"time":1,"x":1.204},{"time":1.0667}]},"bone38":{"rotate":[{"angle":13.71},{"time":0.0333,"angle":12.71,"curve":"stepped"},{"time":0.0667,"angle":21.88},{"time":0.2,"angle":26.93},{"time":0.2333,"angle":5.56},{"time":0.2667,"angle":-7.7},{"time":0.6667,"angle":-6.7},{"time":0.7,"angle":-3.32,"curve":"stepped"},{"time":0.7333,"angle":4.76},{"time":1,"angle":5.2},{"time":1.0667,"angle":-4.36},{"time":1.3667,"angle":-3.93,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":5.74}]},"bone42":{"rotate":[{"angle":5.11},{"time":0.0333,"angle":5.55,"curve":"stepped"},{"time":0.0667,"angle":6.98},{"time":0.2,"angle":12.71},{"time":0.2333,"angle":7.57},{"time":0.2667,"angle":4.6},{"time":0.6667,"angle":5.6},{"time":0.7,"angle":1.43,"curve":"stepped"},{"time":0.7333,"angle":4.39},{"time":1,"angle":-6.92},{"time":1.0667,"angle":7.44},{"time":1.3667,"angle":7.87,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":9.38}]},"bone43":{"rotate":[{"angle":2.81},{"time":0.0333,"angle":3.62,"curve":"stepped"},{"time":0.0667,"angle":29.24},{"time":0.2,"angle":7.71},{"time":0.2333,"angle":6.27},{"time":0.2667,"angle":1.7},{"time":0.6667,"angle":2.7},{"time":0.7,"angle":-0.55,"curve":"stepped"},{"time":0.7333,"angle":7.22},{"time":1,"angle":6.31},{"time":1.0667,"angle":5.03},{"time":1.3667,"angle":5.47,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":6.62}]},"bone45":{"rotate":[{"angle":6.95},{"time":0.0333,"angle":7.08,"curve":"stepped"},{"time":0.0667,"angle":14.23},{"time":0.2},{"time":0.2333,"angle":1.19},{"time":0.2667,"angle":-3.38},{"time":0.6667,"angle":-2.38},{"time":0.7,"angle":-3.14,"curve":"stepped"},{"time":0.7333,"angle":3.74},{"time":1,"angle":5.5},{"time":1.0667,"angle":-0.04},{"time":1.3667,"angle":0.39,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":6.62}]},"bone47":{"rotate":[{"angle":10.8},{"time":0.0333,"angle":10.29,"curve":"stepped"},{"time":0.0667,"angle":33.28},{"time":0.2,"angle":7.06},{"time":0.2333,"angle":-1.73},{"time":0.2667,"angle":-6.3},{"time":0.6667,"angle":-5.3},{"time":0.7,"angle":-4.05,"curve":"stepped"},{"time":0.7333,"angle":6.51},{"time":1,"angle":-4.81},{"time":1.0667,"angle":-4.6},{"time":1.3667,"angle":-4.16,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":8.24}]},"bone48":{"rotate":[{"angle":7.15},{"time":0.0333,"angle":7.24,"curve":"stepped"},{"time":0.0667,"angle":15.72},{"time":0.2,"angle":6.67},{"time":0.2333,"angle":5.34},{"time":0.2667,"angle":0.77},{"time":0.6667,"angle":1.77},{"time":0.7,"angle":-0.85,"curve":"stepped"},{"time":0.7333,"angle":17.59},{"time":1,"angle":10.41},{"time":1.0667,"angle":4.1},{"time":1.3667,"angle":4.54,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":7.8}]},"bone54":{"rotate":[{"angle":-0.51},{"time":0.0333,"angle":0.86,"curve":"stepped"},{"time":0.0667,"angle":0.69},{"time":0.2},{"time":0.2333,"angle":-2.64},{"time":0.2667,"angle":-1.54},{"time":0.6667,"angle":-0.54},{"time":0.7,"angle":-5.63,"curve":"stepped"},{"time":0.7333,"angle":6.88},{"time":1,"angle":6.23},{"time":1.0667,"angle":1.8},{"time":1.3667,"angle":2.23,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":-0.05}]},"bone55":{"rotate":[{"angle":-8.16},{"time":0.0333,"angle":-5.52,"curve":"stepped"},{"time":0.0667,"angle":-6.13},{"time":0.2,"angle":-8.57},{"time":0.2333,"angle":-8.6},{"time":0.2667,"angle":-10.51},{"time":0.6667,"angle":-9.51},{"time":0.7,"angle":-12.72,"curve":"stepped"},{"time":0.7333,"angle":0.94},{"time":1,"angle":-0.62},{"time":1.0667,"angle":-7.18},{"time":1.3667,"angle":-6.74,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":-4.74}]},"bone36":{"rotate":[{"angle":8.88},{"time":0.0333,"angle":8.68,"curve":"stepped"},{"time":0.0667,"angle":19.54},{"time":0.2,"angle":32.5},{"time":0.2333,"angle":9.13},{"time":0.2667,"angle":7.69},{"time":0.6667,"angle":8.69},{"time":0.7,"angle":4.6,"curve":"stepped"},{"time":0.7333,"angle":4.62},{"time":1,"angle":5.05},{"time":1.0667,"angle":11.03},{"time":1.3667,"angle":11.46,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":17.18}]},"bone44":{"rotate":[{"angle":5.48},{"time":0.0333,"angle":5.85,"curve":"stepped"},{"time":0.0667,"angle":9.74},{"time":0.2,"angle":6.93},{"time":0.2333,"angle":1.78},{"time":0.2667,"angle":5.75},{"time":0.6667,"angle":6.75},{"time":0.7,"angle":-0.84,"curve":"stepped"},{"time":0.7333,"angle":5.43},{"time":1,"angle":-2.67},{"time":1.0667,"angle":2.09},{"time":1.3667,"angle":2.52,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":2.59}]},"bone50":{"rotate":[{"angle":5.92},{"time":0.0333,"angle":6.22,"curve":"stepped"},{"time":0.0667,"angle":5.61},{"time":0.2,"angle":3.16},{"time":0.2333,"angle":-0.47},{"time":0.2667,"angle":-5.04},{"time":0.6667,"angle":-4.04},{"time":0.7,"angle":-4.67,"curve":"stepped"},{"time":0.7333,"angle":10.62},{"time":1,"angle":5.04},{"time":1.0667,"angle":1.82},{"time":1.3667,"angle":2.25,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":4.22}]},"bone53":{"rotate":[{"angle":-3.66},{"time":0.0333,"angle":-1.77,"curve":"stepped"},{"time":0.0667,"angle":-2.81},{"time":0.2,"angle":-6.97},{"time":0.2333,"angle":4.01},{"time":0.2667,"angle":2.36},{"time":0.6667,"angle":3.36},{"time":0.7,"angle":-4.55,"curve":"stepped"},{"time":0.7333,"angle":-0.58},{"time":1,"angle":-0.15},{"time":1.0667,"angle":-0.55},{"time":1.3667,"angle":-0.12,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":-1.55}]},"bone56":{"rotate":[{"angle":1.26},{"time":0.0333,"angle":2.33,"curve":"stepped"},{"time":0.0667,"angle":0.61},{"time":0.2,"angle":-6.29},{"time":0.2333,"angle":-3.87},{"time":0.2667,"angle":-11.25},{"time":0.6667,"angle":-10.25},{"time":0.7,"angle":-12.13,"curve":"stepped"},{"time":0.7333,"angle":1.22},{"time":1,"angle":4.28},{"time":1.0667,"angle":-7.91},{"time":1.3667,"angle":-7.48,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":-2.84}]},"bone41":{"rotate":[{"angle":-3.84},{"time":0.0333,"angle":-1.92,"curve":"stepped"},{"time":0.0667,"angle":2},{"time":0.2,"angle":17.69},{"time":0.2333,"angle":5.93},{"time":0.2667,"angle":3.49},{"time":0.6667,"angle":4.49},{"time":0.7,"angle":-0.94,"curve":"stepped"},{"time":0.7333,"angle":-1.17},{"time":1,"angle":-0.74},{"time":1.0667,"angle":6.82},{"time":1.3667,"angle":7.26,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":3.04}]},"bone52":{"rotate":[{"angle":3.13},{"time":0.0333,"angle":3.89,"curve":"stepped"},{"time":0.0667,"angle":2.18},{"time":0.2,"angle":-4.67},{"time":0.2333,"angle":-10.75},{"time":0.2667,"angle":-21.37},{"time":0.6667,"angle":-20.37},{"time":0.7,"angle":-16.02,"curve":"stepped"},{"time":0.7333,"angle":0.21},{"time":1,"angle":5.2},{"time":1.0667,"angle":-11.25},{"time":1.3667,"angle":-10.81,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":-1.01}]},"bone33":{"rotate":[{"angle":30.34},{"time":0.0333,"angle":26.56,"curve":"stepped"},{"time":0.0667,"angle":27.33},{"time":0.2,"angle":30.39},{"time":0.2333,"angle":16.36},{"time":0.2667,"angle":11.78},{"time":0.6667,"angle":12.79},{"time":0.7,"angle":12.15,"curve":"stepped"},{"time":0.7333,"angle":21.24},{"time":1,"angle":21.67},{"time":1.0667,"angle":15.12},{"time":1.3667,"angle":15.56,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":14.37}]},"bone34":{"rotate":[{"angle":23.31},{"time":0.0333,"angle":22.51,"curve":"stepped"},{"time":0.0667,"angle":24.89},{"time":0.2,"angle":34.38},{"time":0.2333,"angle":22.22},{"time":0.2667,"angle":17.65},{"time":0.6667,"angle":18.65},{"time":0.7,"angle":14.17,"curve":"stepped"},{"time":0.7333,"angle":22.01},{"time":1,"angle":22.44},{"time":1.0667,"angle":20.98},{"time":1.3667,"angle":21.42,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":22.44}]},"bone49":{"rotate":[{"angle":-0.66},{"time":0.0333,"angle":0.73,"curve":"stepped"},{"time":0.0667,"angle":0.58},{"time":0.2},{"time":0.2333,"angle":-5.08},{"time":0.2667,"angle":-9.65},{"time":0.6667,"angle":-8.65},{"time":0.7,"angle":-8.32,"curve":"stepped"},{"time":0.7333,"angle":8.88},{"time":1,"angle":-1.02},{"time":1.0667,"angle":-1.39},{"time":1.3667,"angle":-0.96,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":1.03}]},"bone51":{"rotate":[{"angle":-0.31},{"time":0.0333,"angle":1.03,"curve":"stepped"},{"time":0.0667,"angle":3.71},{"time":0.2},{"time":0.2333,"angle":1.8},{"time":0.2667,"angle":1.41},{"time":0.6667,"angle":2.41},{"time":0.7,"angle":-4.12,"curve":"stepped"},{"time":0.7333,"angle":5.59},{"time":1,"angle":13.93},{"time":1.0667,"angle":-1.86},{"time":1.3667,"angle":-1.42,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":-0.96}]},"bone59":{"rotate":[{"angle":-2.41},{"time":0.0333,"angle":-0.72,"curve":"stepped"},{"time":0.0667,"angle":-2.19},{"time":0.2,"angle":-8.06},{"time":0.2333,"angle":-2.67},{"time":0.2667,"angle":-3.72},{"time":0.6667,"angle":-2.72},{"time":0.7,"angle":-8.93,"curve":"stepped"},{"time":0.7333,"angle":-0.89},{"time":1,"angle":0.16},{"time":1.0667,"angle":-0.39},{"time":1.3667,"angle":0.05,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":-4.81}]},"bone40":{"rotate":[{"angle":6.51},{"time":0.0333,"angle":6.71,"curve":"stepped"},{"time":0.0667,"angle":27.54},{"time":0.2,"angle":18.33},{"time":0.2333,"angle":-1.91},{"time":0.2667,"angle":-6.48},{"time":0.6667,"angle":-5.48},{"time":0.7,"angle":-6.52,"curve":"stepped"},{"time":0.7333,"angle":0.97},{"time":1,"angle":1.41},{"time":1.0667,"angle":-3.14},{"time":1.3667,"angle":-2.71,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"angle":-1.88}]},"root":{"translate":[{"time":0.7},{"time":0.7333,"y":-7.14},{"time":0.8,"curve":"stepped"},{"time":1.0333},{"time":1.0667,"y":-7.14},{"time":1.1333,"curve":"stepped"},{"time":1.4},{"time":1.4333,"y":-7.14},{"time":1.5}]},"bone123":{"rotate":[{"angle":-8.7},{"time":0.0667,"angle":-8.22},{"time":0.2,"angle":-8.76},{"time":0.2333,"angle":-11.47},{"time":0.6667,"angle":-10.55,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":-2.76},{"time":1,"angle":-2.37},{"time":1.0667,"angle":-5.85},{"time":1.1,"angle":-10.59},{"time":1.1333,"angle":-0.98},{"time":1.1667,"angle":-4.36},{"time":1.3667,"angle":-5.47},{"time":1.4333,"angle":-5.85},{"time":1.5,"angle":-7.07}]},"bone124":{"rotate":[{"angle":-6.6},{"time":0.0667,"angle":-5.6},{"time":0.2,"angle":-6.14},{"time":0.2333,"angle":-5.1},{"time":0.6667,"angle":-4.18,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":3.6},{"time":1,"angle":3.99},{"time":1.0667,"angle":0.51},{"time":1.1,"angle":-16.74},{"time":1.1333,"angle":3.91},{"time":1.1667,"angle":6.86},{"time":1.3667,"angle":2.1},{"time":1.4333,"angle":0.51},{"time":1.5,"angle":-3.71}]},"bone125":{"rotate":[{"angle":-7.43},{"time":0.0667,"angle":-6.5},{"time":0.2,"angle":-7.04},{"time":0.2333,"angle":-10.04},{"time":0.6667,"angle":-9.12,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":-1.33},{"time":1,"angle":-0.95},{"time":1.0667,"angle":-4.42},{"time":1.1,"angle":-11.19},{"time":1.1667,"angle":-3.49},{"time":1.3667,"angle":-0.29},{"time":1.4333,"angle":0.77},{"time":1.5,"angle":-7.09}]},"bone127":{"rotate":[{"angle":-4.78},{"time":0.0667,"angle":-2.81},{"time":0.2,"angle":-3.35},{"time":0.2333,"angle":-9.92},{"time":0.6667,"angle":-9,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":-1.21},{"time":1,"angle":-0.82},{"time":1.0667,"angle":-4.3},{"time":1.1,"angle":-11.42},{"time":1.1667,"angle":-4.04},{"time":1.3667,"angle":-1.79},{"time":1.4333,"angle":-1.04},{"time":1.5,"angle":-8.23}]},"bone128":{"rotate":[{"angle":4.55},{"time":0.0667,"angle":6.29},{"time":0.2,"angle":5.75},{"time":0.2333,"angle":1.34},{"time":0.6667,"angle":2.26,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":10.05},{"time":1,"angle":10.44},{"time":1.0667,"angle":6.96},{"time":1.1,"angle":2.94},{"time":1.1667,"angle":9.7},{"time":1.3667,"angle":10.09},{"time":1.4333,"angle":10.22},{"time":1.5,"angle":5.25}]},"bone129":{"rotate":[{"angle":-2.18},{"time":0.0667,"angle":-0.76},{"time":0.2,"angle":-1.3},{"time":0.2333,"angle":-8.6},{"time":0.6667,"angle":-7.67,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":-2.84},{"time":1,"angle":-2.45},{"time":1.0667,"angle":-2.98},{"time":1.1,"angle":-6.99},{"time":1.1667,"angle":-0.23},{"time":1.3667,"angle":0.15},{"time":1.4333,"angle":0.28},{"time":1.5,"angle":-3.79}]},"bone130":{"rotate":[{"angle":2.52},{"time":0.0667,"angle":4.12},{"time":0.2,"angle":3.58},{"time":0.2333,"angle":-0.09},{"time":0.6667,"angle":0.84,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":5.67},{"time":1,"angle":6.06},{"time":1.0667,"angle":5.53},{"time":1.1,"angle":1.52},{"time":1.1667,"angle":8.28},{"time":1.3667,"angle":8.66},{"time":1.4333,"angle":8.79},{"time":1.5,"angle":4.76}]},"bone135":{"rotate":[{"angle":3.78},{"time":0.0667,"angle":7.11},{"time":0.2,"angle":6.57},{"time":0.2333,"angle":-1.93},{"time":0.6667,"angle":-1.01,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":19.35},{"time":1,"angle":6.18},{"time":1.0667,"angle":4.68},{"time":1.1,"angle":-2.08},{"time":1.1667,"angle":-1.88},{"time":1.3667,"angle":-1.28},{"time":1.4333,"angle":-1.08},{"time":1.5,"angle":0.18}]},"bone143":{"rotate":[{"angle":5.26},{"time":0.0667,"angle":10.9},{"time":0.2,"angle":10.36},{"time":0.2333,"angle":2.21},{"time":0.6667,"angle":3.14,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":-0.98},{"time":1,"angle":2.65},{"time":1.0667,"angle":7.35},{"time":1.1,"angle":6.25},{"time":1.1667,"angle":-2.38},{"time":1.3667,"angle":4.28},{"time":1.4333,"angle":1.59},{"time":1.5,"angle":2.8}]},"bone121":{"rotate":[{"angle":4.69},{"time":0.0667,"angle":5.52},{"time":0.2,"angle":4.98},{"time":0.2333,"angle":-4.25},{"time":0.6667,"angle":-3.33,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":4.46},{"time":1,"angle":4.85},{"time":1.0667,"angle":1.37},{"time":1.1,"angle":-6.08},{"time":1.1667,"angle":0.71},{"time":1.3667,"angle":1.2},{"time":1.4333,"angle":1.37},{"time":1.5,"angle":3.77}]},"bone126":{"rotate":[{"angle":-3.25},{"time":0.0667,"angle":-1.66},{"time":0.2,"angle":-2.2},{"time":0.2333,"angle":-4.96},{"time":0.6667,"angle":-4.03,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":3.75},{"time":1,"angle":4.14},{"time":1.0667,"angle":0.66},{"time":1.1,"angle":-6.26},{"time":1.1333,"angle":14.31},{"time":1.1667,"angle":9.79},{"time":1.3667,"angle":6.19},{"time":1.4333,"angle":4.99},{"time":1.5,"angle":-4.26}]},"bone132":{"rotate":[{"angle":3.97},{"time":0.0667,"angle":5.74},{"time":0.2,"angle":5.2},{"time":0.2333,"angle":0.05},{"time":0.6667,"angle":0.97,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":12.25},{"time":1,"angle":5.95},{"time":1.0667,"angle":5.42},{"time":1.1,"angle":1.41},{"time":1.1667,"angle":15.68},{"time":1.3667,"angle":10.43},{"time":1.4333,"angle":8.68},{"time":1.5,"angle":5.12}]},"bone133":{"rotate":[{"angle":-1.99},{"time":0.0667,"angle":0.16},{"time":0.2,"angle":-0.38},{"time":0.2333,"angle":-5.91},{"time":0.6667,"angle":-4.99,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":13.78},{"time":1,"angle":1.27},{"time":1.0667,"angle":3},{"time":1.1,"angle":-4.71},{"time":1.1667,"angle":-3.17},{"time":1.3667,"angle":1.46},{"time":1.4333,"angle":3},{"time":1.5,"angle":-1.3}]},"bone138":{"rotate":[{"angle":10.56},{"time":0.0667,"angle":13.99},{"time":0.2,"angle":13.45},{"time":0.2333,"angle":6.47},{"time":0.6667,"angle":7.4,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":8.27},{"time":1,"angle":11.91},{"time":1.0667,"angle":11.61},{"time":1.1,"angle":10.35},{"time":1.1667,"angle":9.45},{"time":1.3667,"angle":10.44},{"time":1.4333,"angle":5.85},{"time":1.5,"angle":10.82}]},"bone139":{"rotate":[{"angle":4.28},{"time":0.0667,"angle":8.15},{"time":0.2,"angle":7.61},{"time":0.2333,"angle":0.75},{"time":0.6667,"angle":1.67,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":3.63},{"time":1,"angle":7.26},{"time":1.0667,"angle":5.88},{"time":1.1,"angle":5.01},{"time":1.1667,"angle":-8.24},{"time":1.3667,"angle":1.72},{"time":1.4333,"angle":0.13},{"time":1.5,"angle":6.84}]},"bone140":{"rotate":[{"angle":0.91},{"time":0.0667,"angle":4.91},{"time":0.2,"angle":4.37},{"time":0.2333,"angle":-1.93},{"time":0.6667,"angle":-1.01,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":-0.43},{"time":1,"angle":3.2},{"time":1.0667,"angle":3.2},{"time":1.1,"angle":-2.94},{"time":1.1667,"angle":-0.11},{"time":1.3667,"angle":0.36},{"time":1.4333,"angle":-2.55},{"time":1.5,"angle":3.96}]},"bone145":{"rotate":[{"angle":8.24},{"time":0.0667,"angle":8.73},{"time":0.2,"angle":8.19},{"time":0.2333,"angle":4.07},{"time":0.6667,"angle":4.99,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":0.87},{"time":1,"angle":4.51},{"time":1.0667,"angle":9.2},{"time":1.1,"angle":5.43},{"time":1.1667,"angle":-0.53},{"time":1.3667,"angle":6.14},{"time":1.4333,"angle":3.44},{"time":1.5,"angle":8.43}]},"bone122":{"rotate":[{"angle":-6.87},{"time":0.0667,"angle":-6.03},{"time":0.2,"angle":-6.57},{"time":0.2333,"angle":-16.09},{"time":0.6667,"angle":-15.17,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":-7.38},{"time":1,"angle":-6.99},{"time":1.0667,"angle":-10.47},{"time":1.1,"angle":-27.76},{"time":1.1667,"angle":13.14},{"time":1.3667,"angle":-4.57},{"time":1.4333,"angle":-10.47},{"time":1.5,"angle":-9.86}]},"bone131":{"rotate":[{"angle":4.77},{"time":0.0667,"angle":6.71},{"time":0.2,"angle":6.17},{"time":0.2333,"angle":0.99},{"time":0.6667,"angle":1.91,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":6.75},{"time":1,"angle":7.13},{"time":1.0667,"angle":6.61},{"time":1.1,"angle":2.59},{"time":1.1667,"angle":9.35},{"time":1.3667,"angle":9.74},{"time":1.4333,"angle":9.87},{"time":1.5,"angle":6.11}]},"bone134":{"rotate":[{"angle":-2.59},{"time":0.0667,"angle":-1.53},{"time":0.2,"angle":-2.07},{"time":0.2333,"angle":-6.01},{"time":0.6667,"angle":-5.09,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":1.07},{"time":1,"angle":1.46},{"time":1.0667,"angle":0.59},{"time":1.1,"angle":2.28},{"time":1.1667,"angle":0.79},{"time":1.3667,"angle":-3.67},{"time":1.4333,"angle":-5.16},{"time":1.5,"angle":-2.88}]},"bone136":{"rotate":[{"angle":4.22},{"time":0.0667,"angle":7.38},{"time":0.2,"angle":6.84},{"time":0.2333,"angle":0.56},{"time":0.6667,"angle":1.48,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":12.7},{"time":1,"angle":8.67},{"time":1.0667,"angle":4.44},{"time":1.1,"angle":3.34},{"time":1.1667,"angle":2.41},{"time":1.3667,"angle":-0.38},{"time":1.4333,"angle":-1.32},{"time":1.5,"angle":1.9}]},"bone137":{"rotate":[{"angle":8.86},{"time":0.0667,"angle":12.63},{"time":0.2,"angle":12.09},{"time":0.2333,"angle":4.92},{"time":0.6667,"angle":5.84,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":10.75},{"time":1,"angle":14.38},{"time":1.0667,"angle":10.57},{"time":1.1,"angle":4.44},{"time":1.1667,"angle":7.02},{"time":1.3667,"angle":5.37},{"time":1.4333,"angle":4.82},{"time":1.5,"angle":7.42}]},"bone141":{"rotate":[{"angle":7.97},{"time":0.0667,"angle":12.69},{"time":0.2,"angle":12.15},{"time":0.2333,"angle":5.44},{"time":0.6667,"angle":6.36,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":6.94},{"time":1,"angle":10.57},{"time":1.0667,"angle":10.57},{"time":1.1,"angle":4.44},{"time":1.1667,"angle":6.9},{"time":1.3667,"angle":7.86},{"time":1.4333,"angle":4.82},{"time":1.5,"angle":8.83}]},"bone144":{"rotate":[{"angle":5.68},{"time":0.0667,"angle":6.09},{"time":0.2,"angle":5.55},{"time":0.2333,"angle":0.71},{"time":0.6667,"angle":1.63,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":-2.48},{"time":1,"angle":1.15},{"time":1.0667,"angle":5.84},{"time":1.1,"angle":2.08},{"time":1.1667,"angle":-3.88},{"time":1.3667,"angle":2.78},{"time":1.4333,"angle":0.09},{"time":1.5,"angle":4.88}]},"bone142":{"rotate":[{"angle":2.8},{"time":0.0667,"angle":7.72},{"time":0.2,"angle":7.18},{"time":0.2333,"angle":-0.1},{"time":0.6667,"angle":0.82,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"angle":-3.29},{"time":1,"angle":0.34},{"time":1.0667,"angle":5.03},{"time":1.1,"angle":3.94},{"time":1.1667,"angle":-4.69},{"time":1.3667,"angle":1.97},{"time":1.4333,"angle":-0.72},{"time":1.5,"angle":1.54}]},"bone161":{"rotate":[{"time":0.7333,"angle":5.4},{"time":1,"angle":2.01}]},"TX_SK2_shouji1":{"rotate":[{"time":0.7333,"angle":-48.3,"curve":"stepped"},{"time":0.9,"angle":-48.3,"curve":"stepped"},{"time":1.0667,"angle":-76.35}],"translate":[{"time":0.7333,"x":1516.43,"y":2351.54,"curve":"stepped"},{"time":1.0667,"x":1455.95,"y":2410.13}],"scale":[{"time":0.7333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8667,"x":1.418,"y":1.418,"curve":"stepped"},{"time":0.9,"x":1.418,"y":1.418,"curve":"stepped"},{"time":1.0667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":1.2,"x":1.418,"y":1.418}]}},"deform":{"default":{"zhonzi":{"zhonzi":[{"time":0.6667,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.7333,"vertices":[-8.16569,3.18882,0,0,0,0,0,0,0,0,-4.15273,-1.5257,-4.22664,-1.3071,-9.50872,0.08223,-9.49156,0.57803,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-3.0523,-3.39624,-3.22522,-3.23249,-3.51633,-0.32092,-3.52828,-0.13717,-2.83077,-0.73147,-2.86507,-0.58285,-4.26564,1.3846,-4.18766,1.60518,-4.77255,2.72795,-4.62388,2.97316,0,0,0,0,0,0,-7.00851,-0.78371,0,0,16.79518,3.57172,-6.47364,2.85634,4.06663,-0.42824,2.1471,-0.05996,2.14103,-0.1717,4.09205,-0.61328,4.0545,-0.82571,2.58239,-0.12325,2.57244,-0.25758,4.23209,-0.18205,4.21685,-0.40229,9.15288,-2.51906,9.00909,-2.99255,13.83488,-1.11066,13.7581,-1.83005,14.29667,-0.39522,14.25648,-1.13959,12.57996,1.28115,12.62959,0.62379,10.50873,-4.87413,10.24028,-5.41504,2.20081,0.78284,5.22855,0.53286,5.24918,0.25967,9.33327,1.64825,9.40646,1.15963,10.41968,1.65472,10.49172,1.10939,7.87498,5.80249,8.16667,5.38432,12.99648,3.28046,13.14977,2.59857,18.83191,0.0081,18.80665,-0.97353,22.35977,-2.13082,22.21822,-3.29329,22.71287,-7.71448,22.27979,-8.88768,6.1039,0.29215,12.91219,2.22636,7.71199,-0.93587,2.06023,0.42875]},{"time":1,"vertices":[-24.49706,9.56647,-7.1702,-3.65613,-7.35104,-3.27713,-8.42527,-7.52277,-8.80604,-7.07315,-20.40163,-7.98212,-20.79008,-6.90744,-39.04053,-3.17871,-39.15339,-1.13828,-20.35461,-1.72705,-20.41703,-0.6633,0,0,0,0,0,0,0,0,0,0,0,0,-9.15691,-10.18872,-9.67565,-9.69748,-10.54898,-0.96277,-10.58485,-0.4115,-8.49231,-2.1944,-8.59522,-1.74854,-12.79693,4.15381,-12.56299,4.81555,-14.31767,8.18384,-13.87163,8.91949,0,0,0,0,0,0,10.31245,19.00018,6.36781,7.08478,73.19482,-11.43555,-7.86089,-2.81158,19.84651,-1.22498,15.91584,0.81177,15.9364,-0.0184,12.27616,-1.83984,12.1635,-2.47714,14.72587,0.09558,14.71075,-0.67163,27.48782,-1.25146,27.38519,-2.68222,44.10326,-8.86414,43.58109,-11.15039,58.80523,-6.65497,58.37811,-9.71002,57.73536,-2.56451,57.52267,-5.56934,48.99622,5.54126,49.21825,2.98041,53.71626,-28.70795,52.14634,-31.46771,15.76625,3.94977,22.5495,3.94623,22.72437,2.76593,27.99982,4.94476,28.21939,3.47888,31.25904,4.96417,31.47516,3.32816,23.62494,17.40747,24.50001,16.15295,47.38621,11.41656,47.91668,8.93121,70.27404,2.71991,70.32004,-0.94678,86.07954,-9.69336,85.45693,-14.16647,86.06931,-27.53076,84.51691,-31.97888,31.76486,1.59357,54.12598,-5.43579,30.65728,-6.26636,11.07931,0.71277]},{"time":1.0667,"vertices":[-16.33139,6.37765,-3.58511,-1.82807,-3.67553,-1.63857,-4.21264,-3.76139,-4.40303,-3.53658,-12.27719,-4.75391,-12.50837,-4.10727,-24.27465,-1.54824,-24.3225,-0.28012,-10.17732,-0.86353,-10.20853,-0.33165,0,0,0,0,0,0,0,0,0,0,0,0,-6.10461,-6.79249,-6.45044,-6.46499,-7.03266,-0.64185,-7.05658,-0.27433,-5.66154,-1.46293,-5.73015,-1.16569,-8.53129,2.76921,-8.37533,3.21037,-9.54512,5.4559,-9.24776,5.94633,0,0,0,0,0,0,1.65199,9.10825,3.18391,3.5424,44.99505,-3.93193,-7.16726,0.02237,11.95659,-0.82661,9.03148,0.37591,9.03873,-0.09505,8.18411,-1.22656,8.109,-1.65143,8.65414,-0.01383,8.6416,-0.46461,15.85998,-0.71676,15.80104,-1.54226,26.62811,-5.69161,26.29512,-7.07148,36.32009,-3.88282,36.06814,-5.77004,36.01605,-1.47987,35.88961,-3.35447,30.78812,3.41121,30.92395,1.8021,32.11253,-16.79106,31.19335,-18.4414,8.98354,2.36631,13.88904,2.23955,13.98679,1.5128,18.66656,3.29651,18.81294,2.31926,20.83938,3.30945,20.98346,2.21877,15.74997,11.60499,16.33335,10.76865,30.19138,7.34852,30.53326,5.7649,44.55302,1.36401,44.56339,-0.96015,54.21971,-5.9121,53.83763,-8.72989,54.39114,-17.62264,53.39841,-20.4333,18.9344,0.94286,33.51912,-1.60472,19.18466,-3.60112,6.56978,0.57076]},{"time":1.3667}]},"TX/cao3":{"TX/cao":[{"time":0.0667,"vertices":[25.76488,-101.37231,63.65108,14.40612,-119.11773,78.5097,-42.24907,51.72295,33.51094,12.13313,76.78302,14.92557,-40.66044,20.00766,-17.64038,9.02928,5.47098,-38.73222,12.37276,-29.30815,0.00026,-0.00009,11.44538,-7.38365,-50.06796,-93.1804]},{"time":0.1667,"vertices":[58.31169,-135.19354,64.38556,14.64811,-119.07018,78.52536,-45.98392,143.10733,33.65896,12.18188,76.892,14.96147,-40.786,19.96628,-30.2352,60.15012,22.50482,-20.38085,12.64263,-29.21924,-0.00842,-0.00296,11.94746,-7.21823,-27.09033,-104.54233]}]},"TX/cao4":{"TX/cao":[{"time":0.0667,"offset":4,"vertices":[-5.6156,-22.47272,0.00023,-0.00014,-17.41432,-6.76334,0.00024,0.00003,-50.9843,-28.49751]}]},"TX/z_bianzi2_bz_liuguang2":{"TX/z_bianzi2_bz_liuguang":[{"time":0.2667,"offset":2,"vertices":[-82.19189,-13.28217,-80.24164,-22.20816,-77.77466,-29.71582,-100.55554,-48.71667,-95.48383,-58.03082,0,0,-24.19397,-14.16846,-22.49585,-16.73416,-20.80798,-18.79163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-6.75311,-8.86304,-5.74133,-9.54962,-4.81012,-10.05096,-30.58643,-16.4549,-28.59924,-19.70724,-26.60199,-22.32996,-22.47418,-11.12598]}]},"tou":{"tou":[{"time":0.7333},{"time":1,"offset":36,"vertices":[-4.15837,1.37418,3.65787,2.40704,-0.28815,4.37354,-0.22822,-4.0593,-3.04099,2.69824,-5.16071,-1.24921,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5.69916,-10.58221]}]}}},"events":[{"time":0.7333,"name":"attack"},{"time":1.0667,"name":"attack"}]},"jifei":{"slots":{"TX/TX_yan1_1_hou6":{"attachment":[{"name":null}]},"TX/z_bianzi2_bz_liuguang":{"attachment":[{"name":null}]},"TX_cao_hou3":{"attachment":[{"name":null}]},"TX_feng2":{"attachment":[{"name":null}]},"TX/shuyefaguang5":{"attachment":[{"name":null}]},"TX/suduxian_su2":{"attachment":[{"name":null}]},"TX/shuyefaguang2":{"attachment":[{"name":null}]},"TX/xuanzhuan_hou":{"attachment":[{"name":null}]},"BZ/tou":{"attachment":[{"name":null}]},"TX/shuye":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie7":{"attachment":[{"name":null}]},"TX_BZ_cao_hou5":{"attachment":[{"name":null}]},"TX/chentu2":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian7":{"attachment":[{"name":null}]},"TX_guangxian2":{"attachment":[{"name":null}]},"TX/TX_yan1_4":{"attachment":[{"name":null}]},"TX_shouji3_4":{"attachment":[{"name":null}]},"TX/chentu1":{"attachment":[{"name":null}]},"BZ/z_bianzi5":{"attachment":[{"name":null}]},"zui":{"attachment":[{"name":"zui_pingshi"},{"time":0.0333,"name":"zui_shouji"}]},"TX/TX_yan1_7":{"attachment":[{"name":null}]},"TX/cao7":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian4":{"attachment":[{"name":null}]},"TX_cao_hou4":{"attachment":[{"name":null}]},"TX_huaban2":{"attachment":[{"name":null}]},"BZ/y_shou":{"attachment":[{"name":null}]},"TX/suduxian_su3":{"attachment":[{"name":null}]},"TX/shuye4":{"attachment":[{"name":null}]},"TX/cao4":{"attachment":[{"name":null}]},"BZ/y_bianzi_hou":{"attachment":[{"name":null}]},"TX_feng_quan2":{"attachment":[{"name":null}]},"BZ/z_bianzi4":{"attachment":[{"name":null}]},"TX_feng_quan_faguang1":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou3":{"attachment":[{"name":null}]},"TX/shuyefaguang7":{"attachment":[{"name":null}]},"TX/shuyefaguang8":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie9":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou5":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou4":{"attachment":[{"name":null}]},"TX/cao5":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie_quan":{"attachment":[{"name":null}]},"z_houtui":{"attachment":[{"name":"z_houtui"}]},"y_houtui":{"attachment":[{"name":"y_houtui"}]},"BZ/zhongzi":{"attachment":[{"name":null}]},"TX/TX_yan1_3":{"attachment":[{"name":null}]},"TX/cao2":{"attachment":[{"name":null}]},"TX/cao9":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou":{"attachment":[{"name":null}]},"BZ/z_bianzi2_bz_g":{"attachment":[{"name":null}]},"TX/TX_yan1_2":{"attachment":[{"name":null}]},"TX_SK2_liuguang_cu":{"attachment":[{"name":null}]},"TX_huaban1":{"attachment":[{"name":null}]},"TX/suduxian_mi_hou2":{"attachment":[{"name":null}]},"TX/suduxian_mi1":{"attachment":[{"name":null}]},"BZ/y_bianzi_hou2":{"attachment":[{"name":null}]},"BZ/shenti":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan3":{"attachment":[{"name":null}]},"TX/chentu3":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie5":{"attachment":[{"name":null}]},"TX_huaban3":{"attachment":[{"name":null}]},"TX_guangxian4":{"attachment":[{"name":null}]},"TX_feng_quan_faguang4":{"attachment":[{"name":null}]},"TX_feng3":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie_quan4":{"attachment":[{"name":null}]},"TX/cao1":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie12":{"attachment":[{"name":null}]},"TX/guangyun":{"attachment":[{"name":null}]},"TX_shouji3_2":{"attachment":[{"name":null}]},"TX_BZ_yan":{"attachment":[{"name":null}]},"BZ/y_bianzi_1_liuguang":{"attachment":[{"name":null}]},"BZ/z_bianzi6":{"attachment":[{"name":null}]},"TX/shuye5":{"attachment":[{"name":null}]},"TX/shuyefaguang4":{"attachment":[{"name":null}]},"TX/shuye7":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou4":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou2":{"attachment":[{"name":null}]},"TX_huaban1_sanluo2":{"attachment":[{"name":null}]},"y_qiantui":{"attachment":[{"name":"y_qiantui"}]},"TX/chentu_hou":{"attachment":[{"name":null}]},"tou":{"attachment":[{"name":"tou"}]},"BZ/z_bianzi_hou3_liuguang":{"attachment":[{"name":null}]},"TX/TX_yan1_5":{"attachment":[{"name":null}]},"ZZZZZ":{"attachment":[{"name":"ZZZZZ"}]},"TX/xuanzhuan":{"attachment":[{"name":null}]},"TX_feng_quan_faguang3":{"attachment":[{"name":null}]},"zhonzi":{"attachment":[{"name":"zhonzi"}]},"TX/TX_yan1_6":{"attachment":[{"name":null}]},"TX_guangxian3":{"attachment":[{"name":null}]},"TX/shuye9":{"attachment":[{"name":null}]},"TX_cao_hou2":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou2_liuguang":{"attachment":[{"name":null}]},"TX/shuye3":{"attachment":[{"name":null}]},"TX/TX_yan1_1":{"attachment":[{"name":null}]},"BZ/y_bianzi3":{"attachment":[{"name":null}]},"TX/shuye2":{"attachment":[{"name":null}]},"TX/huiji1":{"attachment":[{"name":null}]},"BZ/y_yanjing":{"attachment":[{"name":null}]},"TX/chentu4":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian2":{"attachment":[{"name":null}]},"TX_feng_quan3":{"attachment":[{"name":null}]},"TX/TX_yan1_8":{"attachment":[{"name":null}]},"TX_bao_hou":{"attachment":[{"name":null}]},"TX_guangquan3":{"attachment":[{"name":null}]},"y-yanjing":{"attachment":[{"name":"y_yanjing_pingshi"},{"time":0.0333,"name":"y-yanjing_shouji"}]},"TX_SK2_shouji_xian5":{"attachment":[{"name":null}]},"TX_feng4":{"attachment":[{"name":null}]},"TX_shouji3_1":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie_quan3":{"attachment":[{"name":null}]},"shenti":{"attachment":[{"name":"shenti"}]},"TX/shuyefaguang3":{"attachment":[{"name":null}]},"BZ/z_bianzi5_liuguang2":{"attachment":[{"name":null}]},"TX_cao_hou1":{"attachment":[{"name":null}]},"TX/cao8":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan4":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian1":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie10":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou2":{"attachment":[{"name":null}]},"TX/chentu5":{"attachment":[{"name":null}]},"yinying":{"attachment":[{"name":"yinying"}]},"TX/z_bianzi2_bz_liuguang2":{"attachment":[{"name":null}]},"TX/shuyefaguang6":{"attachment":[{"name":null}]},"TX_guangquan":{"attachment":[{"name":null}]},"TX_huarui":{"attachment":[{"name":null}]},"TX/shuyefaguang":{"attachment":[{"name":null}]},"TX_feng_quan_faguang2":{"attachment":[{"name":null}]},"TX_huaban1_sanluo":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie_quan2":{"attachment":[{"name":null}]},"TX/liuguang7_BZH":{"attachment":[{"name":null}]},"BZ/zuiba":{"attachment":[{"name":null}]},"TX/shuye8":{"attachment":[{"name":null}]},"TX_guangquan2":{"attachment":[{"name":null}]},"y-meimao":{"attachment":[{"name":"y_meimao_pingshi"},{"time":0.0333,"name":"y-meimao_shouji"}]},"TX_SK2_liuguang":{"attachment":[{"name":null}]},"TX/liuguang_mi":{"attachment":[{"name":null}]},"TX/chentu6":{"attachment":[{"name":null}]},"BZ/y_bian_hou2_liuguang":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou3":{"attachment":[{"name":null}]},"TX_huaban2_sanluo2":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie8":{"attachment":[{"name":null}]},"z-yanjing":{"attachment":[{"name":"z_yanjing_pingshi"},{"time":0.0333,"name":"z-yanjing_shouji"}]},"z_qiantui":{"attachment":[{"name":"z_qiantui"}]},"TX/suduxian_su4":{"attachment":[{"name":null}]},"TX_feng_quan4":{"attachment":[{"name":null}]},"BZ/y_bianzi2_bz_g":{"attachment":[{"name":null}]},"TX_bao1":{"attachment":[{"name":null}]},"TX/cao10":{"attachment":[{"name":null}]},"TX_xian3":{"attachment":[{"name":null}]},"TX_guangxian1":{"attachment":[{"name":null}]},"TX/suduxian_mi_hou1":{"attachment":[{"name":null}]},"BZ/z_bianzi2_bz_g2":{"attachment":[{"name":null}]},"TX_guangxian5":{"attachment":[{"name":null}]},"TX_feng1":{"attachment":[{"name":null}]},"TX_shouji3_3":{"attachment":[{"name":null}]},"hei":{"attachment":[{"name":null}]},"BZ/z_bianzi5_liuguang":{"attachment":[{"name":null}]},"hei2":{"attachment":[{"name":null}]},"BZ/y_bianzi2":{"attachment":[{"name":null}]},"TX/cao3":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie11":{"attachment":[{"name":null}]},"TX/shuye6":{"attachment":[{"name":null}]},"TX/shuyefaguang9":{"attachment":[{"name":null}]},"BZ/z_shou":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian3":{"attachment":[{"name":null}]},"TX/cao6":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie4":{"attachment":[{"name":null}]},"TX_guangquan4":{"attachment":[{"name":null}]},"TX/suduxian_mi2":{"attachment":[{"name":null}]},"ZZZZZZZZZZZ":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian6":{"attachment":[{"name":null}]},"TX/liuguang2":{"attachment":[{"name":null}]},"TX/suduxian_su1":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie2":{"attachment":[{"name":null}]},"BZ/y_bianzi1":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie6":{"attachment":[{"name":null}]},"TX_huabao":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou3_liuguang\n2":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian8":{"attachment":[{"name":null}]},"TX_feng_quan1":{"attachment":[{"name":null}]},"BZ/z_jiao":{"attachment":[{"name":null}]},"z-meimao":{"attachment":[{"name":"z_meimao_pingshi"},{"time":0.0333,"name":"z-meimao_shouji"}]},"TX_huaban2_sanluo":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie":{"attachment":[{"name":null}]},"TX/liuguang_mi2":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan2":{"attachment":[{"name":null}]},"TX_xian":{"attachment":[{"name":null}]},"BZ/z_yanjing":{"attachment":[{"name":null}]},"TX/guangyun2":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie3":{"attachment":[{"name":null}]},"TX_guangxian6":{"attachment":[{"name":null}]},"TX_guangquan5":{"attachment":[{"name":null}]}},"bones":{"y_yanjing":{"rotate":[{},{"time":0.0333,"angle":90,"curve":0.295,"c2":0.4,"c3":0.623,"c4":0.73},{"time":0.1333,"angle":270,"curve":0.228,"c2":0.73,"c3":0.537},{"time":0.2333,"curve":0.352,"c2":0.48,"c3":0.607,"c4":0.8},{"time":0.3333,"angle":90,"curve":0.295,"c2":0.4,"c3":0.623,"c4":0.73},{"time":0.4667,"angle":270,"curve":0.228,"c2":0.73,"c3":0.537},{"time":0.5,"curve":0.352,"c2":0.48,"c3":0.607,"c4":0.8},{"time":0.6333,"angle":90,"curve":0.295,"c2":0.4,"c3":0.623,"c4":0.73},{"time":0.7333,"angle":270,"curve":0.228,"c2":0.73,"c3":0.537},{"time":0.8}]},"z-yanjing":{"rotate":[{},{"time":0.0333,"angle":90,"curve":0.295,"c2":0.4,"c3":0.623,"c4":0.73},{"time":0.1333,"angle":270,"curve":0.228,"c2":0.73,"c3":0.537},{"time":0.2333,"curve":0.352,"c2":0.48,"c3":0.607,"c4":0.8},{"time":0.3333,"angle":90,"curve":0.295,"c2":0.4,"c3":0.623,"c4":0.73},{"time":0.4667,"angle":270,"curve":0.228,"c2":0.73,"c3":0.537},{"time":0.5,"curve":0.352,"c2":0.48,"c3":0.607,"c4":0.8},{"time":0.6333,"angle":90,"curve":0.295,"c2":0.4,"c3":0.623,"c4":0.73},{"time":0.7333,"angle":270,"curve":0.228,"c2":0.73,"c3":0.537},{"time":0.8}]},"zui":{"rotate":[{"time":0.0667,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5,"angle":0.91},{"time":0.8}],"translate":[{},{"time":0.0667,"x":0.22,"y":-6.58,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5,"x":9.04,"y":19.48},{"time":0.8}],"scale":[{},{"time":0.0667,"y":0.837,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5,"y":1.157},{"time":0.8}]},"z_qiantui":{"translate":[{"x":-2.15,"y":-2.31},{"time":0.0667}]},"bone12":{"rotate":[{},{"time":0.0667,"angle":-12.07,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5,"angle":5.89},{"time":0.8}],"translate":[{},{"time":0.0667,"x":36.36,"y":-16.22,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5,"x":-18.91,"y":16.75},{"time":0.8}],"scale":[{},{"time":0.0667,"x":0.793,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5}]},"shenti":{"rotate":[{"angle":0.3},{"time":0.0667}],"translate":[{"x":0.01,"y":-6.35},{"time":0.0667,"y":-16.52,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5,"y":5.24},{"time":0.8}]},"tou":{"rotate":[{},{"time":0.0667,"angle":-3.12,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5}],"translate":[{},{"time":0.0667,"x":-3.92,"y":-7.71,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5}],"scale":[{},{"time":0.0667,"x":1.018,"y":0.949,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5}]},"bone14":{"scale":[{},{"time":0.0667,"x":1.142,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5,"x":1.123,"y":1.04},{"time":0.8}]},"y_yan":{"rotate":[{"time":0.0667,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5,"angle":6.37},{"time":0.8}],"translate":[{},{"time":0.0667,"x":6.96,"y":-14.79,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5,"x":1.61,"y":8.76},{"time":0.8}],"scale":[{},{"time":0.0667,"y":0.877,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5,"y":1.08},{"time":0.8}]},"bone11":{"rotate":[{},{"time":0.0667,"angle":23.33,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5,"angle":-5.24},{"time":0.8}],"translate":[{},{"time":0.0667,"x":-23.24,"y":-44.63,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5,"x":9.94,"y":21.76},{"time":0.8}]},"bone2":{"rotate":[{},{"time":0.0667,"angle":2.68,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5,"angle":6.09},{"time":0.8}]},"bone13":{"rotate":[{},{"time":0.0667,"angle":0.47,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5}],"translate":[{},{"time":0.0667,"x":-2.24,"y":-15.61,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5,"x":-7.06,"y":35.01},{"time":0.8}],"scale":[{},{"time":0.0667,"x":1.084,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5}]},"bone":{"rotate":[{},{"time":0.0667,"angle":-7.2,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5}]},"bone4":{"rotate":[{},{"time":0.0667,"angle":-2.65,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5}]},"zhonzi":{"scale":[{},{"time":0.0667,"y":0.729,"curve":0.233,"c2":0.79,"c3":0.327},{"time":0.2667,"x":0.757,"y":1.202},{"time":0.5333,"y":0.729,"curve":0.233,"c2":0.79,"c3":0.327},{"time":0.8}]},"z_yan":{"rotate":[{"time":0.0667,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5,"angle":3.53},{"time":0.8}],"translate":[{},{"time":0.0667,"x":2.03,"y":-7.56,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5,"x":1.65,"y":11.68},{"time":0.8}],"scale":[{},{"time":0.0667,"y":0.903,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5}]},"bone3":{"rotate":[{},{"time":0.0667,"angle":-9.21,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.5,"angle":2.02},{"time":0.8}]},"yinying":{"scale":[{},{"time":0.0667,"x":1.263},{"time":0.5,"x":1.014},{"time":0.8}]}},"deform":{"default":{"tou":{"tou":[{},{"time":0.0667,"offset":36,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99,"vertices":[3.50093,-0.29526,-2.62177,-2.50435,1.2348,-3.52388,3.59446,-8.61078,-8.28558,3.17757,-5.9043,-7.25858,0.68729,-5.74762,-4.34625,3.44562,-5.48315,-3.44296,-3.78271,-0.24918,2.44913,3.09927,-2.57837,3.41906,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.73352,9.49203,25.23109,3.19971,6.20042,5.58109,8.02446,-4.40079,6.43906,-1.68109]},{"time":0.5,"offset":36,"vertices":[-8.33621,1.8092,5.88062,6.17969,-0.44415,8.51849,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-5.73187,7.62302,-7.44542,5.14081,-1.56384,6.71823,-4.84084,10.9545]},{"time":0.8}]}}}},"skill1":{"slots":{"TX/TX_yan1_1_hou6":{"attachment":[{"name":null}]},"TX_huaban2":{"attachment":[{"name":null}]},"TX_cao_hou3":{"attachment":[{"name":null}]},"TX_feng2":{"color":[{"time":0.2,"color":"ffffffff"},{"time":0.2667,"color":"ffffffa0"}],"attachment":[{"name":null},{"time":0.1667,"name":"TX/TX_S1_shua_0012"},{"time":0.2,"name":"TX/TX_S1_shua_0014"},{"time":0.2667,"name":"TX/TX_S1_shua_0016"},{"time":0.3,"name":null}]},"TX_feng_quan_faguang1":{"attachment":[{"name":null}]},"TX/suduxian_su2":{"attachment":[{"name":null}]},"TX/shuyefaguang2":{"color":[{"time":0.0333,"color":"ffffff00","curve":"stepped"},{"time":0.3333,"color":"ffffff00"},{"time":0.9667,"color":"ffffffff","curve":"stepped"},{"time":1.5333,"color":"ffffffff"},{"time":1.9333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.0333,"name":"TX/shuyefaguang"}]},"BZ/z_bianzi5":{"attachment":[{"name":null}]},"TX/xuanzhuan_hou":{"attachment":[{"name":null}]},"BZ/tou":{"attachment":[{"name":null},{"time":1,"name":"BZ/tou_bz"},{"time":1.5333,"name":null}]},"TX_huabao":{"attachment":[{"name":null}]},"TX/shuyefaguang4":{"color":[{"time":1.4333,"color":"ffffffff"},{"time":1.8333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.4667,"name":"TX/shuyefaguang"}]},"TX_BZ_cao_hou5":{"attachment":[{"name":null}]},"TX/z_bianzi2_bz_liuguang2":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian7":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou":{"attachment":[{"name":null}]},"TX/cao4":{"color":[{"time":0.2667,"color":"ffffffff"},{"time":0.6667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.2667,"name":"TX/cao"}]},"TX/cao2":{"color":[{"time":0.0333,"color":"ffffffff"},{"time":0.3667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.0333,"name":"TX/cao"}]},"TX_xian3":{"attachment":[{"name":null}]},"TX/chentu3":{"attachment":[{"name":null},{"time":1.1,"name":"TX/chentu1"},{"time":1.1333,"name":"TX/chentu3"},{"time":1.1667,"name":"TX/chentu4"},{"time":1.2,"name":"TX/chentu5"},{"time":1.2333,"name":null}]},"TX/cao7":{"attachment":[{"name":null}]},"TX/cao10":{"attachment":[{"name":null}]},"TX_cao_hou2":{"attachment":[{"name":null}]},"zui":{"attachment":[{"name":"zui_pingshi"},{"time":0.0333,"name":"zui_gongji"},{"time":1,"name":null},{"time":1.5333,"name":"zui_pingshi"}]},"TX_SK2_shouji_quan3":{"attachment":[{"name":null}]},"TX/suduxian_su3":{"attachment":[{"name":null}]},"TX/shuye4":{"color":[{"time":0.4667,"color":"878787ff","curve":"stepped"},{"time":1.4333,"color":"878787ff"},{"time":1.8333,"color":"87878700"}],"attachment":[{"name":null},{"time":0.4667,"name":"TX/shuye"}]},"TX/shuye":{"color":[{"time":1.3333,"color":"ffffffff"},{"time":1.8333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.0333,"name":"TX/shuye"}]},"BZ/y_bianzi_hou":{"attachment":[{"name":null}]},"BZ/z_bianzi4":{"attachment":[{"name":null}]},"BZ/y_shou":{"attachment":[{"name":null},{"time":1,"name":"BZ/y_shou_bz"},{"time":1.5333,"name":null}]},"TX/z_bianzi2_bz_liuguang":{"attachment":[{"name":null}]},"TX_huaban1":{"attachment":[{"name":null}]},"TX/shuyefaguang7":{"attachment":[{"name":null}]},"TX/liuguang_mi2":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie9":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou5":{"attachment":[{"name":null}]},"z-meimao":{"attachment":[{"name":"z_meimao_pingshi"},{"time":0.0333,"name":"z_meimao_gongji"},{"time":1,"name":null},{"time":1.5333,"name":"z_meimao_pingshi"},{"time":1.6667,"name":"z-meimao_shengli"},{"time":1.7333,"name":"z_meimao_gongji"}]},"TX/cao5":{"attachment":[{"name":null}]},"TX/cao6":{"attachment":[{"name":null}]},"TX_shouji3_4":{"attachment":[{"name":null},{"time":1.2333,"name":"TX/atk_guangci3_0025"},{"time":1.2667,"name":"TX/atk_guangci3_0027"},{"time":1.3,"name":"TX/atk_guangci3_0028"},{"time":1.3333,"name":"TX/atk_guangci3_0030"},{"time":1.3667,"name":"TX/atk_guangci3_0031"},{"time":1.4,"name":null}]},"y_houtui":{"attachment":[{"name":"y_houtui"},{"time":1,"name":null},{"time":1.5333,"name":"y_houtui"}]},"BZ/zhongzi":{"attachment":[{"name":null},{"time":1,"name":"BZ/zhongzi_bz"},{"time":1.5333,"name":null}]},"TX/TX_yan1_8":{"attachment":[{"name":null}]},"TX/cao9":{"attachment":[{"name":null}]},"BZ/z_bianzi2_bz_g":{"attachment":[{"name":null}]},"TX/TX_yan1_2":{"color":[{"time":0.1,"color":"ffffffff"},{"time":1.1667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.1,"name":"TX/TX_S1_yan_0029"}]},"TX_bao_hou":{"attachment":[{"name":null}]},"TX/chentu6":{"color":[{"time":1.2667,"color":"ffffffff"},{"time":1.4333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":1.1667,"name":"TX/chentu1"},{"time":1.2,"name":"TX/chentu3"},{"time":1.2333,"name":"TX/chentu4"},{"time":1.2667,"name":"TX/chentu5"},{"time":1.4333,"name":null}]},"TX/suduxian_mi_hou2":{"attachment":[{"name":null}]},"TX/suduxian_mi1":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie_quan4":{"attachment":[{"name":null}]},"TX/chentu1":{"color":[{"time":1.1667,"color":"ffffffff"},{"time":1.4667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":1.0333,"name":"TX/chentu1"},{"time":1.1,"name":"TX/chentu3"},{"time":1.1333,"name":"TX/chentu4"},{"time":1.1667,"name":"TX/chentu5"},{"time":1.4667,"name":null}]},"BZ/y_bianzi_hou2":{"attachment":[{"name":null}]},"BZ/shenti":{"attachment":[{"name":null},{"time":1,"name":"BZ/shenti_bz"},{"time":1.5333,"name":null}]},"TX_SK2_shouji_lie5":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian6":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie_quan2":{"attachment":[{"name":null}]},"yinying":{"attachment":[{"name":"yinying"}]},"TX_feng3":{"color":[{"time":0.1667,"color":"ffffffff","curve":0.587,"c2":0.18,"c3":0.684,"c4":0.42},{"time":0.4,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.1667,"name":"TX/TX_S1_shua_0010"},{"time":0.2,"name":"TX/TX_S1_shua_0014"},{"time":0.3,"name":"TX/TX_S1_shua_0016"},{"time":0.3333,"name":"TX/TX_S1_shua_0018"},{"time":0.4,"name":null}]},"TX_SK2_shouji_lie3":{"attachment":[{"name":null}]},"TX/cao1":{"color":[{"time":0.0333,"color":"ffffffff"},{"time":0.4667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.0333,"name":"TX/cao"}]},"TX_SK2_shouji_xian4":{"attachment":[{"name":null}]},"TX/guangyun":{"color":[{"time":1.0333,"color":"ffc795ff"},{"time":1.2333,"color":"ff060000","curve":"stepped"},{"time":1.2667,"color":"ffc795ff"},{"time":1.4667,"color":"ff060000"}],"attachment":[{"name":null},{"time":1.0333,"name":"TX/guangyun"},{"time":1.2667,"name":"TX/guangyun"}]},"TX_BZ_yan":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie12":{"attachment":[{"name":null}]},"BZ/z_bianzi6":{"attachment":[{"name":null}]},"TX/shuye5":{"color":[{"time":1.6667,"color":"ffffffff"},{"time":2,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.0333,"name":"TX/shuye"}]},"TX/TX_yan1_1_hou3":{"attachment":[{"name":null}]},"BZ/z_bianzi2_bz_g2":{"attachment":[{"name":null}]},"TX_huaban3":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou4":{"attachment":[{"name":null}]},"TX_huaban1_sanluo2":{"attachment":[{"name":null}]},"TX_feng_quan_faguang4":{"attachment":[{"name":null}]},"TX/chentu_hou":{"attachment":[{"name":null}]},"TX_shouji3_2":{"attachment":[{"name":null},{"time":1.1,"name":"TX/atk_guangci3_0025"},{"time":1.1333,"name":"TX/atk_guangci3_0027"},{"time":1.1667,"name":"TX/atk_guangci3_0030"},{"time":1.2,"name":"TX/atk_guangci3_0031"},{"time":1.2333,"name":null}]},"TX_guangxian5":{"attachment":[{"name":null},{"time":1.1333,"name":"TX/daoguang_red"}]},"TX_SK2_shouji_xian1":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian2":{"attachment":[{"name":null}]},"TX/xuanzhuan":{"attachment":[{"name":null}]},"TX_feng4":{"color":[{"time":0.3,"color":"ffffffff","curve":0.587,"c2":0.18,"c3":0.684,"c4":0.42},{"time":0.6667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.3,"name":"TX/TX_S1_shua_0012"},{"time":0.4333,"name":"TX/TX_S1_shua_0014"}]},"TX_SK2_shouji_lie_quan":{"color":[{"time":1.1333,"color":"ffffffff"},{"time":1.3,"color":"ffffff00"}],"attachment":[{"name":null},{"time":1.1333,"name":"TX/shuangcdr_00010002"}]},"zhonzi":{"attachment":[{"name":"zhonzi"},{"time":1,"name":null},{"time":1.5333,"name":"zhonzi"}]},"TX/TX_yan1_6":{"attachment":[{"name":null}]},"TX/shuyefaguang8":{"attachment":[{"name":null}]},"TX/shuye9":{"attachment":[{"name":null}]},"TX_guangxian4":{"attachment":[{"name":null},{"time":1.0667,"name":"TX/daoguang_red"}]},"TX_cao_hou4":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou2":{"attachment":[{"name":null}]},"TX/shuye3":{"color":[{"time":1.5333,"color":"ffffffff"},{"time":1.9,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.0333,"name":"TX/shuye"}]},"TX/TX_yan1_1":{"color":[{"time":0.0333,"color":"dbd5d6ff","curve":0.587,"c2":0.18,"c3":0.684,"c4":0.42},{"time":1.1667,"color":"dbd5d600"}],"attachment":[{"name":null},{"time":0.0333,"name":"TX/TX_S1_yan_26"},{"time":1.1333,"name":"TX/TX_S1_yan_0029"}]},"TX/shuye7":{"attachment":[{"name":null}]},"BZ/y_bianzi3":{"attachment":[{"name":null}]},"TX/shuye2":{"color":[{"time":1.5333,"color":"ffffffff"},{"time":1.9333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.0333,"name":"TX/shuye"}]},"y-meimao":{"attachment":[{"name":"y_meimao_pingshi"},{"time":0.0333,"name":"y_meimao_gongji"},{"time":1,"name":null},{"time":1.5333,"name":"y_meimao_pingshi"},{"time":1.7,"name":"y_meimao_shengli"},{"time":1.7333,"name":"y_meimao_pingshi"}]},"TX/huiji1":{"attachment":[{"name":null}]},"TX_guangquan5":{"color":[{"time":1.2333,"color":"ffffffff"},{"time":1.4667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":1.2333,"name":"TX/Energy 007 Impact Radial_00008"},{"time":1.2667,"name":"TX/Energy 007 Impact Radial_00010"},{"time":1.3333,"name":"TX/Energy 007 Impact Radial_00012"},{"time":1.4,"name":"TX/Energy 007 Impact Radial_00015"}]},"TX_huarui":{"attachment":[{"name":null}]},"TX_feng_quan3":{"attachment":[{"name":null}]},"TX_guangxian3":{"attachment":[{"name":null},{"time":1.0667,"name":"TX/daoguang_red"}]},"TX/guangyun2":{"color":[{"time":1.1,"color":"ffc795ff"},{"time":1.3,"color":"ff060000"}],"attachment":[{"name":null},{"time":1.1,"name":"TX/guangyun"}]},"ZZZZZ":{"attachment":[{"name":"ZZZZZ"}]},"y-yanjing":{"attachment":[{"name":"y_yanjing_pingshi"},{"time":0.0333,"name":"y_yanjing_gongji"},{"time":1,"name":null},{"time":1.5333,"name":"y_yanjing_pingshi"},{"time":1.6667,"name":"y_yan_shengli"},{"time":1.7333,"name":"y_yanjing_pingshi"}]},"TX_SK2_shouji_xian5":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie2":{"attachment":[{"name":null}]},"TX_shouji3_1":{"attachment":[{"name":null},{"time":1.0333,"name":"TX/atk_guangci3_0025"},{"time":1.0667,"name":"TX/atk_guangci3_0027"},{"time":1.1,"name":"TX/atk_guangci3_0028"},{"time":1.1333,"name":"TX/atk_guangci3_0030"},{"time":1.1667,"name":"TX/atk_guangci3_0031"},{"time":1.2,"name":null}]},"TX_SK2_shouji_lie_quan3":{"attachment":[{"name":null}]},"shenti":{"attachment":[{"name":"shenti"},{"time":1,"name":null},{"time":1.5333,"name":"shenti"}]},"TX/shuyefaguang3":{"color":[{"time":0.0333,"color":"ffffff00","curve":"stepped"},{"time":0.4667,"color":"ffffff00"},{"time":0.9667,"color":"ffffffff","curve":"stepped"},{"time":1.5333,"color":"ffffffff"},{"time":1.9,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.0333,"name":"TX/shuyefaguang"}]},"y_qiantui":{"attachment":[{"name":"y_qiantui"},{"time":1,"name":null},{"time":1.5333,"name":"y_qiantui"}]},"BZ/z_yanjing":{"attachment":[{"name":null},{"time":1,"name":"BZ/z_yanjing_bz"},{"time":1.5333,"name":null}]},"BZ/z_bianzi_hou3_liuguang":{"attachment":[{"name":null}]},"TX_cao_hou1":{"color":[{"time":0.0333,"color":"ffffffff"},{"time":0.6,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.0333,"name":"TX/cao"}]},"TX/cao8":{"attachment":[{"name":null}]},"TX/chentu2":{"color":[{"time":1.0333,"color":"b89c90ff","curve":"stepped"},{"time":1.1667,"color":"b89c90ff"},{"time":1.4667,"color":"b89c9000"}],"attachment":[{"name":null},{"time":1.0333,"name":"TX/chentu1"},{"time":1.1,"name":"TX/chentu3"},{"time":1.1333,"name":"TX/chentu4"},{"time":1.1667,"name":"TX/chentu5"}]},"TX/liuguang7_BZH":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou":{"color":[{"time":0.0333,"color":"c9b8b5ff"},{"time":0.8667,"color":"c9b8b500","curve":"stepped"},{"time":1.1667,"color":"a68983ff"},{"time":2,"color":"a6898300"}],"attachment":[{"name":null},{"time":0.0333,"name":"TX/TX_S1_yan_0029"},{"time":1.4,"name":"TX/TX_S1_yan_27"}]},"TX_SK2_shouji_lie10":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou2":{"attachment":[{"name":null}]},"TX/chentu5":{"color":[{"time":1.2667,"color":"ffffffff"},{"time":1.4667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":1.1667,"name":"TX/chentu1"},{"time":1.2,"name":"TX/chentu3"},{"time":1.2333,"name":"TX/chentu4"},{"time":1.2667,"name":"TX/chentu5"},{"time":1.4667,"name":null}]},"TX/TX_yan1_5":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie7":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou2_liuguang":{"attachment":[{"name":null}]},"TX_guangquan":{"color":[{"time":1.0333,"color":"ffffffff"},{"time":1.2333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":1.0333,"name":"TX/Energy 007 Impact Radial_00008"},{"time":1.0667,"name":"TX/Energy 007 Impact Radial_00010"},{"time":1.1,"name":"TX/Energy 007 Impact Radial_00012"},{"time":1.1667,"name":"TX/Energy 007 Impact Radial_00015"}]},"TX_guangquan3":{"color":[{"time":1.1,"color":"ffffffff","curve":0.587,"c2":0.18,"c3":0.684,"c4":0.42},{"time":1.3333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":1.1,"name":"TX/Energy 007 Impact Radial_00008"},{"time":1.1333,"name":"TX/Energy 007 Impact Radial_00010"},{"time":1.2,"name":"TX/Energy 007 Impact Radial_00012"},{"time":1.2667,"name":"TX/Energy 007 Impact Radial_00015"}]},"TX/shuyefaguang":{"color":[{"time":0.0333,"color":"ffffff00","curve":"stepped"},{"time":0.5333,"color":"ffffff00"},{"time":0.9667,"color":"e6ff91ff","curve":"stepped"},{"time":1.3333,"color":"e6ff91ff"},{"time":1.8333,"color":"e6ff9100"}],"attachment":[{"name":null},{"time":0.0333,"name":"TX/shuyefaguang"}]},"TX_feng_quan_faguang2":{"attachment":[{"name":null}]},"TX/shuyefaguang5":{"color":[{"time":0.0333,"color":"ffffff00","curve":"stepped"},{"time":0.1333,"color":"ffffff00"},{"time":0.9667,"color":"ffffffff","curve":"stepped"},{"time":1.6667,"color":"ffffffff"},{"time":2,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.0333,"name":"TX/shuyefaguang"}]},"TX_feng1":{"attachment":[{"name":null},{"time":0.0333,"name":"TX/TX_S1_shua_0010"},{"time":0.0667,"name":"TX/TX_S1_shua_0012"},{"time":0.1,"name":"TX/TX_S1_shua_0014"},{"time":0.2,"name":"TX/TX_S1_shua_0016"},{"time":0.2333,"name":"TX/TX_S1_shua_0018"},{"time":0.3,"name":null}]},"TX/suduxian_mi2":{"attachment":[{"name":null}]},"BZ/zuiba":{"attachment":[{"name":null},{"time":1,"name":"BZ/zuiba_bz"},{"time":1.5333,"name":null}]},"TX/shuye8":{"attachment":[{"name":null}]},"TX_guangquan2":{"color":[{"time":1.0667,"color":"ffffffff","curve":0.587,"c2":0.18,"c3":0.684,"c4":0.42},{"time":1.3,"color":"ffffff00"}],"attachment":[{"name":null},{"time":1.0667,"name":"TX/Energy 007 Impact Radial_00008"},{"time":1.1,"name":"TX/Energy 007 Impact Radial_00010"},{"time":1.1667,"name":"TX/Energy 007 Impact Radial_00012"},{"time":1.2333,"name":"TX/Energy 007 Impact Radial_00015"}]},"TX/TX_yan1_7":{"attachment":[{"name":null}]},"TX_SK2_liuguang":{"attachment":[{"name":null}]},"TX/liuguang_mi":{"attachment":[{"name":null}]},"TX_feng_quan_faguang3":{"attachment":[{"name":null}]},"BZ/y_bian_hou2_liuguang":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou3":{"attachment":[{"name":null}]},"TX_huaban2_sanluo2":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie8":{"attachment":[{"name":null}]},"z-yanjing":{"attachment":[{"name":"z_yanjing_pingshi"},{"time":0.0333,"name":"z_yanjing_gongji"},{"time":1,"name":null},{"time":1.5333,"name":"z_yanjing_pingshi"},{"time":1.6667,"name":"z_yan_shengli"},{"time":1.7333,"name":"z_yanjing_pingshi"}]},"z_qiantui":{"attachment":[{"name":"z_qiantui"},{"time":1,"name":null},{"time":1.5333,"name":"z_qiantui"}]},"TX/suduxian_su4":{"attachment":[{"name":null}]},"TX_feng_quan4":{"attachment":[{"name":null}]},"BZ/y_bianzi2_bz_g":{"attachment":[{"name":null}]},"TX_bao1":{"color":[{"time":1.0333,"color":"ffffffff"},{"time":1.1667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":1.0333,"name":"TX/shuangcdr_00010002"}]},"TX_huaban1_sanluo":{"attachment":[{"name":null}]},"BZ/y_yanjing":{"attachment":[{"name":null},{"time":1,"name":"BZ/y_yanjing_bz"},{"time":1.5333,"name":null}]},"TX_guangxian1":{"attachment":[{"name":null},{"time":1,"name":"TX/daoguang_red"}]},"BZ/z_bianzi5_liuguang2":{"attachment":[{"name":null}]},"TX/shuyefaguang6":{"color":[{"time":0.5,"color":"ffffff00","curve":0.405,"c2":0.72,"c3":0.49},{"time":0.9667,"color":"ffffffff","curve":"stepped"},{"time":1.4667,"color":"ffffffff"},{"time":1.9333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.5,"name":"TX/shuyefaguang"}]},"TX/TX_yan1_4":{"color":[{"time":1.1667,"color":"b8b8b8ff"},{"time":2,"color":"b8b8b800"}],"attachment":[{"name":null},{"time":1.1667,"name":"TX/TX_S1_yan_0024"}]},"TX_SK2_shouji_xian3":{"attachment":[{"name":null}]},"BZ/y_bianzi_1_liuguang":{"attachment":[{"name":null}]},"TX_feng_quan2":{"attachment":[{"name":null}]},"TX_shouji3_3":{"attachment":[{"name":null},{"time":1.1667,"name":"TX/atk_guangci3_0025"},{"time":1.2,"name":"TX/atk_guangci3_0027"},{"time":1.2333,"name":"TX/atk_guangci3_0028"},{"time":1.2667,"name":"TX/atk_guangci3_0030"},{"time":1.3,"name":null}]},"hei":{"attachment":[{"name":null}]},"BZ/z_bianzi5_liuguang":{"attachment":[{"name":null}]},"hei2":{"attachment":[{"name":null}]},"BZ/y_bianzi2":{"attachment":[{"name":null}]},"TX/cao3":{"color":[{"time":0.1,"color":"ffffffff"},{"time":0.5,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.1,"name":"TX/cao"}]},"TX_guangxian2":{"attachment":[{"name":null},{"time":1,"name":"TX/daoguang_red"}]},"TX/shuye6":{"color":[{"time":1.4667,"color":"ffffffff"},{"time":1.9333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.5,"name":"TX/shuye"}]},"TX/shuyefaguang9":{"attachment":[{"name":null}]},"BZ/z_shou":{"attachment":[{"name":null},{"time":1,"name":"BZ/z_shou_bz"},{"time":1.5333,"name":null}]},"TX_guangxian6":{"attachment":[{"name":null},{"time":1.1667,"name":"TX/daoguang_red"}]},"TX/chentu4":{"color":[{"time":1.2,"color":"ffffffff"},{"time":1.3667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":1.1,"name":"TX/chentu1"},{"time":1.1333,"name":"TX/chentu3"},{"time":1.1667,"name":"TX/chentu4"},{"time":1.2,"name":"TX/chentu5"},{"time":1.3667,"name":null}]},"TX_SK2_shouji_lie4":{"attachment":[{"name":null}]},"TX_guangquan4":{"color":[{"time":1.1667,"color":"ffffffff","curve":0.587,"c2":0.18,"c3":0.684,"c4":0.42},{"time":1.4,"color":"ffffff00"}],"attachment":[{"name":null},{"time":1.1667,"name":"TX/Energy 007 Impact Radial_00008"},{"time":1.2,"name":"TX/Energy 007 Impact Radial_00010"},{"time":1.2667,"name":"TX/Energy 007 Impact Radial_00012"},{"time":1.3333,"name":"TX/Energy 007 Impact Radial_00015"}]},"TX/TX_yan1_3":{"color":[{"time":0.0333,"color":"d4c2b9ff","curve":0.587,"c2":0.18,"c3":0.684,"c4":0.42},{"time":0.8667,"color":"d4c2b900","curve":"stepped"},{"time":1.1333,"color":"b0978bff","curve":0.581,"c2":0.26,"c3":0.684,"c4":0.42},{"time":2,"color":"ba9d9300"}],"attachment":[{"name":null},{"time":0.0333,"name":"TX/TX_S1_yan_24"}]},"ZZZZZZZZZZZ":{"attachment":[{"name":null}]},"TX/suduxian_mi_hou1":{"attachment":[{"name":null}]},"TX/liuguang2":{"attachment":[{"name":null}]},"TX/suduxian_su1":{"attachment":[{"name":null}]},"BZ/y_bianzi1":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie6":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie11":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou3_liuguang\n2":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian8":{"attachment":[{"name":null}]},"z_houtui":{"attachment":[{"name":"z_houtui"},{"time":1,"name":null},{"time":1.5333,"name":"z_houtui"}]},"TX_feng_quan1":{"attachment":[{"name":null}]},"BZ/z_jiao":{"attachment":[{"name":null},{"time":1,"name":"BZ/z_jiao_bz"},{"time":1.5333,"name":null}]},"tou":{"attachment":[{"name":"tou"},{"time":1,"name":null},{"time":1.5333,"name":"tou"}]},"TX_huaban2_sanluo":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan2":{"attachment":[{"name":null}]},"TX_xian":{"attachment":[{"name":null}]},"TX_SK2_liuguang_cu":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan4":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou4":{"attachment":[{"name":null}]}},"bones":{"1":{"translate":[{"time":0.9667},{"time":1,"x":188.36,"y":16.48,"curve":"stepped"},{"time":1.5333,"x":188.36,"y":16.48},{"time":1.6333}]},"2":{"translate":[{"time":0.9667},{"time":1,"x":188.36,"y":16.48,"curve":"stepped"},{"time":1.5333,"x":188.36,"y":16.48},{"time":1.6333}]},"3":{"translate":[{"time":0.9667},{"time":1,"x":-190.72,"y":-25.9,"curve":"stepped"},{"time":1.5333,"x":-190.72,"y":-25.9},{"time":1.6333}]},"4":{"translate":[{"time":0.9667},{"time":1,"x":-190.72,"y":-25.9,"curve":"stepped"},{"time":1.5333,"x":-190.72,"y":-25.9},{"time":1.6333}]},"5":{"translate":[{"time":0.9667},{"time":1,"x":-240.16,"y":72.99,"curve":"stepped"},{"time":1.5333,"x":-240.16,"y":72.99},{"time":1.6333}]},"6":{"translate":[{"time":0.9667},{"time":1,"x":-240.16,"y":72.99,"curve":"stepped"},{"time":1.5333,"x":-240.16,"y":72.99},{"time":1.6333}]},"BZ/shenti":{"rotate":[{"time":1,"angle":11.46},{"time":1.6333,"angle":17.56}],"translate":[{"time":1,"x":-320.72,"y":428.61},{"time":1.6333,"x":-531.59,"y":529.13}]},"BZ/tou":{"rotate":[{"time":1},{"time":1.6333,"angle":5.44}]},"BZ/y_shou":{"rotate":[{"time":1,"angle":-8.97},{"time":1.6333,"angle":-18.89}],"translate":[{"time":1,"x":-0.39,"y":-100.45}]},"BZ/y_yanjing":{"rotate":[{"time":1},{"time":1.6333,"angle":10.17}]},"BZ/z_jiao":{"rotate":[{"time":1},{"time":1.6333,"angle":14.36}]},"BZ/z_shou":{"rotate":[{"time":1},{"time":1.6333,"angle":13.45}]},"BZ/z_yanjing":{"rotate":[{"time":1},{"time":1.6333,"angle":-5.36}]},"BZ/zhongzi":{"translate":[{"time":1,"x":-2.72,"y":-28.91},{"time":1.6333,"x":1.68,"y":-38.23}]},"bone28":{"translate":[{"time":1},{"time":1.6333,"x":13.58,"y":1.29}],"scale":[{"time":1},{"time":1.6333,"x":1.576}]},"TX_yan1_1":{"rotate":[{"time":0.0333,"angle":-90.05,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.1667,"angle":-48.68}],"translate":[{"time":0.0333,"x":2314.58,"y":1462.67,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.1667,"x":2738.15,"y":1631.81}],"scale":[{"time":0.0333,"x":1.15,"y":2.225,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.1667,"x":3.55,"y":3.687}]},"TX_yan1_2":{"rotate":[{"time":0.1,"angle":-95.14,"curve":0.233,"c2":0.79,"c3":0.327},{"time":1.1667,"angle":-115.91}],"translate":[{"time":0.1,"x":2592.78,"y":1455.68,"curve":0.151,"c2":0.85,"c3":0.49},{"time":1.1667,"x":3008.71,"y":1716.14}],"scale":[{"time":0.1,"x":0.616,"y":1.329,"curve":0.233,"c2":0.79,"c3":0.327},{"time":1.1667,"x":2.704,"y":2.772}]},"TX_yan1_3":{"rotate":[{"time":0.0333,"angle":112.63,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.8667,"angle":85.1,"curve":"stepped"},{"time":1.1333,"angle":-152.52,"curve":0.405,"c2":0.72,"c3":0.49},{"time":2,"angle":-161.25}],"translate":[{"time":0.0333,"x":2196.66,"y":1460.2,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.8667,"x":2498.66,"y":1609.76,"curve":"stepped"},{"time":1.1,"x":3041.9,"y":1609.76,"curve":"stepped"},{"time":1.1333,"x":4957.73,"y":1501.85,"curve":0.405,"c2":0.72,"c3":0.49},{"time":2,"x":5008.18,"y":1744.23}],"scale":[{"time":0.0333,"x":1.562,"y":1.884,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.8667,"x":3.127,"y":3.355,"curve":"stepped"},{"time":1.1333,"x":3.127,"y":3.355,"curve":0.405,"c2":0.72,"c3":0.49},{"time":2,"x":6.741,"y":6.595}]},"TX_yan1_4":{"rotate":[{"time":1.1667,"angle":112.59,"curve":0.405,"c2":0.72,"c3":0.468,"c4":0.89},{"time":2,"angle":133.88}],"translate":[{"time":1.1,"x":543.24,"y":83.35},{"time":1.1667,"x":6004.37,"y":1537.61,"curve":0.405,"c2":0.72,"c3":0.468,"c4":0.89},{"time":2,"x":6489.21,"y":2364.25}],"scale":[{"time":1.1667,"x":1.477,"y":1.999,"curve":0.405,"c2":0.72,"c3":0.468,"c4":0.89},{"time":2,"x":8.636,"y":8.712}]},"TX_yan1_1_hou":{"rotate":[{"time":0.0333,"angle":92.39},{"time":0.8667,"angle":61.68,"curve":"stepped"},{"time":1.1667,"angle":-52.19,"curve":0.405,"c2":0.72,"c3":0.49},{"time":2,"angle":-37.22}],"translate":[{"time":0.0333,"x":2268,"y":1664.11,"curve":0.424,"c2":0.43,"c3":0.718,"c4":0.76},{"time":0.8667,"x":2224.17,"y":1743.75,"curve":"stepped"},{"time":1.1,"x":2767.41,"y":1743.75,"curve":"stepped"},{"time":1.1667,"x":5360.98,"y":1583.53,"curve":0.405,"c2":0.72,"c3":0.49},{"time":2,"x":5696,"y":1847.71}],"scale":[{"time":0.0333,"x":1.128,"y":1.117,"curve":0.433,"c2":0.45,"c3":0.714,"c4":0.78},{"time":0.8667,"x":2.77,"y":2.744,"curve":"stepped"},{"time":1.1667,"x":3.607,"y":5.844,"curve":0.405,"c2":0.72,"c3":0.49},{"time":2,"x":9.215,"y":9.567}]},"TX_cao1":{"rotate":[{"time":0.0333,"angle":-103.9,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.4667,"angle":-73.89}],"translate":[{"time":0.0333,"x":1607.98,"y":1608.94,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.4667,"x":2151.11,"y":1892.46}],"scale":[{"time":0.0333,"x":0.249,"y":0.682,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.4667,"x":1.035,"y":1.305}]},"TX_cao2":{"rotate":[{"time":0.0333,"angle":-118.39,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.3667,"angle":-95.94}],"translate":[{"time":0.0333,"x":1235.41,"y":1669.11,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.3667,"x":1785.54,"y":1757.99}],"scale":[{"time":0.0333,"x":0.749,"y":1.059,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.3667,"x":1.177,"y":1.558}]},"TX_cao3":{"rotate":[{"time":0.1,"angle":-105.66}],"translate":[{"time":0.1,"x":991.99,"y":1771.75,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.5,"x":1367.3,"y":1808.98}],"scale":[{"time":0.1,"x":0.189,"y":0.189,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.5,"x":1.12,"y":1.617}]},"TX_cao4":{"rotate":[{"time":0.2667,"angle":-93.65}],"translate":[{"time":0.2667,"x":1090.41,"y":1994.01,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.6667,"x":1557.99,"y":2113.8}],"scale":[{"time":0.2667,"x":0.828,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.6667,"x":1.138,"y":1.257}]},"TX_chentu1":{"translate":[{"time":1.0333,"x":4013.04,"y":1871,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.1,"x":4458.79,"y":1871}],"scale":[{"time":1.0333,"x":-1.56,"y":1.562,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4333,"x":-3.54,"y":3.095}]},"TX_chentu2":{"translate":[{"time":1.0333,"x":3862.03,"y":2142.78,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.1,"x":4307.78,"y":2142.78}],"scale":[{"time":1.0333,"x":-1,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"x":-2.08,"y":2.077}]},"TX_chentu3":{"translate":[{"time":1.1,"x":3825.31,"y":1925.96}],"scale":[{"time":1.1,"x":-1.35,"y":1.345},{"time":1.2,"x":-2.31,"y":2.846}]},"TX_chentu4":{"translate":[{"time":1.1,"x":5721.9,"y":1872.58}],"scale":[{"time":1.1,"x":-1,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.3667,"x":-2.46,"y":2.46}]},"TX_chentu5":{"translate":[{"time":1.1,"x":543.25},{"time":1.1667,"x":3693.38,"y":1983.82}],"scale":[{"time":1.1667,"x":-1,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4667,"x":-2.42,"y":2.921}]},"TX_chentu6":{"translate":[{"time":1.1,"x":543.25},{"time":1.1667,"x":4215.97,"y":1933.39}],"scale":[{"time":1.1667,"x":-1,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4333,"x":-2.22,"y":2.219}]},"TX_guangyun":{"translate":[{"time":1.0333,"x":-1218.76,"y":2088.46,"curve":"stepped"},{"time":1.2667,"x":-1218.76,"y":2088.46}],"scale":[{"time":1.0333,"x":7.405,"y":7.405},{"time":1.2333,"x":11.221,"y":11.221,"curve":"stepped"},{"time":1.2667,"x":7.405,"y":7.405},{"time":1.4667,"x":11.221,"y":11.221}]},"TX_guangyun2":{"translate":[{"time":1.1,"x":358.04,"y":2016.79}],"scale":[{"time":1.1,"x":7.405,"y":7.405},{"time":1.3,"x":11.221,"y":11.221}]},"TX/shuye1":{"rotate":[{"time":0.0333,"angle":80.27},{"time":0.0667,"angle":52.31},{"time":0.1,"angle":52.69},{"time":0.2,"angle":42.4},{"time":0.2333,"angle":107.62,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.6333,"angle":-284.22},{"time":0.6667,"angle":44.7},{"time":0.9667,"angle":54.65},{"time":1,"angle":-146.88},{"time":1.0333,"angle":-152.66}],"translate":[{"time":0.0333,"x":871.6,"y":1488.13,"curve":0.385,"c2":0.38,"c3":0.708,"c4":0.71},{"time":0.0667,"x":1199,"y":1476.67,"curve":0.311,"c2":0.71,"c3":0.484},{"time":0.2,"x":1781.04,"y":1629.5},{"time":0.2333,"x":1863.97,"y":1660.29},{"time":0.6333,"x":752.31,"y":2055.2},{"time":0.6667,"x":599.58,"y":2164.19},{"time":0.9667,"x":798.77,"y":2284.18},{"time":1,"x":2213.88,"y":2747.24},{"time":1.0333,"x":4086.12,"y":1498.29}],"scale":[{"time":0.0333,"x":0.222,"y":0.222,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.2,"x":0.712,"y":0.8},{"time":0.9667,"x":0.834,"y":0.938},{"time":1,"x":1.78,"y":0.418},{"time":1.0333,"y":0.301}]},"TX/shuye2":{"rotate":[{"time":0.0333,"angle":-115.59},{"time":0.1,"angle":-147.06},{"time":0.1333,"angle":-137.8},{"time":0.3333,"angle":-135.72},{"time":0.9667,"angle":-128.78},{"time":1,"angle":-133.05},{"time":1.1,"angle":-140.12}],"translate":[{"time":0.0333,"x":1138.65,"y":1402.4},{"time":0.1,"x":1924.29,"y":1596.67},{"time":0.1333,"x":1315.04,"y":1690.08},{"time":0.3333,"x":799.66,"y":1817.54},{"time":0.9667,"x":1450.75,"y":2024.58},{"time":1,"x":2002.42,"y":2525.88},{"time":1.1,"x":5702.58,"y":1453.63}],"scale":[{"time":0.0333,"x":0.213,"y":0.106},{"time":0.1,"x":0.814,"y":0.721},{"time":0.3333,"x":0.69,"y":0.611},{"time":0.9667,"x":0.832,"y":0.737},{"time":1,"x":1.54,"y":0.426},{"time":1.1,"x":1.409,"y":0.323}]},"TX/shuye3":{"rotate":[{"time":0.0333,"angle":-139.43},{"time":0.0667,"angle":-139.31},{"time":0.1,"angle":-139.2},{"time":0.7333,"angle":-137.81},{"time":0.9667,"angle":-121.26},{"time":1.1333,"angle":-104.83,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.2,"angle":-162.98}],"translate":[{"time":0.0333,"x":1490.45,"y":1434.86},{"time":0.0667,"x":1816.32,"y":1598.96},{"time":0.1,"x":1654.41,"y":1610},{"time":0.7333,"x":649.51,"y":1816.81},{"time":0.9667,"x":737.57,"y":1897.98},{"time":1.1333,"x":690.71,"y":2232.89,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.2,"x":5117.19,"y":1695.35}],"scale":[{"time":0.0333,"x":0.309,"y":0.149},{"time":0.0667,"x":0.712,"y":0.681,"curve":"stepped"},{"time":0.1,"x":0.712,"y":0.681},{"time":0.9667,"x":1.035,"y":0.99},{"time":1.1333,"x":1.159,"y":0.81,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.2,"x":1.407,"y":0.45}]},"TX/shuye4":{"rotate":[{"time":0.4667,"angle":-130.87,"curve":"stepped"},{"time":0.9667,"angle":-130.87},{"time":1.0333,"angle":-137.06,"curve":0.351,"c2":0.28,"c3":0.663,"c4":0.65},{"time":1.0667,"angle":-129.81,"curve":0.295,"c2":0.38,"c3":0.61,"c4":0.74},{"time":1.1,"angle":-150.92}],"translate":[{"time":0.4667,"x":1072.54,"y":1967.44},{"time":0.5333,"x":1110.79,"y":1992.37},{"time":0.9667,"x":1332.72,"y":2166.91},{"time":1.0333,"x":1843.11,"y":2805.36,"curve":0.351,"c2":0.28,"c3":0.663,"c4":0.65},{"time":1.0667,"x":2765.98,"y":2313.82,"curve":0.295,"c2":0.38,"c3":0.61,"c4":0.74},{"time":1.1,"x":6578.42,"y":1472.25}],"scale":[{"time":0.4667,"x":0.711,"y":0.659,"curve":"stepped"},{"time":0.9667,"x":0.711,"y":0.659},{"time":1.0333,"x":1.54,"y":0.718}]},"TX/shuye5":{"rotate":[{"time":0.0333,"angle":69.67,"curve":"stepped"},{"time":0.1,"angle":69.67},{"time":0.1333,"angle":-291.75,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.9667,"angle":18.26},{"time":1.1,"angle":-280.28,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.1667,"angle":-151.09}],"translate":[{"time":0.0333,"x":1070.86,"y":1615.33},{"time":0.1,"x":794.39,"y":1627.93},{"time":0.1333,"x":894.3,"y":1610.8,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.9667,"x":1721.2,"y":1702.88},{"time":1.1,"x":1225.06,"y":2634.43,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.1667,"x":4476.97,"y":1612.1}],"scale":[{"time":0.0298,"y":1.034},{"time":0.0333,"x":0.235,"y":0.158},{"time":0.1,"x":0.694,"y":0.718,"curve":"stepped"},{"time":0.9667,"x":0.694,"y":0.718},{"time":1.1,"x":0.943,"y":0.684,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.1667,"x":1.441,"y":0.616}]},"TX/shuye6":{"rotate":[{"time":0.5,"angle":63.78,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.9667,"angle":49.8},{"time":1.0333,"angle":-274.3,"curve":0.438,"c2":0.5,"c3":0.723,"c4":0.79},{"time":1.0667,"angle":-35.13,"curve":0.291,"c2":0.42,"c3":0.574,"c4":0.67},{"time":1.1,"angle":-157.3}],"translate":[{"time":0.5,"x":676.2,"y":1528.94,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.9667,"x":1033.76,"y":1607.97},{"time":1.0333,"x":995.23,"y":2510.83,"curve":0.438,"c2":0.5,"c3":0.723,"c4":0.79},{"time":1.0667,"x":2207.37,"y":2370.57,"curve":0.291,"c2":0.42,"c3":0.574,"c4":0.67},{"time":1.1,"x":3563.53,"y":1572.89},{"time":1.5667,"x":3563.53,"y":1572.08}],"scale":[{"time":0.5,"x":0.289,"y":0.289,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.9667,"x":0.759,"y":0.759},{"time":1.0333,"x":1.064,"y":0.635,"curve":0.449,"c2":0.66,"c3":0.584,"c4":0.78},{"time":1.1,"x":1.37,"y":0.512}]},"TX_SK2_shouji_lie_quan":{"translate":[{"time":1.1333,"x":-20.93,"y":-38.05}],"scale":[{"time":1.1333,"x":0.604,"y":0.604,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":1.3,"x":1.506,"y":1.506}]},"TX_bao1":{"translate":[{"time":1.0333,"x":5863.62,"y":1849.88}],"scale":[{"time":1.0333,"x":2.161,"y":2.161,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":1.1667,"x":3.567,"y":3.567}]},"TX_cao_hou1":{"rotate":[{"time":0.0333,"angle":30.86,"curve":0.233,"c2":0.79,"c3":0.327},{"time":0.6,"angle":45.65}],"translate":[{"time":0.0333,"x":2184.69,"y":1838.09,"curve":0.392,"c2":0.39,"c3":0.712,"c4":0.72},{"time":0.1642,"x":2137.95,"y":1964.3,"curve":0.3,"c2":0.71,"c3":0.485},{"time":0.6,"x":2072.92,"y":2140.05}],"scale":[{"time":0.0333,"x":0.156,"y":0.156,"curve":0.233,"c2":0.79,"c3":0.327},{"time":0.6,"x":1.462,"y":1.462}]},"TX_feng1":{"rotate":[{"time":0.0333,"angle":6.08},{"time":0.3,"angle":-21.72}],"translate":[{"time":0.0333,"x":1503.8,"y":2176.58,"curve":0.43,"c2":0.45,"c3":0.715,"c4":0.77},{"time":0.3,"x":2257.51,"y":2296.55}],"scale":[{"time":0.0333,"x":2.754,"y":2.938,"curve":0.43,"c2":0.45,"c3":0.715,"c4":0.77},{"time":0.3,"x":3.371,"y":5.318}]},"TX_feng2":{"rotate":[{"time":0.1667,"angle":-13.58},{"time":0.2667,"angle":19.28}],"translate":[{"time":0.1667,"x":2095.06,"y":2780.05},{"time":0.2667,"x":1448.37,"y":2792.94}],"scale":[{"time":0.1667,"x":2.319,"y":-4.368}]},"TX_feng3":{"rotate":[{"time":0.1667,"angle":-9.52},{"time":0.4,"angle":-15.37}],"translate":[{"time":0.1667,"x":1591.11,"y":2449.88},{"time":0.4,"x":2052.11,"y":2568.81}],"scale":[{"time":0.1667,"x":3.16,"y":4.223},{"time":0.4,"x":3.662,"y":5.917}]},"TX_feng4":{"rotate":[{"time":0.3,"angle":-5.9},{"time":0.6667,"angle":-20.63}],"translate":[{"time":0.3,"x":1704.41,"y":2746.81},{"time":0.6667,"x":2203.31,"y":2845.65}],"scale":[{"time":0.3,"x":2.471,"y":5.272},{"time":0.6667,"x":3.104,"y":5.272}]},"TX_guangquan":{"rotate":[{"time":1.0333,"angle":-103.99}],"translate":[{"time":1.0333,"x":3920.14,"y":1491.69}],"scale":[{"time":1.0333,"x":3.359,"y":3.359,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.2333,"x":3.921,"y":3.921}]},"TX_guangquan2":{"rotate":[{"time":1.0667,"angle":-221.53}],"translate":[{"time":1.0667,"x":3388.42,"y":1227.24}],"scale":[{"time":1.0667,"x":3.369,"y":3.369,"curve":0.233,"c2":0.79,"c3":0.327},{"time":1.3,"x":4.016,"y":4.016}]},"TX_guangquan3":{"rotate":[{"time":1.1,"angle":-63.08}],"translate":[{"time":1.1,"x":5345.39,"y":1807.69}],"scale":[{"time":1.1,"x":3.496,"y":3.496,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.3333,"x":4.142,"y":4.142}]},"TX_guangquan4":{"translate":[{"time":1.1667,"x":4125.94,"y":1430.25}],"scale":[{"time":1.1667,"x":3.401,"y":3.401,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4,"x":4.042,"y":4.042}]},"TX_guangquan5":{"rotate":[{"time":1.2333,"angle":-104.26}],"translate":[{"time":1.2333,"x":4454.74,"y":1774.82}],"scale":[{"time":1.2333,"x":3.355,"y":3.355,"curve":0.445,"c2":0.5,"c3":0.689,"c4":0.82},{"time":1.4667,"x":4.217,"y":4.217}]},"TX_guangxian1":{"rotate":[{"time":1,"angle":56.9}],"translate":[{"time":1,"x":2084.62,"y":2738.37,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.0333,"x":3497.77,"y":1817.02}],"scale":[{"time":1,"x":2.658,"y":2.752,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.0333,"x":2.658,"y":3.315},{"time":1.1333,"x":0,"y":4.56}]},"TX_guangxian2":{"rotate":[{"time":1,"angle":72.98}],"translate":[{"time":1,"x":1996.33,"y":2609.72},{"time":1.1,"x":4904.76,"y":1719.29}],"scale":[{"time":1,"x":2.232,"y":3.421,"curve":"stepped"},{"time":1.0333,"x":2.232,"y":3.421},{"time":1.1333,"x":0,"y":4.544}]},"TX_guangxian3":{"rotate":[{"time":1.0667,"angle":77.61}],"translate":[{"time":1.0667,"x":2071.67,"y":2578.57,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.1,"x":5852.48,"y":1748.03}],"scale":[{"time":1.0667,"x":1.807,"y":4.163,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.1,"x":1.807,"y":4.242},{"time":1.2333,"x":0,"y":2.936}]},"TX_guangxian4":{"rotate":[{"time":1.0667,"angle":53.12}],"translate":[{"time":1.0667,"x":2385.02,"y":2260.19},{"time":1.1,"x":3274.58,"y":1927.19}],"scale":[{"time":1.0667,"x":2.829,"y":2.53},{"time":1.1,"x":2.829,"y":3.823},{"time":1.2333,"x":0,"y":3.162}]},"TX_guangxian5":{"rotate":[{"time":1.1333,"angle":68.95}],"translate":[{"time":1.1,"x":543.25},{"time":1.1333,"x":2737.55,"y":2186.63},{"time":1.1667,"x":3396.96,"y":1932.99}],"scale":[{"time":1.1333,"x":3.253,"y":5.031,"curve":"stepped"},{"time":1.1667,"x":3.253,"y":5.031},{"time":1.3,"x":0,"y":3.901}]},"TX_guangxian6":{"rotate":[{"time":1.1667,"angle":78.54}],"translate":[{"time":1.1,"x":543.25},{"time":1.1667,"x":3622.57,"y":2003.92},{"time":1.2,"x":4312.29,"y":1804.66}],"scale":[{"time":1.1667,"x":2.069,"y":4.929,"curve":"stepped"},{"time":1.2,"x":2.069,"y":4.929},{"time":1.3333,"x":0,"y":1.493}]},"TX_shouji3_1":{"rotate":[{"time":1.0333,"angle":11.07},{"time":1.1667,"angle":9.24}],"translate":[{"time":1.0333,"x":5448.06,"y":1123.08},{"time":1.1,"x":5893.8,"y":1123.08}],"scale":[{"time":1.0333,"x":1.564,"y":2.507},{"time":1.1667,"x":4.049,"y":5.266}]},"TX_shouji3_2":{"rotate":[{"time":1.1,"angle":19.28},{"time":1.2333,"angle":-6.41}],"translate":[{"time":1.1,"x":5290.43,"y":1210.81},{"time":1.2333,"x":5006.13,"y":1319.89}],"scale":[{"time":1.1,"x":2.446,"y":3.234},{"time":1.2333,"x":3.351,"y":5.42}]},"TX_shouji3_3":{"rotate":[{"time":1.1667,"angle":-75.72},{"time":1.2,"angle":-99.63}],"translate":[{"time":1.1,"x":543.23,"y":0.01},{"time":1.1667,"x":5775.71,"y":1190.09},{"time":1.3,"x":5886.62,"y":1184.54}],"scale":[{"time":1.1667,"x":3.961,"y":6.442},{"time":1.2,"x":5.193,"y":5.903},{"time":1.3,"x":5.352,"y":7.335}]},"TX_shouji3_4":{"rotate":[{"time":1.2333,"angle":92.04}],"translate":[{"time":1.2333,"x":5047.31,"y":1166.2,"curve":0.438,"c2":0.6,"c3":0.6,"c4":0.9},{"time":1.4,"x":5111.28,"y":1258.61}],"scale":[{"time":1.2333,"x":5.919,"y":-8.59,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.4,"x":4.194,"y":-6.777}]},"shenti":{"rotate":[{"angle":0.3},{"time":0.1,"angle":-5.96},{"time":0.9667},{"time":1,"angle":-20.57},{"time":1.5333,"angle":-29.92,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.7}],"translate":[{"x":0.01,"y":-6.35},{"time":0.1,"y":-39.81},{"time":0.9667},{"time":1,"x":-4.69,"y":70.36},{"time":1.5333,"x":-64.25,"y":161.13,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.7,"y":-63.58,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.8333,"x":370.67,"y":160.29},{"time":2}]},"tou":{"rotate":[{},{"time":0.1,"angle":-8.41,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.9667,"angle":3.78},{"time":1,"angle":15.02},{"time":1.5333,"angle":29.52},{"time":1.6333,"angle":19.78,"curve":0.414,"c2":0.42,"c3":0.719,"c4":0.75},{"time":1.7,"angle":-13.56,"curve":0.272,"c2":0.71,"c3":0.496},{"time":1.8333,"angle":11.72},{"time":2}],"translate":[{},{"time":0.1,"x":-3.01,"y":-9.99},{"time":0.9667},{"time":1,"x":13.65,"y":4.37},{"time":1.5333,"x":0.81,"y":41.73},{"time":1.6333,"x":7.12,"y":42.19,"curve":0.414,"c2":0.42,"c3":0.719,"c4":0.75},{"time":1.7,"x":-49.26,"y":-27.34,"curve":0.272,"c2":0.71,"c3":0.496},{"time":1.8333}]},"z_houtui":{"rotate":[{},{"time":0.1,"angle":46.76},{"time":0.9667}],"translate":[{},{"time":0.1,"x":-38.43,"y":0.39},{"time":0.9667}]},"z_qiantui":{"translate":[{"x":-2.15,"y":-2.31},{"time":0.1}]},"zhonzi":{"scale":[{},{"time":0.9667,"x":1.154,"y":0.909},{"time":1,"curve":"stepped"},{"time":1.6333,"curve":0.414,"c2":0.42,"c3":0.719,"c4":0.75},{"time":1.7,"y":0.774,"curve":0.272,"c2":0.71,"c3":0.496},{"time":1.8333,"x":0.824,"y":1.211},{"time":2}]},"zui":{"scale":[{"time":1},{"time":1.5333,"y":1.959},{"time":1.6333,"curve":0.414,"c2":0.42,"c3":0.719,"c4":0.75},{"time":1.7,"y":0.605,"curve":0.272,"c2":0.71,"c3":0.496},{"time":1.8333,"y":1.691},{"time":2}]},"SHENTI":{"translate":[{"time":1},{"time":1.5333,"x":-434.05,"y":288.98},{"time":1.6333,"x":-594.02,"y":-8.03,"curve":"stepped"},{"time":1.8333,"x":-594.02,"y":-8.03},{"time":2}]},"bone12":{"rotate":[{},{"time":0.1,"angle":10.85},{"time":0.9667,"curve":"stepped"},{"time":1.5333},{"time":1.6333,"angle":17.55,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.8333,"angle":-16.9},{"time":2}],"translate":[{},{"time":0.1,"x":-13.66,"y":18.37},{"time":0.9667,"curve":"stepped"},{"time":1.5333},{"time":1.6333,"x":-5.7,"y":28.8,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.8333,"x":47.74,"y":-31.29},{"time":2}]},"bone14":{"translate":[{"time":0.1},{"time":0.9667,"y":2.63},{"time":1}]},"bone10":{"rotate":[{},{"time":0.1,"angle":-39.01},{"time":0.9667}]},"y_yan":{"scale":[{"time":1.6333,"curve":0.414,"c2":0.42,"c3":0.719,"c4":0.75},{"time":1.7,"y":0.747,"curve":0.272,"c2":0.71,"c3":0.496},{"time":1.8333}]},"bone11":{"rotate":[{},{"time":0.1,"angle":-10.77},{"time":0.9667,"curve":"stepped"},{"time":1.5333},{"time":1.6333,"angle":-13.1,"curve":0.414,"c2":0.42,"c3":0.719,"c4":0.75},{"time":1.7,"angle":25.79,"curve":0.272,"c2":0.71,"c3":0.496},{"time":1.8333,"angle":11.71},{"time":2}],"translate":[{},{"time":0.1,"x":18.24,"y":26.29},{"time":0.9667,"curve":"stepped"},{"time":1.5333},{"time":1.6333,"x":34.4,"y":39.6,"curve":0.414,"c2":0.42,"c3":0.719,"c4":0.75},{"time":1.7,"x":-16.31,"y":-34.7,"curve":0.272,"c2":0.71,"c3":0.496},{"time":1.8333,"x":-26.74,"y":-24.51},{"time":2}]},"bone6":{"rotate":[{},{"time":0.1,"angle":16.29},{"time":0.9667}],"translate":[{},{"time":0.1,"x":7.87,"y":20.22},{"time":0.9667}]},"bone4":{"rotate":[{},{"time":0.1,"angle":-3.7},{"time":0.9667}]},"z_yan":{"scale":[{"time":1.6333,"curve":0.414,"c2":0.42,"c3":0.719,"c4":0.75},{"time":1.7,"y":0.68,"curve":0.272,"c2":0.71,"c3":0.496},{"time":1.8333}]},"bone5":{"rotate":[{},{"time":0.1,"angle":-13.52},{"time":0.9667}],"translate":[{},{"time":0.1,"x":14.81,"y":27.95},{"time":0.9667}]},"bone3":{"rotate":[{},{"time":0.1,"angle":-8.02},{"time":0.9667}]},"bone92":{"rotate":[{"time":0.0333},{"time":0.1,"angle":34,"curve":"stepped"},{"time":0.9667,"angle":34},{"time":1,"angle":0.25}],"translate":[{"time":0.0333},{"time":0.1,"x":14.5,"y":34.15},{"time":0.1333,"x":38.15,"y":42.08,"curve":"stepped"},{"time":0.9667,"x":38.15,"y":42.08},{"time":1,"x":12.67,"y":31.68}]},"bone91":{"rotate":[{"time":0.0333},{"time":0.1,"angle":-19.99,"curve":"stepped"},{"time":0.9667,"angle":-19.99},{"time":1,"angle":-13.04}],"scale":[{"time":0.0333},{"time":0.1,"x":0.911}]},"bone90":{"rotate":[{"time":0.0333},{"time":0.2,"angle":-2.29}],"translate":[{"time":0.0333},{"time":0.2,"x":-48.75,"y":-63.86},{"time":0.2333,"x":-14.59,"y":-1.88}]},"bone89":{"rotate":[{"time":0.0333},{"time":0.2,"angle":-14.7}]},"bone94":{"rotate":[{"time":0.1},{"time":0.9667,"angle":-9.48}],"translate":[{"time":0.0333},{"time":0.0667,"x":-63.04,"y":-82.34},{"time":0.1,"x":2.74,"y":-15.54},{"time":0.9667,"x":0.73,"y":-4.99}]},"bone97":{"rotate":[{"time":0.1333,"curve":0.587,"c2":0.02,"c3":0.684,"c4":0.42},{"time":0.9667,"angle":-45.84},{"time":1.1,"angle":-4.05}],"translate":[{"time":0.1333,"curve":0.587,"c2":0.02,"c3":0.684,"c4":0.42},{"time":0.9667,"x":21.41,"y":-11.23}]},"bone98":{"rotate":[{"time":0.1333,"curve":0.587,"c2":0.02,"c3":0.684,"c4":0.42},{"time":0.9667,"angle":-69.5},{"time":1.1,"angle":-7.31}],"translate":[{"time":0.1333,"curve":0.587,"c2":0.02,"c3":0.684,"c4":0.42},{"time":0.9667,"x":-50.52,"y":-15.97}]},"bone22":{"rotate":[{"time":1},{"time":1.6333,"angle":8.94}]},"bone27":{"rotate":[{"time":1},{"time":1.6333,"angle":-10.23}],"translate":[{"time":1},{"time":1.6333,"x":8.8,"y":6.49}]},"bone26":{"rotate":[{"time":1},{"time":1.6333,"angle":6.7}],"translate":[{"time":1},{"time":1.6333,"x":20.96,"y":-42.25}]},"bone88":{"scale":[{"time":1},{"time":1.6333,"x":1.119,"y":0.93}]},"bone25":{"translate":[{"time":1},{"time":1.6333,"x":-45.15,"y":-14.64}]},"bone96":{"rotate":[{"time":0.9667},{"time":1,"angle":-14.29}]},"bone95":{"rotate":[{"time":0.9667},{"time":1,"angle":-2.48}]},"bone99":{"rotate":[{"time":0.9667},{"time":1.0333,"angle":-10.63},{"time":1.1,"angle":-5}]},"bone100":{"rotate":[{"time":0.9667},{"time":1.0333,"angle":-14.95},{"time":1.1,"angle":-16.01}]},"yinying":{"translate":[{"time":0.9667,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.0333,"x":-384.1},{"time":1.5,"x":-524.35},{"time":1.6333,"x":-598.7,"curve":"stepped"},{"time":1.7,"x":-598.7,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.8333,"x":-332.95},{"time":2}],"scale":[{},{"time":0.1,"x":1.162},{"time":0.9667,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.0333,"x":0.764,"y":0.764},{"time":1.5,"x":0.749,"y":0.749},{"time":1.6333,"x":1.013,"y":1.013},{"time":1.7,"x":1.11,"y":1.013,"curve":0.405,"c2":0.72,"c3":0.49},{"time":1.8333,"x":0.791,"y":0.723},{"time":2}]},"TX_SK2_shouji1":{"translate":[{"time":1.1333,"x":2181.19,"y":2624.37}]},"TX_HEI":{"translate":[{"time":1.1,"x":543.24}]},"TX_HEI2":{"translate":[{"time":1.1,"x":543.24}]}},"deform":{"default":{"TX_feng2":{"TX/TX_S1_shua_0014":[{"time":0.1667,"vertices":[39.06258,-3.53657,29.60211,3.39572,-0.00006,0.00004,-0.00006,0,0.00009,0,0.00009,0,-0.00002,0,-0.00006,0.00008,0.00006,-0.00007,0.00006,-0.00003,-0.00002,-0.00004,0.00006,0.00002,0.00009,-0.00015,-0.00005,0.00001,0.00002,-0.00014,-0.00001,-0.0001,0.00009,-0.0001,-0.00008,0,64.92879,-21.15149]},{"time":0.2,"offset":14,"vertices":[-14.02478,-7.04336,-55.15628,-14.47907,-53.56076,-1.26868,-61.5439,-4.63972,-21.92187,-6.71475]}]},"TX/shuyefaguang5":{"TX/shuyefaguang":[{"time":0.1333},{"time":0.9667,"offset":2,"vertices":[478.72797,90.84827,-223.19583,-414.78577,-152.95575,6.40994,-104.31827,-188.85638,-7.61484,-97.54552,40.43236,-13.18944,-5.39839,-24.63474,14.78403,-15.10558,6.37718,1.31223,-36.89166,-71.21693,4.17282,-68.81768,0.51245,-12.21674,-5.2183,17.0735,-4.77013,21.72144,-48.08025,-4.66683,-132.22495,-150.7149]},{"time":1.1}]},"TX_guangxian1":{"TX/daoguang_red":[{"time":1,"curve":"stepped"},{"time":1.0333,"offset":8,"vertices":[-0.60992,65.65117,7.96741,111.18396,31.31924,142.76279,21.57199,20.89389,-0.00002,-0.00002,-0.00001,0.00009,-0.00002,-0.00009,-0.00005,-0.00005,0.00001,0,-0.00004,-0.00005,0.00003,0.00001,-1.74293,11.92447]}]},"TX_guangxian3":{"TX/daoguang_red":[{"time":1.1,"vertices":[8.18035,-0.15982,-8.18458,190.50159,-0.00004,0.00003,-0.00004,0.00003,11.29346,32.42079,33.84843,64.01709,49.49929,110.55801,14.65786,17.54547]}]},"ZZZZZ":{"ZZZZZ":[{"time":1.0333,"offset":2,"vertices":[113.42773,375.30176,54.06543,380.70752,-75.57471,253.8042,0.01709,267.30225,-307.77686,391.5044,-134.98535,388.80127,-97.18555,394.20068,-121.48535,267.30225,-37.78809,240.30225,137.73535,199.80225,207.91797,224.10156]}]},"TX_guangxian2":{"TX/daoguang_red":[{"time":1},{"time":1.0333,"offset":8,"vertices":[10.47223,69.19539,31.05024,76.80731,28.29052,98.81363,-0.00006,0,-2.83739,-3.4847,-0.00001,0.00009,-0.00002,-0.00009,-0.00005,-0.00005,0.00001,0,-0.00004,-0.00005,0.00003,0.00001,2.87264,18.66239]}]},"tou":{"tou":[{},{"time":0.1,"offset":36,"vertices":[-5.24599,3.84781,5.74658,3.04787,2.85211,5.84644,0.84775,-3.2442,-3.28931,0.64867,-3.04077,-1.41156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.51729,7.29257,-12.05596,17.11302,-1.78191,14.62007,-3.35435,24.8504]},{"time":0.9667}]},"zhonzi":{"zhonzi":[{},{"time":0.1,"vertices":[0.94688,-18.59167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.94688,-18.59167,0.94688,-18.59167,0.94688,-18.59167,0.94688,-18.59167,0.94688,-18.59167,0.94688,-18.59167,0.94688,-18.59167,-0.00008,-18.61716,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.94688,-18.59167,0.94688,-18.59167,-0.00008,-18.61716,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.94688,-18.59167,0.94688,-18.59167,0.94688,-18.59167,0.94688,-18.59167]},{"time":0.9667,"vertices":[-0.13999,3.40649,0,0,0,0,-4.24021,3.3905,-4.09512,3.66629,-19.0116,10.07275,-18.5717,11.31635,-23.99821,-4.80164,-24.16268,-3.20816,-8.36503,1.05127,-8.31045,1.60312,0,0,0,0,0,0,0,0,0,0,0,0,24.06197,-1.68964,23.9599,-3.27859,29.9024,-12.20947,29.36008,-14.17041,15.20924,-2.8009,15.07353,-3.80307,0,0,0,0,0,0,0,0,0,0,0,0,-0.13999,3.40649,-28.00522,1.69678,-0.13999,3.40649,-0.13999,3.40649,18.16352,7.62091,-0.13999,3.40649,0,0,0,0,-8.11681,9.4447,-7.71761,9.9686,-12.80904,11.71942,-12.30995,12.55051,-12.50092,9.99573,-12.07315,10.80887,-10.43498,2.43475,-10.32073,3.12146,9.07661,-2.82562,8.94818,-3.42197,15.65273,-3.65204,15.48138,-4.68228,19.4207,-0.75586,19.36327,-2.03918,8.8596,-5.60626,8.61717,-6.18472,-0.13999,3.40649,-0.13999,3.40649,0.0004,3.4111,0,0,0,0,0,0,0,0,-8.9854,-1.67883,-9.04218,-1.08228,-7.22769,-7.51611,-7.52673,-7.02795,-11.21278,-13.19312,-11.73966,-12.43381,-13.18768,-10.13684,-13.58633,-9.25116,-10.86944,-3.12677,-10.9831,-2.40381,-0.13999,3.40649,-0.13999,3.40649,-0.13999,3.40649,-0.13999,3.40649]},{"time":1.5333}]},"TX_feng3":{"TX/TX_S1_shua_0014":[{"time":0.2,"vertices":[33.62614,-42.14654,4.85857,0.67076,-0.00001,0,-0.3034,-4.1627,-0.60197,-3.10152,0.09398,-3.11792,-2.4547,-6.07838,-25.49796,-9.64971,-34.1842,-22.30616,-10.79179,7.3793,5.31557,17.79733,2.97729,7.80486,9.45263,9.32423,58.88063,-17.56261,72.11697,-6.28676]}]},"TX_guangxian5":{"TX/daoguang_red":[{"time":1.1667,"offset":10,"vertices":[18.26499,15.11642,28.19946,66.22751]}]},"TX_feng1":{"TX/TX_S1_shua_0014":[{"time":0.1,"vertices":[92.24341,31.82201,10.2162,-3.74069,-5.86552,-18.41122,-16.41668,-6.03282,-6.20489,-0.63609,-5.63921,0.85587,-15.00597,12.51456,-36.0721,16.43626,-10.63528,59.375,-2.74419,52.80325,-1.89112,53.66322,-4.44904,56.65356,1.30033,48.09822,11.70724,30.02364,26.30394,31.78968,87.92203,46.76427,114.27264,64.73627,111.18527,62.92993]}]},"TX_feng4":{"TX/TX_S1_shua_0012":[{"time":0.3,"vertices":[27.56609,-59.45834,65.54494,-29.60845,5.66313,-19.22359,-0.0001,0,0,0,0.00005,0,0,-0.00018,-7.55286,-8.68633,-39.02356,-12.5828,-9.35559,-5.69069,-0.00006,-0.00004,-0.00002,-0.00014,5.30158,-6.22643,19.59027,-13.59999,32.22192,-19.21385,31.16872,-36.79516,26.74489,-47.55117,40.68699,-59.8138,33.23325,-89.41493,25.40552,-84.7413]}],"TX/TX_S1_shua_0014":[{"time":0.4333,"vertices":[22.36736,-56.11676,20.5482,-16.7228,-0.00001,0,-0.00004,0,0.00002,0,0.00001,0,0.01331,-12.88981,-51.38928,-45.10835,-24.65242,-33.71791,-4.26942,-15.77487,1.72848,-7.69693,12.07883,-15.788,15.59518,-20.27887,38.31747,-52.62788,57.64493,-74.05947]}]},"TX/shuye5":{"TX/shuye":[{"time":0.1333},{"time":0.9667,"vertices":[17.51495,14.91312,12.31104,18.39395,-7.77606,20.1593,-17.87311,11.36571,-20.7215,6.85922,-19.67484,-8.87024,-8.41162,17.08311,-13.35309,14.54135,1.46851,20.7197,0,0,-6.53033,-23.72522,11.21259,-22.37872,8.85016,-54.9529,-36.74609,-82.39487,5.53589,-82.08411,-16.66083,-3.02435,-11.24445,-11.05042,-10.2511,8.2417,-13.91956,1.2901,0,0,0,0,0,0,0,0,0,0,9.55151,-5.42383,14.04413,3.50964,-2.56641,-1.15851,-0.33475,-2.48608,-1.30493,13.90616,-12.91168,8.3703,-2.66782,-16.56836,-29.44046,17.26947]},{"time":1.1}]},"TX_guangxian6":{"TX/daoguang_red":[{"time":1.2,"vertices":[-24.17432,-34.21176,-11.06138,226.15543,-0.00004,0.00003,-0.00004,0.00003,-6.06366,12.55721,9.44584,34.96887,41.76104,17.62198]}]},"TX_guangxian4":{"TX/daoguang_red":[{"time":1.1,"vertices":[23.22027,11.00992,-10.85639,219.22424,-0.00004,0.00003,-0.00004,0.00003,-5.36065,61.37642,19.73881,91.33984,45.76928,135.35068,9.90719,64.02805,3.08338,4.56636]}]},"BZ/zhongzi":{"BZ/zhongzi_bz":[{"time":1},{"time":1.6333,"vertices":[-14.20282,-6.07149,-15.77087,0.39214,-20.99365,22.3663,-17.14905,37.16487,-16.80627,6.20564,-15.77087,0.39214,-15.77087,0.39214,5.95532,-11.44751,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-14.54889,6.89211,-16.41901,6.07538,-12.57495,-2.86134,-14.02173,-2.95103,0.75732,-13.94545,7.55353,-41.73898,-5.65887,-11.30792,-9.2782,-31.91354,-19.13507,-29.06963,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.5047,0.70625,-2.81793,0.59946,0,0,-8.30499,-0.57433,-15.77087,0.39214,-9.88318,-6.26678,-15.77087,0.39214,-15.77087,0.39214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-15.77087,0.39214,-15.77087,0.39214,-9.73547,6.81027,-4.11151,12.64203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-15.77087,0.39214,-17.66077,0.00089,-15.36426,0.13809,-17.19861,-0.22734,-2.28815,-5.02187,-2.46515,-4.72351,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-15.77087,0.39214,-21.01343,19.14178]}]},"TX/TX_yan1_1":{"TX/TX_S1_yan_0029":[{"time":1.1333,"curve":0.326,"c2":0.67,"c3":0.66},{"time":1.1667,"vertices":[-38.97602,-26.3834,-0.00011,-0.00002,-0.0002,-0.00009,-0.00009,-0.00002,-39.60048,-0.92766,28.28683,-5.45043]}]}}},"drawOrder":[{"time":0.1,"offsets":[{"slot":"TX/shuye5","offset":113},{"slot":"TX/shuye3","offset":-87},{"slot":"TX/shuye2","offset":-103}]},{"time":0.2333,"offsets":[{"slot":"TX/shuye5","offset":114},{"slot":"TX/shuye3","offset":-86},{"slot":"TX/shuye","offset":-101},{"slot":"TX/shuye2","offset":-104},{"slot":"TX/shuyefaguang","offset":-108}]},{"time":0.3667,"offsets":[{"slot":"TX/shuye5","offset":114},{"slot":"TX/shuye3","offset":-91},{"slot":"TX/shuye","offset":-102},{"slot":"TX/shuyefaguang","offset":-109}]},{"time":0.6,"offsets":[{"slot":"TX/shuye5","offset":106}]},{"time":0.6333,"offsets":[{"slot":"TX/shuye5","offset":93},{"slot":"TX/shuye","offset":-103},{"slot":"TX/shuyefaguang","offset":-110}]},{"time":1.0333,"offsets":[{"slot":"TX/shuye4","offset":104},{"slot":"TX/shuye5","offset":106},{"slot":"TX/shuyefaguang4","offset":103},{"slot":"TX/shuye3","offset":15},{"slot":"TX/shuyefaguang3","offset":17},{"slot":"TX/shuyefaguang5","offset":15},{"slot":"ZZZZZZZZZZZ","offset":7},{"slot":"TX_shouji3_4","offset":-14},{"slot":"TX/shuyefaguang","offset":-12}]}],"events":[{"time":1.0333,"name":"skill1Attack"},{"time":1.0667,"name":"skill1Attack"},{"time":1.1,"name":"skill1Attack"},{"time":1.1333,"name":"skill1Attack"},{"time":1.1667,"name":"skill1Attack"},{"time":1.2,"name":"skill1Attack"},{"time":1.2333,"name":"skill1Attack"},{"time":1.2667,"name":"skill1Attack"}]},"skill2":{"slots":{"TX/TX_yan1_1_hou6":{"color":[{"time":0.5333,"color":"997b71ff"},{"time":0.8333,"color":"997b7100"}],"attachment":[{"name":null},{"time":0.5333,"name":"TX/TX_S1_yan_27"}]},"TX_huaban2":{"attachment":[{"name":null}]},"TX_cao_hou3":{"attachment":[{"name":null},{"time":0.3,"name":"TX/cao"},{"time":0.7667,"name":null}]},"TX/TX_yan1_6":{"color":[{"time":0.3,"color":"d4beb0ff"},{"time":0.4667,"color":"d4beb000","curve":"stepped"},{"time":0.5,"color":"d4beb0ff"},{"time":0.6667,"color":"d4beb000"}],"attachment":[{"name":null},{"time":0.3,"name":"TX/TX_S1_yan_0029"}]},"BZ/y_bian_hou2_liuguang":{"attachment":[{"name":null},{"time":1.6333,"name":"TX/liuguang3"},{"time":3.0667,"name":null}]},"TX/suduxian_su2":{"color":[{"time":1.5333,"color":"ffffffff"},{"time":1.6667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":1.5333,"name":"TX/suduxian_su"},{"time":1.6667,"name":null}]},"TX_guangxian3":{"attachment":[{"name":null}]},"BZ/z_bianzi5":{"attachment":[{"name":null},{"time":0.1333,"name":"BZ/y_bianzi2_bz"},{"time":2.8667,"name":null}]},"TX/xuanzhuan_hou":{"attachment":[{"name":null},{"time":0.1333,"name":"TX/xuanzhuan"},{"time":0.8,"name":null}]},"BZ/tou":{"attachment":[{"name":null},{"time":1.6333,"name":"BZ/tou_bz"},{"time":2.2667,"name":null}]},"TX_huabao":{"attachment":[{"name":null}]},"TX/shuyefaguang4":{"color":[{"time":1.6333,"color":"b8b8b88f"}],"attachment":[{"name":null},{"time":1.6333,"name":"TX/shuyefaguang"},{"time":2.3667,"name":null}]},"TX_BZ_cao_hou5":{"color":[{"time":1.6333,"color":"b5a665ff"}],"attachment":[{"name":null},{"time":1.6333,"name":"TX/cao"},{"time":2.3333,"name":null}]},"TX_guangquan5":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian7":{"attachment":[{"name":null}]},"TX_guangxian2":{"attachment":[{"name":null}]},"TX/TX_yan1_4":{"color":[{"time":0.2667,"color":"ffffffff"},{"time":0.4333,"color":"ffffff00"},{"time":0.4667,"color":"ffffffff"},{"time":0.6333,"color":"ffffff00"},{"time":0.6667,"color":"ffffffff"},{"time":0.8333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.2667,"name":"TX/TX_S1_yan_0024"},{"time":0.8333,"name":null}]},"TX/cao4":{"attachment":[{"name":null}]},"TX/chentu1":{"color":[{"time":0.1,"color":"ffffffff"},{"time":0.4333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.1,"name":"TX/chentu1"},{"time":0.1333,"name":"TX/chentu3"},{"time":0.1667,"name":"TX/chentu5"}]},"TX/cao2":{"color":[{"time":0.1333,"color":"ffffffff"},{"time":0.4,"color":"ffffff00","curve":"stepped"},{"time":0.9,"color":"ffffffff"},{"time":1.1,"color":"ffffff00","curve":"stepped"},{"time":1.6333,"color":"ffffffff"},{"time":2.2333,"color":"ffffff80"}],"attachment":[{"name":null},{"time":0.1333,"name":"TX/cao"},{"time":2.3333,"name":null}]},"BZ/z_bianzi6":{"attachment":[{"name":null},{"time":0.1333,"name":"BZ/y_bianzi1_bz"},{"time":2.8667,"name":null}]},"TX/TX_yan1_7":{"color":[{"time":0.3333,"color":"ffffffff"},{"time":0.5,"color":"ffffff00","curve":"stepped"},{"time":0.5333,"color":"ffffffff"},{"time":0.7,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.3333,"name":"TX/TX_S1_yan_0029"}]},"TX/cao7":{"color":[{"time":0.3333,"color":"ffffffff"},{"time":0.4333,"color":"ffffff00","curve":"stepped"},{"time":0.4667,"color":"ffffffff"},{"time":0.5667,"color":"ffffff00","curve":"stepped"},{"time":0.6,"color":"ffffffff"},{"time":0.7,"color":"ffffff00","curve":"stepped"},{"time":0.7333,"color":"ffffffff"},{"time":0.8333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.3333,"name":"TX/cao"}]},"TX/cao10":{"color":[{"time":0.4,"color":"ffffffff"},{"time":0.5,"color":"ffffff00","curve":"stepped"},{"time":0.5333,"color":"ffffffff"},{"time":0.6333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.4,"name":"TX/cao"}]},"TX_feng_quan1":{"color":[{"time":0.1333,"color":"2a6948ff"}],"attachment":[{"name":null},{"time":0.1333,"name":"TX/TX_S1_shua_0012"},{"time":0.1667,"name":"TX/TX_S1_shua_0016"},{"time":0.2,"name":"TX/TX_S1_shua_0018"},{"time":0.2333,"name":"TX/TX_S1_shua_0010"},{"time":0.2667,"name":"TX/TX_S1_shua_0012"},{"time":0.3,"name":"TX/TX_S1_shua_0014"},{"time":0.3333,"name":"TX/TX_S1_shua_0016"},{"time":0.3667,"name":"TX/TX_S1_shua_0010"},{"time":0.4,"name":"TX/TX_S1_shua_0012"},{"time":0.4333,"name":"TX/TX_S1_shua_0014"},{"time":0.4667,"name":"TX/TX_S1_shua_0016"},{"time":0.5,"name":"TX/TX_S1_shua_0018"},{"time":0.5333,"name":"TX/TX_S1_shua_0012"},{"time":0.5667,"name":"TX/TX_S1_shua_0014"},{"time":0.6,"name":"TX/TX_S1_shua_0016"},{"time":0.6333,"name":"TX/TX_S1_shua_0018"},{"time":0.6667,"name":"TX/TX_S1_shua_0010"},{"time":0.7,"name":"TX/TX_S1_shua_0014"},{"time":0.7333,"name":"TX/TX_S1_shua_0016"},{"time":0.8,"name":null}]},"TX_cao_hou2":{"color":[{"time":0.1333,"color":"bfab9aff"},{"time":0.4,"color":"bfab9a00","curve":"stepped"},{"time":0.9333,"color":"bfab9aff"},{"time":1.1333,"color":"bfab9a00","curve":"stepped"},{"time":1.6333,"color":"bfab9aa0"},{"time":2.2333,"color":"bfab9a78"}],"attachment":[{"name":null},{"time":0.1333,"name":"TX/cao"},{"time":2.3,"name":null}]},"zui":{"attachment":[{"name":"zui_pingshi"},{"time":0.0333,"name":"zui_gongji"},{"time":1.6333,"name":null},{"time":2.2667,"name":"zui_gongji"},{"time":4.7,"name":"zui_pingshi"}]},"BZ/y_shou":{"attachment":[{"name":null},{"time":1.6333,"name":"BZ/y_shou_bz"},{"time":2.2667,"name":null}]},"TX/shuye4":{"color":[{"time":3.7,"color":"ffffffff"},{"time":3.8333,"color":"ffffff00"},{"time":3.8667,"color":"ffffffff"},{"time":4,"color":"ffffff00"},{"time":4.0333,"color":"ffffffff"},{"time":4.1333,"color":"ffffff00"},{"time":4.1667,"color":"ffffffff"},{"time":4.2667,"color":"ffffff00"},{"time":4.3,"color":"ffffffff"},{"time":4.4333,"color":"ffffff00"},{"time":4.4667,"color":"ffffffff"},{"time":4.6,"color":"ffffff00"},{"time":4.6333,"color":"ffffffff"},{"time":4.7667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":1.6333,"name":"TX/shuye"},{"time":2.3667,"name":null},{"time":3.7,"name":"TX/shuye"}]},"z-yanjing":{"attachment":[{"name":"z_yanjing_pingshi"},{"time":0.0333,"name":"z_yanjing_gongji"},{"time":1.6333,"name":null},{"time":2.2667,"name":"z_yanjing_gongji"},{"time":4.7,"name":"z_yanjing_pingshi"}]},"TX_SK2_shouji_lie_quan4":{"color":[{"time":3.7,"color":"ffffffff"},{"time":3.8667,"color":"ffffff00"},{"time":3.9,"color":"ffffffff"},{"time":4.0667,"color":"ffffff00"},{"time":4.1,"color":"ffffffff"},{"time":4.2667,"color":"ffffff00"},{"time":4.3,"color":"ffffffff"},{"time":4.4667,"color":"ffffff00"},{"time":4.5,"color":"ffffffff"},{"time":4.6667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":3.7,"name":"TX/shuangcdr_00010002"}]},"BZ/y_bianzi_hou":{"attachment":[{"name":null},{"time":1.6333,"name":"BZ/z_bianzi2_bz"},{"time":3.0667,"name":null}]},"TX_feng_quan2":{"color":[{"time":0.1333,"color":"2a6948ff"}],"attachment":[{"name":null},{"time":0.1333,"name":"TX/TX_S1_shua_0012"},{"time":0.1667,"name":"TX/TX_S1_shua_0014"},{"time":0.2,"name":"TX/TX_S1_shua_0018"},{"time":0.2333,"name":"TX/TX_S1_shua_0010"},{"time":0.2667,"name":"TX/TX_S1_shua_0012"},{"time":0.3,"name":"TX/TX_S1_shua_0014"},{"time":0.3333,"name":"TX/TX_S1_shua_0018"},{"time":0.3667,"name":"TX/TX_S1_shua_0010"},{"time":0.4,"name":"TX/TX_S1_shua_0012"},{"time":0.4333,"name":"TX/TX_S1_shua_0014"},{"time":0.4667,"name":"TX/TX_S1_shua_0016"},{"time":0.5,"name":"TX/TX_S1_shua_0018"},{"time":0.5333,"name":"TX/TX_S1_shua_0012"},{"time":0.5667,"name":"TX/TX_S1_shua_0014"},{"time":0.6,"name":"TX/TX_S1_shua_0016"},{"time":0.6333,"name":"TX/TX_S1_shua_0018"},{"time":0.6667,"name":"TX/TX_S1_shua_0012"},{"time":0.7,"name":"TX/TX_S1_shua_0014"},{"time":0.7333,"name":"TX/TX_S1_shua_0016"},{"time":0.8,"name":null}]},"BZ/z_bianzi4":{"attachment":[{"name":null},{"time":0.8,"name":"BZ/y_bianzi3_bz"},{"time":2.8667,"name":null}]},"TX_shouji3_3":{"attachment":[{"name":null},{"time":2.2667,"name":"TX/atk_guangci3_0027"},{"time":2.3,"name":"TX/atk_guangci3_0028"},{"time":2.3333,"name":"TX/atk_guangci3_0031"},{"time":2.3667,"name":null}]},"TX_huaban1":{"attachment":[{"name":null}]},"TX/shuyefaguang7":{"color":[{"time":1.6333,"color":"c2c2c297"}],"attachment":[{"name":null},{"time":1.6333,"name":"TX/shuyefaguang"},{"time":2.4,"name":null}]},"TX/liuguang_mi2":{"color":[{"time":0.9667,"color":"6bff27ff"}],"attachment":[{"name":null},{"time":0.9667,"name":"TX/suduxian_mi"},{"time":1.6333,"name":null}]},"TX_SK2_shouji_lie9":{"attachment":[{"name":null},{"time":3.9333,"name":"TX/atk_guangci3_0027"},{"time":3.9667,"name":"TX/atk_guangci3_0028"},{"time":4,"name":"TX/atk_guangci3_0030"},{"time":4.0333,"name":"TX/atk_guangci3_0031"},{"time":4.0667,"name":null},{"time":4.2333,"name":"TX/atk_guangci3_0027"},{"time":4.2667,"name":"TX/atk_guangci3_0028"},{"time":4.3,"name":"TX/atk_guangci3_0030"},{"time":4.3333,"name":"TX/atk_guangci3_0031"},{"time":4.3667,"name":null},{"time":4.5,"name":"TX/atk_guangci3_0027"},{"time":4.5333,"name":"TX/atk_guangci3_0028"},{"time":4.5667,"name":"TX/atk_guangci3_0030"},{"time":4.6,"name":"TX/atk_guangci3_0031"},{"time":4.6333,"name":null},{"time":4.7,"name":"TX/atk_guangci3_0027"},{"time":4.7333,"name":"TX/atk_guangci3_0028"},{"time":4.7667,"name":"TX/atk_guangci3_0030"},{"time":4.8,"name":"TX/atk_guangci3_0031"},{"time":4.8333,"name":null}]},"TX/TX_yan1_1_hou5":{"color":[{"time":0.4,"color":"967f74ff"},{"time":0.6667,"color":"967f7400"},{"time":0.7,"color":"967f74ff"},{"time":0.9667,"color":"967f7400"}],"attachment":[{"name":null},{"time":0.4,"name":"TX/TX_S1_yan_27"},{"time":0.8667,"name":null}]},"TX/TX_yan1_1_hou4":{"attachment":[{"name":null}]},"TX/cao5":{"color":[{"time":0.2667,"color":"ffffffff"},{"time":0.3667,"color":"f9ffff00","curve":"stepped"},{"time":0.4,"color":"ffffffff"},{"time":0.5,"color":"f9ffff00","curve":"stepped"},{"time":0.5333,"color":"ffffffff"},{"time":0.6333,"color":"f9ffff00","curve":"stepped"},{"time":0.6667,"color":"ffffffff"},{"time":0.7667,"color":"f9ffff00"}],"attachment":[{"name":null},{"time":0.2667,"name":"TX/cao"}]},"TX_SK2_shouji_lie_quan":{"color":[{"time":3.7333,"color":"ffffffff"},{"time":3.8667,"color":"f7fcff00"},{"time":3.9667,"color":"ffffffff"},{"time":4.1,"color":"f7fcff00"},{"time":4.2667,"color":"ffffffff"},{"time":4.4,"color":"f7fcff00"},{"time":4.5667,"color":"ffffffff"},{"time":4.7,"color":"f7fcff00"}],"attachment":[{"name":null},{"time":3.7333,"name":"TX/shuangcdr_00010002"}]},"TX_shouji3_4":{"attachment":[{"name":null},{"time":2.3,"name":"TX/atk_guangci3_0025"},{"time":2.3333,"name":"TX/atk_guangci3_0031"},{"time":2.3667,"name":null}]},"y_houtui":{"attachment":[{"name":"y_houtui"},{"time":1.6333,"name":null},{"time":2.2667,"name":"y_houtui"}]},"BZ/zhongzi":{"attachment":[{"name":null},{"time":1.6333,"name":"BZ/zhongzi_bz"},{"time":2.2667,"name":null}]},"y_qiantui":{"attachment":[{"name":"y_qiantui"},{"time":1.6333,"name":null},{"time":2.2667,"name":"y_qiantui"}]},"TX/cao9":{"color":[{"time":0.3667,"color":"ffffffff"},{"time":0.4667,"color":"0059ff00","curve":"stepped"},{"time":0.5,"color":"ffffffff"},{"time":0.6,"color":"0059ff00"}],"attachment":[{"name":null},{"time":0.3667,"name":"TX/cao"}]},"BZ/z_bianzi_hou":{"attachment":[{"name":null},{"time":0.0333,"name":"BZ/y_bianzi3_bz"},{"time":0.8,"name":null},{"time":1.6333,"name":"BZ/y_bianzi3_bz"},{"time":2.9333,"name":null}]},"BZ/z_bianzi2_bz_g":{"attachment":[{"name":null},{"time":0.1333,"name":"BZ/z_bianzi2_bz_g"},{"time":1.6333,"name":null},{"time":3.0333,"name":"BZ/z_bianzi2_bz_g"}]},"TX/TX_yan1_2":{"color":[{"time":0.1333,"color":"ffffffff"},{"time":0.5667,"color":"ffffff00","curve":"stepped"},{"time":1.6333,"color":"c9b6adb0"}],"attachment":[{"name":null},{"time":0.1333,"name":"TX/TX_S1_yan_25"},{"time":2.3,"name":null}]},"TX_SK2_liuguang_cu":{"color":[{"time":1,"color":"a5ff49ff"}],"attachment":[{"name":null},{"time":1,"name":"TX/b_lg_2"},{"time":1.6333,"name":null}]},"TX/shuye":{"color":[{"time":1.6333,"color":"969696ba"},{"time":2.2333,"color":"9c9c9cff"},{"time":3.7,"color":"ffffffff"},{"time":3.8333,"color":"ffffff00"},{"time":3.8667,"color":"ffffffff"},{"time":4,"color":"ffffff00"},{"time":4.0333,"color":"ffffffff"},{"time":4.1333,"color":"ffffff00"},{"time":4.1667,"color":"ffffffff"},{"time":4.2667,"color":"ffffff00"},{"time":4.3,"color":"ffffffff"},{"time":4.4333,"color":"ffffff00"},{"time":4.4667,"color":"ffffffff"},{"time":4.6,"color":"ffffff00"},{"time":4.6333,"color":"ffffffff"},{"time":4.7667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":1.6333,"name":"TX/shuye"},{"time":2.3333,"name":null},{"time":3.7,"name":"TX/shuye"}]},"z_qiantui":{"attachment":[{"name":"z_qiantui"},{"time":1.6333,"name":null},{"time":2.2667,"name":"z_qiantui"}]},"TX/suduxian_mi1":{"color":[{"time":0.8667,"color":"000000ff"}],"attachment":[{"name":null},{"time":0.8667,"name":"TX/suduxian_mi"},{"time":1.6333,"name":null},{"time":2.4,"name":"TX/suduxian_mi"}]},"BZ/y_bianzi_hou2":{"attachment":[{"name":null},{"time":1.6333,"name":"BZ/z_bianzi1_bz"},{"time":3.0667,"name":null}]},"TX_huarui":{"attachment":[{"name":null}]},"BZ/shenti":{"attachment":[{"name":null},{"time":1.6333,"name":"BZ/shenti_bz"},{"time":2.2667,"name":null}]},"TX_SK2_shouji_quan3":{"attachment":[{"name":null},{"time":3.9,"name":"TX/Energy 007 Impact Radial_00008"},{"time":3.9333,"name":"TX/Energy 007 Impact Radial_00010"},{"time":3.9667,"name":"TX/Energy 007 Impact Radial_00012"},{"time":4,"name":"TX/Energy 007 Impact Radial_00015"},{"time":4.0333,"name":null},{"time":4.2,"name":"TX/Energy 007 Impact Radial_00008"},{"time":4.2333,"name":"TX/Energy 007 Impact Radial_00010"},{"time":4.2667,"name":"TX/Energy 007 Impact Radial_00012"},{"time":4.3,"name":"TX/Energy 007 Impact Radial_00015"},{"time":4.3333,"name":null},{"time":4.4667,"name":"TX/Energy 007 Impact Radial_00008"},{"time":4.5,"name":"TX/Energy 007 Impact Radial_00010"},{"time":4.5333,"name":"TX/Energy 007 Impact Radial_00012"},{"time":4.5667,"name":"TX/Energy 007 Impact Radial_00015"},{"time":4.6,"name":null},{"time":4.6667,"name":"TX/Energy 007 Impact Radial_00008"},{"time":4.7,"name":"TX/Energy 007 Impact Radial_00010"},{"time":4.7333,"name":"TX/Energy 007 Impact Radial_00012"},{"time":4.7667,"name":"TX/Energy 007 Impact Radial_00015"},{"time":4.8,"name":null}]},"TX/chentu3":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie5":{"attachment":[{"name":null},{"time":3.8333,"name":"TX/atk_guangci3_0027"},{"time":3.8667,"name":"TX/atk_guangci3_0028"},{"time":3.9,"name":"TX/atk_guangci3_0030"},{"time":3.9333,"name":"TX/atk_guangci3_0031"},{"time":3.9667,"name":null},{"time":4.1,"name":"TX/atk_guangci3_0027"},{"time":4.1333,"name":"TX/atk_guangci3_0028"},{"time":4.1667,"name":"TX/atk_guangci3_0030"},{"time":4.2,"name":"TX/atk_guangci3_0031"},{"time":4.2333,"name":null},{"time":4.4,"name":"TX/atk_guangci3_0027"},{"time":4.4333,"name":"TX/atk_guangci3_0028"},{"time":4.4667,"name":"TX/atk_guangci3_0030"},{"time":4.5,"name":"TX/atk_guangci3_0031"},{"time":4.5333,"name":null},{"time":4.6333,"name":"TX/atk_guangci3_0027"},{"time":4.6667,"name":"TX/atk_guangci3_0028"},{"time":4.7,"name":"TX/atk_guangci3_0030"},{"time":4.7333,"name":"TX/atk_guangci3_0031"},{"time":4.7667,"name":null}]},"TX_BZ_yan":{"color":[{"time":1.6333,"color":"c4ac98c6"},{"time":2.2333,"color":"c4ac9883","curve":"stepped"},{"time":2.3,"color":"c4ac9883"},{"time":2.3333,"color":"c4ac98f8"}],"attachment":[{"name":null},{"time":1.6333,"name":"TX/TX_S1_yan_26"},{"time":2.3333,"name":"TX/TX_S1_yan_0029"},{"time":2.3667,"name":null}]},"TX_SK2_shouji_lie_quan2":{"color":[{"time":3.8,"color":"ffffffff"},{"time":3.9667,"color":"ffffff00","curve":"stepped"},{"time":4.0667,"color":"ffffffff"},{"time":4.2333,"color":"ffffff00","curve":"stepped"},{"time":4.3667,"color":"ffffffff"},{"time":4.5333,"color":"ffffff00","curve":"stepped"},{"time":4.6,"color":"ffffffff"},{"time":4.7667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":3.8,"name":"TX/shuangcdr_00010002"}]},"TX_huaban2_sanluo2":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie3":{"attachment":[{"name":null},{"time":3.7667,"name":"TX/atk_guangci3_0027"},{"time":3.8,"name":"TX/atk_guangci3_0028"},{"time":3.8333,"name":"TX/atk_guangci3_0030"},{"time":3.8667,"name":"TX/atk_guangci3_0031"},{"time":3.9,"name":null},{"time":4,"name":"TX/atk_guangci3_0027"},{"time":4.0333,"name":"TX/atk_guangci3_0028"},{"time":4.0667,"name":"TX/atk_guangci3_0030"},{"time":4.1,"name":"TX/atk_guangci3_0031"},{"time":4.1333,"name":null},{"time":4.3,"name":"TX/atk_guangci3_0027"},{"time":4.3333,"name":"TX/atk_guangci3_0028"},{"time":4.3667,"name":"TX/atk_guangci3_0030"},{"time":4.4,"name":"TX/atk_guangci3_0031"},{"time":4.4333,"name":null},{"time":4.6,"name":"TX/atk_guangci3_0027"},{"time":4.6333,"name":"TX/atk_guangci3_0028"},{"time":4.6667,"name":"TX/atk_guangci3_0030"},{"time":4.7,"name":"TX/atk_guangci3_0031"},{"time":4.7333,"name":null}]},"TX/cao1":{"color":[{"time":0.1333,"color":"ffffffff"},{"time":0.3333,"color":"ffffff00","curve":"stepped"},{"time":0.8667,"color":"ffffffff","curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"color":"ffffff5b","curve":"stepped"},{"time":1.6333,"color":"ab8b5cff"},{"time":2.2333,"color":"ab9b768a"}],"attachment":[{"name":null},{"time":0.1333,"name":"TX/cao"},{"time":1,"name":null},{"time":1.6333,"name":"TX/cao"},{"time":2.3333,"name":null}]},"TX_SK2_shouji_xian4":{"attachment":[{"name":null}]},"TX/guangyun":{"color":[{"time":1.6333,"color":"b9ffba00"},{"time":2.2333,"color":"b9ffba92","curve":"stepped"},{"time":2.8333,"color":"b9ffba3a","curve":0.123,"c2":0.3,"c3":0.56,"c4":0.95},{"time":3.6667,"color":"eaffcf5b"},{"time":3.7,"color":"ddff9592"},{"time":4.6,"color":"ddff95ba"}],"attachment":[{"name":null},{"time":1.6333,"name":"TX/guangyun"},{"time":2.3333,"name":null},{"time":2.8333,"name":"TX/guangyun"},{"time":4.6333,"name":null}]},"TX_shouji3_2":{"attachment":[{"name":null},{"time":2.2667,"name":"TX/atk_guangci3_0027"},{"time":2.3,"name":"TX/atk_guangci3_0028"},{"time":2.3333,"name":"TX/atk_guangci3_0031"},{"time":2.3667,"name":null}]},"TX/chentu2":{"color":[{"time":0.2333,"color":"ffffffff"},{"time":0.8,"color":"ffffff67"}],"attachment":[{"name":null},{"time":0.2333,"name":"TX/chentu1"},{"time":0.2667,"name":"TX/chentu3"},{"time":0.3,"name":"TX/chentu4"},{"time":0.3333,"name":"TX/chentu1"},{"time":0.3667,"name":"TX/chentu3"},{"time":0.4,"name":"TX/chentu4"},{"time":0.4333,"name":"TX/chentu1"},{"time":0.4667,"name":"TX/chentu3"},{"time":0.5,"name":"TX/chentu4"},{"time":0.5333,"name":"TX/chentu1"},{"time":0.5667,"name":"TX/chentu3"},{"time":0.6,"name":"TX/chentu4"},{"time":0.6333,"name":"TX/chentu1"},{"time":0.6667,"name":"TX/chentu3"},{"time":0.7,"name":"TX/chentu4"},{"time":0.7333,"name":"TX/chentu1"},{"time":0.7667,"name":"TX/chentu3"},{"time":0.8,"name":"TX/chentu4"},{"time":0.8333,"name":null}]},"TX_SK2_shouji_lie12":{"attachment":[{"name":null},{"time":3.7333,"name":"TX/atk_guangci3_0027"},{"time":3.7667,"name":"TX/atk_guangci3_0028"},{"time":3.8,"name":"TX/atk_guangci3_0030"},{"time":3.8333,"name":"TX/atk_guangci3_0031"},{"time":3.8667,"name":null},{"time":3.9333,"name":"TX/atk_guangci3_0027"},{"time":3.9667,"name":"TX/atk_guangci3_0028"},{"time":4,"name":"TX/atk_guangci3_0030"},{"time":4.0333,"name":"TX/atk_guangci3_0031"},{"time":4.0667,"name":null},{"time":4.1333,"name":"TX/atk_guangci3_0027"},{"time":4.1667,"name":"TX/atk_guangci3_0028"},{"time":4.2,"name":"TX/atk_guangci3_0030"},{"time":4.2333,"name":"TX/atk_guangci3_0031"},{"time":4.2667,"name":null},{"time":4.3333,"name":"TX/atk_guangci3_0027"},{"time":4.3667,"name":"TX/atk_guangci3_0028"},{"time":4.4,"name":"TX/atk_guangci3_0030"},{"time":4.4333,"name":"TX/atk_guangci3_0031"},{"time":4.4667,"name":null},{"time":4.5333,"name":"TX/atk_guangci3_0027"},{"time":4.5667,"name":"TX/atk_guangci3_0028"},{"time":4.6,"name":"TX/atk_guangci3_0030"},{"time":4.6333,"name":"TX/atk_guangci3_0031"},{"time":4.6667,"name":null}]},"BZ/z_bianzi5_liuguang2":{"attachment":[{"name":null},{"time":2.4,"name":"TX/z_bianzi2_bz_liuguang"},{"time":2.8667,"name":null}]},"TX/shuye5":{"color":[{"time":1.6333,"color":"a3a3a3ff"},{"time":2.2333,"color":"ffffffff"}],"attachment":[{"name":null}]},"TX/TX_yan1_1_hou3":{"color":[{"time":0.2667,"color":"b3a28fff"},{"time":0.4333,"color":"b3a28f00"},{"time":0.4667,"color":"b3a28fff"},{"time":0.6333,"color":"b3a28f00"},{"time":0.6667,"color":"b3a28fff"},{"time":0.8333,"color":"b3a28f00"}],"attachment":[{"name":null},{"time":0.2667,"name":"TX/TX_S1_yan_27"},{"time":0.8333,"name":null}]},"TX/shuye7":{"color":[{"time":2.2333,"color":"b0b0b0ff"}],"attachment":[{"name":null},{"time":1.6333,"name":"TX/shuye"},{"time":2.4,"name":null}]},"TX_huaban3":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou4":{"attachment":[{"name":null},{"time":2.8667,"name":"BZ/z_bianzi1_bz"}]},"BZ/z_bianzi_hou2":{"attachment":[{"name":null},{"time":0.0333,"name":"BZ/z_bianzi1_bz"},{"time":0.1333,"name":null}]},"TX_huaban1_sanluo2":{"attachment":[{"name":null}]},"TX_feng_quan_faguang4":{"color":[{"time":0.1333,"color":"6b6b6bff"},{"time":0.7333,"color":"7bff47ff"}],"attachment":[{"name":null},{"time":0.1333,"name":"TX/TX_S1_shua_0010"},{"time":0.1667,"name":"TX/TX_S1_shua_0014"},{"time":0.2,"name":"TX/TX_S1_shua_0016"},{"time":0.2333,"name":"TX/TX_S1_shua_0018"},{"time":0.2667,"name":"TX/TX_S1_shua_0010"},{"time":0.3,"name":"TX/TX_S1_shua_0012"},{"time":0.3333,"name":"TX/TX_S1_shua_0014"},{"time":0.3667,"name":"TX/TX_S1_shua_0018"},{"time":0.4,"name":"TX/TX_S1_shua_0010"},{"time":0.4333,"name":"TX/TX_S1_shua_0012"},{"time":0.4667,"name":"TX/TX_S1_shua_0014"},{"time":0.5,"name":"TX/TX_S1_shua_0018"},{"time":0.5333,"name":"TX/TX_S1_shua_0010"},{"time":0.5667,"name":"TX/TX_S1_shua_0012"},{"time":0.6,"name":"TX/TX_S1_shua_0014"},{"time":0.6333,"name":"TX/TX_S1_shua_0016"},{"time":0.6667,"name":"TX/TX_S1_shua_0010"},{"time":0.7,"name":"TX/TX_S1_shua_0012"},{"time":0.7333,"name":"TX/TX_S1_shua_0014"},{"time":0.8,"name":null}]},"TX/chentu_hou":{"color":[{"time":0.1,"color":"a19584ff"},{"time":0.5,"color":"a1958400"}],"attachment":[{"name":null},{"time":0.1,"name":"TX/chentu1"},{"time":0.1333,"name":"TX/chentu3"},{"time":0.1667,"name":"TX/chentu4"}]},"tou":{"attachment":[{"name":"tou"},{"time":1.6333,"name":null},{"time":2.2667,"name":"tou"}]},"TX_guangxian5":{"attachment":[{"name":null}]},"TX/TX_yan1_5":{"color":[{"time":0.2333,"color":"ffffffff"},{"time":0.4,"color":"ffffff00","curve":"stepped"},{"time":0.4333,"color":"ffffffff"},{"time":0.6,"color":"ffffff00","curve":"stepped"},{"time":0.6333,"color":"ffffffff"},{"time":0.8,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.2333,"name":"TX/TX_S1_yan_0029"}]},"TX/xuanzhuan":{"color":[{"time":0.1333,"color":"ffffffb5"}],"attachment":[{"name":null},{"time":0.1333,"name":"TX/xuanzhuan"},{"time":0.8,"name":null}]},"TX_feng_quan_faguang3":{"color":[{"time":0.1333,"color":"6b6b6bff"},{"time":0.7333,"color":"7bff47ff"}],"attachment":[{"name":null},{"time":0.1333,"name":"TX/TX_S1_shua_0010"},{"time":0.1667,"name":"TX/TX_S1_shua_0014"},{"time":0.2,"name":"TX/TX_S1_shua_0016"},{"time":0.2333,"name":"TX/TX_S1_shua_0018"},{"time":0.2667,"name":"TX/TX_S1_shua_0010"},{"time":0.3,"name":"TX/TX_S1_shua_0012"},{"time":0.3333,"name":"TX/TX_S1_shua_0016"},{"time":0.3667,"name":"TX/TX_S1_shua_0018"},{"time":0.4,"name":"TX/TX_S1_shua_0010"},{"time":0.4333,"name":"TX/TX_S1_shua_0012"},{"time":0.4667,"name":"TX/TX_S1_shua_0014"},{"time":0.5,"name":"TX/TX_S1_shua_0018"},{"time":0.5333,"name":"TX/TX_S1_shua_0010"},{"time":0.5667,"name":"TX/TX_S1_shua_0012"},{"time":0.6,"name":"TX/TX_S1_shua_0014"},{"time":0.6333,"name":"TX/TX_S1_shua_0016"},{"time":0.6667,"name":"TX/TX_S1_shua_0018"},{"time":0.7,"name":"TX/TX_S1_shua_0012"},{"time":0.7333,"name":"TX/TX_S1_shua_0014"},{"time":0.8,"name":null}]},"zhonzi":{"attachment":[{"name":"zhonzi"},{"time":1.6333,"name":null},{"time":2.2667,"name":"zhonzi"}]},"z-meimao":{"attachment":[{"name":"z_meimao_pingshi"},{"time":0.0333,"name":"z_meimao_gongji"},{"time":1.6333,"name":null},{"time":2.2667,"name":"z_meimao_gongji"},{"time":4.7,"name":"z_meimao_pingshi"}]},"TX/shuyefaguang8":{"color":[{"time":1.6333,"color":"bfbfbf92"}],"attachment":[{"name":null},{"time":1.6333,"name":"TX/shuyefaguang"},{"time":2.4,"name":null}]},"TX/shuye9":{"color":[{"time":3.7,"color":"ffffffff"},{"time":3.8333,"color":"ffffff00"},{"time":3.8667,"color":"ffffffff"},{"time":4,"color":"ffffff00"},{"time":4.0333,"color":"ffffffff"},{"time":4.1333,"color":"ffffff00"},{"time":4.1667,"color":"ffffffff"},{"time":4.2667,"color":"ffffff00"},{"time":4.3,"color":"ffffffff"},{"time":4.4333,"color":"ffffff00"},{"time":4.4667,"color":"ffffffff"},{"time":4.6,"color":"ffffff00"},{"time":4.6333,"color":"ffffffff"},{"time":4.7667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":1.6333,"name":"TX/shuye"},{"time":2.4,"name":null},{"time":3.7,"name":"TX/shuye"}]},"TX_guangxian4":{"attachment":[{"name":null}]},"TX_cao_hou4":{"color":[{"time":0.3,"color":"c2c2c2a8"},{"time":0.7667,"color":"c2c2c23c"}],"attachment":[{"name":null},{"time":0.3,"name":"TX/cao"},{"time":0.7667,"name":null}]},"TX_SK2_shouji_quan":{"attachment":[{"name":null},{"time":3.7333,"name":"TX/Energy 007 Impact Radial_00008"},{"time":3.7667,"name":"TX/Energy 007 Impact Radial_00010"},{"time":3.8,"name":"TX/Energy 007 Impact Radial_00012"},{"time":3.8333,"name":"TX/Energy 007 Impact Radial_00015"},{"time":3.8667,"name":null},{"time":3.9667,"name":"TX/Energy 007 Impact Radial_00008"},{"time":4,"name":"TX/Energy 007 Impact Radial_00010"},{"time":4.0333,"name":"TX/Energy 007 Impact Radial_00012"},{"time":4.0667,"name":"TX/Energy 007 Impact Radial_00015"},{"time":4.1,"name":null},{"time":4.2667,"name":"TX/Energy 007 Impact Radial_00008"},{"time":4.3,"name":"TX/Energy 007 Impact Radial_00010"},{"time":4.3333,"name":"TX/Energy 007 Impact Radial_00012"},{"time":4.3667,"name":"TX/Energy 007 Impact Radial_00015"},{"time":4.4,"name":null},{"time":4.5667,"name":"TX/Energy 007 Impact Radial_00008"},{"time":4.6,"name":"TX/Energy 007 Impact Radial_00010"},{"time":4.6333,"name":"TX/Energy 007 Impact Radial_00012"},{"time":4.6667,"name":"TX/Energy 007 Impact Radial_00015"},{"time":4.7,"name":null}]},"BZ/z_bianzi_hou2_liuguang":{"attachment":[{"name":null}]},"TX/shuye3":{"color":[{"time":1.6333,"color":"8f8f8fff"},{"time":2.2333,"color":"a3a3a3ff"},{"time":3.7,"color":"fafafaff"},{"time":3.8333,"color":"fafafa00"},{"time":3.8667,"color":"fafafaff"},{"time":4,"color":"fafafa00"},{"time":4.0333,"color":"fafafaff"},{"time":4.1333,"color":"fafafa00"},{"time":4.1667,"color":"fafafaff"},{"time":4.2667,"color":"fafafa00"},{"time":4.3,"color":"fafafaff"},{"time":4.4333,"color":"fafafa00"},{"time":4.4667,"color":"fafafaff"},{"time":4.6,"color":"fafafa00"},{"time":4.6333,"color":"fafafaff"},{"time":4.7667,"color":"fafafa00"}],"attachment":[{"name":null},{"time":1.6333,"name":"TX/shuye"},{"time":2.4,"name":null},{"time":3.7,"name":"TX/shuye"}]},"TX/TX_yan1_1":{"color":[{"time":0.1333,"color":"ffffffff"},{"time":0.5667,"color":"ffffff00","curve":"stepped"},{"time":1.6333,"color":"ffffffff"},{"time":2.2333,"color":"ffffff94"},{"time":2.3,"color":"ebcfcfff","curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":2.3667,"color":"f7feffff"}],"attachment":[{"name":null},{"time":0.1333,"name":"TX/TX_S1_yan_0029"},{"time":2.2667,"name":null},{"time":2.3,"name":"TX/TX_S1_yan_0029"},{"time":2.3667,"name":null}]},"BZ/y_bianzi3":{"attachment":[{"name":"BZ/z_bianzi3_bz"}]},"TX/shuye2":{"color":[{"time":1.6333,"color":"a1a1a1ff"},{"time":2.2333,"color":"ffffffff"}],"attachment":[{"name":null},{"time":1.6333,"name":"TX/shuye"},{"time":2.4,"name":null}]},"TX/huiji1":{"color":[{"time":3.7,"color":"fcfeffff"}],"attachment":[{"name":null},{"time":3.7,"name":"TX/huiji"},{"time":4.6667,"name":null}]},"BZ/y_yanjing":{"attachment":[{"name":null},{"time":1.6333,"name":"BZ/y_yanjing_bz"},{"time":2.2667,"name":null}]},"TX/chentu4":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian2":{"attachment":[{"name":null}]},"TX_feng_quan3":{"color":[{"time":0.1333,"color":"2a6948ff"}],"attachment":[{"name":null},{"time":0.1333,"name":"TX/TX_S1_shua_0016"},{"time":0.1667,"name":"TX/TX_S1_shua_0012"},{"time":0.2,"name":"TX/TX_S1_shua_0010"},{"time":0.2333,"name":"TX/TX_S1_shua_0018"},{"time":0.2667,"name":"TX/TX_S1_shua_0016"},{"time":0.3,"name":"TX/TX_S1_shua_0014"},{"time":0.3333,"name":"TX/TX_S1_shua_0010"},{"time":0.3667,"name":"TX/TX_S1_shua_0018"},{"time":0.4,"name":"TX/TX_S1_shua_0016"},{"time":0.4333,"name":"TX/TX_S1_shua_0014"},{"time":0.4667,"name":"TX/TX_S1_shua_0012"},{"time":0.5,"name":"TX/TX_S1_shua_0018"},{"time":0.5333,"name":"TX/TX_S1_shua_0016"},{"time":0.5667,"name":"TX/TX_S1_shua_0014"},{"time":0.6,"name":"TX/TX_S1_shua_0012"},{"time":0.6333,"name":"TX/TX_S1_shua_0010"},{"time":0.6667,"name":"TX/TX_S1_shua_0016"},{"time":0.7,"name":"TX/TX_S1_shua_0014"},{"time":0.7333,"name":"TX/TX_S1_shua_0012"},{"time":0.8,"name":null}]},"TX/TX_yan1_8":{"color":[{"time":0.4,"color":"ffffffff"},{"time":0.5667,"color":"f3fcff00","curve":"stepped"},{"time":0.6,"color":"ffffffff"},{"time":0.7667,"color":"f3fcff00"}],"attachment":[{"name":null},{"time":0.4,"name":"TX/TX_S1_yan_0029"}]},"TX_bao_hou":{"attachment":[{"name":null},{"time":2.2667,"name":"TX/shuangcdr_00010002"},{"time":2.3333,"name":null}]},"ZZZZZ":{"attachment":[{"name":"ZZZZZ"}]},"y-yanjing":{"attachment":[{"name":"y_yanjing_pingshi"},{"time":0.0333,"name":"y_yanjing_gongji"},{"time":1.6333,"name":null},{"time":2.2667,"name":"y_yanjing_gongji"},{"time":4.7,"name":"y_yanjing_pingshi"}]},"TX_SK2_shouji_xian5":{"attachment":[{"name":null},{"time":3.9,"name":"TX/daoguang_red"}]},"TX_feng4":{"attachment":[{"name":null}]},"TX_shouji3_1":{"attachment":[{"name":null},{"time":2.2667,"name":"TX/atk_guangci3_0025"},{"time":2.3333,"name":"TX/atk_guangci3_0031"},{"time":2.3667,"name":null}]},"TX_SK2_shouji_lie_quan3":{"color":[{"time":3.9,"color":"ffffffff"},{"time":4.0667,"color":"ffffff00","curve":"stepped"},{"time":4.2,"color":"ffffffff"},{"time":4.3667,"color":"ffffff00","curve":"stepped"},{"time":4.4667,"color":"ffffffff"},{"time":4.6333,"color":"ffffff00","curve":"stepped"},{"time":4.6667,"color":"ffffffff"},{"time":4.8333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":3.9,"name":"TX/shuangcdr_00010002"}]},"shenti":{"attachment":[{"name":"shenti"},{"time":1.6333,"name":null},{"time":2.2667,"name":"shenti"}]},"TX/shuyefaguang3":{"color":[{"time":1.6333,"color":"adadad80"},{"time":2.2333,"color":"ffffff80"}],"attachment":[{"name":null},{"time":1.6333,"name":"TX/shuyefaguang"},{"time":2.4,"name":null}]},"TX/chentu5":{"attachment":[{"name":null}]},"BZ/z_yanjing":{"attachment":[{"name":null},{"time":1.6333,"name":"BZ/z_yanjing_bz"},{"time":2.2667,"name":null}]},"BZ/z_bianzi_hou3_liuguang":{"attachment":[{"name":null},{"time":2.8667,"name":"TX/liuguang3"}]},"TX_cao_hou1":{"color":[{"time":0.1333,"color":"9c7977ff"},{"time":0.3667,"color":"9c797700","curve":"stepped"},{"time":0.8667,"color":"d9a7a5ff"},{"time":1.1333,"color":"d9a7a500","curve":"stepped"},{"time":1.6333,"color":"d9a7a5ff"},{"time":2.2333,"color":"d9a7a58d"}],"attachment":[{"name":null},{"time":0.1333,"name":"TX/cao"},{"time":2.3,"name":null}]},"TX/cao8":{"color":[{"time":0.3333,"color":"ffffffff"},{"time":0.4333,"color":"ffffff00","curve":"stepped"},{"time":0.4667,"color":"ffffffff"},{"time":0.5667,"color":"ffffff00","curve":"stepped"},{"time":0.6,"color":"ffffffff"},{"time":0.7,"color":"ffffff00","curve":"stepped"},{"time":0.7333,"color":"ffffffff"},{"time":0.8333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.3333,"name":"TX/cao"}]},"TX_SK2_shouji_quan4":{"attachment":[{"name":null},{"time":3.7,"name":"TX/Energy 007 Impact Radial_00008"},{"time":3.7333,"name":"TX/Energy 007 Impact Radial_00010"},{"time":3.7667,"name":"TX/Energy 007 Impact Radial_00012"},{"time":3.8,"name":"TX/Energy 007 Impact Radial_00015"},{"time":3.8333,"name":null},{"time":3.9,"name":"TX/Energy 007 Impact Radial_00008"},{"time":3.9333,"name":"TX/Energy 007 Impact Radial_00010"},{"time":3.9667,"name":"TX/Energy 007 Impact Radial_00012"},{"time":4,"name":"TX/Energy 007 Impact Radial_00015"},{"time":4.0333,"name":null},{"time":4.1,"name":"TX/Energy 007 Impact Radial_00008"},{"time":4.1333,"name":"TX/Energy 007 Impact Radial_00010"},{"time":4.1667,"name":"TX/Energy 007 Impact Radial_00012"},{"time":4.2,"name":"TX/Energy 007 Impact Radial_00015"},{"time":4.2333,"name":null},{"time":4.3,"name":"TX/Energy 007 Impact Radial_00008"},{"time":4.3333,"name":"TX/Energy 007 Impact Radial_00010"},{"time":4.3667,"name":"TX/Energy 007 Impact Radial_00012"},{"time":4.4,"name":"TX/Energy 007 Impact Radial_00015"},{"time":4.4333,"name":null},{"time":4.5,"name":"TX/Energy 007 Impact Radial_00008"},{"time":4.5333,"name":"TX/Energy 007 Impact Radial_00010"},{"time":4.5667,"name":"TX/Energy 007 Impact Radial_00012"},{"time":4.6,"name":"TX/Energy 007 Impact Radial_00015"},{"time":4.6333,"name":null}]},"TX_SK2_shouji_xian1":{"attachment":[{"name":null},{"time":3.7333,"name":"TX/daoguang_red"}]},"TX/TX_yan1_1_hou":{"color":[{"time":0.1333,"color":"756d67ff"},{"time":0.7,"color":"756d6700","curve":"stepped"},{"time":1.6333,"color":"756d67b1"},{"time":2.2333,"color":"756d678d"}],"attachment":[{"name":null},{"time":0.1333,"name":"TX/TX_S1_yan_27"},{"time":2.3,"name":null}]},"TX_SK2_shouji_lie10":{"attachment":[{"name":null},{"time":3.7333,"name":"TX/atk_guangci3_0027"},{"time":3.7667,"name":"TX/atk_guangci3_0028"},{"time":3.8,"name":"TX/atk_guangci3_0030"},{"time":3.8333,"name":"TX/atk_guangci3_0031"},{"time":3.8667,"name":null},{"time":3.9333,"name":"TX/atk_guangci3_0027"},{"time":3.9667,"name":"TX/atk_guangci3_0028"},{"time":4,"name":"TX/atk_guangci3_0030"},{"time":4.0333,"name":"TX/atk_guangci3_0031"},{"time":4.0667,"name":null},{"time":4.1333,"name":"TX/atk_guangci3_0027"},{"time":4.1667,"name":"TX/atk_guangci3_0028"},{"time":4.2,"name":"TX/atk_guangci3_0030"},{"time":4.2333,"name":"TX/atk_guangci3_0031"},{"time":4.2667,"name":null},{"time":4.3333,"name":"TX/atk_guangci3_0027"},{"time":4.3667,"name":"TX/atk_guangci3_0028"},{"time":4.4,"name":"TX/atk_guangci3_0030"},{"time":4.4333,"name":"TX/atk_guangci3_0031"},{"time":4.4667,"name":null},{"time":4.5333,"name":"TX/atk_guangci3_0027"},{"time":4.5667,"name":"TX/atk_guangci3_0028"},{"time":4.6,"name":"TX/atk_guangci3_0030"},{"time":4.6333,"name":"TX/atk_guangci3_0031"},{"time":4.6667,"name":null}]},"TX/TX_yan1_1_hou2":{"color":[{"time":0.1333,"color":"c4c1baff"},{"time":0.6,"color":"c4c1ba00"}],"attachment":[{"name":null},{"time":0.1333,"name":"TX/TX_S1_yan_0029"}]},"TX/suduxian_mi_hou1":{"color":[{"time":2.4,"color":"000000ff"}],"attachment":[{"name":null},{"time":2.4,"name":"TX/suduxian_mi"}]},"TX_SK2_liuguang":{"color":[{"time":0.1333,"color":"ffffff00"},{"time":0.8,"color":"ffffffff"}],"attachment":[{"name":null},{"time":0.1333,"name":"TX/liuguang"},{"time":0.8667,"name":null}]},"TX/liuguang7_BZH":{"attachment":[{"name":null},{"time":3.2,"name":"TX/liuguang"},{"time":3.7,"name":null}]},"TX/z_bianzi2_bz_liuguang2":{"attachment":[{"name":null},{"time":0.8667,"name":"TX/z_bianzi2_bz_liuguang"},{"time":1.6333,"name":null},{"time":2.4,"name":"TX/z_bianzi2_bz_liuguang"}]},"TX_guangquan":{"color":[{"time":2.2667,"color":"ffffffff"},{"time":2.3667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":2.2667,"name":"TX/Energy 007 Impact Radial_00012"},{"time":2.3,"name":"TX/Energy 007 Impact Radial_00015"},{"time":2.3333,"name":null}]},"TX_guangquan3":{"attachment":[{"name":null}]},"TX/shuyefaguang":{"color":[{"time":1.6333,"color":"adadad9c"},{"time":2.2333,"color":"a3a3a36f"}],"attachment":[{"name":null},{"time":1.6333,"name":"TX/shuyefaguang"},{"time":2.3333,"name":null}]},"TX_feng_quan_faguang2":{"color":[{"time":0.1333,"color":"ffffffff","curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"color":"97ff6cff"}],"attachment":[{"name":null},{"time":0.1333,"name":"TX/TX_S1_shua_0010"},{"time":0.1667,"name":"TX/TX_S1_shua_0014"},{"time":0.2,"name":"TX/TX_S1_shua_0016"},{"time":0.2333,"name":"TX/TX_S1_shua_0018"},{"time":0.2667,"name":"TX/TX_S1_shua_0010"},{"time":0.3,"name":"TX/TX_S1_shua_0012"},{"time":0.3333,"name":"TX/TX_S1_shua_0016"},{"time":0.3667,"name":"TX/TX_S1_shua_0018"},{"time":0.4,"name":"TX/TX_S1_shua_0010"},{"time":0.4333,"name":"TX/TX_S1_shua_0012"},{"time":0.4667,"name":"TX/TX_S1_shua_0014"},{"time":0.5,"name":"TX/TX_S1_shua_0016"},{"time":0.5333,"name":"TX/TX_S1_shua_0010"},{"time":0.5667,"name":"TX/TX_S1_shua_0012"},{"time":0.6,"name":"TX/TX_S1_shua_0014"},{"time":0.6333,"name":"TX/TX_S1_shua_0016"},{"time":0.6667,"name":"TX/TX_S1_shua_0010"},{"time":0.7,"name":"TX/TX_S1_shua_0012"},{"time":0.7333,"name":"TX/TX_S1_shua_0014"},{"time":0.8,"name":null}]},"TX/shuyefaguang5":{"color":[{"time":1.6333,"color":"a3a3a3ff"},{"time":2.2333,"color":"ffffffff"}],"attachment":[{"name":null}]},"TX_feng1":{"attachment":[{"name":null},{"time":0.0667,"name":"TX/TX_S1_shua_0010"},{"time":0.1,"name":"TX/TX_S1_shua_0012"},{"time":0.1333,"name":"TX/TX_S1_shua_0014"},{"time":0.1667,"name":"TX/TX_S1_shua_0016"},{"time":0.2,"name":null},{"time":0.8,"name":"TX/TX_S1_shua_0010"},{"time":0.8333,"name":"TX/TX_S1_shua_0012"},{"time":0.8667,"name":"TX/TX_S1_shua_0014"},{"time":0.9,"name":"TX/TX_S1_shua_0016"},{"time":0.9333,"name":"TX/TX_S1_shua_0018"},{"time":0.9667,"name":null},{"time":1.6333,"name":"TX/TX_S1_shua_0010"},{"time":1.6667,"name":"TX/TX_S1_shua_0014"},{"time":1.7,"name":"TX/TX_S1_shua_0016"},{"time":1.7333,"name":"TX/TX_S1_shua_0018"},{"time":1.7667,"name":null},{"time":2.3,"name":"TX/TX_S1_shua_0010"},{"time":2.3333,"name":"TX/TX_S1_shua_0014"},{"time":2.3667,"name":"TX/TX_S1_shua_0016"},{"time":2.4,"name":null}]},"TX/suduxian_mi2":{"color":[{"time":0.8667,"color":"ffbebeff","curve":"stepped"},{"time":2.4,"color":"000000ff"}],"attachment":[{"name":null},{"time":0.8667,"name":"TX/suduxian_mi"},{"time":1.5333,"name":null},{"time":2.4,"name":"TX/suduxian_mi"}]},"BZ/zuiba":{"attachment":[{"name":null},{"time":1.6333,"name":"BZ/zuiba_bz"},{"time":2.2667,"name":null}]},"TX_guangquan2":{"attachment":[{"name":null}]},"y-meimao":{"attachment":[{"name":"y_meimao_pingshi"},{"time":0.0333,"name":"y_meimao_gongji"},{"time":1.6333,"name":null},{"time":2.2667,"name":"y_meimao_gongji"},{"time":4.7,"name":"y_meimao_pingshi"}]},"TX/cao6":{"color":[{"time":0.3,"color":"ffffffff"},{"time":0.4,"color":"ffffff00","curve":"stepped"},{"time":0.4333,"color":"ffffffff"},{"time":0.5333,"color":"ffffff00","curve":"stepped"},{"time":0.5667,"color":"ffffffff"},{"time":0.6667,"color":"ffffff00","curve":"stepped"},{"time":0.7,"color":"ffffffff"},{"time":0.8,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.3,"name":"TX/cao"}]},"TX_feng_quan_faguang1":{"color":[{"time":0.1333,"color":"ffffffff","curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7333,"color":"97ff6cff"}],"attachment":[{"name":null},{"time":0.1333,"name":"TX/TX_S1_shua_0010"},{"time":0.1667,"name":"TX/TX_S1_shua_0014"},{"time":0.2,"name":"TX/TX_S1_shua_0016"},{"time":0.2333,"name":"TX/TX_S1_shua_0018"},{"time":0.2667,"name":"TX/TX_S1_shua_0010"},{"time":0.3,"name":"TX/TX_S1_shua_0012"},{"time":0.3333,"name":"TX/TX_S1_shua_0014"},{"time":0.3667,"name":"TX/TX_S1_shua_0018"},{"time":0.4,"name":"TX/TX_S1_shua_0010"},{"time":0.4333,"name":"TX/TX_S1_shua_0012"},{"time":0.4667,"name":"TX/TX_S1_shua_0014"},{"time":0.5,"name":"TX/TX_S1_shua_0018"},{"time":0.5333,"name":"TX/TX_S1_shua_0010"},{"time":0.5667,"name":"TX/TX_S1_shua_0012"},{"time":0.6,"name":"TX/TX_S1_shua_0014"},{"time":0.6333,"name":"TX/TX_S1_shua_0016"},{"time":0.6667,"name":"TX/TX_S1_shua_0018"},{"time":0.7,"name":"TX/TX_S1_shua_0012"},{"time":0.7333,"name":"TX/TX_S1_shua_0014"},{"time":0.8,"name":null}]},"TX/chentu6":{"attachment":[{"name":null}]},"TX/shuye8":{"attachment":[{"name":null},{"time":1.6333,"name":"TX/shuye"},{"time":2.4,"name":null}]},"BZ/z_bianzi_hou3":{"attachment":[{"name":null},{"time":2.8667,"name":"BZ/y_bianzi3_bz"}]},"TX_guangquan4":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie8":{"attachment":[{"name":null},{"time":3.9333,"name":"TX/atk_guangci3_0027"},{"time":3.9667,"name":"TX/atk_guangci3_0028"},{"time":4,"name":"TX/atk_guangci3_0030"},{"time":4.0333,"name":"TX/atk_guangci3_0031"},{"time":4.0667,"name":null},{"time":4.2333,"name":"TX/atk_guangci3_0027"},{"time":4.2667,"name":"TX/atk_guangci3_0028"},{"time":4.3,"name":"TX/atk_guangci3_0030"},{"time":4.3333,"name":"TX/atk_guangci3_0031"},{"time":4.3667,"name":null},{"time":4.5,"name":"TX/atk_guangci3_0027"},{"time":4.5333,"name":"TX/atk_guangci3_0028"},{"time":4.5667,"name":"TX/atk_guangci3_0030"},{"time":4.6,"name":"TX/atk_guangci3_0031"},{"time":4.6333,"name":null},{"time":4.7,"name":"TX/atk_guangci3_0027"},{"time":4.7333,"name":"TX/atk_guangci3_0028"},{"time":4.7667,"name":"TX/atk_guangci3_0030"},{"time":4.8,"name":"TX/atk_guangci3_0031"},{"time":4.8333,"name":null}]},"TX/z_bianzi2_bz_liuguang":{"attachment":[{"name":null},{"time":1.6333,"name":"TX/z_bianzi2_bz_liuguang"},{"time":3.0667,"name":null}]},"TX_SK2_shouji_lie7":{"attachment":[{"name":null},{"time":3.9333,"name":"TX/atk_guangci3_0027"},{"time":3.9667,"name":"TX/atk_guangci3_0028"},{"time":4,"name":"TX/atk_guangci3_0030"},{"time":4.0333,"name":"TX/atk_guangci3_0031"},{"time":4.0667,"name":null},{"time":4.2333,"name":"TX/atk_guangci3_0027"},{"time":4.2667,"name":"TX/atk_guangci3_0028"},{"time":4.3,"name":"TX/atk_guangci3_0030"},{"time":4.3333,"name":"TX/atk_guangci3_0031"},{"time":4.3667,"name":null},{"time":4.5,"name":"TX/atk_guangci3_0027"},{"time":4.5333,"name":"TX/atk_guangci3_0028"},{"time":4.5667,"name":"TX/atk_guangci3_0030"},{"time":4.6,"name":"TX/atk_guangci3_0031"},{"time":4.6333,"name":null},{"time":4.7,"name":"TX/atk_guangci3_0027"},{"time":4.7333,"name":"TX/atk_guangci3_0028"},{"time":4.7667,"name":"TX/atk_guangci3_0030"},{"time":4.8,"name":"TX/atk_guangci3_0031"},{"time":4.8333,"name":null}]},"TX/suduxian_su4":{"color":[{"time":1.5333,"color":"000000ff"},{"time":1.6667,"color":"00000000"}],"attachment":[{"name":null},{"time":1.5333,"name":"TX/suduxian_su"},{"time":1.6667,"name":null}]},"TX_feng_quan4":{"color":[{"time":0.1333,"color":"2a6948ff"}],"attachment":[{"name":null},{"time":0.1333,"name":"TX/TX_S1_shua_0016"},{"time":0.1667,"name":"TX/TX_S1_shua_0012"},{"time":0.2,"name":"TX/TX_S1_shua_0010"},{"time":0.2333,"name":"TX/TX_S1_shua_0018"},{"time":0.2667,"name":"TX/TX_S1_shua_0016"},{"time":0.3,"name":"TX/TX_S1_shua_0014"},{"time":0.3333,"name":"TX/TX_S1_shua_0010"},{"time":0.3667,"name":"TX/TX_S1_shua_0018"},{"time":0.4,"name":"TX/TX_S1_shua_0016"},{"time":0.4333,"name":"TX/TX_S1_shua_0014"},{"time":0.4667,"name":"TX/TX_S1_shua_0012"},{"time":0.5,"name":"TX/TX_S1_shua_0010"},{"time":0.5333,"name":"TX/TX_S1_shua_0016"},{"time":0.5667,"name":"TX/TX_S1_shua_0014"},{"time":0.6,"name":"TX/TX_S1_shua_0012"},{"time":0.6333,"name":"TX/TX_S1_shua_0010"},{"time":0.6667,"name":"TX/TX_S1_shua_0016"},{"time":0.7,"name":"TX/TX_S1_shua_0014"},{"time":0.7333,"name":"TX/TX_S1_shua_0012"},{"time":0.8,"name":null}]},"BZ/y_bianzi2_bz_g":{"attachment":[{"name":null},{"time":0.1333,"name":"BZ/y_bianzi2_bz_g"},{"time":2.4,"name":null}]},"TX_bao1":{"attachment":[{"name":null},{"time":0.0333,"name":"TX/shuangcdr_00010002"},{"time":0.1,"name":null}]},"TX_huaban1_sanluo":{"attachment":[{"name":null}]},"TX_xian3":{"color":[{"time":1.5333,"color":"000000da"}],"attachment":[{"name":null},{"time":1.5333,"name":"TX/b_lg_2"},{"time":1.6667,"name":null}]},"TX_guangxian1":{"attachment":[{"name":null}]},"TX/shuyefaguang6":{"color":[{"time":1.6333,"color":"abababa8"},{"time":2.2333,"color":"a6a6a6a0"}],"attachment":[{"name":null},{"time":1.6333,"name":"TX/shuyefaguang"},{"time":2.3667,"name":null}]},"BZ/z_bianzi2_bz_g2":{"attachment":[{"name":null},{"time":1.6333,"name":"BZ/z_bianzi2_bz_g"},{"time":2.4,"name":null}]},"BZ/y_bianzi_1_liuguang":{"color":[{"time":0.1333,"color":"ffffff00"},{"time":0.7667,"color":"ffffffff"}],"attachment":[{"name":null},{"time":0.1333,"name":"TX/liuguang3"},{"time":1.6333,"name":null},{"time":2.4,"name":"TX/liuguang3"}]},"yinying":{"attachment":[{"name":"yinying"},{"time":0.8667,"name":null},{"time":1.6333,"name":"yinying"},{"time":2.4,"name":null},{"time":4.7333,"name":"yinying"}]},"TX/liuguang_mi":{"color":[{"time":0.9,"color":"bbff7dff"}],"attachment":[{"name":null},{"time":0.9,"name":"TX/suduxian_mi"},{"time":1.6333,"name":null}]},"hei":{"color":[{"time":4.2667,"color":"ffffff00","curve":0.606,"c3":0.877,"c4":0.7},{"time":4.8333,"color":"ffffffff"}],"attachment":[{"name":null},{"time":4.2667,"name":"hei"}]},"BZ/z_bianzi5_liuguang":{"attachment":[{"name":null},{"time":0.1333,"name":"TX/liugguang2"},{"time":2.8667,"name":null}]},"hei2":{"color":[{"time":0.8667,"color":"00000070"},{"time":1.0667,"color":"00000000","curve":"stepped"},{"time":1.6333,"color":"00000000"},{"time":2.2667,"color":"00000097","curve":"stepped"},{"time":2.3,"color":"ffffff7f","curve":"stepped"},{"time":2.4,"color":"00000000"},{"time":3.6667,"color":"000000ff"}],"attachment":[{"name":null},{"time":0.8667,"name":"hei"},{"time":2.3333,"name":null},{"time":2.4,"name":"hei"}]},"TX/cao3":{"color":[{"time":0.1667,"color":"ffffffff"},{"time":0.4333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.1667,"name":"TX/cao"}]},"BZ/y_bianzi2":{"attachment":[{"name":"BZ/z_bianzi2_bz"}]},"TX/shuyefaguang2":{"color":[{"time":1.6333,"color":"a1a1a1ff"},{"time":2.2333,"color":"ffffffff"}],"attachment":[{"name":null},{"time":1.6333,"name":"TX/shuyefaguang"},{"time":2.4,"name":null}]},"TX/shuye6":{"color":[{"time":1.6333,"color":"9c9c9cff"},{"time":2.2333,"color":"b5b5b5ff"}],"attachment":[{"name":null},{"time":1.6333,"name":"TX/shuye"},{"time":2.3667,"name":null}]},"TX/shuyefaguang9":{"color":[{"time":1.6333,"color":"91919176"}],"attachment":[{"name":null},{"time":1.6333,"name":"TX/shuyefaguang"},{"time":2.4,"name":null}]},"BZ/z_shou":{"attachment":[{"name":null},{"time":1.6333,"name":"BZ/z_shou_bz"},{"time":2.2667,"name":null}]},"TX_SK2_shouji_xian3":{"attachment":[{"name":null},{"time":3.8,"name":"TX/daoguang_red"}]},"TX_SK2_shouji_xian8":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie4":{"attachment":[{"name":null},{"time":3.8333,"name":"TX/atk_guangci3_0027"},{"time":3.8667,"name":"TX/atk_guangci3_0028"},{"time":3.9,"name":"TX/atk_guangci3_0030"},{"time":3.9333,"name":"TX/atk_guangci3_0031"},{"time":3.9667,"name":null},{"time":4.1,"name":"TX/atk_guangci3_0027"},{"time":4.1333,"name":"TX/atk_guangci3_0028"},{"time":4.1667,"name":"TX/atk_guangci3_0030"},{"time":4.2,"name":"TX/atk_guangci3_0031"},{"time":4.2333,"name":null},{"time":4.4,"name":"TX/atk_guangci3_0027"},{"time":4.4333,"name":"TX/atk_guangci3_0028"},{"time":4.4667,"name":"TX/atk_guangci3_0030"},{"time":4.5,"name":"TX/atk_guangci3_0031"},{"time":4.5333,"name":null},{"time":4.6333,"name":"TX/atk_guangci3_0027"},{"time":4.6667,"name":"TX/atk_guangci3_0028"},{"time":4.7,"name":"TX/atk_guangci3_0030"},{"time":4.7333,"name":"TX/atk_guangci3_0031"},{"time":4.7667,"name":null}]},"TX_feng3":{"attachment":[{"name":null}]},"TX/TX_yan1_3":{"color":[{"time":0.1667,"color":"ffffffff"},{"time":0.5667,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.1667,"name":"TX/TX_S1_yan_24"}]},"ZZZZZZZZZZZ":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian6":{"attachment":[{"name":null}]},"TX/liuguang2":{"attachment":[{"name":null},{"time":0.1333,"name":"TX/liuguang"},{"time":0.8667,"name":null}]},"TX/suduxian_su1":{"color":[{"time":1.5333,"color":"ffffffff"},{"time":1.6667,"color":"ffffff80"}],"attachment":[{"name":null},{"time":1.5333,"name":"TX/suduxian_su"},{"time":1.6667,"name":null}]},"TX_SK2_shouji_lie2":{"attachment":[{"name":null},{"time":3.7667,"name":"TX/atk_guangci3_0027"},{"time":3.8,"name":"TX/atk_guangci3_0028"},{"time":3.8333,"name":"TX/atk_guangci3_0030"},{"time":3.8667,"name":"TX/atk_guangci3_0031"},{"time":3.9,"name":null},{"time":4,"name":"TX/atk_guangci3_0027"},{"time":4.0333,"name":"TX/atk_guangci3_0028"},{"time":4.0667,"name":"TX/atk_guangci3_0030"},{"time":4.1,"name":"TX/atk_guangci3_0031"},{"time":4.1333,"name":null},{"time":4.3,"name":"TX/atk_guangci3_0027"},{"time":4.3333,"name":"TX/atk_guangci3_0028"},{"time":4.3667,"name":"TX/atk_guangci3_0030"},{"time":4.4,"name":"TX/atk_guangci3_0031"},{"time":4.4333,"name":null},{"time":4.6,"name":"TX/atk_guangci3_0027"},{"time":4.6333,"name":"TX/atk_guangci3_0028"},{"time":4.6667,"name":"TX/atk_guangci3_0030"},{"time":4.7,"name":"TX/atk_guangci3_0031"},{"time":4.7333,"name":null}]},"BZ/y_bianzi1":{"attachment":[{"name":"BZ/z_bianzi1_bz"},{"time":1.6333,"name":null},{"time":2.4,"name":"BZ/z_bianzi1_bz"}]},"TX_SK2_shouji_lie6":{"attachment":[{"name":null},{"time":3.8333,"name":"TX/atk_guangci3_0027"},{"time":3.8667,"name":"TX/atk_guangci3_0028"},{"time":3.9,"name":"TX/atk_guangci3_0030"},{"time":3.9333,"name":"TX/atk_guangci3_0031"},{"time":3.9667,"name":null},{"time":4.1,"name":"TX/atk_guangci3_0027"},{"time":4.1333,"name":"TX/atk_guangci3_0028"},{"time":4.1667,"name":"TX/atk_guangci3_0030"},{"time":4.2,"name":"TX/atk_guangci3_0031"},{"time":4.2333,"name":null},{"time":4.4,"name":"TX/atk_guangci3_0027"},{"time":4.4333,"name":"TX/atk_guangci3_0028"},{"time":4.4667,"name":"TX/atk_guangci3_0030"},{"time":4.5,"name":"TX/atk_guangci3_0031"},{"time":4.5333,"name":null},{"time":4.6333,"name":"TX/atk_guangci3_0027"},{"time":4.6667,"name":"TX/atk_guangci3_0028"},{"time":4.7,"name":"TX/atk_guangci3_0030"},{"time":4.7333,"name":"TX/atk_guangci3_0031"},{"time":4.7667,"name":null}]},"TX_SK2_shouji_lie11":{"attachment":[{"name":null},{"time":3.7333,"name":"TX/atk_guangci3_0027"},{"time":3.7667,"name":"TX/atk_guangci3_0028"},{"time":3.8,"name":"TX/atk_guangci3_0030"},{"time":3.8333,"name":"TX/atk_guangci3_0031"},{"time":3.8667,"name":null},{"time":3.9333,"name":"TX/atk_guangci3_0027"},{"time":3.9667,"name":"TX/atk_guangci3_0028"},{"time":4,"name":"TX/atk_guangci3_0030"},{"time":4.0333,"name":"TX/atk_guangci3_0031"},{"time":4.0667,"name":null},{"time":4.1333,"name":"TX/atk_guangci3_0027"},{"time":4.1667,"name":"TX/atk_guangci3_0028"},{"time":4.2,"name":"TX/atk_guangci3_0030"},{"time":4.2333,"name":"TX/atk_guangci3_0031"},{"time":4.2667,"name":null},{"time":4.3333,"name":"TX/atk_guangci3_0027"},{"time":4.3667,"name":"TX/atk_guangci3_0028"},{"time":4.4,"name":"TX/atk_guangci3_0030"},{"time":4.4333,"name":"TX/atk_guangci3_0031"},{"time":4.4667,"name":null},{"time":4.5333,"name":"TX/atk_guangci3_0027"},{"time":4.5667,"name":"TX/atk_guangci3_0028"},{"time":4.6,"name":"TX/atk_guangci3_0030"},{"time":4.6333,"name":"TX/atk_guangci3_0031"},{"time":4.6667,"name":null}]},"BZ/z_bianzi_hou3_liuguang\n2":{"attachment":[{"name":null},{"time":2.8667,"name":"TX/z_bianzi2_bz_liuguang"}]},"z_houtui":{"attachment":[{"name":"z_houtui"},{"time":1.6333,"name":null},{"time":2.2667,"name":"z_houtui"}]},"TX_guangxian6":{"attachment":[{"name":null}]},"BZ/z_jiao":{"attachment":[{"name":null},{"time":1.6333,"name":"BZ/z_jiao_bz"},{"time":2.2667,"name":null}]},"TX_feng2":{"attachment":[{"name":null},{"time":0.0667,"name":"TX/TX_S1_shua_0010"},{"time":0.1,"name":"TX/TX_S1_shua_0012"},{"time":0.1333,"name":"TX/TX_S1_shua_0014"},{"time":0.1667,"name":"TX/TX_S1_shua_0018"},{"time":0.2,"name":null}]},"TX_huaban2_sanluo":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie":{"attachment":[{"name":null},{"time":3.7667,"name":"TX/atk_guangci3_0027"},{"time":3.8,"name":"TX/atk_guangci3_0028"},{"time":3.8333,"name":"TX/atk_guangci3_0030"},{"time":3.8667,"name":"TX/atk_guangci3_0031"},{"time":3.9,"name":null},{"time":4,"name":"TX/atk_guangci3_0027"},{"time":4.0333,"name":"TX/atk_guangci3_0028"},{"time":4.0667,"name":"TX/atk_guangci3_0030"},{"time":4.1,"name":"TX/atk_guangci3_0031"},{"time":4.1333,"name":null},{"time":4.3,"name":"TX/atk_guangci3_0027"},{"time":4.3333,"name":"TX/atk_guangci3_0028"},{"time":4.3667,"name":"TX/atk_guangci3_0030"},{"time":4.4,"name":"TX/atk_guangci3_0031"},{"time":4.4333,"name":null},{"time":4.6,"name":"TX/atk_guangci3_0027"},{"time":4.6333,"name":"TX/atk_guangci3_0028"},{"time":4.6667,"name":"TX/atk_guangci3_0030"},{"time":4.7,"name":"TX/atk_guangci3_0031"},{"time":4.7333,"name":null}]},"TX_SK2_shouji_quan2":{"attachment":[{"name":null},{"time":3.8,"name":"TX/Energy 007 Impact Radial_00008"},{"time":3.8333,"name":"TX/Energy 007 Impact Radial_00010"},{"time":3.8667,"name":"TX/Energy 007 Impact Radial_00012"},{"time":3.9,"name":"TX/Energy 007 Impact Radial_00015"},{"time":3.9333,"name":null},{"time":4.0667,"name":"TX/Energy 007 Impact Radial_00008"},{"time":4.1,"name":"TX/Energy 007 Impact Radial_00010"},{"time":4.1333,"name":"TX/Energy 007 Impact Radial_00012"},{"time":4.1667,"name":"TX/Energy 007 Impact Radial_00015"},{"time":4.2,"name":null},{"time":4.3667,"name":"TX/Energy 007 Impact Radial_00008"},{"time":4.4,"name":"TX/Energy 007 Impact Radial_00010"},{"time":4.4333,"name":"TX/Energy 007 Impact Radial_00012"},{"time":4.4667,"name":"TX/Energy 007 Impact Radial_00015"},{"time":4.5,"name":null},{"time":4.6,"name":"TX/Energy 007 Impact Radial_00008"},{"time":4.6333,"name":"TX/Energy 007 Impact Radial_00010"},{"time":4.6667,"name":"TX/Energy 007 Impact Radial_00012"},{"time":4.7,"name":"TX/Energy 007 Impact Radial_00015"},{"time":4.7333,"name":null}]},"TX_xian":{"color":[{"time":1,"color":"ffeefdff"}],"attachment":[{"name":null},{"time":1,"name":"TX/b_lg_2"},{"time":1.6667,"name":null}]},"TX/suduxian_su3":{"color":[{"time":1.5333,"color":"000000ff"},{"time":1.6667,"color":"00000000"}],"attachment":[{"name":null},{"time":1.5333,"name":"TX/suduxian_su"},{"time":1.6667,"name":null}]},"TX/guangyun2":{"attachment":[{"name":null}]},"TX/suduxian_mi_hou2":{"attachment":[{"name":null}]}},"bones":{"1":{"translate":[{"time":1.6333,"curve":"stepped"},{"time":2.2667,"x":188.36,"y":16.48},{"time":2.3,"curve":0.405,"c2":0.72,"c3":0.49},{"time":2.3667,"y":-13.91,"curve":"stepped"},{"time":4.7,"y":-13.91,"curve":"stepped"},{"time":4.7333}]},"2":{"translate":[{"time":1.6333,"curve":"stepped"},{"time":2.2667,"x":188.36,"y":16.48},{"time":2.3,"curve":0.405,"c2":0.72,"c3":0.49},{"time":2.3667,"y":-13.91,"curve":"stepped"},{"time":4.7,"y":-13.91,"curve":"stepped"},{"time":4.7333}]},"3":{"translate":[{"time":1.6333,"curve":"stepped"},{"time":2.2667,"x":-190.72,"y":-25.9},{"time":2.3}]},"4":{"translate":[{"time":1.6333,"curve":"stepped"},{"time":2.2667,"x":-190.72,"y":-25.9},{"time":2.3}]},"5":{"translate":[{"time":1.6333,"curve":"stepped"},{"time":2.2667,"x":-240.16,"y":72.99},{"time":2.3}]},"6":{"translate":[{"time":1.6333,"curve":"stepped"},{"time":2.2667,"x":-240.16,"y":72.99},{"time":2.3}]},"BZ/shenti":{"rotate":[{"time":1.6333,"angle":-4.97,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2667,"angle":0.73}],"translate":[{"time":1.6333,"x":-249.4,"y":254.94,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2667,"x":-412.44,"y":330.3}]},"BZ/y_bianzi_hou2":{"rotate":[{"time":1.6333,"angle":18.69},{"time":2.2333,"angle":25.74,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-14.3,"curve":"stepped"},{"time":2.3667,"angle":-14.3},{"time":2.4,"angle":4.15},{"time":3.0667,"angle":2.8}],"translate":[{"time":2.3667},{"time":2.4,"y":-0.32}],"scale":[{"time":1.6333,"x":0.548,"y":0.935,"curve":"stepped"},{"time":2.3667,"x":0.548,"y":0.935},{"time":2.4,"x":1.279,"y":0.935},{"time":3.0667,"x":0.828,"y":0.868}]},"BZ/y_bianzi1":{"rotate":[{"angle":6.36},{"time":0.0333,"angle":6.59,"curve":"stepped"},{"time":0.0667,"angle":1.94},{"time":0.1,"angle":-3},{"time":0.1333,"angle":27.04,"curve":"stepped"},{"time":0.8,"angle":-0.08,"curve":"stepped"},{"time":0.8333,"angle":8.22},{"time":0.8667,"angle":6.81,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.9333,"angle":0.09,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.0667,"angle":2.83,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2,"angle":5.91,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.3333,"angle":2.77,"curve":0.296,"c2":0.54,"c3":0.639,"c4":0.86},{"time":1.4333,"angle":8.65,"curve":0.329,"c2":0.61,"c3":0.663,"c4":0.94},{"time":1.4667,"angle":-2.43,"curve":0.015,"c2":0.97,"c3":0.65,"c4":0.98},{"time":1.6,"angle":5.89},{"time":1.6333,"angle":32.24,"curve":"stepped"},{"time":2.2333,"angle":32.24,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":5.89},{"time":2.3667,"angle":4.02},{"time":2.4,"angle":1.15},{"time":2.8667,"angle":0.57,"curve":"stepped"},{"time":3.0333,"angle":8.12},{"time":3.6667,"angle":10.3,"curve":"stepped"},{"time":3.7,"angle":4.96},{"time":3.7333,"angle":3.91,"curve":"stepped"},{"time":3.7667,"angle":7.86},{"time":3.8333,"angle":6.23,"curve":"stepped"},{"time":3.8667,"angle":8.31},{"time":3.9333,"angle":7.9,"curve":"stepped"},{"time":3.9667,"angle":3.78},{"time":4,"angle":4.87,"curve":"stepped"},{"time":4.0333,"angle":7.86},{"time":4.1,"angle":6.23,"curve":"stepped"},{"time":4.1333,"angle":3.78},{"time":4.2,"angle":4.87,"curve":"stepped"},{"time":4.2333,"angle":7.86},{"time":4.3,"angle":6.23,"curve":"stepped"},{"time":4.3333,"angle":3.78},{"time":4.4,"angle":4.32,"curve":"stepped"},{"time":4.4333,"angle":7.86},{"time":4.5,"angle":6.23,"curve":"stepped"},{"time":4.5333,"angle":3.78},{"time":4.6,"angle":4.87,"curve":"stepped"},{"time":4.6333,"angle":3.78},{"time":4.7,"angle":4.87,"curve":"stepped"},{"time":4.7333,"angle":7.86},{"time":4.8,"angle":6.23}],"translate":[{"time":2.2333,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"y":-0.32,"curve":"stepped"},{"time":2.3667,"y":-0.32},{"time":2.4,"curve":"stepped"},{"time":3.6667,"curve":"stepped"},{"time":3.7,"y":-0.32}],"scale":[{},{"time":0.0333,"x":2.267,"y":2.009,"curve":"stepped"},{"time":0.0667,"x":1.824,"y":1.745},{"time":0.1,"x":1.305,"y":1.143},{"time":0.1333,"x":0.549,"y":0.686,"curve":"stepped"},{"time":0.8,"x":1.324,"y":1.276,"curve":"stepped"},{"time":0.8333,"x":1.324,"y":1.276},{"time":0.8667,"x":1.272,"y":1.148,"curve":"stepped"},{"time":1.4667,"x":1.272,"y":1.148,"curve":0.015,"c2":0.97,"c3":0.64,"c4":0.98},{"time":1.6,"x":1.325,"y":0.721,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6333,"x":0.379,"y":0.971,"curve":"stepped"},{"time":2.3667,"x":0.379,"y":0.971},{"time":2.4,"x":0.927,"y":0.971,"curve":"stepped"},{"time":3.6667,"x":0.927,"y":0.971,"curve":"stepped"},{"time":3.7,"curve":"stepped"},{"time":3.7667},{"time":3.8333,"x":0.619,"y":0.619,"curve":"stepped"},{"time":3.8667},{"time":3.9333,"x":0.77,"y":0.77,"curve":"stepped"},{"time":3.9667},{"time":4,"x":0.694,"y":0.694,"curve":"stepped"},{"time":4.0333},{"time":4.1,"x":0.619,"y":0.619,"curve":"stepped"},{"time":4.1333},{"time":4.2,"x":0.694,"y":0.694,"curve":"stepped"},{"time":4.2333},{"time":4.3,"x":0.619,"y":0.619,"curve":"stepped"},{"time":4.3333},{"time":4.4,"x":0.511,"y":0.511,"curve":"stepped"},{"time":4.4333},{"time":4.5,"x":0.619,"y":0.619,"curve":"stepped"},{"time":4.5333},{"time":4.6,"x":0.694,"y":0.694,"curve":"stepped"},{"time":4.6333},{"time":4.7,"x":0.694,"y":0.694,"curve":"stepped"},{"time":4.7333},{"time":4.8,"x":0.619,"y":0.619}]},"BZ/y_bianzi2":{"rotate":[{"angle":16.83},{"time":0.0333,"angle":15.31,"curve":"stepped"},{"time":0.0667,"angle":13.53},{"time":0.1,"angle":8.79},{"time":0.1333,"angle":3.13,"curve":"stepped"},{"time":0.8,"angle":6.72,"curve":"stepped"},{"time":0.8333,"angle":10.44},{"time":0.8667,"angle":23.95},{"time":1,"angle":10.58},{"time":1.1333,"angle":23.95},{"time":1.2667,"angle":8.9},{"time":1.4,"angle":23.95},{"time":1.4667,"angle":8.9,"curve":0.015,"c2":0.97,"c3":0.75},{"time":1.6,"angle":9.83},{"time":1.6333,"angle":7.57,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":6.33,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":9.83},{"time":2.3667,"angle":7.95},{"time":2.4,"angle":2.86},{"time":2.8667,"angle":5.42,"curve":"stepped"},{"time":3.0333,"angle":12.97},{"time":3.6667,"angle":11.08,"curve":"stepped"},{"time":3.7,"angle":8.9},{"time":3.7333,"angle":7.84,"curve":"stepped"},{"time":3.7667,"angle":11.8},{"time":3.8333,"angle":10.17,"curve":"stepped"},{"time":3.8667,"angle":12.25},{"time":3.9333,"angle":11.84,"curve":"stepped"},{"time":3.9667,"angle":7.71},{"time":4,"angle":8.8,"curve":"stepped"},{"time":4.0333,"angle":11.8},{"time":4.1,"angle":10.17,"curve":"stepped"},{"time":4.1333,"angle":7.71},{"time":4.2,"angle":8.8,"curve":"stepped"},{"time":4.2333,"angle":11.8},{"time":4.3,"angle":10.17,"curve":"stepped"},{"time":4.3333,"angle":7.71},{"time":4.4,"angle":8.26,"curve":"stepped"},{"time":4.4333,"angle":11.8},{"time":4.5,"angle":10.17,"curve":"stepped"},{"time":4.5333,"angle":7.71},{"time":4.6,"angle":8.8,"curve":"stepped"},{"time":4.6333,"angle":7.71},{"time":4.7,"angle":8.8,"curve":"stepped"},{"time":4.7333,"angle":11.8},{"time":4.8,"angle":10.17}],"translate":[{"time":0.1},{"time":0.1333,"x":-381.46,"y":-189.53,"curve":"stepped"},{"time":0.8,"curve":"stepped"},{"time":1.6},{"time":1.6333,"x":2.46,"y":0.52,"curve":"stepped"},{"time":2.2333,"x":2.46,"y":0.52,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"y":-1.32,"curve":"stepped"},{"time":2.3667,"y":-1.32},{"time":2.4,"curve":"stepped"},{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":-0.82,"y":-1.32}],"scale":[{"time":0.1},{"time":0.1333,"x":1.399,"y":0.93,"curve":"stepped"},{"time":0.8,"curve":"stepped"},{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"BZ/y_bianzi3":{"rotate":[{},{"time":0.0333,"angle":-29.55,"curve":"stepped"},{"time":0.0667,"angle":-29.55},{"time":0.1,"angle":55.39},{"time":0.1333,"angle":-44.1,"curve":"stepped"},{"time":0.1667,"angle":70.31,"curve":"stepped"},{"time":0.2,"angle":-50.48,"curve":"stepped"},{"time":0.2333,"angle":70.31,"curve":"stepped"},{"time":0.2667,"angle":190.31,"curve":"stepped"},{"time":0.3,"angle":-50.48,"curve":"stepped"},{"time":0.3333,"angle":190.31,"curve":"stepped"},{"time":0.3667,"angle":-50.48,"curve":"stepped"},{"time":0.4,"angle":70.31,"curve":"stepped"},{"time":0.4333,"angle":190.31,"curve":"stepped"},{"time":0.4667,"angle":-50.48,"curve":"stepped"},{"time":0.5,"angle":190.31,"curve":"stepped"},{"time":0.5333,"angle":-50.48,"curve":"stepped"},{"time":0.5667,"angle":70.31,"curve":"stepped"},{"time":0.6,"angle":190.31,"curve":"stepped"},{"time":0.6333,"angle":-50.48,"curve":"stepped"},{"time":0.6667,"angle":70.31,"curve":"stepped"},{"time":0.7,"angle":190.31,"curve":"stepped"},{"time":0.7333,"angle":-50.48,"curve":"stepped"},{"time":0.7667,"angle":70.31,"curve":"stepped"},{"time":0.8,"angle":67.47},{"time":0.8333,"angle":-147.32},{"time":0.8667,"angle":163.55},{"time":1,"angle":176.82},{"time":1.3,"angle":-176.81},{"time":1.4667,"angle":174.24,"curve":0.353,"c2":0.37,"c3":0.649,"c4":0.71},{"time":1.5,"angle":175.41,"curve":0.264,"c2":0.39,"c3":0.569,"c4":0.73},{"time":1.5333,"angle":-171.19,"curve":0,"c2":0.53,"c3":0.389,"c4":0.83},{"time":1.5667,"angle":-156.09,"curve":0.262,"c2":0.83,"c3":0.619},{"time":1.6,"angle":-135.97},{"time":1.6333,"angle":-100.33,"curve":"stepped"},{"time":2.2333,"angle":-100.33},{"time":2.2667,"angle":-147.41},{"time":2.3,"angle":-105.63},{"time":2.3667,"angle":-31.05},{"time":2.4,"angle":-17.42},{"time":2.4667,"angle":-0.18},{"time":2.5,"angle":4.62},{"time":2.5667,"angle":12.15},{"time":2.7,"angle":36.25},{"time":2.7667,"angle":42.34},{"time":2.8667,"angle":79.78,"curve":"stepped"},{"time":3.0333,"angle":-35.1,"curve":0.123,"c2":0.3,"c3":0.56,"c4":0.95},{"time":3.1333,"angle":-62.54},{"time":3.6667,"angle":-86.36,"curve":"stepped"},{"time":3.7,"angle":140.56,"curve":0.262,"c2":0.65,"c3":0.55,"c4":0.96},{"time":3.7333,"angle":-156.02,"curve":"stepped"},{"time":3.7667,"angle":95.8},{"time":3.8333,"angle":81.59,"curve":"stepped"},{"time":3.8667,"angle":160.27},{"time":3.9333,"angle":124.65,"curve":"stepped"},{"time":3.9667,"angle":176.14},{"time":4,"angle":-177.99,"curve":"stepped"},{"time":4.0333,"angle":132.89},{"time":4.1,"angle":62.14,"curve":"stepped"},{"time":4.1333,"angle":176.14},{"time":4.2,"angle":-134.79,"curve":"stepped"},{"time":4.2333,"angle":94.87,"curve":0,"c2":0.57,"c3":0.462,"c4":0.86},{"time":4.2667,"angle":38.18,"curve":0.368,"c2":1,"c3":0.789},{"time":4.3,"angle":41.62,"curve":"stepped"},{"time":4.3333,"angle":116.1},{"time":4.3667,"angle":175.64},{"time":4.4,"angle":-177.51,"curve":"stepped"},{"time":4.4333,"angle":95.8},{"time":4.5,"angle":81.59,"curve":"stepped"},{"time":4.5333,"angle":163.35},{"time":4.6,"angle":159.11,"curve":"stepped"},{"time":4.6333,"angle":176.14},{"time":4.7,"angle":-134.79,"curve":"stepped"},{"time":4.7333,"angle":125.92},{"time":4.7667,"angle":118.51},{"time":4.8,"angle":120.68}],"translate":[{},{"time":0.0333,"x":68.19,"y":7.39},{"time":0.0667,"x":86.48,"y":17.08},{"time":0.1333,"x":74.77,"y":-15.21,"curve":0.059,"c2":0.44,"c3":0.75},{"time":0.7667,"x":-237.31,"y":-18.76,"curve":"stepped"},{"time":0.8,"x":-301.77,"y":-94.54},{"time":0.8333,"x":-379.59,"y":-165.6},{"time":0.8667,"x":-7804.72,"y":-7625.6},{"time":1,"x":-2440.97,"y":-4905.43},{"time":1.3,"x":-5686.69,"y":-5926.15,"curve":0.326,"c2":0.63,"c3":0.534,"c4":0.99},{"time":1.4667,"x":-5735.96,"y":-6753.58,"curve":0.163,"c2":0.63,"c3":0.22},{"time":1.6,"x":-2720.83,"y":-4786.85},{"time":1.6333,"x":-16.48,"y":-1.39,"curve":"stepped"},{"time":2.2333,"x":-16.48,"y":-1.39},{"time":2.2667,"x":-126.19,"y":60.4},{"time":2.3,"x":-7.77,"y":-565.56},{"time":2.3667,"x":-55.69,"y":-579.93},{"time":2.4,"x":5237.84,"y":-3606.08},{"time":2.5667,"x":28137.88,"y":-6015.3},{"time":2.7,"x":43243.13,"y":4426.61},{"time":2.7667,"x":52760.26,"y":11669.71},{"time":2.8667,"x":82332.8,"y":44722.28,"curve":"stepped"},{"time":3.0333,"x":5155.91,"y":-7422.59,"curve":0.123,"c2":0.3,"c3":0.56,"c4":0.95},{"time":3.1333,"x":12899.33,"y":1166.85},{"time":3.6667,"x":19854.14,"y":-8074.56,"curve":"stepped"},{"time":3.7,"x":11638.45,"y":-3170.65,"curve":"stepped"},{"time":3.7333,"x":11638.45,"y":-3170.65,"curve":"stepped"},{"time":3.7667,"x":20751.71,"y":-14941.81},{"time":3.8,"x":13465.97,"y":-11708.11},{"time":3.8333,"x":8201.2,"y":-2748.68,"curve":"stepped"},{"time":3.8667,"x":14240.38,"y":4434.58},{"time":3.9333,"x":15544.95,"y":8026.49,"curve":"stepped"},{"time":3.9667,"x":16783.9,"y":1761.93,"curve":0.123,"c2":0.41,"c3":0.75},{"time":4,"x":19807.35,"y":57.43,"curve":"stepped"},{"time":4.0333,"x":28709.04,"y":966.99},{"time":4.0667,"x":16932.4,"y":-12414.64},{"time":4.1,"x":9774.34,"y":-12406.6,"curve":"stepped"},{"time":4.1333,"x":18846.03,"y":2314.74,"curve":0.123,"c2":0.41,"c3":0.75},{"time":4.2,"x":11664.8,"y":2671.39,"curve":"stepped"},{"time":4.2333,"x":42657.91,"y":-50908.95,"curve":0,"c2":0.57,"c3":0.462,"c4":0.86},{"time":4.2667,"x":-2889.49,"y":-18936.53,"curve":0.368,"c2":1,"c3":0.789},{"time":4.3,"x":-1445.18,"y":-16052.57,"curve":"stepped"},{"time":4.3333,"x":10122.9,"y":-16809.48,"curve":0.136,"c2":0.32,"c3":0.551,"c4":0.7},{"time":4.3667,"x":16785.69,"y":-3669.08,"curve":0.371,"c2":0.58,"c3":0.772},{"time":4.4,"x":9044.41,"y":-2137.87,"curve":"stepped"},{"time":4.4333,"x":20751.71,"y":-14941.81},{"time":4.5,"x":12343.62,"y":-18571.63,"curve":"stepped"},{"time":4.5333,"x":21325.14,"y":-4355.52,"curve":0.123,"c2":0.41,"c3":0.75},{"time":4.6,"x":4539.46,"y":-6808.41,"curve":"stepped"},{"time":4.6333,"x":18846.03,"y":2314.74,"curve":0.123,"c2":0.41,"c3":0.75},{"time":4.7,"x":11664.8,"y":2671.39,"curve":"stepped"},{"time":4.7333,"x":21567.52,"y":-5883.08},{"time":4.7667,"x":17013.88,"y":-5545.02},{"time":4.8,"x":12514.91,"y":-1218.86}],"scale":[{"x":0,"y":0},{"time":0.0333,"curve":"stepped"},{"time":0.0667},{"time":0.1333,"x":1.397,"y":1.397},{"time":0.7667,"x":1.675,"y":1.675,"curve":"stepped"},{"time":0.8,"x":1.155,"y":1.155},{"time":0.8333},{"time":0.8667,"x":7.609,"y":7.609},{"time":1,"x":10.289,"y":10.289},{"time":1.3,"x":6.135,"y":6.135},{"time":1.4667,"x":5.455,"y":5.455,"curve":"stepped"},{"time":1.6,"x":5.455,"y":5.455},{"time":1.6333,"curve":"stepped"},{"time":2.3667},{"time":2.4,"x":18.396,"y":24.801,"curve":"stepped"},{"time":2.8667,"x":18.396,"y":24.801,"curve":"stepped"},{"time":3.0333,"x":6.626,"y":6.626},{"time":3.6667,"x":5.194,"y":5.194,"curve":"stepped"},{"time":3.7,"x":5.245,"y":5.245},{"time":3.7333,"x":3.937,"y":3.937,"curve":"stepped"},{"time":3.7667,"x":12.413,"y":12.413},{"time":3.8333,"x":2.698,"y":2.698,"curve":"stepped"},{"time":3.8667,"x":9.544,"y":9.544},{"time":3.9333,"x":6.761,"y":6.761,"curve":"stepped"},{"time":3.9667,"x":9.544,"y":9.544},{"time":4,"x":6.398,"y":6.398,"curve":"stepped"},{"time":4.0333,"x":12.413,"y":12.413},{"time":4.1,"x":5.296,"y":5.296,"curve":"stepped"},{"time":4.1333,"x":9.544,"y":9.544},{"time":4.2,"x":6.398,"y":6.398,"curve":"stepped"},{"time":4.2333,"x":70.286,"y":70.286,"curve":0,"c2":0.57,"c3":0.462,"c4":0.86},{"time":4.2667,"x":8.826,"y":8.826,"curve":0.368,"c2":1,"c3":0.789},{"time":4.3,"x":7.387,"y":7.387,"curve":"stepped"},{"time":4.3333,"x":9.544,"y":9.544},{"time":4.4,"x":3.835,"y":3.835,"curve":"stepped"},{"time":4.4333,"x":12.413,"y":12.413},{"time":4.5,"x":7.387,"y":7.387,"curve":"stepped"},{"time":4.5333,"x":9.544,"y":9.544},{"time":4.6,"x":6.398,"y":6.398,"curve":"stepped"},{"time":4.6333,"x":9.544,"y":9.544},{"time":4.7,"x":6.398,"y":6.398,"curve":"stepped"},{"time":4.7333,"x":12.413,"y":12.413},{"time":4.8,"x":3.731,"y":3.731}]},"BZ/z_bianzi4":{"rotate":[{"time":0.1333,"angle":23.13,"curve":"stepped"},{"time":0.8,"angle":-0.44,"curve":"stepped"},{"time":0.8333,"angle":19.36,"curve":"stepped"},{"time":0.8667,"angle":12.94,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":6.6,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":12.44,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":10.02,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":11.74,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"angle":8.25,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"angle":8.58,"curve":"stepped"},{"time":1.6333,"angle":10.57},{"time":2.2333,"angle":9.44,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-147.86,"curve":"stepped"},{"time":2.3667,"angle":-147.86},{"time":2.4,"angle":3.73,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":5.27},{"time":3.2,"angle":4.89}],"translate":[{"time":0.1333,"x":-898.48,"y":263.47,"curve":"stepped"},{"time":0.8,"x":-6.18,"y":1.33,"curve":"stepped"},{"time":0.8333,"x":-6.18,"y":1.33,"curve":"stepped"},{"time":0.8667,"x":-4.6,"y":-1.05,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":-6.82,"y":-1.86,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":-4.6,"y":-3.14,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":-6.18,"y":1.33,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":-4.23,"y":-2.79,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":-6.46,"y":-0.89,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":-5.91,"y":-4.75,"curve":"stepped"},{"time":1.6333,"curve":"stepped"},{"time":2.2333,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":34.68,"y":-22.84,"curve":"stepped"},{"time":2.3667,"x":34.68,"y":-22.84},{"time":2.4,"x":-3.79,"y":-0.85}],"scale":[{"time":0.1333,"x":1.364,"y":1.302,"curve":"stepped"},{"time":0.8,"x":1.223,"y":1.017,"curve":"stepped"},{"time":1.6,"x":1.223,"y":1.017,"curve":"stepped"},{"time":1.6333}]},"BZ/y_bianzi_hou":{"rotate":[{"time":1.6333,"angle":31.04},{"time":2.2333,"angle":21.07,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":156.29},{"time":2.3667,"angle":158.06},{"time":2.4,"angle":-22.2},{"time":2.6667,"angle":-2.88},{"time":2.9,"angle":31.28},{"time":2.9333,"angle":53.42},{"time":3.0667,"angle":71.74}],"translate":[{"time":1.6333,"x":3281.1,"y":14.82},{"time":2.2333,"x":3266.49,"y":146.3,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":3316.13,"y":245.54},{"time":2.3667,"x":904.75,"y":1966.5},{"time":2.4,"x":-5557.02,"y":5514.13},{"time":2.6667,"x":-17030.01,"y":10355.05},{"time":2.9,"x":-31172.98,"y":-2656.91,"curve":"stepped"},{"time":2.9333,"x":-27758.98,"y":-1902.67},{"time":3.0667,"x":-42444.73,"y":-5305.09}],"scale":[{"time":1.6333,"x":1.899,"y":1.366},{"time":2.2333,"x":1.775,"y":1.366,"curve":"stepped"},{"time":2.3667,"x":1.775,"y":1.366},{"time":2.4,"x":28.843,"y":11.721},{"time":2.9,"x":31.77,"y":9.313},{"time":2.9333,"x":19.019,"y":9.152},{"time":3.0667,"x":19.019,"y":6.92}]},"bone120":{"rotate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"angle":15.81},{"time":0.8333,"angle":-106.04},{"time":0.8667,"angle":174.59},{"time":1,"angle":83.53},{"time":1.1333,"angle":-183.72},{"time":1.2667,"angle":83.53},{"time":1.4,"angle":-183.72},{"time":1.5333,"angle":83.53},{"time":1.6,"angle":134.08},{"time":1.6333,"angle":11.26,"curve":"stepped"},{"time":2.2333,"angle":11.26,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-1.6,"curve":"stepped"},{"time":2.3667,"angle":-1.6},{"time":2.4,"angle":-29.97,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":-28.81}],"translate":[{"time":1.5333},{"time":1.6,"y":-4.51},{"time":1.6333}],"scale":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":0.95,"y":1.004},{"time":0.8333,"x":0.974,"y":1.008},{"time":0.8667,"x":0.998,"y":1.012,"curve":"stepped"},{"time":1.6,"x":0.998,"y":1.012},{"time":1.6333,"x":1.548,"y":1.105}]},"BZ/z_bianzi5":{"rotate":[{"time":0.1333,"angle":-29.15,"curve":"stepped"},{"time":0.8,"angle":-11.07},{"time":0.8333,"angle":-9.64},{"time":0.8667,"angle":-0.43,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":-10.21,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":-0.43,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":-10.21,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":-0.43,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"angle":-10.21,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"angle":-5.4,"curve":"stepped"},{"time":1.6333,"angle":-10.54},{"time":2.2333,"angle":-17.77,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-9.22,"curve":"stepped"},{"time":2.3667,"angle":-9.22},{"time":2.4,"angle":-8.59,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":-5.06},{"time":3.2,"angle":-7.43}],"translate":[{"time":1.5333,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"y":0.4,"curve":"stepped"},{"time":1.6333}],"scale":[{"time":0.1333,"x":0.59,"y":0.909,"curve":"stepped"},{"time":0.8,"x":2.008},{"time":0.8333,"x":1.968},{"time":0.8667,"x":1.928,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":1.887,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":1.928,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":1.887,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":1.928,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":1.887,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":1.928,"curve":"stepped"},{"time":1.6333,"curve":"stepped"},{"time":2.2333,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":0.892}]},"bone146":{"rotate":[{"time":0.1333,"angle":-21.27,"curve":"stepped"},{"time":0.8,"angle":-0.58},{"time":0.8333,"angle":-1.47},{"time":0.8667,"angle":5.12},{"time":1,"angle":-4.92},{"time":1.1333,"angle":5.12},{"time":1.2667,"angle":-5.53},{"time":1.4,"angle":5.12},{"time":1.5333,"angle":-5.53},{"time":1.6,"angle":2.25,"curve":"stepped"},{"time":1.6333,"angle":-24.98},{"time":2.2333,"angle":-0.94,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":15.45,"curve":"stepped"},{"time":2.3667,"angle":15.45},{"time":2.4,"angle":-10.6,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":-1.29},{"time":3.2,"angle":-9.44}],"translate":[{"time":0.1333,"x":16.4,"y":7.42,"curve":"stepped"},{"time":0.8,"x":2.9},{"time":0.8333,"x":5.8},{"time":0.8667,"x":8.7},{"time":1,"x":11.6},{"time":1.1333,"x":8.7},{"time":1.2667,"x":11.6},{"time":1.4,"x":8.7},{"time":1.5333,"x":11.6},{"time":1.6,"x":8.7,"y":1.14,"curve":"stepped"},{"time":1.6333,"x":75.38,"curve":"stepped"},{"time":2.2333,"x":75.38,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":11.44,"y":-9.12,"curve":"stepped"},{"time":2.4,"x":11.44,"y":-9.12,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"x":12.62,"y":-2.86},{"time":3.2,"x":11.44,"y":-9.12}],"scale":[{"time":0.1333,"x":1.048,"curve":"stepped"},{"time":0.8,"x":0.938},{"time":0.8333,"x":0.941},{"time":0.8667,"x":0.943},{"time":1,"x":0.946},{"time":1.1333,"x":0.943},{"time":1.2667,"x":0.946},{"time":1.4,"x":0.943},{"time":1.5333,"x":0.946},{"time":1.6,"x":0.943,"curve":"stepped"},{"time":1.6333}]},"bone147":{"rotate":[{"time":0.0333,"angle":12.57},{"time":0.0667,"angle":6.73},{"time":0.1,"angle":1.84},{"time":0.1333,"angle":-32.81,"curve":"stepped"},{"time":1.6333,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":-9.42,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-40.38},{"time":2.3667,"angle":-45.94},{"time":2.4,"angle":-16.29},{"time":2.8667,"angle":-15.66}],"translate":[{"time":2.2333,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"y":-4.51,"curve":"stepped"},{"time":2.4,"y":-4.51}],"scale":[{"time":0.0333,"x":0.508,"y":0.746},{"time":0.0667,"x":0.572,"y":0.751},{"time":0.1,"x":0.821,"y":0.756},{"time":0.1333,"x":0.388,"y":0.761,"curve":"stepped"},{"time":1.6333,"x":2.741,"y":1.542},{"time":2.2333,"x":2.801,"y":1.701,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":3.587},{"time":2.3667,"x":2.335},{"time":2.4,"x":11.469,"y":3.828}],"shear":[{"time":1.6333,"y":37.36,"curve":"stepped"},{"time":2.3,"y":22.02,"curve":"stepped"},{"time":2.4,"y":22.02}]},"BZ/z_bianzi_hou2":{"rotate":[{"time":0.0333,"angle":-3},{"time":0.0667,"angle":-8.56},{"time":0.1,"angle":-13.22},{"time":0.1333,"angle":-2.25,"curve":"stepped"},{"time":2.2333,"angle":-2.25,"curve":"stepped"},{"time":2.3,"angle":-1.85},{"time":2.3667,"angle":-7.41},{"time":2.4,"angle":-4.65},{"time":2.8667,"angle":-4.02},{"time":2.9333,"angle":-3.61}],"translate":[{"time":2.2333,"curve":"stepped"},{"time":2.3,"y":0.14,"curve":"stepped"},{"time":2.4,"y":0.14}],"scale":[{"time":0.0333,"x":0.53,"y":0.414},{"time":0.0667,"x":0.531,"y":0.417},{"time":0.1,"x":0.443,"y":0.595},{"time":0.1333,"x":0.444,"y":0.596,"curve":"stepped"},{"time":2.3667,"x":0.444,"y":0.596},{"time":2.4,"x":0.551,"y":0.633},{"time":2.8667,"x":0.551,"y":0.593}],"shear":[{"time":2.4}]},"bone162":{"rotate":[{"time":2.8667,"angle":-40.38,"curve":"stepped"},{"time":3.2333,"angle":-40.38},{"time":3.6667,"angle":-42.09,"curve":"stepped"},{"time":3.7,"angle":-34.99},{"time":3.7333,"angle":-33.82,"curve":"stepped"},{"time":3.7667,"angle":-45.04,"curve":"stepped"},{"time":3.8333,"angle":-45.04,"curve":"stepped"},{"time":3.8667,"angle":-35.34},{"time":3.9333,"angle":-33.65,"curve":"stepped"},{"time":3.9667,"angle":-47.2},{"time":4.0333,"angle":-43.19,"curve":"stepped"},{"time":4.0667,"angle":5.59},{"time":4.1333,"angle":3.48,"curve":"stepped"},{"time":4.1667,"angle":5.59,"curve":"stepped"},{"time":4.2333,"angle":5.59,"curve":"stepped"},{"time":4.2667,"angle":-4.03},{"time":4.3333,"angle":-0.76,"curve":"stepped"},{"time":4.3667,"angle":-37.13,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"angle":4.64,"curve":"stepped"},{"time":4.4667,"angle":-0.57},{"time":4.5333,"angle":1.21,"curve":"stepped"},{"time":4.5667,"angle":5.59,"curve":"stepped"},{"time":4.6333,"angle":5.59,"curve":"stepped"},{"time":4.6667,"angle":-4.03},{"time":4.7333,"angle":-0.76,"curve":"stepped"},{"time":4.7667,"angle":-37.13,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"angle":4.64}],"translate":[{"time":3.2333},{"time":3.6667,"x":40.05,"y":-41.01,"curve":"stepped"},{"time":3.7,"y":-4.51,"curve":"stepped"},{"time":3.7333,"y":-4.51,"curve":"stepped"},{"time":3.7667,"y":-3.01,"curve":"stepped"},{"time":3.9333,"y":-3.01,"curve":"stepped"},{"time":3.9667,"y":-4.51,"curve":"stepped"},{"time":4.0333,"y":-4.51,"curve":"stepped"},{"time":4.0667,"curve":"stepped"},{"time":4.3333,"curve":"stepped"},{"time":4.3667,"x":-1.97,"y":-5.2,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"curve":"stepped"},{"time":4.7333,"curve":"stepped"},{"time":4.7667,"x":-1.97,"y":-5.2,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333}],"scale":[{"time":2.8667,"x":3.079,"curve":"stepped"},{"time":3.6667,"x":3.079,"curve":"stepped"},{"time":3.7,"x":3.079,"y":2.351,"curve":"stepped"},{"time":3.7333,"x":3.079,"y":2.351,"curve":"stepped"},{"time":3.7667,"x":3.308,"y":3.308,"curve":"stepped"},{"time":3.8667,"x":3.308,"y":3.308},{"time":3.9333,"x":3.305,"y":2.805,"curve":"stepped"},{"time":3.9667,"x":3.079,"y":2.351},{"time":4.0333,"x":2.108,"y":2.333,"curve":"stepped"},{"time":4.0667,"x":3.459,"y":4.439},{"time":4.1333,"x":2.991,"y":4.439,"curve":"stepped"},{"time":4.1667,"x":2.714,"y":1.246,"curve":"stepped"},{"time":4.2333,"x":2.714,"y":1.246,"curve":"stepped"},{"time":4.2667,"x":2.836,"y":1.614},{"time":4.3333,"x":3.079,"y":2.351,"curve":"stepped"},{"time":4.3667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"x":2.714,"y":0.895,"curve":"stepped"},{"time":4.4667,"x":2.714,"y":0.895},{"time":4.5333,"x":2.714,"y":4.439,"curve":"stepped"},{"time":4.5667,"x":3.459,"y":4.439,"curve":"stepped"},{"time":4.6333,"x":3.459,"y":4.439,"curve":"stepped"},{"time":4.6667,"x":2.836,"y":1.614},{"time":4.7333,"x":3.079,"y":2.351,"curve":"stepped"},{"time":4.7667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"x":2.714,"y":0.895}]},"BZ/z_bianzi_hou4":{"rotate":[{"time":2.8667,"angle":-14.59},{"time":3.2333,"angle":-22.87,"curve":"stepped"},{"time":3.6667,"angle":-22.87,"curve":"stepped"},{"time":3.7,"angle":3.54},{"time":3.7333,"angle":4.7,"curve":"stepped"},{"time":3.7667,"angle":-6.52,"curve":"stepped"},{"time":3.8333,"angle":-6.52,"curve":"stepped"},{"time":3.8667,"angle":3.19},{"time":3.9333,"angle":4.87,"curve":"stepped"},{"time":3.9667,"angle":-8.67},{"time":4.0333,"angle":-4.66,"curve":"stepped"},{"time":4.0667,"angle":1.72},{"time":4.1333,"angle":-0.39,"curve":"stepped"},{"time":4.1667,"angle":1.72,"curve":"stepped"},{"time":4.2333,"angle":1.72,"curve":"stepped"},{"time":4.2667,"angle":-7.9},{"time":4.3333,"angle":-4.64,"curve":"stepped"},{"time":4.3667,"angle":1.4,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"angle":0.77,"curve":"stepped"},{"time":4.4667,"angle":-4.44},{"time":4.5333,"angle":-2.66,"curve":"stepped"},{"time":4.5667,"angle":1.72,"curve":"stepped"},{"time":4.6333,"angle":1.72,"curve":"stepped"},{"time":4.6667,"angle":-7.9},{"time":4.7333,"angle":-4.64,"curve":"stepped"},{"time":4.7667,"angle":1.4,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"angle":0.77}],"translate":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"y":0.14,"curve":"stepped"},{"time":3.7333,"y":0.14,"curve":"stepped"},{"time":3.7667,"y":0.09,"curve":"stepped"},{"time":3.9333,"y":0.09,"curve":"stepped"},{"time":3.9667,"y":0.14,"curve":"stepped"},{"time":4.0333,"y":0.14,"curve":"stepped"},{"time":4.0667}],"scale":[{"time":2.8667,"x":0.498,"y":0.508},{"time":3.2333,"x":0.112,"y":0.38,"curve":"stepped"},{"time":3.6667,"x":0.112,"y":0.38,"curve":"stepped"},{"time":3.7,"x":0.299,"y":0.519},{"time":3.7333,"x":0.064,"y":0.455,"curve":"stepped"},{"time":3.7667,"x":0.54,"y":0.38,"curve":"stepped"},{"time":3.8667,"x":0.54,"y":0.38},{"time":3.9333,"x":0.105,"y":0.323,"curve":"stepped"},{"time":3.9667,"x":0.092,"y":0.373},{"time":4.0333,"x":0.376,"y":0.376,"curve":"stepped"},{"time":4.0667,"x":0.376,"y":0.491},{"time":4.1333,"x":0.534,"y":0.451,"curve":"stepped"},{"time":4.1667,"x":0.289,"y":0.442},{"time":4.2333,"x":0.2,"y":0.445,"curve":"stepped"},{"time":4.2667,"x":0.206,"y":0.47},{"time":4.3333,"x":0.219,"y":0.519,"curve":"stepped"},{"time":4.3667,"x":0.376,"y":0.376,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"x":0.071,"y":0.317,"curve":"stepped"},{"time":4.4667,"x":0.112,"y":0.491},{"time":4.5333,"x":0.34,"y":0.491,"curve":"stepped"},{"time":4.5667,"x":0.376,"y":0.491,"curve":"stepped"},{"time":4.6333,"x":0.376,"y":0.491,"curve":"stepped"},{"time":4.6667,"x":0.206,"y":0.47},{"time":4.7333,"x":0.219,"y":0.519,"curve":"stepped"},{"time":4.7667,"x":0.376,"y":0.376,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"x":0.071,"y":0.317}],"shear":[{"time":2.8667,"y":11.59},{"time":3.2333,"y":39.66},{"time":3.6667,"y":35.53,"curve":"stepped"},{"time":3.7,"y":-10.68},{"time":3.7333,"y":-25.89,"curve":"stepped"},{"time":3.7667,"curve":"stepped"},{"time":3.8667},{"time":3.9333,"y":-6.43,"curve":"stepped"},{"time":3.9667,"y":5.81},{"time":4.0333,"curve":"stepped"},{"time":4.3667},{"time":4.4333,"y":-17.42,"curve":"stepped"},{"time":4.4667,"y":3.5,"curve":"stepped"},{"time":4.6333,"y":3.5,"curve":"stepped"},{"time":4.6667,"curve":"stepped"},{"time":4.7667},{"time":4.8333,"y":-17.42}]},"bone176":{"rotate":[{"time":2.8667,"angle":-7.66},{"time":3.2333,"angle":-6.73,"curve":"stepped"},{"time":3.6667,"angle":-6.73,"curve":"stepped"},{"time":3.7,"angle":7.19},{"time":3.7333,"angle":8.36,"curve":"stepped"},{"time":3.7667,"angle":-2.86,"curve":"stepped"},{"time":3.8333,"angle":-2.86,"curve":"stepped"},{"time":3.8667,"angle":6.84},{"time":3.9333,"angle":14.08,"curve":"stepped"},{"time":3.9667,"angle":-5.02},{"time":4.0333,"angle":-1,"curve":"stepped"},{"time":4.0667,"angle":7.04},{"time":4.1333,"angle":4.69,"curve":"stepped"},{"time":4.1667,"angle":3.22},{"time":4.2333,"angle":-5.33,"curve":"stepped"},{"time":4.2667,"angle":-0.96},{"time":4.3333,"angle":2.3,"curve":"stepped"},{"time":4.3667,"angle":5.05,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"angle":7.7,"curve":"stepped"},{"time":4.4667,"angle":-11.5},{"time":4.5333,"angle":-2.39,"curve":"stepped"},{"time":4.5667,"angle":7.04,"curve":"stepped"},{"time":4.6333,"angle":7.04,"curve":"stepped"},{"time":4.6667,"angle":-0.96},{"time":4.7333,"angle":2.3,"curve":"stepped"},{"time":4.7667,"angle":5.05,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"angle":7.7}],"translate":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"y":-0.66,"curve":"stepped"},{"time":3.7333,"y":-0.66,"curve":"stepped"},{"time":3.7667,"y":-0.44,"curve":"stepped"},{"time":3.9333,"y":-0.44,"curve":"stepped"},{"time":3.9667,"y":-0.66,"curve":"stepped"},{"time":4.0333,"y":-0.66,"curve":"stepped"},{"time":4.0667}],"scale":[{"time":2.8667},{"time":3.2333,"y":0.856,"curve":"stepped"},{"time":3.6667,"y":0.856,"curve":"stepped"},{"time":3.7,"y":0.849},{"time":3.7333,"y":0.744,"curve":"stepped"},{"time":3.7667,"curve":"stepped"},{"time":3.8667},{"time":3.9333,"x":0.999,"y":0.848,"curve":"stepped"},{"time":3.9667,"y":0.744},{"time":4.0333,"curve":"stepped"},{"time":4.0667,"y":0.849,"curve":"stepped"},{"time":4.3333,"y":0.849,"curve":"stepped"},{"time":4.3667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"y":0.849,"curve":"stepped"},{"time":4.7333,"y":0.849,"curve":"stepped"},{"time":4.7667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"y":0.849}],"shear":[{"time":3.8667},{"time":3.9333,"y":-14.2,"curve":"stepped"},{"time":3.9667,"y":7.74},{"time":4.0333,"curve":"stepped"},{"time":4.4333,"curve":"stepped"},{"time":4.4667,"y":9.98},{"time":4.5333,"y":-1.13,"curve":"stepped"},{"time":4.6333,"y":-1.13,"curve":"stepped"},{"time":4.6667}]},"BZ/z_jiao":{"rotate":[{"time":0.1,"angle":-0.77}]},"TX_yan1_1":{"rotate":[{"time":0.1333,"angle":-80.41,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.5667,"angle":-51.35,"curve":"stepped"},{"time":1.6333,"angle":-67.95},{"time":2.2333,"angle":-61.2,"curve":"stepped"},{"time":2.3,"angle":52.81}],"translate":[{"time":0.1333,"x":2260.47,"y":1557.54,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.5667,"x":2857.47,"y":1657.42,"curve":"stepped"},{"time":1.6333,"x":2726.3,"y":1612.67},{"time":2.2333,"x":2855.07,"y":1780.14,"curve":"stepped"},{"time":2.3,"x":1652.38,"y":1594.24,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":2.3667,"x":2715.95,"y":1635.64}],"scale":[{"time":0.1333,"x":2.384,"y":2.149,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.5667,"x":5.943,"y":4.411,"curve":"stepped"},{"time":1.6333,"x":4.19,"y":4.956},{"time":2.2333,"x":6.373,"y":4.956,"curve":"stepped"},{"time":2.3,"x":3.531,"y":4.555,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":2.3667,"x":6.406,"y":8.265}]},"TX_yan1_2":{"rotate":[{"time":0.1333,"angle":73.62,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.5667,"angle":96.81,"curve":"stepped"},{"time":1.6333,"angle":-118.72},{"time":2.2333,"angle":-107.21}],"translate":[{"time":0.1333,"x":2071.94,"y":1599.28,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.5667,"x":2072.26,"y":1936.62,"curve":"stepped"},{"time":1.6333,"x":1831.65,"y":1896.55},{"time":2.2333,"x":1362.75,"y":1996.01}],"scale":[{"time":0.1333,"x":1.919,"y":2.788,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.5667,"x":4.701,"y":4.557,"curve":"stepped"},{"time":1.6333,"x":5.861,"y":6.882},{"time":2.2333,"x":7.892,"y":10.422}]},"TX_yan1_3":{"rotate":[{"time":0.1667,"angle":-1.87,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.5667,"angle":5.93}],"translate":[{"time":0.1667,"x":2294.06,"y":1488.4,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.5667,"x":2580.26,"y":1746.77}],"scale":[{"time":0.1667,"x":2.516,"y":2.277,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.5667,"x":4.866,"y":4.585}]},"TX_yan1_4":{"rotate":[{"time":0.2667,"angle":90.49,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4333,"angle":101.79},{"time":0.4667,"angle":90.49,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6333,"angle":101.79},{"time":0.6667,"angle":90.49,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8333,"angle":101.79}],"translate":[{"time":0.2667,"x":2380.3,"y":1586.04,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4333,"x":2579.76,"y":1781.34},{"time":0.4667,"x":2380.3,"y":1586.04,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6333,"x":2579.76,"y":1781.34},{"time":0.6667,"x":2380.3,"y":1586.04,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8333,"x":2579.76,"y":1781.34}],"scale":[{"time":0.2667,"x":1.684,"y":2.533,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4333,"x":3.847,"y":4.52},{"time":0.4667,"x":1.684,"y":2.533,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6333,"x":3.847,"y":4.52},{"time":0.6667,"x":1.684,"y":2.533,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8333,"x":3.847,"y":4.52}]},"TX_yan1_5":{"rotate":[{"time":0.2333,"angle":59.13,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4,"angle":49.41,"curve":"stepped"},{"time":0.4333,"angle":59.13,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6,"angle":49.41,"curve":"stepped"},{"time":0.6333,"angle":59.13,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8,"angle":49.41}],"translate":[{"time":0.2333,"x":2137.71,"y":1553.74,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4,"x":1660.11,"y":1744.78,"curve":"stepped"},{"time":0.4333,"x":2137.71,"y":1553.74,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6,"x":1660.11,"y":1744.78,"curve":"stepped"},{"time":0.6333,"x":2137.71,"y":1553.74,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8,"x":1660.11,"y":1744.78}],"scale":[{"time":0.2333,"x":1.761,"y":1.761,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4,"x":5.162,"y":5.162,"curve":"stepped"},{"time":0.4333,"x":1.761,"y":1.761,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6,"x":5.162,"y":5.162,"curve":"stepped"},{"time":0.6333,"x":1.761,"y":1.761,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8,"x":5.162,"y":5.162}]},"TX_yan1_6":{"rotate":[{"time":0.3,"angle":-48.19,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4667,"angle":-38.97,"curve":"stepped"},{"time":0.5,"angle":-48.19,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6667,"angle":-38.97}],"translate":[{"time":0.3,"x":1952.64,"y":1579.61,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4667,"x":1660.11,"y":1744.78,"curve":"stepped"},{"time":0.5,"x":1952.64,"y":1579.61,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6667,"x":1660.11,"y":1744.78}],"scale":[{"time":0.3,"x":1.761,"y":2.607,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4667,"x":5.162,"y":5.162,"curve":"stepped"},{"time":0.5,"x":1.761,"y":2.607,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6667,"x":5.162,"y":5.162}]},"TX_yan1_7":{"rotate":[{"time":0.3333,"angle":59.13,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5,"angle":49.41,"curve":"stepped"},{"time":0.5333,"angle":59.13,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.7,"angle":49.41}],"translate":[{"time":0.3333,"x":2137.71,"y":1553.74,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5,"x":1660.11,"y":1744.78,"curve":"stepped"},{"time":0.5333,"x":2137.71,"y":1553.74,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.7,"x":1660.11,"y":1744.78}],"scale":[{"time":0.3333,"x":1.761,"y":1.761,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5,"x":5.162,"y":5.162,"curve":"stepped"},{"time":0.5333,"x":1.761,"y":1.761,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.7,"x":5.162,"y":5.162}]},"TX_yan1_8":{"rotate":[{"time":0.4,"angle":-48.19,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5667,"angle":-38.97,"curve":"stepped"},{"time":0.6,"angle":-48.19,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.7667,"angle":-38.97}],"translate":[{"time":0.4,"x":1952.64,"y":1579.61,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5667,"x":1660.11,"y":1744.78,"curve":"stepped"},{"time":0.6,"x":1952.64,"y":1579.61,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.7667,"x":1660.11,"y":1744.78}],"scale":[{"time":0.4,"x":1.761,"y":2.607,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5667,"x":5.162,"y":5.162,"curve":"stepped"},{"time":0.6,"x":1.761,"y":2.607,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.7667,"x":5.162,"y":5.162}]},"TX_yan1_1_hou":{"rotate":[{"time":0.1333,"angle":66.4,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7,"angle":24.48,"curve":"stepped"},{"time":1.6333,"angle":27.23},{"time":2.2333,"angle":13.8},{"time":2.2667,"angle":-25.96}],"translate":[{"time":0.1333,"x":2305.44,"y":1949.98,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7,"x":2170.15,"y":2155.84,"curve":"stepped"},{"time":0.8,"x":2181.95,"y":2144.04},{"time":1.6333,"x":2242.07,"y":2083.93},{"time":2.2333,"x":1582.49,"y":2175.5},{"time":2.2667,"x":1746.33,"y":2177.72}],"scale":[{"time":0.1333,"x":3.313,"y":3.313,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.7,"x":7.625,"y":7.625,"curve":"stepped"},{"time":1.6333,"x":8.984,"y":7.625},{"time":2.2333,"x":11.906,"y":11.88},{"time":2.2667,"x":8.409,"y":11.88}]},"TX_yan1_1_hou2":{"rotate":[{"time":0.1333,"angle":-40.21}],"translate":[{"time":0.1333,"x":2854.79,"y":1579.28,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.6,"x":3009.54,"y":1605.96}],"scale":[{"time":0.1333,"x":2.685,"y":3.379,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.6,"x":5.268,"y":6.631}]},"TX_yan1_1_hou3":{"rotate":[{"time":0.2667,"angle":106.75,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4333,"angle":117.85},{"time":0.4667,"angle":-44.88,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6333,"angle":-15.7},{"time":0.6667,"angle":106.75,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8333,"angle":117.85}],"translate":[{"time":0.2667,"x":2890.62,"y":1733.89,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4333,"x":3150.8,"y":1946.37},{"time":0.4667,"x":2827.17,"y":1670.45,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6333,"x":2960.46,"y":1673.07},{"time":0.6667,"x":2890.62,"y":1733.89,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8333,"x":3150.8,"y":1946.37}],"scale":[{"time":0.2667,"x":1.902,"y":2.475,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4333,"x":3.965,"y":4.088},{"time":0.4667,"x":2.664,"y":2.28,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6333,"x":3.965,"y":4.088},{"time":0.6667,"x":1.902,"y":2.475,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8333,"x":3.965,"y":4.088}]},"TX_yan1_1_hou5":{"rotate":[{"time":0.4,"angle":45.92,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6667,"angle":34.83},{"time":0.7,"angle":45.92,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.9667,"angle":34.83}],"translate":[{"time":0.4,"x":2257.82,"y":1903.68,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6667,"x":2088.71,"y":1949.21},{"time":0.7,"x":2257.82,"y":1903.68,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.9667,"x":2088.71,"y":1949.21}],"scale":[{"time":0.4,"x":5.479,"y":4.728,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6667,"x":7.453,"y":7.022},{"time":0.7,"x":5.479,"y":4.728,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.9667,"x":7.453,"y":7.022}]},"TX_yan1_1_hou6":{"rotate":[{"time":0.5333,"angle":-122.99,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8333,"angle":-128.5}],"translate":[{"time":0.5333,"x":1680.25,"y":2063.08,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8333,"x":1355.69,"y":2323.03}],"scale":[{"time":0.5333,"x":5.184,"y":5.184,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8333,"x":7.882,"y":7.882}]},"TX_cao1":{"rotate":[{"time":0.1333,"angle":18.76,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.3333,"angle":7.45,"curve":"stepped"},{"time":0.8667,"angle":-114.54,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":-96.71,"curve":"stepped"},{"time":1.6333,"angle":-75.6},{"time":2.2333,"angle":-60.88},{"time":2.2667,"angle":46.82}],"translate":[{"time":0.1333,"x":940.33,"y":1936.89,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.3333,"x":659.41,"y":2179.07,"curve":"stepped"},{"time":0.8667,"x":-4160.46,"y":-394.19,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":12465.82,"y":734.68,"curve":"stepped"},{"time":1.6333,"x":6139.91,"y":1609.9},{"time":2.2333,"x":6675.76,"y":1966.08},{"time":2.2667,"x":7054.85,"y":1950.92},{"time":2.3333,"x":11970.84,"y":-1681.32}],"scale":[{"time":0.1333,"x":1.403,"y":1.403,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.3333,"x":1.974,"y":1.974,"curve":"stepped"},{"time":0.8667,"x":12.18,"y":16.902,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":18.604,"y":25.817,"curve":"stepped"},{"time":1.6333,"x":3.726,"y":5.171},{"time":2.2333,"x":4.398,"y":5.171}]},"TX_cao2":{"rotate":[{"time":0.1333,"angle":-97.66,"curve":0.31,"c2":0.42,"c3":0.646,"c4":0.75},{"time":0.2333,"angle":-99.9,"curve":0.316,"c2":0.65,"c3":0.655,"c4":0.97},{"time":0.4,"angle":-78.06,"curve":"stepped"},{"time":0.9,"angle":-115.75,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1,"angle":-101.05,"curve":"stepped"},{"time":1.6333,"angle":-130.46},{"time":2.2333,"angle":-109.94,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":2.3333,"angle":-126.49}],"translate":[{"time":0.1333,"x":1234.86,"y":1838.45,"curve":0.312,"c2":0.41,"c3":0.648,"c4":0.74},{"time":0.2333,"x":1657.91,"y":1891.67,"curve":0.316,"c2":0.55,"c3":0.654,"c4":0.88},{"time":0.4,"x":1915.09,"y":2139.47,"curve":"stepped"},{"time":0.4333,"x":985.56,"y":2644.11,"curve":"stepped"},{"time":0.4667,"x":1021.35,"y":2608.32,"curve":"stepped"},{"time":0.5,"x":407.92,"y":1064.07,"curve":"stepped"},{"time":0.6667,"x":2408.31,"y":2977.35,"curve":"stepped"},{"time":0.7333,"x":752.51,"y":2616.5,"curve":"stepped"},{"time":0.7667,"x":780.19,"y":2588.83,"curve":"stepped"},{"time":0.8,"x":1633.73,"y":2909.59,"curve":"stepped"},{"time":0.9,"x":-1334.86,"y":-967.88,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1,"x":3935.29,"y":-367.33,"curve":"stepped"},{"time":1.6333,"x":735.64,"y":2068.63},{"time":2.2333,"x":1109.39,"y":1954.43,"curve":0.411,"c2":0.46,"c3":0.691,"c4":0.79},{"time":2.2667,"x":-1196.55,"y":1475.39,"curve":0.262,"c2":0.65,"c3":0.55,"c4":0.96},{"time":2.3333,"x":-4093.5,"y":563.68}],"scale":[{"time":0.1333,"y":1.237,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.4,"x":1.976,"y":2.89,"curve":"stepped"},{"time":0.9,"x":18.402,"y":18.067,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1,"x":18.402,"y":21.717,"curve":"stepped"},{"time":1.6333,"x":1.846,"y":2.702},{"time":2.2333,"x":1.846,"y":2.143,"curve":0.411,"c2":0.46,"c3":0.691,"c4":0.79},{"time":2.2667,"x":4.578,"y":5.317,"curve":0.262,"c2":0.65,"c3":0.55,"c4":0.96},{"time":2.3333,"x":3.895,"y":4.524}]},"TX_cao3":{"rotate":[{"time":0.1667,"angle":-107.01,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.4333,"angle":-76.34}],"translate":[{"time":0.1667,"x":1004.15,"y":1864.14,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.4333,"x":1304.32,"y":1988.74}],"scale":[{"time":0.1667,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.4333,"x":2.089,"y":2.089}]},"TX_cao5":{"rotate":[{"time":0.2667,"angle":42.78,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.3667,"angle":30.42,"curve":"stepped"},{"time":0.4,"angle":42.78,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5,"angle":30.42,"curve":"stepped"},{"time":0.5333,"angle":42.78,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6333,"angle":32.67,"curve":"stepped"},{"time":0.6667,"angle":42.78,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.7667,"angle":34.95}],"translate":[{"time":0.2667,"x":964.5,"y":1913.49,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.3667,"x":650.14,"y":2140.99,"curve":"stepped"},{"time":0.4,"x":964.5,"y":1913.49,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5,"x":738.47,"y":2058.98,"curve":"stepped"},{"time":0.5333,"x":964.5,"y":1913.49,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6333,"x":553.99,"y":2030.42,"curve":"stepped"},{"time":0.6667,"x":964.5,"y":1913.49,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.7667,"x":376.96,"y":1966.66}],"scale":[{"time":0.2667,"x":0.947,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.3667,"x":1.787,"y":1.886,"curve":"stepped"},{"time":0.4,"x":0.947,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5,"x":1.787,"y":1.886,"curve":"stepped"},{"time":0.5333,"x":0.947,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6333,"x":1.787,"y":1.886,"curve":"stepped"},{"time":0.6667,"x":0.947,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.7667,"x":1.787,"y":1.886}]},"TX_cao6":{"rotate":[{"time":0.3,"angle":-72.58,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4,"angle":-69.43,"curve":"stepped"},{"time":0.4333,"angle":-72.58,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5333,"angle":-69.43,"curve":"stepped"},{"time":0.5667,"angle":-72.58,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6667,"angle":-69.43,"curve":"stepped"},{"time":0.7,"angle":-72.58,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8,"angle":-69.43}],"translate":[{"time":0.3,"x":1116.77,"y":1879.87,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4,"x":1329.27,"y":1995.78,"curve":"stepped"},{"time":0.4333,"x":1116.77,"y":1879.87,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5333,"x":1329.27,"y":1995.78,"curve":"stepped"},{"time":0.5667,"x":1116.77,"y":1879.87,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6667,"x":1329.27,"y":1995.78,"curve":"stepped"},{"time":0.7,"x":1116.77,"y":1879.87,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8,"x":1329.27,"y":1995.78}],"scale":[{"time":0.3,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4,"x":1.508,"y":1.508,"curve":"stepped"},{"time":0.4333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5333,"x":1.508,"y":1.508,"curve":"stepped"},{"time":0.5667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6667,"x":1.508,"y":1.508,"curve":"stepped"},{"time":0.7,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8,"x":1.508,"y":1.508}]},"TX_cao7":{"rotate":[{"time":0.3333,"angle":-70.19,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4333,"angle":-59.14,"curve":"stepped"},{"time":0.4667,"angle":-70.19,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5667,"angle":-59.14,"curve":"stepped"},{"time":0.6,"angle":-70.19,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.7,"angle":-59.14,"curve":"stepped"},{"time":0.7333,"angle":-70.19,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8333,"angle":-59.14}],"translate":[{"time":0.3333,"x":1581,"y":1875.62,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4333,"x":1805.08,"y":2037.46,"curve":"stepped"},{"time":0.4667,"x":1581,"y":1875.62,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5667,"x":1805.08,"y":2037.46,"curve":"stepped"},{"time":0.6,"x":1581,"y":1875.62,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.7,"x":1805.08,"y":2037.46,"curve":"stepped"},{"time":0.7333,"x":1581,"y":1875.62,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8333,"x":1805.08,"y":2037.46}],"scale":[{"time":0.3333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4333,"x":1.579,"y":1.579,"curve":"stepped"},{"time":0.4667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5667,"x":1.579,"y":1.579,"curve":"stepped"},{"time":0.6,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.7,"x":1.579,"y":1.579,"curve":"stepped"},{"time":0.7333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8333,"x":1.579,"y":1.579}]},"TX_cao8":{"rotate":[{"time":0.3333,"angle":-65.2,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4333,"angle":-65.29,"curve":"stepped"},{"time":0.4667,"angle":-65.2,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5667,"angle":-65.29,"curve":"stepped"},{"time":0.6,"angle":-65.2,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.7,"angle":-68.25,"curve":"stepped"},{"time":0.7333,"angle":-65.2,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8333,"angle":-71.76}],"translate":[{"time":0.3333,"x":913.88,"y":1926.71,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4333,"x":650.2,"y":2164.8,"curve":"stepped"},{"time":0.4667,"x":913.88,"y":1926.71,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5667,"x":650.2,"y":2164.8,"curve":"stepped"},{"time":0.6,"x":913.88,"y":1926.71,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.7,"x":491.5,"y":1988.9,"curve":"stepped"},{"time":0.7333,"x":913.88,"y":1926.71,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8333,"x":461.52,"y":1988.9}],"scale":[{"time":0.3333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4333,"x":1.564,"y":1.564,"curve":"stepped"},{"time":0.4667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5667,"x":1.564,"y":1.564,"curve":"stepped"},{"time":0.6,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.7,"x":1.564,"y":1.564,"curve":"stepped"},{"time":0.7333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8333,"x":1.564,"y":1.564}]},"TX_cao9":{"rotate":[{"time":0.3667,"angle":77.65,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4667,"angle":81.43,"curve":"stepped"},{"time":0.5,"angle":77.65,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6,"angle":81.43}],"translate":[{"time":0.3667,"x":1031.05,"y":1940.68,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4667,"x":1284.14,"y":2070.39,"curve":"stepped"},{"time":0.5,"x":1031.05,"y":1940.68,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6,"x":1284.14,"y":2070.39}],"scale":[{"time":0.3667,"x":-0.918,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4667,"x":-1.577,"y":1.545,"curve":"stepped"},{"time":0.5,"x":-0.918,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6,"x":-1.577,"y":1.545}]},"TX_cao10":{"rotate":[{"time":0.4,"angle":84.41,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5,"angle":103.77,"curve":"stepped"},{"time":0.5333,"angle":84.41,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6333,"angle":103.77}],"translate":[{"time":0.4,"x":1508,"y":1922.43,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5,"x":1733.36,"y":2060.34,"curve":"stepped"},{"time":0.5333,"x":1508,"y":1922.43,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6333,"x":1733.36,"y":2060.34}],"scale":[{"time":0.4,"x":-1.102,"y":1.219,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5,"x":-1.283,"y":1.291,"curve":"stepped"},{"time":0.5333,"x":-1.102,"y":1.219,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6333,"x":-1.283,"y":1.291}]},"TX_chentu1":{"translate":[{"time":0.1,"x":490.29,"y":1962.8}],"scale":[{"time":0.1,"x":1.2,"y":1.2,"curve":0.289,"c2":0.67,"c3":0.457},{"time":0.4333,"x":2.582,"y":2.793}]},"TX_chentu2":{"translate":[{"time":0.2333,"x":531.14,"y":1973.41}],"scale":[{"time":0.2333},{"time":0.3,"x":2.243,"y":2.126},{"time":0.3333},{"time":0.4,"x":2.288,"y":2.169},{"time":0.4333},{"time":0.5,"x":1.912,"y":1.813},{"time":0.5333},{"time":0.6,"x":2.012,"y":1.907},{"time":0.6333},{"time":0.7,"x":1.862,"y":1.765},{"time":0.7333},{"time":0.8,"x":1.699,"y":1.611}]},"TX_chentu_hou":{"translate":[{"time":0.1,"x":637.96,"y":2082.08}],"scale":[{"time":0.1,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.5,"x":2.403,"y":3.1}]},"TX_guangyun":{"rotate":[{"time":3.7333,"curve":"stepped"},{"time":3.7667,"angle":-46.83,"curve":"stepped"},{"time":3.8,"angle":43.58},{"time":3.8333,"curve":"stepped"},{"time":3.8667,"curve":"stepped"},{"time":3.9,"angle":-46.83,"curve":"stepped"},{"time":3.9333,"angle":43.58},{"time":3.9667,"curve":"stepped"},{"time":4,"curve":"stepped"},{"time":4.0333,"angle":-46.83,"curve":"stepped"},{"time":4.0667,"angle":43.58},{"time":4.1,"curve":"stepped"},{"time":4.1333,"curve":"stepped"},{"time":4.1667,"angle":-46.83,"curve":"stepped"},{"time":4.2,"angle":43.58},{"time":4.2333,"curve":"stepped"},{"time":4.2667,"curve":"stepped"},{"time":4.3,"angle":-46.83,"curve":"stepped"},{"time":4.3333,"angle":43.58},{"time":4.3667,"curve":"stepped"},{"time":4.4,"curve":"stepped"},{"time":4.4333,"angle":-46.83,"curve":"stepped"},{"time":4.4667,"angle":43.58},{"time":4.5,"curve":"stepped"},{"time":4.5333,"curve":"stepped"},{"time":4.5667,"angle":-46.83,"curve":"stepped"},{"time":4.6,"angle":43.58}],"translate":[{"time":1.6333,"x":-213.81,"y":2154.39,"curve":"stepped"},{"time":2.2333,"x":-213.81,"y":2154.39,"curve":"stepped"},{"time":2.8333,"x":-1912.27,"y":2486},{"time":3.6667,"x":-1661.31,"y":2107.72,"curve":"stepped"},{"time":3.7,"x":-1912.27,"y":2486}],"scale":[{"time":1.6333,"x":8.668,"y":8.668},{"time":2.2333,"x":13.926,"y":13.926,"curve":"stepped"},{"time":2.8333,"x":8.773,"y":8.773,"curve":0.123,"c2":0.3,"c3":0.56,"c4":0.95},{"time":3.6667,"x":20.314,"y":20.314,"curve":"stepped"},{"time":3.7,"x":46.625,"y":28.199,"curve":"stepped"},{"time":3.7333,"x":16.157,"y":46.625,"curve":"stepped"},{"time":3.7667,"x":16.157,"y":26.938,"curve":"stepped"},{"time":3.8,"x":38.311,"y":51.256},{"time":3.8333,"x":46.625,"y":28.199,"curve":"stepped"},{"time":3.8667,"x":16.157,"y":46.625,"curve":"stepped"},{"time":3.9,"x":16.157,"y":26.938,"curve":"stepped"},{"time":3.9333,"x":38.311,"y":51.256},{"time":3.9667,"x":46.625,"y":28.199,"curve":"stepped"},{"time":4,"x":16.157,"y":46.625,"curve":"stepped"},{"time":4.0333,"x":16.157,"y":26.938,"curve":"stepped"},{"time":4.0667,"x":38.311,"y":51.256},{"time":4.1,"x":46.625,"y":28.199,"curve":"stepped"},{"time":4.1333,"x":16.157,"y":46.625,"curve":"stepped"},{"time":4.1667,"x":16.157,"y":26.938,"curve":"stepped"},{"time":4.2,"x":38.311,"y":51.256},{"time":4.2333,"x":46.625,"y":28.199,"curve":"stepped"},{"time":4.2667,"x":16.157,"y":46.625,"curve":"stepped"},{"time":4.3,"x":16.157,"y":26.938,"curve":"stepped"},{"time":4.3333,"x":38.311,"y":51.256},{"time":4.3667,"x":46.625,"y":28.199,"curve":"stepped"},{"time":4.4,"x":16.157,"y":46.625,"curve":"stepped"},{"time":4.4333,"x":16.157,"y":26.938,"curve":"stepped"},{"time":4.4667,"x":38.311,"y":51.256},{"time":4.5,"x":46.625,"y":28.199,"curve":"stepped"},{"time":4.5333,"x":16.157,"y":46.625,"curve":"stepped"},{"time":4.5667,"x":16.157,"y":26.938,"curve":"stepped"},{"time":4.6,"x":38.311,"y":51.256}]},"TX_huiji1":{"rotate":[{"time":3.7,"angle":105.72},{"time":3.7333,"angle":88.01},{"time":3.7667,"angle":8.19,"curve":"stepped"},{"time":3.8667,"angle":112.39},{"time":3.9333,"angle":40.34},{"time":3.9667,"angle":33.57,"curve":"stepped"},{"time":4,"angle":54.31},{"time":4.0333,"angle":84.44,"curve":"stepped"},{"time":4.0667,"angle":112.59},{"time":4.1,"angle":42.04,"curve":"stepped"},{"time":4.1333,"angle":89.26},{"time":4.1667,"angle":124.56},{"time":4.2,"angle":168.38},{"time":4.2333,"angle":-175.58,"curve":"stepped"},{"time":4.2667,"angle":38.8},{"time":4.3,"angle":10.29,"curve":"stepped"},{"time":4.3333,"angle":33.55},{"time":4.3667,"angle":96.29},{"time":4.4,"angle":109.18,"curve":"stepped"},{"time":4.4333,"angle":139.76},{"time":4.4667,"angle":97.9},{"time":4.5,"angle":26.37,"curve":"stepped"},{"time":4.5333,"angle":64.38},{"time":4.5667,"angle":95.36},{"time":4.6,"angle":112.71}],"translate":[{"time":3.7,"x":-3889.94,"y":4767.19},{"time":3.7333,"x":6279.37,"y":3973.01},{"time":3.7667,"x":9905.75,"y":-4568.63,"curve":"stepped"},{"time":3.8667,"x":-9891.78,"y":8643.85},{"time":3.9,"x":-1507.12,"y":4837.15},{"time":3.9333,"x":2427,"y":2638.66},{"time":3.9667,"x":5592.08,"y":2324.18,"curve":"stepped"},{"time":4,"x":-751.44,"y":6523.55},{"time":4.0333,"x":-12754.24,"y":8055.01,"curve":"stepped"},{"time":4.0667,"x":1081.49,"y":2811.99},{"time":4.1,"x":6471.59,"y":-3502.6,"curve":"stepped"},{"time":4.1333,"x":5707.7,"y":11666.09},{"time":4.1667,"x":-5321.8,"y":5356.55},{"time":4.2,"x":-5805.23,"y":-3502.6},{"time":4.2333,"x":-7494.54,"y":-9626.34,"curve":"stepped"},{"time":4.2667,"x":1000.73,"y":3303.37},{"time":4.3,"x":2595.5,"y":-370.46,"curve":"stepped"},{"time":4.3333,"x":7792.04,"y":1510.19},{"time":4.3667,"x":1475.99,"y":2321.42},{"time":4.4,"x":-1668.01,"y":2201.42,"curve":"stepped"},{"time":4.4333,"x":-5101.35,"y":5161.2},{"time":4.4667,"x":1204.57,"y":2458.67},{"time":4.5,"x":5189.2,"y":-3282.62,"curve":"stepped"},{"time":4.5333,"x":7537.19,"y":6444.78},{"time":4.5667,"x":-2956.89,"y":9894.88},{"time":4.6,"x":-7461.2,"y":9080.27}],"scale":[{"time":3.7,"x":20.824,"y":20.824},{"time":3.7333,"x":2.185,"y":2.185,"curve":"stepped"},{"time":3.7667,"x":2.185,"y":2.185,"curve":"stepped"},{"time":3.8667,"x":40,"y":40},{"time":3.9333,"x":6.329,"y":6.329},{"time":3.9667,"x":2.182,"y":2.182,"curve":"stepped"},{"time":4,"x":13.909,"y":-13.909},{"time":4.0333,"x":29.729,"y":-29.729,"curve":"stepped"},{"time":4.0667,"x":18.307,"y":18.307},{"time":4.1,"x":6.186,"y":7.268,"curve":"stepped"},{"time":4.1333,"x":22.565,"y":-22.565},{"time":4.2,"x":11.716,"y":-11.716,"curve":"stepped"},{"time":4.2333,"x":11.716,"y":-11.716,"curve":"stepped"},{"time":4.2667,"x":12.356,"y":12.356},{"time":4.3,"x":9.89,"y":9.89,"curve":"stepped"},{"time":4.3333,"x":19.831,"y":-19.831},{"time":4.3667,"x":11.13,"y":-11.13},{"time":4.4,"x":3.772,"y":-3.772,"curve":"stepped"},{"time":4.4333,"x":27.667,"y":27.667},{"time":4.4667,"x":14.665,"y":14.665},{"time":4.5,"x":5.394,"y":5.394,"curve":"stepped"},{"time":4.5333,"x":18.035,"y":-18.035},{"time":4.5667,"x":14.412,"y":-14.412},{"time":4.6,"x":12.331,"y":-12.331}]},"TX_SK2_liuguang2":{"rotate":[{"time":0.1333,"angle":90.59,"curve":"stepped"},{"time":0.8,"angle":99.96},{"time":0.8333,"angle":86.44},{"time":0.8667,"angle":11.88}],"translate":[{"time":0.1333,"x":297.74,"y":-12.95,"curve":"stepped"},{"time":0.8,"x":254.44,"y":24.95,"curve":"stepped"},{"time":0.8333,"x":717.87,"y":-574.81},{"time":0.8667,"x":-3433.46,"y":1492.12}],"scale":[{"time":0.1333,"x":0.633,"y":0.642,"curve":"stepped"},{"time":0.8,"x":2.506,"y":2.542,"curve":"stepped"},{"time":0.8333,"x":1.707,"y":5.015},{"time":0.8667,"x":4.659,"y":14.264}]},"TX_SK2_liuguang7_BZH":{"rotate":[{"time":3.2,"angle":19.1},{"time":3.2333,"angle":28.21},{"time":3.4,"angle":41.35},{"time":3.6667,"angle":55.16}],"translate":[{"time":3.2,"x":2826.46,"y":6159.97},{"time":3.2333,"x":-1246.8,"y":3632.77},{"time":3.4,"x":-1789.08,"y":2830.53},{"time":3.5667,"x":-2228.99,"y":1896.69},{"time":3.6667,"x":-2352.56,"y":1242.8}],"scale":[{"time":3.2,"x":7.896,"y":7.896},{"time":3.2333,"x":7.896,"y":10.589},{"time":3.6667,"x":7.896,"y":2.296}]},"TX_liuguang_mi":{"rotate":[{"time":0.9,"angle":91.04}],"translate":[{"time":0.9,"x":-2188.86,"y":2309.33,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.9667,"x":-7875.57,"y":2309.33},{"time":1,"x":2497.4,"y":1098.27},{"time":1.0667,"x":-7980.88,"y":1098.27},{"time":1.1,"x":2998.83,"y":1468.57},{"time":1.1667,"x":-9507.87,"y":1519.51},{"time":1.2,"x":-446.3,"y":4198.06},{"time":1.2333,"x":-7822.92,"y":3994.28},{"time":1.2667,"x":-1939.73,"y":1676.35},{"time":1.3,"x":-8231.02,"y":1778.24},{"time":1.3333,"x":-3484.41,"y":738.32},{"time":1.3667,"x":-8376.93,"y":814.74},{"time":1.4,"x":-3862.88,"y":2346.95},{"time":1.4333,"x":-4434.06,"y":1624.33},{"time":1.5,"x":-2812.73,"y":911.09},{"time":1.5333,"x":1065.34,"y":1344.67},{"time":1.5667,"x":3783.07,"y":1754.15},{"time":1.6,"x":-9725.83,"y":1754.15}],"scale":[{"time":0.9,"x":-3.134,"y":12.3,"curve":"stepped"},{"time":1.5,"x":-3.134,"y":12.3},{"time":1.5333,"x":-7.677,"y":24.043},{"time":1.5667,"x":-7.677,"y":58.575}]},"TX_liuguang_mi2":{"rotate":[{"time":0.9667,"angle":90}],"translate":[{"time":0.9667,"x":-4597.64,"y":2130.24},{"time":1,"x":-8001.85,"y":2130.24},{"time":1.0333,"x":-2634.81,"y":5114.23},{"time":1.0667,"x":-8374.85,"y":5114.23},{"time":1.1,"x":-2386.15,"y":4782.67},{"time":1.1333,"x":-9265.9,"y":4658.34},{"time":1.1667,"x":-2676.26,"y":1197.74},{"time":1.2,"x":-9556.01,"y":1197.74},{"time":1.2333,"x":-3463.7,"y":1177.02},{"time":1.2667,"x":-8084.74,"y":1177.02},{"time":1.3,"x":-3194.31,"y":3601.51},{"time":1.3333,"x":-9058.68,"y":3601.51},{"time":1.3667,"x":-4334.03,"y":3870.9},{"time":1.4,"x":-9929.01,"y":3870.9},{"time":1.4333,"x":-4271.86,"y":2731.18},{"time":1.4667,"x":-8188.35,"y":2731.18},{"time":1.5,"x":-3567.31,"y":1384.24},{"time":1.5333,"x":-8582.07,"y":1384.24},{"time":1.5667,"x":-396.82,"y":3622.24},{"time":1.6,"x":4493.61,"y":3477.18}],"scale":[{"time":0.9667,"x":3.534,"y":11.394,"curve":"stepped"},{"time":1.5667,"x":3.534,"y":11.394},{"time":1.6,"x":3.534,"y":19.116}]},"TX/shuye1":{"rotate":[{"time":1.6333,"angle":6.19},{"time":2.2333,"angle":24.88},{"time":2.2667,"angle":-125.43},{"time":2.3333,"angle":-50.35,"curve":"stepped"},{"time":3.7,"angle":-21.27}],"translate":[{"time":1.6333,"x":7052.37,"y":3002.75},{"time":2.2333,"x":6760.53,"y":3260.27},{"time":2.2667,"x":5851.65,"y":3526.29},{"time":2.3333,"x":6361.73,"y":5428.29,"curve":"stepped"},{"time":3.7,"x":-78.21,"y":514.55}],"scale":[{"time":1.6333,"x":1.555,"y":1.555},{"time":2.2333,"x":1.283,"y":1.16},{"time":2.2667,"x":1.867,"y":0.735}]},"TX/shuye2":{"rotate":[{"time":1.6333,"angle":-139.22},{"time":2.2333,"angle":-119.41},{"time":2.2667,"angle":-62.11},{"time":2.3667,"angle":7.41}],"translate":[{"time":1.6333,"x":4608.81,"y":1125.04},{"time":2.2333,"x":5082.6,"y":1083.84},{"time":2.2667,"x":5415.62,"y":1153.95},{"time":2.3,"x":5623.9,"y":1302.42},{"time":2.3333,"x":4768.12,"y":1945.8},{"time":2.3667,"x":4240.22,"y":3381.04}],"scale":[{"time":1.6333,"x":1.659,"y":1.659,"curve":"stepped"},{"time":2.2333,"x":1.659,"y":1.659},{"time":2.2667,"x":1.659,"y":0.736}]},"TX/shuye3":{"rotate":[{"time":1.6333,"angle":12.48},{"time":2.2333,"angle":33.16,"curve":"stepped"},{"time":2.2667,"angle":33.16},{"time":2.3,"angle":27.72,"curve":"stepped"},{"time":2.4,"angle":27.72,"curve":"stepped"},{"time":3.7,"angle":72.56}],"translate":[{"time":1.6333,"x":1533.38,"y":2756.44},{"time":2.2333,"x":1109.85,"y":2992.49},{"time":2.2667,"x":581.31,"y":3251.13},{"time":2.3,"x":-191.62,"y":2486.47},{"time":2.4,"x":-4173.62,"y":4637.44,"curve":"stepped"},{"time":3.7,"x":-127.87,"y":-261.26}],"scale":[{"time":1.6333,"x":1.604,"y":1.604},{"time":2.2333,"x":1.4,"y":1.4},{"time":2.2667,"x":1.243,"y":0.85},{"time":2.4,"x":1.967,"y":1.346}]},"TX/shuye4":{"rotate":[{"time":1.6333,"angle":-186.34},{"time":2.2333,"angle":-168.39},{"time":2.2667,"angle":-177.29},{"time":2.3667,"angle":-257.03,"curve":"stepped"},{"time":3.7,"angle":40.39}],"translate":[{"time":1.6333,"x":82.47,"y":2008},{"time":2.2333,"x":148.03,"y":1618.39},{"time":2.2667,"x":114.79,"y":1347.21},{"time":2.3667,"x":-3937.21,"y":-430.9,"curve":"stepped"},{"time":3.7,"x":-611.4,"y":130.63}],"scale":[{"time":1.6333,"x":1.516,"y":1.1},{"time":2.2333,"x":1.516,"y":1.499},{"time":2.2667,"x":1.516,"y":1.05},{"time":2.3667,"x":2.833,"y":1.962}]},"TX/shuye5":{"rotate":[{"time":1.6333,"angle":-116.39},{"time":2.2333,"angle":-109.34},{"time":2.2667,"angle":-88.3,"curve":"stepped"},{"time":2.3,"angle":-88.3},{"time":2.3333,"angle":-24.15},{"time":2.3667,"angle":1.18}],"translate":[{"time":1.6333,"x":856.96,"y":909.82},{"time":2.2333,"x":1422.41,"y":1399.25},{"time":2.2667,"x":1579.41,"y":1300.23,"curve":"stepped"},{"time":2.3,"x":1579.41,"y":1300.23},{"time":2.3333,"x":4309.49,"y":1406.67},{"time":2.3667,"x":4929.41,"y":1859.12}],"scale":[{"time":1.6333,"x":1.937,"y":1.417},{"time":2.2333,"x":1.28,"y":1.11},{"time":2.2667,"x":1.627,"y":0.794}]},"TX/shuye6":{"rotate":[{"time":1.6333,"angle":-239.53},{"time":2.2333,"angle":120.47},{"time":2.2667,"angle":-189.61},{"time":2.3,"angle":170.39}],"translate":[{"time":1.6333,"x":3850.99,"y":3189.82},{"time":2.2333,"x":3566.69,"y":2924.36},{"time":2.2667,"x":3645.67,"y":2819.05}],"scale":[{"time":1.6333,"x":1.267,"y":1.012},{"time":2.2333,"x":1.487,"y":1.779}]},"TX/shuye7":{"rotate":[{"time":1.6333,"angle":-254.73},{"time":2.2333,"angle":-271.21},{"time":2.2667,"angle":88.79},{"time":2.3,"angle":-279.72},{"time":2.3333,"angle":14.61},{"time":2.3667,"angle":-28.81}],"translate":[{"time":1.6333,"x":2183.66,"y":1880.94},{"time":2.2333,"x":2570.27,"y":1665.16},{"time":2.2667,"x":2979.15,"y":1480.19},{"time":2.3,"x":2341.96,"y":2414.33},{"time":2.3333,"x":3387.45,"y":1950.35},{"time":2.3667,"x":2521.36,"y":2643.22}],"scale":[{"time":1.6333,"x":1.373,"y":1.263},{"time":2.2333,"x":1.464,"y":1.346},{"time":2.2667,"x":1.129,"y":0.834}]},"TX/shuye8":{"rotate":[{"time":1.6333,"angle":-26.35},{"time":2.2333,"angle":-8.62},{"time":2.2667,"angle":51.89},{"time":2.3667,"angle":25.5}],"translate":[{"time":1.6333,"x":5814.99,"y":2038.38},{"time":2.2333,"x":5793.77,"y":2541.25},{"time":2.2667,"x":6115.46,"y":2565.99},{"time":2.3667,"x":3678.03,"y":4607.49}],"scale":[{"time":1.6333,"x":1.897,"y":1.897},{"time":2.2333,"x":1.517,"y":1.517}]},"TX/shuye9":{"rotate":[{"time":1.6333,"angle":-56.17},{"time":2.2333,"angle":-38.43},{"time":2.2667,"angle":4.41},{"time":2.3,"angle":-52.94},{"time":2.4,"angle":-17.72,"curve":"stepped"},{"time":3.7,"angle":-2.91}],"translate":[{"time":1.6333,"x":6644.35,"y":846.78},{"time":2.2333,"x":6899.88,"y":1196},{"time":2.2667,"x":6899.88,"y":1683.69},{"time":2.3,"x":8474.88,"y":2442.56},{"time":2.4,"x":11985.92,"y":3632.74,"curve":"stepped"},{"time":3.3667,"x":11925.06,"y":3632.74,"curve":"stepped"},{"time":3.7,"x":446.85,"y":-215.36}],"scale":[{"time":1.6333,"x":3.314,"y":2.945},{"time":2.2333,"x":2.516,"y":2.235},{"time":2.2667,"x":2.516,"y":1.264}]},"TX_suduxian_mi1":{"rotate":[{"time":0.8667,"angle":270,"curve":"stepped"},{"time":1.6333,"angle":270,"curve":"stepped"},{"time":2.4,"angle":11.4},{"time":2.4333,"angle":18.92,"curve":"stepped"},{"time":2.4667,"angle":9.74},{"time":2.5333,"angle":18.04},{"time":2.5667,"angle":-2.26},{"time":2.6,"angle":16.02,"curve":"stepped"},{"time":2.6333,"angle":2.51},{"time":2.7,"angle":18.64,"curve":"stepped"},{"time":2.7333,"angle":11.92},{"time":2.8,"angle":18.25,"curve":"stepped"},{"time":2.8333,"angle":13.87},{"time":2.8667,"angle":30.37}],"translate":[{"time":0.8667,"x":3658.66,"y":639.02,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":1.5,"x":-29438.75,"y":-816.1,"curve":"stepped"},{"time":1.5333,"x":4675.31,"y":2131.13,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6333,"x":-25998.95,"y":2131.13,"curve":"stepped"},{"time":2.4,"x":-2363.89,"y":486.74},{"time":2.4333,"x":184.66,"y":-4098.37,"curve":"stepped"},{"time":2.4667,"x":-2030.46,"y":3998.26},{"time":2.5333,"x":104.31,"y":-4622.68,"curve":"stepped"},{"time":2.5667,"x":-1868.44,"y":5169.68},{"time":2.6,"x":609.71,"y":-4652.96,"curve":"stepped"},{"time":2.6333,"x":-1562.9,"y":4245.45},{"time":2.7,"x":-1476.28,"y":-5045.37,"curve":"stepped"},{"time":2.7333,"x":-2734.99,"y":4883.54},{"time":2.7667,"x":-1649.29,"y":585.28},{"time":2.8,"x":426.08,"y":-3465.56,"curve":"stepped"},{"time":2.8333,"x":-3652.99,"y":3748.18},{"time":2.8667,"x":1811.43,"y":-18237.35}],"scale":[{"time":0.8667,"x":3.786,"y":24.683,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":1.5,"x":4.869,"y":144.693,"curve":"stepped"},{"time":1.5333,"x":28.556,"y":44.6,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6333,"x":28.556,"y":76.451,"curve":"stepped"},{"time":2.4,"x":13.067,"y":11.228},{"time":2.4333,"x":13.676,"y":11.228}]},"TX_suduxian_mi2":{"rotate":[{"time":0.8667,"angle":270},{"time":1.5,"angle":-90,"curve":"stepped"},{"time":2.4,"angle":154.09},{"time":2.4667,"angle":165.27,"curve":"stepped"},{"time":2.5,"angle":150.97},{"time":2.5333,"angle":153.2},{"time":2.5667,"angle":157.29,"curve":"stepped"},{"time":2.6,"angle":138.36},{"time":2.6333,"angle":146.76},{"time":2.6667,"angle":150.64,"curve":"stepped"},{"time":2.7,"angle":133.55},{"time":2.7333,"angle":144.06},{"time":2.7667,"angle":151.88,"curve":"stepped"},{"time":2.8,"angle":145.28},{"time":2.8333,"angle":150.56}],"translate":[{"time":0.8667,"x":2933.75,"y":5178.9},{"time":1.1667,"x":-18208.44,"y":4200.4},{"time":1.5,"x":-41699.77,"y":4910.89,"curve":"stepped"},{"time":2.4,"x":5888.57,"y":-59.26},{"time":2.4333,"x":7366.43,"y":4248.56},{"time":2.4667,"x":8532.29,"y":8556.37,"curve":"stepped"},{"time":2.5,"x":5431.89,"y":-549.39},{"time":2.5333,"x":7214.53,"y":2831.37},{"time":2.5667,"x":9465.18,"y":7512.14,"curve":"stepped"},{"time":2.6,"x":4594.89,"y":-346.37},{"time":2.6333,"x":7386.28,"y":3641.9},{"time":2.6667,"x":9605.65,"y":7682.14,"curve":"stepped"},{"time":2.7,"x":4619.59,"y":-521.24},{"time":2.7333,"x":8539.91,"y":5023.07},{"time":2.7667,"x":11888.24,"y":10671.38,"curve":"stepped"},{"time":2.8,"x":8674.67,"y":5325.45},{"time":2.8333,"x":10792.71,"y":9989.81}],"scale":[{"time":0.8667,"x":8.524,"y":144.079},{"time":1.1667,"x":3.439,"y":144.079},{"time":1.5,"x":8.524,"y":144.079,"curve":"stepped"},{"time":2.4,"x":9.424,"y":6.97}]},"TX_suduxian_mi_hou1":{"rotate":[{"time":2.4,"angle":-146.7},{"time":2.5,"angle":-130.47,"curve":"stepped"},{"time":2.5333,"angle":-156.29},{"time":2.6333,"angle":-137.23,"curve":"stepped"},{"time":2.6667,"angle":-154.15},{"time":2.7667,"angle":-121.39}],"translate":[{"time":2.4,"x":7323.3,"y":70.54},{"time":2.5,"x":1818.51,"y":6032.92,"curve":"stepped"},{"time":2.5333,"x":7593.4,"y":-176.85},{"time":2.6333,"x":3460.11,"y":6416.43,"curve":"stepped"},{"time":2.6667,"x":7003.46,"y":435.44},{"time":2.7667,"x":1628.36,"y":6090.71}],"scale":[{"time":2.4,"x":3.816,"y":3.108}]},"TX_suduxian_shu1":{"rotate":[{"time":1.5333,"angle":-89.78}],"translate":[{"time":1.5333,"x":-3703.51,"y":-912.29,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6333,"x":-18341.39,"y":-912.29}],"scale":[{"time":1.5333,"x":18.586,"y":27.065,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6333,"x":18.586,"y":49.169}]},"TX_suduxian_shu2":{"rotate":[{"time":1.5333,"angle":270}],"translate":[{"time":1.3333,"x":-6166.12,"y":-44.04},{"time":1.5333,"x":-3703.33,"y":6061.58,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6667,"x":-12816.69,"y":6061.58}],"scale":[{"time":1.5333,"x":14.042,"y":29.963,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6667,"x":14.042,"y":38.347}]},"TX_suduxian_shu3":{"rotate":[{"time":1.5333,"angle":270}],"translate":[{"time":1.5333,"x":-3656.14,"y":-588.22,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6667,"x":-27572.42,"y":-588.22}],"scale":[{"time":1.5333,"x":15.52,"y":30.481,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6667,"x":15.52,"y":76.758}]},"TX_suduxian_shu4":{"rotate":[{"time":1.5333,"angle":270}],"translate":[{"time":1.5333,"x":-4066.05,"y":4718.37,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6667,"x":-17802.12,"y":4718.37}],"scale":[{"time":1.5333,"x":8.963,"y":36.798,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6667,"x":8.963,"y":49.402}]},"TX_xuanzhuan":{"rotate":[{"time":0.1333},{"time":0.1667,"angle":120},{"time":0.2},{"time":0.2333,"angle":120},{"time":0.2667,"angle":240},{"time":0.3},{"time":0.3333,"angle":120},{"time":0.3667},{"time":0.4,"angle":120},{"time":0.4333,"angle":240},{"time":0.4667},{"time":0.5,"angle":120},{"time":0.5333},{"time":0.5667,"angle":120},{"time":0.6,"angle":240},{"time":0.6333},{"time":0.6667,"angle":120},{"time":0.7333,"angle":5.4}],"translate":[{"time":0.1333,"x":441.87,"y":2457.77},{"time":0.7333,"x":218.41,"y":2630.43}],"scale":[{"time":0.1333,"x":1.662,"y":1.609},{"time":0.7333,"x":1.988,"y":2.061}]},"TX_xuanzhuan_hou":{"rotate":[{"time":0.1333,"angle":35},{"time":0.1667,"angle":275},{"time":0.2,"angle":35},{"time":0.2333,"angle":155},{"time":0.2667,"angle":275},{"time":0.3,"angle":35},{"time":0.3333,"angle":155},{"time":0.3667,"angle":35},{"time":0.4,"angle":155},{"time":0.4333,"angle":275},{"time":0.4667,"angle":35},{"time":0.5,"angle":155},{"time":0.5333,"angle":35},{"time":0.5667,"angle":155},{"time":0.6,"angle":275},{"time":0.6333,"angle":35},{"time":0.6667,"angle":155},{"time":0.7,"angle":35},{"time":0.7333,"angle":155}],"translate":[{"time":0.1333,"x":880.15,"y":2592.33},{"time":0.7333,"x":607.49,"y":2776.03}],"scale":[{"time":0.1333,"x":1.359,"y":1.384},{"time":0.7333,"x":1.895,"y":1.93}]},"bone119":{"rotate":[{"time":1.6333,"angle":5.29},{"time":2.2333,"angle":12.18,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-7.11,"curve":"stepped"},{"time":2.3667,"angle":-7.11},{"time":2.4,"angle":-8.03},{"time":3.0667,"angle":-16.53}],"translate":[{"time":1.6333,"x":52.59,"y":1.59,"curve":"stepped"},{"time":2.3667,"x":52.59,"y":1.59},{"time":2.4,"x":52.59,"y":0.62}],"scale":[{"time":2.4},{"time":3.0667,"y":0.948}]},"bone60":{"rotate":[{"angle":-9.58},{"time":0.0333,"angle":-7.81,"curve":"stepped"},{"time":0.0667,"angle":-11.35},{"time":0.1,"angle":-16.29},{"time":0.1333,"angle":7.37,"curve":"stepped"},{"time":0.8,"angle":-17.05,"curve":"stepped"},{"time":0.8333,"angle":-3.21},{"time":0.8667,"angle":-9.34,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.9333,"angle":-0.04,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.0667,"angle":-10.45,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2,"angle":-7.38,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.3333,"angle":-10.52,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4667,"angle":-3.37,"curve":0.015,"c2":0.97,"c3":0.65,"c4":0.98},{"time":1.6,"angle":-6.29},{"time":1.6333,"angle":5.42,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":8.24,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":-6.29},{"time":2.3667,"angle":-8.16},{"time":2.4,"angle":-12.61},{"time":2.8667,"angle":-13.19,"curve":"stepped"},{"time":3.0333,"angle":-5.65},{"time":3.6667,"angle":-4.4,"curve":"stepped"},{"time":3.7,"angle":-7.22},{"time":3.7333,"angle":-8.27,"curve":"stepped"},{"time":3.7667,"angle":-4.32},{"time":3.8333,"angle":-5.95,"curve":"stepped"},{"time":3.8667,"angle":-3.87},{"time":3.9333,"angle":-4.28,"curve":"stepped"},{"time":3.9667,"angle":-8.4},{"time":4,"angle":-7.32,"curve":"stepped"},{"time":4.0333,"angle":-4.32},{"time":4.1,"angle":-5.95,"curve":"stepped"},{"time":4.1333,"angle":-8.4},{"time":4.2,"angle":-7.32,"curve":"stepped"},{"time":4.2333,"angle":-4.32},{"time":4.3,"angle":-5.95,"curve":"stepped"},{"time":4.3333,"angle":-8.4},{"time":4.4,"angle":-7.86,"curve":"stepped"},{"time":4.4333,"angle":-4.32},{"time":4.5,"angle":-5.95,"curve":"stepped"},{"time":4.5333,"angle":-8.4},{"time":4.6,"angle":-7.32,"curve":"stepped"},{"time":4.6333,"angle":-8.4},{"time":4.7,"angle":-7.32,"curve":"stepped"},{"time":4.7333,"angle":-4.32},{"time":4.8,"angle":-5.95}],"translate":[{"time":1.6},{"time":1.6333,"x":51.26,"y":0.4,"curve":"stepped"},{"time":2.2333,"x":51.26,"y":0.4,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":24.91,"y":0.62,"curve":"stepped"},{"time":2.3667,"x":24.91,"y":0.62},{"time":2.4,"x":24.69,"y":-1.03,"curve":"stepped"},{"time":3.0333,"x":24.69,"y":-1.03},{"time":3.6667,"x":0.47,"y":-0.37,"curve":"stepped"},{"time":3.7,"x":24.8,"y":0.62}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"TX_BZ_cao_hou5":{"rotate":[{"time":1.6333,"angle":56.12},{"time":2.2333,"angle":65},{"time":2.3,"angle":90.63}],"translate":[{"time":1.6333,"x":5377.24,"y":2463.43},{"time":2.2333,"x":4463.28,"y":2583.31},{"time":2.3,"x":4478.26,"y":2942.88}],"scale":[{"time":1.6333,"x":4.748,"y":6.344},{"time":2.2333,"x":6.167,"y":6.344}]},"TX_BZ_yan":{"rotate":[{"time":1.6333,"angle":21.57},{"time":2.2333,"angle":41.86,"curve":"stepped"},{"time":2.3,"angle":41.86},{"time":2.3333,"angle":-116.2}],"translate":[{"time":1.6333,"x":7226.94,"y":1883.97},{"time":2.2333,"x":6910.03,"y":2308.5,"curve":"stepped"},{"time":2.3,"x":6910.03,"y":2308.5},{"time":2.3333,"x":4831.7,"y":2705.83}],"scale":[{"time":1.6333,"x":11.712,"y":11.712},{"time":2.2333,"x":17.082,"y":17.082,"curve":"stepped"},{"time":2.3,"x":17.082,"y":17.082},{"time":2.3333,"x":5.454,"y":14.74}]},"TX_SK2_liuguang":{"rotate":[{"time":0.1333,"angle":114.92,"curve":"stepped"},{"time":0.8,"angle":114.92,"curve":"stepped"},{"time":0.8333,"angle":30.87,"curve":"stepped"},{"time":0.8667}],"translate":[{"time":0.1333,"x":-289.44,"y":-101.13,"curve":"stepped"},{"time":0.8,"x":441.26,"y":-162.4},{"time":0.8333,"x":-629.45,"y":-997.04,"curve":"stepped"},{"time":0.8667,"x":-11.23,"y":-4.99}],"scale":[{"time":0.1333,"x":1.369,"y":1.075,"curve":"stepped"},{"time":0.8,"x":1.616,"y":1.616,"curve":"stepped"},{"time":0.8333,"x":1.616,"y":1.616,"curve":"stepped"},{"time":0.8667,"x":0,"y":0}]},"TX_SK2_liuguang_cu":{"translate":[{"time":1,"x":1011.75,"y":1128.74},{"time":1.0667,"x":-9240.98,"y":1128.74},{"time":1.1,"x":-212.89,"y":240.74},{"time":1.1333,"x":-10065.45,"y":240.74},{"time":1.1667,"x":-1271.89,"y":3266.48},{"time":1.2,"x":-10594.96,"y":3266.48},{"time":1.2333,"x":-2311.99,"y":3039.55},{"time":1.2667,"x":-11899.81,"y":3039.55},{"time":1.3,"x":-4770.41,"y":732.43},{"time":1.3333,"x":-12694.07,"y":732.43},{"time":1.3667,"x":-5337.73,"y":675.69},{"time":1.4,"x":-12315.85,"y":675.69},{"time":1.4333,"x":-5583.58,"y":959.36},{"time":1.4667,"x":-9365.75,"y":959.36},{"time":1.5,"x":-4373.28,"y":108.37},{"time":1.5333,"x":-10500.41,"y":108.37},{"time":1.5667,"x":2056.42,"y":1356.49},{"time":1.6333,"x":-13133.05,"y":1356.49}],"scale":[{"time":1,"x":22.921,"y":13.174,"curve":"stepped"},{"time":1.5333,"x":22.921,"y":13.174},{"time":1.5667,"x":40.26,"y":67.187},{"time":1.6333,"x":72.848,"y":67.187}]},"TX_SK2_shouji_lie":{"translate":[{"time":3.7667},{"time":3.9,"x":-45.99,"y":46.22,"curve":"stepped"},{"time":3.9667,"curve":"stepped"},{"time":4},{"time":4.1333,"x":-45.99,"y":46.22,"curve":"stepped"},{"time":4.2667,"curve":"stepped"},{"time":4.3},{"time":4.4333,"x":-45.99,"y":46.22,"curve":"stepped"},{"time":4.5667,"curve":"stepped"},{"time":4.6},{"time":4.7333,"x":-45.99,"y":46.22}],"scale":[{"time":3.7667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":3.9,"x":1.541,"y":1.541,"curve":"stepped"},{"time":3.9667,"curve":"stepped"},{"time":4,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.1333,"x":1.541,"y":1.541,"curve":"stepped"},{"time":4.2667,"curve":"stepped"},{"time":4.3,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"x":1.541,"y":1.541,"curve":"stepped"},{"time":4.5667,"curve":"stepped"},{"time":4.6,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.7333,"x":1.541,"y":1.541}]},"TX_SK2_shouji_lie2":{"rotate":[{"time":3.7333},{"time":3.7667,"angle":-12.64,"curve":"stepped"},{"time":3.9,"angle":-12.64,"curve":"stepped"},{"time":3.9667},{"time":4,"angle":-12.64,"curve":"stepped"},{"time":4.1333,"angle":-12.64,"curve":"stepped"},{"time":4.2667},{"time":4.3,"angle":-12.64,"curve":"stepped"},{"time":4.4333,"angle":-12.64,"curve":"stepped"},{"time":4.5667},{"time":4.6,"angle":-12.64}]},"TX_SK2_shouji_lie3":{"rotate":[{"time":3.7333},{"time":3.7667,"angle":-22.93,"curve":"stepped"},{"time":3.9,"angle":-22.93,"curve":"stepped"},{"time":3.9667},{"time":4,"angle":-22.93,"curve":"stepped"},{"time":4.1333,"angle":-22.93,"curve":"stepped"},{"time":4.2667},{"time":4.3,"angle":-22.93,"curve":"stepped"},{"time":4.4333,"angle":-22.93,"curve":"stepped"},{"time":4.5667},{"time":4.6,"angle":-22.93}],"translate":[{"time":3.7667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":3.9,"x":-75.33,"y":-187.43,"curve":"stepped"},{"time":3.9667,"curve":"stepped"},{"time":4,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.1333,"x":-75.33,"y":-187.43,"curve":"stepped"},{"time":4.2667,"curve":"stepped"},{"time":4.3,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"x":-75.33,"y":-187.43,"curve":"stepped"},{"time":4.5667,"curve":"stepped"},{"time":4.6,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.7333,"x":-75.33,"y":-187.43}],"scale":[{"time":3.7667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":3.9,"x":1.476,"y":1.476,"curve":"stepped"},{"time":3.9667,"curve":"stepped"},{"time":4,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.1333,"x":1.476,"y":1.476,"curve":"stepped"},{"time":4.2667,"curve":"stepped"},{"time":4.3,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"x":1.476,"y":1.476,"curve":"stepped"},{"time":4.5667,"curve":"stepped"},{"time":4.6,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.7333,"x":1.476,"y":1.476}]},"TX_SK2_shouji_lie4":{"rotate":[{"time":3.8},{"time":3.8333,"angle":36.07,"curve":"stepped"},{"time":3.9667,"angle":36.07,"curve":"stepped"},{"time":4.0667},{"time":4.1,"angle":36.07,"curve":"stepped"},{"time":4.2333,"angle":36.07,"curve":"stepped"},{"time":4.3667},{"time":4.4,"angle":36.07,"curve":"stepped"},{"time":4.5333,"angle":36.07,"curve":"stepped"},{"time":4.6},{"time":4.6333,"angle":36.07}],"translate":[{"time":3.8333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":3.9333,"x":-65.33,"y":12.16,"curve":"stepped"},{"time":3.9667,"x":-65.33,"y":12.16,"curve":"stepped"},{"time":4.0667,"curve":"stepped"},{"time":4.1,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.2,"x":-65.33,"y":12.16,"curve":"stepped"},{"time":4.2333,"x":-65.33,"y":12.16,"curve":"stepped"},{"time":4.3667,"curve":"stepped"},{"time":4.4,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.5,"x":-65.33,"y":12.16,"curve":"stepped"},{"time":4.5333,"x":-65.33,"y":12.16,"curve":"stepped"},{"time":4.6,"curve":"stepped"},{"time":4.6333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.7333,"x":-65.33,"y":12.16}],"scale":[{"time":3.8333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":3.9333,"x":1.135,"y":1.135,"curve":"stepped"},{"time":3.9667,"x":1.135,"y":1.135,"curve":"stepped"},{"time":4.0667,"curve":"stepped"},{"time":4.1,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.2,"x":1.135,"y":1.135,"curve":"stepped"},{"time":4.2333,"x":1.135,"y":1.135,"curve":"stepped"},{"time":4.3667,"curve":"stepped"},{"time":4.4,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.5,"x":1.135,"y":1.135,"curve":"stepped"},{"time":4.5333,"x":1.135,"y":1.135,"curve":"stepped"},{"time":4.6,"curve":"stepped"},{"time":4.6333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.7333,"x":1.135,"y":1.135}]},"TX_SK2_shouji_lie6":{"rotate":[{"time":3.8},{"time":3.8333,"angle":15.33,"curve":"stepped"},{"time":3.9667,"angle":15.33,"curve":"stepped"},{"time":4.0667},{"time":4.1,"angle":15.33,"curve":"stepped"},{"time":4.2333,"angle":15.33,"curve":"stepped"},{"time":4.3667},{"time":4.4,"angle":15.33,"curve":"stepped"},{"time":4.5333,"angle":15.33,"curve":"stepped"},{"time":4.6},{"time":4.6333,"angle":15.33}],"translate":[{"time":3.8333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":3.9333,"x":-10.5,"y":-91.18,"curve":"stepped"},{"time":3.9667,"x":-10.5,"y":-91.18,"curve":"stepped"},{"time":4.0667,"curve":"stepped"},{"time":4.1,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.2,"x":-10.5,"y":-91.18,"curve":"stepped"},{"time":4.2333,"x":-10.5,"y":-91.18,"curve":"stepped"},{"time":4.3667,"curve":"stepped"},{"time":4.4,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.5,"x":-10.5,"y":-91.18,"curve":"stepped"},{"time":4.5333,"x":-10.5,"y":-91.18,"curve":"stepped"},{"time":4.6,"curve":"stepped"},{"time":4.6333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.7333,"x":-10.5,"y":-91.18}],"scale":[{"time":3.8333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":3.9333,"x":1.09,"y":1.193,"curve":"stepped"},{"time":3.9667,"x":1.09,"y":1.193,"curve":"stepped"},{"time":4.0667,"curve":"stepped"},{"time":4.1,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.2,"x":1.09,"y":1.193,"curve":"stepped"},{"time":4.2333,"x":1.09,"y":1.193,"curve":"stepped"},{"time":4.3667,"curve":"stepped"},{"time":4.4,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.5,"x":1.09,"y":1.193,"curve":"stepped"},{"time":4.5333,"x":1.09,"y":1.193,"curve":"stepped"},{"time":4.6,"curve":"stepped"},{"time":4.6333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.7333,"x":1.09,"y":1.193}]},"TX_SK2_shouji_lie7":{"rotate":[{"time":3.9},{"time":3.9333,"angle":3.6,"curve":"stepped"},{"time":4.0667,"angle":3.6,"curve":"stepped"},{"time":4.2},{"time":4.2333,"angle":3.6,"curve":"stepped"},{"time":4.3667,"angle":3.6,"curve":"stepped"},{"time":4.4667},{"time":4.5,"angle":3.6,"curve":"stepped"},{"time":4.6333,"angle":3.6,"curve":"stepped"},{"time":4.6667},{"time":4.7,"angle":3.6}],"translate":[{"time":3.9333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.0333,"x":-53.64,"y":50.17,"curve":"stepped"},{"time":4.0667,"x":-53.64,"y":50.17,"curve":"stepped"},{"time":4.2,"curve":"stepped"},{"time":4.2333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.3333,"x":-53.64,"y":50.17,"curve":"stepped"},{"time":4.3667,"x":-53.64,"y":50.17,"curve":"stepped"},{"time":4.4667,"curve":"stepped"},{"time":4.5,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.6,"x":-53.64,"y":50.17,"curve":"stepped"},{"time":4.6333,"x":-53.64,"y":50.17,"curve":"stepped"},{"time":4.6667,"curve":"stepped"},{"time":4.7,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8,"x":-53.64,"y":50.17}],"scale":[{"time":3.9333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.0333,"x":1.106,"y":1.106,"curve":"stepped"},{"time":4.0667,"x":1.106,"y":1.106,"curve":"stepped"},{"time":4.2,"curve":"stepped"},{"time":4.2333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.3333,"x":1.106,"y":1.106,"curve":"stepped"},{"time":4.3667,"x":1.106,"y":1.106,"curve":"stepped"},{"time":4.4667,"curve":"stepped"},{"time":4.5,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.6,"x":1.106,"y":1.106,"curve":"stepped"},{"time":4.6333,"x":1.106,"y":1.106,"curve":"stepped"},{"time":4.6667,"curve":"stepped"},{"time":4.7,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8,"x":1.106,"y":1.106}]},"TX_SK2_shouji_lie10":{"rotate":[{"time":3.8667},{"time":3.9,"angle":-34.38},{"time":4.0667}]},"TX_SK2_shouji_lie11":{"rotate":[{"time":3.8667},{"time":3.9,"angle":-34.38},{"time":4.0667}]},"TX_SK2_shouji_lie12":{"rotate":[{"time":3.8667},{"time":3.9,"angle":-34.38},{"time":4.0667}]},"TX_SK2_shouji_lie_quan":{"scale":[{"time":3.7333,"x":1.059,"y":1.059,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":3.8667,"x":1.388,"y":1.388,"curve":"stepped"},{"time":3.9,"x":1.388,"y":1.388,"curve":"stepped"},{"time":3.9667,"x":1.059,"y":1.059,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.1,"x":1.388,"y":1.388,"curve":"stepped"},{"time":4.1333,"x":1.388,"y":1.388,"curve":"stepped"},{"time":4.2667,"x":1.059,"y":1.059,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4,"x":1.388,"y":1.388,"curve":"stepped"},{"time":4.4333,"x":1.388,"y":1.388,"curve":"stepped"},{"time":4.5667,"x":1.059,"y":1.059,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.7,"x":1.388,"y":1.388}]},"TX_SK2_shouji_lie_quan2":{"scale":[{"time":3.8,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":3.9667,"x":1.48,"y":1.48,"curve":"stepped"},{"time":4.0667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.2333,"x":1.48,"y":1.48,"curve":"stepped"},{"time":4.3667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.5333,"x":1.48,"y":1.48,"curve":"stepped"},{"time":4.6,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.7667,"x":1.48,"y":1.48}]},"TX_SK2_shouji_lie_quan3":{"scale":[{"time":3.9,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.0667,"x":1.253,"y":1.253,"curve":"stepped"},{"time":4.2,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.3667,"x":1.253,"y":1.253,"curve":"stepped"},{"time":4.4667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.6333,"x":1.253,"y":1.253,"curve":"stepped"},{"time":4.6667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"x":1.253,"y":1.253}]},"TX_SK2_shouji_lie_quan4":{"scale":[{"time":3.7,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":3.8667,"x":1.319,"y":1.319},{"time":3.9,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.0667,"x":1.319,"y":1.319},{"time":4.1,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.2667,"x":1.319,"y":1.319},{"time":4.3,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4667,"x":1.319,"y":1.319},{"time":4.5,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.6667,"x":1.319,"y":1.319}]},"TX_SK2_shouji_quan":{"scale":[{"time":3.7333,"x":3.081,"y":3.081},{"time":3.8333,"x":3.631,"y":3.631,"curve":"stepped"},{"time":3.9,"x":3.631,"y":3.631,"curve":"stepped"},{"time":3.9667,"x":3.081,"y":3.081},{"time":4.0667,"x":3.631,"y":3.631,"curve":"stepped"},{"time":4.1333,"x":3.631,"y":3.631,"curve":"stepped"},{"time":4.2667,"x":3.081,"y":3.081},{"time":4.3667,"x":3.631,"y":3.631,"curve":"stepped"},{"time":4.4333,"x":3.631,"y":3.631,"curve":"stepped"},{"time":4.5667,"x":3.081,"y":3.081},{"time":4.6667,"x":3.631,"y":3.631}]},"TX_SK2_shouji_quan2":{"scale":[{"time":3.8,"x":3.338,"y":3.338},{"time":3.9333,"x":3.493,"y":3.493,"curve":"stepped"},{"time":3.9667,"x":3.493,"y":3.493,"curve":"stepped"},{"time":4.0667,"x":3.338,"y":3.338},{"time":4.2,"x":3.493,"y":3.493,"curve":"stepped"},{"time":4.2333,"x":3.493,"y":3.493,"curve":"stepped"},{"time":4.3667,"x":3.338,"y":3.338},{"time":4.5,"x":3.493,"y":3.493,"curve":"stepped"},{"time":4.5333,"x":3.493,"y":3.493,"curve":"stepped"},{"time":4.6,"x":3.338,"y":3.338},{"time":4.7333,"x":3.493,"y":3.493}]},"TX_SK2_shouji_quan3":{"scale":[{"time":3.9,"x":3.383,"y":3.383,"curve":0.382,"c2":0.39,"c3":0.703,"c4":0.72},{"time":4.0333,"x":3.56,"y":3.56,"curve":"stepped"},{"time":4.0667,"x":3.56,"y":3.56,"curve":"stepped"},{"time":4.2,"x":3.383,"y":3.383,"curve":0.382,"c2":0.39,"c3":0.703,"c4":0.72},{"time":4.3333,"x":3.56,"y":3.56,"curve":"stepped"},{"time":4.3667,"x":3.56,"y":3.56,"curve":"stepped"},{"time":4.4667,"x":3.383,"y":3.383,"curve":0.382,"c2":0.39,"c3":0.703,"c4":0.72},{"time":4.6,"x":3.56,"y":3.56,"curve":"stepped"},{"time":4.6333,"x":3.56,"y":3.56,"curve":"stepped"},{"time":4.6667,"x":3.383,"y":3.383,"curve":0.382,"c2":0.39,"c3":0.703,"c4":0.72},{"time":4.8,"x":3.56,"y":3.56}]},"TX_SK2_shouji_quan4":{"rotate":[{"time":3.8667},{"time":3.9,"angle":-34.38},{"time":4.0667}],"scale":[{"time":3.7,"x":3.33,"y":3.33}]},"TX_SK2_shouji_xian1":{"rotate":[{"time":3.7333,"angle":46.76}],"scale":[{"time":3.7333,"x":1.632,"y":1.619,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":3.9,"x":0,"y":2.283,"curve":"stepped"},{"time":3.9667,"x":1.632,"y":1.619,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.1333,"x":0,"y":2.283,"curve":"stepped"},{"time":4.2667,"x":1.632,"y":1.619,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"x":0,"y":2.283,"curve":"stepped"},{"time":4.5667,"x":1.632,"y":1.619,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.7333,"x":0,"y":2.283}]},"TX_SK2_shouji_xian3":{"rotate":[{"time":3.8,"angle":35.79}],"scale":[{"time":3.8,"x":2.172,"y":1.485,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":3.9667,"x":0,"y":1.841,"curve":"stepped"},{"time":4.0667,"x":2.172,"y":1.485,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.2333,"x":0,"y":1.841,"curve":"stepped"},{"time":4.3667,"x":2.172,"y":1.485,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.5333,"x":0,"y":1.841,"curve":"stepped"},{"time":4.6,"x":2.172,"y":1.485,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.7667,"x":0,"y":1.841}]},"TX_SK2_shouji_xian5":{"rotate":[{"time":3.9,"angle":-24.05}],"scale":[{"time":3.9,"x":2.004,"y":1.813,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.0667,"x":0,"y":1.54,"curve":"stepped"},{"time":4.2,"x":2.004,"y":1.813,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.3667,"x":0,"y":1.54,"curve":"stepped"},{"time":4.4667,"x":2.004,"y":1.813,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.6333,"x":0,"y":1.54,"curve":"stepped"},{"time":4.6667,"x":2.004,"y":1.813,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"x":0,"y":1.54}]},"TX_bao1":{"translate":[{"time":0.0333,"x":3003.61,"y":1814.36}],"scale":[{"time":0.0333,"x":0.572,"y":0.572,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.1,"x":1.605,"y":1.605}]},"TX_bao_hou":{"translate":[{"time":2.2667,"x":6656.71,"y":1979.23}],"scale":[{"time":2.2667,"x":3.125,"y":2.66,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3333,"x":6.057,"y":5.155}]},"TX_cao_hou1":{"rotate":[{"time":0.1333,"angle":-3.12,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.3667,"angle":6.16,"curve":"stepped"},{"time":0.8667,"angle":-107.78,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":1.1333,"angle":-137.36,"curve":"stepped"},{"time":1.6333,"angle":-121.94},{"time":2.2333,"angle":-118.66},{"time":2.3,"angle":-65.01}],"translate":[{"time":0.1333,"x":1091.87,"y":2149.83,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.3667,"x":800.25,"y":2549.96,"curve":"stepped"},{"time":0.8667,"x":-2999.97,"y":1832.53,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":1.1333,"x":632.33,"y":2792.48,"curve":"stepped"},{"time":1.6333,"x":1698.12,"y":2404.88},{"time":2.2333,"x":1268.89,"y":2743.06},{"time":2.3,"x":891.68,"y":2730.06}],"scale":[{"time":0.1333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.3667,"x":2.018,"y":1.791,"curve":"stepped"},{"time":0.8667,"x":12.445,"y":14.16,"curve":"stepped"},{"time":1.1333,"x":12.445,"y":14.16,"curve":"stepped"},{"time":1.6333,"x":2.375,"y":2.702},{"time":2.2333,"x":3.631,"y":3.657},{"time":2.3,"x":5.256,"y":5.294}]},"TX_cao_hou2":{"rotate":[{"time":0.1333,"angle":-79.6,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4,"angle":-69.8,"curve":"stepped"},{"time":0.9333,"angle":-128.22,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":1.1333,"angle":-82.34,"curve":"stepped"},{"time":1.6333,"angle":-120.23},{"time":2.2333,"angle":-101.39,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":2.3,"angle":-12.57}],"translate":[{"time":0.1333,"x":1839.24,"y":1974.96,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4,"x":2043.41,"y":2041.18,"curve":"stepped"},{"time":0.9333,"x":-2018.72,"y":4219.21,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":1.1333,"x":-1539.54,"y":2302.49,"curve":"stepped"},{"time":1.6333,"x":3744.26,"y":1418.84},{"time":2.2333,"x":4453.49,"y":1833.68,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":2.3,"x":4814.8,"y":562.41}],"scale":[{"time":0.1333,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4,"x":2.123,"y":2.052,"curve":"stepped"},{"time":0.9333,"x":13.188,"y":14.567,"curve":"stepped"},{"time":1.1333,"x":13.188,"y":14.567,"curve":"stepped"},{"time":1.6333,"x":-3.055,"y":-3.992},{"time":2.2333,"x":-4.077,"y":-5.903,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":2.3,"x":-7.987,"y":-6.381}]},"TX_cao_hou3":{"rotate":[{"time":0.3,"angle":17.11},{"time":0.3667,"angle":16.3},{"time":0.4,"angle":17.11},{"time":0.4667,"angle":16.3},{"time":0.5,"angle":17.11},{"time":0.5667,"angle":16.3},{"time":0.6,"angle":17.11},{"time":0.6667,"angle":16.3},{"time":0.7,"angle":17.11},{"time":0.7667,"angle":16.3}],"translate":[{"time":0.3,"x":1247.84,"y":2115.36},{"time":0.3667,"x":872.35,"y":2290.1},{"time":0.4,"x":1247.84,"y":2115.36},{"time":0.4667,"x":872.35,"y":2290.1},{"time":0.5,"x":1247.84,"y":2115.36},{"time":0.5667,"x":872.35,"y":2290.1},{"time":0.6,"x":1247.84,"y":2115.36},{"time":0.6667,"x":872.35,"y":2290.1},{"time":0.7,"x":1247.84,"y":2115.36},{"time":0.7667,"x":872.35,"y":2290.1}],"scale":[{"time":0.3},{"time":0.3667,"x":1.743,"y":1.743},{"time":0.4},{"time":0.4667,"x":1.743,"y":1.743},{"time":0.5},{"time":0.5667,"x":1.743,"y":1.743},{"time":0.6},{"time":0.6667,"x":1.743,"y":1.743},{"time":0.7},{"time":0.7667,"x":1.743,"y":1.743}]},"TX_cao_hou4":{"rotate":[{"time":0.3,"angle":-72.6,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.3667,"angle":-77.37},{"time":0.4,"angle":-123.19,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4667,"angle":-140.33},{"time":0.5,"angle":-72.6,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5667,"angle":-77.37},{"time":0.6,"angle":-122.09,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6667,"angle":-110.3},{"time":0.7,"angle":-81.86,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.7667,"angle":-97.95}],"translate":[{"time":0.3,"x":1924.83,"y":1989.65,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.3667,"x":2037.78,"y":2041.73},{"time":0.4,"x":1872,"y":1973.4,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4667,"x":2047.23,"y":2037.01},{"time":0.5,"x":1806.98,"y":1969.33,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5667,"x":1955.76,"y":1987.58},{"time":0.6,"x":1867.93,"y":1961.21,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6667,"x":1946.31,"y":1992.97},{"time":0.7,"x":1843.55,"y":1944.95,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.7667,"x":2000.63,"y":1961.13}],"scale":[{"time":0.3,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.3667,"x":1.354,"y":1.462},{"time":0.4,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.4667,"x":1.354,"y":1.462},{"time":0.5,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5667,"x":1.354,"y":1.462},{"time":0.6,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6667,"x":1.354,"y":1.462},{"time":0.7,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.7667,"x":1.354,"y":1.462}]},"TX_feng1":{"rotate":[{"time":0.0667,"angle":61.47,"curve":0.317,"c2":0.38,"c3":0.652,"c4":0.72},{"time":0.1,"angle":110.02,"curve":0.322,"c2":0.4,"c3":0.656,"c4":0.73},{"time":0.1333,"angle":162.13,"curve":0.32,"c2":0.64,"c3":0.658,"c4":0.97},{"time":0.1667,"angle":-179.49,"curve":"stepped"},{"time":0.8,"angle":165.81},{"time":0.8333,"angle":178.98},{"time":0.8667,"angle":-30.55,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.9667,"angle":-55.71,"curve":"stepped"},{"time":1.6333,"angle":-178.99,"curve":0.317,"c2":0.38,"c3":0.652,"c4":0.72},{"time":1.6667,"angle":-167.13,"curve":0.322,"c2":0.4,"c3":0.656,"c4":0.73},{"time":1.7,"angle":-154.75,"curve":0.32,"c2":0.64,"c3":0.658,"c4":0.97},{"time":1.7667,"angle":-128.6,"curve":"stepped"},{"time":2.3,"angle":121.1},{"time":2.3667,"angle":49.02}],"translate":[{"time":0.0667,"x":904.68,"y":3284.11,"curve":0.317,"c2":0.38,"c3":0.652,"c4":0.72},{"time":0.1,"x":504.65,"y":2808.67,"curve":0.322,"c2":0.4,"c3":0.656,"c4":0.73},{"time":0.1333,"x":1191.29,"y":2334.11,"curve":0.32,"c2":0.64,"c3":0.658,"c4":0.97},{"time":0.1667,"x":1513.31,"y":2285.83,"curve":"stepped"},{"time":0.8,"x":1036.11,"y":2330.13},{"time":0.8333,"x":1252.38,"y":2341.35},{"time":0.8667,"x":-3493.99,"y":1512.73,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.9667,"x":3835.17,"y":-208.29,"curve":"stepped"},{"time":1.6333,"x":3307.28,"y":1993.15,"curve":0.317,"c2":0.38,"c3":0.652,"c4":0.72},{"time":1.6667,"x":4933.32,"y":2123.61,"curve":0.322,"c2":0.4,"c3":0.656,"c4":0.73},{"time":1.7,"x":5500.08,"y":2022.86,"curve":0.32,"c2":0.64,"c3":0.658,"c4":0.97},{"time":1.7667,"x":6692.09,"y":2817.09,"curve":"stepped"},{"time":2.3,"x":5908.83,"y":2759.91},{"time":2.3667,"x":3867.36,"y":4998.73}],"scale":[{"time":0.0667,"x":3.695,"y":-9.122,"curve":0.317,"c2":0.38,"c3":0.652,"c4":0.72},{"time":0.1,"x":4.273,"y":-9.533,"curve":0.322,"c2":0.4,"c3":0.656,"c4":0.73},{"time":0.1333,"x":4.553,"y":-9.27,"curve":0.32,"c2":0.64,"c3":0.658,"c4":0.97},{"time":0.1667,"x":2.331,"y":-4.79,"curve":"stepped"},{"time":0.8,"x":4.423,"y":-9.1},{"time":0.8333,"x":6.857,"y":-9.1},{"time":0.8667,"x":55.513,"y":-73.67},{"time":0.9667,"x":55.513,"y":-0.67,"curve":"stepped"},{"time":1.6333,"x":19.512,"y":-14.05,"curve":0.317,"c2":0.38,"c3":0.652,"c4":0.72},{"time":1.6667,"x":13.595,"y":-14.05,"curve":0.322,"c2":0.4,"c3":0.656,"c4":0.73},{"time":1.7,"x":14.31,"y":-23.165,"curve":0.32,"c2":0.64,"c3":0.658,"c4":0.97},{"time":1.7667,"x":8.513,"y":-20.106,"curve":"stepped"},{"time":2.3,"x":7.631,"y":15.001},{"time":2.3667,"x":7.631,"y":16.713}]},"TX_feng2":{"rotate":[{"time":0.0667,"angle":-119.93},{"time":0.1,"angle":-92.44},{"time":0.1333,"angle":-6.41}],"translate":[{"time":0.0667,"x":1733.42,"y":3173.55},{"time":0.1,"x":1149.05,"y":2806.44},{"time":0.1333,"x":1940.72,"y":2378.81}],"scale":[{"time":0.0667,"x":-2.038,"y":3.345},{"time":0.1,"x":-2.331,"y":5.694}]},"TX_guangquan":{"rotate":[{"time":2.2667,"angle":-93.05}],"translate":[{"time":2.2667,"x":4676.25,"y":1661.68}],"scale":[{"time":2.2667,"x":1.592,"y":1.592,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":2.3667,"x":3.061,"y":3.061}]},"TX_shouji3_1":{"rotate":[{"time":2.2667,"angle":-91.78}],"translate":[{"time":2.2667,"x":5965.58,"y":1760.14}],"scale":[{"time":2.2667,"x":1.247,"y":9.451},{"time":2.3333,"x":1.247,"y":7.727}]},"TX_shouji3_2":{"rotate":[{"time":2.2667,"angle":-5.4}],"translate":[{"time":2.2667,"x":5834.45,"y":1729.72,"curve":0.414,"c2":0.52,"c3":0.65,"c4":0.84},{"time":2.3333,"x":5647.45,"y":1782.4,"curve":0.271,"c2":0.62,"c3":0.586,"c4":0.94},{"time":2.3667,"x":5101.64,"y":2329.05}],"scale":[{"time":2.2667,"x":1.554,"y":4.049,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":2.3667,"x":2.632,"y":5.476}]},"TX_shouji3_3":{"rotate":[{"time":2.2667,"angle":-203.75}],"translate":[{"time":2.2667,"x":5964.14,"y":1721.43}],"scale":[{"time":2.2667,"x":1.382,"y":3.18},{"time":2.3333,"x":1.382,"y":4.473}]},"TX_shouji3_4":{"rotate":[{"time":2.3,"angle":23.94}],"translate":[{"time":2.3,"x":1809.27,"y":1243.24}],"scale":[{"time":2.3,"x":1.665,"y":5.002}]},"TX_xian":{"translate":[{"time":1,"x":3934.39},{"time":1.4667,"x":-1045.52,"y":-407.34},{"time":1.7,"x":-13177.05,"y":361.93}],"scale":[{"time":1,"x":103.77,"y":8.103},{"time":1.4667,"x":103.77,"y":15.294},{"time":1.7,"x":103.77,"y":3.045}]},"TX_xian3":{"translate":[{"time":1.5333,"x":2440.27,"y":-143.55},{"time":1.6333,"x":-4765.71,"y":86.13}],"scale":[{"time":1.5333,"x":117.223,"y":161.115},{"time":1.6333,"x":251.84,"y":161.115}]},"shenti":{"rotate":[{"angle":0.3},{"time":0.0667,"angle":1.35,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.7333,"angle":-6.11,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.8333,"angle":7.36,"curve":"stepped"},{"time":1.6333,"angle":7.36,"curve":"stepped"},{"time":2.2667,"angle":-29.92,"curve":0.405,"c2":0.72,"c3":0.49},{"time":2.3,"angle":9.03,"curve":0.405,"c2":0.72,"c3":0.49},{"time":2.3667,"angle":9.17,"curve":"stepped"},{"time":4.7,"angle":9.17,"curve":"stepped"},{"time":4.7333}],"translate":[{"x":0.01,"y":-6.35},{"time":0.0667,"x":84.35,"y":-41.05,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.7333,"y":-26.08,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.8333,"x":-68.34,"y":56.25,"curve":"stepped"},{"time":1.6333,"x":-68.34,"y":56.25,"curve":"stepped"},{"time":2.2667,"x":-64.25,"y":161.13,"curve":0.405,"c2":0.72,"c3":0.49},{"time":2.3,"x":-61.2,"y":-41.19,"curve":0.405,"c2":0.72,"c3":0.49},{"time":2.3667,"x":-90,"y":-30.6,"curve":"stepped"},{"time":4.7,"x":-90,"y":-30.6,"curve":"stepped"},{"time":4.7333}]},"tou":{"rotate":[{},{"time":0.0667,"angle":9.4},{"time":0.7333,"angle":-5.28,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.8333,"angle":9.65,"curve":"stepped"},{"time":1.6333,"angle":9.65,"curve":"stepped"},{"time":2.2667,"angle":29.52},{"time":2.3,"curve":0.405,"c2":0.72,"c3":0.49},{"time":2.3667,"angle":14.8,"curve":"stepped"},{"time":4.7,"angle":14.8,"curve":"stepped"},{"time":4.7333}],"translate":[{},{"time":0.0667,"x":15.74,"y":11.73},{"time":0.7333,"x":-6.73,"y":-2.81,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.8333,"x":8.97,"y":41.88,"curve":"stepped"},{"time":1.6333,"x":8.97,"y":41.88,"curve":"stepped"},{"time":2.2667,"x":0.81,"y":41.73},{"time":2.3,"curve":0.405,"c2":0.72,"c3":0.49},{"time":2.3667,"x":21.85,"y":59.66,"curve":"stepped"},{"time":4.7,"x":21.85,"y":59.66,"curve":"stepped"},{"time":4.7333}]},"y_qiantui":{"translate":[{"time":2.3,"curve":0.405,"c2":0.72,"c3":0.49},{"time":2.3667,"x":2.84,"y":-11.24,"curve":"stepped"},{"time":4.7,"x":2.84,"y":-11.24,"curve":"stepped"},{"time":4.7333}]},"yinying":{"translate":[{},{"time":0.0667,"x":93.56},{"time":0.7333,"x":11.17},{"time":0.8,"x":-292.37,"curve":"stepped"},{"time":1.6667,"x":-371.25},{"time":2.2333,"x":-502.15,"curve":"stepped"},{"time":2.2667,"x":-502.15},{"time":2.3,"x":-737.79},{"time":2.3667,"x":-816.34,"curve":"stepped"},{"time":4.7333}],"scale":[{},{"time":0.0667,"x":1.111},{"time":0.8,"x":0.865,"y":0.779,"curve":"stepped"},{"time":1.6667,"x":0.865,"y":0.779},{"time":2.2333,"x":0.806,"y":0.738,"curve":"stepped"},{"time":2.2667,"x":0.806,"y":0.738},{"time":2.3,"x":1.186,"y":0.931,"curve":"stepped"},{"time":2.3667,"x":1.186,"y":0.931,"curve":"stepped"},{"time":4.7333}]},"z_qiantui":{"translate":[{"x":-2.15,"y":-2.31},{"time":0.0667,"curve":"stepped"},{"time":2.3,"curve":0.405,"c2":0.72,"c3":0.49},{"time":2.3667,"x":1.39,"y":-13.04,"curve":"stepped"},{"time":4.7,"x":1.39,"y":-13.04,"curve":"stepped"},{"time":4.7333}]},"zhonzi":{"scale":[{},{"time":0.0667,"x":0.979,"y":0.785},{"time":0.7333,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.8333,"x":0.863,"y":1.242,"curve":"stepped"},{"time":1.6333,"x":0.863,"y":1.242,"curve":"stepped"},{"time":2.2667}]},"zui":{"scale":[{"time":1.6333,"curve":"stepped"},{"time":2.2667,"y":1.959},{"time":2.3}]},"SHENTI":{"translate":[{"time":0.7333,"curve":0.405,"c2":0.72,"c3":0.49},{"time":0.8333,"x":-310.58,"y":113.48},{"time":0.8667,"x":-6135.82,"curve":"stepped"},{"time":1.6333,"curve":"stepped"},{"time":2.2667,"x":-434.05,"y":288.98},{"time":2.3,"x":-714.5,"curve":0.405,"c2":0.72,"c3":0.49},{"time":2.3667,"x":-778.5},{"time":2.4,"x":-714.5,"y":-4546.84}]},"bone14":{"rotate":[{"time":2.3667},{"time":2.4,"angle":-0.54,"curve":"stepped"},{"time":4.7,"angle":-0.54,"curve":"stepped"},{"time":4.7333}]},"bone4":{"rotate":[{},{"time":0.0667,"angle":5.48},{"time":0.7333,"angle":-3.91,"curve":"stepped"},{"time":1.6333,"angle":-3.91,"curve":"stepped"},{"time":2.2667}]},"bone3":{"rotate":[{},{"time":0.0667,"angle":2.19},{"time":0.7333,"angle":-3.16,"curve":"stepped"},{"time":1.6333,"angle":-3.16,"curve":"stepped"},{"time":2.2667,"curve":"stepped"},{"time":2.3,"curve":0.405,"c2":0.72,"c3":0.49},{"time":2.3667,"angle":3.22,"curve":"stepped"},{"time":4.7,"angle":3.22,"curve":"stepped"},{"time":4.7333}]},"bone40":{"rotate":[{"angle":6.51},{"time":0.0333,"angle":6.71,"curve":"stepped"},{"time":0.0667,"angle":4.93},{"time":0.1,"angle":3.69},{"time":0.1333,"angle":8.7,"curve":"stepped"},{"time":0.8,"angle":-6.12,"curve":"stepped"},{"time":0.8333,"angle":-5.16},{"time":0.8667,"angle":15.35},{"time":1,"angle":1.99},{"time":1.1333,"angle":15.35},{"time":1.2667,"angle":0.3},{"time":1.4,"angle":15.35},{"time":1.4667,"angle":0.3,"curve":0.015,"c2":0.97,"c3":0.75},{"time":1.6,"angle":2.25},{"time":1.6333,"angle":-3.16,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":-1.8,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":2.25},{"time":2.3667,"angle":0.38},{"time":2.4,"angle":-3.84},{"time":2.8667,"angle":-1.28,"curve":"stepped"},{"time":3.0333,"angle":6.27},{"time":3.6667,"angle":4.38,"curve":"stepped"},{"time":3.7,"angle":1.33},{"time":3.7333,"angle":0.27,"curve":"stepped"},{"time":3.7667,"angle":4.23},{"time":3.8333,"angle":2.59,"curve":"stepped"},{"time":3.8667,"angle":4.67},{"time":3.9333,"angle":4.26,"curve":"stepped"},{"time":3.9667,"angle":0.14},{"time":4,"angle":1.23,"curve":"stepped"},{"time":4.0333,"angle":4.23},{"time":4.1,"angle":2.59,"curve":"stepped"},{"time":4.1333,"angle":0.14},{"time":4.2,"angle":1.23,"curve":"stepped"},{"time":4.2333,"angle":4.23},{"time":4.3,"angle":2.59,"curve":"stepped"},{"time":4.3333,"angle":0.14},{"time":4.4,"angle":0.68,"curve":"stepped"},{"time":4.4333,"angle":4.23},{"time":4.5,"angle":2.59,"curve":"stepped"},{"time":4.5333,"angle":0.14},{"time":4.6,"angle":1.23,"curve":"stepped"},{"time":4.6333,"angle":0.14},{"time":4.7,"angle":1.23,"curve":"stepped"},{"time":4.7333,"angle":4.23},{"time":4.8,"angle":2.59}],"translate":[{"time":0.1},{"time":0.1333,"x":-26.51,"y":-0.25,"curve":"stepped"},{"time":0.8,"curve":"stepped"},{"time":1.6},{"time":1.6333,"x":27.52,"y":-3.95,"curve":"stepped"},{"time":2.2333,"x":27.52,"y":-3.95,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":16.79,"y":0.31,"curve":"stepped"},{"time":2.3667,"x":16.79,"y":0.31},{"time":2.4,"x":19.68,"y":-2.81,"curve":"stepped"},{"time":3.6667,"x":19.68,"y":-2.81,"curve":"stepped"},{"time":3.7,"x":18.24,"y":0.31}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone42":{"rotate":[{"angle":5.11},{"time":0.0333,"angle":5.55,"curve":"stepped"},{"time":0.0667,"angle":-1.98},{"time":0.1,"angle":7.88},{"time":0.1333,"angle":22.89,"curve":"stepped"},{"time":0.8,"angle":2.69,"curve":"stepped"},{"time":0.8333,"angle":4.69},{"time":0.8667,"angle":7.91},{"time":1,"angle":-2.67},{"time":1.1333,"angle":7.91},{"time":1.2667,"angle":-4.35},{"time":1.4,"angle":7.91},{"time":1.4667,"angle":-4.35,"curve":0.015,"c2":0.97,"c3":0.75},{"time":1.6,"angle":8.51},{"time":1.6333,"angle":16.87,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":10.94,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":8.51},{"time":2.3667,"angle":6.63},{"time":2.4,"angle":-2.29},{"time":2.8667,"angle":5.58,"curve":"stepped"},{"time":3.0333,"angle":7.82},{"time":3.6667,"angle":5.93,"curve":"stepped"},{"time":3.7,"angle":7.58},{"time":3.7333,"angle":6.53,"curve":"stepped"},{"time":3.7667,"angle":10.48},{"time":3.8333,"angle":8.85,"curve":"stepped"},{"time":3.8667,"angle":10.93},{"time":3.9333,"angle":10.52,"curve":"stepped"},{"time":3.9667,"angle":6.4},{"time":4,"angle":7.48,"curve":"stepped"},{"time":4.0333,"angle":10.48},{"time":4.1,"angle":8.85,"curve":"stepped"},{"time":4.1333,"angle":6.4},{"time":4.2,"angle":7.48,"curve":"stepped"},{"time":4.2333,"angle":10.48},{"time":4.3,"angle":8.85,"curve":"stepped"},{"time":4.3333,"angle":6.4},{"time":4.4,"angle":6.94,"curve":"stepped"},{"time":4.4333,"angle":10.48},{"time":4.5,"angle":8.85,"curve":"stepped"},{"time":4.5333,"angle":6.4},{"time":4.6,"angle":7.48,"curve":"stepped"},{"time":4.6333,"angle":6.4},{"time":4.7,"angle":7.48,"curve":"stepped"},{"time":4.7333,"angle":10.48},{"time":4.8,"angle":8.85}],"translate":[{"time":1.6},{"time":1.6333,"x":26.26,"y":3.89,"curve":"stepped"},{"time":2.2333,"x":26.26,"y":3.89,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":8.93,"y":0.66,"curve":"stepped"},{"time":2.3667,"x":8.93,"y":0.66},{"time":2.4,"x":8.23,"y":-2.22},{"time":2.8667,"x":8.65,"y":-0.72,"curve":"stepped"},{"time":3.0333,"x":8.23,"y":-2.22,"curve":"stepped"},{"time":3.6667,"x":8.23,"y":-2.22,"curve":"stepped"},{"time":3.7,"x":8.58,"y":0.66}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone51":{"rotate":[{"angle":-0.31},{"time":0.0333,"angle":1.03,"curve":"stepped"},{"time":0.0667,"angle":-10.76},{"time":0.1,"angle":-15.7},{"time":0.1333,"angle":12.43,"curve":"stepped"},{"time":0.8,"angle":-4.12,"curve":"stepped"},{"time":0.8333,"angle":2.9},{"time":0.8667,"angle":-7.01,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":-2,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":-11.98,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":-2,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":-11.98,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4667,"angle":-2,"curve":0.015,"c2":0.97,"c3":0.64,"c4":0.98},{"time":1.6},{"time":1.6333,"angle":5.93,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":5.58,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3},{"time":2.3667,"angle":-1.87},{"time":2.4,"angle":-3.39},{"time":2.8667,"angle":-2.01,"curve":"stepped"},{"time":3.0333,"angle":4.92},{"time":3.6667,"angle":3.65,"curve":"stepped"},{"time":3.7,"angle":-0.93},{"time":3.7333,"angle":-1.98,"curve":"stepped"},{"time":3.7667,"angle":1.97},{"time":3.8333,"angle":0.34,"curve":"stepped"},{"time":3.8667,"angle":2.42},{"time":3.9333,"angle":2.01,"curve":"stepped"},{"time":3.9667,"angle":-2.11},{"time":4,"angle":-1.02,"curve":"stepped"},{"time":4.0333,"angle":1.97},{"time":4.1,"angle":0.34,"curve":"stepped"},{"time":4.1333,"angle":-2.11},{"time":4.2,"angle":-1.02,"curve":"stepped"},{"time":4.2333,"angle":1.97},{"time":4.3,"angle":0.34,"curve":"stepped"},{"time":4.3333,"angle":-2.11},{"time":4.4,"angle":-1.57,"curve":"stepped"},{"time":4.4333,"angle":1.97},{"time":4.5,"angle":0.34,"curve":"stepped"},{"time":4.5333,"angle":-2.11},{"time":4.6,"angle":-1.02,"curve":"stepped"},{"time":4.6333,"angle":-2.11},{"time":4.7,"angle":-1.02,"curve":"stepped"},{"time":4.7333,"angle":1.97},{"time":4.8,"angle":0.34}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":-44.41,"y":3.42},{"time":0.8333,"curve":"stepped"},{"time":1.6},{"time":1.6333,"x":28.7,"y":5.9,"curve":"stepped"},{"time":2.2333,"x":28.7,"y":5.9,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":17.93,"y":0.15,"curve":"stepped"},{"time":2.3667,"x":17.93,"y":0.15},{"time":2.4,"x":28.56,"y":-6.03,"curve":"stepped"},{"time":2.8667,"x":28.56,"y":-6.03,"curve":"stepped"},{"time":3.0333,"x":24.18,"y":-3.3},{"time":3.6667,"x":28.56,"y":-6.03,"curve":"stepped"},{"time":3.7,"x":23.25,"y":0.15}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone31":{"rotate":[{"angle":-9.14},{"time":0.0333,"angle":1.82,"curve":"stepped"},{"time":0.0667,"angle":1.82},{"time":0.1,"angle":-1.21},{"time":0.1333,"angle":21.3,"curve":"stepped"},{"time":0.8,"angle":-11.67,"curve":"stepped"},{"time":0.8333,"angle":19.54},{"time":0.8667,"angle":-42.74},{"time":1,"angle":68.35},{"time":1.1333,"angle":-42.74},{"time":1.2667,"angle":68.35},{"time":1.4,"angle":-42.74},{"time":1.4667,"angle":68.35,"curve":0.015,"c2":0.97,"c3":0.75},{"time":1.5,"angle":38.8},{"time":1.6,"angle":-24.86},{"time":1.6333,"angle":70.16,"curve":"stepped"},{"time":2.2333,"angle":70.16,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2667,"angle":0.08},{"time":2.3,"angle":303.08},{"time":2.3667,"angle":301.21},{"time":2.4,"angle":-13.39},{"time":2.8667,"angle":-1.63,"curve":"stepped"},{"time":3.0333,"angle":5.91},{"time":3.6667,"angle":4.03,"curve":"stepped"},{"time":3.7,"angle":171.88},{"time":3.7333,"angle":172.02,"curve":"stepped"},{"time":3.7667,"angle":175.97},{"time":3.8333,"angle":174.34,"curve":"stepped"},{"time":3.8667,"angle":176.42},{"time":3.9333,"angle":176.01,"curve":"stepped"},{"time":3.9667,"angle":171.89},{"time":4,"angle":172.97,"curve":"stepped"},{"time":4.0333,"angle":175.97},{"time":4.1,"angle":174.34,"curve":"stepped"},{"time":4.1333,"angle":171.89},{"time":4.2,"angle":172.97,"curve":"stepped"},{"time":4.2333,"angle":175.97},{"time":4.3,"angle":174.34,"curve":"stepped"},{"time":4.3333,"angle":171.89},{"time":4.4,"angle":172.43,"curve":"stepped"},{"time":4.4333,"angle":175.97},{"time":4.5,"angle":174.34,"curve":"stepped"},{"time":4.5333,"angle":171.89},{"time":4.6,"angle":172.97,"curve":"stepped"},{"time":4.6333,"angle":171.89},{"time":4.7,"angle":172.97,"curve":"stepped"},{"time":4.7333,"angle":175.97},{"time":4.8,"angle":174.34}],"translate":[{},{"time":0.0333,"x":0.63,"y":-3.44,"curve":"stepped"},{"time":3.6667,"x":0.63,"y":-3.44,"curve":"stepped"},{"time":3.7,"x":1.87,"y":5.53}],"scale":[{"x":0.01,"y":0.035},{"time":0.1333,"x":0.804,"y":1.075,"curve":"stepped"},{"time":0.8,"x":0.809,"y":0.613,"curve":"stepped"},{"time":0.8333,"x":0.809,"y":0.613},{"time":0.8667,"x":0.809,"y":0.939,"curve":"stepped"},{"time":1.5,"x":0.809,"y":0.939},{"time":1.6,"x":1.644,"y":2.915,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6333,"x":2.558,"y":1.521,"curve":"stepped"},{"time":2.2333,"x":2.558,"y":1.521,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":2.421,"y":1.521,"curve":0.073,"c2":0.66,"c3":0.75},{"time":2.3667,"x":1.637,"y":1.521},{"time":2.4,"x":2.558,"y":2.101,"curve":"stepped"},{"time":3.6667,"x":2.558,"y":2.101,"curve":"stepped"},{"time":3.7}]},"bone57":{"rotate":[{"angle":-6.39},{"time":0.0333,"angle":-7.66,"curve":"stepped"},{"time":0.0667,"angle":-8.69},{"time":0.1,"angle":-13.63},{"time":0.1333,"angle":13.12,"curve":"stepped"},{"time":0.8,"angle":-2.78,"curve":"stepped"},{"time":0.8333,"angle":-0.44},{"time":0.8667,"angle":-3.87,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":-1.73,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":-7.8,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":-4.72,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":-7.86,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4667,"angle":-0.67,"curve":0.015,"c2":0.97,"c3":0.65,"c4":0.98},{"time":1.6,"angle":-0.45},{"time":1.6333,"angle":-0.12,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":0.23,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":-0.45},{"time":2.3667,"angle":-2.32},{"time":2.4,"angle":-7.79},{"time":2.8667,"angle":-6.9,"curve":"stepped"},{"time":3.0333,"angle":0.65},{"time":3.6667,"angle":-0.06,"curve":"stepped"},{"time":3.7,"angle":-1.38},{"time":3.7333,"angle":-2.43,"curve":"stepped"},{"time":3.7667,"angle":1.52},{"time":3.8333,"angle":-0.11,"curve":"stepped"},{"time":3.8667,"angle":1.97},{"time":3.9333,"angle":1.56,"curve":"stepped"},{"time":3.9667,"angle":-2.56},{"time":4,"angle":-1.48,"curve":"stepped"},{"time":4.0333,"angle":1.52},{"time":4.1,"angle":-0.11,"curve":"stepped"},{"time":4.1333,"angle":-2.56},{"time":4.2,"angle":-1.48,"curve":"stepped"},{"time":4.2333,"angle":1.52},{"time":4.3,"angle":-0.11,"curve":"stepped"},{"time":4.3333,"angle":-2.56},{"time":4.4,"angle":-2.02,"curve":"stepped"},{"time":4.4333,"angle":1.52},{"time":4.5,"angle":-0.11,"curve":"stepped"},{"time":4.5333,"angle":-2.56},{"time":4.6,"angle":-1.48,"curve":"stepped"},{"time":4.6333,"angle":-2.56},{"time":4.7,"angle":-1.48,"curve":"stepped"},{"time":4.7333,"angle":1.52},{"time":4.8,"angle":-0.11}],"translate":[{"time":1.6},{"time":1.6333,"x":50.76,"y":-0.79,"curve":"stepped"},{"time":2.2333,"x":50.76,"y":-0.79,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":36.08,"y":1.05,"curve":"stepped"},{"time":2.3667,"x":36.08,"y":1.05},{"time":2.4,"x":32.68,"y":0.85,"curve":"stepped"},{"time":3.0333,"x":32.68,"y":0.85},{"time":3.6667,"x":3.9,"y":0.58,"curve":"stepped"},{"time":3.7,"x":34.38,"y":1.05}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone58":{"rotate":[{"angle":-4.62},{"time":0.0333,"angle":-6.69,"curve":"stepped"},{"time":0.0667,"angle":-7.22},{"time":0.1,"angle":-12.16},{"time":0.1333,"angle":7.3,"curve":"stepped"},{"time":0.8,"angle":-16.11,"curve":"stepped"},{"time":0.8333,"angle":-3.64},{"time":0.8667,"angle":-7.43,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.9333,"angle":2.21,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.0667,"angle":-6.32,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2,"angle":-3.25,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.3333,"angle":-6.39,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4667,"angle":-1.38,"curve":0.015,"c2":0.97,"c3":0.65,"c4":0.98},{"time":1.6,"angle":-5.84},{"time":1.6333,"angle":-3.47,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":-3.82,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":-5.84},{"time":2.3667,"angle":-7.72},{"time":2.4,"angle":-6.94},{"time":2.8667,"angle":-11.54,"curve":"stepped"},{"time":3.0333,"angle":-3.99},{"time":3.6667,"angle":-2.77,"curve":"stepped"},{"time":3.7,"angle":-6.77},{"time":3.7333,"angle":-7.83,"curve":"stepped"},{"time":3.7667,"angle":-3.87},{"time":3.8333,"angle":-5.51,"curve":"stepped"},{"time":3.8667,"angle":-3.43},{"time":3.9333,"angle":-3.84,"curve":"stepped"},{"time":3.9667,"angle":-7.96},{"time":4,"angle":-6.87,"curve":"stepped"},{"time":4.0333,"angle":-3.87},{"time":4.1,"angle":-5.51,"curve":"stepped"},{"time":4.1333,"angle":-7.96},{"time":4.2,"angle":-6.87,"curve":"stepped"},{"time":4.2333,"angle":-3.87},{"time":4.3,"angle":-5.51,"curve":"stepped"},{"time":4.3333,"angle":-7.96},{"time":4.4,"angle":-7.41,"curve":"stepped"},{"time":4.4333,"angle":-3.87},{"time":4.5,"angle":-5.51,"curve":"stepped"},{"time":4.5333,"angle":-7.96},{"time":4.6,"angle":-6.87,"curve":"stepped"},{"time":4.6333,"angle":-7.96},{"time":4.7,"angle":-6.87,"curve":"stepped"},{"time":4.7333,"angle":-3.87},{"time":4.8,"angle":-5.51}],"translate":[{"time":1.6},{"time":1.6333,"x":44.43,"y":-0.62,"curve":"stepped"},{"time":2.2333,"x":44.43,"y":-0.62,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":47.24,"y":-0.33,"curve":"stepped"},{"time":2.3667,"x":47.24,"y":-0.33},{"time":2.4,"x":39.99,"y":3.16,"curve":"stepped"},{"time":3.0333,"x":39.99,"y":3.16},{"time":3.6667,"x":0.67,"y":-0.08,"curve":"stepped"},{"time":3.7,"x":43.61,"y":-0.33}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone55":{"rotate":[{"angle":-8.16},{"time":0.0333,"angle":-7.37,"curve":"stepped"},{"time":0.0667,"angle":-10.16},{"time":0.1,"angle":-15.1},{"time":0.1333,"angle":4.62,"curve":"stepped"},{"time":0.8,"angle":-12.72,"curve":"stepped"},{"time":0.8333,"angle":-2.92},{"time":0.8667,"angle":-6.35,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":-7.81,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":-9.27,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":-6.19,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":-9.33,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4667,"angle":-6.76,"curve":0.015,"c2":0.97,"c3":0.64,"c4":0.98},{"time":1.6,"angle":-4.54},{"time":1.6333,"angle":-2.2,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":-2.55,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":-4.54},{"time":2.3667,"angle":-6.41},{"time":2.4,"angle":-10.6},{"time":2.8667,"angle":-7.75,"curve":"stepped"},{"time":3.0333,"angle":-0.2},{"time":3.6667,"angle":-2.82,"curve":"stepped"},{"time":3.7,"angle":-5.46},{"time":3.7333,"angle":-6.52,"curve":"stepped"},{"time":3.7667,"angle":-2.57},{"time":3.8333,"angle":-4.2,"curve":"stepped"},{"time":3.8667,"angle":-2.12},{"time":3.9333,"angle":-2.53,"curve":"stepped"},{"time":3.9667,"angle":-6.65},{"time":4,"angle":-5.56,"curve":"stepped"},{"time":4.0333,"angle":-2.57},{"time":4.1,"angle":-4.2,"curve":"stepped"},{"time":4.1333,"angle":-6.65},{"time":4.2,"angle":-5.56,"curve":"stepped"},{"time":4.2333,"angle":-2.57},{"time":4.3,"angle":-4.2,"curve":"stepped"},{"time":4.3333,"angle":-6.65},{"time":4.4,"angle":-6.11,"curve":"stepped"},{"time":4.4333,"angle":-2.57},{"time":4.5,"angle":-4.2,"curve":"stepped"},{"time":4.5333,"angle":-6.65},{"time":4.6,"angle":-5.56,"curve":"stepped"},{"time":4.6333,"angle":-6.65},{"time":4.7,"angle":-5.56,"curve":"stepped"},{"time":4.7333,"angle":-2.57},{"time":4.8,"angle":-4.2}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":-28.38,"y":2.6},{"time":0.8333,"curve":"stepped"},{"time":1.6},{"time":1.6333,"x":31.49,"y":-1.32,"curve":"stepped"},{"time":2.2333,"x":31.49,"y":-1.32,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":18.22,"y":0.11,"curve":"stepped"},{"time":2.3667,"x":18.22,"y":0.11},{"time":2.4,"x":16.71,"y":-1.2,"curve":"stepped"},{"time":3.0333,"x":16.71,"y":-1.2},{"time":3.6667,"x":0.68,"y":1.5,"curve":"stepped"},{"time":3.7,"x":17.47,"y":0.11}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone46":{"rotate":[{"angle":-1.08},{"time":0.0333,"angle":0.39,"curve":"stepped"},{"time":0.0667,"angle":0.39},{"time":0.1,"angle":-7.59},{"time":0.1333,"angle":10.16,"curve":"stepped"},{"time":0.8,"angle":-5.39,"curve":"stepped"},{"time":0.8333,"angle":-0.3},{"time":0.8667,"angle":4.69},{"time":1,"angle":-0.39},{"time":1.1333,"angle":4.69},{"time":1.2667,"angle":-0.39},{"time":1.4,"angle":4.69},{"time":1.4667,"angle":-0.39,"curve":0.015,"c2":0.97,"c3":0.75},{"time":1.6,"angle":0.45},{"time":1.6333,"angle":9.21,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":12.56,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":0.45},{"time":2.3667,"angle":-1.42},{"time":2.4,"angle":-9.97},{"time":2.8667,"angle":-1.05,"curve":"stepped"},{"time":3.0333,"angle":4.34},{"time":3.6667,"angle":2.46,"curve":"stepped"},{"time":3.7,"angle":-0.47},{"time":3.7333,"angle":-1.53,"curve":"stepped"},{"time":3.7667,"angle":2.42},{"time":3.8333,"angle":0.79,"curve":"stepped"},{"time":3.8667,"angle":2.87},{"time":3.9333,"angle":2.46,"curve":"stepped"},{"time":3.9667,"angle":-1.66},{"time":4,"angle":-0.57,"curve":"stepped"},{"time":4.0333,"angle":2.42},{"time":4.1,"angle":0.79,"curve":"stepped"},{"time":4.1333,"angle":-1.66},{"time":4.2,"angle":-0.57,"curve":"stepped"},{"time":4.2333,"angle":2.42},{"time":4.3,"angle":0.79,"curve":"stepped"},{"time":4.3333,"angle":-1.66},{"time":4.4,"angle":-1.12,"curve":"stepped"},{"time":4.4333,"angle":2.42},{"time":4.5,"angle":0.79,"curve":"stepped"},{"time":4.5333,"angle":-1.66},{"time":4.6,"angle":-0.57,"curve":"stepped"},{"time":4.6333,"angle":-1.66},{"time":4.7,"angle":-0.57,"curve":"stepped"},{"time":4.7333,"angle":2.42},{"time":4.8,"angle":0.79}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":-23.95,"y":-0.62},{"time":0.8333,"curve":"stepped"},{"time":1.6},{"time":1.6333,"x":30.73,"y":3.96,"curve":"stepped"},{"time":2.2333,"x":30.73,"y":3.96,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":23.73,"y":0.08,"curve":"stepped"},{"time":2.3667,"x":23.73,"y":0.08},{"time":2.4,"x":19.68,"y":-1.32,"curve":"stepped"},{"time":3.6667,"x":19.68,"y":-1.32,"curve":"stepped"},{"time":3.7,"x":21.7,"y":0.08}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone34":{"rotate":[{"angle":23.31},{"time":0.0333,"angle":22.51,"curve":"stepped"},{"time":0.0667,"angle":22.51},{"time":0.1,"angle":19.49},{"time":0.1333,"angle":26.25,"curve":"stepped"},{"time":0.8,"angle":17.13,"curve":"stepped"},{"time":0.8333,"angle":17.95},{"time":0.8667,"angle":31.15},{"time":1,"angle":16.1},{"time":1.1333,"angle":31.15},{"time":1.2667,"angle":16.1},{"time":1.4,"angle":31.15},{"time":1.4667,"angle":16.1,"curve":0.015,"c2":0.97,"c3":0.75},{"time":1.6,"angle":21.49},{"time":1.6333,"angle":12.04,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":8.83,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":21.49},{"time":2.3667,"angle":19.62},{"time":2.4,"angle":15.96},{"time":2.8667,"angle":19.94,"curve":"stepped"},{"time":3.0333,"angle":27.48},{"time":3.6667,"angle":25.6,"curve":"stepped"},{"time":3.7,"angle":20.56},{"time":3.7333,"angle":19.51,"curve":"stepped"},{"time":3.7667,"angle":23.46},{"time":3.8333,"angle":21.83,"curve":"stepped"},{"time":3.8667,"angle":23.91},{"time":3.9333,"angle":23.5,"curve":"stepped"},{"time":3.9667,"angle":19.38},{"time":4,"angle":20.46,"curve":"stepped"},{"time":4.0333,"angle":23.46},{"time":4.1,"angle":21.83,"curve":"stepped"},{"time":4.1333,"angle":19.38},{"time":4.2,"angle":20.46,"curve":"stepped"},{"time":4.2333,"angle":23.46},{"time":4.3,"angle":21.83,"curve":"stepped"},{"time":4.3333,"angle":19.38},{"time":4.4,"angle":19.92,"curve":"stepped"},{"time":4.4333,"angle":23.46},{"time":4.5,"angle":21.83,"curve":"stepped"},{"time":4.5333,"angle":19.38},{"time":4.6,"angle":20.46,"curve":"stepped"},{"time":4.6333,"angle":19.38},{"time":4.7,"angle":20.46,"curve":"stepped"},{"time":4.7333,"angle":23.46},{"time":4.8,"angle":21.83}],"translate":[{"time":1.6},{"time":1.6333,"x":15.59,"y":-1.3,"curve":"stepped"},{"time":2.2333,"x":15.59,"y":-1.3,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":11.9,"y":0.01,"curve":"stepped"},{"time":2.3667,"x":11.9,"y":0.01},{"time":2.4,"x":14.24,"y":-0.55,"curve":"stepped"},{"time":3.6667,"x":14.24,"y":-0.55,"curve":"stepped"},{"time":3.7,"x":13.07,"y":0.01}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone59":{"rotate":[{"angle":-2.41},{"time":0.0333,"angle":-1.58,"curve":"stepped"},{"time":0.0667,"angle":-5.37},{"time":0.1,"angle":-10.31},{"time":0.1333,"angle":9.19,"curve":"stepped"},{"time":0.8,"angle":-8.93,"curve":"stepped"},{"time":0.8333,"angle":-1.69},{"time":0.8667,"angle":-6.12,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":0.9333,"angle":-3.89,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.0667,"angle":-4.47,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2,"angle":-1.4,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.3333,"angle":-4.54,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4667,"angle":-14.12,"curve":0.015,"c2":0.97,"c3":0.65,"c4":0.98},{"time":1.6,"angle":-5.44},{"time":1.6333,"angle":-1.16,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":2.78,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":-5.44},{"time":2.3667,"angle":-7.31},{"time":2.4,"angle":-6.7},{"time":2.8667,"angle":-7.68,"curve":"stepped"},{"time":3.0333,"angle":-0.13},{"time":3.6667,"angle":-1.26,"curve":"stepped"},{"time":3.7,"angle":-6.37},{"time":3.7333,"angle":-7.42,"curve":"stepped"},{"time":3.7667,"angle":-3.47},{"time":3.8333,"angle":-5.1,"curve":"stepped"},{"time":3.8667,"angle":-3.02},{"time":3.9333,"angle":-3.43,"curve":"stepped"},{"time":3.9667,"angle":-7.55},{"time":4,"angle":-6.47,"curve":"stepped"},{"time":4.0333,"angle":-3.47},{"time":4.1,"angle":-5.1,"curve":"stepped"},{"time":4.1333,"angle":-7.55},{"time":4.2,"angle":-6.47,"curve":"stepped"},{"time":4.2333,"angle":-3.47},{"time":4.3,"angle":-5.1,"curve":"stepped"},{"time":4.3333,"angle":-7.55},{"time":4.4,"angle":-7.01,"curve":"stepped"},{"time":4.4333,"angle":-3.47},{"time":4.5,"angle":-5.1,"curve":"stepped"},{"time":4.5333,"angle":-7.55},{"time":4.6,"angle":-6.47,"curve":"stepped"},{"time":4.6333,"angle":-7.55},{"time":4.7,"angle":-6.47,"curve":"stepped"},{"time":4.7333,"angle":-3.47},{"time":4.8,"angle":-5.1}],"translate":[{"time":1.6},{"time":1.6333,"x":55.4,"y":5.85,"curve":"stepped"},{"time":2.2333,"x":55.4,"y":5.85,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":19.85,"y":-0.15,"curve":"stepped"},{"time":2.3667,"x":19.85,"y":-0.15},{"time":2.4,"x":18.51,"y":0.49,"curve":"stepped"},{"time":3.0333,"x":18.51,"y":0.49},{"time":3.6667,"x":-5.05,"y":-1.49,"curve":"stepped"},{"time":3.7,"x":19.18,"y":-0.15}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone50":{"rotate":[{"angle":5.92},{"time":0.0333,"angle":6.22,"curve":"stepped"},{"time":0.0667,"angle":6.22},{"time":0.1,"angle":1.28},{"time":0.1333,"angle":27.06,"curve":"stepped"},{"time":0.8,"angle":-4.67,"curve":"stepped"},{"time":0.8333,"angle":7.72},{"time":0.8667,"angle":-0.57,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":14.99,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":5.01,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":14.99,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":5.01,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4667,"angle":14.99,"curve":0.015,"c2":0.97,"c3":0.64,"c4":0.98},{"time":1.6,"angle":4.5},{"time":1.6333,"angle":10.37,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":8.28,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":4.5},{"time":2.3667,"angle":2.63},{"time":2.4,"angle":-7.07},{"time":2.8667,"angle":-3.63,"curve":"stepped"},{"time":3.0333,"angle":6.49},{"time":3.6667,"angle":7.81,"curve":"stepped"},{"time":3.7,"angle":3.58},{"time":3.7333,"angle":2.52,"curve":"stepped"},{"time":3.7667,"angle":6.47},{"time":3.8333,"angle":4.84,"curve":"stepped"},{"time":3.8667,"angle":6.92},{"time":3.9333,"angle":6.51,"curve":"stepped"},{"time":3.9667,"angle":2.39},{"time":4,"angle":3.48,"curve":"stepped"},{"time":4.0333,"angle":6.47},{"time":4.1,"angle":4.84,"curve":"stepped"},{"time":4.1333,"angle":2.39},{"time":4.2,"angle":3.48,"curve":"stepped"},{"time":4.2333,"angle":6.47},{"time":4.3,"angle":4.84,"curve":"stepped"},{"time":4.3333,"angle":2.39},{"time":4.4,"angle":2.93,"curve":"stepped"},{"time":4.4333,"angle":6.47},{"time":4.5,"angle":4.84,"curve":"stepped"},{"time":4.5333,"angle":2.39},{"time":4.6,"angle":3.48,"curve":"stepped"},{"time":4.6333,"angle":2.39},{"time":4.7,"angle":3.48,"curve":"stepped"},{"time":4.7333,"angle":6.47},{"time":4.8,"angle":4.84}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":-43.63,"y":4.03},{"time":0.8333,"curve":"stepped"},{"time":1.6},{"time":1.6333,"x":42.74,"y":7.15,"curve":"stepped"},{"time":2.2333,"x":42.74,"y":7.15,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":23.74,"y":-0.48,"curve":"stepped"},{"time":2.3667,"x":23.74,"y":-0.48},{"time":2.4,"x":46.05,"y":-9.06,"curve":"stepped"},{"time":2.8667,"x":46.05,"y":-9.06,"curve":"stepped"},{"time":3.0333,"x":36.62,"y":-3.06},{"time":3.6667,"x":47.51,"y":-6.3,"curve":"stepped"},{"time":3.7,"x":34.89,"y":-0.48}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone41":{"rotate":[{"angle":-3.84},{"time":0.0333,"angle":-1.92,"curve":"stepped"},{"time":0.0667,"angle":-3.7},{"time":0.1,"angle":-4.94},{"time":0.1333,"angle":10.62,"curve":"stepped"},{"time":0.8,"angle":5.59,"curve":"stepped"},{"time":0.8333,"angle":-3.36},{"time":0.8667,"angle":-1.09},{"time":1,"angle":-6.65},{"time":1.1333,"angle":-1.09},{"time":1.2667,"angle":-8.33},{"time":1.4,"angle":-1.09},{"time":1.4667,"angle":-8.33,"curve":0.015,"c2":0.97,"c3":0.75},{"time":1.6,"angle":6.29},{"time":1.6333,"angle":1.79,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":4.24,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":6.29},{"time":2.3667,"angle":4.42},{"time":2.4,"angle":3},{"time":2.8667,"angle":5.57,"curve":"stepped"},{"time":3.0333,"angle":13.11},{"time":3.6667,"angle":11.23,"curve":"stepped"},{"time":3.7,"angle":5.36},{"time":3.7333,"angle":4.31,"curve":"stepped"},{"time":3.7667,"angle":8.26},{"time":3.8333,"angle":6.63,"curve":"stepped"},{"time":3.8667,"angle":8.71},{"time":3.9333,"angle":8.3,"curve":"stepped"},{"time":3.9667,"angle":4.18},{"time":4,"angle":5.27,"curve":"stepped"},{"time":4.0333,"angle":8.26},{"time":4.1,"angle":6.63,"curve":"stepped"},{"time":4.1333,"angle":4.18},{"time":4.2,"angle":5.27,"curve":"stepped"},{"time":4.2333,"angle":8.26},{"time":4.3,"angle":6.63,"curve":"stepped"},{"time":4.3333,"angle":4.18},{"time":4.4,"angle":4.72,"curve":"stepped"},{"time":4.4333,"angle":8.26},{"time":4.5,"angle":6.63,"curve":"stepped"},{"time":4.5333,"angle":4.18},{"time":4.6,"angle":5.27,"curve":"stepped"},{"time":4.6333,"angle":4.18},{"time":4.7,"angle":5.27,"curve":"stepped"},{"time":4.7333,"angle":8.26},{"time":4.8,"angle":6.63}],"translate":[{"time":0.1},{"time":0.1333,"x":-31.05,"y":-0.07,"curve":"stepped"},{"time":0.8,"curve":"stepped"},{"time":1.6},{"time":1.6333,"x":19.82,"y":4.66,"curve":"stepped"},{"time":2.2333,"x":19.82,"y":4.66,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":10.36,"y":0.83,"curve":"stepped"},{"time":2.3667,"x":10.36,"y":0.83},{"time":2.4,"x":15.09,"y":-1.59,"curve":"stepped"},{"time":3.6667,"x":15.09,"y":-1.59,"curve":"stepped"},{"time":3.7,"x":14.05,"y":0.83}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone44":{"rotate":[{"angle":5.48},{"time":0.0333,"angle":5.85,"curve":"stepped"},{"time":0.0667,"angle":5.85},{"time":0.1,"angle":-3.48},{"time":0.1333,"angle":15.06,"curve":"stepped"},{"time":0.8,"angle":0.41,"curve":"stepped"},{"time":0.8333,"angle":-1.03},{"time":0.8667,"angle":8.58},{"time":1,"angle":1.7},{"time":1.1333,"angle":8.58},{"time":1.2667,"angle":1.7},{"time":1.4,"angle":8.58},{"time":1.4667,"angle":1.7,"curve":0.015,"c2":0.97,"c3":0.75},{"time":1.6,"angle":0.91},{"time":1.6333,"angle":8.04,"curve":"stepped"},{"time":2.2333,"angle":8.04,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":0.91},{"time":2.3667,"angle":-0.96},{"time":2.4,"angle":-8.16},{"time":2.8667,"angle":0.4,"curve":"stepped"},{"time":3.0333,"angle":6.16},{"time":3.6667,"angle":4.28,"curve":"stepped"},{"time":3.7,"angle":-0.02},{"time":3.7333,"angle":-1.07,"curve":"stepped"},{"time":3.7667,"angle":2.88},{"time":3.8333,"angle":1.25,"curve":"stepped"},{"time":3.8667,"angle":3.33},{"time":3.9333,"angle":2.92,"curve":"stepped"},{"time":3.9667,"angle":-1.2},{"time":4,"angle":-0.12,"curve":"stepped"},{"time":4.0333,"angle":2.88},{"time":4.1,"angle":1.25,"curve":"stepped"},{"time":4.1333,"angle":-1.2},{"time":4.2,"angle":-0.12,"curve":"stepped"},{"time":4.2333,"angle":2.88},{"time":4.3,"angle":1.25,"curve":"stepped"},{"time":4.3333,"angle":-1.2},{"time":4.4,"angle":-0.66,"curve":"stepped"},{"time":4.4333,"angle":2.88},{"time":4.5,"angle":1.25,"curve":"stepped"},{"time":4.5333,"angle":-1.2},{"time":4.6,"angle":-0.12,"curve":"stepped"},{"time":4.6333,"angle":-1.2},{"time":4.7,"angle":-0.12,"curve":"stepped"},{"time":4.7333,"angle":2.88},{"time":4.8,"angle":1.25}],"translate":[{"time":1.6},{"time":1.6333,"x":27.64,"y":-3.26,"curve":"stepped"},{"time":2.2333,"x":27.64,"y":-3.26,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":-3.03,"y":-0.65,"curve":"stepped"},{"time":2.3667,"x":-3.03,"y":-0.65},{"time":2.4,"x":15.54,"y":-4.5},{"time":2.8667,"x":16.09,"y":-1.43,"curve":"stepped"},{"time":3.0333,"x":15.54,"y":-4.5,"curve":"stepped"},{"time":3.6667,"x":15.54,"y":-4.5,"curve":"stepped"},{"time":3.7,"x":6.26,"y":-0.65}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone48":{"rotate":[{"angle":7.15},{"time":0.0333,"angle":5.87,"curve":"stepped"},{"time":0.0667,"angle":5.87},{"time":0.1,"angle":0.93},{"time":0.1333,"angle":24.4,"curve":"stepped"},{"time":0.8,"angle":-0.85,"curve":"stepped"},{"time":0.8333,"angle":7.99},{"time":0.8667,"angle":5.1},{"time":1,"angle":14.63},{"time":1.1333,"angle":5.1},{"time":1.2667,"angle":14.63},{"time":1.4,"angle":5.1},{"time":1.4667,"angle":14.63,"curve":0.015,"c2":0.97,"c3":0.75},{"time":1.6,"angle":6.79},{"time":1.6333,"angle":12.06,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":13.26,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":6.79},{"time":2.3667,"angle":4.92},{"time":2.4,"angle":-3.69},{"time":2.8667,"angle":1.93,"curve":"stepped"},{"time":3.0333,"angle":10.63},{"time":3.6667,"angle":11.05,"curve":"stepped"},{"time":3.7,"angle":5.86},{"time":3.7333,"angle":4.81,"curve":"stepped"},{"time":3.7667,"angle":8.76},{"time":3.8333,"angle":7.13,"curve":"stepped"},{"time":3.8667,"angle":9.21},{"time":3.9333,"angle":8.8,"curve":"stepped"},{"time":3.9667,"angle":4.68},{"time":4,"angle":5.76,"curve":"stepped"},{"time":4.0333,"angle":8.76},{"time":4.1,"angle":7.13,"curve":"stepped"},{"time":4.1333,"angle":4.68},{"time":4.2,"angle":5.76,"curve":"stepped"},{"time":4.2333,"angle":8.76},{"time":4.3,"angle":7.13,"curve":"stepped"},{"time":4.3333,"angle":4.68},{"time":4.4,"angle":5.22,"curve":"stepped"},{"time":4.4333,"angle":8.76},{"time":4.5,"angle":7.13,"curve":"stepped"},{"time":4.5333,"angle":4.68},{"time":4.6,"angle":5.76,"curve":"stepped"},{"time":4.6333,"angle":4.68},{"time":4.7,"angle":5.76,"curve":"stepped"},{"time":4.7333,"angle":8.76},{"time":4.8,"angle":7.13}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":-51.08,"y":2.84},{"time":0.8333,"curve":"stepped"},{"time":1.6},{"time":1.6333,"x":41.03,"y":0.73,"curve":"stepped"},{"time":2.2333,"x":41.03,"y":0.73,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":18.44,"y":-0.33,"curve":"stepped"},{"time":2.3667,"x":18.44,"y":-0.33},{"time":2.4,"x":19,"y":-0.08,"curve":"stepped"},{"time":3.6667,"x":19,"y":-0.08,"curve":"stepped"},{"time":3.7,"x":18.72,"y":-0.33}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone39":{"rotate":[{"angle":8.79},{"time":0.0333,"angle":8.61,"curve":"stepped"},{"time":0.0667,"angle":6.82},{"time":0.1,"angle":5.58},{"time":0.1333,"angle":1.5,"curve":"stepped"},{"time":0.8,"angle":12.25,"curve":"stepped"},{"time":0.8333,"angle":-2.04},{"time":0.8667,"angle":13.87},{"time":1,"angle":3.88},{"time":1.1333,"angle":13.87},{"time":1.2667,"angle":2.2},{"time":1.4,"angle":13.87},{"time":1.4667,"angle":2.2,"curve":0.015,"c2":0.97,"c3":0.75},{"time":1.6,"angle":4.95},{"time":1.6333,"angle":8.63,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":9.99,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":4.95},{"time":2.3667,"angle":3.08},{"time":2.4,"angle":-0.25},{"time":2.8667,"angle":2.31,"curve":"stepped"},{"time":3.0333,"angle":9.86},{"time":3.6667,"angle":7.97,"curve":"stepped"},{"time":3.7,"angle":4.02},{"time":3.7333,"angle":2.97,"curve":"stepped"},{"time":3.7667,"angle":6.92},{"time":3.8333,"angle":5.29,"curve":"stepped"},{"time":3.8667,"angle":7.37},{"time":3.9333,"angle":6.96,"curve":"stepped"},{"time":3.9667,"angle":2.84},{"time":4,"angle":3.93,"curve":"stepped"},{"time":4.0333,"angle":6.92},{"time":4.1,"angle":5.29,"curve":"stepped"},{"time":4.1333,"angle":2.84},{"time":4.2,"angle":3.93,"curve":"stepped"},{"time":4.2333,"angle":6.92},{"time":4.3,"angle":5.29,"curve":"stepped"},{"time":4.3333,"angle":2.84},{"time":4.4,"angle":3.38,"curve":"stepped"},{"time":4.4333,"angle":6.92},{"time":4.5,"angle":5.29,"curve":"stepped"},{"time":4.5333,"angle":2.84},{"time":4.6,"angle":3.93,"curve":"stepped"},{"time":4.6333,"angle":2.84},{"time":4.7,"angle":3.93,"curve":"stepped"},{"time":4.7333,"angle":6.92},{"time":4.8,"angle":5.29}],"translate":[{"time":0.1},{"time":0.1333,"x":-27.63,"y":1.41,"curve":"stepped"},{"time":0.8,"curve":"stepped"},{"time":1.6},{"time":1.6333,"x":18.93,"y":0.99,"curve":"stepped"},{"time":2.2333,"x":18.93,"y":0.99,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":16.03,"y":0.31,"curve":"stepped"},{"time":2.3667,"x":16.03,"y":0.31},{"time":2.4,"x":18.36,"y":-2.5,"curve":"stepped"},{"time":3.6667,"x":18.36,"y":-2.5,"curve":"stepped"},{"time":3.7,"x":17.19,"y":0.31}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone49":{"rotate":[{"angle":-0.66},{"time":0.0333,"angle":0.73,"curve":"stepped"},{"time":0.0667,"angle":-6.71},{"time":0.1,"angle":-11.65},{"time":0.1333,"angle":16.24,"curve":"stepped"},{"time":0.8,"angle":-8.32,"curve":"stepped"},{"time":0.8333,"angle":3.83},{"time":0.8667,"angle":-4.14,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":2.05,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":-7.49,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":2.05,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":-7.49,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4667,"angle":2.05,"curve":0.015,"c2":0.97,"c3":0.64,"c4":0.98},{"time":1.6,"angle":2.7},{"time":1.6333,"angle":8.03,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":5.67,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":2.7},{"time":2.3667,"angle":0.83},{"time":2.4,"angle":-2.68},{"time":2.8667,"angle":2.78,"curve":"stepped"},{"time":3.0333,"angle":10.33},{"time":3.6667,"angle":7.86,"curve":"stepped"},{"time":3.7,"angle":1.78},{"time":3.7333,"angle":0.72,"curve":"stepped"},{"time":3.7667,"angle":4.68},{"time":3.8333,"angle":3.04,"curve":"stepped"},{"time":3.8667,"angle":5.12},{"time":3.9333,"angle":4.71,"curve":"stepped"},{"time":3.9667,"angle":0.59},{"time":4,"angle":1.68,"curve":"stepped"},{"time":4.0333,"angle":4.68},{"time":4.1,"angle":3.04,"curve":"stepped"},{"time":4.1333,"angle":0.59},{"time":4.2,"angle":1.68,"curve":"stepped"},{"time":4.2333,"angle":4.68},{"time":4.3,"angle":3.04,"curve":"stepped"},{"time":4.3333,"angle":0.59},{"time":4.4,"angle":1.14,"curve":"stepped"},{"time":4.4333,"angle":4.68},{"time":4.5,"angle":3.04,"curve":"stepped"},{"time":4.5333,"angle":0.59},{"time":4.6,"angle":1.68,"curve":"stepped"},{"time":4.6333,"angle":0.59},{"time":4.7,"angle":1.68,"curve":"stepped"},{"time":4.7333,"angle":4.68},{"time":4.8,"angle":3.04}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":-61.65,"y":3.35},{"time":0.8333,"curve":"stepped"},{"time":1.6},{"time":1.6333,"x":24.22,"y":3.01,"curve":"stepped"},{"time":2.2333,"x":24.22,"y":3.01,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":32.74,"y":0.02,"curve":"stepped"},{"time":2.3667,"x":32.74,"y":0.02},{"time":2.4,"x":26.54,"y":-3.64,"curve":"stepped"},{"time":3.6667,"x":26.54,"y":-3.64,"curve":"stepped"},{"time":3.7,"x":29.64,"y":0.02}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone56":{"rotate":[{"angle":1.26},{"time":0.0333,"angle":2.33,"curve":"stepped"},{"time":0.0667,"angle":-2.32},{"time":0.1,"angle":-7.25},{"time":0.1333,"angle":9.89,"curve":"stepped"},{"time":0.8,"angle":-12.13,"curve":"stepped"},{"time":0.8333,"angle":-2.67},{"time":0.8667,"angle":-7.94,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":-0.84,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":-1.42,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":1.65,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":-1.49,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4667,"angle":1.09,"curve":0.015,"c2":0.97,"c3":0.64,"c4":0.98},{"time":1.6,"angle":-5.44},{"time":1.6333,"angle":-3.06,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":-3.41,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":-5.44},{"time":2.3667,"angle":-7.31},{"time":2.4,"angle":-9.14},{"time":2.8667,"angle":-6.29,"curve":"stepped"},{"time":3.0333,"angle":1.25},{"time":3.6667,"angle":-2.74,"curve":"stepped"},{"time":3.7,"angle":-6.37},{"time":3.7333,"angle":-7.42,"curve":"stepped"},{"time":3.7667,"angle":-3.47},{"time":3.8333,"angle":-5.1,"curve":"stepped"},{"time":3.8667,"angle":-3.02},{"time":3.9333,"angle":-3.43,"curve":"stepped"},{"time":3.9667,"angle":-7.55},{"time":4,"angle":-6.47,"curve":"stepped"},{"time":4.0333,"angle":-3.47},{"time":4.1,"angle":-5.1,"curve":"stepped"},{"time":4.1333,"angle":-7.55},{"time":4.2,"angle":-6.47,"curve":"stepped"},{"time":4.2333,"angle":-3.47},{"time":4.3,"angle":-5.1,"curve":"stepped"},{"time":4.3333,"angle":-7.55},{"time":4.4,"angle":-7.01,"curve":"stepped"},{"time":4.4333,"angle":-3.47},{"time":4.5,"angle":-5.1,"curve":"stepped"},{"time":4.5333,"angle":-7.55},{"time":4.6,"angle":-6.47,"curve":"stepped"},{"time":4.6333,"angle":-7.55},{"time":4.7,"angle":-6.47,"curve":"stepped"},{"time":4.7333,"angle":-3.47},{"time":4.8,"angle":-5.1}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":-24.67,"y":-0.46},{"time":0.8333,"curve":"stepped"},{"time":1.6},{"time":1.6333,"x":46.35,"y":-1.46,"curve":"stepped"},{"time":2.2333,"x":46.35,"y":-1.46,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":29.84,"y":-0.6,"curve":"stepped"},{"time":2.3667,"x":29.84,"y":-0.6},{"time":2.4,"x":28.51,"y":-0.77,"curve":"stepped"},{"time":3.0333,"x":28.51,"y":-0.77},{"time":3.6667,"x":3.48,"y":-0.8,"curve":"stepped"},{"time":3.7,"x":29.17,"y":-0.6}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone52":{"rotate":[{"angle":3.13},{"time":0.0333,"angle":3.89,"curve":"stepped"},{"time":0.0667,"angle":3.89},{"time":0.1,"angle":-1.05},{"time":0.1333,"angle":10.86,"curve":"stepped"},{"time":0.8,"angle":-16.02,"curve":"stepped"},{"time":0.8333,"angle":2.74},{"time":0.8667,"angle":-6.43,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":13.55,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":0.51,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":13.55,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":0.51,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4667,"angle":13.55,"curve":0.015,"c2":0.97,"c3":0.64,"c4":0.98},{"time":1.6,"angle":-2.27},{"time":1.6333,"angle":-0.06,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":-0.41,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":-2.27},{"time":2.3667,"angle":-4.15},{"time":2.4,"angle":-10.56},{"time":2.8667,"angle":-9.18,"curve":"stepped"},{"time":3.0333,"angle":-1.63},{"time":3.6667,"angle":-3.51,"curve":"stepped"},{"time":3.7,"angle":-3.2},{"time":3.7333,"angle":-4.26,"curve":"stepped"},{"time":3.7667,"angle":-0.3},{"time":3.8333,"angle":-1.93,"curve":"stepped"},{"time":3.8667,"angle":0.15},{"time":3.9333,"angle":-0.26,"curve":"stepped"},{"time":3.9667,"angle":-4.39},{"time":4,"angle":-3.3,"curve":"stepped"},{"time":4.0333,"angle":-0.3},{"time":4.1,"angle":-1.93,"curve":"stepped"},{"time":4.1333,"angle":-4.39},{"time":4.2,"angle":-3.3,"curve":"stepped"},{"time":4.2333,"angle":-0.3},{"time":4.3,"angle":-1.93,"curve":"stepped"},{"time":4.3333,"angle":-4.39},{"time":4.4,"angle":-3.84,"curve":"stepped"},{"time":4.4333,"angle":-0.3},{"time":4.5,"angle":-1.93,"curve":"stepped"},{"time":4.5333,"angle":-4.39},{"time":4.6,"angle":-3.3,"curve":"stepped"},{"time":4.6333,"angle":-4.39},{"time":4.7,"angle":-3.3,"curve":"stepped"},{"time":4.7333,"angle":-0.3},{"time":4.8,"angle":-1.93}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":-27.07,"y":4.49},{"time":0.8333,"curve":"stepped"},{"time":1.6},{"time":1.6333,"x":35.79,"y":-1.35,"curve":"stepped"},{"time":2.2333,"x":35.79,"y":-1.35,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":21.01,"curve":"stepped"},{"time":2.3667,"x":21.01},{"time":2.4,"x":22.77,"y":-5.4,"curve":"stepped"},{"time":2.8667,"x":22.77,"y":-5.4,"curve":"stepped"},{"time":3.0333,"x":7.77,"y":-0.67},{"time":3.6667,"x":22.77,"y":-5.4,"curve":"stepped"},{"time":3.7,"x":21.89}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone37":{"rotate":[{"angle":5.38},{"time":0.0333,"angle":5.77,"curve":"stepped"},{"time":0.0667,"angle":3.99},{"time":0.1,"angle":2.74},{"time":0.1333,"angle":8.93,"curve":"stepped"},{"time":0.8,"angle":12.24,"curve":"stepped"},{"time":0.8333,"angle":5.53},{"time":0.8667,"angle":14.41},{"time":1,"angle":1.04},{"time":1.1333,"angle":14.41},{"time":1.2667,"angle":-0.64},{"time":1.4,"angle":14.41},{"time":1.4667,"angle":-0.64,"curve":0.015,"c2":0.97,"c3":0.75},{"time":1.6,"angle":10.27},{"time":1.6333,"angle":-2.34,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":-0.23,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":10.27},{"time":2.3667,"angle":8.39},{"time":2.4,"angle":7.26},{"time":2.8667,"angle":9.82,"curve":"stepped"},{"time":3.0333,"angle":17.37},{"time":3.6667,"angle":15.48,"curve":"stepped"},{"time":3.7,"angle":9.34},{"time":3.7333,"angle":8.28,"curve":"stepped"},{"time":3.7667,"angle":12.24},{"time":3.8333,"angle":10.6,"curve":"stepped"},{"time":3.8667,"angle":12.68},{"time":3.9333,"angle":12.27,"curve":"stepped"},{"time":3.9667,"angle":8.15},{"time":4,"angle":9.24,"curve":"stepped"},{"time":4.0333,"angle":12.24},{"time":4.1,"angle":10.6,"curve":"stepped"},{"time":4.1333,"angle":8.15},{"time":4.2,"angle":9.24,"curve":"stepped"},{"time":4.2333,"angle":12.24},{"time":4.3,"angle":10.6,"curve":"stepped"},{"time":4.3333,"angle":8.15},{"time":4.4,"angle":8.7,"curve":"stepped"},{"time":4.4333,"angle":12.24},{"time":4.5,"angle":10.6,"curve":"stepped"},{"time":4.5333,"angle":8.15},{"time":4.6,"angle":9.24,"curve":"stepped"},{"time":4.6333,"angle":8.15},{"time":4.7,"angle":9.24,"curve":"stepped"},{"time":4.7333,"angle":12.24},{"time":4.8,"angle":10.6}],"translate":[{"time":0.1},{"time":0.1333,"x":-21.27,"y":1.64,"curve":"stepped"},{"time":0.8,"curve":"stepped"},{"time":1.6},{"time":1.6333,"x":22.87,"y":-0.64,"curve":"stepped"},{"time":2.2333,"x":22.87,"y":-0.64,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":26.92,"y":0.65,"curve":"stepped"},{"time":2.3667,"x":26.92,"y":0.65},{"time":2.4,"x":26.71,"y":2.08,"curve":"stepped"},{"time":3.6667,"x":26.71,"y":2.08,"curve":"stepped"},{"time":3.7,"x":26.81,"y":0.65}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone33":{"rotate":[{"angle":30.34},{"time":0.0333,"angle":26.56,"curve":"stepped"},{"time":0.0667,"angle":26.56},{"time":0.1,"angle":23.54},{"time":0.1333,"angle":21.18,"curve":"stepped"},{"time":0.8,"angle":12.15,"curve":"stepped"},{"time":0.8333,"angle":13.87},{"time":0.8667,"angle":35.2},{"time":1,"angle":20.15},{"time":1.1333,"angle":35.2},{"time":1.2667,"angle":20.15},{"time":1.4,"angle":35.2},{"time":1.4667,"angle":20.15,"curve":0.015,"c2":0.97,"c3":0.75},{"time":1.6,"angle":21.25},{"time":1.6333,"angle":15.5,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":11.05,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":21.25},{"time":2.3667,"angle":19.38},{"time":2.4,"angle":4.86},{"time":2.8667,"angle":8.84,"curve":"stepped"},{"time":3.0333,"angle":16.38},{"time":3.6667,"angle":14.5,"curve":"stepped"},{"time":3.7,"angle":20.32},{"time":3.7333,"angle":19.27,"curve":"stepped"},{"time":3.7667,"angle":23.22},{"time":3.8333,"angle":21.59,"curve":"stepped"},{"time":3.8667,"angle":23.67},{"time":3.9333,"angle":23.26,"curve":"stepped"},{"time":3.9667,"angle":19.14},{"time":4,"angle":20.23,"curve":"stepped"},{"time":4.0333,"angle":23.22},{"time":4.1,"angle":21.59,"curve":"stepped"},{"time":4.1333,"angle":19.14},{"time":4.2,"angle":20.23,"curve":"stepped"},{"time":4.2333,"angle":23.22},{"time":4.3,"angle":21.59,"curve":"stepped"},{"time":4.3333,"angle":19.14},{"time":4.4,"angle":19.68,"curve":"stepped"},{"time":4.4333,"angle":23.22},{"time":4.5,"angle":21.59,"curve":"stepped"},{"time":4.5333,"angle":19.14},{"time":4.6,"angle":20.23,"curve":"stepped"},{"time":4.6333,"angle":19.14},{"time":4.7,"angle":20.23,"curve":"stepped"},{"time":4.7333,"angle":23.22},{"time":4.8,"angle":21.59}],"translate":[{"time":1.6},{"time":1.6333,"x":19.96,"y":-1.59,"curve":"stepped"},{"time":2.2333,"x":19.96,"y":-1.59,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":25.9,"y":0.01,"curve":"stepped"},{"time":2.3667,"x":25.9,"y":0.01},{"time":2.4,"x":18.68,"y":1.63,"curve":"stepped"},{"time":3.6667,"x":18.68,"y":1.63,"curve":"stepped"},{"time":3.7,"x":18.68,"y":0.01}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone32":{"rotate":[{"angle":31.51},{"time":0.0333,"angle":47.5,"curve":"stepped"},{"time":0.0667,"angle":47.5},{"time":0.1,"angle":44.47},{"time":0.1333,"angle":33.44,"curve":"stepped"},{"time":0.8,"angle":35.53,"curve":"stepped"},{"time":0.8333,"angle":28.82},{"time":0.8667,"angle":56.14},{"time":1,"angle":41.09},{"time":1.1333,"angle":56.14},{"time":1.2667,"angle":41.09},{"time":1.4,"angle":56.14},{"time":1.4667,"angle":41.09,"curve":0.015,"c2":0.97,"c3":0.75},{"time":1.6,"angle":37.94},{"time":1.6333,"angle":-71.15,"curve":"stepped"},{"time":2.2333,"angle":-71.15,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":37.94},{"time":2.3667,"angle":36.06},{"time":2.4,"angle":26.87},{"time":2.8667,"angle":30.85,"curve":"stepped"},{"time":3.0333,"angle":38.4},{"time":3.6667,"angle":36.51,"curve":"stepped"},{"time":3.7,"angle":37.01},{"time":3.7333,"angle":35.95,"curve":"stepped"},{"time":3.7667,"angle":39.91},{"time":3.8333,"angle":38.28,"curve":"stepped"},{"time":3.8667,"angle":40.36},{"time":3.9333,"angle":39.95,"curve":"stepped"},{"time":3.9667,"angle":35.82},{"time":4,"angle":36.91,"curve":"stepped"},{"time":4.0333,"angle":39.91},{"time":4.1,"angle":38.28,"curve":"stepped"},{"time":4.1333,"angle":35.82},{"time":4.2,"angle":36.91,"curve":"stepped"},{"time":4.2333,"angle":39.91},{"time":4.3,"angle":38.28,"curve":"stepped"},{"time":4.3333,"angle":35.82},{"time":4.4,"angle":36.37,"curve":"stepped"},{"time":4.4333,"angle":39.91},{"time":4.5,"angle":38.28,"curve":"stepped"},{"time":4.5333,"angle":35.82},{"time":4.6,"angle":36.91,"curve":"stepped"},{"time":4.6333,"angle":35.82},{"time":4.7,"angle":36.91,"curve":"stepped"},{"time":4.7333,"angle":39.91},{"time":4.8,"angle":38.28}],"translate":[{"time":1.6},{"time":1.6333,"x":-12.63,"y":-44.9,"curve":"stepped"},{"time":2.2333,"x":-12.63,"y":-44.9,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":-20.53,"y":0.07,"curve":"stepped"},{"time":2.3667,"x":-20.53,"y":0.07},{"time":2.4,"x":1.99,"y":0.92,"curve":"stepped"},{"time":3.6667,"x":1.99,"y":0.92,"curve":"stepped"},{"time":3.7,"x":1.99,"y":0.07}],"scale":[{"time":1.6},{"time":1.6333,"x":1.263,"y":0.725,"curve":"stepped"},{"time":2.2333,"x":1.263,"y":0.725,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"curve":"stepped"},{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone35":{"rotate":[{"angle":15.74},{"time":0.0333,"angle":14.4,"curve":"stepped"},{"time":0.0667,"angle":14.4},{"time":0.1,"angle":11.38},{"time":0.1333,"angle":17.63,"curve":"stepped"},{"time":0.8,"angle":15.11,"curve":"stepped"},{"time":0.8333,"angle":18.04},{"time":0.8667,"angle":11.38},{"time":1,"angle":8},{"time":1.1333,"angle":11.38},{"time":1.2667,"angle":8},{"time":1.4,"angle":11.38},{"time":1.4667,"angle":8,"curve":0.015,"c2":0.97,"c3":0.75},{"time":1.6,"angle":20.06},{"time":1.6333,"angle":8.46,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":9.83,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":20.06},{"time":2.3667,"angle":18.18},{"time":2.4,"angle":13.43},{"time":2.8667,"angle":17.4,"curve":"stepped"},{"time":3.0333,"angle":24.95},{"time":3.6667,"angle":23.06,"curve":"stepped"},{"time":3.7,"angle":19.13},{"time":3.7333,"angle":18.07,"curve":"stepped"},{"time":3.7667,"angle":22.03},{"time":3.8333,"angle":20.39,"curve":"stepped"},{"time":3.8667,"angle":22.47},{"time":3.9333,"angle":22.06,"curve":"stepped"},{"time":3.9667,"angle":17.94},{"time":4,"angle":19.03,"curve":"stepped"},{"time":4.0333,"angle":22.03},{"time":4.1,"angle":20.39,"curve":"stepped"},{"time":4.1333,"angle":17.94},{"time":4.2,"angle":19.03,"curve":"stepped"},{"time":4.2333,"angle":22.03},{"time":4.3,"angle":20.39,"curve":"stepped"},{"time":4.3333,"angle":17.94},{"time":4.4,"angle":18.49,"curve":"stepped"},{"time":4.4333,"angle":22.03},{"time":4.5,"angle":20.39,"curve":"stepped"},{"time":4.5333,"angle":17.94},{"time":4.6,"angle":19.03,"curve":"stepped"},{"time":4.6333,"angle":17.94},{"time":4.7,"angle":19.03,"curve":"stepped"},{"time":4.7333,"angle":22.03},{"time":4.8,"angle":20.39}],"translate":[{"time":0.1},{"time":0.1333,"x":-10.23,"y":0.68,"curve":"stepped"},{"time":0.8,"curve":"stepped"},{"time":1.6},{"time":1.6333,"x":18.71,"y":-1.21,"curve":"stepped"},{"time":2.2333,"x":18.71,"y":-1.21,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":27,"y":0.05,"curve":"stepped"},{"time":2.3667,"x":27,"y":0.05},{"time":2.4,"x":18.68,"y":2.62,"curve":"stepped"},{"time":3.6667,"x":18.68,"y":2.62,"curve":"stepped"},{"time":3.7,"x":22.84,"y":0.05}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone38":{"rotate":[{"angle":13.71},{"time":0.0333,"angle":12.71,"curve":"stepped"},{"time":0.0667,"angle":10.93},{"time":0.1,"angle":9.69},{"time":0.1333,"angle":9.36,"curve":"stepped"},{"time":0.8,"angle":5.8,"curve":"stepped"},{"time":0.8333,"angle":6.44},{"time":0.8667,"angle":15.67},{"time":1,"angle":7.99},{"time":1.1333,"angle":15.67},{"time":1.2667,"angle":6.3},{"time":1.4,"angle":15.67},{"time":1.4667,"angle":6.3,"curve":0.015,"c2":0.97,"c3":0.75},{"time":1.6,"angle":11.14},{"time":1.6333,"angle":-1.56,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":4.98,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":11.14},{"time":2.3667,"angle":9.26},{"time":2.4,"angle":8.24},{"time":2.8667,"angle":10.8,"curve":"stepped"},{"time":3.0333,"angle":18.35},{"time":3.6667,"angle":16.46,"curve":"stepped"},{"time":3.7,"angle":10.21},{"time":3.7333,"angle":9.15,"curve":"stepped"},{"time":3.7667,"angle":13.11},{"time":3.8333,"angle":11.47,"curve":"stepped"},{"time":3.8667,"angle":13.55},{"time":3.9333,"angle":13.14,"curve":"stepped"},{"time":3.9667,"angle":9.02},{"time":4,"angle":10.11,"curve":"stepped"},{"time":4.0333,"angle":13.11},{"time":4.1,"angle":11.47,"curve":"stepped"},{"time":4.1333,"angle":9.02},{"time":4.2,"angle":10.11,"curve":"stepped"},{"time":4.2333,"angle":13.11},{"time":4.3,"angle":11.47,"curve":"stepped"},{"time":4.3333,"angle":9.02},{"time":4.4,"angle":9.57,"curve":"stepped"},{"time":4.4333,"angle":13.11},{"time":4.5,"angle":11.47,"curve":"stepped"},{"time":4.5333,"angle":9.02},{"time":4.6,"angle":10.11,"curve":"stepped"},{"time":4.6333,"angle":9.02},{"time":4.7,"angle":10.11,"curve":"stepped"},{"time":4.7333,"angle":13.11},{"time":4.8,"angle":11.47}],"translate":[{"time":0.1},{"time":0.1333,"x":-23.22,"y":1.05,"curve":"stepped"},{"time":0.8,"curve":"stepped"},{"time":1.6},{"time":1.6333,"x":19.03,"y":-8.21,"curve":"stepped"},{"time":2.2333,"x":19.03,"y":-8.21,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":19.03,"y":-0.05,"curve":"stepped"},{"time":2.3667,"x":19.03,"y":-0.05},{"time":2.4,"x":19.97,"y":-0.99,"curve":"stepped"},{"time":3.6667,"x":19.97,"y":-0.99,"curve":"stepped"},{"time":3.7,"x":19.5,"y":-0.05}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone43":{"rotate":[{"angle":2.81},{"time":0.0333,"angle":3.62,"curve":"stepped"},{"time":0.0667,"angle":1.84},{"time":0.1,"angle":-0.64},{"time":0.1333,"angle":22.25,"curve":"stepped"},{"time":0.8,"angle":0.7,"curve":"stepped"},{"time":0.8333,"angle":5.45},{"time":0.8667,"angle":18.73},{"time":1,"angle":-0.53},{"time":1.1333,"angle":18.73},{"time":1.2667,"angle":-0.53},{"time":1.4,"angle":18.73},{"time":1.4667,"angle":-0.53,"curve":0.015,"c2":0.97,"c3":0.75},{"time":1.6,"angle":8.07},{"time":1.6333,"angle":16.1,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":12.27,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":8.07},{"time":2.3667,"angle":6.19},{"time":2.4,"angle":-0.89},{"time":2.8667,"angle":5.49,"curve":"stepped"},{"time":3.0333,"angle":13.43},{"time":3.6667,"angle":11.54,"curve":"stepped"},{"time":3.7,"angle":7.14},{"time":3.7333,"angle":6.08,"curve":"stepped"},{"time":3.7667,"angle":10.04},{"time":3.8333,"angle":8.41,"curve":"stepped"},{"time":3.8667,"angle":10.48},{"time":3.9333,"angle":10.07,"curve":"stepped"},{"time":3.9667,"angle":5.95},{"time":4,"angle":7.04,"curve":"stepped"},{"time":4.0333,"angle":10.04},{"time":4.1,"angle":8.41,"curve":"stepped"},{"time":4.1333,"angle":5.95},{"time":4.2,"angle":7.04,"curve":"stepped"},{"time":4.2333,"angle":10.04},{"time":4.3,"angle":8.41,"curve":"stepped"},{"time":4.3333,"angle":5.95},{"time":4.4,"angle":6.5,"curve":"stepped"},{"time":4.4333,"angle":10.04},{"time":4.5,"angle":8.41,"curve":"stepped"},{"time":4.5333,"angle":5.95},{"time":4.6,"angle":7.04,"curve":"stepped"},{"time":4.6333,"angle":5.95},{"time":4.7,"angle":7.04,"curve":"stepped"},{"time":4.7333,"angle":10.04},{"time":4.8,"angle":8.41}],"translate":[{"time":1.6},{"time":1.6333,"x":30.2,"y":3.01,"curve":"stepped"},{"time":2.2333,"x":30.2,"y":3.01,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":42.52,"y":0.12,"curve":"stepped"},{"time":2.3667,"x":42.52,"y":0.12},{"time":2.4,"x":20.13,"y":-1.15},{"time":2.8667,"x":18.37,"y":-0.11,"curve":"stepped"},{"time":3.0333,"x":20.13,"y":-1.15,"curve":"stepped"},{"time":3.6667,"x":20.13,"y":-1.15,"curve":"stepped"},{"time":3.7,"x":31.33,"y":0.12}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone45":{"rotate":[{"angle":6.95},{"time":0.0333,"angle":7.08,"curve":"stepped"},{"time":0.0667,"angle":4.16},{"time":0.1,"angle":3.1},{"time":0.1333,"angle":17.35,"curve":"stepped"},{"time":0.8,"angle":-1.89,"curve":"stepped"},{"time":0.8333,"angle":1.83},{"time":0.8667,"angle":6.56},{"time":1,"angle":0.01},{"time":1.1333,"angle":6.56},{"time":1.2667,"angle":0.01},{"time":1.4,"angle":6.56},{"time":1.4667,"angle":0.01,"curve":0.015,"c2":0.97,"c3":0.75},{"time":1.6,"angle":7.18},{"time":1.6333,"angle":18.25,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":11.31,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":7.18},{"time":2.3667,"angle":5.31},{"time":2.4,"angle":-5},{"time":2.8667,"angle":4.3,"curve":"stepped"},{"time":3.0333,"angle":9.32},{"time":3.6667,"angle":7.43,"curve":"stepped"},{"time":3.7,"angle":6.25},{"time":3.7333,"angle":5.2,"curve":"stepped"},{"time":3.7667,"angle":9.15},{"time":3.8333,"angle":7.52,"curve":"stepped"},{"time":3.8667,"angle":9.6},{"time":3.9333,"angle":9.19,"curve":"stepped"},{"time":3.9667,"angle":5.07},{"time":4,"angle":6.16,"curve":"stepped"},{"time":4.0333,"angle":9.15},{"time":4.1,"angle":7.52,"curve":"stepped"},{"time":4.1333,"angle":5.07},{"time":4.2,"angle":6.16,"curve":"stepped"},{"time":4.2333,"angle":9.15},{"time":4.3,"angle":7.52,"curve":"stepped"},{"time":4.3333,"angle":5.07},{"time":4.4,"angle":5.61,"curve":"stepped"},{"time":4.4333,"angle":9.15},{"time":4.5,"angle":7.52,"curve":"stepped"},{"time":4.5333,"angle":5.07},{"time":4.6,"angle":6.16,"curve":"stepped"},{"time":4.6333,"angle":5.07},{"time":4.7,"angle":6.16,"curve":"stepped"},{"time":4.7333,"angle":9.15},{"time":4.8,"angle":7.52}],"translate":[{"time":1.6},{"time":1.6333,"x":47.36,"y":8.83,"curve":"stepped"},{"time":2.2333,"x":47.36,"y":8.83,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":30.48,"y":0.35,"curve":"stepped"},{"time":2.3667,"x":30.48,"y":0.35},{"time":2.4,"x":17.97,"y":-3},{"time":2.8667,"x":18.23,"y":-1.46,"curve":"stepped"},{"time":3.0333,"x":17.97,"y":-3,"curve":"stepped"},{"time":3.6667,"x":17.97,"y":-3,"curve":"stepped"},{"time":3.7,"x":24.23,"y":0.35}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone54":{"rotate":[{"angle":-0.51},{"time":0.0333,"angle":0.86,"curve":"stepped"},{"time":0.0667,"angle":-3.79},{"time":0.1,"angle":-8.72},{"time":0.1333,"angle":16.92,"curve":"stepped"},{"time":0.8,"angle":-5.63,"curve":"stepped"},{"time":0.8333,"angle":3.47},{"time":0.8667,"angle":-1.78,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":4.17,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":-7.16,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":5.88,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":-7.16,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4667,"angle":5.88,"curve":0.015,"c2":0.97,"c3":0.64,"c4":0.98},{"time":1.6},{"time":1.6333,"angle":1.87,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":1.53,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3},{"time":2.3667,"angle":-1.87},{"time":2.4,"angle":-5.89},{"time":2.8667,"angle":-3.03,"curve":"stepped"},{"time":3.0333,"angle":4.68},{"time":3.6667,"angle":1.84,"curve":"stepped"},{"time":3.7,"angle":-0.93},{"time":3.7333,"angle":-1.98,"curve":"stepped"},{"time":3.7667,"angle":1.97},{"time":3.8333,"angle":0.34,"curve":"stepped"},{"time":3.8667,"angle":2.42},{"time":3.9333,"angle":2.01,"curve":"stepped"},{"time":3.9667,"angle":-2.11},{"time":4,"angle":-1.02,"curve":"stepped"},{"time":4.0333,"angle":1.97},{"time":4.1,"angle":0.34,"curve":"stepped"},{"time":4.1333,"angle":-2.11},{"time":4.2,"angle":-1.02,"curve":"stepped"},{"time":4.2333,"angle":1.97},{"time":4.3,"angle":0.34,"curve":"stepped"},{"time":4.3333,"angle":-2.11},{"time":4.4,"angle":-1.57,"curve":"stepped"},{"time":4.4333,"angle":1.97},{"time":4.5,"angle":0.34,"curve":"stepped"},{"time":4.5333,"angle":-2.11},{"time":4.6,"angle":-1.02,"curve":"stepped"},{"time":4.6333,"angle":-2.11},{"time":4.7,"angle":-1.02,"curve":"stepped"},{"time":4.7333,"angle":1.97},{"time":4.8,"angle":0.34}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":-24.51,"y":2.25},{"time":0.8333,"curve":"stepped"},{"time":1.6},{"time":1.6333,"x":45.67,"y":-1.53,"curve":"stepped"},{"time":2.2333,"x":45.67,"y":-1.53,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":23.11,"y":0.26,"curve":"stepped"},{"time":2.3667,"x":23.11,"y":0.26},{"time":2.4,"x":26.77,"y":-4.25,"curve":"stepped"},{"time":2.8667,"x":26.77,"y":-4.25,"curve":"stepped"},{"time":3.0333,"x":5,"y":-0.87},{"time":3.6667,"x":7.78,"y":-0.58,"curve":"stepped"},{"time":3.7,"x":24.94,"y":0.26}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002}]},"bone53":{"rotate":[{"angle":-3.66},{"time":0.0333,"angle":-1.77,"curve":"stepped"},{"time":0.0667,"angle":-6.41},{"time":0.1,"angle":-11.35},{"time":0.1333,"angle":16.31,"curve":"stepped"},{"time":0.8,"angle":-4.55,"curve":"stepped"},{"time":0.8333,"angle":1.57},{"time":0.8667,"angle":-6.34,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":1.54,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":-9.79,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":3.25,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":-9.79,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4667,"angle":3.25,"curve":0.015,"c2":0.97,"c3":0.64,"c4":0.98},{"time":1.6,"angle":-0.9},{"time":1.6333,"angle":3.02,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":2.67,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":-0.9},{"time":2.3667,"angle":-2.78},{"time":2.4,"angle":-11.42},{"time":2.8667,"angle":-8.57,"curve":"stepped"},{"time":3.0333,"angle":1.16},{"time":3.6667,"angle":-1.45,"curve":"stepped"},{"time":3.7,"angle":-1.83},{"time":3.7333,"angle":-2.89,"curve":"stepped"},{"time":3.7667,"angle":1.07},{"time":3.8333,"angle":-0.56,"curve":"stepped"},{"time":3.8667,"angle":1.52},{"time":3.9333,"angle":1.11,"curve":"stepped"},{"time":3.9667,"angle":-3.02},{"time":4,"angle":-1.93,"curve":"stepped"},{"time":4.0333,"angle":1.07},{"time":4.1,"angle":-0.56,"curve":"stepped"},{"time":4.1333,"angle":-3.02},{"time":4.2,"angle":-1.93,"curve":"stepped"},{"time":4.2333,"angle":1.07},{"time":4.3,"angle":-0.56,"curve":"stepped"},{"time":4.3333,"angle":-3.02},{"time":4.4,"angle":-2.47,"curve":"stepped"},{"time":4.4333,"angle":1.07},{"time":4.5,"angle":-0.56,"curve":"stepped"},{"time":4.5333,"angle":-3.02},{"time":4.6,"angle":-1.93,"curve":"stepped"},{"time":4.6333,"angle":-3.02},{"time":4.7,"angle":-1.93,"curve":"stepped"},{"time":4.7333,"angle":1.07},{"time":4.8,"angle":-0.56}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":-25.55,"y":0.31},{"time":0.8333,"curve":"stepped"},{"time":1.6},{"time":1.6333,"x":30.73,"y":0.63,"curve":"stepped"},{"time":2.2333,"x":30.73,"y":0.63,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":8.24,"y":1.05,"curve":"stepped"},{"time":2.3667,"x":8.24,"y":1.05},{"time":2.4,"x":8.24,"y":3.65,"curve":"stepped"},{"time":2.8667,"x":8.24,"y":3.65,"curve":"stepped"},{"time":3.0333,"x":-0.63,"y":0.38},{"time":3.6667,"x":6.29,"y":0.69,"curve":"stepped"},{"time":3.7,"x":8.24,"y":1.05}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone36":{"rotate":[{"angle":8.88},{"time":0.0333,"angle":8.68,"curve":"stepped"},{"time":0.0667,"angle":6.9},{"time":0.1,"angle":5.66},{"time":0.1333,"angle":8.89,"curve":"stepped"},{"time":0.8,"angle":8.21,"curve":"stepped"},{"time":0.8333,"angle":8.9},{"time":0.8667,"angle":17.32},{"time":1,"angle":2.27},{"time":1.1333,"angle":17.32},{"time":1.2667,"angle":2.27},{"time":1.4,"angle":17.32},{"time":1.4667,"angle":2.27,"curve":0.015,"c2":0.97,"c3":0.75},{"time":1.6,"angle":8.95},{"time":1.6333,"angle":0.22,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":1.31,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":8.95},{"time":2.3667,"angle":7.08},{"time":2.4,"angle":1.46},{"time":2.8667,"angle":5.44,"curve":"stepped"},{"time":3.0333,"angle":12.99},{"time":3.6667,"angle":11.1,"curve":"stepped"},{"time":3.7,"angle":8.02},{"time":3.7333,"angle":6.97,"curve":"stepped"},{"time":3.7667,"angle":10.92},{"time":3.8333,"angle":9.29,"curve":"stepped"},{"time":3.8667,"angle":11.37},{"time":3.9333,"angle":10.96,"curve":"stepped"},{"time":3.9667,"angle":6.84},{"time":4,"angle":7.92,"curve":"stepped"},{"time":4.0333,"angle":10.92},{"time":4.1,"angle":9.29,"curve":"stepped"},{"time":4.1333,"angle":6.84},{"time":4.2,"angle":7.92,"curve":"stepped"},{"time":4.2333,"angle":10.92},{"time":4.3,"angle":9.29,"curve":"stepped"},{"time":4.3333,"angle":6.84},{"time":4.4,"angle":7.38,"curve":"stepped"},{"time":4.4333,"angle":10.92},{"time":4.5,"angle":9.29,"curve":"stepped"},{"time":4.5333,"angle":6.84},{"time":4.6,"angle":7.92,"curve":"stepped"},{"time":4.6333,"angle":6.84},{"time":4.7,"angle":7.92,"curve":"stepped"},{"time":4.7333,"angle":10.92},{"time":4.8,"angle":9.29}],"translate":[{"time":0.1},{"time":0.1333,"x":-10.91,"y":0.92,"curve":"stepped"},{"time":0.8,"curve":"stepped"},{"time":1.6},{"time":1.6333,"x":16.76,"y":-2.67,"curve":"stepped"},{"time":2.2333,"x":16.76,"y":-2.67,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":9.92,"y":-0.07,"curve":"stepped"},{"time":2.3667,"x":9.92,"y":-0.07},{"time":2.4,"x":16.99,"y":1.78,"curve":"stepped"},{"time":3.6667,"x":16.99,"y":1.78,"curve":"stepped"},{"time":3.7,"x":13.46,"y":-0.07}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone47":{"rotate":[{"angle":10.8},{"time":0.0333,"angle":10.29,"curve":"stepped"},{"time":0.0667,"angle":7.41},{"time":0.1,"angle":-1.83},{"time":0.1333,"angle":17.44,"curve":"stepped"},{"time":0.8,"angle":-4.05,"curve":"stepped"},{"time":0.8333,"angle":6.22},{"time":0.8667,"angle":6.9},{"time":1,"angle":6.64},{"time":1.1333,"angle":6.9},{"time":1.2667,"angle":6.64},{"time":1.4,"angle":6.9},{"time":1.4667,"angle":6.64,"curve":0.015,"c2":0.97,"c3":0.75},{"time":1.6,"angle":7.18},{"time":1.6333,"angle":14,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":14.12,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"angle":7.18},{"time":2.3667,"angle":5.31},{"time":2.4,"angle":-3.76},{"time":2.8667,"angle":3.12,"curve":"stepped"},{"time":3.0333,"angle":10.55},{"time":3.6667,"angle":10.93,"curve":"stepped"},{"time":3.7,"angle":6.25},{"time":3.7333,"angle":5.2,"curve":"stepped"},{"time":3.7667,"angle":9.15},{"time":3.8333,"angle":7.52,"curve":"stepped"},{"time":3.8667,"angle":9.6},{"time":3.9333,"angle":9.19,"curve":"stepped"},{"time":3.9667,"angle":5.07},{"time":4,"angle":6.16,"curve":"stepped"},{"time":4.0333,"angle":9.15},{"time":4.1,"angle":7.52,"curve":"stepped"},{"time":4.1333,"angle":5.07},{"time":4.2,"angle":6.16,"curve":"stepped"},{"time":4.2333,"angle":9.15},{"time":4.3,"angle":7.52,"curve":"stepped"},{"time":4.3333,"angle":5.07},{"time":4.4,"angle":5.61,"curve":"stepped"},{"time":4.4333,"angle":9.15},{"time":4.5,"angle":7.52,"curve":"stepped"},{"time":4.5333,"angle":5.07},{"time":4.6,"angle":6.16,"curve":"stepped"},{"time":4.6333,"angle":5.07},{"time":4.7,"angle":6.16,"curve":"stepped"},{"time":4.7333,"angle":9.15},{"time":4.8,"angle":7.52}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":-41.88,"y":0.28},{"time":0.8333,"curve":"stepped"},{"time":1.6},{"time":1.6333,"x":23.21,"y":1.97,"curve":"stepped"},{"time":2.2333,"x":23.21,"y":1.97,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.3,"x":15.22,"y":-0.9,"curve":"stepped"},{"time":2.3667,"x":15.22,"y":-0.9},{"time":2.4,"x":14.45,"y":-1.99,"curve":"stepped"},{"time":3.6667,"x":14.45,"y":-1.99,"curve":"stepped"},{"time":3.7,"x":14.84,"y":-0.9}],"scale":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":1.002,"y":1.002}]},"bone21":{"rotate":[{"time":0.1,"angle":-0.77}]},"BZ/z_bianzi3":{"rotate":[{"time":0.1333},{"time":0.1667,"angle":90},{"time":0.2,"angle":180},{"time":0.2333,"angle":-90},{"time":0.2667},{"time":0.3,"angle":90},{"time":0.3333,"angle":180},{"time":0.3667,"angle":-90},{"time":0.4},{"time":0.4333,"angle":90},{"time":0.4667,"angle":180},{"time":0.5,"angle":-90},{"time":0.5333},{"time":0.5667,"angle":90},{"time":0.6,"angle":180},{"time":0.6333,"angle":-90},{"time":0.6667},{"time":0.7,"angle":90},{"time":0.7333,"angle":180},{"time":0.7667,"curve":"stepped"},{"time":0.8,"angle":165.2},{"time":0.8333,"angle":131.55},{"time":0.8667,"angle":-138.2,"curve":"stepped"},{"time":1.5333,"angle":-138.2},{"time":1.6,"angle":-130.63},{"time":1.6333,"angle":-22.95,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":-36.56},{"time":2.3,"angle":-114.12},{"time":2.3667,"angle":-107.16},{"time":2.4,"angle":-72.52,"curve":0.328,"c2":0.76,"c3":0.64,"c4":0.98},{"time":2.8667,"angle":-37.01}],"translate":[{"time":0.1333,"x":56.53,"y":-21.09},{"time":0.7667,"x":-243.13,"y":-59.44,"curve":"stepped"},{"time":0.8,"x":-84.77,"y":-223.15},{"time":0.8333,"x":-594.76,"y":-379.6},{"time":0.8667,"x":-9538.02,"y":-7972.99},{"time":1.0667,"x":-8075.97,"y":-5327.23},{"time":1.5333,"x":-9355.26,"y":-7642.27},{"time":1.6,"x":-4642.34,"y":-3325.68},{"time":1.6333,"x":2379.6,"y":3963.41,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"x":3050.25,"y":3564.63},{"time":2.3,"x":3436.8,"y":2958.11},{"time":2.3667,"x":445.15,"y":2389.55},{"time":2.4,"x":2212.03,"y":9419.13},{"time":2.8667,"x":-34104.85,"y":53077.23}],"scale":[{"time":0.7667,"curve":"stepped"},{"time":0.8,"x":0.975,"y":0.975,"curve":"stepped"},{"time":0.8333,"x":0.975,"y":0.975},{"time":0.8667,"x":6.891,"y":6.818},{"time":1.5333,"x":6.825,"y":6.818},{"time":1.6,"x":8.273,"y":6.818},{"time":1.6333,"x":1.196,"y":2.082,"curve":"stepped"},{"time":2.3667,"x":1.196,"y":2.082},{"time":2.4,"x":17.982,"y":31.307}]},"BZ/z_bianzi_hou":{"rotate":[{"time":0.0333,"angle":145.39},{"time":0.0667,"angle":132.99},{"time":0.1,"angle":-129.29},{"time":0.1333,"angle":-25.12,"curve":"stepped"},{"time":1.6333,"angle":-27.14,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":-24.51},{"time":2.2667,"angle":36.71},{"time":2.3,"angle":49.24},{"time":2.3667,"angle":122.05},{"time":2.4,"angle":47.56},{"time":2.6333,"angle":55.66},{"time":2.8667,"angle":66.63}],"translate":[{"time":0.0333,"x":-165.78,"y":-84.36},{"time":0.0667,"x":-168.9,"y":-78.17},{"time":0.1,"x":-172.01,"y":-71.99},{"time":0.1333,"x":-175.13,"y":-65.81,"curve":"stepped"},{"time":1.6333,"x":-324.81,"y":231.02,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"x":-496.46,"y":327.58},{"time":2.3,"x":-1093.52,"y":-101.08},{"time":2.3667,"x":-1198.77,"y":-134.31},{"time":2.4,"x":-4828.99,"y":-4278.94},{"time":2.6333,"x":-14168.17,"y":-12282.91},{"time":2.8667,"x":-21250.97,"y":-18806}],"scale":[{"time":0.0333},{"time":0.0667,"x":0.993,"y":1.012},{"time":0.1,"x":1.108,"y":1.15},{"time":0.1333,"x":1.099,"y":1.159,"curve":"stepped"},{"time":1.6333,"x":0.653,"y":1.595,"curve":"stepped"},{"time":2.3667,"x":0.653,"y":1.595},{"time":2.4,"x":2.266,"y":5.533}],"shear":[{"time":2.4}]},"bone148":{"rotate":[{"time":0.0333,"angle":-7.68},{"time":0.0667,"angle":-13.13},{"time":0.1,"angle":-17.62},{"time":0.1333,"angle":-19.99,"curve":"stepped"},{"time":1.6333,"curve":"stepped"},{"time":2.2333,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-5.4},{"time":2.3667,"angle":-10.96},{"time":2.4,"angle":-15.25},{"time":2.8667,"angle":-14.62}],"translate":[{"time":0.0333},{"time":0.0667,"x":1.42,"y":0.24},{"time":0.1,"x":2.84,"y":0.48},{"time":0.1333,"x":4.25,"y":0.72,"curve":"stepped"},{"time":1.6333,"x":72.33,"y":12.22,"curve":"stepped"},{"time":2.2333,"x":72.33,"y":12.22,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":72.33,"y":-0.09,"curve":"stepped"},{"time":2.3667,"x":72.33,"y":-0.09},{"time":2.4,"x":14.09,"y":-0.09}],"scale":[{"time":2.4}],"shear":[{"time":2.4}]},"bone149":{"rotate":[{"time":0.0333,"angle":-7.72},{"time":0.0667,"angle":-13.11},{"time":0.1,"angle":-17.55},{"time":0.1333,"angle":-2.5,"curve":"stepped"},{"time":1.6333,"angle":2.7,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":1.83,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-10.7},{"time":2.3667,"angle":-16.26},{"time":2.4,"angle":-20.56},{"time":2.8667,"angle":-19.93}],"translate":[{"time":0.0333},{"time":0.0667,"x":1.45,"y":0.18},{"time":0.1,"x":2.89,"y":0.36},{"time":0.1333,"x":4.34,"y":0.54,"curve":"stepped"},{"time":1.6333,"x":73.79,"y":9.24,"curve":"stepped"},{"time":2.2333,"x":73.79,"y":9.24,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":73.79,"y":-0.27,"curve":"stepped"},{"time":2.3667,"x":73.79,"y":-0.27},{"time":2.4,"x":27.47,"y":-0.27}],"scale":[{"time":2.4}],"shear":[{"time":2.4}]},"bone150":{"rotate":[{"time":0.0333,"angle":-10.22},{"time":0.0667,"angle":-15.55},{"time":0.1,"angle":-19.93},{"time":0.1333,"angle":-2.68,"curve":"stepped"},{"time":1.6333,"angle":3.35,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":2.81,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-4.95},{"time":2.3667,"angle":-10.51},{"time":2.4,"angle":-14.8},{"time":2.8667,"angle":-14.18}],"translate":[{"time":0.0333},{"time":0.0667,"x":1.26,"y":-0.18},{"time":0.1,"x":2.52,"y":-0.36},{"time":0.1333,"x":3.78,"y":-0.53,"curve":"stepped"},{"time":1.6333,"x":64.2,"y":-9.06,"curve":"stepped"},{"time":2.2333,"x":64.2,"y":-9.06,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":64.2,"y":0.13,"curve":"stepped"},{"time":2.3667,"x":64.2,"y":0.13},{"time":2.4,"x":38.17,"y":0.13}],"scale":[{"time":2.4}],"shear":[{"time":2.4}]},"bone151":{"rotate":[{"time":0.0333,"angle":-7.56},{"time":0.0667,"angle":-12.89},{"time":0.1,"angle":-17.28},{"time":0.1333,"angle":-0.26,"curve":"stepped"},{"time":1.6333,"angle":5.73,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":3.19,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-5.44},{"time":2.3667,"angle":-11},{"time":2.4,"angle":-15.29},{"time":2.8667,"angle":-14.67}],"translate":[{"time":0.0333},{"time":0.0667,"x":1.67,"y":0.53},{"time":0.1,"x":3.33,"y":1.07},{"time":0.1333,"x":5,"y":1.6,"curve":"stepped"},{"time":1.6333,"x":84.96,"y":27.19,"curve":"stepped"},{"time":2.2333,"x":84.96,"y":27.19,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":84.96,"y":-1.72,"curve":"stepped"},{"time":2.3667,"x":84.96,"y":-1.72},{"time":2.4,"x":84.19,"y":-1.72}],"scale":[{"time":2.4}],"shear":[{"time":2.4}]},"bone152":{"rotate":[{"time":0.0333,"angle":-7.81},{"time":0.0667,"angle":-13.1},{"time":0.1,"angle":-17.45},{"time":0.1333,"angle":-7.27,"curve":"stepped"},{"time":1.6333,"angle":7.51,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":3.58,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-5.84},{"time":2.3667,"angle":-11.4},{"time":2.4,"angle":-15.7},{"time":2.8667,"angle":-15.07}],"translate":[{"time":0.0333},{"time":0.0667,"x":1.7,"y":0.28},{"time":0.1,"x":3.39,"y":0.57},{"time":0.1333,"x":5.09,"y":0.85,"curve":"stepped"},{"time":1.6333,"x":86.53,"y":14.49,"curve":"stepped"},{"time":2.2333,"x":86.53,"y":14.49,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":86.53,"y":0.55,"curve":"stepped"},{"time":2.4,"x":86.53,"y":0.55}],"scale":[{"time":2.4}],"shear":[{"time":2.4}]},"bone153":{"rotate":[{"time":0.0333,"angle":-1.41},{"time":0.0667,"angle":-6.98},{"time":0.1,"angle":-11.6},{"time":0.1333,"angle":-7.19,"curve":"stepped"},{"time":1.6333,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":-1.25,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-1.8},{"time":2.3667,"angle":-7.36},{"time":2.4,"angle":-11.66},{"time":2.8667,"angle":-7.6}],"translate":[{"time":0.0333},{"time":0.0667,"x":2.18,"y":-0.27},{"time":0.1,"x":4.37,"y":-0.54},{"time":0.1333,"x":6.55,"y":-0.81,"curve":"stepped"},{"time":1.6333,"x":111.34,"y":-13.81,"curve":"stepped"},{"time":2.2333,"x":111.34,"y":-13.81,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":111.34,"y":-0.31,"curve":"stepped"},{"time":2.4,"x":111.34,"y":-0.31}],"scale":[{"time":2.4},{"time":2.8667,"y":0.937}],"shear":[{"time":2.4}]},"bone154":{"rotate":[{"time":0.0333,"angle":-2.73},{"time":0.0667,"angle":-8.27},{"time":0.1,"angle":-12.86},{"time":0.1333,"angle":-8.42,"curve":"stepped"},{"time":1.6333,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":0.64,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-6.79},{"time":2.3667,"angle":-12.35},{"time":2.4,"angle":-9.58},{"time":2.8667,"angle":-10.39}],"translate":[{"time":0.0333},{"time":0.0667,"x":2.19,"y":-0.04},{"time":0.1,"x":4.39,"y":-0.09},{"time":0.1333,"x":6.58,"y":-0.13,"curve":"stepped"},{"time":1.6333,"x":111.87,"y":-2.22,"curve":"stepped"},{"time":2.2333,"x":111.87,"y":-2.22,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":111.87,"y":0.42,"curve":"stepped"},{"time":2.3667,"x":111.87,"y":0.42},{"time":2.4,"x":143.92,"y":-2.44}],"scale":[{"time":2.4},{"time":2.8667,"y":0.853}],"shear":[{"time":2.4}]},"bone155":{"rotate":[{"time":0.0333,"angle":6.24},{"time":0.0667,"angle":0.53},{"time":0.1,"angle":-4.24},{"time":0.1333,"angle":5.92,"curve":"stepped"},{"time":1.6333,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":4.97,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":4.54},{"time":2.3667,"angle":-1.02},{"time":2.4,"angle":1.74},{"time":2.8667,"angle":-3.98}],"translate":[{"time":0.0333},{"time":0.0667,"x":1.69,"y":-0.2},{"time":0.1,"x":3.37,"y":-0.4},{"time":0.1333,"x":5.06,"y":-0.61,"curve":"stepped"},{"time":1.6333,"x":86.05,"y":-10.32,"curve":"stepped"},{"time":2.2333,"x":86.05,"y":-10.32,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":86.05,"y":0.98,"curve":"stepped"},{"time":2.3667,"x":86.05,"y":0.98},{"time":2.4,"x":162.81,"y":-11.43}],"scale":[{"time":2.4},{"time":2.8667,"y":0.88}],"shear":[{"time":2.4}]},"bone156":{"rotate":[{"time":0.0333,"angle":-4.77},{"time":0.0667,"angle":-10.27},{"time":0.1,"angle":-14.83},{"time":0.1333,"angle":-0.12,"curve":"stepped"},{"time":1.6333,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":4.85,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-4.5},{"time":2.3667,"angle":-10.06},{"time":2.4,"angle":-7.3},{"time":2.8667,"angle":-5.97},{"time":2.9333,"angle":-6}],"translate":[{"time":0.0333},{"time":0.0667,"x":1.63,"y":0.3},{"time":0.1,"x":3.25,"y":0.61},{"time":0.1333,"x":4.88,"y":0.91,"curve":"stepped"},{"time":1.6333,"x":82.91,"y":15.49,"curve":"stepped"},{"time":2.2333,"x":82.91,"y":15.49,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":82.91,"y":0.75,"curve":"stepped"},{"time":2.3667,"x":82.91,"y":0.75},{"time":2.4,"x":159.54,"y":-7.91}],"scale":[{"time":2.4},{"time":2.8667,"y":0.937}],"shear":[{"time":2.4}]},"bone157":{"rotate":[{"time":0.0333,"angle":0.51},{"time":0.0667,"angle":-5.09},{"time":0.1,"angle":-9.75},{"time":0.1333,"angle":3.51,"curve":"stepped"},{"time":1.6333,"curve":"stepped"},{"time":2.2333,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":1.82},{"time":2.3667,"angle":-3.74},{"time":2.4,"angle":-0.98},{"time":2.8667,"angle":-2.33},{"time":2.9333,"angle":-1.92}],"translate":[{"time":0.0333},{"time":0.0667,"x":1.55,"y":-0.39},{"time":0.1,"x":3.09,"y":-0.78},{"time":0.1333,"x":4.64,"y":-1.16,"curve":"stepped"},{"time":1.6333,"x":78.89,"y":-19.79,"curve":"stepped"},{"time":2.2333,"x":78.89,"y":-19.79,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":78.89,"y":-0.4,"curve":"stepped"},{"time":2.3667,"x":78.89,"y":-0.4},{"time":2.4,"x":158.57,"y":-9.32}],"scale":[{"time":2.4},{"time":2.8667,"y":0.937}],"shear":[{"time":2.4}]},"bone158":{"rotate":[{"time":0.0333,"angle":2.97},{"time":0.0667,"angle":-2.68},{"time":0.1,"angle":-7.38},{"time":0.1333,"angle":1.49,"curve":"stepped"},{"time":1.6333,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":-3.41,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":4.5},{"time":2.3667,"angle":-1.06},{"time":2.4,"angle":0.89},{"time":2.8667,"angle":0.9},{"time":2.9333,"angle":-0.13}],"translate":[{"time":0.0333},{"time":0.0667,"x":2.12,"y":-0.49},{"time":0.1,"x":4.25,"y":-0.99},{"time":0.1333,"x":6.37,"y":-1.48,"curve":"stepped"},{"time":1.6333,"x":108.3,"y":-25.16,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"x":117.48,"y":-33.41,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":108.3,"y":0.67,"curve":"stepped"},{"time":2.3667,"x":108.3,"y":0.67},{"time":2.4,"x":146.37,"y":-0.71}],"scale":[{"time":2.4},{"time":2.8667,"y":0.937}],"shear":[{"time":2.4}]},"bone159":{"rotate":[{"time":0.0333,"angle":4.42},{"time":0.0667,"angle":-1.39},{"time":0.1,"angle":-6.24},{"time":0.1333,"angle":3.39,"curve":"stepped"},{"time":1.6333,"angle":-6.34,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":-15.58,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":4.95},{"time":2.3667,"angle":-0.61},{"time":2.4,"angle":2.16},{"time":2.8667,"angle":2.79},{"time":2.9333,"angle":3.19}],"translate":[{"time":0.0333},{"time":0.0667,"x":1.85,"y":-0.22},{"time":0.1,"x":3.69,"y":-0.44},{"time":0.1333,"x":5.54,"y":-0.66,"curve":"stepped"},{"time":1.6333,"x":94.1,"y":-11.27,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"x":92.67,"y":-31.03,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":94.1,"y":0.73,"curve":"stepped"},{"time":2.3667,"x":94.1,"y":0.73},{"time":2.4,"x":139.21,"y":1.18}],"scale":[{"time":2.4},{"time":2.8667,"y":0.937}],"shear":[{"time":2.4}]},"bone160":{"rotate":[{"time":0.0333,"angle":0.15},{"time":0.0667,"angle":-5.65},{"time":0.1,"angle":-10.51},{"time":0.1333,"angle":-0.14,"curve":"stepped"},{"time":1.6333,"angle":-10.62,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":-18.23,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-0.45},{"time":2.3667,"angle":-6.01},{"time":2.4,"angle":-3.24},{"time":2.8667,"angle":-5.99},{"time":2.9333,"angle":-2.21}],"translate":[{"time":0.0333},{"time":0.0667,"x":2.32,"y":-0.2},{"time":0.1,"x":4.64,"y":-0.39},{"time":0.1333,"x":6.96,"y":-0.59,"curve":"stepped"},{"time":1.6333,"x":118.36,"y":-10.04,"curve":"stepped"},{"time":2.2333,"x":118.36,"y":-10.04,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":118.36,"y":0.03,"curve":"stepped"},{"time":2.3667,"x":118.36,"y":0.03},{"time":2.4,"x":208.76,"y":-3.32}],"scale":[{"time":2.4},{"time":2.8667,"y":0.937}],"shear":[{"time":2.4}]},"bone161":{"rotate":[{"time":0.0333,"angle":3.28},{"time":0.0667,"angle":-2.71},{"time":0.1,"angle":-7.76},{"time":0.1333,"angle":2.48,"curve":"stepped"},{"time":1.6333,"angle":-17.11,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"angle":-22.77,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":1.8},{"time":2.3667,"angle":-3.75},{"time":2.4,"angle":-0.99},{"time":2.8667,"angle":-0.36},{"time":2.9333,"angle":0.05}],"translate":[{"time":0.0333},{"time":0.0667,"x":0.87,"y":-0.25},{"time":0.1,"x":1.73,"y":-0.49},{"time":0.1333,"x":2.6,"y":-0.74,"curve":"stepped"},{"time":1.6333,"x":44.16,"y":-12.53,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":2.2333,"x":87.23,"y":-37.8,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":44.16,"y":-0.66,"curve":"stepped"},{"time":2.4,"x":44.16,"y":-0.66}],"scale":[{"time":2.4},{"time":2.8667,"y":0.937}],"shear":[{"time":2.4}]},"bone126":{"rotate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"angle":-3.41},{"time":0.8333,"angle":-2.22},{"time":0.8667,"angle":-12.8},{"time":1,"angle":2.52},{"time":1.1333,"angle":-12.8},{"time":1.2667,"angle":2.52},{"time":1.4,"angle":-12.8},{"time":1.5333,"angle":2.52},{"time":1.6,"angle":-1.8,"curve":"stepped"},{"time":1.6333,"angle":-24.93,"curve":"stepped"},{"time":2.2333,"angle":-24.93,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-8.09,"curve":"stepped"},{"time":2.3667,"angle":-8.09},{"time":2.4,"angle":-7.56,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":-6.39}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":1.66,"y":-0.23},{"time":0.8333,"x":3.32,"y":-0.45},{"time":0.8667,"x":4.98,"y":-0.68},{"time":1,"x":6.64,"y":-0.91},{"time":1.1333,"x":4.98,"y":-0.68},{"time":1.2667,"x":6.64,"y":-0.91},{"time":1.4,"x":4.98,"y":-0.68},{"time":1.5333,"x":6.64,"y":-0.91},{"time":1.6,"x":4.98,"y":-0.31,"curve":"stepped"},{"time":1.6333,"x":43.17,"y":-5.9}]},"bone130":{"rotate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"angle":-21.25},{"time":0.8333,"angle":5.16},{"time":0.8667,"angle":-9.53},{"time":1,"angle":5.79},{"time":1.1333,"angle":-9.53},{"time":1.2667,"angle":5.79},{"time":1.4,"angle":-9.53},{"time":1.5333,"angle":5.79},{"time":1.6,"angle":1.82,"curve":"stepped"},{"time":1.6333,"angle":-11.81},{"time":2.2333,"angle":-4.74,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":1.63,"curve":"stepped"},{"time":2.3667,"angle":1.63},{"time":2.4,"angle":-0.75,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":0.35},{"time":3.2,"angle":1.14}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":1.71,"y":0.02},{"time":0.8333,"x":3.42,"y":0.04},{"time":0.8667,"x":5.13,"y":0.06},{"time":1,"x":6.84,"y":0.09},{"time":1.1333,"x":5.13,"y":0.06},{"time":1.2667,"x":6.84,"y":0.09},{"time":1.4,"x":5.13,"y":0.06},{"time":1.5333,"x":6.84,"y":0.09},{"time":1.6,"x":5.13,"y":-0.4,"curve":"stepped"},{"time":1.6333,"x":44.49,"y":0.56},{"time":2.2333,"x":45.67,"y":1.49,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":-4.08,"y":2.55,"curve":"stepped"},{"time":2.3667,"x":-4.08,"y":2.55},{"time":2.4,"x":-0.89,"y":-1.11,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"x":0.43,"y":0.02},{"time":3.2,"x":-4.08,"y":2.55}]},"bone134":{"rotate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"angle":4},{"time":0.8333,"angle":-4.94},{"time":0.8667,"angle":-2.26},{"time":1,"angle":-2.33},{"time":1.1333,"angle":-2.26},{"time":1.2667,"angle":-2.33},{"time":1.4,"angle":-2.26},{"time":1.5333,"angle":-2.33},{"time":1.6,"angle":1.8,"curve":"stepped"},{"time":1.6333,"angle":-3.74,"curve":"stepped"},{"time":2.2333,"angle":-3.74,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-12.04,"curve":"stepped"},{"time":2.3667,"angle":-12.04},{"time":2.4,"angle":0.6,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":1.9},{"time":3.2,"angle":5.17}],"translate":[{"time":1.5333},{"time":1.6,"y":-0.66,"curve":"stepped"},{"time":1.6333}]},"bone137":{"rotate":[{"time":0.1333,"angle":-20.66,"curve":"stepped"},{"time":0.8,"angle":-11.86},{"time":0.8333,"angle":-5.25},{"time":0.8667,"angle":6.54,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":-2.6,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":12.92,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":-6.55,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":8.73,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"angle":-1.1,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"angle":8.07,"curve":"stepped"},{"time":1.6333,"angle":4.36},{"time":2.2333,"angle":2.63,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":0.24,"curve":"stepped"},{"time":2.3667,"angle":0.24},{"time":2.4,"angle":2.04,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":6.31},{"time":3.2,"angle":3.2}],"translate":[{"time":0.1333,"x":31.22,"y":-9.39,"curve":"stepped"},{"time":0.8,"x":-15.81,"y":-4.56},{"time":0.8333,"x":-14.03,"y":-4.28},{"time":0.8667,"x":-11.06,"y":0.23,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":-9.53,"y":0.75,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":-13.06,"y":-1,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":-10.47,"y":-3.71,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":-13.02,"y":-0.35,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":-9.59,"y":0.26,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":-12.25,"y":0.44,"curve":"stepped"},{"time":1.6333,"x":28.68,"y":2.52,"curve":"stepped"},{"time":2.2333,"x":28.68,"y":2.52,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":21.73,"y":-7.84,"curve":"stepped"},{"time":2.4,"x":21.73,"y":-7.84,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"x":-3.25,"y":1.47},{"time":3.2,"x":21.73,"y":-7.84}],"scale":[{"time":0.1333,"x":1.048,"curve":"stepped"},{"time":0.8,"x":0.938},{"time":0.8333,"x":0.941},{"time":0.8667,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":0.943,"curve":"stepped"},{"time":1.6333}]},"bone122":{"rotate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"angle":-15.79},{"time":0.8333,"angle":7.25},{"time":0.8667,"angle":-17.22},{"time":1,"angle":3.8},{"time":1.1333,"angle":-17.22},{"time":1.2667,"angle":3.8},{"time":1.4,"angle":-17.22},{"time":1.5333,"angle":3.8},{"time":1.6,"angle":-10.7,"curve":"stepped"},{"time":1.6333,"angle":-33.9},{"time":2.2333,"angle":-37.05,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-30.99,"curve":"stepped"},{"time":2.3667,"angle":-30.99},{"time":2.4,"angle":-18.73,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":-17.57}],"translate":[{"time":1.5333},{"time":1.6,"y":-0.27,"curve":"stepped"},{"time":1.6333},{"time":2.2333,"x":29.81,"y":-12.47,"curve":"stepped"},{"time":2.3667,"x":29.81,"y":-12.47},{"time":2.4,"x":30.12,"y":-3.84}]},"bone141":{"rotate":[{"time":0.1333,"angle":-20.41,"curve":"stepped"},{"time":0.8,"angle":-1.78},{"time":0.8333,"angle":1.13},{"time":0.8667,"angle":10.08,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":4.67,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":13.07,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":-1.5,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":8.44,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"angle":4.29,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"angle":7.68,"curve":"stepped"},{"time":1.6333,"angle":-5.24},{"time":2.2333,"angle":-16.51,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":5.43,"curve":"stepped"},{"time":2.3667,"angle":5.43},{"time":2.4,"angle":5.18,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":4.53},{"time":3.2,"angle":-5.51}],"translate":[{"time":0.1333,"x":22.27,"y":-4.07,"curve":"stepped"},{"time":0.8,"x":-11,"y":-0.03},{"time":0.8333,"x":-8.44,"y":-0.01},{"time":0.8667,"x":-5.88,"y":0.01,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":-3.32,"y":0.04,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":-0.76,"y":-0.38,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":-3.32,"y":0.04,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":-5.88,"y":0.01,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":-3.32,"y":0.04,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":-5.88,"y":-0.42,"curve":"stepped"},{"time":1.6333,"x":53.05,"y":0.53},{"time":2.2333,"x":33.29,"y":-20.33,"curve":"stepped"},{"time":2.3667,"x":33.29,"y":-20.33},{"time":2.4,"x":39.92,"y":0.97,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"x":24.13,"y":-1.49},{"time":3.2,"x":33.29,"y":-20.33}],"scale":[{"time":0.1333,"x":1.048,"curve":"stepped"},{"time":0.8,"x":0.938},{"time":0.8333,"x":0.941},{"time":0.8667,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":0.943,"curve":"stepped"},{"time":1.6333}]},"bone143":{"rotate":[{"time":0.1333,"angle":-18.34,"curve":"stepped"},{"time":0.8,"angle":16.7},{"time":0.8333,"angle":10.78},{"time":0.8667,"angle":11.74,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":2.57,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":9.11,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":5.17,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":11.65,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"angle":0.44,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"angle":3.6,"curve":"stepped"},{"time":1.6333,"angle":-31.36},{"time":2.2333,"angle":-17.79,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":11.99,"curve":"stepped"},{"time":2.3667,"angle":11.99},{"time":2.4,"angle":-1.74,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":4.17},{"time":3.2,"angle":-5.4}],"translate":[{"time":0.1333,"x":17.46,"y":-2.06,"curve":"stepped"},{"time":0.8,"x":-3.58,"y":2.6},{"time":0.8333,"x":-1.99,"y":2.5},{"time":0.8667,"x":0.8,"y":0.37,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":7.09,"y":0.06,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":0.59,"y":0.94,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":1.18,"y":2.29,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":-0.41,"y":1.26,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":4.1,"y":-0.63,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":-0.41,"y":0.26,"curve":"stepped"},{"time":1.6333,"x":36.02},{"time":2.2333,"x":26.44,"y":-13.19,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":27.6,"y":-26.54,"curve":"stepped"},{"time":2.3667,"x":27.6,"y":-26.54},{"time":2.4,"x":26.61,"y":-6.44,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"x":23,"y":0.02},{"time":3.2,"x":27.6,"y":-26.54}],"scale":[{"time":0.1333,"x":1.048,"curve":"stepped"},{"time":0.8,"x":0.938},{"time":0.8333,"x":0.941},{"time":0.8667,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":0.943,"curve":"stepped"},{"time":1.6333}]},"bone144":{"rotate":[{"time":0.1333,"angle":-16.54,"curve":"stepped"},{"time":0.8,"angle":-0.2},{"time":0.8333,"angle":-0.13},{"time":0.8667,"angle":11.28,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":0.31,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":12.21,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":-3.48,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":11.87,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"angle":1.46,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"angle":8.58,"curve":"stepped"},{"time":1.6333,"angle":-15.09},{"time":2.2333,"angle":-1.95,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":1.6,"curve":"stepped"},{"time":2.3667,"angle":1.6},{"time":2.4,"angle":4.02,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":6.46},{"time":3.2,"angle":0.87}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":1.45,"y":0.12},{"time":0.8333,"x":2.9,"y":0.23},{"time":0.8667,"x":-6.01,"y":1.5,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":5.8,"y":0.47,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":-9.83,"y":1.51,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":5.8,"y":0.47,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":2.98,"y":2.16,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":5.8,"y":0.47,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":4.35,"y":1.87,"curve":"stepped"},{"time":1.6333,"x":37.68,"y":3.04},{"time":2.2333,"x":51.58,"y":-21.6,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":6.81,"y":-13.3,"curve":"stepped"},{"time":2.3667,"x":6.81,"y":-13.3},{"time":2.4,"x":13.4,"y":0.51,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"x":10.17,"y":2.62},{"time":3.2,"x":6.81,"y":-13.3}],"scale":[{"time":0.1333,"x":1.048,"curve":"stepped"},{"time":0.8,"x":0.938},{"time":0.8333,"x":0.941},{"time":0.8667,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":0.943,"curve":"stepped"},{"time":1.6333}]},"bone145":{"rotate":[{"time":0.1333,"angle":-14.53,"curve":"stepped"},{"time":0.8,"angle":-0.31},{"time":0.8333,"angle":6.88},{"time":0.8667,"angle":13.41,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":2.7,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":9.98,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":2.7,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":13.41,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"angle":-0.4,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"angle":3.63,"curve":"stepped"},{"time":1.6333,"angle":-18.02},{"time":2.2333,"angle":-17.35,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":3.49,"curve":"stepped"},{"time":2.3667,"angle":3.49},{"time":2.4,"angle":5.53,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":1.83},{"time":3.2,"angle":5.86}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":1.2,"y":-0.02},{"time":0.8333,"x":2.39,"y":-0.05},{"time":0.8667,"x":3.59,"y":-0.07,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":4.78,"y":-0.1,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":-10.68,"y":-1.73,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":4.78,"y":-0.1,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":3.59,"y":-0.07,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":4.78,"y":-0.1,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":3.59,"y":-2.58,"curve":"stepped"},{"time":1.6333,"x":31.09,"y":-0.64},{"time":2.2333,"x":59.94,"y":-9.5,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":1.83,"y":-9.85,"curve":"stepped"},{"time":2.3667,"x":1.83,"y":-9.85},{"time":2.4,"x":1.13,"y":-6.24,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"x":0.95,"y":-5.35},{"time":3.2,"x":1.83,"y":-9.85}],"scale":[{"time":0.1333,"x":1.048,"curve":"stepped"},{"time":0.8,"x":0.938},{"time":0.8333,"x":0.941},{"time":0.8667,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":0.943,"curve":"stepped"},{"time":1.6333}]},"bone121":{"rotate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"angle":-1.56},{"time":0.8333,"angle":-76.55},{"time":0.8667,"angle":-2.91},{"time":1,"angle":7.77},{"time":1.1333,"angle":-2.91},{"time":1.2667,"angle":0.56},{"time":1.4,"angle":-2.91},{"time":1.5333,"angle":0.56},{"time":1.6,"angle":-5.4,"curve":"stepped"},{"time":1.6333,"angle":-6.42},{"time":2.2333,"angle":-11.86,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-13.64,"curve":"stepped"},{"time":2.3667,"angle":-13.64},{"time":2.4,"angle":-3.14,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":-1.98}],"translate":[{"time":0.8},{"time":0.8333,"x":-13.94,"y":-31.8},{"time":0.8667,"x":-0.92,"y":-1.54},{"time":1,"x":-0.88,"y":-1.47},{"time":1.1333,"x":-0.92,"y":-1.54},{"time":1.2667,"x":-0.88,"y":-1.47},{"time":1.4,"x":-0.92,"y":-1.54},{"time":1.5333,"x":-0.88,"y":-1.47},{"time":1.6,"x":-0.92,"y":-0.09,"curve":"stepped"},{"time":1.6333}]},"bone125":{"rotate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"angle":-8.01},{"time":0.8333,"angle":5.41},{"time":0.8667,"angle":-11.29},{"time":1,"angle":4.03},{"time":1.1333,"angle":-11.29},{"time":1.2667,"angle":4.03},{"time":1.4,"angle":-11.29},{"time":1.5333,"angle":4.03},{"time":1.6,"angle":-5.84,"curve":"stepped"},{"time":1.6333,"angle":-22.84,"curve":"stepped"},{"time":2.2333,"angle":-22.84,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-10.77,"curve":"stepped"},{"time":2.3667,"angle":-10.77},{"time":2.4,"angle":-8.14,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":-6.98}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":1.08,"y":0.1},{"time":0.8333,"x":2.16,"y":0.2},{"time":0.8667,"x":3.24,"y":0.3},{"time":1,"x":4.33,"y":0.4},{"time":1.1333,"x":3.24,"y":0.3},{"time":1.2667,"x":4.33,"y":0.4},{"time":1.4,"x":3.24,"y":0.3},{"time":1.5333,"x":4.33,"y":0.4},{"time":1.6,"x":3.24,"y":0.55,"curve":"stepped"},{"time":1.6333,"x":28.12,"y":2.63}]},"bone128":{"rotate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"angle":0.14},{"time":0.8333,"angle":14.59},{"time":0.8667,"angle":-0.27},{"time":1,"angle":15.05},{"time":1.1333,"angle":-0.27},{"time":1.2667,"angle":15.05},{"time":1.4,"angle":-0.27},{"time":1.5333,"angle":15.05},{"time":1.6,"angle":4.54,"curve":"stepped"},{"time":1.6333,"angle":-6.47},{"time":2.2333,"angle":-6.42,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":4.28,"curve":"stepped"},{"time":2.3667,"angle":4.28},{"time":2.4,"angle":4.65,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":3.45},{"time":3.2,"angle":5.81}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":1.6},{"time":0.8333,"x":3.21},{"time":0.8667,"x":4.81},{"time":1,"x":6.41},{"time":1.1333,"x":4.81},{"time":1.2667,"x":6.41},{"time":1.4,"x":4.81},{"time":1.5333,"x":6.41},{"time":1.6,"x":4.81,"y":0.98,"curve":"stepped"},{"time":1.6333,"x":41.69},{"time":2.2333,"x":46.67,"y":-0.7,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":1.71,"y":1.92}]},"bone132":{"rotate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"angle":-7.01},{"time":0.8333,"angle":3.44},{"time":0.8667,"angle":3.3},{"time":1,"angle":4.69},{"time":1.1333,"angle":3.3},{"time":1.2667,"angle":4.69},{"time":1.4,"angle":3.3},{"time":1.5333,"angle":4.69},{"time":1.6,"angle":4.95,"curve":"stepped"},{"time":1.6333,"angle":0.01},{"time":2.2333,"angle":-0.33,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":10.31,"curve":"stepped"},{"time":2.3667,"angle":10.31},{"time":2.4,"angle":1.51,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":4.83},{"time":3.2,"angle":5.33}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":0.91},{"time":0.8333,"x":1.83},{"time":0.8667,"x":2.74},{"time":1,"x":3.65},{"time":1.1333,"x":2.74},{"time":1.2667,"x":3.65},{"time":1.4,"x":2.74},{"time":1.5333,"x":3.65},{"time":1.6,"x":2.74,"y":0.73,"curve":"stepped"},{"time":1.6333,"x":23.73},{"time":2.2333,"x":26.51,"y":-0.77,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":-1.71,"y":-3.32,"curve":"stepped"},{"time":2.3667,"x":-1.71,"y":-3.32},{"time":2.4,"x":-0.22,"y":0.69}]},"bone133":{"rotate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"angle":-17.33},{"time":0.8333,"angle":0.08},{"time":0.8667,"angle":-0.04},{"time":1,"angle":-0.16},{"time":1.1333,"angle":-0.04},{"time":1.2667,"angle":-0.16},{"time":1.4,"angle":-0.04},{"time":1.5333,"angle":-0.16},{"time":1.6,"angle":-0.45,"curve":"stepped"},{"time":1.6333,"angle":-2.89},{"time":2.2333,"angle":-3.52,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-9.99,"curve":"stepped"},{"time":2.3667,"angle":-9.99},{"time":2.4,"angle":-5.21,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":-3.46},{"time":3.2,"angle":-7.28}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":1.81},{"time":0.8333,"x":3.62},{"time":0.8667,"x":5.43},{"time":1,"x":7.24},{"time":1.1333,"x":5.43},{"time":1.2667,"x":7.24},{"time":1.4,"x":5.43},{"time":1.5333,"x":7.24},{"time":1.6,"x":5.43,"y":0.03,"curve":"stepped"},{"time":1.6333,"x":47.09,"curve":"stepped"},{"time":2.2333,"x":47.09,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":-0.28,"y":-1.63,"curve":"stepped"},{"time":2.4,"x":-0.28,"y":-1.63,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"x":0.68,"y":-0.71},{"time":3.2,"x":-0.28,"y":-1.63}]},"bone136":{"rotate":[{"time":0.1333,"angle":-9.36,"curve":"stepped"},{"time":0.8,"angle":-9.19},{"time":0.8333,"angle":7.45},{"time":0.8667,"angle":9.62,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":-2.74,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":6.1,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":4.76,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":9.15,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"angle":-2.28,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"angle":3.6,"curve":"stepped"},{"time":1.6333,"angle":0.29},{"time":2.2333,"angle":-1.87,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":19.64,"curve":"stepped"},{"time":2.3667,"angle":19.64},{"time":2.4,"angle":2.55,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":5.05},{"time":3.2,"angle":7.05}],"translate":[{"time":0.1333,"x":31.13,"y":-2.11,"curve":"stepped"},{"time":0.8,"x":-23.32,"y":1.12},{"time":0.8333,"x":-20.15,"y":0.93},{"time":0.8667,"x":-16.98,"y":0.73,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":-13.81,"y":0.53,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":-16.98,"y":0.73,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":-13.81,"y":0.53,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":-17.42,"y":-0.34,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":-13.81,"y":0.53,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":-16.98,"y":0.21,"curve":"stepped"},{"time":1.6333,"x":55.96,"y":-3.82,"curve":"stepped"},{"time":2.2333,"x":55.96,"y":-3.82,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":6.43,"y":-4.33,"curve":"stepped"},{"time":2.3667,"x":6.43,"y":-4.33},{"time":2.4,"x":7.23,"y":-1.4,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"x":-1.38,"y":0.22},{"time":3.2,"x":6.43,"y":-4.33}],"scale":[{"time":0.1333,"x":1.048,"curve":"stepped"},{"time":0.8,"x":0.938},{"time":0.8333,"x":0.941},{"time":0.8667,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":0.943,"curve":"stepped"},{"time":1.6333}]},"bone138":{"rotate":[{"time":0.1333,"angle":-17.02,"curve":"stepped"},{"time":0.8,"angle":8.2},{"time":0.8333,"angle":14.46},{"time":0.8667,"angle":18.29,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":4.17,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":19.96,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":11.16,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":18.99,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"angle":4.17,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"angle":9.39,"curve":"stepped"},{"time":1.6333,"angle":0.05},{"time":2.2333,"angle":-3.64,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":16.07,"curve":"stepped"},{"time":2.3667,"angle":16.07},{"time":2.4,"angle":4.29,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":8.54},{"time":3.2,"angle":9.25}],"translate":[{"time":0.1333,"x":25.39,"y":-4.24,"curve":"stepped"},{"time":0.8,"x":-7.06,"y":0.94},{"time":0.8333,"x":-4.51,"y":0.84},{"time":0.8667,"x":-1.96,"y":0.75,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":0.59,"y":0.65,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":-1.96,"y":0.75,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":0.59,"y":0.65,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":-1.96,"y":0.75,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":0.59,"y":0.65,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":-1.96,"y":0.17,"curve":"stepped"},{"time":1.6333,"x":56.71,"y":-1.48,"curve":"stepped"},{"time":2.2333,"x":56.71,"y":-1.48,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":2.63,"y":-3.59,"curve":"stepped"},{"time":2.3667,"x":2.63,"y":-3.59},{"time":2.4,"x":1.22,"y":-2.17,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"x":-0.77,"y":1.14},{"time":3.2,"x":2.63,"y":-3.59}],"scale":[{"time":0.1333,"x":1.048,"curve":"stepped"},{"time":0.8,"x":0.938},{"time":0.8333,"x":0.941},{"time":0.8667,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":0.943,"curve":"stepped"},{"time":1.6333}]},"bone123":{"rotate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"angle":-12.96},{"time":0.8333,"angle":11.74},{"time":0.8667,"angle":-5.09},{"time":1,"angle":8.7},{"time":1.1333,"angle":-5.09},{"time":1.2667,"angle":8.7},{"time":1.4,"angle":-5.09},{"time":1.5333,"angle":8.7},{"time":1.6,"angle":-4.95,"curve":"stepped"},{"time":1.6333,"angle":-19.56},{"time":2.2333,"angle":-22.68,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-11.98,"curve":"stepped"},{"time":2.3667,"angle":-11.98},{"time":2.4,"angle":-6.07,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":-4.91}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":0.83,"y":-0.04},{"time":0.8333,"x":1.66,"y":-0.07},{"time":0.8667,"x":2.5,"y":-0.11},{"time":1,"x":3.33,"y":-0.14},{"time":1.1333,"x":2.5,"y":-0.11},{"time":1.2667,"x":3.33,"y":-0.14},{"time":1.4,"x":2.5,"y":-0.11},{"time":1.5333,"x":3.33,"y":-0.14},{"time":1.6,"x":2.5,"y":0.13,"curve":"stepped"},{"time":1.6333,"x":21.63,"y":-0.91}]},"bone124":{"rotate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"angle":-6.73},{"time":0.8333,"angle":-2.81},{"time":0.8667,"angle":-18.58},{"time":1,"angle":-4.79},{"time":1.1333,"angle":-18.58},{"time":1.2667,"angle":-4.79},{"time":1.4,"angle":-18.58},{"time":1.5333,"angle":-4.79},{"time":1.6,"angle":-5.44,"curve":"stepped"},{"time":1.6333,"angle":-8.67},{"time":2.2333,"angle":-13.23,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-15.69,"curve":"stepped"},{"time":2.3667,"angle":-15.69},{"time":2.4,"angle":-11.86,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":-10.7}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":1.08,"y":-0.23},{"time":0.8333,"x":2.17,"y":-0.46},{"time":0.8667,"x":3.25,"y":-0.69},{"time":1,"x":4.34,"y":-0.92},{"time":1.1333,"x":3.25,"y":-0.69},{"time":1.2667,"x":4.34,"y":-0.92},{"time":1.4,"x":3.25,"y":-0.69},{"time":1.5333,"x":4.34,"y":-0.92},{"time":1.6,"x":3.25,"y":-1.72,"curve":"stepped"},{"time":1.6333,"x":28.21,"y":-5.98}]},"bone127":{"rotate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"angle":-10.47},{"time":0.8333,"angle":2.71},{"time":0.8667,"angle":-10.55},{"time":1,"angle":4.77},{"time":1.1333,"angle":-10.55},{"time":1.2667,"angle":4.77},{"time":1.4,"angle":-10.55},{"time":1.5333,"angle":4.77},{"time":1.6,"angle":-6.79,"curve":"stepped"},{"time":1.6333,"angle":-20.34,"curve":"stepped"},{"time":2.2333,"angle":-20.34,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-7.63,"curve":"stepped"},{"time":2.3667,"angle":-7.63},{"time":2.4,"angle":-9.25,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":-8.09}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":2.19,"y":-0.14},{"time":0.8333,"x":4.37,"y":-0.28},{"time":0.8667,"x":6.56,"y":-0.42},{"time":1,"x":8.74,"y":-0.56},{"time":1.1333,"x":6.56,"y":-0.42},{"time":1.2667,"x":8.74,"y":-0.56},{"time":1.4,"x":6.56,"y":-0.42},{"time":1.5333,"x":8.74,"y":-0.56},{"time":1.6,"x":6.56,"y":0.42,"curve":"stepped"},{"time":1.6333,"x":56.82,"y":-3.64,"curve":"stepped"},{"time":2.2333,"x":56.82,"y":-3.64,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":8.59,"y":1.45}]},"bone129":{"rotate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"angle":-8.89},{"time":0.8333,"angle":0.41},{"time":0.8667,"angle":-14.32},{"time":1,"angle":0.99},{"time":1.1333,"angle":-14.32},{"time":1.2667,"angle":0.99},{"time":1.4,"angle":-14.32},{"time":1.5333,"angle":0.99},{"time":1.6,"angle":-4.5,"curve":"stepped"},{"time":1.6333,"angle":-17.78},{"time":2.2333,"angle":-15.56,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-16.39,"curve":"stepped"},{"time":2.3667,"angle":-16.39},{"time":2.4,"angle":-7.34,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":-7.1},{"time":3.2,"angle":-13.92}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":1.85},{"time":0.8333,"x":3.7},{"time":0.8667,"x":5.55},{"time":1,"x":7.4},{"time":1.1333,"x":5.55},{"time":1.2667,"x":7.4},{"time":1.4,"x":5.55},{"time":1.5333,"x":7.4},{"time":1.6,"x":5.55,"y":0.75,"curve":"stepped"},{"time":1.6333,"x":48.12},{"time":2.2333,"x":51.39,"y":0.09,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":16.81,"y":0.33,"curve":"stepped"},{"time":2.4,"x":16.81,"y":0.33,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"x":1.59,"y":1.63},{"time":3.2,"x":16.81,"y":0.33}]},"bone131":{"rotate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"angle":-5.9},{"time":0.8333,"angle":1.72},{"time":0.8667,"angle":-6.13},{"time":1,"angle":13.44},{"time":1.1333,"angle":-6.13},{"time":1.2667,"angle":13.44},{"time":1.4,"angle":-6.13},{"time":1.5333,"angle":13.44},{"time":1.6,"angle":4.5,"curve":"stepped"},{"time":1.6333,"angle":4.45},{"time":2.2333,"angle":5.02,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-3.39,"curve":"stepped"},{"time":2.3667,"angle":-3.39},{"time":2.4,"angle":-0.61,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":2.95},{"time":3.2,"angle":7.88}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":1.76},{"time":0.8333,"x":3.52},{"time":0.8667,"x":5.29},{"time":1,"x":7.05},{"time":1.1333,"x":5.29},{"time":1.2667,"x":7.05},{"time":1.4,"x":5.29},{"time":1.5333,"x":7.05},{"time":1.6,"x":5.29,"y":0.67,"curve":"stepped"},{"time":1.6333,"x":45.81},{"time":2.2333,"x":47.68,"y":1.2,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":12.91,"y":3.08,"curve":"stepped"},{"time":2.3667,"x":12.91,"y":3.08},{"time":2.4,"x":10.27,"y":0.82,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"x":3.1,"y":3.22},{"time":3.2,"x":12.91,"y":3.08}]},"bone135":{"rotate":[{"time":0.1333,"angle":-18.9,"curve":"stepped"},{"time":0.8,"angle":-6.42},{"time":0.8333,"angle":-10.02},{"time":0.8667,"angle":4.25,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":-5.86,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":-0.55,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":-11.39,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":6.76,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"angle":-2.19,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"angle":2.25,"curve":"stepped"},{"time":1.6333,"angle":-1.26},{"time":2.2333,"angle":-0.93,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":8.63,"curve":"stepped"},{"time":2.3667,"angle":8.63},{"time":2.4,"angle":-0.97,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":2.12},{"time":3.2,"angle":0.19}],"translate":[{"time":0.1333,"x":28.08,"y":-5.71,"curve":"stepped"},{"time":0.8,"x":-19.65,"y":-4.9},{"time":0.8333,"x":-17.61,"y":-4.8},{"time":0.8667,"x":-15.91,"y":-1.3,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":-11.53,"y":0.19,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":-15.61,"y":-0.25,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":-13.54,"y":-4.59,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":-13.64,"y":-1.05,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":-12.07,"y":-0.83,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":-14.85,"y":0.37,"curve":"stepped"},{"time":1.6333,"x":31.3,"y":-2.34,"curve":"stepped"},{"time":2.3667,"x":31.3,"y":-2.34},{"time":2.4,"x":33.42,"y":1.94,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"x":1.42,"y":0.15},{"time":3.2,"x":33.42,"y":1.94}],"scale":[{"time":0.1333,"x":1.048,"curve":"stepped"},{"time":0.8,"x":0.938},{"time":0.8333,"x":0.941},{"time":0.8667,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":0.943,"curve":"stepped"},{"time":1.6333}]},"bone139":{"rotate":[{"time":0.1333,"angle":-19.24,"curve":"stepped"},{"time":0.8,"angle":-7.08},{"time":0.8333,"angle":-14.16},{"time":0.8667,"angle":7.24},{"time":1,"angle":-2.07},{"time":1.1333,"angle":7.21},{"time":1.2667,"angle":-10.35},{"time":1.4,"angle":10.11},{"time":1.5333,"angle":-1.75},{"time":1.6,"angle":4.05,"curve":"stepped"},{"time":1.6333,"angle":1.78},{"time":2.2333,"angle":-5.36,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":2.92,"curve":"stepped"},{"time":2.3667,"angle":2.92},{"time":2.4,"angle":-0.54,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":4.3},{"time":3.2,"angle":5}],"translate":[{"time":0.1333,"x":19.63,"y":-3.55,"curve":"stepped"},{"time":0.8,"x":-7.91,"y":-6.5},{"time":0.8333,"x":-5.54,"y":-6.28},{"time":0.8667,"x":-6.1,"y":0.78},{"time":1,"x":-1.71,"y":0.48},{"time":1.1333,"x":-5.15,"y":0.73},{"time":1.2667,"x":-0.81,"y":-5.84},{"time":1.4,"x":-3.93,"y":-0.89},{"time":1.5333,"x":-0.96,"y":-1.1},{"time":1.6,"x":-3.18,"y":0.2,"curve":"stepped"},{"time":1.6333,"x":51.24,"y":-1.03,"curve":"stepped"},{"time":2.2333,"x":51.24,"y":-1.03,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":5.03,"y":-3.73,"curve":"stepped"},{"time":2.3667,"x":5.03,"y":-3.73},{"time":2.4,"x":9.2,"y":1.59,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"x":1.09,"y":0.83},{"time":3.2,"x":5.03,"y":-3.73}],"scale":[{"time":0.1333,"x":1.048,"curve":"stepped"},{"time":0.8,"x":0.938},{"time":0.8333,"x":0.941},{"time":0.8667,"x":0.943},{"time":1,"x":0.946},{"time":1.1333,"x":0.943},{"time":1.2667,"x":0.946},{"time":1.4,"x":0.943},{"time":1.5333,"x":0.946},{"time":1.6,"x":0.943,"curve":"stepped"},{"time":1.6333}]},"bone140":{"rotate":[{"time":0.1333,"angle":-5.45,"curve":"stepped"},{"time":0.8,"angle":3.86},{"time":0.8333,"angle":5.73},{"time":0.8667,"angle":12.96,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":0.66,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":12.77,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":2.94,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":12.96,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"angle":0.19,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"angle":2.7,"curve":"stepped"},{"time":1.6333,"angle":-2.59},{"time":2.2333,"angle":-17.64,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":20.76,"curve":"stepped"},{"time":2.3667,"angle":20.76},{"time":2.4,"angle":-1.49,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":3.24},{"time":3.2,"angle":6.36}],"translate":[{"time":0.1333,"x":17.45,"y":-0.66,"curve":"stepped"},{"time":0.8,"x":-19.99,"y":4.61},{"time":0.8333,"x":-16.85,"y":4.41},{"time":0.8667,"x":-11.56,"y":-0.05,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":-8.25,"y":-0.32,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":-7.11,"y":-0.66,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":-10.57,"y":4.02,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":-12.15,"y":-0.68,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":-6.76,"y":1.08,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":-13.71,"y":0.25,"curve":"stepped"},{"time":1.6333,"x":58.54,"y":-0.34,"curve":"stepped"},{"time":2.2333,"x":58.54,"y":-0.34,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":36.92,"y":-13.46,"curve":"stepped"},{"time":2.3667,"x":36.92,"y":-13.46},{"time":2.4,"x":37.47,"y":0.2,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"x":15.32,"y":1.09},{"time":3.2,"x":36.92,"y":-13.46}],"scale":[{"time":0.1333,"x":1.048,"curve":"stepped"},{"time":0.8,"x":0.938},{"time":0.8333,"x":0.941},{"time":0.8667,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":0.943,"curve":"stepped"},{"time":1.6333}]},"bone142":{"rotate":[{"time":0.1333,"angle":-21.98,"curve":"stepped"},{"time":0.8,"angle":-9.61},{"time":0.8333,"angle":4.41},{"time":0.8667,"angle":11.75,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"angle":-0.5,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"angle":12.48,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"angle":1.85,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"angle":12.2,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"angle":1.25,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"angle":4.05,"curve":"stepped"},{"time":1.6333,"angle":-1.08},{"time":2.2333,"angle":-6.31,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":17.93,"curve":"stepped"},{"time":2.3667,"angle":17.93},{"time":2.4,"angle":2.16,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"angle":3.53},{"time":3.2,"angle":27.51}],"translate":[{"time":0.1333,"x":11.43,"y":-5.39,"curve":"stepped"},{"time":0.8,"x":9.35,"y":7.3},{"time":0.8333,"x":10.71,"y":7.01},{"time":0.8667,"x":-2.6,"y":0.18,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":2.87,"y":1.27,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":-3.05,"y":0.93,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":13.45,"y":6.42,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":12.39,"y":4.43,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":3.01,"y":0.39,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":12.08,"y":0.88,"curve":"stepped"},{"time":1.6333,"x":43.55,"curve":"stepped"},{"time":2.3667,"x":43.55},{"time":2.4,"x":25.13,"y":-2.83,"curve":0.131,"c2":0.3,"c3":0.75},{"time":2.8667,"x":36.47,"y":3.11},{"time":3.2,"x":43.55}],"scale":[{"time":0.1333,"x":1.048,"curve":"stepped"},{"time":0.8,"x":0.938},{"time":0.8333,"x":0.941},{"time":0.8667,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.1333,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.2667,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.4,"x":0.943,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.5333,"x":0.946,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98},{"time":1.6,"x":0.943,"curve":"stepped"},{"time":1.6333}]},"bone105":{"rotate":[{"time":1.6333,"angle":4.94},{"time":2.2333,"angle":7.64,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":11.97,"curve":"stepped"},{"time":2.3667,"angle":11.97},{"time":2.4,"angle":-9.1},{"time":2.9,"angle":-8.02}],"translate":[{"time":1.6333},{"time":2.2333,"x":25.41,"y":2.14,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":6.82,"y":0.89,"curve":"stepped"},{"time":2.3667,"x":6.82,"y":0.89},{"time":2.4,"x":6.82,"y":0.08}]},"bone101":{"rotate":[{"time":1.6333,"angle":14.07},{"time":2.2333,"angle":20.01,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":13.44,"curve":"stepped"},{"time":2.3667,"angle":13.44},{"time":2.4,"angle":-19.48},{"time":2.9,"angle":-18.4}],"translate":[{"time":1.6333},{"time":2.2333,"x":7.94,"y":0.12,"curve":"stepped"},{"time":2.3667,"x":7.94,"y":0.12},{"time":2.4,"x":7.94,"y":0.66}]},"bone102":{"rotate":[{"time":1.6333,"angle":12.34},{"time":2.2333,"angle":17.66,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":11.69,"curve":"stepped"},{"time":2.3667,"angle":11.69},{"time":2.4,"angle":3.67},{"time":2.9,"angle":4.74}],"translate":[{"time":1.6333},{"time":2.2333,"x":22.74,"y":6.38,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":8.12,"y":1.33,"curve":"stepped"},{"time":2.3667,"x":8.12,"y":1.33},{"time":2.4,"x":8.12,"y":0.12}]},"bone112":{"rotate":[{"time":1.6333,"angle":4.19},{"time":2.2333,"angle":5.2,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-66.75,"curve":"stepped"},{"time":2.3667,"angle":-66.75},{"time":2.4,"angle":-5.3},{"time":3.0667,"angle":-13.24}],"translate":[{"time":1.6333,"x":27.28,"y":0.41,"curve":"stepped"},{"time":2.2333,"x":27.28,"y":0.41,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":26.09,"y":2.91,"curve":"stepped"},{"time":2.3667,"x":26.09,"y":2.91},{"time":2.4,"x":12.22,"y":1.05}],"scale":[{"time":2.4},{"time":3.0667,"y":0.948}]},"bone114":{"rotate":[{"time":1.6333,"angle":10.86},{"time":2.2333,"angle":3.16,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-4.19,"curve":"stepped"},{"time":2.3667,"angle":-4.19},{"time":2.4,"angle":-6.28},{"time":3.0667,"angle":-9.45}],"translate":[{"time":1.6333,"x":36.06,"y":1.38},{"time":2.2333,"x":39.8,"y":10.2,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":9.3,"y":2.67,"curve":"stepped"},{"time":2.3667,"x":9.3,"y":2.67},{"time":2.4,"x":32.45,"y":-2.69}],"scale":[{"time":2.4},{"time":3.0667,"y":0.948}]},"bone118":{"rotate":[{"time":1.6333,"angle":4.76},{"time":2.2333,"angle":4.19,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-13.74,"curve":"stepped"},{"time":2.3667,"angle":-13.74},{"time":2.4,"angle":-7.18},{"time":3.0667,"angle":-9.52}],"translate":[{"time":1.6333,"x":53.48,"y":-0.64,"curve":"stepped"},{"time":2.3667,"x":53.48,"y":-0.64},{"time":2.4,"x":53.48,"y":-0.15}],"scale":[{"time":2.4},{"time":3.0667,"y":0.948}]},"bone116":{"rotate":[{"time":1.6333,"angle":4.49},{"time":2.2333,"angle":7.21,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-30.01,"curve":"stepped"},{"time":2.3667,"angle":-30.01},{"time":2.4,"angle":-2.19},{"time":3.0667,"angle":-5.37}],"translate":[{"time":1.6333,"x":35.88,"curve":"stepped"},{"time":2.3667,"x":35.88},{"time":2.4,"x":35.88,"y":1.05}],"scale":[{"time":2.4},{"time":3.0667,"y":0.948}]},"bone106":{"rotate":[{"time":1.6333,"angle":21.01},{"time":2.2333,"angle":14.35,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":10.53,"curve":"stepped"},{"time":2.3667,"angle":10.53},{"time":2.4,"angle":1.53},{"time":2.9,"angle":2.61}],"translate":[{"time":2.3667},{"time":2.4,"y":-0.9}]},"bone108":{"rotate":[{"time":1.6333,"angle":13.29},{"time":2.2333,"angle":23.74,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":9.39,"curve":"stepped"},{"time":2.3667,"angle":9.39},{"time":2.4,"angle":-1.7},{"time":2.9,"angle":-0.62}],"translate":[{"time":1.6333},{"time":2.2333,"x":20.43,"y":3.78,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":15.81,"y":9.98,"curve":"stepped"},{"time":2.3667,"x":15.81,"y":9.98},{"time":2.4,"x":43.07,"y":-1.77}]},"bone109":{"rotate":[{"time":1.6333,"angle":23.07},{"time":2.2333,"angle":29.75,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":10.49,"curve":"stepped"},{"time":2.3667,"angle":10.49},{"time":2.4,"angle":4.58},{"time":2.9,"angle":0.83}],"translate":[{"time":1.6333},{"time":2.2333,"x":14.46,"y":11.86,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":21.75,"y":2.8,"curve":"stepped"},{"time":2.3667,"x":21.75,"y":2.8},{"time":2.4,"x":49.6,"y":-5.47}]},"bone110":{"rotate":[{"time":1.6333,"angle":13.83},{"time":2.2333,"angle":12.1,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":6.99,"curve":"stepped"},{"time":2.3667,"angle":6.99},{"time":2.4,"angle":-4.4},{"time":3.0667,"angle":-8.14}],"translate":[{"time":1.6333,"x":4.57,"y":-0.08},{"time":2.2333,"x":22.27,"y":12.36,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":23.95,"y":12.03,"curve":"stepped"},{"time":2.3667,"x":23.95,"y":12.03},{"time":2.4,"x":83.56,"y":-2.86},{"time":3.0667,"x":82.19,"y":-8.76}],"scale":[{"time":2.4},{"time":3.0667,"y":0.955}]},"bone111":{"rotate":[{"time":1.6333,"angle":6.85},{"time":2.2333,"angle":8.83,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-126.45,"curve":"stepped"},{"time":2.3667,"angle":-126.45},{"time":2.4,"angle":-6.67},{"time":3.0667,"angle":-11.01}],"translate":[{"time":1.6333,"x":9.14,"y":-0.62},{"time":2.2333,"x":12.89,"y":2.71,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":5.19,"y":6.63,"curve":"stepped"},{"time":2.3667,"x":5.19,"y":6.63},{"time":2.4,"x":55.99,"y":-6.56}],"scale":[{"time":2.4},{"time":3.0667,"y":0.97}]},"bone113":{"rotate":[{"time":1.6333,"angle":10.72},{"time":2.2333,"angle":4.56,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":2.03,"curve":"stepped"},{"time":2.3667,"angle":2.03},{"time":2.4,"angle":-1.74},{"time":3.0667,"angle":-3.57}],"translate":[{"time":1.6333,"x":31.02,"y":0.79},{"time":2.2333,"x":26.7,"y":2.9,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":49.99,"y":-2.97,"curve":"stepped"},{"time":2.3667,"x":49.99,"y":-2.97},{"time":2.4,"x":49.99,"y":0.26}],"scale":[{"time":2.4},{"time":3.0667,"y":0.948}]},"bone115":{"rotate":[{"time":1.6333},{"time":2.2333,"angle":12.68,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":0.64,"curve":"stepped"},{"time":2.3667,"angle":0.64},{"time":2.4,"angle":-7.18},{"time":3.0667,"angle":-10.35}],"translate":[{"time":1.6333,"x":36.09,"curve":"stepped"},{"time":2.2333,"x":36.09,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":-3.67,"y":-3.15,"curve":"stepped"},{"time":2.3667,"x":-3.67,"y":-3.15},{"time":2.4,"x":77.75,"y":-3.09}],"scale":[{"time":2.4},{"time":3.0667,"y":0.948}]},"bone117":{"rotate":[{"time":1.6333,"angle":5.32},{"time":2.2333,"angle":4.44,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":-11.71,"curve":"stepped"},{"time":2.3667,"angle":-11.71},{"time":2.4,"angle":-7.59},{"time":3.0667,"angle":-10.76}],"translate":[{"time":1.6333,"x":57.48,"y":-2.15,"curve":"stepped"},{"time":2.2333,"x":57.48,"y":-2.15,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":44.85,"y":0.05,"curve":"stepped"},{"time":2.3667,"x":44.85,"y":0.05},{"time":2.4,"x":44.85,"y":-0.33}],"scale":[{"time":2.4},{"time":3.0667,"y":0.948}]},"bone103":{"rotate":[{"time":1.6333,"angle":7.51},{"time":2.2333,"angle":11.19,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":0.55,"curve":"stepped"},{"time":2.3667,"angle":0.55},{"time":2.4,"angle":-3.49},{"time":2.9,"angle":-2.41}],"translate":[{"time":1.6333},{"time":2.2333,"x":24.93,"y":5.01,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":7.99,"y":2.34,"curve":"stepped"},{"time":2.3667,"x":7.99,"y":2.34},{"time":2.4,"x":7.99,"y":-0.65}]},"bone107":{"rotate":[{"time":1.6333,"angle":22.3},{"time":2.2333,"angle":24.24,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":11.4,"curve":"stepped"},{"time":2.3667,"angle":11.4},{"time":2.4,"angle":-1.66},{"time":2.9,"angle":-0.58}],"translate":[{"time":1.6333},{"time":2.2333,"x":10.25,"y":1.93,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":19.35,"y":0.46,"curve":"stepped"},{"time":2.3667,"x":19.35,"y":0.46},{"time":2.4,"x":19.35,"y":-0.33}],"shear":[{"time":2.4},{"time":2.9,"y":50.6}]},"bone104":{"rotate":[{"time":1.6333,"angle":10.92},{"time":2.2333,"angle":15.01,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"angle":16.56,"curve":"stepped"},{"time":2.3667,"angle":16.56},{"time":2.4,"angle":-1.52},{"time":2.9,"angle":-0.45}],"translate":[{"time":1.6333},{"time":2.2333,"x":23.52,"y":3.29,"curve":0.233,"c2":0.79,"c3":0.327},{"time":2.3,"x":6.38,"y":3.68,"curve":"stepped"},{"time":2.3667,"x":6.38,"y":3.68},{"time":2.4,"x":6.38,"y":0.35}]},"TX_feng_quan_faguang":{"rotate":[{"time":0.1333,"angle":44.04}],"translate":[{"time":0.1333,"x":1651.27,"y":2561.99},{"time":0.7667,"x":1388.59,"y":2790.92}],"scale":[{"time":0.1333,"x":2.343,"y":6.681},{"time":0.7667,"x":2.782,"y":8.203}]},"TX_feng_QUAN":{"rotate":[{"time":0.1333,"angle":3.68}],"translate":[{"time":0.1333,"x":1644.64,"y":2559.48},{"time":0.7667,"x":1410.47,"y":2751.49}],"scale":[{"time":0.1333,"x":1.529,"y":1.604},{"time":0.7667,"x":1.81,"y":1.899}]},"TX_feng_quan_faguang_hou":{"rotate":[{"time":0.1333,"angle":-39.21}],"translate":[{"time":0.1333,"x":2047,"y":2679.81},{"time":0.7667,"x":1789.46,"y":2846.14}],"scale":[{"time":0.1333,"x":2.355,"y":6.111},{"time":0.7667,"x":2.481,"y":7.015}]},"BZ/z_bianzi_hou3":{"rotate":[{"time":2.8667,"angle":34.04},{"time":2.9,"angle":53.15},{"time":2.9333,"angle":75.99},{"time":2.9667,"angle":91.64},{"time":3,"angle":102.28},{"time":3.0333,"angle":108.69},{"time":3.2333,"angle":132.26},{"time":3.6667,"angle":154.7,"curve":"stepped"},{"time":3.7,"angle":117.67},{"time":3.7333,"angle":98.67},{"time":3.7667,"angle":115},{"time":3.8333,"angle":162.95,"curve":"stepped"},{"time":3.8667,"angle":92.77,"curve":0.382,"c2":0.39,"c3":0.703,"c4":0.72},{"time":3.9,"angle":54.94,"curve":0.346,"c2":0.41,"c3":0.665,"c4":0.74},{"time":3.9333,"angle":41.81,"curve":"stepped"},{"time":3.9667,"angle":121.13,"curve":0.25,"c3":0.837,"c4":0.79},{"time":4.0333,"angle":158.94},{"time":4.0667,"angle":26.53},{"time":4.1333,"angle":-13.15,"curve":"stepped"},{"time":4.1667,"angle":111.77},{"time":4.2333,"angle":80.71,"curve":"stepped"},{"time":4.2667,"angle":90.07},{"time":4.3333,"angle":110.7,"curve":"stepped"},{"time":4.3667,"angle":96.81,"curve":0.382,"c2":0.39,"c3":0.703,"c4":0.72},{"time":4.4,"angle":42.8,"curve":0.346,"c2":0.41,"c3":0.665,"c4":0.74},{"time":4.4333,"angle":44.07},{"time":4.4667,"angle":74.73},{"time":4.5,"angle":95.27},{"time":4.5333,"angle":113.47,"curve":"stepped"},{"time":4.5667,"angle":7.21},{"time":4.6333,"angle":-45.9,"curve":"stepped"},{"time":4.6667,"angle":90.07},{"time":4.7333,"angle":110.7,"curve":"stepped"},{"time":4.7667,"angle":87.19,"curve":0.382,"c2":0.39,"c3":0.703,"c4":0.72},{"time":4.8,"angle":42.8,"curve":0.346,"c2":0.41,"c3":0.665,"c4":0.74},{"time":4.8333,"angle":44.07}],"translate":[{"time":2.8667,"x":13962.63,"y":3372.54},{"time":2.9,"x":3423.7,"y":2666.09},{"time":2.9333,"x":-5417.09,"y":-962.5,"curve":0.407,"c2":0.39,"c3":0.719,"c4":0.73},{"time":2.9667,"x":-11811.4,"y":-6921.81,"curve":0.345,"c2":0.43,"c3":0.653,"c4":0.76},{"time":3,"x":-15428.21,"y":-12911.41,"curve":0.28,"c2":0.53,"c3":0.592,"c4":0.86},{"time":3.0333,"x":-18022.65,"y":-18046.69},{"time":3.2333,"x":-14427.69,"y":-24863.61},{"time":3.6667,"x":-5322.88,"y":-29341.06,"curve":"stepped"},{"time":3.7,"x":-676.79,"y":-36955.04},{"time":3.7333,"x":-1071.54,"y":-23819.14},{"time":3.7667,"x":-8511.13,"y":-23261.31},{"time":3.8333,"x":-8018.77,"y":-29846.68,"curve":"stepped"},{"time":3.8667,"x":-14933.18,"y":-27912.29,"curve":0.382,"c2":0.39,"c3":0.703,"c4":0.72},{"time":3.9,"x":-28080.72,"y":-19590.29,"curve":0.346,"c2":0.41,"c3":0.665,"c4":0.74},{"time":3.9333,"x":-27423.77,"y":-10641.74,"curve":"stepped"},{"time":3.9667,"x":-10455.68,"y":-24328.6},{"time":4.0333,"x":-9911.19,"y":-23388.1},{"time":4.0667,"x":-32204.97,"y":-13329.27},{"time":4.1333,"x":-24307.2,"y":-4320.38,"curve":"stepped"},{"time":4.1667,"x":-1319.04,"y":-21238.07},{"time":4.2333,"x":12612.73,"y":-28228.13,"curve":"stepped"},{"time":4.2667,"x":-1405.7,"y":-20467.04},{"time":4.3333,"x":-8511.13,"y":-23261.31,"curve":"stepped"},{"time":4.3667,"x":-12925.97,"y":-21972.86,"curve":0.382,"c2":0.39,"c3":0.703,"c4":0.72},{"time":4.4,"x":-29370.35,"y":-23612.48,"curve":0.346,"c2":0.41,"c3":0.665,"c4":0.74},{"time":4.4333,"x":-7215.49,"y":-14703.91},{"time":4.4667,"x":-12737.37,"y":-25053.56},{"time":4.5333,"x":-13024.55,"y":-30857.61,"curve":"stepped"},{"time":4.5667,"x":-34386.09,"y":-1685.97},{"time":4.6333,"x":-19756.76,"y":-611.33,"curve":"stepped"},{"time":4.6667,"x":-1405.7,"y":-20467.04},{"time":4.7333,"x":-8511.13,"y":-23261.31,"curve":"stepped"},{"time":4.7667,"x":-12925.97,"y":-21972.86,"curve":0.382,"c2":0.39,"c3":0.703,"c4":0.72},{"time":4.8,"x":-29370.35,"y":-23612.48,"curve":0.346,"c2":0.41,"c3":0.665,"c4":0.74},{"time":4.8333,"x":-7215.49,"y":-14703.91}],"scale":[{"time":2.8667,"x":24.24,"y":24.24},{"time":3.0333,"x":31.674,"y":18.783},{"time":3.2333,"x":18.916,"y":12.235},{"time":3.6667,"x":17.908,"y":11.583,"curve":"stepped"},{"time":3.7333,"x":15,"y":9.702,"curve":"stepped"},{"time":3.8667,"x":15,"y":9.702,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":3.9333,"x":17.113,"y":11.069,"curve":"stepped"},{"time":4.2333,"x":17.113,"y":11.069,"curve":"stepped"},{"time":4.2667,"x":16.409,"y":10.614},{"time":4.3333,"x":15,"y":9.702,"curve":"stepped"},{"time":4.3667,"x":41.69,"y":41.69},{"time":4.4333,"x":16.675,"y":10.786},{"time":4.4667,"x":17.113,"y":11.069,"curve":"stepped"},{"time":4.6333,"x":17.113,"y":11.069,"curve":"stepped"},{"time":4.6667,"x":16.409,"y":10.614},{"time":4.7333,"x":15,"y":9.702,"curve":"stepped"},{"time":4.7667,"x":41.69,"y":41.69},{"time":4.8333,"x":16.675,"y":10.786}]},"bone164":{"rotate":[{"time":2.8667,"angle":-39.68},{"time":3.2333,"angle":-37.83,"curve":"stepped"},{"time":3.6667,"angle":-37.83,"curve":"stepped"},{"time":3.7,"angle":-5.31},{"time":3.7333,"angle":-4.15,"curve":"stepped"},{"time":3.7667,"angle":-15.37,"curve":"stepped"},{"time":3.8333,"angle":-15.37,"curve":"stepped"},{"time":3.8667,"angle":-5.66},{"time":3.9333,"angle":-3.98,"curve":"stepped"},{"time":3.9667,"angle":-17.52},{"time":4.0333,"angle":-13.51,"curve":"stepped"},{"time":4.0667,"angle":-9.61},{"time":4.1333,"angle":-11.71,"curve":"stepped"},{"time":4.1667,"angle":-9.61,"curve":"stepped"},{"time":4.2333,"angle":-9.61,"curve":"stepped"},{"time":4.2667,"angle":-19.23},{"time":4.3333,"angle":-15.96,"curve":"stepped"},{"time":4.3667,"angle":-7.45,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"angle":-10.56,"curve":"stepped"},{"time":4.4667,"angle":-15.77},{"time":4.5333,"angle":-13.99,"curve":"stepped"},{"time":4.5667,"angle":-9.61,"curve":"stepped"},{"time":4.6333,"angle":-9.61,"curve":"stepped"},{"time":4.6667,"angle":-19.23},{"time":4.7333,"angle":-15.96,"curve":"stepped"},{"time":4.7667,"angle":-7.45,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"angle":-10.56}],"translate":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"y":-0.27,"curve":"stepped"},{"time":3.7333,"y":-0.27,"curve":"stepped"},{"time":3.7667,"y":-0.18,"curve":"stepped"},{"time":3.9333,"y":-0.18,"curve":"stepped"},{"time":3.9667,"y":-0.27,"curve":"stepped"},{"time":4.0333,"y":-0.27,"curve":"stepped"},{"time":4.0667}],"scale":[{"time":3.7},{"time":3.7333,"y":0.876,"curve":"stepped"},{"time":3.7667,"curve":"stepped"},{"time":3.8667},{"time":3.9333,"x":0.999,"y":0.848,"curve":"stepped"},{"time":3.9667,"y":0.876},{"time":4.0333}],"shear":[{"time":2.8667,"y":19.71,"curve":"stepped"},{"time":3.6667,"y":19.71,"curve":"stepped"},{"time":3.7,"y":-4.27},{"time":3.7333}]},"bone165":{"rotate":[{"time":2.8667,"angle":-36.69},{"time":3.2333,"angle":-34.84,"curve":"stepped"},{"time":3.6667,"angle":-34.84,"curve":"stepped"},{"time":3.7,"angle":0.44},{"time":3.7333,"angle":1.6,"curve":"stepped"},{"time":3.7667,"angle":-9.62,"curve":"stepped"},{"time":3.8333,"angle":-9.62,"curve":"stepped"},{"time":3.8667,"angle":0.09},{"time":3.9333,"angle":1.77,"curve":"stepped"},{"time":3.9667,"angle":-11.77},{"time":4.0333,"angle":-7.76,"curve":"stepped"},{"time":4.0667,"angle":-3.55},{"time":4.1333,"angle":-5.66,"curve":"stepped"},{"time":4.1667,"angle":-3.55,"curve":"stepped"},{"time":4.2333,"angle":-3.55,"curve":"stepped"},{"time":4.2667,"angle":-13.17},{"time":4.3333,"angle":-9.91,"curve":"stepped"},{"time":4.3667,"angle":-1.7,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"angle":-4.5,"curve":"stepped"},{"time":4.4667,"angle":-9.71},{"time":4.5333,"angle":-7.93,"curve":"stepped"},{"time":4.5667,"angle":-3.55,"curve":"stepped"},{"time":4.6333,"angle":-3.55,"curve":"stepped"},{"time":4.6667,"angle":-13.17},{"time":4.7333,"angle":-9.91,"curve":"stepped"},{"time":4.7667,"angle":-1.7,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"angle":-4.5}],"translate":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"y":0.13,"curve":"stepped"},{"time":3.7333,"y":0.13,"curve":"stepped"},{"time":3.7667,"y":0.08,"curve":"stepped"},{"time":3.9333,"y":0.08,"curve":"stepped"},{"time":3.9667,"y":0.13,"curve":"stepped"},{"time":4.0333,"y":0.13,"curve":"stepped"},{"time":4.0667}],"scale":[{"time":3.7},{"time":3.7333,"y":0.876,"curve":"stepped"},{"time":3.7667,"curve":"stepped"},{"time":3.8667},{"time":3.9333,"x":0.999,"y":0.848,"curve":"stepped"},{"time":3.9667,"y":0.876},{"time":4.0333}],"shear":[{"time":2.8667,"y":27.66,"curve":"stepped"},{"time":3.6667,"y":27.66,"curve":"stepped"},{"time":3.7,"y":-0.99},{"time":3.7333}]},"bone171":{"rotate":[{"time":2.8667,"angle":-17.94},{"time":3.2333,"angle":-17.02,"curve":"stepped"},{"time":3.6667,"angle":-17.02,"curve":"stepped"},{"time":3.7,"angle":3.89},{"time":3.7333,"angle":2.05,"curve":"stepped"},{"time":3.7667,"angle":-9.17,"curve":"stepped"},{"time":3.8333,"angle":-9.17,"curve":"stepped"},{"time":3.8667,"angle":0.54},{"time":3.9333,"angle":2.22,"curve":"stepped"},{"time":3.9667,"angle":-11.32},{"time":4.0333,"angle":-7.31,"curve":"stepped"},{"time":4.0667,"angle":-1.63},{"time":4.1333,"angle":-3.74,"curve":"stepped"},{"time":4.1667,"angle":-1.63,"curve":"stepped"},{"time":4.2333,"angle":-1.63,"curve":"stepped"},{"time":4.2667,"angle":-11.25},{"time":4.3333,"angle":-7.99,"curve":"stepped"},{"time":4.3667,"angle":-1.25,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"angle":-2.59,"curve":"stepped"},{"time":4.4667,"angle":-7.8},{"time":4.5333,"angle":-6.02,"curve":"stepped"},{"time":4.5667,"angle":-1.63,"curve":"stepped"},{"time":4.6333,"angle":-1.63,"curve":"stepped"},{"time":4.6667,"angle":-11.25},{"time":4.7333,"angle":-7.99,"curve":"stepped"},{"time":4.7667,"angle":-1.25,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"angle":-2.59}],"translate":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"y":0.75,"curve":"stepped"},{"time":3.7333,"y":0.75,"curve":"stepped"},{"time":3.7667,"y":0.5,"curve":"stepped"},{"time":3.9333,"y":0.5,"curve":"stepped"},{"time":3.9667,"y":0.75,"curve":"stepped"},{"time":4.0333,"y":0.75,"curve":"stepped"},{"time":4.0667,"curve":"stepped"},{"time":4.1333,"curve":"stepped"},{"time":4.1667,"x":30.75,"y":-0.09},{"time":4.2333,"curve":"stepped"},{"time":4.2667,"x":27.64,"y":-0.13},{"time":4.3333,"curve":"stepped"},{"time":4.6333,"curve":"stepped"},{"time":4.6667,"x":27.64,"y":-0.13},{"time":4.7333}],"scale":[{"time":2.8667},{"time":3.2333,"y":0.86,"curve":"stepped"},{"time":3.6667,"y":0.86,"curve":"stepped"},{"time":3.7},{"time":3.7333,"y":0.876,"curve":"stepped"},{"time":3.7667,"curve":"stepped"},{"time":3.8667},{"time":3.9333,"x":0.999,"y":0.848,"curve":"stepped"},{"time":3.9667,"y":0.876},{"time":4.0333}],"shear":[{"time":2.8667,"y":7.25,"curve":"stepped"},{"time":3.6667,"y":7.25,"curve":"stepped"},{"time":3.7,"y":-4.8},{"time":3.7333}]},"bone175":{"rotate":[{"time":2.8667,"angle":-10.46},{"time":3.2333,"angle":-9.53,"curve":"stepped"},{"time":3.6667,"angle":-9.53,"curve":"stepped"},{"time":3.7,"angle":4.94},{"time":3.7333,"angle":6.1,"curve":"stepped"},{"time":3.7667,"angle":-5.12,"curve":"stepped"},{"time":3.8333,"angle":-5.12,"curve":"stepped"},{"time":3.8667,"angle":4.59},{"time":3.9333,"angle":11.83,"curve":"stepped"},{"time":3.9667,"angle":-7.27},{"time":4.0333,"angle":-3.26,"curve":"stepped"},{"time":4.0667,"angle":3.61},{"time":4.1333,"angle":1.37,"curve":"stepped"},{"time":4.1667,"angle":3.58},{"time":4.2333,"angle":11.05,"curve":"stepped"},{"time":4.2667,"angle":-2.57},{"time":4.3333,"angle":0.7,"curve":"stepped"},{"time":4.3667,"angle":2.8,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"angle":6.1,"curve":"stepped"},{"time":4.4667,"angle":-9.82},{"time":4.5333,"angle":-0.57,"curve":"stepped"},{"time":4.5667,"angle":3.61,"curve":"stepped"},{"time":4.6333,"angle":3.61,"curve":"stepped"},{"time":4.6667,"angle":-2.57},{"time":4.7333,"angle":0.7,"curve":"stepped"},{"time":4.7667,"angle":2.8,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"angle":6.1}],"translate":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"y":0.03,"curve":"stepped"},{"time":3.7333,"y":0.03,"curve":"stepped"},{"time":3.7667,"y":0.02,"curve":"stepped"},{"time":3.9333,"y":0.02,"curve":"stepped"},{"time":3.9667,"y":0.03,"curve":"stepped"},{"time":4.0333,"y":0.03,"curve":"stepped"},{"time":4.0667}],"scale":[{"time":2.8667},{"time":3.2333,"y":0.783,"curve":"stepped"},{"time":3.6667,"y":0.783,"curve":"stepped"},{"time":3.7},{"time":3.7333,"y":0.876,"curve":"stepped"},{"time":3.7667,"curve":"stepped"},{"time":3.8667},{"time":3.9333,"x":0.999,"y":0.848,"curve":"stepped"},{"time":3.9667,"y":0.876},{"time":4.0333}],"shear":[{"time":2.8667,"y":9.7,"curve":"stepped"},{"time":3.6667,"y":9.7,"curve":"stepped"},{"time":3.7,"curve":"stepped"},{"time":3.8667},{"time":3.9333,"y":-9.74,"curve":"stepped"},{"time":3.9667,"y":4.44},{"time":4.0333,"curve":"stepped"},{"time":4.4333,"curve":"stepped"},{"time":4.4667,"y":9.98},{"time":4.5333,"y":-6.04,"curve":"stepped"},{"time":4.6333,"y":-6.04,"curve":"stepped"},{"time":4.6667}]},"bone163":{"rotate":[{"time":2.8667,"angle":-21.04},{"time":3.2333,"angle":-19.2,"curve":"stepped"},{"time":3.6667,"angle":-19.2,"curve":"stepped"},{"time":3.7,"angle":-0.01},{"time":3.7333,"angle":1.16,"curve":"stepped"},{"time":3.7667,"angle":-10.06,"curve":"stepped"},{"time":3.8333,"angle":-10.06,"curve":"stepped"},{"time":3.8667,"angle":-0.36},{"time":3.9333,"angle":1.33,"curve":"stepped"},{"time":3.9667,"angle":-12.22},{"time":4.0333,"angle":-8.21,"curve":"stepped"},{"time":4.0667,"angle":-7.23},{"time":4.1333,"angle":-9.34,"curve":"stepped"},{"time":4.1667,"angle":-7.23,"curve":"stepped"},{"time":4.2333,"angle":-7.23,"curve":"stepped"},{"time":4.2667,"angle":-16.85},{"time":4.3333,"angle":-13.58,"curve":"stepped"},{"time":4.3667,"angle":-2.15,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"angle":-8.18,"curve":"stepped"},{"time":4.4667,"angle":-13.39},{"time":4.5333,"angle":-11.61,"curve":"stepped"},{"time":4.5667,"angle":-7.23,"curve":"stepped"},{"time":4.6333,"angle":-7.23,"curve":"stepped"},{"time":4.6667,"angle":-16.85},{"time":4.7333,"angle":-13.58,"curve":"stepped"},{"time":4.7667,"angle":-2.15,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"angle":-8.18}],"translate":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"y":-0.09,"curve":"stepped"},{"time":3.7333,"y":-0.09,"curve":"stepped"},{"time":3.7667,"y":-0.06,"curve":"stepped"},{"time":3.9333,"y":-0.06,"curve":"stepped"},{"time":3.9667,"y":-0.09,"curve":"stepped"},{"time":4.0333,"y":-0.09,"curve":"stepped"},{"time":4.0667}],"scale":[{"time":3.7},{"time":3.7333,"y":0.876,"curve":"stepped"},{"time":3.7667,"curve":"stepped"},{"time":3.8667},{"time":3.9333,"x":0.999,"y":0.848,"curve":"stepped"},{"time":3.9667,"y":0.876},{"time":4.0333}],"shear":[{"time":2.8667,"y":15.36,"curve":"stepped"},{"time":3.6667,"y":15.36,"curve":"stepped"},{"time":3.7,"y":-8.47},{"time":3.7333}]},"bone166":{"rotate":[{"time":2.8667,"angle":-19.22},{"time":3.2333,"angle":-17.38,"curve":"stepped"},{"time":3.6667,"angle":-17.38,"curve":"stepped"},{"time":3.7,"angle":-0.05},{"time":3.7333,"angle":1.11,"curve":"stepped"},{"time":3.7667,"angle":-10.11,"curve":"stepped"},{"time":3.8333,"angle":-10.11,"curve":"stepped"},{"time":3.8667,"angle":-0.4},{"time":3.9333,"angle":1.28,"curve":"stepped"},{"time":3.9667,"angle":-12.26},{"time":4.0333,"angle":-8.25,"curve":"stepped"},{"time":4.0667,"angle":1.17},{"time":4.1333,"angle":1.15,"curve":"stepped"},{"time":4.1667,"angle":3.26,"curve":"stepped"},{"time":4.2333,"angle":3.26,"curve":"stepped"},{"time":4.2667,"angle":-6.36},{"time":4.3333,"angle":-3.1,"curve":"stepped"},{"time":4.3667,"angle":-2.19,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"angle":2.3,"curve":"stepped"},{"time":4.4667,"angle":-2.91},{"time":4.5333,"angle":-1.13,"curve":"stepped"},{"time":4.5667,"angle":1.17,"curve":"stepped"},{"time":4.6333,"angle":1.17,"curve":"stepped"},{"time":4.6667,"angle":-6.36},{"time":4.7333,"angle":-3.1,"curve":"stepped"},{"time":4.7667,"angle":-2.19,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"angle":2.3}],"translate":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"y":-1.72,"curve":"stepped"},{"time":3.7333,"y":-1.72,"curve":"stepped"},{"time":3.7667,"y":-1.15,"curve":"stepped"},{"time":3.9333,"y":-1.15,"curve":"stepped"},{"time":3.9667,"y":-1.72,"curve":"stepped"},{"time":4.0333,"y":-1.72,"curve":"stepped"},{"time":4.0667}],"scale":[{"time":3.7},{"time":3.7333,"y":0.876,"curve":"stepped"},{"time":3.7667,"curve":"stepped"},{"time":3.8667},{"time":3.9333,"x":0.999,"y":0.848,"curve":"stepped"},{"time":3.9667,"y":0.876},{"time":4.0333}],"shear":[{"time":2.8667,"y":10.05,"curve":"stepped"},{"time":3.6667,"y":10.05,"curve":"stepped"},{"time":3.7,"y":-7.27},{"time":3.7333}]},"bone168":{"rotate":[{"time":2.8667,"angle":-8.37},{"time":3.2333,"angle":-6.52,"curve":"stepped"},{"time":3.6667,"angle":-6.52,"curve":"stepped"},{"time":3.7,"angle":3.58},{"time":3.7333,"angle":4.75,"curve":"stepped"},{"time":3.7667,"angle":-6.47,"curve":"stepped"},{"time":3.8333,"angle":-6.47,"curve":"stepped"},{"time":3.8667,"angle":3.24},{"time":3.9333,"angle":4.92,"curve":"stepped"},{"time":3.9667,"angle":-8.62},{"time":4.0333,"angle":-4.61,"curve":"stepped"},{"time":4.0667,"angle":0.08},{"time":4.1333,"angle":1.76,"curve":"stepped"},{"time":4.1667,"angle":6.67,"curve":"stepped"},{"time":4.2333,"angle":6.67,"curve":"stepped"},{"time":4.2667,"angle":-2.95},{"time":4.3333,"angle":0.32,"curve":"stepped"},{"time":4.3667,"angle":1.45,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"angle":5.72,"curve":"stepped"},{"time":4.4667,"angle":0.51},{"time":4.5333,"angle":2.29,"curve":"stepped"},{"time":4.5667,"angle":0.08,"curve":"stepped"},{"time":4.6333,"angle":0.08,"curve":"stepped"},{"time":4.6667,"angle":-2.95},{"time":4.7333,"angle":0.32,"curve":"stepped"},{"time":4.7667,"angle":1.45,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"angle":5.72}],"translate":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"y":-0.31,"curve":"stepped"},{"time":3.7333,"y":-0.31,"curve":"stepped"},{"time":3.7667,"y":-0.21,"curve":"stepped"},{"time":3.9333,"y":-0.21,"curve":"stepped"},{"time":3.9667,"y":-0.31,"curve":"stepped"},{"time":4.0333,"y":-0.31,"curve":"stepped"},{"time":4.0667}],"scale":[{"time":3.7},{"time":3.7333,"y":0.876,"curve":"stepped"},{"time":3.7667,"curve":"stepped"},{"time":3.8667},{"time":3.9333,"x":0.999,"y":0.848,"curve":"stepped"},{"time":3.9667,"y":0.876},{"time":4.0333}],"shear":[{"time":2.8667,"y":3.85,"curve":"stepped"},{"time":3.6667,"y":3.85,"curve":"stepped"},{"time":3.7,"y":-4.97},{"time":3.7333}]},"bone169":{"rotate":[{"time":2.8667,"angle":-21.99},{"time":3.2333,"angle":-21.06,"curve":"stepped"},{"time":3.6667,"angle":-21.06,"curve":"stepped"},{"time":3.7,"angle":-1.4},{"time":3.7333,"angle":-0.24,"curve":"stepped"},{"time":3.7667,"angle":-11.46,"curve":"stepped"},{"time":3.8333,"angle":-11.46,"curve":"stepped"},{"time":3.8667,"angle":-1.75},{"time":3.9333,"angle":-0.06,"curve":"stepped"},{"time":3.9667,"angle":-13.61},{"time":4.0333,"angle":-9.6,"curve":"stepped"},{"time":4.0667,"angle":0.33},{"time":4.1333,"angle":-3.44,"curve":"stepped"},{"time":4.1667,"angle":-4.64},{"time":4.2333,"angle":-7.87,"curve":"stepped"},{"time":4.2667,"angle":-17.49},{"time":4.3333,"angle":-14.23,"curve":"stepped"},{"time":4.3667,"angle":-3.54,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"angle":-8.83,"curve":"stepped"},{"time":4.4667,"angle":-14.03},{"time":4.5333,"angle":-12.26,"curve":"stepped"},{"time":4.5667,"angle":0.33,"curve":"stepped"},{"time":4.6333,"angle":0.33,"curve":"stepped"},{"time":4.6667,"angle":-17.49},{"time":4.7333,"angle":-14.23,"curve":"stepped"},{"time":4.7667,"angle":-3.54,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"angle":-8.83}],"translate":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"y":0.42,"curve":"stepped"},{"time":3.7333,"y":0.42,"curve":"stepped"},{"time":3.7667,"y":0.28,"curve":"stepped"},{"time":3.9333,"y":0.28,"curve":"stepped"},{"time":3.9667,"y":0.42,"curve":"stepped"},{"time":4.0333,"y":0.42,"curve":"stepped"},{"time":4.0667,"curve":"stepped"},{"time":4.1333,"curve":"stepped"},{"time":4.1667,"x":14.69,"y":-3.37},{"time":4.2333}],"scale":[{"time":2.8667},{"time":3.2333,"y":0.831,"curve":"stepped"},{"time":3.6667,"y":0.831,"curve":"stepped"},{"time":3.7},{"time":3.7333,"y":0.876,"curve":"stepped"},{"time":3.7667,"curve":"stepped"},{"time":3.8667},{"time":3.9333,"x":0.999,"y":0.848,"curve":"stepped"},{"time":3.9667,"y":0.876},{"time":4.0333}],"shear":[{"time":2.8667,"y":9.38,"curve":"stepped"},{"time":3.6667,"y":9.38,"curve":"stepped"},{"time":3.7,"y":-4.18},{"time":3.7333}]},"bone170":{"rotate":[{"time":2.8667,"angle":-6.74},{"time":3.2333,"angle":-5.81,"curve":"stepped"},{"time":3.6667,"angle":-5.81,"curve":"stepped"},{"time":3.7,"angle":9.92},{"time":3.7333,"angle":11.09,"curve":"stepped"},{"time":3.7667,"angle":-0.13,"curve":"stepped"},{"time":3.8333,"angle":-0.13,"curve":"stepped"},{"time":3.8667,"angle":9.58},{"time":3.9333,"angle":11.26,"curve":"stepped"},{"time":3.9667,"angle":-2.28},{"time":4.0333,"angle":1.73,"curve":"stepped"},{"time":4.0667,"angle":8.31},{"time":4.1333,"angle":6.2,"curve":"stepped"},{"time":4.1667,"angle":9.15},{"time":4.2333,"angle":8.31,"curve":"stepped"},{"time":4.2667,"angle":-1.32},{"time":4.3333,"angle":1.95,"curve":"stepped"},{"time":4.3667,"angle":7.79,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"angle":7.35,"curve":"stepped"},{"time":4.4667,"angle":2.14},{"time":4.5333,"angle":3.92,"curve":"stepped"},{"time":4.5667,"angle":8.31,"curve":"stepped"},{"time":4.6333,"angle":8.31,"curve":"stepped"},{"time":4.6667,"angle":-1.32},{"time":4.7333,"angle":1.95,"curve":"stepped"},{"time":4.7667,"angle":7.79,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"angle":7.35}],"translate":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"y":0.98,"curve":"stepped"},{"time":3.7333,"y":0.98,"curve":"stepped"},{"time":3.7667,"y":0.65,"curve":"stepped"},{"time":3.9333,"y":0.65,"curve":"stepped"},{"time":3.9667,"y":0.98,"curve":"stepped"},{"time":4.0333,"y":0.98,"curve":"stepped"},{"time":4.0667,"curve":"stepped"},{"time":4.1333,"curve":"stepped"},{"time":4.1667,"x":27.2,"y":-0.68},{"time":4.2333}],"scale":[{"time":2.8667},{"time":3.2333,"y":0.83,"curve":"stepped"},{"time":3.6667,"y":0.83,"curve":"stepped"},{"time":3.7},{"time":3.7333,"y":0.876,"curve":"stepped"},{"time":3.7667,"curve":"stepped"},{"time":3.8667},{"time":3.9333,"x":0.999,"y":0.848,"curve":"stepped"},{"time":3.9667,"y":0.876},{"time":4.0333}],"shear":[{"time":2.8667,"y":10.19,"curve":"stepped"},{"time":3.6667,"y":10.19,"curve":"stepped"},{"time":3.7,"y":-3.92},{"time":3.7333}]},"bone172":{"rotate":[{"time":2.8667,"angle":-10.02},{"time":3.2333,"angle":-9.09,"curve":"stepped"},{"time":3.6667,"angle":-9.09,"curve":"stepped"},{"time":3.7,"angle":7.21},{"time":3.7333,"angle":8.37,"curve":"stepped"},{"time":3.7667,"angle":-2.85,"curve":"stepped"},{"time":3.8333,"angle":-2.85,"curve":"stepped"},{"time":3.8667,"angle":6.86},{"time":3.9333,"angle":16.51,"curve":"stepped"},{"time":3.9667,"angle":-5},{"time":4.0333,"angle":-0.99,"curve":"stepped"},{"time":4.0667,"angle":6.3},{"time":4.1333,"angle":4.19,"curve":"stepped"},{"time":4.1667,"angle":6.3,"curve":"stepped"},{"time":4.2333,"angle":6.3,"curve":"stepped"},{"time":4.2667,"angle":-3.32},{"time":4.3333,"angle":-0.06,"curve":"stepped"},{"time":4.3667,"angle":5.07,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"angle":5.34,"curve":"stepped"},{"time":4.4667,"angle":0.13},{"time":4.5333,"angle":1.91,"curve":"stepped"},{"time":4.5667,"angle":6.3,"curve":"stepped"},{"time":4.6333,"angle":6.3,"curve":"stepped"},{"time":4.6667,"angle":-3.32},{"time":4.7333,"angle":-0.06,"curve":"stepped"},{"time":4.7667,"angle":5.07,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"angle":5.34}],"translate":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"y":-0.4,"curve":"stepped"},{"time":3.7333,"y":-0.4,"curve":"stepped"},{"time":3.7667,"y":-0.27,"curve":"stepped"},{"time":3.9333,"y":-0.27,"curve":"stepped"},{"time":3.9667,"y":-0.4,"curve":"stepped"},{"time":4.0333,"y":-0.4,"curve":"stepped"},{"time":4.0667,"curve":"stepped"},{"time":4.1333,"curve":"stepped"},{"time":4.1667,"x":23,"y":2.81},{"time":4.2333,"curve":"stepped"},{"time":4.2667,"x":29.09,"y":-2.72},{"time":4.3333,"curve":"stepped"},{"time":4.6333,"curve":"stepped"},{"time":4.6667,"x":29.09,"y":-2.72},{"time":4.7333}],"scale":[{"time":2.8667},{"time":3.2333,"y":0.851,"curve":"stepped"},{"time":3.6667,"y":0.851,"curve":"stepped"},{"time":3.7},{"time":3.7333,"y":0.876,"curve":"stepped"},{"time":3.7667,"curve":"stepped"},{"time":3.8667},{"time":3.9333,"x":0.999,"y":0.848,"curve":"stepped"},{"time":3.9667,"y":0.876},{"time":4.0333,"curve":"stepped"},{"time":4.0667,"y":0.848,"curve":"stepped"},{"time":4.2333,"y":0.848,"curve":"stepped"},{"time":4.2667,"y":0.899},{"time":4.3333,"curve":"stepped"},{"time":4.3667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"y":0.512,"curve":"stepped"},{"time":4.4667,"y":0.512},{"time":4.5333,"y":0.848,"curve":"stepped"},{"time":4.6333,"y":0.848,"curve":"stepped"},{"time":4.6667,"y":0.899},{"time":4.7333,"curve":"stepped"},{"time":4.7667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"y":0.512}],"shear":[{"time":2.8667,"y":6.67,"curve":"stepped"},{"time":3.6667,"y":6.67,"curve":"stepped"},{"time":3.7,"y":-4.12},{"time":3.7333,"y":-43.88,"curve":"stepped"},{"time":3.7667}]},"bone173":{"rotate":[{"time":2.8667,"angle":-5.72},{"time":3.2333,"angle":-4.79,"curve":"stepped"},{"time":3.6667,"angle":-4.79,"curve":"stepped"},{"time":3.7,"angle":9.89},{"time":3.7333,"angle":11.06,"curve":"stepped"},{"time":3.7667,"angle":-0.16,"curve":"stepped"},{"time":3.8333,"angle":-0.16,"curve":"stepped"},{"time":3.8667,"angle":9.54},{"time":3.9333,"angle":16.78,"curve":"stepped"},{"time":3.9667,"angle":-2.32},{"time":4.0333,"angle":1.69,"curve":"stepped"},{"time":4.0667,"angle":12.76},{"time":4.1333,"angle":10.65,"curve":"stepped"},{"time":4.1667,"angle":12.76,"curve":"stepped"},{"time":4.2333,"angle":12.76,"curve":"stepped"},{"time":4.2667,"angle":-12},{"time":4.3333,"angle":-8.74,"curve":"stepped"},{"time":4.3667,"angle":7.75,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"angle":17.22,"curve":"stepped"},{"time":4.4667,"angle":-9.51},{"time":4.5333,"angle":-7.73,"curve":"stepped"},{"time":4.5667,"angle":12.76,"curve":"stepped"},{"time":4.6333,"angle":12.76,"curve":"stepped"},{"time":4.6667,"angle":-12},{"time":4.7333,"angle":-8.74,"curve":"stepped"},{"time":4.7667,"angle":7.75,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"angle":17.22}],"translate":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"x":0.46,"y":0.67,"curve":"stepped"},{"time":3.7333,"x":0.46,"y":0.67,"curve":"stepped"},{"time":3.7667,"x":25.11,"y":0.45,"curve":"stepped"},{"time":3.9333,"x":25.11,"y":0.45,"curve":"stepped"},{"time":3.9667,"x":0.46,"y":0.67,"curve":"stepped"},{"time":4.0333,"x":0.46,"y":0.67,"curve":"stepped"},{"time":4.0667,"x":74.43,"curve":"stepped"},{"time":4.3333,"x":74.43,"curve":"stepped"},{"time":4.3667,"x":3.57,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"x":74.43,"curve":"stepped"},{"time":4.7333,"x":74.43,"curve":"stepped"},{"time":4.7667,"x":3.57,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"x":74.43}],"scale":[{"time":2.8667},{"time":3.2333,"y":0.927,"curve":"stepped"},{"time":3.6667,"y":0.927,"curve":"stepped"},{"time":3.7,"y":0.666},{"time":3.7333,"y":0.584,"curve":"stepped"},{"time":3.7667,"curve":"stepped"},{"time":3.8667},{"time":3.9333,"x":0.999,"y":0.848,"curve":"stepped"},{"time":3.9667,"y":0.584},{"time":4.0333,"curve":"stepped"},{"time":4.0667,"y":0.666,"curve":"stepped"},{"time":4.1333,"y":0.666,"curve":"stepped"},{"time":4.1667,"y":0.724},{"time":4.2333,"y":0.488,"curve":"stepped"},{"time":4.2667,"y":0.548},{"time":4.3333,"y":0.666,"curve":"stepped"},{"time":4.3667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"y":0.666,"curve":"stepped"},{"time":4.6333,"y":0.666,"curve":"stepped"},{"time":4.6667,"y":0.548},{"time":4.7333,"y":0.666,"curve":"stepped"},{"time":4.7667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"y":0.666}],"shear":[{"time":2.8667,"y":6.02,"curve":"stepped"},{"time":3.6667,"y":6.02,"curve":"stepped"},{"time":3.7,"curve":"stepped"},{"time":3.8667},{"time":3.9333,"y":-46.19,"curve":"stepped"},{"time":3.9667,"y":41.73},{"time":4.0333,"curve":"stepped"},{"time":4.1667,"y":-32.91,"curve":"stepped"},{"time":4.2333,"y":-32.91,"curve":"stepped"},{"time":4.2667,"y":19.99,"curve":"stepped"},{"time":4.3333,"y":19.99,"curve":"stepped"},{"time":4.3667},{"time":4.4333,"y":-28.54,"curve":"stepped"},{"time":4.4667,"y":22.75},{"time":4.5333,"y":-19.76,"curve":"stepped"},{"time":4.6333,"y":-19.76,"curve":"stepped"},{"time":4.6667,"y":19.99,"curve":"stepped"},{"time":4.7333,"y":19.99,"curve":"stepped"},{"time":4.7667},{"time":4.8333,"y":-28.54}]},"bone174":{"rotate":[{"time":2.8667,"angle":-4.91},{"time":3.2333,"angle":-3.99,"curve":"stepped"},{"time":3.6667,"angle":-3.99,"curve":"stepped"},{"time":3.7,"angle":10.34},{"time":3.7333,"angle":11.5,"curve":"stepped"},{"time":3.7667,"angle":0.28,"curve":"stepped"},{"time":3.8333,"angle":0.28,"curve":"stepped"},{"time":3.8667,"angle":9.99},{"time":3.9333,"angle":30.82,"curve":"stepped"},{"time":3.9667,"angle":-1.87},{"time":4.0333,"angle":2.14,"curve":"stepped"},{"time":4.0667,"angle":12.6},{"time":4.1333,"angle":6.58,"curve":"stepped"},{"time":4.1667,"angle":8.69,"curve":"stepped"},{"time":4.2333,"angle":8.69,"curve":"stepped"},{"time":4.2667,"angle":-0.86},{"time":4.3333,"angle":2.4,"curve":"stepped"},{"time":4.3667,"angle":8.2,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"angle":7.8,"curve":"stepped"},{"time":4.4667,"angle":-8.26},{"time":4.5333,"angle":-6.48,"curve":"stepped"},{"time":4.5667,"angle":12.6,"curve":"stepped"},{"time":4.6333,"angle":12.6,"curve":"stepped"},{"time":4.6667,"angle":-0.86},{"time":4.7333,"angle":2.4,"curve":"stepped"},{"time":4.7667,"angle":8.2,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"angle":7.8}],"translate":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"y":0.73,"curve":"stepped"},{"time":3.7333,"y":0.73,"curve":"stepped"},{"time":3.7667,"y":0.49,"curve":"stepped"},{"time":3.9333,"y":0.49,"curve":"stepped"},{"time":3.9667,"y":0.73,"curve":"stepped"},{"time":4.0333,"y":0.73,"curve":"stepped"},{"time":4.0667}],"scale":[{"time":2.8667},{"time":3.2333,"y":0.872,"curve":"stepped"},{"time":3.6667,"y":0.872,"curve":"stepped"},{"time":3.7,"x":0.51},{"time":3.7333,"x":0.51,"y":0.876,"curve":"stepped"},{"time":3.7667,"curve":"stepped"},{"time":3.8667},{"time":3.9333,"x":0.999,"y":0.848,"curve":"stepped"},{"time":3.9667,"x":0.51,"y":0.876},{"time":4.0333,"curve":"stepped"},{"time":4.0667,"x":0.51,"curve":"stepped"},{"time":4.1333,"x":0.51,"curve":"stepped"},{"time":4.1667,"x":0.51,"y":0.835},{"time":4.2333,"x":0.51,"curve":"stepped"},{"time":4.3333,"x":0.51,"curve":"stepped"},{"time":4.3667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"x":0.51,"curve":"stepped"},{"time":4.7333,"x":0.51,"curve":"stepped"},{"time":4.7667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"x":0.51}],"shear":[{"time":2.8667,"y":4.46,"curve":"stepped"},{"time":3.6667,"y":4.46,"curve":"stepped"},{"time":3.7,"curve":"stepped"},{"time":3.8667},{"time":3.9333,"y":-27.14,"curve":"stepped"},{"time":3.9667,"y":6.39},{"time":4.0333,"curve":"stepped"},{"time":4.1667,"y":-6.84,"curve":"stepped"},{"time":4.2333,"y":-6.84,"curve":"stepped"},{"time":4.2667,"y":1.62,"curve":"stepped"},{"time":4.3333,"y":1.62,"curve":"stepped"},{"time":4.3667,"curve":"stepped"},{"time":4.4333,"curve":"stepped"},{"time":4.4667,"y":13.51},{"time":4.5333,"y":10.23,"curve":"stepped"},{"time":4.6333,"y":10.23,"curve":"stepped"},{"time":4.6667,"y":1.62,"curve":"stepped"},{"time":4.7333,"y":1.62,"curve":"stepped"},{"time":4.7667}]},"bone167":{"rotate":[{"time":2.8667,"angle":-11.96},{"time":3.2333,"angle":-10.12,"curve":"stepped"},{"time":3.6667,"angle":-10.12,"curve":"stepped"},{"time":3.7,"angle":-0.46},{"time":3.7333,"angle":0.71,"curve":"stepped"},{"time":3.7667,"angle":-10.51,"curve":"stepped"},{"time":3.8333,"angle":-10.51,"curve":"stepped"},{"time":3.8667,"angle":-0.8},{"time":3.9333,"angle":0.88,"curve":"stepped"},{"time":3.9667,"angle":-12.66},{"time":4.0333,"angle":-8.65,"curve":"stepped"},{"time":4.0667,"angle":-1.32},{"time":4.1333,"angle":-1.8,"curve":"stepped"},{"time":4.1667,"angle":1.86,"curve":"stepped"},{"time":4.2333,"angle":1.86,"curve":"stepped"},{"time":4.2667,"angle":-7.76},{"time":4.3333,"angle":-4.5,"curve":"stepped"},{"time":4.3667,"angle":-2.6,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4333,"angle":0.9,"curve":"stepped"},{"time":4.4667,"angle":-4.31},{"time":4.5333,"angle":-2.53,"curve":"stepped"},{"time":4.5667,"angle":-1.32,"curve":"stepped"},{"time":4.6333,"angle":-1.32,"curve":"stepped"},{"time":4.6667,"angle":-7.76},{"time":4.7333,"angle":-4.5,"curve":"stepped"},{"time":4.7667,"angle":-2.6,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.8333,"angle":0.9}],"translate":[{"time":3.6667,"curve":"stepped"},{"time":3.7,"y":0.55,"curve":"stepped"},{"time":3.7333,"y":0.55,"curve":"stepped"},{"time":3.7667,"y":0.37,"curve":"stepped"},{"time":3.9333,"y":0.37,"curve":"stepped"},{"time":3.9667,"y":0.55,"curve":"stepped"},{"time":4.0333,"y":0.55,"curve":"stepped"},{"time":4.0667}],"scale":[{"time":2.8667,"x":0.979,"y":0.979,"curve":"stepped"},{"time":3.6667,"x":0.979,"y":0.979,"curve":"stepped"},{"time":3.7},{"time":3.7333,"y":0.876,"curve":"stepped"},{"time":3.7667,"curve":"stepped"},{"time":3.8667},{"time":3.9333,"x":0.999,"y":0.848,"curve":"stepped"},{"time":3.9667,"y":0.876},{"time":4.0333}],"shear":[{"time":2.8667,"y":6.11,"curve":"stepped"},{"time":3.6667,"y":6.11,"curve":"stepped"},{"time":3.7,"y":-3.19},{"time":3.7333}]},"TX_SK2_shouji1":{"rotate":[{"time":3.9,"curve":"stepped"},{"time":3.9667,"angle":-18.5,"curve":"stepped"},{"time":4.1333,"angle":-18.5,"curve":"stepped"},{"time":4.2667,"angle":-79.17,"curve":"stepped"},{"time":4.4333,"angle":-79.17,"curve":"stepped"},{"time":4.5667,"angle":-7.44}],"translate":[{"time":3.7333,"x":-94.82,"y":2314.79,"curve":"stepped"},{"time":3.9,"x":-94.82,"y":2314.79,"curve":"stepped"},{"time":3.9667,"x":-544.25,"y":3346.8,"curve":"stepped"},{"time":4.1333,"x":-544.25,"y":3346.8,"curve":"stepped"},{"time":4.2667,"x":2402,"y":2897.38,"curve":"stepped"},{"time":4.4333,"x":2402,"y":2897.38,"curve":"stepped"},{"time":4.5667,"x":-648.14,"y":3897.91},{"time":4.7333,"x":-351.27,"y":3703.8}],"scale":[{"time":3.7333,"x":1.593,"y":1.593,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":3.8333,"x":2.683,"y":2.683,"curve":"stepped"},{"time":3.9,"x":2.683,"y":2.683,"curve":"stepped"},{"time":3.9667,"x":1.593,"y":1.593,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.0667,"x":2.683,"y":2.683,"curve":"stepped"},{"time":4.1333,"x":2.683,"y":2.683,"curve":"stepped"},{"time":4.2667,"x":1.593,"y":1.593,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.3667,"x":2.683,"y":2.683,"curve":"stepped"},{"time":4.4333,"x":2.683,"y":2.683,"curve":"stepped"},{"time":4.5667,"x":2.169,"y":2.169,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.6667,"x":3.296,"y":3.296},{"time":4.7333,"x":2.683,"y":2.683}]},"TX_SK2_SHOUJI":{"translate":[{"time":3.7333,"x":506.14,"y":-11.44}]},"TX_SK2_shouji2":{"rotate":[{"time":3.8,"angle":98.28,"curve":"stepped"},{"time":3.9667,"angle":98.28,"curve":"stepped"},{"time":4.0667,"angle":89.6,"curve":"stepped"},{"time":4.2333,"angle":89.6,"curve":"stepped"},{"time":4.3667,"angle":9.17}],"translate":[{"time":3.8,"x":1584.43,"y":2644.01,"curve":"stepped"},{"time":3.9667,"x":1584.43,"y":2644.01,"curve":"stepped"},{"time":4.0667,"x":2516.57,"y":2311.1,"curve":"stepped"},{"time":4.2333,"x":2516.57,"y":2311.1,"curve":"stepped"},{"time":4.3667,"x":-1037.97,"y":2388.38,"curve":"stepped"},{"time":4.5333,"x":-1037.97,"y":2388.38,"curve":"stepped"},{"time":4.6,"x":1491.19,"y":1775.72}],"scale":[{"time":3.8,"x":1.614,"y":1.614,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":3.9,"x":3.014,"y":3.014,"curve":"stepped"},{"time":3.9667,"x":3.014,"y":3.014,"curve":"stepped"},{"time":4.0667,"x":1.614,"y":1.614,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.1667,"x":3.014,"y":3.014,"curve":"stepped"},{"time":4.2333,"x":3.014,"y":3.014,"curve":"stepped"},{"time":4.3667,"x":1.614,"y":1.614,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4667,"x":3.014,"y":3.014,"curve":"stepped"},{"time":4.5333,"x":3.014,"y":3.014,"curve":"stepped"},{"time":4.6,"x":1.614,"y":1.614,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.7,"x":3.014,"y":3.014}]},"TX_SK2_shouji3":{"rotate":[{"time":3.9,"angle":-88.83,"curve":"stepped"},{"time":4.0667,"angle":-88.83,"curve":"stepped"},{"time":4.2,"angle":-111.98,"curve":"stepped"},{"time":4.3667,"angle":-111.98,"curve":"stepped"},{"time":4.4667,"angle":-15.89}],"translate":[{"time":3.9,"x":1094.33,"y":3487.75,"curve":"stepped"},{"time":4.0667,"x":1094.33,"y":3487.75,"curve":"stepped"},{"time":4.2,"x":-137.44,"y":2838.58,"curve":"stepped"},{"time":4.3667,"x":-137.44,"y":2838.58,"curve":"stepped"},{"time":4.4667,"x":2413.19,"y":3189.71,"curve":"stepped"},{"time":4.6333,"x":2413.19,"y":3189.71,"curve":"stepped"},{"time":4.6667,"x":-550.77,"y":2514.75}],"scale":[{"time":3.9,"x":1.513,"y":1.513,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4,"x":2.954,"y":2.954,"curve":"stepped"},{"time":4.0667,"x":2.954,"y":2.954,"curve":"stepped"},{"time":4.2,"x":1.513,"y":1.513,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.3,"x":2.954,"y":2.954,"curve":"stepped"},{"time":4.3667,"x":2.954,"y":2.954,"curve":"stepped"},{"time":4.4667,"x":2.39,"y":2.39,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.5667,"x":3.427,"y":3.427},{"time":4.6333,"x":2.954,"y":2.954,"curve":"stepped"},{"time":4.6667,"x":2.39,"y":2.39,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.7667,"x":3.427,"y":3.427},{"time":4.8333,"x":2.954,"y":2.954}]},"root":{"translate":[{"time":2.2667,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":2.3,"x":-15.67,"y":-14.37},{"time":2.3333,"curve":"stepped"},{"time":3.7},{"time":3.7333,"y":-9.67},{"time":3.7667,"x":13.54,"y":5.8},{"time":3.8,"y":13.54},{"time":3.8333,"x":15.47,"y":5.8},{"time":3.8667,"x":17.4,"y":27.07},{"time":3.9,"x":1.93,"y":29.01},{"time":3.9333,"x":-9.67,"y":17.4},{"time":3.9667,"x":5.8,"y":13.54},{"time":4,"x":13.54,"y":23.21},{"time":4.0333,"y":36.74},{"time":4.0667,"y":23.21},{"time":4.1,"x":15.47,"y":29.01},{"time":4.1333,"x":7.74,"y":40.61},{"time":4.1667,"y":27.07},{"time":4.2,"x":15.47,"y":27.07},{"time":4.2333,"x":15.47,"y":34.81},{"time":4.2667,"x":3.87,"y":30.94},{"time":4.3,"x":9.67,"y":23.21},{"time":4.3333,"x":15.47,"y":29.01},{"time":4.3667,"x":-1.93,"y":30.94},{"time":4.4,"x":-9.67,"y":19.34},{"time":4.4333,"x":-1.93,"y":19.34},{"time":4.4667,"x":3.87,"y":29.01},{"time":4.5,"x":-3.87,"y":17.4},{"time":4.5333,"x":-5.8,"y":30.94},{"time":4.5667,"x":-7.74,"y":21.27},{"time":4.6,"x":1.93,"y":21.27},{"time":4.6333,"x":11.6,"y":19.34},{"time":4.6667,"x":11.6,"y":27.07},{"time":4.7,"x":5.8,"y":29.01},{"time":4.7333}]},"bone75":{"rotate":[{"time":0.1333,"angle":-26.94,"curve":"stepped"},{"time":0.8,"angle":-18,"curve":"stepped"},{"time":0.8333,"angle":-1.21,"curve":"stepped"},{"time":0.8667,"angle":1.74}],"translate":[{"time":0.8,"curve":"stepped"},{"time":0.8333,"x":-5.94,"y":-4.82,"curve":"stepped"},{"time":0.8667,"x":148.7,"y":5.86}],"scale":[{"time":0.1333,"x":0.613,"curve":"stepped"},{"time":0.8,"x":0.477,"curve":"stepped"},{"time":0.8333,"x":0.522}]},"bone76":{"rotate":[{"time":0.1333,"angle":-17.52,"curve":"stepped"},{"time":0.8,"angle":-0.15}]},"bone77":{"rotate":[{"time":0.1333,"angle":-6.45,"curve":"stepped"},{"time":0.8,"angle":14.71,"curve":"stepped"},{"time":0.8333,"angle":16.34}]},"bone78":{"rotate":[{"time":0.1333,"angle":-26.94,"curve":"stepped"},{"time":0.8,"angle":-20.29,"curve":"stepped"},{"time":0.8333,"angle":6.93}]},"bone79":{"rotate":[{"time":0.1333,"angle":-28.29,"curve":"stepped"},{"time":0.8,"angle":-31.2,"curve":"stepped"},{"time":0.8333,"angle":9.14}],"scale":[{"time":0.8,"x":0.705}]},"bone80":{"rotate":[{"time":0.1333,"angle":-34.53,"curve":"stepped"},{"time":0.8,"angle":-103.92,"curve":"stepped"},{"time":0.8333,"angle":11.75}],"scale":[{"time":0.8,"x":0.485}]},"bone81":{"rotate":[{"time":0.1333,"angle":-29.02,"curve":"stepped"},{"time":0.8,"angle":0.83,"curve":"stepped"},{"time":0.8333,"angle":8.84}],"translate":[{"time":0.1333,"x":-4.52,"y":-0.5}],"scale":[{"time":0.8,"x":2.082}]},"bone82":{"rotate":[{"time":0.1333,"angle":-26.94,"curve":"stepped"},{"time":0.8,"angle":-19.51,"curve":"stepped"},{"time":0.8333,"angle":-15.15}],"scale":[{"time":0.8,"x":1.237}]},"bone83":{"rotate":[{"time":0.1333,"angle":-10.43,"curve":"stepped"},{"time":0.8,"angle":-12.58,"curve":"stepped"},{"time":2.8333,"angle":-2.65,"curve":"stepped"},{"time":2.9333,"angle":-2.65},{"time":2.9667,"angle":4.21,"curve":"stepped"},{"time":3.1,"angle":4.21},{"time":3.2},{"time":3.7,"angle":-1.75}],"translate":[{"time":0.1333,"x":-43.12,"y":13.44,"curve":"stepped"},{"time":0.8,"x":-0.15,"y":6.09,"curve":"stepped"},{"time":2.8333}],"scale":[{"time":0.8,"curve":"stepped"},{"time":2.8333,"x":1.188,"y":0.896,"curve":"stepped"},{"time":3.1,"x":1.188,"y":0.896},{"time":3.2}]},"bone178":{"rotate":[{"time":0.1333,"angle":-4.51,"curve":"stepped"},{"time":0.8,"angle":-11.91,"curve":"stepped"},{"time":0.8333,"angle":-3.69,"curve":"stepped"},{"time":2.8333,"angle":-2.65,"curve":"stepped"},{"time":2.9333,"angle":-2.65},{"time":2.9667,"angle":4.21,"curve":"stepped"},{"time":3.1,"angle":4.21},{"time":3.2},{"time":3.7,"angle":-1.75}],"scale":[{"time":0.8,"curve":"stepped"},{"time":2.8333,"x":1.188,"y":0.506,"curve":"stepped"},{"time":3.1,"x":1.188,"y":0.506},{"time":3.2}]},"bone84":{"rotate":[{"time":0.1333,"angle":-3.3,"curve":"stepped"},{"time":0.8,"angle":-10.7,"curve":"stepped"},{"time":0.8333,"angle":-0.3,"curve":"stepped"},{"time":2.8333,"angle":-2.65,"curve":"stepped"},{"time":2.9333,"angle":-2.65},{"time":2.9667,"angle":4.21,"curve":"stepped"},{"time":3.1,"angle":4.21},{"time":3.2},{"time":3.7,"angle":7.7}],"scale":[{"time":0.8,"curve":"stepped"},{"time":2.8333,"x":1.188,"y":0.506,"curve":"stepped"},{"time":3.1,"x":1.188,"y":0.506},{"time":3.2}]},"bone179":{"rotate":[{"time":0.1333,"angle":-19.6,"curve":"stepped"},{"time":0.8,"angle":-12.61,"curve":"stepped"},{"time":0.8333,"angle":-8.3,"curve":"stepped"},{"time":2.8333,"angle":-2.65,"curve":"stepped"},{"time":2.9333,"angle":-2.65},{"time":2.9667,"angle":4.21,"curve":"stepped"},{"time":3.1,"angle":4.21},{"time":3.2},{"time":3.7,"angle":-1.75}],"scale":[{"time":0.8,"curve":"stepped"},{"time":2.8333,"x":1.188,"y":0.506,"curve":"stepped"},{"time":3.1,"x":1.188,"y":0.506},{"time":3.2}]},"bone85":{"rotate":[{"time":0.1333,"angle":-19.6,"curve":"stepped"},{"time":0.8,"angle":-12.61,"curve":"stepped"},{"time":0.8333,"angle":-8.3,"curve":"stepped"},{"time":2.8333,"angle":-2.65,"curve":"stepped"},{"time":2.9333,"angle":-2.65},{"time":2.9667,"angle":4.21,"curve":"stepped"},{"time":3.1,"angle":4.21},{"time":3.2},{"time":3.7,"angle":-1.75}],"scale":[{"time":0.8,"curve":"stepped"},{"time":2.8333,"x":1.188,"y":0.506,"curve":"stepped"},{"time":3.1,"x":1.188,"y":0.506},{"time":3.2}]},"bone180":{"rotate":[{"time":0.1333,"angle":-8.63,"curve":"stepped"},{"time":0.8,"angle":4.58,"curve":"stepped"},{"time":0.8333,"angle":6.59,"curve":"stepped"},{"time":2.8333,"angle":-2.65,"curve":"stepped"},{"time":2.9333,"angle":-2.65},{"time":2.9667,"angle":4.21,"curve":"stepped"},{"time":3.1,"angle":4.21},{"time":3.2},{"time":3.7,"angle":-1.75}],"scale":[{"time":0.8,"curve":"stepped"},{"time":2.8333,"x":1.188,"y":5.688,"curve":"stepped"},{"time":3.1,"x":1.188,"y":5.688},{"time":3.2}]},"bone86":{"rotate":[{"time":0.1333,"angle":-11.41,"curve":"stepped"},{"time":0.8,"angle":1.8,"curve":"stepped"},{"time":0.8333,"angle":3.8,"curve":"stepped"},{"time":2.8333,"angle":-2.65,"curve":"stepped"},{"time":2.9333,"angle":-2.65},{"time":2.9667,"angle":4.21,"curve":"stepped"},{"time":3.1,"angle":4.21},{"time":3.2},{"time":3.7,"angle":-1.75}],"scale":[{"time":0.8,"curve":"stepped"},{"time":2.8333,"x":1.188,"y":6.458,"curve":"stepped"},{"time":3.1,"x":1.188,"y":6.458},{"time":3.2}]},"bone181":{"rotate":[{"time":0.1333,"angle":-30.24,"curve":"stepped"},{"time":0.8,"angle":-1.94,"curve":"stepped"},{"time":0.8333,"angle":0.07,"curve":"stepped"},{"time":2.8333,"angle":-2.65,"curve":"stepped"},{"time":2.9333,"angle":-2.65},{"time":2.9667,"angle":4.21,"curve":"stepped"},{"time":3.1,"angle":4.21},{"time":3.2},{"time":3.7,"angle":-1.75}],"scale":[{"time":0.8,"curve":"stepped"},{"time":2.8333,"x":1.188,"y":2.337,"curve":"stepped"},{"time":3.1,"x":1.188,"y":2.337},{"time":3.2}]},"bone87":{"rotate":[{"time":0.1333,"angle":-30.24,"curve":"stepped"},{"time":0.8,"angle":-2.34,"curve":"stepped"},{"time":0.8333,"angle":-0.33,"curve":"stepped"},{"time":2.8333,"angle":-2.65,"curve":"stepped"},{"time":2.9333,"angle":-2.65},{"time":2.9667,"angle":4.21,"curve":"stepped"},{"time":3.1,"angle":4.21},{"time":3.2},{"time":3.7,"angle":-1.75}],"scale":[{"time":0.8,"curve":"stepped"},{"time":2.8333,"x":1.188,"y":0.878,"curve":"stepped"},{"time":3.1,"x":1.188,"y":0.878},{"time":3.2}]},"bone177":{"rotate":[{"time":0.1333,"angle":-23.5,"curve":"stepped"},{"time":0.8,"angle":-2.46,"curve":"stepped"},{"time":0.8333,"angle":-0.45,"curve":"stepped"},{"time":2.8333,"angle":-2.65,"curve":"stepped"},{"time":2.9333,"angle":-2.65},{"time":2.9667,"angle":4.21,"curve":"stepped"},{"time":3.1,"angle":4.21},{"time":3.2},{"time":3.7,"angle":-1.75}],"scale":[{"time":0.8,"curve":"stepped"},{"time":2.8333,"x":1.188,"y":0.506,"curve":"stepped"},{"time":3.1,"x":1.188,"y":0.506},{"time":3.2}]},"bone182":{"rotate":[{"time":0.1333,"angle":-23.5,"curve":"stepped"},{"time":0.8,"angle":-2.46,"curve":"stepped"},{"time":0.8333,"angle":-0.45,"curve":"stepped"},{"time":2.8333,"angle":-2.65,"curve":"stepped"},{"time":2.9333,"angle":-2.65},{"time":2.9667,"angle":4.21,"curve":"stepped"},{"time":3.1,"angle":4.21},{"time":3.2},{"time":3.7,"angle":-1.75}],"scale":[{"time":0.8,"curve":"stepped"},{"time":2.8333,"x":1.188,"y":0.506,"curve":"stepped"},{"time":3.1,"x":1.188,"y":0.506},{"time":3.2}]},"bone188":{"rotate":[{"time":0.1333,"angle":26.54,"curve":"stepped"},{"time":0.8,"angle":15.14},{"time":0.8333,"angle":-4.16},{"time":0.8667,"angle":-10.03}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":115.66,"y":19.12},{"time":0.8667}],"scale":[{"time":0.1333,"x":0.986,"curve":"stepped"},{"time":0.8,"x":1.098,"y":1.067},{"time":0.8333,"x":0.818,"y":0.697},{"time":0.8667}]},"bone187":{"rotate":[{"time":0.1333,"angle":14.61,"curve":"stepped"},{"time":0.8,"angle":24.25},{"time":0.8333,"angle":11.02},{"time":0.8667,"angle":-6.21}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":163.6,"y":-4.63},{"time":0.8667}],"scale":[{"time":0.1333,"x":0.986,"curve":"stepped"},{"time":0.8,"x":0.951,"y":0.681},{"time":0.8333,"x":0.818,"y":0.697},{"time":0.8667}],"shear":[{"time":0.8,"y":43.44}]},"bone191":{"rotate":[{"time":0.1333,"angle":19.04,"curve":"stepped"},{"time":0.8,"angle":9.64},{"time":0.8333,"angle":-1.97},{"time":0.8667,"angle":8.58}],"scale":[{"time":0.1333,"x":0.986,"curve":"stepped"},{"time":0.8,"x":0.951,"y":0.977},{"time":0.8333,"x":2.19,"y":7.922},{"time":0.8667}]},"bone192":{"rotate":[{"time":0.1333,"angle":23.28,"curve":"stepped"},{"time":0.8,"angle":13.8},{"time":0.8333,"angle":-1.73},{"time":0.8667,"angle":6.83}],"scale":[{"time":0.1333,"x":0.986,"curve":"stepped"},{"time":0.8,"x":0.951,"y":0.739},{"time":0.8333,"x":0.818,"y":0.75},{"time":0.8667}]},"bone197":{"rotate":[{"time":0.1333,"angle":22.97,"curve":"stepped"},{"time":0.8,"angle":11.12},{"time":0.8333,"angle":-2.92},{"time":0.8667,"angle":5.15}],"scale":[{"time":0.1333,"x":0.986,"curve":"stepped"},{"time":0.8,"x":0.951,"y":0.681},{"time":0.8333,"x":0.818,"y":0.355},{"time":0.8667}]},"bone193":{"rotate":[{"time":0.1333,"angle":23.45,"curve":"stepped"},{"time":0.8,"angle":12.31},{"time":0.8333,"angle":-1.04},{"time":0.8667,"angle":7.77,"curve":"stepped"},{"time":3.7,"curve":"stepped"},{"time":4},{"time":4.0333,"angle":-6.59}],"scale":[{"time":0.1333,"x":0.986,"curve":"stepped"},{"time":0.8,"x":0.951,"y":0.681},{"time":0.8333,"x":0.818,"y":0.697},{"time":0.8667,"curve":"stepped"},{"time":3.7667},{"time":4,"x":1.444},{"time":4.0333,"x":1.655,"y":0.481}]},"bone198":{"rotate":[{"time":0.1333,"angle":23.45,"curve":"stepped"},{"time":0.8,"angle":12.31},{"time":0.8333,"angle":-1.04},{"time":0.8667,"angle":7.77}],"scale":[{"time":0.1333,"x":0.986,"curve":"stepped"},{"time":0.8,"x":0.951,"y":0.681},{"time":0.8333,"x":0.818,"y":0.697},{"time":0.8667}]},"bone194":{"rotate":[{"time":0.1333,"angle":23.45,"curve":"stepped"},{"time":0.8,"angle":12.31},{"time":0.8333,"angle":-1.04},{"time":0.8667,"angle":7.77,"curve":"stepped"},{"time":3.7}],"scale":[{"time":0.1333,"x":0.986,"curve":"stepped"},{"time":0.8,"x":0.951,"y":0.681},{"time":0.8333,"x":0.818,"y":0.573},{"time":0.8667,"curve":"stepped"},{"time":3.7667},{"time":4,"x":1.444},{"time":4.0333,"x":1.655}]},"bone199":{"rotate":[{"time":0.1333,"angle":23.45,"curve":"stepped"},{"time":0.8,"angle":12.31},{"time":0.8333,"angle":-1.04},{"time":0.8667,"angle":7.77,"curve":"stepped"},{"time":3.7}],"scale":[{"time":0.1333,"x":0.986,"curve":"stepped"},{"time":0.8,"x":0.951,"y":0.681},{"time":0.8333,"x":0.818,"y":0.697},{"time":0.8667,"curve":"stepped"},{"time":3.7667},{"time":4,"x":1.444},{"time":4.0333,"x":1.655}]},"bone195":{"rotate":[{"time":0.1333,"angle":23.45,"curve":"stepped"},{"time":0.8,"angle":12.31},{"time":0.8333,"angle":-1.04},{"time":0.8667,"angle":7.77,"curve":"stepped"},{"time":3.7}],"scale":[{"time":0.1333,"x":0.986,"curve":"stepped"},{"time":0.8,"x":0.951,"y":0.681},{"time":0.8333,"x":0.818,"y":0.697},{"time":0.8667,"curve":"stepped"},{"time":3.7667},{"time":4,"x":1.444},{"time":4.0333,"x":1.655}]},"bone200":{"rotate":[{"time":0.1333,"angle":23.45,"curve":"stepped"},{"time":0.8,"angle":12.31},{"time":0.8333,"angle":-1.02},{"time":0.8667,"angle":7.77,"curve":"stepped"},{"time":3.7}],"scale":[{"time":0.1333,"x":0.986,"curve":"stepped"},{"time":0.8,"x":0.951,"y":0.681},{"time":0.8333,"x":0.818,"y":0.697},{"time":0.8667,"curve":"stepped"},{"time":3.7667},{"time":4,"x":1.444},{"time":4.0333,"x":1.655}]},"bone196":{"rotate":[{"time":0.1333,"angle":21.01,"curve":"stepped"},{"time":0.8,"angle":12.31},{"time":0.8333,"angle":-1.04},{"time":0.8667,"angle":7.77,"curve":"stepped"},{"time":3.7}],"scale":[{"time":0.1333,"x":0.986,"curve":"stepped"},{"time":0.8,"x":0.951,"y":0.681},{"time":0.8333,"x":0.818,"y":0.697},{"time":0.8667,"curve":"stepped"},{"time":3.7667},{"time":4,"x":1.444},{"time":4.0333,"x":1.655}]},"bone201":{"rotate":[{"time":0.1333,"angle":21.01,"curve":"stepped"},{"time":0.8,"angle":12.31},{"time":0.8333,"angle":-0.32},{"time":0.8667,"angle":7.77,"curve":"stepped"},{"time":3.7}],"scale":[{"time":0.1333,"x":0.986,"curve":"stepped"},{"time":0.8,"x":0.951,"y":0.681},{"time":0.8333,"x":0.818,"y":0.697},{"time":0.8667,"curve":"stepped"},{"time":3.7667},{"time":4,"x":1.444},{"time":4.0333,"x":1.655}]},"bone189":{"rotate":[{"time":0.1333,"angle":26.39,"curve":"stepped"},{"time":0.8,"angle":13.34},{"time":0.8333,"angle":-5.87},{"time":0.8667}],"scale":[{"time":0.1333,"x":0.986,"curve":"stepped"},{"time":0.8,"x":0.951,"y":1.145},{"time":0.8333,"x":0.818,"y":0.697},{"time":0.8667}]},"bone186":{"rotate":[{"time":0.1333,"angle":29.81,"curve":"stepped"},{"time":0.8,"angle":72.72},{"time":0.8333,"angle":8.4},{"time":0.8667}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":37.23,"y":74.88},{"time":0.8333,"x":36.32,"y":-2.75},{"time":0.8667}],"scale":[{"time":0.1333,"x":0.986,"curve":"stepped"},{"time":0.8,"x":0.713,"y":0.681},{"time":0.8333,"x":0.718,"y":0.697},{"time":0.8667}]},"bone185":{"rotate":[{"time":0.1333,"angle":36.16,"curve":"stepped"},{"time":0.8,"angle":28.86},{"time":0.8333,"angle":12.17},{"time":0.8667}],"scale":[{"time":0.1333,"x":0.986,"curve":"stepped"},{"time":0.8,"x":0.951,"y":0.681},{"time":0.8333,"x":0.818,"y":0.697},{"time":0.8667}]},"bone190":{"rotate":[{"time":0.1333,"angle":23.97,"curve":"stepped"},{"time":0.8,"angle":10.07},{"time":0.8333,"angle":-10.26},{"time":0.8667}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":22.69,"y":11.41},{"time":0.8667}],"scale":[{"time":0.1333,"x":0.986,"curve":"stepped"},{"time":0.8,"x":0.951,"y":0.898},{"time":0.8333,"x":0.818,"y":0.697},{"time":0.8667}]},"bone183":{"rotate":[{"time":0.1333,"angle":-5.42,"curve":"stepped"},{"time":0.8,"angle":-2.85},{"time":0.8333,"angle":-3.86},{"time":0.8667}],"translate":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"x":-36.94,"y":-6.69,"curve":"stepped"},{"time":0.8667}],"scale":[{"time":0.1333,"x":0.986,"curve":"stepped"},{"time":0.8,"x":0.951,"y":0.681},{"time":0.8333,"x":0.818,"y":0.697},{"time":0.8667}]},"bone184":{"rotate":[{"time":0.1333,"angle":19.25,"curve":"stepped"},{"time":0.8,"angle":-15.23},{"time":0.8333,"angle":7.42},{"time":0.8667}],"scale":[{"time":0.1333,"x":0.986,"curve":"stepped"},{"time":0.8,"x":0.951,"y":0.681},{"time":0.8333,"x":0.818,"y":0.697},{"time":0.8667}]},"bone304":{"rotate":[{"time":3.2333,"angle":3.39},{"time":3.6667,"angle":2.11}]},"bone302":{"rotate":[{"time":3.2333},{"time":3.6667,"angle":-1.8}]},"bone312":{"rotate":[{"time":3.2333},{"time":3.6667,"angle":-1.8}]},"bone311":{"rotate":[{"time":3.2333},{"time":3.6667,"angle":-1.8}]},"bone314":{"rotate":[{"time":3.2333},{"time":3.6667,"angle":6.06}]},"bone306":{"rotate":[{"time":3.2333,"angle":-8.82},{"time":3.6667,"angle":-8.27}]},"bone310":{"rotate":[{"time":3.2333},{"time":3.6667,"angle":-1.8}]},"bone301":{"rotate":[{"time":3.2333,"angle":-3.13},{"time":3.6667,"angle":-1.8}],"scale":[{"time":3.2333},{"time":3.6667,"y":2.67}]},"bone307":{"rotate":[{"time":3.2333},{"time":3.6667,"angle":-1.8}]},"bone305":{"rotate":[{"time":3.2333,"angle":-4.19},{"time":3.6667,"angle":-1.8}]},"bone313":{"rotate":[{"time":3.2333},{"time":3.6667,"angle":-1.8}]},"bone308":{"rotate":[{"time":3.2333},{"time":3.6667,"angle":-1.8}]},"bone309":{"rotate":[{"time":3.2333},{"time":3.6667,"angle":6.06}]},"bone300":{"rotate":[{"time":3.2333,"angle":4.9},{"time":3.6667,"angle":-4.13}],"scale":[{"time":3.2333},{"time":3.6667,"y":2.16}]},"bone299":{"rotate":[{"time":3.2333},{"time":3.6667,"angle":-1.8}]},"bone303":{"rotate":[{"time":3.2333},{"time":3.6667,"angle":0.03}]},"bone298":{"rotate":[{"time":3.2333},{"time":3.6667,"angle":-1.8}]},"bone316":{"rotate":[{"time":3.2333},{"time":3.6667,"angle":-1.8}]},"bone315":{"rotate":[{"time":3.2333},{"time":3.6667,"angle":-1.8}]},"TX_SK2_shouji4":{"rotate":[{"time":3.8667,"curve":"stepped"},{"time":3.9,"angle":-34.38,"curve":"stepped"},{"time":4.0667,"angle":-34.38,"curve":"stepped"},{"time":4.1,"curve":"stepped"},{"time":4.4667,"curve":"stepped"},{"time":4.5,"angle":-12.11}],"translate":[{"time":3.7,"x":1211.13,"y":3117.16,"curve":"stepped"},{"time":3.8667,"x":1211.13,"y":3117.16,"curve":"stepped"},{"time":3.9,"x":-1313.13,"y":2275.74,"curve":"stepped"},{"time":4.0667,"x":-1313.13,"y":2275.74,"curve":"stepped"},{"time":4.1,"x":-261.36,"y":1247.34,"curve":"stepped"},{"time":4.2667,"x":-261.36,"y":1247.34,"curve":"stepped"},{"time":4.3,"x":1515.49,"y":1290.98,"curve":"stepped"},{"time":4.4667,"x":1515.49,"y":1290.98,"curve":"stepped"},{"time":4.5,"x":-817.96,"y":4368.44}],"scale":[{"time":3.7,"x":2.601,"y":2.601,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":3.8667,"x":4.047,"y":4.047,"curve":"stepped"},{"time":3.9,"x":2.601,"y":2.601,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.0667,"x":4.047,"y":4.047,"curve":"stepped"},{"time":4.1,"x":2.601,"y":2.601,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.2667,"x":4.047,"y":4.047,"curve":"stepped"},{"time":4.3,"x":2.601,"y":2.601,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.4667,"x":4.047,"y":4.047,"curve":"stepped"},{"time":4.5,"x":2.601,"y":2.601,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":4.6667,"x":4.047,"y":4.047}]},"TX_SK2_shouji_xian8":{"rotate":[{"time":3.8667},{"time":3.9,"angle":-34.38},{"time":4.0667}]},"TX_SK2_shouji_xian7":{"rotate":[{"time":3.8667},{"time":3.9,"angle":-34.38},{"time":4.0667}]},"TX_SHUYE":{"rotate":[{"time":3.7,"angle":-3.79},{"time":3.8333,"angle":19.78},{"time":3.8667,"angle":5.47},{"time":4,"angle":37.62},{"time":4.0333,"angle":118.19},{"time":4.1333,"angle":127.94},{"time":4.1667,"angle":53},{"time":4.2667,"angle":59.67},{"time":4.3,"angle":-3.79},{"time":4.4333,"angle":19.78},{"time":4.4667,"angle":5.47},{"time":4.6,"angle":37.62},{"time":4.6333,"angle":118.19},{"time":4.7667,"angle":141.92}],"translate":[{"time":3.7,"x":2782,"y":2149.65},{"time":3.8333,"x":178.02,"y":3746.97},{"time":3.8667,"x":3479.23,"y":2013.18},{"time":4,"x":6809.44,"y":3842.52},{"time":4.0333,"x":2478.1,"y":1561.13},{"time":4.1333,"x":-894.39,"y":-224.31},{"time":4.1667,"x":3657.95,"y":1745.25},{"time":4.2667,"x":6861.4,"y":257.93},{"time":4.3,"x":2782,"y":2149.65},{"time":4.4333,"x":178.02,"y":3746.97},{"time":4.4667,"x":3479.23,"y":2013.18},{"time":4.6,"x":6809.44,"y":3842.52},{"time":4.6333,"x":2478.1,"y":1561.13},{"time":4.7667,"x":1632.46,"y":1029.83}],"scale":[{"time":3.7,"x":1.588,"y":1.588,"curve":"stepped"},{"time":3.8333,"x":1.588,"y":1.588},{"time":3.8667,"x":1.503,"y":1.503},{"time":4,"x":2.981,"y":2.981},{"time":4.0333,"x":1.995,"y":1.995,"curve":"stepped"},{"time":4.1667,"x":1.995,"y":1.995},{"time":4.2667,"x":2.721,"y":2.721},{"time":4.3,"x":1.588,"y":1.588,"curve":"stepped"},{"time":4.4333,"x":1.588,"y":1.588},{"time":4.4667,"x":1.503,"y":1.503},{"time":4.6,"x":2.981,"y":2.981},{"time":4.6333,"x":1.995,"y":1.995},{"time":4.7667,"x":2.981,"y":2.981}]},"TX_SK2_LIUGUANG":{"rotate":[{"time":0.1333,"angle":-58.86},{"time":0.1667,"angle":93.63},{"time":0.2,"angle":-100.36},{"time":0.2333,"angle":-58.86},{"time":0.2667,"angle":93.63},{"time":0.3,"angle":-100.36},{"time":0.3333,"angle":-58.86},{"time":0.3667,"angle":93.63},{"time":0.4,"angle":-100.36},{"time":0.4333,"angle":-58.86},{"time":0.4667,"angle":93.63},{"time":0.5,"angle":-100.36},{"time":0.5333,"angle":-58.86},{"time":0.5667,"angle":93.63},{"time":0.6,"angle":-100.36},{"time":0.6333,"angle":-58.86},{"time":0.6667,"angle":93.63},{"time":0.7,"angle":-100.36},{"time":0.7333,"angle":-58.86},{"time":0.7667,"angle":93.63,"curve":"stepped"},{"time":0.8,"angle":-58.64}],"translate":[{"time":0.1333,"x":-628.84,"y":2014.31,"curve":0.073,"c2":0.66,"c3":0.75},{"time":0.7667,"x":-840.11,"y":2142.22,"curve":"stepped"},{"time":0.8,"x":-1124.25,"y":2023.25}],"scale":[{"time":0.1333,"x":-1,"y":-1},{"time":0.7667,"x":-1.14,"y":-1.14}]},"TX_SK2_LIUGUANG2":{"rotate":[{"time":0.1333},{"time":0.1667,"angle":90},{"time":0.2,"angle":180},{"time":0.2333,"angle":-90},{"time":0.2667},{"time":0.3,"angle":90},{"time":0.3333,"angle":180},{"time":0.3667,"angle":-90},{"time":0.4},{"time":0.4333,"angle":90},{"time":0.4667,"angle":180},{"time":0.5,"angle":-90},{"time":0.5333},{"time":0.5667,"angle":90},{"time":0.6,"angle":180},{"time":0.6333,"angle":-90},{"time":0.6667},{"time":0.7,"angle":90},{"time":0.7333,"angle":180},{"time":0.7667,"angle":-90},{"time":0.8,"angle":104.46,"curve":"stepped"},{"time":0.8667,"angle":-18.44}],"translate":[{"time":0.1333,"x":-194.1,"y":2103.23},{"time":0.7667,"x":-409.9,"y":2297.59},{"time":0.8,"x":-380.75,"y":2956.07,"curve":"stepped"},{"time":0.8667,"x":-7851.26,"y":-14965.22}],"scale":[{"time":0.1333,"x":-1},{"time":0.7667,"x":-1.121,"y":1.121}]},"TX/huiji6":{"rotate":[{"time":3.8667},{"time":3.9667,"angle":-0.28,"curve":"stepped"},{"time":4,"angle":-3.33},{"time":4.0333,"angle":-1.92,"curve":"stepped"},{"time":4.0667},{"time":4.1,"angle":-2.16},{"time":4.1333}]},"TX/huiji5":{"rotate":[{"time":3.9667,"curve":"stepped"},{"time":4,"angle":6},{"time":4.0333,"angle":7.02,"curve":"stepped"},{"time":4.0667},{"time":4.1,"angle":3.11},{"time":4.1333,"curve":"stepped"},{"time":4.3333},{"time":4.4,"angle":0.51,"curve":"stepped"},{"time":4.4333,"curve":"stepped"},{"time":4.5333},{"time":4.6,"angle":-0.86}]},"TX/huiji4":{"rotate":[{"time":3.7,"angle":-2.96},{"time":3.7667,"curve":"stepped"},{"time":3.9667,"curve":"stepped"},{"time":4,"angle":-5.61},{"time":4.0333,"angle":-6.46,"curve":"stepped"},{"time":4.0667},{"time":4.1,"angle":-4.32},{"time":4.1333,"curve":"stepped"},{"time":4.2,"curve":"stepped"},{"time":4.2333,"angle":-0.01,"curve":"stepped"},{"time":4.2667},{"time":4.3,"angle":-3.81,"curve":"stepped"},{"time":4.3333},{"time":4.4,"angle":-4.56,"curve":"stepped"},{"time":4.4333},{"time":4.5,"angle":-1.14,"curve":"stepped"},{"time":4.5333},{"time":4.6,"angle":-5.99}],"scale":[{"time":3.9667,"curve":"stepped"},{"time":4,"x":0.727},{"time":4.0333,"x":0.692,"y":0.812,"curve":"stepped"},{"time":4.0667}]},"TX/huiji3":{"rotate":[{"time":3.7,"angle":-1.95},{"time":3.7667,"curve":"stepped"},{"time":3.9667,"curve":"stepped"},{"time":4,"angle":-3.96},{"time":4.0333,"angle":-4.62,"curve":"stepped"},{"time":4.0667},{"time":4.1,"angle":-6.02},{"time":4.1333,"curve":"stepped"},{"time":4.2667},{"time":4.3,"angle":-4.09,"curve":"stepped"},{"time":4.3333,"angle":-4.55},{"time":4.4,"angle":-5.56,"curve":"stepped"},{"time":4.4333},{"time":4.5,"angle":1.71,"curve":"stepped"},{"time":4.5333,"angle":-0.59},{"time":4.6,"angle":-2.72}],"scale":[{"time":3.9667,"curve":"stepped"},{"time":4,"x":0.654,"y":0.708},{"time":4.0333,"x":0.832,"y":0.898,"curve":"stepped"},{"time":4.0667}]},"TX/huiji2":{"rotate":[{"time":3.7,"angle":-13.05},{"time":3.7333,"angle":-15.41},{"time":3.7667,"curve":"stepped"},{"time":3.8667,"angle":-6.99},{"time":3.9667,"angle":-4.76,"curve":"stepped"},{"time":4,"angle":-18.37},{"time":4.0333,"angle":-23.56,"curve":"stepped"},{"time":4.0667,"angle":-14.65},{"time":4.1,"angle":-27.21},{"time":4.1333},{"time":4.2,"angle":-18.9,"curve":"stepped"},{"time":4.2667,"angle":-8.33},{"time":4.3,"angle":-20.59,"curve":"stepped"},{"time":4.3333,"angle":-9.45},{"time":4.4,"angle":-21.11,"curve":"stepped"},{"time":4.4333,"angle":-15.26},{"time":4.5,"angle":-20.37,"curve":"stepped"},{"time":4.5333,"angle":-15.9},{"time":4.6,"angle":-22.75}],"scale":[{"time":3.9667,"curve":"stepped"},{"time":4,"x":0.864,"y":0.802},{"time":4.0333,"y":0.864,"curve":"stepped"},{"time":4.0667}]},"TX/huiji1":{"rotate":[{"time":3.7},{"time":3.7333,"angle":-14.5},{"time":3.7667,"curve":"stepped"},{"time":4},{"time":4.0333,"angle":-11.8,"curve":"stepped"},{"time":4.0667},{"time":4.1,"angle":-6.38},{"time":4.1333},{"time":4.2,"angle":-11.16,"curve":"stepped"},{"time":4.2667,"curve":"stepped"},{"time":4.3333},{"time":4.4,"angle":-11.44,"curve":"stepped"},{"time":4.4333,"angle":-14.52},{"time":4.5,"angle":-8.87,"curve":"stepped"},{"time":4.5333,"angle":-8.39},{"time":4.6}],"scale":[{"time":3.7,"x":1.393},{"time":3.7333,"x":2.451},{"time":3.7667,"x":3.058,"curve":"stepped"},{"time":3.8667,"x":1.539},{"time":3.9667,"x":2.473,"curve":"stepped"},{"time":4},{"time":4.0333,"x":0.814,"curve":"stepped"},{"time":4.0667},{"time":4.1,"x":1.061},{"time":4.1333}]}},"deform":{"default":{"TX/suduxian_mi1":{"TX/suduxian_mi":[{"time":0.8667,"offset":2,"curve":"stepped","vertices":[17.42472,-0.66183,14.74401,-0.26472,0,0.00003,15.81464,-0.22309,-22.59148,-0.55777,-3.38814,0.22316,-19.20297,-0.55777,0,0.00003,-0.00001,0.00003,0,0.00003,0,0.00003,0,0.00003,0,0.00003,-19.20297,-0.55777,-3.38814,0.22314,-22.59149,-0.55777,15.81464,-0.22308,0,0.00003,14.74401,-0.26471,17.42471,-0.66183]},{"time":1.5,"offset":2,"curve":"stepped","vertices":[17.42472,-0.66183,14.74401,-0.26472,0,0.00003,15.81464,-0.22309,-22.59148,-0.55777,-3.38814,0.22316,-19.20297,-0.55777,0,0.00003,-0.00001,0.00003,0,0.00003,0,0.00003,0,0.00003,0,0.00003,-19.20297,-0.55777,-3.38814,0.22314,-22.59149,-0.55777,15.81464,-0.22308,0,0.00003,14.74401,-0.26471,17.42471,-0.66183]},{"time":1.5333}]},"BZ/z_bianzi5_liuguang2":{"TX/z_bianzi2_bz_liuguang":[{"time":2.4,"offset":46,"vertices":[2.18103,3.64355,2.54321,3.40051,3.8194,6.72571,4.08112,6.57031,4.4892,6.29834,0.42914,7.24097,0.71362,7.21851,1.16949,7.15869,0.21954,11.09363,0.65582,11.07642,1.35632,11.0127,0.35394,3.7561,0.5014,3.73926,0.7373,3.69995,-0.00653,0.34082,0.02844,0.3396]}]},"TX/liuguang2":{"TX/liuguang":[{"time":0.1333,"curve":"stepped"},{"time":0.8,"offset":42,"vertices":[-52.88123,43.80467,-29.59665,39.13467,-16.87362,86.75342,18.90198,12.52589,25.6889,24.88766,17.99152,9.99837,23.68666,19.57117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4.10718,-6.53404,1.903,-14.39957,15.82193,-8.92131,13.78947,-20.69687,36.27469,-35.41405,25.66886,-79.46637,-5.36755,-40.21017,0,0,-3.02826,-8.40891,-6.66037,-17.68744]},{"time":0.8333,"offset":4,"vertices":[19.54242,-160.70084,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48.80847,160.22522,111.68561,182.14752,0,0,0,0,158.91457,131.53748,-7.73581,191.16458,-58.1781,379.28333,36.92545,236.15852,194.9556,-193.9701,21.78458,-134.05399,-50.85619,56.86216,-23.53043,37.44158,-13.74074,80.6084,8.20713,13.70463,14.02,27.77835,13.70359,11.68182,21.14,23.15052,21.04642,-1.89449,0,0,0,0,0,0,0,0,0,0,0,0,-13.94287,-45.51697,-19.22058,-78.53363,1.92761,-137.55505,0,0,0,0,24.74438,28.29605,12.95642,28.24438,11.98157,19.1507,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28.18494,-9.34215,-9.6958,50.73022,-1.03235,32.64984,0,-0.00006,0,0,0,0,0,0,0,0,0,0,0,0,10.00986,-16.1887,11.11701,-16.92356,8.38778,-35.81225,-7.37678,-23.43919,-18.04743,-47.75063,34.76871,-50.11958,23.57977,-107.30221,23.6358,-64.18858,15.33911,-8.55074,-0.15647,-10.24744,-3.79302,-21.31989,8.71365,6.64283,14.94846,13.00429,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-26.0426,-26.052,-25.81238,-12.87665]},{"time":0.8667}]},"TX/liuguang7_BZH":{"TX/liuguang":[{"time":3.2333},{"time":3.6667,"vertices":[21.63428,-39.51409,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5.87369,374.56708,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.61021,-4.34329,2.89746,6.8098,4.24423,-5.84271,-8.73123,-9.74702,2.34161,-23.96526,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.19186,6.61809,2.70251,29.93909,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.64478,-18.40808,2.46449,-8.00671,0.60396,1.9809,0.506,1.05664,0,0,0,0,3.0336,-13.3022,4.77594,-13.11884,0,0,4.61411,-9.71657,0.79022,4.88179,1.43066,4.8299,5.13992,-1.61565,4.91141,-1.85127,0.39606,6.97397,0.48988,18.61353,0.25317,-0.41636,0.24716,-1.11472,2.26517,15.06149,1.27141,-0.94943]}]},"TX_SK2_liuguang":{"TX/liuguang":[{"time":0.1333,"offset":8,"curve":"stepped","vertices":[-55.07384,56.55447,0,0,0,0,0,0,2.49583,-31.31964,-113.2519,-115.95013,0,0,0,0,-15.93494,-46.08429,0,0,0,0,-19.31482,-25.59821,8.15268,-4.72626,-11.10028,-16.48187,3.65472,-22.17407,9.3177,-24.98431,19.72873,-19.95178,-16.61922,-31.40466,-2.89555,-1.66626,-1.07516,-3.27521,-4.68039,-5.26312,1.41434,-6.98956,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-24.19867,12.36871,0,0,0,0,0,0,0,0,0,0,0.48851,18.48657,-22.15225,12.56543,-7.54405,32.79059,-48.35199,15.96796,-29.93875,36.15613]},{"time":0.8,"offset":8,"vertices":[-133.08044,29.55978,0,0,0,0,0,0,2.49583,-31.31964,-113.2519,-115.95013,0,0,0,0,-15.93494,-46.08429,0,0,0,0,-13.98282,-15.32324,15.46515,31.02167,-6.72816,18.56793,-2.01085,7.93835,2.92383,6.90887,55.37485,-6.15546,-9.49514,-10.19714,-10.1627,2.78857,-10.02985,3.24829,-8.95023,0.59113,-2.17617,-0.08606,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26.92078,-21.47852,0,0,0,0,11.21277,-15.96365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-24.19867,12.36871,0,0,43.20845,10.42584,0,0,7.12284,-15.38062,3.09149,-16.84381,-11.25008,-15.83496,-58.05038,-16.28284,-13.61645,-4.2027,-76.85394,-17.20636,-29.04955,4.50513]},{"time":0.8667,"vertices":[-35.60992,-18.39523,0,0,3.81641,10.64566,0,0,-133.08044,29.55978,0,0,0,0,0,0,-65.61769,-12.11316,-564.89886,-11.71234,-379.00696,38.76126,-249.87726,100.47086,-94.64844,54.17532,148.99768,7.85044,162.95721,16.34817,154.04318,5.60282,300.9593,52.76501,-49.09546,194.69983,65.23867,74.99632,12.93967,52.74705,84.23016,0.86161,-3.75689,21.73055,-10.1627,2.78857,-10.02985,3.24829,-8.40173,-3.00559,-2.76275,-3.16965,-3.10559,5.85523,-1.73724,6.33306,0.04739,3.05761,-14.19885,7.20822,0,0.00001,0.9743,6.24973,0,0,0,0,0,0,0,0,26.92078,-21.47852,0,0,0,0,11.21277,-15.96365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-12.44363,2.63734,-8.77864,8.69318,-3.54642,8.22238,-13.11565,4.52826,6.6051,6.03364,-15.8709,11.52137,-14.909,12.34088,-42.57635,9.55122,-91.0166,11.32693,-43.78601,-13.3391,-125.23224,-21.30423,-42.86361,-44.62117,0,0,-5.4828,10.07644,-3.20667,10.92991,-3.96345,8.57626,-1.62488,9.14455,-3.83594,6.94678,-3.28052,7.01947,0.43002,10.76453,1.2854,10.74712,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-20.22455,7.69176,-18.48212,8.74561,0,0,0,0,-4.22394,6.35324,-0.10937,5.57853]}]},"TX/TX_yan1_1":{"TX/TX_S1_yan_0029":[{"time":0.1333,"curve":0.289,"c2":0.67,"c3":0.64,"c4":0.98,"vertices":[-8.5977,-95.32286,29.36739,37.21194,19.73104,139.23859,-98.18849,123.5544]},{"time":0.5667,"curve":"stepped","vertices":[-8.5977,-95.32286,29.36739,37.21194,19.73104,139.23859,-43.75262,70.52272]},{"time":2.3,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":2.3667,"vertices":[124.65813,-98.55423,-46.31442,61.94879,-148.96179,124.98492,-170.03082,143.38544,39.84674,-34.76928,103.71564,-127.98413,-20.27253,33.95257,-62.34335,35.85732]}]}}},"drawOrder":[{"time":0.1333,"offsets":[{"slot":"TX_feng_quan_faguang1","offset":-21},{"slot":"TX_feng_quan_faguang3","offset":-134},{"slot":"TX_feng_quan_faguang2","offset":-22},{"slot":"TX_feng_quan_faguang4","offset":-135}]},{"time":0.8667,"offsets":[{"slot":"TX_cao_hou1","offset":-12},{"slot":"TX_cao_hou2","offset":-15},{"slot":"TX_feng_quan_faguang1","offset":-21},{"slot":"TX_feng_quan_faguang3","offset":-132},{"slot":"TX_feng_quan_faguang2","offset":-22},{"slot":"TX_feng_quan_faguang4","offset":-133}]},{"time":1.6333,"offsets":[{"slot":"BZ/z_bianzi4","offset":72},{"slot":"BZ/z_bianzi5","offset":72},{"slot":"BZ/y_bianzi2_bz_g","offset":72},{"slot":"BZ/z_bianzi6","offset":72},{"slot":"BZ/z_bianzi5_liuguang","offset":70}]},{"time":2.3,"offsets":[{"slot":"BZ/z_bianzi4","offset":73},{"slot":"BZ/z_bianzi5","offset":73},{"slot":"BZ/z_bianzi6","offset":72},{"slot":"BZ/z_bianzi5_liuguang","offset":70},{"slot":"TX_shouji3_4","offset":28}]},{"time":2.4,"offsets":[{"slot":"BZ/z_bianzi4","offset":71},{"slot":"BZ/z_bianzi5","offset":71},{"slot":"BZ/y_bianzi2_bz_g","offset":80},{"slot":"BZ/z_bianzi6","offset":70},{"slot":"BZ/z_bianzi5_liuguang2","offset":69},{"slot":"BZ/z_bianzi5_liuguang","offset":69},{"slot":"TX_shouji3_4","offset":28}]}]},"std":{"slots":{"TX/TX_yan1_1_hou6":{"attachment":[{"name":null}]},"TX_huaban2":{"attachment":[{"name":null}]},"TX_cao_hou3":{"attachment":[{"name":null}]},"TX/TX_yan1_6":{"attachment":[{"name":null}]},"TX_feng_quan_faguang1":{"attachment":[{"name":null}]},"TX/suduxian_su2":{"attachment":[{"name":null}]},"TX_guangxian3":{"attachment":[{"name":null}]},"TX/xuanzhuan_hou":{"attachment":[{"name":null}]},"BZ/tou":{"attachment":[{"name":null}]},"TX/shuye":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie7":{"attachment":[{"name":null}]},"TX/suduxian_mi2":{"attachment":[{"name":null}]},"TX/chentu2":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian7":{"attachment":[{"name":null}]},"TX_guangxian2":{"attachment":[{"name":null}]},"TX/TX_yan1_4":{"attachment":[{"name":null}]},"TX_shouji3_4":{"attachment":[{"name":null}]},"TX/chentu1":{"attachment":[{"name":null}]},"BZ/z_bianzi5":{"attachment":[{"name":null}]},"BZ/z_bianzi6":{"attachment":[{"name":null}]},"TX/chentu3":{"attachment":[{"name":null}]},"TX/cao7":{"attachment":[{"name":null}]},"TX/cao10":{"attachment":[{"name":null}]},"TX_cao_hou4":{"attachment":[{"name":null}]},"zui":{"attachment":[{"name":"zui_pingshi"}]},"TX_SK2_shouji_lie_quan3":{"attachment":[{"name":null}]},"TX/suduxian_su3":{"attachment":[{"name":null}]},"TX/shuye4":{"attachment":[{"name":null}]},"z-yanjing":{"attachment":[{"name":"z_yanjing_pingshi"}]},"TX/cao4":{"attachment":[{"name":null}]},"BZ/y_bianzi_hou":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie":{"attachment":[{"name":null}]},"BZ/y_shou":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou3":{"attachment":[{"name":null}]},"TX/shuyefaguang7":{"attachment":[{"name":null}]},"TX/liuguang_mi2":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie9":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou5":{"attachment":[{"name":null}]},"z-meimao":{"attachment":[{"name":"z_meimao_pingshi"}]},"TX/cao5":{"attachment":[{"name":null}]},"TX/cao6":{"attachment":[{"name":null}]},"z_houtui":{"attachment":[{"name":"z_houtui"}]},"y_houtui":{"attachment":[{"name":"y_houtui"}]},"BZ/zhongzi":{"attachment":[{"name":null}]},"TX/cao2":{"attachment":[{"name":null}]},"TX/cao9":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou":{"attachment":[{"name":null}]},"BZ/z_bianzi2_bz_g":{"attachment":[{"name":null}]},"TX/TX_yan1_2":{"attachment":[{"name":null}]},"TX_SK2_liuguang_cu":{"attachment":[{"name":null}]},"TX_huaban1":{"attachment":[{"name":null}]},"TX/suduxian_mi_hou2":{"attachment":[{"name":null}]},"TX/suduxian_mi1":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie_quan4":{"attachment":[{"name":null}]},"BZ/y_bianzi_hou2":{"attachment":[{"name":null}]},"TX_huarui":{"attachment":[{"name":null}]},"BZ/shenti":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan3":{"attachment":[{"name":null}]},"TX_guangquan5":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie5":{"attachment":[{"name":null}]},"TX_huaban3":{"attachment":[{"name":null}]},"TX_guangxian4":{"attachment":[{"name":null}]},"yinying":{"attachment":[{"name":"yinying"}]},"TX_SK2_shouji_lie3":{"attachment":[{"name":null}]},"TX/cao1":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian4":{"attachment":[{"name":null}]},"TX/guangyun":{"attachment":[{"name":null}]},"TX_shouji3_2":{"attachment":[{"name":null}]},"TX_BZ_yan":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie12":{"attachment":[{"name":null}]},"BZ/z_bianzi5_liuguang2":{"attachment":[{"name":null}]},"TX/shuyefaguang4":{"attachment":[{"name":null}]},"TX/shuye7":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou4":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou2":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan":{"attachment":[{"name":null}]},"TX_feng_quan_faguang4":{"attachment":[{"name":null}]},"TX/chentu_hou":{"attachment":[{"name":null}]},"tou":{"attachment":[{"name":"tou"}]},"TX_guangxian5":{"attachment":[{"name":null}]},"TX_huaban2_sanluo2":{"attachment":[{"name":null}]},"ZZZZZ":{"attachment":[{"name":"ZZZZZ"}]},"TX_huaban1_sanluo2":{"attachment":[{"name":null}]},"TX/xuanzhuan":{"attachment":[{"name":null}]},"TX_feng_quan_faguang3":{"attachment":[{"name":null}]},"BZ/z_bianzi4":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie_quan":{"attachment":[{"name":null}]},"zhonzi":{"attachment":[{"name":"zhonzi"}]},"TX/shuye5":{"attachment":[{"name":null}]},"TX/shuyefaguang8":{"attachment":[{"name":null}]},"TX/shuye9":{"attachment":[{"name":null}]},"TX_cao_hou2":{"attachment":[{"name":null}]},"TX/liuguang_mi":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou2_liuguang":{"attachment":[{"name":null}]},"TX/shuye3":{"attachment":[{"name":null}]},"TX/TX_yan1_1":{"attachment":[{"name":null}]},"BZ/y_bianzi3":{"attachment":[{"name":null}]},"TX/shuye2":{"attachment":[{"name":null}]},"y-meimao":{"attachment":[{"name":"y_meimao_pingshi"}]},"TX/huiji1":{"attachment":[{"name":null}]},"BZ/y_yanjing":{"attachment":[{"name":null}]},"TX/chentu4":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian2":{"attachment":[{"name":null}]},"TX/TX_yan1_8":{"attachment":[{"name":null}]},"TX_bao_hou":{"attachment":[{"name":null}]},"TX_guangquan3":{"attachment":[{"name":null}]},"y-yanjing":{"attachment":[{"name":"y_yanjing_pingshi"}]},"TX_SK2_shouji_xian5":{"attachment":[{"name":null}]},"TX_feng4":{"attachment":[{"name":null}]},"TX_shouji3_1":{"attachment":[{"name":null}]},"shenti":{"attachment":[{"name":"shenti"}]},"TX/shuyefaguang3":{"attachment":[{"name":null}]},"y_qiantui":{"attachment":[{"name":"y_qiantui"}]},"BZ/z_bianzi_hou3_liuguang":{"attachment":[{"name":null}]},"TX_cao_hou1":{"attachment":[{"name":null}]},"TX/cao8":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan4":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian1":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie10":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou2":{"attachment":[{"name":null}]},"TX/chentu5":{"attachment":[{"name":null}]},"TX/TX_yan1_5":{"attachment":[{"name":null}]},"TX_feng_quan2":{"attachment":[{"name":null}]},"TX/z_bianzi2_bz_liuguang2":{"attachment":[{"name":null}]},"TX/shuyefaguang6":{"attachment":[{"name":null}]},"TX_guangquan":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou4":{"attachment":[{"name":null}]},"TX/shuyefaguang":{"attachment":[{"name":null}]},"TX_feng_quan_faguang2":{"attachment":[{"name":null}]},"TX/shuyefaguang5":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie_quan2":{"attachment":[{"name":null}]},"TX/liuguang7_BZH":{"attachment":[{"name":null}]},"BZ/zuiba":{"attachment":[{"name":null}]},"TX/shuye8":{"attachment":[{"name":null}]},"TX_guangquan2":{"attachment":[{"name":null}]},"TX/TX_yan1_7":{"attachment":[{"name":null}]},"TX_SK2_liuguang":{"attachment":[{"name":null}]},"TX_feng_quan3":{"attachment":[{"name":null}]},"TX/chentu6":{"attachment":[{"name":null}]},"BZ/y_bian_hou2_liuguang":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou3":{"attachment":[{"name":null}]},"TX_guangquan4":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie8":{"attachment":[{"name":null}]},"TX/z_bianzi2_bz_liuguang":{"attachment":[{"name":null}]},"z_qiantui":{"attachment":[{"name":"z_qiantui"}]},"TX/suduxian_su4":{"attachment":[{"name":null}]},"TX_feng_quan4":{"attachment":[{"name":null}]},"BZ/y_bianzi2_bz_g":{"attachment":[{"name":null}]},"TX_bao1":{"attachment":[{"name":null}]},"TX_huaban1_sanluo":{"attachment":[{"name":null}]},"TX_xian3":{"attachment":[{"name":null}]},"TX_guangxian1":{"attachment":[{"name":null}]},"TX/suduxian_mi_hou1":{"attachment":[{"name":null}]},"BZ/z_bianzi2_bz_g2":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian3":{"attachment":[{"name":null}]},"BZ/y_bianzi_1_liuguang":{"attachment":[{"name":null}]},"TX_feng1":{"attachment":[{"name":null}]},"TX_shouji3_3":{"attachment":[{"name":null}]},"hei":{"attachment":[{"name":null}]},"BZ/z_bianzi5_liuguang":{"attachment":[{"name":null}]},"hei2":{"attachment":[{"name":null}]},"BZ/y_bianzi2":{"attachment":[{"name":null}]},"TX/cao3":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie11":{"attachment":[{"name":null}]},"TX/shuyefaguang2":{"attachment":[{"name":null}]},"TX/shuye6":{"attachment":[{"name":null}]},"TX/shuyefaguang9":{"attachment":[{"name":null}]},"BZ/z_shou":{"attachment":[{"name":null}]},"TX_guangxian6":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian8":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie4":{"attachment":[{"name":null}]},"TX_feng3":{"attachment":[{"name":null}]},"TX/TX_yan1_3":{"attachment":[{"name":null}]},"ZZZZZZZZZZZ":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian6":{"attachment":[{"name":null}]},"TX/liuguang2":{"attachment":[{"name":null}]},"TX/suduxian_su1":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie2":{"attachment":[{"name":null}]},"BZ/y_bianzi1":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie6":{"attachment":[{"name":null}]},"TX_huabao":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou3_liuguang\n2":{"attachment":[{"name":null}]},"TX_feng_quan1":{"attachment":[{"name":null}]},"BZ/z_jiao":{"attachment":[{"name":null}]},"TX_feng2":{"attachment":[{"name":null}]},"TX_huaban2_sanluo":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan2":{"attachment":[{"name":null}]},"TX_xian":{"attachment":[{"name":null}]},"BZ/z_yanjing":{"attachment":[{"name":null}]},"TX/guangyun2":{"attachment":[{"name":null}]},"TX_BZ_cao_hou5":{"attachment":[{"name":null}]}},"bones":{"z_qiantui":{"translate":[{"x":-2.15,"y":-2.31},{"time":0.1667,"x":-4.29,"y":-4.61},{"time":0.5},{"time":0.8333,"x":-4.29,"y":-4.61},{"time":1.1667},{"time":1.3333,"x":-2.15,"y":-2.31}]},"bone12":{"rotate":[{},{"time":0.3333,"angle":10.12},{"time":0.6667},{"time":1,"angle":-2.7},{"time":1.3333}],"translate":[{},{"time":0.3333,"x":-21.75,"y":10.51},{"time":0.6667},{"time":1,"x":8.43,"y":-7.92},{"time":1.3333}],"scale":[{},{"time":0.3333,"x":1.09},{"time":0.6667},{"time":1,"x":0.794},{"time":1.3333}]},"shenti":{"rotate":[{"angle":0.3},{"time":0.1667,"angle":0.6},{"time":0.5},{"time":0.8333,"angle":0.6},{"time":1.1667},{"time":1.3333,"angle":0.3}],"translate":[{"x":0.01,"y":-6.35},{"time":0.1667,"x":0.02,"y":5.27},{"time":0.5,"y":-17.96},{"time":0.8333,"x":0.02,"y":5.27},{"time":1.1667,"y":-17.96},{"time":1.3333,"x":0.01,"y":-6.35}]},"tou":{"rotate":[{},{"time":0.3333,"angle":4.26},{"time":0.6667},{"time":1,"angle":-5.52},{"time":1.3333}],"translate":[{},{"time":0.3333,"x":-15.09,"y":17.23},{"time":0.6667},{"time":1,"x":12.52,"y":-1.18},{"time":1.3333}]},"bone14":{"scale":[{},{"time":0.3333,"y":1.076},{"time":0.6667},{"time":1,"y":1.076},{"time":1.3333}]},"bone10":{"rotate":[{},{"time":0.3333,"angle":3.3},{"time":0.6667},{"time":1,"angle":3.3},{"time":1.3333}],"translate":[{},{"time":0.3333,"x":7.48,"y":3.6},{"time":0.6667},{"time":1,"x":7.48,"y":3.6},{"time":1.3333}]},"z-meimao":{"rotate":[{},{"time":0.3333,"angle":2.7},{"time":0.6667},{"time":1,"angle":-4.06},{"time":1.3333}]},"y_yan":{"rotate":[{},{"time":0.3333,"angle":5.72},{"time":0.6667},{"time":1,"angle":-3.15},{"time":1.3333}],"translate":[{},{"time":0.3333,"x":-21.29,"y":1.32},{"time":0.6667},{"time":1,"x":10.82,"y":4.96},{"time":1.3333}],"scale":[{},{"time":0.3333,"y":1.036},{"time":0.6667},{"time":1,"y":1.009},{"time":1.3333}]},"bone11":{"rotate":[{},{"time":0.3333,"angle":8.79},{"time":0.6667},{"time":1,"angle":-7.06},{"time":1.3333}],"translate":[{},{"time":0.3333,"x":-12.16,"y":-6.04},{"time":0.6667},{"time":1,"x":16.18,"y":5.97},{"time":1.3333}]},"bone2":{"rotate":[{},{"time":0.3333,"angle":6.33},{"time":0.6667},{"time":1,"angle":6.33},{"time":1.3333}]},"bone13":{"rotate":[{},{"time":0.3333,"angle":2.21},{"time":0.6667},{"time":1,"angle":-0.48},{"time":1.3333}],"translate":[{},{"time":0.3333,"x":-38.6,"y":19.01},{"time":0.6667},{"time":1,"x":16.46,"y":31.61},{"time":1.3333}],"scale":[{},{"time":0.3333,"x":1.116},{"time":0.6667},{"time":1,"x":0.738},{"time":1.3333}]},"bone6":{"translate":[{},{"time":0.3333,"x":0.49,"y":7.9},{"time":0.6667},{"time":1,"x":0.49,"y":7.9},{"time":1.3333}]},"bone4":{"rotate":[{},{"time":0.3333,"angle":0.37},{"time":0.6667},{"time":1,"angle":0.37},{"time":1.3333}]},"zhonzi":{"scale":[{},{"time":0.3333,"x":1.111,"y":0.832},{"time":0.6667},{"time":1,"x":1.111,"y":0.832},{"time":1.3333}]},"z_yan":{"rotate":[{},{"time":0.3333,"angle":1.8},{"time":0.6667},{"time":1,"angle":-1.39},{"time":1.3333}],"translate":[{},{"time":0.3333,"x":-3.67,"y":-0.98},{"time":0.6667},{"time":1,"x":14.17,"y":1.54},{"time":1.3333}],"scale":[{},{"time":0.3333,"x":1.136,"y":1.024},{"time":0.6667},{"time":1,"x":0.809,"y":1.008},{"time":1.3333}]},"bone5":{"translate":[{},{"time":0.3333,"x":2.96,"y":5.1},{"time":0.6667},{"time":1,"x":2.96,"y":5.1},{"time":1.3333}]},"zui":{"scale":[{},{"time":0.3333,"y":1.382},{"time":0.6667},{"time":1,"y":1.382},{"time":1.3333}]},"yinying":{"scale":[{},{"time":0.3333,"x":0.954},{"time":0.6667},{"time":1,"x":0.954},{"time":1.3333}]}},"deform":{"default":{"zhonzi":{"zhonzi":[{},{"time":0.3333,"offset":2,"vertices":[7.12473,4.09271,7.34479,4.02576,1.82555,4.44061,2.07225,4.67581,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36.46735,-3.83606,36.20293,-6.02158,24.4548,-0.99103,24.36635,-2.33899,12.32323,0.29291,12.32298,-0.32748,0,0,0,0,4.67027,-2.73676,4.51057,-3.18347,4.87315,-0.83356,4.81982,-1.14932,7.61722,-4.71399,-10.39044,-18.75269,-20.79222,-0.38837,-30.54553,-5.82971,-0.75456,10.55054,-14.55524,0.77826,-13.51306,1.94189,-13.38524,2.79114,-17.66502,7.77417,-17.20432,9.27356,-20.91174,13.87085,-20.10487,15.99234,-23.08093,14.15338,-22.25533,16.409,-24.401,9.08942,-23.85751,11.03741,-27.32407,0.16382,-27.27687,1.60165,-27.63774,-4.98297,-27.87881,-3.91092,-11.28799,-4.86578,-11.54526,-4.63843,-20.06837,-1.74707,-20.13889,-0.83011,-14.23949,8.11304,-7.6123,-0.18195,-7.61205,0.20163,-2.15932,-0.16071,-2.16505,-0.0596,-8.28105,-1.17035,-8.33481,-0.82468,-17.52721,-2.92267,-17.66638,-2.22482,-17.08247,-6.6402,-17.43112,-6.24222,-11.93713,-6.36432,-12.2773,-6.2142,-6.46376,-1.97021,-6.56502,-1.77908,0.09741,-4.15991,-0.13564,-4.47366,-20.9207,-0.16034,-32.56929,-4.50189,-29.34059,2.77588,-19.51804,10.50153]},{"time":0.6667},{"time":1,"vertices":[-11.37532,4.36639,0,0,0,0,-6.02681,-2.98328,-6.18581,-2.89059,-18.76656,-1.10327,-18.80258,-0.20642,-21.63234,0.5755,-21.57034,1.74658,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-7.0383,-3.96484,-7.25095,-3.89221,-4.87312,0.83295,-4.8197,1.14899,-5.53352,6.2746,-5.17393,7.02954,-9.05273,4.29254,-8.79947,5.08359,-6.51469,4.82758,-6.23494,5.52606,0,0,0,0,0,0,-23.62537,-10.05676,-6.00594,-5.21344,31.18692,5.16199,0,0,4.56108,-1.29413,7.27362,-1.66003,7.17088,-2.1622,8.58022,-1.38458,8.49117,-1.93439,7.27362,-1.65979,7.17091,-2.16208,5.12192,0.12158,5.12189,-0.13623,14.5031,0.05603,14.48727,-0.69315,14.14774,-3.9975,13.90523,-5.02899,15.56013,-4.90088,15.26508,-6.07297,22.79092,-3.88452,22.54309,-5.35822,11.71854,-0.54938,11.67293,-1.1976,6.25287,0.47168,14.92459,1.59418,14.99413,0.93515,20.47702,4.31445,20.6917,3.56812,21.89847,0.75317,21.9118,-0.3309,25.39107,6.62042,25.72865,5.79028,24.21281,12.65399,24.89073,12.33398,37.41557,13.02765,38.09665,12.04709,43.7765,3.88513,43.93573,1.89325,27.39731,-8.48157,26.88593,-10.53711,7.36818,2.11414,31.52625,1.28522,18.11328,-4.64105,4.29951,-0.22266]},{"time":1.3333}]},"zui":{"zui_pingshi":[{},{"time":0.3333,"offset":16,"vertices":[18.62579,3.04118,18.29108,-4.6535,16.58849,9.01544,31.35905,-1.10725,29.9766,9.29816,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-19.24956,-0.77621,-17.92241,-7.08408,-39.14186,-3.97833,-37.47678,11.99242]},{"time":0.6667},{"time":1,"offset":4,"vertices":[4.02206,1.70232,4.36581,-0.0444,0,0,0,0,0,0,0,0,-7.34869,-2.06491,-7.56155,1.04021,-6.25871,-4.37653,9.35478,1.01878,8.49721,4.05258,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21.48473,3.60461,21.13721,-5.27083,7.67351,2.94293,8.20798,-0.36424]},{"time":1.3333}]},"tou":{"tou":[{},{"time":0.3333,"offset":36,"vertices":[-9.36336,4.2478,9.64731,3.5542,2.38568,10.00121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3.19946,1.43887,0,0,0,0,7.33778,-7.33127,0,0,-7.89673,-7.77194]},{"time":0.6667},{"time":1,"offset":36,"vertices":[0.83159,0.0903,-0.33118,-0.76816,0.4184,-0.7243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.89941,6.79937,0,0,4.79962,-1.58188,11.19958,-10.14233,7.51152,-7.17743,-1.27478,-4.42054]},{"time":1.3333}]}}}},"walk":{"slots":{"TX/TX_yan1_1_hou6":{"attachment":[{"name":null}]},"TX_huaban2":{"attachment":[{"name":null}]},"TX_cao_hou3":{"attachment":[{"name":null}]},"TX/TX_yan1_6":{"attachment":[{"name":null}]},"TX_feng_quan_faguang1":{"attachment":[{"name":null}]},"TX/suduxian_su2":{"attachment":[{"name":null}]},"TX/shuyefaguang2":{"attachment":[{"name":null}]},"TX/xuanzhuan_hou":{"attachment":[{"name":null}]},"BZ/tou":{"attachment":[{"name":null}]},"TX/shuye":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie7":{"attachment":[{"name":null}]},"TX/suduxian_mi2":{"attachment":[{"name":null}]},"TX_guangquan5":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian7":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou":{"attachment":[{"name":null}]},"TX/TX_yan1_4":{"attachment":[{"name":null}]},"TX_shouji3_4":{"attachment":[{"name":null}]},"TX/chentu1":{"attachment":[{"name":null}]},"BZ/z_bianzi5":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan4":{"attachment":[{"name":null}]},"TX/TX_yan1_7":{"attachment":[{"name":null}]},"TX/cao7":{"attachment":[{"name":null}]},"zhonzi":{"attachment":[{"name":"zhonzi"}]},"TX_feng_quan_faguang4":{"attachment":[{"name":null}]},"zui":{"attachment":[{"name":"zui_pingshi"}]},"TX_SK2_shouji_lie_quan3":{"attachment":[{"name":null}]},"TX/suduxian_su3":{"attachment":[{"name":null}]},"TX/shuye4":{"attachment":[{"name":null}]},"TX/cao4":{"attachment":[{"name":null}]},"BZ/y_bianzi_hou":{"attachment":[{"name":null}]},"TX_cao_hou2":{"attachment":[{"name":null}]},"BZ/y_shou":{"attachment":[{"name":null}]},"TX/z_bianzi2_bz_liuguang":{"attachment":[{"name":null}]},"TX_huaban1":{"attachment":[{"name":null}]},"TX/shuyefaguang7":{"attachment":[{"name":null}]},"TX/liuguang_mi2":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie9":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou5":{"attachment":[{"name":null}]},"z-meimao":{"attachment":[{"name":"z_meimao_gongji"}]},"TX/cao5":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie_quan":{"attachment":[{"name":null}]},"z_houtui":{"attachment":[{"name":"z_houtui"}]},"TX_SK2_shouji_lie":{"attachment":[{"name":null}]},"BZ/zhongzi":{"attachment":[{"name":null}]},"TX/cao2":{"attachment":[{"name":null}]},"TX/cao9":{"attachment":[{"name":null}]},"BZ/z_bianzi2_bz_g":{"attachment":[{"name":null}]},"TX/TX_yan1_2":{"attachment":[{"name":null}]},"TX_SK2_liuguang_cu":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie11":{"attachment":[{"name":null}]},"TX/chentu6":{"attachment":[{"name":null}]},"TX/suduxian_mi_hou2":{"attachment":[{"name":null}]},"TX/suduxian_mi1":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie_quan4":{"attachment":[{"name":null}]},"BZ/y_bianzi_hou2":{"attachment":[{"name":null}]},"TX_huarui":{"attachment":[{"name":null}]},"BZ/shenti":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan3":{"attachment":[{"name":null}]},"TX/chentu3":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie5":{"attachment":[{"name":null}]},"TX_BZ_yan":{"attachment":[{"name":null}]},"TX/TX_yan1_8":{"attachment":[{"name":null}]},"yinying":{"attachment":[{"name":"yinying"}]},"TX_feng3":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie3":{"attachment":[{"name":null}]},"TX/cao1":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian4":{"attachment":[{"name":null}]},"TX/guangyun":{"attachment":[{"name":null}]},"TX_shouji3_2":{"attachment":[{"name":null}]},"TX/chentu2":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie12":{"attachment":[{"name":null}]},"BZ/z_bianzi5_liuguang2":{"attachment":[{"name":null}]},"BZ/z_bianzi6":{"attachment":[{"name":null}]},"TX/shuye7":{"attachment":[{"name":null}]},"TX_huaban3":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou4":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou2":{"attachment":[{"name":null}]},"TX_huaban1_sanluo2":{"attachment":[{"name":null}]},"y_qiantui":{"attachment":[{"name":"y_qiantui"}]},"TX/chentu_hou":{"attachment":[{"name":null}]},"tou":{"attachment":[{"name":"tou"}]},"TX_guangxian5":{"attachment":[{"name":null}]},"TX/TX_yan1_5":{"attachment":[{"name":null}]},"TX/xuanzhuan":{"attachment":[{"name":null}]},"TX_feng_quan_faguang3":{"attachment":[{"name":null}]},"BZ/z_bianzi4":{"attachment":[{"name":null}]},"TX/cao8":{"attachment":[{"name":null}]},"TX/shuye5":{"attachment":[{"name":null}]},"TX/shuyefaguang8":{"attachment":[{"name":null}]},"TX/shuye9":{"attachment":[{"name":null}]},"TX_guangxian4":{"attachment":[{"name":null}]},"TX_cao_hou4":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou2_liuguang":{"attachment":[{"name":null}]},"y_houtui":{"attachment":[{"name":"y_houtui"}]},"TX/TX_yan1_1":{"attachment":[{"name":null}]},"BZ/y_bianzi3":{"attachment":[{"name":null}]},"TX/shuye2":{"attachment":[{"name":null}]},"TX/huiji1":{"attachment":[{"name":null}]},"BZ/y_yanjing":{"attachment":[{"name":null}]},"TX/chentu4":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian2":{"attachment":[{"name":null}]},"TX_feng_quan3":{"attachment":[{"name":null}]},"TX_guangxian3":{"attachment":[{"name":null}]},"TX_bao_hou":{"attachment":[{"name":null}]},"ZZZZZ":{"attachment":[{"name":"ZZZZZ"}]},"y-yanjing":{"attachment":[{"name":"y_yanjing_gongji"}]},"TX_SK2_shouji_xian5":{"attachment":[{"name":null}]},"TX_feng4":{"attachment":[{"name":null}]},"TX_shouji3_1":{"attachment":[{"name":null}]},"shenti":{"attachment":[{"name":"shenti"}]},"TX/shuyefaguang3":{"attachment":[{"name":null}]},"TX/chentu5":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou3_liuguang":{"attachment":[{"name":null}]},"TX_cao_hou1":{"attachment":[{"name":null}]},"TX_guangquan3":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian1":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie10":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou2":{"attachment":[{"name":null}]},"TX/shuye3":{"attachment":[{"name":null}]},"TX_feng_quan2":{"attachment":[{"name":null}]},"TX/z_bianzi2_bz_liuguang2":{"attachment":[{"name":null}]},"TX_guangquan":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou4":{"attachment":[{"name":null}]},"TX/shuyefaguang":{"attachment":[{"name":null}]},"TX_feng_quan_faguang2":{"attachment":[{"name":null}]},"TX_huaban1_sanluo":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie_quan2":{"attachment":[{"name":null}]},"TX/liuguang7_BZH":{"attachment":[{"name":null}]},"BZ/zuiba":{"attachment":[{"name":null}]},"TX/shuye8":{"attachment":[{"name":null}]},"TX_guangquan2":{"attachment":[{"name":null}]},"y-meimao":{"attachment":[{"name":"y_meimao_gongji"}]},"TX_SK2_liuguang":{"attachment":[{"name":null}]},"TX/liuguang_mi":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian6":{"attachment":[{"name":null}]},"BZ/y_bian_hou2_liuguang":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou3":{"attachment":[{"name":null}]},"TX_huaban2_sanluo2":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie8":{"attachment":[{"name":null}]},"z-yanjing":{"attachment":[{"name":"z_yanjing_gongji"}]},"z_qiantui":{"attachment":[{"name":"z_qiantui"}]},"TX/suduxian_su4":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou3_liuguang\n2":{"attachment":[{"name":null}]},"TX_feng_quan4":{"attachment":[{"name":null}]},"BZ/y_bianzi2_bz_g":{"attachment":[{"name":null}]},"TX_bao1":{"attachment":[{"name":null}]},"TX/cao10":{"attachment":[{"name":null}]},"TX_xian3":{"attachment":[{"name":null}]},"TX_guangxian1":{"attachment":[{"name":null}]},"TX/shuyefaguang6":{"attachment":[{"name":null}]},"BZ/z_bianzi2_bz_g2":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian3":{"attachment":[{"name":null}]},"BZ/y_bianzi_1_liuguang":{"attachment":[{"name":null}]},"TX_feng1":{"attachment":[{"name":null}]},"TX_shouji3_3":{"attachment":[{"name":null}]},"hei":{"attachment":[{"name":null}]},"BZ/z_bianzi5_liuguang":{"attachment":[{"name":null}]},"hei2":{"attachment":[{"name":null}]},"BZ/y_bianzi2":{"attachment":[{"name":null}]},"TX/cao3":{"attachment":[{"name":null}]},"TX_guangxian2":{"attachment":[{"name":null}]},"TX/shuye6":{"attachment":[{"name":null}]},"TX/shuyefaguang9":{"attachment":[{"name":null}]},"BZ/z_shou":{"attachment":[{"name":null}]},"TX_guangxian6":{"attachment":[{"name":null}]},"TX/cao6":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie4":{"attachment":[{"name":null}]},"TX_guangquan4":{"attachment":[{"name":null}]},"TX/TX_yan1_3":{"attachment":[{"name":null}]},"ZZZZZZZZZZZ":{"attachment":[{"name":null}]},"TX/suduxian_mi_hou1":{"attachment":[{"name":null}]},"TX/liuguang2":{"attachment":[{"name":null}]},"TX/suduxian_su1":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie2":{"attachment":[{"name":null}]},"BZ/y_bianzi1":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie6":{"attachment":[{"name":null}]},"TX_huabao":{"attachment":[{"name":null}]},"TX/shuyefaguang4":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian8":{"attachment":[{"name":null}]},"TX_feng_quan1":{"attachment":[{"name":null}]},"BZ/z_jiao":{"attachment":[{"name":null}]},"TX_feng2":{"attachment":[{"name":null}]},"TX_huaban2_sanluo":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan2":{"attachment":[{"name":null}]},"TX_xian":{"attachment":[{"name":null}]},"BZ/z_yanjing":{"attachment":[{"name":null}]},"TX/guangyun2":{"attachment":[{"name":null}]},"TX_BZ_cao_hou5":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou3":{"attachment":[{"name":null}]},"TX/shuyefaguang5":{"attachment":[{"name":null}]}},"bones":{"1":{"translate":[{"x":120.85,"y":178.58},{"time":0.1,"curve":0.233,"c2":0.79,"c3":0.327},{"time":0.2,"x":-62.94,"y":-6.49},{"time":0.3667,"x":120.85,"y":178.58}]},"2":{"translate":[{"x":123.67,"y":196.18},{"time":0.1,"curve":0.233,"c2":0.79,"c3":0.327},{"time":0.2,"x":-67.48,"y":-20.12},{"time":0.3667,"x":123.67,"y":196.18}]},"3":{"translate":[{"x":136.12,"y":165.17},{"time":0.1,"x":-9.05,"y":-10.63,"curve":0.233,"c2":0.79,"c3":0.327},{"time":0.2,"x":-128.75,"y":-37.76},{"time":0.2667,"x":-126.37,"y":30.63},{"time":0.3667,"x":136.12,"y":165.17}]},"4":{"translate":[{"x":101.42,"y":181.04},{"time":0.1,"x":-6.08,"y":0.46,"curve":0.233,"c2":0.79,"c3":0.327},{"time":0.2,"x":-105.02,"y":-37.7},{"time":0.2667,"x":-139.6,"y":46.18},{"time":0.3667,"x":101.42,"y":181.04}]},"5":{"translate":[{"x":-248.18,"y":118.49},{"time":0.1,"x":-15.92,"y":20.92,"curve":0.233,"c2":0.79,"c3":0.327},{"time":0.2,"x":42.01,"y":29.92},{"time":0.3667,"x":-248.18,"y":118.49}]},"6":{"translate":[{"x":-267.55,"y":89.77},{"time":0.1,"x":-20.21,"y":3.81,"curve":0.233,"c2":0.79,"c3":0.327},{"time":0.2,"x":13.71,"y":72.5},{"time":0.3667,"x":-267.55,"y":89.77}]},"y-meimao":{"rotate":[{},{"time":0.2,"angle":7.48},{"time":0.3667}],"translate":[{},{"time":0.2,"x":-4.28,"y":-1.45},{"time":0.3667}]},"z-meimao":{"rotate":[{},{"time":0.2,"angle":-5.36},{"time":0.3667}],"translate":[{},{"time":0.2,"x":7.15,"y":3.32},{"time":0.3667}]},"z_qiantui":{"translate":[{"x":-35.33,"y":36.79},{"time":0.1,"curve":"stepped"},{"time":0.2},{"time":0.3667,"x":-35.33,"y":36.79}]},"bone12":{"rotate":[{"angle":-6.39,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.2,"angle":13},{"time":0.3667,"angle":-6.39}],"translate":[{"x":5.45,"y":2.89,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.2,"x":-7.83,"y":15},{"time":0.3667,"x":5.45,"y":2.89}]},"shenti":{"rotate":[{"angle":-9.23},{"time":0.1,"curve":"stepped"},{"time":0.2},{"time":0.3667,"angle":-9.23}],"translate":[{"y":51.23},{"time":0.1,"y":22.03},{"time":0.2,"y":-87.02},{"time":0.3667,"y":51.23}]},"tou":{"rotate":[{"angle":6.44,"curve":0.315,"c2":0.59,"c3":0.43},{"time":0.2,"angle":-5.84,"curve":0.233,"c2":0.79,"c3":0.327},{"time":0.3667,"angle":6.44}],"translate":[{"x":22.91,"y":-1.16,"curve":0.315,"c2":0.59,"c3":0.43},{"time":0.2,"x":-19.34,"y":-27,"curve":0.233,"c2":0.79,"c3":0.327},{"time":0.3667,"x":22.91,"y":-1.16}]},"z_houtui":{"rotate":[{"angle":-31.4},{"time":0.1,"curve":"stepped"},{"time":0.2},{"time":0.3667,"angle":-31.4}],"translate":[{"x":-88.39,"y":-31.03},{"time":0.1,"curve":"stepped"},{"time":0.2},{"time":0.3667,"x":-88.39,"y":-31.03}]},"y_yan":{"translate":[{"x":17.18,"y":4.53},{"time":0.2,"x":21.61,"y":-19.06},{"time":0.3667,"x":17.18,"y":4.53}],"scale":[{},{"time":0.2,"y":0.795},{"time":0.3667}]},"bone11":{"rotate":[{"angle":13.39,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.2,"angle":-7.86},{"time":0.3667,"angle":13.39}],"translate":[{"x":-16.25,"y":-17.57,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.2,"x":10.81,"y":20.47},{"time":0.3667,"x":-16.25,"y":-17.57}]},"bone2":{"rotate":[{"time":0.1,"curve":0.233,"c2":0.79,"c3":0.327},{"time":0.2,"angle":13.44},{"time":0.3667}]},"bone13":{"rotate":[{"angle":2.57},{"time":0.2,"angle":-3.6},{"time":0.3667,"angle":2.57}],"translate":[{"x":8.09,"y":10.6},{"time":0.2,"x":-2.3,"y":-22.38},{"time":0.3667,"x":8.09,"y":10.6}],"scale":[{},{"time":0.2,"y":1.255},{"time":0.3667}]},"bone":{"rotate":[{"angle":-13.89},{"time":0.1,"curve":0.233,"c2":0.79,"c3":0.327},{"time":0.2,"angle":2.35},{"time":0.3667,"angle":-13.89}]},"bone4":{"rotate":[{"angle":2.58},{"time":0.1,"angle":-3.56,"curve":"stepped"},{"time":0.2,"angle":-3.56},{"time":0.3667,"angle":2.58}]},"zhonzi":{"scale":[{"x":0.927,"y":1.097},{"time":0.2,"y":0.798},{"time":0.3667,"x":0.927,"y":1.097}]},"y_qiantui":{"translate":[{"x":25.17,"y":-13.26},{"time":0.1,"curve":0.233,"c2":0.79,"c3":0.327},{"time":0.2,"x":10.06,"y":-6.31},{"time":0.2667,"x":-9.12,"y":-1.5},{"time":0.3667,"x":25.17,"y":-13.26}]},"z_yan":{"translate":[{"x":10.16,"y":-0.09},{"time":0.2,"x":3.96,"y":-18.51},{"time":0.3667,"x":10.16,"y":-0.09}],"scale":[{},{"time":0.2,"y":0.795},{"time":0.3667}]},"zui":{"scale":[{},{"time":0.2,"y":0.628},{"time":0.3667}]},"y_houtui":{"translate":[{},{"time":0.1,"x":-21.26,"y":-0.68,"curve":0.233,"c2":0.79,"c3":0.327},{"time":0.2,"x":-9.64,"y":-2.04},{"time":0.3667}]},"bone3":{"rotate":[{"angle":1.8},{"time":0.1,"angle":-3.09,"curve":"stepped"},{"time":0.2,"angle":-3.09},{"time":0.3667,"angle":1.8}]},"SHENTI":{"translate":[{"y":143.17},{"time":0.1,"curve":"stepped"},{"time":0.2},{"time":0.3667,"y":143.17}]},"yinying":{"scale":[{"x":0.835,"y":0.934},{"time":0.2,"x":1.132},{"time":0.3667,"x":0.835,"y":0.934}]}},"deform":{"default":{"tou":{"tou":[{"offset":36,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99,"vertices":[-5.84387,1.30548,4.24396,4.22452,-0.17181,5.98541,-0.03215,-3.76355,-2.396,2.9028,-3.35376,-1.70836,-14.22517,-0.71231,10.43472,9.69772,-7.19904,12.29087,-2.92729,0.02548,2.25797,1.86374,-1.32874,2.60864,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-8.50195,17.35122,-15.8172,9.68649,-31.15497,15.86246,13.69363,-12.66403,4.5444,-6.72867,0.7594,-1.49063]},{"time":0.2,"offset":122,"curve":0.233,"c2":0.79,"c3":0.327,"vertices":[-2.49589,0.42352,3.44136,-1.5643,13.2475,-7.63486,8.86922,-2.70493,-27.44769,-2.8196]},{"time":0.3667,"offset":36,"vertices":[-5.84387,1.30548,4.24396,4.22452,-0.17181,5.98541,-0.03215,-3.76355,-2.396,2.9028,-3.35376,-1.70836,-14.22517,-0.71231,10.43472,9.69772,-7.19904,12.29087,-2.92729,0.02548,2.25797,1.86374,-1.32874,2.60864,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-8.50195,17.35122,-15.8172,9.68649,-31.15497,15.86246,13.69363,-12.66403,4.5444,-6.72867,0.7594,-1.49063]}]}}}},"win_loop":{"slots":{"TX/TX_yan1_1_hou6":{"attachment":[{"name":null}]},"TX_huaban2":{"attachment":[{"name":null},{"time":0.8667,"name":"TX/hua_a3"}]},"TX_cao_hou3":{"attachment":[{"name":null}]},"TX_feng2":{"attachment":[{"name":null}]},"TX/shuyefaguang5":{"attachment":[{"name":null}]},"TX/suduxian_su2":{"attachment":[{"name":null}]},"TX_guangxian3":{"attachment":[{"name":null}]},"TX/xuanzhuan_hou":{"attachment":[{"name":null}]},"BZ/tou":{"attachment":[{"name":null}]},"TX/shuye":{"attachment":[{"name":null}]},"TX_huaban2_sanluo":{"color":[{"time":0.8333,"color":"ffffffff"},{"time":1.1,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.8333,"name":"TX/hua_a3"}]},"TX/suduxian_mi2":{"attachment":[{"name":null}]},"TX/chentu2":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian7":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou":{"attachment":[{"name":null}]},"TX_shouji3_4":{"attachment":[{"name":null}]},"TX/chentu1":{"attachment":[{"name":null}]},"BZ/z_bianzi5":{"attachment":[{"name":"BZ/y_bianzi2_bz"}]},"BZ/z_bianzi6":{"attachment":[{"name":"BZ/y_bianzi1_bz"}]},"TX/TX_yan1_7":{"attachment":[{"name":null}]},"TX/cao7":{"attachment":[{"name":null}]},"zhonzi":{"attachment":[{"name":"zhonzi"}]},"TX_feng_quan1":{"attachment":[{"name":null}]},"TX_feng_quan_faguang4":{"attachment":[{"name":null}]},"zui":{"attachment":[{"name":"zui_pingshi"}]},"BZ/y_shou":{"attachment":[{"name":null}]},"TX/suduxian_su3":{"attachment":[{"name":null}]},"TX/shuye4":{"attachment":[{"name":null}]},"TX/cao4":{"attachment":[{"name":null}]},"BZ/y_bianzi_hou":{"attachment":[{"name":null}]},"TX_feng_quan2":{"attachment":[{"name":null}]},"TX_cao_hou2":{"attachment":[{"name":null}]},"TX_feng_quan_faguang1":{"attachment":[{"name":null}]},"TX/z_bianzi2_bz_liuguang":{"attachment":[{"name":null}]},"TX/shuyefaguang7":{"attachment":[{"name":null}]},"TX/liuguang_mi2":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie9":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou5":{"attachment":[{"name":null}]},"z-meimao":{"attachment":[{"name":"z_meimao_pingshi"}]},"TX/cao5":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie_quan":{"attachment":[{"name":null}]},"z_houtui":{"attachment":[{"name":"z_houtui"}]},"y_houtui":{"attachment":[{"name":"y_houtui"}]},"BZ/zhongzi":{"attachment":[{"name":null}]},"TX/cao2":{"attachment":[{"name":null}]},"TX/cao9":{"attachment":[{"name":null}]},"BZ/z_bianzi2_bz_g":{"attachment":[{"name":null}]},"TX/TX_yan1_2":{"attachment":[{"name":null}]},"TX_bao_hou":{"attachment":[{"name":null}]},"TX_huaban1":{"attachment":[{"name":null},{"time":0.8667,"name":"TX/hua_a2"}]},"TX/suduxian_mi_hou2":{"attachment":[{"name":null}]},"TX/suduxian_mi1":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie_quan4":{"attachment":[{"name":null}]},"BZ/y_bianzi_hou2":{"attachment":[{"name":null}]},"BZ/shenti":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan3":{"attachment":[{"name":null}]},"TX_guangquan5":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie5":{"attachment":[{"name":null}]},"TX_BZ_yan":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie_quan2":{"attachment":[{"name":null}]},"yinying":{"attachment":[{"name":"yinying"}]},"TX_feng3":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie3":{"attachment":[{"name":null}]},"TX/cao1":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian4":{"attachment":[{"name":null}]},"TX/guangyun":{"color":[{"time":0.8,"color":"ff83c0f2"},{"time":1.1667,"color":"ff84c100"}],"attachment":[{"name":null},{"time":0.8,"name":"TX/guangyun"}]},"TX/z_bianzi2_bz_liuguang2":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie12":{"attachment":[{"name":null}]},"BZ/z_bianzi5_liuguang2":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou3":{"attachment":[{"name":null}]},"TX/shuye7":{"attachment":[{"name":null}]},"TX_huaban3":{"attachment":[{"name":null},{"time":0.8667,"name":"TX/hua_a5"}]},"BZ/z_bianzi_hou4":{"attachment":[{"name":null}]},"TX_guangxian2":{"attachment":[{"name":null}]},"TX_huaban1_sanluo2":{"color":[{"time":0.8333,"color":"ffffffff"},{"time":1.2,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.8333,"name":"TX/hua_a2"}]},"BZ/z_bianzi2_bz_g2":{"attachment":[{"name":null}]},"TX/chentu_hou":{"attachment":[{"name":null}]},"TX_shouji3_2":{"attachment":[{"name":null}]},"TX_guangxian5":{"attachment":[{"name":null}]},"TX/TX_yan1_5":{"attachment":[{"name":null}]},"ZZZZZ":{"attachment":[{"name":"ZZZZZ"}]},"TX/xuanzhuan":{"attachment":[{"name":null}]},"TX_feng_quan_faguang3":{"attachment":[{"name":null}]},"BZ/z_bianzi4":{"attachment":[{"name":"BZ/y_bianzi3_bz"}]},"TX/cao8":{"attachment":[{"name":null}]},"TX/shuye5":{"attachment":[{"name":null}]},"TX/shuyefaguang8":{"attachment":[{"name":null}]},"TX/TX_yan1_6":{"attachment":[{"name":null}]},"TX_guangxian4":{"attachment":[{"name":null}]},"TX_cao_hou4":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou2":{"attachment":[{"name":null}]},"TX/shuye3":{"attachment":[{"name":null}]},"TX/TX_yan1_1":{"attachment":[{"name":null}]},"BZ/y_bianzi3":{"attachment":[{"name":null}]},"TX/shuye2":{"attachment":[{"name":null}]},"TX/huiji1":{"attachment":[{"name":null}]},"BZ/y_yanjing":{"attachment":[{"name":null}]},"TX/chentu4":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian2":{"attachment":[{"name":null}]},"TX_feng_quan3":{"attachment":[{"name":null}]},"TX/TX_yan1_8":{"attachment":[{"name":null}]},"TX/guangyun2":{"color":[{"time":0.8,"color":"ffffff94"},{"time":1.3333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.8,"name":"TX/guangyun"}]},"TX_guangquan3":{"attachment":[{"name":null}]},"y-yanjing":{"attachment":[{"name":"y_yanjing_pingshi"}]},"TX_SK2_shouji_xian5":{"attachment":[{"name":null}]},"TX_feng4":{"attachment":[{"name":null}]},"TX_shouji3_1":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie_quan3":{"attachment":[{"name":null}]},"shenti":{"attachment":[{"name":"shenti"}]},"TX/shuyefaguang3":{"attachment":[{"name":null}]},"y_qiantui":{"attachment":[{"name":"y_qiantui"}]},"BZ/z_yanjing":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou3_liuguang":{"attachment":[{"name":null}]},"TX_cao_hou1":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan4":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian1":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie10":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou2":{"attachment":[{"name":null}]},"TX/suduxian_mi_hou1":{"attachment":[{"name":null}]},"TX_SK2_liuguang":{"attachment":[{"name":null}]},"TX/chentu3":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou2_liuguang":{"attachment":[{"name":null}]},"TX_guangquan":{"attachment":[{"name":null}]},"TX_huarui":{"attachment":[{"name":null},{"time":0.8667,"name":"TX/hua_a4"}]},"TX/shuyefaguang":{"attachment":[{"name":null}]},"TX_feng_quan_faguang2":{"attachment":[{"name":null}]},"TX_huaban1_sanluo":{"color":[{"time":0.8333,"color":"ffffffff"},{"time":1.2,"color":"ffffff00"}],"attachment":[{"name":null},{"time":0.8333,"name":"TX/hua_a2"}]},"z_qiantui":{"attachment":[{"name":"z_qiantui"}]},"TX/liuguang7_BZH":{"attachment":[{"name":null}]},"BZ/zuiba":{"attachment":[{"name":null}]},"TX/shuye8":{"attachment":[{"name":null}]},"TX_guangquan2":{"attachment":[{"name":null}]},"y-meimao":{"attachment":[{"name":"y_meimao_pingshi"}]},"TX/cao6":{"attachment":[{"name":null}]},"TX/chentu6":{"attachment":[{"name":null}]},"TX_shouji3_3":{"attachment":[{"name":null}]},"BZ/y_bian_hou2_liuguang":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou3":{"attachment":[{"name":null}]},"TX_huaban2_sanluo2":{"color":[{"time":0.8333,"color":"d0d6c3ff"},{"time":1.2,"color":"d0d6c300"}],"attachment":[{"name":null},{"time":0.8333,"name":"TX/hua_a3"}]},"TX_SK2_shouji_lie8":{"attachment":[{"name":null}]},"z-yanjing":{"attachment":[{"name":"z_yanjing_pingshi"}]},"TX_SK2_shouji_lie7":{"attachment":[{"name":null}]},"TX/suduxian_su4":{"attachment":[{"name":null}]},"BZ/z_bianzi_hou3_liuguang\n2":{"attachment":[{"name":null}]},"TX_feng_quan4":{"attachment":[{"name":null}]},"BZ/y_bianzi2_bz_g":{"attachment":[{"name":null}]},"TX_bao1":{"attachment":[{"name":null}]},"TX/cao10":{"attachment":[{"name":null}]},"TX_xian3":{"attachment":[{"name":null}]},"TX_guangxian1":{"attachment":[{"name":null}]},"TX/shuye9":{"attachment":[{"name":null}]},"TX/shuyefaguang6":{"attachment":[{"name":null}]},"TX/TX_yan1_4":{"attachment":[{"name":null}]},"BZ/y_bianzi_1_liuguang":{"attachment":[{"name":null}]},"TX_feng1":{"attachment":[{"name":null}]},"TX/liuguang_mi":{"attachment":[{"name":null}]},"hei":{"attachment":[{"name":null}]},"BZ/z_bianzi5_liuguang":{"attachment":[{"name":null}]},"hei2":{"attachment":[{"name":null}]},"BZ/y_bianzi2":{"attachment":[{"name":null}]},"TX/cao3":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie11":{"attachment":[{"name":null}]},"TX/shuyefaguang2":{"attachment":[{"name":null}]},"TX/shuye6":{"attachment":[{"name":null}]},"TX/shuyefaguang9":{"attachment":[{"name":null}]},"BZ/z_shou":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian3":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian8":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie4":{"attachment":[{"name":null}]},"TX_guangquan4":{"attachment":[{"name":null}]},"TX/TX_yan1_3":{"attachment":[{"name":null}]},"ZZZZZZZZZZZ":{"attachment":[{"name":null}]},"TX_SK2_shouji_xian6":{"attachment":[{"name":null}]},"TX/liuguang2":{"attachment":[{"name":null}]},"TX/suduxian_su1":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie2":{"attachment":[{"name":null}]},"BZ/y_bianzi1":{"attachment":[{"name":null}]},"TX_SK2_shouji_lie6":{"attachment":[{"name":null}]},"TX_huabao":{"attachment":[{"name":null},{"time":0.8333,"name":"TX/hua_b"},{"time":0.8667,"name":null}]},"TX/shuyefaguang4":{"attachment":[{"name":null}]},"TX_guangxian6":{"attachment":[{"name":null}]},"BZ/z_jiao":{"attachment":[{"name":null}]},"tou":{"attachment":[{"name":"tou"}]},"TX_SK2_shouji_lie":{"attachment":[{"name":null}]},"TX_SK2_shouji_quan2":{"attachment":[{"name":null}]},"TX_xian":{"attachment":[{"name":null}]},"TX_SK2_liuguang_cu":{"attachment":[{"name":null}]},"TX_BZ_cao_hou5":{"attachment":[{"name":null}]},"TX/TX_yan1_1_hou4":{"attachment":[{"name":null}]},"TX/chentu5":{"attachment":[{"name":null}]}},"bones":{"bone120":{"rotate":[{"angle":-18.73},{"time":0.2,"angle":-8.43},{"time":0.4,"angle":-16.95},{"time":0.6667,"angle":-13.97},{"time":0.8333,"angle":-13.08,"curve":"stepped"},{"time":0.8667,"angle":-13.08},{"time":1.3333,"angle":-13.29},{"time":2,"angle":-12.66},{"time":2.6667,"angle":-13.33},{"time":3.3333,"angle":-12.66},{"time":4,"angle":-13.33},{"time":4.3333,"angle":-12.99}],"scale":[{"x":0.052},{"time":0.4,"x":0.618},{"time":0.6667,"x":0.804,"y":0.92},{"time":0.8333,"x":0.861,"y":0.897},{"time":0.8667,"x":0.895,"y":0.897}]},"BZ/z_bianzi4":{"rotate":[{"angle":12.82},{"time":0.2,"angle":18.52},{"time":0.4,"angle":14.61},{"time":0.6667,"angle":10.6},{"time":0.8333,"angle":9.4},{"time":0.8667,"angle":15.43},{"time":1.3333,"angle":15.22},{"time":2,"angle":15.85},{"time":2.6667,"angle":15.18},{"time":3.3333,"angle":15.85},{"time":4,"angle":15.18},{"time":4.3333,"angle":15.52}],"translate":[{"time":0.4},{"time":0.6667,"x":3.49,"y":-3.19},{"time":0.8333,"x":4.53,"y":-4.14},{"time":0.8667,"x":0.04,"y":-0.97}],"scale":[{},{"time":0.4,"x":1.023},{"time":0.6667,"x":1.005},{"time":0.8333}]},"BZ/z_bianzi5":{"rotate":[{"angle":-5.11},{"time":0.2,"angle":-5.79},{"time":0.4,"angle":9.74,"curve":0.395,"c2":0.41,"c3":0.705,"c4":0.74},{"time":0.5333,"angle":1.58,"curve":0.336,"c2":0.37,"c3":0.667,"c4":0.7},{"time":0.6667,"angle":-19.4},{"time":0.8333,"angle":-21.3},{"time":0.8667,"angle":-27.97},{"time":1.3333,"angle":-5.39},{"time":2,"angle":-19.74},{"time":2.6667,"angle":16.47},{"time":3.3333,"angle":-19.74},{"time":4,"angle":16.47},{"time":4.3333,"angle":-1.63}],"scale":[{},{"time":0.2,"x":1.13,"y":0.943},{"time":0.4,"x":0.62,"y":0.887,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.6667,"x":0.781,"y":0.892}]},"TX_guangyun":{"translate":[{"time":0.8,"x":-3740.15,"y":1821.94}],"scale":[{"time":0.8,"x":2.044,"y":2.044,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8333,"x":4.728,"y":4.728,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":1.1667,"x":5.739,"y":5.739}]},"TX_guangyun2":{"translate":[{"time":0.8,"x":-3734.44,"y":1852.55},{"time":0.8333,"x":-3726.77,"y":1856.38},{"time":1.3333,"x":-3709.3,"y":1885.91}],"scale":[{"time":0.8,"x":0.828,"y":0.828},{"time":0.8333,"x":0.924,"y":0.924},{"time":1.3333,"x":1.638,"y":1.638}]},"TX_huaban1":{"rotate":[{"time":0.2,"angle":-30},{"time":0.8667,"angle":-0.72},{"time":1.2,"angle":9.51}],"translate":[{"time":0.8333,"x":-8.59,"y":2.38},{"time":0.8667,"x":-2.25,"y":17.08},{"time":1.2,"x":24.79,"y":67.72}],"scale":[{"time":0.8667,"y":1.094,"curve":"stepped"},{"time":1.2,"y":1.094},{"time":2,"y":1.034},{"time":2.6667,"x":1.046,"y":1.094},{"time":3.3333,"y":1.034},{"time":4,"x":1.046,"y":1.094},{"time":4.3333,"y":1.094}],"shear":[{"time":1.2},{"time":2,"x":15.41,"y":9.29},{"time":2.6667,"x":-7.73,"y":-10.28},{"time":3.3333,"x":15.41,"y":9.29},{"time":4,"x":-7.73,"y":-10.28},{"time":4.3333}]},"TX_huaban2":{"rotate":[{"time":0.8667,"angle":14.54},{"time":1.2,"angle":-2.41,"curve":"stepped"},{"time":2,"angle":-2.41},{"time":2.6667,"angle":-3.98},{"time":3.3333,"angle":-2.41},{"time":4,"angle":-3.98},{"time":4.3333,"angle":-2.41}],"translate":[{"time":0.8333,"x":-8.59,"y":2.38},{"time":0.8667,"x":3.86,"y":18.03},{"time":1.2,"x":30.9,"y":68.67}],"scale":[{"time":0.8667,"x":1.057,"y":0.914},{"time":1.2,"x":1.057,"y":0.946},{"time":2,"x":1.266,"y":0.874},{"time":2.6667,"x":1.057,"y":0.946},{"time":3.3333,"x":1.266,"y":0.874},{"time":4,"x":1.057,"y":0.946}],"shear":[{"time":1.2},{"time":2,"x":23.1,"y":13.52},{"time":2.6667,"x":-7.51,"y":-3.61},{"time":3.3333,"x":23.1,"y":13.52},{"time":4,"x":-7.51,"y":-3.61},{"time":4.3333}]},"TX_huaban3":{"rotate":[{"time":0.8667},{"time":1.2,"angle":-9.42}],"translate":[{"time":0.8333,"x":-8.59,"y":2.38},{"time":0.8667,"x":-12.45,"y":16.26},{"time":1.2,"x":14.59,"y":66.9}],"shear":[{"time":1.2},{"time":2,"y":8.13},{"time":2.6667,"y":-7.04},{"time":3.3333,"y":11.45},{"time":4,"y":-11.63},{"time":4.3333}]},"TX_huaban1_sanluo":{"rotate":[{"time":0.8333,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":1.2,"angle":7.65}],"translate":[{"time":0.8333,"x":-22.25,"y":27.34,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":1.2,"x":-97.94,"y":122.38}]},"TX_huaban1_sanluo2":{"rotate":[{"time":0.8333,"angle":-18.17,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":1.2,"angle":-10.34}],"translate":[{"time":0.8333,"x":14.71,"y":-11.09,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":1.2,"x":100.37,"y":8.26}],"scale":[{"time":0.8333,"x":0.891,"y":0.891,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":1.2,"x":0.979,"y":0.706}]},"TX_huaban2_sanluo":{"rotate":[{"time":0.8333,"angle":25.12,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":1.1,"angle":1.03}],"translate":[{"time":0.8333,"x":71.6,"y":149.09,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":1.1,"x":179.87,"y":206.32}],"scale":[{"time":0.8333,"x":0.626,"y":0.5,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":1.1,"x":0.626,"y":0.443}]},"TX_huaban2_sanluo2":{"rotate":[{"time":0.8333,"angle":-34.71,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":1.2,"angle":-38.63}],"translate":[{"time":0.8333,"x":-62.05,"y":38.87,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":1.2,"x":-127.75,"y":68.48}],"scale":[{"time":0.8333,"x":0.813,"y":0.622,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":1.2,"x":0.741,"y":0.422}]},"TX_huabao":{"rotate":[{"time":1.2,"angle":-9.42}],"translate":[{"time":0.8333,"x":-8.59,"y":2.38},{"time":0.8667,"x":-23.34,"y":18.18},{"time":1.2,"x":9.07,"y":48.63}]},"TX_huarui":{"rotate":[{"time":0.8667,"angle":-4.33},{"time":1.2,"angle":-13.75}],"translate":[{"time":0.8333,"x":-8.59,"y":2.38},{"time":0.8667,"x":-6.83,"y":21.24},{"time":1.2,"x":20.21,"y":71.88}],"scale":[{"time":0.8667,"x":0.785}],"shear":[{"time":1.2},{"time":1.7,"y":-7.01},{"time":2.3333,"y":12.64},{"time":3,"y":-9.46},{"time":3.6667,"y":8.41},{"time":4.3333}]},"bone17":{"rotate":[{"angle":-17.42},{"time":1.3333}]},"z_qiantui":{"rotate":[{"angle":9.3},{"time":1.5}],"translate":[{"x":-2.15,"y":-2.31},{"time":0.3,"x":-37.75,"y":-32.51},{"time":1.5},{"time":1.6667,"x":-2.15,"y":-2.31},{"time":1.8333,"x":-4.29,"y":-4.61},{"time":2.1667},{"time":2.5,"x":-4.29,"y":-4.61},{"time":2.8333},{"time":3,"x":-2.15,"y":-2.31},{"time":3.1667,"x":-4.29,"y":-4.61},{"time":3.5},{"time":3.8333,"x":-4.29,"y":-4.61},{"time":4.1667},{"time":4.3333,"x":-2.15,"y":-2.31}]},"y-meimao":{"rotate":[{},{"time":0.8333,"angle":11.92},{"time":0.8667,"angle":10.72},{"time":1.3333}],"translate":[{},{"time":0.8333,"x":-18.16,"y":-4.28},{"time":0.8667,"x":-11.57,"y":-7.8},{"time":1.3333}],"scale":[{"time":0.8333},{"time":0.8667,"y":1.123},{"time":1.3333}]},"bone12":{"rotate":[{},{"time":0.3,"angle":-3.53},{"time":1.3333,"angle":-2.7},{"time":1.6667},{"time":2,"angle":10.12},{"time":2.3333},{"time":2.6667,"angle":-2.7},{"time":3},{"time":3.3333,"angle":10.12},{"time":3.6667},{"time":4,"angle":-2.7},{"time":4.3333}],"translate":[{},{"time":0.3,"x":3.4,"y":-18.4},{"time":1.3333,"x":8.43,"y":-7.92},{"time":1.6667},{"time":2,"x":-21.75,"y":10.51},{"time":2.3333},{"time":2.6667,"x":8.43,"y":-7.92},{"time":3},{"time":3.3333,"x":-21.75,"y":10.51},{"time":3.6667},{"time":4,"x":8.43,"y":-7.92},{"time":4.3333}],"scale":[{},{"time":0.3,"x":0.761},{"time":1.3333,"x":0.794},{"time":1.6667},{"time":2,"x":1.09},{"time":2.3333},{"time":2.6667,"x":0.794},{"time":3},{"time":3.3333,"x":1.09},{"time":3.6667},{"time":4,"x":0.794},{"time":4.3333}]},"bone9":{"rotate":[{"angle":19.85},{"time":1.3333}]},"shenti":{"rotate":[{"angle":0.3},{"time":1.5},{"time":1.6667,"angle":0.3},{"time":1.8333,"angle":0.6},{"time":2.1667},{"time":2.5,"angle":0.6},{"time":2.8333},{"time":3,"angle":0.3},{"time":3.1667,"angle":0.6},{"time":3.5},{"time":3.8333,"angle":0.6},{"time":4.1667},{"time":4.3333,"angle":0.3}],"translate":[{"x":0.01,"y":-6.35},{"time":0.3,"y":4.6,"curve":0.27,"c2":0.63,"c3":0.575,"c4":0.99},{"time":0.8333,"y":-34.6,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.8667,"y":1.99},{"time":1.5,"y":-17.96},{"time":1.6667,"x":0.01,"y":-6.35},{"time":1.8333,"x":0.02,"y":5.27},{"time":2.1667,"y":-17.96},{"time":2.5,"x":0.02,"y":5.27},{"time":2.8333,"y":-17.96},{"time":3,"x":0.01,"y":-6.35},{"time":3.1667,"x":0.02,"y":5.27},{"time":3.5,"y":-17.96},{"time":3.8333,"x":0.02,"y":5.27},{"time":4.1667,"y":-17.96},{"time":4.3333,"x":0.01,"y":-6.35}]},"tou":{"rotate":[{},{"time":0.3,"angle":5.37},{"time":0.8333,"angle":-5.84},{"time":0.8667,"angle":7.96},{"time":1.3333,"angle":-5.52},{"time":1.6667},{"time":2,"angle":4.26},{"time":2.3333},{"time":2.6667,"angle":-5.52},{"time":3},{"time":3.3333,"angle":4.26},{"time":3.6667},{"time":4,"angle":-5.52},{"time":4.3333}],"translate":[{},{"time":0.3,"x":0.49,"y":-0.66},{"time":0.8333,"x":-8.13,"y":-14.45,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.8667,"x":19.24,"y":39.56},{"time":1.3333,"x":12.52,"y":-1.18},{"time":1.6667},{"time":2,"x":-15.09,"y":17.23},{"time":2.3333},{"time":2.6667,"x":12.52,"y":-1.18},{"time":3},{"time":3.3333,"x":-15.09,"y":17.23},{"time":3.6667},{"time":4,"x":12.52,"y":-1.18},{"time":4.3333}],"scale":[{},{"time":0.8333,"y":0.959,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.8667,"y":1.012},{"time":1.3333}]},"bone14":{"scale":[{},{"time":1.3333,"y":1.076},{"time":1.6667},{"time":2,"y":1.076},{"time":2.3333},{"time":2.6667,"y":1.076},{"time":3},{"time":3.3333,"y":1.076},{"time":3.6667},{"time":4,"y":1.076},{"time":4.3333}]},"z_houtui":{"rotate":[{},{"time":0.8333,"angle":30.84},{"time":0.8667,"angle":12.04},{"time":1.3333}],"translate":[{},{"time":0.3,"x":-5.61,"y":-8.97,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.8333,"x":-4.51,"y":17.25},{"time":0.8667,"x":-7.31,"y":1.84},{"time":1.3333}]},"bone10":{"rotate":[{},{"time":0.3,"angle":7.81},{"time":0.8333,"angle":-27.34},{"time":0.8667,"angle":-6.03},{"time":1.3333,"angle":3.3},{"time":1.6667},{"time":2,"angle":3.3},{"time":2.3333},{"time":2.6667,"angle":3.3},{"time":3},{"time":3.3333,"angle":3.3},{"time":3.6667},{"time":4,"angle":3.3},{"time":4.3333}],"translate":[{},{"time":1.3333,"x":7.48,"y":3.6},{"time":1.6667},{"time":2,"x":7.48,"y":3.6},{"time":2.3333},{"time":2.6667,"x":7.48,"y":3.6},{"time":3},{"time":3.3333,"x":7.48,"y":3.6},{"time":3.6667},{"time":4,"x":7.48,"y":3.6},{"time":4.3333}]},"z-meimao":{"rotate":[{},{"time":1.3333,"angle":-4.06},{"time":1.6667},{"time":2,"angle":2.7},{"time":2.3333},{"time":2.6667,"angle":-4.06},{"time":3},{"time":3.3333,"angle":2.7},{"time":3.6667},{"time":4,"angle":-4.06},{"time":4.3333}]},"y_yan":{"rotate":[{"time":0.8333},{"time":1.3333,"angle":-3.15},{"time":1.6667},{"time":2,"angle":5.72},{"time":2.3333},{"time":2.6667,"angle":-3.15},{"time":3},{"time":3.3333,"angle":5.72},{"time":3.6667},{"time":4,"angle":-3.15},{"time":4.3333}],"translate":[{"time":0.8333},{"time":0.8667,"x":3.53,"y":15.34},{"time":1.3333,"x":10.82,"y":4.96},{"time":1.6667},{"time":2,"x":-21.29,"y":1.32},{"time":2.3333},{"time":2.6667,"x":10.82,"y":4.96},{"time":3},{"time":3.3333,"x":-21.29,"y":1.32},{"time":3.6667},{"time":4,"x":10.82,"y":4.96},{"time":4.3333}],"scale":[{},{"time":0.8333,"y":0.699},{"time":0.8667,"x":0.883,"y":0.989},{"time":1.3333,"y":1.009},{"time":1.6667},{"time":2,"y":1.036},{"time":2.3333},{"time":2.6667,"y":1.009},{"time":3},{"time":3.3333,"y":1.036},{"time":3.6667},{"time":4,"y":1.009},{"time":4.3333}]},"bone11":{"rotate":[{},{"time":0.3,"angle":10.28},{"time":1.3333,"angle":-7.06},{"time":1.6667},{"time":2,"angle":8.79},{"time":2.3333},{"time":2.6667,"angle":-7.06},{"time":3},{"time":3.3333,"angle":8.79},{"time":3.6667},{"time":4,"angle":-7.06},{"time":4.3333}],"translate":[{},{"time":0.3,"x":3.65,"y":1.34},{"time":1.3333,"x":16.18,"y":5.97},{"time":1.6667},{"time":2,"x":-12.16,"y":-6.04},{"time":2.3333},{"time":2.6667,"x":16.18,"y":5.97},{"time":3},{"time":3.3333,"x":-12.16,"y":-6.04},{"time":3.6667},{"time":4,"x":16.18,"y":5.97},{"time":4.3333}]},"bone2":{"rotate":[{},{"time":0.3,"angle":7.22},{"time":1.3333,"angle":6.33},{"time":1.6667},{"time":2,"angle":6.33},{"time":2.3333},{"time":2.6667,"angle":6.33},{"time":3},{"time":3.3333,"angle":6.33},{"time":3.6667},{"time":4,"angle":6.33},{"time":4.3333}]},"bone13":{"rotate":[{},{"time":1.3333,"angle":-0.48},{"time":1.6667},{"time":2,"angle":2.21},{"time":2.3333},{"time":2.6667,"angle":-0.48},{"time":3},{"time":3.3333,"angle":2.21},{"time":3.6667},{"time":4,"angle":-0.48},{"time":4.3333}],"translate":[{},{"time":1.3333,"x":16.46,"y":31.61},{"time":1.6667},{"time":2,"x":-38.6,"y":19.01},{"time":2.3333},{"time":2.6667,"x":16.46,"y":31.61},{"time":3},{"time":3.3333,"x":-38.6,"y":19.01},{"time":3.6667},{"time":4,"x":16.46,"y":31.61},{"time":4.3333}],"scale":[{},{"time":1.3333,"x":0.738},{"time":1.6667},{"time":2,"x":1.116},{"time":2.3333},{"time":2.6667,"x":0.738},{"time":3},{"time":3.3333,"x":1.116},{"time":3.6667},{"time":4,"x":0.738},{"time":4.3333}]},"bone6":{"rotate":[{"time":0.8333},{"time":0.8667,"angle":17.19},{"time":1.3333}],"translate":[{"time":0.8333},{"time":0.8667,"x":-3.28,"y":1.03},{"time":1.3333,"x":0.49,"y":7.9},{"time":1.6667},{"time":2,"x":0.49,"y":7.9},{"time":2.3333},{"time":2.6667,"x":0.49,"y":7.9},{"time":3},{"time":3.3333,"x":0.49,"y":7.9},{"time":3.6667},{"time":4,"x":0.49,"y":7.9},{"time":4.3333}]},"bone4":{"rotate":[{},{"time":0.3,"angle":0.41},{"time":0.8333,"angle":-5.57},{"time":1.3333,"angle":0.37},{"time":1.6667},{"time":2,"angle":0.37},{"time":2.3333},{"time":2.6667,"angle":0.37},{"time":3},{"time":3.3333,"angle":0.37},{"time":3.6667},{"time":4,"angle":0.37},{"time":4.3333}]},"zhonzi":{"rotate":[{},{"time":0.3,"angle":3.64},{"time":0.8333,"angle":-8.08},{"time":0.8667,"angle":-3.27},{"time":1.3333}],"scale":[{},{"time":0.8333,"x":1.078,"y":0.873,"curve":0.315,"c2":0.59,"c3":0.524,"c4":0.99},{"time":0.8667,"x":0.981,"y":1.174},{"time":1.3333,"x":1.111,"y":0.832},{"time":1.6667},{"time":2,"x":1.111,"y":0.832},{"time":2.3333},{"time":2.6667,"x":1.111,"y":0.832},{"time":3},{"time":3.3333,"x":1.111,"y":0.832},{"time":3.6667},{"time":4,"x":1.111,"y":0.832},{"time":4.3333}]},"y_qiantui":{"rotate":[{"angle":-12.17},{"time":1.3333}]},"bone16":{"rotate":[{"angle":-10.8},{"time":1.3333}]},"z_yan":{"rotate":[{"time":0.8667},{"time":1.3333,"angle":-1.39},{"time":1.6667},{"time":2,"angle":1.8},{"time":2.3333},{"time":2.6667,"angle":-1.39},{"time":3},{"time":3.3333,"angle":1.8},{"time":3.6667},{"time":4,"angle":-1.39},{"time":4.3333}],"translate":[{},{"time":0.8333,"x":0.93,"y":0.2},{"time":0.8667},{"time":1.3333,"x":14.17,"y":1.54},{"time":1.6667},{"time":2,"x":-3.67,"y":-0.98},{"time":2.3333},{"time":2.6667,"x":14.17,"y":1.54},{"time":3},{"time":3.3333,"x":-3.67,"y":-0.98},{"time":3.6667},{"time":4,"x":14.17,"y":1.54},{"time":4.3333}],"scale":[{},{"time":0.8333,"y":0.645},{"time":0.8667,"x":0.893,"y":0.941},{"time":1.3333,"x":0.809,"y":1.008},{"time":1.6667},{"time":2,"x":1.136,"y":1.024},{"time":2.3333},{"time":2.6667,"x":0.809,"y":1.008},{"time":3},{"time":3.3333,"x":1.136,"y":1.024},{"time":3.6667},{"time":4,"x":0.809,"y":1.008},{"time":4.3333}]},"bone5":{"rotate":[{"time":0.8333},{"time":0.8667,"angle":-9.73},{"time":1.3333}],"translate":[{"time":0.8333},{"time":0.8667,"x":10.99,"y":14.28},{"time":1.3333,"x":2.96,"y":5.1},{"time":1.6667},{"time":2,"x":2.96,"y":5.1},{"time":2.3333},{"time":2.6667,"x":2.96,"y":5.1},{"time":3},{"time":3.3333,"x":2.96,"y":5.1},{"time":3.6667},{"time":4,"x":2.96,"y":5.1},{"time":4.3333}]},"bone8":{"rotate":[{"angle":-14.96},{"time":1.3333}]},"zui":{"scale":[{"time":0.8333},{"time":0.8667,"y":1.6},{"time":1.3333,"y":1.382},{"time":1.6667},{"time":2,"y":1.382},{"time":2.3333},{"time":2.6667,"y":1.382},{"time":3},{"time":3.3333,"y":1.382},{"time":3.6667},{"time":4,"y":1.382},{"time":4.3333}]},"y_houtui":{"rotate":[{"angle":-9.17},{"time":1.3333}]},"bone15":{"rotate":[{"angle":-0.04},{"time":1.3333}]},"bone3":{"rotate":[{},{"time":0.3,"angle":6.1},{"time":0.8333,"angle":0.58},{"time":1.3333}]},"bone7":{"rotate":[{"angle":25.4},{"time":1.3333}]},"y_yanjing":{"translate":[{},{"time":0.8333,"x":2.75,"y":-7.52},{"time":0.8667,"x":6.77,"y":-7.45},{"time":1.3333}],"scale":[{},{"time":0.8333,"y":0.862},{"time":0.8667,"x":0.88,"y":0.862},{"time":1.3333}]},"BZ/z_bianzi3":{"rotate":[{"angle":-0.3},{"time":0.2,"angle":-43.79},{"time":0.4,"angle":-25.79},{"time":0.6667,"angle":-47.64},{"time":0.8333,"angle":-54.2},{"time":0.8667,"angle":-49.79},{"time":1.3333,"angle":-53.13}],"translate":[{"x":-174.26,"y":-269.02},{"time":0.4,"x":-148.16,"y":-253.19},{"time":0.6667,"x":-128.09,"y":-241.01},{"time":0.8333,"x":-122.06,"y":-237.36}],"scale":[{},{"time":0.4,"x":1.023},{"time":0.6667,"x":1.005},{"time":0.8333}]},"TX_HUA":{"rotate":[{"time":0.8333,"angle":12.88},{"time":0.8667,"angle":7},{"time":1.3333,"angle":2.1},{"time":2,"angle":8.15}],"translate":[{"time":0.8333,"x":3098.26,"y":2563.21},{"time":0.8667,"x":3088.63,"y":2560.41},{"time":1.1,"x":3057.71,"y":2562},{"time":1.3333,"x":3085.78,"y":2566.8},{"time":1.9,"x":3060.46,"y":2542.15},{"time":2,"x":3055.99,"y":2539.5},{"time":2.6667,"x":3087.22,"y":2554.32},{"time":3.3333,"x":3055.99,"y":2539.5},{"time":4,"x":3087.22,"y":2554.32}],"scale":[{"time":0.8333,"x":1.176,"y":0.82}]},"bone123":{"rotate":[{"angle":-5.07},{"time":0.2,"angle":-7.55},{"time":0.4,"angle":-3.28},{"time":0.6667,"angle":-0.31},{"time":0.8333,"angle":0.58,"curve":"stepped"},{"time":0.8667,"angle":0.58},{"time":1.3333,"angle":0.38},{"time":2,"angle":1.01},{"time":2.6667,"angle":0.34},{"time":3.3333,"angle":1.01},{"time":4,"angle":0.34},{"time":4.3333,"angle":0.67}],"scale":[{},{"time":0.4,"x":1.023},{"time":0.6667,"x":1.005},{"time":0.8333}]},"bone125":{"rotate":[{"angle":-4.51},{"time":0.2,"angle":-8.09},{"time":0.4,"angle":-2.72},{"time":0.6667,"angle":0.25},{"time":0.8333,"angle":1.14,"curve":"stepped"},{"time":0.8667,"angle":1.14},{"time":1.3333,"angle":0.93},{"time":2,"angle":1.57},{"time":2.6667,"angle":0.9},{"time":3.3333,"angle":1.57},{"time":4,"angle":0.9},{"time":4.3333,"angle":1.23}],"scale":[{},{"time":0.4,"x":1.023},{"time":0.6667,"x":1.005},{"time":0.8333}]},"bone130":{"rotate":[{"angle":2.09},{"time":0.2,"angle":5.92},{"time":0.4,"angle":3.88},{"time":0.6667,"angle":6.69},{"time":0.8333,"angle":7.53},{"time":0.8667,"angle":13.73},{"time":1.3333,"angle":13.52},{"time":2,"angle":14.15},{"time":2.6667,"angle":13.48},{"time":3.3333,"angle":14.15},{"time":4,"angle":13.48},{"time":4.3333,"angle":13.82}],"scale":[{},{"time":0.4,"x":1.023},{"time":0.6667,"x":1.005},{"time":0.8333}]},"bone135":{"rotate":[{"angle":1.13},{"time":0.2,"angle":3.73},{"time":0.4,"angle":11.66},{"time":0.5333,"angle":5.17},{"time":0.6667,"angle":11.92},{"time":0.8333,"angle":15.29,"curve":"stepped"},{"time":0.8667,"angle":15.29},{"time":1.3333,"angle":6.46},{"time":2,"angle":7.09},{"time":2.6667,"angle":6.42},{"time":3.3333,"angle":7.09},{"time":4,"angle":6.42},{"time":4.3333,"angle":6.75}],"scale":[{},{"time":0.4,"x":1.023},{"time":0.6667,"x":1.005},{"time":0.8333}]},"bone138":{"rotate":[{"angle":9.75},{"time":0.2,"angle":10.16},{"time":0.4,"angle":19.91,"curve":0.391,"c2":0.4,"c3":0.705,"c4":0.73},{"time":0.5333,"angle":37.08,"curve":0.333,"c2":0.44,"c3":0.644,"c4":0.76},{"time":0.6667,"angle":38.21,"curve":0.285,"c2":0.59,"c3":0.61,"c4":0.91},{"time":0.8333,"angle":38.92},{"time":0.8667,"angle":21.59},{"time":1.3333,"angle":20.98},{"time":2,"angle":21.62},{"time":2.6667,"angle":20.95},{"time":3.3333,"angle":21.62},{"time":4,"angle":20.95},{"time":4.3333,"angle":21.28}],"translate":[{"time":0.8333},{"time":0.8667,"x":8.85,"y":7.14},{"time":1.3333,"x":-8.78,"y":0.55}],"scale":[{},{"time":0.4,"x":1.023,"curve":0.414,"c2":0.5,"c3":0.665,"c4":0.82},{"time":0.6667,"x":1.001,"curve":0.285,"c2":0.59,"c3":0.61,"c4":0.91},{"time":0.8333}]},"bone142":{"rotate":[{"angle":2.71},{"time":0.2,"angle":2.72},{"time":0.4,"angle":17.24,"curve":0.391,"c2":0.4,"c3":0.705,"c4":0.73},{"time":0.5333,"angle":19.39,"curve":0.333,"c2":0.44,"c3":0.644,"c4":0.76},{"time":0.6667,"angle":30.03,"curve":0.285,"c2":0.59,"c3":0.61,"c4":0.91},{"time":0.8333,"angle":30.05,"curve":"stepped"},{"time":0.8667,"angle":30.05},{"time":1.3333,"angle":16.46},{"time":2,"angle":17.09},{"time":2.6667,"angle":16.42},{"time":3.3333,"angle":17.09},{"time":4,"angle":16.42},{"time":4.3333,"angle":16.76}],"scale":[{},{"time":0.4,"x":1.023,"curve":0.414,"c2":0.5,"c3":0.665,"c4":0.82},{"time":0.6667,"x":1.001,"curve":0.285,"c2":0.59,"c3":0.61,"c4":0.91},{"time":0.8333}]},"bone145":{"rotate":[{"angle":7.43},{"time":0.2,"angle":13.43},{"time":0.4,"angle":21.58},{"time":0.5333,"angle":10.73,"curve":0.311,"c2":0.42,"c3":0.642,"c4":0.75},{"time":0.6667,"angle":3.61,"curve":0.314,"c2":0.5,"c3":0.646,"c4":0.83},{"time":0.8333,"angle":-4.97},{"time":0.8667,"angle":-22.37},{"time":1.3333,"angle":23.23},{"time":2,"angle":27.58},{"time":2.6667,"angle":13.67},{"time":3.3333,"angle":27.58},{"time":4,"angle":13.67},{"time":4.3333,"angle":20.62}],"translate":[{"time":0.8333},{"time":0.8667,"x":1.62,"y":-7.88},{"time":1.3333,"x":-9.93,"y":-1.49}],"scale":[{},{"time":0.4,"x":1.023,"curve":0.414,"c2":0.5,"c3":0.665,"c4":0.82},{"time":0.6667,"x":1.001,"curve":0.285,"c2":0.59,"c3":0.61,"c4":0.91},{"time":0.8333}]},"bone128":{"rotate":[{"angle":1.65},{"time":0.2,"angle":6.12},{"time":0.4,"angle":3.44},{"time":0.6667,"angle":10.97},{"time":0.8333,"angle":13.23,"curve":"stepped"},{"time":0.8667,"angle":13.23},{"time":1.3333,"angle":13.02},{"time":2,"angle":13.66},{"time":2.6667,"angle":12.98},{"time":3.3333,"angle":13.66},{"time":4,"angle":12.98},{"time":4.3333,"angle":13.32}],"scale":[{},{"time":0.4,"x":1.023},{"time":0.6667,"x":1.005},{"time":0.8333}]},"bone129":{"rotate":[{"angle":-6.22},{"time":0.2,"angle":-4.98},{"time":0.4,"angle":-4.43},{"time":0.6667,"angle":2.65},{"time":0.8333,"angle":4.78,"curve":"stepped"},{"time":0.8667,"angle":4.78},{"time":1.3333,"angle":4.57},{"time":2,"angle":5.21},{"time":2.6667,"angle":4.53},{"time":3.3333,"angle":5.21},{"time":4,"angle":4.53},{"time":4.3333,"angle":4.87}],"scale":[{},{"time":0.4,"x":1.023},{"time":0.6667,"x":1.005},{"time":0.8333}]},"bone143":{"rotate":[{"angle":4.06},{"time":0.2,"angle":6.37},{"time":0.4,"angle":22.33,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5333,"angle":28.87},{"time":0.6667,"angle":30.32},{"time":0.8333,"angle":28.91},{"time":0.8667,"angle":39.25},{"time":1.3333,"angle":23.41},{"time":2,"angle":24.05},{"time":2.6667,"angle":23.38},{"time":3.3333,"angle":24.05},{"time":4,"angle":23.38},{"time":4.3333,"angle":23.71}],"translate":[{"time":0.4,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5333,"x":-7.44,"y":-5.46},{"time":0.6667,"x":4.19,"y":-1.7},{"time":0.8333}],"scale":[{},{"time":0.4,"x":1.023,"curve":0.414,"c2":0.5,"c3":0.665,"c4":0.82},{"time":0.6667,"x":1.001,"curve":0.285,"c2":0.59,"c3":0.61,"c4":0.91},{"time":0.8333}]},"bone146":{"rotate":[{"angle":1.21},{"time":0.2,"angle":1.88},{"time":0.4,"angle":22.9,"curve":0.395,"c2":0.41,"c3":0.705,"c4":0.74},{"time":0.5333,"angle":26.45,"curve":0.328,"c2":0.44,"c3":0.641,"c4":0.76},{"time":0.6667,"angle":2.9,"curve":0.287,"c2":0.59,"c3":0.612,"c4":0.91},{"time":0.8333,"angle":0.22},{"time":0.8667,"angle":-10.06},{"time":1.3333,"angle":3.28},{"time":2,"angle":3.92},{"time":2.6667,"angle":3.25},{"time":3.3333,"angle":3.92},{"time":4,"angle":3.25},{"time":4.3333,"angle":3.58}],"scale":[{},{"time":0.4,"x":1.023,"curve":0.414,"c2":0.5,"c3":0.665,"c4":0.82},{"time":0.6667,"x":1.001,"curve":0.285,"c2":0.59,"c3":0.61,"c4":0.91},{"time":0.8333}]},"bone122":{"rotate":[{"angle":-9.93},{"time":0.2,"angle":-2.51},{"time":0.4,"angle":-8.14},{"time":0.6667,"angle":-5.17},{"time":0.8333,"angle":-4.28,"curve":"stepped"},{"time":0.8667,"angle":-4.28},{"time":1.3333,"angle":-4.49},{"time":2,"angle":-3.85},{"time":2.6667,"angle":-4.53},{"time":3.3333,"angle":-3.85},{"time":4,"angle":-4.53},{"time":4.3333,"angle":-4.19}],"scale":[{},{"time":0.4,"x":1.023},{"time":0.6667,"x":1.005},{"time":0.8333}]},"bone124":{"rotate":[{"angle":-0.84},{"time":0.2,"angle":-0.94},{"time":0.4,"angle":0.95},{"time":0.6667,"angle":3.92},{"time":0.8333,"angle":4.82,"curve":"stepped"},{"time":0.8667,"angle":4.82},{"time":1.3333,"angle":4.61},{"time":2,"angle":5.24},{"time":2.6667,"angle":4.57},{"time":3.3333,"angle":5.24},{"time":4,"angle":4.57},{"time":4.3333,"angle":4.9}],"scale":[{},{"time":0.4,"x":1.023},{"time":0.6667,"x":1.005},{"time":0.8333}]},"bone126":{"rotate":[{"angle":-1.84},{"time":0.2,"angle":-2.17},{"time":0.4,"angle":-0.06},{"time":0.6667,"angle":1.92},{"time":0.8333,"angle":2.51,"curve":"stepped"},{"time":0.8667,"angle":2.51},{"time":1.3333,"angle":2.31},{"time":2,"angle":2.94},{"time":2.6667,"angle":2.27},{"time":3.3333,"angle":2.94},{"time":4,"angle":2.27},{"time":4.3333,"angle":2.6}],"scale":[{},{"time":0.4,"x":1.023},{"time":0.6667,"x":1.005},{"time":0.8333}]},"bone127":{"rotate":[{"angle":-8.03},{"time":0.2,"angle":-5.22},{"time":0.4,"angle":-6.24},{"time":0.6667,"angle":-5.74},{"time":0.8333,"angle":-5.59,"curve":"stepped"},{"time":0.8667,"angle":-5.59},{"time":1.3333,"angle":-5.8},{"time":2,"angle":-5.16},{"time":2.6667,"angle":-5.83},{"time":3.3333,"angle":-5.16},{"time":4,"angle":-5.83},{"time":4.3333,"angle":-5.5}],"scale":[{},{"time":0.4,"x":1.023},{"time":0.6667,"x":1.005},{"time":0.8333}]},"bone131":{"rotate":[{"angle":6.37},{"time":0.2,"angle":6.56},{"time":0.4,"angle":8.15},{"time":0.6667,"angle":13.47},{"time":0.8333,"angle":15.06},{"time":0.8667,"angle":5.51},{"time":1.3333,"angle":5.31},{"time":2,"angle":5.94},{"time":2.6667,"angle":5.27},{"time":3.3333,"angle":5.94},{"time":4,"angle":5.27},{"time":4.3333,"angle":5.6}],"scale":[{},{"time":0.4,"x":1.023},{"time":0.6667,"x":1.005},{"time":0.8333}]},"bone132":{"rotate":[{"angle":6.39},{"time":0.2,"angle":4.04},{"time":0.4,"angle":8.18},{"time":0.6667,"angle":9.08},{"time":0.8333,"angle":9.35},{"time":0.8667,"angle":11.64},{"time":1.3333,"angle":10.56},{"time":2,"angle":11.2},{"time":2.6667,"angle":10.53},{"time":3.3333,"angle":11.2},{"time":4,"angle":10.53},{"time":4.3333,"angle":10.86}],"scale":[{},{"time":0.4,"x":1.023},{"time":0.6667,"x":1.005},{"time":0.8333}]},"bone133":{"rotate":[{"angle":0.69},{"time":0.2,"angle":-2.15},{"time":0.4,"angle":2.47},{"time":0.6667,"angle":10.99},{"time":0.8333,"angle":13.54},{"time":0.8667,"angle":10.32},{"time":1.3333,"angle":7.94},{"time":2,"angle":8.58},{"time":2.6667,"angle":7.9},{"time":3.3333,"angle":8.58},{"time":4,"angle":7.9},{"time":4.3333,"angle":8.24}],"translate":[{"time":0.8333},{"time":0.8667,"x":1.87,"y":5.04}],"scale":[{},{"time":0.4,"x":1.023},{"time":0.6667,"x":1.005},{"time":0.8333}]},"bone134":{"rotate":[{"angle":-1.07},{"time":0.2,"angle":-5.08},{"time":0.4,"angle":0.72},{"time":0.6667,"angle":3.69},{"time":0.8333,"angle":4.58,"curve":"stepped"},{"time":0.8667,"angle":4.58},{"time":1.3333,"angle":-3.11},{"time":2,"angle":-2.47},{"time":2.6667,"angle":-3.14},{"time":3.3333,"angle":-2.47},{"time":4,"angle":-3.14},{"time":4.3333,"angle":-2.81}],"scale":[{},{"time":0.4,"x":1.023},{"time":0.6667,"x":1.005},{"time":0.8333}]},"bone136":{"rotate":[{"angle":1.6},{"time":0.2,"angle":4.7},{"time":0.4,"angle":3.39},{"time":0.5333,"angle":8.89},{"time":0.6667,"angle":9.7},{"time":0.8333,"angle":14.41,"curve":"stepped"},{"time":0.8667,"angle":14.41},{"time":1.3333,"angle":17.76},{"time":2,"angle":18.4},{"time":2.6667,"angle":17.72},{"time":3.3333,"angle":18.4},{"time":4,"angle":17.72},{"time":4.3333,"angle":18.06}],"translate":[{"time":0.4},{"time":0.5333,"x":19.95,"y":0.04},{"time":0.6667,"x":6.65,"y":0.01},{"time":0.8333}],"scale":[{},{"time":0.4,"x":1.023},{"time":0.6667,"x":1.005},{"time":0.8333}]},"bone137":{"rotate":[{"angle":6.35},{"time":0.2,"angle":7.41},{"time":0.4,"angle":13.9},{"time":0.5333,"angle":20.83},{"time":0.6667,"angle":10.77},{"time":0.8333,"angle":9.83},{"time":0.8667,"angle":29.41},{"time":1.3333,"angle":40.05},{"time":2,"angle":40.68},{"time":2.6667,"angle":40.01},{"time":3.3333,"angle":40.68},{"time":4,"angle":40.01},{"time":4.3333,"angle":40.34}],"translate":[{"time":0.4},{"time":0.5333,"x":18.16,"y":-3.25},{"time":0.6667,"x":6.82,"y":-1.7},{"time":0.8333,"x":1.15,"y":-0.92},{"time":0.8667,"x":6.42,"y":-1.25}],"scale":[{},{"time":0.4,"x":1.023},{"time":0.6667,"x":1.005},{"time":0.8333}]},"bone139":{"rotate":[{"angle":5.36},{"time":0.2,"angle":5.99},{"time":0.4,"angle":13.43,"curve":0.414,"c2":0.5,"c3":0.665,"c4":0.82},{"time":0.6667,"angle":24.97,"curve":0.285,"c2":0.59,"c3":0.61,"c4":0.91},{"time":0.8333,"angle":25.69,"curve":"stepped"},{"time":0.8667,"angle":25.69},{"time":1.3333,"angle":25.08},{"time":2,"angle":25.72},{"time":2.6667,"angle":25.04},{"time":3.3333,"angle":25.72},{"time":4,"angle":25.04},{"time":4.3333,"angle":25.38}],"translate":[{"time":0.8667},{"time":1.3333,"x":-7.48,"y":0.05}],"scale":[{},{"time":0.4,"x":1.023,"curve":0.414,"c2":0.5,"c3":0.665,"c4":0.82},{"time":0.6667,"x":1.001,"curve":0.285,"c2":0.59,"c3":0.61,"c4":0.91},{"time":0.8333}]},"bone140":{"rotate":[{"angle":3.27},{"time":0.2,"angle":3.11},{"time":0.4,"angle":11.25,"curve":0.414,"c2":0.5,"c3":0.665,"c4":0.82},{"time":0.6667,"angle":34.61,"curve":0.285,"c2":0.59,"c3":0.61,"c4":0.91},{"time":0.8333,"angle":35.63,"curve":"stepped"},{"time":0.8667,"angle":35.63},{"time":1.3333,"angle":29.68},{"time":2,"angle":30.31},{"time":2.6667,"angle":29.64},{"time":3.3333,"angle":30.31},{"time":4,"angle":29.64},{"time":4.3333,"angle":29.98}],"translate":[{"time":0.4,"curve":0.414,"c2":0.5,"c3":0.665,"c4":0.82},{"time":0.6667,"x":-0.07,"y":-1.38,"curve":0.285,"c2":0.59,"c3":0.61,"c4":0.91},{"time":0.8333,"x":-0.07,"y":-1.44}],"scale":[{},{"time":0.4,"x":1.023,"curve":0.414,"c2":0.5,"c3":0.665,"c4":0.82},{"time":0.6667,"x":1.001,"curve":0.285,"c2":0.59,"c3":0.61,"c4":0.91},{"time":0.8333}]},"bone141":{"rotate":[{"angle":9.36},{"time":0.2,"angle":12.24},{"time":0.4,"angle":19.39,"curve":0.391,"c2":0.4,"c3":0.705,"c4":0.73},{"time":0.5333,"angle":42.48,"curve":0.333,"c2":0.44,"c3":0.644,"c4":0.76},{"time":0.6667,"angle":38.74,"curve":0.285,"c2":0.59,"c3":0.61,"c4":0.91},{"time":0.8333,"angle":38.41,"curve":"stepped"},{"time":0.8667,"angle":38.41},{"time":1.3333,"angle":24.51},{"time":2,"angle":25.14},{"time":2.6667,"angle":24.47},{"time":3.3333,"angle":25.14},{"time":4,"angle":24.47},{"time":4.3333,"angle":24.81}],"translate":[{"time":0.4,"curve":0.414,"c2":0.5,"c3":0.665,"c4":0.82},{"time":0.6667,"x":5.19,"y":-4.57,"curve":0.285,"c2":0.59,"c3":0.61,"c4":0.91},{"time":0.8333,"x":5.39,"y":-4.75}],"scale":[{},{"time":0.4,"x":1.023,"curve":0.414,"c2":0.5,"c3":0.665,"c4":0.82},{"time":0.6667,"x":1.001,"curve":0.285,"c2":0.59,"c3":0.61,"c4":0.91},{"time":0.8333}]},"bone144":{"rotate":[{"angle":4.32},{"time":0.2,"angle":-0.19},{"time":0.4,"angle":35.93,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.5333,"angle":25.84},{"time":0.6667,"angle":12.15},{"time":0.8333,"angle":3.81},{"time":0.8667,"angle":21.93},{"time":1.3333,"angle":12},{"time":2,"angle":18.99},{"time":2.6667,"angle":11.96},{"time":3.3333,"angle":18.99},{"time":4,"angle":11.96},{"time":4.3333,"angle":15.48}],"translate":[{},{"time":0.4,"x":-12.94,"y":-1.87,"curve":0.414,"c2":0.5,"c3":0.665,"c4":0.82},{"time":0.6667,"x":-9.62,"y":12.36,"curve":0.285,"c2":0.59,"c3":0.61,"c4":0.91},{"time":0.8333,"x":-9.49,"y":12.9},{"time":0.8667,"x":-0.67,"y":1.15},{"time":1.3333,"x":-3.57,"y":-1.13}],"scale":[{},{"time":0.4,"x":1.023,"curve":0.414,"c2":0.5,"c3":0.665,"c4":0.82},{"time":0.6667,"x":1.001,"curve":0.285,"c2":0.59,"c3":0.61,"c4":0.91},{"time":0.8333}]},"bone121":{"rotate":[{"angle":-13.83},{"time":0.2,"angle":0.42},{"time":0.4,"angle":-12.05},{"time":0.6667,"angle":-9.07},{"time":0.8333,"angle":-8.18,"curve":"stepped"},{"time":0.8667,"angle":-8.18},{"time":1.3333,"angle":-8.39},{"time":2,"angle":-7.76},{"time":2.6667,"angle":-8.43},{"time":3.3333,"angle":-7.76},{"time":4,"angle":-8.43},{"time":4.3333,"angle":-8.09}],"scale":[{},{"time":0.4,"x":1.023},{"time":0.6667,"x":1.005},{"time":0.8333}]},"yinying":{"scale":[{},{"time":0.3,"x":0.888,"y":0.906},{"time":0.8333,"x":1.096,"y":0.949,"curve":0.377,"c2":0.69,"c3":0.512,"c4":0.98},{"time":0.8667,"x":0.916,"y":0.949},{"time":1.3333,"x":0.954},{"time":1.6667},{"time":2,"x":0.954},{"time":2.3333},{"time":2.6667,"x":0.954},{"time":3},{"time":3.3333,"x":0.954},{"time":3.6667},{"time":4,"x":0.954},{"time":4.3333}]}},"deform":{"default":{"zhonzi":{"zhonzi":[{},{"time":1.3333,"vertices":[-11.37532,4.36639,0,0,0,0,-6.02681,-2.98328,-6.18581,-2.89059,-18.76656,-1.10327,-18.80258,-0.20642,-21.63234,0.5755,-21.57034,1.74658,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-7.0383,-3.96484,-7.25095,-3.89221,-4.87312,0.83295,-4.8197,1.14899,-5.53352,6.2746,-5.17393,7.02954,-9.05273,4.29254,-8.79947,5.08359,-6.51469,4.82758,-6.23494,5.52606,0,0,0,0,0,0,-23.62537,-10.05676,-6.00594,-5.21344,31.18692,5.16199,0,0,4.56108,-1.29413,7.27362,-1.66003,7.17088,-2.1622,8.58022,-1.38458,8.49117,-1.93439,7.27362,-1.65979,7.17091,-2.16208,5.12192,0.12158,5.12189,-0.13623,14.5031,0.05603,14.48727,-0.69315,14.14774,-3.9975,13.90523,-5.02899,15.56013,-4.90088,15.26508,-6.07297,22.79092,-3.88452,22.54309,-5.35822,11.71854,-0.54938,11.67293,-1.1976,6.25287,0.47168,14.92459,1.59418,14.99413,0.93515,20.47702,4.31445,20.6917,3.56812,21.89847,0.75317,21.9118,-0.3309,25.39107,6.62042,25.72865,5.79028,24.21281,12.65399,24.89073,12.33398,37.41557,13.02765,38.09665,12.04709,43.7765,3.88513,43.93573,1.89325,27.39731,-8.48157,26.88593,-10.53711,7.36818,2.11414,31.52625,1.28522,18.11328,-4.64105,4.29951,-0.22266]},{"time":1.6667},{"time":2,"offset":2,"vertices":[7.12473,4.09271,7.34479,4.02576,1.82555,4.44061,2.07225,4.67581,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36.46735,-3.83606,36.20293,-6.02158,24.4548,-0.99103,24.36635,-2.33899,12.32323,0.29291,12.32298,-0.32748,0,0,0,0,4.67027,-2.73676,4.51057,-3.18347,4.87315,-0.83356,4.81982,-1.14932,7.61722,-4.71399,-10.39044,-18.75269,-20.79222,-0.38837,-30.54553,-5.82971,-0.75456,10.55054,-14.55524,0.77826,-13.51306,1.94189,-13.38524,2.79114,-17.66502,7.77417,-17.20432,9.27356,-20.91174,13.87085,-20.10487,15.99234,-23.08093,14.15338,-22.25533,16.409,-24.401,9.08942,-23.85751,11.03741,-27.32407,0.16382,-27.27687,1.60165,-27.63774,-4.98297,-27.87881,-3.91092,-11.28799,-4.86578,-11.54526,-4.63843,-20.06837,-1.74707,-20.13889,-0.83011,-14.23949,8.11304,-7.6123,-0.18195,-7.61205,0.20163,-2.15932,-0.16071,-2.16505,-0.0596,-8.28105,-1.17035,-8.33481,-0.82468,-17.52721,-2.92267,-17.66638,-2.22482,-17.08247,-6.6402,-17.43112,-6.24222,-11.93713,-6.36432,-12.2773,-6.2142,-6.46376,-1.97021,-6.56502,-1.77908,0.09741,-4.15991,-0.13564,-4.47366,-20.9207,-0.16034,-32.56929,-4.50189,-29.34059,2.77588,-19.51804,10.50153]},{"time":2.3333},{"time":2.6667,"vertices":[-11.37532,4.36639,0,0,0,0,-6.02681,-2.98328,-6.18581,-2.89059,-18.76656,-1.10327,-18.80258,-0.20642,-21.63234,0.5755,-21.57034,1.74658,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-7.0383,-3.96484,-7.25095,-3.89221,-4.87312,0.83295,-4.8197,1.14899,-5.53352,6.2746,-5.17393,7.02954,-9.05273,4.29254,-8.79947,5.08359,-6.51469,4.82758,-6.23494,5.52606,0,0,0,0,0,0,-23.62537,-10.05676,-6.00594,-5.21344,31.18692,5.16199,0,0,4.56108,-1.29413,7.27362,-1.66003,7.17088,-2.1622,8.58022,-1.38458,8.49117,-1.93439,7.27362,-1.65979,7.17091,-2.16208,5.12192,0.12158,5.12189,-0.13623,14.5031,0.05603,14.48727,-0.69315,14.14774,-3.9975,13.90523,-5.02899,15.56013,-4.90088,15.26508,-6.07297,22.79092,-3.88452,22.54309,-5.35822,11.71854,-0.54938,11.67293,-1.1976,6.25287,0.47168,14.92459,1.59418,14.99413,0.93515,20.47702,4.31445,20.6917,3.56812,21.89847,0.75317,21.9118,-0.3309,25.39107,6.62042,25.72865,5.79028,24.21281,12.65399,24.89073,12.33398,37.41557,13.02765,38.09665,12.04709,43.7765,3.88513,43.93573,1.89325,27.39731,-8.48157,26.88593,-10.53711,7.36818,2.11414,31.52625,1.28522,18.11328,-4.64105,4.29951,-0.22266]},{"time":3},{"time":3.3333,"offset":2,"vertices":[7.12473,4.09271,7.34479,4.02576,1.82555,4.44061,2.07225,4.67581,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36.46735,-3.83606,36.20293,-6.02158,24.4548,-0.99103,24.36635,-2.33899,12.32323,0.29291,12.32298,-0.32748,0,0,0,0,4.67027,-2.73676,4.51057,-3.18347,4.87315,-0.83356,4.81982,-1.14932,7.61722,-4.71399,-10.39044,-18.75269,-20.79222,-0.38837,-30.54553,-5.82971,-0.75456,10.55054,-14.55524,0.77826,-13.51306,1.94189,-13.38524,2.79114,-17.66502,7.77417,-17.20432,9.27356,-20.91174,13.87085,-20.10487,15.99234,-23.08093,14.15338,-22.25533,16.409,-24.401,9.08942,-23.85751,11.03741,-27.32407,0.16382,-27.27687,1.60165,-27.63774,-4.98297,-27.87881,-3.91092,-11.28799,-4.86578,-11.54526,-4.63843,-20.06837,-1.74707,-20.13889,-0.83011,-14.23949,8.11304,-7.6123,-0.18195,-7.61205,0.20163,-2.15932,-0.16071,-2.16505,-0.0596,-8.28105,-1.17035,-8.33481,-0.82468,-17.52721,-2.92267,-17.66638,-2.22482,-17.08247,-6.6402,-17.43112,-6.24222,-11.93713,-6.36432,-12.2773,-6.2142,-6.46376,-1.97021,-6.56502,-1.77908,0.09741,-4.15991,-0.13564,-4.47366,-20.9207,-0.16034,-32.56929,-4.50189,-29.34059,2.77588,-19.51804,10.50153]},{"time":3.6667},{"time":4,"vertices":[-11.37532,4.36639,0,0,0,0,-6.02681,-2.98328,-6.18581,-2.89059,-18.76656,-1.10327,-18.80258,-0.20642,-21.63234,0.5755,-21.57034,1.74658,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-7.0383,-3.96484,-7.25095,-3.89221,-4.87312,0.83295,-4.8197,1.14899,-5.53352,6.2746,-5.17393,7.02954,-9.05273,4.29254,-8.79947,5.08359,-6.51469,4.82758,-6.23494,5.52606,0,0,0,0,0,0,-23.62537,-10.05676,-6.00594,-5.21344,31.18692,5.16199,0,0,4.56108,-1.29413,7.27362,-1.66003,7.17088,-2.1622,8.58022,-1.38458,8.49117,-1.93439,7.27362,-1.65979,7.17091,-2.16208,5.12192,0.12158,5.12189,-0.13623,14.5031,0.05603,14.48727,-0.69315,14.14774,-3.9975,13.90523,-5.02899,15.56013,-4.90088,15.26508,-6.07297,22.79092,-3.88452,22.54309,-5.35822,11.71854,-0.54938,11.67293,-1.1976,6.25287,0.47168,14.92459,1.59418,14.99413,0.93515,20.47702,4.31445,20.6917,3.56812,21.89847,0.75317,21.9118,-0.3309,25.39107,6.62042,25.72865,5.79028,24.21281,12.65399,24.89073,12.33398,37.41557,13.02765,38.09665,12.04709,43.7765,3.88513,43.93573,1.89325,27.39731,-8.48157,26.88593,-10.53711,7.36818,2.11414,31.52625,1.28522,18.11328,-4.64105,4.29951,-0.22266]},{"time":4.3333}]},"zui":{"zui_pingshi":[{},{"time":1.3333,"offset":4,"vertices":[4.02206,1.70232,4.36581,-0.0444,0,0,0,0,0,0,0,0,-7.34869,-2.06491,-7.56155,1.04021,-6.25871,-4.37653,9.35478,1.01878,8.49721,4.05258,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21.48473,3.60461,21.13721,-5.27083,7.67351,2.94293,8.20798,-0.36424]},{"time":1.6667},{"time":2,"offset":16,"vertices":[18.62579,3.04118,18.29108,-4.6535,16.58849,9.01544,31.35905,-1.10725,29.9766,9.29816,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-19.24956,-0.77621,-17.92241,-7.08408,-39.14186,-3.97833,-37.47678,11.99242]},{"time":2.3333},{"time":2.6667,"offset":4,"vertices":[4.02206,1.70232,4.36581,-0.0444,0,0,0,0,0,0,0,0,-7.34869,-2.06491,-7.56155,1.04021,-6.25871,-4.37653,9.35478,1.01878,8.49721,4.05258,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21.48473,3.60461,21.13721,-5.27083,7.67351,2.94293,8.20798,-0.36424]},{"time":3},{"time":3.3333,"offset":16,"vertices":[18.62579,3.04118,18.29108,-4.6535,16.58849,9.01544,31.35905,-1.10725,29.9766,9.29816,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-19.24956,-0.77621,-17.92241,-7.08408,-39.14186,-3.97833,-37.47678,11.99242]},{"time":3.6667},{"time":4,"offset":4,"vertices":[4.02206,1.70232,4.36581,-0.0444,0,0,0,0,0,0,0,0,-7.34869,-2.06491,-7.56155,1.04021,-6.25871,-4.37653,9.35478,1.01878,8.49721,4.05258,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21.48473,3.60461,21.13721,-5.27083,7.67351,2.94293,8.20798,-0.36424]},{"time":4.3333}]},"tou":{"tou":[{},{"time":0.3,"offset":120,"vertices":[0.57141,10.17465,0.96164,-10.86597,-4.10159,-9.88321,-0.99689,-19.62788,0.65171,-17.63852,-5.37796,-0.26717]},{"time":1.3333,"offset":36,"vertices":[0.83159,0.0903,-0.33118,-0.76816,0.4184,-0.7243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.89941,6.79937,0,0,4.79962,-1.58188,11.19958,-10.14233,7.51152,-7.17743,-1.27478,-4.42054]},{"time":1.6667},{"time":2,"offset":36,"vertices":[-9.36336,4.2478,9.64731,3.5542,2.38568,10.00121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3.19946,1.43887,0,0,0,0,7.33778,-7.33127,0,0,-7.89673,-7.77194]},{"time":2.3333},{"time":2.6667,"offset":36,"vertices":[0.83159,0.0903,-0.33118,-0.76816,0.4184,-0.7243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.89941,6.79937,0,0,4.79962,-1.58188,11.19958,-10.14233,7.51152,-7.17743,-1.27478,-4.42054]},{"time":3},{"time":3.3333,"offset":36,"vertices":[-9.36336,4.2478,9.64731,3.5542,2.38568,10.00121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3.19946,1.43887,0,0,0,0,7.33778,-7.33127,0,0,-7.89673,-7.77194]},{"time":3.6667},{"time":4,"offset":36,"vertices":[0.83159,0.0903,-0.33118,-0.76816,0.4184,-0.7243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.89941,6.79937,0,0,4.79962,-1.58188,11.19958,-10.14233,7.51152,-7.17743,-1.27478,-4.42054]},{"time":4.3333}]}}},"drawOrder":[{"time":0.4,"offsets":[{"slot":"BZ/z_bianzi5","offset":66},{"slot":"BZ/z_bianzi6","offset":65}]},{"time":0.8,"offsets":[{"slot":"BZ/z_bianzi5","offset":66},{"slot":"BZ/z_bianzi6","offset":65},{"slot":"TX/guangyun","offset":-98}]}]}}},[0]]],0,0,[0],[-1],[8]],[[[11,"guaiA1a","\r\nguaiA1a.png\r\nsize: 146,288\r\nformat: RGBA8888\r\nfilter: Linear,Linear\r\nrepeat: none\r\nguaiA1a/beimian\r\n rotate: false\r\n xy: 2, 173\r\n size: 123, 113\r\n orig: 125, 115\r\n offset: 1, 1\r\n index: -1\r\nguaiA1a/jiao1\r\n rotate: true\r\n xy: 110, 3\r\n size: 27, 32\r\n orig: 29, 34\r\n offset: 1, 1\r\n index: -1\r\nguaiA1a/jiao2\r\n rotate: true\r\n xy: 73, 2\r\n size: 28, 35\r\n orig: 30, 37\r\n offset: 1, 1\r\n index: -1\r\nguaiA1a/jiao3\r\n rotate: true\r\n xy: 88, 32\r\n size: 69, 51\r\n orig: 71, 54\r\n offset: 1, 1\r\n index: -1\r\nguaiA1a/jiao4\r\n rotate: false\r\n xy: 2, 2\r\n size: 69, 51\r\n orig: 71, 54\r\n offset: 1, 1\r\n index: -1\r\nguaiA1a/shenti\r\n rotate: false\r\n xy: 2, 103\r\n size: 137, 68\r\n orig: 139, 70\r\n offset: 1, 1\r\n index: -1\r\nguaiA1a/yan\r\n rotate: true\r\n xy: 127, 245\r\n size: 41, 17\r\n orig: 43, 19\r\n offset: 1, 1\r\n index: -1\r\nguaiA1a/ye\r\n rotate: false\r\n xy: 2, 55\r\n size: 84, 46\r\n orig: 86, 48\r\n offset: 1, 1\r\n index: -1\r\n",["guaiA1a.png"],{"skeleton":{"hash":"Dbo+3u9wKOWpBQSL3xGAbdPiqEE","spine":"3.8.75","x":-50.45,"y":-8.84,"width":100.08,"height":113.76},"bones":[{"name":"root"},{"name":"scale","parent":"root","x":0.39,"y":-1.81,"scaleX":0.72,"scaleY":0.72},{"name":"jifei","parent":"scale","x":4.68,"y":71.76},{"name":"shenti","parent":"jifei","length":44.42,"rotation":87.31,"x":-1.08,"y":-59.93},{"name":"beimian","parent":"shenti","length":88.49,"rotation":-61.8,"x":50.61,"y":57.25},{"name":"yan","parent":"beimian","x":75.26,"y":-16.82},{"name":"ye","parent":"beimian","x":83.03,"y":43.09},{"name":"jiao1","parent":"shenti","length":26.87,"rotation":-169.49,"x":7.06,"y":16.53},{"name":"jiao2","parent":"shenti","length":27.69,"rotation":-179.47,"x":13.31,"y":50.27},{"name":"jiao3","parent":"shenti","length":21.71,"rotation":-167.62,"x":12.77,"y":-38.07},{"name":"jiao4","parent":"shenti","length":22.47,"rotation":-174.64,"x":11.22,"y":-5.22}],"slots":[{"name":"jiao3","bone":"jiao3","attachment":"guaiA1a/jiao3"},{"name":"jiao4","bone":"jiao4","attachment":"guaiA1a/jiao4"},{"name":"beimian","bone":"beimian","attachment":"guaiA1a/beimian"},{"name":"yan","bone":"yan","attachment":"guaiA1a/yan"},{"name":"ye","bone":"ye","attachment":"guaiA1a/ye"},{"name":"shenti","bone":"shenti","attachment":"guaiA1a/shenti"},{"name":"jiao2","bone":"jiao2","attachment":"guaiA1a/jiao2"},{"name":"jiao1","bone":"jiao1","attachment":"guaiA1a/jiao1"}],"skins":[{"name":"default","attachments":{"ye":{"guaiA1a/ye":{"x":-5.56,"y":-14.5,"rotation":-25.51,"width":86,"height":48}},"beimian":{"guaiA1a/beimian":{"x":53.69,"y":-3.82,"rotation":-25.51,"width":125,"height":115}},"yan":{"guaiA1a/yan":{"x":-2.58,"y":1.72,"rotation":-25.51,"width":43,"height":19}},"jiao1":{"guaiA1a/jiao1":{"x":12.5,"y":-0.23,"rotation":82.18,"width":29,"height":34}},"jiao2":{"guaiA1a/jiao2":{"x":12.73,"y":0.86,"rotation":92.16,"width":30,"height":37}},"jiao3":{"guaiA1a/jiao3":{"x":-3.7,"y":-18.99,"rotation":80.31,"width":71,"height":54}},"jiao4":{"guaiA1a/jiao4":{"x":-1.4,"y":-20.41,"rotation":87.34,"width":71,"height":54}},"shenti":{"guaiA1a/shenti":{"x":25.16,"y":5.9,"rotation":-87.31,"width":139,"height":70}}}}],"events":{"attack":{}},"animations":{"atk":{"bones":{"beimian":{"rotate":[{"angle":1.1},{"time":0.5,"angle":-1.28},{"time":0.6333,"angle":17.94},{"time":0.7,"angle":-2.47},{"time":1,"angle":1.1}],"translate":[{"x":-1.89,"y":-0.1},{"time":0.5,"x":-6.86,"y":-0.37},{"time":0.7,"x":-9.01,"y":-0.49},{"time":1,"x":-1.89,"y":-0.1}]},"ye":{"rotate":[{"angle":0.16},{"time":0.5,"angle":-6.51},{"time":0.6333,"angle":13.57},{"time":1,"angle":0.16}]},"shenti":{"rotate":[{"angle":-0.42,"curve":"stepped"},{"time":1,"angle":-0.42}],"translate":[{"y":0.63},{"time":0.5,"x":-15.77,"y":-0.2},{"time":0.6333,"x":26.56,"y":-1.86},{"time":1,"y":0.63}]},"jiao4":{"rotate":[{"angle":-4.66},{"time":0.5,"angle":23.77},{"time":0.6333,"angle":320.08},{"time":1,"angle":-4.66}],"translate":[{"curve":"stepped"},{"time":1}]},"jiao2":{"rotate":[{"angle":355.34},{"time":0.5,"angle":23.77},{"time":0.6333,"angle":320.08},{"time":1,"angle":355.34}],"translate":[{"curve":"stepped"},{"time":1}]},"jiao3":{"rotate":[{"angle":-4.66},{"time":0.5,"angle":23.77},{"time":0.6333,"angle":320.08},{"time":1,"angle":-4.66}],"translate":[{"curve":"stepped"},{"time":1}]},"jiao1":{"rotate":[{"angle":-4.66},{"time":0.5,"angle":23.77},{"time":0.6333,"angle":320.08},{"time":1,"angle":-4.66}],"translate":[{"curve":"stepped"},{"time":1}]}},"events":[{"time":0.6667,"name":"attack"}]},"jifei":{"bones":{"jifei":{"rotate":[{"angle":-0.91},{"time":0.0667,"angle":63.87},{"time":0.1333,"angle":132.99},{"time":0.2,"angle":-104.76},{"time":0.2667,"angle":-0.91}]},"jiao3":{"rotate":[{"time":0.2667,"angle":-4.66}],"translate":[{"time":0.2667}]},"jiao2":{"rotate":[{"time":0.2667,"angle":355.34}],"translate":[{"time":0.2667}]},"jiao4":{"rotate":[{"time":0.2667,"angle":-4.66}],"translate":[{"time":0.2667}]},"jiao1":{"rotate":[{"time":0.2667,"angle":-4.66}],"translate":[{"time":0.2667}]},"beimian":{"rotate":[{"time":0.2667,"angle":1.1}],"translate":[{"time":0.2667,"x":-1.89,"y":-0.1}]},"shenti":{"rotate":[{"time":0.2667,"angle":-0.42}],"translate":[{"time":0.2667,"y":0.63}]},"ye":{"rotate":[{"time":0.2667,"angle":0.16}]}}},"std":{"slots":{"yan":{"attachment":[{"time":0.2667,"name":null},{"time":0.5,"name":"guaiA1a/yan"}]}},"bones":{"shenti":{"rotate":[{"angle":-0.42,"curve":"stepped"},{"time":1,"angle":-0.42}],"translate":[{"y":0.63},{"time":0.5,"y":-3.15},{"time":1,"y":0.63}]},"beimian":{"rotate":[{"angle":1.1,"curve":"stepped"},{"time":1,"angle":1.1}],"translate":[{"x":-1.89,"y":-0.1},{"time":0.5,"x":8.56,"y":0.47},{"time":1,"x":-1.89,"y":-0.1}]},"ye":{"rotate":[{"angle":0.16},{"time":0.5,"angle":8.71},{"time":1,"angle":0.16}]},"jiao1":{"rotate":[{"angle":-4.66,"curve":"stepped"},{"time":1,"angle":-4.66}],"translate":[{},{"time":0.5,"x":3.15,"y":0.17},{"time":1}]},"jiao2":{"rotate":[{"angle":355.34,"curve":"stepped"},{"time":1,"angle":355.34}],"translate":[{},{"time":0.5,"x":3.15,"y":0.17},{"time":1}]},"jiao3":{"rotate":[{"angle":-4.66,"curve":"stepped"},{"time":1,"angle":-4.66}],"translate":[{},{"time":0.5,"x":3.15,"y":0.17},{"time":1}]},"jiao4":{"rotate":[{"angle":-4.66,"curve":"stepped"},{"time":1,"angle":-4.66}],"translate":[{},{"time":0.5,"x":3.15,"y":0.17},{"time":1}]}}},"std2":{"slots":{"yan":{"attachment":[{"time":0.2667,"name":null},{"time":0.5,"name":"guaiA1a/yan"}]}},"bones":{"shenti":{"rotate":[{"angle":-0.42,"curve":"stepped"},{"time":1,"angle":-0.42}],"translate":[{"y":0.63},{"time":0.5,"y":-3.15},{"time":1,"y":0.63}]},"beimian":{"rotate":[{"angle":1.1,"curve":"stepped"},{"time":1,"angle":1.1}],"translate":[{"x":-1.89,"y":-0.1},{"time":0.5,"x":8.56,"y":0.47},{"time":1,"x":-1.89,"y":-0.1}]},"ye":{"rotate":[{"angle":0.16},{"time":0.5,"angle":8.71},{"time":1,"angle":0.16}]},"jiao1":{"rotate":[{"angle":-4.66,"curve":"stepped"},{"time":1,"angle":-4.66}],"translate":[{},{"time":0.5,"x":3.15,"y":0.17},{"time":1}]},"jiao2":{"rotate":[{"angle":355.34,"curve":"stepped"},{"time":1,"angle":355.34}],"translate":[{},{"time":0.5,"x":3.15,"y":0.17},{"time":1}]},"jiao3":{"rotate":[{"angle":-4.66,"curve":"stepped"},{"time":1,"angle":-4.66}],"translate":[{},{"time":0.5,"x":3.15,"y":0.17},{"time":1}]},"jiao4":{"rotate":[{"angle":-4.66,"curve":"stepped"},{"time":1,"angle":-4.66}],"translate":[{},{"time":0.5,"x":3.15,"y":0.17},{"time":1}]},"scale":{"scale":[{"x":0.486,"y":0.486,"curve":"stepped"},{"time":1,"x":0.486,"y":0.486}]}}},"walk":{"bones":{"beimian":{"rotate":[{"angle":1.1,"curve":"stepped"},{"time":0.2667,"angle":1.1},{"time":0.5,"angle":12.56},{"time":0.7667,"angle":1.1,"curve":"stepped"},{"time":1,"angle":1.1}],"translate":[{"x":-1.89,"y":-0.1},{"time":0.2667,"x":-13.75,"y":-0.75},{"time":0.5,"x":10.75,"y":0.58},{"time":0.7667,"x":-13.75,"y":-0.75},{"time":1,"x":-1.89,"y":-0.1}]},"ye":{"rotate":[{"angle":0.16},{"time":0.2667,"angle":-11.44},{"time":0.5,"angle":20.22},{"time":0.7667,"angle":-10.04},{"time":1,"angle":0.16}]},"shenti":{"rotate":[{"angle":-0.42,"curve":"stepped"},{"time":0.2667,"angle":-0.42,"curve":"stepped"},{"time":0.7667,"angle":-0.42,"curve":"stepped"},{"time":1,"angle":-0.42}],"translate":[{"y":0.63},{"time":0.2667,"y":-6.35},{"time":0.5,"y":32.73},{"time":0.7667,"y":-6.35},{"time":1,"y":0.63}]},"jiao4":{"rotate":[{"angle":-4.66},{"time":0.2667,"angle":353.03,"curve":"stepped"},{"time":0.7667,"angle":353.03},{"time":1,"angle":-4.66}],"translate":[{},{"time":0.2667,"x":6.97,"y":0.38,"curve":"stepped"},{"time":0.7667,"x":6.97,"y":0.38},{"time":1}]},"jiao2":{"rotate":[{"angle":355.34},{"time":0.2667,"angle":7.77},{"time":0.5,"angle":317.41},{"time":0.7667,"angle":7.77},{"time":1,"angle":355.34}],"translate":[{},{"time":0.2667,"x":6.97,"y":0.38},{"time":0.5,"x":1.48,"y":8.05},{"time":0.7667,"x":6.97,"y":0.38},{"time":1}]},"jiao3":{"rotate":[{"angle":-4.66},{"time":0.2667,"angle":346.87},{"time":0.5,"angle":22.23},{"time":0.7667,"angle":346.87},{"time":1,"angle":-4.66}],"translate":[{},{"time":0.2667,"x":6.97,"y":0.38},{"time":0.5,"x":-2.02,"y":-7.35},{"time":0.7667,"x":6.97,"y":0.38},{"time":1}]},"jiao1":{"rotate":[{"angle":-4.66},{"time":0.2667,"angle":1.09},{"time":0.5,"angle":8.4},{"time":0.7667,"angle":1.09},{"time":1,"angle":-4.66}],"translate":[{},{"time":0.2667,"x":6.97,"y":0.38},{"time":0.5,"x":-4.43,"y":-3.14},{"time":0.7667,"x":6.97,"y":0.38},{"time":1}]}}}}},[0]]],0,0,[0],[-1],[9]],[[[11,"guaiA4e","\r\nguaiA4e.png\r\nsize: 165,816\r\nformat: RGBA8888\r\nfilter: Linear,Linear\r\nrepeat: none\r\nguaiA4e/timo5 002\r\n rotate: true\r\n xy: 2, 263\r\n size: 52, 97\r\n orig: 52, 97\r\n offset: 0, 0\r\n index: -1\r\nguaiA4e/timo5 003\r\n rotate: false\r\n xy: 103, 267\r\n size: 58, 88\r\n orig: 58, 88\r\n offset: 0, 0\r\n index: -1\r\nguaiA4e/timo5 004\r\n rotate: true\r\n xy: 2, 184\r\n size: 77, 96\r\n orig: 77, 96\r\n offset: 0, 0\r\n index: -1\r\nguaiA4e/timo5 005\r\n rotate: false\r\n xy: 103, 419\r\n size: 60, 60\r\n orig: 62, 62\r\n offset: 1, 1\r\n index: -1\r\nguaiA4e/timo5 006\r\n rotate: true\r\n xy: 133, 615\r\n size: 42, 28\r\n orig: 44, 30\r\n offset: 1, 1\r\n index: -1\r\nguaiA4e/timo5 007\r\n rotate: true\r\n xy: 2, 589\r\n size: 111, 129\r\n orig: 113, 131\r\n offset: 1, 1\r\n index: -1\r\nguaiA4e/timo5 008\r\n rotate: true\r\n xy: 2, 317\r\n size: 162, 99\r\n orig: 162, 148\r\n offset: 0, 10\r\n index: -1\r\nguaiA4e/timo5 009\r\n rotate: false\r\n xy: 101, 177\r\n size: 58, 88\r\n orig: 58, 88\r\n offset: 0, 0\r\n index: -1\r\nguaiA4e/timo5 010\r\n rotate: true\r\n xy: 2, 105\r\n size: 77, 96\r\n orig: 77, 96\r\n offset: 0, 0\r\n index: -1\r\nguaiA4e/timo5 011\r\n rotate: false\r\n xy: 89, 2\r\n size: 74, 83\r\n orig: 74, 83\r\n offset: 0, 0\r\n index: -1\r\nguaiA4e/timo5 012\r\n rotate: true\r\n xy: 2, 702\r\n size: 112, 145\r\n orig: 114, 147\r\n offset: 1, 1\r\n index: -1\r\nguaiA4e/timo5 013\r\n rotate: true\r\n xy: 2, 19\r\n size: 84, 85\r\n orig: 84, 85\r\n offset: 0, 0\r\n index: -1\r\nguaiA4e/timo5 014\r\n rotate: true\r\n xy: 2, 481\r\n size: 106, 129\r\n orig: 106, 129\r\n offset: 0, 0\r\n index: -1\r\nguaiA4e/timo5 015\r\n rotate: true\r\n xy: 100, 87\r\n size: 88, 63\r\n orig: 88, 63\r\n offset: 0, 0\r\n index: -1\r\nguaiA4e/timo5 016\r\n rotate: false\r\n xy: 103, 357\r\n size: 60, 60\r\n orig: 62, 62\r\n offset: 1, 1\r\n index: -1\r\nguaiA4e/timo5 017\r\n rotate: true\r\n xy: 133, 659\r\n size: 41, 29\r\n orig: 43, 31\r\n offset: 1, 1\r\n index: -1\r\n",["guaiA4e.png"],{"skeleton":{"hash":"qwZh7b3w7gv2Su9Qvk7eCGWuBEk","spine":"3.8.75","x":-81.37,"y":-9.21,"width":162.37,"height":188.56,"images":"./pic/","audio":""},"bones":[{"name":"root","scaleX":0.6,"scaleY":0.6},{"name":"scale","parent":"root","x":-0.23,"y":0.3},{"name":"jifei","parent":"scale","x":1.4,"y":109.51},{"name":"IK1","parent":"jifei","x":-50.81,"y":-93.29,"color":"ff3f00ff"},{"name":"IK2","parent":"jifei","x":-30.48,"y":-93.29,"color":"ff3f00ff"},{"name":"IK3","parent":"jifei","x":29.58,"y":-110.85,"color":"ff3f00ff"},{"name":"IK4","parent":"jifei","x":39.74,"y":-109.46,"color":"ff3f00ff"},{"name":"timo5 008","parent":"jifei","length":51.06,"rotation":-11.58,"x":-54.21,"y":-29.67},{"name":"bone","parent":"timo5 008","length":43.08,"rotation":20.9,"x":51.06},{"name":"timo5 002","parent":"timo5 008","length":24.44,"rotation":154.43,"x":-0.92,"y":-1.28},{"name":"bone2","parent":"timo5 002","length":29.44,"rotation":-14.65,"x":24.44},{"name":"bone3","parent":"bone2","length":28.1,"rotation":52.71,"x":29.44},{"name":"timo5 010","parent":"timo5 008","length":37.71,"rotation":-31.66,"x":1.71,"y":-4.25},{"name":"bone4","parent":"timo5 010","length":33.55,"rotation":-94.77,"x":37.71},{"name":"bone5","parent":"bone4","length":26.25,"rotation":67.68,"x":33.04,"y":0.64},{"name":"timo5 004","parent":"timo5 008","length":36.02,"rotation":-29.73,"x":15.6,"y":-0.57},{"name":"bone6","parent":"timo5 004","length":35.82,"rotation":-82.02,"x":36.02},{"name":"bone7","parent":"bone6","length":20.7,"rotation":41.3,"x":35.82},{"name":"timo5 009","parent":"bone","length":39.5,"rotation":-107.77,"x":27.13,"y":-4.33},{"name":"bone8","parent":"timo5 009","length":37.05,"rotation":34.42,"x":39.5},{"name":"timo5 003","parent":"bone","length":38.91,"rotation":-106.08,"x":38.26,"y":-4.69},{"name":"bone9","parent":"timo5 003","length":36.49,"rotation":35.3,"x":38.91},{"name":"timo5 013","parent":"timo5 008","length":31.76,"rotation":112.75,"x":45.24,"y":5.92},{"name":"bone10","parent":"timo5 013","length":32.8,"rotation":-15.37,"x":31.76},{"name":"timo5 014","parent":"bone10","length":63.63,"rotation":-3.67,"x":38.13,"y":-0.48},{"name":"bone11","parent":"timo5 014","length":41.76,"rotation":-11.38,"x":70.79,"y":-3.33},{"name":"timo5 015","parent":"timo5 014","length":28.44,"rotation":68.24,"x":45.54,"y":32.32},{"name":"bone12","parent":"timo5 015","length":33.33,"rotation":3.05,"x":28.44},{"name":"bone13","parent":"bone12","length":27.31,"rotation":-3.91,"x":33.33},{"name":"timo5 011","parent":"timo5 014","length":26.4,"rotation":49.84,"x":40.22,"y":8.23},{"name":"bone14","parent":"timo5 011","length":34.29,"rotation":-5.7,"x":26.4},{"name":"bone15","parent":"bone14","length":28.55,"rotation":-6.06,"x":34.29},{"name":"timo5 005","parent":"bone10","length":45.87,"rotation":-87.68,"x":30.27,"y":-6.12},{"name":"timo5 006","parent":"timo5 005","length":30.24,"rotation":56.91,"x":43.58,"y":-0.7},{"name":"timo5 007","parent":"timo5 006","rotation":-90.1,"x":63.67,"y":40.09},{"name":"timo5 012","parent":"bone","length":60.86,"rotation":27.2,"x":44.18,"y":-0.99},{"name":"timo5 016","parent":"bone10","length":47.14,"rotation":-140.66,"x":25.22,"y":16.5},{"name":"timo5 017","parent":"timo5 016","length":30.07,"rotation":38.94,"x":45.04,"y":0.69}],"slots":[{"name":"timo5 002","bone":"timo5 002","attachment":"guaiA4e/timo5 002"},{"name":"timo5 003","bone":"timo5 003","attachment":"guaiA4e/timo5 003"},{"name":"timo5 004","bone":"timo5 004","attachment":"guaiA4e/timo5 004"},{"name":"timo5 005","bone":"timo5 005","attachment":"guaiA4e/timo5 005"},{"name":"timo5 006","bone":"timo5 006","attachment":"guaiA4e/timo5 006"},{"name":"timo5 007","bone":"timo5 007","attachment":"guaiA4e/timo5 007"},{"name":"timo5 008","bone":"timo5 008","attachment":"guaiA4e/timo5 008"},{"name":"timo5 009","bone":"timo5 009","attachment":"guaiA4e/timo5 009"},{"name":"timo5 010","bone":"timo5 010","attachment":"guaiA4e/timo5 010"},{"name":"timo5 011","bone":"timo5 011","attachment":"guaiA4e/timo5 011"},{"name":"timo5 012","bone":"timo5 012","attachment":"guaiA4e/timo5 012"},{"name":"timo5 013","bone":"timo5 013","attachment":"guaiA4e/timo5 013"},{"name":"timo5 014","bone":"timo5 014","attachment":"guaiA4e/timo5 014"},{"name":"timo5 015","bone":"timo5 015","attachment":"guaiA4e/timo5 015"},{"name":"timo5 016","bone":"timo5 016","attachment":"guaiA4e/timo5 016"},{"name":"timo5 017","bone":"timo5 017","attachment":"guaiA4e/timo5 017"},{"name":"atkbox","bone":"timo5 006","attachment":"atkbox"}],"ik":[{"name":"IK1","target":"IK1","bendPositive":false,"bones":["timo5 010","bone4"]},{"name":"IK2","order":1,"target":"IK2","bendPositive":false,"bones":["timo5 004","bone6"]},{"name":"IK3","order":2,"target":"IK3","bones":["timo5 009","bone8"]},{"name":"IK4","order":3,"target":"IK4","bones":["timo5 003","bone9"]}],"skins":[{"name":"default","attachments":{"timo5 002":{"guaiA4e/timo5 002":{"type":"mesh","hull":13,"width":52,"height":97,"uvs":[0.09465,0.00554,0.1358,0.22065,0,0.51848,0,0.68946,0.06378,0.90456,0.35186,1,0.81484,1,1,0.85492,0.88686,0.69498,1,0.50193,1,0.24271,0.88686,0.0607,0.54734,0,0.61936,0.38059,0.4959,0.67843,0.53705,0.524,0.4033,0.30889,0.81484,0.44126,0.25926,0.52951,0.70167,0.5957,0.44446,0.83286,0.74282,0.78874],"triangles":[1,0,12,16,1,12,13,12,11,16,12,13,10,17,11,18,1,16,17,13,11,17,10,9,15,16,13,18,16,15,2,1,18,19,13,17,15,13,19,14,18,15,14,15,19,3,2,18,8,17,9,19,17,8,21,19,8,14,19,21,20,18,14,20,14,21,4,3,18,20,4,18,5,4,20,7,6,21,7,21,8,20,21,6,5,20,6],"vertices":[1,11,43.91,11.27,1,2,10,38.43,28.23,0.10769,11,23.89,17.52,0.89231,3,9,48.19,18.27,0.08108,10,8.69,28.67,0.77388,11,0.11,35.39,0.14505,3,9,32.89,24.66,0.47816,10,-7.48,24.98,0.50674,11,-15.13,41.92,0.01509,2,9,12.36,29.65,0.94026,10,-27.08,17.09,0.05974,2,9,-1.96,19.41,1,10,-32.76,0.43,0,1,9,-11.25,-2.81,1,2,9,-1.98,-17.12,0.98729,10,-11.54,-29.29,0.01271,2,9,14.6,-17.68,0.61784,10,2.28,-20.1,0.38216,3,9,29.61,-30.33,0.04048,10,21.84,-21.66,0.89882,11,-18.9,-13.04,0.0607,2,10,46.36,-16.06,0.13392,11,4.22,-22.94,0.86608,2,10,62.26,-6.39,0.00002,11,22.76,-24.49,0.99998,1,11,35.13,-10.58,1,2,10,28.91,0.26,0.70984,11,-0.28,0.52,0.29016,3,9,23.93,0.46,0.76041,10,-0.69,0.08,0.23958,11,-24.31,17.8,0,2,10,14.39,1.33,0.99706,11,-11.38,9.93,0.00294,2,10,33.18,12.76,0.16355,11,10.54,8.11,0.83645,3,9,38.75,-23.71,0.0069,10,25.44,-10.97,0.87093,11,-9.69,-6.5,0.12217,3,9,42,6.24,0.04045,10,10.65,15.29,0.85424,11,-6.18,23.42,0.10531,2,9,27.2,-12.51,0.15096,10,9.52,-8.57,0.84904,2,9,11.14,8.71,0.99728,10,-15.89,-0.65,0.00272,2,9,9.1,-7.26,0.94826,10,-8.26,-14.82,0.05174],"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,0,24]}},"timo5 003":{"guaiA4e/timo5 003":{"type":"mesh","hull":15,"width":58,"height":88,"uvs":[0.18855,0,0,0.05771,0,0.29952,0.1309,0.48952,0.20427,0.68298,0.34055,0.86952,0.55021,1,0.72317,1,1,1,0.93807,0.76243,1,0.57589,1,0.32025,0.93807,0.08534,0.69172,0,0.39821,0,0.4483,0.5787,0.51819,0.34118,0.57937,0.75659,0.73926,0.48912],"triangles":[17,15,18,4,3,16,15,4,16,2,0,16,15,16,18,14,16,0,18,11,10,16,3,2,16,13,18,18,12,11,18,13,12,16,14,13,2,1,0,7,9,8,6,17,7,7,17,9,6,5,17,5,15,17,5,4,15,17,18,9,9,18,10],"vertices":[1,20,-10.08,-21.85,1,1,20,-3.55,-31.99,1,1,20,17.53,-29.08,1,2,21,-15.91,-12.34,0.07043,20,33.05,-19.27,0.92957,2,21,1.16,-16.4,0.79997,20,49.33,-12.72,0.20003,1,21,19.37,-16.95,1,1,21,35.16,-11.45,1,1,21,39.79,-2.54,1,1,21,47.18,11.71,1,2,21,26.97,18.15,0.91082,20,50.43,30.4,0.08918,2,21,14.06,28.9,0.50738,20,33.68,31.71,0.49262,2,21,-5.91,39.26,0.07254,20,11.39,28.63,0.92746,2,21,-25.91,45.6,0.00029,20,-8.59,22.24,0.99971,1,20,-14.07,7.05,1,1,20,-11.74,-9.81,1,2,21,-0.47,0.38,0.23318,20,38.3,0.04,0.76682,2,21,-17.15,13.61,0.00059,20,17.05,1.2,0.99941,1,21,16.93,-0.08,1,2,21,0.31,18.99,0.24853,20,28.18,15.68,0.75147],"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,0,28]}},"timo5 004":{"guaiA4e/timo5 004":{"type":"mesh","hull":15,"width":77,"height":96,"uvs":[0.00959,0,0,0.17092,0,0.44325,0.12408,0.63642,0.10829,0.73142,0.20699,0.88025,0.47151,1,0.62154,1,0.7992,1,0.85053,0.82959,1,0.71242,1,0.43375,0.92949,0.18359,0.65312,0.01259,0.33333,0,0.72814,0.41792,0.61759,0.55409,0.58206,0.30709,0.47546,0.72509,0.49915,0.84859],"triangles":[17,14,13,17,13,12,15,17,12,15,12,11,14,2,1,0,14,1,17,2,14,17,3,2,16,17,15,3,17,16,15,11,10,16,15,10,18,3,16,4,3,18,9,16,10,18,16,9,19,18,9,5,4,18,5,18,19,6,5,19,7,19,9,6,19,7,8,7,9],"vertices":[2,16,-3.14,-68.05,0.00523,15,-31.81,-6.34,0.99477,2,16,10.97,-59.66,0.06266,15,-21.53,-19.15,0.93734,3,17,-32.15,-32.05,0.02746,16,32.82,-45.29,0.35435,15,-4.27,-38.79,0.61819,3,17,-12.46,-25.16,0.30286,16,43.06,-27.12,0.48005,15,15.15,-46.41,0.21709,3,17,-3.59,-27.62,0.56934,16,51.35,-23.13,0.34017,15,20.25,-54.06,0.09049,3,17,11.61,-22.08,0.91807,16,59.11,-8.93,0.07067,15,35.39,-59.78,0.01126,1,17,25.82,-3.5,1,2,17,27.42,7.94,0.9586,16,51.18,24.06,0.0414,2,17,29.32,21.49,0.85655,16,43.67,35.49,0.14345,2,17,13.66,27.67,0.48628,16,27.83,29.81,0.51372,3,17,4.12,40.63,0.1535,16,12.1,33.24,0.8465,15,70.62,-7.37,0,3,17,-22.37,44.34,0.00469,16,-10.25,18.54,0.69736,15,52.97,12.72,0.29795,2,16,-27.33,0.81,0.02542,15,33.03,27.18,0.97458,1,15,6.21,25.46,1,1,15,-13.08,10.12,1,3,17,-26.78,23.82,0.00001,16,-0.02,0.22,0.54415,15,36.24,0.05,0.45584,2,17,-15.02,13.57,0.00027,16,15.58,0.29,0.99973,1,15,20.76,0.62,1,2,17,-0.28,0.46,0.30949,16,35.31,0.16,0.69051,2,17,11.72,0.62,0.99682,16,44.21,8.2,0.00318],"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,0,28]}},"timo5 005":{"guaiA4e/timo5 005":{"x":21.26,"y":-1.34,"rotation":47.9,"width":62,"height":62}},"timo5 006":{"guaiA4e/timo5 006":{"x":13.21,"y":3.06,"rotation":12.53,"width":44,"height":30}},"timo5 007":{"guaiA4e/timo5 007":{"x":1.15,"y":8.12,"rotation":12.53,"width":113,"height":131}},"timo5 008":{"guaiA4e/timo5 008":{"type":"mesh","hull":14,"width":162,"height":148,"uvs":[0.09737,0.31598,0,0.41017,0,0.56254,0.02398,0.72044,0.13027,0.8645,0.3049,0.93098,0.56052,0.92821,0.74021,0.91159,0.93003,0.79801,1,0.6401,1,0.43233,0.82879,0.31321,0.62126,0.26612,0.36058,0.29105,0.42132,0.54314,0.5428,0.53483,0.28719,0.51821,0.42638,0.73429,0.38842,0.41294],"triangles":[5,17,6,6,17,7,17,15,7,8,7,15,9,8,15,11,15,12,9,15,11,17,14,15,11,10,9,14,18,15,15,18,12,18,13,12,5,4,17,17,16,14,17,4,16,4,3,16,3,2,16,2,1,16,16,18,14,1,0,16,16,13,18,16,0,13],"vertices":[2,7,-7.59,22.72,1,8,-47.49,41.23,0,1,7,-20.24,5.9,1,1,7,-15.71,-16.19,1,2,7,-7.22,-38.31,0.99852,8,-67.8,-16.32,0.00148,2,7,13.93,-55.74,0.94193,8,-53.8,-39.88,0.05807,2,7,43.62,-59.7,0.70784,8,-27.21,-53.66,0.29216,2,7,84.11,-50.98,0.16273,8,13.84,-59.16,0.83727,2,7,112.13,-42.73,0.01367,8,43,-60.88,0.98633,1,8,75.83,-48.63,1,1,8,90.39,-27.12,1,1,8,94.78,3.31,1,1,8,69.84,24.72,1,2,7,74.08,46.99,0.04552,8,37.56,36.42,0.95448,2,7,33.45,34.89,0.73613,8,-4.76,38.8,0.26387,2,7,50.58,0.32,0.61139,8,-0.35,0.46,0.38861,1,8,19.31,-1.13,1,1,7,28.55,-0.43,1,2,7,57.06,-27.23,0.44046,8,-3.57,-27.65,0.55954,2,7,41.49,18.13,0.70901,8,-2.87,20.3,0.29099],"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,0,26]}},"timo5 009":{"guaiA4e/timo5 009":{"type":"mesh","hull":15,"width":58,"height":88,"uvs":[0.24731,0.00271,0,0.0718,0,0.24798,0.08483,0.4138,0.16869,0.62453,0.27876,0.80762,0.4989,1,0.73476,1,0.98635,1,0.93918,0.77307,0.98635,0.60725,1,0.37234,1,0.1478,0.75573,0,0.47269,0,0.43438,0.55461,0.55548,0.71509,0.50428,0.31709,0.69752,0.51996,0.25111,0.36914,0.75391,0.74182],"triangles":[4,19,15,4,3,19,10,18,11,15,17,18,15,19,17,18,17,11,3,2,19,17,13,11,13,12,11,2,0,19,17,0,14,17,19,0,17,14,13,2,1,0,7,9,8,6,16,7,7,20,9,7,16,20,6,5,16,5,15,16,5,4,15,9,20,10,16,18,20,20,18,10,16,15,18],"vertices":[1,18,-6.87,-19.2,1,1,18,1.5,-32.33,1,1,18,16.79,-29.76,1,2,19,-20.24,-13.38,0.02906,18,30.36,-22.48,0.97094,2,19,-1.37,-16.77,0.66829,18,47.84,-14.61,0.33171,2,19,15.93,-17.75,0.99987,18,62.67,-5.64,0.00013,1,19,36.66,-13.28,1,1,19,42.41,-0.87,1,1,19,48.54,12.37,1,2,19,29.28,18.28,0.94604,18,53.31,31.63,0.05396,2,19,17.19,26.9,0.66285,18,38.47,31.91,0.33715,2,19,-1.24,36.31,0.15894,18,17.95,29.25,0.84106,2,19,-19.16,44.62,0.00912,18,-1.53,25.97,0.99088,1,18,-12.01,9.84,1,1,18,-9.28,-6.35,1,2,19,-0.48,-0.2,0.3349,18,39.22,-0.43,0.6651,2,19,15.29,0.24,0.99956,18,51.98,8.84,0.00044,2,19,-17.74,12.27,0.00003,18,17.93,0.09,0.99997,2,19,3.17,14.93,0.41627,18,33.68,14.11,0.58373,2,19,-19.75,-2.98,0.00399,18,24.89,-13.63,0.99601,2,19,22.26,9.69,0.95432,18,52.38,20.58,0.04568],"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,0,28]}},"timo5 010":{"guaiA4e/timo5 010":{"type":"mesh","hull":15,"width":77,"height":96,"uvs":[0.1733,0.00787,0,0.02495,0,0.18724,0,0.45204,0.09876,0.60579,0.19993,0.82787,0.32772,1,0.65252,1,0.84954,1,0.86551,0.84068,1,0.67839,1,0.40079,0.87616,0.16162,0.69512,0,0.42356,0,0.70632,0.40475,0.50497,0.28442,0.59182,0.52825,0.4418,0.68342,0.46944,0.80059,0.36679,0.51559,0.68263,0.81959,0.27755,0.24889,0.80767,0.60911,0.12468,0.35004,0.25292,0.70497],"triangles":[17,16,15,24,22,20,20,22,16,3,2,24,15,12,11,15,16,12,24,2,22,22,14,16,16,13,12,16,14,13,2,0,22,22,0,14,2,1,0,9,23,10,5,4,25,21,17,23,25,4,20,18,20,17,23,11,10,17,15,23,23,15,11,4,24,20,4,3,24,20,16,17,7,21,8,8,21,9,6,19,7,7,19,21,6,5,19,19,25,18,25,19,5,21,23,9,21,18,17,21,19,18,25,20,18],"vertices":[2,13,-4.52,-55.51,0.00401,12,-17.98,-0.03,0.99599,2,13,5.07,-64.92,0.01723,12,-26.58,-10.36,0.98277,2,13,17.26,-55.21,0.10852,12,-15.91,-21.71,0.89148,2,13,37.14,-39.37,0.5208,12,1.5,-40.23,0.4792,2,13,43.94,-24.22,0.83065,12,17.15,-45.78,0.16935,3,14,9.28,-21.45,0.32397,13,55.76,-4.84,0.66692,12,37.43,-55.97,0.0091,2,14,27.74,-16.05,0.91256,13,62.55,13.15,0.08744,2,14,33.99,8.16,0.98314,13,46.97,32.71,0.01686,2,14,37.78,22.85,0.9303,13,37.51,44.57,0.0697,2,14,23.28,27.87,0.72385,13,24.78,36,0.27615,3,14,10.78,41.79,0.31475,13,6.15,34.39,0.6824,12,72.49,-3.32,0.00285,3,14,-15.02,48.45,0.03142,13,-14.7,17.78,0.55151,12,54.23,16.1,0.41707,2,13,-26.71,-3.98,0.00782,12,31.55,26.29,0.99218,1,12,10.77,28.05,1,1,12,-4.46,13.72,1,3,14,-20.3,26.45,0.00028,13,-0.3,0.34,0.47589,12,38.02,0.33,0.52382,2,13,0.32,-18.99,0.01685,12,18.81,-1.87,0.98315,2,14,-11.03,14.96,0.00382,13,14.46,0.83,0.99618,1,14,0.51,0.05,1,2,14,11.93,-0.7,0.99171,13,40.78,9.75,0.00829,2,13,24.31,-13.48,0.78908,12,26.26,-25.33,0.21092,2,14,17.8,14.74,0.85073,13,31.98,23.73,0.14927,2,13,13.67,-33.21,0.08202,12,3.48,-10.86,0.91798,3,14,6.27,28.71,0.17265,13,8.87,17.34,0.82585,12,54.25,-10.28,0.0015,2,13,27.57,-35.49,0.30697,12,0.05,-24.52,0.69303,3,14,-3.69,-13.58,0.45877,13,44.2,-7.93,0.48359,12,26.13,-43.39,0.05764],"edges":[0,2,2,4,4,6,6,8,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,0,28,8,10]}},"timo5 011":{"guaiA4e/timo5 011":{"type":"mesh","hull":13,"width":74,"height":83,"uvs":[1,0.85557,1,0.64591,0.85739,0.44714,0.59474,0.22931,0.39735,0.04801,0.13165,0,0,0.07796,0,0.29852,0.03697,0.54358,0.17135,0.81042,0.48897,0.94112,0.72719,1,0.95014,1,0.61924,0.66438,0.31644,0.37338,0.45014,0.54517],"triangles":[7,6,5,14,5,4,7,5,14,14,4,3,8,7,14,15,14,3,15,3,2,13,15,2,15,9,8,15,8,14,10,15,13,9,15,10,13,2,1,13,1,0,11,10,13,0,11,13,12,11,0],"vertices":[1,29,-4.67,-8.39,1,2,29,7.22,-21.1,0.93172,30,-16.96,-22.92,0.06828,3,29,26.2,-25.93,0.44663,30,2.41,-25.82,0.55336,31,-28.97,-29.04,0.00001,3,29,52.75,-25.84,0.00691,30,28.81,-23.06,0.71184,31,-3.01,-23.51,0.28125,2,30,49.75,-21.96,0.08306,31,17.7,-20.2,0.91694,1,31,32.25,-6.4,1,1,31,32.55,5.3,1,2,30,53.43,13.87,0.04835,31,17.57,15.81,0.95165,3,29,65.05,21.41,0.00004,30,36.31,25.18,0.64277,31,-0.65,25.26,0.35719,3,29,42.65,30.78,0.09004,30,13.08,32.26,0.89918,31,-24.49,29.84,0.01078,2,29,18.08,22.64,0.72127,30,-10.55,21.69,0.27873,2,29,1.87,14.16,0.99765,30,-25.82,11.62,0.00235,1,29,-10.17,2.88,1,2,29,26.74,-0.72,0.34213,30,0.42,-0.68,0.65787,2,30,33.35,0.31,0.95226,31,-0.97,0.21,0.04774,1,30,16.1,2.24,1],"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,0]}},"timo5 012":{"guaiA4e/timo5 012":{"x":47.66,"y":4.11,"rotation":-35.4,"width":114,"height":147}},"timo5 013":{"guaiA4e/timo5 013":{"type":"mesh","hull":15,"width":84,"height":85,"uvs":[0.12355,0,0,0.0324,0,0.18226,0.04543,0.33666,0.07759,0.55009,0,0.64092,0.08219,0.87706,0.32574,1,0.62443,1,0.91852,0.96334,1,0.74537,1,0.47744,1,0.12322,0.77147,0,0.44062,0,0.51414,0.55464,0.52333,0.37299,0.56009,0.75899,0.32574,0.54101,0.75309,0.52285,0.266,0.34574,0.77147,0.36391],"triangles":[15,16,19,15,18,16,4,20,18,4,3,20,18,20,16,19,21,11,19,16,21,21,12,11,13,21,16,16,20,14,21,13,12,13,16,14,20,2,0,20,0,14,20,3,2,2,1,0,7,17,8,8,17,9,6,18,7,17,18,15,17,7,18,9,17,10,5,4,6,6,4,18,17,19,10,17,15,19,19,11,10],"vertices":[1,23,48.08,33.03,1,2,22,84.34,34.48,0.00019,23,45.46,43.44,0.99981,2,22,71.85,36.94,0.01414,23,32.72,43.6,0.98586,2,22,58.23,35.74,0.09377,23,19.55,39.95,0.90623,2,22,39.91,36.6,0.46903,23,1.38,37.47,0.53097,2,22,33.6,44.49,0.6473,23,-6.26,44.09,0.3527,2,22,12.57,41.6,0.86033,23,-26.42,37.43,0.13967,2,22,-1.64,23.56,0.98934,23,-37.12,17.11,0.01066,1,22,-6.5,-1.06,1,2,22,-8.23,-25.9,0.98356,23,-34.63,-32.72,0.01644,2,22,8.62,-36.2,0.84401,23,-16.19,-39.8,0.15599,2,22,30.97,-40.61,0.40558,23,6.58,-40.08,0.59442,2,22,60.5,-46.44,0.04077,23,36.69,-40.46,0.95923,2,22,74.5,-29.64,0.00126,23,47.4,-21.39,0.99874,1,23,47.75,6.4,1,2,22,32.43,0.7,0.29784,23,0.53,0.81,0.70216,2,22,47.43,-3.05,0.00005,23,15.96,-0.16,0.99995,1,22,14.64,0.28,1,2,22,36.63,16,0.38641,23,1.89,16.62,0.61359,2,22,31.19,-19.52,0.45702,23,2.98,-19.29,0.54298,2,22,53.89,17.71,0.07101,23,18.55,21.43,0.92899,2,22,44.15,-23.65,0.14351,23,16.47,-21.01,0.85649],"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,0,28]}},"timo5 014":{"guaiA4e/timo5 014":{"type":"mesh","hull":15,"width":106,"height":129,"uvs":[0.00168,0.8872,0.27896,1,0.78409,1,0.99547,0.83306,0.8637,0.58492,0.9241,0.4586,1,0.36385,1,0.19467,0.90488,0.05255,0.78683,0,0.58643,0,0.42995,0.05932,0.34759,0.19241,0.14444,0.31423,0,0.51274,0.56172,0.43153,0.63584,0.2849,0.68251,0.15406,0.44642,0.22174,0.76762,0.31874,0.62761,0.10444,0.8088,0.10895,0.32837,0.35483,0.80605,0.44055],"triangles":[20,10,9,21,9,8,17,20,9,21,17,9,20,18,11,20,11,10,12,11,18,16,20,17,18,20,16,19,17,21,16,17,19,21,8,7,22,12,18,19,21,7,6,19,7,15,18,16,5,23,19,6,5,19,4,23,5,23,16,19,23,15,16,15,23,4,22,18,15,22,13,12,14,1,0,22,14,13,22,1,14,1,22,15,2,4,3,1,15,2,2,15,4],"vertices":[1,24,8.35,53.33,1,1,24,-4.67,23.23,1,2,24,-1.91,-30.25,0.9998,25,-62.02,-46.51,0.0002,1,24,20.75,-51.51,1,1,24,52,-35.92,1,2,24,68.6,-41.47,0.15205,25,8.77,-37.18,0.84795,2,24,81.23,-48.87,0.02414,25,22.98,-40.69,0.97586,1,25,43.55,-33.4,1,1,25,57.47,-17.78,1,1,25,59.68,-3.72,1,1,25,52.59,16.31,1,1,25,39.84,29.39,1,2,24,99.75,21.33,0.24,25,20.74,31.88,0.76,1,24,82.94,42.02,1,1,24,56.58,56,1,1,24,70.11,-2.93,1,1,25,19.69,-0.9,1,1,25,37.26,0.07,1,2,24,96.51,10.67,0.04,25,20.67,20.75,0.96,1,25,20.24,-15.53,1,2,24,112.61,-7.73,0.00009,25,41.35,7.69,0.99991,1,25,47.21,-10.61,1,1,24,78.72,22.28,1,1,25,6.79,-24.61,1],"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,0,28]}},"timo5 015":{"guaiA4e/timo5 015":{"type":"mesh","hull":11,"width":88,"height":63,"uvs":[0.0041,0,0.28553,0,0.58542,0.12615,0.82532,0.28726,1,0.56437,1,0.93171,0.83916,1,0.52544,1,0.23017,0.89304,0.05946,0.66104,0,0.33882,0.67439,0.66087,0.79712,0.73706,0.54485,0.55611,0.33008,0.37992,0.20394,0.23706,0.41189,0.71325,0.57553,0.3323,0.20735,0.52754,0.4869,0.24658,0.79366,0.48956,0.58885,0.83714],"triangles":[9,10,18,10,15,18,18,15,14,14,15,19,10,0,15,19,15,1,15,0,1,8,16,7,7,16,21,8,9,16,16,9,18,11,16,13,16,18,13,13,18,14,13,14,17,13,17,20,17,14,19,20,17,3,17,2,3,17,19,2,2,19,1,7,21,6,21,12,6,6,12,5,12,4,5,21,16,11,21,11,12,11,20,12,12,20,4,11,13,20,20,3,4],"vertices":[1,28,37.96,-2.02,1,2,27,50.05,-17.7,0.04656,28,17.89,-16.52,0.95344,3,26,48.57,-27.66,0.04117,27,23.45,-24.91,0.81599,28,-8.16,-25.53,0.14284,3,26,25.15,-27.27,0.50821,27,0.17,-27.47,0.49177,28,-31.22,-29.66,0.00002,2,26,3.89,-17.84,0.9746,27,-22.11,-20.78,0.0254,1,26,-5.79,3.18,1,2,26,5.27,13.01,0.99843,27,-24.61,10,0.00157,3,26,30.35,24.55,0.35353,27,-1.18,24.6,0.64422,28,-36.11,22.19,0.00224,3,26,56.77,29.3,0.004,27,24.43,32.62,0.77312,28,-11.1,31.94,0.22289,2,27,44.91,28.16,0.32329,28,9.63,28.89,0.67671,2,27,60.09,13.7,0.01486,28,25.76,15.5,0.98514,2,26,27.38,-0.33,0.95654,27,-1.01,-0.46,0.04346,2,26,15.56,-0.49,0.99987,27,-12.71,-2.1,0.00013,2,26,40.49,-1.56,0.00001,27,12.16,-0.04,0.99999,2,27,34.07,0.54,0.21535,28,0.7,0.59,0.78465,1,28,14.96,-0.21,1,3,26,46.98,12.32,0.01932,27,16.85,14.55,0.93771,28,-17.44,13.4,0.04296,3,26,43.93,-15.5,0.05085,27,17.32,-13.43,0.91392,28,-15.06,-14.49,0.03523,2,27,38.31,14.14,0.33193,28,4.01,14.45,0.66807,3,26,53.28,-17.14,0.00714,27,26.8,-13.89,0.77816,28,-5.57,-14.3,0.2147,3,26,26.76,-13.29,0.77435,27,-9.86,-9.07,0.22565,28,-42.48,-11.99,0.00001,3,26,22.28,10.52,0.61449,27,3.16,11.77,0.3829,28,-30.91,9.69,0.00261],"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,0,20]}},"timo5 016":{"guaiA4e/timo5 016":{"x":24.98,"y":-0.35,"rotation":49.94,"width":62,"height":62}},"timo5 017":{"guaiA4e/timo5 017":{"x":13.09,"y":-0.32,"rotation":11,"width":43,"height":31}},"atkbox":{"atkbox":{"type":"boundingbox","vertexCount":4,"vertices":[65.1,31.69,27.77,6.71,52.41,-26.91,87.54,-1.21]}}}}],"events":{"attack":{}},"animations":{"atk":{"slots":{"timo5 007":{"color":[{"time":0.6,"color":"ffffffff"},{"time":0.6333,"color":"ffffff00"}]}},"bones":{"timo5 002":{"rotate":[{"angle":-12.33},{"time":0.5,"angle":-17.07},{"time":0.6333,"angle":25.15},{"time":1,"angle":-12.33}]},"bone2":{"rotate":[{"angle":-12.33},{"time":0.5,"angle":-28.46},{"time":0.6333,"angle":4.02},{"time":1,"angle":-12.33}]},"bone3":{"rotate":[{"angle":-12.33},{"time":0.5,"angle":-19.37},{"time":0.6333,"angle":16.85},{"time":1,"angle":-12.33}]},"bone5":{"rotate":[{"angle":-4.7},{"time":0.5,"angle":-27.27},{"time":0.6333,"angle":16.51},{"time":1,"angle":-4.7}]},"bone7":{"rotate":[{"angle":1.48},{"time":0.5,"angle":-26.24},{"time":0.6333,"angle":24.38},{"time":1,"angle":1.48}]},"IK1":{"translate":[{"y":-0.6,"curve":"stepped"},{"time":1,"y":-0.6}]},"IK2":{"translate":[{"y":-0.6,"curve":"stepped"},{"time":1,"y":-0.6}]},"IK3":{"translate":[{"y":-0.6,"curve":"stepped"},{"time":1,"y":-0.6}]},"IK4":{"translate":[{"y":-0.6,"curve":"stepped"},{"time":1,"y":-0.6}]},"timo5 008":{"rotate":[{"angle":0.01},{"time":0.5,"angle":-6.93},{"time":0.6333,"angle":1.48},{"time":1,"angle":0.01}],"translate":[{"y":-0.6},{"time":0.5,"x":-23.3,"y":-5.69},{"time":0.6333,"x":20.32,"y":-2.83},{"time":1,"y":-0.6}]},"bone":{"rotate":[{"angle":0.44,"curve":"stepped"},{"time":1,"angle":0.44}]},"timo5 012":{"rotate":[{"angle":-1.63},{"time":0.5,"angle":-14.26},{"time":0.6333,"angle":-6.27},{"time":1,"angle":-1.63}]},"timo5 013":{"rotate":[{"angle":0.47},{"time":0.5,"angle":2.12},{"time":0.6333,"angle":-17.55},{"time":1,"angle":0.47}],"translate":[{"x":-0.24,"y":1.17,"curve":"stepped"},{"time":1,"x":-0.24,"y":1.17}]},"bone10":{"rotate":[{"angle":0.47},{"time":0.5,"angle":15.12},{"time":0.6333,"angle":2.95},{"time":1,"angle":0.47}]},"timo5 016":{"rotate":[{"angle":0.1},{"time":0.5,"angle":35.01},{"time":0.6333,"angle":295.79},{"time":1,"angle":0.1}]},"timo5 017":{"rotate":[{"angle":2.77},{"time":0.6333,"angle":63.26},{"time":1,"angle":2.77}]},"timo5 005":{"rotate":[{"angle":-2.44},{"time":0.5,"angle":110.71},{"time":0.6333,"angle":3.83},{"time":1,"angle":-2.44}]},"timo5 006":{"rotate":[{"angle":-0.03},{"time":0.5,"angle":-56.43},{"time":0.6333,"angle":-34.95},{"time":1,"angle":-0.03}]},"timo5 007":{"rotate":[{"angle":-1.55,"curve":"stepped"},{"time":1,"angle":-1.55}],"translate":[{"x":1.06,"y":-1.43},{"time":0.6,"x":12.73,"y":-23.97},{"time":0.6333,"x":108.87,"y":-22},{"time":1,"x":1.06,"y":-1.43}]},"timo5 014":{"rotate":[{"angle":0.29},{"time":0.6333,"angle":11.66},{"time":1,"angle":0.29}]},"bone11":{"rotate":[{"angle":-2.23},{"time":0.5,"angle":-16.98},{"time":0.6,"angle":20.94},{"time":0.7667,"angle":-8.72},{"time":1,"angle":-2.23}]},"timo5 015":{"rotate":[{"angle":0.95},{"time":0.5,"angle":16.33},{"time":0.6,"angle":-34.94},{"time":0.8333,"angle":5.32},{"time":1,"angle":0.95}]},"bone12":{"rotate":[{"angle":0.95},{"time":0.5,"angle":16.33},{"time":0.6,"angle":-30.28},{"time":0.8333,"angle":7.26},{"time":1,"angle":0.95}]},"bone13":{"rotate":[{"angle":0.95},{"time":0.5,"angle":16.33},{"time":0.6,"angle":-29.98},{"time":0.8333,"angle":7.39},{"time":1,"angle":0.95}]},"timo5 011":{"rotate":[{"angle":0.95},{"time":0.5,"angle":15.19},{"time":0.6,"angle":-25.32},{"time":0.8333,"angle":4.98},{"time":1,"angle":0.95}]},"bone14":{"rotate":[{"angle":0.95},{"time":0.5,"angle":15.19},{"time":0.6,"angle":-17.43},{"time":0.8333,"angle":8.26},{"time":1,"angle":0.95}]},"bone15":{"rotate":[{"angle":0.95},{"time":0.5,"angle":15.19},{"time":0.6,"angle":-12.77},{"time":0.8333,"angle":10.21},{"time":1,"angle":0.95}]}},"events":[{"time":0.6333,"name":"attack"}]},"jifei":{"bones":{"jifei":{"rotate":[{},{"time":0.0667,"angle":59.02},{"time":0.1333,"angle":149.8},{"time":0.2,"angle":-94.21},{"time":0.2667}]}}},"std":{"bones":{"timo5 002":{"rotate":[{"angle":-12.33},{"time":0.5,"angle":-13.35},{"time":1,"angle":-12.33}]},"bone2":{"rotate":[{"angle":-12.33},{"time":0.5,"angle":-37.27},{"time":1,"angle":-12.33}]},"bone3":{"rotate":[{"angle":-12.33},{"time":0.5,"angle":15.14},{"time":1,"angle":-12.33}]},"bone5":{"rotate":[{"angle":-4.7},{"time":0.5,"angle":7},{"time":1,"angle":-4.7}]},"bone7":{"rotate":[{"angle":1.48},{"time":0.5,"angle":9.55},{"time":1,"angle":1.48}]},"IK1":{"translate":[{"y":-0.6,"curve":"stepped"},{"time":1,"y":-0.6}]},"IK2":{"translate":[{"y":-0.6,"curve":"stepped"},{"time":1,"y":-0.6}]},"IK3":{"translate":[{"y":-0.6,"curve":"stepped"},{"time":1,"y":-0.6}]},"IK4":{"translate":[{"y":-0.6,"curve":"stepped"},{"time":1,"y":-0.6}]},"timo5 008":{"rotate":[{"angle":0.01},{"time":0.5,"angle":-2.8},{"time":1,"angle":0.01}],"translate":[{"y":-0.6},{"time":0.5,"y":-10.71},{"time":1,"y":-0.6}]},"bone":{"rotate":[{"angle":0.44,"curve":"stepped"},{"time":1,"angle":0.44}]},"timo5 012":{"rotate":[{"angle":-1.63},{"time":0.5,"angle":-8.21},{"time":1,"angle":-1.63}]},"timo5 013":{"rotate":[{"angle":0.47},{"time":0.5,"angle":-1.92},{"time":1,"angle":0.47}],"translate":[{"x":-0.24,"y":1.17,"curve":"stepped"},{"time":1,"x":-0.24,"y":1.17}]},"bone10":{"rotate":[{"angle":0.47},{"time":0.5,"angle":-2.93},{"time":1,"angle":0.47}]},"timo5 016":{"rotate":[{"angle":0.1},{"time":0.5,"angle":4.56},{"time":1,"angle":0.1}]},"timo5 017":{"rotate":[{"angle":2.77},{"time":0.5,"angle":23.81},{"time":1,"angle":2.77}]},"timo5 005":{"rotate":[{"angle":-2.44,"curve":"stepped"},{"time":1,"angle":-2.44}]},"timo5 006":{"rotate":[{"angle":-0.03},{"time":0.5,"angle":-13.84},{"time":1,"angle":-0.03}]},"timo5 007":{"rotate":[{"angle":-1.55},{"time":0.5,"angle":14.7},{"time":1,"angle":-1.55}],"translate":[{"x":1.06,"y":-1.43,"curve":"stepped"},{"time":1,"x":1.06,"y":-1.43}]},"timo5 014":{"rotate":[{"angle":0.29,"curve":"stepped"},{"time":1,"angle":0.29}]},"bone11":{"rotate":[{"angle":-2.23},{"time":0.3333,"angle":19.66},{"time":0.7667,"angle":-10.27},{"time":1,"angle":-2.23}]},"timo5 015":{"rotate":[{"angle":0.95},{"time":0.2667,"angle":10.41},{"time":0.7333,"angle":-14.08},{"time":1,"angle":0.95}]},"bone12":{"rotate":[{"angle":0.95},{"time":0.2667,"angle":10.41},{"time":0.7333,"angle":-14.08},{"time":1,"angle":0.95}]},"bone13":{"rotate":[{"angle":0.95},{"time":0.2667,"angle":10.41},{"time":0.7333,"angle":-14.08},{"time":1,"angle":0.95}]},"timo5 011":{"rotate":[{"angle":0.95},{"time":0.2667,"angle":13.21},{"time":0.7333,"angle":-4.72},{"time":1,"angle":0.95}]},"bone14":{"rotate":[{"angle":0.95},{"time":0.2667,"angle":13.21},{"time":0.7333,"angle":-4.72},{"time":1,"angle":0.95}]},"bone15":{"rotate":[{"angle":0.95},{"time":0.2667,"angle":13.21},{"time":0.7333,"angle":-4.72},{"time":1,"angle":0.95}]}}},"std2":{"bones":{"timo5 002":{"rotate":[{"angle":-12.33},{"time":0.5,"angle":-13.35},{"time":1,"angle":-12.33}]},"bone2":{"rotate":[{"angle":-12.33},{"time":0.5,"angle":-37.27},{"time":1,"angle":-12.33}]},"bone3":{"rotate":[{"angle":-12.33},{"time":0.5,"angle":15.14},{"time":1,"angle":-12.33}]},"bone5":{"rotate":[{"angle":-4.7},{"time":0.5,"angle":7},{"time":1,"angle":-4.7}]},"bone7":{"rotate":[{"angle":1.48},{"time":0.5,"angle":9.55},{"time":1,"angle":1.48}]},"IK1":{"translate":[{"y":-0.6,"curve":"stepped"},{"time":1,"y":-0.6}]},"IK2":{"translate":[{"y":-0.6,"curve":"stepped"},{"time":1,"y":-0.6}]},"IK3":{"translate":[{"y":-0.6,"curve":"stepped"},{"time":1,"y":-0.6}]},"IK4":{"translate":[{"y":-0.6,"curve":"stepped"},{"time":1,"y":-0.6}]},"timo5 008":{"rotate":[{"angle":0.01},{"time":0.5,"angle":-2.8},{"time":1,"angle":0.01}],"translate":[{"y":-0.6},{"time":0.5,"y":-10.71},{"time":1,"y":-0.6}]},"bone":{"rotate":[{"angle":0.44,"curve":"stepped"},{"time":1,"angle":0.44}]},"timo5 012":{"rotate":[{"angle":-1.63},{"time":0.5,"angle":-8.21},{"time":1,"angle":-1.63}]},"timo5 013":{"rotate":[{"angle":0.47},{"time":0.5,"angle":-1.92},{"time":1,"angle":0.47}],"translate":[{"x":-0.24,"y":1.17,"curve":"stepped"},{"time":1,"x":-0.24,"y":1.17}]},"bone10":{"rotate":[{"angle":0.47},{"time":0.5,"angle":-2.93},{"time":1,"angle":0.47}]},"timo5 016":{"rotate":[{"angle":0.1},{"time":0.5,"angle":4.56},{"time":1,"angle":0.1}]},"timo5 017":{"rotate":[{"angle":2.77},{"time":0.5,"angle":23.81},{"time":1,"angle":2.77}]},"timo5 005":{"rotate":[{"angle":-2.44,"curve":"stepped"},{"time":1,"angle":-2.44}]},"timo5 006":{"rotate":[{"angle":-0.03},{"time":0.5,"angle":-13.84},{"time":1,"angle":-0.03}]},"timo5 007":{"rotate":[{"angle":-1.55},{"time":0.5,"angle":14.7},{"time":1,"angle":-1.55}],"translate":[{"x":1.06,"y":-1.43,"curve":"stepped"},{"time":1,"x":1.06,"y":-1.43}]},"timo5 014":{"rotate":[{"angle":0.29,"curve":"stepped"},{"time":1,"angle":0.29}]},"bone11":{"rotate":[{"angle":-2.23},{"time":0.3333,"angle":19.66},{"time":0.7667,"angle":-10.27},{"time":1,"angle":-2.23}]},"timo5 015":{"rotate":[{"angle":0.95},{"time":0.2667,"angle":10.41},{"time":0.7333,"angle":-14.08},{"time":1,"angle":0.95}]},"bone12":{"rotate":[{"angle":0.95},{"time":0.2667,"angle":10.41},{"time":0.7333,"angle":-14.08},{"time":1,"angle":0.95}]},"bone13":{"rotate":[{"angle":0.95},{"time":0.2667,"angle":10.41},{"time":0.7333,"angle":-14.08},{"time":1,"angle":0.95}]},"timo5 011":{"rotate":[{"angle":0.95},{"time":0.2667,"angle":13.21},{"time":0.7333,"angle":-4.72},{"time":1,"angle":0.95}]},"bone14":{"rotate":[{"angle":0.95},{"time":0.2667,"angle":13.21},{"time":0.7333,"angle":-4.72},{"time":1,"angle":0.95}]},"bone15":{"rotate":[{"angle":0.95},{"time":0.2667,"angle":13.21},{"time":0.7333,"angle":-4.72},{"time":1,"angle":0.95}]},"scale":{"scale":[{"x":0.42,"y":0.42,"curve":"stepped"},{"time":1,"x":0.42,"y":0.42}]}}},"walk":{"bones":{"timo5 002":{"rotate":[{"angle":-28.49},{"time":0.2,"angle":-12.31},{"time":0.6333,"angle":4.05},{"time":0.8333,"angle":-28.49}]},"bone2":{"rotate":[{"angle":-37.06},{"time":0.2,"angle":-10.04},{"time":0.6333,"angle":25.22},{"time":0.8333,"angle":-37.06}]},"bone3":{"rotate":[{"angle":18.35},{"time":0.2,"angle":33.75},{"time":0.8333,"angle":18.35}]},"bone5":{"rotate":[{"angle":-4.7,"curve":"stepped"},{"time":0.8333,"angle":-4.7}]},"bone7":{"rotate":[{"angle":1.48,"curve":"stepped"},{"time":0.8333,"angle":1.48}]},"IK1":{"translate":[{"x":11.2,"y":-10.55},{"time":0.2,"x":-32.36,"y":56.29},{"time":0.4333,"x":-46.86,"y":116.85},{"time":0.6333,"x":-3.36,"y":46.06},{"time":0.8333,"x":11.2,"y":-10.55}]},"IK2":{"translate":[{"x":8.09,"y":-12.41},{"time":0.2,"x":-19.7,"y":48.42},{"time":0.4333,"x":-52.11,"y":91.07},{"time":0.6333,"x":-11.17,"y":34.77},{"time":0.8333,"x":8.09,"y":-12.41}]},"IK3":{"translate":[{"x":-22.39,"y":-13.66},{"time":0.2,"x":40.69,"y":105.75},{"time":0.4333,"x":-13.9,"y":45.19},{"time":0.6333,"x":-13.9,"y":5.1},{"time":0.8333,"x":-22.39,"y":-13.66}]},"IK4":{"translate":[{"x":-27.99,"y":-16.15},{"time":0.2,"x":43.35,"y":112.28},{"time":0.4333,"x":6.68,"y":37.21},{"time":0.6333,"x":6.68,"y":-2.88},{"time":0.8333,"x":-27.99,"y":-16.15}]},"timo5 008":{"rotate":[{"angle":-9.86},{"time":0.2,"angle":29.5},{"time":0.4333,"angle":-28.71},{"time":0.8333,"angle":-9.86}],"translate":[{"y":-23.61},{"time":0.2,"y":25.96},{"time":0.4333,"y":71.17},{"time":0.6333,"y":31.07},{"time":0.8333,"y":-23.61}]},"bone":{"rotate":[{"angle":0.44},{"time":0.2,"angle":9.81},{"time":0.8333,"angle":0.44}]},"timo5 012":{"rotate":[{"angle":-14.12},{"time":0.6333,"angle":-4.03},{"time":0.8333,"angle":-14.12}]},"timo5 013":{"rotate":[{"angle":0.47},{"time":0.2,"angle":-14.87},{"time":0.4333,"angle":-3.17},{"time":0.6333,"angle":-10.57},{"time":0.8333,"angle":0.47}],"translate":[{"x":-0.24,"y":1.17,"curve":"stepped"},{"time":0.8333,"x":-0.24,"y":1.17}]},"bone10":{"rotate":[{"angle":0.47},{"time":0.4333,"angle":13.8},{"time":0.6333,"angle":18.43},{"time":0.8333,"angle":0.47}]},"timo5 016":{"rotate":[{"angle":8.99,"curve":"stepped"},{"time":0.8333,"angle":8.99}]},"timo5 017":{"rotate":[{"angle":21.19},{"time":0.2,"angle":37.59},{"time":0.8333,"angle":21.19}]},"timo5 005":{"rotate":[{"angle":-18.01,"curve":"stepped"},{"time":0.8333,"angle":-18.01}]},"timo5 006":{"rotate":[{"angle":9.68,"curve":"stepped"},{"time":0.8333,"angle":9.68}]},"timo5 007":{"rotate":[{"angle":-1.55,"curve":"stepped"},{"time":0.8333,"angle":-1.55}],"translate":[{"x":1.06,"y":-1.43,"curve":"stepped"},{"time":0.8333,"x":1.06,"y":-1.43}]},"timo5 014":{"rotate":[{"angle":-4.67},{"time":0.2,"angle":-5.99},{"time":0.4333,"angle":3},{"time":0.6333,"angle":8.58},{"time":0.8333,"angle":-4.67}]},"bone11":{"rotate":[{"angle":19.48},{"time":0.2,"angle":44.72},{"time":0.4333,"angle":11.47},{"time":0.6333,"angle":22.96},{"time":0.8333,"angle":19.48}]},"timo5 015":{"rotate":[{"angle":-12.74},{"time":0.2,"angle":14.43},{"time":0.6333,"angle":-16.86},{"time":0.8333,"angle":-12.74}]},"bone12":{"rotate":[{"angle":-12.74},{"time":0.2,"angle":14.43},{"time":0.6333,"angle":-16.86},{"time":0.8333,"angle":-12.74}]},"bone13":{"rotate":[{"angle":-12.74},{"time":0.2,"angle":14.43},{"time":0.6333,"angle":-16.86},{"time":0.8333,"angle":-12.74}]},"timo5 011":{"rotate":[{"angle":-7.61},{"time":0.2,"angle":14.15},{"time":0.6333,"angle":-8.41},{"time":0.8333,"angle":-7.61}]},"bone14":{"rotate":[{"angle":-7.61},{"time":0.2,"angle":14.15},{"time":0.6333,"angle":-8.41},{"time":0.8333,"angle":-7.61}]},"bone15":{"rotate":[{"angle":-7.61},{"time":0.2,"angle":14.15},{"time":0.6333,"angle":-8.41},{"time":0.8333,"angle":-7.61}]}}}}},[0]]],0,0,[0],[-1],[10]],[[[20,"HomeView"],[21,"HomeView",33554432,[-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20],[[2,-2,[0,"1dgJxmIH5HIpXD6y0/xMwI"],[5,720,1280]],[16,45,100,100,-3,[0,"582zBz6m5DKqmkTkiS/LE0"]],[24,-5,[0,"88Xw2zQZdDJJYIIFL0sfcf"],-4]],[1,"08xLpDDa9NlK3pgR7XiOqb",null,null,null,-1,0]],[3,"Toggle",33554432,1,[-26,-27],[[2,-21,[0,"49F8/vuy1HiIhN9nPaNbrw"],[5,28,28]],[13,-22,[0,"f3iXpUSf5GoaBMf6pZtdha"],2],[18,false,-25,[0,"fd33sfBNdH4rccG78Rvmx/"],[4,4292269782],-24,[[4,"15051raQgZN6J5ICgY2OfSS","setRoleAttack",1]],-23,3]],[1,"40A7fQXkRLN6+OPu4YqtU7",null,null,null,1,0],[1,-226.208,547.969,0]],[3,"Toggle-001",33554432,1,[-33,-34],[[2,-28,[0,"4cZhpnq+dAL4V0l2x0ZM19"],[5,28,28]],[13,-29,[0,"b3RMzqVjJHga9tOajMNWrC"],4],[18,false,-32,[0,"2biFYzZXZMw7ZIf25PoU9r"],[4,4292269782],-31,[[4,"15051raQgZN6J5ICgY2OfSS","setRoleMove",1]],-30,5]],[1,"30gHU+/k5EjauwgjpdgxQR",null,null,null,1,0],[1,-69.994,547.969,0]],[3,"Button",33554432,1,[-39],[[2,-35,[0,"2f6odzsA9CEqdVB6sONuuN"],[5,100,40]],[8,1,0,-36,[0,"feJd2oVGZP6os12q4IS28U"],6],[9,2,-38,[0,"b3kouOTZ5EYLw5sMZG324p"],[[4,"15051raQgZN6J5ICgY2OfSS","onClickReset",1]],[4,4292269782],-37,7,8,9,10]],[1,"4aOUTyOz1Czp5cs51pt4hX",null,null,null,1,0],[1,253.94,414.543,0]],[3,"Button-001",33554432,1,[-44],[[2,-40,[0,"11gVfKX15J75lmC5wMXNoV"],[5,150,40]],[8,1,0,-41,[0,"6bzNThqslF4rtzhtv4z/wB"],11],[9,2,-43,[0,"33456IPOpL9oM7x0gq/Oo4"],[[4,"15051raQgZN6J5ICgY2OfSS","onClickResetServer",1]],[4,4292269782],-42,12,13,14,15]],[1,"17rzI8RjNOmqCFQhUeM594",null,null,null,1,0],[1,108.634,414.543,0]],[3,"Button-002",33554432,1,[-49],[[2,-45,[0,"1fF0+uXqhL3rMnNkxpa1Ws"],[5,100,40]],[8,1,0,-46,[0,"686NsPKXRBfZQVxordVnJV"],16],[9,2,-48,[0,"9f1H91mr5KiJHRBl5szAaV"],[[4,"15051raQgZN6J5ICgY2OfSS","onClickGoPVP",1]],[4,4292269782],-47,17,18,19,20]],[1,"cainqikw9Ga4Etlqv6OA8T",null,null,null,1,0],[1,-257.954,444.499,0]],[3,"Button-003",33554432,1,[-54],[[2,-50,[0,"f3tTtTb3tIvLRgSMzRdatV"],[5,100,40]],[8,1,0,-51,[0,"30hQXcxAVAkJPdIW/yG4Qa"],21],[9,2,-53,[0,"61w0jxbglArbNBvEWVT+HQ"],[[4,"15051raQgZN6J5ICgY2OfSS","onClickGoOnHook",1]],[4,4292269782],-52,22,23,24,25]],[1,"61TBvE1Z9A2ZgeXAooCr2A",null,null,null,1,0],[1,-122.84,444.499,0]],[3,"Button-004",33554432,1,[-59],[[2,-55,[0,"b4khKqgSZBh58V5TThdbxj"],[5,100,40]],[8,1,0,-56,[0,"72VDDxVNFE76GqA+sf39oX"],26],[9,2,-58,[0,"f2hvwmdOlKJZs7O6wGRUDM"],[[4,"15051raQgZN6J5ICgY2OfSS","onClickToken",1]],[4,4292269782],-57,27,28,29,30]],[1,"37fEjaHr5OLJgNvj0MHHmo",null,null,null,1,0],[1,-257.216,388.865,0]],[3,"Button-005",33554432,1,[-64],[[2,-60,[0,"f2A4s7sxNJZoPz5Yxd1Kjo"],[5,100,40]],[8,1,0,-61,[0,"d5zsQW2rJHwJgz15jlkPil"],35],[9,2,-63,[0,"36ADMzWDFFrJ4Zovw7UC0Q"],[[4,"15051raQgZN6J5ICgY2OfSS","close",1]],[4,4292269782],-62,36,37,38,39]],[1,"33JGU4WUBFUY+HahE3PBE8",null,null,null,1,0],[1,-122.21,388.865,0]],[22,"frameText",33554432,1,[[[5,-65,[0,"17pNeWiYVPXqBekArDDeGP"],[5,95.15234375,54.4],[0,1,0.5]],-66,[26,-67,[0,"a3hJNOCe5KtYrsOql/FWjZ"],[4,4285098345]],[23,33,51.76182812500002,63.92599999999993,-68,[0,"6fXEFlCxxJF5bzX4Q/cCVg"]]],4,1,4,4],[1,"73JTcgB9xJrLjod90WDGwS",null,null,null,1,0],[1,308.238171875,548.874,0]],[14,"bg",33554432,1,[[2,-69,[0,"8ftYzn1eBL/KI9lfvctDGE"],[5,720,1280]],[25,0,-70,[0,"72OG0M5ThEtaIaziixD4R1"],[4,4294948466],0],[16,45,720,720,-71,[0,"8ejneRsd9FXLr6cGBBG0Rk"]]],[1,"85bQbPz7FPkaRPL/kSAwAE",null,null,null,1,0]],[14,"WorldCamera",33554432,1,[[2,-72,[0,"3dNcUIjpJIZYtiTXw3/Kdl"],[5,720,1280]],[13,-73,[0,"74AjLR66tB0pdLM43xqHBy"],1]],[1,"4aMSbRyHRCFLJdofgJ2I8V",null,null,null,1,0]],[15,"Checkmark",false,33554432,2,[[[2,-74,[0,"57M3Sha6NHwKjFFR9pGUnw"],[5,26,26]],-75],4,1],[1,"01vrgFnUhBPKc8MwIBVWAz",null,null,null,1,0]],[6,"Label",33554432,2,[[5,-76,[0,"f1f++/8aZFs7DSjhFVKV7q"],[5,80,50.4],[0,0,0.5]],[19,"攻击",40,-77,[0,"bcqiWV4+dDTYHgr4l/Zpi8"]]],[1,"90l9+mjeFHkLaU5YnvvBs4",null,null,null,1,0],[1,23.387,0,0]],[15,"Checkmark",false,33554432,3,[[[2,-78,[0,"1a5tnWVpdPbYjrww5M5UcK"],[5,26,26]],-79],4,1],[1,"52BEPomGdDMoEhOakCa22v",null,null,null,1,0]],[6,"Label",33554432,3,[[5,-80,[0,"9b4ynxKlpCLKSv1LZTBKND"],[5,80,50.4],[0,0,0.5]],[19,"移动",40,-81,[0,"03ISSxaIdEbLq/KwIoTXqq"]]],[1,"33F84tRZNATaT2SIhyBmZB",null,null,null,1,0],[1,23.387,0,0]],[7,"Label",512,33554432,4,[[2,-82,[0,"2bSpfZbFRHvpwnki2RaZ7V"],[5,100,40]],[10,"重置",20,20,1,false,-83,[0,"32geHwtodGZa8v3VxQUJiX"],[4,4278190080]]],[1,"7dyiPuQ91LSpN4VBXRTIVK",null,null,null,1,0]],[7,"Label",512,33554432,5,[[2,-84,[0,"5fboR6YyBN54l5x0btJQyW"],[5,150,40]],[10,"重置服务器帧",20,20,1,false,-85,[0,"a6QibMTH5G+7LMHG0qhbVT"],[4,4278190080]]],[1,"da36iiJxtJPZLjwyxqfLYI",null,null,null,1,0]],[7,"Label",512,33554432,6,[[2,-86,[0,"27LlaNzrpGrKETMdfGobkO"],[5,100,40]],[10,"PVP",20,20,1,false,-87,[0,"61XeEHyStNPbG4n2nfIsEQ"],[4,4278190080]]],[1,"8c+LvgDIdKFqySAnsN+HjN",null,null,null,1,0]],[7,"Label",512,33554432,7,[[2,-88,[0,"e8bceZ9aJN16fFlE6INswu"],[5,100,40]],[10,"无尽",20,20,1,false,-89,[0,"d6NfZjhZBFrbWWfKzUypg/"],[4,4278190080]]],[1,"fe/vAbeIZDSL5+jLMLpQx1",null,null,null,1,0]],[7,"Label",512,33554432,8,[[2,-90,[0,"0dYLifIW9OqYbvWJwA9FIw"],[5,100,40]],[10,"清除登录",20,20,1,false,-91,[0,"78eEBfEAJCZ76oiIOAdJLy"],[4,4278190080]]],[1,"0bQ8J+1HpGQJw+S7QHXV1Z",null,null,null,1,0]],[6,"001妙蛙种子",33554432,1,[[5,-92,[0,"24mjCxtbJAIYhkSGJS2XGL"],[5,643.989990234375,385.94000244140625],[0,0.6291246759115515,0.7755350460309831]],[12,"default","atk",0,-93,[0,"02mvi2yPpIvajNGIKqQDxP"],31]],[1,"03QOgvM5ZPaLJxWwx9tYtd",null,null,null,1,0],[1,-271.702,-580.56,0]],[6,"guaiA1a",33554432,1,[[5,-94,[0,"8dVNo47axGpJRFT8NW+dax"],[5,84.5999984741211,116.54000091552734],[0,0.4938534223742009,0.024026084866309822]],[12,"default","atk",0,-95,[0,"63+7zF/35IIatyyta5jw8G"],32]],[1,"9cYPe89alNLpO1Qn8AI3Y5",null,null,null,1,0],[1,-123.079,-580.56,0]],[6,"guaiA1a",33554432,1,[[5,-96,[0,"fdXo7ORJpDv6JVChYlXVuX"],[5,100.08000183105469,113.76000213623047],[0,0.5040967210222901,0.07770745417182541]],[12,"default","atk",0,-97,[0,"d8a1mv3UxMQI8rwba1ICfW"],33]],[1,"87tzkjpopJ6YTEDK3Fvt9k",null,null,null,1,0],[1,11.611,-580.56,0]],[6,"guaiA4e",33554432,1,[[5,-98,[0,"27Mc3b9O5A9b5AOEEyyaCO"],[5,162.3699951171875,188.55999755859375],[0,0.5011394050227984,0.04884387016013313]],[12,"default","atk",0,-99,[0,"89C5gFHAdBlJbIYn4ncYCm"],34]],[1,"ff9s+mSCdOhIPYSW36LMEs",null,null,null,1,0],[1,171.846,-589.848,0]],[7,"Label",512,33554432,9,[[2,-100,[0,"181opkbsFLlJNymR3M4uvu"],[5,100,40]],[10,"关闭页面",20,20,1,false,-101,[0,"81YMncu2NHsagDuwTq7/U6"],[4,4278190080]]],[1,"d3Bd/9nkpON4BJ8l9e8YpR",null,null,null,1,0]],[27,40,true,10,[0,"68tMuyxxpDNqEo3WNWD+qq"]],[17,0,13,[0,"070sxTOTBFA4TFU7sJF9ky"]],[17,0,15,[0,"1ccp5Dy3tCB7jzwEk4zsw/"]]],0,[0,10,1,0,0,1,0,0,1,0,11,27,0,0,1,0,-1,11,0,-2,12,0,-3,10,0,-4,2,0,-5,3,0,-6,4,0,-7,5,0,-8,6,0,-9,7,0,-10,8,0,-11,22,0,-12,23,0,-13,24,0,-14,25,0,-15,9,0,0,2,0,0,2,0,9,28,0,2,2,0,0,2,0,-1,13,0,-2,14,0,0,3,0,0,3,0,9,29,0,2,3,0,0,3,0,-1,15,0,-2,16,0,0,4,0,0,4,0,2,4,0,0,4,0,-1,17,0,0,5,0,0,5,0,2,5,0,0,5,0,-1,18,0,0,6,0,0,6,0,2,6,0,0,6,0,-1,19,0,0,7,0,0,7,0,2,7,0,0,7,0,-1,20,0,0,8,0,0,8,0,2,8,0,0,8,0,-1,21,0,0,9,0,0,9,0,2,9,0,0,9,0,-1,26,0,0,10,0,-2,27,0,0,10,0,0,10,0,0,11,0,0,11,0,0,11,0,0,12,0,0,12,0,0,13,0,-2,28,0,0,14,0,0,14,0,0,15,0,-2,29,0,0,16,0,0,16,0,0,17,0,0,17,0,0,18,0,0,18,0,0,19,0,0,19,0,0,20,0,0,20,0,0,21,0,0,21,0,0,22,0,0,22,0,0,23,0,0,23,0,0,24,0,0,24,0,0,25,0,0,25,0,0,26,0,0,26,0,12,1,101],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,29],[1,1,1,3,1,3,1,3,4,5,6,1,3,4,5,6,1,3,4,5,6,1,3,4,5,6,1,3,4,5,6,7,7,7,7,1,3,4,5,6,1,1],[11,12,3,3,3,3,0,0,0,1,2,0,0,0,1,2,0,0,0,1,2,0,0,0,1,2,0,0,0,1,2,13,14,15,16,0,0,0,1,2,4,4]]]] diff --git a/headless/static/remote/resources/import/11/11bdc4b0-64a8-4eb7-a2a7-9fb9e233e977.json b/headless/static/remote/resources/import/11/11bdc4b0-64a8-4eb7-a2a7-9fb9e233e977.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/resources/import/11/11bdc4b0-64a8-4eb7-a2a7-9fb9e233e977.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/resources/import/13/13ffba43-826c-4f33-8ac2-4b59811ce9b0.json b/headless/static/remote/resources/import/13/13ffba43-826c-4f33-8ac2-4b59811ce9b0.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/resources/import/13/13ffba43-826c-4f33-8ac2-4b59811ce9b0.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/resources/import/15/158e7e52-3220-4cd7-9694-713e0e6e8278.json b/headless/static/remote/resources/import/15/158e7e52-3220-4cd7-9694-713e0e6e8278.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/resources/import/15/158e7e52-3220-4cd7-9694-713e0e6e8278.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/resources/import/17/179a2053-b80c-4b5d-ab83-e75934fd66d2.json b/headless/static/remote/resources/import/17/179a2053-b80c-4b5d-ab83-e75934fd66d2.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/resources/import/17/179a2053-b80c-4b5d-ab83-e75934fd66d2.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/resources/import/1b/1bab3314-296c-4ade-91fa-a20dee0a3243.json b/headless/static/remote/resources/import/1b/1bab3314-296c-4ade-91fa-a20dee0a3243.json new file mode 100644 index 00000000..050435cd --- /dev/null +++ b/headless/static/remote/resources/import/1b/1bab3314-296c-4ade-91fa-a20dee0a3243.json @@ -0,0 +1 @@ +[1,0,0,[["cc.JsonAsset",["_name","json"],1]],[[0,0,1,3]],[[0,"tbgglobal",[{"id":70001,"args":"[10004,10001,10002]","tig":"新手引导选择宠物[妙蛙种子,小石头,疯狂石头]"}]]],0,0,[],[],[]] diff --git a/headless/static/remote/resources/import/1c/1c448338-21ce-44ac-90b9-bd0b911896bc.json b/headless/static/remote/resources/import/1c/1c448338-21ce-44ac-90b9-bd0b911896bc.json new file mode 100644 index 00000000..15a9988e --- /dev/null +++ b/headless/static/remote/resources/import/1c/1c448338-21ce-44ac-90b9-bd0b911896bc.json @@ -0,0 +1 @@ +[1,0,0,[["cc.JsonAsset",["_name","json"],1]],[[0,0,1,3]],[[0,"tbgroleskill",[{"id":40001,"skillName":"疯狂松鼠","skillController":"GSkillCrazySquirrel","skillText":"疯狂松鼠的技能 丢出巨大炸弹 轰炸全部玩家","skillArgs":["5","300","300"]},{"id":40002,"skillName":"妙蛙种子连击","skillController":"GSkillBulbasaurDoubleHit","skillText":"妙蛙种子攻击8次 触发一次射叶子技能","skillArgs":["8"]}]]],0,0,[],[],[]] diff --git a/headless/static/remote/resources/import/20/20835ba4-6145-4fbc-a58a-051ce700aa3e.json b/headless/static/remote/resources/import/20/20835ba4-6145-4fbc-a58a-051ce700aa3e.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/resources/import/20/20835ba4-6145-4fbc-a58a-051ce700aa3e.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/resources/import/22/2201bceb-a177-49c8-91e5-65399342de88.json b/headless/static/remote/resources/import/22/2201bceb-a177-49c8-91e5-65399342de88.json new file mode 100644 index 00000000..77287e82 --- /dev/null +++ b/headless/static/remote/resources/import/22/2201bceb-a177-49c8-91e5-65399342de88.json @@ -0,0 +1 @@ +[1,0,0,[["cc.TextAsset",["_name","text"],1]],[[0,0,1,3]],[[0,"331","1 播放动画-1- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-2- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-3- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-4- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-5- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-6- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-7- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-8- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-9- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-10- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-11- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-12- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-5- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 29 播放动画-6- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 29 播放动画-12- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGFSMAnimBase.ts:154 undefined 播放动画-11- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[6] onAttack 7\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 7\r\nGRoleDefault.ts:117 播放动画[12] onAttack 1\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 1\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGRoleDefault.ts:117 播放动画[11] onAttack 2\r\nGFSMAnimBase.ts:154 undefined 播放动画-1- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-2- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-3- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-7- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-8- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-9- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[11] onAttack 2\r\nGRoleDefault.ts:117 播放动画[6] onAttack 7\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 7\r\nGRoleDefault.ts:117 播放动画[12] onAttack 1\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 1\r\nGRoleDefault.ts:117 播放动画[7] onAttack 1\r\nGRoleDefault.ts:117 播放动画[8] onAttack 2\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGRoleDefault.ts:117 播放动画[1] onAttack 7\r\nGRoleDefault.ts:117 播放动画[2] onAttack 8\r\nGRoleDefault.ts:117 播放动画[3] onAttack 9\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGFSMAnimBase.ts:154 undefined 播放动画-4- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-10- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[7] onAttack 1\r\nGRoleDefault.ts:117 播放动画[8] onAttack 2\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGRoleDefault.ts:117 播放动画[6] onAttack 7\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 7\r\nGRoleDefault.ts:117 播放动画[12] onAttack 1\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 1\r\nGRoleDefault.ts:117 播放动画[11] onAttack 2\r\nGRoleDefault.ts:117 播放动画[1] onAttack 7\r\nGRoleDefault.ts:117 播放动画[2] onAttack 8\r\nGRoleDefault.ts:117 播放动画[3] onAttack 9\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGRoleDefault.ts:117 播放动画[11] onAttack 2\r\nGRoleDefault.ts:117 播放动画[4] onAttack 9\r\nGRoleDefault.ts:117 播放动画[10] onAttack 3\r\nGRoleDefault.ts:117 播放动画[7] onAttack 1\r\nGRoleDefault.ts:117 播放动画[8] onAttack 2\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGRoleDefault.ts:117 播放动画[1] onAttack 7\r\nGRoleDefault.ts:117 播放动画[2] onAttack 8\r\nGRoleDefault.ts:117 播放动画[3] onAttack 9\r\nGRoleDefault.ts:117 播放动画[7] onAttack 1\r\nGRoleDefault.ts:117 播放动画[8] onAttack 2\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGRoleDefault.ts:117 播放动画[4] onAttack 9\r\nGRoleDefault.ts:117 播放动画[10] onAttack 3\r\n2GRoleDefault.ts:117 播放动画[11] onAttack 2\r\nGRoleDefault.ts:117 播放动画[6] onAttack 7\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 7\r\nGRoleDefault.ts:117 播放动画[12] onAttack 1\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 1\r\nGFSMAnimBase.ts:154 undefined 播放动画-2- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:154 101 播放动画-8- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 101 播放动画-11- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 102 播放动画-7- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-1- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-6- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[3] onAttack 9\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGRoleDefault.ts:117 播放动画[4] onAttack 9\r\nGRoleDefault.ts:117 播放动画[10] onAttack 3\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGFSMAnimBase.ts:154 115 播放动画-1- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:154 115 播放动画-3- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-12- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[4] onAttack 9\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGFSMAnimBase.ts:154 undefined 播放动画-9- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-12- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-6- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-11- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGRoleDefault.ts:117 播放动画[12] onAttack 6\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 6\r\nGRoleDefault.ts:117 播放动画[6] onAttack 12\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 12\r\nGRoleDefault.ts:117 播放动画[11] onAttack 5\r\nGFSMAnimBase.ts:154 undefined 播放动画-8- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[11] onAttack 5\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[8] onAttack 5\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[8] onAttack 5\r\nGFSMAnimBase.ts:154 undefined 播放动画-5- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:154 168 播放动画-8- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[12] onAttack 6\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 6\r\nGRoleDefault.ts:117 播放动画[6] onAttack 12\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 12\r\nGFSMAnimBase.ts:154 undefined 播放动画-8- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-11- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[12] onAttack 6\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 6\r\nGRoleDefault.ts:117 播放动画[6] onAttack 12\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 12\r\n2GRoleDefault.ts:117 播放动画[11] onAttack 6\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[12] onAttack 6\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 6\r\nGRoleDefault.ts:117 播放动画[6] onAttack 12\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 12\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[12] onAttack 6\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 6\r\nGRoleDefault.ts:117 播放动画[6] onAttack 12\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 12\r\n2GRoleDefault.ts:117 播放动画[11] onAttack 6\r\nGFSMAnimBase.ts:154 221 播放动画-6- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGFSMAnimBase.ts:154 undefined 播放动画-4- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-10- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:154 226 播放动画-11- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 226 播放动画-12- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-12- {title: '等待', isLoop: true, animName: 'std', mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 292 播放动画-11- {title: '等待', isLoop: true, animName: 'std', mixs: Array(2), to: Array(3), …}"]],0,0,[],[],[]] diff --git a/headless/static/remote/resources/import/23/2357c44f-3cf0-47eb-8f7a-0f303eaefe08.json b/headless/static/remote/resources/import/23/2357c44f-3cf0-47eb-8f7a-0f303eaefe08.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/resources/import/23/2357c44f-3cf0-47eb-8f7a-0f303eaefe08.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/resources/import/24/24a704da-2867-446d-8d1a-5e920c75e09d.json b/headless/static/remote/resources/import/24/24a704da-2867-446d-8d1a-5e920c75e09d.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/resources/import/24/24a704da-2867-446d-8d1a-5e920c75e09d.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/resources/import/30/30250fcc-aac2-4473-94bf-7688cf16a604.json b/headless/static/remote/resources/import/30/30250fcc-aac2-4473-94bf-7688cf16a604.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/resources/import/30/30250fcc-aac2-4473-94bf-7688cf16a604.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/resources/import/35/3573cc27-514e-49fc-91ef-510f3fca6aab.json b/headless/static/remote/resources/import/35/3573cc27-514e-49fc-91ef-510f3fca6aab.json new file mode 100644 index 00000000..0e18783c --- /dev/null +++ b/headless/static/remote/resources/import/35/3573cc27-514e-49fc-91ef-510f3fca6aab.json @@ -0,0 +1 @@ +[1,0,0,[["cc.TextAsset",["_name","text"],1]],[[0,0,1,3]],[[0,"332","1 播放动画-1- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-2- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-3- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-4- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-5- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-6- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-7- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-8- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-9- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-10- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-11- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 1 播放动画-12- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-5- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 29 播放动画-6- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 29 播放动画-12- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGFSMAnimBase.ts:154 undefined 播放动画-11- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[6] onAttack 7\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 7\r\nGRoleDefault.ts:117 播放动画[12] onAttack 1\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 1\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGRoleDefault.ts:117 播放动画[11] onAttack 2\r\nGFSMAnimBase.ts:154 undefined 播放动画-1- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-2- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-3- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-7- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-8- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-9- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[11] onAttack 2\r\nGRoleDefault.ts:117 播放动画[6] onAttack 7\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 7\r\nGRoleDefault.ts:117 播放动画[12] onAttack 1\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 1\r\nGRoleDefault.ts:117 播放动画[7] onAttack 1\r\nGRoleDefault.ts:117 播放动画[8] onAttack 2\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGRoleDefault.ts:117 播放动画[1] onAttack 7\r\nGRoleDefault.ts:117 播放动画[2] onAttack 8\r\nGRoleDefault.ts:117 播放动画[3] onAttack 9\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGFSMAnimBase.ts:154 undefined 播放动画-4- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-10- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[7] onAttack 1\r\nGRoleDefault.ts:117 播放动画[8] onAttack 2\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGRoleDefault.ts:117 播放动画[6] onAttack 7\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 7\r\nGRoleDefault.ts:117 播放动画[12] onAttack 1\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 1\r\nGRoleDefault.ts:117 播放动画[11] onAttack 2\r\nGRoleDefault.ts:117 播放动画[1] onAttack 7\r\nGRoleDefault.ts:117 播放动画[2] onAttack 8\r\nGRoleDefault.ts:117 播放动画[3] onAttack 9\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGRoleDefault.ts:117 播放动画[11] onAttack 2\r\nGRoleDefault.ts:117 播放动画[4] onAttack 9\r\nGRoleDefault.ts:117 播放动画[10] onAttack 3\r\nGRoleDefault.ts:117 播放动画[7] onAttack 1\r\nGRoleDefault.ts:117 播放动画[8] onAttack 2\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGRoleDefault.ts:117 播放动画[1] onAttack 7\r\nGRoleDefault.ts:117 播放动画[2] onAttack 8\r\nGRoleDefault.ts:117 播放动画[3] onAttack 9\r\nGRoleDefault.ts:117 播放动画[7] onAttack 1\r\nGRoleDefault.ts:117 播放动画[8] onAttack 2\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGRoleDefault.ts:117 播放动画[4] onAttack 9\r\nGRoleDefault.ts:117 播放动画[10] onAttack 3\r\n2GRoleDefault.ts:117 播放动画[11] onAttack 2\r\nGRoleDefault.ts:117 播放动画[6] onAttack 7\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 7\r\nGRoleDefault.ts:117 播放动画[12] onAttack 1\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 1\r\nGFSMAnimBase.ts:154 undefined 播放动画-2- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:154 101 播放动画-8- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 101 播放动画-11- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 102 播放动画-7- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-1- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-6- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[3] onAttack 9\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGRoleDefault.ts:117 播放动画[4] onAttack 9\r\nGRoleDefault.ts:117 播放动画[10] onAttack 3\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGFSMAnimBase.ts:154 115 播放动画-1- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:154 115 播放动画-3- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-12- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[4] onAttack 9\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGFSMAnimBase.ts:154 undefined 播放动画-9- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-12- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-6- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-11- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGRoleDefault.ts:117 播放动画[12] onAttack 6\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 6\r\nGRoleDefault.ts:117 播放动画[6] onAttack 12\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 12\r\nGRoleDefault.ts:117 播放动画[11] onAttack 5\r\nGFSMAnimBase.ts:154 undefined 播放动画-8- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[11] onAttack 5\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[8] onAttack 5\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[8] onAttack 5\r\nGFSMAnimBase.ts:154 undefined 播放动画-5- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:154 168 播放动画-8- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[12] onAttack 6\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 6\r\nGRoleDefault.ts:117 播放动画[6] onAttack 12\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 12\r\nGFSMAnimBase.ts:154 undefined 播放动画-8- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-11- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[12] onAttack 6\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 6\r\nGRoleDefault.ts:117 播放动画[6] onAttack 12\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 12\r\n2GRoleDefault.ts:117 播放动画[11] onAttack 6\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[12] onAttack 6\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 6\r\nGRoleDefault.ts:117 播放动画[6] onAttack 12\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 12\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[12] onAttack 6\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 6\r\nGRoleDefault.ts:117 播放动画[6] onAttack 12\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 12\r\n2GRoleDefault.ts:117 播放动画[11] onAttack 6\r\nGFSMAnimBase.ts:154 221 播放动画-6- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGFSMAnimBase.ts:154 undefined 播放动画-4- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-10- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:154 226 播放动画-11- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 226 播放动画-12- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 undefined 播放动画-12- {title: '等待', isLoop: true, animName: 'std', mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:154 292 播放动画-11- {title: '等待', isLoop: true, animName: 'std', mixs: Array(2), to: Array(3), …}"]],0,0,[],[],[]] diff --git a/headless/static/remote/resources/import/54/544e49d6-3f05-4fa8-9a9e-091f98fc2ce8.json b/headless/static/remote/resources/import/54/544e49d6-3f05-4fa8-9a9e-091f98fc2ce8.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/resources/import/54/544e49d6-3f05-4fa8-9a9e-091f98fc2ce8.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/resources/import/58/580aaa0b-8b26-4bc6-9abe-6984e9980679.json b/headless/static/remote/resources/import/58/580aaa0b-8b26-4bc6-9abe-6984e9980679.json new file mode 100644 index 00000000..ecc9e6d8 --- /dev/null +++ b/headless/static/remote/resources/import/58/580aaa0b-8b26-4bc6-9abe-6984e9980679.json @@ -0,0 +1 @@ +[1,0,0,[["cc.JsonAsset",["_name","json"],1]],[[0,0,1,3]],[[0,"tbgrolecstar",[{"grade":1,"merge":1},{"grade":2,"merge":2},{"grade":3,"merge":4},{"grade":4,"merge":8},{"grade":5,"merge":16},{"grade":6,"merge":32},{"grade":7,"merge":64},{"grade":8,"merge":128},{"grade":9,"merge":256},{"grade":10,"merge":512}]]],0,0,[],[],[]] diff --git a/headless/static/remote/resources/import/74/745b8038-b832-48f8-9873-1baa6de58ad7.json b/headless/static/remote/resources/import/74/745b8038-b832-48f8-9873-1baa6de58ad7.json new file mode 100644 index 00000000..d683926e --- /dev/null +++ b/headless/static/remote/resources/import/74/745b8038-b832-48f8-9873-1baa6de58ad7.json @@ -0,0 +1 @@ +[1,0,["node","root","_cameraComponent","data"],[["cc.Node",["_name","_layer","_components","_prefab","_children","_lpos","_parent"],1,9,4,2,5,1],["cc.Widget",["_alignFlags","_originalWidth","_originalHeight","_top","_bottom","node","__prefab"],-2,1,4],["cc.Prefab",["_name"],2],["cc.Node",["_name","_parent","_components","_prefab","_lpos"],2,1,2,4,5],["cc.Camera",["_projection","_priority","_orthoHeight","_near","_clearFlags","_visibility","node","__prefab","_color"],-3,1,4,5],["cc.CompPrefabInfo",["fileId"],2],["cc.PrefabInfo",["fileId","instance","targetOverrides","nestedPrefabInstanceRoots","root","asset"],-1,1,1],["cc.UITransform",["node","__prefab","_contentSize"],3,1,4,5],["cc.Canvas",["node","__prefab","_cameraComponent"],3,1,4,1],["34651Y5HSBHQZzfE+T94QNV",["node","__prefab","root"],3,1,4,1]],[[5,0,2],[6,0,1,2,3,4,5,5],[7,0,1,2,1],[2,0,2],[0,0,1,4,2,3,5,3],[0,0,1,6,2,3,3],[3,0,1,2,3,4,2],[4,0,1,2,3,4,5,6,7,8,7],[1,0,1,2,5,6,4],[1,0,3,4,5,6,4],[8,0,1,2,1],[9,0,1,2,1]],[[3,"UICanvas"],[4,"UICanvas",33554432,[-8,-9],[[2,-2,[0,"93sVvNWypDTYgjYIWrwrpV"],[5,720,1280]],[10,-4,[0,"5eLsefP2VN7KlZbdiPfP2n"],-3],[9,45,5.684341886080802e-14,5.684341886080802e-14,-5,[0,"23+bwBXypM0Y4BnlzcO0eN"]],[11,-7,[0,"a5cWASUqZFWbJeQJ2MLLd6"],-6]],[1,"beI88Z2HpFELqR4T5EMHpg",null,null,null,-1,0],[1,360,640,0]],[5,"Root",33554432,1,[[2,-10,[0,"75BOpt00JFQa2ABpf8j5sd"],[5,720,1280]],[8,45,100,100,-11,[0,"deZ5DeQmRGsJ4z2/TXkcsg"]]],[1,"7bKb/Ey11EFrbcuoMJ49HW",null,null,null,1,0]],[6,"Camera",1,[-12],[1,"f2Y13bd3pHsaAOEovQY6+s",null,null,null,1,0],[1,0,0,1000]],[7,0,1,640,0,6,33554432,3,[0,"06QkGzCvNBebVSz/E/4ga3"],[4,4278190080]]],0,[0,1,1,0,0,1,0,2,4,0,0,1,0,0,1,0,1,2,0,0,1,0,-1,3,0,-2,2,0,0,2,0,0,2,0,-1,4,0,3,1,12],[],[],[]] diff --git a/headless/static/remote/resources/import/76/76aadab4-10a3-4c8e-b4b9-dce7807050fc.json b/headless/static/remote/resources/import/76/76aadab4-10a3-4c8e-b4b9-dce7807050fc.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/resources/import/76/76aadab4-10a3-4c8e-b4b9-dce7807050fc.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/resources/import/7d/7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca.json b/headless/static/remote/resources/import/7d/7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/resources/import/7d/7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/resources/import/87/8783acf4-8ffd-44d0-ac6c-61e76b1867ee.json b/headless/static/remote/resources/import/87/8783acf4-8ffd-44d0-ac6c-61e76b1867ee.json new file mode 100644 index 00000000..e36ac7a9 --- /dev/null +++ b/headless/static/remote/resources/import/87/8783acf4-8ffd-44d0-ac6c-61e76b1867ee.json @@ -0,0 +1 @@ +[1,0,0,[["cc.JsonAsset",["_name","json"],1]],[[0,0,1,3]],[[0,"tbgrole",[{"id":10001,"roleName":"小石头","spine":"spine/召唤与合成819个Spine/小石头/guaiA1a/spine/guaiA1a","roleAttackRange":100,"roleSkillIds":[]},{"id":10002,"roleName":"坚强小石","spine":"spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/spine/guaiA1a","roleAttackRange":100,"roleSkillIds":[]},{"id":10003,"roleName":"疯狂松鼠","spine":"spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/spine/guaiA4e","roleAttackRange":500,"roleSkillIds":[40001]},{"id":10004,"roleName":"妙蛙种子","spine":"spine/神奇宝贝/001妙蛙种子/spine/001妙蛙种子","roleAttackRange":350,"roleSkillIds":[40002]}]]],0,0,[],[],[]] diff --git a/headless/static/remote/resources/import/8c/8cd8e7fb-f35b-417f-b147-ecc7ef089706.json b/headless/static/remote/resources/import/8c/8cd8e7fb-f35b-417f-b147-ecc7ef089706.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/resources/import/8c/8cd8e7fb-f35b-417f-b147-ecc7ef089706.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/resources/import/95/951249e0-9f16-456d-8b85-a6ca954da16b.json b/headless/static/remote/resources/import/95/951249e0-9f16-456d-8b85-a6ca954da16b.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/resources/import/95/951249e0-9f16-456d-8b85-a6ca954da16b.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/resources/import/95/95a40bf9-994f-4f8c-bd5e-f8bc347becf3.json b/headless/static/remote/resources/import/95/95a40bf9-994f-4f8c-bd5e-f8bc347becf3.json new file mode 100644 index 00000000..d8607919 --- /dev/null +++ b/headless/static/remote/resources/import/95/95a40bf9-994f-4f8c-bd5e-f8bc347becf3.json @@ -0,0 +1 @@ +[1,0,0,[["cc.JsonAsset",["_name","json"],1]],[[0,0,1,3]],[[0,"tbgrolebattleres",[{"id":30001,"resName":"爆炸","resType":"Spine","resSrc":"effect/爆炸效果/shouji_01/spine/shouji_01"},{"id":30002,"resName":"炸弹","resType":"Sprite","resSrc":"bullets/疯狂松鼠/attack/spriteFrame"},{"id":30003,"resName":"疯狂松鼠的技能开始 松鼠向天上丢出炸弹","resType":"Spine","resSrc":"spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/spine/guaiA4es"},{"id":30004,"resName":"火球","resType":"Spine","resSrc":"effect/子弹效果/base_fly_fire/spine/buff_fire"},{"id":30005,"resName":"火球爆炸","resType":"Spine","resSrc":"effect/爆炸效果/zhouyu_skill2_2/spine/zhouyu_skill2_2"}]]],0,0,[],[],[]] diff --git a/headless/static/remote/resources/import/97/97d4ae8c-12df-45cd-8629-87e18f6e8ddf.json b/headless/static/remote/resources/import/97/97d4ae8c-12df-45cd-8629-87e18f6e8ddf.json new file mode 100644 index 00000000..cfc3f53d --- /dev/null +++ b/headless/static/remote/resources/import/97/97d4ae8c-12df-45cd-8629-87e18f6e8ddf.json @@ -0,0 +1 @@ +[1,0,0,[["cc.JsonAsset",["_name","json"],1]],[[0,0,1,3]],[[0,"tbgresource",[{"id":90001,"name":"金币","tig":"金币 (目前叫做金币 名称还没有定) 游戏的基础资源 用于升级宠物"}]]],0,0,[],[],[]] diff --git a/headless/static/remote/resources/import/98/987c7c4a-057a-454a-85f4-772f5c3a6935.json b/headless/static/remote/resources/import/98/987c7c4a-057a-454a-85f4-772f5c3a6935.json new file mode 100644 index 00000000..bac73608 --- /dev/null +++ b/headless/static/remote/resources/import/98/987c7c4a-057a-454a-85f4-772f5c3a6935.json @@ -0,0 +1 @@ +[1,0,0,[["cc.TextAsset",["_name","text"],1]],[[0,0,1,3]],[[0,"33","1 播放动画-1- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-2- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-3- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-4- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-5- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-6- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-7- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-8- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-9- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-10- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-11- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-12- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-5- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 29 播放动画-6- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 29 播放动画-12- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGFSMAnimBase.ts:125 undefined 播放动画-11- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[6] onAttack 7\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 7\r\nGRoleDefault.ts:117 播放动画[12] onAttack 1\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 1\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGRoleDefault.ts:117 播放动画[11] onAttack 2\r\nGFSMAnimBase.ts:125 undefined 播放动画-1- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-2- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-3- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-7- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-8- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-9- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[11] onAttack 2\r\nGRoleDefault.ts:117 播放动画[6] onAttack 7\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 7\r\nGRoleDefault.ts:117 播放动画[12] onAttack 1\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 1\r\nGRoleDefault.ts:117 播放动画[7] onAttack 1\r\nGRoleDefault.ts:117 播放动画[8] onAttack 2\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGRoleDefault.ts:117 播放动画[1] onAttack 7\r\nGRoleDefault.ts:117 播放动画[2] onAttack 8\r\nGRoleDefault.ts:117 播放动画[3] onAttack 9\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGFSMAnimBase.ts:125 undefined 播放动画-4- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-10- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[7] onAttack 1\r\nGRoleDefault.ts:117 播放动画[8] onAttack 2\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGRoleDefault.ts:117 播放动画[6] onAttack 7\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 7\r\nGRoleDefault.ts:117 播放动画[12] onAttack 1\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 1\r\nGRoleDefault.ts:117 播放动画[11] onAttack 2\r\nGRoleDefault.ts:117 播放动画[1] onAttack 7\r\nGRoleDefault.ts:117 播放动画[2] onAttack 8\r\nGRoleDefault.ts:117 播放动画[3] onAttack 9\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGRoleDefault.ts:117 播放动画[11] onAttack 2\r\nGRoleDefault.ts:117 播放动画[4] onAttack 9\r\nGRoleDefault.ts:117 播放动画[10] onAttack 3\r\nGRoleDefault.ts:117 播放动画[7] onAttack 1\r\nGRoleDefault.ts:117 播放动画[8] onAttack 2\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGRoleDefault.ts:117 播放动画[1] onAttack 7\r\nGRoleDefault.ts:117 播放动画[2] onAttack 8\r\nGRoleDefault.ts:117 播放动画[3] onAttack 9\r\nGRoleDefault.ts:117 播放动画[7] onAttack 1\r\nGRoleDefault.ts:117 播放动画[8] onAttack 2\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGRoleDefault.ts:117 播放动画[4] onAttack 9\r\nGRoleDefault.ts:117 播放动画[10] onAttack 3\r\n2GRoleDefault.ts:117 播放动画[11] onAttack 2\r\nGRoleDefault.ts:117 播放动画[6] onAttack 7\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 7\r\nGRoleDefault.ts:117 播放动画[12] onAttack 1\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 1\r\nGFSMAnimBase.ts:125 undefined 播放动画-2- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:125 101 播放动画-8- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 101 播放动画-11- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 102 播放动画-7- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-1- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-6- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[3] onAttack 9\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGRoleDefault.ts:117 播放动画[4] onAttack 9\r\nGRoleDefault.ts:117 播放动画[10] onAttack 3\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGFSMAnimBase.ts:125 115 播放动画-1- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:125 115 播放动画-3- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-12- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[4] onAttack 9\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGFSMAnimBase.ts:125 undefined 播放动画-9- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-12- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-6- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-11- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGRoleDefault.ts:117 播放动画[12] onAttack 6\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 6\r\nGRoleDefault.ts:117 播放动画[6] onAttack 12\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 12\r\nGRoleDefault.ts:117 播放动画[11] onAttack 5\r\nGFSMAnimBase.ts:125 undefined 播放动画-8- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[11] onAttack 5\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[8] onAttack 5\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[8] onAttack 5\r\nGFSMAnimBase.ts:125 undefined 播放动画-5- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:125 168 播放动画-8- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[12] onAttack 6\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 6\r\nGRoleDefault.ts:117 播放动画[6] onAttack 12\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 12\r\nGFSMAnimBase.ts:125 undefined 播放动画-8- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-11- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[12] onAttack 6\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 6\r\nGRoleDefault.ts:117 播放动画[6] onAttack 12\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 12\r\n2GRoleDefault.ts:117 播放动画[11] onAttack 6\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[12] onAttack 6\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 6\r\nGRoleDefault.ts:117 播放动画[6] onAttack 12\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 12\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[12] onAttack 6\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 6\r\nGRoleDefault.ts:117 播放动画[6] onAttack 12\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 12\r\n2GRoleDefault.ts:117 播放动画[11] onAttack 6\r\nGFSMAnimBase.ts:125 221 播放动画-6- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGFSMAnimBase.ts:125 undefined 播放动画-4- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-10- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:125 226 播放动画-11- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 226 播放动画-12- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-12- {title: '等待', isLoop: true, animName: 'std', mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 292 播放动画-11- {title: '等待', isLoop: true, animName: 'std', mixs: Array(2), to: Array(3), …}"]],0,0,[],[],[]] diff --git a/headless/static/remote/resources/import/9f/9fd900dd-221b-4f89-8f2c-fba34243c835.json b/headless/static/remote/resources/import/9f/9fd900dd-221b-4f89-8f2c-fba34243c835.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/resources/import/9f/9fd900dd-221b-4f89-8f2c-fba34243c835.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/resources/import/aa/aa8a78cc-e890-455c-8ca8-f0ab5fece55f.json b/headless/static/remote/resources/import/aa/aa8a78cc-e890-455c-8ca8-f0ab5fece55f.json new file mode 100644 index 00000000..c749af5f --- /dev/null +++ b/headless/static/remote/resources/import/aa/aa8a78cc-e890-455c-8ca8-f0ab5fece55f.json @@ -0,0 +1 @@ +[1,0,0,[["cc.TextAsset",["_name","text"],1]],[[0,0,1,3]],[[0,"12","1 播放动画-1- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-2- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-3- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-4- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-5- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-6- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-7- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-8- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-9- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-10- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-11- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 1 播放动画-12- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-5- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 29 播放动画-6- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 29 播放动画-12- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGFSMAnimBase.ts:125 undefined 播放动画-11- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[6] onAttack 7\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 7\r\nGRoleDefault.ts:117 播放动画[12] onAttack 1\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 1\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGRoleDefault.ts:117 播放动画[11] onAttack 2\r\nGFSMAnimBase.ts:125 undefined 播放动画-1- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-2- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-3- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-7- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-8- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-9- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[11] onAttack 2\r\nGRoleDefault.ts:117 播放动画[6] onAttack 7\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 7\r\nGRoleDefault.ts:117 播放动画[12] onAttack 1\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 1\r\nGRoleDefault.ts:117 播放动画[7] onAttack 1\r\nGRoleDefault.ts:117 播放动画[8] onAttack 2\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGRoleDefault.ts:117 播放动画[1] onAttack 7\r\nGRoleDefault.ts:117 播放动画[2] onAttack 8\r\nGRoleDefault.ts:117 播放动画[3] onAttack 9\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGFSMAnimBase.ts:125 undefined 播放动画-4- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-10- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[7] onAttack 1\r\nGRoleDefault.ts:117 播放动画[8] onAttack 2\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGRoleDefault.ts:117 播放动画[6] onAttack 7\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 7\r\nGRoleDefault.ts:117 播放动画[12] onAttack 1\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 1\r\nGRoleDefault.ts:117 播放动画[11] onAttack 2\r\nGRoleDefault.ts:117 播放动画[1] onAttack 7\r\nGRoleDefault.ts:117 播放动画[2] onAttack 8\r\nGRoleDefault.ts:117 播放动画[3] onAttack 9\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGRoleDefault.ts:117 播放动画[11] onAttack 2\r\nGRoleDefault.ts:117 播放动画[4] onAttack 9\r\nGRoleDefault.ts:117 播放动画[10] onAttack 3\r\nGRoleDefault.ts:117 播放动画[7] onAttack 1\r\nGRoleDefault.ts:117 播放动画[8] onAttack 2\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGRoleDefault.ts:117 播放动画[1] onAttack 7\r\nGRoleDefault.ts:117 播放动画[2] onAttack 8\r\nGRoleDefault.ts:117 播放动画[3] onAttack 9\r\nGRoleDefault.ts:117 播放动画[7] onAttack 1\r\nGRoleDefault.ts:117 播放动画[8] onAttack 2\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGRoleDefault.ts:117 播放动画[4] onAttack 9\r\nGRoleDefault.ts:117 播放动画[10] onAttack 3\r\n2GRoleDefault.ts:117 播放动画[11] onAttack 2\r\nGRoleDefault.ts:117 播放动画[6] onAttack 7\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 7\r\nGRoleDefault.ts:117 播放动画[12] onAttack 1\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 1\r\nGFSMAnimBase.ts:125 undefined 播放动画-2- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:125 101 播放动画-8- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 101 播放动画-11- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 102 播放动画-7- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-1- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-6- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[3] onAttack 9\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGRoleDefault.ts:117 播放动画[4] onAttack 9\r\nGRoleDefault.ts:117 播放动画[10] onAttack 3\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGRoleDefault.ts:117 播放动画[9] onAttack 3\r\nGFSMAnimBase.ts:125 115 播放动画-3- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGRoleDefault.ts:117 播放动画[12] onAttack 1\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 1\r\nGFSMAnimBase.ts:125 undefined 播放动画-1- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:125 119 播放动画-12- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[4] onAttack 9\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGFSMAnimBase.ts:125 undefined 播放动画-9- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-6- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-12- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-11- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[5] onAttack 8\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 5 8\r\nGRoleDefault.ts:117 播放动画[6] onAttack 12\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 12\r\nGRoleDefault.ts:117 播放动画[12] onAttack 6\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 6\r\nGRoleDefault.ts:117 播放动画[11] onAttack 5\r\nGFSMAnimBase.ts:125 undefined 播放动画-8- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[11] onAttack 5\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[8] onAttack 5\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[8] onAttack 5\r\nGFSMAnimBase.ts:125 undefined 播放动画-5- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:125 168 播放动画-8- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[6] onAttack 12\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 12\r\nGRoleDefault.ts:117 播放动画[12] onAttack 6\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 6\r\nGFSMAnimBase.ts:125 undefined 播放动画-8- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-11- {title: '攻击', animName: 'atk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[8] onAttack 6\r\nGRoleDefault.ts:117 播放动画[6] onAttack 12\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 12\r\nGRoleDefault.ts:117 播放动画[12] onAttack 6\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 6\r\n2GRoleDefault.ts:117 播放动画[11] onAttack 6\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[8] onAttack 6\r\nGRoleDefault.ts:117 播放动画[6] onAttack 12\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 6 12\r\nGRoleDefault.ts:117 播放动画[12] onAttack 6\r\nGAttackParabolicBangRemote.ts:43 播放动画[GAttackParabolicRemote] 12 6\r\nGRoleDefault.ts:117 播放动画[8] onAttack 6\r\nGFSMAnimBase.ts:125 undefined 播放动画-6- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-8- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGRoleDefault.ts:117 播放动画[4] onAttack 10\r\nGRoleDefault.ts:117 播放动画[10] onAttack 4\r\nGRoleDefault.ts:117 播放动画[11] onAttack 4\r\nGFSMAnimBase.ts:125 216 播放动画-4- {title: '死亡', animName: 'jifei', isLoop: true, mixs: Array(2), ifTo: Array(0), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-10- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-11- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-12- {title: '移动', animName: 'walk', isLoop: true, mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-12- {title: '等待', isLoop: true, animName: 'std', mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-10- {title: '等待', isLoop: true, animName: 'std', mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-11- {title: '等待', isLoop: true, animName: 'std', mixs: Array(2), to: Array(3), …}\r\nGFSMAnimBase.ts:125 undefined 播放动画-8- {title: '等待', isLoop: true, animName: 'std', mixs: Array(2), to: Array(3), …}"]],0,0,[],[],[]] diff --git a/headless/static/remote/resources/import/ab/ab426a3a-eda6-4ddb-a87f-9eff7359e351.json b/headless/static/remote/resources/import/ab/ab426a3a-eda6-4ddb-a87f-9eff7359e351.json new file mode 100644 index 00000000..dd46de93 --- /dev/null +++ b/headless/static/remote/resources/import/ab/ab426a3a-eda6-4ddb-a87f-9eff7359e351.json @@ -0,0 +1 @@ +[1,["20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941","bd1bcaba-bd7d-4a71-b143-997c882383e4@f9941","544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941","951249e0-9f16-456d-8b85-a6ca954da16b@f9941","7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941"],["node","_spriteFrame","_normalSprite","_hoverSprite","_pressedSprite","_disabledSprite","_backgroundImage","_target","root","password","account","data"],[["cc.Node",["_name","_layer","_objFlags","_components","_prefab","_children","_parent","_lpos"],0,9,4,2,1,5],["cc.Node",["_name","_layer","_active","_parent","_components","_prefab","_lpos","_children"],0,1,12,4,5,2],["cc.Label",["_string","_actualFontSize","_fontSize","_overflow","_enableWrapText","_horizontalAlign","_lineHeight","node","__prefab","_color"],-4,1,4,5],["cc.Sprite",["_sizeMode","_type","_enabled","node","__prefab","_spriteFrame"],0,1,4,6],["cc.UITransform",["node","__prefab","_contentSize","_anchorPoint"],3,1,4,5,5],["cc.Prefab",["_name"],2],["cc.CompPrefabInfo",["fileId"],2],["cc.PrefabInfo",["fileId","instance","targetOverrides","nestedPrefabInstanceRoots","root","asset"],-1,1,1],["cc.EditBox",["_inputMode","_maxLength","node","__prefab","_textLabel","_placeholderLabel"],1,1,4,1,1],["cc.LabelOutline",["node","__prefab"],3,1,4],["cc.Button",["_transition","node","__prefab","clickEvents","_normalColor","_target","_normalSprite","_hoverSprite","_pressedSprite","_disabledSprite"],2,1,4,9,5,1,6,6,6,6],["cc.ClickEvent",["_componentId","handler","target"],1,1],["cc.Widget",["_alignFlags","_originalWidth","_originalHeight","node","__prefab"],0,1,4],["d36bcqouzBBm74l7Z8QrvOH",["mask","node","__prefab","account","password"],2,1,4,1,1]],[[6,0,2],[7,0,1,2,3,4,5,5],[4,0,1,2,1],[4,0,1,2,3,1],[3,1,0,3,4,5,3],[0,0,1,6,5,3,4,7,3],[0,0,2,1,6,3,4,4],[1,0,1,3,7,4,5,6,3],[1,0,2,1,3,4,5,6,4],[1,0,1,3,4,5,6,3],[2,0,5,1,2,3,4,7,8,7],[2,0,5,1,2,6,3,4,7,8,9,8],[2,0,1,2,3,4,7,8,6],[8,0,1,2,3,4,5,3],[9,0,1,1],[10,0,1,2,3,4,5,6,7,8,9,2],[11,0,1,2,3],[5,0,2],[0,0,1,5,3,4,3],[0,0,1,6,5,3,4,3],[3,2,1,0,3,4,5,4],[3,0,3,4,5,2],[12,0,1,2,3,4,4],[13,0,1,2,3,4,2]],[[17,"LoginView"],[18,"LoginView",33554432,[-7],[[2,-2,[0,"1dgJxmIH5HIpXD6y0/xMwI"],[5,720,1280]],[22,45,100,100,-3,[0,"582zBz6m5DKqmkTkiS/LE0"]],[23,true,-6,[0,"13dJCa1M9D573/pt6oSBxt"],-5,-4]],[1,"08xLpDDa9NlK3pgR7XiOqb",null,null,null,-1,0]],[19,"content",33554432,1,[-10,-11,-12,-13],[[2,-8,[0,"ecidKUxkNEfqK97cDYGil+"],[5,500,400]],[21,0,-9,[0,"2aCxNjeeBBeK2AfMf3007n"],12]],[1,"4c3ek41YFH37tQ9DpgRw3G",null,null,null,1,0]],[7,"EditBox",33554432,2,[-17,-18],[[[2,-14,[0,"ec2/RLFE5NGZ7IwBtOAdN/"],[5,300,50]],[4,1,0,-15,[0,"0e0wCDWfVEkrLF33AibIz/"],0],-16],4,4,1],[1,"df1bRQNAFFkbI3afR9docZ",null,null,null,1,0],[1,0,91.91999999999996,0]],[7,"EditBox-001",33554432,2,[-22,-23],[[[2,-19,[0,"cc3HwBUTBBDb1jth82EUjL"],[5,300,50]],[4,1,0,-20,[0,"c1j4W0lPBNe4qXAvZSr+iN"],1],-21],4,4,1],[1,"7fflqnhhpPYL1jMXmm/GdF",null,null,null,1,0],[1,0,23.876,0]],[5,"Button",33554432,2,[-28],[[2,-24,[0,"22sWDaOZNGC5L77pK46M5k"],[5,180,50]],[20,false,1,0,-25,[0,"74cG5mZuBKcqi8//yP4rv9"],2],[15,3,-27,[0,"76DYADeGBDKKxK1ifS8MtV"],[[16,"d36bcqouzBBm74l7Z8QrvOH","onClickRegister",1]],[4,4292269782],-26,3,4,5,6]],[1,"42FCw3N7ZF85hyK997/2t4",null,null,null,1,0],[1,0,-149.159,0]],[5,"Button-001",33554432,2,[-33],[[2,-29,[0,"6eHCqTVSRDK47/TAmxzC6a"],[5,180,70]],[4,1,0,-30,[0,"d2kO+cojNMbLCw4Cz46F0n"],7],[15,3,-32,[0,"9dDzwhfvlO4oSAx9h0kBmH"],[[16,"d36bcqouzBBm74l7Z8QrvOH","onClickLogin",1]],[4,4292269782],-31,8,9,10,11]],[1,"1fzFs/Iz1NCoHvBiwchbW4",null,null,null,1,0],[1,0,-80.402,0]],[6,"Label",512,33554432,5,[[2,-34,[0,"9ct7uviLtJeL62ijNjnJlu"],[5,180,40]],[12,"快速注册",24,24,1,false,-35,[0,"75QENn+WVJrqFnCGU/30Vj"]],[14,-36,[0,"fc2TsNn/tHD6Z55jUfPXvv"]]],[1,"a3ArWYqQRMs4KUvbZKwi+C",null,null,null,1,0]],[6,"Label",512,33554432,6,[[2,-37,[0,"2fOoe6fsxBjIfDm7DTclle"],[5,100,40]],[12,"登录",36,36,1,false,-38,[0,"1eNq0veRlD6KELBvBEtveJ"]],[14,-39,[0,"cfjoMY3A1O+L5DEQRrMvbz"]]],[1,"begPCPI1BC1Y0dZT83rSRQ",null,null,null,1,0]],[8,"TEXT_LABEL",false,33554432,3,[[[3,-40,[0,"0cu+InkgVC47dVQqZq/RQW"],[5,298,50],[0,0,1]],-41],4,1],[1,"88wwMIvQFPh5jxwiiNtJxP",null,null,null,1,0],[1,-148,25,0]],[9,"PLACEHOLDER_LABEL",33554432,3,[[[3,-42,[0,"b3ze4x4IZASqOa/dC7ZDjg"],[5,298,50],[0,0,1]],-43],4,1],[1,"f3kd/9W7ZDAaQqcAR9n+Pg",null,null,null,1,0],[1,-148,25,0]],[8,"TEXT_LABEL",false,33554432,4,[[[3,-44,[0,"b1VEmX9tdEULVtzOhglpC2"],[5,298,50],[0,0,1]],-45],4,1],[1,"6bTi4gmotF5ZfyZuahfNqx",null,null,null,1,0],[1,-148,25,0]],[9,"PLACEHOLDER_LABEL",33554432,4,[[[3,-46,[0,"a1C4yti6lAlqrxc3gF0uQ8"],[5,298,50],[0,0,1]],-47],4,1],[1,"efOQ4wch5Kfod4yyaFv4p8",null,null,null,1,0],[1,-148,25,0]],[10,"",0,40,26,1,false,9,[0,"c1jGu0OulF8pfQYXbi+FsV"]],[11,"输入账号",0,26,26,50,1,false,10,[0,"54cUDIomFIIafV8s99QuRg"],[4,4290493371]],[13,6,8,3,[0,"d9MYMEhd9C9oqqInVc2l7m"],13,14],[10,"",0,40,26,1,false,11,[0,"e2qzi8pI5PWJXIeHRslkyS"]],[11,"输入密码",0,26,26,50,1,false,12,[0,"fdOKvQW7BBFo0ddCW8u263"],[4,4290493371]],[13,6,8,4,[0,"89oRwWEt1A6IDzFea5l8JI"],16,17]],0,[0,8,1,0,0,1,0,0,1,0,9,18,0,10,15,0,0,1,0,-1,2,0,0,2,0,0,2,0,-1,3,0,-2,4,0,-3,5,0,-4,6,0,0,3,0,0,3,0,-3,15,0,-1,9,0,-2,10,0,0,4,0,0,4,0,-3,18,0,-1,11,0,-2,12,0,0,5,0,0,5,0,7,5,0,0,5,0,-1,7,0,0,6,0,0,6,0,7,6,0,0,6,0,-1,8,0,0,7,0,0,7,0,0,7,0,0,8,0,0,8,0,0,8,0,0,9,0,-2,13,0,0,10,0,-2,14,0,0,11,0,-2,16,0,0,12,0,-2,17,0,11,1,47],[0,0,0,0,0,0,0,0,0,0,0,0,0,15,18],[1,1,1,2,3,4,5,1,2,3,4,5,1,6,6],[1,1,0,0,0,2,3,0,0,0,2,3,4,1,1]] diff --git a/headless/static/remote/resources/import/af/afc47931-f066-46b0-90be-9fe61f213428.json b/headless/static/remote/resources/import/af/afc47931-f066-46b0-90be-9fe61f213428.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/resources/import/af/afc47931-f066-46b0-90be-9fe61f213428.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/resources/import/b7/b730527c-3233-41c2-aaf7-7cdab58f9749.json b/headless/static/remote/resources/import/b7/b730527c-3233-41c2-aaf7-7cdab58f9749.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/resources/import/b7/b730527c-3233-41c2-aaf7-7cdab58f9749.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/resources/import/bd/bd1bcaba-bd7d-4a71-b143-997c882383e4.json b/headless/static/remote/resources/import/bd/bd1bcaba-bd7d-4a71-b143-997c882383e4.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/resources/import/bd/bd1bcaba-bd7d-4a71-b143-997c882383e4.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/resources/import/c2/c26a2ac3-057f-4de8-8c06-9ff3e1c48017.json b/headless/static/remote/resources/import/c2/c26a2ac3-057f-4de8-8c06-9ff3e1c48017.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/resources/import/c2/c26a2ac3-057f-4de8-8c06-9ff3e1c48017.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/resources/import/c5/c579484c-c7d1-4fd7-ba57-f93003d57a38.json b/headless/static/remote/resources/import/c5/c579484c-c7d1-4fd7-ba57-f93003d57a38.json new file mode 100644 index 00000000..59a10012 --- /dev/null +++ b/headless/static/remote/resources/import/c5/c579484c-c7d1-4fd7-ba57-f93003d57a38.json @@ -0,0 +1 @@ +[1,0,0,[["cc.JsonAsset",["_name","json"],1]],[[0,0,1,3]],[[0,"tbgroleattack",[{"id":10001,"attackWay":"Normal","attackArgs":[]},{"id":10002,"attackWay":"Normal","attackArgs":[]},{"id":10003,"attackWay":"ParabolicBangRemote","attackArgs":["30002","30001","timo5 007","0.6","100","100"]},{"id":10004,"attackWay":"Normal","attackArgs":[]}]]],0,0,[],[],[]] diff --git a/headless/static/remote/resources/import/ca/ca081965-20e1-401b-a6d9-1cec3e644dbb.json b/headless/static/remote/resources/import/ca/ca081965-20e1-401b-a6d9-1cec3e644dbb.json new file mode 100644 index 00000000..9c839ff6 --- /dev/null +++ b/headless/static/remote/resources/import/ca/ca081965-20e1-401b-a6d9-1cec3e644dbb.json @@ -0,0 +1 @@ +[1,0,0,[["cc.JsonAsset",["_name","json"],1]],[[0,0,1,3]],[[0,"tbgmap",[{"id":60001,"mapName":"天空城","map1":"map/MAP6/MAP6_1/spriteFrame","map2":"map/MAP6/MAP6_2/spriteFrame","map3":"map/MAP6/MAP6_3/spriteFrame","map1OffsetY":80,"map2OffsetY":520,"map3OffsetY":520,"scale":1.5}]]],0,0,[],[],[]] diff --git a/headless/static/remote/resources/import/d1/d1bca093-45af-4ae2-a896-11ed7c6f9bda.json b/headless/static/remote/resources/import/d1/d1bca093-45af-4ae2-a896-11ed7c6f9bda.json new file mode 100644 index 00000000..e37e46a6 --- /dev/null +++ b/headless/static/remote/resources/import/d1/d1bca093-45af-4ae2-a896-11ed7c6f9bda.json @@ -0,0 +1 @@ +[1,["20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941","7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941","544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941","951249e0-9f16-456d-8b85-a6ca954da16b@f9941"],["node","_spriteFrame","_normalSprite","_hoverSprite","_pressedSprite","_disabledSprite","root","content","_target","data"],[["cc.Node",["_name","_layer","_objFlags","_components","_prefab","_parent","_children","_lpos"],0,9,4,1,2,5],["cc.Sprite",["_sizeMode","_type","node","__prefab","_spriteFrame"],1,1,4,6],["cc.Label",["_string","_actualFontSize","_isBold","_lineHeight","_fontSize","_overflow","_enableWrapText","node","__prefab"],-4,1,4],["cc.Prefab",["_name"],2],["cc.UITransform",["node","__prefab","_contentSize"],3,1,4,5],["cc.CompPrefabInfo",["fileId"],2],["cc.PrefabInfo",["fileId","instance","targetOverrides","nestedPrefabInstanceRoots","root","asset"],-1,1,1],["cc.LabelOutline",["_width","node","__prefab"],2,1,4],["cc.Mask",["_type","node","__prefab"],2,1,4],["cc.Graphics",["node","__prefab","_fillColor"],3,1,4,5],["cc.Button",["_transition","node","__prefab","clickEvents","_normalColor","_target","_normalSprite","_hoverSprite","_pressedSprite","_disabledSprite"],2,1,4,9,5,1,6,6,6,6],["cc.ClickEvent",["_componentId","handler","target"],1,1],["cc.Widget",["_alignFlags","_originalWidth","_originalHeight","node","__prefab"],0,1,4],["9979dVt91REw44px2Tq6wqv",["mask","node","__prefab","content"],2,1,4,1]],[[5,0,2],[4,0,1,2,1],[6,0,1,2,3,4,5,5],[0,0,1,5,3,4,3],[7,0,1,2,2],[3,0,2],[0,0,1,6,3,4,3],[0,0,1,5,6,3,4,3],[0,0,1,5,6,3,4,7,3],[0,0,2,1,5,3,4,4],[1,0,2,3,4,2],[1,1,0,2,3,4,3],[2,0,1,3,2,7,8,5],[2,0,1,4,5,6,2,7,8,7],[8,0,1,2,2],[9,0,1,2,1],[10,0,1,2,3,4,5,6,7,8,9,2],[11,0,1,2,3],[12,0,1,2,3,4,4],[13,0,1,2,3,2]],[[5,"PVP匹配页面"],[6,"PVP匹配页面",33554432,[-6,-7],[[1,-2,[0,"1dgJxmIH5HIpXD6y0/xMwI"],[5,720,1280]],[18,45,100,100,-3,[0,"582zBz6m5DKqmkTkiS/LE0"]],[19,true,-5,[0,"0cGxVTaIRJGYvyxR3n0dcU"],-4]],[2,"08xLpDDa9NlK3pgR7XiOqb",null,null,null,-1,0]],[7,"content",33554432,1,[-11,-12],[[1,-8,[0,"a342LKZhVJqoESdJLA0bJd"],[5,300,300]],[14,1,-9,[0,"68r3Cnm6lK86QZh9R/bmBq"]],[15,-10,[0,"38lPCAyz5D1Lnckw+PJRsG"],[4,16777215]]],[2,"91z1VBqDBAMqZBXEwqwbIM",null,null,null,1,0]],[8,"取消匹配",33554432,1,[-17],[[1,-13,[0,"297ap5l71AlqBh2eNgPbYj"],[5,180,70]],[11,1,0,-14,[0,"878Tc/DS9P54lrcXSyfFa7"],1],[16,3,-16,[0,"b3cpuwXxBCA6pDGRByTioZ"],[[17,"9979dVt91REw44px2Tq6wqv","onClickCancel",1]],[4,4292269782],-15,2,3,4,5]],[2,"48lBZ0aupOupljaxMs2Dyi",null,null,null,1,0],[1,0,-269.222,0]],[3,"匹配中",33554432,2,[[1,-18,[0,"b47Dzr0NBHva/AWVFykwqr"],[5,161.33984375,71]],[12,"匹 配 中 ",40,50,true,-19,[0,"029Cq2lmxI/42jmDK5Dfbf"]],[4,4,-20,[0,"3aiWNC25lMN6pu75cc4jFp"]]],[2,"68UR5EdsFCQq9vXlw1f0vU",null,null,null,1,0]],[9,"Label",512,33554432,3,[[1,-21,[0,"9a9R4kWC5OboLgJeuzNN1o"],[5,180,40]],[13,"取消匹配",32,32,1,false,true,-22,[0,"00tevDeytESpi+dtvJ6xiJ"]],[4,3,-23,[0,"8eHMpSlchDd5+xvV85EXRn"]]],[2,"aa9H+aJepAXLrObLov094q",null,null,null,1,0]],[3,"bg",33554432,2,[[1,-24,[0,"1cMsYGmM5EXIgLY+DBGD2G"],[5,300,300]],[10,0,-25,[0,"f73/xdwehEoawujOfSEUMv"],0]],[2,"9bO3TsbbxHjJsvjefEIb6B",null,null,null,1,0]]],0,[0,6,1,0,0,1,0,0,1,0,7,2,0,0,1,0,-1,2,0,-2,3,0,0,2,0,0,2,0,0,2,0,-1,6,0,-2,4,0,0,3,0,0,3,0,8,3,0,0,3,0,-1,5,0,0,4,0,0,4,0,0,4,0,0,5,0,0,5,0,0,5,0,0,6,0,0,6,0,9,1,25],[0,0,0,0,0,0],[1,1,2,3,4,5],[1,0,0,0,2,3]] diff --git a/headless/static/remote/resources/import/d9/d9bca169-7a8d-4581-90b2-487db4a4dabb.json b/headless/static/remote/resources/import/d9/d9bca169-7a8d-4581-90b2-487db4a4dabb.json new file mode 100644 index 00000000..b25ec46a --- /dev/null +++ b/headless/static/remote/resources/import/d9/d9bca169-7a8d-4581-90b2-487db4a4dabb.json @@ -0,0 +1 @@ +[1,["7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941","20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941","544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941","951249e0-9f16-456d-8b85-a6ca954da16b@f9941"],["node","_spriteFrame","_normalSprite","_hoverSprite","_pressedSprite","_disabledSprite","root","_target","data"],[["cc.Node",["_name","_layer","_objFlags","_components","_prefab","_parent","_children","_lpos"],0,9,4,1,2,5],["cc.Sprite",["_sizeMode","_type","node","__prefab","_spriteFrame","_color"],1,1,4,6,5],["cc.UITransform",["node","__prefab","_contentSize"],3,1,4,5],["cc.Widget",["_alignFlags","_originalWidth","_originalHeight","node","__prefab"],0,1,4],["cc.Button",["_transition","node","__prefab","clickEvents","_normalColor","_target","_normalSprite","_hoverSprite","_pressedSprite","_disabledSprite"],2,1,4,9,5,1,6,6,6,6],["cc.ClickEvent",["_componentId","handler","customEventData","target"],0,1],["cc.Label",["_string","_actualFontSize","_fontSize","_isBold","_overflow","_enableWrapText","node","__prefab","_color"],-3,1,4,5],["cc.Prefab",["_name"],2],["cc.CompPrefabInfo",["fileId"],2],["cc.PrefabInfo",["fileId","instance","targetOverrides","nestedPrefabInstanceRoots","root","asset"],-1,1,1],["sp.Skeleton",["node","__prefab"],3,1,4],["cc.LabelOutline",["node","__prefab"],3,1,4],["0bc93vaJLZPuYCc1dTrvyLs",["node","__prefab","selects"],3,1,4,2]],[[8,0,2],[9,0,1,2,3,4,5,5],[2,0,1,2,1],[0,0,1,5,6,3,4,7,3],[0,0,1,5,3,4,7,3],[1,0,2,3,5,4,2],[2,0,1,1],[10,0,1,1],[4,0,1,2,3,2],[5,0,1,2,3,4],[3,0,1,2,3,4,4],[6,0,1,2,3,6,7,5],[11,0,1,1],[7,0,2],[0,0,1,6,3,4,3],[0,0,1,5,3,4,3],[0,0,2,1,5,3,4,4],[1,0,2,3,4,2],[1,1,0,2,3,4,3],[3,0,1,3,4,3],[4,0,1,2,3,4,5,6,7,8,9,2],[5,0,1,3,3],[6,0,1,2,4,5,3,6,7,8,7],[12,0,1,2,1]],[[13,"NoviceSelectPetView"],[14,"NoviceSelectPetView",33554432,[-8,-9,-10,-11,-12],[[2,-2,[0,"4aVN3xTkRCLq/P7w8wFXBS"],[5,720,1280]],[23,-6,[0,"d9OK97hutHEpKUXR8jY9y6"],[-3,-4,-5]],[10,45,720,1280,-7,[0,"16RFBNt0ROAK2JOYSRqgt+"]]],[1,"3fJdXI6WJOrqwO57jPdfps",null,null,null,-1,0]],[3,"SpriteSplash",33554432,1,[-16,-17,-18],[[2,-13,[0,"9bdmMr7YFOJa2exV/knYeh"],[5,720,280]],[5,0,-14,[0,"c7Pi4wFupN46GUUtCx79al"],[4,4287927444],9],[19,40,100,-15,[0,"bdGFAPIUBH070+qNCiJxH1"]]],[1,"37y8vThjdE2YcIy+stGnFl",null,null,null,1,0],[1,0,-351.056,0]],[3,"select1",33554432,1,[-22],[[2,-19,[0,"8bOal7c6BM7bRbIOBavNwJ"],[5,200,280]],[5,0,-20,[0,"7ebHoEZF9Mcbsj9mMaf8Ah"],[4,4287466893],1],[8,3,-21,[0,"daS8rwzqhEfKfu0nwL1Fqm"],[[9,"0bc93vaJLZPuYCc1dTrvyLs","onClickSelect","0",1]]]],[1,"b60q3hwLJHFIMhBwr7y6UZ",null,null,null,1,0],[1,0,360.189,0]],[3,"select2",33554432,1,[-26],[[2,-23,[0,"9bmCM8yGpPwJh93tUkSGlr"],[5,200,280]],[5,0,-24,[0,"5aHl/SLyRJ/bEPQ9IMRQKv"],[4,4287466893],2],[8,3,-25,[0,"4do2OIrBZBCKeh4y/xs8D9"],[[9,"0bc93vaJLZPuYCc1dTrvyLs","onClickSelect","1",1]]]],[1,"d0SWBphbZPvp+1QNQIvprA",null,null,null,1,0],[1,-155.012,34.013,0]],[3,"select3",33554432,1,[-30],[[2,-27,[0,"17Fzj1jdNGzIirSRvOhqJl"],[5,200,280]],[5,0,-28,[0,"a7r3SlmaRABbx87gPa3Cs0"],[4,4287466893],3],[8,3,-29,[0,"fcMC7R3+tBhZkt7YP6CsjA"],[[9,"0bc93vaJLZPuYCc1dTrvyLs","onClickSelect","2",1]]]],[1,"24fVIl5pNPQJyL2Ay2EibQ",null,null,null,1,0],[1,149.179,31.734,0]],[3,"Button",33554432,2,[-35],[[2,-31,[0,"a8QYfi4hNKXJXafK7KtVSY"],[5,150,60]],[18,1,0,-32,[0,"ceKmfs8HRHRrFTbcz5tb4U"],4],[20,3,-34,[0,"eaGEcQTLtCmryRuIBq4kTF"],[[21,"0bc93vaJLZPuYCc1dTrvyLs","onClickOk",1]],[4,4292269782],-33,5,6,7,8]],[1,"f9tlyX6qxGarrVwgYr493H",null,null,null,1,0],[1,0,-70.959,0]],[15,"bg",33554432,1,[[2,-36,[0,"88EnLufrFCfa1L5FLESzIR"],[5,720,1280]],[17,0,-37,[0,"b9rznkhbdPDbYDMoba7prX"],0],[10,45,100,100,-38,[0,"c7s7QnyEtAXJA6xlc3YOMM"]]],[1,"09/BKVrhRBALbSZzaElVQf",null,null,null,1,0]],[4,"Label",33554432,2,[[2,-39,[0,"2chZpkeVRJS6zk76k9ElqJ"],[5,196.8828125,54.4]],[11,"你还没有宠物 ?",28,28,true,-40,[0,"d59iMgsz1J1pfmMbIRNX/S"]],[12,-41,[0,"a5eCGtrlBFEqsPvi+chZVh"]]],[1,"6aMTktMx9HrKS4aS3jHeG9",null,null,null,1,0],[1,0,71.728,0]],[4,"Label-001",33554432,2,[[2,-42,[0,"dc1x4oet5Kxb2Tun/pX/86"],[5,284,54.4]],[11,"请选择你要携带的宠物",28,28,true,-43,[0,"f5Md52BA9GZoEAHtI+87+6"]],[12,-44,[0,"f0/gWHfoJGR7O8Sp8LEXiA"]]],[1,"14WgHYRPFK4r6U9wBzNOVK",null,null,null,1,0],[1,0,14.308,0]],[4,"spine",33554432,3,[[6,-45,[0,"36HQq136JBK5m+YVV7HoYP"]],[7,-46,[0,"47Msh3iURGTa/b8Pg+gNzZ"]]],[1,"5eXW4CGt1KFa15b2D29Kty",null,null,null,1,0],[1,0,-49.366,0]],[4,"spine",33554432,4,[[6,-47,[0,"05YHNfiPZKEoJ1vmXGyF3x"]],[7,-48,[0,"38RgO16elNloVTvVWRM+64"]]],[1,"49oO7xd6xHa43ATzv+KSQ2",null,null,null,1,0],[1,0,-49.366,0]],[4,"spine",33554432,5,[[6,-49,[0,"67dtcAp4lP6r1yPbrIXlCS"]],[7,-50,[0,"76DqjTmc1BxL4Ff2W4sV3O"]]],[1,"75IcONEJZP6YFv2TFLp4Ch",null,null,null,1,0],[1,0,-49.366,0]],[16,"Label",512,33554432,6,[[2,-51,[0,"9dsrabZtFJ3oMULCjrcb5l"],[5,100,40]],[22,"确定",26,26,1,false,true,-52,[0,"3ewtPvhOxMv7mlZZHNsPGv"],[4,4278190080]]],[1,"6de3sMXMRKf5RJU8uRBGsz",null,null,null,1,0]]],0,[0,6,1,0,0,1,0,-1,3,0,-2,4,0,-3,5,0,0,1,0,0,1,0,-1,7,0,-2,3,0,-3,4,0,-4,5,0,-5,2,0,0,2,0,0,2,0,0,2,0,-1,8,0,-2,9,0,-3,6,0,0,3,0,0,3,0,0,3,0,-1,10,0,0,4,0,0,4,0,0,4,0,-1,11,0,0,5,0,0,5,0,0,5,0,-1,12,0,0,6,0,0,6,0,7,6,0,0,6,0,-1,13,0,0,7,0,0,7,0,0,7,0,0,8,0,0,8,0,0,8,0,0,9,0,0,9,0,0,9,0,0,10,0,0,10,0,0,11,0,0,11,0,0,12,0,0,12,0,0,13,0,0,13,0,8,1,52],[0,0,0,0,0,0,0,0,0,0],[1,1,1,1,1,2,3,4,5,1],[0,0,0,0,1,1,1,2,3,0]] diff --git a/headless/static/remote/resources/import/db/db69a24b-0109-4e72-9975-7a4e80e86c3e.json b/headless/static/remote/resources/import/db/db69a24b-0109-4e72-9975-7a4e80e86c3e.json new file mode 100644 index 00000000..c7f8d5f2 --- /dev/null +++ b/headless/static/remote/resources/import/db/db69a24b-0109-4e72-9975-7a4e80e86c3e.json @@ -0,0 +1 @@ +[1,["20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941","7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941","544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941","951249e0-9f16-456d-8b85-a6ca954da16b@f9941"],["node","_spriteFrame","_normalSprite","_hoverSprite","_pressedSprite","_disabledSprite","_parent","root","btns","confirmBtn","cancalBtn","tigLabel","titleLabel","data"],[["cc.Node",["_name","_layer","_objFlags","_components","_prefab","_children","_parent","_lpos"],0,9,4,2,1,5],["cc.Sprite",["_sizeMode","_type","node","__prefab","_spriteFrame","_color"],1,1,4,6,5],["cc.Node",["_name","_layer","_components","_prefab","_parent","_children","_lpos"],1,12,4,1,2,5],["cc.UITransform",["node","__prefab","_contentSize"],3,1,4,5],["cc.Label",["_string","_actualFontSize","_fontSize","_isBold","_overflow","_enableWrapText","node","__prefab"],-3,1,4],["cc.Prefab",["_name"],2],["cc.CompPrefabInfo",["fileId"],2],["cc.LabelOutline",["node","__prefab"],3,1,4],["cc.PrefabInfo",["fileId","instance","targetOverrides","nestedPrefabInstanceRoots","root","asset"],-1,1,1],["cc.Button",["_transition","node","__prefab","clickEvents","_normalColor","_target"],2,1,4,9,5,1],["cc.ClickEvent",["_componentId","handler","target"],1,1],["cc.Layout",["_resizeMode","_layoutType","_spacingX","node","__prefab"],0,1,4],["cc.Widget",["_alignFlags","_originalWidth","_originalHeight","node","__prefab"],0,1,4],["637d2qdlk5B8rlrK/1+fcaG",["node","__prefab","titleLabel","tigLabel","cancalBtn","confirmBtn","btns"],3,1,4,1,1,1,1,1]],[[6,0,2],[8,0,1,2,3,4,5,5],[3,0,1,2,1],[7,0,1,1],[0,0,1,6,5,3,4,3],[0,0,1,6,5,3,4,7,3],[0,0,2,1,6,3,4,4],[2,0,1,4,2,3,3],[2,0,1,5,2,3,6,3],[4,0,1,2,3,6,7,5],[4,0,1,2,4,5,3,6,7,7],[1,0,2,3,5,4,2],[1,1,0,2,3,4,3],[9,0,1,2,3,4,5,2],[10,0,1,2,3],[5,0,2],[0,0,1,5,3,4,3],[3,0,1,1],[1,0,2,3,4,2],[11,0,1,2,3,4,4],[12,0,1,2,3,4,4],[13,0,1,2,3,4,5,6,1]],[[15,"SelectionBox"],[16,"SelectionBox",33554432,[-10],[[2,-2,[0,"1dgJxmIH5HIpXD6y0/xMwI"],[5,720,1280]],[20,45,100,100,-3,[0,"582zBz6m5DKqmkTkiS/LE0"]],[21,-9,[0,"45C/eqwnVBJ7AFQCRdmOWA"],-8,-7,-6,-5,-4]],[1,"08xLpDDa9NlK3pgR7XiOqb",null,null,null,-1,0]],[8,"Button",33554432,[-14],[[[2,-11,[0,"103jkK2cVAE5RIQPEZVNM9"],[5,150,60]],[12,1,0,-12,[0,"7bKxfFnGJESrQbSGM+JmUx"],1],-13],4,4,1],[1,"a4NH/pzKFKPL4Jj42lQJDs",null,null,null,1,0],[1,-125,0,0]],[8,"Button-001",33554432,[-18],[[[2,-15,[0,"c6frlE4plOwqUS47YfvGmO"],[5,150,60]],[12,1,0,-16,[0,"c5GtLZzFpM0I0sTCkf3aqQ"],2],-17],4,4,1],[1,"cahCqLRXFGLYmjgo/VEEzO",null,null,null,1,0],[1,125,0,0]],[4,"root",33554432,1,[-20,-21,-22],[[17,-19,[0,"9fk4APCRZGvZvi7yeghJgu"]]],[1,"01XGrvyfxD3olLAoG+cA6M",null,null,null,1,0]],[5,"按钮",33554432,4,[-25],[[2,-23,[0,"d8cPy4tGJECIOH/lDWS4cr"],[5,550,100]],[11,0,-24,[0,"02fWXh8w5P8LFeoXv7xKr+"],[4,4284703587],3]],[1,"29tsiYdbFAmpqioL1hZk5D",null,null,null,1,0],[1,0,-198.34500000000003,0]],[4,"Layout",33554432,5,[2,3],[[2,-26,[0,"88YepSR1BGiJ8lx51cmJzO"],[5,400,100]],[19,1,1,100,-27,[0,"20hHlhG3ZBv7260+XcHVEx"]]],[1,"f0PfwPKydHhqd3+HFya3Iv",null,null,null,1,0]],[5,"标题",33554432,4,[-30],[[2,-28,[0,"098g0iPk5MOKgYvSAKLpMb"],[5,550,80]],[11,0,-29,[0,"bcc3xo5FBGBKF2YdfDAnY2"],[4,4291611852],0]],[1,"45UI5bmtxIDaqyFLqIe8kp",null,null,null,1,0],[1,0,188.615,0]],[7,"Label",33554432,7,[[[2,-31,[0,"feHItLUgpE77OxF7WHDbYv"],[5,86.001953125,54.4]],-32,[3,-33,[0,"faYZ/fq/JCrIad11AEwX9G"]]],4,1,4],[1,"191+eJG2dMW5gqs8iCckIO",null,null,null,1,0]],[6,"Label",512,33554432,2,[[2,-34,[0,"6adUyeJN9H4IYw4kbe5tRK"],[5,100,40]],[10,"取 消",28,28,1,false,true,-35,[0,"edsGNwTutKM54rhRlv5SKr"]],[3,-36,[0,"a2U8Q42OpJfo5JOjGg9dNx"]]],[1,"3f5MDVlElLbaT0OuCqK14r",null,null,null,1,0]],[6,"Label",512,33554432,3,[[2,-37,[0,"8fZWw9lFVBo5bTmYlccnYP"],[5,100,40]],[10,"确 认",28,28,1,false,true,-38,[0,"d8OL2KKR1Fp4bH4e2mQoQu"]],[3,-39,[0,"e5GQsGeJhGIYqSgSVsMQKl"]]],[1,"97VEB4tilOo4JWLUY326WW",null,null,null,1,0]],[4,"内容",33554432,4,[-42],[[2,-40,[0,"94wLBy3ZZCNLj/z/sOMJcE"],[5,550,300]],[18,0,-41,[0,"26Ui2/qLBJ6ahmj4mbXXLC"],4]],[1,"21huvOJSpEl7CeTqIQl4ms",null,null,null,1,0]],[7,"Label",33554432,11,[[[2,-43,[0,"97HLHPE99KqqaKHvgDjgfQ"],[5,256,54.4]],-44,[3,-45,[0,"020BrTUVBOvI40lLllfr3o"]]],4,1,4],[1,"51mslVXK9CoaVTR7kb/dfT",null,null,null,1,0]],[9,"标 题",36,36,true,8,[0,"8dcsRTes1EeYHfGQSWiEr7"]],[13,3,2,[0,"e71XVtrWZATL0n+T5fEJ5+"],[[14,"637d2qdlk5B8rlrK/1+fcaG","onClickCancel",1]],[4,4292269782],2],[13,3,3,[0,"372uecDVZAKr0Qkz1wazTK"],[[14,"637d2qdlk5B8rlrK/1+fcaG","onClickConfirm",1]],[4,4292269782],3],[9,"这是一个提示选择框",28,28,true,12,[0,"2fE8Vs7ORM36XXDBa5mjn/"]]],0,[0,7,1,0,0,1,0,0,1,0,8,5,0,9,15,0,10,14,0,11,16,0,12,13,0,0,1,0,-1,4,0,0,2,0,0,2,0,-3,14,0,-1,9,0,0,3,0,0,3,0,-3,15,0,-1,10,0,0,4,0,-1,7,0,-2,5,0,-3,11,0,0,5,0,0,5,0,-1,6,0,0,6,0,0,6,0,0,7,0,0,7,0,-1,8,0,0,8,0,-2,13,0,0,8,0,0,9,0,0,9,0,0,9,0,0,10,0,0,10,0,0,10,0,0,11,0,0,11,0,-1,12,0,0,12,0,-2,16,0,0,12,0,13,1,2,6,6,3,6,6,45],[0,0,0,0,0,14,14,14,14,15,15,15,15],[1,1,1,1,1,2,3,4,5,2,3,4,5],[1,0,0,1,1,0,0,2,3,0,0,2,3]] diff --git a/headless/static/remote/resources/import/df/dfe67d28-0f19-440b-ad19-7c1f70b3528b.json b/headless/static/remote/resources/import/df/dfe67d28-0f19-440b-ad19-7c1f70b3528b.json new file mode 100644 index 00000000..09ea93be --- /dev/null +++ b/headless/static/remote/resources/import/df/dfe67d28-0f19-440b-ad19-7c1f70b3528b.json @@ -0,0 +1 @@ +[1,0,0,[["cc.JsonAsset",["_name","json"],1]],[[0,0,1,3]],[[0,"tbgrolecup",[{"grade":1,"materials":[{"id":90001,"value":100}]},{"grade":2,"materials":[{"id":90001,"value":400}]},{"grade":3,"materials":[{"id":90001,"value":900}]},{"grade":4,"materials":[{"id":90001,"value":1600}]},{"grade":5,"materials":[{"id":90001,"value":2500}]},{"grade":6,"materials":[{"id":90001,"value":3600}]},{"grade":7,"materials":[{"id":90001,"value":4900}]},{"grade":8,"materials":[{"id":90001,"value":6400}]},{"grade":9,"materials":[{"id":90001,"value":8100}]},{"grade":10,"materials":[{"id":90001,"value":10000}]},{"grade":11,"materials":[{"id":90001,"value":12100}]},{"grade":12,"materials":[{"id":90001,"value":14400}]},{"grade":13,"materials":[{"id":90001,"value":16900}]},{"grade":14,"materials":[{"id":90001,"value":19600}]},{"grade":15,"materials":[{"id":90001,"value":22500}]},{"grade":16,"materials":[{"id":90001,"value":25600}]},{"grade":17,"materials":[{"id":90001,"value":28900}]},{"grade":18,"materials":[{"id":90001,"value":32400}]},{"grade":19,"materials":[{"id":90001,"value":36100}]},{"grade":20,"materials":[{"id":90001,"value":40000}]},{"grade":21,"materials":[{"id":90001,"value":44100}]},{"grade":22,"materials":[{"id":90001,"value":48400}]},{"grade":23,"materials":[{"id":90001,"value":52900}]},{"grade":24,"materials":[{"id":90001,"value":57600}]},{"grade":25,"materials":[{"id":90001,"value":62500}]},{"grade":26,"materials":[{"id":90001,"value":67600}]},{"grade":27,"materials":[{"id":90001,"value":72900}]},{"grade":28,"materials":[{"id":90001,"value":78400}]},{"grade":29,"materials":[{"id":90001,"value":84100}]},{"grade":30,"materials":[{"id":90001,"value":90000}]},{"grade":31,"materials":[{"id":90001,"value":96100}]},{"grade":32,"materials":[{"id":90001,"value":102400}]},{"grade":33,"materials":[{"id":90001,"value":108900}]},{"grade":34,"materials":[{"id":90001,"value":115600}]},{"grade":35,"materials":[{"id":90001,"value":122500}]},{"grade":36,"materials":[{"id":90001,"value":129600}]},{"grade":37,"materials":[{"id":90001,"value":136900}]},{"grade":38,"materials":[{"id":90001,"value":144400}]},{"grade":39,"materials":[{"id":90001,"value":152100}]},{"grade":40,"materials":[{"id":90001,"value":160000}]},{"grade":41,"materials":[{"id":90001,"value":168100}]},{"grade":42,"materials":[{"id":90001,"value":176400}]},{"grade":43,"materials":[{"id":90001,"value":184900}]},{"grade":44,"materials":[{"id":90001,"value":193600}]},{"grade":45,"materials":[{"id":90001,"value":202500}]},{"grade":46,"materials":[{"id":90001,"value":211600}]},{"grade":47,"materials":[{"id":90001,"value":220900}]},{"grade":48,"materials":[{"id":90001,"value":230400}]},{"grade":49,"materials":[{"id":90001,"value":240100}]},{"grade":50,"materials":[{"id":90001,"value":250000}]},{"grade":51,"materials":[{"id":90001,"value":260100}]},{"grade":52,"materials":[{"id":90001,"value":270400}]},{"grade":53,"materials":[{"id":90001,"value":280900}]},{"grade":54,"materials":[{"id":90001,"value":291600}]},{"grade":55,"materials":[{"id":90001,"value":302500}]},{"grade":56,"materials":[{"id":90001,"value":313600}]},{"grade":57,"materials":[{"id":90001,"value":324900}]},{"grade":58,"materials":[{"id":90001,"value":336400}]},{"grade":59,"materials":[{"id":90001,"value":348100}]},{"grade":60,"materials":[{"id":90001,"value":360000}]},{"grade":61,"materials":[{"id":90001,"value":372100}]},{"grade":62,"materials":[{"id":90001,"value":384400}]},{"grade":63,"materials":[{"id":90001,"value":396900}]},{"grade":64,"materials":[{"id":90001,"value":409600}]},{"grade":65,"materials":[{"id":90001,"value":422500}]},{"grade":66,"materials":[{"id":90001,"value":435600}]},{"grade":67,"materials":[{"id":90001,"value":448900}]},{"grade":68,"materials":[{"id":90001,"value":462400}]},{"grade":69,"materials":[{"id":90001,"value":476100}]},{"grade":70,"materials":[{"id":90001,"value":490000}]},{"grade":71,"materials":[{"id":90001,"value":504100}]},{"grade":72,"materials":[{"id":90001,"value":518400}]},{"grade":73,"materials":[{"id":90001,"value":532900}]},{"grade":74,"materials":[{"id":90001,"value":547600}]},{"grade":75,"materials":[{"id":90001,"value":562500}]},{"grade":76,"materials":[{"id":90001,"value":577600}]},{"grade":77,"materials":[{"id":90001,"value":592900}]},{"grade":78,"materials":[{"id":90001,"value":608400}]},{"grade":79,"materials":[{"id":90001,"value":624100}]},{"grade":80,"materials":[{"id":90001,"value":640000}]},{"grade":81,"materials":[{"id":90001,"value":656100}]},{"grade":82,"materials":[{"id":90001,"value":672400}]},{"grade":83,"materials":[{"id":90001,"value":688900}]},{"grade":84,"materials":[{"id":90001,"value":705600}]},{"grade":85,"materials":[{"id":90001,"value":722500}]},{"grade":86,"materials":[{"id":90001,"value":739600}]},{"grade":87,"materials":[{"id":90001,"value":756900}]},{"grade":88,"materials":[{"id":90001,"value":774400}]},{"grade":89,"materials":[{"id":90001,"value":792100}]},{"grade":90,"materials":[{"id":90001,"value":810000}]},{"grade":91,"materials":[{"id":90001,"value":828100}]},{"grade":92,"materials":[{"id":90001,"value":846400}]},{"grade":93,"materials":[{"id":90001,"value":864900}]},{"grade":94,"materials":[{"id":90001,"value":883600}]},{"grade":95,"materials":[{"id":90001,"value":902500}]},{"grade":96,"materials":[{"id":90001,"value":921600}]},{"grade":97,"materials":[{"id":90001,"value":940900}]},{"grade":98,"materials":[{"id":90001,"value":960400}]},{"grade":99,"materials":[{"id":90001,"value":980100}]},{"grade":100,"materials":[{"id":90001,"value":1000000}]}]]],0,0,[],[],[]] diff --git a/headless/static/remote/resources/import/e6/e6448a2d-8905-4c78-b693-d7cb42c22021.json b/headless/static/remote/resources/import/e6/e6448a2d-8905-4c78-b693-d7cb42c22021.json new file mode 100644 index 00000000..d0772bd5 --- /dev/null +++ b/headless/static/remote/resources/import/e6/e6448a2d-8905-4c78-b693-d7cb42c22021.json @@ -0,0 +1 @@ +[1,["7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941"],["node","_spriteFrame","root","text","data"],[["cc.Node",["_name","_layer","_components","_prefab","_children","_parent","_lpos"],1,9,4,2,1,5],["cc.UITransform",["node","__prefab","_contentSize"],3,1,4,5],["cc.Widget",["_alignFlags","_top","_originalWidth","_originalHeight","node","__prefab"],-1,1,4],["cc.Prefab",["_name"],2],["cc.Node",["_name","_layer","_parent","_components","_prefab"],1,1,12,4],["cc.CompPrefabInfo",["fileId"],2],["cc.Sprite",["_sizeMode","node","__prefab","_color","_spriteFrame"],2,1,4,5,6],["cc.PrefabInfo",["fileId","instance","targetOverrides","nestedPrefabInstanceRoots","root","asset"],-1,1,1],["cc.Label",["_string","_actualFontSize","_fontSize","_isBold","node","__prefab"],-1,1,4],["cc.LabelOutline",["node","__prefab"],3,1,4],["76584YE7/1K9rPvckaow3Jg",["node","__prefab","text"],3,1,4,1]],[[5,0,2],[7,0,1,2,3,4,5,5],[1,0,1,2,1],[3,0,2],[0,0,1,4,2,3,3],[0,0,1,5,4,2,3,6,3],[0,0,1,5,2,3,3],[4,0,1,2,3,4,3],[1,0,1,1],[6,0,1,2,3,4,2],[8,0,1,2,3,4,5,5],[9,0,1,1],[2,0,1,4,5,3],[2,0,2,3,4,5,4],[10,0,1,2,1]],[[3,"TipsView"],[4,"TipsView",33554432,[-6],[[2,-2,[0,"1dgJxmIH5HIpXD6y0/xMwI"],[5,720,1280]],[13,45,100,100,-3,[0,"582zBz6m5DKqmkTkiS/LE0"]],[14,-5,[0,"2dwIuZkhpJJbECbfdTbZNH"],-4]],[1,"08xLpDDa9NlK3pgR7XiOqb",null,null,null,-1,0]],[5,"tips",33554432,1,[-9,-10],[[8,-7,[0,"80aM9gzLxLGb+zb/MnhRiR"]],[12,1,100,-8,[0,"c4w4iM4n1AdJY5o2IqHxM5"]]],[1,"9a0GHPs5FIgIRrpt3OoezN",null,null,null,1,0],[1,0,490,0]],[7,"Label",33554432,2,[[[2,-11,[0,"3auNhBKbFIDrRZBSoyfsPl"],[5,148,54.4]],-12,[11,-13,[0,"4eoEbFXjNLCrsBdIXgKOB5"]]],4,1,4],[1,"eap34/Hj9C2Z/ZH5X2XSmX",null,null,null,1,0]],[6,"bg",33554432,2,[[2,-14,[0,"bcShr1JEFCyIp8BaO1nE+o"],[5,500,80]],[9,0,-15,[0,"f70O4oDUJDA7XXDFf5bytv"],[4,4278190080],0]],[1,"19ZAH9lVNDN7qtcsLjO0zS",null,null,null,1,0]],[10,"这是一个提示",24,24,true,3,[0,"29UjfyEClH24RGffdP33o3"]]],0,[0,2,1,0,0,1,0,0,1,0,3,5,0,0,1,0,-1,2,0,0,2,0,0,2,0,-1,4,0,-2,3,0,0,3,0,-2,5,0,0,3,0,0,4,0,0,4,0,4,1,15],[0],[1],[0]] diff --git a/headless/static/remote/resources/import/ff/ffb88a8f-af62-48f4-8f1d-3cb606443a43.json b/headless/static/remote/resources/import/ff/ffb88a8f-af62-48f4-8f1d-3cb606443a43.json new file mode 100644 index 00000000..b15f35ac --- /dev/null +++ b/headless/static/remote/resources/import/ff/ffb88a8f-af62-48f4-8f1d-3cb606443a43.json @@ -0,0 +1 @@ +[1,0,0,["cc.ImageAsset"],0,[{"fmt":"0","w":0,"h":0},-1],[0],0,[],[],[]] diff --git a/headless/static/remote/resources/index.js b/headless/static/remote/resources/index.js new file mode 100644 index 00000000..56671614 --- /dev/null +++ b/headless/static/remote/resources/index.js @@ -0,0 +1,25 @@ +System.register("chunks:///resources.js", ['./schema-659cd440.js', 'cc'], function () { + return { + setters: [null, null], + execute: function () {} + }; +}); + +(function(r) { + r('virtual:///prerequisite-imports/resources', 'chunks:///resources.js'); +})(function(mid, cid) { + System.register(mid, [cid], function (_export, _context) { + return { + setters: [function(_m) { + var _exportObj = {}; + + for (var _key in _m) { + if (_key !== "default" && _key !== "__esModule") _exportObj[_key] = _m[_key]; + } + + _export(_exportObj); + }], + execute: function () { } + }; + }); +}); \ No newline at end of file diff --git a/headless/static/src/chunks/bundle.js b/headless/static/src/chunks/bundle.js new file mode 100644 index 00000000..06a14b7d --- /dev/null +++ b/headless/static/src/chunks/bundle.js @@ -0,0 +1,1773 @@ +System.register([], function(_export, _context) { return { execute: function () { +System.register("chunks:///schema-659cd440.js", ['cc'], function (exports) { + var cclegacy; + return { + setters: [function (module) { + cclegacy = module.cclegacy; + }], + execute: function () { + exports({ + _: _applyDecoratedDescriptor, + a: _inheritsLoose, + b: _initializerDefineProperty, + c: _assertThisInitialized, + d: _createClass, + e: _createForOfIteratorHelperLoose, + f: _asyncToGenerator, + g: _regeneratorRuntime, + h: _extends + }); + + cclegacy._RF.push({}, "d9c2cV8uCRDkrZoZNZp9dMd", "TbGGlobalEnum", undefined); //全局表枚举 + + + var TbGGlobalEnum = exports('i', /*#__PURE__*/function (TbGGlobalEnum) { + TbGGlobalEnum[TbGGlobalEnum["SELECT_PET_ID"] = 70001] = "SELECT_PET_ID"; + return TbGGlobalEnum; + }({})); //选择宠物配置表Id + + cclegacy._RF.pop(); + + function _regeneratorRuntime() { + /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ + _regeneratorRuntime = exports('g', function () { + return exports$1; + }); + + var exports$1 = {}, + Op = Object.prototype, + hasOwn = Op.hasOwnProperty, + defineProperty = Object.defineProperty || function (obj, key, desc) { + obj[key] = desc.value; + }, + $Symbol = "function" == typeof Symbol ? Symbol : {}, + iteratorSymbol = $Symbol.iterator || "@@iterator", + asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", + toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; + + function define(obj, key, value) { + return Object.defineProperty(obj, key, { + value: value, + enumerable: !0, + configurable: !0, + writable: !0 + }), obj[key]; + } + + try { + define({}, ""); + } catch (err) { + define = function (obj, key, value) { + return obj[key] = value; + }; + } + + function wrap(innerFn, outerFn, self, tryLocsList) { + var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, + generator = Object.create(protoGenerator.prototype), + context = new Context(tryLocsList || []); + return defineProperty(generator, "_invoke", { + value: makeInvokeMethod(innerFn, self, context) + }), generator; + } + + function tryCatch(fn, obj, arg) { + try { + return { + type: "normal", + arg: fn.call(obj, arg) + }; + } catch (err) { + return { + type: "throw", + arg: err + }; + } + } + + exports$1.wrap = wrap; + var ContinueSentinel = {}; + + function Generator() {} + + function GeneratorFunction() {} + + function GeneratorFunctionPrototype() {} + + var IteratorPrototype = {}; + define(IteratorPrototype, iteratorSymbol, function () { + return this; + }); + var getProto = Object.getPrototypeOf, + NativeIteratorPrototype = getProto && getProto(getProto(values([]))); + NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); + var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); + + function defineIteratorMethods(prototype) { + ["next", "throw", "return"].forEach(function (method) { + define(prototype, method, function (arg) { + return this._invoke(method, arg); + }); + }); + } + + function AsyncIterator(generator, PromiseImpl) { + function invoke(method, arg, resolve, reject) { + var record = tryCatch(generator[method], generator, arg); + + if ("throw" !== record.type) { + var result = record.arg, + value = result.value; + return value && "object" == typeof value && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { + invoke("next", value, resolve, reject); + }, function (err) { + invoke("throw", err, resolve, reject); + }) : PromiseImpl.resolve(value).then(function (unwrapped) { + result.value = unwrapped, resolve(result); + }, function (error) { + return invoke("throw", error, resolve, reject); + }); + } + + reject(record.arg); + } + + var previousPromise; + defineProperty(this, "_invoke", { + value: function (method, arg) { + function callInvokeWithMethodAndArg() { + return new PromiseImpl(function (resolve, reject) { + invoke(method, arg, resolve, reject); + }); + } + + return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); + } + }); + } + + function makeInvokeMethod(innerFn, self, context) { + var state = "suspendedStart"; + return function (method, arg) { + if ("executing" === state) throw new Error("Generator is already running"); + + if ("completed" === state) { + if ("throw" === method) throw arg; + return { + value: void 0, + done: !0 + }; + } + + for (context.method = method, context.arg = arg;;) { + var delegate = context.delegate; + + if (delegate) { + var delegateResult = maybeInvokeDelegate(delegate, context); + + if (delegateResult) { + if (delegateResult === ContinueSentinel) continue; + return delegateResult; + } + } + + if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { + if ("suspendedStart" === state) throw state = "completed", context.arg; + context.dispatchException(context.arg); + } else "return" === context.method && context.abrupt("return", context.arg); + state = "executing"; + var record = tryCatch(innerFn, self, context); + + if ("normal" === record.type) { + if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; + return { + value: record.arg, + done: context.done + }; + } + + "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); + } + }; + } + + function maybeInvokeDelegate(delegate, context) { + var methodName = context.method, + method = delegate.iterator[methodName]; + if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator.return && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; + var record = tryCatch(method, delegate.iterator, context.arg); + if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; + var info = record.arg; + return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); + } + + function pushTryEntry(locs) { + var entry = { + tryLoc: locs[0] + }; + 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); + } + + function resetTryEntry(entry) { + var record = entry.completion || {}; + record.type = "normal", delete record.arg, entry.completion = record; + } + + function Context(tryLocsList) { + this.tryEntries = [{ + tryLoc: "root" + }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); + } + + function values(iterable) { + if (iterable || "" === iterable) { + var iteratorMethod = iterable[iteratorSymbol]; + if (iteratorMethod) return iteratorMethod.call(iterable); + if ("function" == typeof iterable.next) return iterable; + + if (!isNaN(iterable.length)) { + var i = -1, + next = function next() { + for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; + + return next.value = undefined, next.done = !0, next; + }; + + return next.next = next; + } + } + + throw new TypeError(typeof iterable + " is not iterable"); + } + + return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { + value: GeneratorFunctionPrototype, + configurable: !0 + }), defineProperty(GeneratorFunctionPrototype, "constructor", { + value: GeneratorFunction, + configurable: !0 + }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports$1.isGeneratorFunction = function (genFun) { + var ctor = "function" == typeof genFun && genFun.constructor; + return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); + }, exports$1.mark = function (genFun) { + return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; + }, exports$1.awrap = function (arg) { + return { + __await: arg + }; + }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { + return this; + }), exports$1.AsyncIterator = AsyncIterator, exports$1.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { + void 0 === PromiseImpl && (PromiseImpl = Promise); + var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); + return exports$1.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { + return result.done ? result.value : iter.next(); + }); + }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { + return this; + }), define(Gp, "toString", function () { + return "[object Generator]"; + }), exports$1.keys = function (val) { + var object = Object(val), + keys = []; + + for (var key in object) keys.push(key); + + return keys.reverse(), function next() { + for (; keys.length;) { + var key = keys.pop(); + if (key in object) return next.value = key, next.done = !1, next; + } + + return next.done = !0, next; + }; + }, exports$1.values = values, Context.prototype = { + constructor: Context, + reset: function (skipTempReset) { + if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); + }, + stop: function () { + this.done = !0; + var rootRecord = this.tryEntries[0].completion; + if ("throw" === rootRecord.type) throw rootRecord.arg; + return this.rval; + }, + dispatchException: function (exception) { + if (this.done) throw exception; + var context = this; + + function handle(loc, caught) { + return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; + } + + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i], + record = entry.completion; + if ("root" === entry.tryLoc) return handle("end"); + + if (entry.tryLoc <= this.prev) { + var hasCatch = hasOwn.call(entry, "catchLoc"), + hasFinally = hasOwn.call(entry, "finallyLoc"); + + if (hasCatch && hasFinally) { + if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); + if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); + } else if (hasCatch) { + if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); + } else { + if (!hasFinally) throw new Error("try statement without catch or finally"); + if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); + } + } + } + }, + abrupt: function (type, arg) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + + if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { + var finallyEntry = entry; + break; + } + } + + finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); + var record = finallyEntry ? finallyEntry.completion : {}; + return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); + }, + complete: function (record, afterLoc) { + if ("throw" === record.type) throw record.arg; + return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; + }, + finish: function (finallyLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; + } + }, + catch: function (tryLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + + if (entry.tryLoc === tryLoc) { + var record = entry.completion; + + if ("throw" === record.type) { + var thrown = record.arg; + resetTryEntry(entry); + } + + return thrown; + } + } + + throw new Error("illegal catch attempt"); + }, + delegateYield: function (iterable, resultName, nextLoc) { + return this.delegate = { + iterator: values(iterable), + resultName: resultName, + nextLoc: nextLoc + }, "next" === this.method && (this.arg = undefined), ContinueSentinel; + } + }, exports$1; + } + + function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { + try { + var info = gen[key](arg); + var value = info.value; + } catch (error) { + reject(error); + return; + } + + if (info.done) { + resolve(value); + } else { + Promise.resolve(value).then(_next, _throw); + } + } + + function _asyncToGenerator(fn) { + return function () { + var self = this, + args = arguments; + return new Promise(function (resolve, reject) { + var gen = fn.apply(self, args); + + function _next(value) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); + } + + function _throw(err) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); + } + + _next(undefined); + }); + }; + } + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { + writable: false + }); + return Constructor; + } + + function _extends() { + _extends = exports('h', Object.assign ? Object.assign.bind() : function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }); + return _extends.apply(this, arguments); + } + + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + + _setPrototypeOf(subClass, superClass); + } + + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + + function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return self; + } + + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + + return arr2; + } + + function _createForOfIteratorHelperLoose(o, allowArrayLike) { + var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; + if (it) return (it = it.call(o)).next.bind(it); + + if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { + if (it) o = it; + var i = 0; + return function () { + if (i >= o.length) return { + done: true + }; + return { + done: false, + value: o[i++] + }; + }; + } + + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + function _toPrimitive(input, hint) { + if (typeof input !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + + if (prim !== undefined) { + var res = prim.call(input, hint || "default"); + if (typeof res !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + + return (hint === "string" ? String : Number)(input); + } + + function _toPropertyKey(arg) { + var key = _toPrimitive(arg, "string"); + + return typeof key === "symbol" ? key : String(key); + } + + function _initializerDefineProperty(target, property, descriptor, context) { + if (!descriptor) return; + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 + }); + } + + function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { + var desc = {}; + Object.keys(descriptor).forEach(function (key) { + desc[key] = descriptor[key]; + }); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + + if ('value' in desc || desc.initializer) { + desc.writable = true; + } + + desc = decorators.slice().reverse().reduce(function (desc, decorator) { + return decorator(target, property, desc) || desc; + }, desc); + + if (context && desc.initializer !== void 0) { + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = undefined; + } + + if (desc.initializer === void 0) { + Object.defineProperty(target, property, desc); + desc = null; + } + + return desc; + } + + cclegacy._RF.push({}, "1c41f3U8rVLv7geIkWkDlGe", "schema", undefined); //------------------------------------------------------------------------------ + // + // This code was generated by a tool. + // Changes to this file may cause incorrect behavior and will be lost if + // the code is regenerated. + // + //------------------------------------------------------------------------------ + + + var TB; + + (function (_TB10) { + var TbGGlobal = /*#__PURE__*/function () { + function TbGGlobal(_json_) { + /** + * id + */ + this.id = void 0; + /** + * 全局表参数 + */ + + this.args = void 0; + /** + * 描述 + */ + + this.tig = void 0; + + if (_json_.id === undefined) { + throw new Error(); + } + + this.id = _json_.id; + + if (_json_.args === undefined) { + throw new Error(); + } + + this.args = _json_.args; + + if (_json_.tig === undefined) { + throw new Error(); + } + + this.tig = _json_.tig; + } + + var _proto20 = TbGGlobal.prototype; + + _proto20.resolve = function resolve(tables) {}; + + return TbGGlobal; + }(); + + _TB10.TbGGlobal = TbGGlobal; + })(TB || (TB = {})); + + (function (_TB) { + var TbGRole = /*#__PURE__*/function () { + function TbGRole(_json_) { + /** + * id + */ + this.id = void 0; + /** + * 角色名称 + */ + + this.roleName = void 0; + /** + * 描述 + */ + + this.spine = void 0; + /** + * 角色技能Id列表 + */ + + this.roleSkillIds = void 0; + /** + * 角色攻击范围 + */ + + this.roleAttackRange = void 0; + + if (_json_.id === undefined) { + throw new Error(); + } + + this.id = _json_.id; + + if (_json_.roleName === undefined) { + throw new Error(); + } + + this.roleName = _json_.roleName; + + if (_json_.spine === undefined) { + throw new Error(); + } + + this.spine = _json_.spine; + + if (_json_.roleSkillIds === undefined) { + throw new Error(); + } + + { + this.roleSkillIds = []; + + for (var _iterator = _createForOfIteratorHelperLoose(_json_.roleSkillIds), _step; !(_step = _iterator()).done;) { + var _ele = _step.value; + + var _e = void 0; + + _e = _ele; + this.roleSkillIds.push(_e); + } + } + + if (_json_.roleAttackRange === undefined) { + throw new Error(); + } + + this.roleAttackRange = _json_.roleAttackRange; + } + + var _proto = TbGRole.prototype; + + _proto.resolve = function resolve(tables) {}; + + return TbGRole; + }(); + + _TB.TbGRole = TbGRole; + })(TB || (TB = {})); + + (function (_TB2) { + var TbGRoleAttack = /*#__PURE__*/function () { + function TbGRoleAttack(_json_) { + /** + * 角色Id + */ + this.id = void 0; + /** + * 攻击方式 + */ + + this.attackWay = void 0; + /** + * 攻击参数 + */ + + this.attackArgs = void 0; + + if (_json_.id === undefined) { + throw new Error(); + } + + this.id = _json_.id; + + if (_json_.attackWay === undefined) { + throw new Error(); + } + + this.attackWay = _json_.attackWay; + + if (_json_.attackArgs === undefined) { + throw new Error(); + } + + { + this.attackArgs = []; + + for (var _iterator2 = _createForOfIteratorHelperLoose(_json_.attackArgs), _step2; !(_step2 = _iterator2()).done;) { + var _ele = _step2.value; + + var _e = void 0; + + _e = _ele; + this.attackArgs.push(_e); + } + } + } + + var _proto2 = TbGRoleAttack.prototype; + + _proto2.resolve = function resolve(tables) {}; + + return TbGRoleAttack; + }(); + + _TB2.TbGRoleAttack = TbGRoleAttack; + })(TB || (TB = {})); + + (function (_TB3) { + var TbGRoleBattleRes = /*#__PURE__*/function () { + function TbGRoleBattleRes(_json_) { + /** + * id + */ + this.id = void 0; + /** + * 资源名称 + */ + + this.resName = void 0; + /** + * 资源类型 + */ + + this.resType = void 0; + /** + * 资源地址 + */ + + this.resSrc = void 0; + + if (_json_.id === undefined) { + throw new Error(); + } + + this.id = _json_.id; + + if (_json_.resName === undefined) { + throw new Error(); + } + + this.resName = _json_.resName; + + if (_json_.resType === undefined) { + throw new Error(); + } + + this.resType = _json_.resType; + + if (_json_.resSrc === undefined) { + throw new Error(); + } + + this.resSrc = _json_.resSrc; + } + + var _proto3 = TbGRoleBattleRes.prototype; + + _proto3.resolve = function resolve(tables) {}; + + return TbGRoleBattleRes; + }(); + + _TB3.TbGRoleBattleRes = TbGRoleBattleRes; + })(TB || (TB = {})); + + (function (_TB4) { + var TbGRoleSkill = /*#__PURE__*/function () { + function TbGRoleSkill(_json_) { + /** + * 角色Id + */ + this.id = void 0; + /** + * 技能名称 + */ + + this.skillName = void 0; + /** + * 技能控制器 + */ + + this.skillController = void 0; + /** + * 技能参数 + */ + + this.skillArgs = void 0; + /** + * 技能介绍 + */ + + this.skillText = void 0; + + if (_json_.id === undefined) { + throw new Error(); + } + + this.id = _json_.id; + + if (_json_.skillName === undefined) { + throw new Error(); + } + + this.skillName = _json_.skillName; + + if (_json_.skillController === undefined) { + throw new Error(); + } + + this.skillController = _json_.skillController; + + if (_json_.skillArgs === undefined) { + throw new Error(); + } + + { + this.skillArgs = []; + + for (var _iterator3 = _createForOfIteratorHelperLoose(_json_.skillArgs), _step3; !(_step3 = _iterator3()).done;) { + var _ele = _step3.value; + + var _e = void 0; + + _e = _ele; + this.skillArgs.push(_e); + } + } + + if (_json_.skillText === undefined) { + throw new Error(); + } + + this.skillText = _json_.skillText; + } + + var _proto4 = TbGRoleSkill.prototype; + + _proto4.resolve = function resolve(tables) {}; + + return TbGRoleSkill; + }(); + + _TB4.TbGRoleSkill = TbGRoleSkill; + })(TB || (TB = {})); + + (function (_TB5) { + var TbGMap = /*#__PURE__*/function () { + function TbGMap(_json_) { + /** + * id + */ + this.id = void 0; + /** + * 地图名称 + */ + + this.mapName = void 0; + /** + * 地图1(前) + */ + + this.map1 = void 0; + /** + * 地图2(后) + */ + + this.map2 = void 0; + /** + * 地图3(天空) + */ + + this.map3 = void 0; + /** + * 地图1(前) 偏移量Y + */ + + this.map1OffsetY = void 0; + /** + * 地图2(后) 偏移量Y + */ + + this.map2OffsetY = void 0; + /** + * 地图2(后) 偏移量Y + */ + + this.map3OffsetY = void 0; + /** + * 地图缩放 + */ + + this.scale = void 0; + + if (_json_.id === undefined) { + throw new Error(); + } + + this.id = _json_.id; + + if (_json_.mapName === undefined) { + throw new Error(); + } + + this.mapName = _json_.mapName; + + if (_json_.map1 === undefined) { + throw new Error(); + } + + this.map1 = _json_.map1; + + if (_json_.map2 === undefined) { + throw new Error(); + } + + this.map2 = _json_.map2; + + if (_json_.map3 === undefined) { + throw new Error(); + } + + this.map3 = _json_.map3; + + if (_json_.map1OffsetY === undefined) { + throw new Error(); + } + + this.map1OffsetY = _json_.map1OffsetY; + + if (_json_.map2OffsetY === undefined) { + throw new Error(); + } + + this.map2OffsetY = _json_.map2OffsetY; + + if (_json_.map3OffsetY === undefined) { + throw new Error(); + } + + this.map3OffsetY = _json_.map3OffsetY; + + if (_json_.scale === undefined) { + throw new Error(); + } + + this.scale = _json_.scale; + } + + var _proto5 = TbGMap.prototype; + + _proto5.resolve = function resolve(tables) {}; + + return TbGMap; + }(); + + _TB5.TbGMap = TbGMap; + })(TB || (TB = {})); + + (function (_TB6) { + var TbGOnHookGlobal = /*#__PURE__*/function () { + function TbGOnHookGlobal(_json_) { + /** + * id + */ + this.id = void 0; + /** + * 全局表参数 + */ + + this.args = void 0; + /** + * 描述 + */ + + this.tig = void 0; + + if (_json_.id === undefined) { + throw new Error(); + } + + this.id = _json_.id; + + if (_json_.args === undefined) { + throw new Error(); + } + + this.args = _json_.args; + + if (_json_.tig === undefined) { + throw new Error(); + } + + this.tig = _json_.tig; + } + + var _proto6 = TbGOnHookGlobal.prototype; + + _proto6.resolve = function resolve(tables) {}; + + return TbGOnHookGlobal; + }(); + + _TB6.TbGOnHookGlobal = TbGOnHookGlobal; + })(TB || (TB = {})); + + (function (_TB7) { + var TbGResource = /*#__PURE__*/function () { + function TbGResource(_json_) { + /** + * id + */ + this.id = void 0; + /** + * 资源名称 + */ + + this.name = void 0; + /** + * 描述 + */ + + this.tig = void 0; + + if (_json_.id === undefined) { + throw new Error(); + } + + this.id = _json_.id; + + if (_json_.name === undefined) { + throw new Error(); + } + + this.name = _json_.name; + + if (_json_.tig === undefined) { + throw new Error(); + } + + this.tig = _json_.tig; + } + + var _proto7 = TbGResource.prototype; + + _proto7.resolve = function resolve(tables) {}; + + return TbGResource; + }(); + + _TB7.TbGResource = TbGResource; + })(TB || (TB = {})); + + (function (_TB8) { + var TbGRoleCUp = /*#__PURE__*/function () { + function TbGRoleCUp(_json_) { + /** + * 宠物等级 + */ + this.grade = void 0; + /** + * 消耗的材料 + */ + + this.materials = void 0; + + if (_json_.grade === undefined) { + throw new Error(); + } + + this.grade = _json_.grade; + + if (_json_.materials === undefined) { + throw new Error(); + } + + { + this.materials = []; + + for (var _iterator4 = _createForOfIteratorHelperLoose(_json_.materials), _step4; !(_step4 = _iterator4()).done;) { + var _ele = _step4.value; + + var _e = void 0; + + _e = new TbGEntity.Resource(_ele); + this.materials.push(_e); + } + } + } + + var _proto8 = TbGRoleCUp.prototype; + + _proto8.resolve = function resolve(tables) {}; + + return TbGRoleCUp; + }(); + + _TB8.TbGRoleCUp = TbGRoleCUp; + })(TB || (TB = {})); + + var TbGEntity; + + (function (_TbGEntity) { + var Resource = /*#__PURE__*/function () { + function Resource(_json_) { + /** + * 资源Id + */ + this.id = void 0; + /** + * 资源数量 + */ + + this.value = void 0; + + if (_json_.id === undefined) { + throw new Error(); + } + + this.id = _json_.id; + + if (_json_.value === undefined) { + throw new Error(); + } + + this.value = _json_.value; + } + + var _proto21 = Resource.prototype; + + _proto21.resolve = function resolve(tables) {}; + + return Resource; + }(); + + _TbGEntity.Resource = Resource; + })(TbGEntity || (TbGEntity = {})); + + (function (_TB9) { + var TbGRoleCStar = /*#__PURE__*/function () { + function TbGRoleCStar(_json_) { + /** + * 宠物星级 + */ + this.grade = void 0; + /** + * 合成数量 + */ + + this.merge = void 0; + + if (_json_.grade === undefined) { + throw new Error(); + } + + this.grade = _json_.grade; + + if (_json_.merge === undefined) { + throw new Error(); + } + + this.merge = _json_.merge; + } + + var _proto9 = TbGRoleCStar.prototype; + + _proto9.resolve = function resolve(tables) {}; + + return TbGRoleCStar; + }(); + + _TB9.TbGRoleCStar = TbGRoleCStar; + })(TB || (TB = {})); + + var TbGGlobal = /*#__PURE__*/function () { + function TbGGlobal(_json_) { + this._dataMap = void 0; + this._dataList = void 0; + this._dataMap = new Map(); + this._dataList = []; + + for (var _iterator5 = _createForOfIteratorHelperLoose(_json_), _step5; !(_step5 = _iterator5()).done;) { + var _json2_ = _step5.value; + + var _v = void 0; + + _v = new TB.TbGGlobal(_json2_); + + this._dataList.push(_v); + + this._dataMap.set(_v.id, _v); + } + } + + var _proto10 = TbGGlobal.prototype; + + _proto10.getDataMap = function getDataMap() { + return this._dataMap; + }; + + _proto10.getDataList = function getDataList() { + return this._dataList; + }; + + _proto10.get = function get(key) { + return this._dataMap.get(key); + }; + + _proto10.resolve = function resolve(tables) { + for (var _iterator6 = _createForOfIteratorHelperLoose(this._dataList), _step6; !(_step6 = _iterator6()).done;) { + var data = _step6.value; + data.resolve(tables); + } + }; + + return TbGGlobal; + }(); + + var TbGRole = /*#__PURE__*/function () { + function TbGRole(_json_) { + this._dataMap = void 0; + this._dataList = void 0; + this._dataMap = new Map(); + this._dataList = []; + + for (var _iterator7 = _createForOfIteratorHelperLoose(_json_), _step7; !(_step7 = _iterator7()).done;) { + var _json2_ = _step7.value; + + var _v = void 0; + + _v = new TB.TbGRole(_json2_); + + this._dataList.push(_v); + + this._dataMap.set(_v.id, _v); + } + } + + var _proto11 = TbGRole.prototype; + + _proto11.getDataMap = function getDataMap() { + return this._dataMap; + }; + + _proto11.getDataList = function getDataList() { + return this._dataList; + }; + + _proto11.get = function get(key) { + return this._dataMap.get(key); + }; + + _proto11.resolve = function resolve(tables) { + for (var _iterator8 = _createForOfIteratorHelperLoose(this._dataList), _step8; !(_step8 = _iterator8()).done;) { + var data = _step8.value; + data.resolve(tables); + } + }; + + return TbGRole; + }(); + + var TbGRoleAttack = /*#__PURE__*/function () { + function TbGRoleAttack(_json_) { + this._dataMap = void 0; + this._dataList = void 0; + this._dataMap = new Map(); + this._dataList = []; + + for (var _iterator9 = _createForOfIteratorHelperLoose(_json_), _step9; !(_step9 = _iterator9()).done;) { + var _json2_ = _step9.value; + + var _v = void 0; + + _v = new TB.TbGRoleAttack(_json2_); + + this._dataList.push(_v); + + this._dataMap.set(_v.id, _v); + } + } + + var _proto12 = TbGRoleAttack.prototype; + + _proto12.getDataMap = function getDataMap() { + return this._dataMap; + }; + + _proto12.getDataList = function getDataList() { + return this._dataList; + }; + + _proto12.get = function get(key) { + return this._dataMap.get(key); + }; + + _proto12.resolve = function resolve(tables) { + for (var _iterator10 = _createForOfIteratorHelperLoose(this._dataList), _step10; !(_step10 = _iterator10()).done;) { + var data = _step10.value; + data.resolve(tables); + } + }; + + return TbGRoleAttack; + }(); + + var TbGRoleBattleRes = /*#__PURE__*/function () { + function TbGRoleBattleRes(_json_) { + this._dataMap = void 0; + this._dataList = void 0; + this._dataMap = new Map(); + this._dataList = []; + + for (var _iterator11 = _createForOfIteratorHelperLoose(_json_), _step11; !(_step11 = _iterator11()).done;) { + var _json2_ = _step11.value; + + var _v = void 0; + + _v = new TB.TbGRoleBattleRes(_json2_); + + this._dataList.push(_v); + + this._dataMap.set(_v.id, _v); + } + } + + var _proto13 = TbGRoleBattleRes.prototype; + + _proto13.getDataMap = function getDataMap() { + return this._dataMap; + }; + + _proto13.getDataList = function getDataList() { + return this._dataList; + }; + + _proto13.get = function get(key) { + return this._dataMap.get(key); + }; + + _proto13.resolve = function resolve(tables) { + for (var _iterator12 = _createForOfIteratorHelperLoose(this._dataList), _step12; !(_step12 = _iterator12()).done;) { + var data = _step12.value; + data.resolve(tables); + } + }; + + return TbGRoleBattleRes; + }(); + + var TbGRoleSkill = /*#__PURE__*/function () { + function TbGRoleSkill(_json_) { + this._dataMap = void 0; + this._dataList = void 0; + this._dataMap = new Map(); + this._dataList = []; + + for (var _iterator13 = _createForOfIteratorHelperLoose(_json_), _step13; !(_step13 = _iterator13()).done;) { + var _json2_ = _step13.value; + + var _v = void 0; + + _v = new TB.TbGRoleSkill(_json2_); + + this._dataList.push(_v); + + this._dataMap.set(_v.id, _v); + } + } + + var _proto14 = TbGRoleSkill.prototype; + + _proto14.getDataMap = function getDataMap() { + return this._dataMap; + }; + + _proto14.getDataList = function getDataList() { + return this._dataList; + }; + + _proto14.get = function get(key) { + return this._dataMap.get(key); + }; + + _proto14.resolve = function resolve(tables) { + for (var _iterator14 = _createForOfIteratorHelperLoose(this._dataList), _step14; !(_step14 = _iterator14()).done;) { + var data = _step14.value; + data.resolve(tables); + } + }; + + return TbGRoleSkill; + }(); + + var TbGMap = /*#__PURE__*/function () { + function TbGMap(_json_) { + this._dataMap = void 0; + this._dataList = void 0; + this._dataMap = new Map(); + this._dataList = []; + + for (var _iterator15 = _createForOfIteratorHelperLoose(_json_), _step15; !(_step15 = _iterator15()).done;) { + var _json2_ = _step15.value; + + var _v = void 0; + + _v = new TB.TbGMap(_json2_); + + this._dataList.push(_v); + + this._dataMap.set(_v.id, _v); + } + } + + var _proto15 = TbGMap.prototype; + + _proto15.getDataMap = function getDataMap() { + return this._dataMap; + }; + + _proto15.getDataList = function getDataList() { + return this._dataList; + }; + + _proto15.get = function get(key) { + return this._dataMap.get(key); + }; + + _proto15.resolve = function resolve(tables) { + for (var _iterator16 = _createForOfIteratorHelperLoose(this._dataList), _step16; !(_step16 = _iterator16()).done;) { + var data = _step16.value; + data.resolve(tables); + } + }; + + return TbGMap; + }(); + + var TbGOnHookGlobal = /*#__PURE__*/function () { + function TbGOnHookGlobal(_json_) { + this._dataMap = void 0; + this._dataList = void 0; + this._dataMap = new Map(); + this._dataList = []; + + for (var _iterator17 = _createForOfIteratorHelperLoose(_json_), _step17; !(_step17 = _iterator17()).done;) { + var _json2_ = _step17.value; + + var _v = void 0; + + _v = new TB.TbGOnHookGlobal(_json2_); + + this._dataList.push(_v); + + this._dataMap.set(_v.id, _v); + } + } + + var _proto16 = TbGOnHookGlobal.prototype; + + _proto16.getDataMap = function getDataMap() { + return this._dataMap; + }; + + _proto16.getDataList = function getDataList() { + return this._dataList; + }; + + _proto16.get = function get(key) { + return this._dataMap.get(key); + }; + + _proto16.resolve = function resolve(tables) { + for (var _iterator18 = _createForOfIteratorHelperLoose(this._dataList), _step18; !(_step18 = _iterator18()).done;) { + var data = _step18.value; + data.resolve(tables); + } + }; + + return TbGOnHookGlobal; + }(); + + var TbGResource = /*#__PURE__*/function () { + function TbGResource(_json_) { + this._dataMap = void 0; + this._dataList = void 0; + this._dataMap = new Map(); + this._dataList = []; + + for (var _iterator19 = _createForOfIteratorHelperLoose(_json_), _step19; !(_step19 = _iterator19()).done;) { + var _json2_ = _step19.value; + + var _v = void 0; + + _v = new TB.TbGResource(_json2_); + + this._dataList.push(_v); + + this._dataMap.set(_v.id, _v); + } + } + + var _proto17 = TbGResource.prototype; + + _proto17.getDataMap = function getDataMap() { + return this._dataMap; + }; + + _proto17.getDataList = function getDataList() { + return this._dataList; + }; + + _proto17.get = function get(key) { + return this._dataMap.get(key); + }; + + _proto17.resolve = function resolve(tables) { + for (var _iterator20 = _createForOfIteratorHelperLoose(this._dataList), _step20; !(_step20 = _iterator20()).done;) { + var data = _step20.value; + data.resolve(tables); + } + }; + + return TbGResource; + }(); + + var TbGRoleCUp = /*#__PURE__*/function () { + function TbGRoleCUp(_json_) { + this._dataMap = void 0; + this._dataList = void 0; + this._dataMap = new Map(); + this._dataList = []; + + for (var _iterator21 = _createForOfIteratorHelperLoose(_json_), _step21; !(_step21 = _iterator21()).done;) { + var _json2_ = _step21.value; + + var _v = void 0; + + _v = new TB.TbGRoleCUp(_json2_); + + this._dataList.push(_v); + + this._dataMap.set(_v.grade, _v); + } + } + + var _proto18 = TbGRoleCUp.prototype; + + _proto18.getDataMap = function getDataMap() { + return this._dataMap; + }; + + _proto18.getDataList = function getDataList() { + return this._dataList; + }; + + _proto18.get = function get(key) { + return this._dataMap.get(key); + }; + + _proto18.resolve = function resolve(tables) { + for (var _iterator22 = _createForOfIteratorHelperLoose(this._dataList), _step22; !(_step22 = _iterator22()).done;) { + var data = _step22.value; + data.resolve(tables); + } + }; + + return TbGRoleCUp; + }(); + + var TbGRoleCStar = /*#__PURE__*/function () { + function TbGRoleCStar(_json_) { + this._dataMap = void 0; + this._dataList = void 0; + this._dataMap = new Map(); + this._dataList = []; + + for (var _iterator23 = _createForOfIteratorHelperLoose(_json_), _step23; !(_step23 = _iterator23()).done;) { + var _json2_ = _step23.value; + + var _v = void 0; + + _v = new TB.TbGRoleCStar(_json2_); + + this._dataList.push(_v); + + this._dataMap.set(_v.grade, _v); + } + } + + var _proto19 = TbGRoleCStar.prototype; + + _proto19.getDataMap = function getDataMap() { + return this._dataMap; + }; + + _proto19.getDataList = function getDataList() { + return this._dataList; + }; + + _proto19.get = function get(key) { + return this._dataMap.get(key); + }; + + _proto19.resolve = function resolve(tables) { + for (var _iterator24 = _createForOfIteratorHelperLoose(this._dataList), _step24; !(_step24 = _iterator24()).done;) { + var data = _step24.value; + data.resolve(tables); + } + }; + + return TbGRoleCStar; + }(); + + var Tables = exports('T', /*#__PURE__*/function () { + function Tables(loader) { + this._TbGGlobal = void 0; + this._TbGRole = void 0; + this._TbGRoleAttack = void 0; + this._TbGRoleBattleRes = void 0; + this._TbGRoleSkill = void 0; + this._TbGMap = void 0; + this._TbGOnHookGlobal = void 0; + this._TbGResource = void 0; + this._TbGRoleCUp = void 0; + this._TbGRoleCStar = void 0; + this._TbGGlobal = new TbGGlobal(loader('tbgglobal')); + this._TbGRole = new TbGRole(loader('tbgrole')); + this._TbGRoleAttack = new TbGRoleAttack(loader('tbgroleattack')); + this._TbGRoleBattleRes = new TbGRoleBattleRes(loader('tbgrolebattleres')); + this._TbGRoleSkill = new TbGRoleSkill(loader('tbgroleskill')); + this._TbGMap = new TbGMap(loader('tbgmap')); + this._TbGOnHookGlobal = new TbGOnHookGlobal(loader('tbgonhookglobal')); + this._TbGResource = new TbGResource(loader('tbgresource')); + this._TbGRoleCUp = new TbGRoleCUp(loader('tbgrolecup')); + this._TbGRoleCStar = new TbGRoleCStar(loader('tbgrolecstar')); + + this._TbGGlobal.resolve(this); + + this._TbGRole.resolve(this); + + this._TbGRoleAttack.resolve(this); + + this._TbGRoleBattleRes.resolve(this); + + this._TbGRoleSkill.resolve(this); + + this._TbGMap.resolve(this); + + this._TbGOnHookGlobal.resolve(this); + + this._TbGResource.resolve(this); + + this._TbGRoleCUp.resolve(this); + + this._TbGRoleCStar.resolve(this); + } + + _createClass(Tables, [{ + key: "TbGGlobal", + get: function get() { + return this._TbGGlobal; + } + }, { + key: "TbGRole", + get: function get() { + return this._TbGRole; + } + }, { + key: "TbGRoleAttack", + get: function get() { + return this._TbGRoleAttack; + } + }, { + key: "TbGRoleBattleRes", + get: function get() { + return this._TbGRoleBattleRes; + } + }, { + key: "TbGRoleSkill", + get: function get() { + return this._TbGRoleSkill; + } + }, { + key: "TbGMap", + get: function get() { + return this._TbGMap; + } + }, { + key: "TbGOnHookGlobal", + get: function get() { + return this._TbGOnHookGlobal; + } + }, { + key: "TbGResource", + get: function get() { + return this._TbGResource; + } + }, { + key: "TbGRoleCUp", + get: function get() { + return this._TbGRoleCUp; + } + }, { + key: "TbGRoleCStar", + get: function get() { + return this._TbGRoleCStar; + } + }]); + + return Tables; + }()); + + cclegacy._RF.pop(); + } + }; +}); + +} }; }); \ No newline at end of file diff --git a/headless/static/src/import-map.json b/headless/static/src/import-map.json new file mode 100644 index 00000000..a75609be --- /dev/null +++ b/headless/static/src/import-map.json @@ -0,0 +1,5 @@ +{ + "imports": { + "cc": "./../cocos-js/cc.js" + } +} \ No newline at end of file diff --git a/headless/static/src/ngame/ngame/plugins/protobuf.js b/headless/static/src/ngame/ngame/plugins/protobuf.js new file mode 100644 index 00000000..12cd9a30 --- /dev/null +++ b/headless/static/src/ngame/ngame/plugins/protobuf.js @@ -0,0 +1,9088 @@ +/*! + * protobuf.js v7.2.5 (c) 2016, daniel wirtz + * compiled tue, 22 aug 2023 00:04:28 utc + * licensed under the bsd-3-clause license + * see: https://github.com/dcodeio/protobuf.js for details + */ +(function(undefined){"use strict";(function prelude(modules, cache, entries) { + + // This is the prelude used to bundle protobuf.js for the browser. Wraps up the CommonJS + // sources through a conflict-free require shim and is again wrapped within an iife that + // provides a minification-friendly `undefined` var plus a global "use strict" directive + // so that minification can remove the directives of each module. + + function $require(name) { + var $module = cache[name]; + if (!$module) + modules[name][0].call($module = cache[name] = { exports: {} }, $require, $module, $module.exports); + return $module.exports; + } + + var protobuf = $require(entries[0]); + + // Expose globally + protobuf.util.global.protobuf = protobuf; + + // Be nice to AMD + if (typeof define === "function" && define.amd) + define(["long"], function(Long) { + if (Long && Long.isLong) { + protobuf.util.Long = Long; + protobuf.configure(); + } + return protobuf; + }); + + // Be nice to CommonJS + if (typeof module === "object" && module && module.exports) + module.exports = protobuf; + +})/* end of prelude */({1:[function(require,module,exports){ +"use strict"; +module.exports = asPromise; + +/** + * Callback as used by {@link util.asPromise}. + * @typedef asPromiseCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {...*} params Additional arguments + * @returns {undefined} + */ + +/** + * Returns a promise from a node-style callback function. + * @memberof util + * @param {asPromiseCallback} fn Function to call + * @param {*} ctx Function context + * @param {...*} params Function arguments + * @returns {Promise<*>} Promisified function + */ +function asPromise(fn, ctx/*, varargs */) { + var params = new Array(arguments.length - 1), + offset = 0, + index = 2, + pending = true; + while (index < arguments.length) + params[offset++] = arguments[index++]; + return new Promise(function executor(resolve, reject) { + params[offset] = function callback(err/*, varargs */) { + if (pending) { + pending = false; + if (err) + reject(err); + else { + var params = new Array(arguments.length - 1), + offset = 0; + while (offset < params.length) + params[offset++] = arguments[offset]; + resolve.apply(null, params); + } + } + }; + try { + fn.apply(ctx || null, params); + } catch (err) { + if (pending) { + pending = false; + reject(err); + } + } + }); +} + +},{}],2:[function(require,module,exports){ +"use strict"; + +/** + * A minimal base64 implementation for number arrays. + * @memberof util + * @namespace + */ +var base64 = exports; + +/** + * Calculates the byte length of a base64 encoded string. + * @param {string} string Base64 encoded string + * @returns {number} Byte length + */ +base64.length = function length(string) { + var p = string.length; + if (!p) + return 0; + var n = 0; + while (--p % 4 > 1 && string.charAt(p) === "=") + ++n; + return Math.ceil(string.length * 3) / 4 - n; +}; + +// Base64 encoding table +var b64 = new Array(64); + +// Base64 decoding table +var s64 = new Array(123); + +// 65..90, 97..122, 48..57, 43, 47 +for (var i = 0; i < 64;) + s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++; + +/** + * Encodes a buffer to a base64 encoded string. + * @param {Uint8Array} buffer Source buffer + * @param {number} start Source start + * @param {number} end Source end + * @returns {string} Base64 encoded string + */ +base64.encode = function encode(buffer, start, end) { + var parts = null, + chunk = []; + var i = 0, // output index + j = 0, // goto index + t; // temporary + while (start < end) { + var b = buffer[start++]; + switch (j) { + case 0: + chunk[i++] = b64[b >> 2]; + t = (b & 3) << 4; + j = 1; + break; + case 1: + chunk[i++] = b64[t | b >> 4]; + t = (b & 15) << 2; + j = 2; + break; + case 2: + chunk[i++] = b64[t | b >> 6]; + chunk[i++] = b64[b & 63]; + j = 0; + break; + } + if (i > 8191) { + (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk)); + i = 0; + } + } + if (j) { + chunk[i++] = b64[t]; + chunk[i++] = 61; + if (j === 1) + chunk[i++] = 61; + } + if (parts) { + if (i) + parts.push(String.fromCharCode.apply(String, chunk.slice(0, i))); + return parts.join(""); + } + return String.fromCharCode.apply(String, chunk.slice(0, i)); +}; + +var invalidEncoding = "invalid encoding"; + +/** + * Decodes a base64 encoded string to a buffer. + * @param {string} string Source string + * @param {Uint8Array} buffer Destination buffer + * @param {number} offset Destination offset + * @returns {number} Number of bytes written + * @throws {Error} If encoding is invalid + */ +base64.decode = function decode(string, buffer, offset) { + var start = offset; + var j = 0, // goto index + t; // temporary + for (var i = 0; i < string.length;) { + var c = string.charCodeAt(i++); + if (c === 61 && j > 1) + break; + if ((c = s64[c]) === undefined) + throw Error(invalidEncoding); + switch (j) { + case 0: + t = c; + j = 1; + break; + case 1: + buffer[offset++] = t << 2 | (c & 48) >> 4; + t = c; + j = 2; + break; + case 2: + buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2; + t = c; + j = 3; + break; + case 3: + buffer[offset++] = (t & 3) << 6 | c; + j = 0; + break; + } + } + if (j === 1) + throw Error(invalidEncoding); + return offset - start; +}; + +/** + * Tests if the specified string appears to be base64 encoded. + * @param {string} string String to test + * @returns {boolean} `true` if probably base64 encoded, otherwise false + */ +base64.test = function test(string) { + return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string); +}; + +},{}],3:[function(require,module,exports){ +"use strict"; +module.exports = codegen; + +/** + * Begins generating a function. + * @memberof util + * @param {string[]} functionParams Function parameter names + * @param {string} [functionName] Function name if not anonymous + * @returns {Codegen} Appender that appends code to the function's body + */ +function codegen(functionParams, functionName) { + + /* istanbul ignore if */ + if (typeof functionParams === "string") { + functionName = functionParams; + functionParams = undefined; + } + + var body = []; + + /** + * Appends code to the function's body or finishes generation. + * @typedef Codegen + * @type {function} + * @param {string|Object.} [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any + * @param {...*} [formatParams] Format parameters + * @returns {Codegen|Function} Itself or the generated function if finished + * @throws {Error} If format parameter counts do not match + */ + + function Codegen(formatStringOrScope) { + // note that explicit array handling below makes this ~50% faster + + // finish the function + if (typeof formatStringOrScope !== "string") { + var source = toString(); + if (codegen.verbose) + console.log("codegen: " + source); // eslint-disable-line no-console + source = "return " + source; + if (formatStringOrScope) { + var scopeKeys = Object.keys(formatStringOrScope), + scopeParams = new Array(scopeKeys.length + 1), + scopeValues = new Array(scopeKeys.length), + scopeOffset = 0; + while (scopeOffset < scopeKeys.length) { + scopeParams[scopeOffset] = scopeKeys[scopeOffset]; + scopeValues[scopeOffset] = formatStringOrScope[scopeKeys[scopeOffset++]]; + } + scopeParams[scopeOffset] = source; + return Function.apply(null, scopeParams).apply(null, scopeValues); // eslint-disable-line no-new-func + } + return Function(source)(); // eslint-disable-line no-new-func + } + + // otherwise append to body + var formatParams = new Array(arguments.length - 1), + formatOffset = 0; + while (formatOffset < formatParams.length) + formatParams[formatOffset] = arguments[++formatOffset]; + formatOffset = 0; + formatStringOrScope = formatStringOrScope.replace(/%([%dfijs])/g, function replace($0, $1) { + var value = formatParams[formatOffset++]; + switch ($1) { + case "d": case "f": return String(Number(value)); + case "i": return String(Math.floor(value)); + case "j": return JSON.stringify(value); + case "s": return String(value); + } + return "%"; + }); + if (formatOffset !== formatParams.length) + throw Error("parameter count mismatch"); + body.push(formatStringOrScope); + return Codegen; + } + + function toString(functionNameOverride) { + return "function " + (functionNameOverride || functionName || "") + "(" + (functionParams && functionParams.join(",") || "") + "){\n " + body.join("\n ") + "\n}"; + } + + Codegen.toString = toString; + return Codegen; +} + +/** + * Begins generating a function. + * @memberof util + * @function codegen + * @param {string} [functionName] Function name if not anonymous + * @returns {Codegen} Appender that appends code to the function's body + * @variation 2 + */ + +/** + * When set to `true`, codegen will log generated code to console. Useful for debugging. + * @name util.codegen.verbose + * @type {boolean} + */ +codegen.verbose = false; + +},{}],4:[function(require,module,exports){ +"use strict"; +module.exports = EventEmitter; + +/** + * Constructs a new event emitter instance. + * @classdesc A minimal event emitter. + * @memberof util + * @constructor + */ +function EventEmitter() { + + /** + * Registered listeners. + * @type {Object.} + * @private + */ + this._listeners = {}; +} + +/** + * Registers an event listener. + * @param {string} evt Event name + * @param {function} fn Listener + * @param {*} [ctx] Listener context + * @returns {util.EventEmitter} `this` + */ +EventEmitter.prototype.on = function on(evt, fn, ctx) { + (this._listeners[evt] || (this._listeners[evt] = [])).push({ + fn : fn, + ctx : ctx || this + }); + return this; +}; + +/** + * Removes an event listener or any matching listeners if arguments are omitted. + * @param {string} [evt] Event name. Removes all listeners if omitted. + * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted. + * @returns {util.EventEmitter} `this` + */ +EventEmitter.prototype.off = function off(evt, fn) { + if (evt === undefined) + this._listeners = {}; + else { + if (fn === undefined) + this._listeners[evt] = []; + else { + var listeners = this._listeners[evt]; + for (var i = 0; i < listeners.length;) + if (listeners[i].fn === fn) + listeners.splice(i, 1); + else + ++i; + } + } + return this; +}; + +/** + * Emits an event by calling its listeners with the specified arguments. + * @param {string} evt Event name + * @param {...*} args Arguments + * @returns {util.EventEmitter} `this` + */ +EventEmitter.prototype.emit = function emit(evt) { + var listeners = this._listeners[evt]; + if (listeners) { + var args = [], + i = 1; + for (; i < arguments.length;) + args.push(arguments[i++]); + for (i = 0; i < listeners.length;) + listeners[i].fn.apply(listeners[i++].ctx, args); + } + return this; +}; + +},{}],5:[function(require,module,exports){ +"use strict"; +module.exports = fetch; + +var asPromise = require(1), + inquire = require(7); + +var fs = inquire("fs"); + +/** + * Node-style callback as used by {@link util.fetch}. + * @typedef FetchCallback + * @type {function} + * @param {?Error} error Error, if any, otherwise `null` + * @param {string} [contents] File contents, if there hasn't been an error + * @returns {undefined} + */ + +/** + * Options as used by {@link util.fetch}. + * @typedef FetchOptions + * @type {Object} + * @property {boolean} [binary=false] Whether expecting a binary response + * @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest + */ + +/** + * Fetches the contents of a file. + * @memberof util + * @param {string} filename File path or url + * @param {FetchOptions} options Fetch options + * @param {FetchCallback} callback Callback function + * @returns {undefined} + */ +function fetch(filename, options, callback) { + if (typeof options === "function") { + callback = options; + options = {}; + } else if (!options) + options = {}; + + if (!callback) + return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this + + // if a node-like filesystem is present, try it first but fall back to XHR if nothing is found. + if (!options.xhr && fs && fs.readFile) + return fs.readFile(filename, function fetchReadFileCallback(err, contents) { + return err && typeof XMLHttpRequest !== "undefined" + ? fetch.xhr(filename, options, callback) + : err + ? callback(err) + : callback(null, options.binary ? contents : contents.toString("utf8")); + }); + + // use the XHR version otherwise. + return fetch.xhr(filename, options, callback); +} + +/** + * Fetches the contents of a file. + * @name util.fetch + * @function + * @param {string} path File path or url + * @param {FetchCallback} callback Callback function + * @returns {undefined} + * @variation 2 + */ + +/** + * Fetches the contents of a file. + * @name util.fetch + * @function + * @param {string} path File path or url + * @param {FetchOptions} [options] Fetch options + * @returns {Promise} Promise + * @variation 3 + */ + +/**/ +fetch.xhr = function fetch_xhr(filename, options, callback) { + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() { + + if (xhr.readyState !== 4) + return undefined; + + // local cors security errors return status 0 / empty string, too. afaik this cannot be + // reliably distinguished from an actually empty file for security reasons. feel free + // to send a pull request if you are aware of a solution. + if (xhr.status !== 0 && xhr.status !== 200) + return callback(Error("status " + xhr.status)); + + // if binary data is expected, make sure that some sort of array is returned, even if + // ArrayBuffers are not supported. the binary string fallback, however, is unsafe. + if (options.binary) { + var buffer = xhr.response; + if (!buffer) { + buffer = []; + for (var i = 0; i < xhr.responseText.length; ++i) + buffer.push(xhr.responseText.charCodeAt(i) & 255); + } + return callback(null, typeof Uint8Array !== "undefined" ? new Uint8Array(buffer) : buffer); + } + return callback(null, xhr.responseText); + }; + + if (options.binary) { + // ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers + if ("overrideMimeType" in xhr) + xhr.overrideMimeType("text/plain; charset=x-user-defined"); + xhr.responseType = "arraybuffer"; + } + + xhr.open("GET", filename); + xhr.send(); +}; + +},{"1":1,"7":7}],6:[function(require,module,exports){ +"use strict"; + +module.exports = factory(factory); + +/** + * Reads / writes floats / doubles from / to buffers. + * @name util.float + * @namespace + */ + +/** + * Writes a 32 bit float to a buffer using little endian byte order. + * @name util.float.writeFloatLE + * @function + * @param {number} val Value to write + * @param {Uint8Array} buf Target buffer + * @param {number} pos Target buffer offset + * @returns {undefined} + */ + +/** + * Writes a 32 bit float to a buffer using big endian byte order. + * @name util.float.writeFloatBE + * @function + * @param {number} val Value to write + * @param {Uint8Array} buf Target buffer + * @param {number} pos Target buffer offset + * @returns {undefined} + */ + +/** + * Reads a 32 bit float from a buffer using little endian byte order. + * @name util.float.readFloatLE + * @function + * @param {Uint8Array} buf Source buffer + * @param {number} pos Source buffer offset + * @returns {number} Value read + */ + +/** + * Reads a 32 bit float from a buffer using big endian byte order. + * @name util.float.readFloatBE + * @function + * @param {Uint8Array} buf Source buffer + * @param {number} pos Source buffer offset + * @returns {number} Value read + */ + +/** + * Writes a 64 bit double to a buffer using little endian byte order. + * @name util.float.writeDoubleLE + * @function + * @param {number} val Value to write + * @param {Uint8Array} buf Target buffer + * @param {number} pos Target buffer offset + * @returns {undefined} + */ + +/** + * Writes a 64 bit double to a buffer using big endian byte order. + * @name util.float.writeDoubleBE + * @function + * @param {number} val Value to write + * @param {Uint8Array} buf Target buffer + * @param {number} pos Target buffer offset + * @returns {undefined} + */ + +/** + * Reads a 64 bit double from a buffer using little endian byte order. + * @name util.float.readDoubleLE + * @function + * @param {Uint8Array} buf Source buffer + * @param {number} pos Source buffer offset + * @returns {number} Value read + */ + +/** + * Reads a 64 bit double from a buffer using big endian byte order. + * @name util.float.readDoubleBE + * @function + * @param {Uint8Array} buf Source buffer + * @param {number} pos Source buffer offset + * @returns {number} Value read + */ + +// Factory function for the purpose of node-based testing in modified global environments +function factory(exports) { + + // float: typed array + if (typeof Float32Array !== "undefined") (function() { + + var f32 = new Float32Array([ -0 ]), + f8b = new Uint8Array(f32.buffer), + le = f8b[3] === 128; + + function writeFloat_f32_cpy(val, buf, pos) { + f32[0] = val; + buf[pos ] = f8b[0]; + buf[pos + 1] = f8b[1]; + buf[pos + 2] = f8b[2]; + buf[pos + 3] = f8b[3]; + } + + function writeFloat_f32_rev(val, buf, pos) { + f32[0] = val; + buf[pos ] = f8b[3]; + buf[pos + 1] = f8b[2]; + buf[pos + 2] = f8b[1]; + buf[pos + 3] = f8b[0]; + } + + /* istanbul ignore next */ + exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev; + /* istanbul ignore next */ + exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy; + + function readFloat_f32_cpy(buf, pos) { + f8b[0] = buf[pos ]; + f8b[1] = buf[pos + 1]; + f8b[2] = buf[pos + 2]; + f8b[3] = buf[pos + 3]; + return f32[0]; + } + + function readFloat_f32_rev(buf, pos) { + f8b[3] = buf[pos ]; + f8b[2] = buf[pos + 1]; + f8b[1] = buf[pos + 2]; + f8b[0] = buf[pos + 3]; + return f32[0]; + } + + /* istanbul ignore next */ + exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev; + /* istanbul ignore next */ + exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy; + + // float: ieee754 + })(); else (function() { + + function writeFloat_ieee754(writeUint, val, buf, pos) { + var sign = val < 0 ? 1 : 0; + if (sign) + val = -val; + if (val === 0) + writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos); + else if (isNaN(val)) + writeUint(2143289344, buf, pos); + else if (val > 3.4028234663852886e+38) // +-Infinity + writeUint((sign << 31 | 2139095040) >>> 0, buf, pos); + else if (val < 1.1754943508222875e-38) // denormal + writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos); + else { + var exponent = Math.floor(Math.log(val) / Math.LN2), + mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607; + writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos); + } + } + + exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE); + exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE); + + function readFloat_ieee754(readUint, buf, pos) { + var uint = readUint(buf, pos), + sign = (uint >> 31) * 2 + 1, + exponent = uint >>> 23 & 255, + mantissa = uint & 8388607; + return exponent === 255 + ? mantissa + ? NaN + : sign * Infinity + : exponent === 0 // denormal + ? sign * 1.401298464324817e-45 * mantissa + : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608); + } + + exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE); + exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE); + + })(); + + // double: typed array + if (typeof Float64Array !== "undefined") (function() { + + var f64 = new Float64Array([-0]), + f8b = new Uint8Array(f64.buffer), + le = f8b[7] === 128; + + function writeDouble_f64_cpy(val, buf, pos) { + f64[0] = val; + buf[pos ] = f8b[0]; + buf[pos + 1] = f8b[1]; + buf[pos + 2] = f8b[2]; + buf[pos + 3] = f8b[3]; + buf[pos + 4] = f8b[4]; + buf[pos + 5] = f8b[5]; + buf[pos + 6] = f8b[6]; + buf[pos + 7] = f8b[7]; + } + + function writeDouble_f64_rev(val, buf, pos) { + f64[0] = val; + buf[pos ] = f8b[7]; + buf[pos + 1] = f8b[6]; + buf[pos + 2] = f8b[5]; + buf[pos + 3] = f8b[4]; + buf[pos + 4] = f8b[3]; + buf[pos + 5] = f8b[2]; + buf[pos + 6] = f8b[1]; + buf[pos + 7] = f8b[0]; + } + + /* istanbul ignore next */ + exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev; + /* istanbul ignore next */ + exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy; + + function readDouble_f64_cpy(buf, pos) { + f8b[0] = buf[pos ]; + f8b[1] = buf[pos + 1]; + f8b[2] = buf[pos + 2]; + f8b[3] = buf[pos + 3]; + f8b[4] = buf[pos + 4]; + f8b[5] = buf[pos + 5]; + f8b[6] = buf[pos + 6]; + f8b[7] = buf[pos + 7]; + return f64[0]; + } + + function readDouble_f64_rev(buf, pos) { + f8b[7] = buf[pos ]; + f8b[6] = buf[pos + 1]; + f8b[5] = buf[pos + 2]; + f8b[4] = buf[pos + 3]; + f8b[3] = buf[pos + 4]; + f8b[2] = buf[pos + 5]; + f8b[1] = buf[pos + 6]; + f8b[0] = buf[pos + 7]; + return f64[0]; + } + + /* istanbul ignore next */ + exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev; + /* istanbul ignore next */ + exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy; + + // double: ieee754 + })(); else (function() { + + function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) { + var sign = val < 0 ? 1 : 0; + if (sign) + val = -val; + if (val === 0) { + writeUint(0, buf, pos + off0); + writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1); + } else if (isNaN(val)) { + writeUint(0, buf, pos + off0); + writeUint(2146959360, buf, pos + off1); + } else if (val > 1.7976931348623157e+308) { // +-Infinity + writeUint(0, buf, pos + off0); + writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1); + } else { + var mantissa; + if (val < 2.2250738585072014e-308) { // denormal + mantissa = val / 5e-324; + writeUint(mantissa >>> 0, buf, pos + off0); + writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1); + } else { + var exponent = Math.floor(Math.log(val) / Math.LN2); + if (exponent === 1024) + exponent = 1023; + mantissa = val * Math.pow(2, -exponent); + writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0); + writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1); + } + } + } + + exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4); + exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0); + + function readDouble_ieee754(readUint, off0, off1, buf, pos) { + var lo = readUint(buf, pos + off0), + hi = readUint(buf, pos + off1); + var sign = (hi >> 31) * 2 + 1, + exponent = hi >>> 20 & 2047, + mantissa = 4294967296 * (hi & 1048575) + lo; + return exponent === 2047 + ? mantissa + ? NaN + : sign * Infinity + : exponent === 0 // denormal + ? sign * 5e-324 * mantissa + : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496); + } + + exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4); + exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0); + + })(); + + return exports; +} + +// uint helpers + +function writeUintLE(val, buf, pos) { + buf[pos ] = val & 255; + buf[pos + 1] = val >>> 8 & 255; + buf[pos + 2] = val >>> 16 & 255; + buf[pos + 3] = val >>> 24; +} + +function writeUintBE(val, buf, pos) { + buf[pos ] = val >>> 24; + buf[pos + 1] = val >>> 16 & 255; + buf[pos + 2] = val >>> 8 & 255; + buf[pos + 3] = val & 255; +} + +function readUintLE(buf, pos) { + return (buf[pos ] + | buf[pos + 1] << 8 + | buf[pos + 2] << 16 + | buf[pos + 3] << 24) >>> 0; +} + +function readUintBE(buf, pos) { + return (buf[pos ] << 24 + | buf[pos + 1] << 16 + | buf[pos + 2] << 8 + | buf[pos + 3]) >>> 0; +} + +},{}],7:[function(require,module,exports){ +"use strict"; +module.exports = inquire; + +/** + * Requires a module only if available. + * @memberof util + * @param {string} moduleName Module to require + * @returns {?Object} Required module if available and not empty, otherwise `null` + */ +function inquire(moduleName) { + try { + var mod = eval("quire".replace(/^/,"re"))(moduleName); // eslint-disable-line no-eval + if (mod && (mod.length || Object.keys(mod).length)) + return mod; + } catch (e) {} // eslint-disable-line no-empty + return null; +} + +},{}],8:[function(require,module,exports){ +"use strict"; + +/** + * A minimal path module to resolve Unix, Windows and URL paths alike. + * @memberof util + * @namespace + */ +var path = exports; + +var isAbsolute = +/** + * Tests if the specified path is absolute. + * @param {string} path Path to test + * @returns {boolean} `true` if path is absolute + */ +path.isAbsolute = function isAbsolute(path) { + return /^(?:\/|\w+:)/.test(path); +}; + +var normalize = +/** + * Normalizes the specified path. + * @param {string} path Path to normalize + * @returns {string} Normalized path + */ +path.normalize = function normalize(path) { + path = path.replace(/\\/g, "/") + .replace(/\/{2,}/g, "/"); + var parts = path.split("/"), + absolute = isAbsolute(path), + prefix = ""; + if (absolute) + prefix = parts.shift() + "/"; + for (var i = 0; i < parts.length;) { + if (parts[i] === "..") { + if (i > 0 && parts[i - 1] !== "..") + parts.splice(--i, 2); + else if (absolute) + parts.splice(i, 1); + else + ++i; + } else if (parts[i] === ".") + parts.splice(i, 1); + else + ++i; + } + return prefix + parts.join("/"); +}; + +/** + * Resolves the specified include path against the specified origin path. + * @param {string} originPath Path to the origin file + * @param {string} includePath Include path relative to origin path + * @param {boolean} [alreadyNormalized=false] `true` if both paths are already known to be normalized + * @returns {string} Path to the include file + */ +path.resolve = function resolve(originPath, includePath, alreadyNormalized) { + if (!alreadyNormalized) + includePath = normalize(includePath); + if (isAbsolute(includePath)) + return includePath; + if (!alreadyNormalized) + originPath = normalize(originPath); + return (originPath = originPath.replace(/(?:\/|^)[^/]+$/, "")).length ? normalize(originPath + "/" + includePath) : includePath; +}; + +},{}],9:[function(require,module,exports){ +"use strict"; +module.exports = pool; + +/** + * An allocator as used by {@link util.pool}. + * @typedef PoolAllocator + * @type {function} + * @param {number} size Buffer size + * @returns {Uint8Array} Buffer + */ + +/** + * A slicer as used by {@link util.pool}. + * @typedef PoolSlicer + * @type {function} + * @param {number} start Start offset + * @param {number} end End offset + * @returns {Uint8Array} Buffer slice + * @this {Uint8Array} + */ + +/** + * A general purpose buffer pool. + * @memberof util + * @function + * @param {PoolAllocator} alloc Allocator + * @param {PoolSlicer} slice Slicer + * @param {number} [size=8192] Slab size + * @returns {PoolAllocator} Pooled allocator + */ +function pool(alloc, slice, size) { + var SIZE = size || 8192; + var MAX = SIZE >>> 1; + var slab = null; + var offset = SIZE; + return function pool_alloc(size) { + if (size < 1 || size > MAX) + return alloc(size); + if (offset + size > SIZE) { + slab = alloc(SIZE); + offset = 0; + } + var buf = slice.call(slab, offset, offset += size); + if (offset & 7) // align to 32 bit + offset = (offset | 7) + 1; + return buf; + }; +} + +},{}],10:[function(require,module,exports){ +"use strict"; + +/** + * A minimal UTF8 implementation for number arrays. + * @memberof util + * @namespace + */ +var utf8 = exports; + +/** + * Calculates the UTF8 byte length of a string. + * @param {string} string String + * @returns {number} Byte length + */ +utf8.length = function utf8_length(string) { + var len = 0, + c = 0; + for (var i = 0; i < string.length; ++i) { + c = string.charCodeAt(i); + if (c < 128) + len += 1; + else if (c < 2048) + len += 2; + else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) { + ++i; + len += 4; + } else + len += 3; + } + return len; +}; + +/** + * Reads UTF8 bytes as a string. + * @param {Uint8Array} buffer Source buffer + * @param {number} start Source start + * @param {number} end Source end + * @returns {string} String read + */ +utf8.read = function utf8_read(buffer, start, end) { + var len = end - start; + if (len < 1) + return ""; + var parts = null, + chunk = [], + i = 0, // char offset + t; // temporary + while (start < end) { + t = buffer[start++]; + if (t < 128) + chunk[i++] = t; + else if (t > 191 && t < 224) + chunk[i++] = (t & 31) << 6 | buffer[start++] & 63; + else if (t > 239 && t < 365) { + t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000; + chunk[i++] = 0xD800 + (t >> 10); + chunk[i++] = 0xDC00 + (t & 1023); + } else + chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63; + if (i > 8191) { + (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk)); + i = 0; + } + } + if (parts) { + if (i) + parts.push(String.fromCharCode.apply(String, chunk.slice(0, i))); + return parts.join(""); + } + return String.fromCharCode.apply(String, chunk.slice(0, i)); +}; + +/** + * Writes a string as UTF8 bytes. + * @param {string} string Source string + * @param {Uint8Array} buffer Destination buffer + * @param {number} offset Destination offset + * @returns {number} Bytes written + */ +utf8.write = function utf8_write(string, buffer, offset) { + var start = offset, + c1, // character 1 + c2; // character 2 + for (var i = 0; i < string.length; ++i) { + c1 = string.charCodeAt(i); + if (c1 < 128) { + buffer[offset++] = c1; + } else if (c1 < 2048) { + buffer[offset++] = c1 >> 6 | 192; + buffer[offset++] = c1 & 63 | 128; + } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) { + c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF); + ++i; + buffer[offset++] = c1 >> 18 | 240; + buffer[offset++] = c1 >> 12 & 63 | 128; + buffer[offset++] = c1 >> 6 & 63 | 128; + buffer[offset++] = c1 & 63 | 128; + } else { + buffer[offset++] = c1 >> 12 | 224; + buffer[offset++] = c1 >> 6 & 63 | 128; + buffer[offset++] = c1 & 63 | 128; + } + } + return offset - start; +}; + +},{}],11:[function(require,module,exports){ +"use strict"; +module.exports = common; + +var commonRe = /\/|\./; + +/** + * Provides common type definitions. + * Can also be used to provide additional google types or your own custom types. + * @param {string} name Short name as in `google/protobuf/[name].proto` or full file name + * @param {Object.} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition + * @returns {undefined} + * @property {INamespace} google/protobuf/any.proto Any + * @property {INamespace} google/protobuf/duration.proto Duration + * @property {INamespace} google/protobuf/empty.proto Empty + * @property {INamespace} google/protobuf/field_mask.proto FieldMask + * @property {INamespace} google/protobuf/struct.proto Struct, Value, NullValue and ListValue + * @property {INamespace} google/protobuf/timestamp.proto Timestamp + * @property {INamespace} google/protobuf/wrappers.proto Wrappers + * @example + * // manually provides descriptor.proto (assumes google/protobuf/ namespace and .proto extension) + * protobuf.common("descriptor", descriptorJson); + * + * // manually provides a custom definition (uses my.foo namespace) + * protobuf.common("my/foo/bar.proto", myFooBarJson); + */ +function common(name, json) { + if (!commonRe.test(name)) { + name = "google/protobuf/" + name + ".proto"; + json = { nested: { google: { nested: { protobuf: { nested: json } } } } }; + } + common[name] = json; +} + +// Not provided because of limited use (feel free to discuss or to provide yourself): +// +// google/protobuf/descriptor.proto +// google/protobuf/source_context.proto +// google/protobuf/type.proto +// +// Stripped and pre-parsed versions of these non-bundled files are instead available as part of +// the repository or package within the google/protobuf directory. + +common("any", { + + /** + * Properties of a google.protobuf.Any message. + * @interface IAny + * @type {Object} + * @property {string} [typeUrl] + * @property {Uint8Array} [bytes] + * @memberof common + */ + Any: { + fields: { + type_url: { + type: "string", + id: 1 + }, + value: { + type: "bytes", + id: 2 + } + } + } +}); + +var timeType; + +common("duration", { + + /** + * Properties of a google.protobuf.Duration message. + * @interface IDuration + * @type {Object} + * @property {number|Long} [seconds] + * @property {number} [nanos] + * @memberof common + */ + Duration: timeType = { + fields: { + seconds: { + type: "int64", + id: 1 + }, + nanos: { + type: "int32", + id: 2 + } + } + } +}); + +common("timestamp", { + + /** + * Properties of a google.protobuf.Timestamp message. + * @interface ITimestamp + * @type {Object} + * @property {number|Long} [seconds] + * @property {number} [nanos] + * @memberof common + */ + Timestamp: timeType +}); + +common("empty", { + + /** + * Properties of a google.protobuf.Empty message. + * @interface IEmpty + * @memberof common + */ + Empty: { + fields: {} + } +}); + +common("struct", { + + /** + * Properties of a google.protobuf.Struct message. + * @interface IStruct + * @type {Object} + * @property {Object.} [fields] + * @memberof common + */ + Struct: { + fields: { + fields: { + keyType: "string", + type: "Value", + id: 1 + } + } + }, + + /** + * Properties of a google.protobuf.Value message. + * @interface IValue + * @type {Object} + * @property {string} [kind] + * @property {0} [nullValue] + * @property {number} [numberValue] + * @property {string} [stringValue] + * @property {boolean} [boolValue] + * @property {IStruct} [structValue] + * @property {IListValue} [listValue] + * @memberof common + */ + Value: { + oneofs: { + kind: { + oneof: [ + "nullValue", + "numberValue", + "stringValue", + "boolValue", + "structValue", + "listValue" + ] + } + }, + fields: { + nullValue: { + type: "NullValue", + id: 1 + }, + numberValue: { + type: "double", + id: 2 + }, + stringValue: { + type: "string", + id: 3 + }, + boolValue: { + type: "bool", + id: 4 + }, + structValue: { + type: "Struct", + id: 5 + }, + listValue: { + type: "ListValue", + id: 6 + } + } + }, + + NullValue: { + values: { + NULL_VALUE: 0 + } + }, + + /** + * Properties of a google.protobuf.ListValue message. + * @interface IListValue + * @type {Object} + * @property {Array.} [values] + * @memberof common + */ + ListValue: { + fields: { + values: { + rule: "repeated", + type: "Value", + id: 1 + } + } + } +}); + +common("wrappers", { + + /** + * Properties of a google.protobuf.DoubleValue message. + * @interface IDoubleValue + * @type {Object} + * @property {number} [value] + * @memberof common + */ + DoubleValue: { + fields: { + value: { + type: "double", + id: 1 + } + } + }, + + /** + * Properties of a google.protobuf.FloatValue message. + * @interface IFloatValue + * @type {Object} + * @property {number} [value] + * @memberof common + */ + FloatValue: { + fields: { + value: { + type: "float", + id: 1 + } + } + }, + + /** + * Properties of a google.protobuf.Int64Value message. + * @interface IInt64Value + * @type {Object} + * @property {number|Long} [value] + * @memberof common + */ + Int64Value: { + fields: { + value: { + type: "int64", + id: 1 + } + } + }, + + /** + * Properties of a google.protobuf.UInt64Value message. + * @interface IUInt64Value + * @type {Object} + * @property {number|Long} [value] + * @memberof common + */ + UInt64Value: { + fields: { + value: { + type: "uint64", + id: 1 + } + } + }, + + /** + * Properties of a google.protobuf.Int32Value message. + * @interface IInt32Value + * @type {Object} + * @property {number} [value] + * @memberof common + */ + Int32Value: { + fields: { + value: { + type: "int32", + id: 1 + } + } + }, + + /** + * Properties of a google.protobuf.UInt32Value message. + * @interface IUInt32Value + * @type {Object} + * @property {number} [value] + * @memberof common + */ + UInt32Value: { + fields: { + value: { + type: "uint32", + id: 1 + } + } + }, + + /** + * Properties of a google.protobuf.BoolValue message. + * @interface IBoolValue + * @type {Object} + * @property {boolean} [value] + * @memberof common + */ + BoolValue: { + fields: { + value: { + type: "bool", + id: 1 + } + } + }, + + /** + * Properties of a google.protobuf.StringValue message. + * @interface IStringValue + * @type {Object} + * @property {string} [value] + * @memberof common + */ + StringValue: { + fields: { + value: { + type: "string", + id: 1 + } + } + }, + + /** + * Properties of a google.protobuf.BytesValue message. + * @interface IBytesValue + * @type {Object} + * @property {Uint8Array} [value] + * @memberof common + */ + BytesValue: { + fields: { + value: { + type: "bytes", + id: 1 + } + } + } +}); + +common("field_mask", { + + /** + * Properties of a google.protobuf.FieldMask message. + * @interface IDoubleValue + * @type {Object} + * @property {number} [value] + * @memberof common + */ + FieldMask: { + fields: { + paths: { + rule: "repeated", + type: "string", + id: 1 + } + } + } +}); + +/** + * Gets the root definition of the specified common proto file. + * + * Bundled definitions are: + * - google/protobuf/any.proto + * - google/protobuf/duration.proto + * - google/protobuf/empty.proto + * - google/protobuf/field_mask.proto + * - google/protobuf/struct.proto + * - google/protobuf/timestamp.proto + * - google/protobuf/wrappers.proto + * + * @param {string} file Proto file name + * @returns {INamespace|null} Root definition or `null` if not defined + */ +common.get = function get(file) { + return common[file] || null; +}; + +},{}],12:[function(require,module,exports){ +"use strict"; +/** + * Runtime message from/to plain object converters. + * @namespace + */ +var converter = exports; + +var Enum = require(15), + util = require(37); + +/** + * Generates a partial value fromObject conveter. + * @param {Codegen} gen Codegen instance + * @param {Field} field Reflected field + * @param {number} fieldIndex Field index + * @param {string} prop Property reference + * @returns {Codegen} Codegen instance + * @ignore + */ +function genValuePartial_fromObject(gen, field, fieldIndex, prop) { + var defaultAlreadyEmitted = false; + /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */ + if (field.resolvedType) { + if (field.resolvedType instanceof Enum) { gen + ("switch(d%s){", prop); + for (var values = field.resolvedType.values, keys = Object.keys(values), i = 0; i < keys.length; ++i) { + // enum unknown values passthrough + if (values[keys[i]] === field.typeDefault && !defaultAlreadyEmitted) { gen + ("default:") + ("if(typeof(d%s)===\"number\"){m%s=d%s;break}", prop, prop, prop); + if (!field.repeated) gen // fallback to default value only for + // arrays, to avoid leaving holes. + ("break"); // for non-repeated fields, just ignore + defaultAlreadyEmitted = true; + } + gen + ("case%j:", keys[i]) + ("case %i:", values[keys[i]]) + ("m%s=%j", prop, values[keys[i]]) + ("break"); + } gen + ("}"); + } else gen + ("if(typeof d%s!==\"object\")", prop) + ("throw TypeError(%j)", field.fullName + ": object expected") + ("m%s=types[%i].fromObject(d%s)", prop, fieldIndex, prop); + } else { + var isUnsigned = false; + switch (field.type) { + case "double": + case "float": gen + ("m%s=Number(d%s)", prop, prop); // also catches "NaN", "Infinity" + break; + case "uint32": + case "fixed32": gen + ("m%s=d%s>>>0", prop, prop); + break; + case "int32": + case "sint32": + case "sfixed32": gen + ("m%s=d%s|0", prop, prop); + break; + case "uint64": + isUnsigned = true; + // eslint-disable-next-line no-fallthrough + case "int64": + case "sint64": + case "fixed64": + case "sfixed64": gen + ("if(util.Long)") + ("(m%s=util.Long.fromValue(d%s)).unsigned=%j", prop, prop, isUnsigned) + ("else if(typeof d%s===\"string\")", prop) + ("m%s=parseInt(d%s,10)", prop, prop) + ("else if(typeof d%s===\"number\")", prop) + ("m%s=d%s", prop, prop) + ("else if(typeof d%s===\"object\")", prop) + ("m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)", prop, prop, prop, isUnsigned ? "true" : ""); + break; + case "bytes": gen + ("if(typeof d%s===\"string\")", prop) + ("util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)", prop, prop, prop) + ("else if(d%s.length >= 0)", prop) + ("m%s=d%s", prop, prop); + break; + case "string": gen + ("m%s=String(d%s)", prop, prop); + break; + case "bool": gen + ("m%s=Boolean(d%s)", prop, prop); + break; + /* default: gen + ("m%s=d%s", prop, prop); + break; */ + } + } + return gen; + /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */ +} + +/** + * Generates a plain object to runtime message converter specific to the specified message type. + * @param {Type} mtype Message type + * @returns {Codegen} Codegen instance + */ +converter.fromObject = function fromObject(mtype) { + /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */ + var fields = mtype.fieldsArray; + var gen = util.codegen(["d"], mtype.name + "$fromObject") + ("if(d instanceof this.ctor)") + ("return d"); + if (!fields.length) return gen + ("return new this.ctor"); + gen + ("var m=new this.ctor"); + for (var i = 0; i < fields.length; ++i) { + var field = fields[i].resolve(), + prop = util.safeProp(field.name); + + // Map fields + if (field.map) { gen + ("if(d%s){", prop) + ("if(typeof d%s!==\"object\")", prop) + ("throw TypeError(%j)", field.fullName + ": object expected") + ("m%s={}", prop) + ("for(var ks=Object.keys(d%s),i=0;i>>0,m%s.high>>>0).toNumber(%s):m%s", prop, prop, prop, prop, isUnsigned ? "true": "", prop); + break; + case "bytes": gen + ("d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s", prop, prop, prop, prop, prop); + break; + default: gen + ("d%s=m%s", prop, prop); + break; + } + } + return gen; + /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */ +} + +/** + * Generates a runtime message to plain object converter specific to the specified message type. + * @param {Type} mtype Message type + * @returns {Codegen} Codegen instance + */ +converter.toObject = function toObject(mtype) { + /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */ + var fields = mtype.fieldsArray.slice().sort(util.compareFieldsById); + if (!fields.length) + return util.codegen()("return {}"); + var gen = util.codegen(["m", "o"], mtype.name + "$toObject") + ("if(!o)") + ("o={}") + ("var d={}"); + + var repeatedFields = [], + mapFields = [], + normalFields = [], + i = 0; + for (; i < fields.length; ++i) + if (!fields[i].partOf) + ( fields[i].resolve().repeated ? repeatedFields + : fields[i].map ? mapFields + : normalFields).push(fields[i]); + + if (repeatedFields.length) { gen + ("if(o.arrays||o.defaults){"); + for (i = 0; i < repeatedFields.length; ++i) gen + ("d%s=[]", util.safeProp(repeatedFields[i].name)); + gen + ("}"); + } + + if (mapFields.length) { gen + ("if(o.objects||o.defaults){"); + for (i = 0; i < mapFields.length; ++i) gen + ("d%s={}", util.safeProp(mapFields[i].name)); + gen + ("}"); + } + + if (normalFields.length) { gen + ("if(o.defaults){"); + for (i = 0; i < normalFields.length; ++i) { + var field = normalFields[i], + prop = util.safeProp(field.name); + if (field.resolvedType instanceof Enum) gen + ("d%s=o.enums===String?%j:%j", prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault); + else if (field.long) gen + ("if(util.Long){") + ("var n=new util.Long(%i,%i,%j)", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned) + ("d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n", prop) + ("}else") + ("d%s=o.longs===String?%j:%i", prop, field.typeDefault.toString(), field.typeDefault.toNumber()); + else if (field.bytes) { + var arrayDefault = "[" + Array.prototype.slice.call(field.typeDefault).join(",") + "]"; + gen + ("if(o.bytes===String)d%s=%j", prop, String.fromCharCode.apply(String, field.typeDefault)) + ("else{") + ("d%s=%s", prop, arrayDefault) + ("if(o.bytes!==Array)d%s=util.newBuffer(d%s)", prop, prop) + ("}"); + } else gen + ("d%s=%j", prop, field.typeDefault); // also messages (=null) + } gen + ("}"); + } + var hasKs2 = false; + for (i = 0; i < fields.length; ++i) { + var field = fields[i], + index = mtype._fieldsArray.indexOf(field), + prop = util.safeProp(field.name); + if (field.map) { + if (!hasKs2) { hasKs2 = true; gen + ("var ks2"); + } gen + ("if(m%s&&(ks2=Object.keys(m%s)).length){", prop, prop) + ("d%s={}", prop) + ("for(var j=0;j>>3){"); + + var i = 0; + for (; i < /* initializes */ mtype.fieldsArray.length; ++i) { + var field = mtype._fieldsArray[i].resolve(), + type = field.resolvedType instanceof Enum ? "int32" : field.type, + ref = "m" + util.safeProp(field.name); gen + ("case %i: {", field.id); + + // Map fields + if (field.map) { gen + ("if(%s===util.emptyObject)", ref) + ("%s={}", ref) + ("var c2 = r.uint32()+r.pos"); + + if (types.defaults[field.keyType] !== undefined) gen + ("k=%j", types.defaults[field.keyType]); + else gen + ("k=null"); + + if (types.defaults[type] !== undefined) gen + ("value=%j", types.defaults[type]); + else gen + ("value=null"); + + gen + ("while(r.pos>>3){") + ("case 1: k=r.%s(); break", field.keyType) + ("case 2:"); + + if (types.basic[type] === undefined) gen + ("value=types[%i].decode(r,r.uint32())", i); // can't be groups + else gen + ("value=r.%s()", type); + + gen + ("break") + ("default:") + ("r.skipType(tag2&7)") + ("break") + ("}") + ("}"); + + if (types.long[field.keyType] !== undefined) gen + ("%s[typeof k===\"object\"?util.longToHash(k):k]=value", ref); + else gen + ("%s[k]=value", ref); + + // Repeated fields + } else if (field.repeated) { gen + + ("if(!(%s&&%s.length))", ref, ref) + ("%s=[]", ref); + + // Packable (always check for forward and backward compatiblity) + if (types.packed[type] !== undefined) gen + ("if((t&7)===2){") + ("var c2=r.uint32()+r.pos") + ("while(r.pos>> 0, (field.id << 3 | 4) >>> 0) + : gen("types[%i].encode(%s,w.uint32(%i).fork()).ldelim()", fieldIndex, ref, (field.id << 3 | 2) >>> 0); +} + +/** + * Generates an encoder specific to the specified message type. + * @param {Type} mtype Message type + * @returns {Codegen} Codegen instance + */ +function encoder(mtype) { + /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */ + var gen = util.codegen(["m", "w"], mtype.name + "$encode") + ("if(!w)") + ("w=Writer.create()"); + + var i, ref; + + // "when a message is serialized its known fields should be written sequentially by field number" + var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById); + + for (var i = 0; i < fields.length; ++i) { + var field = fields[i].resolve(), + index = mtype._fieldsArray.indexOf(field), + type = field.resolvedType instanceof Enum ? "int32" : field.type, + wireType = types.basic[type]; + ref = "m" + util.safeProp(field.name); + + // Map fields + if (field.map) { + gen + ("if(%s!=null&&Object.hasOwnProperty.call(m,%j)){", ref, field.name) // !== undefined && !== null + ("for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[field.keyType], field.keyType); + if (wireType === undefined) gen + ("types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()", index, ref); // can't be groups + else gen + (".uint32(%i).%s(%s[ks[i]]).ldelim()", 16 | wireType, type, ref); + gen + ("}") + ("}"); + + // Repeated fields + } else if (field.repeated) { gen + ("if(%s!=null&&%s.length){", ref, ref); // !== undefined && !== null + + // Packed repeated + if (field.packed && types.packed[type] !== undefined) { gen + + ("w.uint32(%i).fork()", (field.id << 3 | 2) >>> 0) + ("for(var i=0;i<%s.length;++i)", ref) + ("w.%s(%s[i])", type, ref) + ("w.ldelim()"); + + // Non-packed + } else { gen + + ("for(var i=0;i<%s.length;++i)", ref); + if (wireType === undefined) + genTypePartial(gen, field, index, ref + "[i]"); + else gen + ("w.uint32(%i).%s(%s[i])", (field.id << 3 | wireType) >>> 0, type, ref); + + } gen + ("}"); + + // Non-repeated + } else { + if (field.optional) gen + ("if(%s!=null&&Object.hasOwnProperty.call(m,%j))", ref, field.name); // !== undefined && !== null + + if (wireType === undefined) + genTypePartial(gen, field, index, ref); + else gen + ("w.uint32(%i).%s(%s)", (field.id << 3 | wireType) >>> 0, type, ref); + + } + } + + return gen + ("return w"); + /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */ +} + +},{"15":15,"36":36,"37":37}],15:[function(require,module,exports){ +"use strict"; +module.exports = Enum; + +// extends ReflectionObject +var ReflectionObject = require(24); +((Enum.prototype = Object.create(ReflectionObject.prototype)).constructor = Enum).className = "Enum"; + +var Namespace = require(23), + util = require(37); + +/** + * Constructs a new enum instance. + * @classdesc Reflected enum. + * @extends ReflectionObject + * @constructor + * @param {string} name Unique name within its namespace + * @param {Object.} [values] Enum values as an object, by name + * @param {Object.} [options] Declared options + * @param {string} [comment] The comment for this enum + * @param {Object.} [comments] The value comments for this enum + * @param {Object.>|undefined} [valuesOptions] The value options for this enum + */ +function Enum(name, values, options, comment, comments, valuesOptions) { + ReflectionObject.call(this, name, options); + + if (values && typeof values !== "object") + throw TypeError("values must be an object"); + + /** + * Enum values by id. + * @type {Object.} + */ + this.valuesById = {}; + + /** + * Enum values by name. + * @type {Object.} + */ + this.values = Object.create(this.valuesById); // toJSON, marker + + /** + * Enum comment text. + * @type {string|null} + */ + this.comment = comment; + + /** + * Value comment texts, if any. + * @type {Object.} + */ + this.comments = comments || {}; + + /** + * Values options, if any + * @type {Object>|undefined} + */ + this.valuesOptions = valuesOptions; + + /** + * Reserved ranges, if any. + * @type {Array.} + */ + this.reserved = undefined; // toJSON + + // Note that values inherit valuesById on their prototype which makes them a TypeScript- + // compatible enum. This is used by pbts to write actual enum definitions that work for + // static and reflection code alike instead of emitting generic object definitions. + + if (values) + for (var keys = Object.keys(values), i = 0; i < keys.length; ++i) + if (typeof values[keys[i]] === "number") // use forward entries only + this.valuesById[ this.values[keys[i]] = values[keys[i]] ] = keys[i]; +} + +/** + * Enum descriptor. + * @interface IEnum + * @property {Object.} values Enum values + * @property {Object.} [options] Enum options + */ + +/** + * Constructs an enum from an enum descriptor. + * @param {string} name Enum name + * @param {IEnum} json Enum descriptor + * @returns {Enum} Created enum + * @throws {TypeError} If arguments are invalid + */ +Enum.fromJSON = function fromJSON(name, json) { + var enm = new Enum(name, json.values, json.options, json.comment, json.comments); + enm.reserved = json.reserved; + return enm; +}; + +/** + * Converts this enum to an enum descriptor. + * @param {IToJSONOptions} [toJSONOptions] JSON conversion options + * @returns {IEnum} Enum descriptor + */ +Enum.prototype.toJSON = function toJSON(toJSONOptions) { + var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false; + return util.toObject([ + "options" , this.options, + "valuesOptions" , this.valuesOptions, + "values" , this.values, + "reserved" , this.reserved && this.reserved.length ? this.reserved : undefined, + "comment" , keepComments ? this.comment : undefined, + "comments" , keepComments ? this.comments : undefined + ]); +}; + +/** + * Adds a value to this enum. + * @param {string} name Value name + * @param {number} id Value id + * @param {string} [comment] Comment, if any + * @param {Object.|undefined} [options] Options, if any + * @returns {Enum} `this` + * @throws {TypeError} If arguments are invalid + * @throws {Error} If there is already a value with this name or id + */ +Enum.prototype.add = function add(name, id, comment, options) { + // utilized by the parser but not by .fromJSON + + if (!util.isString(name)) + throw TypeError("name must be a string"); + + if (!util.isInteger(id)) + throw TypeError("id must be an integer"); + + if (this.values[name] !== undefined) + throw Error("duplicate name '" + name + "' in " + this); + + if (this.isReservedId(id)) + throw Error("id " + id + " is reserved in " + this); + + if (this.isReservedName(name)) + throw Error("name '" + name + "' is reserved in " + this); + + if (this.valuesById[id] !== undefined) { + if (!(this.options && this.options.allow_alias)) + throw Error("duplicate id " + id + " in " + this); + this.values[name] = id; + } else + this.valuesById[this.values[name] = id] = name; + + if (options) { + if (this.valuesOptions === undefined) + this.valuesOptions = {}; + this.valuesOptions[name] = options || null; + } + + this.comments[name] = comment || null; + return this; +}; + +/** + * Removes a value from this enum + * @param {string} name Value name + * @returns {Enum} `this` + * @throws {TypeError} If arguments are invalid + * @throws {Error} If `name` is not a name of this enum + */ +Enum.prototype.remove = function remove(name) { + + if (!util.isString(name)) + throw TypeError("name must be a string"); + + var val = this.values[name]; + if (val == null) + throw Error("name '" + name + "' does not exist in " + this); + + delete this.valuesById[val]; + delete this.values[name]; + delete this.comments[name]; + if (this.valuesOptions) + delete this.valuesOptions[name]; + + return this; +}; + +/** + * Tests if the specified id is reserved. + * @param {number} id Id to test + * @returns {boolean} `true` if reserved, otherwise `false` + */ +Enum.prototype.isReservedId = function isReservedId(id) { + return Namespace.isReservedId(this.reserved, id); +}; + +/** + * Tests if the specified name is reserved. + * @param {string} name Name to test + * @returns {boolean} `true` if reserved, otherwise `false` + */ +Enum.prototype.isReservedName = function isReservedName(name) { + return Namespace.isReservedName(this.reserved, name); +}; + +},{"23":23,"24":24,"37":37}],16:[function(require,module,exports){ +"use strict"; +module.exports = Field; + +// extends ReflectionObject +var ReflectionObject = require(24); +((Field.prototype = Object.create(ReflectionObject.prototype)).constructor = Field).className = "Field"; + +var Enum = require(15), + types = require(36), + util = require(37); + +var Type; // cyclic + +var ruleRe = /^required|optional|repeated$/; + +/** + * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class. + * @name Field + * @classdesc Reflected message field. + * @extends FieldBase + * @constructor + * @param {string} name Unique name within its namespace + * @param {number} id Unique id within its namespace + * @param {string} type Value type + * @param {string|Object.} [rule="optional"] Field rule + * @param {string|Object.} [extend] Extended type if different from parent + * @param {Object.} [options] Declared options + */ + +/** + * Constructs a field from a field descriptor. + * @param {string} name Field name + * @param {IField} json Field descriptor + * @returns {Field} Created field + * @throws {TypeError} If arguments are invalid + */ +Field.fromJSON = function fromJSON(name, json) { + return new Field(name, json.id, json.type, json.rule, json.extend, json.options, json.comment); +}; + +/** + * Not an actual constructor. Use {@link Field} instead. + * @classdesc Base class of all reflected message fields. This is not an actual class but here for the sake of having consistent type definitions. + * @exports FieldBase + * @extends ReflectionObject + * @constructor + * @param {string} name Unique name within its namespace + * @param {number} id Unique id within its namespace + * @param {string} type Value type + * @param {string|Object.} [rule="optional"] Field rule + * @param {string|Object.} [extend] Extended type if different from parent + * @param {Object.} [options] Declared options + * @param {string} [comment] Comment associated with this field + */ +function Field(name, id, type, rule, extend, options, comment) { + + if (util.isObject(rule)) { + comment = extend; + options = rule; + rule = extend = undefined; + } else if (util.isObject(extend)) { + comment = options; + options = extend; + extend = undefined; + } + + ReflectionObject.call(this, name, options); + + if (!util.isInteger(id) || id < 0) + throw TypeError("id must be a non-negative integer"); + + if (!util.isString(type)) + throw TypeError("type must be a string"); + + if (rule !== undefined && !ruleRe.test(rule = rule.toString().toLowerCase())) + throw TypeError("rule must be a string rule"); + + if (extend !== undefined && !util.isString(extend)) + throw TypeError("extend must be a string"); + + /** + * Field rule, if any. + * @type {string|undefined} + */ + if (rule === "proto3_optional") { + rule = "optional"; + } + this.rule = rule && rule !== "optional" ? rule : undefined; // toJSON + + /** + * Field type. + * @type {string} + */ + this.type = type; // toJSON + + /** + * Unique field id. + * @type {number} + */ + this.id = id; // toJSON, marker + + /** + * Extended type if different from parent. + * @type {string|undefined} + */ + this.extend = extend || undefined; // toJSON + + /** + * Whether this field is required. + * @type {boolean} + */ + this.required = rule === "required"; + + /** + * Whether this field is optional. + * @type {boolean} + */ + this.optional = !this.required; + + /** + * Whether this field is repeated. + * @type {boolean} + */ + this.repeated = rule === "repeated"; + + /** + * Whether this field is a map or not. + * @type {boolean} + */ + this.map = false; + + /** + * Message this field belongs to. + * @type {Type|null} + */ + this.message = null; + + /** + * OneOf this field belongs to, if any, + * @type {OneOf|null} + */ + this.partOf = null; + + /** + * The field type's default value. + * @type {*} + */ + this.typeDefault = null; + + /** + * The field's default value on prototypes. + * @type {*} + */ + this.defaultValue = null; + + /** + * Whether this field's value should be treated as a long. + * @type {boolean} + */ + this.long = util.Long ? types.long[type] !== undefined : /* istanbul ignore next */ false; + + /** + * Whether this field's value is a buffer. + * @type {boolean} + */ + this.bytes = type === "bytes"; + + /** + * Resolved type if not a basic type. + * @type {Type|Enum|null} + */ + this.resolvedType = null; + + /** + * Sister-field within the extended type if a declaring extension field. + * @type {Field|null} + */ + this.extensionField = null; + + /** + * Sister-field within the declaring namespace if an extended field. + * @type {Field|null} + */ + this.declaringField = null; + + /** + * Internally remembers whether this field is packed. + * @type {boolean|null} + * @private + */ + this._packed = null; + + /** + * Comment for this field. + * @type {string|null} + */ + this.comment = comment; +} + +/** + * Determines whether this field is packed. Only relevant when repeated and working with proto2. + * @name Field#packed + * @type {boolean} + * @readonly + */ +Object.defineProperty(Field.prototype, "packed", { + get: function() { + // defaults to packed=true if not explicity set to false + if (this._packed === null) + this._packed = this.getOption("packed") !== false; + return this._packed; + } +}); + +/** + * @override + */ +Field.prototype.setOption = function setOption(name, value, ifNotSet) { + if (name === "packed") // clear cached before setting + this._packed = null; + return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet); +}; + +/** + * Field descriptor. + * @interface IField + * @property {string} [rule="optional"] Field rule + * @property {string} type Field type + * @property {number} id Field id + * @property {Object.} [options] Field options + */ + +/** + * Extension field descriptor. + * @interface IExtensionField + * @extends IField + * @property {string} extend Extended type + */ + +/** + * Converts this field to a field descriptor. + * @param {IToJSONOptions} [toJSONOptions] JSON conversion options + * @returns {IField} Field descriptor + */ +Field.prototype.toJSON = function toJSON(toJSONOptions) { + var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false; + return util.toObject([ + "rule" , this.rule !== "optional" && this.rule || undefined, + "type" , this.type, + "id" , this.id, + "extend" , this.extend, + "options" , this.options, + "comment" , keepComments ? this.comment : undefined + ]); +}; + +/** + * Resolves this field's type references. + * @returns {Field} `this` + * @throws {Error} If any reference cannot be resolved + */ +Field.prototype.resolve = function resolve() { + + if (this.resolved) + return this; + + if ((this.typeDefault = types.defaults[this.type]) === undefined) { // if not a basic type, resolve it + this.resolvedType = (this.declaringField ? this.declaringField.parent : this.parent).lookupTypeOrEnum(this.type); + if (this.resolvedType instanceof Type) + this.typeDefault = null; + else // instanceof Enum + this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined + } else if (this.options && this.options.proto3_optional) { + // proto3 scalar value marked optional; should default to null + this.typeDefault = null; + } + + // use explicitly set default value if present + if (this.options && this.options["default"] != null) { + this.typeDefault = this.options["default"]; + if (this.resolvedType instanceof Enum && typeof this.typeDefault === "string") + this.typeDefault = this.resolvedType.values[this.typeDefault]; + } + + // remove unnecessary options + if (this.options) { + if (this.options.packed === true || this.options.packed !== undefined && this.resolvedType && !(this.resolvedType instanceof Enum)) + delete this.options.packed; + if (!Object.keys(this.options).length) + this.options = undefined; + } + + // convert to internal data type if necesssary + if (this.long) { + this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === "u"); + + /* istanbul ignore else */ + if (Object.freeze) + Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it) + + } else if (this.bytes && typeof this.typeDefault === "string") { + var buf; + if (util.base64.test(this.typeDefault)) + util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0); + else + util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0); + this.typeDefault = buf; + } + + // take special care of maps and repeated fields + if (this.map) + this.defaultValue = util.emptyObject; + else if (this.repeated) + this.defaultValue = util.emptyArray; + else + this.defaultValue = this.typeDefault; + + // ensure proper value on prototype + if (this.parent instanceof Type) + this.parent.ctor.prototype[this.name] = this.defaultValue; + + return ReflectionObject.prototype.resolve.call(this); +}; + +/** + * Decorator function as returned by {@link Field.d} and {@link MapField.d} (TypeScript). + * @typedef FieldDecorator + * @type {function} + * @param {Object} prototype Target prototype + * @param {string} fieldName Field name + * @returns {undefined} + */ + +/** + * Field decorator (TypeScript). + * @name Field.d + * @function + * @param {number} fieldId Field id + * @param {"double"|"float"|"int32"|"uint32"|"sint32"|"fixed32"|"sfixed32"|"int64"|"uint64"|"sint64"|"fixed64"|"sfixed64"|"string"|"bool"|"bytes"|Object} fieldType Field type + * @param {"optional"|"required"|"repeated"} [fieldRule="optional"] Field rule + * @param {T} [defaultValue] Default value + * @returns {FieldDecorator} Decorator function + * @template T extends number | number[] | Long | Long[] | string | string[] | boolean | boolean[] | Uint8Array | Uint8Array[] | Buffer | Buffer[] + */ +Field.d = function decorateField(fieldId, fieldType, fieldRule, defaultValue) { + + // submessage: decorate the submessage and use its name as the type + if (typeof fieldType === "function") + fieldType = util.decorateType(fieldType).name; + + // enum reference: create a reflected copy of the enum and keep reuseing it + else if (fieldType && typeof fieldType === "object") + fieldType = util.decorateEnum(fieldType).name; + + return function fieldDecorator(prototype, fieldName) { + util.decorateType(prototype.constructor) + .add(new Field(fieldName, fieldId, fieldType, fieldRule, { "default": defaultValue })); + }; +}; + +/** + * Field decorator (TypeScript). + * @name Field.d + * @function + * @param {number} fieldId Field id + * @param {Constructor|string} fieldType Field type + * @param {"optional"|"required"|"repeated"} [fieldRule="optional"] Field rule + * @returns {FieldDecorator} Decorator function + * @template T extends Message + * @variation 2 + */ +// like Field.d but without a default value + +// Sets up cyclic dependencies (called in index-light) +Field._configure = function configure(Type_) { + Type = Type_; +}; + +},{"15":15,"24":24,"36":36,"37":37}],17:[function(require,module,exports){ +"use strict"; +var protobuf = module.exports = require(18); + +protobuf.build = "light"; + +/** + * A node-style callback as used by {@link load} and {@link Root#load}. + * @typedef LoadCallback + * @type {function} + * @param {Error|null} error Error, if any, otherwise `null` + * @param {Root} [root] Root, if there hasn't been an error + * @returns {undefined} + */ + +/** + * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback. + * @param {string|string[]} filename One or multiple files to load + * @param {Root} root Root namespace, defaults to create a new one if omitted. + * @param {LoadCallback} callback Callback function + * @returns {undefined} + * @see {@link Root#load} + */ +function load(filename, root, callback) { + if (typeof root === "function") { + callback = root; + root = new protobuf.Root(); + } else if (!root) + root = new protobuf.Root(); + return root.load(filename, callback); +} + +/** + * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback. + * @name load + * @function + * @param {string|string[]} filename One or multiple files to load + * @param {LoadCallback} callback Callback function + * @returns {undefined} + * @see {@link Root#load} + * @variation 2 + */ +// function load(filename:string, callback:LoadCallback):undefined + +/** + * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise. + * @name load + * @function + * @param {string|string[]} filename One or multiple files to load + * @param {Root} [root] Root namespace, defaults to create a new one if omitted. + * @returns {Promise} Promise + * @see {@link Root#load} + * @variation 3 + */ +// function load(filename:string, [root:Root]):Promise + +protobuf.load = load; + +/** + * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only). + * @param {string|string[]} filename One or multiple files to load + * @param {Root} [root] Root namespace, defaults to create a new one if omitted. + * @returns {Root} Root namespace + * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid + * @see {@link Root#loadSync} + */ +function loadSync(filename, root) { + if (!root) + root = new protobuf.Root(); + return root.loadSync(filename); +} + +protobuf.loadSync = loadSync; + +// Serialization +protobuf.encoder = require(14); +protobuf.decoder = require(13); +protobuf.verifier = require(40); +protobuf.converter = require(12); + +// Reflection +protobuf.ReflectionObject = require(24); +protobuf.Namespace = require(23); +protobuf.Root = require(29); +protobuf.Enum = require(15); +protobuf.Type = require(35); +protobuf.Field = require(16); +protobuf.OneOf = require(25); +protobuf.MapField = require(20); +protobuf.Service = require(33); +protobuf.Method = require(22); + +// Runtime +protobuf.Message = require(21); +protobuf.wrappers = require(41); + +// Utility +protobuf.types = require(36); +protobuf.util = require(37); + +// Set up possibly cyclic reflection dependencies +protobuf.ReflectionObject._configure(protobuf.Root); +protobuf.Namespace._configure(protobuf.Type, protobuf.Service, protobuf.Enum); +protobuf.Root._configure(protobuf.Type); +protobuf.Field._configure(protobuf.Type); + +},{"12":12,"13":13,"14":14,"15":15,"16":16,"18":18,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"29":29,"33":33,"35":35,"36":36,"37":37,"40":40,"41":41}],18:[function(require,module,exports){ +"use strict"; +var protobuf = exports; + +/** + * Build type, one of `"full"`, `"light"` or `"minimal"`. + * @name build + * @type {string} + * @const + */ +protobuf.build = "minimal"; + +// Serialization +protobuf.Writer = require(42); +protobuf.BufferWriter = require(43); +protobuf.Reader = require(27); +protobuf.BufferReader = require(28); + +// Utility +protobuf.util = require(39); +protobuf.rpc = require(31); +protobuf.roots = require(30); +protobuf.configure = configure; + +/* istanbul ignore next */ +/** + * Reconfigures the library according to the environment. + * @returns {undefined} + */ +function configure() { + protobuf.util._configure(); + protobuf.Writer._configure(protobuf.BufferWriter); + protobuf.Reader._configure(protobuf.BufferReader); +} + +// Set up buffer utility according to the environment +configure(); + +},{"27":27,"28":28,"30":30,"31":31,"39":39,"42":42,"43":43}],19:[function(require,module,exports){ +"use strict"; +var protobuf = module.exports = require(17); + +protobuf.build = "full"; + +// Parser +protobuf.tokenize = require(34); +protobuf.parse = require(26); +protobuf.common = require(11); + +// Configure parser +protobuf.Root._configure(protobuf.Type, protobuf.parse, protobuf.common); + +},{"11":11,"17":17,"26":26,"34":34}],20:[function(require,module,exports){ +"use strict"; +module.exports = MapField; + +// extends Field +var Field = require(16); +((MapField.prototype = Object.create(Field.prototype)).constructor = MapField).className = "MapField"; + +var types = require(36), + util = require(37); + +/** + * Constructs a new map field instance. + * @classdesc Reflected map field. + * @extends FieldBase + * @constructor + * @param {string} name Unique name within its namespace + * @param {number} id Unique id within its namespace + * @param {string} keyType Key type + * @param {string} type Value type + * @param {Object.} [options] Declared options + * @param {string} [comment] Comment associated with this field + */ +function MapField(name, id, keyType, type, options, comment) { + Field.call(this, name, id, type, undefined, undefined, options, comment); + + /* istanbul ignore if */ + if (!util.isString(keyType)) + throw TypeError("keyType must be a string"); + + /** + * Key type. + * @type {string} + */ + this.keyType = keyType; // toJSON, marker + + /** + * Resolved key type if not a basic type. + * @type {ReflectionObject|null} + */ + this.resolvedKeyType = null; + + // Overrides Field#map + this.map = true; +} + +/** + * Map field descriptor. + * @interface IMapField + * @extends {IField} + * @property {string} keyType Key type + */ + +/** + * Extension map field descriptor. + * @interface IExtensionMapField + * @extends IMapField + * @property {string} extend Extended type + */ + +/** + * Constructs a map field from a map field descriptor. + * @param {string} name Field name + * @param {IMapField} json Map field descriptor + * @returns {MapField} Created map field + * @throws {TypeError} If arguments are invalid + */ +MapField.fromJSON = function fromJSON(name, json) { + return new MapField(name, json.id, json.keyType, json.type, json.options, json.comment); +}; + +/** + * Converts this map field to a map field descriptor. + * @param {IToJSONOptions} [toJSONOptions] JSON conversion options + * @returns {IMapField} Map field descriptor + */ +MapField.prototype.toJSON = function toJSON(toJSONOptions) { + var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false; + return util.toObject([ + "keyType" , this.keyType, + "type" , this.type, + "id" , this.id, + "extend" , this.extend, + "options" , this.options, + "comment" , keepComments ? this.comment : undefined + ]); +}; + +/** + * @override + */ +MapField.prototype.resolve = function resolve() { + if (this.resolved) + return this; + + // Besides a value type, map fields have a key type that may be "any scalar type except for floating point types and bytes" + if (types.mapKey[this.keyType] === undefined) + throw Error("invalid key type: " + this.keyType); + + return Field.prototype.resolve.call(this); +}; + +/** + * Map field decorator (TypeScript). + * @name MapField.d + * @function + * @param {number} fieldId Field id + * @param {"int32"|"uint32"|"sint32"|"fixed32"|"sfixed32"|"int64"|"uint64"|"sint64"|"fixed64"|"sfixed64"|"bool"|"string"} fieldKeyType Field key type + * @param {"double"|"float"|"int32"|"uint32"|"sint32"|"fixed32"|"sfixed32"|"int64"|"uint64"|"sint64"|"fixed64"|"sfixed64"|"bool"|"string"|"bytes"|Object|Constructor<{}>} fieldValueType Field value type + * @returns {FieldDecorator} Decorator function + * @template T extends { [key: string]: number | Long | string | boolean | Uint8Array | Buffer | number[] | Message<{}> } + */ +MapField.d = function decorateMapField(fieldId, fieldKeyType, fieldValueType) { + + // submessage value: decorate the submessage and use its name as the type + if (typeof fieldValueType === "function") + fieldValueType = util.decorateType(fieldValueType).name; + + // enum reference value: create a reflected copy of the enum and keep reuseing it + else if (fieldValueType && typeof fieldValueType === "object") + fieldValueType = util.decorateEnum(fieldValueType).name; + + return function mapFieldDecorator(prototype, fieldName) { + util.decorateType(prototype.constructor) + .add(new MapField(fieldName, fieldId, fieldKeyType, fieldValueType)); + }; +}; + +},{"16":16,"36":36,"37":37}],21:[function(require,module,exports){ +"use strict"; +module.exports = Message; + +var util = require(39); + +/** + * Constructs a new message instance. + * @classdesc Abstract runtime message. + * @constructor + * @param {Properties} [properties] Properties to set + * @template T extends object = object + */ +function Message(properties) { + // not used internally + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + this[keys[i]] = properties[keys[i]]; +} + +/** + * Reference to the reflected type. + * @name Message.$type + * @type {Type} + * @readonly + */ + +/** + * Reference to the reflected type. + * @name Message#$type + * @type {Type} + * @readonly + */ + +/*eslint-disable valid-jsdoc*/ + +/** + * Creates a new message of this type using the specified properties. + * @param {Object.} [properties] Properties to set + * @returns {Message} Message instance + * @template T extends Message + * @this Constructor + */ +Message.create = function create(properties) { + return this.$type.create(properties); +}; + +/** + * Encodes a message of this type. + * @param {T|Object.} message Message to encode + * @param {Writer} [writer] Writer to use + * @returns {Writer} Writer + * @template T extends Message + * @this Constructor + */ +Message.encode = function encode(message, writer) { + return this.$type.encode(message, writer); +}; + +/** + * Encodes a message of this type preceeded by its length as a varint. + * @param {T|Object.} message Message to encode + * @param {Writer} [writer] Writer to use + * @returns {Writer} Writer + * @template T extends Message + * @this Constructor + */ +Message.encodeDelimited = function encodeDelimited(message, writer) { + return this.$type.encodeDelimited(message, writer); +}; + +/** + * Decodes a message of this type. + * @name Message.decode + * @function + * @param {Reader|Uint8Array} reader Reader or buffer to decode + * @returns {T} Decoded message + * @template T extends Message + * @this Constructor + */ +Message.decode = function decode(reader) { + return this.$type.decode(reader); +}; + +/** + * Decodes a message of this type preceeded by its length as a varint. + * @name Message.decodeDelimited + * @function + * @param {Reader|Uint8Array} reader Reader or buffer to decode + * @returns {T} Decoded message + * @template T extends Message + * @this Constructor + */ +Message.decodeDelimited = function decodeDelimited(reader) { + return this.$type.decodeDelimited(reader); +}; + +/** + * Verifies a message of this type. + * @name Message.verify + * @function + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ +Message.verify = function verify(message) { + return this.$type.verify(message); +}; + +/** + * Creates a new message of this type from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {T} Message instance + * @template T extends Message + * @this Constructor + */ +Message.fromObject = function fromObject(object) { + return this.$type.fromObject(object); +}; + +/** + * Creates a plain object from a message of this type. Also converts values to other types if specified. + * @param {T} message Message instance + * @param {IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + * @template T extends Message + * @this Constructor + */ +Message.toObject = function toObject(message, options) { + return this.$type.toObject(message, options); +}; + +/** + * Converts this message to JSON. + * @returns {Object.} JSON object + */ +Message.prototype.toJSON = function toJSON() { + return this.$type.toObject(this, util.toJSONOptions); +}; + +/*eslint-enable valid-jsdoc*/ +},{"39":39}],22:[function(require,module,exports){ +"use strict"; +module.exports = Method; + +// extends ReflectionObject +var ReflectionObject = require(24); +((Method.prototype = Object.create(ReflectionObject.prototype)).constructor = Method).className = "Method"; + +var util = require(37); + +/** + * Constructs a new service method instance. + * @classdesc Reflected service method. + * @extends ReflectionObject + * @constructor + * @param {string} name Method name + * @param {string|undefined} type Method type, usually `"rpc"` + * @param {string} requestType Request message type + * @param {string} responseType Response message type + * @param {boolean|Object.} [requestStream] Whether the request is streamed + * @param {boolean|Object.} [responseStream] Whether the response is streamed + * @param {Object.} [options] Declared options + * @param {string} [comment] The comment for this method + * @param {Object.} [parsedOptions] Declared options, properly parsed into an object + */ +function Method(name, type, requestType, responseType, requestStream, responseStream, options, comment, parsedOptions) { + + /* istanbul ignore next */ + if (util.isObject(requestStream)) { + options = requestStream; + requestStream = responseStream = undefined; + } else if (util.isObject(responseStream)) { + options = responseStream; + responseStream = undefined; + } + + /* istanbul ignore if */ + if (!(type === undefined || util.isString(type))) + throw TypeError("type must be a string"); + + /* istanbul ignore if */ + if (!util.isString(requestType)) + throw TypeError("requestType must be a string"); + + /* istanbul ignore if */ + if (!util.isString(responseType)) + throw TypeError("responseType must be a string"); + + ReflectionObject.call(this, name, options); + + /** + * Method type. + * @type {string} + */ + this.type = type || "rpc"; // toJSON + + /** + * Request type. + * @type {string} + */ + this.requestType = requestType; // toJSON, marker + + /** + * Whether requests are streamed or not. + * @type {boolean|undefined} + */ + this.requestStream = requestStream ? true : undefined; // toJSON + + /** + * Response type. + * @type {string} + */ + this.responseType = responseType; // toJSON + + /** + * Whether responses are streamed or not. + * @type {boolean|undefined} + */ + this.responseStream = responseStream ? true : undefined; // toJSON + + /** + * Resolved request type. + * @type {Type|null} + */ + this.resolvedRequestType = null; + + /** + * Resolved response type. + * @type {Type|null} + */ + this.resolvedResponseType = null; + + /** + * Comment for this method + * @type {string|null} + */ + this.comment = comment; + + /** + * Options properly parsed into an object + */ + this.parsedOptions = parsedOptions; +} + +/** + * Method descriptor. + * @interface IMethod + * @property {string} [type="rpc"] Method type + * @property {string} requestType Request type + * @property {string} responseType Response type + * @property {boolean} [requestStream=false] Whether requests are streamed + * @property {boolean} [responseStream=false] Whether responses are streamed + * @property {Object.} [options] Method options + * @property {string} comment Method comments + * @property {Object.} [parsedOptions] Method options properly parsed into an object + */ + +/** + * Constructs a method from a method descriptor. + * @param {string} name Method name + * @param {IMethod} json Method descriptor + * @returns {Method} Created method + * @throws {TypeError} If arguments are invalid + */ +Method.fromJSON = function fromJSON(name, json) { + return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options, json.comment, json.parsedOptions); +}; + +/** + * Converts this method to a method descriptor. + * @param {IToJSONOptions} [toJSONOptions] JSON conversion options + * @returns {IMethod} Method descriptor + */ +Method.prototype.toJSON = function toJSON(toJSONOptions) { + var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false; + return util.toObject([ + "type" , this.type !== "rpc" && /* istanbul ignore next */ this.type || undefined, + "requestType" , this.requestType, + "requestStream" , this.requestStream, + "responseType" , this.responseType, + "responseStream" , this.responseStream, + "options" , this.options, + "comment" , keepComments ? this.comment : undefined, + "parsedOptions" , this.parsedOptions, + ]); +}; + +/** + * @override + */ +Method.prototype.resolve = function resolve() { + + /* istanbul ignore if */ + if (this.resolved) + return this; + + this.resolvedRequestType = this.parent.lookupType(this.requestType); + this.resolvedResponseType = this.parent.lookupType(this.responseType); + + return ReflectionObject.prototype.resolve.call(this); +}; + +},{"24":24,"37":37}],23:[function(require,module,exports){ +"use strict"; +module.exports = Namespace; + +// extends ReflectionObject +var ReflectionObject = require(24); +((Namespace.prototype = Object.create(ReflectionObject.prototype)).constructor = Namespace).className = "Namespace"; + +var Field = require(16), + util = require(37), + OneOf = require(25); + +var Type, // cyclic + Service, + Enum; + +/** + * Constructs a new namespace instance. + * @name Namespace + * @classdesc Reflected namespace. + * @extends NamespaceBase + * @constructor + * @param {string} name Namespace name + * @param {Object.} [options] Declared options + */ + +/** + * Constructs a namespace from JSON. + * @memberof Namespace + * @function + * @param {string} name Namespace name + * @param {Object.} json JSON object + * @returns {Namespace} Created namespace + * @throws {TypeError} If arguments are invalid + */ +Namespace.fromJSON = function fromJSON(name, json) { + return new Namespace(name, json.options).addJSON(json.nested); +}; + +/** + * Converts an array of reflection objects to JSON. + * @memberof Namespace + * @param {ReflectionObject[]} array Object array + * @param {IToJSONOptions} [toJSONOptions] JSON conversion options + * @returns {Object.|undefined} JSON object or `undefined` when array is empty + */ +function arrayToJSON(array, toJSONOptions) { + if (!(array && array.length)) + return undefined; + var obj = {}; + for (var i = 0; i < array.length; ++i) + obj[array[i].name] = array[i].toJSON(toJSONOptions); + return obj; +} + +Namespace.arrayToJSON = arrayToJSON; + +/** + * Tests if the specified id is reserved. + * @param {Array.|undefined} reserved Array of reserved ranges and names + * @param {number} id Id to test + * @returns {boolean} `true` if reserved, otherwise `false` + */ +Namespace.isReservedId = function isReservedId(reserved, id) { + if (reserved) + for (var i = 0; i < reserved.length; ++i) + if (typeof reserved[i] !== "string" && reserved[i][0] <= id && reserved[i][1] > id) + return true; + return false; +}; + +/** + * Tests if the specified name is reserved. + * @param {Array.|undefined} reserved Array of reserved ranges and names + * @param {string} name Name to test + * @returns {boolean} `true` if reserved, otherwise `false` + */ +Namespace.isReservedName = function isReservedName(reserved, name) { + if (reserved) + for (var i = 0; i < reserved.length; ++i) + if (reserved[i] === name) + return true; + return false; +}; + +/** + * Not an actual constructor. Use {@link Namespace} instead. + * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions. + * @exports NamespaceBase + * @extends ReflectionObject + * @abstract + * @constructor + * @param {string} name Namespace name + * @param {Object.} [options] Declared options + * @see {@link Namespace} + */ +function Namespace(name, options) { + ReflectionObject.call(this, name, options); + + /** + * Nested objects by name. + * @type {Object.|undefined} + */ + this.nested = undefined; // toJSON + + /** + * Cached nested objects as an array. + * @type {ReflectionObject[]|null} + * @private + */ + this._nestedArray = null; +} + +function clearCache(namespace) { + namespace._nestedArray = null; + return namespace; +} + +/** + * Nested objects of this namespace as an array for iteration. + * @name NamespaceBase#nestedArray + * @type {ReflectionObject[]} + * @readonly + */ +Object.defineProperty(Namespace.prototype, "nestedArray", { + get: function() { + return this._nestedArray || (this._nestedArray = util.toArray(this.nested)); + } +}); + +/** + * Namespace descriptor. + * @interface INamespace + * @property {Object.} [options] Namespace options + * @property {Object.} [nested] Nested object descriptors + */ + +/** + * Any extension field descriptor. + * @typedef AnyExtensionField + * @type {IExtensionField|IExtensionMapField} + */ + +/** + * Any nested object descriptor. + * @typedef AnyNestedObject + * @type {IEnum|IType|IService|AnyExtensionField|INamespace|IOneOf} + */ + +/** + * Converts this namespace to a namespace descriptor. + * @param {IToJSONOptions} [toJSONOptions] JSON conversion options + * @returns {INamespace} Namespace descriptor + */ +Namespace.prototype.toJSON = function toJSON(toJSONOptions) { + return util.toObject([ + "options" , this.options, + "nested" , arrayToJSON(this.nestedArray, toJSONOptions) + ]); +}; + +/** + * Adds nested objects to this namespace from nested object descriptors. + * @param {Object.} nestedJson Any nested object descriptors + * @returns {Namespace} `this` + */ +Namespace.prototype.addJSON = function addJSON(nestedJson) { + var ns = this; + /* istanbul ignore else */ + if (nestedJson) { + for (var names = Object.keys(nestedJson), i = 0, nested; i < names.length; ++i) { + nested = nestedJson[names[i]]; + ns.add( // most to least likely + ( nested.fields !== undefined + ? Type.fromJSON + : nested.values !== undefined + ? Enum.fromJSON + : nested.methods !== undefined + ? Service.fromJSON + : nested.id !== undefined + ? Field.fromJSON + : Namespace.fromJSON )(names[i], nested) + ); + } + } + return this; +}; + +/** + * Gets the nested object of the specified name. + * @param {string} name Nested object name + * @returns {ReflectionObject|null} The reflection object or `null` if it doesn't exist + */ +Namespace.prototype.get = function get(name) { + return this.nested && this.nested[name] + || null; +}; + +/** + * Gets the values of the nested {@link Enum|enum} of the specified name. + * This methods differs from {@link Namespace#get|get} in that it returns an enum's values directly and throws instead of returning `null`. + * @param {string} name Nested enum name + * @returns {Object.} Enum values + * @throws {Error} If there is no such enum + */ +Namespace.prototype.getEnum = function getEnum(name) { + if (this.nested && this.nested[name] instanceof Enum) + return this.nested[name].values; + throw Error("no such enum: " + name); +}; + +/** + * Adds a nested object to this namespace. + * @param {ReflectionObject} object Nested object to add + * @returns {Namespace} `this` + * @throws {TypeError} If arguments are invalid + * @throws {Error} If there is already a nested object with this name + */ +Namespace.prototype.add = function add(object) { + + if (!(object instanceof Field && object.extend !== undefined || object instanceof Type || object instanceof OneOf || object instanceof Enum || object instanceof Service || object instanceof Namespace)) + throw TypeError("object must be a valid nested object"); + + if (!this.nested) + this.nested = {}; + else { + var prev = this.get(object.name); + if (prev) { + if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) { + // replace plain namespace but keep existing nested elements and options + var nested = prev.nestedArray; + for (var i = 0; i < nested.length; ++i) + object.add(nested[i]); + this.remove(prev); + if (!this.nested) + this.nested = {}; + object.setOptions(prev.options, true); + + } else + throw Error("duplicate name '" + object.name + "' in " + this); + } + } + this.nested[object.name] = object; + object.onAdd(this); + return clearCache(this); +}; + +/** + * Removes a nested object from this namespace. + * @param {ReflectionObject} object Nested object to remove + * @returns {Namespace} `this` + * @throws {TypeError} If arguments are invalid + * @throws {Error} If `object` is not a member of this namespace + */ +Namespace.prototype.remove = function remove(object) { + + if (!(object instanceof ReflectionObject)) + throw TypeError("object must be a ReflectionObject"); + if (object.parent !== this) + throw Error(object + " is not a member of " + this); + + delete this.nested[object.name]; + if (!Object.keys(this.nested).length) + this.nested = undefined; + + object.onRemove(this); + return clearCache(this); +}; + +/** + * Defines additial namespaces within this one if not yet existing. + * @param {string|string[]} path Path to create + * @param {*} [json] Nested types to create from JSON + * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty + */ +Namespace.prototype.define = function define(path, json) { + + if (util.isString(path)) + path = path.split("."); + else if (!Array.isArray(path)) + throw TypeError("illegal path"); + if (path && path.length && path[0] === "") + throw Error("path must be relative"); + + var ptr = this; + while (path.length > 0) { + var part = path.shift(); + if (ptr.nested && ptr.nested[part]) { + ptr = ptr.nested[part]; + if (!(ptr instanceof Namespace)) + throw Error("path conflicts with non-namespace objects"); + } else + ptr.add(ptr = new Namespace(part)); + } + if (json) + ptr.addJSON(json); + return ptr; +}; + +/** + * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree, but comes at a cost. + * @returns {Namespace} `this` + */ +Namespace.prototype.resolveAll = function resolveAll() { + var nested = this.nestedArray, i = 0; + while (i < nested.length) + if (nested[i] instanceof Namespace) + nested[i++].resolveAll(); + else + nested[i++].resolve(); + return this.resolve(); +}; + +/** + * Recursively looks up the reflection object matching the specified path in the scope of this namespace. + * @param {string|string[]} path Path to look up + * @param {*|Array.<*>} filterTypes Filter types, any combination of the constructors of `protobuf.Type`, `protobuf.Enum`, `protobuf.Service` etc. + * @param {boolean} [parentAlreadyChecked=false] If known, whether the parent has already been checked + * @returns {ReflectionObject|null} Looked up object or `null` if none could be found + */ +Namespace.prototype.lookup = function lookup(path, filterTypes, parentAlreadyChecked) { + + /* istanbul ignore next */ + if (typeof filterTypes === "boolean") { + parentAlreadyChecked = filterTypes; + filterTypes = undefined; + } else if (filterTypes && !Array.isArray(filterTypes)) + filterTypes = [ filterTypes ]; + + if (util.isString(path) && path.length) { + if (path === ".") + return this.root; + path = path.split("."); + } else if (!path.length) + return this; + + // Start at root if path is absolute + if (path[0] === "") + return this.root.lookup(path.slice(1), filterTypes); + + // Test if the first part matches any nested object, and if so, traverse if path contains more + var found = this.get(path[0]); + if (found) { + if (path.length === 1) { + if (!filterTypes || filterTypes.indexOf(found.constructor) > -1) + return found; + } else if (found instanceof Namespace && (found = found.lookup(path.slice(1), filterTypes, true))) + return found; + + // Otherwise try each nested namespace + } else + for (var i = 0; i < this.nestedArray.length; ++i) + if (this._nestedArray[i] instanceof Namespace && (found = this._nestedArray[i].lookup(path, filterTypes, true))) + return found; + + // If there hasn't been a match, try again at the parent + if (this.parent === null || parentAlreadyChecked) + return null; + return this.parent.lookup(path, filterTypes); +}; + +/** + * Looks up the reflection object at the specified path, relative to this namespace. + * @name NamespaceBase#lookup + * @function + * @param {string|string[]} path Path to look up + * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked + * @returns {ReflectionObject|null} Looked up object or `null` if none could be found + * @variation 2 + */ +// lookup(path: string, [parentAlreadyChecked: boolean]) + +/** + * Looks up the {@link Type|type} at the specified path, relative to this namespace. + * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`. + * @param {string|string[]} path Path to look up + * @returns {Type} Looked up type + * @throws {Error} If `path` does not point to a type + */ +Namespace.prototype.lookupType = function lookupType(path) { + var found = this.lookup(path, [ Type ]); + if (!found) + throw Error("no such type: " + path); + return found; +}; + +/** + * Looks up the values of the {@link Enum|enum} at the specified path, relative to this namespace. + * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`. + * @param {string|string[]} path Path to look up + * @returns {Enum} Looked up enum + * @throws {Error} If `path` does not point to an enum + */ +Namespace.prototype.lookupEnum = function lookupEnum(path) { + var found = this.lookup(path, [ Enum ]); + if (!found) + throw Error("no such Enum '" + path + "' in " + this); + return found; +}; + +/** + * Looks up the {@link Type|type} or {@link Enum|enum} at the specified path, relative to this namespace. + * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`. + * @param {string|string[]} path Path to look up + * @returns {Type} Looked up type or enum + * @throws {Error} If `path` does not point to a type or enum + */ +Namespace.prototype.lookupTypeOrEnum = function lookupTypeOrEnum(path) { + var found = this.lookup(path, [ Type, Enum ]); + if (!found) + throw Error("no such Type or Enum '" + path + "' in " + this); + return found; +}; + +/** + * Looks up the {@link Service|service} at the specified path, relative to this namespace. + * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`. + * @param {string|string[]} path Path to look up + * @returns {Service} Looked up service + * @throws {Error} If `path` does not point to a service + */ +Namespace.prototype.lookupService = function lookupService(path) { + var found = this.lookup(path, [ Service ]); + if (!found) + throw Error("no such Service '" + path + "' in " + this); + return found; +}; + +// Sets up cyclic dependencies (called in index-light) +Namespace._configure = function(Type_, Service_, Enum_) { + Type = Type_; + Service = Service_; + Enum = Enum_; +}; + +},{"16":16,"24":24,"25":25,"37":37}],24:[function(require,module,exports){ +"use strict"; +module.exports = ReflectionObject; + +ReflectionObject.className = "ReflectionObject"; + +var util = require(37); + +var Root; // cyclic + +/** + * Constructs a new reflection object instance. + * @classdesc Base class of all reflection objects. + * @constructor + * @param {string} name Object name + * @param {Object.} [options] Declared options + * @abstract + */ +function ReflectionObject(name, options) { + + if (!util.isString(name)) + throw TypeError("name must be a string"); + + if (options && !util.isObject(options)) + throw TypeError("options must be an object"); + + /** + * Options. + * @type {Object.|undefined} + */ + this.options = options; // toJSON + + /** + * Parsed Options. + * @type {Array.>|undefined} + */ + this.parsedOptions = null; + + /** + * Unique name within its namespace. + * @type {string} + */ + this.name = name; + + /** + * Parent namespace. + * @type {Namespace|null} + */ + this.parent = null; + + /** + * Whether already resolved or not. + * @type {boolean} + */ + this.resolved = false; + + /** + * Comment text, if any. + * @type {string|null} + */ + this.comment = null; + + /** + * Defining file name. + * @type {string|null} + */ + this.filename = null; +} + +Object.defineProperties(ReflectionObject.prototype, { + + /** + * Reference to the root namespace. + * @name ReflectionObject#root + * @type {Root} + * @readonly + */ + root: { + get: function() { + var ptr = this; + while (ptr.parent !== null) + ptr = ptr.parent; + return ptr; + } + }, + + /** + * Full name including leading dot. + * @name ReflectionObject#fullName + * @type {string} + * @readonly + */ + fullName: { + get: function() { + var path = [ this.name ], + ptr = this.parent; + while (ptr) { + path.unshift(ptr.name); + ptr = ptr.parent; + } + return path.join("."); + } + } +}); + +/** + * Converts this reflection object to its descriptor representation. + * @returns {Object.} Descriptor + * @abstract + */ +ReflectionObject.prototype.toJSON = /* istanbul ignore next */ function toJSON() { + throw Error(); // not implemented, shouldn't happen +}; + +/** + * Called when this object is added to a parent. + * @param {ReflectionObject} parent Parent added to + * @returns {undefined} + */ +ReflectionObject.prototype.onAdd = function onAdd(parent) { + if (this.parent && this.parent !== parent) + this.parent.remove(this); + this.parent = parent; + this.resolved = false; + var root = parent.root; + if (root instanceof Root) + root._handleAdd(this); +}; + +/** + * Called when this object is removed from a parent. + * @param {ReflectionObject} parent Parent removed from + * @returns {undefined} + */ +ReflectionObject.prototype.onRemove = function onRemove(parent) { + var root = parent.root; + if (root instanceof Root) + root._handleRemove(this); + this.parent = null; + this.resolved = false; +}; + +/** + * Resolves this objects type references. + * @returns {ReflectionObject} `this` + */ +ReflectionObject.prototype.resolve = function resolve() { + if (this.resolved) + return this; + if (this.root instanceof Root) + this.resolved = true; // only if part of a root + return this; +}; + +/** + * Gets an option value. + * @param {string} name Option name + * @returns {*} Option value or `undefined` if not set + */ +ReflectionObject.prototype.getOption = function getOption(name) { + if (this.options) + return this.options[name]; + return undefined; +}; + +/** + * Sets an option. + * @param {string} name Option name + * @param {*} value Option value + * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set + * @returns {ReflectionObject} `this` + */ +ReflectionObject.prototype.setOption = function setOption(name, value, ifNotSet) { + if (!ifNotSet || !this.options || this.options[name] === undefined) + (this.options || (this.options = {}))[name] = value; + return this; +}; + +/** + * Sets a parsed option. + * @param {string} name parsed Option name + * @param {*} value Option value + * @param {string} propName dot '.' delimited full path of property within the option to set. if undefined\empty, will add a new option with that value + * @returns {ReflectionObject} `this` + */ +ReflectionObject.prototype.setParsedOption = function setParsedOption(name, value, propName) { + if (!this.parsedOptions) { + this.parsedOptions = []; + } + var parsedOptions = this.parsedOptions; + if (propName) { + // If setting a sub property of an option then try to merge it + // with an existing option + var opt = parsedOptions.find(function (opt) { + return Object.prototype.hasOwnProperty.call(opt, name); + }); + if (opt) { + // If we found an existing option - just merge the property value + var newValue = opt[name]; + util.setProperty(newValue, propName, value); + } else { + // otherwise, create a new option, set it's property and add it to the list + opt = {}; + opt[name] = util.setProperty({}, propName, value); + parsedOptions.push(opt); + } + } else { + // Always create a new option when setting the value of the option itself + var newOpt = {}; + newOpt[name] = value; + parsedOptions.push(newOpt); + } + return this; +}; + +/** + * Sets multiple options. + * @param {Object.} options Options to set + * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set + * @returns {ReflectionObject} `this` + */ +ReflectionObject.prototype.setOptions = function setOptions(options, ifNotSet) { + if (options) + for (var keys = Object.keys(options), i = 0; i < keys.length; ++i) + this.setOption(keys[i], options[keys[i]], ifNotSet); + return this; +}; + +/** + * Converts this instance to its string representation. + * @returns {string} Class name[, space, full name] + */ +ReflectionObject.prototype.toString = function toString() { + var className = this.constructor.className, + fullName = this.fullName; + if (fullName.length) + return className + " " + fullName; + return className; +}; + +// Sets up cyclic dependencies (called in index-light) +ReflectionObject._configure = function(Root_) { + Root = Root_; +}; + +},{"37":37}],25:[function(require,module,exports){ +"use strict"; +module.exports = OneOf; + +// extends ReflectionObject +var ReflectionObject = require(24); +((OneOf.prototype = Object.create(ReflectionObject.prototype)).constructor = OneOf).className = "OneOf"; + +var Field = require(16), + util = require(37); + +/** + * Constructs a new oneof instance. + * @classdesc Reflected oneof. + * @extends ReflectionObject + * @constructor + * @param {string} name Oneof name + * @param {string[]|Object.} [fieldNames] Field names + * @param {Object.} [options] Declared options + * @param {string} [comment] Comment associated with this field + */ +function OneOf(name, fieldNames, options, comment) { + if (!Array.isArray(fieldNames)) { + options = fieldNames; + fieldNames = undefined; + } + ReflectionObject.call(this, name, options); + + /* istanbul ignore if */ + if (!(fieldNames === undefined || Array.isArray(fieldNames))) + throw TypeError("fieldNames must be an Array"); + + /** + * Field names that belong to this oneof. + * @type {string[]} + */ + this.oneof = fieldNames || []; // toJSON, marker + + /** + * Fields that belong to this oneof as an array for iteration. + * @type {Field[]} + * @readonly + */ + this.fieldsArray = []; // declared readonly for conformance, possibly not yet added to parent + + /** + * Comment for this field. + * @type {string|null} + */ + this.comment = comment; +} + +/** + * Oneof descriptor. + * @interface IOneOf + * @property {Array.} oneof Oneof field names + * @property {Object.} [options] Oneof options + */ + +/** + * Constructs a oneof from a oneof descriptor. + * @param {string} name Oneof name + * @param {IOneOf} json Oneof descriptor + * @returns {OneOf} Created oneof + * @throws {TypeError} If arguments are invalid + */ +OneOf.fromJSON = function fromJSON(name, json) { + return new OneOf(name, json.oneof, json.options, json.comment); +}; + +/** + * Converts this oneof to a oneof descriptor. + * @param {IToJSONOptions} [toJSONOptions] JSON conversion options + * @returns {IOneOf} Oneof descriptor + */ +OneOf.prototype.toJSON = function toJSON(toJSONOptions) { + var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false; + return util.toObject([ + "options" , this.options, + "oneof" , this.oneof, + "comment" , keepComments ? this.comment : undefined + ]); +}; + +/** + * Adds the fields of the specified oneof to the parent if not already done so. + * @param {OneOf} oneof The oneof + * @returns {undefined} + * @inner + * @ignore + */ +function addFieldsToParent(oneof) { + if (oneof.parent) + for (var i = 0; i < oneof.fieldsArray.length; ++i) + if (!oneof.fieldsArray[i].parent) + oneof.parent.add(oneof.fieldsArray[i]); +} + +/** + * Adds a field to this oneof and removes it from its current parent, if any. + * @param {Field} field Field to add + * @returns {OneOf} `this` + */ +OneOf.prototype.add = function add(field) { + + /* istanbul ignore if */ + if (!(field instanceof Field)) + throw TypeError("field must be a Field"); + + if (field.parent && field.parent !== this.parent) + field.parent.remove(field); + this.oneof.push(field.name); + this.fieldsArray.push(field); + field.partOf = this; // field.parent remains null + addFieldsToParent(this); + return this; +}; + +/** + * Removes a field from this oneof and puts it back to the oneof's parent. + * @param {Field} field Field to remove + * @returns {OneOf} `this` + */ +OneOf.prototype.remove = function remove(field) { + + /* istanbul ignore if */ + if (!(field instanceof Field)) + throw TypeError("field must be a Field"); + + var index = this.fieldsArray.indexOf(field); + + /* istanbul ignore if */ + if (index < 0) + throw Error(field + " is not a member of " + this); + + this.fieldsArray.splice(index, 1); + index = this.oneof.indexOf(field.name); + + /* istanbul ignore else */ + if (index > -1) // theoretical + this.oneof.splice(index, 1); + + field.partOf = null; + return this; +}; + +/** + * @override + */ +OneOf.prototype.onAdd = function onAdd(parent) { + ReflectionObject.prototype.onAdd.call(this, parent); + var self = this; + // Collect present fields + for (var i = 0; i < this.oneof.length; ++i) { + var field = parent.get(this.oneof[i]); + if (field && !field.partOf) { + field.partOf = self; + self.fieldsArray.push(field); + } + } + // Add not yet present fields + addFieldsToParent(this); +}; + +/** + * @override + */ +OneOf.prototype.onRemove = function onRemove(parent) { + for (var i = 0, field; i < this.fieldsArray.length; ++i) + if ((field = this.fieldsArray[i]).parent) + field.parent.remove(field); + ReflectionObject.prototype.onRemove.call(this, parent); +}; + +/** + * Decorator function as returned by {@link OneOf.d} (TypeScript). + * @typedef OneOfDecorator + * @type {function} + * @param {Object} prototype Target prototype + * @param {string} oneofName OneOf name + * @returns {undefined} + */ + +/** + * OneOf decorator (TypeScript). + * @function + * @param {...string} fieldNames Field names + * @returns {OneOfDecorator} Decorator function + * @template T extends string + */ +OneOf.d = function decorateOneOf() { + var fieldNames = new Array(arguments.length), + index = 0; + while (index < arguments.length) + fieldNames[index] = arguments[index++]; + return function oneOfDecorator(prototype, oneofName) { + util.decorateType(prototype.constructor) + .add(new OneOf(oneofName, fieldNames)); + Object.defineProperty(prototype, oneofName, { + get: util.oneOfGetter(fieldNames), + set: util.oneOfSetter(fieldNames) + }); + }; +}; + +},{"16":16,"24":24,"37":37}],26:[function(require,module,exports){ +"use strict"; +module.exports = parse; + +parse.filename = null; +parse.defaults = { keepCase: false }; + +var tokenize = require(34), + Root = require(29), + Type = require(35), + Field = require(16), + MapField = require(20), + OneOf = require(25), + Enum = require(15), + Service = require(33), + Method = require(22), + types = require(36), + util = require(37); + +var base10Re = /^[1-9][0-9]*$/, + base10NegRe = /^-?[1-9][0-9]*$/, + base16Re = /^0[x][0-9a-fA-F]+$/, + base16NegRe = /^-?0[x][0-9a-fA-F]+$/, + base8Re = /^0[0-7]+$/, + base8NegRe = /^-?0[0-7]+$/, + numberRe = /^(?![eE])[0-9]*(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?$/, + nameRe = /^[a-zA-Z_][a-zA-Z_0-9]*$/, + typeRefRe = /^(?:\.?[a-zA-Z_][a-zA-Z_0-9]*)(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*$/, + fqTypeRefRe = /^(?:\.[a-zA-Z_][a-zA-Z_0-9]*)+$/; + +/** + * Result object returned from {@link parse}. + * @interface IParserResult + * @property {string|undefined} package Package name, if declared + * @property {string[]|undefined} imports Imports, if any + * @property {string[]|undefined} weakImports Weak imports, if any + * @property {string|undefined} syntax Syntax, if specified (either `"proto2"` or `"proto3"`) + * @property {Root} root Populated root instance + */ + +/** + * Options modifying the behavior of {@link parse}. + * @interface IParseOptions + * @property {boolean} [keepCase=false] Keeps field casing instead of converting to camel case + * @property {boolean} [alternateCommentMode=false] Recognize double-slash comments in addition to doc-block comments. + * @property {boolean} [preferTrailingComment=false] Use trailing comment when both leading comment and trailing comment exist. + */ + +/** + * Options modifying the behavior of JSON serialization. + * @interface IToJSONOptions + * @property {boolean} [keepComments=false] Serializes comments. + */ + +/** + * Parses the given .proto source and returns an object with the parsed contents. + * @param {string} source Source contents + * @param {Root} root Root to populate + * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted. + * @returns {IParserResult} Parser result + * @property {string} filename=null Currently processing file name for error reporting, if known + * @property {IParseOptions} defaults Default {@link IParseOptions} + */ +function parse(source, root, options) { + /* eslint-disable callback-return */ + if (!(root instanceof Root)) { + options = root; + root = new Root(); + } + if (!options) + options = parse.defaults; + + var preferTrailingComment = options.preferTrailingComment || false; + var tn = tokenize(source, options.alternateCommentMode || false), + next = tn.next, + push = tn.push, + peek = tn.peek, + skip = tn.skip, + cmnt = tn.cmnt; + + var head = true, + pkg, + imports, + weakImports, + syntax, + isProto3 = false; + + var ptr = root; + + var applyCase = options.keepCase ? function(name) { return name; } : util.camelCase; + + /* istanbul ignore next */ + function illegal(token, name, insideTryCatch) { + var filename = parse.filename; + if (!insideTryCatch) + parse.filename = null; + return Error("illegal " + (name || "token") + " '" + token + "' (" + (filename ? filename + ", " : "") + "line " + tn.line + ")"); + } + + function readString() { + var values = [], + token; + do { + /* istanbul ignore if */ + if ((token = next()) !== "\"" && token !== "'") + throw illegal(token); + + values.push(next()); + skip(token); + token = peek(); + } while (token === "\"" || token === "'"); + return values.join(""); + } + + function readValue(acceptTypeRef) { + var token = next(); + switch (token) { + case "'": + case "\"": + push(token); + return readString(); + case "true": case "TRUE": + return true; + case "false": case "FALSE": + return false; + } + try { + return parseNumber(token, /* insideTryCatch */ true); + } catch (e) { + + /* istanbul ignore else */ + if (acceptTypeRef && typeRefRe.test(token)) + return token; + + /* istanbul ignore next */ + throw illegal(token, "value"); + } + } + + function readRanges(target, acceptStrings) { + var token, start; + do { + if (acceptStrings && ((token = peek()) === "\"" || token === "'")) + target.push(readString()); + else + target.push([ start = parseId(next()), skip("to", true) ? parseId(next()) : start ]); + } while (skip(",", true)); + skip(";"); + } + + function parseNumber(token, insideTryCatch) { + var sign = 1; + if (token.charAt(0) === "-") { + sign = -1; + token = token.substring(1); + } + switch (token) { + case "inf": case "INF": case "Inf": + return sign * Infinity; + case "nan": case "NAN": case "Nan": case "NaN": + return NaN; + case "0": + return 0; + } + if (base10Re.test(token)) + return sign * parseInt(token, 10); + if (base16Re.test(token)) + return sign * parseInt(token, 16); + if (base8Re.test(token)) + return sign * parseInt(token, 8); + + /* istanbul ignore else */ + if (numberRe.test(token)) + return sign * parseFloat(token); + + /* istanbul ignore next */ + throw illegal(token, "number", insideTryCatch); + } + + function parseId(token, acceptNegative) { + switch (token) { + case "max": case "MAX": case "Max": + return 536870911; + case "0": + return 0; + } + + /* istanbul ignore if */ + if (!acceptNegative && token.charAt(0) === "-") + throw illegal(token, "id"); + + if (base10NegRe.test(token)) + return parseInt(token, 10); + if (base16NegRe.test(token)) + return parseInt(token, 16); + + /* istanbul ignore else */ + if (base8NegRe.test(token)) + return parseInt(token, 8); + + /* istanbul ignore next */ + throw illegal(token, "id"); + } + + function parsePackage() { + + /* istanbul ignore if */ + if (pkg !== undefined) + throw illegal("package"); + + pkg = next(); + + /* istanbul ignore if */ + if (!typeRefRe.test(pkg)) + throw illegal(pkg, "name"); + + ptr = ptr.define(pkg); + skip(";"); + } + + function parseImport() { + var token = peek(); + var whichImports; + switch (token) { + case "weak": + whichImports = weakImports || (weakImports = []); + next(); + break; + case "public": + next(); + // eslint-disable-next-line no-fallthrough + default: + whichImports = imports || (imports = []); + break; + } + token = readString(); + skip(";"); + whichImports.push(token); + } + + function parseSyntax() { + skip("="); + syntax = readString(); + isProto3 = syntax === "proto3"; + + /* istanbul ignore if */ + if (!isProto3 && syntax !== "proto2") + throw illegal(syntax, "syntax"); + + skip(";"); + } + + function parseCommon(parent, token) { + switch (token) { + + case "option": + parseOption(parent, token); + skip(";"); + return true; + + case "message": + parseType(parent, token); + return true; + + case "enum": + parseEnum(parent, token); + return true; + + case "service": + parseService(parent, token); + return true; + + case "extend": + parseExtension(parent, token); + return true; + } + return false; + } + + function ifBlock(obj, fnIf, fnElse) { + var trailingLine = tn.line; + if (obj) { + if(typeof obj.comment !== "string") { + obj.comment = cmnt(); // try block-type comment + } + obj.filename = parse.filename; + } + if (skip("{", true)) { + var token; + while ((token = next()) !== "}") + fnIf(token); + skip(";", true); + } else { + if (fnElse) + fnElse(); + skip(";"); + if (obj && (typeof obj.comment !== "string" || preferTrailingComment)) + obj.comment = cmnt(trailingLine) || obj.comment; // try line-type comment + } + } + + function parseType(parent, token) { + + /* istanbul ignore if */ + if (!nameRe.test(token = next())) + throw illegal(token, "type name"); + + var type = new Type(token); + ifBlock(type, function parseType_block(token) { + if (parseCommon(type, token)) + return; + + switch (token) { + + case "map": + parseMapField(type, token); + break; + + case "required": + case "repeated": + parseField(type, token); + break; + + case "optional": + /* istanbul ignore if */ + if (isProto3) { + parseField(type, "proto3_optional"); + } else { + parseField(type, "optional"); + } + break; + + case "oneof": + parseOneOf(type, token); + break; + + case "extensions": + readRanges(type.extensions || (type.extensions = [])); + break; + + case "reserved": + readRanges(type.reserved || (type.reserved = []), true); + break; + + default: + /* istanbul ignore if */ + if (!isProto3 || !typeRefRe.test(token)) + throw illegal(token); + + push(token); + parseField(type, "optional"); + break; + } + }); + parent.add(type); + } + + function parseField(parent, rule, extend) { + var type = next(); + if (type === "group") { + parseGroup(parent, rule); + return; + } + // Type names can consume multiple tokens, in multiple variants: + // package.subpackage field tokens: "package.subpackage" [TYPE NAME ENDS HERE] "field" + // package . subpackage field tokens: "package" "." "subpackage" [TYPE NAME ENDS HERE] "field" + // package. subpackage field tokens: "package." "subpackage" [TYPE NAME ENDS HERE] "field" + // package .subpackage field tokens: "package" ".subpackage" [TYPE NAME ENDS HERE] "field" + // Keep reading tokens until we get a type name with no period at the end, + // and the next token does not start with a period. + while (type.endsWith(".") || peek().startsWith(".")) { + type += next(); + } + + /* istanbul ignore if */ + if (!typeRefRe.test(type)) + throw illegal(type, "type"); + + var name = next(); + + /* istanbul ignore if */ + if (!nameRe.test(name)) + throw illegal(name, "name"); + + name = applyCase(name); + skip("="); + + var field = new Field(name, parseId(next()), type, rule, extend); + ifBlock(field, function parseField_block(token) { + + /* istanbul ignore else */ + if (token === "option") { + parseOption(field, token); + skip(";"); + } else + throw illegal(token); + + }, function parseField_line() { + parseInlineOptions(field); + }); + + if (rule === "proto3_optional") { + // for proto3 optional fields, we create a single-member Oneof to mimic "optional" behavior + var oneof = new OneOf("_" + name); + field.setOption("proto3_optional", true); + oneof.add(field); + parent.add(oneof); + } else { + parent.add(field); + } + + // JSON defaults to packed=true if not set so we have to set packed=false explicity when + // parsing proto2 descriptors without the option, where applicable. This must be done for + // all known packable types and anything that could be an enum (= is not a basic type). + if (!isProto3 && field.repeated && (types.packed[type] !== undefined || types.basic[type] === undefined)) + field.setOption("packed", false, /* ifNotSet */ true); + } + + function parseGroup(parent, rule) { + var name = next(); + + /* istanbul ignore if */ + if (!nameRe.test(name)) + throw illegal(name, "name"); + + var fieldName = util.lcFirst(name); + if (name === fieldName) + name = util.ucFirst(name); + skip("="); + var id = parseId(next()); + var type = new Type(name); + type.group = true; + var field = new Field(fieldName, id, name, rule); + field.filename = parse.filename; + ifBlock(type, function parseGroup_block(token) { + switch (token) { + + case "option": + parseOption(type, token); + skip(";"); + break; + + case "required": + case "repeated": + parseField(type, token); + break; + + case "optional": + /* istanbul ignore if */ + if (isProto3) { + parseField(type, "proto3_optional"); + } else { + parseField(type, "optional"); + } + break; + + case "message": + parseType(type, token); + break; + + case "enum": + parseEnum(type, token); + break; + + /* istanbul ignore next */ + default: + throw illegal(token); // there are no groups with proto3 semantics + } + }); + parent.add(type) + .add(field); + } + + function parseMapField(parent) { + skip("<"); + var keyType = next(); + + /* istanbul ignore if */ + if (types.mapKey[keyType] === undefined) + throw illegal(keyType, "type"); + + skip(","); + var valueType = next(); + + /* istanbul ignore if */ + if (!typeRefRe.test(valueType)) + throw illegal(valueType, "type"); + + skip(">"); + var name = next(); + + /* istanbul ignore if */ + if (!nameRe.test(name)) + throw illegal(name, "name"); + + skip("="); + var field = new MapField(applyCase(name), parseId(next()), keyType, valueType); + ifBlock(field, function parseMapField_block(token) { + + /* istanbul ignore else */ + if (token === "option") { + parseOption(field, token); + skip(";"); + } else + throw illegal(token); + + }, function parseMapField_line() { + parseInlineOptions(field); + }); + parent.add(field); + } + + function parseOneOf(parent, token) { + + /* istanbul ignore if */ + if (!nameRe.test(token = next())) + throw illegal(token, "name"); + + var oneof = new OneOf(applyCase(token)); + ifBlock(oneof, function parseOneOf_block(token) { + if (token === "option") { + parseOption(oneof, token); + skip(";"); + } else { + push(token); + parseField(oneof, "optional"); + } + }); + parent.add(oneof); + } + + function parseEnum(parent, token) { + + /* istanbul ignore if */ + if (!nameRe.test(token = next())) + throw illegal(token, "name"); + + var enm = new Enum(token); + ifBlock(enm, function parseEnum_block(token) { + switch(token) { + case "option": + parseOption(enm, token); + skip(";"); + break; + + case "reserved": + readRanges(enm.reserved || (enm.reserved = []), true); + break; + + default: + parseEnumValue(enm, token); + } + }); + parent.add(enm); + } + + function parseEnumValue(parent, token) { + + /* istanbul ignore if */ + if (!nameRe.test(token)) + throw illegal(token, "name"); + + skip("="); + var value = parseId(next(), true), + dummy = { + options: undefined + }; + dummy.setOption = function(name, value) { + if (this.options === undefined) + this.options = {}; + this.options[name] = value; + }; + ifBlock(dummy, function parseEnumValue_block(token) { + + /* istanbul ignore else */ + if (token === "option") { + parseOption(dummy, token); // skip + skip(";"); + } else + throw illegal(token); + + }, function parseEnumValue_line() { + parseInlineOptions(dummy); // skip + }); + parent.add(token, value, dummy.comment, dummy.options); + } + + function parseOption(parent, token) { + var isCustom = skip("(", true); + + /* istanbul ignore if */ + if (!typeRefRe.test(token = next())) + throw illegal(token, "name"); + + var name = token; + var option = name; + var propName; + + if (isCustom) { + skip(")"); + name = "(" + name + ")"; + option = name; + token = peek(); + if (fqTypeRefRe.test(token)) { + propName = token.slice(1); //remove '.' before property name + name += token; + next(); + } + } + skip("="); + var optionValue = parseOptionValue(parent, name); + setParsedOption(parent, option, optionValue, propName); + } + + function parseOptionValue(parent, name) { + // { a: "foo" b { c: "bar" } } + if (skip("{", true)) { + var objectResult = {}; + + while (!skip("}", true)) { + /* istanbul ignore if */ + if (!nameRe.test(token = next())) { + throw illegal(token, "name"); + } + if (token === null) { + throw illegal(token, "end of input"); + } + + var value; + var propName = token; + + skip(":", true); + + if (peek() === "{") + value = parseOptionValue(parent, name + "." + token); + else if (peek() === "[") { + // option (my_option) = { + // repeated_value: [ "foo", "bar" ] + // }; + value = []; + var lastValue; + if (skip("[", true)) { + do { + lastValue = readValue(true); + value.push(lastValue); + } while (skip(",", true)); + skip("]"); + if (typeof lastValue !== "undefined") { + setOption(parent, name + "." + token, lastValue); + } + } + } else { + value = readValue(true); + setOption(parent, name + "." + token, value); + } + + var prevValue = objectResult[propName]; + + if (prevValue) + value = [].concat(prevValue).concat(value); + + objectResult[propName] = value; + + // Semicolons and commas can be optional + skip(",", true); + skip(";", true); + } + + return objectResult; + } + + var simpleValue = readValue(true); + setOption(parent, name, simpleValue); + return simpleValue; + // Does not enforce a delimiter to be universal + } + + function setOption(parent, name, value) { + if (parent.setOption) + parent.setOption(name, value); + } + + function setParsedOption(parent, name, value, propName) { + if (parent.setParsedOption) + parent.setParsedOption(name, value, propName); + } + + function parseInlineOptions(parent) { + if (skip("[", true)) { + do { + parseOption(parent, "option"); + } while (skip(",", true)); + skip("]"); + } + return parent; + } + + function parseService(parent, token) { + + /* istanbul ignore if */ + if (!nameRe.test(token = next())) + throw illegal(token, "service name"); + + var service = new Service(token); + ifBlock(service, function parseService_block(token) { + if (parseCommon(service, token)) + return; + + /* istanbul ignore else */ + if (token === "rpc") + parseMethod(service, token); + else + throw illegal(token); + }); + parent.add(service); + } + + function parseMethod(parent, token) { + // Get the comment of the preceding line now (if one exists) in case the + // method is defined across multiple lines. + var commentText = cmnt(); + + var type = token; + + /* istanbul ignore if */ + if (!nameRe.test(token = next())) + throw illegal(token, "name"); + + var name = token, + requestType, requestStream, + responseType, responseStream; + + skip("("); + if (skip("stream", true)) + requestStream = true; + + /* istanbul ignore if */ + if (!typeRefRe.test(token = next())) + throw illegal(token); + + requestType = token; + skip(")"); skip("returns"); skip("("); + if (skip("stream", true)) + responseStream = true; + + /* istanbul ignore if */ + if (!typeRefRe.test(token = next())) + throw illegal(token); + + responseType = token; + skip(")"); + + var method = new Method(name, type, requestType, responseType, requestStream, responseStream); + method.comment = commentText; + ifBlock(method, function parseMethod_block(token) { + + /* istanbul ignore else */ + if (token === "option") { + parseOption(method, token); + skip(";"); + } else + throw illegal(token); + + }); + parent.add(method); + } + + function parseExtension(parent, token) { + + /* istanbul ignore if */ + if (!typeRefRe.test(token = next())) + throw illegal(token, "reference"); + + var reference = token; + ifBlock(null, function parseExtension_block(token) { + switch (token) { + + case "required": + case "repeated": + parseField(parent, token, reference); + break; + + case "optional": + /* istanbul ignore if */ + if (isProto3) { + parseField(parent, "proto3_optional", reference); + } else { + parseField(parent, "optional", reference); + } + break; + + default: + /* istanbul ignore if */ + if (!isProto3 || !typeRefRe.test(token)) + throw illegal(token); + push(token); + parseField(parent, "optional", reference); + break; + } + }); + } + + var token; + while ((token = next()) !== null) { + switch (token) { + + case "package": + + /* istanbul ignore if */ + if (!head) + throw illegal(token); + + parsePackage(); + break; + + case "import": + + /* istanbul ignore if */ + if (!head) + throw illegal(token); + + parseImport(); + break; + + case "syntax": + + /* istanbul ignore if */ + if (!head) + throw illegal(token); + + parseSyntax(); + break; + + case "option": + + parseOption(ptr, token); + skip(";"); + break; + + default: + + /* istanbul ignore else */ + if (parseCommon(ptr, token)) { + head = false; + continue; + } + + /* istanbul ignore next */ + throw illegal(token); + } + } + + parse.filename = null; + return { + "package" : pkg, + "imports" : imports, + weakImports : weakImports, + syntax : syntax, + root : root + }; +} + +/** + * Parses the given .proto source and returns an object with the parsed contents. + * @name parse + * @function + * @param {string} source Source contents + * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted. + * @returns {IParserResult} Parser result + * @property {string} filename=null Currently processing file name for error reporting, if known + * @property {IParseOptions} defaults Default {@link IParseOptions} + * @variation 2 + */ + +},{"15":15,"16":16,"20":20,"22":22,"25":25,"29":29,"33":33,"34":34,"35":35,"36":36,"37":37}],27:[function(require,module,exports){ +"use strict"; +module.exports = Reader; + +var util = require(39); + +var BufferReader; // cyclic + +var LongBits = util.LongBits, + utf8 = util.utf8; + +/* istanbul ignore next */ +function indexOutOfRange(reader, writeLength) { + return RangeError("index out of range: " + reader.pos + " + " + (writeLength || 1) + " > " + reader.len); +} + +/** + * Constructs a new reader instance using the specified buffer. + * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`. + * @constructor + * @param {Uint8Array} buffer Buffer to read from + */ +function Reader(buffer) { + + /** + * Read buffer. + * @type {Uint8Array} + */ + this.buf = buffer; + + /** + * Read buffer position. + * @type {number} + */ + this.pos = 0; + + /** + * Read buffer length. + * @type {number} + */ + this.len = buffer.length; +} + +var create_array = typeof Uint8Array !== "undefined" + ? function create_typed_array(buffer) { + if (buffer instanceof Uint8Array || Array.isArray(buffer)) + return new Reader(buffer); + throw Error("illegal buffer"); + } + /* istanbul ignore next */ + : function create_array(buffer) { + if (Array.isArray(buffer)) + return new Reader(buffer); + throw Error("illegal buffer"); + }; + +var create = function create() { + return util.Buffer + ? function create_buffer_setup(buffer) { + return (Reader.create = function create_buffer(buffer) { + return util.Buffer.isBuffer(buffer) + ? new BufferReader(buffer) + /* istanbul ignore next */ + : create_array(buffer); + })(buffer); + } + /* istanbul ignore next */ + : create_array; +}; + +/** + * Creates a new reader using the specified buffer. + * @function + * @param {Uint8Array|Buffer} buffer Buffer to read from + * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader} + * @throws {Error} If `buffer` is not a valid buffer + */ +Reader.create = create(); + +Reader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice; + +/** + * Reads a varint as an unsigned 32 bit value. + * @function + * @returns {number} Value read + */ +Reader.prototype.uint32 = (function read_uint32_setup() { + var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!) + return function read_uint32() { + value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value; + value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value; + value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value; + value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value; + value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value; + + /* istanbul ignore if */ + if ((this.pos += 5) > this.len) { + this.pos = this.len; + throw indexOutOfRange(this, 10); + } + return value; + }; +})(); + +/** + * Reads a varint as a signed 32 bit value. + * @returns {number} Value read + */ +Reader.prototype.int32 = function read_int32() { + return this.uint32() | 0; +}; + +/** + * Reads a zig-zag encoded varint as a signed 32 bit value. + * @returns {number} Value read + */ +Reader.prototype.sint32 = function read_sint32() { + var value = this.uint32(); + return value >>> 1 ^ -(value & 1) | 0; +}; + +/* eslint-disable no-invalid-this */ + +function readLongVarint() { + // tends to deopt with local vars for octet etc. + var bits = new LongBits(0, 0); + var i = 0; + if (this.len - this.pos > 4) { // fast route (lo) + for (; i < 4; ++i) { + // 1st..4th + bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0; + if (this.buf[this.pos++] < 128) + return bits; + } + // 5th + bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0; + bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0; + if (this.buf[this.pos++] < 128) + return bits; + i = 0; + } else { + for (; i < 3; ++i) { + /* istanbul ignore if */ + if (this.pos >= this.len) + throw indexOutOfRange(this); + // 1st..3th + bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0; + if (this.buf[this.pos++] < 128) + return bits; + } + // 4th + bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0; + return bits; + } + if (this.len - this.pos > 4) { // fast route (hi) + for (; i < 5; ++i) { + // 6th..10th + bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0; + if (this.buf[this.pos++] < 128) + return bits; + } + } else { + for (; i < 5; ++i) { + /* istanbul ignore if */ + if (this.pos >= this.len) + throw indexOutOfRange(this); + // 6th..10th + bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0; + if (this.buf[this.pos++] < 128) + return bits; + } + } + /* istanbul ignore next */ + throw Error("invalid varint encoding"); +} + +/* eslint-enable no-invalid-this */ + +/** + * Reads a varint as a signed 64 bit value. + * @name Reader#int64 + * @function + * @returns {Long} Value read + */ + +/** + * Reads a varint as an unsigned 64 bit value. + * @name Reader#uint64 + * @function + * @returns {Long} Value read + */ + +/** + * Reads a zig-zag encoded varint as a signed 64 bit value. + * @name Reader#sint64 + * @function + * @returns {Long} Value read + */ + +/** + * Reads a varint as a boolean. + * @returns {boolean} Value read + */ +Reader.prototype.bool = function read_bool() { + return this.uint32() !== 0; +}; + +function readFixed32_end(buf, end) { // note that this uses `end`, not `pos` + return (buf[end - 4] + | buf[end - 3] << 8 + | buf[end - 2] << 16 + | buf[end - 1] << 24) >>> 0; +} + +/** + * Reads fixed 32 bits as an unsigned 32 bit integer. + * @returns {number} Value read + */ +Reader.prototype.fixed32 = function read_fixed32() { + + /* istanbul ignore if */ + if (this.pos + 4 > this.len) + throw indexOutOfRange(this, 4); + + return readFixed32_end(this.buf, this.pos += 4); +}; + +/** + * Reads fixed 32 bits as a signed 32 bit integer. + * @returns {number} Value read + */ +Reader.prototype.sfixed32 = function read_sfixed32() { + + /* istanbul ignore if */ + if (this.pos + 4 > this.len) + throw indexOutOfRange(this, 4); + + return readFixed32_end(this.buf, this.pos += 4) | 0; +}; + +/* eslint-disable no-invalid-this */ + +function readFixed64(/* this: Reader */) { + + /* istanbul ignore if */ + if (this.pos + 8 > this.len) + throw indexOutOfRange(this, 8); + + return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4)); +} + +/* eslint-enable no-invalid-this */ + +/** + * Reads fixed 64 bits. + * @name Reader#fixed64 + * @function + * @returns {Long} Value read + */ + +/** + * Reads zig-zag encoded fixed 64 bits. + * @name Reader#sfixed64 + * @function + * @returns {Long} Value read + */ + +/** + * Reads a float (32 bit) as a number. + * @function + * @returns {number} Value read + */ +Reader.prototype.float = function read_float() { + + /* istanbul ignore if */ + if (this.pos + 4 > this.len) + throw indexOutOfRange(this, 4); + + var value = util.float.readFloatLE(this.buf, this.pos); + this.pos += 4; + return value; +}; + +/** + * Reads a double (64 bit float) as a number. + * @function + * @returns {number} Value read + */ +Reader.prototype.double = function read_double() { + + /* istanbul ignore if */ + if (this.pos + 8 > this.len) + throw indexOutOfRange(this, 4); + + var value = util.float.readDoubleLE(this.buf, this.pos); + this.pos += 8; + return value; +}; + +/** + * Reads a sequence of bytes preceeded by its length as a varint. + * @returns {Uint8Array} Value read + */ +Reader.prototype.bytes = function read_bytes() { + var length = this.uint32(), + start = this.pos, + end = this.pos + length; + + /* istanbul ignore if */ + if (end > this.len) + throw indexOutOfRange(this, length); + + this.pos += length; + if (Array.isArray(this.buf)) // plain array + return this.buf.slice(start, end); + + if (start === end) { // fix for IE 10/Win8 and others' subarray returning array of size 1 + var nativeBuffer = util.Buffer; + return nativeBuffer + ? nativeBuffer.alloc(0) + : new this.buf.constructor(0); + } + return this._slice.call(this.buf, start, end); +}; + +/** + * Reads a string preceeded by its byte length as a varint. + * @returns {string} Value read + */ +Reader.prototype.string = function read_string() { + var bytes = this.bytes(); + return utf8.read(bytes, 0, bytes.length); +}; + +/** + * Skips the specified number of bytes if specified, otherwise skips a varint. + * @param {number} [length] Length if known, otherwise a varint is assumed + * @returns {Reader} `this` + */ +Reader.prototype.skip = function skip(length) { + if (typeof length === "number") { + /* istanbul ignore if */ + if (this.pos + length > this.len) + throw indexOutOfRange(this, length); + this.pos += length; + } else { + do { + /* istanbul ignore if */ + if (this.pos >= this.len) + throw indexOutOfRange(this); + } while (this.buf[this.pos++] & 128); + } + return this; +}; + +/** + * Skips the next element of the specified wire type. + * @param {number} wireType Wire type received + * @returns {Reader} `this` + */ +Reader.prototype.skipType = function(wireType) { + switch (wireType) { + case 0: + this.skip(); + break; + case 1: + this.skip(8); + break; + case 2: + this.skip(this.uint32()); + break; + case 3: + while ((wireType = this.uint32() & 7) !== 4) { + this.skipType(wireType); + } + break; + case 5: + this.skip(4); + break; + + /* istanbul ignore next */ + default: + throw Error("invalid wire type " + wireType + " at offset " + this.pos); + } + return this; +}; + +Reader._configure = function(BufferReader_) { + BufferReader = BufferReader_; + Reader.create = create(); + BufferReader._configure(); + + var fn = util.Long ? "toLong" : /* istanbul ignore next */ "toNumber"; + util.merge(Reader.prototype, { + + int64: function read_int64() { + return readLongVarint.call(this)[fn](false); + }, + + uint64: function read_uint64() { + return readLongVarint.call(this)[fn](true); + }, + + sint64: function read_sint64() { + return readLongVarint.call(this).zzDecode()[fn](false); + }, + + fixed64: function read_fixed64() { + return readFixed64.call(this)[fn](true); + }, + + sfixed64: function read_sfixed64() { + return readFixed64.call(this)[fn](false); + } + + }); +}; + +},{"39":39}],28:[function(require,module,exports){ +"use strict"; +module.exports = BufferReader; + +// extends Reader +var Reader = require(27); +(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader; + +var util = require(39); + +/** + * Constructs a new buffer reader instance. + * @classdesc Wire format reader using node buffers. + * @extends Reader + * @constructor + * @param {Buffer} buffer Buffer to read from + */ +function BufferReader(buffer) { + Reader.call(this, buffer); + + /** + * Read buffer. + * @name BufferReader#buf + * @type {Buffer} + */ +} + +BufferReader._configure = function () { + /* istanbul ignore else */ + if (util.Buffer) + BufferReader.prototype._slice = util.Buffer.prototype.slice; +}; + + +/** + * @override + */ +BufferReader.prototype.string = function read_string_buffer() { + var len = this.uint32(); // modifies pos + return this.buf.utf8Slice + ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len)) + : this.buf.toString("utf-8", this.pos, this.pos = Math.min(this.pos + len, this.len)); +}; + +/** + * Reads a sequence of bytes preceeded by its length as a varint. + * @name BufferReader#bytes + * @function + * @returns {Buffer} Value read + */ + +BufferReader._configure(); + +},{"27":27,"39":39}],29:[function(require,module,exports){ +"use strict"; +module.exports = Root; + +// extends Namespace +var Namespace = require(23); +((Root.prototype = Object.create(Namespace.prototype)).constructor = Root).className = "Root"; + +var Field = require(16), + Enum = require(15), + OneOf = require(25), + util = require(37); + +var Type, // cyclic + parse, // might be excluded + common; // " + +/** + * Constructs a new root namespace instance. + * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together. + * @extends NamespaceBase + * @constructor + * @param {Object.} [options] Top level options + */ +function Root(options) { + Namespace.call(this, "", options); + + /** + * Deferred extension fields. + * @type {Field[]} + */ + this.deferred = []; + + /** + * Resolved file names of loaded files. + * @type {string[]} + */ + this.files = []; +} + +/** + * Loads a namespace descriptor into a root namespace. + * @param {INamespace} json Nameespace descriptor + * @param {Root} [root] Root namespace, defaults to create a new one if omitted + * @returns {Root} Root namespace + */ +Root.fromJSON = function fromJSON(json, root) { + if (!root) + root = new Root(); + if (json.options) + root.setOptions(json.options); + return root.addJSON(json.nested); +}; + +/** + * Resolves the path of an imported file, relative to the importing origin. + * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories. + * @function + * @param {string} origin The file name of the importing file + * @param {string} target The file name being imported + * @returns {string|null} Resolved path to `target` or `null` to skip the file + */ +Root.prototype.resolvePath = util.path.resolve; + +/** + * Fetch content from file path or url + * This method exists so you can override it with your own logic. + * @function + * @param {string} path File path or url + * @param {FetchCallback} callback Callback function + * @returns {undefined} + */ +Root.prototype.fetch = util.fetch; + +// A symbol-like function to safely signal synchronous loading +/* istanbul ignore next */ +function SYNC() {} // eslint-disable-line no-empty-function + +/** + * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback. + * @param {string|string[]} filename Names of one or multiple files to load + * @param {IParseOptions} options Parse options + * @param {LoadCallback} callback Callback function + * @returns {undefined} + */ +Root.prototype.load = function load(filename, options, callback) { + if (typeof options === "function") { + callback = options; + options = undefined; + } + var self = this; + if (!callback) + return util.asPromise(load, self, filename, options); + + var sync = callback === SYNC; // undocumented + + // Finishes loading by calling the callback (exactly once) + function finish(err, root) { + /* istanbul ignore if */ + if (!callback) + return; + var cb = callback; + callback = null; + if (sync) + throw err; + cb(err, root); + } + + // Bundled definition existence checking + function getBundledFileName(filename) { + var idx = filename.lastIndexOf("google/protobuf/"); + if (idx > -1) { + var altname = filename.substring(idx); + if (altname in common) return altname; + } + return null; + } + + // Processes a single file + function process(filename, source) { + try { + if (util.isString(source) && source.charAt(0) === "{") + source = JSON.parse(source); + if (!util.isString(source)) + self.setOptions(source.options).addJSON(source.nested); + else { + parse.filename = filename; + var parsed = parse(source, self, options), + resolved, + i = 0; + if (parsed.imports) + for (; i < parsed.imports.length; ++i) + if (resolved = getBundledFileName(parsed.imports[i]) || self.resolvePath(filename, parsed.imports[i])) + fetch(resolved); + if (parsed.weakImports) + for (i = 0; i < parsed.weakImports.length; ++i) + if (resolved = getBundledFileName(parsed.weakImports[i]) || self.resolvePath(filename, parsed.weakImports[i])) + fetch(resolved, true); + } + } catch (err) { + finish(err); + } + if (!sync && !queued) + finish(null, self); // only once anyway + } + + // Fetches a single file + function fetch(filename, weak) { + filename = getBundledFileName(filename) || filename; + + // Skip if already loaded / attempted + if (self.files.indexOf(filename) > -1) + return; + self.files.push(filename); + + // Shortcut bundled definitions + if (filename in common) { + if (sync) + process(filename, common[filename]); + else { + ++queued; + setTimeout(function() { + --queued; + process(filename, common[filename]); + }); + } + return; + } + + // Otherwise fetch from disk or network + if (sync) { + var source; + try { + source = util.fs.readFileSync(filename).toString("utf8"); + } catch (err) { + if (!weak) + finish(err); + return; + } + process(filename, source); + } else { + ++queued; + self.fetch(filename, function(err, source) { + --queued; + /* istanbul ignore if */ + if (!callback) + return; // terminated meanwhile + if (err) { + /* istanbul ignore else */ + if (!weak) + finish(err); + else if (!queued) // can't be covered reliably + finish(null, self); + return; + } + process(filename, source); + }); + } + } + var queued = 0; + + // Assembling the root namespace doesn't require working type + // references anymore, so we can load everything in parallel + if (util.isString(filename)) + filename = [ filename ]; + for (var i = 0, resolved; i < filename.length; ++i) + if (resolved = self.resolvePath("", filename[i])) + fetch(resolved); + + if (sync) + return self; + if (!queued) + finish(null, self); + return undefined; +}; +// function load(filename:string, options:IParseOptions, callback:LoadCallback):undefined + +/** + * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback. + * @function Root#load + * @param {string|string[]} filename Names of one or multiple files to load + * @param {LoadCallback} callback Callback function + * @returns {undefined} + * @variation 2 + */ +// function load(filename:string, callback:LoadCallback):undefined + +/** + * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise. + * @function Root#load + * @param {string|string[]} filename Names of one or multiple files to load + * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted. + * @returns {Promise} Promise + * @variation 3 + */ +// function load(filename:string, [options:IParseOptions]):Promise + +/** + * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace (node only). + * @function Root#loadSync + * @param {string|string[]} filename Names of one or multiple files to load + * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted. + * @returns {Root} Root namespace + * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid + */ +Root.prototype.loadSync = function loadSync(filename, options) { + if (!util.isNode) + throw Error("not supported"); + return this.load(filename, options, SYNC); +}; + +/** + * @override + */ +Root.prototype.resolveAll = function resolveAll() { + if (this.deferred.length) + throw Error("unresolvable extensions: " + this.deferred.map(function(field) { + return "'extend " + field.extend + "' in " + field.parent.fullName; + }).join(", ")); + return Namespace.prototype.resolveAll.call(this); +}; + +// only uppercased (and thus conflict-free) children are exposed, see below +var exposeRe = /^[A-Z]/; + +/** + * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type. + * @param {Root} root Root instance + * @param {Field} field Declaring extension field witin the declaring type + * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise + * @inner + * @ignore + */ +function tryHandleExtension(root, field) { + var extendedType = field.parent.lookup(field.extend); + if (extendedType) { + var sisterField = new Field(field.fullName, field.id, field.type, field.rule, undefined, field.options); + //do not allow to extend same field twice to prevent the error + if (extendedType.get(sisterField.name)) { + return true; + } + sisterField.declaringField = field; + field.extensionField = sisterField; + extendedType.add(sisterField); + return true; + } + return false; +} + +/** + * Called when any object is added to this root or its sub-namespaces. + * @param {ReflectionObject} object Object added + * @returns {undefined} + * @private + */ +Root.prototype._handleAdd = function _handleAdd(object) { + if (object instanceof Field) { + + if (/* an extension field (implies not part of a oneof) */ object.extend !== undefined && /* not already handled */ !object.extensionField) + if (!tryHandleExtension(this, object)) + this.deferred.push(object); + + } else if (object instanceof Enum) { + + if (exposeRe.test(object.name)) + object.parent[object.name] = object.values; // expose enum values as property of its parent + + } else if (!(object instanceof OneOf)) /* everything else is a namespace */ { + + if (object instanceof Type) // Try to handle any deferred extensions + for (var i = 0; i < this.deferred.length;) + if (tryHandleExtension(this, this.deferred[i])) + this.deferred.splice(i, 1); + else + ++i; + for (var j = 0; j < /* initializes */ object.nestedArray.length; ++j) // recurse into the namespace + this._handleAdd(object._nestedArray[j]); + if (exposeRe.test(object.name)) + object.parent[object.name] = object; // expose namespace as property of its parent + } + + // The above also adds uppercased (and thus conflict-free) nested types, services and enums as + // properties of namespaces just like static code does. This allows using a .d.ts generated for + // a static module with reflection-based solutions where the condition is met. +}; + +/** + * Called when any object is removed from this root or its sub-namespaces. + * @param {ReflectionObject} object Object removed + * @returns {undefined} + * @private + */ +Root.prototype._handleRemove = function _handleRemove(object) { + if (object instanceof Field) { + + if (/* an extension field */ object.extend !== undefined) { + if (/* already handled */ object.extensionField) { // remove its sister field + object.extensionField.parent.remove(object.extensionField); + object.extensionField = null; + } else { // cancel the extension + var index = this.deferred.indexOf(object); + /* istanbul ignore else */ + if (index > -1) + this.deferred.splice(index, 1); + } + } + + } else if (object instanceof Enum) { + + if (exposeRe.test(object.name)) + delete object.parent[object.name]; // unexpose enum values + + } else if (object instanceof Namespace) { + + for (var i = 0; i < /* initializes */ object.nestedArray.length; ++i) // recurse into the namespace + this._handleRemove(object._nestedArray[i]); + + if (exposeRe.test(object.name)) + delete object.parent[object.name]; // unexpose namespaces + + } +}; + +// Sets up cyclic dependencies (called in index-light) +Root._configure = function(Type_, parse_, common_) { + Type = Type_; + parse = parse_; + common = common_; +}; + +},{"15":15,"16":16,"23":23,"25":25,"37":37}],30:[function(require,module,exports){ +"use strict"; +module.exports = {}; + +/** + * Named roots. + * This is where pbjs stores generated structures (the option `-r, --root` specifies a name). + * Can also be used manually to make roots available across modules. + * @name roots + * @type {Object.} + * @example + * // pbjs -r myroot -o compiled.js ... + * + * // in another module: + * require("./compiled.js"); + * + * // in any subsequent module: + * var root = protobuf.roots["myroot"]; + */ + +},{}],31:[function(require,module,exports){ +"use strict"; + +/** + * Streaming RPC helpers. + * @namespace + */ +var rpc = exports; + +/** + * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets. + * @typedef RPCImpl + * @type {function} + * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called + * @param {Uint8Array} requestData Request data + * @param {RPCImplCallback} callback Callback function + * @returns {undefined} + * @example + * function rpcImpl(method, requestData, callback) { + * if (protobuf.util.lcFirst(method.name) !== "myMethod") // compatible with static code + * throw Error("no such method"); + * asynchronouslyObtainAResponse(requestData, function(err, responseData) { + * callback(err, responseData); + * }); + * } + */ + +/** + * Node-style callback as used by {@link RPCImpl}. + * @typedef RPCImplCallback + * @type {function} + * @param {Error|null} error Error, if any, otherwise `null` + * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error + * @returns {undefined} + */ + +rpc.Service = require(32); + +},{"32":32}],32:[function(require,module,exports){ +"use strict"; +module.exports = Service; + +var util = require(39); + +// Extends EventEmitter +(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service; + +/** + * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}. + * + * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`. + * @typedef rpc.ServiceMethodCallback + * @template TRes extends Message + * @type {function} + * @param {Error|null} error Error, if any + * @param {TRes} [response] Response message + * @returns {undefined} + */ + +/** + * A service method part of a {@link rpc.Service} as created by {@link Service.create}. + * @typedef rpc.ServiceMethod + * @template TReq extends Message + * @template TRes extends Message + * @type {function} + * @param {TReq|Properties} request Request message or plain object + * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message + * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined` + */ + +/** + * Constructs a new RPC service instance. + * @classdesc An RPC service as returned by {@link Service#create}. + * @exports rpc.Service + * @extends util.EventEmitter + * @constructor + * @param {RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited + */ +function Service(rpcImpl, requestDelimited, responseDelimited) { + + if (typeof rpcImpl !== "function") + throw TypeError("rpcImpl must be a function"); + + util.EventEmitter.call(this); + + /** + * RPC implementation. Becomes `null` once the service is ended. + * @type {RPCImpl|null} + */ + this.rpcImpl = rpcImpl; + + /** + * Whether requests are length-delimited. + * @type {boolean} + */ + this.requestDelimited = Boolean(requestDelimited); + + /** + * Whether responses are length-delimited. + * @type {boolean} + */ + this.responseDelimited = Boolean(responseDelimited); +} + +/** + * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}. + * @param {Method|rpc.ServiceMethod} method Reflected or static method + * @param {Constructor} requestCtor Request constructor + * @param {Constructor} responseCtor Response constructor + * @param {TReq|Properties} request Request message or plain object + * @param {rpc.ServiceMethodCallback} callback Service callback + * @returns {undefined} + * @template TReq extends Message + * @template TRes extends Message + */ +Service.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) { + + if (!request) + throw TypeError("request must be specified"); + + var self = this; + if (!callback) + return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request); + + if (!self.rpcImpl) { + setTimeout(function() { callback(Error("already ended")); }, 0); + return undefined; + } + + try { + return self.rpcImpl( + method, + requestCtor[self.requestDelimited ? "encodeDelimited" : "encode"](request).finish(), + function rpcCallback(err, response) { + + if (err) { + self.emit("error", err, method); + return callback(err); + } + + if (response === null) { + self.end(/* endedByRPC */ true); + return undefined; + } + + if (!(response instanceof responseCtor)) { + try { + response = responseCtor[self.responseDelimited ? "decodeDelimited" : "decode"](response); + } catch (err) { + self.emit("error", err, method); + return callback(err); + } + } + + self.emit("data", response, method); + return callback(null, response); + } + ); + } catch (err) { + self.emit("error", err, method); + setTimeout(function() { callback(err); }, 0); + return undefined; + } +}; + +/** + * Ends this service and emits the `end` event. + * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation. + * @returns {rpc.Service} `this` + */ +Service.prototype.end = function end(endedByRPC) { + if (this.rpcImpl) { + if (!endedByRPC) // signal end to rpcImpl + this.rpcImpl(null, null, null); + this.rpcImpl = null; + this.emit("end").off(); + } + return this; +}; + +},{"39":39}],33:[function(require,module,exports){ +"use strict"; +module.exports = Service; + +// extends Namespace +var Namespace = require(23); +((Service.prototype = Object.create(Namespace.prototype)).constructor = Service).className = "Service"; + +var Method = require(22), + util = require(37), + rpc = require(31); + +/** + * Constructs a new service instance. + * @classdesc Reflected service. + * @extends NamespaceBase + * @constructor + * @param {string} name Service name + * @param {Object.} [options] Service options + * @throws {TypeError} If arguments are invalid + */ +function Service(name, options) { + Namespace.call(this, name, options); + + /** + * Service methods. + * @type {Object.} + */ + this.methods = {}; // toJSON, marker + + /** + * Cached methods as an array. + * @type {Method[]|null} + * @private + */ + this._methodsArray = null; +} + +/** + * Service descriptor. + * @interface IService + * @extends INamespace + * @property {Object.} methods Method descriptors + */ + +/** + * Constructs a service from a service descriptor. + * @param {string} name Service name + * @param {IService} json Service descriptor + * @returns {Service} Created service + * @throws {TypeError} If arguments are invalid + */ +Service.fromJSON = function fromJSON(name, json) { + var service = new Service(name, json.options); + /* istanbul ignore else */ + if (json.methods) + for (var names = Object.keys(json.methods), i = 0; i < names.length; ++i) + service.add(Method.fromJSON(names[i], json.methods[names[i]])); + if (json.nested) + service.addJSON(json.nested); + service.comment = json.comment; + return service; +}; + +/** + * Converts this service to a service descriptor. + * @param {IToJSONOptions} [toJSONOptions] JSON conversion options + * @returns {IService} Service descriptor + */ +Service.prototype.toJSON = function toJSON(toJSONOptions) { + var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions); + var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false; + return util.toObject([ + "options" , inherited && inherited.options || undefined, + "methods" , Namespace.arrayToJSON(this.methodsArray, toJSONOptions) || /* istanbul ignore next */ {}, + "nested" , inherited && inherited.nested || undefined, + "comment" , keepComments ? this.comment : undefined + ]); +}; + +/** + * Methods of this service as an array for iteration. + * @name Service#methodsArray + * @type {Method[]} + * @readonly + */ +Object.defineProperty(Service.prototype, "methodsArray", { + get: function() { + return this._methodsArray || (this._methodsArray = util.toArray(this.methods)); + } +}); + +function clearCache(service) { + service._methodsArray = null; + return service; +} + +/** + * @override + */ +Service.prototype.get = function get(name) { + return this.methods[name] + || Namespace.prototype.get.call(this, name); +}; + +/** + * @override + */ +Service.prototype.resolveAll = function resolveAll() { + var methods = this.methodsArray; + for (var i = 0; i < methods.length; ++i) + methods[i].resolve(); + return Namespace.prototype.resolve.call(this); +}; + +/** + * @override + */ +Service.prototype.add = function add(object) { + + /* istanbul ignore if */ + if (this.get(object.name)) + throw Error("duplicate name '" + object.name + "' in " + this); + + if (object instanceof Method) { + this.methods[object.name] = object; + object.parent = this; + return clearCache(this); + } + return Namespace.prototype.add.call(this, object); +}; + +/** + * @override + */ +Service.prototype.remove = function remove(object) { + if (object instanceof Method) { + + /* istanbul ignore if */ + if (this.methods[object.name] !== object) + throw Error(object + " is not a member of " + this); + + delete this.methods[object.name]; + object.parent = null; + return clearCache(this); + } + return Namespace.prototype.remove.call(this, object); +}; + +/** + * Creates a runtime service using the specified rpc implementation. + * @param {RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited + * @returns {rpc.Service} RPC service. Useful where requests and/or responses are streamed. + */ +Service.prototype.create = function create(rpcImpl, requestDelimited, responseDelimited) { + var rpcService = new rpc.Service(rpcImpl, requestDelimited, responseDelimited); + for (var i = 0, method; i < /* initializes */ this.methodsArray.length; ++i) { + var methodName = util.lcFirst((method = this._methodsArray[i]).resolve().name).replace(/[^$\w_]/g, ""); + rpcService[methodName] = util.codegen(["r","c"], util.isReserved(methodName) ? methodName + "_" : methodName)("return this.rpcCall(m,q,s,r,c)")({ + m: method, + q: method.resolvedRequestType.ctor, + s: method.resolvedResponseType.ctor + }); + } + return rpcService; +}; + +},{"22":22,"23":23,"31":31,"37":37}],34:[function(require,module,exports){ +"use strict"; +module.exports = tokenize; + +var delimRe = /[\s{}=;:[\],'"()<>]/g, + stringDoubleRe = /(?:"([^"\\]*(?:\\.[^"\\]*)*)")/g, + stringSingleRe = /(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g; + +var setCommentRe = /^ *[*/]+ */, + setCommentAltRe = /^\s*\*?\/*/, + setCommentSplitRe = /\n/g, + whitespaceRe = /\s/, + unescapeRe = /\\(.?)/g; + +var unescapeMap = { + "0": "\0", + "r": "\r", + "n": "\n", + "t": "\t" +}; + +/** + * Unescapes a string. + * @param {string} str String to unescape + * @returns {string} Unescaped string + * @property {Object.} map Special characters map + * @memberof tokenize + */ +function unescape(str) { + return str.replace(unescapeRe, function($0, $1) { + switch ($1) { + case "\\": + case "": + return $1; + default: + return unescapeMap[$1] || ""; + } + }); +} + +tokenize.unescape = unescape; + +/** + * Gets the next token and advances. + * @typedef TokenizerHandleNext + * @type {function} + * @returns {string|null} Next token or `null` on eof + */ + +/** + * Peeks for the next token. + * @typedef TokenizerHandlePeek + * @type {function} + * @returns {string|null} Next token or `null` on eof + */ + +/** + * Pushes a token back to the stack. + * @typedef TokenizerHandlePush + * @type {function} + * @param {string} token Token + * @returns {undefined} + */ + +/** + * Skips the next token. + * @typedef TokenizerHandleSkip + * @type {function} + * @param {string} expected Expected token + * @param {boolean} [optional=false] If optional + * @returns {boolean} Whether the token matched + * @throws {Error} If the token didn't match and is not optional + */ + +/** + * Gets the comment on the previous line or, alternatively, the line comment on the specified line. + * @typedef TokenizerHandleCmnt + * @type {function} + * @param {number} [line] Line number + * @returns {string|null} Comment text or `null` if none + */ + +/** + * Handle object returned from {@link tokenize}. + * @interface ITokenizerHandle + * @property {TokenizerHandleNext} next Gets the next token and advances (`null` on eof) + * @property {TokenizerHandlePeek} peek Peeks for the next token (`null` on eof) + * @property {TokenizerHandlePush} push Pushes a token back to the stack + * @property {TokenizerHandleSkip} skip Skips a token, returns its presence and advances or, if non-optional and not present, throws + * @property {TokenizerHandleCmnt} cmnt Gets the comment on the previous line or the line comment on the specified line, if any + * @property {number} line Current line number + */ + +/** + * Tokenizes the given .proto source and returns an object with useful utility functions. + * @param {string} source Source contents + * @param {boolean} alternateCommentMode Whether we should activate alternate comment parsing mode. + * @returns {ITokenizerHandle} Tokenizer handle + */ +function tokenize(source, alternateCommentMode) { + /* eslint-disable callback-return */ + source = source.toString(); + + var offset = 0, + length = source.length, + line = 1, + lastCommentLine = 0, + comments = {}; + + var stack = []; + + var stringDelim = null; + + /* istanbul ignore next */ + /** + * Creates an error for illegal syntax. + * @param {string} subject Subject + * @returns {Error} Error created + * @inner + */ + function illegal(subject) { + return Error("illegal " + subject + " (line " + line + ")"); + } + + /** + * Reads a string till its end. + * @returns {string} String read + * @inner + */ + function readString() { + var re = stringDelim === "'" ? stringSingleRe : stringDoubleRe; + re.lastIndex = offset - 1; + var match = re.exec(source); + if (!match) + throw illegal("string"); + offset = re.lastIndex; + push(stringDelim); + stringDelim = null; + return unescape(match[1]); + } + + /** + * Gets the character at `pos` within the source. + * @param {number} pos Position + * @returns {string} Character + * @inner + */ + function charAt(pos) { + return source.charAt(pos); + } + + /** + * Sets the current comment text. + * @param {number} start Start offset + * @param {number} end End offset + * @param {boolean} isLeading set if a leading comment + * @returns {undefined} + * @inner + */ + function setComment(start, end, isLeading) { + var comment = { + type: source.charAt(start++), + lineEmpty: false, + leading: isLeading, + }; + var lookback; + if (alternateCommentMode) { + lookback = 2; // alternate comment parsing: "//" or "/*" + } else { + lookback = 3; // "///" or "/**" + } + var commentOffset = start - lookback, + c; + do { + if (--commentOffset < 0 || + (c = source.charAt(commentOffset)) === "\n") { + comment.lineEmpty = true; + break; + } + } while (c === " " || c === "\t"); + var lines = source + .substring(start, end) + .split(setCommentSplitRe); + for (var i = 0; i < lines.length; ++i) + lines[i] = lines[i] + .replace(alternateCommentMode ? setCommentAltRe : setCommentRe, "") + .trim(); + comment.text = lines + .join("\n") + .trim(); + + comments[line] = comment; + lastCommentLine = line; + } + + function isDoubleSlashCommentLine(startOffset) { + var endOffset = findEndOfLine(startOffset); + + // see if remaining line matches comment pattern + var lineText = source.substring(startOffset, endOffset); + var isComment = /^\s*\/\//.test(lineText); + return isComment; + } + + function findEndOfLine(cursor) { + // find end of cursor's line + var endOffset = cursor; + while (endOffset < length && charAt(endOffset) !== "\n") { + endOffset++; + } + return endOffset; + } + + /** + * Obtains the next token. + * @returns {string|null} Next token or `null` on eof + * @inner + */ + function next() { + if (stack.length > 0) + return stack.shift(); + if (stringDelim) + return readString(); + var repeat, + prev, + curr, + start, + isDoc, + isLeadingComment = offset === 0; + do { + if (offset === length) + return null; + repeat = false; + while (whitespaceRe.test(curr = charAt(offset))) { + if (curr === "\n") { + isLeadingComment = true; + ++line; + } + if (++offset === length) + return null; + } + + if (charAt(offset) === "/") { + if (++offset === length) { + throw illegal("comment"); + } + if (charAt(offset) === "/") { // Line + if (!alternateCommentMode) { + // check for triple-slash comment + isDoc = charAt(start = offset + 1) === "/"; + + while (charAt(++offset) !== "\n") { + if (offset === length) { + return null; + } + } + ++offset; + if (isDoc) { + setComment(start, offset - 1, isLeadingComment); + // Trailing comment cannot not be multi-line, + // so leading comment state should be reset to handle potential next comments + isLeadingComment = true; + } + ++line; + repeat = true; + } else { + // check for double-slash comments, consolidating consecutive lines + start = offset; + isDoc = false; + if (isDoubleSlashCommentLine(offset - 1)) { + isDoc = true; + do { + offset = findEndOfLine(offset); + if (offset === length) { + break; + } + offset++; + if (!isLeadingComment) { + // Trailing comment cannot not be multi-line + break; + } + } while (isDoubleSlashCommentLine(offset)); + } else { + offset = Math.min(length, findEndOfLine(offset) + 1); + } + if (isDoc) { + setComment(start, offset, isLeadingComment); + isLeadingComment = true; + } + line++; + repeat = true; + } + } else if ((curr = charAt(offset)) === "*") { /* Block */ + // check for /** (regular comment mode) or /* (alternate comment mode) + start = offset + 1; + isDoc = alternateCommentMode || charAt(start) === "*"; + do { + if (curr === "\n") { + ++line; + } + if (++offset === length) { + throw illegal("comment"); + } + prev = curr; + curr = charAt(offset); + } while (prev !== "*" || curr !== "/"); + ++offset; + if (isDoc) { + setComment(start, offset - 2, isLeadingComment); + isLeadingComment = true; + } + repeat = true; + } else { + return "/"; + } + } + } while (repeat); + + // offset !== length if we got here + + var end = offset; + delimRe.lastIndex = 0; + var delim = delimRe.test(charAt(end++)); + if (!delim) + while (end < length && !delimRe.test(charAt(end))) + ++end; + var token = source.substring(offset, offset = end); + if (token === "\"" || token === "'") + stringDelim = token; + return token; + } + + /** + * Pushes a token back to the stack. + * @param {string} token Token + * @returns {undefined} + * @inner + */ + function push(token) { + stack.push(token); + } + + /** + * Peeks for the next token. + * @returns {string|null} Token or `null` on eof + * @inner + */ + function peek() { + if (!stack.length) { + var token = next(); + if (token === null) + return null; + push(token); + } + return stack[0]; + } + + /** + * Skips a token. + * @param {string} expected Expected token + * @param {boolean} [optional=false] Whether the token is optional + * @returns {boolean} `true` when skipped, `false` if not + * @throws {Error} When a required token is not present + * @inner + */ + function skip(expected, optional) { + var actual = peek(), + equals = actual === expected; + if (equals) { + next(); + return true; + } + if (!optional) + throw illegal("token '" + actual + "', '" + expected + "' expected"); + return false; + } + + /** + * Gets a comment. + * @param {number} [trailingLine] Line number if looking for a trailing comment + * @returns {string|null} Comment text + * @inner + */ + function cmnt(trailingLine) { + var ret = null; + var comment; + if (trailingLine === undefined) { + comment = comments[line - 1]; + delete comments[line - 1]; + if (comment && (alternateCommentMode || comment.type === "*" || comment.lineEmpty)) { + ret = comment.leading ? comment.text : null; + } + } else { + /* istanbul ignore else */ + if (lastCommentLine < trailingLine) { + peek(); + } + comment = comments[trailingLine]; + delete comments[trailingLine]; + if (comment && !comment.lineEmpty && (alternateCommentMode || comment.type === "/")) { + ret = comment.leading ? null : comment.text; + } + } + return ret; + } + + return Object.defineProperty({ + next: next, + peek: peek, + push: push, + skip: skip, + cmnt: cmnt + }, "line", { + get: function() { return line; } + }); + /* eslint-enable callback-return */ +} + +},{}],35:[function(require,module,exports){ +"use strict"; +module.exports = Type; + +// extends Namespace +var Namespace = require(23); +((Type.prototype = Object.create(Namespace.prototype)).constructor = Type).className = "Type"; + +var Enum = require(15), + OneOf = require(25), + Field = require(16), + MapField = require(20), + Service = require(33), + Message = require(21), + Reader = require(27), + Writer = require(42), + util = require(37), + encoder = require(14), + decoder = require(13), + verifier = require(40), + converter = require(12), + wrappers = require(41); + +/** + * Constructs a new reflected message type instance. + * @classdesc Reflected message type. + * @extends NamespaceBase + * @constructor + * @param {string} name Message name + * @param {Object.} [options] Declared options + */ +function Type(name, options) { + Namespace.call(this, name, options); + + /** + * Message fields. + * @type {Object.} + */ + this.fields = {}; // toJSON, marker + + /** + * Oneofs declared within this namespace, if any. + * @type {Object.} + */ + this.oneofs = undefined; // toJSON + + /** + * Extension ranges, if any. + * @type {number[][]} + */ + this.extensions = undefined; // toJSON + + /** + * Reserved ranges, if any. + * @type {Array.} + */ + this.reserved = undefined; // toJSON + + /*? + * Whether this type is a legacy group. + * @type {boolean|undefined} + */ + this.group = undefined; // toJSON + + /** + * Cached fields by id. + * @type {Object.|null} + * @private + */ + this._fieldsById = null; + + /** + * Cached fields as an array. + * @type {Field[]|null} + * @private + */ + this._fieldsArray = null; + + /** + * Cached oneofs as an array. + * @type {OneOf[]|null} + * @private + */ + this._oneofsArray = null; + + /** + * Cached constructor. + * @type {Constructor<{}>} + * @private + */ + this._ctor = null; +} + +Object.defineProperties(Type.prototype, { + + /** + * Message fields by id. + * @name Type#fieldsById + * @type {Object.} + * @readonly + */ + fieldsById: { + get: function() { + + /* istanbul ignore if */ + if (this._fieldsById) + return this._fieldsById; + + this._fieldsById = {}; + for (var names = Object.keys(this.fields), i = 0; i < names.length; ++i) { + var field = this.fields[names[i]], + id = field.id; + + /* istanbul ignore if */ + if (this._fieldsById[id]) + throw Error("duplicate id " + id + " in " + this); + + this._fieldsById[id] = field; + } + return this._fieldsById; + } + }, + + /** + * Fields of this message as an array for iteration. + * @name Type#fieldsArray + * @type {Field[]} + * @readonly + */ + fieldsArray: { + get: function() { + return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields)); + } + }, + + /** + * Oneofs of this message as an array for iteration. + * @name Type#oneofsArray + * @type {OneOf[]} + * @readonly + */ + oneofsArray: { + get: function() { + return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs)); + } + }, + + /** + * The registered constructor, if any registered, otherwise a generic constructor. + * Assigning a function replaces the internal constructor. If the function does not extend {@link Message} yet, its prototype will be setup accordingly and static methods will be populated. If it already extends {@link Message}, it will just replace the internal constructor. + * @name Type#ctor + * @type {Constructor<{}>} + */ + ctor: { + get: function() { + return this._ctor || (this.ctor = Type.generateConstructor(this)()); + }, + set: function(ctor) { + + // Ensure proper prototype + var prototype = ctor.prototype; + if (!(prototype instanceof Message)) { + (ctor.prototype = new Message()).constructor = ctor; + util.merge(ctor.prototype, prototype); + } + + // Classes and messages reference their reflected type + ctor.$type = ctor.prototype.$type = this; + + // Mix in static methods + util.merge(ctor, Message, true); + + this._ctor = ctor; + + // Messages have non-enumerable default values on their prototype + var i = 0; + for (; i < /* initializes */ this.fieldsArray.length; ++i) + this._fieldsArray[i].resolve(); // ensures a proper value + + // Messages have non-enumerable getters and setters for each virtual oneof field + var ctorProperties = {}; + for (i = 0; i < /* initializes */ this.oneofsArray.length; ++i) + ctorProperties[this._oneofsArray[i].resolve().name] = { + get: util.oneOfGetter(this._oneofsArray[i].oneof), + set: util.oneOfSetter(this._oneofsArray[i].oneof) + }; + if (i) + Object.defineProperties(ctor.prototype, ctorProperties); + } + } +}); + +/** + * Generates a constructor function for the specified type. + * @param {Type} mtype Message type + * @returns {Codegen} Codegen instance + */ +Type.generateConstructor = function generateConstructor(mtype) { + /* eslint-disable no-unexpected-multiline */ + var gen = util.codegen(["p"], mtype.name); + // explicitly initialize mutable object/array fields so that these aren't just inherited from the prototype + for (var i = 0, field; i < mtype.fieldsArray.length; ++i) + if ((field = mtype._fieldsArray[i]).map) gen + ("this%s={}", util.safeProp(field.name)); + else if (field.repeated) gen + ("this%s=[]", util.safeProp(field.name)); + return gen + ("if(p)for(var ks=Object.keys(p),i=0;i} [oneofs] Oneof descriptors + * @property {Object.} fields Field descriptors + * @property {number[][]} [extensions] Extension ranges + * @property {number[][]} [reserved] Reserved ranges + * @property {boolean} [group=false] Whether a legacy group or not + */ + +/** + * Creates a message type from a message type descriptor. + * @param {string} name Message name + * @param {IType} json Message type descriptor + * @returns {Type} Created message type + */ +Type.fromJSON = function fromJSON(name, json) { + var type = new Type(name, json.options); + type.extensions = json.extensions; + type.reserved = json.reserved; + var names = Object.keys(json.fields), + i = 0; + for (; i < names.length; ++i) + type.add( + ( typeof json.fields[names[i]].keyType !== "undefined" + ? MapField.fromJSON + : Field.fromJSON )(names[i], json.fields[names[i]]) + ); + if (json.oneofs) + for (names = Object.keys(json.oneofs), i = 0; i < names.length; ++i) + type.add(OneOf.fromJSON(names[i], json.oneofs[names[i]])); + if (json.nested) + for (names = Object.keys(json.nested), i = 0; i < names.length; ++i) { + var nested = json.nested[names[i]]; + type.add( // most to least likely + ( nested.id !== undefined + ? Field.fromJSON + : nested.fields !== undefined + ? Type.fromJSON + : nested.values !== undefined + ? Enum.fromJSON + : nested.methods !== undefined + ? Service.fromJSON + : Namespace.fromJSON )(names[i], nested) + ); + } + if (json.extensions && json.extensions.length) + type.extensions = json.extensions; + if (json.reserved && json.reserved.length) + type.reserved = json.reserved; + if (json.group) + type.group = true; + if (json.comment) + type.comment = json.comment; + return type; +}; + +/** + * Converts this message type to a message type descriptor. + * @param {IToJSONOptions} [toJSONOptions] JSON conversion options + * @returns {IType} Message type descriptor + */ +Type.prototype.toJSON = function toJSON(toJSONOptions) { + var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions); + var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false; + return util.toObject([ + "options" , inherited && inherited.options || undefined, + "oneofs" , Namespace.arrayToJSON(this.oneofsArray, toJSONOptions), + "fields" , Namespace.arrayToJSON(this.fieldsArray.filter(function(obj) { return !obj.declaringField; }), toJSONOptions) || {}, + "extensions" , this.extensions && this.extensions.length ? this.extensions : undefined, + "reserved" , this.reserved && this.reserved.length ? this.reserved : undefined, + "group" , this.group || undefined, + "nested" , inherited && inherited.nested || undefined, + "comment" , keepComments ? this.comment : undefined + ]); +}; + +/** + * @override + */ +Type.prototype.resolveAll = function resolveAll() { + var fields = this.fieldsArray, i = 0; + while (i < fields.length) + fields[i++].resolve(); + var oneofs = this.oneofsArray; i = 0; + while (i < oneofs.length) + oneofs[i++].resolve(); + return Namespace.prototype.resolveAll.call(this); +}; + +/** + * @override + */ +Type.prototype.get = function get(name) { + return this.fields[name] + || this.oneofs && this.oneofs[name] + || this.nested && this.nested[name] + || null; +}; + +/** + * Adds a nested object to this type. + * @param {ReflectionObject} object Nested object to add + * @returns {Type} `this` + * @throws {TypeError} If arguments are invalid + * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id + */ +Type.prototype.add = function add(object) { + + if (this.get(object.name)) + throw Error("duplicate name '" + object.name + "' in " + this); + + if (object instanceof Field && object.extend === undefined) { + // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects. + // The root object takes care of adding distinct sister-fields to the respective extended + // type instead. + + // avoids calling the getter if not absolutely necessary because it's called quite frequently + if (this._fieldsById ? /* istanbul ignore next */ this._fieldsById[object.id] : this.fieldsById[object.id]) + throw Error("duplicate id " + object.id + " in " + this); + if (this.isReservedId(object.id)) + throw Error("id " + object.id + " is reserved in " + this); + if (this.isReservedName(object.name)) + throw Error("name '" + object.name + "' is reserved in " + this); + + if (object.parent) + object.parent.remove(object); + this.fields[object.name] = object; + object.message = this; + object.onAdd(this); + return clearCache(this); + } + if (object instanceof OneOf) { + if (!this.oneofs) + this.oneofs = {}; + this.oneofs[object.name] = object; + object.onAdd(this); + return clearCache(this); + } + return Namespace.prototype.add.call(this, object); +}; + +/** + * Removes a nested object from this type. + * @param {ReflectionObject} object Nested object to remove + * @returns {Type} `this` + * @throws {TypeError} If arguments are invalid + * @throws {Error} If `object` is not a member of this type + */ +Type.prototype.remove = function remove(object) { + if (object instanceof Field && object.extend === undefined) { + // See Type#add for the reason why extension fields are excluded here. + + /* istanbul ignore if */ + if (!this.fields || this.fields[object.name] !== object) + throw Error(object + " is not a member of " + this); + + delete this.fields[object.name]; + object.parent = null; + object.onRemove(this); + return clearCache(this); + } + if (object instanceof OneOf) { + + /* istanbul ignore if */ + if (!this.oneofs || this.oneofs[object.name] !== object) + throw Error(object + " is not a member of " + this); + + delete this.oneofs[object.name]; + object.parent = null; + object.onRemove(this); + return clearCache(this); + } + return Namespace.prototype.remove.call(this, object); +}; + +/** + * Tests if the specified id is reserved. + * @param {number} id Id to test + * @returns {boolean} `true` if reserved, otherwise `false` + */ +Type.prototype.isReservedId = function isReservedId(id) { + return Namespace.isReservedId(this.reserved, id); +}; + +/** + * Tests if the specified name is reserved. + * @param {string} name Name to test + * @returns {boolean} `true` if reserved, otherwise `false` + */ +Type.prototype.isReservedName = function isReservedName(name) { + return Namespace.isReservedName(this.reserved, name); +}; + +/** + * Creates a new message of this type using the specified properties. + * @param {Object.} [properties] Properties to set + * @returns {Message<{}>} Message instance + */ +Type.prototype.create = function create(properties) { + return new this.ctor(properties); +}; + +/** + * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}. + * @returns {Type} `this` + */ +Type.prototype.setup = function setup() { + // Sets up everything at once so that the prototype chain does not have to be re-evaluated + // multiple times (V8, soft-deopt prototype-check). + + var fullName = this.fullName, + types = []; + for (var i = 0; i < /* initializes */ this.fieldsArray.length; ++i) + types.push(this._fieldsArray[i].resolve().resolvedType); + + // Replace setup methods with type-specific generated functions + this.encode = encoder(this)({ + Writer : Writer, + types : types, + util : util + }); + this.decode = decoder(this)({ + Reader : Reader, + types : types, + util : util + }); + this.verify = verifier(this)({ + types : types, + util : util + }); + this.fromObject = converter.fromObject(this)({ + types : types, + util : util + }); + this.toObject = converter.toObject(this)({ + types : types, + util : util + }); + + // Inject custom wrappers for common types + var wrapper = wrappers[fullName]; + if (wrapper) { + var originalThis = Object.create(this); + // if (wrapper.fromObject) { + originalThis.fromObject = this.fromObject; + this.fromObject = wrapper.fromObject.bind(originalThis); + // } + // if (wrapper.toObject) { + originalThis.toObject = this.toObject; + this.toObject = wrapper.toObject.bind(originalThis); + // } + } + + return this; +}; + +/** + * Encodes a message of this type. Does not implicitly {@link Type#verify|verify} messages. + * @param {Message<{}>|Object.} message Message instance or plain object + * @param {Writer} [writer] Writer to encode to + * @returns {Writer} writer + */ +Type.prototype.encode = function encode_setup(message, writer) { + return this.setup().encode(message, writer); // overrides this method +}; + +/** + * Encodes a message of this type preceeded by its byte length as a varint. Does not implicitly {@link Type#verify|verify} messages. + * @param {Message<{}>|Object.} message Message instance or plain object + * @param {Writer} [writer] Writer to encode to + * @returns {Writer} writer + */ +Type.prototype.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); +}; + +/** + * Decodes a message of this type. + * @param {Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Length of the message, if known beforehand + * @returns {Message<{}>} Decoded message + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {util.ProtocolError<{}>} If required fields are missing + */ +Type.prototype.decode = function decode_setup(reader, length) { + return this.setup().decode(reader, length); // overrides this method +}; + +/** + * Decodes a message of this type preceeded by its byte length as a varint. + * @param {Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {Message<{}>} Decoded message + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {util.ProtocolError} If required fields are missing + */ +Type.prototype.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof Reader)) + reader = Reader.create(reader); + return this.decode(reader, reader.uint32()); +}; + +/** + * Verifies that field values are valid and that required fields are present. + * @param {Object.} message Plain object to verify + * @returns {null|string} `null` if valid, otherwise the reason why it is not + */ +Type.prototype.verify = function verify_setup(message) { + return this.setup().verify(message); // overrides this method +}; + +/** + * Creates a new message of this type from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object to convert + * @returns {Message<{}>} Message instance + */ +Type.prototype.fromObject = function fromObject(object) { + return this.setup().fromObject(object); +}; + +/** + * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}. + * @interface IConversionOptions + * @property {Function} [longs] Long conversion type. + * Valid values are `String` and `Number` (the global types). + * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library. + * @property {Function} [enums] Enum value conversion type. + * Only valid value is `String` (the global type). + * Defaults to copy the present value, which is the numeric id. + * @property {Function} [bytes] Bytes value conversion type. + * Valid values are `Array` and (a base64 encoded) `String` (the global types). + * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser. + * @property {boolean} [defaults=false] Also sets default values on the resulting object + * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false` + * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false` + * @property {boolean} [oneofs=false] Includes virtual oneof properties set to the present field's name, if any + * @property {boolean} [json=false] Performs additional JSON compatibility conversions, i.e. NaN and Infinity to strings + */ + +/** + * Creates a plain object from a message of this type. Also converts values to other types if specified. + * @param {Message<{}>} message Message instance + * @param {IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ +Type.prototype.toObject = function toObject(message, options) { + return this.setup().toObject(message, options); +}; + +/** + * Decorator function as returned by {@link Type.d} (TypeScript). + * @typedef TypeDecorator + * @type {function} + * @param {Constructor} target Target constructor + * @returns {undefined} + * @template T extends Message + */ + +/** + * Type decorator (TypeScript). + * @param {string} [typeName] Type name, defaults to the constructor's name + * @returns {TypeDecorator} Decorator function + * @template T extends Message + */ +Type.d = function decorateType(typeName) { + return function typeDecorator(target) { + util.decorateType(target, typeName); + }; +}; + +},{"12":12,"13":13,"14":14,"15":15,"16":16,"20":20,"21":21,"23":23,"25":25,"27":27,"33":33,"37":37,"40":40,"41":41,"42":42}],36:[function(require,module,exports){ +"use strict"; + +/** + * Common type constants. + * @namespace + */ +var types = exports; + +var util = require(37); + +var s = [ + "double", // 0 + "float", // 1 + "int32", // 2 + "uint32", // 3 + "sint32", // 4 + "fixed32", // 5 + "sfixed32", // 6 + "int64", // 7 + "uint64", // 8 + "sint64", // 9 + "fixed64", // 10 + "sfixed64", // 11 + "bool", // 12 + "string", // 13 + "bytes" // 14 +]; + +function bake(values, offset) { + var i = 0, o = {}; + offset |= 0; + while (i < values.length) o[s[i + offset]] = values[i++]; + return o; +} + +/** + * Basic type wire types. + * @type {Object.} + * @const + * @property {number} double=1 Fixed64 wire type + * @property {number} float=5 Fixed32 wire type + * @property {number} int32=0 Varint wire type + * @property {number} uint32=0 Varint wire type + * @property {number} sint32=0 Varint wire type + * @property {number} fixed32=5 Fixed32 wire type + * @property {number} sfixed32=5 Fixed32 wire type + * @property {number} int64=0 Varint wire type + * @property {number} uint64=0 Varint wire type + * @property {number} sint64=0 Varint wire type + * @property {number} fixed64=1 Fixed64 wire type + * @property {number} sfixed64=1 Fixed64 wire type + * @property {number} bool=0 Varint wire type + * @property {number} string=2 Ldelim wire type + * @property {number} bytes=2 Ldelim wire type + */ +types.basic = bake([ + /* double */ 1, + /* float */ 5, + /* int32 */ 0, + /* uint32 */ 0, + /* sint32 */ 0, + /* fixed32 */ 5, + /* sfixed32 */ 5, + /* int64 */ 0, + /* uint64 */ 0, + /* sint64 */ 0, + /* fixed64 */ 1, + /* sfixed64 */ 1, + /* bool */ 0, + /* string */ 2, + /* bytes */ 2 +]); + +/** + * Basic type defaults. + * @type {Object.} + * @const + * @property {number} double=0 Double default + * @property {number} float=0 Float default + * @property {number} int32=0 Int32 default + * @property {number} uint32=0 Uint32 default + * @property {number} sint32=0 Sint32 default + * @property {number} fixed32=0 Fixed32 default + * @property {number} sfixed32=0 Sfixed32 default + * @property {number} int64=0 Int64 default + * @property {number} uint64=0 Uint64 default + * @property {number} sint64=0 Sint32 default + * @property {number} fixed64=0 Fixed64 default + * @property {number} sfixed64=0 Sfixed64 default + * @property {boolean} bool=false Bool default + * @property {string} string="" String default + * @property {Array.} bytes=Array(0) Bytes default + * @property {null} message=null Message default + */ +types.defaults = bake([ + /* double */ 0, + /* float */ 0, + /* int32 */ 0, + /* uint32 */ 0, + /* sint32 */ 0, + /* fixed32 */ 0, + /* sfixed32 */ 0, + /* int64 */ 0, + /* uint64 */ 0, + /* sint64 */ 0, + /* fixed64 */ 0, + /* sfixed64 */ 0, + /* bool */ false, + /* string */ "", + /* bytes */ util.emptyArray, + /* message */ null +]); + +/** + * Basic long type wire types. + * @type {Object.} + * @const + * @property {number} int64=0 Varint wire type + * @property {number} uint64=0 Varint wire type + * @property {number} sint64=0 Varint wire type + * @property {number} fixed64=1 Fixed64 wire type + * @property {number} sfixed64=1 Fixed64 wire type + */ +types.long = bake([ + /* int64 */ 0, + /* uint64 */ 0, + /* sint64 */ 0, + /* fixed64 */ 1, + /* sfixed64 */ 1 +], 7); + +/** + * Allowed types for map keys with their associated wire type. + * @type {Object.} + * @const + * @property {number} int32=0 Varint wire type + * @property {number} uint32=0 Varint wire type + * @property {number} sint32=0 Varint wire type + * @property {number} fixed32=5 Fixed32 wire type + * @property {number} sfixed32=5 Fixed32 wire type + * @property {number} int64=0 Varint wire type + * @property {number} uint64=0 Varint wire type + * @property {number} sint64=0 Varint wire type + * @property {number} fixed64=1 Fixed64 wire type + * @property {number} sfixed64=1 Fixed64 wire type + * @property {number} bool=0 Varint wire type + * @property {number} string=2 Ldelim wire type + */ +types.mapKey = bake([ + /* int32 */ 0, + /* uint32 */ 0, + /* sint32 */ 0, + /* fixed32 */ 5, + /* sfixed32 */ 5, + /* int64 */ 0, + /* uint64 */ 0, + /* sint64 */ 0, + /* fixed64 */ 1, + /* sfixed64 */ 1, + /* bool */ 0, + /* string */ 2 +], 2); + +/** + * Allowed types for packed repeated fields with their associated wire type. + * @type {Object.} + * @const + * @property {number} double=1 Fixed64 wire type + * @property {number} float=5 Fixed32 wire type + * @property {number} int32=0 Varint wire type + * @property {number} uint32=0 Varint wire type + * @property {number} sint32=0 Varint wire type + * @property {number} fixed32=5 Fixed32 wire type + * @property {number} sfixed32=5 Fixed32 wire type + * @property {number} int64=0 Varint wire type + * @property {number} uint64=0 Varint wire type + * @property {number} sint64=0 Varint wire type + * @property {number} fixed64=1 Fixed64 wire type + * @property {number} sfixed64=1 Fixed64 wire type + * @property {number} bool=0 Varint wire type + */ +types.packed = bake([ + /* double */ 1, + /* float */ 5, + /* int32 */ 0, + /* uint32 */ 0, + /* sint32 */ 0, + /* fixed32 */ 5, + /* sfixed32 */ 5, + /* int64 */ 0, + /* uint64 */ 0, + /* sint64 */ 0, + /* fixed64 */ 1, + /* sfixed64 */ 1, + /* bool */ 0 +]); + +},{"37":37}],37:[function(require,module,exports){ +"use strict"; + +/** + * Various utility functions. + * @namespace + */ +var util = module.exports = require(39); + +var roots = require(30); + +var Type, // cyclic + Enum; + +util.codegen = require(3); +util.fetch = require(5); +util.path = require(8); + +/** + * Node's fs module if available. + * @type {Object.} + */ +util.fs = util.inquire("fs"); + +/** + * Converts an object's values to an array. + * @param {Object.} object Object to convert + * @returns {Array.<*>} Converted array + */ +util.toArray = function toArray(object) { + if (object) { + var keys = Object.keys(object), + array = new Array(keys.length), + index = 0; + while (index < keys.length) + array[index] = object[keys[index++]]; + return array; + } + return []; +}; + +/** + * Converts an array of keys immediately followed by their respective value to an object, omitting undefined values. + * @param {Array.<*>} array Array to convert + * @returns {Object.} Converted object + */ +util.toObject = function toObject(array) { + var object = {}, + index = 0; + while (index < array.length) { + var key = array[index++], + val = array[index++]; + if (val !== undefined) + object[key] = val; + } + return object; +}; + +var safePropBackslashRe = /\\/g, + safePropQuoteRe = /"/g; + +/** + * Tests whether the specified name is a reserved word in JS. + * @param {string} name Name to test + * @returns {boolean} `true` if reserved, otherwise `false` + */ +util.isReserved = function isReserved(name) { + return /^(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$/.test(name); +}; + +/** + * Returns a safe property accessor for the specified property name. + * @param {string} prop Property name + * @returns {string} Safe accessor + */ +util.safeProp = function safeProp(prop) { + if (!/^[$\w_]+$/.test(prop) || util.isReserved(prop)) + return "[\"" + prop.replace(safePropBackslashRe, "\\\\").replace(safePropQuoteRe, "\\\"") + "\"]"; + return "." + prop; +}; + +/** + * Converts the first character of a string to upper case. + * @param {string} str String to convert + * @returns {string} Converted string + */ +util.ucFirst = function ucFirst(str) { + return str.charAt(0).toUpperCase() + str.substring(1); +}; + +var camelCaseRe = /_([a-z])/g; + +/** + * Converts a string to camel case. + * @param {string} str String to convert + * @returns {string} Converted string + */ +util.camelCase = function camelCase(str) { + return str.substring(0, 1) + + str.substring(1) + .replace(camelCaseRe, function($0, $1) { return $1.toUpperCase(); }); +}; + +/** + * Compares reflected fields by id. + * @param {Field} a First field + * @param {Field} b Second field + * @returns {number} Comparison value + */ +util.compareFieldsById = function compareFieldsById(a, b) { + return a.id - b.id; +}; + +/** + * Decorator helper for types (TypeScript). + * @param {Constructor} ctor Constructor function + * @param {string} [typeName] Type name, defaults to the constructor's name + * @returns {Type} Reflected type + * @template T extends Message + * @property {Root} root Decorators root + */ +util.decorateType = function decorateType(ctor, typeName) { + + /* istanbul ignore if */ + if (ctor.$type) { + if (typeName && ctor.$type.name !== typeName) { + util.decorateRoot.remove(ctor.$type); + ctor.$type.name = typeName; + util.decorateRoot.add(ctor.$type); + } + return ctor.$type; + } + + /* istanbul ignore next */ + if (!Type) + Type = require(35); + + var type = new Type(typeName || ctor.name); + util.decorateRoot.add(type); + type.ctor = ctor; // sets up .encode, .decode etc. + Object.defineProperty(ctor, "$type", { value: type, enumerable: false }); + Object.defineProperty(ctor.prototype, "$type", { value: type, enumerable: false }); + return type; +}; + +var decorateEnumIndex = 0; + +/** + * Decorator helper for enums (TypeScript). + * @param {Object} object Enum object + * @returns {Enum} Reflected enum + */ +util.decorateEnum = function decorateEnum(object) { + + /* istanbul ignore if */ + if (object.$type) + return object.$type; + + /* istanbul ignore next */ + if (!Enum) + Enum = require(15); + + var enm = new Enum("Enum" + decorateEnumIndex++, object); + util.decorateRoot.add(enm); + Object.defineProperty(object, "$type", { value: enm, enumerable: false }); + return enm; +}; + + +/** + * Sets the value of a property by property path. If a value already exists, it is turned to an array + * @param {Object.} dst Destination object + * @param {string} path dot '.' delimited path of the property to set + * @param {Object} value the value to set + * @returns {Object.} Destination object + */ +util.setProperty = function setProperty(dst, path, value) { + function setProp(dst, path, value) { + var part = path.shift(); + if (part === "__proto__" || part === "prototype") { + return dst; + } + if (path.length > 0) { + dst[part] = setProp(dst[part] || {}, path, value); + } else { + var prevValue = dst[part]; + if (prevValue) + value = [].concat(prevValue).concat(value); + dst[part] = value; + } + return dst; + } + + if (typeof dst !== "object") + throw TypeError("dst must be an object"); + if (!path) + throw TypeError("path must be specified"); + + path = path.split("."); + return setProp(dst, path, value); +}; + +/** + * Decorator root (TypeScript). + * @name util.decorateRoot + * @type {Root} + * @readonly + */ +Object.defineProperty(util, "decorateRoot", { + get: function() { + return roots["decorated"] || (roots["decorated"] = new (require(29))()); + } +}); + +},{"15":15,"29":29,"3":3,"30":30,"35":35,"39":39,"5":5,"8":8}],38:[function(require,module,exports){ +"use strict"; +module.exports = LongBits; + +var util = require(39); + +/** + * Constructs new long bits. + * @classdesc Helper class for working with the low and high bits of a 64 bit value. + * @memberof util + * @constructor + * @param {number} lo Low 32 bits, unsigned + * @param {number} hi High 32 bits, unsigned + */ +function LongBits(lo, hi) { + + // note that the casts below are theoretically unnecessary as of today, but older statically + // generated converter code might still call the ctor with signed 32bits. kept for compat. + + /** + * Low bits. + * @type {number} + */ + this.lo = lo >>> 0; + + /** + * High bits. + * @type {number} + */ + this.hi = hi >>> 0; +} + +/** + * Zero bits. + * @memberof util.LongBits + * @type {util.LongBits} + */ +var zero = LongBits.zero = new LongBits(0, 0); + +zero.toNumber = function() { return 0; }; +zero.zzEncode = zero.zzDecode = function() { return this; }; +zero.length = function() { return 1; }; + +/** + * Zero hash. + * @memberof util.LongBits + * @type {string} + */ +var zeroHash = LongBits.zeroHash = "\0\0\0\0\0\0\0\0"; + +/** + * Constructs new long bits from the specified number. + * @param {number} value Value + * @returns {util.LongBits} Instance + */ +LongBits.fromNumber = function fromNumber(value) { + if (value === 0) + return zero; + var sign = value < 0; + if (sign) + value = -value; + var lo = value >>> 0, + hi = (value - lo) / 4294967296 >>> 0; + if (sign) { + hi = ~hi >>> 0; + lo = ~lo >>> 0; + if (++lo > 4294967295) { + lo = 0; + if (++hi > 4294967295) + hi = 0; + } + } + return new LongBits(lo, hi); +}; + +/** + * Constructs new long bits from a number, long or string. + * @param {Long|number|string} value Value + * @returns {util.LongBits} Instance + */ +LongBits.from = function from(value) { + if (typeof value === "number") + return LongBits.fromNumber(value); + if (util.isString(value)) { + /* istanbul ignore else */ + if (util.Long) + value = util.Long.fromString(value); + else + return LongBits.fromNumber(parseInt(value, 10)); + } + return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero; +}; + +/** + * Converts this long bits to a possibly unsafe JavaScript number. + * @param {boolean} [unsigned=false] Whether unsigned or not + * @returns {number} Possibly unsafe number + */ +LongBits.prototype.toNumber = function toNumber(unsigned) { + if (!unsigned && this.hi >>> 31) { + var lo = ~this.lo + 1 >>> 0, + hi = ~this.hi >>> 0; + if (!lo) + hi = hi + 1 >>> 0; + return -(lo + hi * 4294967296); + } + return this.lo + this.hi * 4294967296; +}; + +/** + * Converts this long bits to a long. + * @param {boolean} [unsigned=false] Whether unsigned or not + * @returns {Long} Long + */ +LongBits.prototype.toLong = function toLong(unsigned) { + return util.Long + ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned)) + /* istanbul ignore next */ + : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) }; +}; + +var charCodeAt = String.prototype.charCodeAt; + +/** + * Constructs new long bits from the specified 8 characters long hash. + * @param {string} hash Hash + * @returns {util.LongBits} Bits + */ +LongBits.fromHash = function fromHash(hash) { + if (hash === zeroHash) + return zero; + return new LongBits( + ( charCodeAt.call(hash, 0) + | charCodeAt.call(hash, 1) << 8 + | charCodeAt.call(hash, 2) << 16 + | charCodeAt.call(hash, 3) << 24) >>> 0 + , + ( charCodeAt.call(hash, 4) + | charCodeAt.call(hash, 5) << 8 + | charCodeAt.call(hash, 6) << 16 + | charCodeAt.call(hash, 7) << 24) >>> 0 + ); +}; + +/** + * Converts this long bits to a 8 characters long hash. + * @returns {string} Hash + */ +LongBits.prototype.toHash = function toHash() { + return String.fromCharCode( + this.lo & 255, + this.lo >>> 8 & 255, + this.lo >>> 16 & 255, + this.lo >>> 24 , + this.hi & 255, + this.hi >>> 8 & 255, + this.hi >>> 16 & 255, + this.hi >>> 24 + ); +}; + +/** + * Zig-zag encodes this long bits. + * @returns {util.LongBits} `this` + */ +LongBits.prototype.zzEncode = function zzEncode() { + var mask = this.hi >> 31; + this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0; + this.lo = ( this.lo << 1 ^ mask) >>> 0; + return this; +}; + +/** + * Zig-zag decodes this long bits. + * @returns {util.LongBits} `this` + */ +LongBits.prototype.zzDecode = function zzDecode() { + var mask = -(this.lo & 1); + this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0; + this.hi = ( this.hi >>> 1 ^ mask) >>> 0; + return this; +}; + +/** + * Calculates the length of this longbits when encoded as a varint. + * @returns {number} Length + */ +LongBits.prototype.length = function length() { + var part0 = this.lo, + part1 = (this.lo >>> 28 | this.hi << 4) >>> 0, + part2 = this.hi >>> 24; + return part2 === 0 + ? part1 === 0 + ? part0 < 16384 + ? part0 < 128 ? 1 : 2 + : part0 < 2097152 ? 3 : 4 + : part1 < 16384 + ? part1 < 128 ? 5 : 6 + : part1 < 2097152 ? 7 : 8 + : part2 < 128 ? 9 : 10; +}; + +},{"39":39}],39:[function(require,module,exports){ +"use strict"; +var util = exports; + +// used to return a Promise where callback is omitted +util.asPromise = require(1); + +// converts to / from base64 encoded strings +util.base64 = require(2); + +// base class of rpc.Service +util.EventEmitter = require(4); + +// float handling accross browsers +util.float = require(6); + +// requires modules optionally and hides the call from bundlers +util.inquire = require(7); + +// converts to / from utf8 encoded strings +util.utf8 = require(10); + +// provides a node-like buffer pool in the browser +util.pool = require(9); + +// utility to work with the low and high bits of a 64 bit value +util.LongBits = require(38); + +/** + * Whether running within node or not. + * @memberof util + * @type {boolean} + */ +util.isNode = Boolean(typeof global !== "undefined" + && global + && global.process + && global.process.versions + && global.process.versions.node); + +/** + * Global object reference. + * @memberof util + * @type {Object} + */ +util.global = util.isNode && global + || typeof window !== "undefined" && window + || typeof self !== "undefined" && self + || this; // eslint-disable-line no-invalid-this + +/** + * An immuable empty array. + * @memberof util + * @type {Array.<*>} + * @const + */ +util.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes + +/** + * An immutable empty object. + * @type {Object} + * @const + */ +util.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes + +/** + * Tests if the specified value is an integer. + * @function + * @param {*} value Value to test + * @returns {boolean} `true` if the value is an integer + */ +util.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) { + return typeof value === "number" && isFinite(value) && Math.floor(value) === value; +}; + +/** + * Tests if the specified value is a string. + * @param {*} value Value to test + * @returns {boolean} `true` if the value is a string + */ +util.isString = function isString(value) { + return typeof value === "string" || value instanceof String; +}; + +/** + * Tests if the specified value is a non-null object. + * @param {*} value Value to test + * @returns {boolean} `true` if the value is a non-null object + */ +util.isObject = function isObject(value) { + return value && typeof value === "object"; +}; + +/** + * Checks if a property on a message is considered to be present. + * This is an alias of {@link util.isSet}. + * @function + * @param {Object} obj Plain object or message instance + * @param {string} prop Property name + * @returns {boolean} `true` if considered to be present, otherwise `false` + */ +util.isset = + +/** + * Checks if a property on a message is considered to be present. + * @param {Object} obj Plain object or message instance + * @param {string} prop Property name + * @returns {boolean} `true` if considered to be present, otherwise `false` + */ +util.isSet = function isSet(obj, prop) { + var value = obj[prop]; + if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins + return typeof value !== "object" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0; + return false; +}; + +/** + * Any compatible Buffer instance. + * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings. + * @interface Buffer + * @extends Uint8Array + */ + +/** + * Node's Buffer class if available. + * @type {Constructor} + */ +util.Buffer = (function() { + try { + var Buffer = util.inquire("buffer").Buffer; + // refuse to use non-node buffers if not explicitly assigned (perf reasons): + return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null; + } catch (e) { + /* istanbul ignore next */ + return null; + } +})(); + +// Internal alias of or polyfull for Buffer.from. +util._Buffer_from = null; + +// Internal alias of or polyfill for Buffer.allocUnsafe. +util._Buffer_allocUnsafe = null; + +/** + * Creates a new buffer of whatever type supported by the environment. + * @param {number|number[]} [sizeOrArray=0] Buffer size or number array + * @returns {Uint8Array|Buffer} Buffer + */ +util.newBuffer = function newBuffer(sizeOrArray) { + /* istanbul ignore next */ + return typeof sizeOrArray === "number" + ? util.Buffer + ? util._Buffer_allocUnsafe(sizeOrArray) + : new util.Array(sizeOrArray) + : util.Buffer + ? util._Buffer_from(sizeOrArray) + : typeof Uint8Array === "undefined" + ? sizeOrArray + : new Uint8Array(sizeOrArray); +}; + +/** + * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`. + * @type {Constructor} + */ +util.Array = typeof Uint8Array !== "undefined" ? Uint8Array /* istanbul ignore next */ : Array; + +/** + * Any compatible Long instance. + * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js. + * @interface Long + * @property {number} low Low bits + * @property {number} high High bits + * @property {boolean} unsigned Whether unsigned or not + */ + +/** + * Long.js's Long class if available. + * @type {Constructor} + */ +util.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long + || /* istanbul ignore next */ util.global.Long + || util.inquire("long"); + +/** + * Regular expression used to verify 2 bit (`bool`) map keys. + * @type {RegExp} + * @const + */ +util.key2Re = /^true|false|0|1$/; + +/** + * Regular expression used to verify 32 bit (`int32` etc.) map keys. + * @type {RegExp} + * @const + */ +util.key32Re = /^-?(?:0|[1-9][0-9]*)$/; + +/** + * Regular expression used to verify 64 bit (`int64` etc.) map keys. + * @type {RegExp} + * @const + */ +util.key64Re = /^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/; + +/** + * Converts a number or long to an 8 characters long hash string. + * @param {Long|number} value Value to convert + * @returns {string} Hash + */ +util.longToHash = function longToHash(value) { + return value + ? util.LongBits.from(value).toHash() + : util.LongBits.zeroHash; +}; + +/** + * Converts an 8 characters long hash string to a long or number. + * @param {string} hash Hash + * @param {boolean} [unsigned=false] Whether unsigned or not + * @returns {Long|number} Original value + */ +util.longFromHash = function longFromHash(hash, unsigned) { + var bits = util.LongBits.fromHash(hash); + if (util.Long) + return util.Long.fromBits(bits.lo, bits.hi, unsigned); + return bits.toNumber(Boolean(unsigned)); +}; + +/** + * Merges the properties of the source object into the destination object. + * @memberof util + * @param {Object.} dst Destination object + * @param {Object.} src Source object + * @param {boolean} [ifNotSet=false] Merges only if the key is not already set + * @returns {Object.} Destination object + */ +function merge(dst, src, ifNotSet) { // used by converters + for (var keys = Object.keys(src), i = 0; i < keys.length; ++i) + if (dst[keys[i]] === undefined || !ifNotSet) + dst[keys[i]] = src[keys[i]]; + return dst; +} + +util.merge = merge; + +/** + * Converts the first character of a string to lower case. + * @param {string} str String to convert + * @returns {string} Converted string + */ +util.lcFirst = function lcFirst(str) { + return str.charAt(0).toLowerCase() + str.substring(1); +}; + +/** + * Creates a custom error constructor. + * @memberof util + * @param {string} name Error name + * @returns {Constructor} Custom error constructor + */ +function newError(name) { + + function CustomError(message, properties) { + + if (!(this instanceof CustomError)) + return new CustomError(message, properties); + + // Error.call(this, message); + // ^ just returns a new error instance because the ctor can be called as a function + + Object.defineProperty(this, "message", { get: function() { return message; } }); + + /* istanbul ignore next */ + if (Error.captureStackTrace) // node + Error.captureStackTrace(this, CustomError); + else + Object.defineProperty(this, "stack", { value: new Error().stack || "" }); + + if (properties) + merge(this, properties); + } + + CustomError.prototype = Object.create(Error.prototype, { + constructor: { + value: CustomError, + writable: true, + enumerable: false, + configurable: true, + }, + name: { + get: function get() { return name; }, + set: undefined, + enumerable: false, + // configurable: false would accurately preserve the behavior of + // the original, but I'm guessing that was not intentional. + // For an actual error subclass, this property would + // be configurable. + configurable: true, + }, + toString: { + value: function value() { return this.name + ": " + this.message; }, + writable: true, + enumerable: false, + configurable: true, + }, + }); + + return CustomError; +} + +util.newError = newError; + +/** + * Constructs a new protocol error. + * @classdesc Error subclass indicating a protocol specifc error. + * @memberof util + * @extends Error + * @template T extends Message + * @constructor + * @param {string} message Error message + * @param {Object.} [properties] Additional properties + * @example + * try { + * MyMessage.decode(someBuffer); // throws if required fields are missing + * } catch (e) { + * if (e instanceof ProtocolError && e.instance) + * console.log("decoded so far: " + JSON.stringify(e.instance)); + * } + */ +util.ProtocolError = newError("ProtocolError"); + +/** + * So far decoded message instance. + * @name util.ProtocolError#instance + * @type {Message} + */ + +/** + * A OneOf getter as returned by {@link util.oneOfGetter}. + * @typedef OneOfGetter + * @type {function} + * @returns {string|undefined} Set field name, if any + */ + +/** + * Builds a getter for a oneof's present field name. + * @param {string[]} fieldNames Field names + * @returns {OneOfGetter} Unbound getter + */ +util.oneOfGetter = function getOneOf(fieldNames) { + var fieldMap = {}; + for (var i = 0; i < fieldNames.length; ++i) + fieldMap[fieldNames[i]] = 1; + + /** + * @returns {string|undefined} Set field name, if any + * @this Object + * @ignore + */ + return function() { // eslint-disable-line consistent-return + for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i) + if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null) + return keys[i]; + }; +}; + +/** + * A OneOf setter as returned by {@link util.oneOfSetter}. + * @typedef OneOfSetter + * @type {function} + * @param {string|undefined} value Field name + * @returns {undefined} + */ + +/** + * Builds a setter for a oneof's present field name. + * @param {string[]} fieldNames Field names + * @returns {OneOfSetter} Unbound setter + */ +util.oneOfSetter = function setOneOf(fieldNames) { + + /** + * @param {string} name Field name + * @returns {undefined} + * @this Object + * @ignore + */ + return function(name) { + for (var i = 0; i < fieldNames.length; ++i) + if (fieldNames[i] !== name) + delete this[fieldNames[i]]; + }; +}; + +/** + * Default conversion options used for {@link Message#toJSON} implementations. + * + * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely: + * + * - Longs become strings + * - Enums become string keys + * - Bytes become base64 encoded strings + * - (Sub-)Messages become plain objects + * - Maps become plain objects with all string keys + * - Repeated fields become arrays + * - NaN and Infinity for float and double fields become strings + * + * @type {IConversionOptions} + * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json + */ +util.toJSONOptions = { + longs: String, + enums: String, + bytes: String, + json: true +}; + +// Sets up buffer utility according to the environment (called in index-minimal) +util._configure = function() { + var Buffer = util.Buffer; + /* istanbul ignore if */ + if (!Buffer) { + util._Buffer_from = util._Buffer_allocUnsafe = null; + return; + } + // because node 4.x buffers are incompatible & immutable + // see: https://github.com/dcodeIO/protobuf.js/pull/665 + util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from || + /* istanbul ignore next */ + function Buffer_from(value, encoding) { + return new Buffer(value, encoding); + }; + util._Buffer_allocUnsafe = Buffer.allocUnsafe || + /* istanbul ignore next */ + function Buffer_allocUnsafe(size) { + return new Buffer(size); + }; +}; + +},{"1":1,"10":10,"2":2,"38":38,"4":4,"6":6,"7":7,"9":9}],40:[function(require,module,exports){ +"use strict"; +module.exports = verifier; + +var Enum = require(15), + util = require(37); + +function invalid(field, expected) { + return field.name + ": " + expected + (field.repeated && expected !== "array" ? "[]" : field.map && expected !== "object" ? "{k:"+field.keyType+"}" : "") + " expected"; +} + +/** + * Generates a partial value verifier. + * @param {Codegen} gen Codegen instance + * @param {Field} field Reflected field + * @param {number} fieldIndex Field index + * @param {string} ref Variable reference + * @returns {Codegen} Codegen instance + * @ignore + */ +function genVerifyValue(gen, field, fieldIndex, ref) { + /* eslint-disable no-unexpected-multiline */ + if (field.resolvedType) { + if (field.resolvedType instanceof Enum) { gen + ("switch(%s){", ref) + ("default:") + ("return%j", invalid(field, "enum value")); + for (var keys = Object.keys(field.resolvedType.values), j = 0; j < keys.length; ++j) gen + ("case %i:", field.resolvedType.values[keys[j]]); + gen + ("break") + ("}"); + } else { + gen + ("{") + ("var e=types[%i].verify(%s);", fieldIndex, ref) + ("if(e)") + ("return%j+e", field.name + ".") + ("}"); + } + } else { + switch (field.type) { + case "int32": + case "uint32": + case "sint32": + case "fixed32": + case "sfixed32": gen + ("if(!util.isInteger(%s))", ref) + ("return%j", invalid(field, "integer")); + break; + case "int64": + case "uint64": + case "sint64": + case "fixed64": + case "sfixed64": gen + ("if(!util.isInteger(%s)&&!(%s&&util.isInteger(%s.low)&&util.isInteger(%s.high)))", ref, ref, ref, ref) + ("return%j", invalid(field, "integer|Long")); + break; + case "float": + case "double": gen + ("if(typeof %s!==\"number\")", ref) + ("return%j", invalid(field, "number")); + break; + case "bool": gen + ("if(typeof %s!==\"boolean\")", ref) + ("return%j", invalid(field, "boolean")); + break; + case "string": gen + ("if(!util.isString(%s))", ref) + ("return%j", invalid(field, "string")); + break; + case "bytes": gen + ("if(!(%s&&typeof %s.length===\"number\"||util.isString(%s)))", ref, ref, ref) + ("return%j", invalid(field, "buffer")); + break; + } + } + return gen; + /* eslint-enable no-unexpected-multiline */ +} + +/** + * Generates a partial key verifier. + * @param {Codegen} gen Codegen instance + * @param {Field} field Reflected field + * @param {string} ref Variable reference + * @returns {Codegen} Codegen instance + * @ignore + */ +function genVerifyKey(gen, field, ref) { + /* eslint-disable no-unexpected-multiline */ + switch (field.keyType) { + case "int32": + case "uint32": + case "sint32": + case "fixed32": + case "sfixed32": gen + ("if(!util.key32Re.test(%s))", ref) + ("return%j", invalid(field, "integer key")); + break; + case "int64": + case "uint64": + case "sint64": + case "fixed64": + case "sfixed64": gen + ("if(!util.key64Re.test(%s))", ref) // see comment above: x is ok, d is not + ("return%j", invalid(field, "integer|Long key")); + break; + case "bool": gen + ("if(!util.key2Re.test(%s))", ref) + ("return%j", invalid(field, "boolean key")); + break; + } + return gen; + /* eslint-enable no-unexpected-multiline */ +} + +/** + * Generates a verifier specific to the specified message type. + * @param {Type} mtype Message type + * @returns {Codegen} Codegen instance + */ +function verifier(mtype) { + /* eslint-disable no-unexpected-multiline */ + + var gen = util.codegen(["m"], mtype.name + "$verify") + ("if(typeof m!==\"object\"||m===null)") + ("return%j", "object expected"); + var oneofs = mtype.oneofsArray, + seenFirstField = {}; + if (oneofs.length) gen + ("var p={}"); + + for (var i = 0; i < /* initializes */ mtype.fieldsArray.length; ++i) { + var field = mtype._fieldsArray[i].resolve(), + ref = "m" + util.safeProp(field.name); + + if (field.optional) gen + ("if(%s!=null&&m.hasOwnProperty(%j)){", ref, field.name); // !== undefined && !== null + + // map fields + if (field.map) { gen + ("if(!util.isObject(%s))", ref) + ("return%j", invalid(field, "object")) + ("var k=Object.keys(%s)", ref) + ("for(var i=0;i} + * @const + */ +var wrappers = exports; + +var Message = require(21); + +/** + * From object converter part of an {@link IWrapper}. + * @typedef WrapperFromObjectConverter + * @type {function} + * @param {Object.} object Plain object + * @returns {Message<{}>} Message instance + * @this Type + */ + +/** + * To object converter part of an {@link IWrapper}. + * @typedef WrapperToObjectConverter + * @type {function} + * @param {Message<{}>} message Message instance + * @param {IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + * @this Type + */ + +/** + * Common type wrapper part of {@link wrappers}. + * @interface IWrapper + * @property {WrapperFromObjectConverter} [fromObject] From object converter + * @property {WrapperToObjectConverter} [toObject] To object converter + */ + +// Custom wrapper for Any +wrappers[".google.protobuf.Any"] = { + + fromObject: function(object) { + + // unwrap value type if mapped + if (object && object["@type"]) { + // Only use fully qualified type name after the last '/' + var name = object["@type"].substring(object["@type"].lastIndexOf("/") + 1); + var type = this.lookup(name); + /* istanbul ignore else */ + if (type) { + // type_url does not accept leading "." + var type_url = object["@type"].charAt(0) === "." ? + object["@type"].slice(1) : object["@type"]; + // type_url prefix is optional, but path seperator is required + if (type_url.indexOf("/") === -1) { + type_url = "/" + type_url; + } + return this.create({ + type_url: type_url, + value: type.encode(type.fromObject(object)).finish() + }); + } + } + + return this.fromObject(object); + }, + + toObject: function(message, options) { + + // Default prefix + var googleApi = "type.googleapis.com/"; + var prefix = ""; + var name = ""; + + // decode value if requested and unmapped + if (options && options.json && message.type_url && message.value) { + // Only use fully qualified type name after the last '/' + name = message.type_url.substring(message.type_url.lastIndexOf("/") + 1); + // Separate the prefix used + prefix = message.type_url.substring(0, message.type_url.lastIndexOf("/") + 1); + var type = this.lookup(name); + /* istanbul ignore else */ + if (type) + message = type.decode(message.value); + } + + // wrap value if unmapped + if (!(message instanceof this.ctor) && message instanceof Message) { + var object = message.$type.toObject(message, options); + var messageName = message.$type.fullName[0] === "." ? + message.$type.fullName.slice(1) : message.$type.fullName; + // Default to type.googleapis.com prefix if no prefix is used + if (prefix === "") { + prefix = googleApi; + } + name = prefix + messageName; + object["@type"] = name; + return object; + } + + return this.toObject(message, options); + } +}; + +},{"21":21}],42:[function(require,module,exports){ +"use strict"; +module.exports = Writer; + +var util = require(39); + +var BufferWriter; // cyclic + +var LongBits = util.LongBits, + base64 = util.base64, + utf8 = util.utf8; + +/** + * Constructs a new writer operation instance. + * @classdesc Scheduled writer operation. + * @constructor + * @param {function(*, Uint8Array, number)} fn Function to call + * @param {number} len Value byte length + * @param {*} val Value to write + * @ignore + */ +function Op(fn, len, val) { + + /** + * Function to call. + * @type {function(Uint8Array, number, *)} + */ + this.fn = fn; + + /** + * Value byte length. + * @type {number} + */ + this.len = len; + + /** + * Next operation. + * @type {Writer.Op|undefined} + */ + this.next = undefined; + + /** + * Value to write. + * @type {*} + */ + this.val = val; // type varies +} + +/* istanbul ignore next */ +function noop() {} // eslint-disable-line no-empty-function + +/** + * Constructs a new writer state instance. + * @classdesc Copied writer state. + * @memberof Writer + * @constructor + * @param {Writer} writer Writer to copy state from + * @ignore + */ +function State(writer) { + + /** + * Current head. + * @type {Writer.Op} + */ + this.head = writer.head; + + /** + * Current tail. + * @type {Writer.Op} + */ + this.tail = writer.tail; + + /** + * Current buffer length. + * @type {number} + */ + this.len = writer.len; + + /** + * Next state. + * @type {State|null} + */ + this.next = writer.states; +} + +/** + * Constructs a new writer instance. + * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`. + * @constructor + */ +function Writer() { + + /** + * Current length. + * @type {number} + */ + this.len = 0; + + /** + * Operations head. + * @type {Object} + */ + this.head = new Op(noop, 0, 0); + + /** + * Operations tail + * @type {Object} + */ + this.tail = this.head; + + /** + * Linked forked states. + * @type {Object|null} + */ + this.states = null; + + // When a value is written, the writer calculates its byte length and puts it into a linked + // list of operations to perform when finish() is called. This both allows us to allocate + // buffers of the exact required size and reduces the amount of work we have to do compared + // to first calculating over objects and then encoding over objects. In our case, the encoding + // part is just a linked list walk calling operations with already prepared values. +} + +var create = function create() { + return util.Buffer + ? function create_buffer_setup() { + return (Writer.create = function create_buffer() { + return new BufferWriter(); + })(); + } + /* istanbul ignore next */ + : function create_array() { + return new Writer(); + }; +}; + +/** + * Creates a new writer. + * @function + * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer} + */ +Writer.create = create(); + +/** + * Allocates a buffer of the specified size. + * @param {number} size Buffer size + * @returns {Uint8Array} Buffer + */ +Writer.alloc = function alloc(size) { + return new util.Array(size); +}; + +// Use Uint8Array buffer pool in the browser, just like node does with buffers +/* istanbul ignore else */ +if (util.Array !== Array) + Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray); + +/** + * Pushes a new operation to the queue. + * @param {function(Uint8Array, number, *)} fn Function to call + * @param {number} len Value byte length + * @param {number} val Value to write + * @returns {Writer} `this` + * @private + */ +Writer.prototype._push = function push(fn, len, val) { + this.tail = this.tail.next = new Op(fn, len, val); + this.len += len; + return this; +}; + +function writeByte(val, buf, pos) { + buf[pos] = val & 255; +} + +function writeVarint32(val, buf, pos) { + while (val > 127) { + buf[pos++] = val & 127 | 128; + val >>>= 7; + } + buf[pos] = val; +} + +/** + * Constructs a new varint writer operation instance. + * @classdesc Scheduled varint writer operation. + * @extends Op + * @constructor + * @param {number} len Value byte length + * @param {number} val Value to write + * @ignore + */ +function VarintOp(len, val) { + this.len = len; + this.next = undefined; + this.val = val; +} + +VarintOp.prototype = Object.create(Op.prototype); +VarintOp.prototype.fn = writeVarint32; + +/** + * Writes an unsigned 32 bit value as a varint. + * @param {number} value Value to write + * @returns {Writer} `this` + */ +Writer.prototype.uint32 = function write_uint32(value) { + // here, the call to this.push has been inlined and a varint specific Op subclass is used. + // uint32 is by far the most frequently used operation and benefits significantly from this. + this.len += (this.tail = this.tail.next = new VarintOp( + (value = value >>> 0) + < 128 ? 1 + : value < 16384 ? 2 + : value < 2097152 ? 3 + : value < 268435456 ? 4 + : 5, + value)).len; + return this; +}; + +/** + * Writes a signed 32 bit value as a varint. + * @function + * @param {number} value Value to write + * @returns {Writer} `this` + */ +Writer.prototype.int32 = function write_int32(value) { + return value < 0 + ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec + : this.uint32(value); +}; + +/** + * Writes a 32 bit value as a varint, zig-zag encoded. + * @param {number} value Value to write + * @returns {Writer} `this` + */ +Writer.prototype.sint32 = function write_sint32(value) { + return this.uint32((value << 1 ^ value >> 31) >>> 0); +}; + +function writeVarint64(val, buf, pos) { + while (val.hi) { + buf[pos++] = val.lo & 127 | 128; + val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0; + val.hi >>>= 7; + } + while (val.lo > 127) { + buf[pos++] = val.lo & 127 | 128; + val.lo = val.lo >>> 7; + } + buf[pos++] = val.lo; +} + +/** + * Writes an unsigned 64 bit value as a varint. + * @param {Long|number|string} value Value to write + * @returns {Writer} `this` + * @throws {TypeError} If `value` is a string and no long library is present. + */ +Writer.prototype.uint64 = function write_uint64(value) { + var bits = LongBits.from(value); + return this._push(writeVarint64, bits.length(), bits); +}; + +/** + * Writes a signed 64 bit value as a varint. + * @function + * @param {Long|number|string} value Value to write + * @returns {Writer} `this` + * @throws {TypeError} If `value` is a string and no long library is present. + */ +Writer.prototype.int64 = Writer.prototype.uint64; + +/** + * Writes a signed 64 bit value as a varint, zig-zag encoded. + * @param {Long|number|string} value Value to write + * @returns {Writer} `this` + * @throws {TypeError} If `value` is a string and no long library is present. + */ +Writer.prototype.sint64 = function write_sint64(value) { + var bits = LongBits.from(value).zzEncode(); + return this._push(writeVarint64, bits.length(), bits); +}; + +/** + * Writes a boolish value as a varint. + * @param {boolean} value Value to write + * @returns {Writer} `this` + */ +Writer.prototype.bool = function write_bool(value) { + return this._push(writeByte, 1, value ? 1 : 0); +}; + +function writeFixed32(val, buf, pos) { + buf[pos ] = val & 255; + buf[pos + 1] = val >>> 8 & 255; + buf[pos + 2] = val >>> 16 & 255; + buf[pos + 3] = val >>> 24; +} + +/** + * Writes an unsigned 32 bit value as fixed 32 bits. + * @param {number} value Value to write + * @returns {Writer} `this` + */ +Writer.prototype.fixed32 = function write_fixed32(value) { + return this._push(writeFixed32, 4, value >>> 0); +}; + +/** + * Writes a signed 32 bit value as fixed 32 bits. + * @function + * @param {number} value Value to write + * @returns {Writer} `this` + */ +Writer.prototype.sfixed32 = Writer.prototype.fixed32; + +/** + * Writes an unsigned 64 bit value as fixed 64 bits. + * @param {Long|number|string} value Value to write + * @returns {Writer} `this` + * @throws {TypeError} If `value` is a string and no long library is present. + */ +Writer.prototype.fixed64 = function write_fixed64(value) { + var bits = LongBits.from(value); + return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi); +}; + +/** + * Writes a signed 64 bit value as fixed 64 bits. + * @function + * @param {Long|number|string} value Value to write + * @returns {Writer} `this` + * @throws {TypeError} If `value` is a string and no long library is present. + */ +Writer.prototype.sfixed64 = Writer.prototype.fixed64; + +/** + * Writes a float (32 bit). + * @function + * @param {number} value Value to write + * @returns {Writer} `this` + */ +Writer.prototype.float = function write_float(value) { + return this._push(util.float.writeFloatLE, 4, value); +}; + +/** + * Writes a double (64 bit float). + * @function + * @param {number} value Value to write + * @returns {Writer} `this` + */ +Writer.prototype.double = function write_double(value) { + return this._push(util.float.writeDoubleLE, 8, value); +}; + +var writeBytes = util.Array.prototype.set + ? function writeBytes_set(val, buf, pos) { + buf.set(val, pos); // also works for plain array values + } + /* istanbul ignore next */ + : function writeBytes_for(val, buf, pos) { + for (var i = 0; i < val.length; ++i) + buf[pos + i] = val[i]; + }; + +/** + * Writes a sequence of bytes. + * @param {Uint8Array|string} value Buffer or base64 encoded string to write + * @returns {Writer} `this` + */ +Writer.prototype.bytes = function write_bytes(value) { + var len = value.length >>> 0; + if (!len) + return this._push(writeByte, 1, 0); + if (util.isString(value)) { + var buf = Writer.alloc(len = base64.length(value)); + base64.decode(value, buf, 0); + value = buf; + } + return this.uint32(len)._push(writeBytes, len, value); +}; + +/** + * Writes a string. + * @param {string} value Value to write + * @returns {Writer} `this` + */ +Writer.prototype.string = function write_string(value) { + var len = utf8.length(value); + return len + ? this.uint32(len)._push(utf8.write, len, value) + : this._push(writeByte, 1, 0); +}; + +/** + * Forks this writer's state by pushing it to a stack. + * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state. + * @returns {Writer} `this` + */ +Writer.prototype.fork = function fork() { + this.states = new State(this); + this.head = this.tail = new Op(noop, 0, 0); + this.len = 0; + return this; +}; + +/** + * Resets this instance to the last state. + * @returns {Writer} `this` + */ +Writer.prototype.reset = function reset() { + if (this.states) { + this.head = this.states.head; + this.tail = this.states.tail; + this.len = this.states.len; + this.states = this.states.next; + } else { + this.head = this.tail = new Op(noop, 0, 0); + this.len = 0; + } + return this; +}; + +/** + * Resets to the last state and appends the fork state's current write length as a varint followed by its operations. + * @returns {Writer} `this` + */ +Writer.prototype.ldelim = function ldelim() { + var head = this.head, + tail = this.tail, + len = this.len; + this.reset().uint32(len); + if (len) { + this.tail.next = head.next; // skip noop + this.tail = tail; + this.len += len; + } + return this; +}; + +/** + * Finishes the write operation. + * @returns {Uint8Array} Finished buffer + */ +Writer.prototype.finish = function finish() { + var head = this.head.next, // skip noop + buf = this.constructor.alloc(this.len), + pos = 0; + while (head) { + head.fn(head.val, buf, pos); + pos += head.len; + head = head.next; + } + // this.head = this.tail = null; + return buf; +}; + +Writer._configure = function(BufferWriter_) { + BufferWriter = BufferWriter_; + Writer.create = create(); + BufferWriter._configure(); +}; + +},{"39":39}],43:[function(require,module,exports){ +"use strict"; +module.exports = BufferWriter; + +// extends Writer +var Writer = require(42); +(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter; + +var util = require(39); + +/** + * Constructs a new buffer writer instance. + * @classdesc Wire format writer using node buffers. + * @extends Writer + * @constructor + */ +function BufferWriter() { + Writer.call(this); +} + +BufferWriter._configure = function () { + /** + * Allocates a buffer of the specified size. + * @function + * @param {number} size Buffer size + * @returns {Buffer} Buffer + */ + BufferWriter.alloc = util._Buffer_allocUnsafe; + + BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === "set" + ? function writeBytesBuffer_set(val, buf, pos) { + buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited) + // also works for plain array values + } + /* istanbul ignore next */ + : function writeBytesBuffer_copy(val, buf, pos) { + if (val.copy) // Buffer values + val.copy(buf, pos, 0, val.length); + else for (var i = 0; i < val.length;) // plain array values + buf[pos++] = val[i++]; + }; +}; + + +/** + * @override + */ +BufferWriter.prototype.bytes = function write_bytes_buffer(value) { + if (util.isString(value)) + value = util._Buffer_from(value, "base64"); + var len = value.length >>> 0; + this.uint32(len); + if (len) + this._push(BufferWriter.writeBytesBuffer, len, value); + return this; +}; + +function writeStringBuffer(val, buf, pos) { + if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions) + util.utf8.write(val, buf, pos); + else if (buf.utf8Write) + buf.utf8Write(val, pos); + else + buf.write(val, pos); +} + +/** + * @override + */ +BufferWriter.prototype.string = function write_string_buffer(value) { + var len = util.Buffer.byteLength(value); + this.uint32(len); + if (len) + this._push(writeStringBuffer, len, value); + return this; +}; + + +/** + * Finishes the write operation. + * @name BufferWriter#finish + * @function + * @returns {Buffer} Finished buffer + */ + +BufferWriter._configure(); + +},{"39":39,"42":42}]},{},[19]) + +})(); +//# sourceMappingURL=protobuf.js.map diff --git a/headless/static/src/polyfills.bundle.js b/headless/static/src/polyfills.bundle.js new file mode 100644 index 00000000..e96f595c --- /dev/null +++ b/headless/static/src/polyfills.bundle.js @@ -0,0 +1 @@ +!function(t){"function"==typeof define&&define.amd?define(t):t()}((function(){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(t,n){return t(n={exports:{}},n.exports),n.exports}var r,e=n((function(n){!function(t){var n={};function r(e){if(n[e])return n[e].exports;var o=n[e]={i:e,l:!1,exports:{}};return t[e].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=t,r.c=n,r.d=function(t,n,e){r.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:e})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,n){if(1&n&&(t=r(t)),8&n)return t;if(4&n&&"object"==typeof t&&t&&t.__esModule)return t;var e=Object.create(null);if(r.r(e),Object.defineProperty(e,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var o in t)r.d(e,o,function(n){return t[n]}.bind(null,o));return e},r.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(n,"a",n),n},r.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},r.p="",r(r.s=0)}([function(t,n,r){r(1),r(62),r(63),r(64),r(65),r(66),r(67),r(68),r(69),r(70),r(71),r(72),r(73),r(74),r(75),r(76),r(81),r(84),r(87),r(89),r(90),r(91),r(92),r(94),r(95),r(97),r(106),r(107),r(108),r(116),r(117),r(119),r(120),r(121),r(123),r(124),r(125),r(126),r(128),r(129),r(130),r(131),r(138),r(140),r(141),r(142),r(143),r(144),r(145),r(152),r(154),r(155),r(156),r(158),r(159),r(161),r(162),r(164),r(165),r(166),r(167),r(168),r(169),r(170),r(171),r(172),r(173),r(174),r(177),r(178),r(180),r(182),r(183),r(184),r(185),r(186),r(188),r(190),r(193),r(195),r(197),r(198),r(200),r(201),r(202),r(203),r(204),r(205),r(206),r(208),r(209),r(210),r(211),r(212),r(213),r(214),r(215),r(216),r(218),r(219),r(229),r(230),r(231),r(232),r(234),r(235),r(236),r(237),r(238),r(239),r(240),r(241),r(242),r(243),r(244),r(245),r(249),r(251),r(252),r(253),r(254),r(255),r(256),r(258),r(261),r(262),r(263),r(264),r(268),r(269),r(272),r(273),r(274),r(275),r(276),r(277),r(278),r(279),r(281),r(282),r(283),r(286),r(287),r(288),r(289),r(290),r(291),r(292),r(293),r(294),r(295),r(296),r(297),r(298),r(305),r(306),r(307),r(308),r(309),r(310),r(311),r(312),r(313),r(314),r(315),r(316),r(317),r(318),r(319),r(320),r(321),r(322),r(323),r(324),r(325),r(326),r(327),r(328),r(329),r(330),r(331),r(332),r(333),r(334),r(335),r(336),r(337),r(338),t.exports=r(340)},function(t,n,r){var e=r(2),o=r(3),i=r(34),a=r(29),u=r(5),c=r(45),f=r(46),s=r(6),l=r(15),p=r(47),h=r(14),v=r(20),d=r(48),g=r(9),y=r(13),x=r(8),b=r(49),m=r(51),w=r(36),E=r(53),S=r(43),A=r(4),O=r(19),T=r(7),j=r(18),M=r(21),I=r(28),R=r(27),_=r(31),P=r(30),N=r(54),F=r(55),k=r(56),L=r(57),C=r(25),U=r(58).forEach,D=R("hidden"),z=N("toPrimitive"),W=C.set,B=C.getterFor("Symbol"),G=Object.prototype,Y=o.Symbol,V=i("JSON","stringify"),$=A.f,X=O.f,q=E.f,K=T.f,J=I("symbols"),Q=I("op-symbols"),H=I("string-to-symbol-registry"),Z=I("symbol-to-string-registry"),tt=I("wks"),nt=o.QObject,rt=!nt||!nt.prototype||!nt.prototype.findChild,et=u&&s((function(){return 7!=b(X({},"a",{get:function(){return X(this,"a",{value:7}).a}})).a}))?function(t,n,r){var e=$(G,n);e&&delete G[n],X(t,n,r),e&&t!==G&&X(G,n,e)}:X,ot=function(t,n){var r=J[t]=b(Y.prototype);return W(r,{type:"Symbol",tag:t,description:n}),u||(r.description=n),r},it=f?function(t){return"symbol"==typeof t}:function(t){return Object(t)instanceof Y},at=function(t,n,r){t===G&&at(Q,n,r),v(t);var e=y(n,!0);return v(r),l(J,e)?(r.enumerable?(l(t,D)&&t[D][e]&&(t[D][e]=!1),r=b(r,{enumerable:x(0,!1)})):(l(t,D)||X(t,D,x(1,{})),t[D][e]=!0),et(t,e,r)):X(t,e,r)},ut=function(t,n){v(t);var r=g(n),e=m(r).concat(lt(r));return U(e,(function(n){u&&!ct.call(r,n)||at(t,n,r[n])})),t},ct=function(t){var n=y(t,!0),r=K.call(this,n);return!(this===G&&l(J,n)&&!l(Q,n))&&(!(r||!l(this,n)||!l(J,n)||l(this,D)&&this[D][n])||r)},ft=function(t,n){var r=g(t),e=y(n,!0);if(r!==G||!l(J,e)||l(Q,e)){var o=$(r,e);return!o||!l(J,e)||l(r,D)&&r[D][e]||(o.enumerable=!0),o}},st=function(t){var n=q(g(t)),r=[];return U(n,(function(t){l(J,t)||l(_,t)||r.push(t)})),r},lt=function(t){var n=t===G,r=q(n?Q:g(t)),e=[];return U(r,(function(t){!l(J,t)||n&&!l(G,t)||e.push(J[t])})),e};c||(M((Y=function(){if(this instanceof Y)throw TypeError("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,n=P(t),r=function(t){this===G&&r.call(Q,t),l(this,D)&&l(this[D],n)&&(this[D][n]=!1),et(this,n,x(1,t))};return u&&rt&&et(G,n,{configurable:!0,set:r}),ot(n,t)}).prototype,"toString",(function(){return B(this).tag})),M(Y,"withoutSetter",(function(t){return ot(P(t),t)})),T.f=ct,O.f=at,A.f=ft,w.f=E.f=st,S.f=lt,F.f=function(t){return ot(N(t),t)},u&&(X(Y.prototype,"description",{configurable:!0,get:function(){return B(this).description}}),a||M(G,"propertyIsEnumerable",ct,{unsafe:!0}))),e({global:!0,wrap:!0,forced:!c,sham:!c},{Symbol:Y}),U(m(tt),(function(t){k(t)})),e({target:"Symbol",stat:!0,forced:!c},{for:function(t){var n=String(t);if(l(H,n))return H[n];var r=Y(n);return H[n]=r,Z[r]=n,r},keyFor:function(t){if(!it(t))throw TypeError(t+" is not a symbol");if(l(Z,t))return Z[t]},useSetter:function(){rt=!0},useSimple:function(){rt=!1}}),e({target:"Object",stat:!0,forced:!c,sham:!u},{create:function(t,n){return void 0===n?b(t):ut(b(t),n)},defineProperty:at,defineProperties:ut,getOwnPropertyDescriptor:ft}),e({target:"Object",stat:!0,forced:!c},{getOwnPropertyNames:st,getOwnPropertySymbols:lt}),e({target:"Object",stat:!0,forced:s((function(){S.f(1)}))},{getOwnPropertySymbols:function(t){return S.f(d(t))}}),V&&e({target:"JSON",stat:!0,forced:!c||s((function(){var t=Y();return"[null]"!=V([t])||"{}"!=V({a:t})||"{}"!=V(Object(t))}))},{stringify:function(t,n,r){for(var e,o=[t],i=1;arguments.length>i;)o.push(arguments[i++]);if(e=n,(h(n)||void 0!==t)&&!it(t))return p(n)||(n=function(t,n){if("function"==typeof e&&(n=e.call(this,t,n)),!it(n))return n}),o[1]=n,V.apply(null,o)}}),Y.prototype[z]||j(Y.prototype,z,Y.prototype.valueOf),L(Y,"Symbol"),_[D]=!0},function(t,n,r){var e=r(3),o=r(4).f,i=r(18),a=r(21),u=r(22),c=r(32),f=r(44);t.exports=function(t,n){var r,s,l,p,h,v=t.target,d=t.global,g=t.stat;if(r=d?e:g?e[v]||u(v,{}):(e[v]||{}).prototype)for(s in n){if(p=n[s],l=t.noTargetGet?(h=o(r,s))&&h.value:r[s],!f(d?s:v+(g?".":"#")+s,t.forced)&&void 0!==l){if(typeof p==typeof l)continue;c(p,l)}(t.sham||l&&l.sham)&&i(p,"sham",!0),a(r,s,p,t)}}},function(n,r){var e=function(t){return t&&t.Math==Math&&t};n.exports=e("object"==typeof globalThis&&globalThis)||e("object"==typeof window&&window)||e("object"==typeof self&&self)||e("object"==typeof t&&t)||Function("return this")()},function(t,n,r){var e=r(5),o=r(7),i=r(8),a=r(9),u=r(13),c=r(15),f=r(16),s=Object.getOwnPropertyDescriptor;n.f=e?s:function(t,n){if(t=a(t),n=u(n,!0),f)try{return s(t,n)}catch(t){}if(c(t,n))return i(!o.f.call(t,n),t[n])}},function(t,n,r){var e=r(6);t.exports=!e((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,n,r){var e={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!e.call({1:2},1);n.f=i?function(t){var n=o(this,t);return!!n&&n.enumerable}:e},function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},function(t,n,r){var e=r(10),o=r(12);t.exports=function(t){return e(o(t))}},function(t,n,r){var e=r(6),o=r(11),i="".split;t.exports=e((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},function(t,n){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,n){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,n,r){var e=r(14);t.exports=function(t,n){if(!e(t))return t;var r,o;if(n&&"function"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;if("function"==typeof(r=t.valueOf)&&!e(o=r.call(t)))return o;if(!n&&"function"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,n){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,n){var r={}.hasOwnProperty;t.exports=function(t,n){return r.call(t,n)}},function(t,n,r){var e=r(5),o=r(6),i=r(17);t.exports=!e&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(t,n,r){var e=r(3),o=r(14),i=e.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},function(t,n,r){var e=r(5),o=r(19),i=r(8);t.exports=e?function(t,n,r){return o.f(t,n,i(1,r))}:function(t,n,r){return t[n]=r,t}},function(t,n,r){var e=r(5),o=r(16),i=r(20),a=r(13),u=Object.defineProperty;n.f=e?u:function(t,n,r){if(i(t),n=a(n,!0),i(r),o)try{return u(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[n]=r.value),t}},function(t,n,r){var e=r(14);t.exports=function(t){if(!e(t))throw TypeError(String(t)+" is not an object");return t}},function(t,n,r){var e=r(3),o=r(18),i=r(15),a=r(22),u=r(23),c=r(25),f=c.get,s=c.enforce,l=String(String).split("String");(t.exports=function(t,n,r,u){var c=!!u&&!!u.unsafe,f=!!u&&!!u.enumerable,p=!!u&&!!u.noTargetGet;"function"==typeof r&&("string"!=typeof n||i(r,"name")||o(r,"name",n),s(r).source=l.join("string"==typeof n?n:"")),t!==e?(c?!p&&t[n]&&(f=!0):delete t[n],f?t[n]=r:o(t,n,r)):f?t[n]=r:a(n,r)})(Function.prototype,"toString",(function(){return"function"==typeof this&&f(this).source||u(this)}))},function(t,n,r){var e=r(3),o=r(18);t.exports=function(t,n){try{o(e,t,n)}catch(r){e[t]=n}return n}},function(t,n,r){var e=r(24),o=Function.toString;"function"!=typeof e.inspectSource&&(e.inspectSource=function(t){return o.call(t)}),t.exports=e.inspectSource},function(t,n,r){var e=r(3),o=r(22),i=e["__core-js_shared__"]||o("__core-js_shared__",{});t.exports=i},function(t,n,r){var e,o,i,a=r(26),u=r(3),c=r(14),f=r(18),s=r(15),l=r(27),p=r(31),h=u.WeakMap;if(a){var v=new h,d=v.get,g=v.has,y=v.set;e=function(t,n){return y.call(v,t,n),n},o=function(t){return d.call(v,t)||{}},i=function(t){return g.call(v,t)}}else{var x=l("state");p[x]=!0,e=function(t,n){return f(t,x,n),n},o=function(t){return s(t,x)?t[x]:{}},i=function(t){return s(t,x)}}t.exports={set:e,get:o,has:i,enforce:function(t){return i(t)?o(t):e(t,{})},getterFor:function(t){return function(n){var r;if(!c(n)||(r=o(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}}},function(t,n,r){var e=r(3),o=r(23),i=e.WeakMap;t.exports="function"==typeof i&&/native code/.test(o(i))},function(t,n,r){var e=r(28),o=r(30),i=e("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,n,r){var e=r(29),o=r(24);(t.exports=function(t,n){return o[t]||(o[t]=void 0!==n?n:{})})("versions",[]).push({version:"3.6.5",mode:e?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(t,n){t.exports=!1},function(t,n){var r=0,e=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++r+e).toString(36)}},function(t,n){t.exports={}},function(t,n,r){var e=r(15),o=r(33),i=r(4),a=r(19);t.exports=function(t,n){for(var r=o(n),u=a.f,c=i.f,f=0;fc;)e(u,r=n[c++])&&(~i(f,r)||f.push(r));return f}},function(t,n,r){var e=r(9),o=r(39),i=r(41),a=function(t){return function(n,r,a){var u,c=e(n),f=o(c.length),s=i(a,f);if(t&&r!=r){for(;f>s;)if((u=c[s++])!=u)return!0}else for(;f>s;s++)if((t||s in c)&&c[s]===r)return t||s||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},function(t,n,r){var e=r(40),o=Math.min;t.exports=function(t){return t>0?o(e(t),9007199254740991):0}},function(t,n){var r=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:r)(t)}},function(t,n,r){var e=r(40),o=Math.max,i=Math.min;t.exports=function(t,n){var r=e(t);return r<0?o(r+n,0):i(r,n)}},function(t,n){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,n){n.f=Object.getOwnPropertySymbols},function(t,n,r){var e=r(6),o=/#|\.prototype\./,i=function(t,n){var r=u[a(t)];return r==f||r!=c&&("function"==typeof n?e(n):!!n)},a=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},u=i.data={},c=i.NATIVE="N",f=i.POLYFILL="P";t.exports=i},function(t,n,r){var e=r(6);t.exports=!!Object.getOwnPropertySymbols&&!e((function(){return!String(Symbol())}))},function(t,n,r){var e=r(45);t.exports=e&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(t,n,r){var e=r(11);t.exports=Array.isArray||function(t){return"Array"==e(t)}},function(t,n,r){var e=r(12);t.exports=function(t){return Object(e(t))}},function(t,n,r){var e,o=r(20),i=r(50),a=r(42),u=r(31),c=r(52),f=r(17),s=r(27),l=s("IE_PROTO"),p=function(){},h=function(t){return"

LI*3mD^A(3Lvkr{Yk@^N)%{9X0~zT*rF&(7n8G4qK#qhwt?}C{aiM0LD0wcv*`3j^PCQ z0Xk+gKm3QBnp8Uc&yOzU(LTa}AbOGqT_!OO*iJd0-P@(*EuE6K;yRK zIvdF+Sl$2p1rWw5l}_}3q=v4rZCBpb$Kf(Aks7g`(&p8$*%%o&jxI-QG$}b22gucuOqNV~cND!H$P4i#F5*Jm`oG zGS4+)14HsVZSnZwExnxtZU+h9^>X&Jw`T#^m2TJt{xpVV+eXu(4m@m-bP2{N5tS=VVd}^n9DZL0^m0>KgJ`zL)M64*oJqEXcKkWzNDd)H1LX7fa33&>+8sL zrUxlVw6T$KNNYjs;Ua=|lyPVuv>fYKC!_lkmOojA?+vjG)~z?7^Ir<0-P%iG5kEU~ z$#HW3apn_RhI|Ce!EVS0b4E;1!Vfh`Jmy!>P%dJ=fT1IL4xN(UyP5dtA&!9a zokI5+AIlHQL4Zva7>`s6^d9aEp!+i(HiM2f>T&7aT_1oxdig--`!~Af2aU<6nsyZN)Lst|1(9<)06eUALubLjDAH4|I{S$ z=s(aa{w^&b5UJPsm>@4-ZZcR}xgL>r63|_lS$%X12XifNz!LC9vQLDOJ4GLvKP8R_x2Un%RqBdY>3SoBj%vA z@lU^)qD^hxduisG5QATr;*qb#Ic8Mq(`Kou zx$obfwEZJn8-C&JvKPa~*v+Y9+r4`uTRRpxz0`yeY4$f>i@RR#r)=%TKcbrVJ3iZF zd!yWm4c}*Lf6e`~R_c*i_Dg?UtUvl_wr1Y{v$^;EFw_2}$rU>7%hr~h@Ev+(MVe{K zoxKO!ZO_(XCr%mu@w@MsO3wTp(q{TSJIY@9#6RmJmu71(Y-`$}-+;I5eTSAgT3}(e7V>NF+1aT<_QT#W z8Qb2>*2>>KwWZd9`S#4lpM3W2OxF*4p}93b|E%p8eN3v;F@Zm907Yzo^ZgIm?uMDE_yh;n`Z9-%6(}`~GeF$zcVj zW)98P!kV^jcmKw_rZroly{89fYw!6_J2d&)JbTseAJz=&m95R$^>JYP_%}_bXOEoG zrgOITO2I1|3Qb5gy?x=8`Q5Z^ZPDu0KRufJw#k2Fa@+)ergyddUSY&^llJi!eU5l% zYrkKszPMqRRMW*tmo1$dW@{sgj?pG=e%t|#=*Y|kW#dc(nzs97eTi)C z>rXfIO71nqRBn@Z@qY?uYdvjiFBj-A&E$Qy=fi{o*;@ApCx*AWIM4LBe8d+;A7*I< zht6%2x?-CB_VNXxd;ZAMqJw%IzS(_&{m>_^TdumDrOj>JxAKD`OYD(n3&nnRBTGBp zVo|&6$Hv(2FTd({{#uq+uJVyDD^^@$zqX6mWqN*mDNB3P zT5m#FnT7T$scQ>%I+vvlo%vGNd8-E58#K9Jqxk78t@69wqLwzAWPfLM(D(O_Wof0? z?hLyb-qF-}ra7$Wkt{7cqHvpHk#Cy@Qq`O74`ylOpZ(z6kB8$-M@>7v`fzWS)~rlP zZSLcRrb{Qz+-k5ZOWUx1!Z%0KQcQIlv^aInk)@5z4E}9f)rF?#FFsoGg`NFbF^2pW z&9kp+^j^vrTe7rnD;8cjd}+G9L*#cKp8GmW3-vF#ZSSRV_Q`$T8_;lLmiEW6i8nfz znPxA!VEDn6pR@d#M->V+UuZg4_p26N)@NyjmcH3^)8dJyNBiD6S!P|9RxG&60c{1dKEUjM65svIH7uvsV^IGKl=~>$3Eq>G2l^JDs zoO>?04A-+hiQSwX6>e`@$zu9qd6w39MrLr^3#s<0i~9cg3fI4DH{{ib>f`LT&>Pp2 zxxV3*SsC54rrB+;f7JC|uD|(nNHw2|)9eSLIt=)Y>nBbY8*yk^nn@desgITQSN*8h zmJ2=;?b8eVmQp_0$om_I3Meb*{wmiW``CHt6Ic`^^P` zOTS;8rO}%&42@csW?B;Y=J)&7WN90Jy|tt1ra7kb=?ywuU7MvnzP4vs*w+^O?7*+e z`*42+hTa)G<&TM`7GujT`HcH>O519ysux>m-}`v}b3?hm>sO1JwfU3b_N#lo-OzGV zmNs}x+N3{g#n?;s+kYrV0YX=Y^B+zbti@_S$;iB`|JB- z-RDhAvqyeCr+$&FEN$y&7Y2O4E5!bHxjvgeypyE`{PA(y7gna(TMxcEC-F~?|H5_t zcTY##yNvkz_msyxUf&!v`f}EMd-uX0G}}-pTl@B6Xz??TZKmTpdZbn3`DX3n1%Lg$ zZN9x&wKGF^@_h7ViS^Asi%T*s>-WaRr4@NTe6)O+&rfqr6OKL({nU&32NydwFLSD? z$FYG;Zr9D$qAK8opn7sWQs)}kveh-oxB%4AK;zTnj|TRZ;M;VBi~Ott^D zYk0_WJio^O^;jFeZk~P8%p%!BAHT7}W}3e8 z?+X^K!PWUlEApYzZDY|Yksj4rTtaOn2aIb9VY1!I|8Lh(#er+@Tq0PG1 zBrRJTllWfW8+)dhru5wRci(rjwOjK~%qw$$p8Z_f$`9AC+<5y=GbpX&28Lu zeYRHAYfXFmuDPbVL(Ex~w`OZTzkRZ6QNyXGceajh*>F#`mi5Ll?@uD$GzD~u8=AuR z+nYbNxw5t8TzlE=%ho+Q&-bHm=l5zebFArX+WW8XxR$NWJRH`3N1^_v+hgW6+<7Nk zBY%CJ&@5`-!hv_1wAEJvnT{|lFG8+53JXN0);nbIk|j%i(I%{{FYv!~>bi7jx8EJR zv^ujI^14B=rT^htPwe0F`{YKa9jOCa)~mhoFJ9SjN>%7Z2RXJKJLT}YpLw?EM^&~7 zdYD2V)aj+MDW@E6GJC)Q0!3O#Rs|O7xUp}AZa?YB zY*&AwwQ@mSo)mgmm7TN9Cmn~U_Uzj9?2EeJnfF}wubwuoS;3Qz*3V78d8fk#-Tn-P z-qjk?^Wzhautj~R?fu+Kmrqydsf*ve*yV&{LF%59y#~Lm(^D0?*N7>wCfBNaLsAG;>t0(*JtzKPkKl83DK3zZib5@~aj>sW}9_?OT zN0-k~=xIrpYp*!!c;VT*uV#%dq0`e9`q7PxUJf|wc&+i>_cyn=rT5>H=&6c)z=+ri zTfTElH!b^!rlR{5_ci;VahaG-Xmq+&*U-#+gnRi_AOKWVKw)2o< z-lkdJ8+upN-s_0G{KbkdftW0h4bo2m4KJDnF zSI=ZP?hd^^<85nk-To)hy%hP(^WO7sI2^zGt{4`aY>XdL=+uy}kL?Z<-D=RtuYs=r zN%YLyuJ~sRofka9?kK!HbkM*ORdxR|6nbX&*0Bq=I`*#_dcAooV}5)RJzbGc_deZe z*JelbfTq3bPcr83C(%4Xq<6M&OftK$W^H-Qc_bRLvsr;2=;E28Eq0boe z-;?M8ihO3}x6icy((%KKe;z(J0)G*c)0604ihSydtQMBf9mQ76OBpe#tPy{eUOJ;$ z@%4`Rb6ZS#e{kccqh}iTY1oolam>XIpE`OboW43?aur?vN%RawKEvmaLAF(ntPg(o z>-@0MHmIa0(bHA=f3{42e}!YsKXvYHdgh)nzdeDTs?cfN3ri<2cU&p<>ZCfU_4W3j zL=RKsQ%@DCyyYE7tB?O$7(Az*E+3%K>EVXe8S@;=K0fisq-sCt_opY(y;S*9qZ?$t z=C~4Y?s@HUMP2`s=%mVvi01g`3G@tJ&pFe~wK)uJD+Py-+z9(z#9c4&S}`~&B%GUAi2&{Lz7=02@Z$N34RBIWak zLZ?>0t>3<1JJ#rzHNkC*81Yr<_b&_?azKlJoIa@D??rU~Nug)HX}Y=apk}QxAgE)a zF~4N~;@ZjA&jQ&km=%sG${X71! zcD&)+dlGNl*5{`%g`ReDL)*{4)tYZ8cfY}7+T)VO3(eqQm)29T|X)G4PVAoS@NCM?1vHuZyc(u`=4>$<=>!QVg6%|YV&*F zEPs9({*pAObcG&fj%vL7sP@aRrt-5Y80+U$g?=65^O#oU)<@wl)G)5UFophL?V(|# zk7=)$|LFd=@5=S3LXRF2zQl1%+qA7q-^ zq?UX-s@RdbO}B~odMWf~FTJ06;H0+lZ1Ku7y_)EBQt0XaMLw%}N*lZ{;`M~>#&dt> z&o2Lu?(ctp;wddVV0hNeb;kN9L!pNa{$bmxQ`!Z~%AyUPD{kn&rOEdIaz9`0%ggXrzM0(r zlKWV4KT7T^$^9X@&m;G1HZz{ z_d8tzbUu4Kov(?(_qJxdInD8RZlZCn$L)^;Md$qEK#ai4dc41!vDNu5IES9Gx%7<9 zsfQ6#&(S>f1SaKD6quA#6EM#60~Nl>%cejaoppCEkdMzYQu!lfz&Le9K$rUWyS%+) zEwS;5<3m%dma+J|NqQVM z8<#)dD9M+eKVOXG+n+z5`1_sWJ$U|nAb&po^SQde(fRX5NWL`Y zJ72P!#@TV@Q27AP8Txfbsf-KYEbHVSezV;<<{hzkqIRz20nOTSt#@>dn!X!Lmi3LU z@uBatEXY4m6B&D+Q~vyr0(-~N!}{gu*uc7U(eECOJfA_PC2vuC{$tkRegC0vE`3Uy z%zLPHTx~kus{?f_oJqxgZ9-KR9HZZ={zLUYuR_<`t)hF)CsW`zO=#IKQ)y$J1Zw|k zD4m|)iuzA!Ma%BCqFJF+sotO4=t1>1bm{RsRB~}4D%~`jiVvAZvDIVgyH{IKu|svK zbDvH0exyc?e+{Lrb(87pZ~Lh2#M^YgRS{ay?@ju9^siL?^H3@}d=52xb^uL$*qLs9 zI-0!f-%*RZ@6u17RHYH-`Bb#>&-BI;3#FG0r8)dz+SId;scup)DqPr`4h|?s2UaK1 z#LHncdUgg?+}(w~joL-Uu3wB zbz0o#5`FWE57lYAi>i&zrsWStQ1j}o>9yYv((UP0X;NAZ8pR*PI2HF7HETSU%C+f8 zUzOcUyDGj%>vr#?M!nio2^vn*Ug=CfjcH6v_r6QMBl-RN@kz9C)jQNOc1$4Y-J*qeDI$a*ri}oJ$p`t&Pr_5Il(MuUYbf@Yns*pL9n!M;oQ_75_ zDf~xE@68=b>o&Yb)qeS%x_0kKrJ_#Inu}-Yv(OGS%6x>1*IP*^mTaWLAOB9n#=b@? zc1|I)X$HNSG>+EK9zyYFwo&7c!|AT$5Y2f#o9gU{qL71~=-~G)sNU-1w9`C?${ZL= z1?!ZhGM$&w?!mih|DHhV^#vbZf9VdL?6{8Vce_fDPL(3s{*bCII!p;ivgpNj_vps$ zRQmGTF535?9xW`ih<1!=M@@=-NzZk=OqffmiQj@QiQ_yBjHLWekl; z>_Bsd`_S@oo5_B)7|rp1neN+KQL{o-=z0Ew;XR5*Q=_aw)MZT?*{(f9+fLV}`>%XV zaa|K>dHHObyXa%uIR6hi*1s=(SNwPKTI@^rdb~rO2nN4-M^^OufgPq)z<7&F6~kpa%E&n^BRcsBV$>XgD7h+Suki{hG3ervLd8 zbsPN(Rjs>~-nQ1Ky@%J*y0XEPc6k)d_Qw)D=$DYQa+hdM5LM9)u~P2TM<(Sla*(MA3d*GrqOQPCgTP`Q>3X;^AH4M|-{ zrAjZLlGo2tOzL_%|F{SFrV_LH8itMQ;L|9LdDwn(hG|!QQy{UsOpNHwEpI2G^|b;irv|Z8c$fpf5+<`dRCi4 z#cusU4FhIVtoIUXwXq15@G3`VcMYX`3wG1qbv>x}!H;NF%WvuDPg>BY3l`DE4$)LG z{1TG+P1=sB$<4ITF_)%r7qCeA8IGha%iy&w0d__)iI{TtEJ?t^IexlObtax0~L z_Z=O3rYe1YyD`mPvV(T58%xu=o}>H2(`j$&U0QpqDP6qrE@{K;bo5dzrR}Ru4bFc} zD_(9*wEkUM*MA{>J+L6vZ@iIuq`pe$imalPH80S_!5>ihG7ad$rpENw)kie*{692v z`y;xN5<`VQc}VS26X=b&a`b5WW2)D#2$`dNsX>Kl)N9+Xd_AqFd9iWyR#YqUb_}Jd zXS!0eAIj6d#vSQpb8|Y7aDro)TV#y>ky>2rtZmF-7q>G>V>DZlnO_~GkR zbks0v67mw&r4V|p>@E7S$TTYZTm-${ehy9Feu>UKYCxl3{+cGv^rJ#|{-G_7_bGZ* zAL`yF&O_==olA$gB0ov~pl5mDN6{RR6c=uvY;Zb8#9Sxb!tS z!tPNoOKB=lWHim*u$I2aI7)p(x>B{jU!b=VchQQ%Z73t4ITgMzkup0Srr!1cqSFWW z)Ac*;X;Q=`S{iYdzTfUmE8p2gV+Wli>rZ>=*0~pHYikpAuF#o6l0)hEwtEz}U@xt0 zGMruryh&Bsbs+QZ=~VyGFLdqn9jZC$AjQvbPDL~K(Bm_6C~nkc+VE&EEiAf&CJndI z=yhMvw{h=LyTpmKxAZ8w|J^54Kj{bh>cCdoM1AS<7tfPzYi+vvN*LMBzDduQYecVC zC_%4AE}{bU%hU1+DfH;kb{fzro4)6J_l@sgq*+_H(C&90lK1MmbUSVrE!xw9&aNIn z8&`it-yME|%FJv`@dN#+(SVt>P&<0oT2Y0ET;E^ zGpNtBzi2?=hjexPXEd{B3-VuAlcE-0ppffpXmTBYI(Tg<^?iONE%E)FJ~{IOSqpU~ z%NMukwHd2uM$dQX&tom9#)21mD=n_Id+FDc8Zyo5L_kN%eCqrps z)JodAb^?X`@gX&wQH$Dd4WYqtMX5%EY1FFA6q@PTM9uM=SeYpt={s$@=3(dUsJp zT3!Dwiat`0irw5ufy=$9_u_+;FgcuFom7iTZt`Pz$`6*5Q;WWK{(M;uAJi~1+rzszPK#4bFsnwhbGnvb*?*r4TE*Z5OBhc*tx*A^*tac8kF6V~_exHhOyseG#ymjPZcPw+>* z=H#DRa7k6~SetLZ^I-f9^B-EpW^WJO`_Cmu+ZpS--yCyKTlw&$PxN!=9UDsBy4C8f zyV}G})r-$+f5!2~vzs@(b>NOR@w?bczr1(C@lnK#5*44nqj`V*`<<)-xufBJK$W9!v7Zw;z-TN^fKoa0c~7RM@D(q4P( zmUbkx%h&J4uW`UGoLAIKKJ(q>-AA*-vb47MYA-+N|D~2b>Y3_auDqdbo$nv~Ny={R z=ZB*Pw&4B6<5zZfe{Sj#t?`-d)F@It~nZR zZoua@?>p_ONX4mQ#fmVmkZxl!6wm1}QAH|UoaxUNFTzJsi#=C?Pl*<0;&W6OGKQpN zM)`uQu;%AMf1cK_}6oCql@5q=5u1pIw4;90v7)i)6x8|N>^AJ zEU#3{0T%xh)6x7d|KH5p$JeiUic1)h1fV4=cAiWW1(ia%H4 z`4>u-DqZHqvgOLZRH0&}%2ldXtL{~!W-XoJN%Vi!`u{yM`%|#UvxSYpO~-8S)4=z( zHAqe9SMu@Wc6Ez$6!~XVbe$ipOV#DA-)RLXphHPYeS0y{kM|1kfT!l1$8a9a)*bo# z@#6)K$B%g*Av836+&J?{Yl^pbi_p-dXlrb!jX(S!YK@DG=N$t5y!4E3`F9n^#J+>V z-;!be%lAp{0ytm2nfcdpcGu7R3H(>MExGxxd*pA${P9+NHC~l~{t8FxkW0mFx`%%969AGMA6P~O-Y>E4>||0JV5#N#2uFY@{FvYg9tF3W2d?m=9^x%sjTBjN0OV4O~`$1p#Z3tm5l!wooq z;b;Ty$uN$`L*F2VlMFb5VVeObFpN($fM*iJqYQWk!!ZWDh~ZcRPG@+W0k36vya8`! zn1A*r^z3FBV-GryGK|E_ZV{sj92Xg*iVP$9vyX^hC52X*VYm2UEL!4{J&nb(ET6j{ zx$l##o`$11?;prA7kG>z?Kj%5qO@O?;cA?#bN1rwW{Zz^XlP2TN9E|tbVawx@Vf@< zkbc)>7zype?^+5C?bhb}GUqy+``cPMFFwd%U$6qVffQrdU6=W!Zphc;T%U6T&iKW} zGyEU+*DzOPIUPBR*tb4JoN$Qpm=lN08f|4m9Te3J7S ebd}7{jaJ;kN-d7*-4}T literal 0 HcmV?d00001 diff --git a/headless/static/cocos-js/cc.js b/headless/static/cocos-js/cc.js new file mode 100644 index 00000000..9a330c03 --- /dev/null +++ b/headless/static/cocos-js/cc.js @@ -0,0 +1,13 @@ +System.register(['./_virtual_cc-3c607f36.js'], (function (exports) { + 'use strict'; + return { + setters: [function (module) { + exports({ Acceleration: module.en, AffineTransform: module.aC, AlphaKey: module.c9, AmbientInfo: module.dr, AnimCurve: module.a8, Animation: module.a6, AnimationClip: module.a4, AnimationComponent: module.a6, AnimationManager: module.ac, AnimationState: module.a5, Asset: module.dQ, AssetLibrary: module.e8, AssetManager: module.e4, AsyncDelegate: module.bK, AudioClip: module.ag, AudioPCMDataView: module.ah, AudioSource: module.af, AudioSourceComponent: module.af, BASELINE_RATIO: module.z, BITMASK_TAG: module.cB, BaseNode: module.de, BaseRenderData: module.r, BitMask: module.bd, BitmapFont: module.B, BlockInputEvents: module.fw, BlockInputEventsComponent: module.fw, BloomStage: module.d0, BoxCollider2D: module.eS, BufferAsset: module.dR, BuiltinResMgr: module.ea, Button: module.fh, ButtonComponent: module.fh, CCBoolean: module.bA, CCClass: module.bv, CCFloat: module.bz, CCInteger: module.by, CCLoader: module.e6, CCObject: module.bx, CCString: module.bB, CacheMode: module.p, CachedArray: module.bc, CallbacksInvoker: module.cF, Camera: module.dE, CameraComponent: module.dE, Canvas: module.C, CanvasComponent: module.C, CircleCollider2D: module.eT, Collider2D: module.eR, Color: module.aH, ColorKey: module.c8, CompactValueTypeArray: module.bC, Component: module.dj, Contact2DType: module.eL, DEFAULT_OCTREE_DEPTH: module.dx, DEFAULT_WORLD_MAX_POS: module.dw, DEFAULT_WORLD_MIN_POS: module.dv, DebugMode: module.bX, DebugView: module.d8, DeferredPipeline: module.cY, DeferredPipelineBuilder: module.dd, Details: module.dO, Director: module.dJ, DistanceJoint2D: module.eW, DynamicAtlasManager: module.$, ECollider2DType: module.eH, EJoint2DType: module.eI, ENUM_TAG: module.cA, EPSILON: module.aM, EPhysics2DDrawFlags: module.eM, ERaycast2DType: module.eK, ERigidBody2DType: module.eG, EasingMethod: module.cE, EditBox: module.fi, EditBoxComponent: module.fi, EditorExtendable: module.bH, EffectAsset: module.dZ, Enum: module.be, Event: module.ee, EventAcceleration: module.ef, EventGamepad: module.ej, EventHMD: module.el, EventHandheld: module.em, EventHandle: module.ek, EventHandler: module.di, EventInfo: module.a9, EventKeyboard: module.eg, EventMouse: module.eh, EventTarget: module.bI, EventTouch: module.ei, Eventify: module.bJ, ExtrapolationMode: module.c3, FixedJoint2D: module.e$, FogInfo: module.dt, Font: module.F, ForwardFlow: module.cW, ForwardPipeline: module.cU, ForwardPipelineBuilder: module.dc, ForwardStage: module.cX, GCObject: module.cx, Game: module.dL, GbufferStage: module.c_, Gradient: module.ca, Graphics: module.G, GraphicsComponent: module.G, HALF_PI: module.aK, HingeJoint2D: module.f1, HorizontalTextAlignment: module.H, HtmlTextParser: module.y, ImageAsset: module.dW, Input: module.er, InstanceMaterialType: module.I, InstancedBuffer: module.d4, Intersection2D: module.ey, JavaScript: module.e1, Joint2D: module.eV, JsonAsset: module.dV, KeyCode: module.eo, LRUCache: module.E, Label: module.q, LabelAtlas: module.L, LabelComponent: module.q, LabelOutline: module.k, LabelOutlineComponent: module.k, LabelShadow: module.n, Layers: module.dg, Layout: module.fj, LayoutComponent: module.fj, LightProbeInfo: module.dB, LightingStage: module.c$, MATH_FLOAT_ARRAY: module.b8, MIDDLE_RATIO: module.A, MainFlow: module.cZ, Mask: module.f, MaskComponent: module.f, Mat3: module.az, Mat4: module.aA, Material: module.d_, MathBase: module.b9, MeshBuffer: module.M, MeshRenderData: module.u, MissingScript: module.dH, MobilityMode: module.dp, ModelRenderer: module.dF, MotionStreak: module.eA, MotionStreakAssemblerManager: module.eB, MouseJoint2D: module.eY, Node: module.de, NodeActivator: module.dk, NodeEventType: module.dq, NodePool: module.ec, NodeSpace: module.dm, ObjectCurve: module.c7, OctreeInfo: module.dy, Overflow: module.O, PHYSICS_2D_PTM_RATIO: module.eN, PageView: module.fs, PageViewComponent: module.fs, PageViewIndicator: module.ft, PageViewIndicatorComponent: module.ft, ParticleAsset: module.eD, ParticleSystem2D: module.ez, ParticleSystem2DAssembler: module.eC, Physics2DManifoldType: module.eP, Physics2DUtils: module.eE, PhysicsGroup: module.eJ, PhysicsSystem2D: module.eO, PipelineEventProcessor: module.d6, PipelineEventType: module.d7, PipelineSceneData: module.cT, PipelineStateManager: module.d5, PolygonCollider2D: module.eU, Pool: module.ba, PostProcessStage: module.d1, PostSettingsInfo: module.dA, Prefab: module.dl, PrefabLink: module.dI, PrivateNode: module.dD, Profiler: module.f2, ProgressBar: module.fk, ProgressBarComponent: module.fk, QuadRenderData: module.Q, Quat: module.ax, QuatCurve: module.c5, QuatInterpolationMode: module.c6, RatioSampler: module.a7, RealCurve: module.c1, RealInterpolationMode: module.c2, Rect: module.aF, RecyclePool: module.bb, ReflectionProbeFlow: module.d9, ReflectionProbeStage: module.da, RelativeJoint2D: module.eZ, RenderComponent: module.c, RenderData: module.t, RenderFlow: module.cR, RenderPipeline: module.cQ, RenderRoot2D: module.R, RenderStage: module.cS, RenderTexture: module.d$, Renderable2D: module.c, RenderableComponent: module.dF, Renderer: module.dG, RenderingSubMesh: module.dS, ResolutionPolicy: module.fA, RichText: module.h, RichTextComponent: module.h, RigidBody2D: module.eQ, Root: module.ak, SafeArea: module.fu, SafeAreaComponent: module.fu, Scene: module.df, SceneAsset: module.dT, SceneGlobals: module.dC, Scheduler: module.c0, Script: module.e0, ScrollBar: module.fl, ScrollBarComponent: module.fl, ScrollView: module.fm, ScrollViewComponent: module.fm, Settings: module.cb, ShadowFlow: module.d2, ShadowStage: module.d3, ShadowsInfo: module.du, Size: module.aD, SkinInfo: module.dz, SkyboxInfo: module.ds, Slider: module.fn, SliderComponent: module.fn, SliderJoint2D: module.e_, Sorting: module.a2, SortingLayers: module.a1, SpringJoint2D: module.eX, Sprite: module.i, SpriteAtlas: module.a, SpriteComponent: module.i, SpriteFrame: module.b, SpriteRenderer: module.e, StencilManager: module.S, SubContextView: module.fx, System: module.cd, SystemEvent: module.et, SystemEventType: module.ed, TTFFont: module.T, TWO_PI: module.aL, TangentWeightMode: module.c4, TextAsset: module.dU, Texture2D: module.dX, TextureCube: module.dY, TiledLayer: module.f8, TiledMap: module.f5, TiledMapAsset: module.f6, TiledObjectGroup: module.f9, TiledTile: module.fa, TiledUserNodeData: module.f7, Toggle: module.fo, ToggleComponent: module.fo, ToggleContainer: module.fp, ToggleContainerComponent: module.fp, Touch: module.ep, TransformBit: module.dn, Tween: module.ff, TweenAction: module.fg, TweenSystem: module.fc, TypeScript: module.e2, UI: module.w, UIComponent: module.U, UICoordinateTracker: module.fv, UICoordinateTrackerComponent: module.fv, UIDrawBatch: module.x, UIMeshRenderer: module.j, UIModelComponent: module.j, UIOpacity: module.o, UIOpacityComponent: module.o, UIRenderable: module.c, UIRenderer: module.c, UIReorderComponent: module.fC, UIStaticBatch: module.m, UIStaticBatchComponent: module.m, UITransform: module.d, UITransformComponent: module.d, UIVertexFormat: module.v, VERSION: module.ao, ValueType: module.bg, Vec2: module.ar, Vec3: module.at, Vec4: module.av, VerticalTextAlignment: module.V, VideoClip: module.fD, VideoPlayer: module.fE, View: module.fz, ViewGroup: module.fq, WebGL2Device: module.ex, WebGLDevice: module.ew, WebView: module.fF, WheelJoint2D: module.f0, Widget: module.fr, WidgetComponent: module.fr, WorldNode3DToLocalNodeUI: module.br, WorldNode3DToWorldNodeUI: module.bs, __checkObsoleteInNamespace__: module.bq, __checkObsolete__: module.bp, _decorator: module.bu, _resetDebugSetting: module.cH, absMax: module.b4, absMaxComponent: module.b3, animation: module.a3, applyMixins: module.cG, approx: module.aO, assert: module.bP, assertID: module.bT, assertIsNonNullable: module.cL, assertIsTrue: module.cM, assertsArrayIndex: module.cN, assetManager: module.e3, bezier: module.cg, bezierByTime: module.ch, binarySearch: module.cI, binarySearchBy: module.cK, binarySearchEpsilon: module.cJ, bits: module.aq, builtinResMgr: module.eb, ccenum: module.bf, cclegacy: module.ap, clamp: module.aP, clamp01: module.aQ, color: module.aI, computeRatioByType: module.ab, convertUtils: module.bt, createDefaultPipeline: module.cV, debug: module.bL, deprecateModuleExportedName: module.bo, deserialize: module.dN, deserializeTag: module.bE, director: module.dK, disallowAnimation: module.cr, displayName: module.cm, displayOrder: module.cn, dragonBones: module.ev, dynamicAtlasManager: module.a0, easing: module.ce, editable: module.cj, editorExtrasTag: module.bD, enumerableProps: module.b5, equals: module.aN, error: module.bN, errorID: module.bR, find: module.dh, flattenCodeArray: module.cO, floatToHalf: module.b6, formerlySerializedAs: module.ct, fragmentText: module.Z, game: module.dM, garbageCollectionManager: module.cw, geometry: module.an, getBaselineOffset: module.D, getEnglishWordPartAtFirst: module.X, getEnglishWordPartAtLast: module.Y, getError: module.bW, getPathFromRoot: module.ad, getPhaseID: module.db, getSerializationMetadata: module.bG, getWorldTransformUntilRoot: module.ae, gfx: module.ai, graphicsAssembler: module.g, halfToFloat: module.b7, input: module.eq, instantiate: module.dP, inverseLerp: module.b2, isCCClassOrFastDefined: module.bw, isCCObject: module.cC, isDisplayStats: module.bU, isEnglishWordPartAtFirst: module.P, isEnglishWordPartAtLast: module.W, isUnicodeCJK: module.J, isUnicodeSpace: module.K, isValid: module.cD, js: module.bh, jsbUtils: module.ci, labelAssembler: module.l, lerp: module.aR, loader: module.e7, log: module.bM, logID: module.bQ, macro: module.b_, markAsWarning: module.bn, mat4: module.aB, math: module.al, memop: module.am, misc: module.bi, murmurhash2_32_gc: module.cf, native: module.eu, nextPow2: module.a$, override: module.cs, path: module.bj, pingPong: module.b1, pipeline: module.cP, preTransforms: module.aJ, profiler: module.f3, pseudoRandom: module.aY, pseudoRandomRange: module.aZ, pseudoRandomRangeInt: module.a_, quat: module.ay, random: module.aU, randomRange: module.aW, randomRangeInt: module.aX, range: module.co, rangeStep: module.cp, rect: module.aG, removeProperty: module.bm, renderer: module.aj, repeat: module.b0, replaceProperty: module.bl, resources: module.e5, safeMeasureText: module.N, sampleAnimationCurve: module.aa, screen: module.bY, selector: module.eF, serializable: module.cu, serializeTag: module.bF, setDefaultLogTimes: module.bk, setDisplayStats: module.bV, setPropertyEnumType: module.cy, setPropertyEnumTypeOnAttrs: module.cz, setRandGenerator: module.aV, settings: module.cc, shift: module.cv, size: module.aE, slide: module.cq, sp: module.f4, spriteAssembler: module.s, sys: module.bZ, systemEvent: module.es, tiledLayerAssembler: module.fb, toDegree: module.aT, toRadian: module.aS, tooltip: module.ck, tween: module.fd, tweenUtil: module.fe, url: module.e9, v2: module.as, v3: module.au, v4: module.aw, view: module.fB, visible: module.cl, visibleRect: module.b$, warn: module.bO, warnID: module.bS, widgetManager: module.fy }); + }], + execute: (function () { + + + + }) + }; +})); diff --git a/headless/static/cocos-js/spine-3e0daee9.js b/headless/static/cocos-js/spine-3e0daee9.js new file mode 100644 index 00000000..b8210662 --- /dev/null +++ b/headless/static/cocos-js/spine-3e0daee9.js @@ -0,0 +1,10 @@ +System.register([], (function (exports, module) { + 'use strict'; + return { + execute: (function () { + + var spine = exports('default', 'assets/spine-a0005c42.wasm'); + + }) + }; +})); diff --git a/headless/static/cocos-js/spine.asm-0a7772b8.js b/headless/static/cocos-js/spine.asm-0a7772b8.js new file mode 100644 index 00000000..35a5719c --- /dev/null +++ b/headless/static/cocos-js/spine.asm-0a7772b8.js @@ -0,0 +1,37 @@ +System.register([], (function (exports) { + 'use strict'; + return { + execute: (function () { + + var spineWasm = exports('default', (() => { + var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; + + return ( + function(spineWasm = {}) { + + var Module=typeof spineWasm!="undefined"?spineWasm:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject;});var moduleOverrides=Object.assign({},Module);var ENVIRONMENT_IS_WEB=true;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;{if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src;}if(_scriptDir){scriptDirectory=_scriptDir;}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1);}else {scriptDirectory="";}{readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror();};xhr.onerror=onerror;xhr.send(null);};}}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])Module["arguments"];if(Module["thisProgram"])Module["thisProgram"];if(Module["quit"])Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];Module["noExitRuntime"]||true;var WebAssembly={Memory:function(opts){this.buffer=new ArrayBuffer(opts["initial"]*65536);},Module:function(binary){},Instance:function(module,info){this.exports=( + // EMSCRIPTEN_START_ASM + function instantiate(Ca){function c(d){d.set=function(a,b){this[a]=b;};d.get=function(a){return this[a]};return d}var f=new ArrayBuffer(16);var g=new Int32Array(f);var h=new Float32Array(f);var i=new Float64Array(f);function j(k){return g[k]}function l(k,m){g[k]=m;}function n(){return i[0]}function o(m){i[0]=m;}function p(){throw new Error("abort")}function q(m){h[2]=m;}function r(){return h[2]}function Aa(Ba){var s=Ba.a;var t=s.a;var u=t.buffer;t.grow=ya;var v=new Int8Array(u);var w=new Int16Array(u);var x=new Int32Array(u);var y=new Uint8Array(u);var z=new Uint16Array(u);var A=new Uint32Array(u);var B=new Float32Array(u);var C=new Float64Array(u);var D=Math.imul;var E=Math.fround;var F=Math.abs;var G=Math.clz32;var J=Math.floor;var M=Math.sqrt;var N=s.b;var O=s.c;var P=s.d;var Q=s.e;var R=s.f;var S=s.g;var T=s.h;var U=s.i;var V=s.j;var W=s.k;var X=s.l;var Y=s.m;var Z=s.n;var _=s.o;var $=s.p;var aa=s.q;var ba=s.r;var ca=s.s;var da=s.t;var ea=s.u;var fa=s.v;var ga=s.w;var ha=s.x;var ia=s.y;var ja=s.z;var ka=s.A;var la=s.B;var ma=s.C;var na=s.D;var oa=s.E;var pa=s.F;var qa=121616;var ra=0; + // EMSCRIPTEN_START_FUNCS + function nv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=E(0),k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=E(0),s=0,t=0,u=0,z=0,C=0,G=E(0),H=0,I=0,J=E(0),K=0,L=0,M=0,N=0,O=0,P=E(0),Q=0,R=0,S=0,T=0,U=0,V=E(0),W=0,X=0,Y=E(0),Z=0,_=E(0),$=E(0),aa=0,ba=E(0),ca=0;Z=qa-48|0;qa=Z;i=Pa(40);d=y[b+11|0];c=d<<24>>24<0;b=Mh(i,c?x[b>>2]:b,c?x[b+4>>2]:d);c=Pa(12);x[c>>2]=14308;x[c+4>>2]=b;x[c>>2]=14156;x[c+8>>2]=b;x[c>>2]=20100;m=Z+4|0;v[m+28|0]=0;x[m+4>>2]=c;x[m+36>>2]=0;x[m+40>>2]=0;x[m+32>>2]=1080;x[m+20>>2]=0;x[m+24>>2]=1065353216;x[m+12>>2]=0;x[m+16>>2]=0;x[m+8>>2]=17436;x[m>>2]=18640;x[m+24>>2]=1065353216;b=v[a+11|0]<0?x[a>>2]:a;e=qa-32|0;qa=e;c=x[m+40>>2];if((c|0)!=12639){if(c){a=Da();sa[x[x[a>>2]+20>>2]](a,c,8064,138);}x[m+36>>2]=0;a=Da();a=sa[x[x[a>>2]+12>>2]](a,1,8064,145)|0;x[m+40>>2]=a;Ha(a,0,x[m+36>>2]+1|0);}x[m+12>>2]=0;u=$c(Ea(32),b);h=Ae(Ma(232,5437,128));d=Ta(u,6104);a:{if(!d){break a}c=Xa(d,7642,0);b=x[h+184>>2];b:{if((c|0)==(b|0)){break b}if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,138);}if(!c){x[h+180>>2]=0;x[h+184>>2]=0;break b}b=Ga(c);x[h+180>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,145)|0;x[h+184>>2]=a;Fa(a,c,x[h+180>>2]+1|0);}c=Xa(d,8917,0);b=x[h+172>>2];c:{if((c|0)==(b|0)){break c}if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,138);}if(!c){x[h+168>>2]=0;x[h+172>>2]=0;break c}b=Ga(c);x[h+168>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,145)|0;x[h+172>>2]=a;Fa(a,c,x[h+168>>2]+1|0);}aa=h,ba=Ia(d,1669,E(0)),B[aa+148>>2]=ba;aa=h,ba=Ia(d,1277,E(0)),B[aa+152>>2]=ba;aa=h,ba=Ia(d,7475,E(0)),B[aa+156>>2]=ba;aa=h,ba=Ia(d,2681,E(0)),B[aa+160>>2]=ba;aa=h,ba=Ia(d,3199,E(30)),B[aa+204>>2]=ba;c=Xa(d,6071,0);b=x[h+228>>2];d:{if((c|0)==(b|0)){break d}if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,138);}if(!c){x[h+224>>2]=0;x[h+228>>2]=0;break d}b=Ga(c);x[h+224>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,145)|0;x[h+228>>2]=a;Fa(a,c,x[h+224>>2]+1|0);}c=Xa(d,3519,0);b=x[h+216>>2];if((c|0)==(b|0)){break a}if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,138);}if(!c){x[h+212>>2]=0;x[h+216>>2]=0;break a}b=Ga(c);x[h+212>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,145)|0;x[h+216>>2]=a;Fa(a,c,x[h+212>>2]+1|0);}f=Ta(u,3394);a=x[h+20>>2];d=x[f+12>>2];x[h+20>>2]=d;if(A[h+24>>2]>>0){j=E(E(d>>>0)*E(1.75));e:{if(E(F(j))>>0<=8?8:b;x[h+24>>2]=d;c=x[h+28>>2];b=Da();aa=h,ca=sa[x[x[b>>2]+16>>2]](b,c,d<<2,7693,82)|0,x[aa+28>>2]=ca;d=x[h+20>>2];}f:{if(a>>>0>=d>>>0){break f}c=(a^-1)+d|0;b=d-a&3;if(b){while(1){x[x[h+28>>2]+(a<<2)>>2]=0;a=a+1|0;g=g+1|0;if((b|0)!=(g|0)){continue}break}}if(c>>>0<3){break f}while(1){b=a<<2;x[b+x[h+28>>2]>>2]=0;x[(b+x[h+28>>2]|0)+4>>2]=0;x[(b+x[h+28>>2]|0)+8>>2]=0;x[(b+x[h+28>>2]|0)+12>>2]=0;a=a+4|0;if((d|0)!=(a|0)){continue}break}}a=x[f+4>>2];g:{if(a){d=0;while(1){g=0;h:{f=Xa(a,2321,0);if(!f){break h}x[e+20>>2]=1080;c=Ga(f);x[e+24>>2]=c;b=Da();b=sa[x[x[b>>2]+12>>2]](b,c+1|0,8064,57)|0;x[e+28>>2]=b;Fa(b,f,x[e+24>>2]+1|0);g=$b(h,e+20|0);x[e+20>>2]=1080;c=x[e+28>>2];if(c){b=Da();sa[x[x[b>>2]+20>>2]](b,c,8064,201);}if(g){break h}sa[x[x[h>>2]+4>>2]](h);x[e+24>>2]=23;x[e+20>>2]=1080;a=Da();c=sa[x[x[a>>2]+12>>2]](a,24,8064,57)|0;x[e+28>>2]=c;b=y[12504]|y[12505]<<8|(y[12506]<<16|y[12507]<<24);a=y[12500]|y[12501]<<8|(y[12502]<<16|y[12503]<<24);v[c+16|0]=a;v[c+17|0]=a>>>8;v[c+18|0]=a>>>16;v[c+19|0]=a>>>24;v[c+20|0]=b;v[c+21|0]=b>>>8;v[c+22|0]=b>>>16;v[c+23|0]=b>>>24;b=y[12496]|y[12497]<<8|(y[12498]<<16|y[12499]<<24);a=y[12492]|y[12493]<<8|(y[12494]<<16|y[12495]<<24);v[c+8|0]=a;v[c+9|0]=a>>>8;v[c+10|0]=a>>>16;v[c+11|0]=a>>>24;v[c+12|0]=b;v[c+13|0]=b>>>8;v[c+14|0]=b>>>16;v[c+15|0]=b>>>24;b=y[12488]|y[12489]<<8|(y[12490]<<16|y[12491]<<24);a=y[12484]|y[12485]<<8|(y[12486]<<16|y[12487]<<24);v[c|0]=a;v[c+1|0]=a>>>8;v[c+2|0]=a>>>16;v[c+3|0]=a>>>24;v[c+4|0]=b;v[c+5|0]=b>>>8;v[c+6|0]=b>>>16;v[c+7|0]=b>>>24;x[e+8>>2]=1080;b=Ga(f);x[e+12>>2]=b;a=Da();b=b+1|0;a=sa[x[x[a>>2]+12>>2]](a,b,8064,57)|0;x[e+16>>2]=a;Fa(a,f,b);$a(m,u,e+20|0,e+8|0);x[e+8>>2]=1080;b=x[e+16>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}x[e+20>>2]=1080;b=x[e+28>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}h=0;break g}f=Ma(64,5437,162);i=Xa(a,9402,0);x[e+20>>2]=1080;i:{if(!i){x[e+24>>2]=0;x[e+28>>2]=0;break i}c=Ga(i);x[e+24>>2]=c;b=Da();b=sa[x[x[b>>2]+12>>2]](b,c+1|0,8064,57)|0;x[e+28>>2]=b;Fa(b,i,x[e+24>>2]+1|0);}b=Af(f,d,e+20|0,g);x[e+20>>2]=1080;g=x[e+28>>2];if(g){c=Da();sa[x[x[c>>2]+20>>2]](c,g,8064,201);}aa=b,ba=E(Ia(a,7374,E(0))*B[m+24>>2]),B[aa+24>>2]=ba;aa=b,ba=E(Ia(a,1669,E(0))*B[m+24>>2]),B[aa+28>>2]=ba;aa=b,ba=E(Ia(a,1277,E(0))*B[m+24>>2]),B[aa+32>>2]=ba;aa=b,ba=Ia(a,6403,E(0)),B[aa+36>>2]=ba;aa=b,ba=Ia(a,11007,E(1)),B[aa+40>>2]=ba;aa=b,ba=Ia(a,10778,E(1)),B[aa+44>>2]=ba;aa=b,ba=Ia(a,10940,E(0)),B[aa+48>>2]=ba;aa=b,ba=Ia(a,10705,E(0)),B[aa+52>>2]=ba;g=Xa(a,7062,7212);x[b+56>>2]=0;j:{if(!Oa(g,7212)){break j}c=1;k:{if(!Oa(g,6724)){break k}c=2;if(!Oa(g,6317)){break k}c=3;if(!Oa(g,9504)){break k}if(Oa(g,6363)){break j}c=4;}x[b+56>>2]=c;}aa=b,ca=Gd(a),v[aa+60|0]=ca;x[x[h+28>>2]+(d<<2)>>2]=b;d=d+1|0;a=x[a>>2];if(a){continue}break}}f=Ta(u,2977);l:{if(!f){break l}d=x[f+12>>2];g=x[h+40>>2];if(d>>>0>g>>>0){x[h+40>>2]=d;b=x[h+44>>2];a=Da();aa=h,ca=sa[x[x[a>>2]+16>>2]](a,b,d<<2,7693,94)|0,x[aa+44>>2]=ca;g=x[h+40>>2];d=x[f+12>>2];}a=x[h+36>>2];x[h+36>>2]=d;if(d>>>0>g>>>0){j=E(E(d>>>0)*E(1.75));m:{if(E(F(j))>>0<=8?8:b;x[h+40>>2]=d;c=x[h+44>>2];b=Da();aa=h,ca=sa[x[x[b>>2]+16>>2]](b,c,d<<2,7693,82)|0,x[aa+44>>2]=ca;d=x[h+36>>2];}n:{if(a>>>0>=d>>>0){break n}c=(a^-1)+d|0;b=d-a&3;if(b){g=0;while(1){x[x[h+44>>2]+(a<<2)>>2]=0;a=a+1|0;g=g+1|0;if((b|0)!=(g|0)){continue}break}}if(c>>>0<3){break n}while(1){b=a<<2;x[b+x[h+44>>2]>>2]=0;x[(b+x[h+44>>2]|0)+4>>2]=0;x[(b+x[h+44>>2]|0)+8>>2]=0;x[(b+x[h+44>>2]|0)+12>>2]=0;a=a+4|0;if((d|0)!=(a|0)){continue}break}}a=x[f+4>>2];if(!a){break l}b=0;while(1){g=Xa(a,8872,0);x[e+20>>2]=1080;o:{if(!g){x[e+24>>2]=0;x[e+28>>2]=0;break o}d=Ga(g);x[e+24>>2]=d;c=Da();c=sa[x[x[c>>2]+12>>2]](c,d+1|0,8064,57)|0;x[e+28>>2]=c;Fa(c,g,x[e+24>>2]+1|0);}f=$b(h,e+20|0);x[e+20>>2]=1080;d=x[e+28>>2];if(d){c=Da();sa[x[x[c>>2]+20>>2]](c,d,8064,201);}if(!f){sa[x[x[h>>2]+4>>2]](h);x[e+24>>2]=21;x[e+20>>2]=1080;a=Da();c=sa[x[x[a>>2]+12>>2]](a,22,8064,57)|0;x[e+28>>2]=c;b=y[12480]|y[12481]<<8|(y[12482]<<16|y[12483]<<24);a=y[12476]|y[12477]<<8|(y[12478]<<16|y[12479]<<24);v[c+14|0]=a;v[c+15|0]=a>>>8;v[c+16|0]=a>>>16;v[c+17|0]=a>>>24;v[c+18|0]=b;v[c+19|0]=b>>>8;v[c+20|0]=b>>>16;v[c+21|0]=b>>>24;b=y[12474]|y[12475]<<8|(y[12476]<<16|y[12477]<<24);a=y[12470]|y[12471]<<8|(y[12472]<<16|y[12473]<<24);v[c+8|0]=a;v[c+9|0]=a>>>8;v[c+10|0]=a>>>16;v[c+11|0]=a>>>24;v[c+12|0]=b;v[c+13|0]=b>>>8;v[c+14|0]=b>>>16;v[c+15|0]=b>>>24;b=y[12466]|y[12467]<<8|(y[12468]<<16|y[12469]<<24);a=y[12462]|y[12463]<<8|(y[12464]<<16|y[12465]<<24);v[c|0]=a;v[c+1|0]=a>>>8;v[c+2|0]=a>>>16;v[c+3|0]=a>>>24;v[c+4|0]=b;v[c+5|0]=b>>>8;v[c+6|0]=b>>>16;v[c+7|0]=b>>>24;x[e+8>>2]=1080;p:{if(!g){x[e+12>>2]=0;x[e+16>>2]=0;$a(m,u,e+20|0,e+8|0);x[e+8>>2]=1080;break p}b=Ga(g);x[e+12>>2]=b;a=Da();b=b+1|0;a=sa[x[x[a>>2]+12>>2]](a,b,8064,57)|0;x[e+16>>2]=a;Fa(a,g,b);b=x[e+16>>2];$a(m,u,e+20|0,e+8|0);x[e+8>>2]=1080;if(!b){break p}a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}x[e+20>>2]=1080;b=x[e+28>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}h=0;break g}g=Ma(84,5437,210);i=Xa(a,9402,0);x[e+20>>2]=1080;q:{if(!i){x[e+24>>2]=0;x[e+28>>2]=0;break q}d=Ga(i);x[e+24>>2]=d;c=Da();c=sa[x[x[c>>2]+12>>2]](c,d+1|0,8064,57)|0;x[e+28>>2]=c;Fa(c,i,x[e+24>>2]+1|0);}c=pe(g,b,e+20|0,f);x[e+20>>2]=1080;g=x[e+28>>2];if(g){d=Da();sa[x[x[d>>2]+20>>2]](d,g,8064,201);}g=Xa(a,3737,0);if(g){r=E(-1);j=E(-1);r:{if(Ga(g)>>>0<2){break r}v[e+8|0]=y[g|0];d=y[g+1|0];v[e+10|0]=0;v[e+9|0]=d;d=bb(e+8|0,e+20|0);j=E(-1);if(y[x[e+20>>2]]){break r}j=E(E(d|0)/E(255));}B[c+28>>2]=j;s:{if(Ga(g)>>>0<4){break s}v[e+8|0]=y[g+2|0];d=y[g+3|0];v[e+10|0]=0;v[e+9|0]=d;d=bb(e+8|0,e+20|0);if(y[x[e+20>>2]]){break s}r=E(E(d|0)/E(255));}B[c+32>>2]=r;r=E(-1);j=E(-1);t:{if(Ga(g)>>>0<6){break t}v[e+8|0]=y[g+4|0];d=y[g+5|0];v[e+10|0]=0;v[e+9|0]=d;d=bb(e+8|0,e+20|0);j=E(-1);if(y[x[e+20>>2]]){break t}j=E(E(d|0)/E(255));}B[c+36>>2]=j;u:{if(Ga(g)>>>0<8){break u}v[e+8|0]=y[g+6|0];d=y[g+7|0];v[e+10|0]=0;v[e+9|0]=d;d=bb(e+8|0,e+20|0);if(y[x[e+20>>2]]){break u}r=E(E(d|0)/E(255));}B[c+40>>2]=r;}g=Xa(a,7254,0);if(g){r=E(-1);j=E(-1);v:{if(Ga(g)>>>0<2){break v}v[e+8|0]=y[g|0];d=y[g+1|0];v[e+10|0]=0;v[e+9|0]=d;d=bb(e+8|0,e+20|0);j=E(-1);if(y[x[e+20>>2]]){break v}j=E(E(d|0)/E(255));}B[c+48>>2]=j;w:{if(Ga(g)>>>0<4){break w}v[e+8|0]=y[g+2|0];d=y[g+3|0];v[e+10|0]=0;v[e+9|0]=d;d=bb(e+8|0,e+20|0);if(y[x[e+20>>2]]){break w}r=E(E(d|0)/E(255));}B[c+52>>2]=r;r=E(-1);x:{if(Ga(g)>>>0<6){break x}v[e+8|0]=y[g+4|0];d=y[g+5|0];v[e+10|0]=0;v[e+9|0]=d;d=bb(e+8|0,e+20|0);if(y[x[e+20>>2]]){break x}r=E(E(d|0)/E(255));}x[c+60>>2]=1065353216;B[c+56>>2]=r;v[c+64|0]=1;}d=Ta(a,2338);if(d){f=x[d+16>>2];x[e+20>>2]=1080;y:{if(!f){x[e+24>>2]=0;x[e+28>>2]=0;break y}g=Ga(f);x[e+24>>2]=g;d=Da();d=sa[x[x[d>>2]+12>>2]](d,g+1|0,8064,57)|0;x[e+28>>2]=d;Fa(d,f,x[e+24>>2]+1|0);}if((c+48|0)!=(e|0)){z:{g=x[c+76>>2];if(g){d=Da();sa[x[x[d>>2]+20>>2]](d,g,8064,122);}if(!x[e+28>>2]){x[c+72>>2]=0;x[c+76>>2]=0;break z}x[c+72>>2]=x[e+24>>2];g=x[e+24>>2];d=Da();d=sa[x[x[d>>2]+12>>2]](d,g+1|0,8064,129)|0;x[c+76>>2]=d;Fa(d,x[e+28>>2],x[e+24>>2]+1|0);}}x[e+20>>2]=1080;g=x[e+28>>2];if(g){d=Da();sa[x[x[d>>2]+20>>2]](d,g,8064,201);}}d=Ta(a,9899);A:{if(!d){break A}d=x[d+16>>2];i=1;B:{if(!Oa(d,8420)){break B}i=2;if(!Oa(d,1243)){break B}if(Oa(d,7025)){break A}i=3;}x[c+80>>2]=i;}x[x[h+44>>2]+(b<<2)>>2]=c;b=b+1|0;a=x[a>>2];if(a){continue}break}}f=Ta(u,7259);C:{if(!f){break C}d=x[f+12>>2];g=x[h+108>>2];if(d>>>0>g>>>0){x[h+108>>2]=d;b=x[h+112>>2];a=Da();aa=h,ca=sa[x[x[a>>2]+16>>2]](a,b,d<<2,7693,94)|0,x[aa+112>>2]=ca;g=x[h+108>>2];d=x[f+12>>2];}a=x[h+104>>2];x[h+104>>2]=d;if(d>>>0>g>>>0){j=E(E(d>>>0)*E(1.75));D:{if(E(F(j))>>0<=8?8:b;x[h+108>>2]=d;c=x[h+112>>2];b=Da();aa=h,ca=sa[x[x[b>>2]+16>>2]](b,c,d<<2,7693,82)|0,x[aa+112>>2]=ca;d=x[h+104>>2];}E:{if(a>>>0>=d>>>0){break E}c=(a^-1)+d|0;b=d-a&3;if(b){g=0;while(1){x[x[h+112>>2]+(a<<2)>>2]=0;a=a+1|0;g=g+1|0;if((b|0)!=(g|0)){continue}break}}if(c>>>0<3){break E}while(1){b=a<<2;x[b+x[h+112>>2]>>2]=0;x[(b+x[h+112>>2]|0)+4>>2]=0;x[(b+x[h+112>>2]|0)+8>>2]=0;x[(b+x[h+112>>2]|0)+12>>2]=0;a=a+4|0;if((d|0)!=(a|0)){continue}break}}p=x[f+4>>2];if(!p){break C}while(1){c=Ma(60,5437,257);d=Xa(p,9402,0);x[e+20>>2]=1080;F:{if(!d){x[e+24>>2]=0;x[e+28>>2]=0;break F}b=Ga(d);x[e+24>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,57)|0;x[e+28>>2]=a;Fa(a,d,x[e+24>>2]+1|0);}a=cf(c,e+20|0);x[e+20>>2]=1080;c=x[e+28>>2];if(c){b=Da();sa[x[x[b>>2]+20>>2]](b,c,8064,201);}aa=a,ca=fb(p,3833,0),x[aa+16>>2]=ca;aa=a,ca=Gd(p),v[aa+20|0]=ca;i=Ta(p,3394);d=x[a+32>>2];f=x[i+12>>2];if(d>>>0>>0){x[a+32>>2]=f;c=x[a+36>>2];b=Da();aa=a,ca=sa[x[x[b>>2]+16>>2]](b,c,f<<2,7693,94)|0,x[aa+36>>2]=ca;f=x[i+12>>2];d=x[a+32>>2];}g=x[a+28>>2];x[a+28>>2]=f;if(d>>>0>>0){j=E(E(f>>>0)*E(1.75));G:{if(E(F(j))>>0<=8?8:b;x[a+32>>2]=d;c=x[a+36>>2];b=Da();aa=a,ca=sa[x[x[b>>2]+16>>2]](b,c,d<<2,7693,82)|0,x[aa+36>>2]=ca;f=x[a+28>>2];}H:{if(f>>>0<=g>>>0){break H}c=(g^-1)+f|0;d=0;b=f-g&3;if(b){while(1){x[x[a+36>>2]+(g<<2)>>2]=0;g=g+1|0;d=d+1|0;if((b|0)!=(d|0)){continue}break}}if(c>>>0<3){break H}while(1){b=g<<2;x[b+x[a+36>>2]>>2]=0;x[(b+x[a+36>>2]|0)+4>>2]=0;x[(b+x[a+36>>2]|0)+8>>2]=0;x[(b+x[a+36>>2]|0)+12>>2]=0;g=g+4|0;if((g|0)!=(f|0)){continue}break}}I:{d=x[i+4>>2];if(!d){break I}f=0;while(1){g=x[d+16>>2];x[e+20>>2]=1080;J:{if(!g){x[e+24>>2]=0;x[e+28>>2]=0;break J}c=Ga(g);x[e+24>>2]=c;b=Da();b=sa[x[x[b>>2]+12>>2]](b,c+1|0,8064,57)|0;x[e+28>>2]=b;Fa(b,g,x[e+24>>2]+1|0);}b=$b(h,e+20|0);g=f<<2;x[g+x[a+36>>2]>>2]=b;x[e+20>>2]=1080;c=x[e+28>>2];if(c){b=Da();sa[x[x[b>>2]+20>>2]](b,c,8064,201);}if(x[g+x[a+36>>2]>>2]){f=f+1|0;d=x[d>>2];if(!d){break I}continue}break}sa[x[x[h>>2]+4>>2]](h);x[e+24>>2]=19;x[e+20>>2]=1080;a=Da();c=sa[x[x[a>>2]+12>>2]](a,20,8064,57)|0;x[e+28>>2]=c;a=y[12619]|y[12620]<<8|(y[12621]<<16|y[12622]<<24);v[c+16|0]=a;v[c+17|0]=a>>>8;v[c+18|0]=a>>>16;v[c+19|0]=a>>>24;b=y[12615]|y[12616]<<8|(y[12617]<<16|y[12618]<<24);a=y[12611]|y[12612]<<8|(y[12613]<<16|y[12614]<<24);v[c+8|0]=a;v[c+9|0]=a>>>8;v[c+10|0]=a>>>16;v[c+11|0]=a>>>24;v[c+12|0]=b;v[c+13|0]=b>>>8;v[c+14|0]=b>>>16;v[c+15|0]=b>>>24;b=y[12607]|y[12608]<<8|(y[12609]<<16|y[12610]<<24);a=y[12603]|y[12604]<<8|(y[12605]<<16|y[12606]<<24);v[c|0]=a;v[c+1|0]=a>>>8;v[c+2|0]=a>>>16;v[c+3|0]=a>>>24;v[c+4|0]=b;v[c+5|0]=b>>>8;v[c+6|0]=b>>>16;v[c+7|0]=b>>>24;c=x[d+16>>2];x[e+8>>2]=1080;K:{if(!c){x[e+12>>2]=0;x[e+16>>2]=0;$a(m,u,e+20|0,e+8|0);x[e+8>>2]=1080;break K}b=Ga(c);x[e+12>>2]=b;a=Da();b=b+1|0;a=sa[x[x[a>>2]+12>>2]](a,b,8064,57)|0;x[e+16>>2]=a;Fa(a,c,b);b=x[e+16>>2];$a(m,u,e+20|0,e+8|0);x[e+8>>2]=1080;if(!b){break K}a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}x[e+20>>2]=1080;b=x[e+28>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}h=0;break g}d=Xa(p,2754,0);x[e+20>>2]=1080;L:{if(!d){x[e+24>>2]=0;x[e+28>>2]=0;break L}c=Ga(d);x[e+24>>2]=c;b=Da();b=sa[x[x[b>>2]+12>>2]](b,c+1|0,8064,57)|0;x[e+28>>2]=b;Fa(b,d,x[e+24>>2]+1|0);}aa=a,ca=$b(h,e+20|0),x[aa+40>>2]=ca;x[e+20>>2]=1080;c=x[e+28>>2];if(c){b=Da();sa[x[x[b>>2]+20>>2]](b,c,8064,201);}if(!x[a+40>>2]){if(h){sa[x[x[h>>2]+4>>2]](h);}h=0;b=uc(e+20|0,12508);a=uc(e+8|0,d);$a(m,u,b,a);kc(a);kc(b);break g}aa=a,ba=Ia(p,1303,E(1)),B[aa+52>>2]=ba;aa=a,ba=E(Ia(p,3152,E(0))*B[m+24>>2]),B[aa+56>>2]=ba;aa=a,ca=fb(p,8407,1)?1:-1,x[aa+44>>2]=ca;aa=a,ca=(fb(p,3119,0)|0)!=0,v[aa+48|0]=ca;aa=a,ca=(fb(p,7663,0)|0)!=0,v[aa+49|0]=ca;aa=a,ca=(fb(p,7093,0)|0)!=0,v[aa+50|0]=ca;x[x[h+112>>2]+(k<<2)>>2]=a;k=k+1|0;p=x[p>>2];if(p){continue}break}}f=Ta(u,7062);M:{if(!f){break M}d=x[f+12>>2];g=x[h+124>>2];if(d>>>0>g>>>0){x[h+124>>2]=d;b=x[h+128>>2];a=Da();aa=h,ca=sa[x[x[a>>2]+16>>2]](a,b,d<<2,7693,94)|0,x[aa+128>>2]=ca;g=x[h+124>>2];d=x[f+12>>2];}a=x[h+120>>2];x[h+120>>2]=d;if(d>>>0>g>>>0){j=E(E(d>>>0)*E(1.75));N:{if(E(F(j))>>0<=8?8:b;x[h+124>>2]=d;c=x[h+128>>2];b=Da();aa=h,ca=sa[x[x[b>>2]+16>>2]](b,c,d<<2,7693,82)|0,x[aa+128>>2]=ca;d=x[h+120>>2];}O:{if(a>>>0>=d>>>0){break O}c=(a^-1)+d|0;b=d-a&3;if(b){g=0;while(1){x[x[h+128>>2]+(a<<2)>>2]=0;a=a+1|0;g=g+1|0;if((b|0)!=(g|0)){continue}break}}if(c>>>0<3){break O}while(1){b=a<<2;x[b+x[h+128>>2]>>2]=0;x[(b+x[h+128>>2]|0)+4>>2]=0;x[(b+x[h+128>>2]|0)+8>>2]=0;x[(b+x[h+128>>2]|0)+12>>2]=0;a=a+4|0;if((d|0)!=(a|0)){continue}break}}b=x[f+4>>2];if(!b){break M}k=0;while(1){d=Ma(88,5437,301);g=Xa(b,9402,0);x[e+20>>2]=1080;P:{if(!g){x[e+24>>2]=0;x[e+28>>2]=0;break P}c=Ga(g);x[e+24>>2]=c;a=Da();a=sa[x[x[a>>2]+12>>2]](a,c+1|0,8064,57)|0;x[e+28>>2]=a;Fa(a,g,x[e+24>>2]+1|0);}a=oe(d,e+20|0);x[e+20>>2]=1080;d=x[e+28>>2];if(d){c=Da();sa[x[x[c>>2]+20>>2]](c,d,8064,201);}aa=a,ca=fb(b,3833,0),x[aa+16>>2]=ca;aa=a,ca=Gd(b),v[aa+20|0]=ca;n=Ta(b,3394);d=x[a+32>>2];f=x[n+12>>2];if(d>>>0>>0){x[a+32>>2]=f;d=x[a+36>>2];c=Da();aa=a,ca=sa[x[x[c>>2]+16>>2]](c,d,f<<2,7693,94)|0,x[aa+36>>2]=ca;f=x[n+12>>2];d=x[a+32>>2];}g=x[a+28>>2];x[a+28>>2]=f;if(d>>>0>>0){j=E(E(f>>>0)*E(1.75));Q:{if(E(F(j))>>0<=8?8:c;x[a+32>>2]=f;d=x[a+36>>2];c=Da();aa=a,ca=sa[x[x[c>>2]+16>>2]](c,d,f<<2,7693,82)|0,x[aa+36>>2]=ca;f=x[a+28>>2];}R:{if(f>>>0<=g>>>0){break R}i=(g^-1)+f|0;d=0;c=f-g&3;if(c){while(1){x[x[a+36>>2]+(g<<2)>>2]=0;g=g+1|0;d=d+1|0;if((c|0)!=(d|0)){continue}break}}if(i>>>0<3){break R}while(1){c=g<<2;x[c+x[a+36>>2]>>2]=0;x[(c+x[a+36>>2]|0)+4>>2]=0;x[(c+x[a+36>>2]|0)+8>>2]=0;x[(c+x[a+36>>2]|0)+12>>2]=0;g=g+4|0;if((g|0)!=(f|0)){continue}break}}S:{d=x[n+4>>2];if(!d){break S}f=0;while(1){i=x[d+16>>2];x[e+20>>2]=1080;T:{if(!i){x[e+24>>2]=0;x[e+28>>2]=0;break T}g=Ga(i);x[e+24>>2]=g;c=Da();c=sa[x[x[c>>2]+12>>2]](c,g+1|0,8064,57)|0;x[e+28>>2]=c;Fa(c,i,x[e+24>>2]+1|0);}c=$b(h,e+20|0);i=f<<2;x[i+x[a+36>>2]>>2]=c;x[e+20>>2]=1080;g=x[e+28>>2];if(g){c=Da();sa[x[x[c>>2]+20>>2]](c,g,8064,201);}if(x[i+x[a+36>>2]>>2]){f=f+1|0;d=x[d>>2];if(!d){break S}continue}break}if(h){sa[x[x[h>>2]+4>>2]](h);}x[e+24>>2]=26;x[e+20>>2]=1080;a=Da();c=sa[x[x[a>>2]+12>>2]](a,27,8064,57)|0;x[e+28>>2]=c;a=y[12577]|y[12578]<<8|(y[12579]<<16|y[12580]<<24);v[c+23|0]=a;v[c+24|0]=a>>>8;v[c+25|0]=a>>>16;v[c+26|0]=a>>>24;b=y[12574]|y[12575]<<8|(y[12576]<<16|y[12577]<<24);a=y[12570]|y[12571]<<8|(y[12572]<<16|y[12573]<<24);v[c+16|0]=a;v[c+17|0]=a>>>8;v[c+18|0]=a>>>16;v[c+19|0]=a>>>24;v[c+20|0]=b;v[c+21|0]=b>>>8;v[c+22|0]=b>>>16;v[c+23|0]=b>>>24;b=y[12566]|y[12567]<<8|(y[12568]<<16|y[12569]<<24);a=y[12562]|y[12563]<<8|(y[12564]<<16|y[12565]<<24);v[c+8|0]=a;v[c+9|0]=a>>>8;v[c+10|0]=a>>>16;v[c+11|0]=a>>>24;v[c+12|0]=b;v[c+13|0]=b>>>8;v[c+14|0]=b>>>16;v[c+15|0]=b>>>24;b=y[12558]|y[12559]<<8|(y[12560]<<16|y[12561]<<24);a=y[12554]|y[12555]<<8|(y[12556]<<16|y[12557]<<24);v[c|0]=a;v[c+1|0]=a>>>8;v[c+2|0]=a>>>16;v[c+3|0]=a>>>24;v[c+4|0]=b;v[c+5|0]=b>>>8;v[c+6|0]=b>>>16;v[c+7|0]=b>>>24;c=x[d+16>>2];x[e+8>>2]=1080;U:{if(!c){x[e+12>>2]=0;x[e+16>>2]=0;$a(m,u,e+20|0,e+8|0);x[e+8>>2]=1080;break U}b=Ga(c);x[e+12>>2]=b;a=Da();b=b+1|0;a=sa[x[x[a>>2]+12>>2]](a,b,8064,57)|0;x[e+16>>2]=a;Fa(a,c,b);b=x[e+16>>2];$a(m,u,e+20|0,e+8|0);x[e+8>>2]=1080;if(!b){break U}a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}x[e+20>>2]=1080;b=x[e+28>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}h=0;break g}g=Xa(b,2754,0);x[e+20>>2]=1080;V:{if(!g){x[e+24>>2]=0;x[e+28>>2]=0;break V}d=Ga(g);x[e+24>>2]=d;c=Da();c=sa[x[x[c>>2]+12>>2]](c,d+1|0,8064,57)|0;x[e+28>>2]=c;Fa(c,g,x[e+24>>2]+1|0);}aa=a,ca=$b(h,e+20|0),x[aa+40>>2]=ca;x[e+20>>2]=1080;d=x[e+28>>2];if(d){c=Da();sa[x[x[c>>2]+20>>2]](c,d,8064,201);}if(!x[a+40>>2]){if(h){sa[x[x[h>>2]+4>>2]](h);}h=0;b=uc(e+20|0,12508);a=uc(e+8|0,g);$a(m,u,b,a);kc(a);kc(b);break g}aa=a,ca=(fb(b,7226,0)|0)!=0,v[aa+85|0]=ca;aa=a,ca=(fb(b,8467,0)|0)!=0,v[aa+84|0]=ca;aa=a,ba=Ia(b,6403,E(0)),B[aa+60>>2]=ba;aa=a,ba=E(Ia(b,1669,E(0))*B[m+24>>2]),B[aa+64>>2]=ba;aa=a,ba=E(Ia(b,1277,E(0))*B[m+24>>2]),B[aa+68>>2]=ba;aa=a,ba=Ia(b,11007,E(0)),B[aa+72>>2]=ba;aa=a,ba=Ia(b,10778,E(0)),B[aa+76>>2]=ba;aa=a,ba=Ia(b,10705,E(0)),B[aa+80>>2]=ba;aa=a,ba=Ia(b,1400,E(1)),B[aa+44>>2]=ba;aa=a,ba=Ia(b,1436,E(1)),B[aa+48>>2]=ba;aa=a,ba=Ia(b,1481,E(1)),B[aa+52>>2]=ba;aa=a,ba=Ia(b,1367,E(1)),B[aa+56>>2]=ba;x[x[h+128>>2]+(k<<2)>>2]=a;k=k+1|0;b=x[b>>2];if(b){continue}break}}f=Ta(u,7499);W:{if(!f){break W}d=x[f+12>>2];g=x[h+140>>2];if(d>>>0>g>>>0){x[h+140>>2]=d;b=x[h+144>>2];a=Da();aa=h,ca=sa[x[x[a>>2]+16>>2]](a,b,d<<2,7693,94)|0,x[aa+144>>2]=ca;g=x[h+140>>2];d=x[f+12>>2];}a=x[h+136>>2];x[h+136>>2]=d;if(d>>>0>g>>>0){j=E(E(d>>>0)*E(1.75));X:{if(E(F(j))>>0<=8?8:b;x[h+140>>2]=d;c=x[h+144>>2];b=Da();aa=h,ca=sa[x[x[b>>2]+16>>2]](b,c,d<<2,7693,82)|0,x[aa+144>>2]=ca;d=x[h+136>>2];}Y:{if(a>>>0>=d>>>0){break Y}c=(a^-1)+d|0;b=d-a&3;if(b){g=0;while(1){x[x[h+144>>2]+(a<<2)>>2]=0;a=a+1|0;g=g+1|0;if((b|0)!=(g|0)){continue}break}}if(c>>>0<3){break Y}while(1){b=a<<2;x[b+x[h+144>>2]>>2]=0;x[(b+x[h+144>>2]|0)+4>>2]=0;x[(b+x[h+144>>2]|0)+8>>2]=0;x[(b+x[h+144>>2]|0)+12>>2]=0;a=a+4|0;if((d|0)!=(a|0)){continue}break}}p=x[f+4>>2];if(!p){break W}k=0;while(1){c=Ma(76,5437,353);d=Xa(p,9402,0);x[e+20>>2]=1080;Z:{if(!d){x[e+24>>2]=0;x[e+28>>2]=0;break Z}b=Ga(d);x[e+24>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,57)|0;x[e+28>>2]=a;Fa(a,d,x[e+24>>2]+1|0);}a=Ue(c,e+20|0);x[e+20>>2]=1080;c=x[e+28>>2];if(c){b=Da();sa[x[x[b>>2]+20>>2]](b,c,8064,201);}aa=a,ca=fb(p,3833,0),x[aa+16>>2]=ca;aa=a,ca=Gd(p),v[aa+20|0]=ca;i=Ta(p,3394);d=x[a+32>>2];f=x[i+12>>2];if(d>>>0>>0){x[a+32>>2]=f;c=x[a+36>>2];b=Da();aa=a,ca=sa[x[x[b>>2]+16>>2]](b,c,f<<2,7693,94)|0,x[aa+36>>2]=ca;f=x[i+12>>2];d=x[a+32>>2];}g=x[a+28>>2];x[a+28>>2]=f;if(d>>>0>>0){j=E(E(f>>>0)*E(1.75));_:{if(E(F(j))>>0<=8?8:b;x[a+32>>2]=d;c=x[a+36>>2];b=Da();aa=a,ca=sa[x[x[b>>2]+16>>2]](b,c,d<<2,7693,82)|0,x[aa+36>>2]=ca;f=x[a+28>>2];}$:{if(f>>>0<=g>>>0){break $}c=(g^-1)+f|0;d=0;b=f-g&3;if(b){while(1){x[x[a+36>>2]+(g<<2)>>2]=0;g=g+1|0;d=d+1|0;if((b|0)!=(d|0)){continue}break}}if(c>>>0<3){break $}while(1){b=g<<2;x[b+x[a+36>>2]>>2]=0;x[(b+x[a+36>>2]|0)+4>>2]=0;x[(b+x[a+36>>2]|0)+8>>2]=0;x[(b+x[a+36>>2]|0)+12>>2]=0;g=g+4|0;if((g|0)!=(f|0)){continue}break}}aa:{d=x[i+4>>2];if(!d){break aa}f=0;while(1){g=x[d+16>>2];x[e+20>>2]=1080;ba:{if(!g){x[e+24>>2]=0;x[e+28>>2]=0;break ba}c=Ga(g);x[e+24>>2]=c;b=Da();b=sa[x[x[b>>2]+12>>2]](b,c+1|0,8064,57)|0;x[e+28>>2]=b;Fa(b,g,x[e+24>>2]+1|0);}b=$b(h,e+20|0);g=f<<2;x[g+x[a+36>>2]>>2]=b;x[e+20>>2]=1080;c=x[e+28>>2];if(c){b=Da();sa[x[x[b>>2]+20>>2]](b,c,8064,201);}if(x[g+x[a+36>>2]>>2]){f=f+1|0;d=x[d>>2];if(!d){break aa}continue}break}if(h){sa[x[x[h>>2]+4>>2]](h);}x[e+24>>2]=21;x[e+20>>2]=1080;a=Da();c=sa[x[x[a>>2]+12>>2]](a,22,8064,57)|0;x[e+28>>2]=c;b=y[12599]|y[12600]<<8|(y[12601]<<16|y[12602]<<24);a=y[12595]|y[12596]<<8|(y[12597]<<16|y[12598]<<24);v[c+14|0]=a;v[c+15|0]=a>>>8;v[c+16|0]=a>>>16;v[c+17|0]=a>>>24;v[c+18|0]=b;v[c+19|0]=b>>>8;v[c+20|0]=b>>>16;v[c+21|0]=b>>>24;b=y[12593]|y[12594]<<8|(y[12595]<<16|y[12596]<<24);a=y[12589]|y[12590]<<8|(y[12591]<<16|y[12592]<<24);v[c+8|0]=a;v[c+9|0]=a>>>8;v[c+10|0]=a>>>16;v[c+11|0]=a>>>24;v[c+12|0]=b;v[c+13|0]=b>>>8;v[c+14|0]=b>>>16;v[c+15|0]=b>>>24;b=y[12585]|y[12586]<<8|(y[12587]<<16|y[12588]<<24);a=y[12581]|y[12582]<<8|(y[12583]<<16|y[12584]<<24);v[c|0]=a;v[c+1|0]=a>>>8;v[c+2|0]=a>>>16;v[c+3|0]=a>>>24;v[c+4|0]=b;v[c+5|0]=b>>>8;v[c+6|0]=b>>>16;v[c+7|0]=b>>>24;c=x[d+16>>2];x[e+8>>2]=1080;ca:{if(!c){x[e+12>>2]=0;x[e+16>>2]=0;$a(m,u,e+20|0,e+8|0);x[e+8>>2]=1080;break ca}b=Ga(c);x[e+12>>2]=b;a=Da();b=b+1|0;a=sa[x[x[a>>2]+12>>2]](a,b,8064,57)|0;x[e+16>>2]=a;Fa(a,c,b);b=x[e+16>>2];$a(m,u,e+20|0,e+8|0);x[e+8>>2]=1080;if(!b){break ca}a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}x[e+20>>2]=1080;b=x[e+28>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}h=0;break g}d=Xa(p,2754,0);x[e+20>>2]=1080;da:{if(!d){x[e+24>>2]=0;x[e+28>>2]=0;break da}c=Ga(d);x[e+24>>2]=c;b=Da();b=sa[x[x[b>>2]+12>>2]](b,c+1|0,8064,57)|0;x[e+28>>2]=b;Fa(b,d,x[e+24>>2]+1|0);}aa=a,ca=ud(h,e+20|0),x[aa+40>>2]=ca;x[e+20>>2]=1080;c=x[e+28>>2];if(c){b=Da();sa[x[x[b>>2]+20>>2]](b,c,8064,201);}if(!x[a+40>>2]){if(h){sa[x[x[h>>2]+4>>2]](h);}h=0;b=uc(e+20|0,12209);a=uc(e+8|0,d);$a(m,u,b,a);kc(a);kc(b);break g}b=Xa(p,9609,2629);ea:{if(Oa(b,10181)){if(Oa(b,2629)){break ea}b=1;}else {b=0;}x[a+44>>2]=b;}b=Xa(p,9701,7374);c=0;fa:{ga:{if(!Oa(b,7374)){break ga}c=1;if(!Oa(b,10181)){break ga}if(Oa(b,2629)){break fa}c=2;}x[a+48>>2]=c;}b=Xa(p,9743,2613);c=0;ha:{ia:{if(!Oa(b,2613)){break ia}c=1;if(!Oa(b,7001)){break ia}if(Oa(b,9520)){break ha}c=2;}x[a+52>>2]=c;}aa=a,ba=Ia(p,6403,E(0)),B[aa+56>>2]=ba;j=Ia(p,6193,E(0));B[a+60>>2]=j;if(!x[a+44>>2]){B[a+60>>2]=j*B[m+24>>2];}j=Ia(p,8312,E(0));B[a+64>>2]=j;if(A[a+48>>2]<=1){B[a+64>>2]=j*B[m+24>>2];}aa=a,ba=Ia(p,1400,E(1)),B[aa+68>>2]=ba;aa=a,ba=Ia(p,1436,E(1)),B[aa+72>>2]=ba;x[x[h+144>>2]+(k<<2)>>2]=a;k=k+1|0;p=x[p>>2];if(p){continue}break}}f=Ta(u,3290);ja:{if(!f){break ja}d=x[f+12>>2];g=x[h+56>>2];if(d>>>0>g>>>0){x[h+56>>2]=d;b=x[h+60>>2];a=Da();aa=h,ca=sa[x[x[a>>2]+16>>2]](a,b,d<<2,7693,94)|0,x[aa+60>>2]=ca;g=x[h+56>>2];d=x[f+12>>2];}a=x[h+52>>2];x[h+52>>2]=d;if(d>>>0>g>>>0){j=E(E(d>>>0)*E(1.75));ka:{if(E(F(j))>>0<=8?8:b;x[h+56>>2]=d;c=x[h+60>>2];b=Da();aa=h,ca=sa[x[x[b>>2]+16>>2]](b,c,d<<2,7693,82)|0,x[aa+60>>2]=ca;d=x[h+52>>2];}la:{if(a>>>0>=d>>>0){break la}c=(a^-1)+d|0;b=d-a&3;if(b){g=0;while(1){x[x[h+60>>2]+(a<<2)>>2]=0;a=a+1|0;g=g+1|0;if((b|0)!=(g|0)){continue}break}}if(c>>>0<3){break la}while(1){b=a<<2;x[b+x[h+60>>2]>>2]=0;x[(b+x[h+60>>2]|0)+4>>2]=0;x[(b+x[h+60>>2]|0)+8>>2]=0;x[(b+x[h+60>>2]|0)+12>>2]=0;a=a+4|0;if((d|0)!=(a|0)){continue}break}}o=x[f+4>>2];if(!o){break ja}while(1){ma:{na:{k=Xa(o,9402,12639);if(y[k|0]){a=Ma(68,5437,428);x[e+20>>2]=1080;break na}k=x[o+28>>2];a=Ma(68,5437,428);x[e+20>>2]=1080;if(k){break na}x[e+24>>2]=0;x[e+28>>2]=0;k=0;break ma}c=Ga(k);x[e+24>>2]=c;b=Da();b=sa[x[x[b>>2]+12>>2]](b,c+1|0,8064,57)|0;x[e+28>>2]=b;Fa(b,k,x[e+24>>2]+1|0);}c=sd(a,e+20|0);x[e+20>>2]=1080;b=x[e+28>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}a=Ta(o,3394);oa:{if(!a){break oa}f=x[a+4>>2];if(!f){break oa}while(1){d=x[f+16>>2];x[e+20>>2]=1080;pa:{if(!d){x[e+24>>2]=0;x[e+28>>2]=0;break pa}b=Ga(d);x[e+24>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,57)|0;x[e+28>>2]=a;Fa(a,d,x[e+24>>2]+1|0);}i=$b(h,e+20|0);x[e+20>>2]=1080;b=x[e+28>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}if(!i){if(h){sa[x[x[h>>2]+4>>2]](h);}x[e+24>>2]=21;x[e+20>>2]=1080;a=Da();c=sa[x[x[a>>2]+12>>2]](a,22,8064,57)|0;x[e+28>>2]=c;b=y[12550]|y[12551]<<8|(y[12552]<<16|y[12553]<<24);a=y[12546]|y[12547]<<8|(y[12548]<<16|y[12549]<<24);v[c+14|0]=a;v[c+15|0]=a>>>8;v[c+16|0]=a>>>16;v[c+17|0]=a>>>24;v[c+18|0]=b;v[c+19|0]=b>>>8;v[c+20|0]=b>>>16;v[c+21|0]=b>>>24;b=y[12544]|y[12545]<<8|(y[12546]<<16|y[12547]<<24);a=y[12540]|y[12541]<<8|(y[12542]<<16|y[12543]<<24);v[c+8|0]=a;v[c+9|0]=a>>>8;v[c+10|0]=a>>>16;v[c+11|0]=a>>>24;v[c+12|0]=b;v[c+13|0]=b>>>8;v[c+14|0]=b>>>16;v[c+15|0]=b>>>24;b=y[12536]|y[12537]<<8|(y[12538]<<16|y[12539]<<24);a=y[12532]|y[12533]<<8|(y[12534]<<16|y[12535]<<24);v[c|0]=a;v[c+1|0]=a>>>8;v[c+2|0]=a>>>16;v[c+3|0]=a>>>24;v[c+4|0]=b;v[c+5|0]=b>>>8;v[c+6|0]=b>>>16;v[c+7|0]=b>>>24;c=x[f+16>>2];x[e+8>>2]=1080;qa:{if(!c){x[e+12>>2]=0;x[e+16>>2]=0;$a(m,u,e+20|0,e+8|0);x[e+8>>2]=1080;break qa}b=Ga(c);x[e+12>>2]=b;a=Da();b=b+1|0;a=sa[x[x[a>>2]+12>>2]](a,b,8064,57)|0;x[e+16>>2]=a;Fa(a,c,b);b=x[e+16>>2];$a(m,u,e+20|0,e+8|0);x[e+8>>2]=1080;if(!b){break qa}a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}x[e+20>>2]=1080;b=x[e+28>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}h=0;break g}g=x[c+40>>2];ra:{if((g|0)==x[c+44>>2]){j=E(E(g>>>0)*E(1.75));sa:{if(E(F(j))>>0<=8?8:a;x[c+44>>2]=d;b=x[c+48>>2];a=Da();a=sa[x[x[a>>2]+16>>2]](a,b,d<<2,7693,106)|0;x[c+48>>2]=a;g=x[c+40>>2];a=a+(g<<2)|0;break ra}a=x[c+48>>2]+(g<<2)|0;}x[a>>2]=i;x[c+40>>2]=g+1;f=x[f>>2];if(f){continue}break}}a=Ta(o,7259);ta:{if(!a){break ta}f=x[a+4>>2];if(!f){break ta}while(1){d=x[f+16>>2];x[e+20>>2]=1080;ua:{if(!d){x[e+24>>2]=0;x[e+28>>2]=0;break ua}b=Ga(d);x[e+24>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,57)|0;x[e+28>>2]=a;Fa(a,d,x[e+24>>2]+1|0);}i=ze(h,e+20|0);x[e+20>>2]=1080;b=x[e+28>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}if(!i){if(h){sa[x[x[h>>2]+4>>2]](h);}x[e+24>>2]=30;x[e+20>>2]=1080;a=Da();c=sa[x[x[a>>2]+12>>2]](a,31,8064,57)|0;x[e+28>>2]=c;b=y[12376]|y[12377]<<8|(y[12378]<<16|y[12379]<<24);a=y[12372]|y[12373]<<8|(y[12374]<<16|y[12375]<<24);v[c+23|0]=a;v[c+24|0]=a>>>8;v[c+25|0]=a>>>16;v[c+26|0]=a>>>24;v[c+27|0]=b;v[c+28|0]=b>>>8;v[c+29|0]=b>>>16;v[c+30|0]=b>>>24;b=y[12369]|y[12370]<<8|(y[12371]<<16|y[12372]<<24);a=y[12365]|y[12366]<<8|(y[12367]<<16|y[12368]<<24);v[c+16|0]=a;v[c+17|0]=a>>>8;v[c+18|0]=a>>>16;v[c+19|0]=a>>>24;v[c+20|0]=b;v[c+21|0]=b>>>8;v[c+22|0]=b>>>16;v[c+23|0]=b>>>24;b=y[12361]|y[12362]<<8|(y[12363]<<16|y[12364]<<24);a=y[12357]|y[12358]<<8|(y[12359]<<16|y[12360]<<24);v[c+8|0]=a;v[c+9|0]=a>>>8;v[c+10|0]=a>>>16;v[c+11|0]=a>>>24;v[c+12|0]=b;v[c+13|0]=b>>>8;v[c+14|0]=b>>>16;v[c+15|0]=b>>>24;b=y[12353]|y[12354]<<8|(y[12355]<<16|y[12356]<<24);a=y[12349]|y[12350]<<8|(y[12351]<<16|y[12352]<<24);v[c|0]=a;v[c+1|0]=a>>>8;v[c+2|0]=a>>>16;v[c+3|0]=a>>>24;v[c+4|0]=b;v[c+5|0]=b>>>8;v[c+6|0]=b>>>16;v[c+7|0]=b>>>24;c=x[f+16>>2];x[e+8>>2]=1080;va:{if(!c){x[e+12>>2]=0;x[e+16>>2]=0;$a(m,u,e+20|0,e+8|0);x[e+8>>2]=1080;break va}b=Ga(c);x[e+12>>2]=b;a=Da();b=b+1|0;a=sa[x[x[a>>2]+12>>2]](a,b,8064,57)|0;x[e+16>>2]=a;Fa(a,c,b);b=x[e+16>>2];$a(m,u,e+20|0,e+8|0);x[e+8>>2]=1080;if(!b){break va}a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}x[e+20>>2]=1080;b=x[e+28>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}h=0;break g}g=x[c+56>>2];wa:{if((g|0)==x[c+60>>2]){j=E(E(g>>>0)*E(1.75));xa:{if(E(F(j))>>0<=8?8:a;x[c+60>>2]=d;b=x[c+64>>2];a=Da();a=sa[x[x[a>>2]+16>>2]](a,b,d<<2,7693,106)|0;x[c+64>>2]=a;g=x[c+56>>2];a=a+(g<<2)|0;break wa}a=x[c+64>>2]+(g<<2)|0;}x[a>>2]=i;x[c+56>>2]=g+1;f=x[f>>2];if(f){continue}break}}a=Ta(o,7062);ya:{if(!a){break ya}f=x[a+4>>2];if(!f){break ya}while(1){d=x[f+16>>2];x[e+20>>2]=1080;za:{if(!d){x[e+24>>2]=0;x[e+28>>2]=0;break za}b=Ga(d);x[e+24>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,57)|0;x[e+28>>2]=a;Fa(a,d,x[e+24>>2]+1|0);}i=ye(h,e+20|0);x[e+20>>2]=1080;b=x[e+28>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}if(!i){if(h){sa[x[x[h>>2]+4>>2]](h);}x[e+24>>2]=37;x[e+20>>2]=1080;a=Da();c=sa[x[x[a>>2]+12>>2]](a,38,8064,57)|0;x[e+28>>2]=c;b=y[12284]|y[12285]<<8|(y[12286]<<16|y[12287]<<24);a=y[12280]|y[12281]<<8|(y[12282]<<16|y[12283]<<24);v[c+30|0]=a;v[c+31|0]=a>>>8;v[c+32|0]=a>>>16;v[c+33|0]=a>>>24;v[c+34|0]=b;v[c+35|0]=b>>>8;v[c+36|0]=b>>>16;v[c+37|0]=b>>>24;b=y[12278]|y[12279]<<8|(y[12280]<<16|y[12281]<<24);a=y[12274]|y[12275]<<8|(y[12276]<<16|y[12277]<<24);v[c+24|0]=a;v[c+25|0]=a>>>8;v[c+26|0]=a>>>16;v[c+27|0]=a>>>24;v[c+28|0]=b;v[c+29|0]=b>>>8;v[c+30|0]=b>>>16;v[c+31|0]=b>>>24;b=y[12270]|y[12271]<<8|(y[12272]<<16|y[12273]<<24);a=y[12266]|y[12267]<<8|(y[12268]<<16|y[12269]<<24);v[c+16|0]=a;v[c+17|0]=a>>>8;v[c+18|0]=a>>>16;v[c+19|0]=a>>>24;v[c+20|0]=b;v[c+21|0]=b>>>8;v[c+22|0]=b>>>16;v[c+23|0]=b>>>24;b=y[12262]|y[12263]<<8|(y[12264]<<16|y[12265]<<24);a=y[12258]|y[12259]<<8|(y[12260]<<16|y[12261]<<24);v[c+8|0]=a;v[c+9|0]=a>>>8;v[c+10|0]=a>>>16;v[c+11|0]=a>>>24;v[c+12|0]=b;v[c+13|0]=b>>>8;v[c+14|0]=b>>>16;v[c+15|0]=b>>>24;b=y[12254]|y[12255]<<8|(y[12256]<<16|y[12257]<<24);a=y[12250]|y[12251]<<8|(y[12252]<<16|y[12253]<<24);v[c|0]=a;v[c+1|0]=a>>>8;v[c+2|0]=a>>>16;v[c+3|0]=a>>>24;v[c+4|0]=b;v[c+5|0]=b>>>8;v[c+6|0]=b>>>16;v[c+7|0]=b>>>24;c=x[f+16>>2];x[e+8>>2]=1080;Aa:{if(!c){x[e+12>>2]=0;x[e+16>>2]=0;$a(m,u,e+20|0,e+8|0);x[e+8>>2]=1080;break Aa}b=Ga(c);x[e+12>>2]=b;a=Da();b=b+1|0;a=sa[x[x[a>>2]+12>>2]](a,b,8064,57)|0;x[e+16>>2]=a;Fa(a,c,b);b=x[e+16>>2];$a(m,u,e+20|0,e+8|0);x[e+8>>2]=1080;if(!b){break Aa}a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}x[e+20>>2]=1080;b=x[e+28>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}h=0;break g}g=x[c+56>>2];Ba:{if((g|0)==x[c+60>>2]){j=E(E(g>>>0)*E(1.75));Ca:{if(E(F(j))>>0<=8?8:a;x[c+60>>2]=d;b=x[c+64>>2];a=Da();a=sa[x[x[a>>2]+16>>2]](a,b,d<<2,7693,106)|0;x[c+64>>2]=a;g=x[c+56>>2];a=a+(g<<2)|0;break Ba}a=x[c+64>>2]+(g<<2)|0;}x[a>>2]=i;x[c+56>>2]=g+1;f=x[f>>2];if(f){continue}break}}a=Ta(o,7499);Da:{if(!a){break Da}f=x[a+4>>2];if(!f){break Da}while(1){d=x[f+16>>2];x[e+20>>2]=1080;Ea:{if(!d){x[e+24>>2]=0;x[e+28>>2]=0;break Ea}b=Ga(d);x[e+24>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,57)|0;x[e+28>>2]=a;Fa(a,d,x[e+24>>2]+1|0);}i=xe(h,e+20|0);x[e+20>>2]=1080;b=x[e+28>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}if(!i){if(h){sa[x[x[h>>2]+4>>2]](h);}x[e+20>>2]=1080;x[e+24>>2]=32;a=Da();c=sa[x[x[a>>2]+12>>2]](a,33,8064,57)|0;x[e+28>>2]=c;v[c+32|0]=y[12320];b=y[12316]|y[12317]<<8|(y[12318]<<16|y[12319]<<24);a=y[12312]|y[12313]<<8|(y[12314]<<16|y[12315]<<24);v[c+24|0]=a;v[c+25|0]=a>>>8;v[c+26|0]=a>>>16;v[c+27|0]=a>>>24;v[c+28|0]=b;v[c+29|0]=b>>>8;v[c+30|0]=b>>>16;v[c+31|0]=b>>>24;b=y[12308]|y[12309]<<8|(y[12310]<<16|y[12311]<<24);a=y[12304]|y[12305]<<8|(y[12306]<<16|y[12307]<<24);v[c+16|0]=a;v[c+17|0]=a>>>8;v[c+18|0]=a>>>16;v[c+19|0]=a>>>24;v[c+20|0]=b;v[c+21|0]=b>>>8;v[c+22|0]=b>>>16;v[c+23|0]=b>>>24;b=y[12300]|y[12301]<<8|(y[12302]<<16|y[12303]<<24);a=y[12296]|y[12297]<<8|(y[12298]<<16|y[12299]<<24);v[c+8|0]=a;v[c+9|0]=a>>>8;v[c+10|0]=a>>>16;v[c+11|0]=a>>>24;v[c+12|0]=b;v[c+13|0]=b>>>8;v[c+14|0]=b>>>16;v[c+15|0]=b>>>24;b=y[12292]|y[12293]<<8|(y[12294]<<16|y[12295]<<24);a=y[12288]|y[12289]<<8|(y[12290]<<16|y[12291]<<24);v[c|0]=a;v[c+1|0]=a>>>8;v[c+2|0]=a>>>16;v[c+3|0]=a>>>24;v[c+4|0]=b;v[c+5|0]=b>>>8;v[c+6|0]=b>>>16;v[c+7|0]=b>>>24;c=x[f+16>>2];x[e+8>>2]=1080;Fa:{if(!c){x[e+12>>2]=0;x[e+16>>2]=0;$a(m,u,e+20|0,e+8|0);x[e+8>>2]=1080;break Fa}b=Ga(c);x[e+12>>2]=b;a=Da();b=b+1|0;a=sa[x[x[a>>2]+12>>2]](a,b,8064,57)|0;x[e+16>>2]=a;Fa(a,c,b);b=x[e+16>>2];$a(m,u,e+20|0,e+8|0);x[e+8>>2]=1080;if(!b){break Fa}a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}x[e+20>>2]=1080;b=x[e+28>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}h=0;break g}g=x[c+56>>2];Ga:{if((g|0)==x[c+60>>2]){j=E(E(g>>>0)*E(1.75));Ha:{if(E(F(j))>>0<=8?8:a;x[c+60>>2]=d;b=x[c+64>>2];a=Da();a=sa[x[x[a>>2]+16>>2]](a,b,d<<2,7693,106)|0;x[c+64>>2]=a;g=x[c+56>>2];a=a+(g<<2)|0;break Ga}a=x[c+64>>2]+(g<<2)|0;}x[a>>2]=i;x[c+56>>2]=g+1;f=x[f>>2];if(f){continue}break}}x[x[h+60>>2]+(t<<2)>>2]=c;if(!Oa(k,2653)){x[h+64>>2]=c;}a=Ta(o,3084);k=x[(a?a:o)+4>>2];if(k){while(1){d=x[k+28>>2];x[e+20>>2]=1080;Ia:{if(!d){x[e+24>>2]=0;x[e+28>>2]=0;break Ia}b=Ga(d);x[e+24>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,57)|0;x[e+28>>2]=a;Fa(a,d,x[e+24>>2]+1|0);}q=ud(h,e+20|0);x[e+20>>2]=1080;b=x[e+28>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}a=x[k+4>>2];if(a){while(1){L=x[a+28>>2];i=Xa(a,9402,L);f=Xa(a,7499,i);Ja:{Ka:{La:{Ma:{Na:{Oa:{Pa:{d=Xa(a,8768,6792);if(Oa(d,6792)){if(!Oa(d,7580)){break Pa}if(!Oa(d,7574)){break Pa}if(!Oa(d,1279)){break Oa}if(!Oa(d,7499)){break Na}if(!Oa(d,8275)){break La}if(!Oa(d,2045)){break Ma}if(h){sa[x[x[h>>2]+4>>2]](h);}x[e+24>>2]=25;x[e+20>>2]=1080;a=Da();c=sa[x[x[a>>2]+12>>2]](a,26,8064,57)|0;x[e+28>>2]=c;a=y[12172]|y[12173]<<8;v[c+24|0]=a;v[c+25|0]=a>>>8;b=y[12168]|y[12169]<<8|(y[12170]<<16|y[12171]<<24);a=y[12164]|y[12165]<<8|(y[12166]<<16|y[12167]<<24);v[c+16|0]=a;v[c+17|0]=a>>>8;v[c+18|0]=a>>>16;v[c+19|0]=a>>>24;v[c+20|0]=b;v[c+21|0]=b>>>8;v[c+22|0]=b>>>16;v[c+23|0]=b>>>24;b=y[12160]|y[12161]<<8|(y[12162]<<16|y[12163]<<24);a=y[12156]|y[12157]<<8|(y[12158]<<16|y[12159]<<24);v[c+8|0]=a;v[c+9|0]=a>>>8;v[c+10|0]=a>>>16;v[c+11|0]=a>>>24;v[c+12|0]=b;v[c+13|0]=b>>>8;v[c+14|0]=b>>>16;v[c+15|0]=b>>>24;b=y[12152]|y[12153]<<8|(y[12154]<<16|y[12155]<<24);a=y[12148]|y[12149]<<8|(y[12150]<<16|y[12151]<<24);v[c|0]=a;v[c+1|0]=a>>>8;v[c+2|0]=a>>>16;v[c+3|0]=a>>>24;v[c+4|0]=b;v[c+5|0]=b>>>8;v[c+6|0]=b>>>16;v[c+7|0]=b>>>24;x[e+8>>2]=1080;Qa:{if(!d){x[e+12>>2]=0;x[e+16>>2]=0;$a(m,u,e+20|0,e+8|0);x[e+8>>2]=1080;break Qa}b=Ga(d);x[e+12>>2]=b;a=Da();b=b+1|0;a=sa[x[x[a>>2]+12>>2]](a,b,8064,57)|0;x[e+16>>2]=a;Fa(a,d,b);b=x[e+16>>2];$a(m,u,e+20|0,e+8|0);x[e+8>>2]=1080;if(!b){break Qa}a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}x[e+20>>2]=1080;b=x[e+28>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}h=0;break g}g=x[m+4>>2];x[e+20>>2]=1080;Ra:{if(!i){x[e+24>>2]=0;x[e+28>>2]=0;break Ra}d=Ga(i);x[e+24>>2]=d;b=Da();b=sa[x[x[b>>2]+12>>2]](b,d+1|0,8064,57)|0;x[e+28>>2]=b;Fa(b,i,x[e+24>>2]+1|0);}x[e+8>>2]=1080;Sa:{if(!f){x[e+12>>2]=0;x[e+16>>2]=0;break Sa}d=Ga(f);x[e+12>>2]=d;b=Da();b=sa[x[x[b>>2]+12>>2]](b,d+1|0,8064,57)|0;x[e+16>>2]=b;Fa(b,f,x[e+12>>2]+1|0);}g=sa[x[x[g>>2]+12>>2]](g,c,e+20|0,e+8|0)|0;x[e+8>>2]=1080;d=x[e+16>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,8064,201);}x[e+20>>2]=1080;d=x[e+28>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,8064,201);}if(!g){break Ja}d=x[g+124>>2];Ta:{if((d|0)==(f|0)){break Ta}if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,8064,138);}if(!f){x[g+120>>2]=0;x[g+124>>2]=0;break Ta}d=Ga(f);x[g+120>>2]=d;b=Da();b=sa[x[x[b>>2]+12>>2]](b,d+1|0,8064,145)|0;x[g+124>>2]=b;Fa(b,f,x[g+120>>2]+1|0);}aa=g,ba=E(Ia(a,1669,E(0))*B[m+24>>2]),B[aa+32>>2]=ba;aa=g,ba=E(Ia(a,1277,E(0))*B[m+24>>2]),B[aa+36>>2]=ba;aa=g,ba=Ia(a,11007,E(1)),B[aa+44>>2]=ba;aa=g,ba=Ia(a,10778,E(1)),B[aa+48>>2]=ba;aa=g,ba=Ia(a,6403,E(0)),B[aa+40>>2]=ba;aa=g,ba=E(Ia(a,7475,E(32))*B[m+24>>2]),B[aa+52>>2]=ba;aa=g,ba=E(Ia(a,2681,E(32))*B[m+24>>2]),B[aa+56>>2]=ba;d=Xa(a,3737,0);if(d){r=E(-1);j=E(-1);Ua:{if(Ga(d)>>>0<2){break Ua}v[e+8|0]=y[d|0];b=y[d+1|0];v[e+10|0]=0;v[e+9|0]=b;b=bb(e+8|0,e+20|0);j=E(-1);if(y[x[e+20>>2]]){break Ua}j=E(E(b|0)/E(255));}B[g+148>>2]=j;Va:{if(Ga(d)>>>0<4){break Va}v[e+8|0]=y[d+2|0];b=y[d+3|0];v[e+10|0]=0;v[e+9|0]=b;b=bb(e+8|0,e+20|0);if(y[x[e+20>>2]]){break Va}r=E(E(b|0)/E(255));}B[g+152>>2]=r;r=E(-1);j=E(-1);Wa:{if(Ga(d)>>>0<6){break Wa}v[e+8|0]=y[d+4|0];b=y[d+5|0];v[e+10|0]=0;v[e+9|0]=b;b=bb(e+8|0,e+20|0);j=E(-1);if(y[x[e+20>>2]]){break Wa}j=E(E(b|0)/E(255));}B[g+156>>2]=j;Xa:{if(Ga(d)>>>0<8){break Xa}v[e+8|0]=y[d+6|0];b=y[d+7|0];v[e+10|0]=0;v[e+9|0]=b;b=bb(e+8|0,e+20|0);if(y[x[e+20>>2]]){break Xa}r=E(E(b|0)/E(255));}B[g+160>>2]=r;}Ad(g);b=x[m+4>>2];sa[x[x[b>>2]+36>>2]](b,g);break Ka}g=x[m+4>>2];x[e+20>>2]=1080;Ya:{if(!i){x[e+24>>2]=0;x[e+28>>2]=0;break Ya}d=Ga(i);x[e+24>>2]=d;b=Da();b=sa[x[x[b>>2]+12>>2]](b,d+1|0,8064,57)|0;x[e+28>>2]=b;Fa(b,i,x[e+24>>2]+1|0);}x[e+8>>2]=1080;Za:{if(!f){x[e+12>>2]=0;x[e+16>>2]=0;break Za}d=Ga(f);x[e+12>>2]=d;b=Da();b=sa[x[x[b>>2]+12>>2]](b,d+1|0,8064,57)|0;x[e+16>>2]=b;Fa(b,f,x[e+12>>2]+1|0);}g=sa[x[x[g>>2]+16>>2]](g,c,e+20|0,e+8|0)|0;x[e+8>>2]=1080;d=x[e+16>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,8064,201);}x[e+20>>2]=1080;d=x[e+28>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,8064,201);}if(!g){break Ja}d=x[g+176>>2];_a:{if((d|0)==(f|0)){break _a}if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,8064,138);}if(!f){x[g+172>>2]=0;x[g+176>>2]=0;break _a}d=Ga(f);x[g+172>>2]=d;b=Da();b=sa[x[x[b>>2]+12>>2]](b,d+1|0,8064,145)|0;x[g+176>>2]=b;Fa(b,f,x[g+172>>2]+1|0);}d=Xa(a,3737,0);if(d){r=E(-1);j=E(-1);$a:{if(Ga(d)>>>0<2){break $a}v[e+8|0]=y[d|0];b=y[d+1|0];v[e+10|0]=0;v[e+9|0]=b;b=bb(e+8|0,e+20|0);j=E(-1);if(y[x[e+20>>2]]){break $a}j=E(E(b|0)/E(255));}B[g+208>>2]=j;ab:{if(Ga(d)>>>0<4){break ab}v[e+8|0]=y[d+2|0];b=y[d+3|0];v[e+10|0]=0;v[e+9|0]=b;b=bb(e+8|0,e+20|0);if(y[x[e+20>>2]]){break ab}r=E(E(b|0)/E(255));}B[g+212>>2]=r;r=E(-1);j=E(-1);bb:{if(Ga(d)>>>0<6){break bb}v[e+8|0]=y[d+4|0];b=y[d+5|0];v[e+10|0]=0;v[e+9|0]=b;b=bb(e+8|0,e+20|0);j=E(-1);if(y[x[e+20>>2]]){break bb}j=E(E(b|0)/E(255));}B[g+216>>2]=j;cb:{if(Ga(d)>>>0<8){break cb}v[e+8|0]=y[d+6|0];b=y[d+7|0];v[e+10|0]=0;v[e+9|0]=b;b=bb(e+8|0,e+20|0);if(y[x[e+20>>2]]){break cb}r=E(E(b|0)/E(255));}B[g+220>>2]=r;}aa=g,ba=E(Ia(a,7475,E(32))*B[m+24>>2]),B[aa+196>>2]=ba;aa=g,ba=E(Ia(a,2681,E(32))*B[m+24>>2]),B[aa+200>>2]=ba;l=Ta(a,2321);if(!l){n=Ta(a,3451);b=x[g+144>>2];f=x[n+12>>2];if(b>>>0>>0){x[g+144>>2]=f;d=x[g+148>>2];b=Da();aa=g,ca=sa[x[x[b>>2]+16>>2]](b,d,f<<1,7693,94)|0,x[aa+148>>2]=ca;f=x[n+12>>2];b=x[g+144>>2];}i=x[g+140>>2];x[g+140>>2]=f;if(b>>>0>>0){j=E(E(f>>>0)*E(1.75));db:{if(E(F(j))>>0<=8?8:b;x[g+144>>2]=f;d=x[g+148>>2];b=Da();aa=g,ca=sa[x[x[b>>2]+16>>2]](b,d,f<<1,7693,82)|0,x[aa+148>>2]=ca;f=x[g+140>>2];}if(f>>>0>i>>>0){Ha(x[g+148>>2]+(i<<1)|0,0,f-i<<1);}f=x[n+4>>2];if(f){d=x[g+148>>2];b=0;while(1){w[d+(b<<1)>>1]=x[f+20>>2];b=b+1|0;f=x[f>>2];if(f){continue}break}}n=Ta(a,2921);b=x[g+128>>2];i=x[n+12>>2];if(b>>>0>>0){x[g+128>>2]=i;d=x[g+132>>2];b=Da();aa=g,ca=sa[x[x[b>>2]+16>>2]](b,d,i<<2,7693,94)|0,x[aa+132>>2]=ca;b=x[g+128>>2];}l=x[g+124>>2];x[g+124>>2]=i;d=b;b=i;if(d>>>0>>0){j=E(E(i>>>0)*E(1.75));eb:{if(E(F(j))>>0<=8?8:b;x[g+128>>2]=f;d=x[g+132>>2];b=Da();aa=g,ca=sa[x[x[b>>2]+16>>2]](b,d,f<<2,7693,82)|0,x[aa+132>>2]=ca;b=x[g+124>>2];}if(b>>>0>l>>>0){Ha(x[g+132>>2]+(l<<2)|0,0,b-l<<2);}f=x[n+4>>2];if(f){d=x[g+132>>2];b=0;while(1){B[d+(b<<2)>>2]=B[f+24>>2];b=b+1|0;f=x[f>>2];if(f){continue}break}}td(m,a,g,i);mc(g);aa=g,ca=fb(a,7166,0),x[aa+224>>2]=ca;n=Ta(a,3504);fb:{if(!n){break fb}b=x[g+160>>2];f=x[n+12>>2];if(b>>>0>>0){x[g+160>>2]=f;d=x[g+164>>2];b=Da();aa=g,ca=sa[x[x[b>>2]+16>>2]](b,d,f<<1,7693,94)|0,x[aa+164>>2]=ca;f=x[n+12>>2];b=x[g+160>>2];}i=x[g+156>>2];x[g+156>>2]=f;if(b>>>0>>0){j=E(E(f>>>0)*E(1.75));gb:{if(E(F(j))>>0<=8?8:b;x[g+160>>2]=f;d=x[g+164>>2];b=Da();aa=g,ca=sa[x[x[b>>2]+16>>2]](b,d,f<<1,7693,82)|0,x[aa+164>>2]=ca;f=x[g+156>>2];}if(f>>>0>i>>>0){Ha(x[g+164>>2]+(i<<1)|0,0,f-i<<1);}f=x[n+4>>2];if(!f){break fb}d=x[g+164>>2];b=0;while(1){w[d+(b<<1)>>1]=x[f+20>>2];b=b+1|0;f=x[f>>2];if(f){continue}break}}b=x[m+4>>2];sa[x[x[b>>2]+36>>2]](b,g);break Ka}n=fb(a,7123,1);i=Ma(40,5437,615);f=Xa(a,6907,0);x[e+20>>2]=1080;hb:{if(!f){x[e+24>>2]=0;x[e+28>>2]=0;break hb}d=Ga(f);x[e+24>>2]=d;b=Da();b=sa[x[x[b>>2]+12>>2]](b,d+1|0,8064,57)|0;x[e+28>>2]=b;Fa(b,f,x[e+24>>2]+1|0);}f=x[q+4>>2];l=x[l+16>>2];x[e+8>>2]=1080;ib:{if(!l){x[e+12>>2]=0;x[e+16>>2]=0;break ib}d=Ga(l);x[e+12>>2]=d;b=Da();b=sa[x[x[b>>2]+12>>2]](b,d+1|0,8064,57)|0;x[e+16>>2]=b;Fa(b,l,x[e+12>>2]+1|0);}i=lh(i,g,e+20|0,f,e+8|0,(n|0)!=0);x[e+8>>2]=1080;d=x[e+16>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,8064,201);}x[e+20>>2]=1080;d=x[e+28>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,8064,201);}f=x[m+12>>2];jb:{if((f|0)==x[m+16>>2]){j=E(E(f>>>0)*E(1.75));kb:{if(E(F(j))>>0<=8?8:b;x[m+16>>2]=f;d=x[m+20>>2];b=Da();b=sa[x[x[b>>2]+16>>2]](b,d,f<<2,7693,106)|0;x[m+20>>2]=b;f=x[m+12>>2];b=b+(f<<2)|0;break jb}b=x[m+20>>2]+(f<<2)|0;}x[b>>2]=i;x[m+12>>2]=f+1;break Ka}g=x[m+4>>2];x[e+20>>2]=1080;lb:{if(!i){x[e+24>>2]=0;x[e+28>>2]=0;break lb}d=Ga(i);x[e+24>>2]=d;b=Da();b=sa[x[x[b>>2]+12>>2]](b,d+1|0,8064,57)|0;x[e+28>>2]=b;Fa(b,i,x[e+24>>2]+1|0);}g=sa[x[x[g>>2]+20>>2]](g,c,e+20|0)|0;x[e+20>>2]=1080;d=x[e+28>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,8064,201);}td(m,a,g,fb(a,2005,0)<<1);b=x[m+4>>2];sa[x[x[b>>2]+36>>2]](b,g);break Ka}g=x[m+4>>2];x[e+20>>2]=1080;mb:{if(!i){x[e+24>>2]=0;x[e+28>>2]=0;break mb}d=Ga(i);x[e+24>>2]=d;b=Da();b=sa[x[x[b>>2]+12>>2]](b,d+1|0,8064,57)|0;x[e+28>>2]=b;Fa(b,i,x[e+24>>2]+1|0);}g=sa[x[x[g>>2]+24>>2]](g,c,e+20|0)|0;x[e+20>>2]=1080;d=x[e+28>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,8064,201);}aa=g,ca=(fb(a,10193,0)|0)!=0,v[aa+80|0]=ca;aa=g,ca=(fb(a,10287,1)|0)!=0,v[aa+81|0]=ca;b=fb(a,2005,0);td(m,a,g,b<<1);f=(b|0)/3|0;p=x[g+72>>2];if(f>>>0>p>>>0){x[g+72>>2]=f;d=x[g+76>>2];b=Da();aa=g,ca=sa[x[x[b>>2]+16>>2]](b,d,f<<2,7693,94)|0,x[aa+76>>2]=ca;p=x[g+72>>2];}i=x[g+68>>2];x[g+68>>2]=f;if(f>>>0>p>>>0){j=E(E(f>>>0)*E(1.75));nb:{if(E(F(j))>>0<=8?8:b;x[g+72>>2]=f;d=x[g+76>>2];b=Da();aa=g,ca=sa[x[x[b>>2]+16>>2]](b,d,f<<2,7693,82)|0,x[aa+76>>2]=ca;f=x[g+68>>2];}if(f>>>0>i>>>0){Ha(x[g+76>>2]+(i<<2)|0,0,f-i<<2);}f=x[Ta(a,3354)+4>>2];if(f){d=x[g+76>>2];b=0;while(1){B[d+(b<<2)>>2]=B[f+24>>2]*B[m+24>>2];b=b+1|0;f=x[f>>2];if(f){continue}break}}b=x[m+4>>2];sa[x[x[b>>2]+36>>2]](b,g);break Ka}g=x[m+4>>2];x[e+20>>2]=1080;ob:{if(!i){x[e+24>>2]=0;x[e+28>>2]=0;break ob}d=Ga(i);x[e+24>>2]=d;b=Da();b=sa[x[x[b>>2]+12>>2]](b,d+1|0,8064,57)|0;x[e+28>>2]=b;Fa(b,i,x[e+24>>2]+1|0);}g=sa[x[x[g>>2]+28>>2]](g,c,e+20|0)|0;x[e+20>>2]=1080;d=x[e+28>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,8064,201);}aa=g,ba=E(Ia(a,1669,E(0))*B[m+24>>2]),B[aa+20>>2]=ba;aa=g,ba=E(Ia(a,1277,E(0))*B[m+24>>2]),B[aa+24>>2]=ba;aa=g,ba=Ia(a,6403,E(0)),B[aa+28>>2]=ba;b=x[m+4>>2];sa[x[x[b>>2]+36>>2]](b,g);break Ka}g=x[m+4>>2];x[e+20>>2]=1080;pb:{if(!i){x[e+24>>2]=0;x[e+28>>2]=0;break pb}d=Ga(i);x[e+24>>2]=d;b=Da();b=sa[x[x[b>>2]+12>>2]](b,d+1|0,8064,57)|0;x[e+28>>2]=b;Fa(b,i,x[e+24>>2]+1|0);}g=sa[x[x[g>>2]+32>>2]](g,c,e+20|0)|0;x[e+20>>2]=1080;d=x[e+28>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,8064,201);}f=Xa(a,9925,0);if(f){x[e+20>>2]=1080;d=Ga(f);x[e+24>>2]=d;b=Da();b=sa[x[x[b>>2]+12>>2]](b,d+1|0,8064,57)|0;x[e+28>>2]=b;Fa(b,f,x[e+24>>2]+1|0);aa=g,ca=ud(h,e+20|0),x[aa+64>>2]=ca;x[e+20>>2]=1080;d=x[e+28>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,8064,201);}}td(m,a,g,fb(a,2005,0)<<1);b=x[m+4>>2];sa[x[x[b>>2]+36>>2]](b,g);}f=x[q+4>>2];x[e+20>>2]=1080;qb:{if(!L){x[e+24>>2]=0;x[e+28>>2]=0;break qb}d=Ga(L);x[e+24>>2]=d;b=Da();b=sa[x[x[b>>2]+12>>2]](b,d+1|0,8064,57)|0;x[e+28>>2]=b;Fa(b,L,x[e+24>>2]+1|0);}re(c,f,e+20|0,g);x[e+20>>2]=1080;d=x[e+28>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,8064,201);}}a=x[a>>2];if(a){continue}break}}k=x[k>>2];if(k){continue}break}}t=t+1|0;o=x[o>>2];if(o){continue}break}}b=x[m+12>>2];rb:{if((b|0)<=0){break rb}g=0;while(1){d=x[x[m+20>>2]+(g<<2)>>2];if(x[d+12>>2]){a=Tc(h,d+8|0);}else {a=x[h+64>>2];}sb:{if(!a){break sb}c=Ob(a,x[d+20>>2],d+24|0);if(!c){break sb}a=x[d+4>>2];x[a+56>>2]=y[d+36|0]?c:a;Dd(a,c);mc(x[d+4>>2]);a=x[m+4>>2];sa[x[x[a>>2]+36>>2]](a,x[d+4>>2]);}g=g+1|0;if((b|0)!=(g|0)){continue}break}f=x[m+12>>2];if((f|0)<=0){break rb}l=f+1|0;p=0;d=f;b=d;while(1){c=b;b=c-1|0;i=b<<2;a=x[i+x[m+20>>2]>>2];if(a){sa[x[x[a>>2]+4>>2]](a);d=x[m+12>>2];}g=d;d=d-1|0;x[m+12>>2]=d;tb:{if(b>>>0>=d>>>0){break tb}a=b;if(g+(p-f|0)&1){k=x[m+20>>2];a=k+i|0;i=x[a>>2];n=a;a=c<<2;x[n>>2]=x[a+k>>2];x[a+x[m+20>>2]>>2]=i;a=c;}if((g|0)==(l-p|0)){break tb}while(1){n=x[m+20>>2];k=a<<2;i=n+k|0;g=x[i>>2];q=i;i=k+4|0;x[q>>2]=x[i+n>>2];x[i+x[m+20>>2]>>2]=g;k=x[m+20>>2];g=k+i|0;i=x[g>>2];n=g;a=a+2|0;g=a<<2;x[n>>2]=x[g+k>>2];x[g+x[m+20>>2]>>2]=i;if((a|0)!=(d|0)){continue}break}}p=p+1|0;if((c|0)>1){continue}break}}x[m+12>>2]=0;f=Ta(u,3067);ub:{if(!f){break ub}d=x[f+12>>2];g=x[h+76>>2];if(d>>>0>g>>>0){x[h+76>>2]=d;b=x[h+80>>2];a=Da();aa=h,ca=sa[x[x[a>>2]+16>>2]](a,b,d<<2,7693,94)|0,x[aa+80>>2]=ca;g=x[h+76>>2];d=x[f+12>>2];}a=x[h+72>>2];x[h+72>>2]=d;if(d>>>0>g>>>0){j=E(E(d>>>0)*E(1.75));vb:{if(E(F(j))>>0<=8?8:b;x[h+76>>2]=d;c=x[h+80>>2];b=Da();aa=h,ca=sa[x[x[b>>2]+16>>2]](b,c,d<<2,7693,82)|0,x[aa+80>>2]=ca;d=x[h+72>>2];}wb:{if(a>>>0>=d>>>0){break wb}c=(a^-1)+d|0;b=d-a&3;if(b){g=0;while(1){x[x[h+80>>2]+(a<<2)>>2]=0;a=a+1|0;g=g+1|0;if((b|0)!=(g|0)){continue}break}}if(c>>>0<3){break wb}while(1){b=a<<2;x[b+x[h+80>>2]>>2]=0;x[(b+x[h+80>>2]|0)+4>>2]=0;x[(b+x[h+80>>2]|0)+8>>2]=0;x[(b+x[h+80>>2]|0)+12>>2]=0;a=a+4|0;if((d|0)!=(a|0)){continue}break}}g=x[f+4>>2];if(!g){break ub}d=0;while(1){c=Ma(56,5437,717);f=x[g+28>>2];x[e+20>>2]=1080;xb:{if(!f){x[e+24>>2]=0;x[e+28>>2]=0;break xb}b=Ga(f);x[e+24>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,57)|0;x[e+28>>2]=a;Fa(a,f,x[e+24>>2]+1|0);}f=mf(c,e+20|0);x[e+20>>2]=1080;b=x[e+28>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}aa=f,ca=fb(g,2262,0),x[aa+16>>2]=ca;aa=f,ba=Ia(g,2873,E(0)),B[aa+20>>2]=ba;c=Xa(g,8255,0);b=x[f+32>>2];yb:{if((c|0)==(b|0)){break yb}if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,138);}if(!c){x[f+28>>2]=0;x[f+32>>2]=0;break yb}b=Ga(c);x[f+28>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,145)|0;x[f+32>>2]=a;Fa(a,c,x[f+28>>2]+1|0);}c=Xa(g,6071,0);b=x[f+44>>2];zb:{Ab:{if((c|0)!=(b|0)){if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,138);}if(!c){x[f+40>>2]=0;x[f+44>>2]=0;break zb}b=Ga(c);x[f+40>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,145)|0;x[f+44>>2]=a;Fa(a,c,x[f+40>>2]+1|0);break Ab}if(!c){break zb}}aa=f,ba=Ia(g,9244,E(1)),B[aa+48>>2]=ba;aa=f,ba=Ia(g,9856,E(0)),B[aa+52>>2]=ba;}x[x[h+80>>2]+(d<<2)>>2]=f;d=d+1|0;g=x[g>>2];if(g){continue}break}}f=Ta(u,3246);Bb:{if(!f){break Bb}d=x[f+12>>2];g=x[h+92>>2];if(d>>>0>g>>>0){x[h+92>>2]=d;b=x[h+96>>2];a=Da();aa=h,ca=sa[x[x[a>>2]+16>>2]](a,b,d<<2,7693,94)|0,x[aa+96>>2]=ca;g=x[h+92>>2];d=x[f+12>>2];}a=x[h+88>>2];x[h+88>>2]=d;if(d>>>0>g>>>0){j=E(E(d>>>0)*E(1.75));Cb:{if(E(F(j))>>0<=8?8:b;x[h+92>>2]=d;c=x[h+96>>2];b=Da();aa=h,ca=sa[x[x[b>>2]+16>>2]](b,c,d<<2,7693,82)|0,x[aa+96>>2]=ca;d=x[h+88>>2];}Db:{if(a>>>0>=d>>>0){break Db}c=(a^-1)+d|0;b=d-a&3;if(b){g=0;while(1){x[x[h+96>>2]+(a<<2)>>2]=0;a=a+1|0;g=g+1|0;if((b|0)!=(g|0)){continue}break}}if(c>>>0<3){break Db}while(1){b=a<<2;x[b+x[h+96>>2]>>2]=0;x[(b+x[h+96>>2]|0)+4>>2]=0;x[(b+x[h+96>>2]|0)+8>>2]=0;x[(b+x[h+96>>2]|0)+12>>2]=0;a=a+4|0;if((d|0)!=(a|0)){continue}break}}a=x[f+4>>2];if(!a){break Bb}g=0;while(1){r=E(0);c=qa-80|0;qa=c;x[c+76>>2]=0;x[c+68>>2]=0;x[c+72>>2]=0;x[c+64>>2]=12676;o=Ta(a,3394);b=Ta(a,2977);L=a;U=Ta(a,7259);M=Ta(a,7062);I=Ta(a,7499);if(!I){I=Ta(L,3373);}O=Ta(L,7123);S=Ta(L,3839);X=Ta(L,3067);if(!S){S=Ta(L,3829);}Eb:{Fb:{Gb:{if(!b){break Gb}z=x[b+4>>2];if(!z){break Gb}l=x[3959];n=x[3705];k=x[4926];q=x[3960];while(1){d=x[z+28>>2];x[c+48>>2]=1080;Hb:{if(!d){x[c+52>>2]=0;x[c+56>>2]=0;break Hb}b=Ga(d);x[c+52>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,57)|0;x[c+56>>2]=a;Fa(a,d,x[c+52>>2]+1|0);}H=Uc(h,c+48|0);x[c+48>>2]=1080;b=x[c+56>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}if((H|0)==-1){n=x[c+68>>2];if((n|0)>0){p=n+1|0;f=0;d=n;b=d;while(1){i=b;b=b-1|0;l=b<<2;a=x[l+x[c+76>>2]>>2];if(a){sa[x[x[a>>2]+4>>2]](a);d=x[c+68>>2];}k=d;d=d-1|0;x[c+68>>2]=d;Ib:{if(b>>>0>=d>>>0){break Ib}a=b;if(k+(f-n|0)&1){q=x[c+76>>2];a=q+l|0;l=x[a>>2];o=a;a=i<<2;x[o>>2]=x[a+q>>2];x[a+x[c+76>>2]>>2]=l;a=i;}if((k|0)==(p-f|0)){break Ib}while(1){o=x[c+76>>2];q=a<<2;l=o+q|0;k=x[l>>2];C=l;l=q+4|0;x[C>>2]=x[l+o>>2];x[l+x[c+76>>2]>>2]=k;q=x[c+76>>2];k=q+l|0;l=x[k>>2];o=k;a=a+2|0;k=a<<2;x[o>>2]=x[k+q>>2];x[k+x[c+76>>2]>>2]=l;if((a|0)!=(d|0)){continue}break}}f=f+1|0;if((i|0)>1){continue}break}}x[c+48>>2]=1080;x[c+52>>2]=16;a=Da();d=sa[x[x[a>>2]+12>>2]](a,17,8064,57)|0;x[c+56>>2]=d;v[d+16|0]=y[12249];b=y[12245]|y[12246]<<8|(y[12247]<<16|y[12248]<<24);a=y[12241]|y[12242]<<8|(y[12243]<<16|y[12244]<<24);v[d+8|0]=a;v[d+9|0]=a>>>8;v[d+10|0]=a>>>16;v[d+11|0]=a>>>24;v[d+12|0]=b;v[d+13|0]=b>>>8;v[d+14|0]=b>>>16;v[d+15|0]=b>>>24;b=y[12237]|y[12238]<<8|(y[12239]<<16|y[12240]<<24);a=y[12233]|y[12234]<<8|(y[12235]<<16|y[12236]<<24);v[d|0]=a;v[d+1|0]=a>>>8;v[d+2|0]=a>>>16;v[d+3|0]=a>>>24;v[d+4|0]=b;v[d+5|0]=b>>>8;v[d+6|0]=b>>>16;v[d+7|0]=b>>>24;d=x[z+28>>2];x[c+32>>2]=1080;Jb:{if(!d){x[c+36>>2]=0;x[c+40>>2]=0;$a(m,0,c+48|0,c+32|0);x[c+32>>2]=1080;break Jb}b=Ga(d);x[c+36>>2]=b;a=Da();b=b+1|0;a=sa[x[x[a>>2]+12>>2]](a,b,8064,57)|0;x[c+40>>2]=a;Fa(a,d,b);b=x[c+40>>2];$a(m,0,c+48|0,c+32|0);x[c+32>>2]=1080;if(!b){break Jb}a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}x[c+48>>2]=1080;b=x[c+56>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}a=0;break Eb}s=x[z+4>>2];if(s){while(1){a=x[s+28>>2];Kb:{if(!Oa(a,2338)){p=Hf(Ma(40,5437,844),x[s+12>>2]);x[p+4>>2]=H;b=0;a=x[s+4>>2];if(a){while(1){Lb:{Mb:{d=Ta(a,9402);if((l|0)==x[d+8>>2]){x[c+48>>2]=1080;d=12639;break Mb}d=x[d+16>>2];x[c+48>>2]=1080;if(d){break Mb}x[c+52>>2]=0;x[c+56>>2]=0;break Lb}i=Ga(d);x[c+52>>2]=i;f=Da();f=sa[x[x[f>>2]+12>>2]](f,i+1|0,8064,57)|0;x[c+56>>2]=f;Fa(f,d,x[c+52>>2]+1|0);}Gf(p,b,Ia(a,9271,E(0)),c+48|0);x[c+48>>2]=1080;f=x[c+56>>2];if(f){d=Da();sa[x[x[d>>2]+20>>2]](d,f,8064,201);}b=b+1|0;a=x[a>>2];if(a){continue}break}}a=x[c+68>>2];Nb:{if((a|0)==x[c+72>>2]){j=E(E(a>>>0)*E(1.75));Ob:{if(E(F(j))>>0<=8?8:a;x[c+72>>2]=d;b=x[c+76>>2];a=Da();b=sa[x[x[a>>2]+16>>2]](a,b,d<<2,7693,106)|0;x[c+76>>2]=b;a=x[c+68>>2];b=b+(a<<2)|0;break Nb}b=x[c+76>>2]+(a<<2)|0;}x[b>>2]=p;x[c+68>>2]=a+1;d=x[s+12>>2]-1|0;a=p+20|0;break Kb}if(!Oa(a,3737)){f=tf(Ma(40,5437,858),x[s+12>>2]);x[f+20>>2]=H;b=0;d=x[s+4>>2];if(d){while(1){i=Xa(d,3737,0);J=Ia(d,9271,E(0));V=E(-1);G=E(-1);Pb:{if(Ga(i)>>>0<2){break Pb}v[c+32|0]=y[i|0];a=y[i+1|0];v[c+34|0]=0;v[c+33|0]=a;a=bb(c+32|0,c+48|0);G=E(-1);if(y[x[c+48>>2]]){break Pb}G=E(E(a|0)/E(255));}Qb:{if(Ga(i)>>>0<4){break Qb}v[c+32|0]=y[i+2|0];a=y[i+3|0];v[c+34|0]=0;v[c+33|0]=a;a=bb(c+32|0,c+48|0);if(y[x[c+48>>2]]){break Qb}V=E(E(a|0)/E(255));}P=E(-1);j=E(-1);Rb:{if(Ga(i)>>>0<6){break Rb}v[c+32|0]=y[i+4|0];a=y[i+5|0];v[c+34|0]=0;v[c+33|0]=a;a=bb(c+32|0,c+48|0);j=E(-1);if(y[x[c+48>>2]]){break Rb}j=E(E(a|0)/E(255));}Sb:{if(Ga(i)>>>0<8){break Sb}v[c+32|0]=y[i+6|0];a=y[i+7|0];v[c+34|0]=0;v[c+33|0]=a;a=bb(c+32|0,c+48|0);if(y[x[c+48>>2]]){break Sb}P=E(E(a|0)/E(255));}sf(f,b,J,G,V,j,P);a=Ta(d,8392);Tb:{if(!a){break Tb}Ub:{if((q|0)!=x[a+8>>2]){break Ub}if(Oa(x[a+16>>2],10268)){break Ub}x[x[f+16>>2]+D(b,76)>>2]=1065353216;break Tb}nb(f,b,Ia(d,8392,E(0)),Ia(d,12020,E(0)),Ia(d,12004,E(1)),Ia(d,11992,E(1)));}b=b+1|0;d=x[d>>2];if(d){continue}break}}a=x[c+68>>2];Vb:{if((a|0)==x[c+72>>2]){j=E(E(a>>>0)*E(1.75));Wb:{if(E(F(j))>>0<=8?8:a;x[c+72>>2]=d;b=x[c+76>>2];a=Da();b=sa[x[x[a>>2]+16>>2]](a,b,d<<2,7693,106)|0;x[c+76>>2]=b;a=x[c+68>>2];b=b+(a<<2)|0;break Vb}b=x[c+76>>2]+(a<<2)|0;}x[b>>2]=f;x[c+68>>2]=a+1;d=D(n,x[s+12>>2]-1|0);a=f+36|0;break Kb}if(Oa(a,3761)){break Fb}f=je(Ma(40,5437,873),x[s+12>>2]);x[f+36>>2]=H;i=0;d=x[s+4>>2];if(d){while(1){p=Xa(d,2675,0);b=Xa(d,7254,0);Y=Ia(d,9271,E(0));P=E(-1);J=E(-1);Xb:{if(Ga(p)>>>0<2){break Xb}v[c+32|0]=y[p|0];a=y[p+1|0];v[c+34|0]=0;v[c+33|0]=a;a=bb(c+32|0,c+48|0);J=E(-1);if(y[x[c+48>>2]]){break Xb}J=E(E(a|0)/E(255));}Yb:{if(Ga(p)>>>0<4){break Yb}v[c+32|0]=y[p+2|0];a=y[p+3|0];v[c+34|0]=0;v[c+33|0]=a;a=bb(c+32|0,c+48|0);if(y[x[c+48>>2]]){break Yb}P=E(E(a|0)/E(255));}V=E(-1);G=E(-1);Zb:{if(Ga(p)>>>0<6){break Zb}v[c+32|0]=y[p+4|0];a=y[p+5|0];v[c+34|0]=0;v[c+33|0]=a;a=bb(c+32|0,c+48|0);G=E(-1);if(y[x[c+48>>2]]){break Zb}G=E(E(a|0)/E(255));}_b:{if(Ga(p)>>>0<8){break _b}v[c+32|0]=y[p+6|0];a=y[p+7|0];v[c+34|0]=0;v[c+33|0]=a;a=bb(c+32|0,c+48|0);if(y[x[c+48>>2]]){break _b}V=E(E(a|0)/E(255));}_=E(-1);j=E(-1);$b:{if(Ga(b)>>>0<2){break $b}v[c+32|0]=y[b|0];a=y[b+1|0];v[c+34|0]=0;v[c+33|0]=a;a=bb(c+32|0,c+48|0);j=E(-1);if(y[x[c+48>>2]]){break $b}j=E(E(a|0)/E(255));}ac:{if(Ga(b)>>>0<4){break ac}v[c+32|0]=y[b+2|0];a=y[b+3|0];v[c+34|0]=0;v[c+33|0]=a;a=bb(c+32|0,c+48|0);if(y[x[c+48>>2]]){break ac}_=E(E(a|0)/E(255));}$=E(-1);bc:{if(Ga(b)>>>0<6){break bc}v[c+32|0]=y[b+4|0];a=y[b+5|0];v[c+34|0]=0;v[c+33|0]=a;a=bb(c+32|0,c+48|0);if(y[x[c+48>>2]]){break bc}$=E(E(a|0)/E(255));}ie(f,i,Y,J,P,G,V,j,_,$);a=Ta(d,8392);cc:{if(!a){break cc}dc:{if((q|0)!=x[a+8>>2]){break dc}if(Oa(x[a+16>>2],10268)){break dc}x[x[f+16>>2]+D(i,76)>>2]=1065353216;break cc}nb(f,i,Ia(d,8392,E(0)),Ia(d,12020,E(0)),Ia(d,12004,E(1)),Ia(d,11992,E(1)));}i=i+1|0;d=x[d>>2];if(d){continue}break}}a=x[c+68>>2];ec:{if((a|0)==x[c+72>>2]){j=E(E(a>>>0)*E(1.75));fc:{if(E(F(j))>>0<=8?8:a;x[c+72>>2]=d;b=x[c+76>>2];a=Da();b=sa[x[x[a>>2]+16>>2]](a,b,d<<2,7693,106)|0;x[c+76>>2]=b;a=x[c+68>>2];b=b+(a<<2)|0;break ec}b=x[c+76>>2]+(a<<2)|0;}x[b>>2]=f;x[c+68>>2]=a+1;d=D(k,x[s+12>>2]-1|0);a=f+32|0;}j=B[x[a>>2]+(d<<2)>>2];r=j>2];if(s){continue}break}}z=x[z>>2];if(z){continue}break}}gc:{if(!o){break gc}s=x[o+4>>2];if(!s){break gc}Q=x[4890];N=x[3960];while(1){d=x[s+28>>2];x[c+48>>2]=1080;hc:{if(!d){x[c+52>>2]=0;x[c+56>>2]=0;break hc}b=Ga(d);x[c+52>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,57)|0;x[c+56>>2]=a;Fa(a,d,x[c+52>>2]+1|0);}z=Lg(h,c+48|0);x[c+48>>2]=1080;b=x[c+56>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}if((z|0)==-1){n=x[c+68>>2];if((n|0)>0){p=n+1|0;f=0;d=n;b=d;while(1){i=b;b=b-1|0;l=b<<2;a=x[l+x[c+76>>2]>>2];if(a){sa[x[x[a>>2]+4>>2]](a);d=x[c+68>>2];}k=d;d=d-1|0;x[c+68>>2]=d;ic:{if(b>>>0>=d>>>0){break ic}a=b;if(k+(f-n|0)&1){q=x[c+76>>2];a=q+l|0;l=x[a>>2];o=a;a=i<<2;x[o>>2]=x[a+q>>2];x[a+x[c+76>>2]>>2]=l;a=i;}if((k|0)==(p-f|0)){break ic}while(1){o=x[c+76>>2];q=a<<2;l=o+q|0;k=x[l>>2];C=l;l=q+4|0;x[C>>2]=x[l+o>>2];x[l+x[c+76>>2]>>2]=k;q=x[c+76>>2];k=q+l|0;l=x[k>>2];o=k;a=a+2|0;k=a<<2;x[o>>2]=x[k+q>>2];x[k+x[c+76>>2]>>2]=l;if((a|0)!=(d|0)){continue}break}}f=f+1|0;if((i|0)>1){continue}break}}x[c+48>>2]=1080;x[c+52>>2]=16;a=Da();d=sa[x[x[a>>2]+12>>2]](a,17,8064,57)|0;x[c+56>>2]=d;v[d+16|0]=y[12639];b=y[12635]|y[12636]<<8|(y[12637]<<16|y[12638]<<24);a=y[12631]|y[12632]<<8|(y[12633]<<16|y[12634]<<24);v[d+8|0]=a;v[d+9|0]=a>>>8;v[d+10|0]=a>>>16;v[d+11|0]=a>>>24;v[d+12|0]=b;v[d+13|0]=b>>>8;v[d+14|0]=b>>>16;v[d+15|0]=b>>>24;b=y[12627]|y[12628]<<8|(y[12629]<<16|y[12630]<<24);a=y[12623]|y[12624]<<8|(y[12625]<<16|y[12626]<<24);v[d|0]=a;v[d+1|0]=a>>>8;v[d+2|0]=a>>>16;v[d+3|0]=a>>>24;v[d+4|0]=b;v[d+5|0]=b>>>8;v[d+6|0]=b>>>16;v[d+7|0]=b>>>24;d=x[s+28>>2];x[c+32>>2]=1080;jc:{if(!d){x[c+36>>2]=0;x[c+40>>2]=0;$a(m,0,c+48|0,c+32|0);x[c+32>>2]=1080;break jc}b=Ga(d);x[c+36>>2]=b;a=Da();b=b+1|0;a=sa[x[x[a>>2]+12>>2]](a,b,8064,57)|0;x[c+40>>2]=a;Fa(a,d,b);b=x[c+40>>2];$a(m,0,c+48|0,c+32|0);x[c+32>>2]=1080;if(!b){break jc}a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}x[c+48>>2]=1080;b=x[c+56>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}a=0;break Eb}t=x[s+4>>2];if(t){while(1){kc:{b=x[t+28>>2];if(!Oa(b,8620)){f=Ne(Ma(40,5437,909),x[t+12>>2]);x[f+20>>2]=z;d=0;a=x[t+4>>2];if(a){while(1){G=Ia(a,9271,E(0));j=Ia(a,9457,E(0));b=x[f+36>>2]+(d<<3)|0;B[b>>2]=G;B[b+4>>2]=j;b=Ta(a,8392);lc:{if(!b){break lc}mc:{if((N|0)!=x[b+8>>2]){break mc}if(Oa(x[b+16>>2],10268)){break mc}x[x[f+16>>2]+D(d,76)>>2]=1065353216;break lc}nb(f,d,Ia(a,8392,E(0)),Ia(a,12020,E(0)),Ia(a,12004,E(1)),Ia(a,11992,E(1)));}d=d+1|0;a=x[a>>2];if(a){continue}break}}a=x[c+68>>2];nc:{if((a|0)==x[c+72>>2]){j=E(E(a>>>0)*E(1.75));oc:{if(E(F(j))>>0<=8?8:a;x[c+72>>2]=d;b=x[c+76>>2];a=Da();b=sa[x[x[a>>2]+16>>2]](a,b,d<<2,7693,106)|0;x[c+76>>2]=b;a=x[c+68>>2];b=b+(a<<2)|0;break nc}b=x[c+76>>2]+(a<<2)|0;}x[b>>2]=f;x[c+68>>2]=a+1;j=B[(x[f+36>>2]+(x[t+12>>2]<<3)|0)-8>>2];r=j>2];qc:{if(!a){P=E(1);a=Me(Ma(40,5437,929),x[t+12>>2]);break qc}if(!d){P=E(0);a=Sc(Ma(40,5437,932),x[t+12>>2]);break qc}P=E(0);a=0;if(b){break qc}a=Le(Ma(40,5437,934),x[t+12>>2]);}b=a;x[b+36>>2]=z;a=x[t+4>>2];if(a){Y=d?E(1):j;d=0;while(1){J=Ia(a,9271,E(0));G=E(Y*Ia(a,1669,P));j=E(Y*Ia(a,1277,P));f=x[b+32>>2]+D(d,12)|0;B[f>>2]=J;B[f+8>>2]=j;B[f+4>>2]=G;f=Ta(a,8392);rc:{if(!f){break rc}sc:{if((N|0)!=x[f+8>>2]){break sc}if(Oa(x[f+16>>2],10268)){break sc}x[x[b+16>>2]+D(d,76)>>2]=1065353216;break rc}nb(b,d,Ia(a,8392,E(0)),Ia(a,12020,E(0)),Ia(a,12004,E(1)),Ia(a,11992,E(1)));}d=d+1|0;a=x[a>>2];if(a){continue}break}}a=x[c+68>>2];tc:{if((a|0)==x[c+72>>2]){j=E(E(a>>>0)*E(1.75));uc:{if(E(F(j))>>0<=8?8:a;x[c+72>>2]=f;d=x[c+76>>2];a=Da();d=sa[x[x[a>>2]+16>>2]](a,d,f<<2,7693,106)|0;x[c+76>>2]=d;a=x[c+68>>2];d=d+(a<<2)|0;break tc}d=x[c+76>>2]+(a<<2)|0;}x[d>>2]=b;x[c+68>>2]=a+1;j=B[x[b+32>>2]+(D(Q,x[t+12>>2]-1|0)<<2)>>2];r=j>2];if((n|0)>0){p=n+1|0;f=0;d=n;b=d;while(1){i=b;b=b-1|0;l=b<<2;a=x[l+x[c+76>>2]>>2];if(a){sa[x[x[a>>2]+4>>2]](a);d=x[c+68>>2];}k=d;d=d-1|0;x[c+68>>2]=d;vc:{if(b>>>0>=d>>>0){break vc}a=b;if(k+(f-n|0)&1){q=x[c+76>>2];a=q+l|0;l=x[a>>2];o=a;a=i<<2;x[o>>2]=x[a+q>>2];x[a+x[c+76>>2]>>2]=l;a=i;}if((k|0)==(p-f|0)){break vc}while(1){o=x[c+76>>2];q=a<<2;l=o+q|0;k=x[l>>2];C=l;l=q+4|0;x[C>>2]=x[l+o>>2];x[l+x[c+76>>2]>>2]=k;q=x[c+76>>2];k=q+l|0;l=x[k>>2];o=k;a=a+2|0;k=a<<2;x[o>>2]=x[k+q>>2];x[k+x[c+76>>2]>>2]=l;if((a|0)!=(d|0)){continue}break}}f=f+1|0;if((i|0)>1){continue}break}}x[c+52>>2]=34;x[c+48>>2]=1080;a=Da();a=sa[x[x[a>>2]+12>>2]](a,35,8064,57)|0;x[c+56>>2]=a;Fa(a,12174,x[c+52>>2]+1|0);d=x[t+28>>2];x[c+32>>2]=1080;wc:{if(!d){x[c+36>>2]=0;x[c+40>>2]=0;break wc}b=Ga(d);x[c+36>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,57)|0;x[c+40>>2]=a;Fa(a,d,x[c+36>>2]+1|0);}$a(m,0,c+48|0,c+32|0);x[c+32>>2]=1080;b=x[c+40>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}x[c+48>>2]=1080;b=x[c+56>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}}if(H){break kc}a=0;break Eb}t=x[t>>2];if(t){continue}break}}s=x[s>>2];if(s){continue}break}}xc:{if(!U){break xc}b=x[U+4>>2];if(!b){break xc}n=x[3940];k=x[3960];while(1){f=x[b+28>>2];x[c+48>>2]=1080;yc:{if(!f){x[c+52>>2]=0;x[c+56>>2]=0;break yc}d=Ga(f);x[c+52>>2]=d;a=Da();a=sa[x[x[a>>2]+12>>2]](a,d+1|0,8064,57)|0;x[c+56>>2]=a;Fa(a,f,x[c+52>>2]+1|0);}i=ze(h,c+48|0);x[c+48>>2]=1080;d=x[c+56>>2];if(d){a=Da();sa[x[x[a>>2]+20>>2]](a,d,8064,201);}l=af(Ma(40,5437,960),x[b+12>>2]);f=x[h+104>>2];zc:{if(!f){break zc}d=x[h+112>>2];a=0;while(1){if((i|0)==x[d+(a<<2)>>2]){x[l+36>>2]=a;break zc}a=a+1|0;if((f|0)!=(a|0)){continue}break}}d=0;a=x[b+4>>2];if(a){while(1){$e(l,d,Ia(a,9271,E(0)),Ia(a,1303,E(1)),E(Ia(a,3152,E(0))*B[m+24>>2]),fb(a,8407,1)?1:-1,(fb(a,3119,0)|0)!=0,(fb(a,7663,0)|0)!=0);f=Ta(a,8392);Ac:{if(!f){break Ac}Bc:{if((k|0)!=x[f+8>>2]){break Bc}if(Oa(x[f+16>>2],10268)){break Bc}x[x[l+16>>2]+D(d,76)>>2]=1065353216;break Ac}nb(l,d,Ia(a,8392,E(0)),Ia(a,12020,E(0)),Ia(a,12004,E(1)),Ia(a,11992,E(1)));}d=d+1|0;a=x[a>>2];if(a){continue}break}}a=x[c+68>>2];Cc:{if((a|0)==x[c+72>>2]){j=E(E(a>>>0)*E(1.75));Dc:{if(E(F(j))>>0<=8?8:a;x[c+72>>2]=f;d=x[c+76>>2];a=Da();d=sa[x[x[a>>2]+16>>2]](a,d,f<<2,7693,106)|0;x[c+76>>2]=d;a=x[c+68>>2];d=d+(a<<2)|0;break Cc}d=x[c+76>>2]+(a<<2)|0;}x[d>>2]=l;x[c+68>>2]=a+1;j=B[x[l+32>>2]+(D(n,x[b+12>>2]-1|0)<<2)>>2];r=j>2];if(b){continue}break}}Ec:{if(!M){break Ec}b=x[M+4>>2];if(!b){break Ec}n=x[4869];k=x[3960];while(1){f=x[b+28>>2];x[c+48>>2]=1080;Fc:{if(!f){x[c+52>>2]=0;x[c+56>>2]=0;break Fc}d=Ga(f);x[c+52>>2]=d;a=Da();a=sa[x[x[a>>2]+12>>2]](a,d+1|0,8064,57)|0;x[c+56>>2]=a;Fa(a,f,x[c+52>>2]+1|0);}i=ye(h,c+48|0);x[c+48>>2]=1080;d=x[c+56>>2];if(d){a=Da();sa[x[x[a>>2]+20>>2]](a,d,8064,201);}l=ne(Ma(40,5437,982),x[b+12>>2]);f=x[h+120>>2];Gc:{if(!f){break Gc}d=x[h+128>>2];a=0;while(1){if((i|0)==x[d+(a<<2)>>2]){x[l+36>>2]=a;break Gc}a=a+1|0;if((f|0)!=(a|0)){continue}break}}d=0;a=x[b+4>>2];if(a){while(1){me(l,d,Ia(a,9271,E(0)),Ia(a,1400,E(1)),Ia(a,1436,E(1)),Ia(a,1481,E(1)),Ia(a,1367,E(1)));f=Ta(a,8392);Hc:{if(!f){break Hc}Ic:{if((k|0)!=x[f+8>>2]){break Ic}if(Oa(x[f+16>>2],10268)){break Ic}x[x[l+16>>2]+D(d,76)>>2]=1065353216;break Hc}nb(l,d,Ia(a,8392,E(0)),Ia(a,12020,E(0)),Ia(a,12004,E(1)),Ia(a,11992,E(1)));}d=d+1|0;a=x[a>>2];if(a){continue}break}}a=x[c+68>>2];Jc:{if((a|0)==x[c+72>>2]){j=E(E(a>>>0)*E(1.75));Kc:{if(E(F(j))>>0<=8?8:a;x[c+72>>2]=f;d=x[c+76>>2];a=Da();d=sa[x[x[a>>2]+16>>2]](a,d,f<<2,7693,106)|0;x[c+76>>2]=d;a=x[c+68>>2];d=d+(a<<2)|0;break Jc}d=x[c+76>>2]+(a<<2)|0;}x[d>>2]=l;x[c+68>>2]=a+1;j=B[x[l+32>>2]+(D(n,x[b+12>>2]-1|0)<<2)>>2];r=j>2];if(b){continue}break}}Lc:{if(!I){break Lc}t=x[I+4>>2];if(!t){break Lc}Q=x[4087];H=x[4067];N=x[3960];while(1){d=x[t+28>>2];x[c+48>>2]=1080;Mc:{if(!d){x[c+52>>2]=0;x[c+56>>2]=0;break Mc}b=Ga(d);x[c+52>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,57)|0;x[c+56>>2]=a;Fa(a,d,x[c+52>>2]+1|0);}M=xe(h,c+48|0);x[c+48>>2]=1080;b=x[c+56>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}Nc:{if(M){b=x[h+136>>2];Oc:{if(b){a=x[h+144>>2];f=0;while(1){if((M|0)==x[a+(f<<2)>>2]){break Oc}f=f+1|0;if((b|0)!=(f|0)){continue}break}}f=0;}b=x[t+4>>2];if(!b){break Nc}while(1){Pc:{Qc:{n=x[b+28>>2];if(!Oa(n,6193)){break Qc}if(!Oa(n,8312)){break Qc}if(Oa(n,1303)){break Pc}k=Te(Ma(40,5437,1050),x[b+12>>2]);x[k+36>>2]=f;d=0;a=x[b+4>>2];if(a){while(1){J=Ia(a,9271,E(0));G=Ia(a,1400,E(1));j=Ia(a,1436,E(1));i=x[k+32>>2]+D(d,12)|0;B[i>>2]=J;B[i+8>>2]=j;B[i+4>>2]=G;i=Ta(a,8392);Rc:{if(!i){break Rc}Sc:{if((N|0)!=x[i+8>>2]){break Sc}if(Oa(x[i+16>>2],10268)){break Sc}x[x[k+16>>2]+D(d,76)>>2]=1065353216;break Rc}nb(k,d,Ia(a,8392,E(0)),Ia(a,12020,E(0)),Ia(a,12004,E(1)),Ia(a,11992,E(1)));}d=d+1|0;a=x[a>>2];if(a){continue}break}}a=x[c+68>>2];Tc:{if((a|0)==x[c+72>>2]){j=E(E(a>>>0)*E(1.75));Uc:{if(E(F(j))>>0<=8?8:a;x[c+72>>2]=i;d=x[c+76>>2];a=Da();d=sa[x[x[a>>2]+16>>2]](a,d,i<<2,7693,106)|0;x[c+76>>2]=d;a=x[c+68>>2];d=d+(a<<2)|0;break Tc}d=x[c+76>>2]+(a<<2)|0;}x[d>>2]=k;x[c+68>>2]=a+1;j=B[x[k+32>>2]+(D(H,x[b+12>>2]-1|0)<<2)>>2];r=j>2]);d=A[M+48>>2]<2;break Vc}i=Cd(Ma(40,5437,1032),x[b+12>>2]);d=!x[M+44>>2];}j=B[m+24>>2];x[i+36>>2]=f;a=x[b+4>>2];if(a){J=d?j:E(1);d=0;while(1){G=Ia(a,9271,E(0));j=E(J*Ia(a,n,E(0)));k=x[i+32>>2]+(d<<3)|0;B[k>>2]=G;B[k+4>>2]=j;k=Ta(a,8392);Wc:{if(!k){break Wc}Xc:{if((N|0)!=x[k+8>>2]){break Xc}if(Oa(x[k+16>>2],10268)){break Xc}x[x[i+16>>2]+D(d,76)>>2]=1065353216;break Wc}nb(i,d,Ia(a,8392,E(0)),Ia(a,12020,E(0)),Ia(a,12004,E(1)),Ia(a,11992,E(1)));}d=d+1|0;a=x[a>>2];if(a){continue}break}}a=x[c+68>>2];Yc:{if((a|0)==x[c+72>>2]){j=E(E(a>>>0)*E(1.75));Zc:{if(E(F(j))>>0<=8?8:a;x[c+72>>2]=k;d=x[c+76>>2];a=Da();d=sa[x[x[a>>2]+16>>2]](a,d,k<<2,7693,106)|0;x[c+76>>2]=d;a=x[c+68>>2];d=d+(a<<2)|0;break Yc}d=x[c+76>>2]+(a<<2)|0;}x[d>>2]=i;x[c+68>>2]=a+1;j=B[x[i+32>>2]+(D(Q,x[b+12>>2]-1|0)<<2)>>2];r=j>2];if(b){continue}break}break Nc}n=x[c+68>>2];if((n|0)>0){p=n+1|0;k=0;b=n;f=b;while(1){d=f;f=d-1|0;l=f<<2;a=x[l+x[c+76>>2]>>2];if(a){sa[x[x[a>>2]+4>>2]](a);b=x[c+68>>2];}i=b;b=b-1|0;x[c+68>>2]=b;_c:{if(b>>>0<=f>>>0){break _c}a=f;if(i+(k-n|0)&1){q=x[c+76>>2];a=q+l|0;l=x[a>>2];o=a;a=d<<2;x[o>>2]=x[a+q>>2];x[a+x[c+76>>2]>>2]=l;a=d;}if((i|0)==(p-k|0)){break _c}while(1){o=x[c+76>>2];q=a<<2;l=o+q|0;i=x[l>>2];C=l;l=q+4|0;x[C>>2]=x[l+o>>2];x[l+x[c+76>>2]>>2]=i;q=x[c+76>>2];i=q+l|0;l=x[i>>2];o=i;a=a+2|0;i=a<<2;x[o>>2]=x[i+q>>2];x[i+x[c+76>>2]>>2]=l;if((a|0)!=(b|0)){continue}break}}k=k+1|0;if((d|0)>1){continue}break}}x[c+52>>2]=27;x[c+48>>2]=1080;a=Da();a=sa[x[x[a>>2]+12>>2]](a,28,8064,57)|0;x[c+56>>2]=a;Fa(a,12321,x[c+52>>2]+1|0);d=x[t+28>>2];x[c+32>>2]=1080;$c:{if(!d){x[c+36>>2]=0;x[c+40>>2]=0;break $c}b=Ga(d);x[c+36>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,57)|0;x[c+40>>2]=a;Fa(a,d,x[c+36>>2]+1|0);}$a(m,0,c+48|0,c+32|0);x[c+32>>2]=1080;b=x[c+40>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}x[c+48>>2]=1080;b=x[c+56>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}}if(!M){a=0;break Eb}t=x[t>>2];if(t){continue}break}}ad:{if(!O){break ad}K=x[O+4>>2];if(!K){break ad}Q=x[3960];while(1){d=x[K+28>>2];x[c+48>>2]=1080;bd:{if(!d){x[c+52>>2]=0;x[c+56>>2]=0;break bd}b=Ga(d);x[c+52>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,57)|0;x[c+56>>2]=a;Fa(a,d,x[c+52>>2]+1|0);}H=Tc(h,c+48|0);x[c+48>>2]=1080;b=x[c+56>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}T=x[K+4>>2];if(T){while(1){d=x[T+28>>2];x[c+48>>2]=1080;cd:{if(!d){x[c+52>>2]=0;x[c+56>>2]=0;break cd}b=Ga(d);x[c+52>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,57)|0;x[c+56>>2]=a;Fa(a,d,x[c+52>>2]+1|0);}U=Uc(h,c+48|0);x[c+48>>2]=1080;b=x[c+56>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}s=x[T+4>>2];if(s){while(1){d=x[s+28>>2];x[c+48>>2]=1080;dd:{if(!d){x[c+52>>2]=0;x[c+56>>2]=0;break dd}b=Ga(d);x[c+52>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,57)|0;x[c+56>>2]=a;Fa(a,d,x[c+52>>2]+1|0);}C=Ob(H,U,c+48|0);x[c+48>>2]=1080;b=x[c+56>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}ed:{if(!C){n=x[c+68>>2];if((n|0)<=0){break ed}p=n+1|0;f=0;d=n;b=d;while(1){i=b;b=b-1|0;l=b<<2;a=x[l+x[c+76>>2]>>2];if(a){sa[x[x[a>>2]+4>>2]](a);d=x[c+68>>2];}k=d;d=d-1|0;x[c+68>>2]=d;fd:{if(b>>>0>=d>>>0){break fd}a=b;if(k+(f-n|0)&1){q=x[c+76>>2];a=q+l|0;l=x[a>>2];o=a;a=i<<2;x[o>>2]=x[a+q>>2];x[a+x[c+76>>2]>>2]=l;a=i;}if((k|0)==(p-f|0)){break fd}while(1){o=x[c+76>>2];q=a<<2;l=o+q|0;k=x[l>>2];C=l;l=q+4|0;x[C>>2]=x[l+o>>2];x[l+x[c+76>>2]>>2]=k;q=x[c+76>>2];k=q+l|0;l=x[k>>2];o=k;a=a+2|0;k=a<<2;x[o>>2]=x[k+q>>2];x[k+x[c+76>>2]>>2]=l;if((a|0)!=(d|0)){continue}break}}f=f+1|0;if((i|0)>1){continue}break}break ed}a=x[C+40>>2];M=x[C+24>>2];f=M?(a>>>0)/3<<1:a;R=rf(Ma(60,5437,1090),x[s+12>>2]);x[R+56>>2]=C;x[R+20>>2]=U;k=x[s+4>>2];if(k){I=0;q=(M|0)!=0|(f|0)<=0;j=E(E(f>>>0)*E(1.75));gd:{if(E(F(j))>>0<=8?8:a;N=O<<2;l=f&-4;p=f&3;n=f-1|0;while(1){o=Ta(k,3534);x[c+60>>2]=0;x[c+52>>2]=0;x[c+56>>2]=0;x[c+48>>2]=13296;hd:{if(!o){if(M){x[c+52>>2]=f;if(!f){break hd}x[c+56>>2]=O;a=Da();b=sa[x[x[a>>2]+16>>2]](a,0,N,7693,82)|0;x[c+60>>2]=b;a=x[c+52>>2];if(!a){break hd}Ha(b,0,a<<2);break hd}b=x[C+40>>2];if(!b){break hd}x[c+56>>2]=b;a=Da();b=sa[x[x[a>>2]+16>>2]](a,0,b<<2,7693,94)|0;x[c+60>>2]=b;t=x[C+40>>2];if(!t){break hd}d=0;a=x[c+52>>2];while(1){i=x[C+48>>2]+(d<<2)|0;id:{if(x[c+56>>2]==(a|0)){G=B[i>>2];j=E(E(a>>>0)*E(1.75));jd:{if(E(F(j))>>0<=8?8:a;x[c+56>>2]=i;a=Da();b=sa[x[x[a>>2]+16>>2]](a,b,i<<2,7693,106)|0;x[c+60>>2]=b;a=x[c+52>>2];B[(a<<2)+b>>2]=G;t=x[C+40>>2];break id}B[(a<<2)+b>>2]=B[i>>2];}a=a+1|0;x[c+52>>2]=a;d=d+1|0;if(t>>>0>d>>>0){continue}break}break hd}d=fb(k,2708,0);z=x[c+52>>2];x[c+52>>2]=f;i=f;if(f>>>0>A[c+56>>2]){x[c+56>>2]=O;b=x[c+60>>2];a=Da();aa=c,ca=sa[x[x[a>>2]+16>>2]](a,b,N,7693,82)|0,x[aa+60>>2]=ca;i=x[c+52>>2];}if(i>>>0>z>>>0){Ha(x[c+60>>2]+(z<<2)|0,0,i-z<<2);}a=x[o+4>>2];kd:{if(B[m+24>>2]==E(1)){if(!a){break kd}b=x[c+60>>2];while(1){B[b+(d<<2)>>2]=B[a+24>>2];d=d+1|0;a=x[a>>2];if(a){continue}break}break kd}if(!a){break kd}b=x[c+60>>2];while(1){B[b+(d<<2)>>2]=B[a+24>>2]*B[m+24>>2];d=d+1|0;a=x[a>>2];if(a){continue}break}}if(q){break hd}W=x[C+48>>2];t=0;z=x[c+60>>2];a=0;d=0;if(n>>>0>=3){while(1){o=a<<2;b=o+z|0;B[b>>2]=B[o+W>>2]+B[b>>2];i=o|4;b=i+z|0;B[b>>2]=B[i+W>>2]+B[b>>2];i=o|8;b=i+z|0;B[b>>2]=B[i+W>>2]+B[b>>2];i=o|12;b=i+z|0;B[b>>2]=B[i+W>>2]+B[b>>2];a=a+4|0;d=d+4|0;if((l|0)!=(d|0)){continue}break}}if(!p){break hd}while(1){d=a<<2;b=d+z|0;B[b>>2]=B[d+W>>2]+B[b>>2];a=a+1|0;t=t+1|0;if((p|0)!=(t|0)){continue}break}}qf(R,I,Ia(k,9271,E(0)),c+48|0);a=Ta(k,8392);ld:{if(!a){break ld}md:{if((Q|0)!=x[a+8>>2]){break md}if(Oa(x[a+16>>2],10268)){break md}x[x[R+16>>2]+D(I,76)>>2]=1065353216;break ld}nb(R,I,Ia(k,8392,E(0)),Ia(k,12020,E(0)),Ia(k,12004,E(1)),Ia(k,11992,E(1)));}x[c+52>>2]=0;x[c+48>>2]=13296;b=x[c+60>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,7693,206);}I=I+1|0;k=x[k>>2];if(k){continue}break}}a=x[c+68>>2];nd:{if((a|0)==x[c+72>>2]){j=E(E(a>>>0)*E(1.75));od:{if(E(F(j))>>0<=8?8:a;x[c+72>>2]=d;b=x[c+76>>2];a=Da();b=sa[x[x[a>>2]+16>>2]](a,b,d<<2,7693,106)|0;x[c+76>>2]=b;a=x[c+68>>2];b=b+(a<<2)|0;break nd}b=x[c+76>>2]+(a<<2)|0;}x[b>>2]=R;x[c+68>>2]=a+1;j=B[(x[R+36>>2]+(x[s+12>>2]<<2)|0)-4>>2];r=j>2];if(s){continue}break}}T=x[T>>2];if(T){continue}break}}K=x[K>>2];if(K){continue}break}}if(S){O=pf(Ma(36,5437,1137),x[S+12>>2]);pd:{qd:{rd:{sd:{td:{K=x[S+4>>2];if(K){I=0;while(1){x[c+60>>2]=0;x[c+52>>2]=0;x[c+56>>2]=0;x[c+48>>2]=13184;k=Ta(K,3111);if(k){b=0;x[c+44>>2]=0;x[c+36>>2]=0;x[c+40>>2]=0;x[c+32>>2]=13184;l=c;a=x[h+36>>2];d=x[k+12>>2];ud:{if((a|0)==(d|0)){t=0;i=0;d=a;break ud}b=a-d|0;x[c+40>>2]=b;a=Da();b=sa[x[x[a>>2]+16>>2]](a,0,b<<2,7693,94)|0;x[c+44>>2]=b;a=x[k+12>>2];t=x[c+40>>2];i=x[c+36>>2];d=x[h+36>>2];}a=d-a|0;x[l+36>>2]=a;if(a>>>0>t>>>0){l=c;j=E(E(a>>>0)*E(1.75));vd:{if(E(F(j))>>0<=8?8:a;x[l+40>>2]=d;a=Da();b=sa[x[x[a>>2]+16>>2]](a,b,d<<2,7693,82)|0;x[c+44>>2]=b;a=x[c+36>>2];}if(a>>>0>i>>>0){Ha((i<<2)+b|0,0,a-i<<2);}a=x[h+36>>2];i=x[c+56>>2];if(a>>>0>i>>>0){x[c+56>>2]=a;d=x[c+60>>2];b=Da();aa=c,ca=sa[x[x[b>>2]+16>>2]](b,d,a<<2,7693,94)|0,x[aa+60>>2]=ca;i=x[c+56>>2];a=x[h+36>>2];}f=x[c+52>>2];x[c+52>>2]=a;if(a>>>0>i>>>0){b=c;j=E(E(a>>>0)*E(1.75));wd:{if(E(F(j))>>0<=8?8:a;x[b+56>>2]=d;b=x[c+60>>2];a=Da();aa=c,ca=sa[x[x[a>>2]+16>>2]](a,b,d<<2,7693,82)|0,x[aa+60>>2]=ca;a=x[c+52>>2];}if(a>>>0>f>>>0){Ha(x[c+60>>2]+(f<<2)|0,0,a-f<<2);}a=x[h+36>>2];if((a|0)>0){Ha(x[c+60>>2],255,a<<2);}z=k+4|0;b=0;f=0;xd:{yd:{while(1){zd:{z=x[z>>2];if(!z){d=x[h+36>>2];if(d>>>0<=b>>>0){break yd}k=d+(b^-1)|0;a=0;l=x[c+44>>2];i=d-b&3;if(i){while(1){x[l+(f<<2)>>2]=b;f=f+1|0;b=b+1|0;a=a+1|0;if((i|0)!=(a|0)){continue}break}}if(k>>>0>=3){break zd}break yd}i=Xa(z,1903,0);x[c+20>>2]=1080;Ad:{if(!i){x[c+24>>2]=0;x[c+28>>2]=0;break Ad}d=Ga(i);x[c+24>>2]=d;a=Da();a=sa[x[x[a>>2]+12>>2]](a,d+1|0,8064,57)|0;x[c+28>>2]=a;Fa(a,i,x[c+24>>2]+1|0);}d=Uc(h,c+20|0);x[c+20>>2]=1080;i=x[c+28>>2];if(i){a=Da();sa[x[x[a>>2]+20>>2]](a,i,8064,201);}N=(d|0)==-1;if(!N){if((b|0)!=(d|0)){k=d+(b^-1)|0;a=0;l=x[c+44>>2];i=d-b&3;if(i){while(1){x[l+(f<<2)>>2]=b;f=f+1|0;b=b+1|0;a=a+1|0;if((i|0)!=(a|0)){continue}break}}if(k>>>0>=3){while(1){a=l+(f<<2)|0;x[a>>2]=b;x[a+12>>2]=b+3;x[a+8>>2]=b+2;x[a+4>>2]=b+1;f=f+4|0;b=b+4|0;if((d|0)!=(b|0)){continue}break}}b=d;}a=fb(z,2708,0);x[x[c+60>>2]+(a+b<<2)>>2]=b;b=b+1|0;if(!N){continue}break xd}q=x[c+68>>2];if((q|0)>0){Q=q+1|0;s=0;d=q;k=d;while(1){i=k;k=i-1|0;o=k<<2;a=x[o+x[c+76>>2]>>2];if(a){sa[x[x[a>>2]+4>>2]](a);d=x[c+68>>2];}l=d;d=d-1|0;x[c+68>>2]=d;Bd:{if(d>>>0<=k>>>0){break Bd}a=k;if(l+(s-q|0)&1){p=x[c+76>>2];a=p+o|0;o=x[a>>2];n=a;a=i<<2;x[n>>2]=x[a+p>>2];x[a+x[c+76>>2]>>2]=o;a=i;}if((l|0)==(Q-s|0)){break Bd}while(1){H=x[c+76>>2];p=a<<2;o=H+p|0;l=x[o>>2];n=o;o=p+4|0;x[n>>2]=x[o+H>>2];x[o+x[c+76>>2]>>2]=l;p=x[c+76>>2];l=p+o|0;o=x[l>>2];n=l;a=a+2|0;l=a<<2;x[n>>2]=x[l+p>>2];x[l+x[c+76>>2]>>2]=o;if((a|0)!=(d|0)){continue}break}}s=s+1|0;if((i|0)>1){continue}break}}x[c+24>>2]=16;x[c+20>>2]=1080;a=Da();a=sa[x[x[a>>2]+12>>2]](a,17,8064,57)|0;x[c+28>>2]=a;Fa(a,12233,x[c+24>>2]+1|0);i=Xa(z,1903,0);x[c+8>>2]=1080;Cd:{if(!i){x[c+12>>2]=0;x[c+16>>2]=0;break Cd}d=Ga(i);x[c+12>>2]=d;a=Da();a=sa[x[x[a>>2]+12>>2]](a,d+1|0,8064,57)|0;x[c+16>>2]=a;Fa(a,i,x[c+12>>2]+1|0);}$a(m,0,c+20|0,c+8|0);x[c+8>>2]=1080;d=x[c+16>>2];if(d){a=Da();sa[x[x[a>>2]+20>>2]](a,d,8064,201);}x[c+20>>2]=1080;d=x[c+28>>2];if(d){a=Da();sa[x[x[a>>2]+20>>2]](a,d,8064,201);}if(!N){continue}break xd}break}while(1){a=l+(f<<2)|0;x[a>>2]=b;x[a+12>>2]=b+3;x[a+8>>2]=b+2;x[a+4>>2]=b+1;f=f+4|0;b=b+4|0;if((d|0)!=(b|0)){continue}break}}if((d|0)<=0){break xd}k=x[c+44>>2];i=x[c+60>>2];Dd:{if(!(d&1)){a=d;break Dd}a=d-1|0;b=i+(a<<2)|0;if(x[b>>2]!=-1){break Dd}f=f-1|0;x[b>>2]=x[k+(f<<2)>>2];}if((d|0)==1){break xd}while(1){d=a-1|0;b=i+(d<<2)|0;if(x[b>>2]==-1){f=f-1|0;x[b>>2]=x[k+(f<<2)>>2];}a=a-2|0;b=i+(a<<2)|0;if(x[b>>2]==-1){f=f-1|0;x[b>>2]=x[k+(f<<2)>>2];}if(d>>>0>1){continue}break}}x[c+36>>2]=0;x[c+32>>2]=13184;b=x[c+44>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,7693,206);}if(z){break td}}of(O,I,Ia(K,9271,E(0)),c+48|0);x[c+52>>2]=0;x[c+48>>2]=13184;b=x[c+60>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,7693,206);}I=I+1|0;K=x[K>>2];if(K){continue}break}}a=x[c+68>>2];if((a|0)!=x[c+72>>2]){break qd}j=E(E(a>>>0)*E(1.75));if(!(E(F(j))>2]=0;x[c+48>>2]=13184;d=x[c+60>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,7693,206);}break Eb}a=-2147483648;}d=a>>>0<=8?8:a;x[c+72>>2]=d;b=x[c+76>>2];a=Da();b=sa[x[x[a>>2]+16>>2]](a,b,d<<2,7693,106)|0;x[c+76>>2]=b;a=x[c+68>>2];b=b+(a<<2)|0;break pd}b=x[c+76>>2]+(a<<2)|0;}x[b>>2]=O;x[c+68>>2]=a+1;j=B[(x[O+16>>2]+(x[S+12>>2]<<2)|0)-4>>2];r=j>2]);d=x[X+4>>2];if(d){b=0;while(1){i=Xa(d,9402,0);x[c+48>>2]=1080;Ed:{if(!i){x[c+52>>2]=0;x[c+56>>2]=0;break Ed}f=Ga(i);x[c+52>>2]=f;a=Da();a=sa[x[x[a>>2]+12>>2]](a,f+1|0,8064,57)|0;x[c+56>>2]=a;Fa(a,i,x[c+52>>2]+1|0);}n=Kg(h,c+48|0);x[c+48>>2]=1080;f=x[c+56>>2];if(f){a=Da();sa[x[x[a>>2]+20>>2]](a,f,8064,201);}if(!n){l=x[c+68>>2];if((l|0)>0){H=l+1|0;k=0;b=l;f=b;while(1){i=f;f=f-1|0;q=f<<2;a=x[q+x[c+76>>2]>>2];if(a){sa[x[x[a>>2]+4>>2]](a);b=x[c+68>>2];}n=b;b=b-1|0;x[c+68>>2]=b;Fd:{if(b>>>0<=f>>>0){break Fd}a=f;if(n+(k-l|0)&1){o=x[c+76>>2];a=o+q|0;q=x[a>>2];C=a;a=i<<2;x[C>>2]=x[a+o>>2];x[a+x[c+76>>2]>>2]=q;a=i;}if((n|0)==(H-k|0)){break Fd}while(1){p=x[c+76>>2];o=a<<2;q=p+o|0;n=x[q>>2];C=q;q=o+4|0;x[C>>2]=x[q+p>>2];x[q+x[c+76>>2]>>2]=n;o=x[c+76>>2];n=o+q|0;q=x[n>>2];C=n;a=a+2|0;n=a<<2;x[C>>2]=x[n+o>>2];x[n+x[c+76>>2]>>2]=q;if((a|0)!=(b|0)){continue}break}}k=k+1|0;if((i|0)>1){continue}break}}x[c+52>>2]=17;x[c+48>>2]=1080;a=Da();a=sa[x[x[a>>2]+12>>2]](a,18,8064,57)|0;x[c+56>>2]=a;Fa(a,12380,x[c+52>>2]+1|0);d=Xa(d,9402,0);x[c+32>>2]=1080;Gd:{if(!d){x[c+36>>2]=0;x[c+40>>2]=0;break Gd}b=Ga(d);x[c+36>>2]=b;a=Da();a=sa[x[x[a>>2]+12>>2]](a,b+1|0,8064,57)|0;x[c+40>>2]=a;Fa(a,d,x[c+36>>2]+1|0);}$a(m,0,c+48|0,c+32|0);x[c+32>>2]=1080;b=x[c+40>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}x[c+48>>2]=1080;b=x[c+56>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}a=0;break Eb}l=nf(Ma(40,5437,1196),Ia(d,9271,E(0)),n);aa=l,ca=fb(d,2262,x[n+16>>2]),x[aa+12>>2]=ca;aa=l,ba=Ia(d,2873,B[n+20>>2]),B[aa+16>>2]=ba;i=Xa(d,8255,x[n+32>>2]);f=x[l+28>>2];Hd:{if((i|0)==(f|0)){break Hd}if(f){a=Da();sa[x[x[a>>2]+20>>2]](a,f,8064,138);}if(!i){x[l+24>>2]=0;x[l+28>>2]=0;break Hd}f=Ga(i);x[l+24>>2]=f;a=Da();a=sa[x[x[a>>2]+12>>2]](a,f+1|0,8064,145)|0;x[l+28>>2]=a;Fa(a,i,x[l+24>>2]+1|0);}if(x[n+40>>2]){aa=l,ba=Ia(d,9244,E(1)),B[aa+32>>2]=ba;aa=l,ba=Ia(d,9856,E(0)),B[aa+36>>2]=ba;}a=b<<2;B[a+x[k+16>>2]>>2]=B[l+8>>2];x[a+x[k+32>>2]>>2]=l;b=b+1|0;d=x[d>>2];if(d){continue}break}}a=x[c+68>>2];Id:{if((a|0)==x[c+72>>2]){j=E(E(a>>>0)*E(1.75));Jd:{if(E(F(j))>>0<=8?8:a;x[c+72>>2]=d;b=x[c+76>>2];a=Da();b=sa[x[x[a>>2]+16>>2]](a,b,d<<2,7693,106)|0;x[c+76>>2]=b;a=x[c+68>>2];b=b+(a<<2)|0;break Id}b=x[c+76>>2]+(a<<2)|0;}x[b>>2]=k;x[c+68>>2]=a+1;j=B[(x[k+16>>2]+(x[X+12>>2]<<2)|0)-4>>2];r=j>2];x[c+48>>2]=1080;Kd:{if(!f){x[c+52>>2]=0;x[c+56>>2]=0;break Kd}b=Ga(f);x[c+52>>2]=b;a=Da();b=b+1|0;a=sa[x[x[a>>2]+12>>2]](a,b,8064,57)|0;x[c+56>>2]=a;Fa(a,f,b);}a=gd(d,c+48|0,c- -64|0,r);x[c+48>>2]=1080;d=x[c+56>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,8064,201);}break Eb}n=x[c+68>>2];if((n|0)>0){p=n+1|0;f=0;d=n;b=d;while(1){i=b;b=b-1|0;l=b<<2;a=x[l+x[c+76>>2]>>2];if(a){sa[x[x[a>>2]+4>>2]](a);d=x[c+68>>2];}k=d;d=d-1|0;x[c+68>>2]=d;Ld:{if(b>>>0>=d>>>0){break Ld}a=b;if(k+(f-n|0)&1){q=x[c+76>>2];a=q+l|0;l=x[a>>2];o=a;a=i<<2;x[o>>2]=x[a+q>>2];x[a+x[c+76>>2]>>2]=l;a=i;}if((k|0)==(p-f|0)){break Ld}while(1){o=x[c+76>>2];q=a<<2;l=o+q|0;k=x[l>>2];C=l;l=q+4|0;x[C>>2]=x[l+o>>2];x[l+x[c+76>>2]>>2]=k;q=x[c+76>>2];k=q+l|0;l=x[k>>2];o=k;a=a+2|0;k=a<<2;x[o>>2]=x[k+q>>2];x[k+x[c+76>>2]>>2]=l;if((a|0)!=(d|0)){continue}break}}f=f+1|0;if((i|0)>1){continue}break}}x[c+52>>2]=34;x[c+48>>2]=1080;a=Da();d=sa[x[x[a>>2]+12>>2]](a,35,8064,57)|0;x[c+56>>2]=d;a=y[12144]|y[12145]<<8|(y[12146]<<16|y[12147]<<24);v[d+31|0]=a;v[d+32|0]=a>>>8;v[d+33|0]=a>>>16;v[d+34|0]=a>>>24;b=y[12141]|y[12142]<<8|(y[12143]<<16|y[12144]<<24);a=y[12137]|y[12138]<<8|(y[12139]<<16|y[12140]<<24);v[d+24|0]=a;v[d+25|0]=a>>>8;v[d+26|0]=a>>>16;v[d+27|0]=a>>>24;v[d+28|0]=b;v[d+29|0]=b>>>8;v[d+30|0]=b>>>16;v[d+31|0]=b>>>24;b=y[12133]|y[12134]<<8|(y[12135]<<16|y[12136]<<24);a=y[12129]|y[12130]<<8|(y[12131]<<16|y[12132]<<24);v[d+16|0]=a;v[d+17|0]=a>>>8;v[d+18|0]=a>>>16;v[d+19|0]=a>>>24;v[d+20|0]=b;v[d+21|0]=b>>>8;v[d+22|0]=b>>>16;v[d+23|0]=b>>>24;b=y[12125]|y[12126]<<8|(y[12127]<<16|y[12128]<<24);a=y[12121]|y[12122]<<8|(y[12123]<<16|y[12124]<<24);v[d+8|0]=a;v[d+9|0]=a>>>8;v[d+10|0]=a>>>16;v[d+11|0]=a>>>24;v[d+12|0]=b;v[d+13|0]=b>>>8;v[d+14|0]=b>>>16;v[d+15|0]=b>>>24;b=y[12117]|y[12118]<<8|(y[12119]<<16|y[12120]<<24);a=y[12113]|y[12114]<<8|(y[12115]<<16|y[12116]<<24);v[d|0]=a;v[d+1|0]=a>>>8;v[d+2|0]=a>>>16;v[d+3|0]=a>>>24;v[d+4|0]=b;v[d+5|0]=b>>>8;v[d+6|0]=b>>>16;v[d+7|0]=b>>>24;d=x[s+28>>2];x[c+32>>2]=1080;Md:{if(!d){x[c+36>>2]=0;x[c+40>>2]=0;$a(m,0,c+48|0,c+32|0);x[c+32>>2]=1080;break Md}b=Ga(d);x[c+36>>2]=b;a=Da();b=b+1|0;a=sa[x[x[a>>2]+12>>2]](a,b,8064,57)|0;x[c+40>>2]=a;Fa(a,d,b);b=x[c+40>>2];$a(m,0,c+48|0,c+32|0);x[c+32>>2]=1080;if(!b){break Md}a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}x[c+48>>2]=1080;b=x[c+56>>2];if(b){a=Da();sa[x[x[a>>2]+20>>2]](a,b,8064,201);}a=0;}x[c+68>>2]=0;x[c+64>>2]=12676;d=x[c+76>>2];if(d){b=Da();sa[x[x[b>>2]+20>>2]](b,d,7693,206);}qa=c+80|0;if(a){x[x[h+96>>2]+(g<<2)>>2]=a;g=g+1|0;}a=x[L>>2];if(a){continue}break}}Ja(Ze(u));}qa=e+32|0;we(m);qa=Z+48|0;return h|0}function mv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,s=E(0),t=E(0),u=0,w=0,z=0,C=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=E(0),Z=E(0),_=0,$=E(0),aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;_=qa-48|0;qa=_;c=Pa(40);e=y[b+11|0];k=e<<24>>24<0;e=Mh(c,k?x[b>>2]:b,k?x[b+4>>2]:e);b=Pa(12);x[b>>2]=14308;x[b+4>>2]=e;x[b>>2]=14156;x[b+8>>2]=e;x[b>>2]=20100;I=_+4|0;v[I+40|0]=0;x[I+36>>2]=1065353216;x[I+4>>2]=b;x[I+28>>2]=0;x[I+32>>2]=0;x[I+24>>2]=1080;x[I+20>>2]=0;x[I+12>>2]=0;x[I+16>>2]=0;x[I+8>>2]=17436;x[I>>2]=17316;x[I+36>>2]=1065353216;b=x[13621];z=qa-16|0;qa=z;d=Ma(12,3994,118);x[d+8>>2]=a+b;x[d+4>>2]=b;x[d>>2]=17372;x[I+12>>2]=0;k=Ae(Ma(232,3994,124));a=x[d+4>>2];x[d+4>>2]=a+1;b=v[a|0];c=b&127;a:{if((b|0)>=0){break a}x[d+4>>2]=a+2;b=v[a+1|0];c=b<<7&16256|c;if((b|0)>=0){break a}x[d+4>>2]=a+3;b=v[a+2|0];c=b<<14&2080768|c;if((b|0)>=0){break a}x[d+4>>2]=a+4;b=v[a+3|0];c=b<<21&266338304|c;if((b|0)>=0){break a}x[d+4>>2]=a+5;c=y[a+4|0]<<28|c;}if(c){a=Da();f=sa[x[x[a>>2]+8>>2]](a,c,3994,373)|0;a=c-1|0;b=Fa(f,x[d+4>>2],a);x[d+4>>2]=a+x[d+4>>2];v[a+b|0]=0;}a=x[k+184>>2];if((a|0)!=(f|0)){if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,102);}if(f){a=Ga(f);}else {a=0;}x[k+184>>2]=f;x[k+180>>2]=a;}a=x[d+4>>2];x[d+4>>2]=a+1;b=v[a|0];c=b&127;b:{if((b|0)>=0){break b}x[d+4>>2]=a+2;b=v[a+1|0];c=b<<7&16256|c;if((b|0)>=0){break b}x[d+4>>2]=a+3;b=v[a+2|0];c=b<<14&2080768|c;if((b|0)>=0){break b}x[d+4>>2]=a+4;b=v[a+3|0];c=b<<21&266338304|c;if((b|0)>=0){break b}x[d+4>>2]=a+5;c=y[a+4|0]<<28|c;}c:{if(!c){f=0;break c}a=Da();f=sa[x[x[a>>2]+8>>2]](a,c,3994,373)|0;a=c-1|0;b=Fa(f,x[d+4>>2],a);x[d+4>>2]=a+x[d+4>>2];v[a+b|0]=0;}a=x[k+172>>2];if((a|0)!=(f|0)){if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,102);}if(f){a=Ga(f);}else {a=0;}x[k+172>>2]=f;x[k+168>>2]=a;}x[z+8>>2]=6;x[z+4>>2]=1080;a=Da();a=sa[x[x[a>>2]+12>>2]](a,7,8064,57)|0;x[z+12>>2]=a;b=y[11981]|y[11982]<<8|(y[11983]<<16|y[11984]<<24);v[a+3|0]=b;v[a+4|0]=b>>>8;v[a+5|0]=b>>>16;v[a+6|0]=b>>>24;b=y[11978]|y[11979]<<8|(y[11980]<<16|y[11981]<<24);v[a|0]=b;v[a+1|0]=b>>>8;v[a+2|0]=b>>>16;v[a+3|0]=b>>>24;b=x[k+172>>2];f=(b|0)==(a|0);if(!(f|x[k+168>>2]!=6|!b)){f=!Oa(a,b);}x[z+4>>2]=1080;b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);d:{if(f){sa[x[x[d>>2]+4>>2]](d);sa[x[x[k>>2]+4>>2]](k);Ac(I,12034,12639);k=0;break d}a=x[d+4>>2];x[d+4>>2]=a+1;b=y[a|0];x[d+4>>2]=a+2;e=y[a+1|0];x[d+4>>2]=a+3;c=y[a+2|0];x[d+4>>2]=a+4;x[k+148>>2]=y[a+3|0]|(c|(e<<8|b<<16))<<8;x[d+4>>2]=a+5;b=y[a+4|0];x[d+4>>2]=a+6;e=y[a+5|0];x[d+4>>2]=a+7;c=y[a+6|0];x[d+4>>2]=a+8;x[k+152>>2]=y[a+7|0]|(c|(e<<8|b<<16))<<8;x[d+4>>2]=a+9;b=y[a+8|0];x[d+4>>2]=a+10;e=y[a+9|0];x[d+4>>2]=a+11;c=y[a+10|0];x[d+4>>2]=a+12;x[k+156>>2]=y[a+11|0]|(c|(e<<8|b<<16))<<8;x[d+4>>2]=a+13;b=y[a+12|0];x[d+4>>2]=a+14;e=y[a+13|0];x[d+4>>2]=a+15;c=y[a+14|0];x[d+4>>2]=a+16;x[k+160>>2]=y[a+15|0]|(c|(e<<8|b<<16))<<8;x[d+4>>2]=a+17;o=y[a+16|0];e:{if(!o){break e}x[d+4>>2]=a+18;b=y[a+17|0];x[d+4>>2]=a+19;e=y[a+18|0];x[d+4>>2]=a+20;c=y[a+19|0];x[d+4>>2]=a+21;x[k+204>>2]=y[a+20|0]|(c|(e<<8|b<<16))<<8;x[d+4>>2]=a+22;b=v[a+21|0];f=b&127;f:{if((b|0)>=0){break f}x[d+4>>2]=a+23;b=v[a+22|0];f=b<<7&16256|f;if((b|0)>=0){break f}x[d+4>>2]=a+24;b=v[a+23|0];f=b<<14&2080768|f;if((b|0)>=0){break f}x[d+4>>2]=a+25;b=v[a+24|0];f=b<<21&266338304|f;if((b|0)>=0){break f}x[d+4>>2]=a+26;f=y[a+25|0]<<28|f;}g:{if(!f){c=0;break g}a=Da();c=sa[x[x[a>>2]+8>>2]](a,f,3994,373)|0;a=f-1|0;b=Fa(c,x[d+4>>2],a);x[d+4>>2]=a+x[d+4>>2];v[a+b|0]=0;}a=x[k+216>>2];if((a|0)!=(c|0)){if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,102);}if(c){a=Ga(c);}else {a=0;}x[k+216>>2]=c;x[k+212>>2]=a;}a=x[d+4>>2];x[d+4>>2]=a+1;b=v[a|0];c=b&127;h:{if((b|0)>=0){break h}x[d+4>>2]=a+2;b=v[a+1|0];c=b<<7&16256|c;if((b|0)>=0){break h}x[d+4>>2]=a+3;b=v[a+2|0];c=b<<14&2080768|c;if((b|0)>=0){break h}x[d+4>>2]=a+4;b=v[a+3|0];c=b<<21&266338304|c;if((b|0)>=0){break h}x[d+4>>2]=a+5;c=y[a+4|0]<<28|c;}i:{if(!c){f=0;break i}a=Da();f=sa[x[x[a>>2]+8>>2]](a,c,3994,373)|0;a=c-1|0;b=Fa(f,x[d+4>>2],a);x[d+4>>2]=a+x[d+4>>2];v[a+b|0]=0;}a=x[k+228>>2];if((a|0)==(f|0)){break e}if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,102);}if(f){a=Ga(f);}else {a=0;}x[k+228>>2]=f;x[k+224>>2]=a;}a=x[d+4>>2];c=a+1|0;x[d+4>>2]=c;b=v[a|0];j=b&127;j:{if((b|0)>=0){break j}c=a+2|0;x[d+4>>2]=c;b=v[a+1|0];j=b<<7&16256|j;if((b|0)>=0){break j}c=a+3|0;x[d+4>>2]=c;b=v[a+2|0];j=b<<14&2080768|j;if((b|0)>=0){break j}c=a+4|0;x[d+4>>2]=c;b=v[a+3|0];j=b<<21&266338304|j;if((b|0)>=0){break j}c=a+5|0;x[d+4>>2]=c;j=y[a+4|0]<<28|j;}if((j|0)>0){while(1){a=x[d+4>>2];x[d+4>>2]=a+1;b=v[a|0];c=b&127;k:{if((b|0)>=0){break k}x[d+4>>2]=a+2;b=v[a+1|0];c=b<<7&16256|c;if((b|0)>=0){break k}x[d+4>>2]=a+3;b=v[a+2|0];c=b<<14&2080768|c;if((b|0)>=0){break k}x[d+4>>2]=a+4;b=v[a+3|0];c=b<<21&266338304|c;if((b|0)>=0){break k}x[d+4>>2]=a+5;c=y[a+4|0]<<28|c;}l:{if(!c){a=0;break l}a=Da();a=sa[x[x[a>>2]+8>>2]](a,c,3994,373)|0;b=c-1|0;e=Fa(a,x[d+4>>2],b);x[d+4>>2]=b+x[d+4>>2];v[b+e|0]=0;}c=x[k+192>>2];m:{if((c|0)==x[k+196>>2]){t=E(E(c>>>0)*E(1.75));n:{if(E(F(t))>>0<=8?8:b;x[k+196>>2]=b;e=x[k+200>>2];c=Da();b=sa[x[x[c>>2]+16>>2]](c,e,b<<2,7693,106)|0;x[k+200>>2]=b;c=x[k+192>>2];b=b+(c<<2)|0;break m}b=x[k+200>>2]+(c<<2)|0;}x[b>>2]=a;x[k+192>>2]=c+1;g=g+1|0;if((j|0)!=(g|0)){continue}break}c=x[d+4>>2];}x[d+4>>2]=c+1;a=v[c|0];n=a&127;o:{if((a|0)>=0){break o}x[d+4>>2]=c+2;a=v[c+1|0];n=a<<7&16256|n;if((a|0)>=0){break o}x[d+4>>2]=c+3;a=v[c+2|0];n=a<<14&2080768|n;if((a|0)>=0){break o}x[d+4>>2]=c+4;a=v[c+3|0];n=a<<21&266338304|n;if((a|0)>=0){break o}x[d+4>>2]=c+5;n=y[c+4|0]<<28|n;}c=x[k+20>>2];x[k+20>>2]=n;g=n;if(g>>>0>A[k+24>>2]){t=E(E(n>>>0)*E(1.75));p:{if(E(F(t))>>0<=8?8:a;x[k+24>>2]=a;b=x[k+28>>2];e=Da();fa=k,ga=sa[x[x[e>>2]+16>>2]](e,b,a<<2,7693,82)|0,x[fa+28>>2]=ga;g=x[k+20>>2];}q:{if(c>>>0>=g>>>0){break q}a=(c^-1)+g|0;b=g-c&3;if(b){f=0;while(1){x[x[k+28>>2]+(c<<2)>>2]=0;c=c+1|0;f=f+1|0;if((b|0)!=(f|0)){continue}break}}if(a>>>0<3){break q}while(1){a=c<<2;x[a+x[k+28>>2]>>2]=0;x[(a+x[k+28>>2]|0)+4>>2]=0;x[(a+x[k+28>>2]|0)+8>>2]=0;x[(a+x[k+28>>2]|0)+12>>2]=0;c=c+4|0;if((g|0)!=(c|0)){continue}break}}if((n|0)>0){g=0;while(1){a=x[d+4>>2];x[d+4>>2]=a+1;b=v[a|0];c=b&127;r:{if((b|0)>=0){break r}x[d+4>>2]=a+2;b=v[a+1|0];c=b<<7&16256|c;if((b|0)>=0){break r}x[d+4>>2]=a+3;b=v[a+2|0];c=b<<14&2080768|c;if((b|0)>=0){break r}x[d+4>>2]=a+4;b=v[a+3|0];c=b<<21&266338304|c;if((b|0)>=0){break r}x[d+4>>2]=a+5;c=y[a+4|0]<<28|c;}a=0;f=0;if(c){b=Da();f=sa[x[x[b>>2]+8>>2]](b,c,3994,373)|0;b=c-1|0;e=Fa(f,x[d+4>>2],b);x[d+4>>2]=b+x[d+4>>2];v[b+e|0]=0;}if(g){b=x[d+4>>2];x[d+4>>2]=b+1;e=v[b|0];a=e&127;s:{if((e|0)>=0){break s}x[d+4>>2]=b+2;e=v[b+1|0];a=e<<7&16256|a;if((e|0)>=0){break s}x[d+4>>2]=b+3;e=v[b+2|0];a=e<<14&2080768|a;if((e|0)>=0){break s}x[d+4>>2]=b+4;e=v[b+3|0];a=e<<21&266338304|a;if((e|0)>=0){break s}x[d+4>>2]=b+5;a=y[b+4|0]<<28|a;}a=x[x[k+28>>2]+(a<<2)>>2];}e=Ma(64,3994,162);x[z+4>>2]=1080;if(f){b=Ga(f);}else {b=0;}x[z+12>>2]=f;x[z+8>>2]=b;e=Af(e,g,z+4|0,a);x[z+4>>2]=1080;a=x[z+12>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}b=x[d+4>>2];x[d+4>>2]=b+1;a=y[b|0];x[d+4>>2]=b+2;c=y[b+1|0];x[d+4>>2]=b+3;i=y[b+2|0];x[d+4>>2]=b+4;x[e+36>>2]=y[b+3|0]|(i|(c<<8|a<<16))<<8;x[d+4>>2]=b+5;a=y[b+4|0];x[d+4>>2]=b+6;c=y[b+5|0];x[d+4>>2]=b+7;i=y[b+6|0];x[d+4>>2]=b+8;t=B[I+36>>2];B[e+28>>2]=t*(l(2,y[b+7|0]|(i|(c<<8|a<<16))<<8),r());x[d+4>>2]=b+9;a=y[b+8|0];x[d+4>>2]=b+10;c=y[b+9|0];x[d+4>>2]=b+11;i=y[b+10|0];x[d+4>>2]=b+12;B[e+32>>2]=t*(l(2,y[b+11|0]|(i|(c<<8|a<<16))<<8),r());x[d+4>>2]=b+13;a=y[b+12|0];x[d+4>>2]=b+14;c=y[b+13|0];x[d+4>>2]=b+15;i=y[b+14|0];x[d+4>>2]=b+16;x[e+40>>2]=y[b+15|0]|(i|(c<<8|a<<16))<<8;x[d+4>>2]=b+17;a=y[b+16|0];x[d+4>>2]=b+18;c=y[b+17|0];x[d+4>>2]=b+19;i=y[b+18|0];x[d+4>>2]=b+20;x[e+44>>2]=y[b+19|0]|(i|(c<<8|a<<16))<<8;x[d+4>>2]=b+21;a=y[b+20|0];x[d+4>>2]=b+22;c=y[b+21|0];x[d+4>>2]=b+23;i=y[b+22|0];x[d+4>>2]=b+24;x[e+48>>2]=y[b+23|0]|(i|(c<<8|a<<16))<<8;x[d+4>>2]=b+25;a=y[b+24|0];x[d+4>>2]=b+26;c=y[b+25|0];x[d+4>>2]=b+27;i=y[b+26|0];x[d+4>>2]=b+28;x[e+52>>2]=y[b+27|0]|(i|(c<<8|a<<16))<<8;x[d+4>>2]=b+29;a=y[b+28|0];x[d+4>>2]=b+30;c=y[b+29|0];x[d+4>>2]=b+31;i=y[b+30|0];x[d+4>>2]=b+32;B[e+24>>2]=t*(l(2,y[b+31|0]|(i|(c<<8|a<<16))<<8),r());a=b+33|0;x[d+4>>2]=a;c=v[b+32|0];j=c&127;t:{if((c|0)>=0){break t}a=b+34|0;x[d+4>>2]=a;c=v[b+33|0];j=c<<7&16256|j;if((c|0)>=0){break t}a=b+35|0;x[d+4>>2]=a;c=v[b+34|0];j=c<<14&2080768|j;if((c|0)>=0){break t}a=b+36|0;x[d+4>>2]=a;c=v[b+35|0];j=c<<21&266338304|j;if((c|0)>=0){break t}a=b+37|0;x[d+4>>2]=a;j=y[b+36|0]<<28|j;}x[e+56>>2]=j;x[d+4>>2]=a+1;v[e+60|0]=y[a|0]!=0;if(o){x[d+4>>2]=a+5;}x[x[k+28>>2]+(g<<2)>>2]=e;g=g+1|0;if((n|0)!=(g|0)){continue}break}}a=x[d+4>>2];x[d+4>>2]=a+1;e=v[a|0];b=e&127;u:{if((e|0)>=0){break u}x[d+4>>2]=a+2;e=v[a+1|0];b=e<<7&16256|b;if((e|0)>=0){break u}x[d+4>>2]=a+3;e=v[a+2|0];b=e<<14&2080768|b;if((e|0)>=0){break u}x[d+4>>2]=a+4;e=v[a+3|0];b=e<<21&266338304|b;if((e|0)>=0){break u}x[d+4>>2]=a+5;b=y[a+4|0]<<28|b;}c=x[k+36>>2];x[k+36>>2]=b;g=b;if(b>>>0>A[k+40>>2]){t=E(E(b>>>0)*E(1.75));v:{if(E(F(t))>>0<=8?8:a;x[k+40>>2]=a;e=x[k+44>>2];g=Da();fa=k,ga=sa[x[x[g>>2]+16>>2]](g,e,a<<2,7693,82)|0,x[fa+44>>2]=ga;g=x[k+36>>2];}w:{if(c>>>0>=g>>>0){break w}a=(c^-1)+g|0;e=g-c&3;if(e){f=0;while(1){x[x[k+44>>2]+(c<<2)>>2]=0;c=c+1|0;f=f+1|0;if((e|0)!=(f|0)){continue}break}}if(a>>>0<3){break w}while(1){a=c<<2;x[a+x[k+44>>2]>>2]=0;x[(a+x[k+44>>2]|0)+4>>2]=0;x[(a+x[k+44>>2]|0)+8>>2]=0;x[(a+x[k+44>>2]|0)+12>>2]=0;c=c+4|0;if((g|0)!=(c|0)){continue}break}}if((b|0)>0){a=0;while(1){e=x[d+4>>2];c=e+1|0;x[d+4>>2]=c;g=v[e|0];f=g&127;x:{if((g|0)>=0){break x}c=e+2|0;x[d+4>>2]=c;g=v[e+1|0];f=g<<7&16256|f;if((g|0)>=0){break x}c=e+3|0;x[d+4>>2]=c;g=v[e+2|0];f=g<<14&2080768|f;if((g|0)>=0){break x}c=e+4|0;x[d+4>>2]=c;g=v[e+3|0];f=g<<21&266338304|f;if((g|0)>=0){break x}c=e+5|0;x[d+4>>2]=c;f=y[e+4|0]<<28|f;}y:{if(!f){g=0;break y}e=Da();g=sa[x[x[e>>2]+8>>2]](e,f,3994,373)|0;e=f-1|0;c=Fa(g,x[d+4>>2],e);x[d+4>>2]=e+x[d+4>>2];v[c+e|0]=0;c=x[d+4>>2];}x[d+4>>2]=c+1;e=v[c|0];f=e&127;z:{if((e|0)>=0){break z}x[d+4>>2]=c+2;e=v[c+1|0];f=e<<7&16256|f;if((e|0)>=0){break z}x[d+4>>2]=c+3;e=v[c+2|0];f=e<<14&2080768|f;if((e|0)>=0){break z}x[d+4>>2]=c+4;e=v[c+3|0];f=e<<21&266338304|f;if((e|0)>=0){break z}x[d+4>>2]=c+5;f=y[c+4|0]<<28|f;}c=x[x[k+28>>2]+(f<<2)>>2];n=Ma(84,3994,183);x[z+4>>2]=1080;if(g){e=Ga(g);}else {e=0;}x[z+12>>2]=g;x[z+8>>2]=e;n=pe(n,a,z+4|0,c);x[z+4>>2]=1080;e=x[z+12>>2];if(e){c=Da();sa[x[x[c>>2]+20>>2]](c,e,8064,201);}e=x[d+4>>2];x[d+4>>2]=e+1;B[n+28>>2]=E(y[e|0])/E(255);x[d+4>>2]=e+2;B[n+32>>2]=E(y[e+1|0])/E(255);x[d+4>>2]=e+3;B[n+36>>2]=E(y[e+2|0])/E(255);x[d+4>>2]=e+4;B[n+40>>2]=E(y[e+3|0])/E(255);x[d+4>>2]=e+5;c=y[e+4|0];x[d+4>>2]=e+6;i=y[e+5|0];x[d+4>>2]=e+7;f=y[e+6|0];g=e+8|0;x[d+4>>2]=g;if(!((c&i)==255&(f&y[e+7|0])==255)){x[n+60>>2]=1065353216;B[n+56>>2]=E(f>>>0)/E(255);B[n+52>>2]=E(i>>>0)/E(255);t=E(E(c>>>0)/E(255));B[n+48>>2]=t;B[n+48>>2]=tE(1)?E(1):t;t=B[n+52>>2];B[n+52>>2]=tE(1)?E(1):t;t=B[n+56>>2];B[n+56>>2]=tE(1)?E(1):t;t=B[n+60>>2];B[n+60>>2]=tE(1)?E(1):t;v[n+64|0]=1;g=x[d+4>>2];}x[d+4>>2]=g+1;e=v[g|0];c=e&127;A:{if((e|0)>=0){break A}x[d+4>>2]=g+2;e=v[g+1|0];c=e<<7&16256|c;if((e|0)>=0){break A}x[d+4>>2]=g+3;e=v[g+2|0];c=e<<14&2080768|c;if((e|0)>=0){break A}x[d+4>>2]=g+4;e=v[g+3|0];c=e<<21&266338304|c;if((e|0)>=0){break A}x[d+4>>2]=g+5;c=y[g+4|0]<<28|c;}e=c?x[(x[k+200>>2]+(c<<2)|0)-4>>2]:0;c=x[n+76>>2];B:{if((e|0)==(c|0)){break B}if(c){g=Da();sa[x[x[g>>2]+20>>2]](g,c,8064,138);}if(!e){x[n+72>>2]=0;x[n+76>>2]=0;break B}c=Ga(e);x[n+72>>2]=c;g=Da();c=sa[x[x[g>>2]+12>>2]](g,c+1|0,8064,145)|0;x[n+76>>2]=c;Fa(c,e,x[n+72>>2]+1|0);}e=x[d+4>>2];x[d+4>>2]=e+1;c=v[e|0];g=c&127;C:{if((c|0)>=0){break C}x[d+4>>2]=e+2;c=v[e+1|0];g=c<<7&16256|g;if((c|0)>=0){break C}x[d+4>>2]=e+3;c=v[e+2|0];g=c<<14&2080768|g;if((c|0)>=0){break C}x[d+4>>2]=e+4;c=v[e+3|0];g=c<<21&266338304|g;if((c|0)>=0){break C}x[d+4>>2]=e+5;g=y[e+4|0]<<28|g;}x[n+80>>2]=g;x[x[k+44>>2]+(a<<2)>>2]=n;a=a+1|0;if((b|0)!=(a|0)){continue}break}}a=x[d+4>>2];x[d+4>>2]=a+1;e=v[a|0];b=e&127;D:{if((e|0)>=0){break D}x[d+4>>2]=a+2;e=v[a+1|0];b=e<<7&16256|b;if((e|0)>=0){break D}x[d+4>>2]=a+3;e=v[a+2|0];b=e<<14&2080768|b;if((e|0)>=0){break D}x[d+4>>2]=a+4;e=v[a+3|0];b=e<<21&266338304|b;if((e|0)>=0){break D}x[d+4>>2]=a+5;b=y[a+4|0]<<28|b;}c=x[k+104>>2];x[k+104>>2]=b;g=b;if(b>>>0>A[k+108>>2]){t=E(E(b>>>0)*E(1.75));E:{if(E(F(t))>>0<=8?8:a;x[k+108>>2]=a;e=x[k+112>>2];g=Da();fa=k,ga=sa[x[x[g>>2]+16>>2]](g,e,a<<2,7693,82)|0,x[fa+112>>2]=ga;g=x[k+104>>2];}F:{if(c>>>0>=g>>>0){break F}a=(c^-1)+g|0;e=g-c&3;if(e){f=0;while(1){x[x[k+112>>2]+(c<<2)>>2]=0;c=c+1|0;f=f+1|0;if((e|0)!=(f|0)){continue}break}}if(a>>>0<3){break F}while(1){a=c<<2;x[a+x[k+112>>2]>>2]=0;x[(a+x[k+112>>2]|0)+4>>2]=0;x[(a+x[k+112>>2]|0)+8>>2]=0;x[(a+x[k+112>>2]|0)+12>>2]=0;c=c+4|0;if((g|0)!=(c|0)){continue}break}}if((b|0)>0){i=0;while(1){a=x[d+4>>2];x[d+4>>2]=a+1;e=v[a|0];c=e&127;G:{if((e|0)>=0){break G}x[d+4>>2]=a+2;e=v[a+1|0];c=e<<7&16256|c;if((e|0)>=0){break G}x[d+4>>2]=a+3;e=v[a+2|0];c=e<<14&2080768|c;if((e|0)>=0){break G}x[d+4>>2]=a+4;e=v[a+3|0];c=e<<21&266338304|c;if((e|0)>=0){break G}x[d+4>>2]=a+5;c=y[a+4|0]<<28|c;}H:{if(!c){c=Ma(60,3994,204);x[z+4>>2]=1080;g=0;a=0;break H}a=Da();g=sa[x[x[a>>2]+8>>2]](a,c,3994,373)|0;a=c-1|0;e=Fa(g,x[d+4>>2],a);x[d+4>>2]=a+x[d+4>>2];v[a+e|0]=0;c=Ma(60,3994,204);x[z+4>>2]=1080;a=Ga(e);}x[z+12>>2]=g;x[z+8>>2]=a;e=cf(c,z+4|0);x[z+4>>2]=1080;a=x[z+12>>2];if(a){c=Da();sa[x[x[c>>2]+20>>2]](c,a,8064,201);}a=x[d+4>>2];x[d+4>>2]=a+1;c=v[a|0];g=c&127;I:{if((c|0)>=0){break I}x[d+4>>2]=a+2;c=v[a+1|0];g=c<<7&16256|g;if((c|0)>=0){break I}x[d+4>>2]=a+3;c=v[a+2|0];g=c<<14&2080768|g;if((c|0)>=0){break I}x[d+4>>2]=a+4;c=v[a+3|0];g=c<<21&266338304|g;if((c|0)>=0){break I}x[d+4>>2]=a+5;g=y[a+4|0]<<28|g;}x[e+16>>2]=g;a=x[d+4>>2];x[d+4>>2]=a+1;v[e+20|0]=y[a|0]!=0;a=x[d+4>>2];x[d+4>>2]=a+1;c=v[a|0];n=c&127;J:{if((c|0)>=0){break J}x[d+4>>2]=a+2;c=v[a+1|0];n=c<<7&16256|n;if((c|0)>=0){break J}x[d+4>>2]=a+3;c=v[a+2|0];n=c<<14&2080768|n;if((c|0)>=0){break J}x[d+4>>2]=a+4;c=v[a+3|0];n=c<<21&266338304|n;if((c|0)>=0){break J}x[d+4>>2]=a+5;n=y[a+4|0]<<28|n;}f=x[e+28>>2];x[e+28>>2]=n;a=n;if(a>>>0>A[e+32>>2]){t=E(E(n>>>0)*E(1.75));K:{if(E(F(t))>>0<=8?8:a;x[e+32>>2]=a;c=x[e+36>>2];g=Da();fa=e,ga=sa[x[x[g>>2]+16>>2]](g,c,a<<2,7693,82)|0,x[fa+36>>2]=ga;a=x[e+28>>2];}L:{if(a>>>0<=f>>>0){break L}c=(f^-1)+a|0;g=0;j=a-f&3;if(j){while(1){x[x[e+36>>2]+(f<<2)>>2]=0;f=f+1|0;g=g+1|0;if((j|0)!=(g|0)){continue}break}}if(c>>>0<3){break L}while(1){c=f<<2;x[c+x[e+36>>2]>>2]=0;x[(c+x[e+36>>2]|0)+4>>2]=0;x[(c+x[e+36>>2]|0)+8>>2]=0;x[(c+x[e+36>>2]|0)+12>>2]=0;f=f+4|0;if((f|0)!=(a|0)){continue}break}}if((n|0)>0){a=0;while(1){c=x[d+4>>2];x[d+4>>2]=c+1;f=v[c|0];g=f&127;M:{if((f|0)>=0){break M}x[d+4>>2]=c+2;f=v[c+1|0];g=f<<7&16256|g;if((f|0)>=0){break M}x[d+4>>2]=c+3;f=v[c+2|0];g=f<<14&2080768|g;if((f|0)>=0){break M}x[d+4>>2]=c+4;f=v[c+3|0];g=f<<21&266338304|g;if((f|0)>=0){break M}x[d+4>>2]=c+5;g=y[c+4|0]<<28|g;}x[x[e+36>>2]+(a<<2)>>2]=x[x[k+28>>2]+(g<<2)>>2];a=a+1|0;if((n|0)!=(a|0)){continue}break}}c=x[d+4>>2];f=c+1|0;x[d+4>>2]=f;g=v[c|0];a=g&127;N:{if((g|0)>=0){break N}f=c+2|0;x[d+4>>2]=f;g=v[c+1|0];a=g<<7&16256|a;if((g|0)>=0){break N}f=c+3|0;x[d+4>>2]=f;g=v[c+2|0];a=g<<14&2080768|a;if((g|0)>=0){break N}f=c+4|0;x[d+4>>2]=f;g=v[c+3|0];a=g<<21&266338304|a;if((g|0)>=0){break N}f=c+5|0;x[d+4>>2]=f;a=y[c+4|0]<<28|a;}x[e+40>>2]=x[x[k+28>>2]+(a<<2)>>2];x[d+4>>2]=f+1;a=y[f|0];x[d+4>>2]=f+2;c=y[f+1|0];x[d+4>>2]=f+3;g=y[f+2|0];x[d+4>>2]=f+4;x[e+52>>2]=y[f+3|0]|(g|(c<<8|a<<16))<<8;x[d+4>>2]=f+5;a=y[f+4|0];x[d+4>>2]=f+6;c=y[f+5|0];x[d+4>>2]=f+7;g=y[f+6|0];x[d+4>>2]=f+8;B[e+56>>2]=B[I+36>>2]*(l(2,y[f+7|0]|(g|(c<<8|a<<16))<<8),r());x[d+4>>2]=f+9;x[e+44>>2]=v[f+8|0];x[d+4>>2]=f+10;v[e+48|0]=y[f+9|0]!=0;x[d+4>>2]=f+11;v[e+49|0]=y[f+10|0]!=0;x[d+4>>2]=f+12;v[e+50|0]=y[f+11|0]!=0;x[x[k+112>>2]+(i<<2)>>2]=e;i=i+1|0;if((i|0)!=(b|0)){continue}break}}a=x[d+4>>2];x[d+4>>2]=a+1;e=v[a|0];b=e&127;O:{if((e|0)>=0){break O}x[d+4>>2]=a+2;e=v[a+1|0];b=e<<7&16256|b;if((e|0)>=0){break O}x[d+4>>2]=a+3;e=v[a+2|0];b=e<<14&2080768|b;if((e|0)>=0){break O}x[d+4>>2]=a+4;e=v[a+3|0];b=e<<21&266338304|b;if((e|0)>=0){break O}x[d+4>>2]=a+5;b=y[a+4|0]<<28|b;}c=x[k+120>>2];x[k+120>>2]=b;g=b;if(b>>>0>A[k+124>>2]){t=E(E(b>>>0)*E(1.75));P:{if(E(F(t))>>0<=8?8:a;x[k+124>>2]=a;e=x[k+128>>2];g=Da();fa=k,ga=sa[x[x[g>>2]+16>>2]](g,e,a<<2,7693,82)|0,x[fa+128>>2]=ga;g=x[k+120>>2];}Q:{if(c>>>0>=g>>>0){break Q}a=(c^-1)+g|0;e=g-c&3;if(e){f=0;while(1){x[x[k+128>>2]+(c<<2)>>2]=0;c=c+1|0;f=f+1|0;if((e|0)!=(f|0)){continue}break}}if(a>>>0<3){break Q}while(1){a=c<<2;x[a+x[k+128>>2]>>2]=0;x[(a+x[k+128>>2]|0)+4>>2]=0;x[(a+x[k+128>>2]|0)+8>>2]=0;x[(a+x[k+128>>2]|0)+12>>2]=0;c=c+4|0;if((g|0)!=(c|0)){continue}break}}if((b|0)>0){i=0;while(1){a=x[d+4>>2];x[d+4>>2]=a+1;e=v[a|0];c=e&127;R:{if((e|0)>=0){break R}x[d+4>>2]=a+2;e=v[a+1|0];c=e<<7&16256|c;if((e|0)>=0){break R}x[d+4>>2]=a+3;e=v[a+2|0];c=e<<14&2080768|c;if((e|0)>=0){break R}x[d+4>>2]=a+4;e=v[a+3|0];c=e<<21&266338304|c;if((e|0)>=0){break R}x[d+4>>2]=a+5;c=y[a+4|0]<<28|c;}S:{if(!c){c=Ma(88,3994,226);x[z+4>>2]=1080;g=0;a=0;break S}a=Da();g=sa[x[x[a>>2]+8>>2]](a,c,3994,373)|0;a=c-1|0;e=Fa(g,x[d+4>>2],a);x[d+4>>2]=a+x[d+4>>2];v[a+e|0]=0;c=Ma(88,3994,226);x[z+4>>2]=1080;a=Ga(e);}x[z+12>>2]=g;x[z+8>>2]=a;e=oe(c,z+4|0);x[z+4>>2]=1080;a=x[z+12>>2];if(a){c=Da();sa[x[x[c>>2]+20>>2]](c,a,8064,201);}a=x[d+4>>2];x[d+4>>2]=a+1;c=v[a|0];g=c&127;T:{if((c|0)>=0){break T}x[d+4>>2]=a+2;c=v[a+1|0];g=c<<7&16256|g;if((c|0)>=0){break T}x[d+4>>2]=a+3;c=v[a+2|0];g=c<<14&2080768|g;if((c|0)>=0){break T}x[d+4>>2]=a+4;c=v[a+3|0];g=c<<21&266338304|g;if((c|0)>=0){break T}x[d+4>>2]=a+5;g=y[a+4|0]<<28|g;}x[e+16>>2]=g;a=x[d+4>>2];x[d+4>>2]=a+1;v[e+20|0]=y[a|0]!=0;a=x[d+4>>2];x[d+4>>2]=a+1;c=v[a|0];n=c&127;U:{if((c|0)>=0){break U}x[d+4>>2]=a+2;c=v[a+1|0];n=c<<7&16256|n;if((c|0)>=0){break U}x[d+4>>2]=a+3;c=v[a+2|0];n=c<<14&2080768|n;if((c|0)>=0){break U}x[d+4>>2]=a+4;c=v[a+3|0];n=c<<21&266338304|n;if((c|0)>=0){break U}x[d+4>>2]=a+5;n=y[a+4|0]<<28|n;}c=x[e+28>>2];x[e+28>>2]=n;a=n;if(a>>>0>A[e+32>>2]){t=E(E(n>>>0)*E(1.75));V:{if(E(F(t))>>0<=8?8:a;x[e+32>>2]=a;g=x[e+36>>2];f=Da();fa=e,ga=sa[x[x[f>>2]+16>>2]](f,g,a<<2,7693,82)|0,x[fa+36>>2]=ga;a=x[e+28>>2];}W:{if(a>>>0<=c>>>0){break W}f=(c^-1)+a|0;g=0;j=a-c&3;if(j){while(1){x[x[e+36>>2]+(c<<2)>>2]=0;c=c+1|0;g=g+1|0;if((j|0)!=(g|0)){continue}break}}if(f>>>0<3){break W}while(1){g=c<<2;x[g+x[e+36>>2]>>2]=0;x[(g+x[e+36>>2]|0)+4>>2]=0;x[(g+x[e+36>>2]|0)+8>>2]=0;x[(g+x[e+36>>2]|0)+12>>2]=0;c=c+4|0;if((c|0)!=(a|0)){continue}break}}if((n|0)>0){a=0;while(1){c=x[d+4>>2];x[d+4>>2]=c+1;f=v[c|0];g=f&127;X:{if((f|0)>=0){break X}x[d+4>>2]=c+2;f=v[c+1|0];g=f<<7&16256|g;if((f|0)>=0){break X}x[d+4>>2]=c+3;f=v[c+2|0];g=f<<14&2080768|g;if((f|0)>=0){break X}x[d+4>>2]=c+4;f=v[c+3|0];g=f<<21&266338304|g;if((f|0)>=0){break X}x[d+4>>2]=c+5;g=y[c+4|0]<<28|g;}x[x[e+36>>2]+(a<<2)>>2]=x[x[k+28>>2]+(g<<2)>>2];a=a+1|0;if((n|0)!=(a|0)){continue}break}}g=x[d+4>>2];c=g+1|0;x[d+4>>2]=c;n=v[g|0];a=n&127;Y:{if((n|0)>=0){break Y}c=g+2|0;x[d+4>>2]=c;n=v[g+1|0];a=n<<7&16256|a;if((n|0)>=0){break Y}c=g+3|0;x[d+4>>2]=c;n=v[g+2|0];a=n<<14&2080768|a;if((n|0)>=0){break Y}c=g+4|0;x[d+4>>2]=c;n=v[g+3|0];a=n<<21&266338304|a;if((n|0)>=0){break Y}c=g+5|0;x[d+4>>2]=c;a=y[g+4|0]<<28|a;}x[e+40>>2]=x[x[k+28>>2]+(a<<2)>>2];x[d+4>>2]=c+1;v[e+85|0]=y[c|0]!=0;x[d+4>>2]=c+2;v[e+84|0]=y[c+1|0]!=0;x[d+4>>2]=c+3;a=y[c+2|0];x[d+4>>2]=c+4;g=y[c+3|0];x[d+4>>2]=c+5;n=y[c+4|0];x[d+4>>2]=c+6;x[e+60>>2]=y[c+5|0]|(n|(g<<8|a<<16))<<8;x[d+4>>2]=c+7;a=y[c+6|0];x[d+4>>2]=c+8;g=y[c+7|0];x[d+4>>2]=c+9;n=y[c+8|0];x[d+4>>2]=c+10;t=B[I+36>>2];B[e+64>>2]=t*(l(2,y[c+9|0]|(n|(g<<8|a<<16))<<8),r());x[d+4>>2]=c+11;a=y[c+10|0];x[d+4>>2]=c+12;g=y[c+11|0];x[d+4>>2]=c+13;n=y[c+12|0];x[d+4>>2]=c+14;B[e+68>>2]=t*(l(2,y[c+13|0]|(n|(g<<8|a<<16))<<8),r());x[d+4>>2]=c+15;a=y[c+14|0];x[d+4>>2]=c+16;g=y[c+15|0];x[d+4>>2]=c+17;n=y[c+16|0];x[d+4>>2]=c+18;x[e+72>>2]=y[c+17|0]|(n|(g<<8|a<<16))<<8;x[d+4>>2]=c+19;a=y[c+18|0];x[d+4>>2]=c+20;g=y[c+19|0];x[d+4>>2]=c+21;n=y[c+20|0];x[d+4>>2]=c+22;x[e+76>>2]=y[c+21|0]|(n|(g<<8|a<<16))<<8;x[d+4>>2]=c+23;a=y[c+22|0];x[d+4>>2]=c+24;g=y[c+23|0];x[d+4>>2]=c+25;n=y[c+24|0];x[d+4>>2]=c+26;x[e+80>>2]=y[c+25|0]|(n|(g<<8|a<<16))<<8;x[d+4>>2]=c+27;a=y[c+26|0];x[d+4>>2]=c+28;g=y[c+27|0];x[d+4>>2]=c+29;n=y[c+28|0];x[d+4>>2]=c+30;x[e+44>>2]=y[c+29|0]|(n|(g<<8|a<<16))<<8;x[d+4>>2]=c+31;a=y[c+30|0];x[d+4>>2]=c+32;g=y[c+31|0];x[d+4>>2]=c+33;n=y[c+32|0];x[d+4>>2]=c+34;x[e+48>>2]=y[c+33|0]|(n|(g<<8|a<<16))<<8;x[d+4>>2]=c+35;a=y[c+34|0];x[d+4>>2]=c+36;g=y[c+35|0];x[d+4>>2]=c+37;n=y[c+36|0];x[d+4>>2]=c+38;x[e+52>>2]=y[c+37|0]|(n|(g<<8|a<<16))<<8;x[d+4>>2]=c+39;a=y[c+38|0];x[d+4>>2]=c+40;g=y[c+39|0];x[d+4>>2]=c+41;n=y[c+40|0];x[d+4>>2]=c+42;x[e+56>>2]=y[c+41|0]|(n|(g<<8|a<<16))<<8;x[x[k+128>>2]+(i<<2)>>2]=e;i=i+1|0;if((i|0)!=(b|0)){continue}break}}a=x[d+4>>2];x[d+4>>2]=a+1;e=v[a|0];b=e&127;Z:{if((e|0)>=0){break Z}x[d+4>>2]=a+2;e=v[a+1|0];b=e<<7&16256|b;if((e|0)>=0){break Z}x[d+4>>2]=a+3;e=v[a+2|0];b=e<<14&2080768|b;if((e|0)>=0){break Z}x[d+4>>2]=a+4;e=v[a+3|0];b=e<<21&266338304|b;if((e|0)>=0){break Z}x[d+4>>2]=a+5;b=y[a+4|0]<<28|b;}c=x[k+136>>2];x[k+136>>2]=b;g=b;if(b>>>0>A[k+140>>2]){t=E(E(b>>>0)*E(1.75));_:{if(E(F(t))>>0<=8?8:a;x[k+140>>2]=a;e=x[k+144>>2];g=Da();fa=k,ga=sa[x[x[g>>2]+16>>2]](g,e,a<<2,7693,82)|0,x[fa+144>>2]=ga;g=x[k+136>>2];}$:{if(c>>>0>=g>>>0){break $}a=(c^-1)+g|0;e=g-c&3;if(e){f=0;while(1){x[x[k+144>>2]+(c<<2)>>2]=0;c=c+1|0;f=f+1|0;if((e|0)!=(f|0)){continue}break}}if(a>>>0<3){break $}while(1){a=c<<2;x[a+x[k+144>>2]>>2]=0;x[(a+x[k+144>>2]|0)+4>>2]=0;x[(a+x[k+144>>2]|0)+8>>2]=0;x[(a+x[k+144>>2]|0)+12>>2]=0;c=c+4|0;if((g|0)!=(c|0)){continue}break}}if((b|0)>0){i=0;while(1){a=x[d+4>>2];x[d+4>>2]=a+1;e=v[a|0];c=e&127;aa:{if((e|0)>=0){break aa}x[d+4>>2]=a+2;e=v[a+1|0];c=e<<7&16256|c;if((e|0)>=0){break aa}x[d+4>>2]=a+3;e=v[a+2|0];c=e<<14&2080768|c;if((e|0)>=0){break aa}x[d+4>>2]=a+4;e=v[a+3|0];c=e<<21&266338304|c;if((e|0)>=0){break aa}x[d+4>>2]=a+5;c=y[a+4|0]<<28|c;}ba:{if(!c){c=Ma(76,3994,254);x[z+4>>2]=1080;g=0;a=0;break ba}a=Da();g=sa[x[x[a>>2]+8>>2]](a,c,3994,373)|0;a=c-1|0;e=Fa(g,x[d+4>>2],a);x[d+4>>2]=a+x[d+4>>2];v[a+e|0]=0;c=Ma(76,3994,254);x[z+4>>2]=1080;a=Ga(e);}x[z+12>>2]=g;x[z+8>>2]=a;e=Ue(c,z+4|0);x[z+4>>2]=1080;a=x[z+12>>2];if(a){c=Da();sa[x[x[c>>2]+20>>2]](c,a,8064,201);}a=x[d+4>>2];x[d+4>>2]=a+1;c=v[a|0];g=c&127;ca:{if((c|0)>=0){break ca}x[d+4>>2]=a+2;c=v[a+1|0];g=c<<7&16256|g;if((c|0)>=0){break ca}x[d+4>>2]=a+3;c=v[a+2|0];g=c<<14&2080768|g;if((c|0)>=0){break ca}x[d+4>>2]=a+4;c=v[a+3|0];g=c<<21&266338304|g;if((c|0)>=0){break ca}x[d+4>>2]=a+5;g=y[a+4|0]<<28|g;}x[e+16>>2]=g;a=x[d+4>>2];x[d+4>>2]=a+1;v[e+20|0]=y[a|0]!=0;a=x[d+4>>2];x[d+4>>2]=a+1;c=v[a|0];n=c&127;da:{if((c|0)>=0){break da}x[d+4>>2]=a+2;c=v[a+1|0];n=c<<7&16256|n;if((c|0)>=0){break da}x[d+4>>2]=a+3;c=v[a+2|0];n=c<<14&2080768|n;if((c|0)>=0){break da}x[d+4>>2]=a+4;c=v[a+3|0];n=c<<21&266338304|n;if((c|0)>=0){break da}x[d+4>>2]=a+5;n=y[a+4|0]<<28|n;}f=x[e+28>>2];x[e+28>>2]=n;a=n;if(a>>>0>A[e+32>>2]){t=E(E(n>>>0)*E(1.75));ea:{if(E(F(t))>>0<=8?8:a;x[e+32>>2]=a;c=x[e+36>>2];g=Da();fa=e,ga=sa[x[x[g>>2]+16>>2]](g,c,a<<2,7693,82)|0,x[fa+36>>2]=ga;a=x[e+28>>2];}fa:{if(a>>>0<=f>>>0){break fa}c=(f^-1)+a|0;g=0;j=a-f&3;if(j){while(1){x[x[e+36>>2]+(f<<2)>>2]=0;f=f+1|0;g=g+1|0;if((j|0)!=(g|0)){continue}break}}if(c>>>0<3){break fa}while(1){c=f<<2;x[c+x[e+36>>2]>>2]=0;x[(c+x[e+36>>2]|0)+4>>2]=0;x[(c+x[e+36>>2]|0)+8>>2]=0;x[(c+x[e+36>>2]|0)+12>>2]=0;f=f+4|0;if((f|0)!=(a|0)){continue}break}}if((n|0)>0){a=0;while(1){c=x[d+4>>2];x[d+4>>2]=c+1;f=v[c|0];g=f&127;ga:{if((f|0)>=0){break ga}x[d+4>>2]=c+2;f=v[c+1|0];g=f<<7&16256|g;if((f|0)>=0){break ga}x[d+4>>2]=c+3;f=v[c+2|0];g=f<<14&2080768|g;if((f|0)>=0){break ga}x[d+4>>2]=c+4;f=v[c+3|0];g=f<<21&266338304|g;if((f|0)>=0){break ga}x[d+4>>2]=c+5;g=y[c+4|0]<<28|g;}x[x[e+36>>2]+(a<<2)>>2]=x[x[k+28>>2]+(g<<2)>>2];a=a+1|0;if((n|0)!=(a|0)){continue}break}}c=x[d+4>>2];f=c+1|0;x[d+4>>2]=f;g=v[c|0];a=g&127;ha:{if((g|0)>=0){break ha}f=c+2|0;x[d+4>>2]=f;g=v[c+1|0];a=g<<7&16256|a;if((g|0)>=0){break ha}f=c+3|0;x[d+4>>2]=f;g=v[c+2|0];a=g<<14&2080768|a;if((g|0)>=0){break ha}f=c+4|0;x[d+4>>2]=f;g=v[c+3|0];a=g<<21&266338304|a;if((g|0)>=0){break ha}f=c+5|0;x[d+4>>2]=f;a=y[c+4|0]<<28|a;}x[e+40>>2]=x[x[k+44>>2]+(a<<2)>>2];g=f+1|0;x[d+4>>2]=g;a=v[f|0];n=a&127;ia:{if((a|0)>=0){break ia}g=f+2|0;x[d+4>>2]=g;a=v[f+1|0];n=a<<7&16256|n;if((a|0)>=0){break ia}g=f+3|0;x[d+4>>2]=g;a=v[f+2|0];n=a<<14&2080768|n;if((a|0)>=0){break ia}g=f+4|0;x[d+4>>2]=g;a=v[f+3|0];n=a<<21&266338304|n;if((a|0)>=0){break ia}g=f+5|0;x[d+4>>2]=g;n=y[f+4|0]<<28|n;}x[e+44>>2]=n;a=g+1|0;x[d+4>>2]=a;c=v[g|0];j=c&127;ja:{if((c|0)>=0){break ja}a=g+2|0;x[d+4>>2]=a;c=v[g+1|0];j=c<<7&16256|j;if((c|0)>=0){break ja}a=g+3|0;x[d+4>>2]=a;c=v[g+2|0];j=c<<14&2080768|j;if((c|0)>=0){break ja}a=g+4|0;x[d+4>>2]=a;c=v[g+3|0];j=c<<21&266338304|j;if((c|0)>=0){break ja}a=g+5|0;x[d+4>>2]=a;j=y[g+4|0]<<28|j;}x[e+48>>2]=j;f=a+1|0;x[d+4>>2]=f;c=v[a|0];g=c&127;ka:{if((c|0)>=0){break ka}f=a+2|0;x[d+4>>2]=f;c=v[a+1|0];g=c<<7&16256|g;if((c|0)>=0){break ka}f=a+3|0;x[d+4>>2]=f;c=v[a+2|0];g=c<<14&2080768|g;if((c|0)>=0){break ka}f=a+4|0;x[d+4>>2]=f;c=v[a+3|0];g=c<<21&266338304|g;if((c|0)>=0){break ka}f=a+5|0;x[d+4>>2]=f;g=y[a+4|0]<<28|g;}x[e+52>>2]=g;x[d+4>>2]=f+1;a=y[f|0];x[d+4>>2]=f+2;c=y[f+1|0];x[d+4>>2]=f+3;g=y[f+2|0];x[d+4>>2]=f+4;x[e+56>>2]=y[f+3|0]|(g|(c<<8|a<<16))<<8;x[d+4>>2]=f+5;a=y[f+4|0];x[d+4>>2]=f+6;c=y[f+5|0];x[d+4>>2]=f+7;g=y[f+6|0];x[d+4>>2]=f+8;a=y[f+7|0]|(g|(c<<8|a<<16))<<8;x[e+60>>2]=a;if(!n){B[e+60>>2]=B[I+36>>2]*(l(2,a),r());}x[d+4>>2]=f+9;a=y[f+8|0];x[d+4>>2]=f+10;c=y[f+9|0];x[d+4>>2]=f+11;g=y[f+10|0];x[d+4>>2]=f+12;a=y[f+11|0]|(g|(c<<8|a<<16))<<8;x[e+64>>2]=a;if(j>>>0<=1){B[e+64>>2]=B[I+36>>2]*(l(2,a),r());}x[d+4>>2]=f+13;a=y[f+12|0];x[d+4>>2]=f+14;c=y[f+13|0];x[d+4>>2]=f+15;g=y[f+14|0];x[d+4>>2]=f+16;x[e+68>>2]=y[f+15|0]|(g|(c<<8|a<<16))<<8;x[d+4>>2]=f+17;a=y[f+16|0];x[d+4>>2]=f+18;c=y[f+17|0];x[d+4>>2]=f+19;g=y[f+18|0];x[d+4>>2]=f+20;x[e+72>>2]=y[f+19|0]|(g|(c<<8|a<<16))<<8;x[x[k+144>>2]+(i<<2)>>2]=e;i=i+1|0;if((i|0)!=(b|0)){continue}break}}b=Tg(I,d,1,k,(o|0)!=0);if(b){x[k+64>>2]=b;f=x[k+52>>2];la:{if((f|0)==x[k+56>>2]){t=E(E(f>>>0)*E(1.75));ma:{if(E(F(t))>>0<=8?8:a;x[k+56>>2]=a;e=x[k+60>>2];c=Da();a=sa[x[x[c>>2]+16>>2]](c,e,a<<2,7693,106)|0;x[k+60>>2]=a;f=x[k+52>>2];a=a+(f<<2)|0;break la}a=x[k+60>>2]+(f<<2)|0;}x[a>>2]=b;x[k+52>>2]=f+1;}a=x[d+4>>2];x[d+4>>2]=a+1;b=v[a|0];j=b&127;na:{if((b|0)>=0){break na}x[d+4>>2]=a+2;b=v[a+1|0];j=b<<7&16256|j;if((b|0)>=0){break na}x[d+4>>2]=a+3;b=v[a+2|0];j=b<<14&2080768|j;if((b|0)>=0){break na}x[d+4>>2]=a+4;b=v[a+3|0];j=b<<21&266338304|j;if((b|0)>=0){break na}x[d+4>>2]=a+5;j=y[a+4|0]<<28|j;}if(j){f=0;while(1){b=Tg(I,d,0,k,(o|0)!=0);c=x[k+52>>2];oa:{if((c|0)==x[k+56>>2]){t=E(E(c>>>0)*E(1.75));pa:{if(E(F(t))>>0<=8?8:a;x[k+56>>2]=a;e=x[k+60>>2];c=Da();a=sa[x[x[c>>2]+16>>2]](c,e,a<<2,7693,106)|0;x[k+60>>2]=a;c=x[k+52>>2];a=a+(c<<2)|0;break oa}a=x[k+60>>2]+(c<<2)|0;}x[a>>2]=b;x[k+52>>2]=c+1;f=f+1|0;if((j|0)!=(f|0)){continue}break}}c=x[I+12>>2];qa:{if((c|0)<=0){break qa}g=0;while(1){b=x[x[I+20>>2]+(g<<2)>>2];if(x[b+12>>2]){a=Tc(k,b+8|0);}else {a=x[k+64>>2];}if(!a){sa[x[x[d>>2]+4>>2]](d);if(k){sa[x[x[k>>2]+4>>2]](k);}Ac(I,12421,x[b+16>>2]);k=0;break d}a=Ob(a,x[b+20>>2],b+24|0);if(!a){sa[x[x[d>>2]+4>>2]](d);if(k){sa[x[x[k>>2]+4>>2]](k);}Ac(I,12438,x[b+32>>2]);k=0;break d}e=x[b+4>>2];x[e+56>>2]=y[b+36|0]?a:e;Dd(e,a);mc(x[b+4>>2]);a=x[I+4>>2];sa[x[x[a>>2]+36>>2]](a,x[b+4>>2]);g=g+1|0;if((c|0)!=(g|0)){continue}break}e=x[I+12>>2];if((e|0)<=0){break qa}f=e+1|0;a=0;n=e;i=e;while(1){b=i;i=b-1|0;j=i<<2;c=x[j+x[I+20>>2]>>2];if(c){sa[x[x[c>>2]+4>>2]](c);n=x[I+12>>2];}g=n;n=g-1|0;x[I+12>>2]=n;ra:{if(i>>>0>=n>>>0){break ra}c=i;if(g+(a-e|0)&1){c=x[I+20>>2];j=c+j|0;o=x[j>>2];q=c;c=b<<2;x[j>>2]=x[q+c>>2];x[c+x[I+20>>2]>>2]=o;c=b;}if((g|0)==(f-a|0)){break ra}while(1){g=x[I+20>>2];j=c<<2;o=g+j|0;q=x[o>>2];O=g;g=j+4|0;x[o>>2]=x[O+g>>2];x[g+x[I+20>>2]>>2]=q;o=g;g=x[I+20>>2];j=o+g|0;o=x[j>>2];q=g;c=c+2|0;g=c<<2;x[j>>2]=x[q+g>>2];x[g+x[I+20>>2]>>2]=o;if((c|0)!=(n|0)){continue}break}}a=a+1|0;if((b|0)>1){continue}break}}x[I+12>>2]=0;b=x[d+4>>2];x[d+4>>2]=b+1;e=v[b|0];a=e&127;sa:{if((e|0)>=0){break sa}x[d+4>>2]=b+2;e=v[b+1|0];a=e<<7&16256|a;if((e|0)>=0){break sa}x[d+4>>2]=b+3;e=v[b+2|0];a=e<<14&2080768|a;if((e|0)>=0){break sa}x[d+4>>2]=b+4;e=v[b+3|0];a=e<<21&266338304|a;if((e|0)>=0){break sa}x[d+4>>2]=b+5;a=y[b+4|0]<<28|a;}c=x[k+72>>2];x[k+72>>2]=a;g=a;if(A[k+76>>2]>>0){t=E(E(a>>>0)*E(1.75));ta:{if(E(F(t))>>0<=8?8:b;x[k+76>>2]=b;e=x[k+80>>2];g=Da();fa=k,ga=sa[x[x[g>>2]+16>>2]](g,e,b<<2,7693,82)|0,x[fa+80>>2]=ga;g=x[k+72>>2];}ua:{if(c>>>0>=g>>>0){break ua}b=(c^-1)+g|0;e=g-c&3;if(e){f=0;while(1){x[x[k+80>>2]+(c<<2)>>2]=0;c=c+1|0;f=f+1|0;if((e|0)!=(f|0)){continue}break}}if(b>>>0<3){break ua}while(1){b=c<<2;x[b+x[k+80>>2]>>2]=0;x[(b+x[k+80>>2]|0)+4>>2]=0;x[(b+x[k+80>>2]|0)+8>>2]=0;x[(b+x[k+80>>2]|0)+12>>2]=0;c=c+4|0;if((g|0)!=(c|0)){continue}break}}if((a|0)>0){j=0;while(1){b=x[d+4>>2];x[d+4>>2]=b+1;e=v[b|0];c=e&127;va:{if((e|0)>=0){break va}x[d+4>>2]=b+2;e=v[b+1|0];c=e<<7&16256|c;if((e|0)>=0){break va}x[d+4>>2]=b+3;e=v[b+2|0];c=e<<14&2080768|c;if((e|0)>=0){break va}x[d+4>>2]=b+4;e=v[b+3|0];c=e<<21&266338304|c;if((e|0)>=0){break va}x[d+4>>2]=b+5;c=y[b+4|0]<<28|c;}wa:{if(!c){f=Ma(56,3994,317);x[z+4>>2]=1080;x[z+8>>2]=0;x[z+12>>2]=0;break wa}b=x[(x[k+200>>2]+(c<<2)|0)-4>>2];f=Ma(56,3994,317);x[z+4>>2]=1080;if(!b){x[z+8>>2]=0;x[z+12>>2]=0;break wa}e=Ga(b);x[z+8>>2]=e;c=Da();e=sa[x[x[c>>2]+12>>2]](c,e+1|0,8064,57)|0;x[z+12>>2]=e;Fa(e,b,x[z+8>>2]+1|0);}e=mf(f,z+4|0);x[z+4>>2]=1080;b=x[z+12>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}b=x[d+4>>2];c=b+1|0;x[d+4>>2]=c;n=v[b|0];g=n&127;xa:{if((n|0)>=0){break xa}c=b+2|0;x[d+4>>2]=c;n=v[b+1|0];g=n<<7&16256|g;if((n|0)>=0){break xa}c=b+3|0;x[d+4>>2]=c;n=v[b+2|0];g=n<<14&2080768|g;if((n|0)>=0){break xa}c=b+4|0;x[d+4>>2]=c;n=v[b+3|0];g=n<<21&266338304|g;if((n|0)>=0){break xa}c=b+5|0;x[d+4>>2]=c;g=y[b+4|0]<<28|g;}x[e+16>>2]=0-(g&1)^g>>>1;x[d+4>>2]=c+1;b=y[c|0];x[d+4>>2]=c+2;g=y[c+1|0];x[d+4>>2]=c+3;n=y[c+2|0];x[d+4>>2]=c+4;x[e+20>>2]=y[c+3|0]|(n|(g<<8|b<<16))<<8;x[d+4>>2]=c+5;b=v[c+4|0];g=b&127;ya:{if((b|0)>=0){break ya}x[d+4>>2]=c+6;b=v[c+5|0];g=b<<7&16256|g;if((b|0)>=0){break ya}x[d+4>>2]=c+7;b=v[c+6|0];g=b<<14&2080768|g;if((b|0)>=0){break ya}x[d+4>>2]=c+8;b=v[c+7|0];g=b<<21&266338304|g;if((b|0)>=0){break ya}x[d+4>>2]=c+9;g=y[c+8|0]<<28|g;}za:{if(!g){c=0;break za}b=Da();c=sa[x[x[b>>2]+8>>2]](b,g,3994,373)|0;b=g-1|0;g=Fa(c,x[d+4>>2],b);x[d+4>>2]=b+x[d+4>>2];v[b+g|0]=0;}b=x[e+32>>2];if((b|0)!=(c|0)){if(b){g=Da();sa[x[x[g>>2]+20>>2]](g,b,8064,102);}if(c){b=Ga(c);}else {b=0;}x[e+32>>2]=c;x[e+28>>2]=b;}b=x[d+4>>2];x[d+4>>2]=b+1;g=v[b|0];c=g&127;Aa:{if((g|0)>=0){break Aa}x[d+4>>2]=b+2;g=v[b+1|0];c=g<<7&16256|c;if((g|0)>=0){break Aa}x[d+4>>2]=b+3;g=v[b+2|0];c=g<<14&2080768|c;if((g|0)>=0){break Aa}x[d+4>>2]=b+4;g=v[b+3|0];c=g<<21&266338304|c;if((g|0)>=0){break Aa}x[d+4>>2]=b+5;c=y[b+4|0]<<28|c;}Ba:{if(!c){g=0;break Ba}b=Da();g=sa[x[x[b>>2]+8>>2]](b,c,3994,373)|0;b=c-1|0;c=Fa(g,x[d+4>>2],b);x[d+4>>2]=b+x[d+4>>2];v[b+c|0]=0;}b=x[e+44>>2];Ca:{if((b|0)==(g|0)){c=x[e+40>>2];break Ca}if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,102);}if(g){c=Ga(g);}else {c=0;}x[e+44>>2]=g;x[e+40>>2]=c;}if(c){b=x[d+4>>2];x[d+4>>2]=b+1;c=y[b|0];x[d+4>>2]=b+2;g=y[b+1|0];x[d+4>>2]=b+3;n=y[b+2|0];x[d+4>>2]=b+4;x[e+48>>2]=y[b+3|0]|(n|(g<<8|c<<16))<<8;x[d+4>>2]=b+5;c=y[b+4|0];x[d+4>>2]=b+6;g=y[b+5|0];x[d+4>>2]=b+7;n=y[b+6|0];x[d+4>>2]=b+8;x[e+52>>2]=y[b+7|0]|(n|(g<<8|c<<16))<<8;}x[x[k+80>>2]+(j<<2)>>2]=e;j=j+1|0;if((j|0)!=(a|0)){continue}break}}a=x[d+4>>2];x[d+4>>2]=a+1;b=v[a|0];n=b&127;Da:{if((b|0)>=0){break Da}x[d+4>>2]=a+2;b=v[a+1|0];n=b<<7&16256|n;if((b|0)>=0){break Da}x[d+4>>2]=a+3;b=v[a+2|0];n=b<<14&2080768|n;if((b|0)>=0){break Da}x[d+4>>2]=a+4;b=v[a+3|0];n=b<<21&266338304|n;if((b|0)>=0){break Da}x[d+4>>2]=a+5;n=y[a+4|0]<<28|n;}c=x[k+88>>2];x[k+88>>2]=n;g=n;if(g>>>0>A[k+92>>2]){t=E(E(n>>>0)*E(1.75));Ea:{if(E(F(t))>>0<=8?8:a;x[k+92>>2]=a;b=x[k+96>>2];e=Da();fa=k,ga=sa[x[x[e>>2]+16>>2]](e,b,a<<2,7693,82)|0,x[fa+96>>2]=ga;g=x[k+88>>2];}Fa:{if(c>>>0>=g>>>0){break Fa}a=(c^-1)+g|0;b=g-c&3;if(b){f=0;while(1){x[x[k+96>>2]+(c<<2)>>2]=0;c=c+1|0;f=f+1|0;if((b|0)!=(f|0)){continue}break}}if(a>>>0<3){break Fa}while(1){a=c<<2;x[a+x[k+96>>2]>>2]=0;x[(a+x[k+96>>2]|0)+4>>2]=0;x[(a+x[k+96>>2]|0)+8>>2]=0;x[(a+x[k+96>>2]|0)+12>>2]=0;c=c+4|0;if((g|0)!=(c|0)){continue}break}}Ga:{if((n|0)<=0){break Ga}g=0;while(1){a=x[d+4>>2];x[d+4>>2]=a+1;b=v[a|0];c=b&127;Ha:{if((b|0)>=0){break Ha}x[d+4>>2]=a+2;b=v[a+1|0];c=b<<7&16256|c;if((b|0)>=0){break Ha}x[d+4>>2]=a+3;b=v[a+2|0];c=b<<14&2080768|c;if((b|0)>=0){break Ha}x[d+4>>2]=a+4;b=v[a+3|0];c=b<<21&266338304|c;if((b|0)>=0){break Ha}x[d+4>>2]=a+5;c=y[a+4|0]<<28|c;}Ia:{if(!c){x[z+4>>2]=1080;f=0;a=0;break Ia}a=Da();f=sa[x[x[a>>2]+8>>2]](a,c,3994,373)|0;a=c-1|0;b=Fa(f,x[d+4>>2],a);x[d+4>>2]=a+x[d+4>>2];v[a+b|0]=0;x[z+4>>2]=1080;a=Ga(b);}x[z+12>>2]=f;x[z+8>>2]=a;t=E(0);R=0;e=qa-48|0;qa=e;x[e+44>>2]=0;x[e+36>>2]=0;x[e+40>>2]=0;x[e+32>>2]=12676;Z=B[I+36>>2];a=x[d+4>>2];x[d+4>>2]=a+1;b=v[a|0];C=b&127;Ja:{if((b|0)>=0){break Ja}x[d+4>>2]=a+2;b=v[a+1|0];C=b<<7&16256|C;if((b|0)>=0){break Ja}x[d+4>>2]=a+3;b=v[a+2|0];C=b<<14&2080768|C;if((b|0)>=0){break Ja}x[d+4>>2]=a+4;b=v[a+3|0];C=b<<21&266338304|C;if((b|0)>=0){break Ja}x[d+4>>2]=a+5;C=y[a+4|0]<<28|C;}Ka:{La:{if((C|0)<=0){break La}q=x[3705];L=x[4926];w=1;while(1){b=x[d+4>>2];a=b+1|0;x[d+4>>2]=a;c=v[b|0];H=c&127;Ma:{if((c|0)>=0){break Ma}a=b+2|0;x[d+4>>2]=a;c=v[b+1|0];H=c<<7&16256|H;if((c|0)>=0){break Ma}a=b+3|0;x[d+4>>2]=a;c=v[b+2|0];H=c<<14&2080768|H;if((c|0)>=0){break Ma}a=b+4|0;x[d+4>>2]=a;c=v[b+3|0];H=c<<21&266338304|H;if((c|0)>=0){break Ma}a=b+5|0;x[d+4>>2]=a;H=y[b+4|0]<<28|H;}x[d+4>>2]=a+1;b=v[a|0];u=b&127;Na:{if((b|0)>=0){break Na}x[d+4>>2]=a+2;b=v[a+1|0];u=b<<7&16256|u;if((b|0)>=0){break Na}x[d+4>>2]=a+3;b=v[a+2|0];u=b<<14&2080768|u;if((b|0)>=0){break Na}x[d+4>>2]=a+4;b=v[a+3|0];u=b<<21&266338304|u;if((b|0)>=0){break Na}x[d+4>>2]=a+5;u=y[a+4|0]<<28|u;}f=1;c=0;Oa:{if((u|0)<=0){break Oa}while(1){a=x[d+4>>2];x[d+4>>2]=a+1;b=y[a|0];x[d+4>>2]=a+2;i=v[a+1|0];m=i&127;Pa:{if((i|0)>=0){break Pa}x[d+4>>2]=a+3;i=v[a+2|0];m=i<<7&16256|m;if((i|0)>=0){break Pa}x[d+4>>2]=a+4;i=v[a+3|0];m=i<<14&2080768|m;if((i|0)>=0){break Pa}x[d+4>>2]=a+5;i=v[a+4|0];m=i<<21&266338304|m;if((i|0)>=0){break Pa}x[d+4>>2]=a+6;m=y[a+5|0]<<28|m;}Qa:{Ra:{Sa:{Ta:{Ua:{switch(b|0){case 0:b=Hf(Ma(40,3994,699),m);x[b+4>>2]=H;j=0;if((m|0)<=0){break Ra}while(1){a=x[d+4>>2];x[d+4>>2]=a+1;i=y[a|0];x[d+4>>2]=a+2;f=y[a+1|0];x[d+4>>2]=a+3;o=y[a+2|0];x[d+4>>2]=a+4;h=y[a+3|0];x[d+4>>2]=a+5;i=h|(o|(f<<8|i<<16))<<8;f=v[a+4|0];h=f&127;Va:{if((f|0)>=0){break Va}x[d+4>>2]=a+6;f=v[a+5|0];h=f<<7&16256|h;if((f|0)>=0){break Va}x[d+4>>2]=a+7;f=v[a+6|0];h=f<<14&2080768|h;if((f|0)>=0){break Va}x[d+4>>2]=a+8;f=v[a+7|0];h=f<<21&266338304|h;if((f|0)>=0){break Va}x[d+4>>2]=a+9;h=y[a+8|0]<<28|h;}s=(l(2,i),r());Wa:{if(!h){x[e+16>>2]=1080;x[e+20>>2]=0;x[e+24>>2]=0;break Wa}a=x[(x[k+200>>2]+(h<<2)|0)-4>>2];x[e+16>>2]=1080;if(!a){x[e+20>>2]=0;x[e+24>>2]=0;break Wa}i=Ga(a);x[e+20>>2]=i;f=Da();i=sa[x[x[f>>2]+12>>2]](f,i+1|0,8064,57)|0;x[e+24>>2]=i;Fa(i,a,x[e+20>>2]+1|0);}Gf(b,j,s,e+16|0);x[e+16>>2]=1080;a=x[e+24>>2];if(a){i=Da();sa[x[x[i>>2]+20>>2]](i,a,8064,201);}j=j+1|0;if((m|0)!=(j|0)){continue}break}break Ra;case 1:b=tf(Ma(40,3994,711),m);x[b+20>>2]=H;if((m|0)<=0){break Sa}i=m-1|0;h=0;while(1){a=x[d+4>>2];x[d+4>>2]=a+1;f=y[a|0];x[d+4>>2]=a+2;j=y[a+1|0];x[d+4>>2]=a+3;o=y[a+2|0];x[d+4>>2]=a+4;p=y[a+3|0];x[d+4>>2]=a+5;G=y[a+4|0];x[d+4>>2]=a+6;J=y[a+5|0];x[d+4>>2]=a+7;M=y[a+6|0];x[d+4>>2]=a+8;sf(b,h,(l(2,p|(o|(j<<8|f<<16))<<8),r()),E(E(G>>>0)/E(255)),E(E(J>>>0)/E(255)),E(E(M>>>0)/E(255)),E(E(y[a+7|0])/E(255)));Xa:{if((h|0)>=(i|0)){break Xa}a=x[d+4>>2];x[d+4>>2]=a+1;Ya:{switch(y[a|0]-1|0){case 0:x[x[b+16>>2]+D(h,76)>>2]=1065353216;break Xa;case 1:break Ya;default:break Xa}}x[d+4>>2]=a+2;f=y[a+1|0];x[d+4>>2]=a+3;j=y[a+2|0];x[d+4>>2]=a+4;o=y[a+3|0];x[d+4>>2]=a+5;p=y[a+4|0];x[d+4>>2]=a+6;G=y[a+5|0];x[d+4>>2]=a+7;J=y[a+6|0];x[d+4>>2]=a+8;M=y[a+7|0];x[d+4>>2]=a+9;K=y[a+8|0];x[d+4>>2]=a+10;N=y[a+9|0];x[d+4>>2]=a+11;P=y[a+10|0];x[d+4>>2]=a+12;S=y[a+11|0];x[d+4>>2]=a+13;U=y[a+12|0];x[d+4>>2]=a+14;V=y[a+13|0];x[d+4>>2]=a+15;W=y[a+14|0];x[d+4>>2]=a+16;Q=y[a+15|0];x[d+4>>2]=a+17;nb(b,h,(l(2,p|(o|(j<<8|f<<16))<<8),r()),(l(2,K|(M|(J<<8|G<<16))<<8),r()),(l(2,U|(S|(P<<8|N<<16))<<8),r()),(l(2,y[a+16|0]|(Q|(W<<8|V<<16))<<8),r()));}h=h+1|0;if((m|0)!=(h|0)){continue}break}break Sa;case 2:b=je(Ma(40,3994,728),m);x[b+36>>2]=H;if((m|0)<=0){break Ta}i=m-1|0;h=0;while(1){a=x[d+4>>2];x[d+4>>2]=a+1;f=y[a|0];x[d+4>>2]=a+2;j=y[a+1|0];x[d+4>>2]=a+3;o=y[a+2|0];x[d+4>>2]=a+4;p=y[a+3|0];x[d+4>>2]=a+5;G=y[a+4|0];x[d+4>>2]=a+6;J=y[a+5|0];x[d+4>>2]=a+7;M=y[a+6|0];x[d+4>>2]=a+8;K=y[a+7|0];x[d+4>>2]=a+10;N=y[a+9|0];x[d+4>>2]=a+11;P=y[a+10|0];x[d+4>>2]=a+12;ie(b,h,(l(2,p|(o|(j<<8|f<<16))<<8),r()),E(E(G>>>0)/E(255)),E(E(J>>>0)/E(255)),E(E(M>>>0)/E(255)),E(E(K>>>0)/E(255)),E(E(N>>>0)/E(255)),E(E(P>>>0)/E(255)),E(E(y[a+11|0])/E(255)));Za:{if((h|0)>=(i|0)){break Za}a=x[d+4>>2];x[d+4>>2]=a+1;_a:{switch(y[a|0]-1|0){case 0:x[x[b+16>>2]+D(h,76)>>2]=1065353216;break Za;case 1:break _a;default:break Za}}x[d+4>>2]=a+2;f=y[a+1|0];x[d+4>>2]=a+3;j=y[a+2|0];x[d+4>>2]=a+4;o=y[a+3|0];x[d+4>>2]=a+5;p=y[a+4|0];x[d+4>>2]=a+6;G=y[a+5|0];x[d+4>>2]=a+7;J=y[a+6|0];x[d+4>>2]=a+8;M=y[a+7|0];x[d+4>>2]=a+9;K=y[a+8|0];x[d+4>>2]=a+10;N=y[a+9|0];x[d+4>>2]=a+11;P=y[a+10|0];x[d+4>>2]=a+12;S=y[a+11|0];x[d+4>>2]=a+13;U=y[a+12|0];x[d+4>>2]=a+14;V=y[a+13|0];x[d+4>>2]=a+15;W=y[a+14|0];x[d+4>>2]=a+16;Q=y[a+15|0];x[d+4>>2]=a+17;nb(b,h,(l(2,p|(o|(j<<8|f<<16))<<8),r()),(l(2,K|(M|(J<<8|G<<16))<<8),r()),(l(2,U|(S|(P<<8|N<<16))<<8),r()),(l(2,y[a+16|0]|(Q|(W<<8|V<<16))<<8),r()));}h=h+1|0;if((m|0)!=(h|0)){continue}break}break Ta;default:break Ua}}j=x[e+36>>2];if((j|0)>0){h=j+1|0;p=0;c=j;i=c;while(1){b=i;i=b-1|0;m=i<<2;a=x[m+x[e+44>>2]>>2];if(a){sa[x[x[a>>2]+4>>2]](a);c=x[e+36>>2];}o=c;c=c-1|0;x[e+36>>2]=c;$a:{if(c>>>0<=i>>>0){break $a}a=i;if(o+(p-j|0)&1){a=x[e+44>>2];m=a+m|0;u=x[m>>2];O=a;a=b<<2;x[m>>2]=x[O+a>>2];x[a+x[e+44>>2]>>2]=u;a=b;}if((o|0)==(h-p|0)){break $a}while(1){o=x[e+44>>2];m=a<<2;u=o+m|0;G=x[u>>2];O=o;o=m+4|0;x[u>>2]=x[O+o>>2];x[o+x[e+44>>2]>>2]=G;O=o;o=x[e+44>>2];m=O+o|0;u=x[m>>2];O=o;a=a+2|0;o=a<<2;x[m>>2]=x[O+o>>2];x[o+x[e+44>>2]>>2]=u;if((a|0)!=(c|0)){continue}break}}p=p+1|0;if((b|0)>1){continue}break}}Ac(I,12113,x[x[x[k+44>>2]+(H<<2)>>2]+16>>2]);if(!(f&1)){break Oa}a=0;if(w){break Ka}break La}a=x[e+36>>2];ab:{if((a|0)==x[e+40>>2]){s=E(E(a>>>0)*E(1.75));bb:{if(E(F(s))>>0<=8?8:a;x[e+40>>2]=a;i=x[e+44>>2];f=Da();i=sa[x[x[f>>2]+16>>2]](f,i,a<<2,7693,106)|0;x[e+44>>2]=i;a=x[e+36>>2];o=i+(a<<2)|0;break ab}o=x[e+44>>2]+(a<<2)|0;}x[o>>2]=b;x[e+36>>2]=a+1;h=D(L,m-1|0);a=b+32|0;break Qa}a=x[e+36>>2];cb:{if((a|0)==x[e+40>>2]){s=E(E(a>>>0)*E(1.75));db:{if(E(F(s))>>0<=8?8:a;x[e+40>>2]=a;i=x[e+44>>2];f=Da();i=sa[x[x[f>>2]+16>>2]](f,i,a<<2,7693,106)|0;x[e+44>>2]=i;a=x[e+36>>2];o=i+(a<<2)|0;break cb}o=x[e+44>>2]+(a<<2)|0;}x[o>>2]=b;x[e+36>>2]=a+1;h=D(q,m-1|0);a=b+36|0;break Qa}a=x[e+36>>2];eb:{if((a|0)==x[e+40>>2]){s=E(E(a>>>0)*E(1.75));fb:{if(E(F(s))>>0<=8?8:a;x[e+40>>2]=a;i=x[e+44>>2];f=Da();i=sa[x[x[f>>2]+16>>2]](f,i,a<<2,7693,106)|0;x[e+44>>2]=i;a=x[e+36>>2];o=i+(a<<2)|0;break eb}o=x[e+44>>2]+(a<<2)|0;}x[o>>2]=b;x[e+36>>2]=a+1;h=m-1|0;a=b+20|0;}s=B[x[a>>2]+(h<<2)>>2];t=t>s?t:s;c=c+1|0;f=(u|0)>(c|0);if((c|0)!=(u|0)){continue}break}}R=R+1|0;w=(R|0)<(C|0);if((C|0)!=(R|0)){continue}break}}a=x[d+4>>2];x[d+4>>2]=a+1;b=v[a|0];w=b&127;gb:{if((b|0)>=0){break gb}x[d+4>>2]=a+2;b=v[a+1|0];w=b<<7&16256|w;if((b|0)>=0){break gb}x[d+4>>2]=a+3;b=v[a+2|0];w=b<<14&2080768|w;if((b|0)>=0){break gb}x[d+4>>2]=a+4;b=v[a+3|0];w=b<<21&266338304|w;if((b|0)>=0){break gb}x[d+4>>2]=a+5;w=y[a+4|0]<<28|w;}hb:{if((w|0)<=0){break hb}M=0;m=x[4890];R=1;while(1){b=x[d+4>>2];a=b+1|0;x[d+4>>2]=a;c=v[b|0];u=c&127;ib:{if((c|0)>=0){break ib}a=b+2|0;x[d+4>>2]=a;c=v[b+1|0];u=c<<7&16256|u;if((c|0)>=0){break ib}a=b+3|0;x[d+4>>2]=a;c=v[b+2|0];u=c<<14&2080768|u;if((c|0)>=0){break ib}a=b+4|0;x[d+4>>2]=a;c=v[b+3|0];u=c<<21&266338304|u;if((c|0)>=0){break ib}a=b+5|0;x[d+4>>2]=a;u=y[b+4|0]<<28|u;}x[d+4>>2]=a+1;b=v[a|0];q=b&127;jb:{if((b|0)>=0){break jb}x[d+4>>2]=a+2;b=v[a+1|0];q=b<<7&16256|q;if((b|0)>=0){break jb}x[d+4>>2]=a+3;b=v[a+2|0];q=b<<14&2080768|q;if((b|0)>=0){break jb}x[d+4>>2]=a+4;b=v[a+3|0];q=b<<21&266338304|q;if((b|0)>=0){break jb}x[d+4>>2]=a+5;q=y[a+4|0]<<28|q;}c=1;b=0;kb:{if((q|0)<=0){break kb}while(1){a=x[d+4>>2];x[d+4>>2]=a+1;i=y[a|0];x[d+4>>2]=a+2;f=v[a+1|0];p=f&127;lb:{if((f|0)>=0){break lb}x[d+4>>2]=a+3;f=v[a+2|0];p=f<<7&16256|p;if((f|0)>=0){break lb}x[d+4>>2]=a+4;f=v[a+3|0];p=f<<14&2080768|p;if((f|0)>=0){break lb}x[d+4>>2]=a+5;f=v[a+4|0];p=f<<21&266338304|p;if((f|0)>=0){break lb}x[d+4>>2]=a+6;p=y[a+5|0]<<28|p;}mb:{nb:{ob:{pb:{qb:{rb:{switch(i|0){case 0:c=Ne(Ma(40,3994,766),p);x[c+20>>2]=u;if((p|0)<=0){break nb}i=p-1|0;h=0;while(1){a=x[d+4>>2];x[d+4>>2]=a+1;f=y[a|0];x[d+4>>2]=a+2;j=y[a+1|0];x[d+4>>2]=a+3;o=y[a+2|0];x[d+4>>2]=a+4;C=y[a+3|0];x[d+4>>2]=a+5;H=y[a+4|0];x[d+4>>2]=a+6;L=y[a+5|0];x[d+4>>2]=a+7;G=y[a+6|0];x[d+4>>2]=a+8;s=(l(2,y[a+7|0]|(G|(L<<8|H<<16))<<8),r());a=x[c+36>>2]+(h<<3)|0;x[a>>2]=C|(o|(j<<8|f<<16))<<8;B[a+4>>2]=s;sb:{if((h|0)>=(i|0)){break sb}a=x[d+4>>2];x[d+4>>2]=a+1;tb:{switch(y[a|0]-1|0){case 0:x[x[c+16>>2]+D(h,76)>>2]=1065353216;break sb;case 1:break tb;default:break sb}}x[d+4>>2]=a+2;f=y[a+1|0];x[d+4>>2]=a+3;j=y[a+2|0];x[d+4>>2]=a+4;o=y[a+3|0];x[d+4>>2]=a+5;C=y[a+4|0];x[d+4>>2]=a+6;H=y[a+5|0];x[d+4>>2]=a+7;L=y[a+6|0];x[d+4>>2]=a+8;G=y[a+7|0];x[d+4>>2]=a+9;J=y[a+8|0];x[d+4>>2]=a+10;K=y[a+9|0];x[d+4>>2]=a+11;N=y[a+10|0];x[d+4>>2]=a+12;P=y[a+11|0];x[d+4>>2]=a+13;S=y[a+12|0];x[d+4>>2]=a+14;U=y[a+13|0];x[d+4>>2]=a+15;V=y[a+14|0];x[d+4>>2]=a+16;W=y[a+15|0];x[d+4>>2]=a+17;nb(c,h,(l(2,C|(o|(j<<8|f<<16))<<8),r()),(l(2,J|(G|(L<<8|H<<16))<<8),r()),(l(2,S|(P|(N<<8|K<<16))<<8),r()),(l(2,y[a+16|0]|(W|(V<<8|U<<16))<<8),r()));}h=h+1|0;if((p|0)!=(h|0)){continue}break}break nb;case 2:s=E(1);c=Me(Ma(40,3994,784),p);break qb;case 3:s=E(1);c=Le(Ma(40,3994,786),p);break qb;case 1:break rb;default:break pb}}s=Z;c=Sc(Ma(40,3994,788),p);}x[c+36>>2]=u;if((p|0)<=0){break ob}i=p-1|0;h=0;while(1){a=x[d+4>>2];x[d+4>>2]=a+1;f=y[a|0];x[d+4>>2]=a+2;j=y[a+1|0];x[d+4>>2]=a+3;o=y[a+2|0];x[d+4>>2]=a+4;C=y[a+3|0];x[d+4>>2]=a+5;H=y[a+4|0];x[d+4>>2]=a+6;L=y[a+5|0];x[d+4>>2]=a+7;G=y[a+6|0];x[d+4>>2]=a+8;J=y[a+7|0];x[d+4>>2]=a+9;K=y[a+8|0];x[d+4>>2]=a+10;N=y[a+9|0];x[d+4>>2]=a+11;P=y[a+10|0];x[d+4>>2]=a+12;Y=E(s*(l(2,y[a+11|0]|(P|(N<<8|K<<16))<<8),r()));a=x[c+32>>2]+D(h,12)|0;x[a>>2]=C|(o|(j<<8|f<<16))<<8;B[a+8>>2]=Y;B[a+4>>2]=s*(l(2,J|(G|(L<<8|H<<16))<<8),r());ub:{if((h|0)>=(i|0)){break ub}a=x[d+4>>2];x[d+4>>2]=a+1;vb:{switch(y[a|0]-1|0){case 0:x[x[c+16>>2]+D(h,76)>>2]=1065353216;break ub;case 1:break vb;default:break ub}}x[d+4>>2]=a+2;f=y[a+1|0];x[d+4>>2]=a+3;j=y[a+2|0];x[d+4>>2]=a+4;o=y[a+3|0];x[d+4>>2]=a+5;C=y[a+4|0];x[d+4>>2]=a+6;H=y[a+5|0];x[d+4>>2]=a+7;L=y[a+6|0];x[d+4>>2]=a+8;G=y[a+7|0];x[d+4>>2]=a+9;J=y[a+8|0];x[d+4>>2]=a+10;K=y[a+9|0];x[d+4>>2]=a+11;N=y[a+10|0];x[d+4>>2]=a+12;P=y[a+11|0];x[d+4>>2]=a+13;S=y[a+12|0];x[d+4>>2]=a+14;U=y[a+13|0];x[d+4>>2]=a+15;V=y[a+14|0];x[d+4>>2]=a+16;W=y[a+15|0];x[d+4>>2]=a+17;nb(c,h,(l(2,C|(o|(j<<8|f<<16))<<8),r()),(l(2,J|(G|(L<<8|H<<16))<<8),r()),(l(2,S|(P|(N<<8|K<<16))<<8),r()),(l(2,y[a+16|0]|(W|(V<<8|U<<16))<<8),r()));}h=h+1|0;if((p|0)!=(h|0)){continue}break}break ob}o=x[e+36>>2];if((o|0)>0){h=o+1|0;i=0;b=o;f=b;while(1){j=f;f=f-1|0;p=f<<2;a=x[p+x[e+44>>2]>>2];if(a){sa[x[x[a>>2]+4>>2]](a);b=x[e+36>>2];}q=b;b=b-1|0;x[e+36>>2]=b;wb:{if(b>>>0<=f>>>0){break wb}a=f;if(q+(i-o|0)&1){a=x[e+44>>2];p=a+p|0;C=x[p>>2];O=a;a=j<<2;x[p>>2]=x[O+a>>2];x[a+x[e+44>>2]>>2]=C;a=j;}if((q|0)==(h-i|0)){break wb}while(1){q=x[e+44>>2];p=a<<2;C=q+p|0;H=x[C>>2];O=q;q=p+4|0;x[C>>2]=x[O+q>>2];x[q+x[e+44>>2]>>2]=H;O=q;q=x[e+44>>2];p=O+q|0;C=x[p>>2];O=q;a=a+2|0;q=a<<2;x[p>>2]=x[O+q>>2];x[q+x[e+44>>2]>>2]=C;if((a|0)!=(b|0)){continue}break}}i=i+1|0;if((j|0)>1){continue}break}}Ac(I,12174,x[x[x[k+28>>2]+(u<<2)>>2]+16>>2]);if(!(c&1)){break kb}a=0;if(R&1){break Ka}break hb}a=x[e+36>>2];xb:{if((a|0)==x[e+40>>2]){s=E(E(a>>>0)*E(1.75));yb:{if(E(F(s))>>0<=8?8:a;x[e+40>>2]=a;i=x[e+44>>2];f=Da();i=sa[x[x[f>>2]+16>>2]](f,i,a<<2,7693,106)|0;x[e+44>>2]=i;a=x[e+36>>2];o=i+(a<<2)|0;break xb}o=x[e+44>>2]+(a<<2)|0;}x[o>>2]=c;x[e+36>>2]=a+1;h=D(m,p-1|0);a=c+32|0;break mb}a=x[e+36>>2];zb:{if((a|0)==x[e+40>>2]){s=E(E(a>>>0)*E(1.75));Ab:{if(E(F(s))>>0<=8?8:a;x[e+40>>2]=a;i=x[e+44>>2];f=Da();i=sa[x[x[f>>2]+16>>2]](f,i,a<<2,7693,106)|0;x[e+44>>2]=i;a=x[e+36>>2];o=i+(a<<2)|0;break zb}o=x[e+44>>2]+(a<<2)|0;}x[o>>2]=c;x[e+36>>2]=a+1;h=(p<<1)-2|0;a=c+36|0;}s=B[x[a>>2]+(h<<2)>>2];t=t>s?t:s;b=b+1|0;c=(q|0)>(b|0);if((b|0)!=(q|0)){continue}break}}M=M+1|0;R=(M|0)<(w|0);if((w|0)!=(M|0)){continue}break}}b=x[d+4>>2];a=b+1|0;x[d+4>>2]=a;c=v[b|0];q=c&127;Bb:{if((c|0)>=0){break Bb}a=b+2|0;x[d+4>>2]=a;c=v[b+1|0];q=c<<7&16256|q;if((c|0)>=0){break Bb}a=b+3|0;x[d+4>>2]=a;c=v[b+2|0];q=c<<14&2080768|q;if((c|0)>=0){break Bb}a=b+4|0;x[d+4>>2]=a;c=v[b+3|0];q=c<<21&266338304|q;if((c|0)>=0){break Bb}a=b+5|0;x[d+4>>2]=a;q=y[b+4|0]<<28|q;}if((q|0)>0){f=x[3940];b=0;while(1){c=x[d+4>>2];a=c+1|0;x[d+4>>2]=a;i=v[c|0];h=i&127;Cb:{if((i|0)>=0){break Cb}a=c+2|0;x[d+4>>2]=a;i=v[c+1|0];h=i<<7&16256|h;if((i|0)>=0){break Cb}a=c+3|0;x[d+4>>2]=a;i=v[c+2|0];h=i<<14&2080768|h;if((i|0)>=0){break Cb}a=c+4|0;x[d+4>>2]=a;i=v[c+3|0];h=i<<21&266338304|h;if((i|0)>=0){break Cb}a=c+5|0;x[d+4>>2]=a;h=y[c+4|0]<<28|h;}x[d+4>>2]=a+1;c=v[a|0];w=c&127;Db:{if((c|0)>=0){break Db}x[d+4>>2]=a+2;c=v[a+1|0];w=c<<7&16256|w;if((c|0)>=0){break Db}x[d+4>>2]=a+3;c=v[a+2|0];w=c<<14&2080768|w;if((c|0)>=0){break Db}x[d+4>>2]=a+4;c=v[a+3|0];w=c<<21&266338304|w;if((c|0)>=0){break Db}x[d+4>>2]=a+5;w=y[a+4|0]<<28|w;}c=af(Ma(40,3994,818),w);x[c+36>>2]=h;if((w|0)>0){i=w-1|0;h=0;while(1){a=x[d+4>>2];x[d+4>>2]=a+1;j=y[a|0];x[d+4>>2]=a+2;o=y[a+1|0];x[d+4>>2]=a+3;m=y[a+2|0];x[d+4>>2]=a+4;p=y[a+3|0];x[d+4>>2]=a+5;u=y[a+4|0];x[d+4>>2]=a+6;C=y[a+5|0];x[d+4>>2]=a+7;H=y[a+6|0];x[d+4>>2]=a+8;R=y[a+7|0];x[d+4>>2]=a+9;L=y[a+8|0];x[d+4>>2]=a+10;G=y[a+9|0];x[d+4>>2]=a+11;J=y[a+10|0];x[d+4>>2]=a+12;s=B[I+36>>2];M=y[a+11|0];x[d+4>>2]=a+13;K=v[a+12|0];x[d+4>>2]=a+14;N=y[a+13|0];x[d+4>>2]=a+15;$e(c,h,(l(2,p|(m|(o<<8|j<<16))<<8),r()),(l(2,R|(H|(C<<8|u<<16))<<8),r()),E(s*(l(2,M|(J|(G<<8|L<<16))<<8),r())),K,(N|0)!=0,y[a+14|0]!=0);Eb:{if((h|0)>=(i|0)){break Eb}a=x[d+4>>2];x[d+4>>2]=a+1;Fb:{switch(y[a|0]-1|0){case 0:x[x[c+16>>2]+D(h,76)>>2]=1065353216;break Eb;case 1:break Fb;default:break Eb}}x[d+4>>2]=a+2;j=y[a+1|0];x[d+4>>2]=a+3;o=y[a+2|0];x[d+4>>2]=a+4;m=y[a+3|0];x[d+4>>2]=a+5;p=y[a+4|0];x[d+4>>2]=a+6;u=y[a+5|0];x[d+4>>2]=a+7;C=y[a+6|0];x[d+4>>2]=a+8;H=y[a+7|0];x[d+4>>2]=a+9;R=y[a+8|0];x[d+4>>2]=a+10;L=y[a+9|0];x[d+4>>2]=a+11;G=y[a+10|0];x[d+4>>2]=a+12;J=y[a+11|0];x[d+4>>2]=a+13;M=y[a+12|0];x[d+4>>2]=a+14;K=y[a+13|0];x[d+4>>2]=a+15;N=y[a+14|0];x[d+4>>2]=a+16;P=y[a+15|0];x[d+4>>2]=a+17;nb(c,h,(l(2,p|(m|(o<<8|j<<16))<<8),r()),(l(2,R|(H|(C<<8|u<<16))<<8),r()),(l(2,M|(J|(G<<8|L<<16))<<8),r()),(l(2,y[a+16|0]|(P|(N<<8|K<<16))<<8),r()));}h=h+1|0;if((w|0)!=(h|0)){continue}break}}a=x[e+36>>2];Gb:{if((a|0)==x[e+40>>2]){s=E(E(a>>>0)*E(1.75));Hb:{if(E(F(s))>>0<=8?8:a;x[e+40>>2]=a;i=x[e+44>>2];j=Da();i=sa[x[x[j>>2]+16>>2]](j,i,a<<2,7693,106)|0;x[e+44>>2]=i;a=x[e+36>>2];o=i+(a<<2)|0;break Gb}o=x[e+44>>2]+(a<<2)|0;}x[o>>2]=c;x[e+36>>2]=a+1;s=B[x[c+32>>2]+(D(f,w-1|0)<<2)>>2];t=t>s?t:s;b=b+1|0;if((q|0)!=(b|0)){continue}break}a=x[d+4>>2];}h=a+1|0;x[d+4>>2]=h;b=v[a|0];w=b&127;Ib:{if((b|0)>=0){break Ib}h=a+2|0;x[d+4>>2]=h;b=v[a+1|0];w=b<<7&16256|w;if((b|0)>=0){break Ib}h=a+3|0;x[d+4>>2]=h;b=v[a+2|0];w=b<<14&2080768|w;if((b|0)>=0){break Ib}h=a+4|0;x[d+4>>2]=h;b=v[a+3|0];w=b<<21&266338304|w;if((b|0)>=0){break Ib}h=a+5|0;x[d+4>>2]=h;w=y[a+4|0]<<28|w;}if((w|0)>0){M=0;i=x[4869];while(1){b=x[d+4>>2];a=b+1|0;x[d+4>>2]=a;c=v[b|0];h=c&127;Jb:{if((c|0)>=0){break Jb}a=b+2|0;x[d+4>>2]=a;c=v[b+1|0];h=c<<7&16256|h;if((c|0)>=0){break Jb}a=b+3|0;x[d+4>>2]=a;c=v[b+2|0];h=c<<14&2080768|h;if((c|0)>=0){break Jb}a=b+4|0;x[d+4>>2]=a;c=v[b+3|0];h=c<<21&266338304|h;if((c|0)>=0){break Jb}a=b+5|0;x[d+4>>2]=a;h=y[b+4|0]<<28|h;}x[d+4>>2]=a+1;b=v[a|0];u=b&127;Kb:{if((b|0)>=0){break Kb}x[d+4>>2]=a+2;b=v[a+1|0];u=b<<7&16256|u;if((b|0)>=0){break Kb}x[d+4>>2]=a+3;b=v[a+2|0];u=b<<14&2080768|u;if((b|0)>=0){break Kb}x[d+4>>2]=a+4;b=v[a+3|0];u=b<<21&266338304|u;if((b|0)>=0){break Kb}x[d+4>>2]=a+5;u=y[a+4|0]<<28|u;}b=ne(Ma(40,3994,838),u);x[b+36>>2]=h;if((u|0)>0){c=u-1|0;h=0;while(1){a=x[d+4>>2];x[d+4>>2]=a+1;f=y[a|0];x[d+4>>2]=a+2;j=y[a+1|0];x[d+4>>2]=a+3;o=y[a+2|0];x[d+4>>2]=a+4;q=y[a+3|0];x[d+4>>2]=a+5;m=y[a+4|0];x[d+4>>2]=a+6;p=y[a+5|0];x[d+4>>2]=a+7;C=y[a+6|0];x[d+4>>2]=a+8;H=y[a+7|0];x[d+4>>2]=a+9;R=y[a+8|0];x[d+4>>2]=a+10;L=y[a+9|0];x[d+4>>2]=a+11;G=y[a+10|0];x[d+4>>2]=a+12;J=y[a+11|0];x[d+4>>2]=a+13;K=y[a+12|0];x[d+4>>2]=a+14;N=y[a+13|0];x[d+4>>2]=a+15;P=y[a+14|0];x[d+4>>2]=a+16;S=y[a+15|0];x[d+4>>2]=a+17;U=y[a+16|0];x[d+4>>2]=a+18;V=y[a+17|0];x[d+4>>2]=a+19;W=y[a+18|0];x[d+4>>2]=a+20;me(b,h,(l(2,q|(o|(j<<8|f<<16))<<8),r()),(l(2,H|(C|(p<<8|m<<16))<<8),r()),(l(2,J|(G|(L<<8|R<<16))<<8),r()),(l(2,S|(P|(N<<8|K<<16))<<8),r()),(l(2,y[a+19|0]|(W|(V<<8|U<<16))<<8),r()));Lb:{if((c|0)<=(h|0)){break Lb}a=x[d+4>>2];x[d+4>>2]=a+1;Mb:{switch(y[a|0]-1|0){case 0:x[x[b+16>>2]+D(h,76)>>2]=1065353216;break Lb;case 1:break Mb;default:break Lb}}x[d+4>>2]=a+2;f=y[a+1|0];x[d+4>>2]=a+3;j=y[a+2|0];x[d+4>>2]=a+4;o=y[a+3|0];x[d+4>>2]=a+5;q=y[a+4|0];x[d+4>>2]=a+6;m=y[a+5|0];x[d+4>>2]=a+7;p=y[a+6|0];x[d+4>>2]=a+8;C=y[a+7|0];x[d+4>>2]=a+9;H=y[a+8|0];x[d+4>>2]=a+10;R=y[a+9|0];x[d+4>>2]=a+11;L=y[a+10|0];x[d+4>>2]=a+12;G=y[a+11|0];x[d+4>>2]=a+13;J=y[a+12|0];x[d+4>>2]=a+14;K=y[a+13|0];x[d+4>>2]=a+15;N=y[a+14|0];x[d+4>>2]=a+16;P=y[a+15|0];x[d+4>>2]=a+17;nb(b,h,(l(2,q|(o|(j<<8|f<<16))<<8),r()),(l(2,H|(C|(p<<8|m<<16))<<8),r()),(l(2,J|(G|(L<<8|R<<16))<<8),r()),(l(2,y[a+16|0]|(P|(N<<8|K<<16))<<8),r()));}h=h+1|0;if((u|0)!=(h|0)){continue}break}}a=x[e+36>>2];Nb:{if((a|0)==x[e+40>>2]){s=E(E(a>>>0)*E(1.75));Ob:{if(E(F(s))>>0<=8?8:a;x[e+40>>2]=a;c=x[e+44>>2];f=Da();c=sa[x[x[f>>2]+16>>2]](f,c,a<<2,7693,106)|0;x[e+44>>2]=c;a=x[e+36>>2];c=c+(a<<2)|0;break Nb}c=x[e+44>>2]+(a<<2)|0;}x[c>>2]=b;x[e+36>>2]=a+1;s=B[x[b+32>>2]+(D(i,u-1|0)<<2)>>2];t=t>s?t:s;M=M+1|0;if((M|0)!=(w|0)){continue}break}h=x[d+4>>2];}a=h+1|0;x[d+4>>2]=a;b=v[h|0];C=b&127;Pb:{if((b|0)>=0){break Pb}a=h+2|0;x[d+4>>2]=a;b=v[h+1|0];C=b<<7&16256|C;if((b|0)>=0){break Pb}a=h+3|0;x[d+4>>2]=a;b=v[h+2|0];C=b<<14&2080768|C;if((b|0)>=0){break Pb}a=h+4|0;x[d+4>>2]=a;b=v[h+3|0];C=b<<21&266338304|C;if((b|0)>=0){break Pb}a=h+5|0;x[d+4>>2]=a;C=y[h+4|0]<<28|C;}if((C|0)>0){R=0;j=x[4087];o=x[4067];while(1){b=x[d+4>>2];a=b+1|0;x[d+4>>2]=a;c=v[b|0];u=c&127;Qb:{if((c|0)>=0){break Qb}a=b+2|0;x[d+4>>2]=a;c=v[b+1|0];u=c<<7&16256|u;if((c|0)>=0){break Qb}a=b+3|0;x[d+4>>2]=a;c=v[b+2|0];u=c<<14&2080768|u;if((c|0)>=0){break Qb}a=b+4|0;x[d+4>>2]=a;c=v[b+3|0];u=c<<21&266338304|u;if((c|0)>=0){break Qb}a=b+5|0;x[d+4>>2]=a;u=y[b+4|0]<<28|u;}i=x[x[k+144>>2]+(u<<2)>>2];x[d+4>>2]=a+1;b=v[a|0];q=b&127;Rb:{if((b|0)>=0){break Rb}x[d+4>>2]=a+2;b=v[a+1|0];q=b<<7&16256|q;if((b|0)>=0){break Rb}x[d+4>>2]=a+3;b=v[a+2|0];q=b<<14&2080768|q;if((b|0)>=0){break Rb}x[d+4>>2]=a+4;b=v[a+3|0];q=b<<21&266338304|q;if((b|0)>=0){break Rb}x[d+4>>2]=a+5;q=y[a+4|0]<<28|q;}if((q|0)>0){b=0;while(1){a=x[d+4>>2];x[d+4>>2]=a+1;c=v[a|0];x[d+4>>2]=a+2;f=v[a+1|0];p=f&127;Sb:{if((f|0)>=0){break Sb}x[d+4>>2]=a+3;f=v[a+2|0];p=f<<7&16256|p;if((f|0)>=0){break Sb}x[d+4>>2]=a+4;f=v[a+3|0];p=f<<14&2080768|p;if((f|0)>=0){break Sb}x[d+4>>2]=a+5;f=v[a+4|0];p=f<<21&266338304|p;if((f|0)>=0){break Sb}x[d+4>>2]=a+6;p=y[a+5|0]<<28|p;}Tb:{Ub:{Vb:{switch(c|0){case 0:case 1:Wb:{if((c|0)==1){c=dh(Ma(40,3994,866),p);a=A[i+48>>2]<2;break Wb}c=Cd(Ma(40,3994,870),p);a=!x[i+44>>2];}x[c+36>>2]=u;if((p|0)<=0){break Ub}s=a?Z:E(1);f=p-1|0;h=0;while(1){a=x[d+4>>2];x[d+4>>2]=a+1;m=y[a|0];x[d+4>>2]=a+2;w=y[a+1|0];x[d+4>>2]=a+3;H=y[a+2|0];x[d+4>>2]=a+4;L=y[a+3|0];x[d+4>>2]=a+5;G=y[a+4|0];x[d+4>>2]=a+6;J=y[a+5|0];x[d+4>>2]=a+7;M=y[a+6|0];x[d+4>>2]=a+8;Y=E(s*(l(2,y[a+7|0]|(M|(J<<8|G<<16))<<8),r()));a=x[c+32>>2]+(h<<3)|0;x[a>>2]=L|(H|(w<<8|m<<16))<<8;B[a+4>>2]=Y;Xb:{if((f|0)<=(h|0)){break Xb}a=x[d+4>>2];x[d+4>>2]=a+1;Yb:{switch(y[a|0]-1|0){case 0:x[x[c+16>>2]+D(h,76)>>2]=1065353216;break Xb;case 1:break Yb;default:break Xb}}x[d+4>>2]=a+2;m=y[a+1|0];x[d+4>>2]=a+3;w=y[a+2|0];x[d+4>>2]=a+4;H=y[a+3|0];x[d+4>>2]=a+5;L=y[a+4|0];x[d+4>>2]=a+6;G=y[a+5|0];x[d+4>>2]=a+7;J=y[a+6|0];x[d+4>>2]=a+8;M=y[a+7|0];x[d+4>>2]=a+9;K=y[a+8|0];x[d+4>>2]=a+10;N=y[a+9|0];x[d+4>>2]=a+11;P=y[a+10|0];x[d+4>>2]=a+12;S=y[a+11|0];x[d+4>>2]=a+13;U=y[a+12|0];x[d+4>>2]=a+14;V=y[a+13|0];x[d+4>>2]=a+15;W=y[a+14|0];x[d+4>>2]=a+16;Q=y[a+15|0];x[d+4>>2]=a+17;nb(c,h,(l(2,L|(H|(w<<8|m<<16))<<8),r()),(l(2,K|(M|(J<<8|G<<16))<<8),r()),(l(2,U|(S|(P<<8|N<<16))<<8),r()),(l(2,y[a+16|0]|(Q|(W<<8|V<<16))<<8),r()));}h=h+1|0;if((p|0)!=(h|0)){continue}break}break Ub;case 2:break Vb;default:break Tb}}c=Te(Ma(40,3994,886),p);x[c+36>>2]=u;if((p|0)>0){f=p-1|0;h=0;while(1){a=x[d+4>>2];x[d+4>>2]=a+1;m=y[a|0];x[d+4>>2]=a+2;w=y[a+1|0];x[d+4>>2]=a+3;H=y[a+2|0];x[d+4>>2]=a+4;L=y[a+3|0];x[d+4>>2]=a+5;G=y[a+4|0];x[d+4>>2]=a+6;J=y[a+5|0];x[d+4>>2]=a+7;M=y[a+6|0];x[d+4>>2]=a+8;K=y[a+7|0];x[d+4>>2]=a+9;N=y[a+8|0];x[d+4>>2]=a+10;P=y[a+9|0];x[d+4>>2]=a+11;S=y[a+10|0];x[d+4>>2]=a+12;s=(l(2,y[a+11|0]|(S|(P<<8|N<<16))<<8),r());a=x[c+32>>2]+D(h,12)|0;x[a>>2]=L|(H|(w<<8|m<<16))<<8;B[a+8>>2]=s;x[a+4>>2]=K|(M|(J<<8|G<<16))<<8;Zb:{if((f|0)<=(h|0)){break Zb}a=x[d+4>>2];x[d+4>>2]=a+1;_b:{switch(y[a|0]-1|0){case 0:x[x[c+16>>2]+D(h,76)>>2]=1065353216;break Zb;case 1:break _b;default:break Zb}}x[d+4>>2]=a+2;m=y[a+1|0];x[d+4>>2]=a+3;w=y[a+2|0];x[d+4>>2]=a+4;H=y[a+3|0];x[d+4>>2]=a+5;L=y[a+4|0];x[d+4>>2]=a+6;G=y[a+5|0];x[d+4>>2]=a+7;J=y[a+6|0];x[d+4>>2]=a+8;M=y[a+7|0];x[d+4>>2]=a+9;K=y[a+8|0];x[d+4>>2]=a+10;N=y[a+9|0];x[d+4>>2]=a+11;P=y[a+10|0];x[d+4>>2]=a+12;S=y[a+11|0];x[d+4>>2]=a+13;U=y[a+12|0];x[d+4>>2]=a+14;V=y[a+13|0];x[d+4>>2]=a+15;W=y[a+14|0];x[d+4>>2]=a+16;Q=y[a+15|0];x[d+4>>2]=a+17;nb(c,h,(l(2,L|(H|(w<<8|m<<16))<<8),r()),(l(2,K|(M|(J<<8|G<<16))<<8),r()),(l(2,U|(S|(P<<8|N<<16))<<8),r()),(l(2,y[a+16|0]|(Q|(W<<8|V<<16))<<8),r()));}h=h+1|0;if((p|0)!=(h|0)){continue}break}}a=x[e+36>>2];$b:{if((a|0)==x[e+40>>2]){s=E(E(a>>>0)*E(1.75));ac:{if(E(F(s))>>0<=8?8:a;x[e+40>>2]=a;f=x[e+44>>2];h=Da();f=sa[x[x[h>>2]+16>>2]](h,f,a<<2,7693,106)|0;x[e+44>>2]=f;a=x[e+36>>2];f=f+(a<<2)|0;break $b}f=x[e+44>>2]+(a<<2)|0;}x[f>>2]=c;x[e+36>>2]=a+1;s=B[x[c+32>>2]+(D(o,p-1|0)<<2)>>2];t=t>s?t:s;break Tb}a=x[e+36>>2];bc:{if((a|0)==x[e+40>>2]){s=E(E(a>>>0)*E(1.75));cc:{if(E(F(s))>>0<=8?8:a;x[e+40>>2]=a;f=x[e+44>>2];h=Da();f=sa[x[x[h>>2]+16>>2]](h,f,a<<2,7693,106)|0;x[e+44>>2]=f;a=x[e+36>>2];f=f+(a<<2)|0;break bc}f=x[e+44>>2]+(a<<2)|0;}x[f>>2]=c;x[e+36>>2]=a+1;s=B[x[c+32>>2]+(D(j,p-1|0)<<2)>>2];t=t>s?t:s;}b=b+1|0;if((q|0)!=(b|0)){continue}break}}R=R+1|0;if((R|0)!=(C|0)){continue}break}a=x[d+4>>2];}x[d+4>>2]=a+1;b=v[a|0];u=b&127;dc:{if((b|0)>=0){break dc}x[d+4>>2]=a+2;b=v[a+1|0];u=b<<7&16256|u;if((b|0)>=0){break dc}x[d+4>>2]=a+3;b=v[a+2|0];u=b<<14&2080768|u;if((b|0)>=0){break dc}x[d+4>>2]=a+4;b=v[a+3|0];u=b<<21&266338304|u;if((b|0)>=0){break dc}x[d+4>>2]=a+5;u=y[a+4|0]<<28|u;}ec:{if((u|0)<=0){break ec}w=1;q=0;while(1){b=x[d+4>>2];a=b+1|0;x[d+4>>2]=a;c=v[b|0];m=c&127;fc:{if((c|0)>=0){break fc}a=b+2|0;x[d+4>>2]=a;c=v[b+1|0];m=c<<7&16256|m;if((c|0)>=0){break fc}a=b+3|0;x[d+4>>2]=a;c=v[b+2|0];m=c<<14&2080768|m;if((c|0)>=0){break fc}a=b+4|0;x[d+4>>2]=a;c=v[b+3|0];m=c<<21&266338304|m;if((c|0)>=0){break fc}a=b+5|0;x[d+4>>2]=a;m=y[b+4|0]<<28|m;}U=x[x[k+60>>2]+(m<<2)>>2];x[d+4>>2]=a+1;b=v[a|0];L=b&127;gc:{if((b|0)>=0){break gc}x[d+4>>2]=a+2;b=v[a+1|0];L=b<<7&16256|L;if((b|0)>=0){break gc}x[d+4>>2]=a+3;b=v[a+2|0];L=b<<14&2080768|L;if((b|0)>=0){break gc}x[d+4>>2]=a+4;b=v[a+3|0];L=b<<21&266338304|L;if((b|0)>=0){break gc}x[d+4>>2]=a+5;L=y[a+4|0]<<28|L;}M=0;if((L|0)>0){while(1){b=x[d+4>>2];a=b+1|0;x[d+4>>2]=a;c=v[b|0];G=c&127;hc:{if((c|0)>=0){break hc}a=b+2|0;x[d+4>>2]=a;c=v[b+1|0];G=c<<7&16256|G;if((c|0)>=0){break hc}a=b+3|0;x[d+4>>2]=a;c=v[b+2|0];G=c<<14&2080768|G;if((c|0)>=0){break hc}a=b+4|0;x[d+4>>2]=a;c=v[b+3|0];G=c<<21&266338304|G;if((c|0)>=0){break hc}a=b+5|0;x[d+4>>2]=a;G=y[b+4|0]<<28|G;}x[d+4>>2]=a+1;b=v[a|0];C=b&127;ic:{if((b|0)>=0){break ic}x[d+4>>2]=a+2;b=v[a+1|0];C=b<<7&16256|C;if((b|0)>=0){break ic}x[d+4>>2]=a+3;b=v[a+2|0];C=b<<14&2080768|C;if((b|0)>=0){break ic}x[d+4>>2]=a+4;b=v[a+3|0];C=b<<21&266338304|C;if((b|0)>=0){break ic}x[d+4>>2]=a+5;C=y[a+4|0]<<28|C;}R=0;H=1;jc:{if((C|0)<=0){break jc}while(1){b=x[d+4>>2];x[d+4>>2]=b+1;c=v[b|0];a=c&127;kc:{if((c|0)>=0){break kc}x[d+4>>2]=b+2;c=v[b+1|0];a=c<<7&16256|a;if((c|0)>=0){break kc}x[d+4>>2]=b+3;c=v[b+2|0];a=c<<14&2080768|a;if((c|0)>=0){break kc}x[d+4>>2]=b+4;c=v[b+3|0];a=c<<21&266338304|a;if((c|0)>=0){break kc}x[d+4>>2]=b+5;a=y[b+4|0]<<28|a;}lc:{mc:{nc:{if(!a){x[e+16>>2]=1080;break nc}p=x[(x[k+200>>2]+(a<<2)|0)-4>>2];x[e+16>>2]=1080;if(p){break mc}}x[e+20>>2]=0;x[e+24>>2]=0;p=0;break lc}a=Ga(p);x[e+20>>2]=a;b=Da();a=sa[x[x[b>>2]+12>>2]](b,a+1|0,8064,57)|0;x[e+24>>2]=a;Fa(a,p,x[e+20>>2]+1|0);}J=Ob(U,G,e+16|0);x[e+16>>2]=1080;a=x[e+24>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,8064,201);}oc:{if(!J){j=x[e+36>>2];if((j|0)>0){h=j+1|0;f=0;b=j;c=b;while(1){i=c;c=c-1|0;m=c<<2;a=x[m+x[e+44>>2]>>2];if(a){sa[x[x[a>>2]+4>>2]](a);b=x[e+36>>2];}o=b;b=b-1|0;x[e+36>>2]=b;pc:{if(b>>>0<=c>>>0){break pc}a=c;if(o+(f-j|0)&1){a=x[e+44>>2];m=a+m|0;K=x[m>>2];O=a;a=i<<2;x[m>>2]=x[O+a>>2];x[a+x[e+44>>2]>>2]=K;a=i;}if((o|0)==(h-f|0)){break pc}while(1){o=x[e+44>>2];m=a<<2;K=o+m|0;N=x[K>>2];O=o;o=m+4|0;x[K>>2]=x[O+o>>2];x[o+x[e+44>>2]>>2]=N;O=o;o=x[e+44>>2];m=O+o|0;K=x[m>>2];O=o;a=a+2|0;o=a<<2;x[m>>2]=x[O+o>>2];x[o+x[e+44>>2]>>2]=K;if((a|0)!=(b|0)){continue}break}}f=f+1|0;if((i|0)>1){continue}break}}Ac(I,12398,p);break oc}a=x[J+40>>2];N=x[J+24>>2];o=N?(a>>>0)/3<<1:a;a=x[d+4>>2];x[d+4>>2]=a+1;b=v[a|0];f=b&127;qc:{if((b|0)>=0){break qc}x[d+4>>2]=a+2;b=v[a+1|0];f=b<<7&16256|f;if((b|0)>=0){break qc}x[d+4>>2]=a+3;b=v[a+2|0];f=b<<14&2080768|f;if((b|0)>=0){break qc}x[d+4>>2]=a+4;b=v[a+3|0];f=b<<21&266338304|f;if((b|0)>=0){break qc}x[d+4>>2]=a+5;f=y[a+4|0]<<28|f;}K=rf(Ma(60,3994,927),f);x[K+56>>2]=J;x[K+20>>2]=G;if(f){s=E(E(o>>>0)*E(1.75));rc:{if(E(F(s))>>0<=8?8:a;S=P<<2;V=o<<2;W=f-1|0;c=0;while(1){a=x[d+4>>2];x[d+4>>2]=a+1;b=y[a|0];x[d+4>>2]=a+2;i=y[a+1|0];x[d+4>>2]=a+3;j=y[a+2|0];x[d+4>>2]=a+4;h=y[a+3|0];x[e+28>>2]=0;x[e+20>>2]=0;x[e+24>>2]=0;x[e+16>>2]=13296;x[d+4>>2]=a+5;b=h|(j|(i<<8|b<<16))<<8;i=v[a+4|0];j=i&127;sc:{if((i|0)>=0){break sc}x[d+4>>2]=a+6;i=v[a+5|0];j=i<<7&16256|j;if((i|0)>=0){break sc}x[d+4>>2]=a+7;i=v[a+6|0];j=i<<14&2080768|j;if((i|0)>=0){break sc}x[d+4>>2]=a+8;i=v[a+7|0];j=i<<21&266338304|j;if((i|0)>=0){break sc}x[d+4>>2]=a+9;j=y[a+8|0]<<28|j;}s=(l(2,b),r());tc:{if(!j){if(N){x[e+20>>2]=o;if(!o){break tc}x[e+24>>2]=P;a=Da();a=sa[x[x[a>>2]+16>>2]](a,0,S,7693,82)|0;x[e+28>>2]=a;b=x[e+20>>2];if(b){Ha(a,0,b<<2);}Ha(a,0,V);break tc}x[e+20>>2]=0;a=x[J+40>>2];if(!a){break tc}x[e+24>>2]=a;b=Da();m=sa[x[x[b>>2]+16>>2]](b,0,a<<2,7693,94)|0;x[e+28>>2]=m;j=x[J+40>>2];if(!j){break tc}h=0;a=x[e+20>>2];while(1){b=x[J+48>>2]+(h<<2)|0;uc:{if(x[e+24>>2]==(a|0)){Y=B[b>>2];$=E(E(a>>>0)*E(1.75));vc:{if(E(F($))>>0<=8?8:a;x[e+24>>2]=a;b=Da();m=sa[x[x[b>>2]+16>>2]](b,m,a<<2,7693,106)|0;x[e+28>>2]=m;a=x[e+20>>2];B[(a<<2)+m>>2]=Y;j=x[J+40>>2];break uc}B[(a<<2)+m>>2]=B[b>>2];}a=a+1|0;x[e+20>>2]=a;h=h+1|0;if(j>>>0>h>>>0){continue}break}break tc}x[e+20>>2]=o;i=1;wc:{if(!o){h=0;p=0;break wc}x[e+24>>2]=P;a=Da();h=sa[x[x[a>>2]+16>>2]](a,0,S,7693,82)|0;x[e+28>>2]=h;p=x[e+20>>2];if(!p){p=0;break wc}i=0;Ha(h,0,p<<2);}b=x[d+4>>2];a=b+1|0;x[d+4>>2]=a;Q=v[b|0];m=Q&127;xc:{if((Q|0)>=0){break xc}a=b+2|0;x[d+4>>2]=a;Q=v[b+1|0];m=Q<<7&16256|m;if((Q|0)>=0){break xc}a=b+3|0;x[d+4>>2]=a;Q=v[b+2|0];m=Q<<14&2080768|m;if((Q|0)>=0){break xc}a=b+4|0;x[d+4>>2]=a;Q=v[b+3|0];m=Q<<21&266338304|m;if((Q|0)>=0){break xc}a=b+5|0;x[d+4>>2]=a;m=y[b+4|0]<<28|m;}j=j+m|0;yc:{if(Z!=E(1)){if(j>>>0<=m>>>0){break yc}while(1){x[d+4>>2]=a+1;Q=y[a|0];x[d+4>>2]=a+2;T=y[a+1|0];x[d+4>>2]=a+3;X=y[a+2|0];b=a+4|0;x[d+4>>2]=b;B[(m<<2)+h>>2]=Z*(l(2,y[a+3|0]|(X|(T<<8|Q<<16))<<8),r());a=b;m=m+1|0;if((j|0)!=(m|0)){continue}break}break yc}if(j>>>0<=m>>>0){break yc}while(1){x[d+4>>2]=a+1;Q=y[a|0];x[d+4>>2]=a+2;T=y[a+1|0];x[d+4>>2]=a+3;X=y[a+2|0];b=a+4|0;x[d+4>>2]=b;x[(m<<2)+h>>2]=y[a+3|0]|(X|(T<<8|Q<<16))<<8;a=b;m=m+1|0;if((j|0)!=(m|0)){continue}break}}if(i|N){break tc}i=x[J+48>>2];j=0;a=0;if(p-1>>>0>=3){Q=p&-4;b=0;while(1){m=a<<2;T=m+h|0;B[T>>2]=B[i+m>>2]+B[T>>2];T=m|4;X=T+h|0;B[X>>2]=B[i+T>>2]+B[X>>2];T=m|8;X=T+h|0;B[X>>2]=B[i+T>>2]+B[X>>2];m=m|12;T=m+h|0;B[T>>2]=B[i+m>>2]+B[T>>2];a=a+4|0;b=b+4|0;if((Q|0)!=(b|0)){continue}break}}b=p&3;if(!b){break tc}while(1){m=a<<2;p=m+h|0;B[p>>2]=B[i+m>>2]+B[p>>2];a=a+1|0;j=j+1|0;if((b|0)!=(j|0)){continue}break}}qf(K,c,s,e+16|0);zc:{if(c>>>0>=W>>>0){break zc}a=x[d+4>>2];x[d+4>>2]=a+1;Ac:{switch(y[a|0]-1|0){case 0:x[x[K+16>>2]+D(c,76)>>2]=1065353216;break zc;case 1:break Ac;default:break zc}}x[d+4>>2]=a+2;b=y[a+1|0];x[d+4>>2]=a+3;i=y[a+2|0];x[d+4>>2]=a+4;j=y[a+3|0];x[d+4>>2]=a+5;h=y[a+4|0];x[d+4>>2]=a+6;m=y[a+5|0];x[d+4>>2]=a+7;p=y[a+6|0];x[d+4>>2]=a+8;Q=y[a+7|0];x[d+4>>2]=a+9;T=y[a+8|0];x[d+4>>2]=a+10;X=y[a+9|0];x[d+4>>2]=a+11;aa=y[a+10|0];x[d+4>>2]=a+12;ba=y[a+11|0];x[d+4>>2]=a+13;ca=y[a+12|0];x[d+4>>2]=a+14;da=y[a+13|0];x[d+4>>2]=a+15;ea=y[a+14|0];x[d+4>>2]=a+16;O=y[a+15|0];x[d+4>>2]=a+17;nb(K,c,(l(2,h|(j|(i<<8|b<<16))<<8),r()),(l(2,T|(Q|(p<<8|m<<16))<<8),r()),(l(2,(aa<<8|X<<16|ba)<<8|ca),r()),(l(2,y[a+16|0]|(ea<<8|da<<16|O)<<8),r()));}x[e+20>>2]=0;x[e+16>>2]=13296;a=x[e+28>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,7693,206);}c=c+1|0;if((f|0)!=(c|0)){continue}break}}a=x[e+36>>2];Bc:{if((a|0)==x[e+40>>2]){s=E(E(a>>>0)*E(1.75));Cc:{if(E(F(s))>>0<=8?8:a;x[e+40>>2]=a;b=x[e+44>>2];c=Da();b=sa[x[x[c>>2]+16>>2]](c,b,a<<2,7693,106)|0;x[e+44>>2]=b;a=x[e+36>>2];b=b+(a<<2)|0;break Bc}b=x[e+44>>2]+(a<<2)|0;}x[b>>2]=K;x[e+36>>2]=a+1;s=B[(x[K+36>>2]+(f<<2)|0)-4>>2];t=t>s?t:s;}if(J){R=R+1|0;H=(R|0)<(C|0);if((C|0)==(R|0)){break jc}continue}break}if(!H){break jc}a=0;if(!w){break ec}break Ka}M=M+1|0;if((M|0)!=(L|0)){continue}break}}q=q+1|0;w=(q|0)<(u|0);if((q|0)!=(u|0)){continue}break}}b=x[d+4>>2];a=b+1|0;x[d+4>>2]=a;c=v[b|0];w=c&127;Dc:{if((c|0)>=0){break Dc}a=b+2|0;x[d+4>>2]=a;c=v[b+1|0];w=c<<7&16256|w;if((c|0)>=0){break Dc}a=b+3|0;x[d+4>>2]=a;c=v[b+2|0];w=c<<14&2080768|w;if((c|0)>=0){break Dc}a=b+4|0;x[d+4>>2]=a;c=v[b+3|0];w=c<<21&266338304|w;if((c|0)>=0){break Dc}a=b+5|0;x[d+4>>2]=a;w=y[b+4|0]<<28|w;}if(w){u=pf(Ma(36,3994,974),w);o=x[k+36>>2];s=E(E(o>>>0)*E(1.75));Ec:{if(E(F(s))>>0<=8?8:a;R=H<<2;q=o-1|0;L=o&1;G=o<<2;p=0;while(1){a=x[d+4>>2];x[d+4>>2]=a+1;b=y[a|0];x[d+4>>2]=a+2;c=y[a+1|0];x[d+4>>2]=a+3;f=y[a+2|0];x[d+4>>2]=a+4;J=y[a+3|0];x[d+4>>2]=a+5;b=b<<16;c=c<<8;j=v[a+4|0];i=j&127;Fc:{if((j|0)>=0){break Fc}x[d+4>>2]=a+6;j=v[a+5|0];i=j<<7&16256|i;if((j|0)>=0){break Fc}x[d+4>>2]=a+7;j=v[a+6|0];i=j<<14&2080768|i;if((j|0)>=0){break Fc}x[d+4>>2]=a+8;j=v[a+7|0];i=j<<21&266338304|i;if((j|0)>=0){break Fc}x[d+4>>2]=a+9;i=y[a+8|0]<<28|i;}b=b|c;x[e+24>>2]=0;x[e+28>>2]=0;x[e+20>>2]=o;x[e+16>>2]=13184;Gc:{if(!o){break Gc}x[e+24>>2]=H;a=Da();a=sa[x[x[a>>2]+16>>2]](a,0,R,7693,82)|0;x[e+28>>2]=a;c=x[e+20>>2];if(c){Ha(a,0,c<<2);}if((o|0)<=0){break Gc}Ha(a,255,G);}b=b|f;x[e+8>>2]=0;x[e+12>>2]=0;x[e>>2]=13184;a=o-i|0;x[e+4>>2]=a;Hc:{if((i|0)==(o|0)){break Hc}s=E(E(a>>>0)*E(1.75));Ic:{if(E(F(s))>>0<=8?8:a;x[e+8>>2]=a;c=Da();a=sa[x[x[c>>2]+16>>2]](c,0,a<<2,7693,82)|0;x[e+12>>2]=a;c=x[e+4>>2];if(!c){break Hc}Ha(a,0,c<<2);}M=b<<8;Jc:{if(!i){a=0;h=0;break Jc}m=x[d+4>>2];f=0;K=x[e+28>>2];C=x[e+12>>2];h=0;a=0;while(1){c=m+1|0;x[d+4>>2]=c;b=v[m|0];j=b&127;Kc:{if((b|0)>=0){break Kc}c=m+2|0;x[d+4>>2]=c;b=v[m+1|0];j=b<<7&16256|j;if((b|0)>=0){break Kc}c=m+3|0;x[d+4>>2]=c;b=v[m+2|0];j=b<<14&2080768|j;if((b|0)>=0){break Kc}c=m+4|0;x[d+4>>2]=c;b=v[m+3|0];j=b<<21&266338304|j;if((b|0)>=0){break Kc}c=m+5|0;x[d+4>>2]=c;j=y[m+4|0]<<28|j;}Lc:{if((a|0)==(j|0)){j=a;break Lc}b=(a^-1)+j|0;m=0;N=j-a&3;if(N){while(1){x[C+(h<<2)>>2]=a;h=h+1|0;a=a+1|0;m=m+1|0;if((N|0)!=(m|0)){continue}break}}if(b>>>0<3){break Lc}while(1){b=C+(h<<2)|0;x[b>>2]=a;x[b+12>>2]=a+3;x[b+8>>2]=a+2;x[b+4>>2]=a+1;h=h+4|0;a=a+4|0;if((j|0)!=(a|0)){continue}break}}m=c+1|0;x[d+4>>2]=m;a=v[c|0];b=a&127;Mc:{if((a|0)>=0){break Mc}m=c+2|0;x[d+4>>2]=m;a=v[c+1|0];b=a<<7&16256|b;if((a|0)>=0){break Mc}m=c+3|0;x[d+4>>2]=m;a=v[c+2|0];b=a<<14&2080768|b;if((a|0)>=0){break Mc}m=c+4|0;x[d+4>>2]=m;a=v[c+3|0];b=a<<21&266338304|b;if((a|0)>=0){break Mc}m=c+5|0;x[d+4>>2]=m;b=y[c+4|0]<<28|b;}a=j+1|0;x[K+(b+j<<2)>>2]=j;f=f+1|0;if((i|0)!=(f|0)){continue}break}}i=J|M;Nc:{if(a>>>0>=o>>>0){break Nc}b=q-a|0;m=0;c=x[e+12>>2];f=o-a&3;if(f){while(1){x[c+(h<<2)>>2]=a;h=h+1|0;a=a+1|0;m=m+1|0;if((f|0)!=(m|0)){continue}break}}if(b>>>0<3){break Nc}while(1){b=c+(h<<2)|0;x[b>>2]=a;x[b+12>>2]=a+3;x[b+8>>2]=a+2;x[b+4>>2]=a+1;h=h+4|0;a=a+4|0;if((o|0)!=(a|0)){continue}break}}s=(l(2,i),r());Oc:{if((o|0)<=0){break Oc}b=x[e+12>>2];c=x[e+28>>2];if(L){a=c+(q<<2)|0;if(x[a>>2]==-1){h=h-1|0;x[a>>2]=x[b+(h<<2)>>2];}a=q;}else {a=o;}if(!q){break Oc}while(1){i=a-1|0;f=c+(i<<2)|0;if(x[f>>2]==-1){h=h-1|0;x[f>>2]=x[b+(h<<2)>>2];}a=a-2|0;f=c+(a<<2)|0;if(x[f>>2]==-1){h=h-1|0;x[f>>2]=x[b+(h<<2)>>2];}if(i>>>0>1){continue}break}}of(u,p,s,e+16|0);x[e+4>>2]=0;x[e>>2]=13184;a=x[e+12>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,7693,206);}x[e+20>>2]=0;x[e+16>>2]=13184;a=x[e+28>>2];if(a){b=Da();sa[x[x[b>>2]+20>>2]](b,a,7693,206);}p=p+1|0;if((w|0)!=(p|0)){continue}break}a=x[e+36>>2];Pc:{if((a|0)==x[e+40>>2]){s=E(E(a>>>0)*E(1.75));Qc:{if(E(F(s))>>0<=8?8:a;x[e+40>>2]=a;b=x[e+44>>2];c=Da();b=sa[x[x[c>>2]+16>>2]](c,b,a<<2,7693,106)|0;x[e+44>>2]=b;a=x[e+36>>2];b=b+(a<<2)|0;break Pc}b=x[e+44>>2]+(a<<2)|0;}x[b>>2]=u;x[e+36>>2]=a+1;s=B[(x[u+16>>2]+(w<<2)|0)-4>>2];t=t>s?t:s;a=x[d+4>>2];}x[d+4>>2]=a+1;b=v[a|0];i=b&127;Rc:{if((b|0)>=0){break Rc}x[d+4>>2]=a+2;b=v[a+1|0];i=b<<7&16256|i;if((b|0)>=0){break Rc}x[d+4>>2]=a+3;b=v[a+2|0];i=b<<14&2080768|i;if((b|0)>=0){break Rc}x[d+4>>2]=a+4;b=v[a+3|0];i=b<<21&266338304|i;if((b|0)>=0){break Rc}x[d+4>>2]=a+5;i=y[a+4|0]<<28|i;}if((i|0)>0){j=jf(Ma(36,3994,1016),i);b=0;while(1){a=x[d+4>>2];x[d+4>>2]=a+1;c=y[a|0];x[d+4>>2]=a+2;f=y[a+1|0];x[d+4>>2]=a+3;o=y[a+2|0];x[d+4>>2]=a+4;q=y[a+3|0];x[d+4>>2]=a+5;s=(l(2,q|(o|(f<<8|c<<16))<<8),r());c=v[a+4|0];h=c&127;Sc:{if((c|0)>=0){break Sc}x[d+4>>2]=a+6;c=v[a+5|0];h=c<<7&16256|h;if((c|0)>=0){break Sc}x[d+4>>2]=a+7;c=v[a+6|0];h=c<<14&2080768|h;if((c|0)>=0){break Sc}x[d+4>>2]=a+8;c=v[a+7|0];h=c<<21&266338304|h;if((c|0)>=0){break Sc}x[d+4>>2]=a+9;h=y[a+8|0]<<28|h;}o=x[x[k+80>>2]+(h<<2)>>2];c=nf(Ma(40,3994,1021),s,o);f=x[d+4>>2];a=f+1|0;x[d+4>>2]=a;q=v[f|0];m=q&127;Tc:{if((q|0)>=0){break Tc}a=f+2|0;x[d+4>>2]=a;q=v[f+1|0];m=q<<7&16256|m;if((q|0)>=0){break Tc}a=f+3|0;x[d+4>>2]=a;q=v[f+2|0];m=q<<14&2080768|m;if((q|0)>=0){break Tc}a=f+4|0;x[d+4>>2]=a;q=v[f+3|0];m=q<<21&266338304|m;if((q|0)>=0){break Tc}a=f+5|0;x[d+4>>2]=a;m=y[f+4|0]<<28|m;}x[c+12>>2]=0-(m&1)^m>>>1;x[d+4>>2]=a+1;f=y[a|0];x[d+4>>2]=a+2;q=y[a+1|0];x[d+4>>2]=a+3;h=y[a+2|0];x[d+4>>2]=a+4;x[c+16>>2]=y[a+3|0]|(h|(q<<8|f<<16))<<8;x[d+4>>2]=a+5;Uc:{Vc:{Wc:{q=y[a+4|0];Xc:{if(q){x[d+4>>2]=a+6;f=v[a+5|0];m=f&127;Yc:{if((f|0)>=0){break Yc}x[d+4>>2]=a+7;f=v[a+6|0];m=f<<7&16256|m;if((f|0)>=0){break Yc}x[d+4>>2]=a+8;f=v[a+7|0];m=f<<14&2080768|m;if((f|0)>=0){break Yc}x[d+4>>2]=a+9;f=v[a+8|0];m=f<<21&266338304|m;if((f|0)>=0){break Yc}x[d+4>>2]=a+10;m=y[a+9|0]<<28|m;}if(m){break Wc}x[e+16>>2]=1080;break Xc}a=x[o+32>>2];x[e+16>>2]=1080;if(a){break Vc}}x[e+20>>2]=0;x[e+24>>2]=0;a=0;break Uc}a=Da();a=sa[x[x[a>>2]+8>>2]](a,m,3994,373)|0;f=m-1|0;h=Fa(a,x[d+4>>2],f);x[d+4>>2]=f+x[d+4>>2];v[f+h|0]=0;x[e+16>>2]=1080;}f=Ga(a);x[e+20>>2]=f;h=Da();f=sa[x[x[h>>2]+12>>2]](h,f+1|0,8064,57)|0;x[e+24>>2]=f;Fa(f,a,x[e+20>>2]+1|0);}Zc:{if((c|0)==(e-4|0)){break Zc}f=x[c+28>>2];if(f){h=Da();sa[x[x[h>>2]+20>>2]](h,f,8064,122);}if(!x[e+24>>2]){x[c+24>>2]=0;x[c+28>>2]=0;break Zc}f=x[e+20>>2];x[c+24>>2]=f;h=Da();f=sa[x[x[h>>2]+12>>2]](h,f+1|0,8064,129)|0;x[c+28>>2]=f;Fa(f,x[e+24>>2],x[e+20>>2]+1|0);}x[e+16>>2]=1080;f=x[e+24>>2];if(f){h=Da();sa[x[x[h>>2]+20>>2]](h,f,8064,201);}if(q){f=Da();sa[x[x[f>>2]+20>>2]](f,a,3994,1028);}if(x[o+40>>2]){a=x[d+4>>2];x[d+4>>2]=a+1;f=y[a|0];x[d+4>>2]=a+2;o=y[a+1|0];x[d+4>>2]=a+3;q=y[a+2|0];x[d+4>>2]=a+4;x[c+32>>2]=y[a+3|0]|(q|(o<<8|f<<16))<<8;x[d+4>>2]=a+5;f=y[a+4|0];x[d+4>>2]=a+6;o=y[a+5|0];x[d+4>>2]=a+7;q=y[a+6|0];x[d+4>>2]=a+8;x[c+36>>2]=y[a+7|0]|(q|(o<<8|f<<16))<<8;}a=b<<2;B[a+x[j+16>>2]>>2]=B[c+8>>2];x[a+x[j+32>>2]>>2]=c;b=b+1|0;if((i|0)!=(b|0)){continue}break}b=x[e+36>>2];_c:{if((b|0)==x[e+40>>2]){s=E(E(b>>>0)*E(1.75));$c:{if(E(F(s))>>0<=8?8:a;x[e+40>>2]=a;b=x[e+44>>2];c=Da();a=sa[x[x[c>>2]+16>>2]](c,b,a<<2,7693,106)|0;x[e+44>>2]=a;b=x[e+36>>2];a=a+(b<<2)|0;break _c}a=x[e+44>>2]+(b<<2)|0;}x[a>>2]=j;x[e+36>>2]=b+1;s=B[(x[j+16>>2]+(i<<2)|0)-4>>2];t=t>s?t:s;}a=Ma(48,3994,1041);x[e+16>>2]=1080;ad:{if(!x[z+12>>2]){x[e+20>>2]=0;x[e+24>>2]=0;break ad}b=x[z+8>>2];x[e+20>>2]=b;c=Da();b=sa[x[x[c>>2]+12>>2]](c,b+1|0,8064,71)|0;x[e+24>>2]=b;Fa(b,x[z+12>>2],x[z+8>>2]+1|0);}a=gd(a,e+16|0,e+32|0,t);x[e+16>>2]=1080;b=x[e+24>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,8064,201);}}x[e+36>>2]=0;x[e+32>>2]=12676;b=x[e+44>>2];if(b){c=Da();sa[x[x[c>>2]+20>>2]](c,b,7693,206);}qa=e+48|0;bd:{if(!a){sa[x[x[d>>2]+4>>2]](d);sa[x[x[k>>2]+4>>2]](k);break bd}x[x[k+96>>2]+(g<<2)>>2]=a;}x[z+4>>2]=1080;b=x[z+12>>2];if(b){e=Da();sa[x[x[e>>2]+20>>2]](e,b,8064,201);}if(a){g=g+1|0;if((n|0)==(g|0)){break Ga}continue}break}k=0;break d}sa[x[x[d>>2]+4>>2]](d);}qa=z+16|0;Ee(I);qa=_+48|0;return k|0} + function tg(){var a=0,b=0;P(20256,20304,20360,0,20376,1681,20379,0,20379,0,2885,20381,1682);Q(20256,1,20384,20376,1683,1684);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1685;N(20256,7273,3,20388,20400,1686,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1687;N(20256,8385,4,20416,20432,1688,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1689;N(20256,8387,2,20440,20448,1690,a|0,0,0);a=Ea(4);x[a>>2]=1691;N(20256,2777,3,20452,20492,1692,a|0,0,0);a=Ea(4);x[a>>2]=1693;N(20256,2750,4,20512,20528,1694,a|0,0,0);P(20588,20652,20724,0,20376,1695,20379,0,20379,0,2879,20381,1696);Q(20588,1,20740,20376,1697,1698);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1699;N(20588,7273,3,20744,20756,1700,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1701;N(20588,8385,4,20768,20784,1702,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1703;N(20588,8387,2,20792,20448,1704,a|0,0,0);a=Ea(4);x[a>>2]=1705;N(20588,2777,3,20800,20492,1706,a|0,0,0);a=Ea(4);x[a>>2]=1707;N(20588,2750,4,20816,20832,1708,a|0,0,0);P(20876,20924,20980,0,20376,1709,20379,0,20379,0,1821,20381,1710);Q(20876,1,20996,20376,1711,1712);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1713;N(20876,7273,3,21e3,20756,1714,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1715;N(20876,8385,4,21024,20784,1716,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1717;N(20876,8387,2,21040,20448,1718,a|0,0,0);a=Ea(4);x[a>>2]=1719;N(20876,2777,3,21048,20492,1720,a|0,0,0);a=Ea(4);x[a>>2]=1721;N(20876,2750,4,21072,20832,1722,a|0,0,0);P(21176,21272,21376,0,20376,1723,20379,0,20379,0,8262,20381,1724);Q(21176,1,21392,20376,1725,1726);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1727;N(21176,7273,3,21396,20756,1728,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1729;N(21176,8385,4,21488,20784,1730,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1731;N(21176,8387,2,21504,20448,1732,a|0,0,0);a=Ea(4);x[a>>2]=1733;N(21176,2777,3,21512,20492,1734,a|0,0,0);a=Ea(4);x[a>>2]=1735;N(21176,2750,4,21536,20832,1736,a|0,0,0);P(21608,21672,21748,0,20376,1737,20379,0,20379,0,10575,20381,1738);Q(21608,1,21764,20376,1739,1740);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1741;N(21608,7273,3,21768,20756,1742,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1743;N(21608,8385,4,21824,20784,1744,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1745;N(21608,8387,2,21840,20448,1746,a|0,0,0);a=Ea(4);x[a>>2]=1747;N(21608,2777,3,21848,20492,1748,a|0,0,0);a=Ea(4);x[a>>2]=1749;N(21608,2750,4,21872,20832,1750,a|0,0,0);P(21940,22e3,22072,0,20376,1751,20379,0,20379,0,8897,20381,1752);Q(21940,1,22088,20376,1753,1754);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1755;N(21940,7273,3,22092,20756,1756,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1757;N(21940,8385,4,22144,20784,1758,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1759;N(21940,8387,2,22160,20448,1760,a|0,0,0);a=Ea(4);x[a>>2]=1761;N(21940,2777,3,22168,20492,1762,a|0,0,0);a=Ea(4);x[a>>2]=1763;N(21940,2750,4,22192,20832,1764,a|0,0,0);P(22280,22364,22456,0,20376,1765,20379,0,20379,0,1110,20381,1766);Q(22280,1,22472,20376,1767,1768);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1769;N(22280,7273,3,22476,20756,1770,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1771;N(22280,8385,4,22592,20784,1772,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1773;N(22280,8387,2,22608,20448,1774,a|0,0,0);a=Ea(4);x[a>>2]=1775;N(22280,2777,3,22616,20492,1776,a|0,0,0);a=Ea(4);x[a>>2]=1777;N(22280,2750,4,22640,20832,1778,a|0,0,0);P(22712,22776,22852,0,20376,1779,20379,0,20379,0,10373,20381,1780);Q(22712,1,22868,20376,1781,1782);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1783;N(22712,7273,3,22872,20756,1784,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1785;N(22712,8385,4,22928,20784,1786,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1787;N(22712,8387,2,22944,20448,1788,a|0,0,0);a=Ea(4);x[a>>2]=1789;N(22712,2777,3,22952,20492,1790,a|0,0,0);a=Ea(4);x[a>>2]=1791;N(22712,2750,4,22976,20832,1792,a|0,0,0);P(23044,23104,23176,0,20376,1793,20379,0,20379,0,1908,20381,1794);Q(23044,1,23192,20376,1795,1796);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1797;N(23044,7273,3,23196,20756,1798,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1799;N(23044,8385,4,23248,20784,1800,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1801;N(23044,8387,2,23264,20448,1802,a|0,0,0);a=Ea(4);x[a>>2]=1803;N(23044,2777,3,23272,20492,1804,a|0,0,0);a=Ea(4);x[a>>2]=1805;N(23044,2750,4,23296,20832,1806,a|0,0,0);P(23368,23436,23512,0,20376,1807,20379,0,20379,0,6665,20381,1808);Q(23368,1,23528,20376,1809,1810);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1811;N(23368,7273,3,23532,20756,1812,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1813;N(23368,8385,4,23584,20784,1814,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1815;N(23368,8387,2,23600,20448,1816,a|0,0,0);a=Ea(4);x[a>>2]=1817;N(23368,2777,3,23608,20492,1818,a|0,0,0);a=Ea(4);x[a>>2]=1819;N(23368,2750,4,23632,20832,1820,a|0,0,0);P(23704,23768,23844,0,20376,1821,20379,0,20379,0,9043,20381,1822);Q(23704,1,23860,20376,1823,1824);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1825;N(23704,7273,3,23864,20756,1826,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1827;N(23704,8385,4,23920,20784,1828,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1829;N(23704,8387,2,23936,20448,1830,a|0,0,0);a=Ea(4);x[a>>2]=1831;N(23704,2777,3,23944,20492,1832,a|0,0,0);a=Ea(4);x[a>>2]=1833;N(23704,2750,4,23968,20832,1834,a|0,0,0);P(24036,24096,24168,0,20376,1835,20379,0,20379,0,6967,20381,1836);Q(24036,1,24184,20376,1837,1838);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1839;N(24036,7273,3,24188,20756,1840,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1841;N(24036,8385,4,24240,20784,1842,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1843;N(24036,8387,2,24256,20448,1844,a|0,0,0);a=Ea(4);x[a>>2]=1845;N(24036,2777,3,24264,20492,1846,a|0,0,0);a=Ea(4);x[a>>2]=1847;N(24036,2750,4,24288,20832,1848,a|0,0,0);P(24360,24428,24504,0,20376,1849,20379,0,20379,0,10487,20381,1850);Q(24360,1,24520,20376,1851,1852);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1853;N(24360,7273,3,24524,20756,1854,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1855;N(24360,8385,4,24576,20784,1856,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1857;N(24360,8387,2,24592,20448,1858,a|0,0,0);a=Ea(4);x[a>>2]=1859;N(24360,2777,3,24600,20492,1860,a|0,0,0);a=Ea(4);x[a>>2]=1861;N(24360,2750,4,24624,20832,1862,a|0,0,0);P(24692,24756,24828,0,20376,1863,20379,0,20379,0,2288,20381,1864);Q(24692,1,24844,20376,1865,1866);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1867;N(24692,7273,3,24848,20756,1868,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1869;N(24692,8385,4,24896,20784,1870,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1871;N(24692,8387,2,24912,20448,1872,a|0,0,0);a=Ea(4);x[a>>2]=1873;N(24692,2777,3,24920,20492,1874,a|0,0,0);a=Ea(4);x[a>>2]=1875;N(24692,2750,4,24944,20832,1876,a|0,0,0);P(25024,25096,25176,0,20376,1877,20379,0,20379,0,10388,20381,1878);Q(25024,1,25192,20376,1879,1880);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1881;N(25024,7273,3,25196,20756,1882,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1883;N(25024,8385,4,25264,20784,1884,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1885;N(25024,8387,2,25280,20448,1886,a|0,0,0);a=Ea(4);x[a>>2]=1887;N(25024,2777,3,25288,20492,1888,a|0,0,0);a=Ea(4);x[a>>2]=1889;N(25024,2750,4,25312,20832,1890,a|0,0,0);P(25388,25460,25540,0,20376,1891,20379,0,20379,0,2166,20381,1892);Q(25388,1,25556,20376,1893,1894);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1895;N(25388,7273,3,25560,20756,1896,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1897;N(25388,8385,4,25616,20784,1898,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1899;N(25388,8387,2,25632,20448,1900,a|0,0,0);a=Ea(4);x[a>>2]=1901;N(25388,2777,3,25640,20492,1902,a|0,0,0);a=Ea(4);x[a>>2]=1903;N(25388,2750,4,25664,20832,1904,a|0,0,0);P(25744,25816,25896,0,20376,1905,20379,0,20379,0,2202,20381,1906);Q(25744,1,25912,20376,1907,1908);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1909;N(25744,7273,3,25916,20756,1910,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1911;N(25744,8385,4,25984,20784,1912,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1913;N(25744,8387,2,26e3,20448,1914,a|0,0,0);a=Ea(4);x[a>>2]=1915;N(25744,2777,3,26008,20492,1916,a|0,0,0);a=Ea(4);x[a>>2]=1917;N(25744,2750,4,26032,20832,1918,a|0,0,0);P(26116,26192,26280,0,20376,1919,20379,0,20379,0,2103,20381,1920);Q(26116,1,26296,20376,1921,1922);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1923;N(26116,7273,3,26300,20756,1924,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1925;N(26116,8385,4,26368,20784,1926,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1927;N(26116,8387,2,26384,20448,1928,a|0,0,0);a=Ea(4);x[a>>2]=1929;N(26116,2777,3,26392,20492,1930,a|0,0,0);a=Ea(4);x[a>>2]=1931;N(26116,2750,4,26416,20832,1932,a|0,0,0);P(26496,26572,26656,0,20376,1933,20379,0,20379,0,10439,20381,1934);Q(26496,1,26672,20376,1935,1936);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1937;N(26496,7273,3,26676,20756,1938,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1939;N(26496,8385,4,26736,20784,1940,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1941;N(26496,8387,2,26752,20448,1942,a|0,0,0);a=Ea(4);x[a>>2]=1943;N(26496,2777,3,26760,20492,1944,a|0,0,0);a=Ea(4);x[a>>2]=1945;N(26496,2750,4,26784,20832,1946,a|0,0,0);P(26872,26952,27044,0,20376,1947,20379,0,20379,0,10409,20381,1948);Q(26872,1,27060,20376,1949,1950);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1951;N(26872,7273,3,27064,20756,1952,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1953;N(26872,8385,4,27136,20784,1954,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1955;N(26872,8387,2,27152,20448,1956,a|0,0,0);a=Ea(4);x[a>>2]=1957;N(26872,2777,3,27160,20492,1958,a|0,0,0);a=Ea(4);x[a>>2]=1959;N(26872,2750,4,27184,20832,1960,a|0,0,0);P(27268,27344,27428,0,20376,1961,20379,0,20379,0,10462,20381,1962);Q(27268,1,27444,20376,1963,1964);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1965;N(27268,7273,3,27448,20756,1966,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1967;N(27268,8385,4,27520,20784,1968,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1969;N(27268,8387,2,27536,20448,1970,a|0,0,0);a=Ea(4);x[a>>2]=1971;N(27268,2777,3,27544,20492,1972,a|0,0,0);a=Ea(4);x[a>>2]=1973;N(27268,2750,4,27568,20832,1974,a|0,0,0);P(27644,27712,27788,0,20376,1975,20379,0,20379,0,1147,20381,1976);Q(27644,1,27804,20376,1977,1978);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1979;N(27644,7273,3,27808,20756,1980,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1981;N(27644,8385,4,27872,20784,1982,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1983;N(27644,8387,2,27888,20448,1984,a|0,0,0);a=Ea(4);x[a>>2]=1985;N(27644,2777,3,27896,20492,1986,a|0,0,0);a=Ea(4);x[a>>2]=1987;N(27644,2750,4,27920,20832,1988,a|0,0,0);X(27960,8821,4,0);R(27960,8620,0);R(27960,8657,1);R(27960,9498,2);R(27960,3982,3);R(27960,2338,4);R(27960,3737,5);R(27960,7123,6);R(27960,2266,7);R(27960,3839,8);R(27960,2153,9);R(27960,2083,10);R(27960,6202,11);R(27960,8320,12);R(27960,1307,13);R(27960,3761,14);X(27992,6270,4,0);R(27992,7049,0);R(27992,1687,1);X(28020,9920,4,0);R(28020,3988,0);R(28020,1701,1);R(28020,9886,2);R(28020,10335,3);X(28048,9808,4,0);R(28048,7219,0);R(28048,8429,1);R(28048,1252,2);R(28048,7032,3);X(28076,8783,4,0);R(28076,1841,0);R(28076,1893,1);R(28076,9925,2);R(28076,8674,3);R(28076,8600,4);R(28076,2266,5);X(28108,9674,4,0);R(28108,7219,0);R(28108,6740,1);R(28108,6340,2);R(28108,9512,3);R(28108,6383,4);X(28140,9641,4,0);R(28140,10187,0);R(28140,2645,1);X(28172,9731,4,0);R(28172,7468,0);R(28172,10187,1);R(28172,2645,2);X(28204,9771,4,0);R(28204,2621,0);R(28204,7007,1);R(28204,9531,2);X(28236,3803,4,0);R(28236,6096,0);R(28236,1759,1);R(28236,3975,2);R(28236,6064,3);R(28236,1726,4);R(28236,1747,5);R(28236,3933,6);R(28236,3963,7);X(28268,6052,4,0);R(28268,2897,0);R(28268,9580,1);R(28268,2905,2);X(28304,8793,4,0);R(28304,6839,0);R(28304,1291,1);R(28304,7637,2);R(28304,7631,3);R(28304,7569,4);R(28304,2077,5);R(28304,8303,6);P(28332,28364,28400,0,20376,373,20379,0,20379,0,3322,20381,374);W(28332,11117,53192,15904,28416,375,0,0);W(28332,12023,53192,15908,28416,375,0,0);W(28332,8378,53192,15916,28416,375,0,0);W(28332,3305,53192,15916,28416,375,0,0);W(28332,10339,53192,15912,28416,375,0,0);W(28332,3305,53192,15912,28416,375,0,0);S(28332,3627,2,28420,28428,376,377,0);S(28332,7055,2,28420,28428,376,378,0);S(28332,6034,4,28432,28448,379,380,0);S(28332,9894,3,28456,28468,381,382,0);S(28332,12014,3,28456,28468,381,383,0);S(28332,3218,2,28420,28428,376,384,0);S(28332,6903,2,28420,28428,376,385,0);S(28332,1801,2,28420,28428,376,386,0);S(28332,3217,2,28420,28428,376,387,0);S(28332,8371,2,28420,28428,376,388,0);S(28332,8364,2,28420,28428,376,389,0);S(28332,7043,2,28476,28484,390,391,0);S(28332,7154,1,28488,28416,392,393,0);S(28332,3902,3,28456,28468,381,394,0);S(28332,7294,4,28432,28448,379,395,0);S(28332,1671,3,28456,28468,381,396,0);P(14920,28508,28544,0,20376,397,20379,0,20379,0,3777,20381,398);Q(14920,1,28560,20376,399,400);Q(14920,5,28576,28596,401,402);a=Ea(8);x[a+4>>2]=0;x[a>>2]=403;N(14920,2750,6,28608,28632,404,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=405;N(14920,10335,6,28608,28632,404,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=406;N(14920,6034,2,28640,20448,407,a|0,0,0);a=Ea(4);x[a>>2]=4;b=Ea(4);x[b>>2]=4;T(14920,3986,53192,28648,408,a|0,53192,20400,409,b|0);a=Ea(4);x[a>>2]=8;b=Ea(4);x[b>>2]=8;T(14920,8383,53192,28648,408,a|0,53192,20400,409,b|0);a=Ea(4);x[a>>2]=12;b=Ea(4);x[b>>2]=12;T(14920,10367,53192,28648,408,a|0,53192,20400,409,b|0);a=Ea(4);x[a>>2]=16;b=Ea(4);x[b>>2]=16;T(14920,10643,53192,28648,408,a|0,53192,20400,409,b|0);P(28676,28712,28756,0,20376,410,20379,0,20379,0,6756,20381,411);a=Ea(8);x[a>>2]=0;x[a+4>>2]=1;N(28676,1237,3,28772,28784,412,a|0,1,0);P(19692,28816,28860,0,20376,413,20379,0,20379,0,3724,20381,414);Q(19692,1,28876,20376,415,416);a=Ea(8);x[a+4>>2]=0;x[a>>2]=417;N(19692,8645,3,28880,20492,418,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=419;N(19692,8682,4,28896,20832,420,a|0,0,0);P(14976,25236,28940,0,20376,421,20379,0,20379,0,10472,20381,422);Q(14976,2,28956,20448,423,424);a=Ea(4);x[a>>2]=425;N(14976,9449,2,28964,20448,426,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=427;N(14976,3871,2,28972,20448,428,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=429;N(14976,3862,3,28980,20756,430,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=431;N(14976,10236,2,28992,20448,432,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=433;N(14976,10220,3,29e3,20756,434,a|0,0,0);P(15688,26716,29044,14976,20376,435,20376,436,20376,437,10445,20381,438);Q(15688,2,29060,20448,439,440);a=Ea(4);x[a>>2]=441;N(15688,3400,2,29068,20448,442,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=443;N(15688,2771,2,29076,20448,444,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=445;N(15688,2761,3,29084,20756,446,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=447;N(15688,6300,2,29096,20448,448,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=449;N(15688,6283,3,29104,20756,450,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=451;N(15688,3140,2,29116,20448,452,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=453;N(15688,3128,3,29124,20756,454,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=455;N(15688,7682,2,29116,20448,452,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=456;N(15688,7671,3,29124,20756,454,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=457;N(15688,7112,2,29116,20448,452,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=458;N(15688,7101,3,29124,20756,454,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=459;N(15688,1360,2,29136,28648,460,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=461;N(15688,1353,3,29144,20400,462,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=463;N(15688,3173,2,29136,28648,460,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=464;N(15688,3161,3,29144,20400,462,a|0,0,0);P(16256,27492,29188,14976,20376,465,20376,466,20376,467,10468,20381,468);Q(16256,2,29204,20448,469,470);a=Ea(4);x[a>>2]=471;N(16256,3400,2,29212,20448,472,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=473;N(16256,2771,2,29220,20448,474,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=475;N(16256,2761,3,29228,20756,476,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=477;N(16256,9638,2,29240,20448,478,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=479;N(16256,9622,3,29248,20756,480,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=481;N(16256,9728,2,29260,20448,482,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=483;N(16256,9713,3,29268,20756,484,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=485;N(16256,9768,2,29280,20448,486,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=487;N(16256,9754,3,29288,20756,488,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=489;N(16256,6430,2,29300,28648,490,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=491;N(16256,6412,3,29308,20400,492,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=493;N(16256,6237,2,29300,28648,490,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=494;N(16256,6225,3,29308,20400,492,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=495;N(16256,8353,2,29300,28648,490,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=496;N(16256,8342,3,29308,20400,492,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=497;N(16256,1423,2,29300,28648,490,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=498;N(16256,1410,3,29308,20400,492,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=499;N(16256,1465,2,29300,28648,490,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=500;N(16256,1449,3,29308,20400,492,a|0,0,0);P(17536,29348,29392,0,20376,501,20379,0,20379,0,3612,20381,502);a=Ea(8);x[a+4>>2]=0;x[a>>2]=503;N(17536,8667,4,29408,20784,504,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=505;N(17536,2065,4,29424,29440,506,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=507;N(17536,2591,6,29456,28632,508,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=509;N(17536,6138,3,29480,20492,510,a|0,0,0);a=Ea(4);x[a>>2]=511;N(17536,2051,4,29504,29440,512,a|0,0,0);a=Ea(4);x[a>>2]=513;N(17536,6846,5,29584,29640,514,a|0,0,0);a=Ea(4);x[a>>2]=515;N(17536,2573,6,29648,28632,516,a|0,0,0);a=Ea(4);x[a>>2]=517;N(17536,6867,7,29680,29708,518,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=519;N(17536,6892,3,29720,20492,520,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=521;N(17536,7490,2,29732,28648,522,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=523;N(17536,2698,2,29732,28648,522,a|0,0,0);P(15332,24876,29760,0,20376,524,20379,0,20379,0,2304,20381,525);Q(15332,3,29776,29788,526,527);a=Ea(4);x[a>>2]=528;N(15332,10503,2,29796,20448,529,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=530;N(15332,8505,2,29804,20448,531,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=532;N(15332,8493,3,29812,20756,533,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=534;N(15332,8531,2,29824,28648,535,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=536;N(15332,8517,3,29832,20400,537,a|0,0,0);a=Ea(4);x[a>>2]=538;N(15332,8560,2,29844,20448,539,a|0,0,0);a=Ea(4);x[a>>2]=540;N(15332,8545,3,29852,20756,541,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=542;N(15332,9342,2,29824,28648,535,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=543;N(15332,9261,2,29824,28648,535,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=544;N(15332,9251,3,29832,20400,537,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=545;N(15332,9875,2,29824,28648,535,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=546;N(15332,9864,3,29832,20400,537,a|0,0,0);P(15380,24556,29888,0,20376,547,20379,0,20379,0,10493,20381,548);Q(15380,2,29904,20448,549,550);a=Ea(4);x[a>>2]=551;N(15380,9449,2,29912,20448,552,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=553;N(15380,8505,2,29920,20448,554,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=555;N(15380,8493,3,29928,20756,556,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=557;N(15380,8531,2,29940,28648,558,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=559;N(15380,8517,3,29948,20400,560,a|0,0,0);a=Ea(4);x[a>>2]=561;N(15380,8560,2,29912,20448,552,a|0,0,0);a=Ea(4);x[a>>2]=562;N(15380,8545,3,29960,20756,563,a|0,0,0);a=Ea(4);x[a>>2]=564;N(15380,7561,2,29912,20448,552,a|0,0,0);a=Ea(4);x[a>>2]=565;N(15380,7548,3,29960,20756,563,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=566;N(15380,9261,2,29940,28648,558,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=567;N(15380,9251,3,29948,20400,560,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=568;N(15380,9875,2,29940,28648,558,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=569;N(15380,9864,3,29948,20400,560,a|0,0,0);P(14288,29996,30036,0,20376,570,20379,0,20379,0,2562,20381,571);a=Ea(4);x[a>>2]=572;N(14288,9449,2,30052,20448,573,a|0,0,0);P(19892,30088,30136,14288,20376,574,20376,575,20376,576,2374,20381,577);a=Ea(8);x[a+4>>2]=0;x[a>>2]=578;N(19892,10360,2,30152,20448,579,a|0,0,0);a=Ea(4);x[a>>2]=580;N(19892,3400,2,30160,20448,581,a|0,0,0);a=Ea(4);x[a>>2]=582;N(19892,3543,2,30160,20448,581,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=583;N(19892,7424,2,30168,20448,584,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=585;N(19892,7401,3,30176,20756,586,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=587;N(19892,2478,2,30188,20448,588,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=589;N(19892,2458,3,30196,20756,590,a|0,0,0);a=Ea(4);x[a>>2]=591;N(19892,3572,8,30208,30240,592,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=593;N(19892,6077,3,30196,20756,590,a|0,0,0);P(14740,29556,30284,19892,20376,594,20376,595,20376,596,2352,20381,597);Q(14740,2,30300,20448,598,599);a=Ea(4);x[a>>2]=600;N(14740,9449,2,30308,20448,601,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=12;N(14740,1215,2,30316,20448,602,a|0,0,0);P(14808,30356,30404,19892,20376,603,20376,604,20376,605,2537,20381,606);Q(14808,2,30420,20448,607,608);a=Ea(8);x[a+4>>2]=0;x[a>>2]=609;N(14808,1994,2,30428,20448,610,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=611;N(14808,1983,3,30436,20756,612,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=12;N(14808,1215,2,30448,20448,613,a|0,0,0);P(15988,30484,30528,19892,20376,614,20376,615,20376,616,2519,20381,617);Q(15988,2,30544,20448,618,619);a=Ea(4);x[a>>2]=620;N(15988,7512,2,30552,20448,621,a|0,0,0);a=Ea(4);x[a>>2]=622;N(15988,7504,3,30560,20756,623,a|0,0,0);a=Ea(4);x[a>>2]=624;N(15988,3658,2,30572,20448,625,a|0,0,0);a=Ea(4);x[a>>2]=626;N(15988,3651,2,30572,20448,625,a|0,0,0);a=Ea(4);x[a>>2]=627;N(15988,3461,2,30580,20448,628,a|0,0,0);a=Ea(4);x[a>>2]=629;N(15988,3752,2,30588,20448,630,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=631;N(15988,7490,2,30596,28648,632,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=633;N(15988,7481,3,30604,20400,634,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=635;N(15988,2698,2,30596,28648,632,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=636;N(15988,2688,3,30604,20400,634,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=637;N(15988,7461,2,30616,20448,638,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=639;N(15988,7447,3,30624,20756,640,a|0,0,0);a=Ea(4);x[a>>2]=641;N(15988,3510,2,30580,20448,628,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=642;N(15988,3671,2,30636,30644,643,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=644;N(15988,7614,2,30648,20448,645,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=646;N(15988,7600,3,30656,20756,647,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=12;N(15988,1215,2,30668,20448,648,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=649;N(15988,7628,2,30648,20448,645,a|0,0,0);P(16120,30704,30748,19892,20376,650,20376,651,20376,652,2501,20381,653);Q(16120,2,30764,20448,654,655);a=Ea(4);x[a>>2]=656;N(16120,3362,2,30772,20448,657,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=658;N(16120,10210,2,30780,20448,659,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=660;N(16120,10200,3,30788,20756,661,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=662;N(16120,10318,2,30780,20448,659,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=663;N(16120,10301,3,30788,20756,661,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=12;N(16120,1215,2,30800,20448,664,a|0,0,0);P(16580,30836,30880,14288,20376,665,20376,666,20376,667,2394,20381,668);Q(16580,2,30896,20448,669,670);a=Ea(8);x[a+4>>2]=0;x[a>>2]=671;N(16580,10891,2,30904,28648,672,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=673;N(16580,10886,3,30912,20400,674,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=675;N(16580,10656,2,30904,28648,672,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=676;N(16580,10651,3,30912,20400,674,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=677;N(16580,6448,2,30904,28648,672,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=678;N(16580,6436,3,30912,20400,674,a|0,0,0);a=Ea(4);x[a>>2]=679;N(16580,6249,5,30928,30948,680,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=681;N(16580,6502,3,30956,30968,682,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=12;N(16580,1215,2,30976,20448,683,a|0,0,0);P(16704,31012,31060,14288,20376,684,20376,685,20376,686,2441,20381,687);Q(16704,2,31076,20448,688,689);a=Ea(8);x[a+4>>2]=0;x[a>>2]=690;N(16704,10891,2,31084,28648,691,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=692;N(16704,10886,3,31092,20400,693,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=694;N(16704,10656,2,31084,28648,691,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=695;N(16704,10651,3,31092,20400,693,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=696;N(16704,11030,2,31084,28648,691,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=697;N(16704,11020,3,31092,20400,693,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=698;N(16704,10801,2,31084,28648,691,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=699;N(16704,10791,3,31092,20400,693,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=700;N(16704,6448,2,31084,28648,691,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=701;N(16704,6436,3,31092,20400,693,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=702;N(16704,7490,2,31084,28648,691,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=703;N(16704,7481,3,31092,20400,693,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=704;N(16704,2698,2,31084,28648,691,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=705;N(16704,2688,3,31092,20400,693,a|0,0,0);a=Ea(4);x[a>>2]=706;N(16704,3752,2,31104,20448,707,a|0,0,0);a=Ea(4);x[a>>2]=708;N(16704,7512,2,31112,20448,709,a|0,0,0);a=Ea(4);x[a>>2]=710;N(16704,7504,3,31120,20756,711,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=712;N(12984,2781,2,31132,20448,713,a|0,0,0);a=Ea(4);x[a>>2]=714;N(16704,2723,2,31188,20448,715,a|0,0,0);a=Ea(4);x[a>>2]=716;N(16704,3644,3,31196,20756,717,a|0,0,0);a=Ea(4);x[a>>2]=718;N(16704,3651,2,31188,20448,715,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=719;N(16704,2741,2,31208,30644,720,a|0,0,0);a=Ea(4);x[a>>2]=721;N(16704,3572,6,31216,31240,722,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=12;N(16704,1215,2,31248,20448,723,a|0,0,0);P(14376,31284,31332,0,20376,724,20379,0,20379,0,3885,20381,725);a=Ea(8);x[a+4>>2]=1;x[a>>2]=32;N(14376,2534,4,31360,20832,726,a|0,1,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=28;N(14376,2391,4,31376,20832,727,a|0,1,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=24;N(14376,2498,4,31392,20832,728,a|0,1,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=20;N(14376,2349,4,31408,20832,729,a|0,1,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(14376,2516,5,31424,31444,730,a|0,1,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=12;N(14376,2438,5,31456,31444,731,a|0,1,0);P(14228,31512,31564,14376,20376,732,20376,733,20376,734,3880,20381,735);Q(14228,2,31580,20448,736,737);a=Ea(8);x[a+4>>2]=1;x[a>>2]=12;N(14228,2438,5,31632,31444,738,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(14228,2516,5,31664,31444,739,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=20;N(14228,2349,4,31696,20832,740,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=24;N(14228,2498,4,31712,20832,741,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=28;N(14228,2391,4,31728,20832,742,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=32;N(14228,2534,4,31744,20832,743,a|0,0,0);P(13936,31780,31820,0,20376,744,20379,0,20379,0,9592,20381,745);Q(13936,2,31836,20448,746,747);a=Ea(4);x[a>>2]=748;N(13936,9449,2,31844,20448,749,a|0,0,0);a=Ea(4);x[a>>2]=44;b=Ea(4);x[b>>2]=44;T(13936,3783,28236,20448,750,a|0,28236,20756,751,b|0);a=Ea(4);x[a>>2]=48;b=Ea(4);x[b>>2]=48;T(13936,3793,28236,20448,750,a|0,28236,20756,751,b|0);a=Ea(4);x[a>>2]=52;b=Ea(4);x[b>>2]=52;T(13936,6046,28268,20448,752,a|0,28268,20756,753,b|0);a=Ea(4);x[a>>2]=56;b=Ea(4);x[b>>2]=56;T(13936,6040,28268,20448,752,a|0,28268,20756,753,b|0);a=Ea(4);x[a>>2]=60;b=Ea(4);x[b>>2]=60;T(13936,7475,53120,20448,754,a|0,53120,20756,755,b|0);a=Ea(4);x[a>>2]=64;b=Ea(4);x[b>>2]=64;T(13936,2681,53120,20448,754,a|0,53120,20756,755,b|0);P(14008,31876,31916,0,20376,756,20379,0,20379,0,6816,20381,757);a=Ea(4);x[a>>2]=758;N(14008,9449,2,31932,20448,759,a|0,0,0);a=Ea(4);x[a>>2]=20;b=Ea(4);x[b>>2]=20;T(14008,1669,53120,20448,760,a|0,53120,20756,761,b|0);a=Ea(4);x[a>>2]=24;b=Ea(4);x[b>>2]=24;T(14008,1277,53120,20448,760,a|0,53120,20756,761,b|0);a=Ea(4);x[a>>2]=68;b=Ea(4);x[b>>2]=68;T(14008,1514,53120,20448,760,a|0,53120,20756,761,b|0);a=Ea(4);x[a>>2]=72;b=Ea(4);x[b>>2]=72;T(14008,8620,53048,20448,762,a|0,53048,20756,763,b|0);a=Ea(4);x[a>>2]=76;b=Ea(4);x[b>>2]=76;T(14008,3526,53120,20448,760,a|0,53120,20756,761,b|0);P(13872,31604,31960,0,20376,764,20379,0,20379,0,3631,20381,765);Q(13872,4,31984,20832,766,767);a=Ea(4);x[a>>2]=768;N(13872,6835,3,32044,20492,769,a|0,0,0);P(32084,32124,32172,28676,20376,770,20376,771,20376,772,1675,20381,773);Q(32084,2,32188,20448,774,775);a=Ea(8);x[a+4>>2]=1;x[a>>2]=0;N(32084,1237,3,32220,28784,776,a|0,0,0);P(32264,32308,32356,28676,20376,777,20376,778,20376,779,1694,20381,780);Q(32264,2,32372,20448,781,782);a=Ea(8);x[a+4>>2]=1;x[a>>2]=0;N(32084,1237,3,32220,28784,776,a|0,0,0);P(19192,22904,32424,0,20376,783,20379,0,20379,0,10379,20381,784);Q(19192,4,32448,20832,785,786);a=Ea(8);x[a+4>>2]=0;x[a>>2]=787;N(19192,1594,2,32464,20448,788,a|0,0,0);a=Ea(4);x[a>>2]=789;N(19192,9449,2,32472,20448,790,a|0,0,0);a=Ea(4);x[a>>2]=791;N(19192,10563,2,32480,20448,792,a|0,0,0);a=Ea(4);x[a>>2]=793;N(19192,3752,2,32488,20448,794,a|0,0,0);a=Ea(4);x[a>>2]=795;N(19192,3770,2,32488,20448,794,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=796;N(19192,9805,2,32496,20448,797,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=798;N(19192,9792,3,32504,20756,799,a|0,0,0);P(19828,32536,32576,0,20376,800,20379,0,20379,0,9488,20381,801);a=Ea(8);x[a+4>>2]=1;x[a>>2]=12;N(19828,8667,2,32592,30644,802,a|0,1,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(19828,8458,2,32600,20448,803,a|0,1,0);P(15632,25596,32636,19828,20376,804,20376,805,20376,806,2189,20381,807);Q(15632,3,32652,20492,808,809);a=Ea(4);x[a>>2]=810;N(15632,10503,2,32664,20448,811,a|0,0,0);a=Ea(4);x[a>>2]=812;N(15632,3400,2,32672,20448,813,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=814;N(15632,2771,2,32680,20448,815,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=816;N(15632,2761,3,32688,20756,817,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=818;N(15632,6300,2,32700,20448,819,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=820;N(15632,6283,3,32708,20756,821,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=822;N(15632,3140,2,32720,20448,823,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=824;N(15632,3128,3,32728,20756,825,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=826;N(15632,7682,2,32720,20448,823,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=827;N(15632,7671,3,32728,20756,825,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=828;N(15632,1360,2,32740,28648,829,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=830;N(15632,1353,3,32748,20400,831,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=832;N(15632,3173,2,32740,28648,829,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=833;N(15632,3161,3,32748,20400,831,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(15632,8448,2,32720,20448,823,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=20;N(15632,8438,3,32728,20756,825,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(15632,8458,2,32720,20448,823,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=834;N(15632,1237,2,32760,30644,835,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=12;N(15632,8667,2,32760,30644,835,a|0,0,0);S(15632,12027,9,32768,32804,836,837,0);S(15632,12007,10,32816,32856,838,839,0);P(16196,25956,32896,19828,20376,840,20376,841,20376,842,2227,20381,843);Q(16196,3,32912,20492,844,845);a=Ea(4);x[a>>2]=846;N(16196,10503,2,32924,20448,847,a|0,0,0);a=Ea(4);x[a>>2]=848;N(16196,3400,2,32932,20448,849,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=850;N(16196,2771,2,32940,20448,851,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=852;N(16196,2761,3,32948,20756,853,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=854;N(16196,6237,2,32960,28648,855,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=856;N(16196,6225,3,32968,20400,857,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=858;N(16196,8353,2,32960,28648,855,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=859;N(16196,8342,3,32968,20400,857,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=860;N(16196,1423,2,32960,28648,855,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=861;N(16196,1410,3,32968,20400,857,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=862;N(16196,1465,2,32960,28648,855,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=863;N(16196,1465,3,32968,20400,857,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(16196,8448,2,32980,20448,864,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(16196,8458,2,32980,20448,864,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=20;N(16196,8438,3,32988,20756,865,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=866;N(16196,1237,2,33e3,30644,867,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=12;N(16196,8667,2,33e3,30644,867,a|0,0,0);P(19464,27112,33044,14976,20376,868,20376,869,20376,870,10415,20381,871);Q(19464,2,33060,20448,872,873);a=Ea(4);x[a>>2]=874;N(19464,3400,2,33068,20448,875,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=876;N(19464,2771,2,33076,20448,877,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=878;N(19464,1423,2,33084,28648,879,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=880;N(19464,1465,2,33084,28648,879,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=881;N(19464,1502,2,33084,28648,879,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=882;N(19464,1388,2,33084,28648,879,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=883;N(19464,6430,2,33084,28648,879,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=884;N(19464,10880,2,33084,28648,879,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=885;N(19464,10645,2,33084,28648,879,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=886;N(19464,11014,2,33084,28648,879,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=887;N(19464,10785,2,33084,28648,879,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=888;N(19464,10712,2,33084,28648,879,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=889;N(19464,8476,2,33092,20448,890,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=891;N(19464,7232,2,33092,20448,890,a|0,0,0);P(19400,26344,33132,19828,20376,892,20376,893,20376,894,2133,20381,895);Q(19400,3,33148,20492,896,897);a=Ea(4);x[a>>2]=898;N(19400,10503,2,33160,20448,899,a|0,0,0);a=Ea(4);x[a>>2]=900;N(19400,3400,2,33168,20448,901,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=902;N(19400,2771,2,33176,20448,903,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=904;N(19400,1423,2,33184,28648,905,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=906;N(19400,1410,3,33192,20400,907,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=908;N(19400,1465,2,33184,28648,905,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=909;N(19400,1449,3,33192,20400,907,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=910;N(19400,1502,2,33184,28648,905,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=911;N(19400,1490,3,33192,20400,907,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=912;N(19400,1388,2,33184,28648,905,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=913;N(19400,1376,3,33192,20400,907,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(19400,8448,2,33204,20448,914,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=20;N(19400,8438,3,33212,20756,915,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(19400,8458,2,33204,20448,914,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=916;N(19400,1237,2,33224,30644,917,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=12;N(19400,8667,2,33224,30644,917,a|0,0,0);P(14568,22120,33248,19828,20376,918,20376,919,20376,920,8912,20381,921);Q(14568,4,33264,20832,922,923);a=Ea(4);x[a>>2]=924;N(14568,10503,2,33280,20448,925,a|0,0,0);a=Ea(4);x[a>>2]=926;N(14568,6126,2,33288,20448,927,a|0,0,0);a=Ea(4);x[a>>2]=928;N(14568,2328,2,33332,20448,929,a|0,0,0);a=Ea(4);x[a>>2]=930;N(14568,7013,2,33340,20448,931,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=932;N(14568,10891,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=934;N(14568,10886,3,33356,20400,935,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=936;N(14568,10656,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=937;N(14568,10651,3,33356,20400,935,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=938;N(14568,6448,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=939;N(14568,6436,3,33356,20400,935,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=940;N(14568,11030,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=941;N(14568,11020,3,33356,20400,935,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=942;N(14568,10801,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=943;N(14568,10791,3,33356,20400,935,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=944;N(14568,10957,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=945;N(14568,10947,3,33356,20400,935,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=946;N(14568,10728,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=947;N(14568,10718,3,33356,20400,935,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=948;N(14568,11103,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=949;N(14568,11097,3,33356,20400,935,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=950;N(14568,10874,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=951;N(14568,10868,3,33356,20400,935,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=952;N(14568,6536,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=953;N(14568,6523,3,33356,20400,935,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=954;N(14568,11066,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=955;N(14568,11055,3,33356,20400,935,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=956;N(14568,10837,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=957;N(14568,10826,3,33356,20400,935,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=958;N(14568,10978,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=959;N(14568,10967,3,33356,20400,935,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=960;N(14568,10749,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=961;N(14568,10738,3,33356,20400,935,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=962;N(14568,10165,2,33368,20448,963,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=964;N(14568,10149,3,33376,20756,965,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=966;N(14568,11282,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=967;N(14568,11277,3,33356,20400,935,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=968;N(14568,11272,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=969;N(14568,11267,3,33356,20400,935,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=970;N(14568,11262,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=971;N(14568,11257,3,33356,20400,935,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=972;N(14568,11125,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=973;N(14568,11120,3,33356,20400,935,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=974;N(14568,11087,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=975;N(14568,11077,3,33356,20400,935,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=976;N(14568,10858,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=977;N(14568,10848,3,33356,20400,935,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(14568,8448,2,33368,20448,963,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=20;N(14568,8438,3,33376,20756,965,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(14568,8458,2,33368,20448,963,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=12;N(14568,8667,2,33388,30644,978,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=979;N(14568,7072,2,33388,30644,978,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=980;N(14568,7349,9,33408,33444,981,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=982;N(14568,8692,2,33388,30644,978,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=983;N(14568,10989,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=984;N(14568,10760,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=985;N(14568,11040,2,33348,28648,933,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=986;N(14568,10811,2,33348,28648,933,a|0,0,0);a=Ea(4);x[a>>2]=987;N(14568,7241,4,33456,29440,988,a|0,0,0);a=Ea(4);x[a>>2]=989;N(14568,9993,4,33456,29440,988,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=990;N(14568,6460,3,33472,28784,991,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=992;N(14568,6481,3,33472,28784,991,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=993;N(14568,10006,3,33356,20400,935,a|0,0,0);P(14672,21800,33504,0,20376,994,20379,0,20379,0,10581,20381,995);Q(14672,4,33520,20832,996,997);a=Ea(8);x[a+4>>2]=0;x[a>>2]=998;N(14672,1594,2,33536,20448,999,a|0,0,0);a=Ea(4);x[a>>2]=1e3;N(14672,9449,2,33544,20448,1001,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1002;N(14672,2328,2,33552,20448,1003,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1004;N(14672,7391,2,33560,28648,1005,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1006;N(14672,7381,3,33568,20400,1007,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1008;N(14672,10891,2,33560,28648,1005,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1009;N(14672,10886,3,33568,20400,1007,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1010;N(14672,10656,2,33560,28648,1005,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1011;N(14672,10651,3,33568,20400,1007,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1012;N(14672,6448,2,33560,28648,1005,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1013;N(14672,6436,3,33568,20400,1007,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1014;N(14672,11030,2,33560,28648,1005,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1015;N(14672,11020,3,33568,20400,1007,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1016;N(14672,10801,2,33560,28648,1005,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1017;N(14672,10791,3,33568,20400,1007,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1018;N(14672,10957,2,33560,28648,1005,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1019;N(14672,10947,3,33568,20400,1007,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1020;N(14672,10728,2,33560,28648,1005,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1021;N(14672,10718,3,33568,20400,1007,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1022;N(14672,9671,2,33580,20448,1023,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1024;N(14672,9654,3,33588,20756,1025,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1026;N(14672,10236,2,33600,20448,1027,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1028;N(14672,10252,3,33608,20756,1029,a|0,0,0);P(19144,23224,33636,0,20376,1030,20379,0,20379,0,2e3,20381,1031);Q(19144,3,33652,20492,1032,1033);a=Ea(4);x[a>>2]=1034;N(19144,10503,2,33664,20448,1035,a|0,0,0);a=Ea(4);x[a>>2]=1036;N(19144,8889,2,33672,20448,1037,a|0,0,0);a=Ea(4);x[a>>2]=1038;N(19144,3752,2,33680,20448,1039,a|0,0,0);a=Ea(4);x[a>>2]=1040;N(19144,3770,2,33680,20448,1039,a|0,0,0);a=Ea(4);x[a>>2]=1041;N(19144,7130,2,33688,20448,1042,a|0,0,0);a=Ea(4);x[a>>2]=1043;N(19144,6126,2,33696,20448,1044,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1045;N(19144,2424,2,33704,20448,1046,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1047;N(19144,2410,3,33712,20756,1048,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1049;N(19144,9298,3,33724,20400,1050,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1051;N(19144,9316,2,33736,28648,1052,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1053;N(19144,8692,2,33744,30644,1054,a|0,0,0);P(18828,24216,33768,0,20376,1055,20379,0,20379,0,6990,20381,1056);Q(18828,2,33784,20448,1057,1058);a=Ea(4);x[a>>2]=1059;N(18828,9449,2,33792,20448,1060,a|0,0,0);a=Ea(4);x[a>>2]=1061;N(18828,3400,2,33800,20448,1062,a|0,0,0);a=Ea(4);x[a>>2]=1063;N(18828,2992,2,33808,20448,1064,a|0,0,0);a=Ea(4);x[a>>2]=1065;N(18828,2410,5,33824,33844,1066,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1067;N(18828,6987,3,33852,20756,1068,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1069;N(18828,6912,3,33852,20756,1068,a|0,0,0);a=Ea(4);x[a>>2]=1070;N(18828,1941,3,33864,20492,1071,a|0,0,0);a=Ea(4);x[a>>2]=1072;N(18828,2424,4,33888,20832,1073,a|0,0,0);a=Ea(4);x[a>>2]=1074;N(18828,3096,2,33904,20448,1075,a|0,0,0);a=Ea(4);x[a>>2]=1076;N(18828,2556,4,33920,20784,1077,a|0,0,0);a=Ea(4);x[a>>2]=1078;N(18828,1919,3,33936,20492,1079,a|0,0,0);P(22560,22568,33988,0,20376,1080,20379,0,20379,0,1116,20381,1081);Q(22560,4,34016,20832,1082,1083);a=Ea(4);x[a>>2]=0;b=Ea(4);x[b>>2]=0;T(22560,1520,53156,20448,1084,a|0,53156,20756,1085,b|0);a=Ea(4);x[a>>2]=1086;N(22560,9449,2,34032,20448,1087,a|0,0,0);a=Ea(4);x[a>>2]=1088;N(22560,2424,2,34040,20448,1089,a|0,0,0);P(17776,34076,34124,0,20376,1090,20379,0,20379,0,8295,20381,1091);Q(17776,1,34140,20376,1092,1093);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1094;N(17776,3593,2,34144,20448,1095,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1096;N(17776,3474,2,34152,20448,1097,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1098;N(17776,3681,2,34144,20448,1095,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1099;N(17776,1847,4,34160,20832,1100,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1101;N(17776,1958,3,34176,20756,1102,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1103;N(17776,9929,2,34188,30644,1104,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1105;N(17776,8284,2,34196,20448,1106,a|0,0,0);P(18108,34228,34272,0,20376,1107,20379,0,20379,0,10531,20381,1108);Q(18108,1,34288,20376,1109,1110);a=Ea(4);x[a>>2]=1111;N(18108,9449,2,34292,20448,1112,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1113;N(18108,9441,3,34300,20756,1114,a|0,0,0);a=Ea(4);x[a>>2]=1115;N(18108,3400,2,34312,20448,1116,a|0,0,0);a=Ea(4);x[a>>2]=1117;N(18108,2983,2,34320,20448,1118,a|0,0,0);a=Ea(4);x[a>>2]=1119;N(18108,3296,2,34328,20448,1120,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1121;N(18108,6936,2,34336,20448,1122,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1123;N(18108,6921,3,34344,20756,1124,a|0,0,0);a=Ea(4);x[a>>2]=1125;N(18108,3074,2,34356,20448,1126,a|0,0,0);a=Ea(4);x[a>>2]=1127;N(18108,3276,2,34364,20448,1128,a|0,0,0);a=Ea(4);x[a>>2]=1129;N(18108,3031,2,34372,20448,1130,a|0,0,0);a=Ea(4);x[a>>2]=1131;N(18108,3007,2,34380,20448,1132,a|0,0,0);a=Ea(4);x[a>>2]=1133;N(18108,3048,2,34388,20448,1134,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1135;N(18108,10891,2,34396,28648,1136,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1137;N(18108,10886,3,34404,20400,1138,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1139;N(18108,10656,2,34396,28648,1136,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1140;N(18108,10651,3,34404,20400,1138,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1141;N(18108,7490,2,34396,28648,1136,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1142;N(18108,7481,3,34404,20400,1138,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1143;N(18108,2698,2,34396,28648,1136,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1144;N(18108,2688,3,34404,20400,1138,a|0,0,0);a=Ea(4);x[a>>2]=1145;N(18108,6781,2,34292,20448,1112,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1146;N(18108,6770,3,34300,20756,1114,a|0,0,0);a=Ea(4);x[a>>2]=1147;N(18108,7655,2,34292,20448,1112,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1148;N(18108,7647,3,34300,20756,1114,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1149;N(18108,3210,2,34396,28648,1136,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1150;N(18108,3203,3,34404,20400,1138,a|0,0,0);a=Ea(4);x[a>>2]=1151;N(18108,7534,2,34292,20448,1112,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1152;N(18108,7520,3,34300,20756,1114,a|0,0,0);a=Ea(4);x[a>>2]=1153;N(18108,7561,2,34292,20448,1112,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1154;N(18108,7548,3,34300,20756,1114,a|0,0,0);a=Ea(4);x[a>>2]=1155;N(18108,8908,3,34416,20492,1156,a|0,0,0);a=Ea(4);x[a>>2]=1157;N(18108,1643,3,34428,20492,1158,a|0,0,0);a=Ea(4);x[a>>2]=1159;N(18108,1974,3,34440,20492,1160,a|0,0,0);a=Ea(4);x[a>>2]=1161;N(18108,1556,3,34428,20492,1158,a|0,0,0);a=Ea(4);x[a>>2]=1162;N(18108,6978,3,34452,20492,1163,a|0,0,0);a=Ea(4);x[a>>2]=1164;N(18108,2300,3,34464,20492,1165,a|0,0,0);a=Ea(4);x[a>>2]=1166;N(18108,6697,3,34476,20492,1167,a|0,0,0);a=Ea(4);x[a>>2]=1168;N(18108,2185,3,34488,20492,1169,a|0,0,0);a=Ea(4);x[a>>2]=1170;N(18108,2129,3,34500,20492,1171,a|0,0,0);a=Ea(4);x[a>>2]=1172;N(18108,2223,3,34512,20492,1173,a|0,0,0);a=Ea(4);x[a>>2]=1174;N(18108,1570,3,34428,20492,1158,a|0,0,0);P(1060,23564,34548,0,20376,1175,20379,0,20379,0,6714,20381,1176);Q(1060,4,34576,20528,1177,1178);a=Ea(4);x[a>>2]=1179;N(1060,1237,10,34592,34632,1180,a|0,0,0);a=Ea(4);x[a>>2]=1181;N(1060,9449,2,34644,20448,1182,a|0,0,0);a=Ea(4);x[a>>2]=1183;N(1060,3409,2,34652,20448,1184,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1185;N(1060,9031,3,34660,20492,1186,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1187;N(1060,6591,2,34672,28648,1188,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1189;N(1060,6579,3,34680,20400,1190,a|0,0,0);P(19320,23896,34712,0,20376,1191,20379,0,20379,0,9235,20381,1192);a=Ea(4);x[a>>2]=1193;N(19320,1237,9,34736,34772,1194,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(19320,10346,2,34784,20448,1195,a|0,1,0);P(15040,34820,34864,19320,20376,1196,20376,1197,20376,1198,9183,20381,1199);a=Ea(4);x[a>>2]=1200;N(15040,1237,9,34880,34772,1201,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(15040,10346,2,34916,20448,1202,a|0,1,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1203;N(15040,2031,2,34924,20448,1204,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1205;N(15040,3953,3,34932,20756,1206,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1207;N(15040,10276,3,34932,20756,1206,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1208;N(15040,8398,7,34944,34972,1209,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1210;N(15040,2637,4,34992,35008,1211,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1212;N(15040,8808,3,35016,30968,1213,a|0,0,0);P(19640,35060,35108,15040,20376,1214,20376,1215,20376,1216,9212,20381,1217);Q(19640,2,35124,20448,1218,1219);W(19640,11109,53120,19560,20376,1220,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(19640,10346,2,35132,20448,1221,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1222;N(19640,9393,6,35152,35176,1223,a|0,0,0);a=Ea(4);x[a>>2]=1224;N(19640,1237,9,35184,34772,1225,a|0,0,0);P(16856,35248,35292,19640,20376,1226,20376,1227,20376,1228,9230,20381,1229);Q(16856,2,35308,20448,1230,1231);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(16856,10346,2,35316,20448,1232,a|0,0,0);a=Ea(4);x[a>>2]=1233;N(16856,1237,9,35328,34772,1234,a|0,0,0);P(16920,35392,35436,19640,20376,1235,20376,1236,20376,1237,9093,20381,1238);Q(16920,2,35452,20448,1239,1240);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(16920,10346,2,35460,20448,1241,a|0,0,0);a=Ea(4);x[a>>2]=1242;N(16920,1237,9,35472,34772,1243,a|0,0,0);P(16792,35536,35580,15040,20376,1244,20376,1245,20376,1246,9197,20381,1247);Q(16792,2,35596,20448,1248,1249);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1250;N(16792,1630,2,35604,20448,1251,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1252;N(16792,1617,3,35612,20756,1253,a|0,0,0);a=Ea(4);x[a>>2]=1254;N(16792,3422,2,35624,20448,1255,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(16792,10346,2,35604,20448,1251,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1256;N(16792,9393,5,35632,30948,1257,a|0,0,0);a=Ea(4);x[a>>2]=1258;N(16792,1237,9,35664,34772,1259,a|0,0,0);P(14876,35728,35772,15040,20376,1260,20376,1261,20376,1262,9061,20381,1263);Q(14876,2,35788,20448,1264,1265);W(14876,11109,53120,14820,20376,1220,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1266;N(14876,1543,2,35796,20448,1267,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1268;N(14876,1530,3,35804,20756,1269,a|0,0,0);a=Ea(4);x[a>>2]=1270;N(14876,3422,2,35816,20448,1271,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(14876,10346,2,35796,20448,1267,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1272;N(14876,9393,8,35824,35856,1273,a|0,0,0);a=Ea(4);x[a>>2]=1274;N(14876,1237,9,35872,34772,1275,a|0,0,0);P(19764,35936,35984,15040,20376,1276,20376,1277,20376,1278,9058,20381,1279);Q(19764,2,36e3,20448,1280,1281);W(19764,11109,53120,14820,20376,1220,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1282;N(19764,1543,2,36008,20448,1283,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1284;N(19764,1530,3,36016,20756,1285,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(19764,10346,2,36008,20448,1283,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1286;N(19764,9393,11,36032,36076,1287,a|0,0,0);a=Ea(4);x[a>>2]=1288;N(19764,1237,9,36096,34772,1289,a|0,0,0);P(14448,36164,36212,19320,20376,1290,20376,1291,20376,1292,9012,20381,1293);Q(14448,2,36228,20448,1294,1295);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1296;N(14448,1543,2,36236,20448,1297,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1298;N(14448,1530,3,36244,20756,1299,a|0,0,0);a=Ea(4);x[a>>2]=1300;N(14448,3422,2,36256,20448,1301,a|0,0,0);a=Ea(4);x[a>>2]=1302;N(14448,3432,2,36264,20448,1303,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(14448,10346,2,36272,20448,1304,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1305;N(14448,2031,2,36236,20448,1297,a|0,0,0);a=Ea(4);x[a>>2]=1306;N(14448,9393,5,36288,36308,1307,a|0,0,0);a=Ea(4);x[a>>2]=1308;N(14448,1237,9,36320,34772,1309,a|0,0,0);P(15108,36384,36428,15040,20376,1310,20376,1311,20376,1312,9138,20381,1313);Q(15108,2,36444,20448,1314,1315);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1316;N(15108,1543,2,36452,20448,1317,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1318;N(15108,1530,3,36460,20756,1319,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1320;N(15108,2424,2,36472,20448,1321,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1322;N(15108,2410,3,36480,20756,1323,a|0,0,0);a=Ea(4);x[a>>2]=1324;N(15108,3422,2,36492,20448,1325,a|0,0,0);a=Ea(4);x[a>>2]=1326;N(15108,3555,2,36500,20448,1327,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(15108,10346,2,36452,20448,1317,a|0,0,0);a=Ea(4);x[a>>2]=1328;N(15108,9393,5,36512,36308,1329,a|0,0,0);a=Ea(4);x[a>>2]=1330;N(15108,1237,9,36544,34772,1331,a|0,0,0);P(15444,36608,36652,19320,20376,1332,20376,1333,20376,1334,8998,20381,1335);Q(15444,2,36668,20448,1336,1337);a=Ea(4);x[a>>2]=1338;N(15444,3422,2,36676,20448,1339,a|0,0,0);a=Ea(4);x[a>>2]=1340;N(15444,3074,2,36684,20448,1341,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(15444,10346,2,36692,20448,1342,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1343;N(15444,2031,2,36700,20448,1344,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1345;N(15444,9393,4,36720,20784,1346,a|0,0,0);a=Ea(4);x[a>>2]=1347;N(15444,1237,9,36736,34772,1348,a|0,0,0);P(15232,36804,36852,19320,20376,1349,20376,1350,20376,1351,9075,20381,1352);Q(15232,2,36868,20448,1353,1354);a=Ea(4);x[a>>2]=1355;N(15232,3422,2,36876,20448,1356,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(15232,10346,2,36884,20448,1357,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1358;N(15232,2031,2,36892,20448,1359,a|0,0,0);a=Ea(4);x[a>>2]=1360;N(15232,3185,2,36900,20448,1361,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1362;N(15232,9393,5,36976,36308,1363,a|0,0,0);a=Ea(4);x[a>>2]=1364;N(15232,1237,9,37008,34772,1365,a|0,0,0);P(15824,37076,37128,15040,20376,1366,20376,1367,20376,1368,8977,20381,1369);Q(15824,2,37144,20448,1370,1371);W(15824,11109,53120,15760,20376,1220,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(15824,10346,2,37152,20448,1372,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1373;N(15824,9393,9,37168,37204,1374,a|0,0,0);a=Ea(4);x[a>>2]=1375;N(15824,1237,9,37216,34772,1376,a|0,0,0);P(19548,37292,37348,15040,20376,1377,20376,1378,20376,1379,8949,20381,1380);Q(19548,2,37364,20448,1381,1382);W(19548,11109,53120,19476,20376,1220,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(19548,10346,2,37372,20448,1383,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1384;N(19548,9393,8,37392,35856,1385,a|0,0,0);a=Ea(4);x[a>>2]=1386;N(19548,1237,9,37424,34772,1387,a|0,0,0);P(16436,37504,37564,15040,20376,1388,20376,1389,20376,1390,9107,20381,1391);Q(16436,2,37580,20448,1392,1393);W(16436,11109,53120,19476,20376,1220,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(16436,10346,2,37588,20448,1394,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1395;N(16436,9393,5,37600,30948,1396,a|0,0,0);a=Ea(4);x[a>>2]=1397;N(16436,1237,9,37632,34772,1398,a|0,0,0);P(16336,37708,37764,15040,20376,1399,20376,1400,20376,1401,8923,20381,1402);Q(16336,2,37780,20448,1403,1404);W(16336,11109,53120,16268,20376,1220,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(16336,10346,2,37788,20448,1405,a|0,0,0);a=Ea(4);x[a>>2]=1406;N(16336,1237,9,37808,34772,1407,a|0,0,0);P(12992,27844,37868,0,20376,1408,20379,0,20379,0,1153,20381,1409);Q(12992,1,37884,20376,1410,1411);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1412;N(12992,6652,2,37888,20448,1413,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1414;N(12992,1679,2,37896,20448,1415,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1416;N(12992,7140,2,37896,20448,1415,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1417;N(12992,6084,2,37896,20448,1415,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1418;N(12992,1603,2,37904,20448,1419,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1420;N(12992,6026,2,37912,20448,1421,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1422;N(12992,6018,3,37920,20756,1423,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1424;N(12992,2941,2,37912,20448,1421,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1425;N(12992,2925,3,37920,20756,1423,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1426;N(12992,10036,2,37932,28648,1427,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1428;N(12992,10018,3,37940,20400,1429,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1430;N(12992,10077,2,37932,28648,1427,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1431;N(12992,10054,3,37940,20400,1429,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1432;N(12992,10122,2,37932,28648,1427,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1433;N(12992,10100,3,37940,20400,1429,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1434;N(12992,1875,2,37932,28648,1427,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1435;N(12992,1857,3,37940,20400,1429,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1436;N(12992,9953,2,37932,28648,1427,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1437;N(12992,9937,3,37940,20400,1429,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1438;N(12992,1784,2,37932,28648,1427,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1439;N(12992,1767,3,37940,20400,1429,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1440;N(12992,1270,2,37932,28648,1427,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1441;N(12992,1261,3,37940,20400,1429,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1442;N(12992,9380,2,37932,28648,1427,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1443;N(12992,9367,3,37940,20400,1429,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1444;N(12992,9981,2,37932,28648,1427,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1445;N(12992,9969,3,37940,20400,1429,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1446;N(12992,9555,2,37932,28648,1427,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1447;N(12992,9542,3,37940,20400,1429,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1448;N(12992,10599,2,37932,28648,1427,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1449;N(12992,10590,3,37940,20400,1429,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1450;N(12992,9287,2,37932,28648,1427,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1451;N(12992,9276,3,37940,20400,1429,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1452;N(12992,6564,2,37932,28648,1427,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1453;N(12992,6549,3,37940,20400,1429,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1454;N(12992,9917,2,37952,20448,1455,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1456;N(12992,9905,3,37960,20756,1457,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1458;N(12992,9350,2,37932,28648,1427,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1459;N(12992,8609,2,37912,20448,1421,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1460;N(12992,3222,2,37972,30644,1461,a|0,0,0);P(13588,38012,38060,0,20376,1462,20379,0,20379,0,10544,20381,1463);Q(13588,2,38076,20448,1464,1465);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1466;N(13588,1339,2,38084,28648,1467,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1468;N(13588,1325,3,38092,20400,1469,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1470;N(13588,10528,2,38104,20448,1471,a|0,0,0);a=Ea(4);x[a>>2]=1472;N(13588,1353,5,38112,38132,1473,a|0,0,0);a=Ea(4);x[a>>2]=1474;N(13588,7283,5,38144,38132,1475,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1476;N(13588,1360,4,38176,38192,1477,a|0,0,0);P(13088,38224,38268,0,20376,1478,20379,0,20379,0,8630,20381,1479);Q(13088,2,38284,20448,1480,1481);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1482;N(13088,10503,2,38292,20448,1483,a|0,0,0);a=Ea(4);x[a>>2]=1484;N(13088,3332,2,38300,20448,1485,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1486;N(13088,9555,2,38308,28648,1487,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1488;N(13088,9542,3,38316,20400,1489,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1490;N(13088,8667,3,38316,20400,1489,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1491;N(13088,1237,3,38328,20492,1492,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1493;N(13088,3342,2,38340,30644,1494,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1495;N(13088,7262,3,38348,20756,1496,a|0,0,0);a=Ea(4);x[a>>2]=1497;N(13088,6639,5,38368,31444,1498,a|0,0,0);a=Ea(4);x[a>>2]=1499;N(13088,7315,5,38400,31444,1500,a|0,0,0);a=Ea(4);x[a>>2]=1501;N(13088,6711,6,38432,38456,1502,a|0,0,0);a=Ea(4);x[a>>2]=1503;N(13088,7332,6,38464,38456,1504,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1505;N(13088,6603,4,38496,20528,1506,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1507;N(13088,6621,5,38512,29640,1508,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1509;N(13088,3257,3,38316,20400,1489,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1510;N(13088,2310,3,38532,20492,1511,a|0,0,0);a=Ea(4);x[a>>2]=1512;N(13088,3817,3,38544,20756,1513,a|0,0,0);a=Ea(4);x[a>>2]=1514;N(13088,2799,3,38724,20756,1515,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1516;N(13088,8575,2,38340,30644,1494,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1517;N(13088,8588,2,38340,30644,1494,a|0,0,0);P(16968,33316,38860,0,20376,1518,20379,0,20379,0,6152,20381,1519);Q(16968,2,38876,20448,1520,1521);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1522;N(16968,10503,2,38884,20448,1523,a|0,0,0);a=Ea(4);x[a>>2]=1524;N(16968,3400,2,38892,20448,1525,a|0,0,0);a=Ea(4);x[a>>2]=1526;N(16968,2983,2,38900,20448,1527,a|0,0,0);a=Ea(4);x[a>>2]=1528;N(16968,3849,2,38900,20448,1527,a|0,0,0);a=Ea(4);x[a>>2]=1529;N(16968,3031,2,38908,20448,1530,a|0,0,0);a=Ea(4);x[a>>2]=1531;N(16968,3007,2,38916,20448,1532,a|0,0,0);a=Ea(4);x[a>>2]=1533;N(16968,3048,2,38924,20448,1534,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1535;N(16968,1707,2,38932,20448,1536,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1537;N(16968,6959,2,38940,20448,1538,a|0,0,0);a=Ea(4);x[a>>2]=1539;N(16968,3752,2,38948,20448,1540,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1541;N(16968,9342,2,38956,28648,1542,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1543;N(16968,9334,3,38964,20400,1544,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1545;N(16968,11030,2,38956,28648,1542,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1546;N(16968,11020,3,38964,20400,1544,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1547;N(16968,10801,2,38956,28648,1542,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1548;N(16968,10791,3,38964,20400,1544,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1549;N(16968,10891,2,38956,28648,1542,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1550;N(16968,10886,3,38964,20400,1544,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1551;N(16968,10656,2,38956,28648,1542,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1552;N(16968,10651,3,38964,20400,1544,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1553;N(16968,9568,2,38976,30644,1554,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1555;N(16968,7072,2,38976,30644,1554,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1556;N(16968,8692,2,38976,30644,1554,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1557;N(16968,8727,2,38976,30644,1554,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1558;N(16968,8707,2,38976,30644,1554,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1559;N(16968,8877,2,38984,20448,1560,a|0,0,0);a=Ea(4);x[a>>2]=1561;N(16968,8908,3,38992,20492,1562,a|0,0,0);a=Ea(4);x[a>>2]=1563;N(16968,1643,3,39004,20492,1564,a|0,0,0);a=Ea(4);x[a>>2]=1565;N(16968,1974,3,39016,20492,1566,a|0,0,0);a=Ea(4);x[a>>2]=1567;N(16968,1556,3,39004,20492,1564,a|0,0,0);a=Ea(4);x[a>>2]=1568;N(16968,9427,3,39028,20756,1569,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1570;N(16968,6951,3,39040,20756,1571,a|0,0,0);a=Ea(4);x[a>>2]=1572;N(16968,9407,4,39056,20832,1573,a|0,0,0);a=Ea(4);x[a>>2]=1574;N(16968,2424,4,39072,20832,1575,a|0,0,0);a=Ea(4);x[a>>2]=1576;N(16968,2410,4,39088,20784,1577,a|0,0,0);a=Ea(4);x[a>>2]=1578;N(16968,2185,3,39104,20492,1579,a|0,0,0);a=Ea(4);x[a>>2]=1580;N(16968,2129,3,39116,20492,1581,a|0,0,0);a=Ea(4);x[a>>2]=1582;N(16968,2223,3,39128,20492,1583,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1584;N(16968,8667,3,38964,20400,1544,a|0,0,0);P(20012,39164,39208,0,20376,1585,20379,0,20379,0,2817,20381,1586);a=Ea(8);x[a+4>>2]=1;x[a>>2]=8;N(20012,6995,3,39224,20756,1587,a|0,1,0);a=Ea(4);x[a>>2]=1588;N(20012,7062,4,39248,39264,1589,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(20012,9925,2,39272,30644,1590,a|0,1,0);P(20024,39312,39360,20012,20376,1591,20376,1592,20376,1593,2833,20381,1594);Q(20024,3,39376,39388,1595,1596);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1597;N(20024,10907,2,39396,28648,1598,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1599;N(20024,10896,3,39404,20400,1600,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1601;N(20024,10672,2,39396,28648,1598,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1602;N(20024,10661,3,39404,20400,1600,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=8;N(20024,6995,3,39416,20756,1603,a|0,0,0);a=Ea(4);x[a>>2]=1604;N(20024,7062,4,39248,39264,1589,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(20024,9925,2,39428,30644,1605,a|0,0,0);P(20064,39468,39516,20012,20376,1606,20376,1607,20376,1608,2861,20381,1609);Q(20064,3,39532,29788,1610,1611);a=Ea(8);x[a+4>>2]=1;x[a>>2]=8;N(20064,6995,3,39544,20756,1612,a|0,0,0);a=Ea(4);x[a>>2]=1613;N(20064,7062,4,39248,39264,1589,a|0,0,0);a=Ea(8);x[a+4>>2]=1;x[a>>2]=16;N(20064,9925,2,39556,30644,1614,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1615;N(20064,10929,2,39564,28648,1616,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1617;N(20064,10918,3,39572,20400,1618,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1619;N(20064,10694,2,39564,28648,1616,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1620;N(20064,10683,3,39572,20400,1618,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1621;N(20064,2967,2,39564,28648,1616,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1622;N(20064,2957,3,39572,20400,1618,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1623;N(20064,9472,2,39564,28648,1616,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1624;N(20064,9463,3,39572,20400,1618,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1625;N(20064,11087,2,39564,28648,1616,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1626;N(20064,11077,3,39572,20400,1618,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1627;N(20064,10858,2,39564,28648,1616,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1628;N(20064,10848,3,39572,20400,1618,a|0,0,0);P(39596,39616,39644,0,20376,1629,20379,0,20379,0,7591,20381,1630);a=Ea(4);x[a>>2]=8;b=Ea(4);x[b>>2]=8;T(39596,2017,53132,20448,1631,a|0,53132,20756,1632,b|0);a=Ea(4);x[a>>2]=12;b=Ea(4);x[b>>2]=12;T(39596,2024,53132,20448,1631,a|0,53132,20756,1632,b|0);a=Ea(4);x[a>>2]=16;b=Ea(4);x[b>>2]=16;T(39596,9782,53132,20448,1631,a|0,53132,20756,1632,b|0);a=Ea(4);x[a>>2]=20;b=Ea(4);x[b>>2]=20;T(39596,11151,53132,20448,1631,a|0,53132,20756,1632,b|0);P(39708,39764,39828,0,20376,1989,20379,0,20379,0,7585,20381,1990);Q(39708,1,39844,20376,1991,1992);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1993;N(39708,7273,3,39848,20756,1994,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1995;N(39708,8385,4,39872,20784,1996,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1997;N(39708,8387,2,39888,20448,1998,a|0,0,0);a=Ea(4);x[a>>2]=1999;N(39708,2777,3,39896,20492,2e3,a|0,0,0);a=Ea(4);x[a>>2]=2001;N(39708,2750,4,39920,20832,2002,a|0,0,0);P(39952,39976,40008,0,20376,1633,20379,0,20379,0,7185,20381,1634);a=Ea(4);x[a>>2]=0;b=Ea(4);x[b>>2]=0;T(39952,2017,53132,20448,1635,a|0,53132,20756,1636,b|0);a=Ea(4);x[a>>2]=4;b=Ea(4);x[b>>2]=4;T(39952,2024,53132,20448,1635,a|0,53132,20756,1636,b|0);a=Ea(4);x[a>>2]=8;b=Ea(4);x[b>>2]=8;T(39952,3714,53132,20448,1635,a|0,53132,20756,1636,b|0);a=Ea(4);x[a>>2]=12;b=Ea(4);x[b>>2]=12;T(39952,3719,53132,20448,1635,a|0,53132,20756,1636,b|0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1637;N(39952,3494,2,40024,20448,1638,a|0,0,0);P(40052,40080,40116,0,20376,1639,20379,0,20379,0,8851,20381,1640);a=Ea(4);x[a>>2]=0;b=Ea(4);x[b>>2]=0;T(40052,8768,53132,20448,1641,a|0,53132,20756,1642,b|0);a=Ea(4);x[a>>2]=4;b=Ea(4);x[b>>2]=4;T(40052,2715,53132,20448,1641,a|0,53132,20756,1642,b|0);a=Ea(4);x[a>>2]=8;b=Ea(4);x[b>>2]=8;T(40052,2017,53132,20448,1641,a|0,53132,20756,1642,b|0);a=Ea(4);x[a>>2]=12;b=Ea(4);x[b>>2]=12;T(40052,2733,53132,20448,1641,a|0,53132,20756,1642,b|0);a=Ea(4);x[a>>2]=16;b=Ea(4);x[b>>2]=16;T(40052,2024,53132,20448,1641,a|0,53132,20756,1642,b|0);P(40188,40252,40324,0,20376,2003,20379,0,20379,0,8834,20381,2004);Q(40188,1,40340,20376,2005,2006);a=Ea(8);x[a+4>>2]=0;x[a>>2]=2007;N(40188,7273,3,40344,20756,2008,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=2009;N(40188,8385,4,40368,20784,2010,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=2011;N(40188,8387,2,40384,20448,2012,a|0,0,0);a=Ea(4);x[a>>2]=2013;N(40188,2777,3,40392,20492,2014,a|0,0,0);a=Ea(4);x[a>>2]=2015;N(40188,2750,4,40416,20832,2016,a|0,0,0);P(40456,40492,40536,0,20376,1643,20379,0,20379,0,9818,20381,1644);Q(40456,1,40552,20376,1645,1646);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1647;N(40456,6113,3,40556,20492,1648,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1649;N(40456,6639,5,40576,40596,1650,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1651;N(40456,6951,3,40604,20756,1652,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1653;N(40456,6681,3,40616,20400,1654,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1655;N(40456,10511,2,40628,20448,1656,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1657;N(40456,10623,3,40636,20756,1658,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1659;N(40456,2242,3,40636,20756,1658,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1660;N(40456,3743,6,40656,40680,1661,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1662;N(40456,2830,3,40688,20756,1663,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1664;N(40456,2858,3,40700,20756,1665,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1666;N(40456,2846,2,40712,30644,1667,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1668;N(40456,8627,2,40720,20448,1669,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1670;N(40456,1353,5,40736,38132,1671,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1672;N(40456,3817,4,40768,20784,1673,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1674;N(40456,9688,3,40636,20756,1658,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1675;N(40456,3379,2,40784,20448,1676,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1677;N(40456,6799,6,40800,31240,1678,a|0,0,0);a=Ea(8);x[a+4>>2]=0;x[a>>2]=1679;N(40456,8753,4,40832,20784,1680,a|0,0,0);}function ei(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,r=0,s=0,t=0,u=0,z=0,B=0,C=0,F=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;U=qa-16|0;qa=U;x[U+12>>2]=b;c=qa-144|0;qa=c;e=Ha(c,0,144);x[e+76>>2]=-1;x[e+44>>2]=a;x[e+32>>2]=2064;x[e+84>>2]=a;S=b;a=0;b=1657;s=qa-304|0;qa=s;a:{b:{c:{if(x[e+4>>2]){break c}Pf(e);if(x[e+4>>2]){break c}break b}r=y[1657];if(!r){break a}d:{e:{f:{g:{while(1){h:{c=r&255;i:{if((c|0)==32|c-9>>>0<5){while(1){r=b;b=b+1|0;c=y[r+1|0];if((c|0)==32|c-9>>>0<5){continue}break}Yb(e,0,0);while(1){b=x[e+4>>2];j:{if((b|0)!=x[e+104>>2]){x[e+4>>2]=b+1;b=y[b|0];break j}b=Wa(e);}if((b|0)==32|b-9>>>0<5){continue}break}b=x[e+4>>2];c=x[e+116>>2];if((c|0)>0|(c|0)>=0){b=b-1|0;x[e+4>>2]=b;}b=b-x[e+44>>2]|0;c=b;f=N+x[e+124>>2]|0;g=b>>31;b=I+x[e+120>>2]|0;h=g+(b>>>0>>0?f+1|0:f)|0;I=b+c|0;N=I>>>0>>0?h+1|0:h;break i}k:{l:{m:{if((c|0)==37){c=y[b+1|0];if((c|0)==42){break m}if((c|0)!=37){break l}}Yb(e,0,0);n:{if(y[b|0]==37){while(1){c=x[e+4>>2];o:{if((c|0)!=x[e+104>>2]){x[e+4>>2]=c+1;r=y[c|0];break o}r=Wa(e);}if((r|0)==32|r-9>>>0<5){continue}break}b=b+1|0;break n}c=x[e+4>>2];if((c|0)!=x[e+104>>2]){x[e+4>>2]=c+1;r=y[c|0];break n}r=Wa(e);}if(y[b|0]!=(r|0)){b=x[e+116>>2];if((b|0)>0|(b|0)>=0){x[e+4>>2]=x[e+4>>2]-1;}if((r|0)>=0){break a}p=0;if(V){break a}break b}c=x[e+4>>2]-x[e+44>>2]|0;f=c;o=N+x[e+124>>2]|0;g=c>>31;c=I+x[e+120>>2]|0;h=g+(c>>>0>>0?o+1|0:o)|0;I=c+f|0;N=I>>>0>>0?h+1|0:h;r=b;break i}F=0;b=b+2|0;break k}if(!(y[b+2|0]!=36|c-48>>>0>=10)){f=qa-16|0;x[f+12>>2]=S;c=c-48|0;c=(c>>>0>1?(c<<2)-4|0:0)+S|0;x[f+8>>2]=c+4;F=x[c>>2];b=b+3|0;break k}F=x[S>>2];S=S+4|0;b=b+1|0;}g=0;while(1){k=y[b|0];if(k-48>>>0<10){b=b+1|0;g=(D(g,10)+k|0)-48|0;continue}break}O=0;if((k|0)==109){M=0;O=(F|0)!=0;k=y[b+1|0];b=b+1|0;a=0;}r=b+1|0;t=3;p=O;p:{q:{switch((k&255)-65|0){case 39:c=b+2|0;b=y[b+1|0]==104;r=b?c:r;t=b?-2:-1;break p;case 43:c=b+2|0;b=y[b+1|0]==108;r=b?c:r;t=b?3:1;break p;case 51:case 57:t=1;break p;case 11:t=2;break p;case 41:break p;case 0:case 2:case 4:case 5:case 6:case 18:case 23:case 26:case 32:case 34:case 35:case 36:case 37:case 38:case 40:case 45:case 46:case 47:case 50:case 52:case 55:break q;default:break d}}t=0;r=b;}b=y[r|0];c=(b&47)==3;i=c?1:t;n=c?b|32:b;r:{if((n|0)==91){break r}s:{if((n|0)!=110){if((n|0)!=99){break s}g=(g|0)<=1?1:g;break r}Uh(F,i,I,N);break i}Yb(e,0,0);while(1){b=x[e+4>>2];t:{if((b|0)!=x[e+104>>2]){x[e+4>>2]=b+1;b=y[b|0];break t}b=Wa(e);}if((b|0)==32|b-9>>>0<5){continue}break}b=x[e+4>>2];c=x[e+116>>2];if((c|0)>0|(c|0)>=0){b=b-1|0;x[e+4>>2]=b;}b=b-x[e+44>>2]|0;c=b;f=N+x[e+124>>2]|0;k=b>>31;b=I+x[e+120>>2]|0;l=k+(b>>>0>>0?f+1|0:f)|0;I=b+c|0;N=I>>>0>>0?l+1|0:l;}h=g;o=g>>31;Yb(e,g,o);b=x[e+4>>2];u:{if((b|0)!=x[e+104>>2]){x[e+4>>2]=b+1;break u}if((Wa(e)|0)<0){break e}}b=x[e+116>>2];if((b|0)>0|(b|0)>=0){x[e+4>>2]=x[e+4>>2]-1;}b=16;v:{w:{x:{y:{z:{switch(n-88|0){default:b=n-65|0;if(b>>>0>6|!(1<>>0>2){break B}b=W<<2;P=x[b+52604>>2];Q=x[b+52592>>2];while(1){b=x[e+4>>2];C:{if((b|0)!=x[e+104>>2]){x[e+4>>2]=b+1;b=y[b|0];break C}b=Wa(e);}if((b|0)==32|b-9>>>0<5){continue}break}g=1;D:{E:{switch(b-43|0){case 0:case 2:break E;default:break D}}g=(b|0)==45?-1:1;b=x[e+4>>2];if((b|0)!=x[e+104>>2]){x[e+4>>2]=b+1;b=y[b|0];break D}b=Wa(e);}F:{while(1){if(v[n+1101|0]==(b|32)){G:{if(n>>>0>6){break G}b=x[e+4>>2];if((b|0)!=x[e+104>>2]){x[e+4>>2]=b+1;b=y[b|0];break G}b=Wa(e);}n=n+1|0;if((n|0)!=8){continue}break F}break}H:{I:{J:{K:{L:{switch(n|0){case 3:if(x[e+116>>2]<0){break F}x[e+4>>2]=x[e+4>>2]-1;break F;case 0:while(1){if(v[n+7039|0]!=(b|32)){break K}M:{if(n>>>0>1){break M}b=x[e+4>>2];if((b|0)!=x[e+104>>2]){x[e+4>>2]=b+1;b=y[b|0];break M}b=Wa(e);}n=n+1|0;if((n|0)!=3){continue}break}break J;case 1:case 2:break K;default:break L}}if((n|0)==8){break F}}N:{switch(n|0){case 3:break J;case 0:break N;default:break I}}O:{if((b|0)!=48){break O}n=x[e+4>>2];P:{if((n|0)!=x[e+104>>2]){x[e+4>>2]=n+1;n=y[n|0];break P}n=Wa(e);}if((n&-33)==88){n=0;i=qa-432|0;qa=i;Q:{R:{b=x[e+4>>2];if((b|0)!=x[e+104>>2]){x[e+4>>2]=b+1;n=y[b|0];break R}p=0;break Q}p=1;}while(1){S:{T:{U:{V:{W:{X:{Y:{Z:{if(!p){n=Wa(e);break Z}if((n|0)!=48){o=1073676288;p=0;if((n|0)==46){break X}break W}b=x[e+4>>2];if((b|0)==x[e+104>>2]){break Y}H=1;x[e+4>>2]=b+1;n=y[b|0];}p=1;continue}H=1;break T}b=x[e+4>>2];_:{if((b|0)!=x[e+104>>2]){x[e+4>>2]=b+1;n=y[b|0];break _}n=Wa(e);}if((n|0)==48){break V}k=1;}break U}while(1){b=l;l=b-1|0;z=z-!b|0;k=1;b=x[e+4>>2];$:{if((b|0)!=x[e+104>>2]){x[e+4>>2]=b+1;n=y[b|0];break $}n=Wa(e);}if((n|0)==48){continue}break}H=1;}aa:{while(1){ba:{b=n|32;ca:{da:{T=n-48|0;if(T>>>0<10){break da}if((n|0)!=46&b-97>>>0>5){break aa}if((n|0)!=46){break da}if(k){break ba}k=1;l=c;z=h;break ca}b=(n|0)>57?b-87|0:T;ea:{if((h|0)<=0&c>>>0<=7|(h|0)<0){p=b+(p<<4)|0;break ea}if(!h&c>>>0<=28){Lb(i+48|0,b);_a(i+32|0,K,L,f,o,0,0,0,1073414144);K=x[i+32>>2];L=x[i+36>>2];f=x[i+40>>2];o=x[i+44>>2];_a(i+16|0,x[i+48>>2],x[i+52>>2],x[i+56>>2],x[i+60>>2],K,L,f,o);Ib(i,x[i+16>>2],x[i+20>>2],x[i+24>>2],x[i+28>>2],m,u,C,J);C=x[i+8>>2];J=x[i+12>>2];m=x[i>>2];u=x[i+4>>2];break ea}if(t|!b){break ea}_a(i+80|0,K,L,f,o,0,0,0,1073610752);Ib(i- -64|0,x[i+80>>2],x[i+84>>2],x[i+88>>2],x[i+92>>2],m,u,C,J);C=x[i+72>>2];J=x[i+76>>2];t=1;m=x[i+64>>2];u=x[i+68>>2];}c=c+1|0;h=c?h:h+1|0;H=1;}b=x[e+4>>2];if((b|0)!=x[e+104>>2]){x[e+4>>2]=b+1;n=y[b|0];}else {n=Wa(e);}continue}break}n=46;}if(!H){b=x[e+116>>2];if((b|0)>0|(b|0)>=0){x[e+4>>2]=x[e+4>>2]-1;}Yb(e,0,0);Zb(i+96|0,+(g|0)*0);c=x[i+104>>2];h=x[i+108>>2];m=x[i+96>>2];u=x[i+100>>2];break S}if((h|0)<=0&c>>>0<=7|(h|0)<0){f=c;o=h;while(1){p=p<<4;f=f+1|0;o=f?o:o+1|0;if((f|0)!=8|o){continue}break}}fa:{if((n&-33)==80){f=Vh(e);b=ra;o=b;if(f|(b|0)!=-2147483648){break fa}m=0;u=0;Yb(e,0,0);c=0;h=0;break S}f=0;o=0;if(x[e+116>>2]<0){break fa}x[e+4>>2]=x[e+4>>2]-1;}if(!p){Zb(i+112|0,+(g|0)*0);c=x[i+120>>2];h=x[i+124>>2];m=x[i+112>>2];u=x[i+116>>2];break S}b=k?l:c;h=(k?z:h)<<2|b>>>30;b=f+(b<<2)|0;l=h+o|0;l=b>>>0>>0?l+1|0:l;c=b-32|0;h=l-(b>>>0<32)|0;b=h;if(c>>>0>0-P>>>0&(b|0)>=0|(b|0)>0){x[13623]=68;Lb(i+160|0,g);_a(i+144|0,x[i+160>>2],x[i+164>>2],x[i+168>>2],x[i+172>>2],-1,-1,-1,2147418111);_a(i+128|0,x[i+144>>2],x[i+148>>2],x[i+152>>2],x[i+156>>2],-1,-1,-1,2147418111);c=x[i+136>>2];h=x[i+140>>2];m=x[i+128>>2];u=x[i+132>>2];break S}b=P-226|0;f=b>>31;if((h|0)>=(f|0)&b>>>0<=c>>>0|(f|0)<(h|0)){if((p|0)>=0){while(1){Ib(i+416|0,m,u,C,J,0,0,0,-1073807360);b=mi(m,u,C,J,1073610752);f=(b|0)>=0;b=f;Ib(i+400|0,m,u,C,J,b?x[i+416>>2]:m,b?x[i+420>>2]:u,b?x[i+424>>2]:C,b?x[i+428>>2]:J);b=c;c=b-1|0;h=h-!b|0;C=x[i+408>>2];J=x[i+412>>2];m=x[i+400>>2];u=x[i+404>>2];p=f|p<<1;if((p|0)>=0){continue}break}}l=h-((P>>31)+(c>>>0